Added a few more interesting Compaq disk images

This commit is contained in:
Jeff Parsons 2014-11-03 18:13:38 -08:00 committed by jeffpar
commit effd34553a
13 changed files with 83 additions and 32 deletions

View file

@ -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/).

View file

@ -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:

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View file

@ -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>

File diff suppressed because one or more lines are too long

View 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>

View file

@ -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="*"/>

View file

@ -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.

View file

@ -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.
*/

View file

@ -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
*