pcjs/disks/pc
Repository files (latest commit first)
Filename Latest commit message Latest commit date
2015-07-19 12:59:26 -07:00
..
apps Microsoft Chart 2.02 (but sadly, not a distribution disk) 2015-07-19 11:17:31 -07:00
cpm Fix opcode 0x6A (PUSH imm8) 2015-07-09 18:28:22 -07:00
diags/ibm/2.20 Fix opcode 0x6A (PUSH imm8) 2015-07-09 18:28:22 -07:00
dos More more DOS 2015-07-19 12:59:26 -07:00
fixed Collapsed /configs into /devices (or in some cases, /apps or /disks), simplifying the structure a bit 2014-11-03 00:11:41 -08:00
games Getting ready to roll out v1.18.4 2015-07-17 17:39:14 -07:00
minix/1.1 Fix opcode 0x6A (PUSH imm8) 2015-07-09 18:28:22 -07:00
os2 Getting ready to roll out v1.18.4 2015-07-17 17:39:14 -07:00
tools Fix opcode 0x6A (PUSH imm8) 2015-07-09 18:28:22 -07:00
unix Fix opcode 0x6A (PUSH imm8) 2015-07-09 18:28:22 -07:00
windows Getting ready to roll out v1.18.4 2015-07-17 17:39:14 -07:00
xenix/sco/8086/2.1.3 Fix opcode 0x6A (PUSH imm8) 2015-07-09 18:28:22 -07:00
library.xml More more DOS 2015-07-19 12:59:26 -07:00
README.md README updates 2014-11-15 19:01:18 -08:00
samples.xml More 80386 instructions and more 80386 Debugger support 2015-04-30 13:27:43 -07:00

IBM PC Disk Archive

Below are selected Disk Sets featuring "Ready-to-Boot" machine configurations:

You can browse the rest of the disk archive by type. There is no search capability at this time.

Learn more about Disk Sets in the PCjs Project on GitHub.

Developer Notes: Disk Sets and Manifests

Collections of related disks are organized into Disk Sets which can then be loaded from the FDC (Floppy Disk Controller) component of an IBM PC Machine Configuration.

Disk Sets are stored in their own folders, along with a manifest.xml file listing the individual diskettes. Manifests also record a variety of metadata about the software; more information about the manifest format is available in Application Archives.

A simple FDC XML file, such as samples.xml, could contain <disk> entries like:

<disk path="/disks/pc/dos/ibm/1.00/PCDOS100.json">PC-DOS 1.0</disk>
<disk path="/disks/pc/dos/ibm/1.10/PCDOS110.json">PC-DOS 1.1</disk>
<disk path="/disks/pc/dos/ibm/2.00/PCDOS200-DISK1.json">PC-DOS 2.0 (Disk 1)</disk>
<disk path="/disks/pc/dos/ibm/2.00/PCDOS200-DISK2.json">PC-DOS 2.0 (Disk 2)</disk>
...

listing all the diskettes available for the machine to load. However, listing individual diskettes is tedious, so the FDC also supports manifest.xml files. Instead of listing the PC-DOS 2.0 diskettes individually, they can be added to samples.xml with a single line:

<manifest ref="/disks/pc/dos/ibm/2.00/manifest.xml" disk="*"/>

The same feature works with Application Manifests. Here's how you might add VisiCalc to samples.xml:

<manifest ref="/apps/pc/1981/visicalc/manifest.xml" disk="disk"/>

The application must have a manifest.xml with <disk> section containing an id value that matches the disk value specified above:

<disk id="disk" dir="/apps/pc/1981/visicalc/bin/">
    <file>VC.COM</file>
    <file dir="../">README.md</file>
    <link href="http://www.bricklin.com/history/vclicense.htm">VisiCalc License</link>
</disk>

If multiple disks are defined in the manifest, and you want to include them all, you can set the disk value to '*', as in:

<manifest ref="/apps/pc/1981/visicalc/manifest.xml" disk="*"/>

As an added bonus, PCjs will automatically display the descriptive <link> whenever this item is selected, and it will dynamically generate a disk image containing all the specified <file> entries when the selected item is loaded.

Pre-generated disk images are preferred to dynamically-generated images, and you can now include those in the application manifest.xml as well, by adding an href value to the <disk> section that was used to create the image:

<disk id="disk" dir="/apps/pc/1981/visicalc/bin/" href="/apps/pc/1981/visicalc/disk.json">
    <file>VC.COM</file>
    <file dir="../">README.md</file>
    <link href="http://www.bricklin.com/history/vclicense.htm">VisiCalc License</link>
</disk>

The PCjs DiskDump module is used to create all our pre-generated JSON-encoded disk images. In the above example, a pre-generated disk image could be created from the command-line with either the "--dir" option (which will traverse all subdirectories as well):

node diskdump --dir=./apps/pc/1981/visicalc/bin/ --format=json --output=./apps/pc/1981/visicalc/disk.json

or with the "--path" option, which specifies either a single file or a set files separated by semi-colons:

node diskdump --path="./apps/pc/1981/visicalc/bin/vc.com;../readme.md" --format=json --output=./apps/pc/1981/visicalc/disk.json

or via the PCjs server's DiskDump API:

http://www.pcjs.org/api/v1/dump?path=/apps/pc/1981/visicalc/bin/vc.com&format=json

Learn more about PCjs disk image formats here.