• Please review our updated Terms and Rules here

Apple Lisa 2 Keyboard not detected

NicolasF

Experienced Member
Joined
Jun 28, 2006
Messages
255
Location
Argentina
Hi,

I'm trying to restore a Lisa 2. But Im getting a keyboard not detected, two hi tones followed by a low one and the keyboard icon with a question mark on the screen.
I found this website: http://john.ccac.rwth-aachen.de:8000/patrick/KBDtester.htm
and it says that after reset (hold the data line 5ms low) the keyboard sends an ID byte follow by the layout ID.
I sent the 5ms low pulse to my keyboard but I never see any change in the data line, it stays high after the low pulse, which could mean 0xFF for the internal selftest fail.
The website is not very specific as to how those two bytes are sent, I'm guessing they are sent like the key codes, first the ACK pulse and then the data bits?
I would like to send the ID and layout bytes using a microcontroller to see if the Lisa is not having issues. But I'm not sure how...
Another strange thing is that the keyboard sends keycodes after pressing a key when I send the 20uS SYNC pulse but the data telegrams doesnt seem to match the ones in the website. Probably my keyboard's layout is not US so maybe thats why they dont match?

Thanks!
 
Ok... I managed to get the two bytes, it turns out that after sendind the RESET pulse you have to send the SYNC pulse for the keyboard to reply. The first byte is 0x80 which is the keyboard ID, but the layout ID is 0xFF which indicates a ROM or RAM test failed. Now, looking at the ROM checksum routine seems like sums all the bytes from ROM and they have to add to zero? this is the routine:

Code:
; calculate ROM checksum
 0207   AE      MOV R6,A	; clear R7, R6
 0208   AF      MOV R7,A
-0209   14 7D   CALL 07Dh	; get byte (A) from page 0
 020B   6E      ADD A,R6
 020C   AE      MOV R6,A	; and add it to R6
 020D   1F      INC R7
 020E   FF      MOV A,R7
 020F   96 09   JNZ 09h		; do this 256 times
-0211   34 F1   CALL 1F1h	; get byte (A) from page 1
 0213   6E      ADD A,R6
 0214   AE      MOV R6,A	; and add it to R6
 0215   1F      INC R7
 0216   FF      MOV A,R7
 0217   96 11   JNZ 11h		; do this 256 times
-0219   A3      MOVP A,@A	; get byte (A) from page 2
 021A   6E      ADD A,R6
 021B   AE      MOV R6,A	; and add it to R6
 021C   1F      INC R7
 021D   FF      MOV A,R7
 021E   96 19   JNZ 19h		; do this 256 times
-0220   E3      MOVP3 A,@A	; get byte (A) from page 3
 0221   6E      ADD A,R6
 0222   AE      MOV R6,A	; and add it to R6
 0223   1F      INC R7
 0224   FF      MOV A,R7
 0225   96 20   JNZ 20h		; do this 256 times
 0227   FE      MOV A,R6	; get checksum 
 0228   96 3D   JNZ 3Dh		; exit when failed

"MOV A, R6" seems like it updates the flags for the next jump instruction. It seems strange to me that the checksum has to be zero in order for the test to pass, am I correct?
 
Solved it! The problem was in the connector, a pin was shorting the keyboard signal to ground thats why the keyboard was not being recognized...
 
Back
Top