pcjs/devices/pcx86/rom
Repository files (latest commit first)
Filename Latest commit message Latest commit date
2016-08-03 17:55:32 -07:00
..
5150 README and JSON updates 2016-05-23 13:16:25 -07:00
5160 Make ROM dumps more readable 2016-05-20 08:18:33 -07:00
5162 Starting work on disambiguating PCjs the emulator from PCjs the project/website; the emulator will become PCx86 2016-05-16 20:55:32 -07:00
5170 README and JSON updates 2016-05-23 13:16:25 -07:00
att README and JSON updates 2016-05-23 13:16:25 -07:00
cdp README and JSON updates 2016-05-23 13:16:25 -07:00
compaq More VT100 ROM code annotations 2016-08-03 17:55:32 -07:00
olivetti README and JSON updates 2016-05-23 13:16:25 -07:00
zenith README and JSON updates 2016-05-23 13:16:25 -07:00
README.md Link updates 2016-05-23 14:14:42 -07:00

layout title permalink redirect_from
page IBM PC ROMs /devices/pcx86/rom/
/devices/pc/rom/
/devices/pc/bios/
/devices/pcx86/rom/5150/
/devices/pcx86/rom/5160/

IBM PC ROMs

ROMs are added to machines by including one ROM component in the machine XML configuration file for each ROM in the machine; eg:

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

BASIC ROMs

The project contains the following IBM PC BASIC ROMs:

We informally refer to version C1.00 as the Model 5150 version, and C1.10 as the Model 5160 (and later) version of Cassette BASIC. It's true that the last few Model 5150 machines produced were upgraded with version C1.10, but we are simply referring to the respective model with which each version of Cassette BASIC was introduced.

BIOS ROMs

The project contains the following IBM PC BIOS ROMs:

As hinted above, some newer Model 5150 machines with the Oct 27, 1982 BIOS included IBM BASIC C1.10. And some even newer 5150 machines had a BIOS with a "1982" copyright year instead of "1981", which also changed the checksum byte from 0x78 to 0x77. However, the project includes only the original "1981" version, since the difference is trivial.

In general, IBM BASIC ROM images are 32Kb and IBM BIOS ROM images are 8Kb, and together they provide 40Kb of contiguous read-only memory, with the BASIC ROM spanning physical addresses 0xF6000-0xFDFFF and the BIOS ROM spanning addresses 0xFE000-0xFFFFF.

However, starting with Model 5160 ROM images dated Jan 10, 1986, our ROM images are actually 64Kb images that span addresses 0xF0000-0xFFFFF and include IBM BASIC C1.10 at offset 0x6000 (physical address 0xF6000), so there's no need to load the BASIC ROM separately. That trend continued with the IBM PC AT Model 5170, whose ROM images are also 64Kb and all contain IBM BASIC C1.10.

Apparently, even the first Model 5160 was socketed for two 32Kb ROMs, but it came with an 8Kb ROM in the first socket, so that ROM (containing the first 8Kb of IBM BASIC C1.10) appeared at multiple addresses: 0xF0000, 0xF2000, 0xF4000, and 0xF6000. None of our Model 5160 machine configurations emulate that layout, but it could easily be done, by extracting the first 8Kb of IBM BASIC C1.10 into a separate image and explicitly mapping it at each of those four addresses.

See this diagram for a more visual description of the Model 5160's ROM layout.


The project also contains BIOS ROMs, along with more detailed information, for the following machines:

Other ROMs

The project contains other ROMs, including IBM EGA and VGA ROMs, the Xebec Hard Drive Controller ROM used in the PC XT, etc, but those ROMs seemed more appropriately filed in their respective component folders; eg, IBM PC Video Devices.