Starting work on disambiguating PCjs the emulator from PCjs the project/website; the emulator will become PCx86

This commit is contained in:
Jeff Parsons 2016-05-16 20:53:57 -07:00
commit 288f28055d
1519 changed files with 16242 additions and 6939 deletions

58
devices/pcx86/README.md Normal file
View file

@ -0,0 +1,58 @@
---
layout: page
title: IBM PC Device Configurations
permalink: /devices/pcx86/
redirect_from:
- /configs/pc/
---
IBM PC Device Configurations
---
All our [IBM PC Machines](machine/) are built from a collection of devices, including:
* CPU (e.g., 8088, 80286, 80386)
* RAM
* [ROMs](rom/)
* ChipSets (e.g., 8259, 8253, 8237)
* [Keyboards](keyboard/)
* [Video Adapters](video/)
* Floppy Drive Controllers
* Hard Drive Controllers
* [Control Panels](panel/)
Each of those devices can be configured in multiple ways, and some support external UI controls.
For example, the IBM PC Keyboard component supports different keyboard models (eg, 83-key, 84-key, 101-key),
and each of those models can also be configured to have dedicated buttons for selected key combinations,
or even entire keyboard layouts.
Complete machine configurations are constructed from those devices. A Machine Configuration is a single XML file
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.
Here's an example of [IBM 5150](/devices/pcx86/machine/5150/mda/64kb/)
[XML](/devices/pcx86/machine/5150/mda/64kb/machine.xml):
```xml
<machine id="ibm5150" class="pcx86" border="1" pos="center" background="#FAEBD7">
<name pos="center">IBM PC (Model 5150) with Monochrome Display</name>
<computer id="pc-mda-64k" name="IBM PC" resume="1"/>
<ram id="ramLow" addr="0x00000"/>
<rom id="romBASIC" addr="0xf6000" size="0x8000" file="/devices/pcx86/rom/5150/basic/BASIC100.json"/>
<rom id="romBIOS" addr="0xfe000" size="0x2000" file="/devices/pcx86/rom/5150/1981-04-24/PCBIOS-REV1.json"/>
<video ref="/devices/pcx86/video/ibm/mda/ibm-mda.xml"/>
<fdc ref="/disks/pcx86/compiled/samples.xml"/>
<cpu id="cpu8088" model="8088" autostart="true" pos="left" padleft="8px" padbottom="8px">
<control type="button" binding="run">Run</control>
<control type="button" binding="reset">Reset</control>
</cpu>
<keyboard ref="/devices/pcx86/keyboard/us83-buttons-arrows.xml"/>
<chipset id="chipset" model="5150" sw1="01000001" sw2="11111000"/>
</machine>
```
In this example, all the devices are fully configured within the machine XML file, except for the
[Video](/docs/pcx86/video/) [XML](/devices/pcx86/video/ibm/mda/ibm-mda.xml),
[Floppy Disk Controller (FDC)](/docs/pcx86/fdc/) [XML](/disks/pcx86/compiled/samples.xml), and
[Keyboard](/docs/pcx86/keyboard/) [XML](/devices/pcx86/keyboard/us83-buttons-arrows.xml).

View file

@ -0,0 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<chipset id="chipset" model="5150" sw1="01001001" sw2="11111000" pos="left" padleft="8px" padbottom="8px">
<control type="switches" label="SW1" binding="sw1" left="0px"/>
<control type="switches" label="SW2" binding="sw2" left="0px"/>
<control type="description" binding="swdesc" left="0px"/>
</chipset>

View file

@ -0,0 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
<chipset id="chipset" model="att6300" sw1="01001000" sw2="11111001" pos="left" padleft="8px" padbottom="8px">
<control type="switches" label="SW0" binding="sw1" left="0px"/>
<control type="switches" label="SW1" binding="sw2" left="0px"/>
</chipset>

View file

@ -0,0 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
<chipset id="chipset" model="mpc1600" sw1="01001001" sw2="11110000" pos="left" padleft="8px" padbottom="8px">
<control type="switches" label="SW1" binding="sw1" left="0px"/>
<control type="description" binding="swdesc" left="0px"/>
</chipset>

View file

@ -0,0 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
<chipset id="chipset" model="z150" sw1="01001001" sw2="11110000" pos="left" padleft="8px" padbottom="8px">
<control type="switches" label="SW1" binding="sw1" left="0px"/>
<control type="description" binding="swdesc" left="0px"/>
</chipset>

View file

@ -0,0 +1,252 @@
[85,170,16,235,30,53,48,48,48,48,53,57,32,40,67,41,67,79,80,89,82,73,71,72,84,32,32,73,66,77,32,49,57,56,50,43,192,142,216,
250,161,76,0,163,0,1,161,78,0,163,2,1,199,6,76,0,86,2,140,14,78,0,184,96,7,163,52,0,140,14,54,0,199,6,100,0,134,1,140,14,
102,0,199,6,4,1,231,3,140,14,6,1,251,184,64,0,142,216,198,6,116,0,0,198,6,117,0,0,198,6,67,0,0,198,6,119,0,0,185,37,0,232,
242,0,115,5,226,249,233,191,0,185,1,0,186,128,0,184,0,18,205,19,115,3,233,175,0,184,0,20,205,19,115,3,233,165,0,199,6,108,
0,0,0,161,114,0,61,52,18,117,6,199,6,108,0,154,1,228,33,36,254,230,33,232,180,0,114,7,184,0,16,205,19,115,11,161,108,0,61,
190,1,114,236,235,117,144,185,1,0,186,128,0,184,0,17,205,19,114,103,184,0,9,205,19,114,96,184,0,200,142,192,43,219,184,0,
15,205,19,114,82,254,6,117,0,186,19,2,176,0,238,186,33,3,236,36,15,60,15,116,6,199,6,108,0,164,1,186,19,2,176,255,238,185,
1,0,186,129,0,43,192,205,19,114,64,184,0,17,205,19,115,11,161,108,0,61,190,1,114,235,235,47,144,184,0,9,205,19,114,39,254,
6,117,0,129,250,129,0,115,29,66,235,212,189,15,0,43,192,139,240,185,6,0,144,183,0,46,138,132,104,1,180,14,205,16,70,226,244,
249,250,228,33,12,1,230,33,251,232,165,0,203,49,55,48,49,13,10,81,82,248,185,0,1,232,7,6,238,232,3,6,236,36,2,116,3,226,242,
249,90,89,195,43,192,142,216,250,199,6,4,1,231,3,140,14,6,1,199,6,120,0,1,2,140,14,122,0,251,185,3,0,81,43,210,43,192,205,
19,114,15,184,1,2,43,210,142,194,187,0,124,185,1,0,205,19,89,115,10,128,252,128,116,10,226,222,235,6,144,234,0,124,0,0,43,
192,43,210,205,19,185,3,0,81,186,128,0,43,192,205,19,114,18,184,1,2,43,219,142,195,187,0,124,186,128,0,185,1,0,205,19,89,
114,8,161,254,125,61,85,170,116,203,226,215,205,24,207,2,37,2,8,42,255,80,246,25,4,30,184,64,0,142,216,138,38,119,0,80,198,
6,119,0,0,232,105,5,42,192,238,198,6,119,0,4,232,94,5,42,192,238,198,6,119,0,8,232,83,5,42,192,238,198,6,119,0,12,232,72,
5,42,192,238,176,7,230,10,250,228,33,12,32,230,33,251,88,136,38,119,0,31,195,128,250,128,115,5,205,64,202,2,0,251,10,228,
117,9,205,64,42,228,128,250,129,119,239,128,252,8,117,3,233,26,1,83,81,82,30,6,86,87,232,106,0,80,232,136,255,184,64,0,142,
216,88,138,38,116,0,128,252,1,245,95,94,7,31,90,89,91,202,2,0,56,3,77,3,86,3,96,3,106,3,114,3,121,3,128,3,48,3,39,4,207,4,
221,4,242,4,56,3,249,4,7,5,21,5,28,5,35,5,42,5,49,5,198,6,116,0,0,81,138,234,128,202,1,254,202,208,226,136,22,119,0,138,213,
128,226,1,177,5,210,226,10,214,136,22,67,0,89,195,80,184,64,0,142,216,88,128,252,1,117,3,235,85,144,128,234,128,128,250,8,
115,47,232,194,255,254,201,198,6,66,0,0,136,14,68,0,136,46,69,0,162,70,0,160,118,0,162,71,0,80,138,196,50,228,209,224,139,
240,61,42,0,88,115,5,46,255,164,156,2,198,6,116,0,1,176,0,195,232,67,4,238,232,63,4,236,36,2,116,6,198,6,116,0,5,195,233,
218,0,160,116,0,198,6,116,0,0,195,176,71,198,6,66,0,8,233,229,1,176,75,198,6,66,0,10,233,219,1,198,6,66,0,5,233,196,1,198,
6,66,0,6,235,12,198,6,66,0,7,235,5,198,6,66,0,4,160,68,0,36,192,162,68,0,233,166,1,30,6,83,43,192,142,216,196,30,4,1,184,
64,0,142,216,128,234,128,128,250,8,115,47,232,27,255,232,223,3,114,39,3,216,38,139,7,45,2,0,138,232,37,0,3,209,232,209,232,
12,17,138,200,38,138,119,2,254,206,138,22,117,0,43,192,91,7,31,202,2,0,198,6,116,0,7,180,7,42,192,43,210,43,201,249,235,234,
50,1,2,50,1,0,0,11,0,12,180,40,0,0,0,0,119,1,8,119,1,0,0,11,5,12,180,40,0,0,0,0,50,1,6,128,0,0,1,11,5,12,180,40,0,0,0,0,50,
1,4,50,1,0,0,11,5,12,180,40,0,0,0,0,198,6,66,0,12,198,6,67,0,0,232,16,0,114,13,198,6,66,0,12,198,6,67,0,32,232,1,0,195,42,
192,232,25,1,115,1,195,30,43,192,142,216,196,30,4,1,31,232,52,3,114,87,3,216,191,1,0,232,95,0,114,77,191,0,0,232,87,0,114,
69,191,2,0,232,79,0,114,61,191,4,0,232,71,0,114,53,191,3,0,232,63,0,114,45,191,6,0,232,55,0,114,37,191,5,0,232,47,0,114,29,
191,7,0,232,39,0,114,21,191,8,0,38,138,1,162,118,0,43,201,232,211,2,236,168,2,117,9,226,246,198,6,116,0,7,249,195,232,181,
2,236,36,2,117,241,195,232,197,1,114,7,232,167,2,38,138,1,238,195,232,25,0,114,107,198,6,66,0,229,176,71,235,104,232,11,0,
114,93,198,6,66,0,230,176,75,235,90,160,70,0,60,128,245,195,198,6,66,0,11,235,61,198,6,66,0,14,198,6,70,0,1,176,71,235,62,
198,6,66,0,15,198,6,70,0,1,176,75,235,48,198,6,66,0,0,235,26,198,6,66,0,1,235,19,198,6,66,0,224,235,12,198,6,66,0,227,235,
5,198,6,66,0,228,176,2,232,39,0,114,33,235,22,198,6,116,0,9,195,232,87,1,114,245,176,3,232,19,0,114,13,176,3,230,10,228,33,
36,223,230,33,232,170,1,232,59,0,195,190,66,0,232,27,2,238,232,28,2,238,43,201,232,12,2,236,36,15,60,13,116,9,226,247,198,
6,116,0,128,249,195,252,185,6,0,232,232,1,172,238,226,249,232,238,1,236,168,1,116,6,198,6,116,0,32,249,195,160,116,0,10,192,
117,1,195,184,64,0,142,192,43,192,139,248,198,6,66,0,3,42,192,232,171,255,114,35,185,4,0,232,203,0,114,32,232,173,1,236,38,
136,69,66,71,232,177,1,226,237,232,184,0,114,13,232,154,1,236,168,2,116,15,198,6,116,0,255,249,195,26,6,39,6,106,6,119,6,
38,138,30,66,0,138,195,36,15,128,227,48,42,255,177,3,211,235,46,255,167,227,5,0,32,64,32,128,0,32,0,64,16,16,2,0,4,64,0,0,
17,11,1,2,32,32,16,187,2,6,60,9,115,99,46,215,162,116,0,195,187,11,6,139,200,60,10,115,84,46,215,162,116,0,128,225,8,128,
249,8,117,42,198,6,66,0,13,42,192,232,27,255,114,30,232,62,0,114,25,232,32,1,236,138,200,232,51,0,114,14,232,21,1,236,168,
1,116,6,198,6,116,0,32,249,138,193,195,187,21,6,60,2,115,19,46,215,162,116,0,195,187,23,6,60,3,115,6,46,215,162,116,0,195,
198,6,116,0,187,195,81,43,201,232,238,0,236,168,1,117,8,226,249,198,6,116,0,128,249,89,195,80,160,70,0,60,129,88,114,2,249,
195,81,250,230,12,80,88,230,11,140,192,177,4,211,192,138,232,36,240,3,195,115,2,254,197,80,230,6,138,196,230,6,138,197,36,
15,230,130,160,70,0,208,224,254,200,138,224,176,255,80,160,66,0,60,229,116,7,60,230,116,3,88,235,17,88,184,4,2,83,42,255,
138,30,70,0,82,247,227,90,91,72,80,230,7,138,196,230,7,251,89,88,3,193,89,195,251,83,81,6,86,30,43,192,142,216,196,54,4,1,
31,42,255,38,138,92,9,138,38,66,0,128,252,4,117,6,38,138,92,10,235,9,128,252,227,117,4,38,138,92,11,43,201,232,68,0,236,36,
32,60,32,116,10,226,244,75,117,241,198,6,116,0,128,232,35,0,236,36,2,8,6,116,0,232,48,0,50,192,238,94,7,89,91,195,80,176,
32,230,32,176,7,230,10,228,33,12,32,230,33,88,207,186,32,3,80,42,228,160,119,0,3,208,88,195,232,240,255,66,195,232,248,255,
66,195,232,248,255,66,195,232,243,255,236,80,232,233,255,236,36,2,88,117,22,138,38,67,0,128,228,32,117,4,208,232,208,232,
36,3,177,4,210,224,42,228,195,249,195,48,56,47,49,54,47,56,50,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,201]

View file

