• Please review our updated Terms and Rules here

IBM PC ROM Dumps to Complete Collection

Interesting, I suppose IBM put this odd/even decoding in hardware to deter dumping.
5170s have a 16 bit data bus, and IBM used two 8 bit data PROMs to create 16 data bits for each memory read from ROM.
As a result, the bytes from one of the PROMs appears at even addresses, and the bytes from the other PROMs appears at odd addresses.
 
I've just sent modem7 and Great Hierophant dumps of the 04/24/81 ROM from the 5150.

Yes, I've got a 5150 with that ROM. Interestingly enough, the date on the inside of the front cover is 01-82. Apparently, IBM wasn't in all that much of a hurry to update the ROM's, since all it did was fix a couple of display bugs.

This 5150 came out of the trash of a place I used to work for about 10-11 years ago. It was found in the dumpster behind our building. Somebody must have dumped it in there overnight. A supervisor saw it and pulled it out, asked me if I wanted it. There was a keyboard and system unit only, no monitor. It has 2 floppy drives, one of which is a 160K! There was a floppy controller card and a video display card which was an IBM monochrome. I swapped out the video card a couple years ago so I could run donkey.bas (needed a CGA monitor).

It does have a black finish power supply. There is also a memory expansion card in the system unit with three rows of 64k chips, they're the chips with the 'gold tops' that you sometimes see on earlier equipment. The memory chips on this card are dated mid 1982.

I do have a spare black finish power supply.
 
Great Hierophant: can you repost that archive? mediafire seems to have digested the file and it's been relegated to the digital loo.
Btw: you're missing the 3270/AT bios, its on modem7's site listed as the alternate AT revision 3 bios. See MESS at.c source code, it explains which is which. The actual difference between them must be very minor since most of the changes are strings.

The 1503033 AT i8042 keyboard controller was dumped by Kevin Horton; Note IBM misspelled CORP. as COPR. in it. We found that amusing.
The XT/286 uses a windowed i8742 for its keyboard controller; this one is not dumped, and is unfortunately soldered down making dumping a pain in the rear. There are also at least two PROMS or PALS on the XT/286 which are NOT the same as the ones on the AT. These need to be dumped as well, and again are soldered down. (the AT PROMS and PALS are the same across all 3 board revisions). Does anyone happen to have an XT/286 MB they could temporarily part with? It will probably still be fine when we're done with it.

Also interesting that the only change between 5000026 and 1501512 was in the test mode code; What is wrong with the original code?

the_x_guy: thanks for dumping the 04/24/81 rom, we've been hunting for that for MESS for a while (a disassembly of it was floating around but not the actual binary)

I have dumps of the original XT-286 BIOS chips here, they should have checksums as such:
78X7460.U34 MD5:0dbdac3941be327fafe7fb363b1341ce CRC32: 1DB4BD8F
78X7461.U35 MD5:57fb04beb5ff349e36da9219d74c2801 CRC32: BE14B453
Drop me a line if you need a copy of those.

LN
 
Last edited:
This is blatant thread necromancy, but I take it no-one's had any joy with the 8048 in IBM's original 5150 keyboard, or the 6805s they seem to have used for subsequent keyboards? I'd guess they're in the fuming-nitric-acid difficulty class.
 
While we're raising this thread from the dead, can somebody post a copy of the dump archive so people (like me) who weren't around when this thread was going can get a copy for their archives?
 
While we're raising this thread from the dead, can somebody post a copy of the dump archive so people (like me) who weren't around when this thread was going can get a copy for their archives?

I got the archive, and I have been adding some bits to it too; like the firmware from the IBM Music feature card and the alternative fontROM for the MDA/CGA (the one that contains all the Norwegian characters). The only problem is that it's almost one megabyte after I zip it, so I can't upload it here.

Note that if I get my mirror online, I have arranged everything by part-number. This means that some mixing and "glueing" is needed in order to form complete BIOS images.

I'm still missing a dump of the IBM PGC CGA-emulation font-ROM (part 6137560). I got the card myself, but the chip is soldered and I don't want to risk breaking it.
 
Oddly, the 8048s in the PC/AT 84-key keyboard (1503099) and the 3270PC 122-key keyboard (1385001) don't appear to be protected, so I've been able to dump them with a normal programmer.
 
Maybe Erik can help you. According to http://www.vintage-computer.com/ibm_pc.shtml, he has two 5150s, one of which has "version 1.0 ROMs".


File attached.

The ROM image contained in IBM_5788005_AM9264_1981_CGA_CARD.zip‎ appears to be corrupt. For instance, using a ASCII display program I hacked up in a few minutes:
Code:
--0x01--
        
        
 ****** 
*      *
* *  * *
*      *
*      *
* **** *
--------

--0x02--
        
        
 ****** 
********
** ** **
********
********
**    **
--------

--0x0b--
        
        
    ****
     ***
    ** *
   **  *
  ****  
 **  ** 
--------

--0x17--
        
        
   **   
  ****  
 ****** 
   **   
   **   
   **   
--------

--0x18--
        
        
   **   
  ****  
 ****** 
   **   
   **   
   **   
--------

--0x30--
        
        
  ***** 
 **   **
 **  ***
 ** ****
 **** **
 ***  **
--------

--0x42--
        
        
 ****** 
  **  **
  **  **
  **  **
  ***** 
  **  **
--------

etc..

MD5 (IBM_5788005_AM9264_1981_CGA_CARD.BIN) = 3bc052db30ce58620a7b1fc3b25e3212

I have also found this same file named "IBM_5788005_AM9264_1981_CGA_MDA_CARD.BIN" at http://www.minuszerodegrees.net/index.htm (which is also broken).

Anyone have a non-broken CGA ROM dump file?

Thanks!

sbrk()
 
The ROM image contained in IBM_5788005_AM9264_1981_CGA_CARD.zip‎ appears to be corrupt. For instance, using a ASCII display program I hacked up in a few minutes:
Anyone have a non-broken CGA ROM dump file?
Refer to earlier post #10.
The first half of the ROM contains MDA fonts (each 8 x 14).
CGA fonts (each 8 x 8) start at offset 1008h.
So the first two CGA characters are:

Code:
1008: 7E  ******
1009: 81 *      *
100A: A5 * *  * *
100B: 81 *      *
100C: BD * **** *
100D: 99 *  **  *
100E: 81 *      *
100F: 7E  ******

1010: 7E  ******
1011: FF ********
1012: DB ** ** **
1013: FF ********
1014: C3 **    **
1015: E7 ***  ***
1016: FF ********
1017: 7E  ******
 
In case your next question is about the MDA fonts in that ROM.
Per post #10, note that the lower 6 lines of each character come from a different area of the ROM.

Code:
0008: 00
0009: 00
000A: 7E  ******
000B: 81 *      *
000C: A5 * *  * *
000D: 81 *      *
000E: 81 *      *
000F: BD * **** *
[COLOR="#FF0000"]0808[/COLOR]: 99 *  **  *
[COLOR="#FF0000"]0809[/COLOR]: 81 *      *
[COLOR="#FF0000"]080A[/COLOR]: 7E  ******
[COLOR="#FF0000"]080B[/COLOR]: 00
[COLOR="#FF0000"]080C[/COLOR]: 00
[COLOR="#FF0000"]080D[/COLOR]: 00

0010: 00
0011: 00
0012: 7E  ******
0013: FF ********
0014: DB ** ** **
0015: FF ********
0016: FF ********
0017: C3 **    **
[COLOR="#FF0000"]0810[/COLOR]: E7 ***  ***
[COLOR="#FF0000"]0811[/COLOR]: FF ********
[COLOR="#FF0000"]0812[/COLOR]: 7E  ******
[COLOR="#FF0000"]0813[/COLOR]: 00
[COLOR="#FF0000"]0814[/COLOR]: 00
[COLOR="#FF0000"]0815[/COLOR]: 00
 
What about the 8048s in the PC/XT keyboard and the 101 keyboard? Also, are their different firmwares for different regions (US, UK, FR, DE, IT) of IBM Keyboards?

Can you plug in a font ROM of an MDA or CGA card into the unused socket on an IBM PC and obtain a proper dump by dumping the contents to a file?
 
What about the 8048s in the PC/XT keyboard and the 101 keyboard?
What about them?

Also, are their different firmwares for different regions (US, UK, FR, DE, IT) of IBM Keyboards?
On the Internet I read that the 'international' version of the 101 PS/2 keyboard had 102 keys. Maybe its firmware was different to cater for the extra key, but maybe not.

Can you plug in a font ROM of an MDA or CGA card into the unused socket on an IBM PC and obtain a proper dump by dumping the contents to a file?
Yes. That's how I made the IBM_5788005_AM9264_1981_CGA_MDA_CARD.BIN file.

But one has to be careful. For example, it turns out that the EGA card's BIOS ROM is fed inversed address lines. And so in that case, whilst an image file made by using DEBUG (for example) is good for taking away and disassembling, such an image is useless for making a replacement ROM (unless you know that you have to change the data order).
 
The address lines going to the ROM are inverted. This suggests, in the 16KB ROM, that you have to reverse the order of the bytes. Thus, while the DEBUG dump will give 55 at byte 0 and 46 at byte 3FFFh, the data burnt into an EPROM must be the opposite, 46 at byte 0 and 55 at byte 3FFFh.

Is the firmware in the 8048s in the PC/XT and 101 keyboards protected? What about the 8048 in the PC/AT?
 
The address lines going to the ROM are inverted.
Yes, for the EGA card that I used in an example, but not for the CGA/MDA ROM that was the subject of the last few posts.

This suggests, in the 16KB ROM, that you have to reverse the order of the bytes. Thus, while the DEBUG dump will give 55 at byte 0 and 46 at byte 3FFFh, the data burnt into an EPROM must be the opposite, 46 at byte 0 and 55 at byte 3FFFh.
EGA card: That's why I wrote, "(unless you know that you have to change the data order)" earlier. In the case of the EGA ROM image at my web site, that image was created directly from the ROM, and thus the bytes are already in reverse order, ready to make another ROM.

Is the firmware in the 8048s in the PC/XT and 101 keyboards protected?
The data sheet for the 8048 does not indicate that code protection is possible.

What about the 8048 in the PC/AT?
The Sams Computerfacts that I have for the 5170 indicates that the AT keyboard (type 2) uses an 8340 (specifically "8340X7 M1 MICRO-COMPUTER").
 
Thank you for the clarification!

Serves me right for not reading all the way through the thread. :)

sbrk()
 
Regarding keyboards:
- The 8048 in the PC/XT keyboard is, as far as I can tell, protected; when I extracted one from a keyboard of mine, the programmer read only zeroes. (I also found it difficult to desolder without damaging the PCB).
- The 8048 in the PC/AT keyboard (part 1503099) is not protected, and I was able to dump it.
- Same applies to the 122-key terminal Model F (part 1385001).
- The 101-key and 102-key keyboards are based on a 6805, not an 8048. My programmer doesn't claim to be able to read 6805s, so I haven't even tried to read them.
- I don't believe there is any difference in the firmware based on international version; the 101-key and 102-key keyboards both use the same membrane (which actually has 108 key positions) and so would work with the same firmware. There is very probably more than one firmware, though. The Model M went through a lot of changes, almost certainly including redesigned controllers.
 
- The 8048 in the PC/XT keyboard is, as far as I can tell, protected; when I extracted one from a keyboard of mine, the programmer read only zeroes. (I also found it difficult to desolder without damaging the PCB).
For the PC/XT/AT, IBM has been extremely open with design details. It doesn't make sense to me that they'd hide the code in the PC/XT keyboard but publish or allow access to all other code. And a second document I've read on the 8048 doesn't indicate that code protection is available. If someone knows otherwise about the 8048, please chip in. Maybe the 8048 that you extracted was damaged.

- The 8048 in the PC/AT keyboard (part 1503099) is not protected, and I was able to dump it.
So there's an 8048 in the first keyboard, and according to SAMS, an 8340 in the second keyboard.
 
For the PC/XT/AT, IBM has been extremely open with design details. It doesn't make sense to me that they'd hide the code in the PC/XT keyboard but publish or allow access to all other code. And a second document I've read on the 8048 doesn't indicate that code protection is available. If someone knows otherwise about the 8048, please chip in. Maybe the 8048 that you extracted was damaged.

It worked when I put it back in the keyboard.

So there's an 8048 in the first keyboard, and according to SAMS, an 8340 in the second keyboard.

I suspect '8340' is a date code rather than a part number. The controller in the AT keyboard has an 8048 pinout and contains 8048 machine code.
 
Back
Top