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!
|
||||
|
||||
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):
|
||||
|
||||
npm install --production
|
||||
|
|
@ -114,7 +114,7 @@ If you ever inadvertently run `npm install` without `--production`, you can easi
|
|||
npm prune --production
|
||||
|
||||
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
|
||||
|
||||
|
|
@ -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.
|
||||
|
||||
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:
|
||||
|
||||
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
|
||||
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
|
||||
|
||||
|
|
@ -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)
|
||||
2. Run the "grunt promote" task to bump the version in all the machine XML files
|
||||
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/).
|
||||
|
||||
|
|
|
|||
|
|
@ -1,13 +1,18 @@
|
|||
Build Tools
|
||||
---
|
||||
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
|
||||
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
|
||||
even less incentive to update it.
|
||||
version of the Closure Compiler I've tried this year (2014) has resulted in slightly *slower* overall performance,
|
||||
so there's even less incentive to update it.
|
||||
|
||||
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>
|
||||
<author>Compaq/Microsoft</author>
|
||||
<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>
|
||||
</disk>
|
||||
</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/4.0M/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.1/manifest.xml" disk="*"/>
|
||||
<manifest ref="/disks/pc/os2/1.3/manifest.xml" disk="*"/>
|
||||
|
|
|
|||
|
|
@ -1,19 +1,31 @@
|
|||
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
|
||||
from the contents of local files/folders, which you can now access via the *DiskDump* API.
|
||||
In addition to converting disk images to/from JSON, DiskDump can also create disk images from the contents of local
|
||||
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:
|
||||
|
||||
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/).
|
||||
DiskDump is a port of the original [JavaScript Machines](http://jsmachines.net/) **convdisk.php** utility.
|
||||
|
|
|
|||
|
|
@ -73,19 +73,19 @@ var PREFETCH = false;
|
|||
* @define {boolean}
|
||||
*
|
||||
* 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
|
||||
* avoid useless memory reads (which are mostly harmless) and stale memory writes (which are mostly destructive).
|
||||
* memory functions for a ModRM instruction that doesn't observe the normal "read/modify/write" behavior. The goal
|
||||
* 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
|
||||
* as needed. At the moment, it seems that "EAFUNCS mode" is a bit slower than "EATESTS mode", which relies on the
|
||||
* bits in opFlags, so EAFUNCS is turned off; however, your mileage may vary, depending on the browser and its vintage.
|
||||
* If EAFUNCS is false, then the CPU falls back to setting/testing internal OP_NOREAD and OP_NOWRITE opFlags as
|
||||
* needed. At the moment, it seems that "EAFUNCS mode" is a bit slower than "EATESTS mode", so EAFUNCS is turned off;
|
||||
* however, your mileage may vary, depending on the browser and its vintage.
|
||||
*/
|
||||
var EAFUNCS = false;
|
||||
|
||||
/**
|
||||
* @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.
|
||||
*
|
||||
* See the Memory component for details.
|
||||
|
|
@ -96,10 +96,10 @@ var FATARRAYS = false;
|
|||
* @define {boolean}
|
||||
*
|
||||
* 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
|
||||
* of numbers that stores 32 bits, or 4 consecutive bytes, per number), so TYPEDARRAYS is completely disabled for now.
|
||||
* However, TYPEDARRAYS has always been slightly slower than the original DWORDS implementation (which uses an Array
|
||||
* of numbers that stores 32 bits -- 4 consecutive bytes -- per number), so TYPEDARRAYS is completely disabled for now.
|
||||
*
|
||||
* See the Memory component for details.
|
||||
*/
|
||||
|
|
|
|||
|
|
@ -103,7 +103,8 @@ if (typeof module !== 'undefined') {
|
|||
/**
|
||||
* 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
|
||||
*
|
||||
|
|
|
|||
Loading…
Reference in a new issue