Image Map Image Map
Results 1 to 3 of 3

Thread: Apple Lisa 2 Keyboard not detected

  1. #1

    Default Apple Lisa 2 Keyboard not detected


    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:
    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?


  2. #2


    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:

    ; 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?

  3. #3


    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...


Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts