56K420ADA_Protocol
http://bitsavers.org/pdf/att/610/55K420ADA_kbd/
this kbd works with the 610, 630 and 730
communicates 4800 baud 8 bits no parity, msb set on keydown, off on keyup
the host sends two status bytes periodically with state and kb volume, one of the bits is used for keyclick
which is only sent when a keyclick is to happen. It does NOT appear in the periodic status update.
default bytes sent are (00)(84)
period varies between implementations, the 610 sends both bytes every second, the 630 sends one byte every second
kbd sends an id (01) twice 10ms apart on power up but it seems to be ignored
host queries id with (8C)
beep generated with (40) (or 41, 44 or 45 if the kbd LEDs are on)
it is a triangle wave sent in variable width bursts with fewer triangle waves per burst for .8 seconds
a scope trace is in beep.wfm
key click is 4 square wave pulses 60uS active 330 uS between pulses
state bits
byte 1 msb 0
beep
click
0
0
scroll lock LED (1 = ON)
0
caps lock LED (1 = ON)
byte 2 msb 1
0
0
0
kb inquiry kb returns (01) (01) inquiry also sends kb volume bits
vol msb
vol
vol lsb
default volume is 4, scroll lock, click and caps lock off
examples (all with keyclick on)
capslock pressed 20 01 sent
next keydown 21 sent
capslock pressed 21 00 sent
next keydown 20
scr lock pressed 20 04 sent
next keydown 24
it is actually sending two commands when keyclick is on, the first ALSO sends the LED state
if we have the sequence scroll lock, shift lock, shift lock, scroll lock
you see
kb host
F1
01 SCROLL LK ON
71
A7
05 SCROLL LK AND SHIFT LK ON
27
A7
01 SCROLL LK ON
27
F1
00 BOTH OFF
71
No host bytes are sent if any other key is pressed
--
kbd ID is jumperable on the pcb
jumpering the next pad down changes the ID from 1 to 3