• Please review our updated Terms and Rules here

Finally figured what the error with my XT was.

per

Veteran Member
Joined
Jan 21, 2008
Messages
3,052
Location
Western Norway
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:
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:
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.

Sorry, my bad. The keyboard stack IS set up correctly even though the tests are skipped.

But, the keyboard clock still toggles between enabled and disabled about 18.2 times each second.

I'm happy that this only happens very rarely (long time since last time now).

*In Addition*
The reasons for this might be many:
  1. Shorting wire(s)
  2. Loose pullup resistor(s)
  3. Minor failure in the keyboard logic
  4. Minor failure in the keyboard interface
  5. Unepected memory event
  6. Much more
 
Last edited:
While I feel for your plight, I think that's one of the coolest hardware issues ever. Most hardware issues prevent the box from working at all. Yours just managed to piss you off :)
 
While I feel for your plight, I think that's one of the coolest hardware issues ever. Most hardware issues prevent the box from working at all. Yours just managed to piss you off :)

Yea, I know.
After my analysis, what's happening in hardware when the issue occours is that the byte at a certain location becomes 01 when it should have stayed 00.

The reasons for this might be many:
Most likely a grounded keyboard line = loose pull-up/down resistors, or simply a short.
Possible bad signal = A loose contact from/to the PIO, or the shift register.
Problably not a DMA issue = Expansion card error.
 
Back
Top