Tony, you are incredible :)! Thanks, and I've printed out that info and will
stick it with the machine. From what I've heard, that chip is no longer
available and I am curious if it is worth the effort to make up a plug-in
replacement. This machine was marked "For Parts Only" but I really dislike
tearing apart these machines if something can be done to make it work. Has
anyone looked at making up a plug-in replacement, and/or has a machine that
also needs this chip? If there is enough of a demand, it might be a fun
project!
Tony Duell wrote:
I have a Heathkit H89A I acquired some years ago with a note attached "Bad
keyboard encoder on terminal card." Is anyone here familiar with the
keyboard encoder? I sort of recall reading somewhere that the keyboard
Sure am....
I have the Z90 manual here, which is essentially the same machine...
The keyboard encoder is the 40 pin chip at location U444 on the terminal
logic board. The terminal logic board is the large board standing
vertically at the very back of the machine, and U444 is just above the
connector for the keyboard ribbon cable.
The keyboard encoder has the Heath/Zenith part number 443-913, and is
described as an S470 keyboad encoder in the IC specifications list. I am
told that there was a standard keyboard encoder with much the same
pinout, but with different internal programming, so the output codes for
some of the keys are different. However AFAIK, all H88s, H89s, Z90s and
H/Z19 terminals use the same encoder chip, so if you find a dead example
of any of those machines, it's a possible source of the chip.
The output of the keyboard encoder chip goes to a ROM, U445 (444-37) on
the terminal logic board. This translates the keyboard codes into ASCII
(and special codes for the non-standard keys). Whether you could use a
standard encoder if you reprogrammed the ROM, I don't know.
For reference, the pinout of the keyboard encoder chip is :
1 B3 (bit 3 output) (=A2)
2 Vll (ground)
3 clock input
4 X9 (keyboard scan output)
5 X8
6 X7
7 X6
8 X5
9 X4
10 X3
11 X2
12 X1
13 Data strobe output
14 Data strobe control
15 Output Enable
16 Repeat
17 Key bounce mask
18 Vgg (-12V)
19 Control key input
20 Shift lock I/D
21 Shift
22 Y10 (keyboard input)
23 Y1
24 Y2
25 Y3
26 Y4
27 Y5
28 Y6
29 Y7
30 Y8
31 Y9
32 Vss (+5V)
33 B5 (=A4)
34 B6 (=A5)
35 B7 (=A7, control output)
36 B8 (=A8, shift output)
37 B1 (=A0)
38 B2 (=A1)
39 B9 (=A6)
40 B4 (=A3)
The B-lines are scambled before being connected to the ROM -- I've put
the assignments in brackets above). A9 and A10 on the ROM are groudned.
The address inputs to the ROM for each key are :
f1 0a
f2 2a
f3 1a
f4 3a
f5 4a
Erase 6a
Blue 5a
Red 7a
Grey 06
Esc 2d
1 05
2 25
3 15
4 35
5 45
6 65
7 55
8 75
9 0d
0 5c
- 7c
= 02
` 22
Bsp 12
Tab 79
Q 51
W 71
E 09
R 29
T 19
Y 39
U 49
I 69
O 59
P 44
[ 64
\ 54
LF 74
Del 0C
A 4E
S 6E
D 5E
F 7E
G 01
H 21
J 11
K 31
L 41
; 18
' 38
{ 48
Ret 68
Scroll 61
Z 16
X 36
C 46
V 66
B 56
N 76
M 0E
, 2E
. 1E
/ 00
Space 3E
K0 50
K. 70
Kenter 08
K1 04
K2 24
K3 14
K4 1C
K5 3C
K6 4C
K7 42
K8 62
K9 52
NU1 32
NU2 40
(K-prefixed keys are on the number pad)
The outputs of the ROM -- i.e. what the firmware on the terminal logic
card is expecting -- for each key are :
key norm shift ctrl s&c
f1 00 00 80 80
f2 01 01 81 81
f3 02 02 82 82
f4 03 03 83 83
f5 04 04 84 84
Erase 05 05 85 85
Blue 06 06 86 86
Red 07 07 87 87
Grey 0e 0e 8e 8e
Esc 1b 1b 9b 9b
1 31 21 b1 a1
2 32 32 b2 b2
3 33 23 b3 a3
4 34 24 b4 a4
5 35 25 b5 a5
6 36 36 b6 b6
7 37 37 b7 b7
8 38 38 b8 b8
9 39 39 b9 b9
0 30 30 b0 b0
- 2d 2d ad ad
= 3d 3d bd bd
` 60 60 e0 e0
Bsp 08 08 88 88
Tab 09 09 89 89
Q 71 51 f1 d1
W 77 57 f7 d7
E 65 45 e5 c5
R 72 52 f2 d2
T 74 54 f4 d4
Y 79 59 f9 d9
U 75 55 f5 d5
I 69 49 e9 c9
O 6f 4f ef cf
P 70 50 f0 d0
[ 5b 5b db db
\ 5c 7c dc fc
LF 0a 0a 8a 8a
Del 7f 7f ff ff
A 61 41 e1 c1
S 73 53 f3 d3
D 64 44 e4 c4
F 66 46 e6 c6
G 67 47 e7 c7
H 68 48 e8 c8
J 6a 4a ea ca
K 6b 4b eb cb
L 6c 4c ec cc
; 3b 3b bb bb
' 27 27 a7 a7
{ 7b 7b fb fb
Ret 0d 0d 8d 8d
Scroll 1f 1f 9f 9f
Z 7a 5a fa da
X 78 58 f8 d8
C 63 43 e3 c3
V 76 56 f6 d6
B 62 42 e2 c2
N 6e 4e ee ce
M 6d 4d ed cd
, 2c 3c ac bc
. 2e 3e ae be
/ 2f 3f af bf
Space 20 20 a0 a0
K0 10 10 90 10
K. 1a 1a 9a 9a
Kenter 1c 1c 9c 9c
K1 11 11 91 91
K2 12 12 92 92
K3 13 13 93 93
K4 14 14 94 94
K5 15 15 95 95
K6 16 16 96 96
K7 17 17 97 97
K8 18 18 98 98
K9 19 19 99 99
NU1 0b 0b 8b 8b
NU2 0c 0c 8c 8c
While this might be more work than you want, the above should allow you
to create something that will work...
-tony