• Please review our updated Terms and Rules here

IBM PC AT 5170 BIOS versions

I've got junk of IBM PC 5170 type 1 motherboard.
This is very early Type 1 release of IBM PC 5170 BIOS.
Part No. : 6181024 (16KB) + 6181025 (16KB) = 6181028 (32KB) , 6181026 (16KB) + 6181027 (16KB) = 6181029 (32KB)
Good to see these chips, listed in figure 9 of the document at [here], eventually 'surface'.
Because of the 16 KB sized ROM's, we expect shunt block U131 to be in the '27128' position (per [here]).
Also expected, are Intel made 8259A interrupt controller chips.
Now that we have a photo of the ROM's, I will later add details to [here].
 
@bobba84

Sure, here it is.

PqwbRRs.jpg


gE961oD.jpg


dUIRn62.jpg


WYOdZeC.jpg


j50Ou1q.jpg


x3UmFne.jpg


p8nKQad.jpg



@modem7

Thanks very much.
 
Last edited:
Silly question - could the unpopulated 16 bit connector positions be populated to give the AT 8 16 bit slots instead of just six?

tnx.

g.
 
Silly question - could the unpopulated 16 bit connector positions be populated to give the AT 8 16 bit slots instead of just six?
You could do that. But it means you cannot use 8-bits cards any more that only fit in a 8-bits slot like the original IBM CGA video card.
 
@gene . @Ruud

I recommend to discuss about non related BIOS topic on another thread.
 
If I want to make an EPROM image, would I just read the image in an EPROM programmer, or is there another way to do it? I haven't checked my system to see what version BIOS I have (5170), but it is a tempest AT (if anyone remembers tempest). TONS of capacitors on the MFM controller and CGA card (which has additional filtering and the RCA outputs removed). Also, EVERY cable, including the power supply, is shielded. The ROMs themselves say Golden Bow up on top. One of the admins on a local vintage group I'm on really wants me to get some ROM dumps.
 
Thank you Stone. Next is the conundrum of running it. The machine only has 2 5.25" floppies (probably high density). I have 2 of these and neither look like they've ever been used before, with a cut out in front of the case for a Syquest or Iomega removable drive.

Since this is a BIOS sticky, would it be most appropriate to open up a new thread if I wanted to post pictures?
 
Some people debate between keeping things as original as possible and doing modifications; case in point replacing the BIOS on the 5170's due to hardware warnings and incompatibility with new drives. Personally, I think there has to be a balance. To that point, wanted to share a series of videos on Adrian's Digital Basement on YouTube covering the 5170, and specifically modifications to the IBM 5170 BIOS that "fixes" a couple of items. Like many people, he was trying to find a balance between trying to use the original IBM BIOS, or switching to another BIOS (QuadTel) to allow it to use other cards and work with large files.

Here is the BIOS specific video, but the entire 5170 is a good watch:

https://www.youtube.com/watch?v=qO3xrl0XR-4

Also has a video on his second channel about "extreme overclocking" on a 5170:

https://www.youtube.com/watch?v=81ezGc1Eb1M

Also if you want, a video on an MFM emulator that would allow you to use the original IBM MFM controller, which wouldn't need any BIOS mods.

https://www.youtube.com/watch?v=q__R8khTwo8

But just wanted to share the results of Adrian's work, since he used a lot of information from MinusZeroDegrees, so wanted to share with the community.
 
Some people debate between keeping things as original as possible and doing modifications; case in point replacing the BIOS on the 5170's due to hardware warnings and incompatibility with new drives. Personally, I think there has to be a balance. To that point, wanted to share a series of videos on Adrian's Digital Basement on YouTube covering the 5170, and specifically modifications to the IBM 5170 BIOS that "fixes" a couple of items. Like many people, he was trying to find a balance between trying to use the original IBM BIOS, or switching to another BIOS (QuadTel) to allow it to use other cards and work with large files.

Here is the BIOS specific video, but the entire 5170 is a good watch:

https://www.youtube.com/watch?v=qO3xrl0XR-4

Also has a video on his second channel about "extreme overclocking" on a 5170:

https://www.youtube.com/watch?v=81ezGc1Eb1M

Also if you want, a video on an MFM emulator that would allow you to use the original IBM MFM controller, which wouldn't need any BIOS mods.

https://www.youtube.com/watch?v=q__R8khTwo8

But just wanted to share the results of Adrian's work, since he used a lot of information from MinusZeroDegrees, so wanted to share with the community.

I am very much not a fan of the first two BIOS "fixes" described in that video. The first one is simply a kludge to ignore what could potentially be a legitimate configuration error by not testing that the FDD matches the configuration.

The second one is a bit more nuanced but it was done wrong:
Code:
J_OK:
MOV DX,03F1H ; D/S/P DIAGNOSTIC REGISTER
IN AL,DX ; READ D/S/P TYPE CODE
AND AL,11111000B ; KEEP ONLY UNIQUE CODE FOR D/S/P
CMP AL,01010000B ; D/S/P CARD - MULTIPLE DATA RATE?
JZ J_OK3 ; IF SO JUMP

MOV DX,05F7H ; FIXED DISK DIAGNOSTIC REGISTER
IN AL,DX ; READ FIXED DISK TYPE CODE
AND AL,11110000B ; KEEP ONLY UNIQUE CODE FOR F/D
CMP AL,10100000B ; FIXED DISK ADAPTER ?
JZ J_FAIL ; MUST BE COMBO ELSE ERROR