@ -0,0 +1,7 @@
0320 = HF_PORT
0000:0034 4 HDISK_INT
0040:0042 1 CMD_BLOCK
0003 . DISK_SETUP: JMP SHORT L3
0005 . DB '5000059 (C)COPYRIGHT IBM 1982' ; COPYRIGHT NOTICE
0023 . L3: SUB AX,AX
016E @ HD_RESET_1

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,783 @@
8042 INTERN
===========
An attempt to reveal the internal operation of the IBM PC AT 8042 keyboard controller based the disassembly of 2KB ROM from 1983. This is of historical interest.
A. Tarpai 2010
A little 8-bit nostalgia :)
(Questions & comments are welcome to tarpai76 at gmail)
This file has been downloaded from
http://www.halicery.com/8042/8042_INTERN.TXT
*** TOC
===
PART I
-
All the information I could collect on the 8042
PART II
-
ROM Disassembly
PART III
-
An UPI 41/42 disassembler
***
PART I
About the 8042
==============
+----------------+
| |
| IBM PC/AT |
| ("Host") | <- scan codes
| +----+ +-------------------------+
| 0x60 |8042| <--- DATA ----------> | AT KEYBOARD |
| 0x64 |KBC | <--- CLOCK ---------> | 84-key |
| | | +-------------------------+
| +----+ kbd commands ->
| |
| |
| |
+----------------+
IBM used an 8042 slave UPI microcomputer in the AT in 1984 as the keyboard controller. The AT keyboard was an improvement to the previous keyboard of the IBM PC and XT: it not only had 1 extra key (84 keys), but it could also receive commands from the host. Thus the connection became bi-directional and the interface much more complex. They chose to program up an 8042 for the job and solder it onto the new AT motherboard. Today all Super I/O chips sitting on the LPC bus is emulating the functions of the 8042 for the PC when turned on.
I was always very interested in the keyboard - as I'm currently typing it - and in the low-level keyboard hardware programming. Using a pre-programmed microcontroller (as it would be called today) is a quite advanced and cool feature I think (the PC and XT had only a simple serial-to-parallel converter IC to interface the keyboard).
The 'programming interface' for the AT- and PS/2-like keyboard and mouse controllers, just as the whole IBM PC is well-documented - except the program, the firmware, that drives the 8042 to function as a keyboard controller (KBC). The only thing I knew was that IBM, Award and Phoenix all wrote firmware for the 8042 and derivates used in the AT and PS/2 line of computers. The code itself was never found.
Then someone talented has dumped the 2K program ROM of a 8042-like KBC in the AT. This is a 2KB binary file and I had no idea what's inside! But peeked in with a hex editor and it looked very exciting: IBM 1983. OK, so what are these microcomputers anyway and how they work? I found these always very confusing when programming ibm-style keyboards, mice and controllers: the status register and the command byte? both has status bits... where are they exactly? When sending commands? to the KBC, to the KBD (and to the mouse)? This is the base of the whole exciting quest, that hopefully adds a bit and clears up some of the mist how these controllers really operate.
How this was done
==================
From the MESS project: "the 1503033 AT i8042 keyboard controller was dumped by Kevin Horton", "Keyboard Controller is effectively dumped (it is almost certainly the same as on the AT, has same P/N but is on a preprogrammed eprom-based i8642 instead of a mask rom i8042)" - isn't it 8742??
1. get 1503033.bin
2. study Intel UPI-41/42 USER'S MANUAL
3. wrote a (dumb) 41/42 disassembler
4. comment it.. with some love of 8-bit-nostalgia :))
TODO
====
1. there are still some white spots in the code (eg. the ROM checksum?)
2. and I certainly made mistakes.. feel free to contribute!
3. a PS/2-style firmware dump would be GREAT!
*******************************************************************************
The 8042 in general
===================
The 8042 was a slave UPI from Intel used for controlling hardware peripherials (it became famous for being used as the KBC of the AT and later for kbd/mouse of the PS/2).
The 8042 faces 2 sides: the Host system (eg. AT ISA bus) and the I/O lines to the peripherials. There is a microcomputer 'in the middle' with its own little 8-bit CPU, 2KB program memory in the ROM it executes, and some 128 bytes RAM:
+-------------------+
----> |R P27| --
----> |W 8042 P26| --
----> |A0 ==== P25| --
| P24| --
| P23| --
| P22| -- I/O lines
| P21| --
| C P U P20| --
Host | R O M |
system |D7 R A M P17| --
R/W |D6 P16| --
|D5 P15| --
<----> |D4 P14| --
|D3 P13| --
|D2 P12| --
|D1 P11| --
|D0 P10| --
| |
| T0| --
| T1| --
+-------------------+
History of the 8042
===================
February, 1978.. a preliminary description from iNTEL of the 8041/8741 UPI 8-bit microcomputer:
- Pin Compatible ROM (8041) and UV-erasable EPROM (8741) versions
- 1K words of program memory, 64 words data memory on-chip
- CPU, ROM, RAM, I/O, Timer and Clock in a Single Package
- clocked at 6 MHz
This was the same year as the MCS-48 (8048) products.
The later 8042/8742 model had doubled the memory and clock frequency:
- 2KB ROM, 128 byte RAM
- 12 MHz
8242. Pre-programmed versions for the keyboard and keyboard/mouse controller, firmware from IBM, Award and Phoenix for the AT and PS/2.
8742. EPROM (UV-erasable ROM) version of the 8042.
8042 architecture
=================
I/O lines
---------
- 2x8 input and output lines, open-collector
- pins in, out, in/out
- open collector with high imp internal pull-up
- 2 Test input pins, T0 and T1 (can be tested by machine instructions: JT0, JNT0, JT1, JNT1)
Host interface
--------------
- 8-bit data bus
- 3 physical registers
- 2 DATA BUS BUFFER registers (DBBIN and DBBOUT)
- 1 status register (STATUS)
- R, W, A0 input to chose register and R/W
- the 8042 never initiates bus cycles (='slave') only answers them
How the DATA BUS BUFFER registers work?
---------------------------------------
The name is very descriptive actually: data bus buffers. They buffer between the external- and the internal 8-bit data buses in both (R/W) directions:
+------------------------------------------------------------+
| R=1 +----------+ 8042 |
| <----- | STATUS | <----->-+ MOV STS,A ==== |
R ---> | A0=1 +----------+ | MOV A,STS |
W ---> | | |
A0 ---> | R=1 +---------------+ (OUT DBB,A) |
| +----<-- | DBB OUT | <------+ |
| | A0=0 +---------------+ | |
D0-7 <--> | <-> '<-----> Accumulator |
| | +---------------+ | |
| +------> | DBB IN | -->----+ |
| W=1 +---------------+ (IN A,DBB) |
| |
| |
+------------------------------------------------------------+
DBBIN
- Host write sets IBF in STATUS
- 8042 read clears IBF in STATUS
DBBOUT
- 8042 write sets OBF in STATUS
- Host read clears OBF in STATUS
(OBF can also be routed to output P24 to interrupt Host)
In the STATUS register these bits are controlled by the 8042 hardware automatically (the remaining bits are for software use and don't-care for the 8042):
+-----------------------+
| | | | |A0 | |IBF|OBF|
+-----------------------+
They reflect the data bus buffer registers' status and the A0 input pin. The Host can read out the content of this register any time by setting A0 and make a read from the 8042.
8-bit CPU
---------
- 2K program ROM
- 128 byte RAM
- 2 banks of 8 registers
- Accumulator for ALU (add, or, and, xor..)
- 8 words stack
- 3-bit stack pointer SP
- PSW and flags
- 10-bit Prg Cnt
- Timer and IBF interrupts
- port (P1 and P2) instructions
- TEST pin instr
- inc/dec registers
- jmp abs and conditional
- instructions can wait for data from the Host
- or some signal change on the input pins
- subroutines
- nice instruction set
- faces the ISA Host
Open collector
==============
Took me a while to understand.. but there is a very important principle:
- if the line is not controlled by anybody, it's HIGH
- if anybody pulls the line LOW, it stays low.
5V
| Line pulled low..
|
0 ->------+
|
+---> '0' ..read as '0'
|
5V
|
|
1 ->-- + 'Disconnected'..
|
+---> '1' ..read as '1'
|
5V
|
|
1 ->-- +-----<--- When disconnected, others drive the bus..
|
0/1 <----+ ..and level can be read as input
|
The 8042 in the AT
==================
To understand and comment the disassembly these were *must* to know how the 8042 was soldered on the AT mobo: the 8042 is in a HARDWIRED configuration and the firmware is programmed accordingly. This means the code controls certain lines and I had to know the schematics to understand.
The main function of the keyboard controller (KBC) is to handle the bi-directional data flow between the computer and the keyboard (KBD). It appeared on the IBM PC/AT motherboard as a 8042-variant in 1984:
+----------------+
| |
| IBM PC/AT |
| | <- scan codes
| +----+ +-------------------------+
| |8042| <--- DATA ----------> | AT KEYBOARD |
| 0x60 |KBC | <--- CLOCK ---------> | 84-key |
| 0x64 | | +-------------------------+
| +----+ kb commands ->
| |
| |
| |
+----------------+
Data flows in both directions (half-duplex) on 2-wires, CLK and DATA, using a 5 pin DIN plug:
____ ____
/ - \
| |
| 1 3 |
| 4 5 |
\ 2 /
-------
AT schematics of 8042: The Host interface
-----------------------------------------
The AT provides the chip select signal when the CPU reads/writes I/O-space 0x60 or 0x64. Bit 2 of the address line is connected to the A0 input of the 8042, so the 4 legal combinations from the Host side are:
>> AT << R W A0 >> 8042 <<
"""""""""" | | | """"""""""""
read 0x60 1 0 0 <----- DBBOUT
read 0x64 1 0 1 <----- STATUS
write 0x60 0 1 0 ---+ +--> KBD CMD
|--> DBBIN + F1 --|
write 0x64 0 1 1 ---+ +--> KBC CMD
- when Host makes a read cycle the 8042 places the contents of the DBBOUT or STATUS onto the external data bus based on the state of A0
- when Host makes a write cycle, the 8042 places the data into the DBBIN register and sets bit3 of the STATUS register based on the state of A0 (this is the reason for "before writing to 0x60 or 0x64 check if IBF=0 in the STATUS register"). Note that it is the 8042's program that will interpret the contents of the DBBIN register (data byte with write address of 0x60 or a so called command byte written to 0x64).
The AT-style STATUS register (read 0x64)
----------------------------------------
+---------------+
0x64 <-- | STATUS | <---->
+---------------+
7 Parity error
6 Receive timeout
5 Transmit timeout
4 INH (copy of P17 input, the keyboard switch, when a byte sent to Host)
3 F1 (hw, A0 input)
2 F0
1 IBF (hw)
0 OBF (hw)
There are 3 hardware status bits: OBF, IBF and F1, which are set/cleared by the 8042 hardware during operation.
F0 ('SYS'): This firmware never touches it. Host can write it by setting bit2 in the Command Byte.
The upper 4 bits (and F0) are software status bits and can mean anything.. (that's the reason they differ in AT- or PS/2-mode programmed 8042). These bits can be set in software by executing 8042 machine instructions:
"MOV STS,A"
writes the upper nibble, bits 4-7 of the STATUS register
"CLR F0" and "CPL F0"
clears and complements the F0 bit
"CLR F1" and "CPL F1"
clears and complements the F1 bit
AT schematics of 8042: The I/O interface
----------------------------------------
I drew only the pins that has meaning in the code:
+----------------+
| P27| ------> DATA
| 8042 P26| ------> _CLK
| ==== P25| ------>
| P24| ------> OBF (IRQ1)
| P23| ------> _IBF (NC)
| P22| ------>
| P21| ------>
| P20| ------>
| |
| P17| <----- KEY INHIBIT SWITCH
| P16| <-----
| P15| <-----
| P14| <-----
| P13| <-----
| P12| <-----
| P11| <-----
| P10| <-----
| |
| T0| <----- CLK
| T1| <----- DATA
+----------------+
Because of the hardwired configuration of the pins this is very important to know when reading the code. There are 2 8-bit I/O ports on the 8042, any pins can be input, output, or both(!) - cool and flexible by the way. In the AT P1 is set for input on reset, P2 is for output:
P27 -> Keyboard Data
P26 -> inverted(!) -> Keyboard Clock
P25 -> (not connected) _IBF routing for host interrupts: inverted, we interrupt host when DBBIN had been emptied by 8042
P24 -> OBF routing for host interrupts: we interrupt host when DBBOUT had been written by 8042
(The rest of the pins left free and was used for various things in the AT, don't care for the 8042, like A20-line and Reset-line).
P17 <- keyboard switch (I've seen this in my life=): it's really a KEY in a keyhole, kbd INHIBITED when the key is not in and locked (=0).
(The rest of the input lines are don't care for the 8042)
AT schematics of 8042: Keyboard CLOCK and DATA
----------------------------------------------
When I first read the disassembly it was very confusing and didn't make any sense, setting/clearing CLK and DATA.. then I saw this: an AT-compatible implementation (VT82C42) of the 8042, which cleared it up.
C L O C K I S I N V E R T E D ! (DATA is not, and don't ask me why, and the whole code is written for this schematics - caused me days of headache.. eg. "ANL P2,#$BF" pulls output P26 low, which will set the CLK HIGH):
+----------------------------+
| |
| |\ |
| | \ |
+--> T0 P26 ---| 0----+------ Keyboard CLOCK
| /
|/
|\
| \
+--> T1 P27 ---| -----+------ Keyboard DATA
| | / |
| |/ |
| |
+----------------------------+
The following CLK schematics is actually from a PS/2-style datasheet (8242BB), but it's interesting. Note the inverter on the output pin!
5V
|
§ 10K
|
|\ |
| \ |
P26 ----| 0----+
| / |
|/ +---<---->--- KBD
|
T0 <-----------+
|
= 47pF
|
GND
H _____ idle = input that can be tested by reading the level back
\
L \_____ pulled down: written, read as low for sure
****************************************************************************************************************
The disassembler was written by me and is totally free of use, full source code included.
About the code
==============
This code is from an AT-style 8042 controller so it's keyboard controller only. It was written by IBM in 1983: this keyboard controller firmware was already done in 1983 for the AT to be released in 1984.
It implements the keyboard serial protocol by direct programming of 2 lines (CLK and DATA are pulled-up open-collector lines), for both the bi-directional AT- and the previous uni-directional PC/XT-keyboard.
It really does what is well documented in reference manuals.. (but it's still interesting how - at least for me :) ).
It's amazing how much code fits into 2KB! 8-bit really rulez!
Obvious that the code was originally not written in assembly (many redundant jumps, register saves sometimes as a product of some kind of compiler - as I don't know too much about that)
*******************************************************************
THe disassembly in details
==========================
All the details I could figure out are in the source code, here is the big picture only.
The 8042 internals
==================
Reset
=====
After reset the 8042 fetches the first instruction from program ROM at $0000. In my file here is a 0x04: JMP! That was promising so I wrote a disassembler to learn the instruction set..
- dis i
- P1=ff
- P2=cf
- waits for AA command from Host - and nothing else
- then does the self-test
- enter the main poll loop
The Main Poll Loop
==================
When 'nothing' is happening, the 8042 runs in a crazy loop and waiting for things happen from the 2 sides:
host writes, IBF set <------+
KBD pulls down the CLK line --+
This is the main loop (note, that 8042 polls IBF and doesn't use interrupts).
I. Host writes to input buffer (DBBIN - INput Data Bus Buffer)
The IBF bit in the STATUS register is set. 8042 disables KBD by pulling CLK low. Checks, if write was 0x60 or 0x64 (by examining the F1 bit in the STATUS register).
- if Host has written data to 0x60, it will send it to the KBD, read the reply, and puts it into DBBOUT
- if Host has written data to 0x64, that is a 'Controller Command' and the 8042 will execute the appropriate program code
Then loops again.
II. KBD pulls down the CLK line
Probably, because the user has pressed or released a key and the KBD wants the send the 'scan code' (see another chapter on scan codes). Transmission happens on the Keyboard Data line guided by the Keyboard Clock line: this is the "AT-keyboard protocol" - see there.
Sending and receiving data from the kbd
=======================================
See the 2-wire protocol in details.
It can not only time out, but the AT serial protocol transfers with parity bit. When parity error occurs, the 8042 will try 1 more time (variable @21).
General timeout
===============
The 8042 implements a safety timeout function during each transfer. It uses the on-chip Timer and the Timer Interrupt for this function. The implementation is actually brilliant!! This is where assembly comes handy, C cannot do this.
The idea is the following. In a subroutine (eg. 'Read byte from KBD') the 8042 has to wait for a pin to change state and there is a danger for an infinite loop. So first, it starts the Timer. If the 8042 has been waiting too long, the Timer will overflow and cause an interrupt. At this point the stack looks like this:
| | Timer Interrupt Stack
| |
| INT |
| CALL |
+------+
First the return address for the subroutine was pushed by the original caller, then the interrupt occured. The Timer interrupt then does only one thing: "it returns to the original caller placing A=2 as a Timeout error code in A", by manipulating the stack: decrements the 3-bit stack pointer before executing its RETR. For the caller it looks like as if the subroutine simply returned with a 'timeout error' code!! We're in 1983.. :)
This construct is used by many functions, and the caller can decide what to do when a subroutine returns with A=2.
Earlier (IBM PC and XT) keyboard support
========================================
After days of confusion I've finally figured out what bit 5 of the Command Byte means! The IBM PC keyboard protocol mode!! So.. Did you know that the first AT-style 8042 keyboard controllers did support the old IBM PC and PC/XT keyboards? Well, I didn't.. :)
In this 'mode' all lines are driven by the keyboard and data flows only from the keyboard (uni-directional). The code at $041C does:
1. IDLE is when CLK is HIGH and DATA is LOW.
2. kbd pulls down CLK to start transmitting
3. makes a long startbit (that's why wait CLK hig.. then low.. then high again) to read first bit
4. data bit is valid on DATA line on CLK RISING EDGE
5. NO PARITY bit
XLAT
====
The other compatibility feature that can be confusing with the PC-keyboard compatibility. I hope the following will clear it up (see http:...)
The hardware part of the IBM PC keyboard was simple and straightforward: 83-keys with 83 scan codes (make codes, msb set for break codes), read from 0x60 after IRQ1. It was the PC ROM BIOS that made many confusions by implementing Special codes, functions, etc..)
XLAT is used to pretend for programs, which directly read the scan code from 0x60, that the 84-key AT keyboard is an 83-key PC/XT-keyboard:
- AT-kbd sends 0x1C when 'A' is pressed, while the XT-kbd sends 0x1E
- AT-kbd sends 0xF0 0x1C when 'A' is released, while the XT-kbd sends 0x9E.
The 8042 firmware is capable of this translation.
Why is this??
Legacy programs that read scan codes from 0x60 has relied on that 'A' is 0x1E. The 8042 could further provide this illusion even when an AT-keyboard was attached to the computer. That's it.
What about both XT-keyboard and XLAT??
======================================
Now.. we have 4 cases: XT and XLAT. The 8042 firmware cares about XLAT only in AT-mode. This means 3 cases:
XT=0 XLAT=0 => AT-KBD is attached, set-2 program reads 0x60
XT=0 XLAT=1 => AT-KBD is attached, set-1 program reads 0x60 (compatibility)
XT=1 => XT-KBD is attached, set-1 program reads 0x60
(There is no 'REVERSE XLAT' function, when set-2 with XT-KBD)
The AT keyboard protocol
========================
(Code at $03AE)
This is important, the whole keyboard protocol is programmed by 8042 code. Main features of the protocol, when the KBD is sending data to the 8042 KBC:
- KBD starts transmission by pulling CLK low
- CLK is driven by the KBD
- DATA is valid on falling edges of CLK
- CLK is INVERTED and connected to the T0 test-input pin of the 8042
- DATA on T1.
_____
C
_____
D
In the Idle state both lines are high, passively pulled up (see the open-collector 'bus protocol'). The 8042 runs in a crazy circle and constantly monitors the CLK line. When it falls.. that is a sign, so (probably) the KBD wants to send a scan code ('probably' means the 8042, before start reading in bits, will make sure that CLK is stable low).
__
C \__
_____
D
CLK pulled low by KBD (the protocol also talks about the 'start bit' on the DATA line, which is 0 when this CLK falls happen, but this 8042 code doesn't seem to care about it(?)).
__ _
C \___ _/ \__
__ ^
D \___ ~~~0
The first data bit (bit 0, LSB) will be valid on the next falling edge of CLK. 8042 simply waits for this to happen.. (loop: JT0 loop). Then reads the level of T1 (^ here) and right rotates into accumulator register, A. Here we have the first bit! (~ represents unknown state of DATA, 0 is 'bit 0', high or low depending on the data byte to send).
__ _ _
C \___ _/ \__ _/ \__
__ ^ ^
D \___ ~~~0 ~~~1
The next bit is the same: 8042 waits for the next falling edge, then reads in DATA.
_ _ _ _ _ _ _
C _/ \__ _/ \__ _/ \__ _/ \__ _/ \__ _/ \__ _/ \__
^ ^ ^ ^ ^ ^ ^
D ~~~1 ~~~2 ~~~3 ~~~4 ~~~5 ~~~6 ~~~7
It happens 8 times for all the data bits to arrive.
_ _
C _/ \__ _/ \__
^ ^
D ~~~7 ~~~P
After the last data bit the AT-keyboard will send the PARITY bit, in the same way as the 8 data bits (as a 9th bit), using 'odd-parity' (odd parity is a method to append a bit to the data, so the overall number of 1-s will be an odd number).
_ _ _
C _/ \__ _/ \__ _/
^ ___ ___
D ~~~P ~~/
After the parity bit another bit, called a '1' stop-bit is written by the KBD. After that the KBD pulls up ('releases') both lines, which returns to the high Idle state.
Compare timing of the AT and PC/XT keyboard protocol - both supported by this firmware
--------------------------------------------------------------------------------------
Here is the whole cycle when the KBD is sending data to the 8042. There are a few time constrains, and many things can go wrong during transfer. The code is dealing with all these, see the details.
AT
==
___ _ _ _ _ _ _ _ _ _ _ __
C \____ _/ \__ _/ \__ _/ \__ _/ \__ _/ \__ _/ \__ _/ \__ _/ \__ _/ \__ _/ \__ / C
IDLE __ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^__ ___ IDLE
D \___ ~~~0 ~~~1 ~~~2 ~~~3 ~~~4 ~~~5 ~~~6 ~~~7 ~~~P __/ D
AT short version:
___ _ _ _ _ __
C \____ _/ \__ _/ \__ _/ \__ _/ \__/ C
IDLE __ ^ ^ ... ^ ^ ^____ IDLE
D \___ ~~~0 ~~~7 ~~~P __/ D
- IDLE is when both CLK and DATA is high
- CLK falls..
- 11 falling edges - 11 bits
- start bit (=0) .. 8 data bits .. Parity bit .. stop bit (=1)
PC/XT
=====
__ _ _ _ _ _ _ _ _ _ ___
C \_____ _/ \__ _/ \__ _/ \__ _/ \__ _/ \__ _/ \__ _/ \__ _/ \__ _/ \__ _/ C
IDLE ____ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ IDLE
D___/ ~0 ~1 ~2 ~3 ~4 ~5 ~6 ~7 \____D
PC/XT short version:
__ _ _ _ ___
C \____ _/ \__ _/ \__ _/ \__ _/ C
IDLE ___ ^ ^ ... ^ ^ IDLE
D___/ ~0 ~7 \____D
- IDLE is when CLK is high and DATA is pulled low
- CLK falls
- 10 rising edges - 10 bits
- start bit (=1) .. 8 data bits .. stop bit (=0)
Host Commands of this 8042 firmware
===================================
Bit 0 and 1 of the Command Byte @20
-----------------------------------
= enable/disable keyboard IRQ.
Background:
When the 8042 writes a byte into DBBOUT, the OBF bit in the STATUS register gets set by the hardware. This is the normal operation, but the Host has to periodically read, poll, the OBF bit in the STATUS register to check whether a byte has been written by the 8042.
Using the "EN FLAGS" instruction (and when a '1' has been previously written to P24) the 8042 will also set the P24 output pin. If this pin is connected to the IRQ-system of the Host, it will cause an IRQ.
This firmware executes the "EN FLAGS" instruction after RESET. Better cited: "This instruction allocates two I/O lines on PORT 2 (P24 and P25). P24 is the Output Buffer Full interrupt request line to the host system. P25 is the Input Buffer empty interrupt request line. These interrupt outputs reflect the internal status of the OBF flag and the IBF inverted flag " - in the STATUS register. "Note, these outputs may be inhibited by writing a '0' to these pins. Reenabling interrupts is done by writing a '1' to these port pins." UPI-41AH/42AH manual.
So.. the 8042 can route the OBF bit of the STATUS register to one of the output pins (P24), causing an interrupt request (IRQ) to the Host system when connected. Routing OBF is the proper configuration for an interrupt-driven system, like the AT.
Note, that _IBF-routing is handled similarly to OBF and this 8042 firmware handles them together (bit 1 of the Command Byte will be written to P25), because they are not separable: "EN FLAGS" will allocate P24 and P25 together. In the AT bit 1 is specified as Reserved, because pin P25 is not connected, not used (seems like it was fine to poll IBF when the Host is writing to 0x60/0x64 and not use interrupts for that).
The 8042 firmware uses the Command Byte bit 0 to write P24, thus enabling/disabling OBF-routing to P24, thus enabling/disabling IRQ1, Keyboard Interrupt, in the AT system.
STATUS bits
===========
This register is a hardware register.
The lower nibble part is used for maintaining the Data Bus Buffer (DBB) registers' status and the A0-line by the hardware.
The upper nibble part can be set by software and are therefore firmware-dependent (8042 uses "MOV STS,A" to write data into the STATUS register).
The host reads this register on 0x64.
In the AT-firmware the bits are defined as:
+---------------- ----------------+
0x64 <-- |PER|RTO|TTO|INH| |A0 | |IBF|OBF| <----> 8042
+---------------- ----------------+
7 Parity error
6 Receive timeout
5 Transmit timeout
4 INH (copy of P17 input, the keyboard switch, updated when a byte sent to Host)
3 F1 (hw, A0 input)
2 F0
1 IBF (hw)
0 OBF (hw)
.
Writing the Command Byte @20
============================
The Command Byte is _not_ a register for the Host: just one of the 128 memory bytes at address 0x20 in the 8042's RAM. It is special when the Host issues a RAM write command to address 0x20 (by writing 0x60/0x40 to 0x64, then the value to 0x60). The 8042 firmware monitors the bits and performs different tasks, *in this order*:
1. save @20
2. write the new @20
3. Examine bit 0: OBF (set/clr P24 to en/dis IRQ1 for the Host)
4. bit 1: _IBF (same, but N/C on AT)
5. bit 2: SYS (don't care for 8042, set/clr F0 in STATUS)
6. bit 3: OVR (nop): scan code received from KBD will be passed to Host if (P17 || OVR)
7. bit 4: _EN (=1 disable kbd interface)
Setting _EN: the 8042 pulls down the CLK line immediately, disabling serial communication with the KBD.
Clearing _EN (Host enables the keyboard interface from the disabled state): nothing happens here, only set the flag @2E=1 for Main, bc of the next bit will leave the AT-KBD DISABLED(!)
8. bit 5: set AT/XT-keyboard protocol (NB. this gets examimned after _EN)
=0 Set AT-KBD protocol: DATA=1 CLK=0 (pull CLK low, DISABLE AT-KBD), go to Main and Main will enable if flag @2E is set
=1 Set XT-KBD protocol: DATA=0 CLK=1 (pull DATA low, this is IDLE-state of XT-KBD), go to Main
9. bit 6: XLAT (nop)
10. bit 7: (nop)
KBD EN variations
=================
CMD _EN CLK/DATA
RESET 1 0/1 (P2=#$CF at $0045)
CMDAA 1 0/1 (P2=#$CF at $0700)
CMD60/AT 0 0/1 (disabled & @2E=1)
CMD60/XT 0 1/0 (idle)
CMDAE 0 N/A
CMDAD 1 N/A
CMD (write P2 directly)
****
PART II
-
ROM Disassembly
see http://www.halicery.com/8042/8042_1503033.TXT
****
PART III
-
A UPI 41/42 disassembler
http://www.halicery.com/8042/dasm42.c
(and a simple win32 console front-end, main.c)
.
.

View file

@ -0,0 +1,47 @@
---
layout: page
title: IBM PC Keyboard Devices
permalink: /devices/pcx86/keyboard/
redirect_from:
- /devices/pcx86/keyboard/
---
IBM PC Keyboard Devices
---
### Keyboard Configuration Files
The easiest way for a machine to include a *[Keyboard](/docs/pcx86/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/pcx86/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-softkeys.xml](us83-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)
- [8042_1503033.TXT](8042_1503033.TXT)
- [dasm42.c](dasm42.c)
Additional information (eg, undocumented 8042 commands) is also available from [OS/2 Museum](http://www.os2museum.com/wp/?p=589).

View file

@ -0,0 +1,408 @@
#include <stdio.h> // we use printf()
/*
Small Intel UPI-41/42 DISASSEMBLER
==================================
A. Tarpai 2010 (tarpai76 gmail com)
It was written to look at some 8042 ROM dump code.
You can use and modify it for any purpose.
I'm happy if you mention me, the author.
No warranties (what for?).
Usage:
------
Call dasm42() passing a pointer, an offset and number of bytes.
Uses 1 external: printf().
The disassembler is based on the book
"Microprocessor Peripherals UPI-41A/41AH/42/42AH User's Manual, INTEL CORPORATION, 1996"
*/
static int PC;
/* Operand Addressing Mode writers */
typedef void (*Tfop)(unsigned char *p);
static void fopJMP(unsigned char *p) // JMP and CALL: 11-bit absolute address (2K)
{
printf("$%04X", ((*p<<3)&0x700) | p[1]);
}
static void fopJ(unsigned char *p) // jumps: 8-bit in-page address
{
printf("$%04X", (PC&0xff00)|p[1]); // TODO!! Jump at page boundary?? PC or PC+2 here?
}
static void fopRx(unsigned char *p) // Register Direct (x=0-7)
{
printf("R%x", *p&7);
}
static void fopPx(unsigned char *p) // Port Direct (x=[1,2])
{
printf("P%x", *p&3);
}
static void fopRRx(unsigned char *p) // Indexed @R0 or @R1
{
printf("@R%x", *p&1);
}
static void fopA(unsigned char *p) // Accumulator
{
printf("A");
}
static void fopIMM(unsigned char *p) // Immediate 8-bit value
{
printf("#$%02X", p[1]);
}
typedef void (*Tfmnop)(unsigned char *p, Tfop fop1, Tfop fop2);
static void fopJB(unsigned char *p, Tfop fop1, Tfop fop2) // JBx is special (have to complete the mn)
{
printf("%x ", *p>>5);
fopJ(p);
}
static void fmnop2(unsigned char *p, Tfop fop1, Tfop fop2) // 2-operand instructions
{
printf(" ");
fop1(p);
printf(",");
fop2(p);
}
static void fmnop1(unsigned char *p, Tfop fop1, Tfop fop2) // 1-operand instructions
{
printf(" ");
fop1(p);
}
struct instr {
char *mn;
unsigned char opcd;
unsigned char opcdmsk;
char len;
Tfmnop fmnop;
Tfop fop1, fop2;
};
static struct instr instrs[] = {
{ "ADD", 0x68, 0xf8, 1, fmnop2, fopA, fopRx}, // ADD A,Rr Add Register Contents to Accumulator
{ "ADD", 0x60, 0xfe, 1, fmnop2, fopA, fopRRx}, // ADD A,@Rr Add Data Memory Contents to Accumulator
{ "ADD", 0x03, 0xff, 2, fmnop2, fopA, fopIMM}, // ADD A,Ýdata Add Immediate Data to Accumulator
{ "ADDC", 0x78, 0xf8, 1, fmnop2, fopA, fopRx}, // ADDC A,Rr Add Carry and Register Contents to Accumulator
{ "ADDC", 0x70, 0xfe, 1, fmnop2, fopA, fopRRx}, // ADDC A,@Rr Add Carry and Data Memory Contents to Accumulator
{ "ADDC", 0x13, 0xff, 2, fmnop2, fopA, fopIMM}, // Add Carry and Immediate Data to Accumulator
{ "ANL", 0x58, 0xf8, 1, fmnop2, fopA, fopRx}, // AND A,Rr Add Register Contents to Accumulator
{ "ANL", 0x50, 0xfe, 1, fmnop2, fopA, fopRRx}, // AND A,@Rr Add Data Memory Contents to Accumulator
{ "ANL", 0x53, 0xff, 2, fmnop2, fopA, fopIMM}, // AND A,Ýdata Add Immediate Data to Accumulator
{ "ANL", 0x98, 0xfc, 2, fmnop2, fopPx, fopIMM}, // ANL PP,Ýdata Logical AND PORT 1±2 With Immediate Mask
{ "ANLD", 0x9C, 0xfc, 1, fmnop2, fopPx, fopA}, // ANLD Pp,A Logical AND Port 4±7 With Accumulator Mask
{ "CALL", 0x14, 0x1f, 2, fmnop1, fopJMP},
{ "CLR A", 0x27, 0xff, 1, 0}, // CLR A
{ "CLR C", 0x97, 0xff, 1, 0}, // CLR C Clear Carry Bit
{ "CLR F1", 0xA5, 0xff, 1, 0}, // CLR F1 Clear Flag 1
{ "CLR F0", 0x85, 0xff, 1, 0}, // CLR F0 Clear Flag 0
{ "CPL A", 0x37, 0xff, 1, 0}, // CPL A Complement Accumulator
{ "CPL C", 0xA7, 0xff, 1, 0}, // CPL C Complement Carry Bit
{ "CPL F0", 0x95, 0xff, 1, 0}, // CPL F0 COMPLEMENT FLAG 0
{ "CPL F1", 0xB5, 0xff, 1, 0}, // CPL F1 COMPLEMENT FLAG 1
{ "DA A", 0x57, 0xff, 1, 0}, // DA A Decimal Adjust Accumulator
{ "DEC A", 0x07, 0xff, 1, 0}, // DEC A Decrement Accumulator
{ "DEC", 0xC8, 0xf8, 1, fmnop1, fopRx}, // DEC Rr Decrement Register
{ "DIS I", 0x15, 0xff, 1, 0}, // DIS I Disable IBF Interrupt
{ "DIS TCNTI", 0x35, 0xff, 1, 0}, // DIS TCNTI Disable Timer/Counter Interrupt
{ "DJNZ", 0xE8, 0xf8, 2, fmnop2, fopRx, fopJ}, // DJNZ Rr, address Decrement Register and Test
{ "EN DMA", 0xE5, 0xff, 1, 0}, // EN DMA Enable DMA Handshake Lines
{ "EN FLAGS", 0xF5, 0xff, 1, 0 }, // EN FLAGS Enable Master Interrupts
{ "EN I", 0x05, 0xff, 1, 0 }, // EN I Enable IBF Interrupt
{ "EN TCNTI", 0x25, 0xff, 1, 0}, // EN TCNTI Enable Timer/Counter Interrupt
{ "IN A,DBB", 0x22, 0xff, 1, 0}, // IN A,DBB Input Data Bus Buffer Contents to Accumulator
{ "IN", 0x08, 0xfc, 1, fmnop2, fopA, fopPx}, // IN A,Pp Input Port 1±2 Data to Accumulator
{ "INC A", 0x17, 0xff, 1, 0}, // INC A
{ "INC", 0x18, 0xf8, 1, fmnop1, fopRx}, // INC Rr Increment Register
{ "INC", 0x10, 0xfe, 1, fmnop1, fopRRx}, // INC @Rr Increment Data Memory Location
{ "JB", 0x12, 0x1f, 2, fopJB}, // JBb address Jump If Accumulator Bit is Set
{ "JC", 0xF6, 0xff, 2, fmnop1, fopJ }, //
{ "JF0", 0xB6, 0xff, 2, fmnop1, fopJ }, //
{ "JF1", 0x76, 0xff, 2, fmnop1, fopJ }, //
{ "JMP", 0x04, 0x1f, 2, fmnop1, fopJMP},
{ "JMPP @A", 0xB3, 0xff, 1, 0 }, // JMPP @A Indirect Jump Within Page
{ "JNC", 0xE6, 0xff, 2, fmnop1, fopJ }, //
{ "JNIBF", 0xD6, 0xff, 2, fmnop1, fopJ }, //
{ "JNT0", 0x26, 0xff, 2, fmnop1, fopJ }, // JNTO address Jump if TEST 0 is Low
{ "JNT1", 0x46, 0xff, 2, fmnop1, fopJ }, //
{ "JNZ", 0x96, 0xff, 2, fmnop1, fopJ }, //
{ "JOBF", 0x86, 0xff, 2, fmnop1, fopJ }, //
{ "JTF", 0x16, 0xff, 2, fmnop1, fopJ }, //
{ "JT0", 0x36, 0xff, 2, fmnop1, fopJ }, //
{ "JT1", 0x56, 0xff, 2, fmnop1, fopJ }, //
{ "JZ", 0xC6, 0xff, 2, fmnop1, fopJ }, //
{ "MOV", 0x23, 0xff, 2, fmnop2, fopA, fopIMM }, // MOV A,Ýdata Move Immediate Data to Accumulator
{ "MOV A,PSW", 0xC7, 0xff, 1, 0}, // MOV A,PSW Move PSW Contents to Accumulator
{ "MOV", 0xF8, 0xf8, 1, fmnop2, fopA, fopRx }, // MOV A,Rr Move Register Contents to Accumulator
{ "MOV", 0xF0, 0xfe, 1, fmnop2, fopA, fopRRx }, // MOV A,@Rr Move Data Memory Contents to Accumulator
{ "MOV A,T", 0x42, 0xff, 1, 0}, // MOV A,T Move Timer/Counter Contents to Accumulator
{ "MOV PSW,A", 0xD7, 0xff, 1, 0}, // MOV PSW,A Move Accumulator Contents to PSW
{ "MOV", 0xA8, 0xf8, 1, fmnop2, fopRx, fopA }, // MOV Rr,A Move Accumulator Contents to Register
{ "MOV", 0xB8, 0xf8, 2, fmnop2, fopRx, fopIMM }, // MOV Rr,Ýdata Move Immediate Data to Register
{ "MOV", 0xA0, 0xfe, 1, fmnop2, fopRRx, fopA }, // MOV @Rr,A Move Accumulator Contents to Data Memory
{ "MOV", 0xB0, 0xfe, 2, fmnop2, fopRRx, fopIMM }, // MOV @Rr,Ýdata Move Immediate Data to Data Memory
{ "MOV STS,A", 0x90, 0xff, 1, 0}, // MOV STS,A Move Accumulator Contents to STS Register
{ "MOV T,A", 0x62, 0xff, 1, 0}, // MOV T,A Move Accumulator Contents to Timer/Counter
{ "MOVD", 0x0C, 0xfc, 2, fmnop2, fopA, fopPx }, // MOVD A,Pp Move Port 4±7 Data to Accumulator
{ "MOVD", 0x3C, 0xfc, 2, fmnop2, fopPx, fopA }, // MOVD Pp,A Move Accumulator Data to Port 4, 5, 6 and 7
{ "MOVP A,@A", 0xA3, 0xff, 1, 0}, // MOVP A,@A Move Current Page Data to Accumulator
{ "MOVP3 A,@A", 0xE3, 0xff, 1, 0}, // MOVP3 A,@A Move Page 3 Data to Accumulator
{ "NOP", 0x00, 0xff, 1, 0},
{ "ORL", 0x48, 0xf8, 1, fmnop2, fopA, fopRx}, // ORL A,Rr Logical OR Accumulator With Register Mask
{ "ORL", 0x40, 0xfe, 1, fmnop2, fopA, fopRRx}, // ORL A,@Rr Logical OR Accumulator With Memory Mask
{ "ORL", 0x43, 0xff, 2, fmnop2, fopA, fopIMM}, // ORL A,ÝData Logical OR Accumulator With Immediate Mask
{ "ORL", 0x88, 0xfc, 2, fmnop2, fopPx, fopIMM}, // ORL Pp,Ýdata Logical OR Port 1±2 With Immediate Mask
{ "ORLD", 0x8C, 0xfc, 2, fmnop2, fopPx, fopA}, // ORLD Pp,A Logical OR Port 4±7 With Accumulator Mask
{ "OUT DBB,A", 0x02, 0xff, 1, 0}, // OUT DBB,A Output Accumulator Contents to Data Bus Buffer
{ "OUTL", 0x38, 0xfc, 1, fmnop2, fopPx, fopA }, // OUTL Pp,A Output Accumulator Data to Port 1 and 2
{ "RET", 0x83, 0xff, 1, 0}, // RET Return Without PSW Restore
{ "RETR", 0x93, 0xff, 1, 0}, // RET Return Without PSW Restore
{ "RL A", 0xE7, 0xff, 1, 0}, // RL A Rotate Left Without Carry
{ "RLC A", 0xF7, 0xff, 1, 0}, // RLC A Rotate Left Through Carry
{ "RR A", 0x77, 0xff, 1, 0}, // RR A Rotate Right Without Carry
{ "RRC A", 0x67, 0xff, 1, 0}, // RRC A Rotate Right Through Carry
{ "SEL RB0", 0xC5, 0xff, 1, 0}, // SEL RB0 Select Register Bank 0
{ "SEL RB1", 0xD5, 0xff, 1, 0}, // SEL RB1 Select Register Bank 1
{ "STOP TCNT", 0x65, 0xff, 1, 0}, // STOP TCNT Stop Timer/Event Counter
{ "STRT CNT", 0x45, 0xff, 1, 0}, // STRT CNT Start Event Counter
{ "STRT T", 0x55, 0xff, 1, 0}, // STRT T Start Timer
{ "SWAP A", 0x47, 0xff, 1, 0}, // SWAP A Swap Nibbles Within Accumulator
{ "XCH", 0x28, 0xf8, 1, fmnop2, fopA, fopRx}, // XCH ARr Exchange Accumulator-Register Contents
{ "XCH", 0x20, 0xfe, 1, fmnop2, fopA, fopRRx}, // XCH A,@Rr Exchange Accumulator and Data Memory Contents
{ "XCHD", 0x30, 0xfe, 1, fmnop2, fopA, fopRRx}, // XCHD A,@Rr Exchange Accumulator and Data Memory 4-bit Data
{ "XRL", 0xD8, 0xf8, 1, fmnop2, fopA, fopRx}, // XRL A,Rr Logical XOR Accumulator With Register Mask
{ "XRL", 0xD0, 0xfe, 1, fmnop2, fopA, fopRRx}, // XRL A,@Rr Logical XOR Accumulator With Memory Mask
{ "XRL", 0xD3, 0xff, 2, fmnop2, fopA, fopIMM}, // XRL A,Ýdata, Logical XOR Accumulator With Immediate Mask
{ "???", 0, 0, 1, 0} // All others (zero-mask will be true - if reached, len=1)
};
static int instr1(unsigned char *p)
{
struct instr *i= instrs;
for (; ; i++) {
if ((*p & i->opcdmsk) == i->opcd) {
printf("%04X: ", PC); // print Program Counter
PC+=i->len; // we increment PC as if CPU did for JMP instructions(?)
printf("%02X ", p[0]); // write 1 or 2 code bytes
if (i->len==2) printf("%02X ", p[1]);
else printf(" ");
printf("%s", i->mn); // write mnemonic
if (i->fmnop) i->fmnop(p, i->fop1, i->fop2); // write 0, 1 or 2 operands
printf("\n");
return i->len;
}
}
}
/* Extern.
Disassemble iNTEL UPI-41/42 machine code
of n bytes, from p + offset
*/
void dasm42(char *p, int offs, int n)
{
p+=offs;
PC=offs;
n+=offs;
for (; PC < n;) p+=instr1(p);
}
/********** NOTES ****************************************************
Addressing:
- implicite (in instr)
- register Rn (0..7)
- indexed @Rn (0..1)
- A
- # (0..$ff)
- addr, 1 byte + PC (0..$ffff)
--------------------
RAM (DATA) 256 bytes
--------------------
0..7 R0..R7 BANK0 (Bs in PSW)
8..23 STACK (8x16bit) .....
24..31 R0..R7 BANK1
...... to top: "RAM" .....
R0, R1 can be index register
----------------
ROM (PROGRAM) 2K
----------------
RESET: $0000
IBR INT: $0003
TIMER INT: $0007
-----------
PC - 10-bit (not 11?)
-----------
PC always points to next instruction.
----
JUMP
----
a.) absolute address: JMP $35E = aa a9 a8 0 0 1 0 0 a7 a6 a5 a4 a3 a2 a1 a0 (2-byte instr)
b.) "relative" (op -> PC-LO): JZ $addr = $C6 $op (2-byte instr)
// OK.. "If a conditional JUMP or indirect JUMP begins in location 255 of a page, it must reference a destination on the following page"
--------
PC-stack
--------
8x16 bits: call/int saves PSW[7..4]&PC[11..0]
-------------------------
PSW - program status word
-------------------------
7 6 5 4 | 3 | 2 1 0
C AC F0 Bs| - | SP
CALL: push PC&PSW[7..4]
RET: pop PC
RETR: pop PC&PSW[7..4]
On-chip oscillator
------------------
1 to 12.5 MHz
or external
-------------------
8-bit Timer/Counter
-------------------
Timer-mode
- increments on OSC + 32-prescale
- START T .. STOP TCNT
Counter-mode
- increments on falling edges on TEST1-pin
- START CNT .. STOP TCNT
- MOV T,A and MOV A,T for reading/writing
Timer/Counter OVERFLOW
----------------------
fe..ff..00
1. sets timer flag (TF) - then can be tested by JTF (which clears TF)
2. generates IRQ
3. EN/DIS TCNTI
4. if enabled: CALL $0007 happens
----------
INTERRUPTS
----------
IBF:
- higher pri
- EN/DIS I
- CS & RW triggers
Timer
- EN/DIS TCNTI
-
1. IRQ set + disable all interrupts
2. CALL 3 (IBF) or 7 (T)
3. entering ISR clears IRQ
4. ISR
5. RETR (re-enables interrupt)
HOST INTERRUPTS
---------------
EN FLAGS will allocate P24/P25 to OBF/_IBF (only RESET clears it)
"These interrupt outputs reflect the internal status of the OBF flag and the IBF inverted flag."
"Note, these outputs may be inhibited by writing a '0' to these pins. Reenabling interrupts is done by writing a '1' to these port pins."
==> so host cpu doesn't have to poll the same bits in STATUS REG (0x64); it can have it as interrupts (this is set in the code after RESET..)
------------
HOST CPU I/O
------------
!!! There are 3 registers in the UPI on the host side !!! (NB. host CPU writes into DBBIN..)
<--R-- STATUS <--- MOV STS,A + JF0,JF1,JOBF,JNIBF
HOST CPU I/O <--R-- DBBOUT <--- OUT DBB,A
--W--> DBBIN ---> IN A,DBB
RD WR A0
0 1 0 (0x60) Read DBBOUT register
0 1 1 (0x64) Read STATUS register
1 0 0 (0x60) Write DBBIN!
1 0 1 (0x64) Write DBBIN!
==> A0-pin simply latches into STATUS-F1-bit on host write, what the UPI can test by JF1 $xx.
-----------------
Data buffers: DBB
-----------------
DBBIN, DBBOUT
"When CS, A0 and RD are low, the contents of the DBBOUT register is placed on the three-state Data lines D0-D7 and the OBF flag is cleared."
"When CS and WR are low, the contents of the system data bus is latched into DBBIN. Also, the IBF flag is set and an interrupt is generated, if enabled."
--------------------
ST - status register
--------------------
= Bus buffer register status word.
ST7 ST6 ST5 ST4 | F1 F0 | IBF OBF
ST7-4: user defined, MOV STS,A writes them, UPI doesn't care more about it.
F0: user defined (JF0 $xx)
F1 = A0-pin (Command/Data)
"OBF Output Buffer Full: This flag is automatically set when the UPI-Microcomputer loads the DBBOUT register and is cleared when the master processor reads the data register."
"IBF Input Buffer Full: This flag is set when the master processor writes a character to the DBBIN register and is cleared when the UPI INputs the data register contents to its accumulator."
---------
I/O PORTS
---------
2 x 8-bit: P1 and P2
OUTL Pn,A
IN A,Pn
"To use a particular PORT pin as an input, a logic '1' must first be written to that pin."
*/

View file

@ -0,0 +1,9 @@
<?xml version="1.0" encoding="UTF-8"?>
<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="left">&#x2190;</control>
<control type="button" binding="up">&#x2191;</control>
<control type="button" binding="down">&#x2193;</control>
<control type="button" binding="right">&#x2192;</control>
</keyboard>

View file

@ -0,0 +1,16 @@
<?xml version="1.0" encoding="UTF-8"?>
<keyboard id="keyboard" model="us83" pos="left" padleft="8px" padbottom="8px">
<control type="button" binding="esc">ESC</control>
<control type="button" binding="ctrl-c">CTRL-C</control>
<control type="button" binding="ctrl-alt-del">CTRL-ALT-DEL</control>
<control type="button" binding="f1">F1</control>
<control type="button" binding="f2">F2</control>
<control type="button" binding="f3">F3</control>
<control type="button" binding="f4">F4</control>
<control type="button" binding="f5">F5</control>
<control type="button" binding="f6">F6</control>
<control type="button" binding="f7">F7</control>
<control type="button" binding="f8">F8</control>
<control type="button" binding="f9">F9</control>
<control type="button" binding="f10">F10</control>
</keyboard>

View file

@ -0,0 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<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>

View file

@ -0,0 +1,8 @@
<?xml version="1.0" encoding="UTF-8"?>
<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>
<control type="button" binding="ctrl-alt-del">CTRL-ALT-DEL</control>
<control type="button" binding="ctrl-alt-ins">CTRL-ALT-INS</control>
</keyboard>

View file

@ -0,0 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?>
<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>
<control type="button" binding="ctrl-alt-enter">CTRL-ALT-ENTER</control>
</keyboard>

View file

@ -0,0 +1,87 @@
<keyboard id="keyboard" model="us83" pos="center" width="900px" height="210px" padleft="8px">
<control type="container">
<control type="key" binding="f1" width="34px" top="0px" left="0px">F1</control>
<control type="key" binding="f2" width="34px" top="0px" left="42px">F2</control>
<control type="key" binding="f3" width="34px" top="42px" left="0px">F3</control>
<control type="key" binding="f4" width="34px" top="42px" left="42px">F4</control>
<control type="key" binding="f5" width="34px" top="84px" left="0px">F5</control>
<control type="key" binding="f6" width="34px" top="84px" left="42px">F6</control>
<control type="key" binding="f7" width="34px" top="126px" left="0px">F7</control>
<control type="key" binding="f8" width="34px" top="126px" left="42px">F8</control>
<control type="key" binding="f9" width="34px" top="168px" left="0px">F9</control>
<control type="key" binding="f10" width="34px" top="168px" left="42px">F10</control>
<control type="key" binding="esc" width="46px" top="0px" left="96px">Esc</control>
<control type="key" binding="1" width="34px" top="0px" left="150px">1 !</control>
<control type="key" binding="2" width="34px" top="0px" left="192px">2 @</control>
<control type="key" binding="3" width="34px" top="0px" left="234px">3 #</control>
<control type="key" binding="4" width="34px" top="0px" left="276px">4 $</control>
<control type="key" binding="5" width="34px" top="0px" left="318px">5 %</control>
<control type="key" binding="6" width="34px" top="0px" left="360px">6 ^</control>
<control type="key" binding="7" width="34px" top="0px" left="402px">7 &amp;</control>
<control type="key" binding="8" width="34px" top="0px" left="444px">8 *</control>
<control type="key" binding="9" width="34px" top="0px" left="486px">9 (</control>
<control type="key" binding="0" width="34px" top="0px" left="528px">0 )</control>
<control type="key" binding="-" width="34px" top="0px" left="570px">- _</control>
<control type="key" binding="=" width="34px" top="0px" left="612px">= +</control>
<control type="key" binding="bs" width="46px" top="0px" left="654px">Back</control>
<control type="key" binding="num-lock" width="76px" top="0px" left="708px">Num</control>
<control type="key" binding="scroll-lock" width="76px" top="0px" left="792px">Scroll</control>
<control type="key" binding="tab" width="46px" top="42px" left="96px">Tab</control>
<control type="key" binding="q" width="34px" top="42px" left="150px">Q</control>
<control type="key" binding="w" width="34px" top="42px" left="192px">W</control>
<control type="key" binding="e" width="34px" top="42px" left="234px">E</control>
<control type="key" binding="r" width="34px" top="42px" left="276px">R</control>
<control type="key" binding="t" width="34px" top="42px" left="318px">T</control>
<control type="key" binding="y" width="34px" top="42px" left="360px">Y</control>
<control type="key" binding="u" width="34px" top="42px" left="402px">U</control>
<control type="key" binding="i" width="34px" top="42px" left="444px">I</control>
<control type="key" binding="o" width="34px" top="42px" left="486px">O</control>
<control type="key" binding="p" width="34px" top="42px" left="528px">P</control>
<control type="key" binding="[" width="34px" top="42px" left="570px">[ {</control>
<control type="key" binding="]" width="34px" top="42px" left="612px">] }</control>
<control type="key" binding="enter" height="76px" width="46px" top="42px" left="654px"><br/>Enter</control>
<control type="key" binding="num-home" width="34px" top="42px" left="708px">7</control>
<control type="key" binding="num-up" width="34px" top="42px" left="750px">8</control>
<control type="key" binding="num-pgup" width="34px" top="42px" left="792px">9</control>
<control type="key" binding="num-sub" width="34px" top="42px" left="834px">-</control>
<control type="key" binding="ctrl" width="46px" top="84px" left="96px">Ctrl</control>
<control type="key" binding="a" width="34px" top="84px" left="150px">A</control>
<control type="key" binding="s" width="34px" top="84px" left="192px">S</control>
<control type="key" binding="d" width="34px" top="84px" left="234px">D</control>
<control type="key" binding="f" width="34px" top="84px" left="276px">F</control>
<control type="key" binding="g" width="34px" top="84px" left="318px">G</control>
<control type="key" binding="h" width="34px" top="84px" left="360px">H</control>
<control type="key" binding="j" width="34px" top="84px" left="402px">J</control>
<control type="key" binding="k" width="34px" top="84px" left="444px">K</control>
<control type="key" binding="l" width="34px" top="84px" left="486px">L</control>
<control type="key" binding=";" width="34px" top="84px" left="528px">; :</control>
<control type="key" binding="quote" width="34px" top="84px" left="570px">' "</control>
<control type="key" binding="`" width="34px" top="84px" left="612px">` ~</control>
<control type="key" binding="num-left" width="34px" top="84px" left="708px">4</control>
<control type="key" binding="num-center" width="34px" top="84px" left="750px">5</control>
<control type="key" binding="num-right" width="34px" top="84px" left="792px">6</control>
<control type="key" binding="num-add" height="118px" width="34px" top="84px" left="834px"><br/>+</control>
<control type="key" binding="shift" width="46px" top="126px" left="96px">Shift</control>
<control type="key" binding="\\" width="34px" top="126px" left="150px">\ |</control>
<control type="key" binding="z" width="34px" top="126px" left="192px">Z</control>
<control type="key" binding="x" width="34px" top="126px" left="234px">X</control>
<control type="key" binding="c" width="34px" top="126px" left="276px">C</control>
<control type="key" binding="v" width="34px" top="126px" left="318px">V</control>
<control type="key" binding="b" width="34px" top="126px" left="360px">B</control>
<control type="key" binding="n" width="34px" top="126px" left="402px">N</control>
<control type="key" binding="m" width="34px" top="126px" left="444px">M</control>
<control type="key" binding="," width="34px" top="126px" left="486px">, &lt;</control>
<control type="key" binding="." width="34px" top="126px" left="528px">. &gt;</control>
<control type="key" binding="/" width="34px" top="126px" left="570px">/ ?</control>
<control type="key" binding="right-shift" width="46px" top="126px" left="612px">Shift</control>
<control type="key" binding="prtsc" width="34px" top="126px" left="666px">PrtSc</control>
<control type="key" binding="num-end" width="34px" top="126px" left="708px">1</control>
<control type="key" binding="num-down" width="34px" top="126px" left="750px">2</control>
<control type="key" binding="num-pgdn" width="34px" top="126px" left="792px">3</control>
<control type="key" binding="alt" width="46px" top="168px" left="96px">Alt</control>
<control type="key" binding="space" width="434px" top="168px" left="150px">Space</control>
<control type="key" binding="caps-lock" width="66px" top="168px" left="592px">Caps</control>
<control type="key" binding="num-ins" width="76px" top="168px" left="666px">Ins</control>
<control type="key" binding="num-del" width="76px" top="168px" left="750px">Del</control>
</control>
</keyboard>

View file

@ -0,0 +1,10 @@
<?xml version="1.0" encoding="UTF-8"?>
<keyboard id="keyboard" model="us84" pos="left" padleft="8px" padbottom="8px">
<control type="button" binding="esc">ESC</control>
<control type="button" binding="f1">F1</control>
<control type="button" binding="sysreq">SysReq</control>
<control type="button" binding="left">&#x2190;</control>
<control type="button" binding="up">&#x2191;</control>
<control type="button" binding="down">&#x2193;</control>
<control type="button" binding="right">&#x2192;</control>
</keyboard>

View file

@ -0,0 +1,17 @@
<?xml version="1.0" encoding="UTF-8"?>
<keyboard id="keyboard" model="us84" pos="left" padleft="8px" padbottom="8px">
<control type="button" binding="esc">ESC</control>
<control type="button" binding="ctrl-c">CTRL-C</control>
<control type="button" binding="ctrl-alt-del">CTRL-ALT-DEL</control>
<control type="button" binding="f1">F1</control>
<control type="button" binding="f2">F2</control>
<control type="button" binding="f3">F3</control>
<control type="button" binding="f4">F4</control>
<control type="button" binding="f5">F5</control>
<control type="button" binding="f6">F6</control>
<control type="button" binding="f7">F7</control>
<control type="button" binding="f8">F8</control>
<control type="button" binding="f9">F9</control>
<control type="button" binding="f10">F10</control>
<control type="button" binding="sysreq">SysReq</control>
</keyboard>

View file

@ -0,0 +1,12 @@
<?xml version="1.0" encoding="UTF-8"?>
<keyboard id="keyboard" model="us84" pos="left" padleft="8px" padbottom="8px">
<control type="button" binding="esc">ESC</control>
<control type="button" binding="f1">F1</control>
<control type="button" binding="sysreq">SysReq</control>
<control type="button" binding="left">&#x2190;</control>
<control type="button" binding="up">&#x2191;</control>
<control type="button" binding="down">&#x2193;</control>
<control type="button" binding="right">&#x2192;</control>
<control type="button" binding="test1" value="Hello World!">HELLO</control>
<control type="button" binding="test2" value="GoodBye!">GOODBYE</control>
</keyboard>

View file

@ -0,0 +1,16 @@
---
layout: page
title: IBM PC (Model 5150) Machines
permalink: /devices/pcx86/machine/5150/
redirect_from:
- /configs/pc/machines/5150/
---
IBM PC (Model 5150) Machines
---
Our IBM PC 5150 configurations include:
* [IBM PC with Monochrome Display](/devices/pcx86/machine/5150/mda/)
* [IBM PC with Color Display](/devices/pcx86/machine/5150/cga/)
* [IBM PC with Dual Displays (Monochrome and Color)](/devices/pcx86/machine/5150/dual/64kb/)

View file

@ -0,0 +1,13 @@
---
layout: page
title: IBM PC (Model 5150, 384Kb) with Color Display and Soft Keyboard
permalink: /devices/pcx86/machine/5150/cga/384kb/softkbd/
redirect_from:
- /devices/pcx86/machine/5150/cga/384kb/
machines:
- type: pcx86
id: ibm5150
debugger: true
---
{% include machine.html id="ibm5150" %}

View file

@ -0,0 +1,20 @@
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="/versions/pcx86/1.23.0/machine.xsl"?>
<machine id="ibm5150" class="pcx86" border="1" width="1000px" pos="center" background="white">
<name>IBM PC (Model 5150), CGA, 384K</name>
<computer id="pc-cga-384k" name="IBM PC"/>
<cpu id="cpu8088" model="8088"/>
<debugger id="debugger"/>
<ram id="ramLow" addr="0x00000" test="false" comment="no memory test"/>
<rom id="romBASIC" addr="0xf6000" size="0x8000" file="/devices/pcx86/rom/5150/basic/BASIC100.json"/>
<rom id="romBIOS" addr="0xfe000" size="0x2000" file="/devices/pcx86/rom/5150/1981-04-24/PCBIOS-REV1.json"/>
<video ref="/devices/pcx86/video/ibm/cga/ibm-cga.xml"/>
<fdc ref="/disks/pcx86/compiled/library.xml"/>
<keyboard ref="/devices/pcx86/keyboard/us83-softkeys.xml"/>
<panel ref="/devices/pcx86/panel/wide.xml"/>
<chipset id="chipset" model="5150" sw1="01001001" sw2="10101000" pos="left" padleft="8px" padbottom="8px">
<control type="switches" label="SW1" binding="sw1" left="0px"/>
<control type="switches" label="SW2" binding="sw2" left="0px"/>
<control type="description" binding="swdesc" left="0px"/>
</chipset>
</machine>

View file

@ -0,0 +1,16 @@
---
layout: page
title: IBM PC (Model 5150, 64Kb) with Color Display
permalink: /devices/pcx86/machine/5150/cga/64kb/
redirect_from:
- /configs/pc/machines/5150/cga/64kb/
---
IBM PC with Color Graphics (CGA) Display
---
All our 64Kb configurations of the IBM PC Model 5150 w/CGA are located here, including:
* [IBM PC (64Kb) with Color Display](/devices/pcx86/machine/5150/cga/64kb/donkey/)
* [IBM PC (64Kb) with Color Display and Debugger](/devices/pcx86/machine/5150/cga/64kb/donkey/debugger/)
* [IBM PC (64Kb) with Color Display and Soft Keyboard](/devices/pcx86/machine/5150/cga/64kb/softkbd/)

View file

@ -0,0 +1,28 @@
---
layout: page
title: IBM PC (Model 5150, 64Kb) with Color Display
permalink: /devices/pcx86/machine/5150/cga/64kb/donkey/
redirect_from:
- /configs/pc/machines/5150/cga/64kb/donkey/
- /configs/pc/machines/5150/cga/64kb/donkey/machine.xml/
- /demos/pc/donkey/
machines:
- type: pcx86
id: ibm5150
---
IBM PC with Color Display
---
{% include machine.html id="ibm5150" %}
The above simulation is configured for a clock speed of 4.77Mhz, with 64Kb of RAM and a CGA display,
using the original IBM PC Model 5150 ROM BIOS and CGA font ROM. This configuration also includes a
predefined state, with PC-DOS 1.0 already booted and DONKEY.BAS ready to run.
And now that PCjs automatically saves all your changes (subject to the limits of your browser's local
storage), you can even close the browser in the middle of a game of DONKEY, and the next time you load
this page, your progress (and the donkey) will be perfectly restored.
For more control over this machine, try the [Control Panel](debugger/) configuration, featuring the
built-in PCjs Debugger.

View file

@ -0,0 +1,13 @@
---
layout: page
title: IBM PC (Model 5150, 64Kb) with Color Display and Debugger
permalink: /devices/pcx86/machine/5150/cga/64kb/donkey/debugger/
redirect_from:
- /devices/pcx86/machine/5150/cga/64kb/donkey/debugger/
machines:
- type: pcx86
id: ibm5150
debugger: true
---
{% include machine.html id="ibm5150" %}

View file

@ -0,0 +1,16 @@
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="/versions/pcx86/1.23.0/machine.xsl"?>
<machine id="ibm5150" class="pcx86" border="1" width="980px" pos="center" background="#FAEBD7">
<name pos="center">IBM PC (Model 5150), CGA, 64K</name>
<computer id="pc-cga-64k" name="IBM PC" state="/devices/pcx86/machine/5150/cga/64kb/donkey/state.json"/>
<ram id="ramLow" addr="0x00000"/>
<rom id="romBASIC" addr="0xf6000" size="0x8000" file="/devices/pcx86/rom/5150/basic/BASIC100.json"/>
<rom id="romBIOS" addr="0xfe000" size="0x2000" file="/devices/pcx86/rom/5150/1981-04-24/PCBIOS-REV1.json"/>
<video ref="/devices/pcx86/video/ibm/cga/ibm-cga.xml"/>
<fdc ref="/disks/pcx86/compiled/samples.xml"/>
<cpu id="cpu8088" model="8088" autostart="true"/>
<keyboard ref="/devices/pcx86/keyboard/us83-buttons-minimal.xml"/>
<debugger id="debugger"/>
<panel ref="/devices/pcx86/panel/wide.xml"/>
<chipset ref="/devices/pcx86/chipset/5150-cga-max.xml"/>
</machine>

View file

@ -0,0 +1,17 @@
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="/versions/pcx86/1.23.0/machine.xsl"?>
<machine id="ibm5150" class="pcx86" border="1" width="980px" pos="center" background="#FAEBD7">
<name pos="center">IBM PC (Model 5150), CGA, 64K</name>
<computer id="pc-cga-64k" name="IBM PC" state="/devices/pcx86/machine/5150/cga/64kb/donkey/state.json"/>
<ram id="ramLow" addr="0x00000"/>
<rom id="romBASIC" addr="0xf6000" size="0x8000" file="/devices/pcx86/rom/5150/basic/BASIC100.json"/>
<rom id="romBIOS" addr="0xfe000" size="0x2000" file="/devices/pcx86/rom/5150/1981-04-24/PCBIOS-REV1.json"/>
<video ref="/devices/pcx86/video/ibm/cga/ibm-cga.xml"/>
<fdc ref="/disks/pcx86/compiled/samples.xml"/>
<cpu id="cpu8088" model="8088" autostart="true" pos="left" padleft="8px" padbottom="8px">
<control type="button" binding="run">Run</control>
<control type="button" binding="reset">Reset</control>
</cpu>
<keyboard ref="/devices/pcx86/keyboard/us83-buttons-minimal.xml"/>
<chipset id="chipset" model="5150" sw1="01001001" sw2="11111000"/>
</machine>

Binary file not shown.

After

Width:  |  Height:  |  Size: 180 KiB

File diff suppressed because one or more lines are too long

Binary file not shown.

After

Width:  |  Height:  |  Size: 20 KiB

View file

@ -0,0 +1,11 @@
---
layout: page
title: IBM PC (Model 5150, 64Kb) with Color Display and Soft Keyboard
permalink: /devices/pcx86/machine/5150/cga/64kb/softkbd/
machines:
- type: pcx86
id: ibm5150
debugger: true
---
{% include machine.html id="ibm5150" %}

View file

@ -0,0 +1,16 @@
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="/versions/pcx86/1.23.0/machine.xsl"?>
<machine id="ibm5150" class="pcx86" border="1" width="1000px" pos="center" background="white">
<name>IBM PC (Model 5150), CGA, 64K</name>
<computer id="pc-cga-64k" name="IBM PC"/>
<cpu id="cpu8088" model="8088"/>
<ram id="ramLow" addr="0x00000"/>
<rom id="romBASIC" addr="0xf6000" size="0x8000" file="/devices/pcx86/rom/5150/basic/BASIC100.json"/>
<rom id="romBIOS" addr="0xfe000" size="0x2000" file="/devices/pcx86/rom/5150/1981-04-24/PCBIOS-REV1.json"/>
<video ref="/devices/pcx86/video/ibm/cga/ibm-cga.xml"/>
<fdc ref="/disks/pcx86/compiled/samples.xml"/>
<keyboard ref="/devices/pcx86/keyboard/us83-softkeys.xml"/>
<debugger id="debugger"/>
<panel ref="/devices/pcx86/panel/wide.xml"/>
<chipset ref="/devices/pcx86/chipset/5150-cga-max.xml"/>
</machine>

View file

@ -0,0 +1,17 @@
---
layout: page
title: IBM PC (Model 5150) with Color Display
permalink: /devices/pcx86/machine/5150/cga/
redirect_from:
- /configs/pc/machines/5150/cga/
- /demos/pc/cga/
---
IBM PC with Color Graphics (CGA) Display
---
All our Color Graphics (CGA) configurations of the IBM PC Model 5150 are located here, including:
* [IBM PC (64Kb) with Color Display](/devices/pcx86/machine/5150/cga/64kb/donkey/) ([Debugger](/devices/pcx86/machine/5150/cga/64kb/donkey/debugger/))
* [IBM PC (64Kb) with Color Display and Soft Keyboard (Debugger)](/devices/pcx86/machine/5150/cga/64kb/softkbd/)
* [IBM PC (384Kb) with Color Display and Soft Keyboard (Debugger)](/devices/pcx86/machine/5150/cga/384kb/softkbd/)

View file

@ -0,0 +1,10 @@
---
layout: page
title: IBM PC (Model 5150, 64Kb) with Dual Displays
permalink: /devices/pcx86/machine/5150/dual/64kb/
machines:
- type: pcx86
id: ibm5150
---
{% include machine.html id="ibm5150" %}

View file

@ -0,0 +1,18 @@
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="/versions/pcx86/1.23.0/machine.xsl"?>
<machine id="ibm5150" class="pcx86" border="1" pos="center" background="#FAEBD7">
<name pos="center">IBM PC (Model 5150) with Dual Displays</name>
<computer id="pc-dual-64k" name="IBM PC" resume="1"/>
<ram id="ramLow" addr="0x00000"/>
<rom id="romBASIC" addr="0xf6000" size="0x8000" file="/devices/pcx86/rom/5150/basic/BASIC100.json"/>
<rom id="romBIOS" addr="0xfe000" size="0x2000" file="/devices/pcx86/rom/5150/1981-04-24/PCBIOS-REV1.json"/>
<video ref="/devices/pcx86/video/ibm/mda/ibm-mda-dual.xml"/>
<video ref="/devices/pcx86/video/ibm/cga/ibm-cga-dual.xml"/>
<fdc ref="/disks/pcx86/compiled/samples.xml"/>
<cpu id="cpu8088" model="8088" autostart="true" pos="left" padleft="8px" padbottom="8px">
<control type="button" binding="run">Run</control>
<control type="button" binding="reset">Reset</control>
</cpu>
<keyboard ref="/devices/pcx86/keyboard/us83-buttons-minimal.xml"/>
<chipset id="chipset" model="5150" sw1="01000001" sw2="11111000"/>
</machine>

View file

@ -0,0 +1,12 @@
---
layout: page
title: IBM PC (Model 5150) with Dual Displays
permalink: /devices/pcx86/machine/5150/dual/
redirect_from:
- /configs/pc/machines/5150/dual/
---
IBM PC with Dual Displays
---
* [IBM PC with Dual Displays (Monochrome and Color)](64kb/)

View file

@ -0,0 +1,13 @@
---
layout: page
title: IBM PC (Model 5150, 64Kb) with Monochrome Display and Debugger
permalink: /devices/pcx86/machine/5150/mda/64kb/debugger/
redirect_from:
- /configs/pc/machines/5150/mda/64kb/debugger/
machines:
- type: pcx86
id: ibm5150
debugger: true
---
{% include machine.html id="ibm5150" %}

View file

@ -0,0 +1,20 @@
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="/versions/pcx86/1.23.0/machine.xsl"?>
<machine id="ibm5150" class="pcx86" border="1" pos="center" background="#FAEBD7">
<name pos="center">IBM PC (Model 5150) with Monochrome Display</name>
<computer id="pc-mda-64k" name="IBM PC"/>
<ram id="ramLow" addr="0x00000"/>
<rom id="romBASIC" addr="0xf6000" size="0x8000" file="/devices/pcx86/rom/5150/basic/BASIC100.json"/>
<rom id="romBIOS" addr="0xfe000" size="0x2000" file="/devices/pcx86/rom/5150/1981-04-24/PCBIOS-REV1.json"/>
<video ref="/devices/pcx86/video/ibm/mda/ibm-mda.xml"/>
<fdc ref="/disks/pcx86/library.xml"/>
<cpu id="cpu8088" model="8088" autostart="true"/>
<keyboard ref="/devices/pcx86/keyboard/us83-buttons-functions.xml"/>
<debugger id="debugger"/>
<panel ref="/devices/pcx86/panel/wide.xml"/>
<chipset id="chipset" model="5150" sw1="01000001" sw2="11111000" pos="left" padleft="8px" padbottom="8px">
<control type="switches" label="SW1" binding="sw1" left="0px"/>
<control type="switches" label="SW2" binding="sw2" left="0px"/>
<control type="description" binding="swdesc" left="0px"/>
</chipset>
</machine>

View file

@ -0,0 +1,14 @@
---
layout: page
title: IBM PC (Model 5150, 64Kb) with Monochrome Display
permalink: /devices/pcx86/machine/5150/mda/64kb/
redirect_from:
- /configs/pc/machines/5150/mda/64kb/
- /configs/pc/machines/5150/mda/64kb/index.xml/
- /configs/pc/machines/5150/mda/64kb/machine.xml/
machines:
- type: pcx86
id: ibm5150
---
{% include machine.html id="ibm5150" %}

View file

@ -0,0 +1,17 @@
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="/versions/pcx86/1.23.0/machine.xsl"?>
<machine id="ibm5150" class="pcx86" border="1" pos="center" background="#FAEBD7">
<name pos="center">IBM PC (Model 5150) with Monochrome Display</name>
<computer id="pc-mda-64k" name="IBM PC" resume="1"/>
<ram id="ramLow" addr="0x00000"/>
<rom id="romBASIC" addr="0xf6000" size="0x8000" file="/devices/pcx86/rom/5150/basic/BASIC100.json"/>
<rom id="romBIOS" addr="0xfe000" size="0x2000" file="/devices/pcx86/rom/5150/1981-04-24/PCBIOS-REV1.json"/>
<video ref="/devices/pcx86/video/ibm/mda/ibm-mda.xml"/>
<fdc ref="/disks/pcx86/compiled/samples.xml"/>
<cpu id="cpu8088" model="8088" autostart="true" pos="left" padleft="8px" padbottom="8px">
<control type="button" binding="run">Run</control>
<control type="button" binding="reset">Reset</control>
</cpu>
<keyboard ref="/devices/pcx86/keyboard/us83-buttons-arrows.xml"/>
<chipset id="chipset" model="5150" sw1="01000001" sw2="11111000"/>
</machine>

View file

@ -0,0 +1,11 @@
---
layout: page
title: IBM PC (Model 5150, 64Kb) with Monochrome Display and Soft Keyboard
permalink: /devices/pcx86/machine/5150/mda/64kb/softkbd/
machines:
- type: pcx86
id: ibm5150
debugger: true
---
{% include machine.html id="ibm5150" %}

View file

@ -0,0 +1,20 @@
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="/versions/pcx86/1.23.0/machine.xsl"?>
<machine id="ibm5150" class="pcx86" border="1" pos="center" background="white">
<name>IBM PC (Model 5150), MDA, 64K</name>
<computer id="pc-mda-64k" name="IBM PC"/>
<cpu id="cpu8088" model="8088"/>
<ram id="ramLow" addr="0x00000"/>
<rom id="romBASIC" addr="0xf6000" size="0x8000" file="/devices/pcx86/rom/5150/basic/BASIC100.json"/>
<rom id="romBIOS" addr="0xfe000" size="0x2000" file="/devices/pcx86/rom/5150/1981-04-24/PCBIOS-REV1.json"/>
<video ref="/devices/pcx86/video/ibm/mda/ibm-mda.xml"/>
<fdc ref="/disks/pcx86/compiled/samples.xml"/>
<keyboard ref="/devices/pcx86/keyboard/us83-softkeys.xml"/>
<debugger id="debugger"/>
<panel ref="/devices/pcx86/panel/wide.xml"/>
<chipset id="chipset" model="5150" sw1="01000001" sw2="11111000" pos="left" padleft="8px" padbottom="8px">
<control type="switches" label="SW1" binding="sw1" left="0px"/>
<control type="switches" label="SW2" binding="sw2" left="0px"/>
<control type="description" binding="swdesc" left="0px"/>
</chipset>
</machine>

View file

@ -0,0 +1,25 @@
---
layout: page
title: IBM PC (Model 5150) with Monochrome (MDA) Display
permalink: /devices/pcx86/machine/5150/mda/
redirect_from:
- /configs/pc/machines/5150/mda/
machines:
- type: pcx86
id: ibm5150
config: /devices/pcx86/machine/5150/mda/64kb/machine.xml
---
IBM PC with Monochrome (MDA) Display
---
All our Monochrome (MDA) configurations of the IBM PC Model 5150 are located here, including:
* [IBM PC (64Kb) with Monochrome Display](/devices/pcx86/machine/5150/mda/64kb/) ([Debugger](/devices/pcx86/machine/5150/mda/64kb/debugger/))
* [IBM PC (64Kb) with Monochrome Display and Soft Keyboard (Debugger)](/devices/pcx86/machine/5150/mda/64kb/softkbd/)
Below is a 64kb configuration, with a clock speed of 4.77Mhz,
using the original IBM PC Model 5150 ROM BIOS and MDA font ROM. For more control,
use this [alternate configuration](/devices/pcx86/machine/5150/mda/64kb/debugger/) with Control Panel and Debugger.
{% include machine.html id="ibm5150" %}

View file

@ -0,0 +1,14 @@
---
layout: page
title: IBM PC XT (Model 5160) Machines
permalink: /devices/pcx86/machine/5160/
---
IBM PC XT (Model 5160) Machines
---
Our IBM PC XT 5160 configurations include:
* [IBM PC XT with Monochrome Display](/devices/pcx86/machine/5160/mda/)
* [IBM PC XT with Color Display](/devices/pcx86/machine/5160/cga/)
* [IBM PC XT with Enhanced Color Display](/devices/pcx86/machine/5160/ega/)

View file

@ -0,0 +1,20 @@
---
layout: page
title: IBM PC XT (Model 5160)
permalink: /devices/pcx86/machine/5160/cga/256kb/
redirect_from:
- /configs/pc/machines/5160/cga/256kb/
---
IBM PC XT (256Kb) with Color Display
---
All our 256Kb Model 5160, aka IBM PC XT, configurations are located here, including:
* [IBM PC XT (256Kb, 10Mb Drive) with Color Display](/devices/pcx86/machine/5160/cga/256kb/demo/)
* [IBM PC XT (256Kb, 10Mb Drive) with Color Display and Debugger](/devices/pcx86/machine/5160/cga/256kb/demo/debugger/)
* [IBM PC XT (256Kb, 10Mb Drive) with Color Display and Soft Keyboard](/devices/pcx86/machine/5160/cga/256kb/softkbd/)
* [IBM PC XT (256Kb, 10Mb Drive) with Color Display running Windows 1.01](/devices/pcx86/machine/5160/cga/256kb/win101/)
* [IBM PC XT (256Kb, 10Mb Drive) with Color Display and Debugger running Windows 1.01](/devices/pcx86/machine/5160/cga/256kb/win101/debugger/)
* [IBM PC XT (256Kb, 10Mb Drive) with Color Display and Soft Keyboard running Windows 1.01](/devices/pcx86/machine/5160/cga/256kb/win101/softkbd/)
* [IBM PC XT (256Kb, 10Mb Drive) Machine Array with CGA Displays](/devices/pcx86/machine/5160/cga/256kb/array/)

View file

@ -0,0 +1,23 @@
---
layout: page
title: IBM PC XT (Model 5160, 256Kb, 10Mb Drive) Machine Array with CGA Displays
permalink: /devices/pcx86/machine/5160/cga/256kb/array/
machines:
- type: pcx86
id: ibm5160a
- type: pcx86
id: ibm5160b
---
IBM PC XT Machine Array with CGA Displays
---
### Demonstration of Multiple IBM PCs on a Single Web Page
The simulations below are identical PC XT configurations, each with a clock speed of 4.77Mhz, 256Kb of RAM,
and a CGA display, using the original IBM PC Model 5160 ROM BIOS and CGA font ROM. Each also includes an
empty/unformatted 10Mb hard disk. Use FDISK and then FORMAT to turn it into a usable C: drive.
{% include machine.html id="ibm5160a" %}
{% include machine.html id="ibm5160b" %}

View file

@ -0,0 +1,19 @@
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="/versions/pcx86/1.23.0/machine.xsl"?>
<machine id="ibm5160" class="pcx86" border="1" width="1000px" pos="center" background="white">
<name pos="center">IBM PC XT (Model 5160), CGA, 256K, 10Mb Drive</name>
<computer id="xt-cga-256k" name="IBM PC XT"/>
<ram id="ramLow" addr="0x00000" test="false"/>
<rom id="romHDC" addr="0xc8000" size="0x2000" file="/devices/pcx86/hdc/ibm-xebec-1982.json"/>
<rom id="romBASIC" addr="0xf6000" size="0x8000" file="/devices/pcx86/rom/5160/basic/BASIC110.json"/>
<rom id="romBIOS" addr="0xfe000" size="0x2000" file="/devices/pcx86/rom/5160/1982-11-08/XTBIOS-REV1.json"/>
<video ref="/devices/pcx86/video/ibm/cga/ibm-cga.xml"/>
<fdc ref="/disks/pcx86/compiled/samples.xml"/>
<cpu id="cpu8088" model="8088" autostart="true" pos="left" padleft="8px">
<control type="button" binding="run">Run</control>
<control type="button" binding="reset">Reset</control>
</cpu>
<keyboard id="keyboard" model="us83"/>
<chipset id="chipset" model="5160" sw1="01001001"/>
<hdc id="hdcXT" drives='[{name:"10Mb Hard Disk",type:3}]'/>
</machine>

View file

@ -0,0 +1,24 @@
---
layout: page
title: IBM PC XT (Model 5160, 256Kb, 10Mb Drive) with Color Display
permalink: /devices/pcx86/machine/5160/cga/256kb/demo/
redirect_from:
- /configs/pc/machines/5160/cga/256kb/demo/
machines:
- type: pcx86
id: ibm5160
---
IBM PC XT with Color Display
---
{% include machine.html id="ibm5160" %}
The above simulation is configured for a clock speed of 4.77Mhz, with 256Kb of RAM and a CGA display,
using the original IBM PC Model 5160 ROM BIOS and CGA font ROM.
This PC XT configuration also includes an empty 10Mb hard disk. Use FDISK and then FORMAT to turn it into
a usable C: drive.
For more control over this machine, try the [Control Panel](debugger/) configuration, featuring the
built-in PCjs Debugger.

View file

@ -0,0 +1,13 @@
---
layout: page
title: IBM PC XT (Model 5160, 256Kb, 10Mb Drive) with Color Display and Debugger
permalink: /devices/pcx86/machine/5160/cga/256kb/demo/debugger/
redirect_from:
- /configs/pc/machines/5160/cga/256kb/demo/debugger/
machines:
- type: pcx86
id: ibm5160
debugger: true
---
{% include machine.html id="ibm5160" %}

View file

@ -0,0 +1,22 @@
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="/versions/pcx86/1.23.0/machine.xsl"?>
<machine id="ibm5160" class="pcx86" border="1" width="980px" pos="center" background="#FAEBD7">
<name pos="center">IBM PC XT (Model 5160), CGA, 256Kb, 10Mb Drive</name>
<computer id="xt-cga-256k" name="IBM PC XT" resume="1"/>
<ram id="ramLow" addr="0x00000" test="false" comment="ROM BIOS memory test has been disabled"/>
<rom id="romHDC" addr="0xc8000" size="0x2000" file="/devices/pcx86/hdc/ibm-xebec-1982.json"/>
<rom id="romBASIC" addr="0xf6000" size="0x8000" file="/devices/pcx86/rom/5160/basic/BASIC110.json"/>
<rom id="romBIOS" addr="0xfe000" size="0x2000" file="/devices/pcx86/rom/5160/1982-11-08/XTBIOS-REV1.json"/>
<video ref="/devices/pcx86/video/ibm/cga/ibm-cga.xml"/>
<fdc ref="/disks/pcx86/compiled/samples.xml"/>
<cpu id="cpu8088" model="8088" autostart="true"/>
<keyboard ref="/devices/pcx86/keyboard/us83-buttons-functions.xml"/>
<debugger id="debugger"/>
<panel ref="/devices/pcx86/panel/wide.xml"/>
<chipset id="chipset" model="5160" sw1="01001001" pos="left" padleft="8px" padbottom="8px">
<control type="switches" label="SW1" binding="sw1" left="0px"/>
<control type="description" binding="swdesc" left="0px"/>
</chipset>
<hdc id="hdcXT" drives='[{name:"10Mb Hard Disk",type:3}]'/>
<serial id="com1" adapter="1" binding="print"/>
</machine>

View file

@ -0,0 +1,19 @@
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="/versions/pcx86/1.23.0/machine.xsl"?>
<machine id="ibm5160" class="pcx86" border="1" width="980px" pos="center" background="#FAEBD7">
<name pos="center">IBM PC XT (Model 5160), CGA, 256Kb, 10Mb Drive</name>
<computer id="xt-cga-256k" name="IBM PC XT" resume="1"/>
<ram id="ramLow" addr="0x00000"/>
<rom id="romHDC" addr="0xc8000" size="0x2000" file="/devices/pcx86/hdc/ibm-xebec-1982.json"/>
<rom id="romBASIC" addr="0xf6000" size="0x8000" file="/devices/pcx86/rom/5160/basic/BASIC110.json"/>
<rom id="romBIOS" addr="0xfe000" size="0x2000" file="/devices/pcx86/rom/5160/1982-11-08/XTBIOS-REV1.json"/>
<video ref="/devices/pcx86/video/ibm/cga/ibm-cga.xml"/>
<fdc ref="/disks/pcx86/compiled/samples.xml"/>
<cpu id="cpu8088" model="8088" autostart="true" pos="left" padleft="8px">
<control type="button" binding="run">Run</control>
<control type="button" binding="reset">Reset</control>
</cpu>
<keyboard ref="/devices/pcx86/keyboard/us83-buttons-minimal.xml"/>
<hdc id="hdcXT" drives='[{name:"10Mb Hard Disk",type:3}]'/>
<chipset id="chipset" model="5160" sw1="01001001"/>
</machine>

Binary file not shown.

After

Width:  |  Height:  |  Size: 166 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 19 KiB

View file

@ -0,0 +1,11 @@
---
layout: page
title: IBM PC XT (Model 5160, 256Kb, 10Mb Drive) with Color Display and Soft Keyboard
permalink: /devices/pcx86/machine/5160/cga/256kb/softkbd/
machines:
- type: pcx86
id: ibm5160
debugger: true
---
{% include machine.html id="ibm5160" %}

View file

@ -0,0 +1,21 @@
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="/versions/pcx86/1.23.0/machine.xsl"?>
<machine id="ibm5160" class="pcx86" border="1" width="1000px" pos="center" background="white">
<name>IBM PC XT (Model 5160), CGA, 256K, 10Mb Drive</name>
<computer id="xt-cga-256k" name="IBM PC XT"/>
<cpu id="cpu8088" model="8088"/>
<ram id="ramLow" addr="0x00000" test="false"/>
<rom id="romHDC" addr="0xc8000" size="0x2000" file="/devices/pcx86/hdc/ibm-xebec-1982.json"/>
<rom id="romBASIC" addr="0xf6000" size="0x8000" file="/devices/pcx86/rom/5160/basic/BASIC110.json"/>
<rom id="romBIOS" addr="0xfe000" size="0x2000" file="/devices/pcx86/rom/5160/1982-11-08/XTBIOS-REV1.json"/>
<video ref="/devices/pcx86/video/ibm/cga/ibm-cga.xml"/>
<fdc ref="/disks/pcx86/compiled/library.xml"/>
<keyboard ref="/devices/pcx86/keyboard/us83-softkeys.xml"/>
<debugger id="debugger"/>
<panel ref="/devices/pcx86/panel/default.xml"/>
<chipset id="chipset" model="5160" sw1="01001001" pos="left" padleft="8px" padbottom="8px">
<control type="switches" label="SW1" binding="sw1" left="0px"/>
<control type="description" binding="swdesc" left="0px"/>
</chipset>
<hdc id="hdcXT" drives='[{name:"10Mb Hard Disk",type:3}]'/>
</machine>

View file

@ -0,0 +1,37 @@
---
layout: page
title: IBM PC XT (Model 5160, 256Kb, 10Mb Drive) with Color Display running Windows 1.01
permalink: /devices/pcx86/machine/5160/cga/256kb/win101/
redirect_from:
- /configs/pc/machines/5160/cga/256kb/win101/
- /configs/pc/machines/5160/cga/256kb/win101/machine.xml/
- /demos/pc/cga-win101/xt-cga-win101.xml/
- /demos/pc/cga-win101/
machines:
- type: pcx86
id: ibm5160
---
IBM PC XT running Windows 1.01
---
[Microsoft Windows 1.01](/disks/pcx86/windows/1.01/), the first public version of Windows, was released on
November 20, 1985. It is shown here running on an IBM PC XT (Model 5160) with a CGA Display.
You can also run [Windows 1.01 with an EGA Display](/disks/pcx86/windows/1.01/).
{% include machine.html id="ibm5160" %}
The above simulation is configured for a clock speed of 4.77Mhz, with 256Kb of RAM and a CGA Display,
using the original IBM PC Model 5160 ROM BIOS and CGA font ROM. Even though the CGA was a "Color Graphics Adapter,"
the only CGA mode that Windows supported was the 640x200 2-color mode, hence its black-and-white appearance.
This PC XT configuration also includes a 10Mb hard disk with Windows 1.01 pre-installed.
This particular configuration will NOT save any changes when your browser exits, since it has
been pre-configured to always start Windows 1.01 in the same state.
NOTE: The Windows 1.01 mouse pointer can be controlled with your mouse, but only when your mouse is
within the "CGA Display" window. This is a restriction imposed by your web browser, not PCjs.
For more control over this machine, try the [Control Panel](debugger/) configuration, featuring the
built-in PCjs Debugger, with save/restore enabled.

View file

@ -0,0 +1,16 @@
---
layout: page
title: IBM PC XT (Model 5160, 256Kb, 10Mb Drive) with Color Display and Debugger running Windows 1.01
permalink: /devices/pcx86/machine/5160/cga/256kb/win101/debugger/
redirect_from:
- /configs/pc/machines/5160/cga/256kb/win101/debugger/
machines:
- type: pcx86
id: ibm5160
debugger: true
---
IBM PC XT with Debugger running Windows 1.01
---
{% include machine.html id="ibm5160" %}

View file

@ -0,0 +1,24 @@
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="/versions/pcx86/1.23.0/machine.xsl"?>
<machine id="ibm5160" class="pcx86" border="1" width="980px" pos="center" background="#FAEBD7">
<name pos="center">IBM PC XT (Model 5160) running Windows 1.01</name>
<computer id="xt-cga-win101" name="IBM PC XT" state="/devices/pcx86/machine/5160/cga/256kb/win101/state.json" resume="1"/>
<ram id="ramLow" addr="0x00000"/>
<rom id="romHDC" addr="0xc8000" size="0x2000" file="/devices/pcx86/hdc/ibm-xebec-1982.json"/>
<rom id="romBASIC" addr="0xf6000" size="0x8000" file="/devices/pcx86/rom/5160/basic/BASIC110.json"/>
<rom id="romBIOS" addr="0xfe000" size="0x2000" file="/devices/pcx86/rom/5160/1982-11-08/XTBIOS-REV1.json"/>
<video ref="/devices/pcx86/video/ibm/cga/ibm-cga-lock.xml"/>
<fdc ref="/disks/pcx86/compiled/library.xml"/>
<cpu id="cpu8088" model="8088" autostart="false"/>
<keyboard ref="/devices/pcx86/keyboard/us83-buttons-functions.xml"/>
<debugger id="debugger"/>
<panel ref="/devices/pcx86/panel/wide.xml"/>
<chipset id="chipset" model="5160" sw1="01001001" pos="left" padleft="8px" padbottom="8px">
<control type="switches" label="SW1" binding="sw1" left="0px"/>
<control type="description" binding="swdesc" left="0px"/>
</chipset>
<hdc ref="/disks/pcx86/fixed/10mb/pcdos200-win101-cga.xml"/>
<serial id="com1" adapter="1" binding="print"/>
<serial id="com2" adapter="2"/>
<mouse serial="com2"/>
</machine>

View file

@ -0,0 +1,22 @@
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="/versions/pcx86/1.23.0/machine.xsl"?>
<machine id="ibm5160" class="pcx86" border="1" pos="center" background="#FAEBD7">
<name pos="center">IBM PC XT (Model 5160) running Windows 1.01</name>
<computer id="xt-cga-win101" name="IBM PC XT" state="/devices/pcx86/machine/5160/cga/256kb/win101/state.json"/>
<ram id="ramLow" addr="0x00000"/>
<rom id="romHDC" addr="0xc8000" size="0x2000" file="/devices/pcx86/hdc/ibm-xebec-1982.json"/>
<rom id="romBASIC" addr="0xf6000" size="0x8000" file="/devices/pcx86/rom/5160/basic/BASIC110.json"/>
<rom id="romBIOS" addr="0xfe000" size="0x2000" file="/devices/pcx86/rom/5160/1982-11-08/XTBIOS-REV1.json"/>
<video ref="/devices/pcx86/video/ibm/cga/ibm-cga-lock.xml"/>
<fdc ref="/disks/pcx86/compiled/samples.xml"/>
<cpu id="cpu8088" model="8088" autostart="true" pos="left" padleft="8px" padbottom="8px">
<control type="button" binding="run">Run</control>
<control type="button" binding="reset">Reset</control>
</cpu>
<keyboard ref="/devices/pcx86/keyboard/us83-buttons-minimal.xml"/>
<chipset id="chipset" model="5160" sw1="01001001"/>
<hdc ref="/disks/pcx86/fixed/10mb/pcdos200-win101-cga.xml"/>
<serial id="com1" adapter="1"/>
<serial id="com2" adapter="2"/>
<mouse serial="com2"/>
</machine>

Binary file not shown.

After

Width:  |  Height:  |  Size: 251 KiB

View file

@ -0,0 +1,14 @@
---
layout: page
title: IBM PC XT (Model 5160, 256Kb, 10Mb Drive) with Color Display and Soft Keyboard running Windows 1.01
permalink: /devices/pcx86/machine/5160/cga/256kb/win101/softkbd/
redirect_from:
- /configs/pc/machines/5160/cga/256kb/win101/softkbd/index.xml/
- /configs/pc/machines/5160/cga/256kb/win101/softkbd/machine.xml/
machines:
- type: pcx86
id: ibm5160
debugger: true
---
{% include machine.html id="ibm5160" %}

View file

@ -0,0 +1,24 @@
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="/versions/pcx86/1.23.0/machine.xsl"?>
<machine id="ibm5160" class="pcx86" border="1" width="1000px" pos="center" background="white">
<name>IBM PC XT (Model 5160), CGA, 256K, Windows 1.01</name>
<computer id="xt-cga-256k" name="IBM PC XT"/>
<cpu id="cpu8088" model="8088" autostart="true"/>
<ram id="ramLow" addr="0x00000" test="false"/>
<rom id="romHDC" addr="0xc8000" size="0x2000" file="/devices/pcx86/hdc/ibm-xebec-1982.json"/>
<rom id="romBASIC" addr="0xf6000" size="0x8000" file="/devices/pcx86/rom/5160/basic/BASIC110.json"/>
<rom id="romBIOS" addr="0xfe000" size="0x2000" file="/devices/pcx86/rom/5160/1982-11-08/XTBIOS-REV1.json"/>
<video ref="/devices/pcx86/video/ibm/cga/ibm-cga-lock.xml"/>
<fdc ref="/disks/pcx86/compiled/library.xml"/>
<keyboard ref="/devices/pcx86/keyboard/us83-softkeys.xml"/>
<debugger id="debugger"/>
<panel ref="/devices/pcx86/panel/wide.xml"/>
<chipset id="chipset" model="5160" sw1="01001001" pos="left" padleft="8px" padbottom="8px">
<control type="switches" label="SW1" binding="sw1" left="0px"/>
<control type="description" binding="swdesc" left="0px"/>
</chipset>
<hdc ref="/disks/pcx86/fixed/10mb/pcdos200-win101-cga.xml"/>
<serial id="com1" adapter="1" binding="print"/>
<serial id="com2" adapter="2"/>
<mouse serial="com2"/>
</machine>

File diff suppressed because one or more lines are too long

Binary file not shown.

After

Width:  |  Height:  |  Size: 21 KiB

View file

@ -0,0 +1,15 @@
---
layout: page
title: IBM PC XT (Model 5160, 512Kb, 10Mb Drive) with Color Display and Soft Keyboard running Windows 1.01
permalink: /devices/pcx86/machine/5160/cga/512kb/win101/softkbd/
redirect_from:
- /configs/pc/machines/5160/cga/512kb/win101/softkbd/
- /devices/pcx86/machine/5160/cga/512kb/
- /devices/pcx86/machine/5160/cga/512kb/win101/
machines:
- type: pcx86
id: ibm5160
debugger: true
---
{% include machine.html id="ibm5160" %}

View file

@ -0,0 +1,24 @@
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="/versions/pcx86/1.23.0/machine.xsl"?>
<machine id="ibm5160" class="pcx86" border="1" width="1000px" pos="center" background="white">
<name>IBM PC XT (Model 5160), CGA, 512K, WIN101</name>
<computer id="xt-cga-512k" name="IBM PC XT"/>
<cpu id="cpu8088" model="8088" autostart="true"/>
<ram id="ramLow" addr="0x00000" test="false" size="0x80000" comment="0x80000 (512Kb) size overrides SW1|ROM BIOS memory test has been disabled"/>
<rom id="romHDC" addr="0xc8000" size="0x2000" file="/devices/pcx86/hdc/ibm-xebec-1982.json"/>
<rom id="romBASIC" addr="0xf6000" size="0x8000" file="/devices/pcx86/rom/5160/basic/BASIC110.json"/>
<rom id="romBIOS" addr="0xfe000" size="0x2000" file="/devices/pcx86/rom/5160/1982-11-08/XTBIOS-REV1.json"/>
<video ref="/devices/pcx86/video/ibm/cga/ibm-cga-lock.xml"/>
<fdc ref="/disks/pcx86/compiled/samples.xml"/>
<keyboard ref="/devices/pcx86/keyboard/us83-softkeys.xml"/>
<debugger id="debugger"/>
<panel ref="/devices/pcx86/panel/default.xml"/>
<chipset id="chipset" model="5160" sw1="01001001" pos="left" padleft="8px" padbottom="8px">
<control type="switches" label="SW1" binding="sw1" left="0px"/>
<control type="description" binding="swdesc" left="0px"/>
</chipset>
<hdc ref="/disks/pcx86/fixed/10mb/pcdos200-win101-cga.xml"/>
<serial id="com1" adapter="1" binding="print"/>
<serial id="com2" adapter="2"/>
<mouse serial="com2"/>
</machine>

View file

@ -0,0 +1,11 @@
---
layout: page
title: IBM PC XT (Model 5160, 640Kb, 10Mb Drive) with Color Display and Debugger
permalink: /devices/pcx86/machine/5160/cga/640kb/debugger/
machines:
- type: pcx86
id: ibm5160
debugger: true
---
{% include machine.html id="ibm5160" %}

View file

@ -0,0 +1,26 @@
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="/versions/pcx86/1.23.0/machine.xsl"?>
<machine id="ibm5160" class="pcx86" border="1" width="980px" pos="center" background="#FAEBD7">
<name pos="center">IBM PC XT (Model 5160), CGA, 640K, 10Mb Drive</name>
<computer id="xt-cga-640k" name="IBM PC XT"/>
<cpu id="cpu8088" model="8088" autostart="true"/>
<ram id="ramLow" addr="0x00000" test="false" size="0xa0000" comment="0xa0000 (640Kb) size overrides SW1|ROM BIOS memory test has been disabled"/>
<rom id="romHDC" addr="0xc8000" size="0x2000" file="/devices/pcx86/hdc/ibm-xebec-1982.json"/>
<rom id="romBASIC" addr="0xf6000" size="0x8000" file="/devices/pcx86/rom/5160/basic/BASIC110.json"/>
<rom id="romBIOS" addr="0xfe000" size="0x2000" file="/devices/pcx86/rom/5160/1982-11-08/XTBIOS-REV1.json"/>
<video ref="/devices/pcx86/video/ibm/cga/ibm-cga-keygrid.xml"/>
<fdc ref="/disks/pcx86/compiled/library.xml"/>
<keyboard ref="/devices/pcx86/keyboard/us83-buttons-minimal.xml"/>
<debugger id="debugger"/>
<panel ref="/devices/pcx86/panel/wide.xml"/>
<hdc id="hdcXT" drives='[{name:"10Mb Hard Disk",type:3}]'>
<control type="button" binding="saveHD0">Save HD</control>
</hdc>
<chipset id="chipset" model="5160" sw1="01001001" pos="left" padleft="8px" padbottom="8px">
<control type="switches" label="SW1" binding="sw1" left="0px"/>
<control type="description" binding="swdesc" left="0px"/>
</chipset>
<serial id="com1" adapter="1" binding="print"/>
<serial id="com2" adapter="2"/>
<mouse serial="com2"/>
</machine>

View file

@ -0,0 +1,10 @@
---
layout: page
title: IBM PC XT (Model 5160, 640Kb, 10Mb Drive) with Color Display
permalink: /devices/pcx86/machine/5160/cga/640kb/
machines:
- type: pcx86
id: ibm5160
---
{% include machine.html id="ibm5160" %}

View file

@ -0,0 +1,24 @@
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="/versions/pcx86/1.23.0/machine.xsl"?>
<machine id="ibm5160" class="pcx86" border="1" pos="center" background="#FAEBD7">
<name pos="center">IBM PC XT (Model 5160), CGA, 640K, 10Mb Drive</name>
<computer id="xt-cga-640k" name="IBM PC XT"/>
<ram id="ramLow" addr="0x00000" test="false" size="0xa0000" comment="0xa0000 (640Kb) size overrides SW1|ROM BIOS memory test has been disabled"/>
<rom id="romHDC" addr="0xc8000" size="0x2000" file="/devices/pcx86/hdc/ibm-xebec-1982.json"/>
<rom id="romBASIC" addr="0xf6000" size="0x8000" file="/devices/pcx86/rom/5160/basic/BASIC110.json"/>
<rom id="romBIOS" addr="0xfe000" size="0x2000" file="/devices/pcx86/rom/5160/1982-11-08/XTBIOS-REV1.json"/>
<video ref="/devices/pcx86/video/ibm/cga/ibm-cga-keygrid.xml"/>
<fdc ref="/disks/pcx86/compiled/library.xml"/>
<cpu id="cpu8088" model="8088" autostart="true" pos="left" padleft="8px" padbottom="8px">
<control type="button" binding="run">Run</control>
<control type="button" binding="reset">Reset</control>
</cpu>
<keyboard ref="/devices/pcx86/keyboard/us83-buttons-minimal.xml"/>
<hdc id="hdcXT" drives='[{name:"10Mb Hard Disk",type:3}]'>
<control type="button" binding="saveHD0">Save HD</control>
</hdc>
<chipset id="chipset" model="5160" sw1="01001001"/>
<serial id="com1" adapter="1"/>
<serial id="com2" adapter="2"/>
<mouse serial="com2"/>
</machine>

View file

@ -0,0 +1,10 @@
---
layout: page
title: IBM PC XT (Model 5160, 640Kb, 10Mb Drive) with Color Display and Soft Keyboard
permalink: /devices/pcx86/machine/5160/cga/640kb/softkbd/
machines:
- type: pcx86
id: ibm5160
---
{% include machine.html id="ibm5160" %}

View file

@ -0,0 +1,24 @@
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="/versions/pcx86/1.23.0/machine.xsl"?>
<machine id="ibm5160" class="pcx86" border="1" width="1000px" pos="center" background="white">
<name>IBM PC XT (Model 5160), CGA, 640K, 10Mb Drive</name>
<computer id="xt-cga-640k" name="IBM PC XT"/>
<cpu id="cpu8088" model="8088" autostart="true"/>
<ram id="ramLow" addr="0x00000" test="false" size="0xa0000" comment="0xa0000 (640Kb) size overrides SW1|ROM BIOS memory test has been disabled"/>
<rom id="romHDC" addr="0xc8000" size="0x2000" file="/devices/pcx86/hdc/ibm-xebec-1982.json"/>
<rom id="romBASIC" addr="0xf6000" size="0x8000" file="/devices/pcx86/rom/5160/basic/BASIC110.json"/>
<rom id="romBIOS" addr="0xfe000" size="0x2000" file="/devices/pcx86/rom/5160/1982-11-08/XTBIOS-REV1.json"/>
<video ref="/devices/pcx86/video/ibm/cga/ibm-cga-lock.xml"/>
<fdc ref="/disks/pcx86/compiled/library.xml"/>
<keyboard ref="/devices/pcx86/keyboard/us83-softkeys.xml"/>
<debugger id="debugger"/>
<panel ref="/devices/pcx86/panel/wide.xml"/>
<chipset id="chipset" model="5160" sw1="01001001" pos="left" padleft="8px" padbottom="8px">
<control type="switches" label="SW1" binding="sw1" left="0px"/>
<control type="description" binding="swdesc" left="0px"/>
</chipset>
<hdc id="hdcXT" drives='[{name:"10Mb Hard Disk",type:3}]'/>
<serial id="com1" adapter="1" binding="print"/>
<serial id="com2" adapter="2"/>
<mouse serial="com2"/>
</machine>

View file

@ -0,0 +1,21 @@
---
layout: page
title: IBM PC (Model 5160) with Color Display
permalink: /devices/pcx86/machine/5160/cga/
redirect_from:
- /configs/pc/machines/5160/cga/
---
IBM PC XT with Color Graphics (CGA) Display
---
All our Color Graphics (CGA) configurations of the IBM PC XT (Model 5160) are located here, including:
* [IBM PC XT (256Kb, 10Mb Drive) with Color Display](/devices/pcx86/machine/5160/cga/256kb/demo/) ([Debugger](/devices/pcx86/machine/5160/cga/256kb/demo/debugger/))
* [IBM PC XT (256Kb, 10Mb Drive) with Color Display and Soft Keyboard (Debugger)](/devices/pcx86/machine/5160/cga/256kb/softkbd/)
* [IBM PC XT (256Kb, 10Mb Drive) with Color Display running Windows 1.01](/devices/pcx86/machine/5160/cga/256kb/win101/) ([Debugger](/devices/pcx86/machine/5160/cga/256kb/win101/debugger/))
* [IBM PC XT (256Kb, 10Mb Drive) with Color Display and Soft Keyboard (Debugger)](/devices/pcx86/machine/5160/cga/256kb/win101/softkbd/)
* [IBM PC XT (512Kb, 10Mb Drive) with Color Display and Soft Keyboard (Debugger)](/devices/pcx86/machine/5160/cga/512kb/win101/softkbd/)
* [IBM PC XT (640Kb, 10Mb Drive) with Color Display](/devices/pcx86/machine/5160/cga/640kb/) ([Debugger](/devices/pcx86/machine/5160/cga/640kb/debugger/))
* [IBM PC XT (640Kb, 10Mb Drive) with Color Display and Soft Keyboard (Debugger)](/devices/pcx86/machine/5160/cga/640kb/softkbd/)
* [IBM PC XT (256Kb, 10Mb Drive) Machine Array with CGA Displays](/devices/pcx86/machine/5160/cga/256kb/array/)

View file

@ -0,0 +1,11 @@
---
layout: page
title: IBM PC XT (Model 5160, 256Kb, 10Mb Drive) with EGA Display and Debugger
permalink: /devices/pcx86/machine/5160/ega/256kb/debugger/
machines:
- type: pcx86
id: ibm5160
debugger: true
---
{% include machine.html id="ibm5160" %}

View file

@ -0,0 +1,21 @@
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="/versions/pcx86/1.23.0/machine.xsl"?>
<machine id="ibm5160" class="pcx86" border="1" pos="center" background="#FAEBD7">
<name>IBM PC XT (Model 5160), 64K EGA, 256K RAM, 10Mb Hard Disk</name>
<computer id="xt-ega-256k" name="IBM PC XT"/>
<cpu id="cpu8088" model="8088"/>
<ram id="ramLow" addr="0x00000" test="false"/>
<rom id="romHDC" addr="0xc8000" size="0x2000" file="/devices/pcx86/hdc/ibm-xebec-1982.json"/>
<rom id="romBASIC" addr="0xf6000" size="0x8000" file="/devices/pcx86/rom/5160/basic/BASIC110.json"/>
<rom id="romBIOS" addr="0xfe000" size="0x2000" file="/devices/pcx86/rom/5160/1982-11-08/XTBIOS-REV1.json"/>
<video ref="/devices/pcx86/video/ibm/ega/1984-09-13/64kb.xml"/>
<fdc ref="/disks/pcx86/compiled/library.xml"/>
<keyboard ref="/devices/pcx86/keyboard/us83-buttons-functions.xml"/>
<debugger id="debugger"/>
<panel ref="/devices/pcx86/panel/wide.xml"/>
<chipset id="chipset" model="5160" sw1="01001101" pos="left" padleft="8px" padbottom="8px">
<control type="switches" label="SW1" binding="sw1" left="0px"/>
<control type="description" binding="swdesc" left="0px"/>
</chipset>
<hdc id="hdcXT" drives='[{name:"10Mb Hard Disk",type:3}]'/>
</machine>

View file

@ -0,0 +1,12 @@
---
layout: page
title: IBM PC XT (Model 5160, 256Kb, 10Mb Drive) with EGA Display
permalink: /devices/pcx86/machine/5160/ega/256kb/
redirect_from:
- /configs/pc/machines/5160/ega/256kb/
machines:
- type: pcx86
id: ibm5160
---
{% include machine.html id="ibm5160" %}

View file

@ -0,0 +1,16 @@
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="/versions/pcx86/1.23.0/machine.xsl"?>
<machine id="ibm5160" class="pcx86" border="1" pos="center" background="#FAEBD7">
<name>IBM PC XT (Model 5160), 64K EGA, 256K RAM, 10Mb Hard Disk</name>
<computer id="xt-ega-256k" name="IBM PC XT"/>
<cpu id="cpu8088" model="8088"/>
<ram id="ramLow" addr="0x00000" test="false"/>
<rom id="romHDC" addr="0xc8000" size="0x2000" file="/devices/pcx86/hdc/ibm-xebec-1982.json"/>
<rom id="romBASIC" addr="0xf6000" size="0x8000" file="/devices/pcx86/rom/5160/basic/BASIC110.json"/>
<rom id="romBIOS" addr="0xfe000" size="0x2000" file="/devices/pcx86/rom/5160/1982-11-08/XTBIOS-REV1.json"/>
<video ref="/devices/pcx86/video/ibm/ega/1984-09-13/64kb.xml"/>
<fdc ref="/disks/pcx86/compiled/library.xml"/>
<keyboard ref="/devices/pcx86/keyboard/us83-buttons-functions.xml"/>
<chipset id="chipset" model="5160" sw1="01001101"/>
<hdc id="hdcXT" drives='[{name:"10Mb Hard Disk",type:3}]'/>
</machine>

View file

@ -0,0 +1,27 @@
---
layout: page
title: IBM PC XT (Model 5160, 256Kb, 10Mb Drive) Machine Array with EGA Displays
permalink: /devices/pcx86/machine/5160/ega/640kb/array/
machines:
- type: pcx86
id: ibm5160a
- type: pcx86
id: ibm5160b
- type: pcx86
id: ibm5160c
- type: pcx86
id: ibm5160d
---
IBM PC XT Machine Array with EGA Displays
---
### Demonstration of Multiple IBM PCs on a Single Web Page
The simulations below are identical PC XT configurations, each with a clock speed of 4.77Mhz, 640Kb of RAM,
and a 128Kb EGA connected to an Enhanced Color Display, using the original IBM EGA BIOS.
{% include machine.html id="ibm5160a" %}
{% include machine.html id="ibm5160b" %}
{% include machine.html id="ibm5160c" %}
{% include machine.html id="ibm5160d" %}

View file

@ -0,0 +1,20 @@
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="/versions/pcx86/1.23.0/machine.xsl"?>
<machine id="ibm5160" class="pcx86" border="1" width="680px" float="left" background="#FAEBD7">
<name pos="center">IBM PC XT, 128K EGA, 640K RAM, 10Mb Hard Disk</name>
<computer id="xt-ega-640k" name="IBM PC XT" state="/disks/pcx86/windows/1.01/ibm5160-ega.json"/>
<ram id="ramLow" addr="0x00000" test="false" size="0xa0000" comment="0xa0000 (640Kb) size overrides SW1|ROM BIOS memory test has been disabled"/>
<rom id="romHDC" addr="0xc8000" size="0x2000" file="/devices/pcx86/hdc/ibm-xebec-1982.json"/>
<rom id="romBASIC" addr="0xf6000" size="0x8000" file="/devices/pcx86/rom/5160/basic/BASIC110.json"/>
<rom id="romBIOS" addr="0xfe000" size="0x2000" file="/devices/pcx86/rom/5160/1982-11-08/XTBIOS-REV1.json"/>
<video ref="/devices/pcx86/video/ibm/ega/1984-09-13/128kb-autolock640.xml"/>
<fdc ref="/disks/pcx86/compiled/library.xml"/>
<keyboard ref="/devices/pcx86/keyboard/us83-buttons-minimal.xml"/>
<cpu id="cpu8088" model="8088">
<control type="button" binding="setSpeed">Fast</control>
</cpu>
<chipset id="chipset" model="5160" sw1="01001101"/>
<hdc ref="/disks/pcx86/fixed/10mb/pcdos200-win101-ega.xml"/>
<serial id="com2" adapter="2"/>
<mouse serial="com2"/>
</machine>

View file

@ -0,0 +1,11 @@
---
layout: page
title: IBM PC XT (Model 5160, 640Kb, 10Mb Drive) with EGA Display and Debugger
permalink: /devices/pcx86/machine/5160/ega/640kb/debugger/
machines:
- type: pcx86
id: ibm5160
debugger: true
---
{% include machine.html id="ibm5160" %}

View file

@ -0,0 +1,24 @@
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="/versions/pcx86/1.23.0/machine.xsl"?>
<machine id="ibm5160" class="pcx86" border="1" pos="center" background="#FAEBD7">
<name>IBM PC XT, 128K EGA, 640K RAM, 10Mb Hard Disk</name>
<computer id="xt-ega-640k" name="IBM PC XT"/>
<cpu id="cpu8088" model="8088"/>
<ram id="ramLow" addr="0x00000" test="false" size="0xa0000" comment="0xa0000 (640Kb) size overrides SW1|ROM BIOS memory test has been disabled"/>
<rom id="romHDC" addr="0xc8000" size="0x2000" file="/devices/pcx86/hdc/ibm-xebec-1982.json"/>
<rom id="romBASIC" addr="0xf6000" size="0x8000" file="/devices/pcx86/rom/5160/basic/BASIC110.json"/>
<rom id="romBIOS" addr="0xfe000" size="0x2000" file="/devices/pcx86/rom/5160/1982-11-08/XTBIOS-REV1.json"/>
<video ref="/devices/pcx86/video/ibm/ega/1984-09-13/128kb-autolockfs.xml"/>
<fdc ref="/disks/pcx86/compiled/library.xml"/>
<keyboard ref="/devices/pcx86/keyboard/us83-buttons-functions.xml"/>
<debugger id="debugger"/>
<panel ref="/devices/pcx86/panel/wide.xml"/>
<chipset id="chipset" model="5160" sw1="01001101" pos="left" padleft="8px" padbottom="8px">
<control type="switches" label="SW1" binding="sw1" left="0px"/>
<control type="description" binding="swdesc" left="0px"/>
</chipset>
<hdc ref="/disks/pcx86/fixed/10mb/pcdos200-win101-ega.xml"/>
<serial id="com1" adapter="1" binding="print"/>
<serial id="com2" adapter="2"/>
<mouse serial="com2"/>
</machine>

View file

@ -0,0 +1,12 @@
---
layout: page
title: IBM PC XT (Model 5160, 640Kb, 10Mb Drive) with EGA Display
permalink: /devices/pcx86/machine/5160/ega/640kb/
redirect_from:
- /configs/pc/machines/5160/ega/640kb/
machines:
- type: pcx86
id: ibm5160
---
{% include machine.html id="ibm5160" %}

View file

@ -0,0 +1,18 @@
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="/versions/pcx86/1.23.0/machine.xsl"?>
<machine id="ibm5160" class="pcx86" border="1" pos="center" background="#FAEBD7">
<name>IBM PC XT, 128K EGA, 640K RAM, 10Mb Hard Disk</name>
<computer id="xt-ega-640k" name="IBM PC XT"/>
<cpu id="cpu8088" model="8088"/>
<ram id="ramLow" addr="0x00000" test="false" size="0xa0000" comment="0xa0000 (640Kb) size overrides SW1|ROM BIOS memory test has been disabled"/>
<rom id="romHDC" addr="0xc8000" size="0x2000" file="/devices/pcx86/hdc/ibm-xebec-1982.json"/>
<rom id="romBASIC" addr="0xf6000" size="0x8000" file="/devices/pcx86/rom/5160/basic/BASIC110.json"/>
<rom id="romBIOS" addr="0xfe000" size="0x2000" file="/devices/pcx86/rom/5160/1982-11-08/XTBIOS-REV1.json"/>
<video ref="/devices/pcx86/video/ibm/ega/1984-09-13/128kb-autolockfs.xml"/>
<fdc ref="/disks/pcx86/compiled/library.xml"/>
<keyboard ref="/devices/pcx86/keyboard/us83-buttons-functions.xml"/>
<chipset id="chipset" model="5160" sw1="01001101"/>
<hdc id="hdcXT" drives='[{name:"10Mb Hard Disk",type:3}]'/>
<serial id="com2" adapter="2"/>
<mouse serial="com2"/>
</machine>

View file

@ -0,0 +1,14 @@
---
layout: page
title: IBM PC XT (Model 5160) with Enhanced Color Display
permalink: /devices/pcx86/machine/5160/ega/
---
IBM PC XT with Enhanced Color Graphics (EGA) Display
---
All our Enhanced Color Graphics (EGA) configurations of the IBM PC XT (Model 5160) are located here, including:
* [IBM PC XT (256Kb, 10Mb Drive) with EGA Display](/devices/pcx86/machine/5160/ega/256kb/) ([Debugger](/devices/pcx86/machine/5160/ega/256kb/debugger/))
* [IBM PC XT (640Kb, 10Mb Drive) with EGA Display](/devices/pcx86/machine/5160/ega/640kb/) ([Debugger](/devices/pcx86/machine/5160/ega/640kb/debugger/))
* [IBM PC XT (640Kb, 10Mb Drive) Machine Array with EGA Displays](/devices/pcx86/machine/5160/ega/640kb/array/)

View file

@ -0,0 +1,11 @@
---
layout: page
title: IBM PC XT (Model 5160, 256Kb, 10Mb Drive) with Monochrome Display and Debugger
permalink: /devices/pcx86/machine/5160/mda/256kb/debugger/
machines:
- type: pcx86
id: ibm5160
debugger: true
---
{% include machine.html id="ibm5160" %}

View file

@ -0,0 +1,18 @@
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="/versions/pcx86/1.23.0/machine.xsl"?>
<machine id="ibm5160" class="pcx86" border="1" pos="center" background="#FAEBD7">
<name pos="center">IBM PC XT (Model 5160), MDA, 256Kb, 10Mb Drive</name>
<computer id="xt-mda-256k" name="IBM PC XT"/>
<cpu id="cpu8088" model="8088"/>
<ram id="ramLow" addr="0x00000" test="false"/>
<rom id="romHDC" addr="0xc8000" size="0x2000" file="/devices/pcx86/hdc/ibm-xebec-1982.json"/>
<rom id="romBASIC" addr="0xf6000" size="0x8000" file="/devices/pcx86/rom/5160/basic/BASIC110.json"/>
<rom id="romBIOS" addr="0xfe000" size="0x2000" file="/devices/pcx86/rom/5160/1982-11-08/XTBIOS-REV1.json"/>
<video ref="/devices/pcx86/video/ibm/mda/ibm-mda.xml"/>
<fdc ref="/disks/pcx86/compiled/library.xml"/>
<keyboard ref="/devices/pcx86/keyboard/us83-buttons-minimal.xml"/>
<debugger id="debugger"/>
<panel ref="/devices/pcx86/panel/wide.xml"/>
<chipset id="chipset" model="5160" sw1="01000001"/>
<hdc id="hdcXT" drives='[{name:"10Mb Hard Disk",type:3}]'/>
</machine>

View file

@ -0,0 +1,11 @@
---
layout: page
title: IBM PC XT (Model 5160, 80188, 256Kb) with Monochrome Display and Debugger
permalink: /devices/pcx86/machine/5160/mda/256kb/fake188/debugger/
machines:
- type: pcx86
id: ibm5160
debugger: true
---
{% include machine.html id="ibm5160" %}

View file

@ -0,0 +1,32 @@
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="/versions/pcx86/1.23.0/machine.xsl"?>
<machine id="ibm5160" class="pcx86" border="1" width="740px" pos="center" background="#FAEBD7">
<name pos="center">IBM PC XT (Model 5160), MDA, 256Kb, 10Mb Drive</name>
<computer id="xt188-mda-256k" name="IBM PC XT"/>
<cpu id="cpu80188" model="80188"/>
<ram id="ramLow" addr="0x00000" test="false"/>
<rom id="romHDC" addr="0xc8000" size="0x2000" file="/devices/pcx86/hdc/ibm-xebec-1982.json"/>
<rom id="romBASIC" addr="0xf6000" size="0x8000" file="/devices/pcx86/rom/5160/basic/BASIC110.json"/>
<rom id="romBIOS" addr="0xfe000" size="0x2000" file="/devices/pcx86/rom/5160/1982-11-08/XTBIOS-REV1.json"/>
<video ref="/devices/pcx86/video/ibm/mda/ibm-mda.xml"/>
<fdc id="fdcNEC" pos="left" padleft="8px" padbottom="8px" automount='{A:{name:"PC-DOS 2.00 (Disk 1)",path:"/disks/pcx86/dos/ibm/2.00/PCDOS200-DISK1.json"}, B:{name:"Executive Suite (1982)",path:"/apps/pcx86/1982/esuite/disk.json"}}'>
<control type="list" binding="listDrives"/>
<control type="list" binding="listDisks">
<manifest ref="/disks/pcx86/dos/ibm/1.00/manifest.xml" disk="*"/>
<manifest ref="/disks/pcx86/dos/ibm/1.10/manifest.xml" disk="*"/>
<manifest ref="/disks/pcx86/dos/ibm/2.00/manifest.xml" disk="*"/>
<manifest ref="/disks/pcx86/games/microsoft/adventure/manifest.xml" disk="*"/>
<manifest ref="/apps/pcx86/1981/visicalc/manifest.xml" disk="*"/>
<manifest ref="/apps/pcx86/1982/esuite/manifest.xml" disk="*"/>
</control>
<control type="button" binding="loadDrive">Load</control>
<control type="button" binding="saveDrive" padright="8px">Save</control>
<control type="description" binding="descDisk" padright="8px"/>
<control type="file" binding="mountDrive"/>
</fdc>
<keyboard ref="/devices/pcx86/keyboard/us83-buttons-minimal.xml"/>
<debugger id="debugger"/>
<panel ref="/devices/pcx86/panel/default.xml"/>
<chipset id="chipset" model="5160" sw1="01000001"/>
<hdc id="hdcXT" drives='[{name:"10Mb Hard Disk",type:3}]'/>
</machine>

View file

@ -0,0 +1,10 @@
---
layout: page
title: IBM PC XT (Model 5160, 80188, 256Kb) with Monochrome Display
permalink: /devices/pcx86/machine/5160/mda/256kb/fake188/
machines:
- type: pcx86
id: ibm5160
---
{% include machine.html id="ibm5160" %}

View file

@ -0,0 +1,32 @@
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="/versions/pcx86/1.23.0/machine.xsl"?>
<machine id="ibm5160" class="pcx86" border="1" pos="center" background="#FAEBD7">
<name pos="center">IBM PC XT (Model 5160), MDA, 256Kb, 10Mb Drive</name>
<computer id="xt188-mda-256k" name="IBM PC XT"/>
<ram id="ramLow" addr="0x00000" test="false"/>
<rom id="romHDC" addr="0xc8000" size="0x2000" file="/devices/pcx86/hdc/ibm-xebec-1982.json"/>
<rom id="romBASIC" addr="0xf6000" size="0x8000" file="/devices/pcx86/rom/5160/basic/BASIC110.json"/>
<rom id="romBIOS" addr="0xfe000" size="0x2000" file="/devices/pcx86/rom/5160/1982-11-08/XTBIOS-REV1.json"/>
<video ref="/devices/pcx86/video/ibm/mda/ibm-mda.xml"/>
<fdc id="fdcNEC" pos="left" padleft="8px" padbottom="8px" automount='{A:{name:"PC-DOS 2.00 (Disk 1)",path:"/disks/pcx86/dos/ibm/2.00/PCDOS200-DISK1.json"}, B:{name:"Executive Suite (1982)",path:"/apps/pcx86/1982/esuite/disk.json"}}'>
<control type="list" binding="listDrives"/>
<control type="list" binding="listDisks">
<manifest ref="/disks/pcx86/dos/ibm/1.00/manifest.xml" disk="*"/>
<manifest ref="/disks/pcx86/dos/ibm/1.10/manifest.xml" disk="*"/>
<manifest ref="/disks/pcx86/dos/ibm/2.00/manifest.xml" disk="*"/>
<manifest ref="/disks/pcx86/games/microsoft/adventure/manifest.xml" disk="*"/>
<manifest ref="/apps/pcx86/1981/visicalc/manifest.xml" disk="*"/>
<manifest ref="/apps/pcx86/1982/esuite/manifest.xml" disk="*"/>
</control>
<control type="button" binding="loadDrive">Load</control>
<control type="button" binding="saveDrive" padright="8px">Save</control>
<control type="description" binding="descDisk" padright="8px"/>
<control type="file" binding="mountDrive"/>
</fdc>
<cpu id="cpu80188" model="80188" autostart="true" pos="left" padleft="8px" padbottom="8px">
<control type="button" binding="run">Run</control>
</cpu>
<keyboard ref="/devices/pcx86/keyboard/us83-buttons-minimal.xml"/>
<chipset id="chipset" model="5160" sw1="01000001"/>
<hdc id="hdcXT" drives='[{name:"10Mb Hard Disk",type:3}]'/>
</machine>

View file

@ -0,0 +1,10 @@
---
layout: page
title: IBM PC XT (Model 5160, 256Kb, 10Mb Drive) with Monochrome Display
permalink: /devices/pcx86/machine/5160/mda/256kb/
machines:
- type: pcx86
id: ibm5160
---
{% include machine.html id="ibm5160" %}

View file

@ -0,0 +1,16 @@
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="/versions/pcx86/1.23.0/machine.xsl"?>
<machine id="ibm5160" class="pcx86" border="1" pos="center" background="#FAEBD7">
<name pos="center">IBM PC XT (Model 5160), MDA, 256Kb, 10Mb Drive</name>
<computer id="xt-mda-256k" name="IBM PC XT"/>
<cpu id="cpu8088" model="8088"/>
<ram id="ramLow" addr="0x00000" test="false"/>
<rom id="romHDC" addr="0xc8000" size="0x2000" file="/devices/pcx86/hdc/ibm-xebec-1982.json"/>
<rom id="romBASIC" addr="0xf6000" size="0x8000" file="/devices/pcx86/rom/5160/basic/BASIC110.json"/>
<rom id="romBIOS" addr="0xfe000" size="0x2000" file="/devices/pcx86/rom/5160/1982-11-08/XTBIOS-REV1.json"/>
<video ref="/devices/pcx86/video/ibm/mda/ibm-mda.xml"/>
<fdc ref="/disks/pcx86/compiled/library.xml"/>
<keyboard ref="/devices/pcx86/keyboard/us83-buttons-minimal.xml"/>
<chipset id="chipset" model="5160" sw1="01000001"/>
<hdc id="hdcXT" drives='[{name:"10Mb Hard Disk",type:3}]'/>
</machine>

View file

@ -0,0 +1,14 @@
---
layout: page
title: IBM PC XT (Model 5160, 64Kb, 10Mb Drive) with Monochrome Display and Soft Keyboard
permalink: /devices/pcx86/machine/5160/mda/64kb/softkbd/
redirect_from:
- /devices/pcx86/machine/5160/mda/64kb/
- /configs/pc/machines/5160/mda/64kb/softkbd/index.xml/
machines:
- type: pcx86
id: ibm5160
debugger: true
---
{% include machine.html id="ibm5160" %}

View file

@ -0,0 +1,21 @@
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="/versions/pcx86/1.23.0/machine.xsl"?>
<machine id="ibm5160" class="pcx86" border="1" pos="center" background="white">
<name pos="center">IBM PC XT (Model 5160), MDA, 64K, 10Mb Drive</name>
<computer id="xt-mda-64k" name="IBM PC XT"/>
<cpu id="cpu8088" model="8088"/>
<ram id="ramLow" addr="0x00000"/>
<rom id="romHDC" addr="0xc8000" size="0x2000" file="/devices/pcx86/hdc/ibm-xebec-1982.json"/>
<rom id="romBASIC" addr="0xf6000" size="0x8000" file="/devices/pcx86/rom/5160/basic/BASIC110.json"/>
<rom id="romBIOS" addr="0xfe000" size="0x2000" file="/devices/pcx86/rom/5160/1982-11-08/XTBIOS-REV1.json"/>
<video ref="/devices/pcx86/video/ibm/mda/ibm-mda.xml"/>
<keyboard ref="/devices/pcx86/keyboard/us83-softkeys.xml"/>
<debugger id="debugger"/>
<panel ref="/devices/pcx86/panel/default.xml"/>
<fdc ref="/disks/pcx86/compiled/samples.xml" width="280px"/>
<chipset id="chipset" model="5160" sw1="01110001" pos="left" padleft="8px" padbottom="8px">
<control type="switches" label="SW1" binding="sw1" left="0px"/>
<control type="description" binding="swdesc" left="0px"/>
</chipset>
<hdc id="hdcXT" drives='[{name:"10Mb Hard Disk",type:3}]'/>
</machine>

View file

@ -0,0 +1,15 @@
---
layout: page
title: IBM PC Machines (Model 5160) with Monochrome (MDA) Display
permalink: /devices/pcx86/machine/5160/mda/
redirect_from:
- /configs/pc/machines/5160/mda/
---
IBM PC XT with Monochrome (MDA) Display
---
All our Monochrome (MDA) configurations of the IBM PC XT (Model 5160) are located here, including:
* [IBM PC XT (64Kb, 10Mb Drive) with Monochrome Display](/devices/pcx86/machine/5160/mda/64kb/softkbd/)
* [IBM PC XT (256Kb, 10Mb Drive) with Monochrome Display](/devices/pcx86/machine/5160/mda/256kb/) ([Debugger](/devices/pcx86/machine/5160/mda/256kb/debugger/))

View file

@ -0,0 +1,456 @@
---
layout: page
title: IBM PC AT (Model 5170) Machines
permalink: /devices/pcx86/machine/5170/
---
IBM PC AT (Model 5170) Machines
---
Our IBM PC AT 5170 configurations include:
* [IBM PC AT with MDA Display](/devices/pcx86/machine/5170/mda/)
* [IBM PC AT with CGA Display](/devices/pcx86/machine/5170/cga/)
* [IBM PC AT with EGA Display](/devices/pcx86/machine/5170/ega/)
* [IBM PC AT with VGA Display](/devices/pcx86/machine/5170/vga/)
The IBM PC AT 5170 came in a variety of its own models over a three-year period.
### 5170 Models 68 and 99
Models 68 and 99 were [introduced](#ibm-pc-at-5170-models-68-and-99-announcement) in August 1984:
* Model 68
- Type 1 motherboard
- 6 MHz CPU
- 256Kb RAM
- [Rev 1 BIOS](/devices/pcx86/rom/5170/#ibm-pc-at-rom-bios-rev-1) dated "01/10/84"
* Model 99
- All of the above
- 256Kb additional RAM (total of 512Kb)
- 20Mb Hard Drive
- 1 Serial/Parallel Adapter
### 5170 Model 239
Model 239 was introduced in October 1985:
* Model 239
- Type 2 motherboard
- 6 MHz CPU
- 512Kb RAM
- 30Mb Hard Drive
- 1 Serial/Parallel Adapter
- [Rev 2 BIOS](/devices/pcx86/rom/5170/#ibm-pc-at-rom-bios-rev-2) dated "06/10/85"
### 5170 Models 319 and 339
Models 319 and 339 were introduced in April 1986:
* Model 319
- Type 3 motherboard
- 8 MHz CPU
- 512Kb RAM
- 30MB hard drive
- 1 Serial/Parallel Adapter
- [Rev 3 BIOS](/devices/pcx86/rom/5170/#ibm-pc-at-rom-bios-rev-3) dated "11/15/85"
* Model 339
- All of the above
- Enhanced 101-key keyboard
IBM PC AT 5170 Configuration Options
---
The IBM PC AT 5170 doesn't have DIP switches like previous models, but it still has a few switches and jumpers.
First and foremost, there is a **Display Switch** near the battery connector that must be pushed "toward the
front of your system unit" if you have a CGA that is your only (or primary) display adapter, or "toward the
back of your system unit" if you're using an MDA as your only (or primary) display.
In PCjs, the 5170 **Display Switch** is configured with the &lt;[ChipSet](/docs/pcx86/chipset/)&gt; *monitor*
property, which you can set to either "mono" (aka "mda") or "color" (aka "cga"). Unlike the Model 5150/5160 DIP
switches, there is no UI for this switch, so once the machine has been created, it cannot be changed by the user.
Also, there is the "keyboard inhibit switch"; it defaults to UNLOCKED and stays UNLOCKED, since no UI or
configuration property is currently provided.
Finally, there is a "manufacturing jumper" that can be installed, enabling additional diagnostic functions
in the ROM; it defaults to UNINSTALLED and stays UNINSTALLED, since no UI or configuration property is currently
provided.
The rest of a 5170 machine's configuration is normally handled through CMOS settings, such as the number and type
of floppy diskette drives, which can be configured with the &lt;[ChipSet](/docs/pcx86/chipset/)&gt; *floppies* property;
e.g.:
<chipset id="chipset" model="5170" floppies="[1200,1200]" monitor="color"/>
The number of elements in the array determines the number of drives, and the value of each element
determines the type of drive; the value corresponds to the maximum supported diskette size, in Kb:
+ 360
+ 720
+ 1200
+ 1440
However, for the 3.5-inch diskette capacities (720 and 1440) to work properly, the machine should also use a
["Rev 3"](/devices/pcx86/rom/5170/#ibm-pc-at-rom-bios-rev-3) IBM PC AT ROM BIOS and boot with DOS 3.20 or later.
Like the **Display Switch**, there is no UI for this or any other CMOS setting, so once the machine has been created,
it cannot be changed by the user.
---
IBM PC AT 5170 (Models 68 and 99) Announcement
---
The following details come from a [copy](http://www.minuszerodegrees.net/misc/IBM%20PC%20AT%205170%20announcement%20letter.txt)
of IBM's PC AT Announcement Letter, dated August 14, 1984.
> The IBM Personal Computer AT is designed for professional
applications, office environments, and increased personal
productivity. It includes many advanced technology features
previously not available in IBM Personal Computers: increased
performance, advanced microprocessor, high capacity diskette drives,
high capacity fixed disk drives, large memory capacity, and advanced
co-processor. The 5170 provides compatibility with existing hardware
and software products for the IBM Personal Computer family.
> ### HIGHLIGHTS
> * Performs more than two times faster than current members of the IBM Personal Computer family
> * Based on high-performance Intel 80286 microprocessor, compatible with the IBM Personal Computer family
> * Includes 1.2Mb high-capacity diskette drives
> * Allows 20Mb fixed disk drives
> * Contains a standard combination fixed disk and diskette adapter
> * Provides 512Kb memory capacity on the system board
> * Offers a combination Serial (Asynchronous)/Parallel (Printer) Adapter
> * Allows workstation growth with eight I/O expansion slots
> * Includes an improved keyboard
> * Includes a clock/calendar with battery backup
> * Provides improved security capability with a standard keylock
> ### DESCRIPTION
> The 5170 system unit/keyboard includes the following standard features:
> * Advanced high-performance Intel 80286 microprocessor
> * ROM based automatic power on self test of system components
> * ROM based BASIC language interpreter
> * 8086 compatible real address mode
> * Protected virtual address mode
> * 256Kb of memory (Model 68)
> * 512Kb of memory (Model 99)
> * 1.2Mb high capacity diskette drive
> * Diskette interface
> * 20Mb fixed disk drive (Model 99)
> * Fixed disk interface
> * Fixed disk-in-use indicator light (red)
> * Serial/parallel interface (Model 99)
> * System clock/calendar/system configuration storage with battery back-up
> * Sound system
> * Keylock
> * Bi-directional keyboard interface
> * Enhanced keyboard
> * Switchable worldwide power supply
> * Power-on indicator light (green)
> * Eight I/O expansion slots
> * Socket for 80287 math co-processor
> * 24-bit addressing
> * 16-bit data path
> * Seven-channel direct memory access (DMA)
> * 16-level interrupt
> * Three programmable timers
> Based on a high performance 16/24-bit Intel 80286 microprocessor,
both models of the 5170 are equipped with a high capacity (1.2Mb)
diskette drive, enhanced keyboard, ROM based BASIC language,
clock/calendar with battery backup, and keylock. Standard memory on
Model 68 is 256Kb and on Model 99 is 512Kb. In addition, Model 99 is
equipped with a 20Mb fixed disk drive and a serial
(asynchronous)/parallel (printer) adapter. Each system can be further
expanded through customer setup options. Model 68 memory may be
expanded to 512Kb by addition of pluggable memory modules on the
system board. Both models may be further expanded to 640Kb with the
128Kb memory option or up to 3Mb with 512Kb memory options.
> Additional direct access storage is available with a 20Mb
Fixed Disk Drive, a second 1.2Mb High Capacity Diskette Drive, and a
Dual-sided (320/360Kb) Diskette Drive. A maximum of two diskette
drives and one fixed disk drive, or one diskette drive and two fixed
disk drives can be attached to the system unit. These combinations
result in direct access storage capacity of up to 41.2Mb.
> DOS 3.0 supports the 20Mb Fixed Disk Drive and 1.2Mb High
Capacity Diskette Drive in the 5170 system. With DOS 3.0, the 1.2Mb
diskette drive will also read single- and dual-sided diskettes
formatted at 160/180Kb and 320/360Kb capacity, respectively. The
Dual-sided Diskette Drive (320/360Kb) option is available for
downward diskette portability with other IBM Personal Computer family
members.
> The IBM Personal Computer AT is also supported by two other
operating systems. Personal Computer Interactive Executive (PC/IX)
Version 1.1 will support the IBM Personal Computer AT in
compatibility, real address mode. PC/IX will be available in the
fourth quarter of 1984. The IBM Personal Computer XENIX* will support
the IBM Personal Computer AT in the 80286 protected address mode. IBM
Personal Computer XENIX will be available in the first quarter of
1985.
> The 5170 contains eight option (feature) slots that support
feature cards for additional devices, features, or memory. Six of the
slots support either the advanced 16-bit or 8-bit option cards. Two
support 8-bit option cards only. However, both models use one 16-bit
slot for the standard combination fixed disk and diskette drive
adapter. The Model 99 uses one 8-bit slot for the Serial/Parallel
Adapter. The result is seven available expansion slots on Model 68
and six on Model 99.
> Both models include a world-wide power supply and a
temperature-controlled variable speed cooling fan that significantly
reduces acoustical noise in most user environments. Both models also
include a security keylock, which, when locked by the user, prevents
removal of the 5170 cover, initialization of the system, and entry of
command/data from the keyboard.
> The keyboard is attached to the 5170 via a ten-foot coiled
cable, permitting a variety of workspace configurations. The enhanced
84-key keyboard, with an adjustable typing angle, offers commonly
used data and word processing functions along with separate
typewriter and numeric keypads. Key-location enhancements and mode
indicators (Cap Lock, Numeric Lock, Scroll Lock) improve keyboard
usability. Special symbols may be accessed with a combination of
keys. Depending on the application program, from 10 to 40 special
function keys may be supported.
> Exploring the IBM Personal Computer AT, a program on a
diskette, is supplied with the 5170. It will familiarize a new
computer user with the 5170. The program takes 1-1/2 to 2-1/2 hours
to complete. There are two versions of the program, monochrome and
color. The program is self-loading from the diskette. It contains
tutorial information on the keyboard, printer, and disk storage, as
well as DOS and text editing. It requires a 5170 with a minimum of
one diskette drive, 256Kb of storage, and one display adapter (either
monochrome or color).
> ### OPTIONAL FEATURES
> #### 256Kb Memory Module Kit (#0202)
> This option increases the 5170 Model 68 memory from 256Kb to
512Kb. The kit consists of 18 modules that are plugged into existing
sockets on the system board. A maximum of one kit may be installed on
Model 68 only. It is required on the Model 68 for installation
of #0209 and #0203.
> #### 512Kb Memory Expansion Option (#0203)
> This option adds memory above 1Mb, in 512Kb increments. Up to
five options may be plugged into the I/O expansion slots of the
system unit to provide a total of three megabytes of primary storage.
Performance characteristics are the same as other 5170 user memory.
> The system unit must have at least 512 Kb installed. This option
requires one 16-bit expansion slot. Note: This option may not be used
for address storage from 512Kb to 640Kb. The memory range from 640Kb
to 1Mb is reserved for system functions.
> #### 128Kb Memory Expansion Option (#0209)
> This option expands the memory from 512Kb to 640Kb.
Performance characteristics are the same as other 5170 user memory.
Only one 128Kb Memory Expansion Option may be installed on a 512Kb
system unit and it requires a 16-bit expansion slot.
> #### 20Mb Fixed Disk Drive (#0205)
> Two optional fixed disk drives may be installed on Model 68 or
one, as a second fixed disk drive, on Model 99, providing a total of
40Mb of fixed disk storage capacity. Space and power are provided in
the system unit for this drive(s). All fixed disk or diskette drives
use the standard combination fixed disk and diskette drive adapter in
the system unit. A dedicated landing zone for the read/write heads
is available to protect the file and its contents during shipping,
movement, or storage. Increased performance of 40 ms average access
time is possible from the quasi-closed loop servo positioning system
utilized in the drive. The number of fixed disk drives and diskette
drives must not exceed three. No more than two fixed disk drives can
be installed in a system unit.
> CHARACTERISTICS:
> * 20Mb of storage
> * 512 bytes per sector
> * 17 sectors per track
> * 615 tracks per surface (cylinders)
> * 40 ms average access time
> * four surfaces
> * 3573 RPM
> * 5M bit per second transfer rate
> * Dimensions:
> - Height 82.55 mm (3.25 inches)
> - Width 154.3 mm (6.1 inches)
> - Depth 203.2 mm (8.0 inches)
> - Weight 2.9 Kg (6.4 lbs.)
> #### High Capacity Diskette Drive (#0206)
> This is a half-high, 5-1/4-inch, dual-sided drive with 1.2Mb
storage capacity. Space and power have been provided in the system
unit for up to two drives. The drive is fully self-contained and
consists of a spindle drive system, a read positioning system and a
read/write/erase system.
> One of these drives is standard in both models. An optional
second drive (#0206) may be installed in the system unit directly
under the first if the space is not occupied by another disk or
diskette drive. Both drives use the standard fixed disk and diskette
drive adapter in the system unit.
> The drive uses the new 96-TPI, high density media. In
addition, it will read or write 48-TPI, single- or dual-sided media
written for the IBM PCjr, IBM Personal Computer, IBM Personal
Computer XT, and IBM Portable Personal Computer, giving a high level
of compatibility with existing applications. However, once the
48-TPI media has been written in this drive, it may only be readable
on a high capacity diskette drive.
> CHARACTERISTICS:
> * 1.2Mb storage
> * 512 bytes per sector
> * 15 sectors per track
> * 96 tracks per inch
> * Two sides
> * 80 tracks per side
> * 360 RPM
> * Supports 300 and 500 bits/sec data transfer rate
> * 94 ms average access time in 96-TPI mode
> * Dimensions:
> - Height 42.9 mm (1.7 inches)
> - Width 154.3 mm (6.1 inches)
> - Depth 203.2 mm (8.0 inches)
> - Weight: 1.6 Kg (3.5 lbs.)
> #### Dual-sided Diskette Drive (#0207)
> This diskette drive permits the exchange of 320/360Kb diskette
media between the Personal Computer AT, to the IBM Personal Computer,
the IBM Personal Computer XT, the IBM Portable Personal Computer, and
the IBM PCjr. It is a half-high, 5-1/4-inch, dual-sided drive with a
320/360Kb storage capacity. Space and power for one drive have been
provided in the system unit. The drive is fully self-contained and
consists of a spindle drive system, a read positioning system, and a
read/write/erase system.
> This drive is available for both 5170 models. It is installed
in the system unit directly under the standard high capacity diskette
drive if the space is not occupied by another fixed disk or diskette
drive. This drive uses the standard fixed disk and diskette drive
adapter in the system unit.
> CHARACTERISTICS:
> * 320/360Kb of storage
> * 512 bytes per sector
> * 8/9 sectors per track
> * Two sides
> * 91 ms average access time
> * 40 tracks per surface
> * 48 tracks per inch
> * 300 RPM
> * Transfer rate of 250K bits/second
> * Dimensions:
> - Height 42.9 mm (1.7 inches)
> - Width 154.3 mm (6.1 inches)
> - Depth 203.2 mm (8.0 inches)
> - Weight: 1.6 Kg (3.5 lbs.)
> #### Math Co-Processor (#0211)
> This option is a high performance numeric 80287 processor
extension with floating point, extended integer, and BCD data types,
compatible with the Intel 8087 Math Co-Processor. When installed,
the system fully conforms to the proposed IEEE Floating Point
Standard and is an excellent facility for high-performance numeric
processing. Only one 80287 can be installed in a system unit.
> #### Serial/Parallel Adapter (#0215)
> This option provides a serial port and a parallel port. It
occupies only one expansion slot of either type. The serial portion
is fully programmable and supports asynchronous communications from
50 to 9600 baud. The back of the adapter has a nine-pin D-shell
connector that is classified as an RS232-C port. When the optional
10-foot Serial Adapter Cable (#0217) or 10-inch Serial Adapter
Connector (#0242) is connected to the adapter, the 25-pin end of the
cable or connector has all the signals of a standard EIA RS232-C
interface. The parallel portion of the adapter provides the ability
to attach various devices that accept eight bits of parallel data.
The parallel port is provided by a 25-pin, D-shell connector. One or
two Serial/Parallel Adapters may be installed in either model. Note:
This adapter does not support current loop operation. The 5218
Printer is not supported.
> #### Prototype Adapter (#0220)
> This adapter is 4.8 inches high by 13.12 inches long and plugs
into any system unit expansion slot except 1 or 7. Two card edge
tabs, one 2 by 31 positions and one 2 by 18 positions, provide all
system control signals and voltages. No components are shipped with
this card.
> The adapter contains a voltage bus (+5 Vdc) and a ground bus
(0 Vdc). Each bus borders the adapter with the ground bus on the
component side and the voltage bus on on the pin side. A system
interface (wiring only) is also provided with a space for a jumper to
specify whether the device has an 8- or a 16-bit data bus. This
adapter also accommodates a D-shell connector from 9 to 37 positions.
A recommended system interface logic diagram is available along with
a list of recommended components to be used to interface custom logic
to the 5170. Up to five Prototype Adapters can be installed in a
system unit. Each requires a 16-bit expansion slot.
> #### Binary Synchronous Communications Adapter (#1204)
> The BSC Adapter provides an EIA RS232-C interface. It is
compatible with the IBM Personal Computer, the Portable Personal
Computer, and the Personal Computer XT. A maximum of two BSC Adapters
may be installed. Only one BSC Adapter may be installed if an SDLC
Adapter is installed.
> #### SDLC Communications Adapter (#1205)
> The SDLC Communications Adapter provides an EIA RS232-C
interface. It is compatible with the IBM Personal Computer, the
Portable Personal Computer, and the Personal Computer XT. Only one
SDLC Adapter may be installed.
> #### Floor Standing Enclosure (#0218)
> This optional enclosure is available to customers who desire
to remove their system unit from the work surface. With the system
unit mounted vertically in the floor standing enclosure, only the
essential parts of the system such as the display and keyboard need
to be on the work surface. The unit may be positioned left or right
of the workspace or under the workspace.
> #### Display Stand (#0216)
> The display stand is available for the IBM 5151 Monochrome
Display Model 1 and IBM 5153 Color Display Model 1. It can be placed
under the display to allow the customer to tilt and/or swivel the
display for comfortable viewing.
> ### PUBLICATIONS
> Each system will be shipped with three manuals:
> * IBM Personal Computer AT Installation and Setup Manual (#2491)
> * IBM Personal Computer AT Guide to Operations (#2241)
> * IBM Personal Computer Basic Reference Manual Version 3.0 (#1132)
> The following are available for purchase:
> * IBM Personal Computer AT Technical Reference Manual (#2243)
> * IBM Personal Computer AT Hardware Maintenance and Service Manual (#2242)

View file

@ -0,0 +1,11 @@
---
layout: page
title: IBM PC AT (Model 5170, 640Kb) with CGA Display
permalink: /devices/pcx86/machine/5170/cga/640kb/rev3/debugger/
machines:
- type: pcx86
id: ibm5170
debugger: true
---
{% include machine.html id="ibm5170" %}

View file

@ -0,0 +1,39 @@
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="/versions/pcx86/1.23.0/machine.xsl"?>
<machine id="ibm5170" class="pcx86" border="1" pos="center" background="#FAEBD7">
<name pos="center">IBM PC AT (8Mhz, 640Kb, Dual Floppy) with Color Display</name>
<computer id="at-mda-640k" name="IBM PC AT" buswidth="24"/>
<cpu id="cpu286" model="80286"/>
<ram id="ramLow" addr="0x00000" size="0xa0000"/>
<rom id="romBIOS" addr="0xf0000" size="0x10000" alias="0xff0000" file="/devices/pcx86/rom/5170/1985-11-15/ATBIOS-REV3.json"/>
<video ref="/devices/pcx86/video/ibm/cga/ibm-cga.xml"/>
<fdc ref="/disks/pcx86/compiled/library.xml" automount='{A: {name: "PC-DOS 3.00 (Disk 1)", path: "/disks/pcx86/dos/ibm/3.00/PCDOS300-DISK1.json"}, B: {name: "PC-DOS 3.00 (Disk 2)", path: "/disks/pcx86/dos/ibm/3.00/PCDOS300-DISK2.json"}}'/>
<keyboard ref="/devices/pcx86/keyboard/us84-buttons-functions.xml"/>
<debugger id="debugger" messages="fault" commands=""/>
<panel ref="/devices/pcx86/panel/wide.xml"/>
<comment>
The 5170 doesn't have DIP switches like previous models, but it still has a few switches and jumpers.
First and foremost, there is a "Display Switch" near the battery connector that must be pushed "toward the
front of your system unit" if you have a CGA that is your only (or primary) display adapter, or "toward the
back of your system unit" if you're using an MDA as your only (or primary) display.
We support the "Display Switch" setting with the *monitor* property, which you can set to either "mono"
(aka "mda") or "color" (aka "cga"). However, unlike the model 5150/5160 DIP switches, we currently offer no
UI for this switch, so it cannot be changed by the user.
Second, there is the "keyboard inhibit switch"; it defaults to UNLOCKED and stays UNLOCKED, since no UI or
configuration property is currently provided.
Finally, there is a "manufacturing jumper" that can be installed, enabling additional diagnostic functions
in the ROM; it defaults to UNINSTALLED and stays UNINSTALLED, since no UI or configuration property is currently
provided.
The rest of a 5170 machine's configuration is handled through CMOS settings, which PCjs configures automatically
based on other settings (eg, the chipset's *floppies* property).
</comment>
<chipset id="chipset" model="5170" floppies="[1200,1200]" monitor="color"/>
<serial id="com1" adapter="1"/>
<serial id="com2" adapter="2" binding="print"/>
<mouse serial="com1"/>
</machine>

View file

@ -0,0 +1,12 @@
---
layout: page
title: IBM PC AT (Model 5170, 640Kb) with CGA Display
permalink: /devices/pcx86/machine/5170/cga/640kb/rev3/
redirect_from:
- /devices/pcx86/machine/5170/cga/640kb/
machines:
- type: pcx86
id: ibm5170
---
{% include machine.html id="ibm5170" %}

Some files were not shown because too many files have changed in this diff Show more