per
Veteran Member
About a year ago, I told about some errors I got with my XT. The symphtoms was that there was no BEEP on startup, and keyboard-input would act strange.
After going through the BIOS listings, I figured what's wrong. Here is the parts of the code that's acting different:
This simply means that somehow (in cold weather), the keyboard data line gets grounded (maybe something is shorted or a pullup resistor is loose?), causing the BIOS to skip the keyboard initialazion and diagnostic tests.
Thus, the keyboard buffer isn't set up, and typing what you want becomes a real pain.
*Edit*
In adition, the BLINK_INT routine toggles the keyboard clock on and off every now and then (bit 7 of I/O port 0x61h). It is obivouls that IBM meant to use the keyobard plug for something else under the MFG_TST=1 condition.
After going through the BIOS listings, I figured what's wrong. Here is the parts of the code that's acting different:
Code:
84 MFG_TST DB ? ; INITIALIZATION FLAG
...
625 D3B: MOV AL,38H
626 OUT PORT_B,AL
627 NOP
628 NOP
629 IN AL,PORT_A
630 AND AL,0FFH ; WAS DATA LINE GROUNDED
631 JNZ E6
632 INC DATA_AREA[OFFSET MFG_TST] ; SET MANUFACTURING TEST FLAG
...
883 CMP DATA_AREA[OFFSET MFG_TST],1 ; MANUFACTURING TEST MODE?
884 JE F7 ; YES - [B]SKIP KEYBOARD TEST[/B]
...
933 ;----- SETUP TIMER 0 TO BLINK LED IF MANUFACTURING TEST MODE
934
935 CMP DATA_AREA[OFFSET MFG_TST],01H ; MFG. TEST MODE?
936 JNZ EXP_IO
937 MOV WORD PRT(1CH*4),OFFSET BLINK_INT; SETUP TIMER INTR TO BLINK LED
938 MOV AL,0FEH ; ENABLE TIMER INTERRUPT
939 OUT INTA01,AL
...
1230 F15A_0:
1231 CMP MFG_TST,1 ; MFG MODE
1232 JE F15A ; [B]BYPASS BEEP[/B]
This simply means that somehow (in cold weather), the keyboard data line gets grounded (maybe something is shorted or a pullup resistor is loose?), causing the BIOS to skip the keyboard initialazion and diagnostic tests.
Thus, the keyboard buffer isn't set up, and typing what you want becomes a real pain.
*Edit*
In adition, the BLINK_INT routine toggles the keyboard clock on and off every now and then (bit 7 of I/O port 0x61h). It is obivouls that IBM meant to use the keyobard plug for something else under the MFG_TST=1 condition.
Last edited: