Documentation updates

This commit is contained in:
Jeff Parsons 2016-03-13 17:44:59 -07:00
commit 06094fcd48
20 changed files with 298 additions and 122 deletions

View file

@ -45,9 +45,9 @@ Some pre-configured machines are shown below, ready to run BASIC, DOS, Windows,
![IBM PC w/MDA, Microsoft Adventure](/disks/pc/games/microsoft/adventure/thumbnail.jpg "link:/disks/pc/games/microsoft/adventure/:200:120")
![IBM PC w/CGA, Zork I](/disks/pc/games/infocom/zork1/thumbnail.jpg "link:/disks/pc/games/infocom/zork1/:200:120")
Check out the rest of the PCjs [Application](/apps/pc/), [Disk](/disks/pc/), and [Machine](/devices/pc/machine/)
demos, including an [IBM PC with Dual Displays](/devices/pc/machine/5150/dual/64kb/) demonstrating early multi-monitor
support, and multiple IBM PC XT machines running side-by-side with [CGA Displays](/devices/pc/machine/5160/cga/256kb/array/)
There are many more [PCjs Demos](/devices/pc/machine/#ready-to-run-app-demos), including an
[IBM PC with Dual Displays](/devices/pc/machine/5150/dual/64kb/) demonstrating early multi-monitor support,
and multiple IBM PC XT machines running side-by-side with [CGA Displays](/devices/pc/machine/5160/cga/256kb/array/)
and [EGA Displays](/devices/pc/machine/5160/ega/640kb/array/).
C1Pjs

View file

@ -15,7 +15,7 @@ Below are selected demos of classic IBM PC applications running on [PCjs](/docs/
* [ThinkTank (1987)](1987/thinktank/)
* [The Dungeons of Moria (1992)](1992/moria/)
Additional software is available in the [IBM PC Disk Archive](/disks/pc/).
A list of all the software available to PCjs machines can be found in the [IBM PC Disk Library](/disks/pc/).
### Creating IBM PC Application Demos
@ -34,8 +34,8 @@ Next, the [manifest](1981/visicalc/manifest.xml) required a disk image containin
cd apps/pc/1981/visicalc
node ../../../../modules/diskdump/bin/diskdump --path="archive/VC.COM;../README.md" --format=json --output=disk.json --manifest
The DiskDump command created a disk image named "disk.json" containing two files ("VC.COM" from the "static" subdirectory,
and "README.md" from the "static" parent directory) and automatically added that disk image to the demo's [manifest](1981/visicalc/manifest.xml):
The DiskDump command created a disk image named "disk.json" containing two files ("VC.COM" from the "archive" subdirectory,
and "README.md" from the "archive" parent directory) and automatically added that disk image to the demo's [manifest](1981/visicalc/manifest.xml):
<disk id="disk01" size="163840" chs="40:1:8" dir="archive/" href="/apps/pc/1981/visicalc/disk.json" md5="61494f998d5fb0e31e7b8bd99f1cc588" md5json="3ad82ed815725e6bd786f92a4714e84f">
<file size="27520" time="1981-12-16 23:00:00" attr="0x20" md5="28997dfedb2440c6054d8be835be8634">VC.COM</file>

View file

@ -28,8 +28,8 @@ Complete machine configurations are constructed from those devices. A machine c
that lists all the device components to be used. A machine XML file can choose to configure every device itself,
or it can include pre-configured device XML files, such as those provided above or elsewhere.
For example, here's what the machine located at [/devices/pc/machine/5150/mda/64kb/machine.xml](/devices/pc/machine/5150/mda/64kb/machine.xml)
looks like:
For example, here's what the machine located at
[/devices/pc/machine/5150/mda/64kb/machine.xml](/devices/pc/machine/5150/mda/64kb/machine.xml) looks like:
<machine id="ibm5150" class="pc" border="1" pos="center" background="#FAEBD7">
<name pos="center">IBM PC (Model 5150) with Monochrome Display</name>
@ -47,5 +47,6 @@ looks like:
<chipset id="chipset" model="5150" sw1="01000001" sw2="11110000"/>
</machine>
All the devices are fully configured within the XML file, except for the Keyboard and Floppy Disk Controller (FDC)
devices, which are defined in separate XML files.
All the devices are fully configured within the XML file, except for the [Video](/docs/pcjs/video/),
[Keyboard](/docs/pcjs/keyboard/), and [Floppy Disk Controller (FDC)](/docs/pcjs/fdc/) components, which are defined
in separate XML files.

View file

@ -1,12 +1,41 @@
---
layout: page
title: 8042 Keyboard Controller Internals
title: IBM PC Keyboard Devices
permalink: /devices/pc/keyboard/
---
8042 Keyboard Controller Internals
IBM PC Keyboard Devices
---
### Keyboard Configuration Files
The easiest way for a machine to include a *[Keyboard](/docs/pcjs/keyboard/)* component in its XML configuration file
is to reference one of the project's keyboard configuration files, using the *ref* attribute; eg:
<keyboard ref="/devices/pc/keyboard/us83-buttons-minimal.xml"/>
The referenced XML file automatically defines the keyboard's hardware characteristics (eg, model) and
any visual elements, such as buttons to simulate common keystrokes, or even complete "soft keyboard" layouts.
Here's what *us83-buttons-minimal.xml* currently looks like:
<keyboard id="keyboard" model="us83" pos="left" padleft="8px" padbottom="8px">
<control type="button" binding="esc">ESC</control>
<control type="button" binding="f1">F1</control>
<control type="button" binding="f10">F10</control>
</keyboard>
The following IBM keyboard configuration files are currently available:
- [us83-buttons-arrows.xml](us83-buttons-arrows.xml)
- [us83-buttons-functions.xml](us83-buttons-functions.xml)
- [us83-buttons-minimal.xml](us83-buttons-minimal.xml)
- [us83-buttons-softkeys.xml](us83-buttons-softkeys.xml)
- [us84-buttons-arrows.xml](us84-buttons-arrows.xml)
- [us84-buttons-functions.xml](us84-buttons-functions.xml)
### 8042 Keyboard Controller Internals
The following documents were obtained from [halicery.com](http://halicery.com/):
- [8042_INTERN.TXT](8042_INTERN.TXT)

View file

@ -0,0 +1,13 @@
---
layout: page
title: IBM PC AT (Model 5170)
permalink: /devices/pc/machine/5170/
---
IBM PC AT Machines (Model 5170)
---
All our Model 5170, aka IBM PC AT, configurations are located here, including:
* [IBM PC AT with EGA Display](/devices/pc/machine/5170/ega/)
* [IBM PC AT with VGA Display](/devices/pc/machine/5170/vga/)

View file

@ -0,0 +1,10 @@
---
layout: page
title: "IBM PC AT (Model 5170, 640Kb) with EGA Display"
permalink: /devices/pc/machine/5170/ega/640kb/rev1/
machines:
- type: pc
id: ibm5170
---
{% include machine.html id="ibm5170" %}

View file

@ -0,0 +1,15 @@
---
layout: page
title: "IBM PC AT (Model 5170) with Enhanced Color Display"
permalink: /devices/pc/machine/5170/ega/
---
IBM PC AT with Enhanced Color Graphics (EGA) Display
---
All our Enhanced Color Graphics (EGA) configurations of the IBM PC AT (Model 5170) are located here, including:
* [IBM PC AT (6Mhz, 640Kb) with EGA Display (Debugger)](/devices/pc/machine/5170/ega/640kb/rev1/debugger/)
* [IBM PC AT (6Mhz, 1Mb, 20Mb Drive) with EGA Display (Debugger)](/devices/pc/machine/5170/ega/1152kb/rev1/debugger/)
* [IBM PC AT (8Mhz, 1Mb, 20Mb Drive) with EGA Display (Debugger)](/devices/pc/machine/5170/ega/1152kb/rev3/debugger/)
* [IBM PC AT (8Mhz, 2Mb, 20Mb Drive) with EGA Display](/devices/pc/machine/5170/ega/2048kb/rev3/) ([Debugger](/devices/pc/machine/5170/ega/2048kb/rev3/debugger/))

View file

@ -0,0 +1,12 @@
---
layout: page
title: "IBM PC AT (Model 5170) with VGA Display"
permalink: /devices/pc/machine/5170/vga/
---
IBM PC AT with VGA Display
---
All our VGA configurations of the IBM PC AT (Model 5170) are located here, including:
* [IBM PC AT (8Mhz, 2Mb, 20Mb Drive) with VGA Display](/devices/pc/machine/5170/vga/2048kb/) ([Debugger](/devices/pc/machine/5170/vga/2048kb/debugger/))

View file

@ -21,9 +21,8 @@ along with these IBM PC-compatibles:
* [COMPAQ](/devices/pc/machine/compaq/) (eg, [DeskPro 386](/devices/pc/machine/compaq/deskpro386/))
We also support a few non-IBM [Devices](/devices/):
* [6502 Challenger 1P](/devices/c1p/machine/)
Learn more about the [Devices](/devices/) used to build all our machines, such as the 6502-based
[Ohio Scientific Challenger 1P](/devices/c1p/machine/).
### Ready-To-Run App Demos
@ -37,7 +36,7 @@ Machines from our [IBM PC Application Archive](/apps/pc/):
### Ready-To-Boot Disk Demos
And here are some machines from our [IBM PC Disk Archive](/disks/pc/):
And here are some machines from our [IBM PC Disk Library](/disks/pc/):
* [CP/M-86 v1.1B](/disks/pc/cpm/1.1b/)
* [PC-DOS 1.00](/disks/pc/dos/ibm/1.00/)
@ -58,9 +57,11 @@ a predefined state, which automatically restores the machine and the specified a
state, while others include a hard disk with preinstalled software.
However, most simply boot an early version of DOS, and the hard disk, if any, will generally be unformatted.
From there, you can load another disk image
From there, you can other disks and install other software.
### [Model 5150 Machine Configurations](/devices/pc/machine/5150/)
### Model 5150 Machine Configurations
[Model 5150 Machines](/devices/pc/machine/5150/) include:
* [IBM PC (64Kb) with Monochrome Display](/devices/pc/machine/5150/mda/64kb/) ([Debugger](/devices/pc/machine/5150/mda/64kb/debugger/))
* [IBM PC (64Kb) with Monochrome Display and Soft Keyboard (Debugger)](/devices/pc/machine/5150/mda/64kb/softkbd/)
@ -69,7 +70,9 @@ From there, you can load another disk image
* [IBM PC (384Kb) with Color Display and Soft Keyboard (Debugger)](/devices/pc/machine/5150/cga/384kb/softkbd/)
* [IBM PC (64Kb) with Dual Displays (Monochrome and Color)](/devices/pc/machine/5150/dual/64kb/)
### [Model 5160 Machine Configurations](/devices/pc/machine/5160/)
### Model 5160 Machine Configurations
[Model 5160 Machines](/devices/pc/machine/5160/) include:
* [IBM PC XT (64Kb, 10Mb Drive) with Monochrome Display](/devices/pc/machine/5160/mda/64kb/softkbd/)
* [IBM PC XT (256Kb, 10Mb Drive) with Monochrome Display](/devices/pc/machine/5160/mda/256kb/) ([Debugger](/devices/pc/machine/5160/mda/256kb/debugger/))
@ -87,6 +90,8 @@ From there, you can load another disk image
### Model 5170 Machine Configurations
[Model 5170 Machines](/devices/pc/machine/5170/) include:
* [IBM PC AT (6Mhz, 640Kb) with EGA Display (Debugger)](/devices/pc/machine/5170/ega/640kb/rev1/debugger/)
* [IBM PC AT (6Mhz, 1Mb, 20Mb Drive) with EGA Display (Debugger)](/devices/pc/machine/5170/ega/1152kb/rev1/debugger/)
* [IBM PC AT (8Mhz, 1Mb, 20Mb Drive) with EGA Display (Debugger)](/devices/pc/machine/5170/ega/1152kb/rev3/debugger/)

View file

@ -7,6 +7,13 @@ permalink: /devices/pc/panel/
IBM PC Control Panels
---
[Control Panels](/docs/pcjs/panel/) are XML files that define a particular layout for controls provided by the
[Computer](/docs/pcjs/computer/), [CPU](/docs/pcjs/cpu/), [Keyboard](/docs/pcjs/keyboard/)
and [Debugger](/docs/pcjs/debugger/) components.
[Control Panels](/docs/pcjs/panel/) are XML files that define layouts for Debugger-related controls.
The following IBM PC control panel configuration files are currently available:
- [default.xml](default.xml) (a simple layout for 8086/8088-based machines)
- [wide.xml](wide.xml) (a wide version of default.xml)
- [wide386.xml](wide386.xml) (a wide version of default.xml for 80386-based machines)
The visual controls described by these layouts are provided by the [Computer](/docs/pcjs/computer/),
[CPU](/docs/pcjs/cpu/), [Keyboard](/docs/pcjs/keyboard/), and [Debugger](/docs/pcjs/debugger/) components.

View file

@ -6,16 +6,22 @@ redirect_from:
- /devices/pc/bios/
---
BASIC ROMs
IBM PC ROMs
---
ROMs are added to machines by including one *[ROM](/docs/pcjs/rom/)* component in the machine XML configuration file
for each ROM in the machine; eg:
<rom id="romBIOS" addr="0xf0000" size="0x10000" alias="0xff0000" file="/devices/pc/rom/5170/bios/1984-01-10/ATBIOS-REV1.json"/>
### BASIC ROMs
The project contains the following IBM PC BASIC ROMs:
* [IBM BASIC 1.00](5150/basic/BASIC100.json)
* [IBM BASIC 1.10](5160/basic/BASIC110.json)
BIOS ROMs
---
### BIOS ROMs
The project contains the following IBM PC BIOS ROMs:
@ -25,7 +31,14 @@ The project contains the following IBM PC BIOS ROMs:
* [Model 5160: Nov 08, 1982](5160/bios/1982-11-08/XTBIOS-REV1.json)
* [Model 5160: May 09, 1986](5160/bios/1986-05-09/XTBIOS-REV3.json)
As well as BIOS ROMs, with more detailed information, for the following machines:
The project also contains BIOS ROMs, along with more detailed information, for the following machines:
* [IBM PC AT Model 5170](5170/bios/)
* [COMPAQ Portable and DeskPro Machines](compaq/bios/)
### Other ROMs
The project contains other ROMs, including IBM [EGA](/devices/pc/video/ibm/ega/#ibm-ega-rom) and
[VGA](/devices/pc/video/ibm/vga/#ibm-vga-rom) ROMs, the Xebec Hard Disk Controller ROM used in
the PC XT, etc, but those ROMs seemed more appropriately filed in their respective component folders;
eg, [IBM PC Video Devices](/devices/pc/video/).

View file

@ -1,18 +1,21 @@
---
layout: page
title: IBM PC Video Support
title: IBM PC Video Devices
permalink: /devices/pc/video/
---
IBM PC Video Support
IBM PC Video Devices
---
Video devices are added to machines by including a *[Video](/docs/pcjs/video/)* component in the machine XML
configuration file. See one of the following video adapters for examples of how to do this.
PCjs supports the following IBM PC video adapters:
* MDA (Monochrome Display Adapter)
* CGA (Color Graphics Adapter)
* EGA (Enhanced Graphics Adapter)
* [VGA](ibm/vga/) (Video Graphics Adapter)
* Monochrome Display Adapter (MDA)
* Color Graphics Adapter (CGA)
* [Enhanced Graphics Adapter (EGA)](ibm/ega/)
* [Video Graphics Array (VGA)](ibm/vga/)
More detailed information is available for the following IBM-compatible video adapters:

View file

@ -1,12 +1,51 @@
---
layout: page
title: IBM EGA ROM
title: "IBM Enhanced Graphics Adapter (EGA)"
permalink: /devices/pc/video/ibm/ega/
---
IBM EGA ROM
IBM Enhanced Graphics Adapter (EGA)
---
### IBM EGA Configurations
The easiest way for a machine to include an EGA *[Video](/docs/pcjs/video/)* component in its XML configuration file
is to reference one of the project's predefined EGA configuration files, using the *ref* attribute; eg:
<video ref="/devices/pc/video/ibm/ega/1984-09-13/64kb.xml"/>
The referenced XML file automatically defines visual elements (eg, dimensions of the display window and other
visual indicators), display behaviors (eg, touchscreen support, mouse pointer locking), the ROM to load (and where
to load it), and other video card hardware features (eg, *memory* and *switches*).
Here's what *64kb.xml* currently looks like:
<video id="videoEGA" model="ega" memory="0x10000" screenwidth="640" screenheight="350" touchscreen="mouse" pos="center" padding="8px">
<menu>
<title>IBM Enhanced Color Display</title>
<control type="container" pos="right">
<control type="led" label="Caps" binding="caps-lock" padleft="8px"/>
<control type="led" label="Num" binding="num-lock" padleft="8px"/>
<control type="led" label="Scroll" binding="scroll-lock" padleft="8px"/>
</control>
</menu>
<rom id="romEGA" addr="0xc0000" size="0x4000" file="/devices/pc/video/ibm/ega/1984-09-13/ibm-ega.json" notify="videoEGA"/>
</video>
The following IBM EGA configuration files are currently available:
- [64kb.xml](1984-09-13/64kb.xml)
- [128kb-autolock640.xml](1984-09-13/128kb-autolock640.xml)
- [128kb-autolockfs.xml](1984-09-13/128kb-autolockfs.xml)
- [128kb-lockfs.xml](1984-09-13/128kb-lockfs.xml)
- [256kb-autolock640.xml](1984-09-13/256kb-autolock640.xml)
- [256kb-autolockfs.xml](1984-09-13/256kb-autolockfs.xml)
- [256kb-lockfs.xml](1984-09-13/256kb-lockfs.xml)
### IBM EGA ROM
We have only one IBM EGA ROM revision, dated September 13, 1984.
To (re)build the JSON-encoded IBM EGA ROM with symbols, run the following command:
filedump --file=archive/ibm-ega.rom --format=bytes --decimal
@ -15,9 +54,9 @@ The symbol information in the MAP file will be automatically converted and appen
The PCjs server's Dump API can be used as well:
http://www.pcjs.org/api/v1/dump?file=http://archive.pcjs.org/devices/pc/video/ibm/ega/ibm-ega.rom&format=bytes&decimal=true
http://www.pcjs.org/api/v1/dump?file=http://archive.pcjs.org/devices/pc/video/ibm/ega/1984-09-13/ibm-ega.rom&format=bytes&decimal=true
### Font Information
### IBM EGA Font Information
As noted in [Video.onROMLoad()](/modules/pcjs/lib/video.js), the Video component needs to know where the card's
font data is located:

View file

@ -1,4 +1,4 @@
Aa;
;
; ROM BIOS for IBM VGA Adapter (aka IBM PS/2 Display Adapter)
; (C)COPYRIGHT IBM Corp. 1984, 1986 10/27/86
;

View file

@ -7,4 +7,51 @@ permalink: /devices/pc/video/ibm/vga/
IBM Video Graphics Array (VGA)
---
The disassembled contents of the ROM from the IBM's PS/2 Display Adapter is available [here](ibm-vga.nasm).
### IBM VGA Configurations
The easiest way for a machine to include an VGA *[Video](/docs/pcjs/video/)* component in its XML configuration file
is to reference one of the project's VGA configuration files, using the *ref* attribute; eg:
<video ref="/devices/pc/video/ibm/vga/1986-10-27/256kb-autolockfs.xml"/>
The referenced XML file automatically defines visual elements (eg, dimensions of the display window and other
visual indicators), display behaviors (eg, touchscreen support, mouse pointer locking), the ROM to load (and where
to load it), and other video card hardware features (eg, *memory* and *switches*).
Here's what *256kb-autolockfs.xml* currently looks like:
<video id="videoVGA" model="vga" screenwidth="1280" screenheight="960" scale="true" touchscreen="mouse" autolock="true" pos="center" padding="8px">
<menu>
<title>IBM VGA Color Display</title>
<control type="container" pos="right">
<control type="led" label="Caps" binding="caps-lock" padleft="8px"/>
<control type="led" label="Num" binding="num-lock" padleft="8px"/>
<control type="led" label="Scroll" binding="scroll-lock" padleft="8px"/>
<control type="button" binding="fullScreen" padleft="8px">Full Screen</control>
</control>
</menu>
<rom id="romVGA" addr="0xc0000" size="0x6000" file="/devices/pc/video/ibm/vga/1986-10-27/ibm-vga.json" notify="videoVGA[0x378d,0x3f8d]"/>
</video>
The following IBM VGA configuration files are currently available:
- [256kb-autolockfs.xml](1986-10-27/256kb-autolockfs.xml)
- [256kb-lockfs.xml](1986-10-27/256kb-lockfs.xml)
### IBM VGA ROM
We have only one IBM VGA ROM revision, dated October 27, 1986, from an IBM PS/2 Display Adapter. Which, BTW,
has to be one of the *most* confusing product names ever, since the adapter was an 8-bit card designed for ISA
machines, *not* PS/2 machines.
To (re)build the JSON-encoded IBM VGA ROM with symbols, run the following command:
filedump --file=archive/ibm-vga.rom --format=bytes --decimal
The symbol information in the MAP file will be automatically converted and appended to the dump of the ROM file.
The PCjs server's Dump API can be used as well:
http://www.pcjs.org/api/v1/dump?file=http://archive.pcjs.org/devices/pc/video/ibm/vga/1986-10-27/ibm-vga.rom&format=bytes&decimal=true
The disassembled contents of the 1986-10-27 ROM from the IBM PS/2 Display Adapter is available [here](1986-10-27/ibm-vga.asm).

View file

@ -1,25 +1,25 @@
---
layout: page
title: Disk Archives
title: Disk Libraries
permalink: /disks/
---
Disk Archives
Disk Libraries
---
Browse [IBM PC](pc/) and [Challenger 1P](c1p/) disk archives.
Browse [IBM PC](pc/) and [Challenger 1P](c1p/) disk libraries.
### PCjs Disk Image Formats
PCjs works best with disk images in a **JSON** format, to save conversion time, so that's the only
disk image format you'll find on the PCjs website.
PCjs works best with disk images in a **JSON** format, to save conversion time, so that's the only disk image format
you'll find in the PCjs Project.
To convert any of our **JSON** disk images back into an **IMG** file, you can use the [DiskDump API](/api/v1/dump)
with the *format* parameter set to `img` instead of `json`. For example:
{{ site.url }}/api/v1/dump?disk=/disks/pc/dos/ibm/2.00/PCDOS200-DISK1.json&format=img
In fact, when browsing the disk archives, the PCjs web server automatically provides "onclick" handlers
for links to JSON-encoded disk images, which will invoke the API for you.
As an added bonus, when browsing the disk library with the PCjs Node web server, links to JSON-encoded disk images
automatically include "onclick" handlers that invoke the API for you.
See **Creating PCjs-Compatible Disk Images** in the [PCjs Documentation](/docs/pcjs/#creating-pcjs-compatible-disk-images)
for more information about supported disks and formats.

View file

@ -1,19 +1,27 @@
---
layout: page
title: IBM PC Disk Archive
title: IBM PC Disk Library
menu_title: Disks
menu_order: 4
permalink: /disks/pc/
---
IBM PC Disk Archive
IBM PC Disk Library
---
This is a list of disks available to any [IBM PC Machine](/devices/pc/machine/) that uses our
[Library](/disks/pc/library.xml) XML disk configuration file.
These disks are available to any [IBM PC Machine](/devices/pc/machine/) that uses the
PCjs [Disk Library](/disks/pc/library.xml), which references all the [Disk Manifests](#disk-manifests)
in the PCjs Project.
For some of the disks below, we have provided more information about the software, and in some cases, machines
that automatically run the software.
The list below is *not* a complete list of everything in the [Disk Library](/disks/pc/library.xml),
just highlights. For some of the disks, we have provided more information about the software,
and in some cases, machines that automatically run the software. Ideally, everything in the
[Disk Library](/disks/pc/library.xml) would also be listed below, and linked to a page that describes
the software in more detail, along with a live demonstration of the software. But there's just
too much to do.
For more demos, see the [IBM PC Application Archive](/apps/pc/). There again, the Application Archive
merely provides some highlights from the Disk Library.
### PC-DOS (IBM)
@ -145,83 +153,57 @@ in [PC Tech Journal](/pubs/pc/magazines/pctj/).
* [Infocom Zork I](/disks/pc/games/infocom/zork1/)
Learn more about
[Disk Sets](https://github.com/jeffpar/pcjs/tree/master/disks/pc) in the
[PCjs Project](https://github.com/jeffpar/pcjs) on [GitHub](https://github.com/).
### PCjs Test Suites
* [VGA "Black Book" Tests](/tests/pc/vga/)
{% if site.developer %}
---
### Developer Notes: Disk Sets and Manifests
Disk Manifests
---
Collections of related disks are organized into *Disk Sets* which can then be loaded from the
[FDC (Floppy Disk Controller)](/docs/pcjs/fdc/) component of an [IBM PC Machine Configuration](/devices/pc/machine/).
Typically, all the distribution disks for a single version of a piece of software are placed in a single
folder, along with a **manifest.xml** file that contains *metadata* about the software, including a list of
the individual disks. This is generally referred to as a [Software Manifest](/apps/), but when we're only
interested in the disks, we may also refer to it as a Disk Manifest.
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](/apps/).
A Disk Manifest can then be added to a *[Floppy Disk Controller (FDC)](/docs/pcjs/fdc/)* configuration file,
making all its disks available to any machine loading that particular configuration file.
A simple FDC XML file, such as [samples.xml](samples.xml), *could* contain &lt;disk&gt; entries like:
A simple FDC configuration file, such as [samples.xml](samples.xml), *could* contain individual &lt;disk&gt;
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>
<disk path="/disks/pc/dos/ibm/1.00/PCDOS100.json">PC-DOS 1.00</disk>
<disk path="/disks/pc/dos/ibm/1.10/PCDOS110.json">PC-DOS 1.10</disk>
<disk path="/disks/pc/dos/ibm/2.00/PCDOS200-DISK1.json">PC-DOS 2.00 (Disk 1)</disk>
<disk path="/disks/pc/dos/ibm/2.00/PCDOS200-DISK2.json">PC-DOS 2.00 (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](samples.xml) with a single line:
However, listing individual diskettes like that is tedious, so support was added for Disk Manifests.
So instead of listing the PC-DOS 2.00 diskettes individually, they can be added to [samples.xml](samples.xml)
with a single line:
<manifest ref="/disks/pc/dos/ibm/2.00/manifest.xml" disk="*"/>
The same feature works with [Application Manifests](/apps/#software-application-manifests). Here's how you might
add [VisiCalc](/apps/pc/1981/visicalc/) to [samples.xml](samples.xml):
When you want to include only one particular disk from a manifest, set the *disk* value to the *id* of the disk.
Here's how you would include only the *first* disk from PC-DOS 2.00:
<manifest ref="/apps/pc/1981/visicalc/manifest.xml" disk="disk"/>
<manifest ref="/disks/pc/dos/ibm/2.00/manifest.xml" disk="disk01"/>
The application must have a **manifest.xml** with &lt;disk&gt; section containing an *id* value that matches the
*disk* value specified above:
For reference, here's what the entire Disk Manifest for PC-DOS 2.00 currently looks like:
<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 &lt;link&gt; whenever this item is selected, and it will
dynamically generate a disk image containing all the specified &lt;file&gt; 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 &lt;disk&gt; 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](/modules/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](/api/v1/dump):
{{ site.url }}/api/v1/dump?path=/apps/pc/1981/visicalc/bin/vc.com&format=json
Learn more about PCjs disk image formats [here](/disks/).
{% endif %}
<manifest type="software">
<title>PC-DOS</title>
<version>2.00</version>
<type>DOS</type>
<category>Operating System</category>
<author>IBM/Microsoft</author>
<releaseDate/>
<disk id="disk01" size="184320" chs="40:1:9" img="archive/PCDOS200-DISK1.img" href="/disks/pc/dos/ibm/2.00/PCDOS200-DISK1.json" md5="d57ceef82122790d1c0ff7bebc12f90a" md5json="2507c02da6cbafe9a94a35cbdd993be2">
<name>PC-DOS 2.00 (Disk 1)</name>
</disk>
<disk id="disk02" size="184320" chs="40:1:9" img="archive/PCDOS200-DISK2.img" href="/disks/pc/dos/ibm/2.00/PCDOS200-DISK2.json" md5="1c7aac53c78446992f8821cf42d04c4a" md5json="b66e296319c1f97990b596b1aa376d39">
<name>PC-DOS 2.00 (Disk 2)</name>
</disk>
</manifest>

View file

@ -44,4 +44,4 @@ of OS/2 when it was still a work-in-progress. Not all of the disks run properly
October 12, 1988, which included the built-in kernel debugger used by Microsoft and IBM for internal development,
along with a rudimentary program selector. For more details, see the [OS/2 1.0](/blog/2014/12/04/) blog post.
[Return to [IBM PC Disk Archive](/disks/pc/#other-os2-disks)]
[Return to [IBM PC Disk Library](/disks/pc/#other-os2-disks)]

View file

@ -31,7 +31,7 @@ Attributes
* *notify* (optional)
The *id* of a component to notify when *file* has been loaded. For example, the [Video](/docs/pcjs/video/)
The *id* of a component to notify when *file* has been loaded. For example, the *[Video](/docs/pcjs/video/)*
component may need to know when an external video ROM has been loaded. Any component can load its own files,
including ROM image files, but it's simpler to use the ROM component and request notification.

View file

@ -55,9 +55,9 @@ Some pre-configured machines are shown below, ready to run BASIC, DOS, Windows,
{% include screenshot.html src="/disks/pc/games/microsoft/adventure/thumbnail.jpg" width="200" height="120" title="IBM PC w/MDA, Microsoft Adventure" link="/disks/pc/games/microsoft/adventure/" %}
{% include screenshot.html src="/disks/pc/games/infocom/zork1/thumbnail.jpg" width="200" height="120" title="IBM PC w/CGA, Zork I" link="/disks/pc/games/infocom/zork1/" %}
Check out the rest of the PCjs [Application](/apps/pc/), [Disk](/disks/pc/), and [Machine](/devices/pc/machine/)
demos, including an [IBM PC with Dual Displays](/devices/pc/machine/5150/dual/64kb/) demonstrating early multi-monitor
support, and multiple IBM PC XT machines running side-by-side with [CGA Displays](/devices/pc/machine/5160/cga/256kb/array/)
There are many more [PCjs Demos](/devices/pc/machine/#ready-to-run-app-demos), including an
[IBM PC with Dual Displays](/devices/pc/machine/5150/dual/64kb/) demonstrating early multi-monitor support,
and multiple IBM PC XT machines running side-by-side with [CGA Displays](/devices/pc/machine/5160/cga/256kb/array/)
and [EGA Displays](/devices/pc/machine/5160/ega/640kb/array/).
C1Pjs