-
Notifications
You must be signed in to change notification settings - Fork 35
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 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. 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.
Using different machine types, or expansion cards such as EGA will require the original manufacturer ROM.
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.
MartyPC supports all known ROM variants for the IBM 5150 and 5160, so you can use whichever version you please for research purposes.
But if you want to know the recommended ROM sets to use with MartyPC, here they are.
It is highly recommended to use the latest 1982 BIOS as support for expansion ROMs was missing in earlier BIOS versions.
| Description | Date | Size | md5sum | MZD | 86Box |
|---|---|---|---|---|---|
| IBM 5150 U33 | 27 Oct 1982 | 8192 | f453eb2df6daf21ec644d33663d85434 | BIOS_IBM5150_27OCT82_1501476_U33.BIN | ibmpc82\BIOS_5150_27OCT82_U33.BIN |
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_09MAY86_U18_59X7268_62X0890_27256_F800.BIN | ibmxt86\BIOS_5160_09MAY86_U18_59X7268_62X0890_27256_F800.BIN |
| IBM 5160 U19 | 09 May 1986 | 32768 | df9f29de490d7f269a6405df1fed69b7 | BIOS_5160_09MAY86_U19_62X0819_68X4370_27256_F000.BIN | ibmxt86\BIOS_5160_09MAY86_U19_62X0819_68X4370_27256_F000.BIN |
- The BASIC ROM is optional on the IBM PC. The BASIC ROM is required for early DOS versions of the BASIC interpreter, which took the BASIC in ROM and extended it.
- The IBM XT ROM includes BASIC by default. You do not need to source a separate BASIC ROM if using the IBM XT.
- BASIC ROMS come in two variants, 4 ROM images of 8k in size, and a combined 32K ROM image. You either need all four 8k images, or just the single 32K image.
ROM Basic version C1.0
| 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 | \ibmpc\ibm-basic-1.00.rom |
ROM Basic version C1.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 | \ibmpc82\ibm-basic-1.10.rom |
MartyPC has support for hard disks via the XUB BIOS (XT-IDE Universal BIOS).
However, the XUB BIOS looks different during boot than a stock machine, which may not be desired.
If you wish to have a more genuine hard disk experience on the IBM 5150 or 5160 machine, you can supply the following hard disk controller BIOS and use the IBM Xebec controller, however hard disk sizes are limited to 20MB.
| Description | Date | Size | md5sum | MZD | 86Box |
|---|---|---|---|---|---|
| XEBEC HDC | 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 |
|---|---|---|---|---|---|
| IBM EGA | 1984 | 16384 | 0636f46316f3e15cb287ce3da6ba43a1 | ibm_6277356_ega_card_u44_27128.bin | see other* |
| IBM EGA | 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.
MartyPC supports the IBM VGA adapter as of 0.4.0. An open-source VGA BIOS is supplied and so no ROM is required. If you wish to experiment or do research with the original IBM VGA BIOS, use the following:
| Description | Date | Size | md5sum | MZD | 86Box |
|---|---|---|---|---|---|
| IBM VGA | 1986 | 32768 | 2057a38cb472300205132fb9c01d9d85 | ibm_vga.bin | video\ibm_vga.bin |
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.