pcjs/docs/pcjs/hdc
Repository files (latest commit first)
Filename Latest commit message Latest commit date
Jeff Parsons 0f06c3f039 The 5170 AT hard disk controller is limping along now, so I'm getting ready for a 1.15.4 release
Some other interesting bugs were fixed along the way:
the Video component incorrectly assumed that masking a negative number with 0x80000000 would yield 0x80000000 (it actually yields -0x80000000, thank you JavaScript);
the ChipSet component provides a new addCMOSMemory() interface that RAM objects can use to bump the CMOS total to match the actual total;
the CPU properly implements INSW and OUTSW instructions now (kind of important for the AT hard disk controller)
2014-10-08 16:15:12 -07:00
..
README.md The 5170 AT hard disk controller is limping along now, so I'm getting ready for a 1.15.4 release 2014-10-08 16:15:12 -07:00

<HDC>

PCjs HDC (Hard Disk Controller) XML Specification

Format

<hdc>...</hdc>

Purpose

Creates an instance of the Hard Disk Controller (HDC) component. The HDC is responsible for:

  • Automatically loading fixed disk image files at boot;
  • Simulating the appropriate controller hardware ports;
  • Saving/restoring all user fixed disk modifications in browser local storage.

The HDC component simulates an STC-506/412 interface to an IBM PC XT fixed disk drive. The first such drive was a 10Mb 5.25-inch drive containing two platters and 4 heads; data spanned 306 cylinders for a total of 1224 tracks, with 17 sectors/track and 512 bytes/sector.

Attributes

  • drives (required)

    This is an array definition, with one array entry per fixed disk. Each entry is a drive object definition, each of which may contain 'name', 'path' and 'type' properties. For example:

     [{name:'10Mb Hard Disk',path:'10mb.json',type:3}]
    

    The 'path' property is optional; if omitted, an empty disk matching the specified drive type will be created (10mb in the case of drive type 3).

  • type (optional)

    Should be set to one of:

    • 'xt': PC XT Xebec controller emulation
    • 'at': PC AT Western Digital controller emulation

    Also, make sure the appropriate ROM is installed.

    For the Xebec ('xt') controller, you should install the Xebec ROM; eg:

     <rom id="romHDC" addr="0xc8000" size="0x2000" file="/devices/pc/hdc/ibm-xebec-1982.json"/>
    

    For the Western Digital ('at') controller, use a Model 5170 (or newer) ROM module; eg:

     <rom id="romBIOS" addr="0xf0000" size="0x10000" alias="0xff0000" file="/devices/pc/bios/5170/1984-01-10.json"/>
    

    The default type setting is 'xt'.

  • Also supports the attributes of Component.

Bindings

This component has no bindings. Fixed disks cannot be loaded or unloaded once the machine is "powered".

Example

<hdc id="hdcXT" drives="[{name:'10Mb Hard Disk',type:3}]"/>

Output

<div id="..." class="pc-hdc pc-component">
	<div class="pc-container">
		<div class="pcjs-hdc" data-value="id:'...',name:'...',drives:'...'"></div>
	</div>
</div>

Also, if any controls are defined, another <div> of class="pc-controls" is created in the container <div>, with each control inside a <div> of class="pc-control".

[Return to PCjs Documentation]