Added a few more interesting Compaq disk images
This commit is contained in:
parent
8959e3a95b
commit
effd34553a
13 changed files with 83 additions and 32 deletions
10
README.md
10
README.md
|
|
@ -103,7 +103,7 @@ and type the following commands:
|
||||||
Now open a web browser and go to `http://localhost:8088/`. Done!
|
Now open a web browser and go to `http://localhost:8088/`. Done!
|
||||||
|
|
||||||
If you just want to launch the web server or don't plan to do any development, you can reduce the
|
If you just want to launch the web server or don't plan to do any development, you can reduce the
|
||||||
footprint slightly by asking NPM to install only "productions" modules (which can also eliminate some
|
footprint slightly by asking NPM to install only "production" modules (which can also eliminate some
|
||||||
errors if, for example, you neglected to install Python):
|
errors if, for example, you neglected to install Python):
|
||||||
|
|
||||||
npm install --production
|
npm install --production
|
||||||
|
|
@ -114,7 +114,7 @@ If you ever inadvertently run `npm install` without `--production`, you can easi
|
||||||
npm prune --production
|
npm prune --production
|
||||||
|
|
||||||
Finally, when installing on an AWS server, although you have complete control over how Node is launched, you
|
Finally, when installing on an AWS server, although you have complete control over how Node is launched, you
|
||||||
don't have direct control over NPM; the best you can do is set the following AWS "Environment Property":
|
don't have direct control over NPM; I think the best you can do is set the following AWS "Environment Property":
|
||||||
|
|
||||||
NPM_CONFIG_PRODUCTION=true
|
NPM_CONFIG_PRODUCTION=true
|
||||||
|
|
||||||
|
|
@ -149,7 +149,7 @@ are specified, `grunt` runs the "default" task defined by [Gruntfile.js](Gruntfi
|
||||||
in the [/versions](versions/) directory) are out-of date.
|
in the [/versions](versions/) directory) are out-of date.
|
||||||
|
|
||||||
To ensure consistent compilation results, a copy of the Closure Compiler has been checked into the
|
To ensure consistent compilation results, a copy of the Closure Compiler has been checked into the
|
||||||
[bin](bin/) folder. This version of Closure Compiler, in turn, requires Java v7 or later. Use the following
|
[/bin](bin/) folder. This version of Closure Compiler, in turn, requires Java v7 or later. Use the following
|
||||||
commands to confirm that everything is working properly:
|
commands to confirm that everything is working properly:
|
||||||
|
|
||||||
java -version
|
java -version
|
||||||
|
|
@ -268,7 +268,7 @@ and C1Pjs much easier to debug, albeit much slower:
|
||||||
The "gort=debug" command is unnecessary if the server is started with `--debug`; the server always serves uncompiled
|
The "gort=debug" command is unnecessary if the server is started with `--debug`; the server always serves uncompiled
|
||||||
files when running in debug mode.
|
files when running in debug mode.
|
||||||
|
|
||||||
Conversely, if the server is running debug mode but you want to test a compiled version of PCjs, use:
|
Conversely, if the server is in debug mode but you want to test a compiled version of PCjs, use:
|
||||||
|
|
||||||
http://localhost:8088/?gort=release
|
http://localhost:8088/?gort=release
|
||||||
|
|
||||||
|
|
@ -302,7 +302,7 @@ To start developing features for a new version of PCjs, here are the recommended
|
||||||
1. Change the version number in the root [package.json](/package.json)
|
1. Change the version number in the root [package.json](/package.json)
|
||||||
2. Run the "grunt promote" task to bump the version in all the machine XML files
|
2. Run the "grunt promote" task to bump the version in all the machine XML files
|
||||||
3. Make changes
|
3. Make changes
|
||||||
4. Run "grunt" to build new versions of the apps (eg, "/versions/pcjs/1.xx.yy/pc.js")
|
4. Run "grunt" to build new versions of the apps (eg, "/versions/pcjs/1.x.x/pc.js")
|
||||||
|
|
||||||
You might also want to check out the blog post on [PCjs Coding Conventions](/blog/2014/09/30/).
|
You might also want to check out the blog post on [PCjs Coding Conventions](/blog/2014/09/30/).
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,13 +1,18 @@
|
||||||
Build Tools
|
Build Tools
|
||||||
---
|
---
|
||||||
This is where all the server-side PHP code used to reside. I've since deleted that code from the project,
|
This is where all the server-side PHP code used to reside. I've since deleted that code from the project,
|
||||||
because it's all been ported to JavaScript as a collection of [Node modules](/my_modules/).
|
because it's all been ported to JavaScript as a collection of [Node Modules](/my_modules/); e.g.:
|
||||||
|
|
||||||
All that remains here is the version of Google's Closure Compiler (and its associated [README](README)) that I use
|
- [HTMLOut](/my_modules/htmlout/)
|
||||||
|
- [MarkOut](/my_modules/markout/)
|
||||||
|
- [DiskDump](/my_modules/diskdump/)
|
||||||
|
- [FileDump](/my_modules/filedump/)
|
||||||
|
|
||||||
|
All that remains here is the version of Google's Closure Compiler (and its associated [README](README)) used
|
||||||
to build the client-side JavaScript files -- not because I have any attachment to this particular version, but because
|
to build the client-side JavaScript files -- not because I have any attachment to this particular version, but because
|
||||||
updating requires a lot of testing, and I don't really have a regression test suite yet. Besides, every newer
|
updating requires a lot of testing, and I don't really have a regression test suite yet. Besides, every newer
|
||||||
version of the Closure Compiler I've tried this year (2014) has resulted in slightly *slower* performance, so there's
|
version of the Closure Compiler I've tried this year (2014) has resulted in slightly *slower* overall performance,
|
||||||
even less incentive to update it.
|
so there's even less incentive to update it.
|
||||||
|
|
||||||
Here are some useful links regarding Google's Closure Compiler:
|
Here are some useful links regarding Google's Closure Compiler:
|
||||||
|
|
||||||
|
|
|
||||||
1
disks/pc/dos/compaq/3.10/COMPAQ-DOS310-DISK1.json
Normal file
1
disks/pc/dos/compaq/3.10/COMPAQ-DOS310-DISK1.json
Normal file
File diff suppressed because one or more lines are too long
1
disks/pc/dos/compaq/3.10/COMPAQ-DOS310-DISK2.json
Normal file
1
disks/pc/dos/compaq/3.10/COMPAQ-DOS310-DISK2.json
Normal file
File diff suppressed because one or more lines are too long
1
disks/pc/dos/compaq/3.10/COMPAQ-DOS310-PERSONAL.json
Normal file
1
disks/pc/dos/compaq/3.10/COMPAQ-DOS310-PERSONAL.json
Normal file
File diff suppressed because one or more lines are too long
1
disks/pc/dos/compaq/3.10/COMPAQ-PCDOS320-SUPP.json
Normal file
1
disks/pc/dos/compaq/3.10/COMPAQ-PCDOS320-SUPP.json
Normal file
File diff suppressed because one or more lines are too long
|
|
@ -7,7 +7,20 @@
|
||||||
<category>Operating System</category>
|
<category>Operating System</category>
|
||||||
<author>Compaq/Microsoft</author>
|
<author>Compaq/Microsoft</author>
|
||||||
<releaseDate/>
|
<releaseDate/>
|
||||||
<disk id="disk01" size="368640" chs="40:2:9" img="private/COMPAQ-DESKPRO386-SUPP-1986-08-08.img" href="/disks/pc/dos/compaq/3.10/COMPAQ-DESKPRO386-SUPP-1986-08-08.json" md5="2bd655ae5568ac27807aeb7bf1ea046d" md5json="6b43800deab66bde7a860fe9b5cd4e9f">
|
<machine href="/devices/pc/machine/5170/ega/1152kb/rev3/machine.xml"/>
|
||||||
|
<disk id="disk01" size="368640" chs="40:2:9" img="private/COMPAQ-DOS310-DISK1.img" href="/disks/pc/dos/compaq/3.10/COMPAQ-DOS310-DISK1.json" md5="a2a329b9d06e5bd425050a10e14e2f92" md5json="c212bb6bcd6a4c5853be2c390df66536">
|
||||||
|
<name>COMPAQ DOS 3.10 (1)</name>
|
||||||
|
</disk>
|
||||||
|
<disk id="disk02" size="368640" chs="40:2:9" img="private/COMPAQ-DOS310-DISK2.img" href="/disks/pc/dos/compaq/3.10/COMPAQ-DOS310-DISK2.json" md5="4f6e5ec142fbffc36ea600c262677580" md5json="0770c611514970520b6905223c246ee9">
|
||||||
|
<name>COMPAQ DOS 3.10 (2)</name>
|
||||||
|
</disk>
|
||||||
|
<disk id="disk03" size="1228800" chs="80:2:15" img="private/COMPAQ-DOS310-PERSONAL.img" href="/disks/pc/dos/compaq/3.10/COMPAQ-DOS310-PERSONAL.json" md5="df312165dc2303aab9417677a50df477" md5json="50ed5b7489569d11a9391287259eeda1">
|
||||||
|
<name>COMPAQ DOS 3.10 (Personal)</name>
|
||||||
|
</disk>
|
||||||
|
<disk id="disk04" size="368640" chs="40:2:9" img="private/COMPAQ-PCDOS320-SUPP.img" href="/disks/pc/dos/compaq/3.10/COMPAQ-PCDOS320-SUPP.json" md5="0c71fdb4d65bb056b39d9fe5fa2cf1a3" md5json="936c6b80fee1c0e9c5880208ff1a539d">
|
||||||
|
<name>COMPAQ PC-DOS 3.20 Support</name>
|
||||||
|
</disk>
|
||||||
|
<disk id="disk05" size="368640" chs="40:2:9" img="private/COMPAQ-DESKPRO386-SUPP-1986-08-08.img" href="/disks/pc/dos/compaq/3.10/COMPAQ-DESKPRO386-SUPP-1986-08-08.json" md5="2bd655ae5568ac27807aeb7bf1ea046d" md5json="6b43800deab66bde7a860fe9b5cd4e9f">
|
||||||
<name>COMPAQ DESKPRO 386 (1986)</name>
|
<name>COMPAQ DESKPRO 386 (1986)</name>
|
||||||
</disk>
|
</disk>
|
||||||
</manifest>
|
</manifest>
|
||||||
|
|
|
||||||
1
disks/pc/dos/compaq/3.31/COMPAQ-DOS331-DIAG.json
Normal file
1
disks/pc/dos/compaq/3.31/COMPAQ-DOS331-DIAG.json
Normal file
File diff suppressed because one or more lines are too long
14
disks/pc/dos/compaq/3.31/manifest.xml
Normal file
14
disks/pc/dos/compaq/3.31/manifest.xml
Normal file
|
|
@ -0,0 +1,14 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<?xml-stylesheet type="text/xsl" href="/versions/pcjs/1.15.8/manifest.xsl"?>
|
||||||
|
<manifest type="software">
|
||||||
|
<title>MS-DOS</title>
|
||||||
|
<version>3.31</version>
|
||||||
|
<type>DOS</type>
|
||||||
|
<category>Operating System</category>
|
||||||
|
<author>Compaq/Microsoft</author>
|
||||||
|
<releaseDate/>
|
||||||
|
<machine href="/devices/pc/machine/5170/ega/1152kb/rev3/machine.xml"/>
|
||||||
|
<disk id="disk01" size="368640" chs="40:2:9" img="private/COMPAQ-DOS331-DIAG.img" href="/disks/pc/dos/compaq/3.31/COMPAQ-DOS331-DIAG.json" md5="6fc3678180e8d8c2ff5e1c3d99f14d08" md5json="a5e0a418db4fe09c13cfd86635753a05">
|
||||||
|
<name>COMPAQ DOS 3.31 (DIAG)</name>
|
||||||
|
</disk>
|
||||||
|
</manifest>
|
||||||
|
|
@ -15,6 +15,7 @@
|
||||||
<manifest ref="/disks/pc/dos/microsoft/3.20/manifest.xml" disk="*"/>
|
<manifest ref="/disks/pc/dos/microsoft/3.20/manifest.xml" disk="*"/>
|
||||||
<manifest ref="/disks/pc/dos/microsoft/4.0M/manifest.xml" disk="*"/>
|
<manifest ref="/disks/pc/dos/microsoft/4.0M/manifest.xml" disk="*"/>
|
||||||
<manifest ref="/disks/pc/dos/compaq/3.10/manifest.xml" disk="*"/>
|
<manifest ref="/disks/pc/dos/compaq/3.10/manifest.xml" disk="*"/>
|
||||||
|
<manifest ref="/disks/pc/dos/compaq/3.31/manifest.xml" disk="*"/>
|
||||||
<manifest ref="/disks/pc/os2/1.0/manifest.xml" disk="*"/>
|
<manifest ref="/disks/pc/os2/1.0/manifest.xml" disk="*"/>
|
||||||
<manifest ref="/disks/pc/os2/1.1/manifest.xml" disk="*"/>
|
<manifest ref="/disks/pc/os2/1.1/manifest.xml" disk="*"/>
|
||||||
<manifest ref="/disks/pc/os2/1.3/manifest.xml" disk="*"/>
|
<manifest ref="/disks/pc/os2/1.3/manifest.xml" disk="*"/>
|
||||||
|
|
|
||||||
|
|
@ -1,19 +1,31 @@
|
||||||
DiskDump
|
DiskDump
|
||||||
===
|
===
|
||||||
Module (and command-line utility) for converting disk images to/from various formats (eg, JSON,
|
|
||||||
commented JSON, and IMG files).
|
|
||||||
|
|
||||||
Building images from folders/files
|
**DiskDump** is a Node module with both a command-line interface and a web server API for converting disk images
|
||||||
|
to/from various formats (eg, JSON files, JSON files with comments, IMG disk images, etc).
|
||||||
|
|
||||||
|
Building Disk Images from Folders/Files
|
||||||
---
|
---
|
||||||
I finally ported the code in [convdisk.php](/bin/convdisk.php) that creates disk images
|
In addition to converting disk images to/from JSON, DiskDump can also create disk images from the contents of local
|
||||||
from the contents of local files/folders, which you can now access via the *DiskDump* API.
|
files/folders.
|
||||||
|
|
||||||
For example:
|
For example, from the root directory of the project, you could run:
|
||||||
|
|
||||||
http://www.pcjs.org/api/v1/dump?path=/apps/pc/1981/visicalc/bin/vc.com;../README.md&format=json
|
node my_modules/diskdump/bin/diskdump --path="apps/pc/1981/visicalc/README.md" --format=img --output=disk.img
|
||||||
|
|
||||||
|
to produce a `disk.img` containing one file, "README.md", which you could then mount on your local operating
|
||||||
|
system *or* inside a PCjs machine.
|
||||||
|
|
||||||
|
To make the disk image more useful, you might want to download a copy of [VisiCalc](http://www.bricklin.com/history/vcexecutable.htm)
|
||||||
|
into that folder as well, so that you could then run:
|
||||||
|
|
||||||
|
node my_modules/diskdump/bin/diskdump --path="apps/pc/1981/visicalc/vc.com;README.md" --format=img --output=disk.img
|
||||||
|
|
||||||
|
to produce a `disk.img` containing both "VC.COM" and "README.md". In fact, this is exactly how the
|
||||||
|
[disk.json](/apps/pc/1981/visicalc/disk.json) stored in the [VisiCalc](/apps/pc/1981/visicalc/) folder was generated.
|
||||||
|
|
||||||
|
The equivalent web server API request would look like:
|
||||||
|
|
||||||
|
http://localhost:8088/api/v1/dump?path=/apps/pc/1981/visicalc/vc.com;README.md&format=img
|
||||||
|
|
||||||
would be equivalent to the older PHP script operation:
|
DiskDump is a port of the original [JavaScript Machines](http://jsmachines.net/) **convdisk.php** utility.
|
||||||
|
|
||||||
http://jsmachines.net/bin/convdisk.php?file=/apps/pc/1981/visicalc/bin/vc.com&format=json&download=true
|
|
||||||
|
|
||||||
These commands produce a "disk.json", a copy of which is stored at [/apps/pc/1981/visicalc](/apps/pc/1981/visicalc/).
|
|
||||||
|
|
|
||||||
|
|
@ -73,19 +73,19 @@ var PREFETCH = false;
|
||||||
* @define {boolean}
|
* @define {boolean}
|
||||||
*
|
*
|
||||||
* EAFUNCS enables dynamic function switching whenever the CPU needs to disable one or both EA (Effective Address)
|
* EAFUNCS enables dynamic function switching whenever the CPU needs to disable one or both EA (Effective Address)
|
||||||
* memory functions for an instruction that doesn't observe the normal "read/modify/write" behavior. The goal is to
|
* memory functions for a ModRM instruction that doesn't observe the normal "read/modify/write" behavior. The goal
|
||||||
* avoid useless memory reads (which are mostly harmless) and stale memory writes (which are mostly destructive).
|
* is to avoid useless memory reads (which are mostly harmless) and stale memory writes (which are mostly destructive).
|
||||||
*
|
*
|
||||||
* If EAFUNCS is false, then the CPU falls back to setting/testing internal OP_NOREAD and OP_NOWRITE opFlags
|
* If EAFUNCS is false, then the CPU falls back to setting/testing internal OP_NOREAD and OP_NOWRITE opFlags as
|
||||||
* as needed. At the moment, it seems that "EAFUNCS mode" is a bit slower than "EATESTS mode", which relies on the
|
* needed. At the moment, it seems that "EAFUNCS mode" is a bit slower than "EATESTS mode", so EAFUNCS is turned off;
|
||||||
* bits in opFlags, so EAFUNCS is turned off; however, your mileage may vary, depending on the browser and its vintage.
|
* however, your mileage may vary, depending on the browser and its vintage.
|
||||||
*/
|
*/
|
||||||
var EAFUNCS = false;
|
var EAFUNCS = false;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @define {boolean}
|
* @define {boolean}
|
||||||
*
|
*
|
||||||
* FATARRAYS is a Closure Compiler compile-time option that allocates a normal Array of numbers for each Memory block,
|
* FATARRAYS is a Closure Compiler compile-time option that allocates an Array of numbers for every Memory block,
|
||||||
* where each a number represents ONE byte; very wasteful, but potentially slightly faster.
|
* where each a number represents ONE byte; very wasteful, but potentially slightly faster.
|
||||||
*
|
*
|
||||||
* See the Memory component for details.
|
* See the Memory component for details.
|
||||||
|
|
@ -96,10 +96,10 @@ var FATARRAYS = false;
|
||||||
* @define {boolean}
|
* @define {boolean}
|
||||||
*
|
*
|
||||||
* TYPEDARRAYS enables use of typed arrays for Memory blocks. This used to be a compile-time-only option, but I've
|
* TYPEDARRAYS enables use of typed arrays for Memory blocks. This used to be a compile-time-only option, but I've
|
||||||
* added memory access functions for typed arrays (see Memory.afnTypedArray), so the support CAN be enabled dynamically.
|
* added Memory access functions for typed arrays (see Memory.afnTypedArray), so support can be enabled dynamically.
|
||||||
*
|
*
|
||||||
* However, TYPEDARRAYS has always been slightly slower than the original DWORDS implementation (which uses a normal Array
|
* However, TYPEDARRAYS has always been slightly slower than the original DWORDS implementation (which uses an Array
|
||||||
* of numbers that stores 32 bits, or 4 consecutive bytes, per number), so TYPEDARRAYS is completely disabled for now.
|
* of numbers that stores 32 bits -- 4 consecutive bytes -- per number), so TYPEDARRAYS is completely disabled for now.
|
||||||
*
|
*
|
||||||
* See the Memory component for details.
|
* See the Memory component for details.
|
||||||
*/
|
*/
|
||||||
|
|
|
||||||
|
|
@ -103,7 +103,8 @@ if (typeof module !== 'undefined') {
|
||||||
/**
|
/**
|
||||||
* FDC(parmsFDC)
|
* FDC(parmsFDC)
|
||||||
*
|
*
|
||||||
* The FDC component simulates an NEC PD765A, and has one component-specific property:
|
* The FDC component simulates a NEC µPD765A or Intel 8272A compatible floppy disk controller, and has one
|
||||||
|
* component-specific property:
|
||||||
*
|
*
|
||||||
* autoMount: one or more JSON-encoded objects, each containing 'name' and 'path' properties
|
* autoMount: one or more JSON-encoded objects, each containing 'name' and 'path' properties
|
||||||
*
|
*
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue