Home 

IBM 5170 Motherboard  -  ROM sockets U17 and U37


General

On very early 5170 motherboards, there are four 16 KB sized BIOS ROM chips (of type 27128), in sockets U17/U27/U37/U47.  Later, two 32 KB sized BIOS ROM chips (of type 27256) were supplied instead, one in socket U27 and the other in socket U47.  5170 motherboards of type 1 have a shunt block designated U131, which is set according to the type of ROM's fitted.

So, on the vast majority of IBM 5170 motherboards, ROM sockets U17 and U37 are empty.  On such motherboards, sockets U17 and U37 occupy the address space of E0000 to EFFFF  (a.k.a. segment E).

Sockets U17 and U37 are paired, just like sockets U27 and U47.  And just like sockets U27/U47, these sockets are 8-bit, supplying 16 bits to the IBM 5170's 16-bit data bus.  A diagram showing how pair U17/U37 supply 16 bits, is at here.

Of the pair, U17 is known as the EVEN one, or LOW.  And U37 is known as the ODD one, or HIGH.


Can I put 'BIOS Expansion ROM' code into the sockets ?

Yes, but the following limitations apply:

• Only one
• Must be 64 KB sized

If the 5170's power-on self test (POST) does not see an 8-bit checksum of 00 for the entire 64 KB, the POST will ignore the BIOS expansion ROM code.


For example, if I have 16 KB sized BIOS Expansion ROM code that I want to put in sockets U17/U37, here is how I could do that:

Step 1.  Create a 64 KB sized binary file of zeroes.
Step 2.  Put my 16 KB sized BIOS Expansion ROM code into the start of that, overwriting the first 16 KB of zeroes.
Step 3.  If the 8-bit checksum of the entire 64 KB is not 00, adjust the final byte of the 64 KB so that the 8-bit checksum is 00.    [ It does not need to be the final byte; just one that is not in use is okay. ]
Step 4.  Split the 64 KB sized binary file into EVEN (LOW) and ODD (HIGH) components.
Step 5.  Obtain two 27256/27C256 EPROM's (or equivalent), ones rated at an appropriate speed (see here).
Step 6.  Burn the EVEN component into one of the EPROM's, marking the EPROM as 'U17'.
Step 7.  Burn the ODD component into the other EPROM, marking the EPROM as 'U37'.

A Windows program for splitting the file into EVEN (LOW) and ODD (HIGH) components, is at here.


In the above procedure, I did not adjust the 'ROM size' byte in the BIOS Expansion ROM code to indicate 64 KB.  That is because there is no need.  For the particular case of U17/U37, the POST of the IBM 5170 BIOS does not inspect the 'ROM size' byte; the 5170's POST expecting any BIOS Expansion ROM code starting at E0000 to be 64 KB sized.


Actually, it is possible to have more than one 'BIOS Expansion ROM' code present in the 64 KB block, but it can only be done by modifying the code.
Some programming knowledge is required.
So, in the example of three sets of code:
  - Code #1: In the code, find where it 'returns' to the caller, then change that to instead, pass execution to code #2
  - Code #2: In the code, find where it 'returns' to the caller, then change that to instead, pass execution to code #3
  - Code #3: No change required
After that, you would alter an unused byte somewhere so that the 8-bit checksum for the entire 64 KB becomes 00.