-
Notifications
You must be signed in to change notification settings - Fork 25
ROMs
On the PC at least, a ROM file typically represents code stored on a chip socketed onto a hardware component, whether it was the motherboard or an expansion card. The main system ROM or ROMs comprise the system's BIOS (Basic Input/Output Set), which is basically the low-level operating system of the PC. The BIOS is responsible for testing and initializing the system hardware, expansion cards, and ultimately booting from a floppy or hard disk. At a bare minimum, you need a BIOS ROM for the system to do anything useful.
Since MartyPC is a low-level emulator, it doesn't attempt to implement functionality the BIOS performs - therefore, you need to provide an appropriate BIOS for MartyPC to use.
Basically, because I don't have permission. IBM is still in business; their copyright to the original BIOS ROMs on the PC is still in effect. It's doubtful that IBM cares about 40-year old systems software, but I am still respecting their copyright.
Yes, that's true. Respected emulators like Hampa Hug's PCE include IBM's ROMs in their distribution, and the popular PC emulator 86Box even maintains a repository of ROMs right on their Github. PCjs has long hosted old IBM and Microsoft software online. And well respected information archives like minuszerodegrees.net maintain ROM files for historical and repair/recovery of retro hardware. There's good reason for this - ROM chips can go bad; without backups of the ROM images a lot of old hardware might otherwise be unrepairable. There comes a certain age where the historical value of preserving - and sharing - hardware and software becomes more valuable than following the letter of the law.
So why do I make my users jump through hoops? Distribution of ROMs is a touchy subject in the emulator development community, but it's generally frowned upon to request or provide ROMs on development forums and chat rooms. This is perhaps more understandable on console systems where a ROM typically represents a commercial video game, but I'm following the same protocol.
There's of course a huge ethical difference between using a 40 year old system ROM to experience what a retro computer was like, vs pirating the latest Nintendo Switch game for use on Yuzu. But legally, there's not much distinction. In the former case, however, the damages could be provably be $0, so that's why no lawyers get involved.
Still, the fact that others are happily hosting ROMs is just another reason I don't need to get involved. You know where to find them; if you didn't notice, I just provided all the links you need.
First of all - you may not need any! MartyPC includes an open-source BIOS, GLaBIOS, that will allow you to start an IBM PC 5150 or XT 5160 machine, run software from a floppy and use a CGA card. You only really need an IBM system ROM if you want that authentic, nostalgic experience.
More advanced features such as hard disk support, EGA and VGA will require the original manufacturer ROM that was present on the respective expansion card.
The easiest thing to do is find a collection of ROMs for the IBM PC and XT and just dump them all into MartyPC's /roms/ folder, and don't worry about what is what. Names aren't important - MartyPC checks the files by hash. MartyPC will scan through the entire directory tree under /roms/ and will generally pick the best useable set - typically, the last BIOS released for the chosen machine type.
If you're still unsure, or want the specific details, here they are.
Provide one ROM file of the following:
Description | Date | Size | md5sum | MZD | 86Box |
---|---|---|---|---|---|
IBM 5150 U33 | 28 Oct 1982 | 8192 | f453eb2df6daf21ec644d33663d85434 | BIOS_IBM5150_27OCT82_1501476_U33.BIN | ibmpc82\BIOS_5150_27OCT82_U33.BIN |
IBM 5150 U33 | 19 Oct 1981 | 8192 | 6a1ed4e3f500d785a01ff4d3e000d79c | BIOS_IBM5150_19OCT81_5700671_U33.BIN | ibmpc\BIOS_5150_19OCT81_U33.BIN |
IBM 5150 U33 | 24 Apr 1981 | 8192 | 6338a9808445de12109a2389b71ee2eb | BIOS_IBM5150_24APR81_5700051_U33.BIN | ibmpc\BIOS_5150_24APR81_U33.BIN |
The XT has two ROM chips that operate in a pair. Provide one pair of any of the following sets:
- The 09 May 1986 BIOS is the newest, and the recommended set for use with MartyPC:
Description | Date | Size | md5sum | MZD | 86Box |
---|---|---|---|---|---|
IBM 5160 U18 | 09 May 1986 | 32768 | 9696472098999c02217bf922786c1f4a | BIOS_5160_08NOV82_U18_1501512.BIN | ibmxt86\BIOS_5160_09MAY86_U18_59X7268_62X0890_27256_F800.BIN |
IBM 5160 U19 | 09 May 1986 | 32768 | df9f29de490d7f269a6405df1fed69b7 | BIOS_5160_08NOV82_U19_5000027_27256.BIN | ibmxt86\BIOS_5160_09MAY86_U19_62X0819_68X4370_27256_F000.BIN |
Optionally, you can use the older 1982 BIOS, but it lacks support for 720KB floppy drives:
Description | Date | Size | md5sum | MZD | 86Box |
---|---|---|---|---|---|
IBM 5160 U18 | 08 Nov 1982 | 32768 | 1a2ac1ae0fe0f7783197e78da8b3126c | BIOS_5160_08NOV82_U18_1501512.BIN | ibmxt\BIOS_5150_27OCT82_U33.BIN |
*IBM 5160 U19 | 08 Nov 1982 | 32768 | e816a89768a1bf4b8d52b454d5c9d1e1 | BIOS_5160_08NOV82_U19_5000027_27256.BIN | n/a |
*IBM 5160 U19 | 08 Nov 1982 | 8192 | 69e2bd1d08c893cbf841607c8749d5bd | n/a | BIOS_5160_08NOV82_U19_5000027.BIN |
* These are images of the same chip, just different sizes. You only need one.
Both the IBM PC and XT had Microsoft Cassette BASIC in ROM. This ROM is also required for early DOS versions of the BASIC interpreter, which took the BASIC in ROM and extended it.
You only need to provide one of these.
Description | Date | Size | md5sum | MZD | 86Box |
---|---|---|---|---|---|
BASIC C1 | ? | 8192 | 2ac2e97eddb3f344641cdd9dc3747f8e | 5700019.bin | \ibmpc\IBM 5150 - Cassette BASIC version C1.00 - U29 - 5700019.bin |
BASIC C1 | ? | 8192 | 8b2a0f2ea97d0adb9c1c834387aad5d9 | 5700027.bin | \ibmpc\IBM 5150 - Cassette BASIC version C1.00 - U30 - 5700027.bin |
BASIC C1 | ? | 8192 | 9a3253ad9f1d8213d33e04476e3ed482 | 5700035.bin | \ibmpc\IBM 5150 - Cassette BASIC version C1.00 - U31 - 5700035.bin |
BASIC C1 | ? | 8192 | 2686dbc7f261f10d54553c4c5f93a3d5 | 5700043.bin | \ibmpc\IBM 5150 - Cassette BASIC version C1.00 - U32 - 5700043.bin |
BASIC C1 | ? | 32768 | 2ad31da203a49b504fad3a34af0c719f | n/a | n/a |
The 5160 optionally came with BASIC V1.1:
Description | Date | Size | md5sum | MZD | 86Box |
---|---|---|---|---|---|
BASIC C1.1 | ? | 8192 | 69e2bd1d08c893cbf841607c8749d5bd | 5000019.bin | \ibmpc82\IBM 5150 - Cassette BASIC version C1.10 - U29 - 5000019.bin |
BASIC C1.1 | ? | 8192 | 5f85ff5ea352c1ec11b084043fbb549e | 5000021.bin | \ibmpc82\IBM 5150 - Cassette BASIC version C1.10 - U30 - 5000021.bin |
BASIC C1.1 | ? | 8192 | 04a285d5dc8d86c60679e8f3c779dcc4 | 5000022.bin | \ibmpc82\IBM 5150 - Cassette BASIC version C1.10 - U31 - 5000022.bin |
BASIC C1.1 | ? | 8192 | b086a6980fc5736098269e62b59726ef | 5000023.bin | \ibmpc82\IBM 5150 - Cassette BASIC version C1.10 - U32 - 5000023.bin |
BASIC C1.1 | ? | 32768 | eb28f0e8d3f641f2b58a3677b3b998cc | n/a | n/a |
If you wish to add a hard disk to the IBM XT 5160 machine, you must supply the following hard disk controller BIOS:
Description | Date | Size | md5sum | MZD | 86Box |
---|---|---|---|---|---|
XEBEC HDC ROM | 1985 | 4096 | 66631d1a095d8d0d54cc917fbdece684 | IBM_XEBEC_62X0822_1985.BIN | /hdd/st506/ibm_xebec_62x0822_1985.bin |
MartyPC supports the IBM EGA adapter as of 0.2.0. To use the EGA card you will need an EGA video BIOS ROM.
Description | Date | Size | md5sum | MZD | 86Box |
---|---|---|---|---|---|
EGA ROM | 1984 | 16384 | 0636f46316f3e15cb287ce3da6ba43a1 | ibm_6277356_ega_card_u44_27128.bin | see other* |
EGA ROM | 1984 | 16384 | 528455ed0b701722c166c6536ba4ff46 | see other* | /video/ega/ibm_6277356_ega_card_u44_27128.bin |
- The IBM EGA ROM is in reversed-order on the hardware ROM chip. Some images have reversed the dumped ROM.
If you wish to use a ROM that MartyPC does not have a definition for, you can create a new ROM definition. This is useful if you want to experiment with or develop your own ROM images.
See the ROM Definition Guide for more information.