MOV BL,0FH ; OUTER LOOP COUNT WAIT FOR BUSY OFF
SUB CX,CX
MOV DX,01F7H ; HARD FILE STATUS PORT
J_OK1:
IN AL,DX ; GET THE STATUS
TEST AL,080H ; IS THE CONTROLLER BUSY?
JZ J_OK2 ; CONTINUE IF NOT
LOOP J_OK1 ; TRY AGAIN
DEC BL ; DECREMENT OUTER LOOP
JNZ J_OK1 ; TRY AGAIN IF NOT ZERO
AND AL,0CH ; BITS 2 & 3 = 0 IF MULTI DATA CAPABLE
JZ J_OK3 ; GO IF YES
JMP SHORT J_FAIL ; NO MULTIPLE DATA RATE CAPABILITY
J_OK2:
MOV DX,1F4H ; VERIFY MULTIPLE DATA RATE CAPABLE
MOV AL,055H ; WRITE TO THE CYLINDER BYTE
OUT DX,AL
JMP $+2 ; I/O DELAY
IN AL,DX ; CHECK DATA WRITTEN = DATA READ
CMP AL,055H
JNZ J_FAIL ; GO IF NOT
MOV AL,0AAH ; WRITE ANOTHER PATTERN
OUT DX,AL
JMP $+2 ; I/O DELAY
IN AL,DX
CMP AL,0AAH ; IS DATA PATTERN THE SAME?
JZ J_OK3 ; GO IF SO

Here is the relevant section of the floppy test code. What the person did is change the first JZ up there to a unconditional jump to essentially skip testing the controller for 500k data rate. What they were actually trying to achieve (preventing the 601 from being thrown when using a different FDC than the stock combo card) could have been achieved by NOPing the "JZ J_FAIL ; MUST BE COMBO ELSE ERROR" after where it tests port 5F7. This is the check that non-IBM combo cards will fail, and incidentally Adrian's IBM combo card failed it because it was *actually broken* and he just ignored this fact lol
 
I am very much not a fan of the first two BIOS "fixes" described in that video. The first one is simply a kludge to ignore what could potentially be a legitimate configuration error by not testing that the FDD matches the configuration.

The second one is a bit more nuanced but it was done wrong:
Code:
J_OK:
MOV DX,03F1H ; D/S/P DIAGNOSTIC REGISTER
IN AL,DX ; READ D/S/P TYPE CODE
AND AL,11111000B ; KEEP ONLY UNIQUE CODE FOR D/S/P
CMP AL,01010000B ; D/S/P CARD - MULTIPLE DATA RATE?
JZ J_OK3 ; IF SO JUMP

MOV DX,05F7H ; FIXED DISK DIAGNOSTIC REGISTER
IN AL,DX ; READ FIXED DISK TYPE CODE
AND AL,11110000B ; KEEP ONLY UNIQUE CODE FOR F/D
CMP AL,10100000B ; FIXED DISK ADAPTER ?
JZ J_FAIL ; MUST BE COMBO ELSE ERROR

MOV BL,0FH ; OUTER LOOP COUNT WAIT FOR BUSY OFF
SUB CX,CX
MOV DX,01F7H ; HARD FILE STATUS PORT
J_OK1:
IN AL,DX ; GET THE STATUS
TEST AL,080H ; IS THE CONTROLLER BUSY?
JZ J_OK2 ; CONTINUE IF NOT
LOOP J_OK1 ; TRY AGAIN
DEC BL ; DECREMENT OUTER LOOP
JNZ J_OK1 ; TRY AGAIN IF NOT ZERO
AND AL,0CH ; BITS 2 & 3 = 0 IF MULTI DATA CAPABLE
JZ J_OK3 ; GO IF YES
JMP SHORT J_FAIL ; NO MULTIPLE DATA RATE CAPABILITY
J_OK2:
MOV DX,1F4H ; VERIFY MULTIPLE DATA RATE CAPABLE
MOV AL,055H ; WRITE TO THE CYLINDER BYTE
OUT DX,AL
JMP $+2 ; I/O DELAY
IN AL,DX ; CHECK DATA WRITTEN = DATA READ
CMP AL,055H
JNZ J_FAIL ; GO IF NOT
MOV AL,0AAH ; WRITE ANOTHER PATTERN
OUT DX,AL
JMP $+2 ; I/O DELAY
IN AL,DX
CMP AL,0AAH ; IS DATA PATTERN THE SAME?
JZ J_OK3 ; GO IF SO

Here is the relevant section of the floppy test code. What the person did is change the first JZ up there to a unconditional jump to essentially skip testing the controller for 500k data rate. What they were actually trying to achieve (preventing the 601 from being thrown when using a different FDC than the stock combo card) could have been achieved by NOPing the "JZ J_FAIL ; MUST BE COMBO ELSE ERROR" after where it tests port 5F7. This is the check that non-IBM combo cards will fail, and incidentally Adrian's IBM combo card failed it because it was *actually broken* and he just ignored this fact lol

Nice avatar Max.
icon_wink.gif
 
Here's a set copyright 1987 from IBM 7532 Industrial AT:


This version does not have issues with third party controllers and is still official IBM -- BASIC in ROM included. These dumps are from an IBM 7532 Industrial AT that's been running 24/7 in a critical production environment with an XT-IDE for the last 10 years with zero corruption issues. The motherboards in the 7532s we service and maintain are Type 3. We've tried these images in older 5170 PC/AT motherboards and they work fine there too.
 
Here's a set copyright 1987 from IBM 7532 Industrial AT:
looking inside i see a copyright of 1981 - 1985 and it's identical to the Variation 2 5170 bios for type 3 motherboards on minuszerodegrees.
 
Interesting! Checksums the same and all?
Yep, There is also a Variation 1 on minuszerodegrees which differs only in part numbers and checksum byte between variation 2, But otherwise the same Bios.
 
Back
Top