voidstar78
Veteran Member
I have a full/complete IBM 5110 that works well, but I also have another IBM 5110 that has no keyboard.
They are hard to find keyboards, so I am looking for a way to build a replacement keyboard -- or, better yet: to tether in a cable and use some other device as the keyboard. The connector on this keyboard is a parallel-type interface, not serial.
So, I ordered a Hantek 1008A 8-channel oscilloscope, which isn't super expensive and works adequately for this. But I've just been monitoring 4-pins at a time, instead of a full 8 channels at a time, to keep the cable management less of a mess.
What I've found is this: In the IBM 5110 MIM 2-36 is has a chart of all the scan codes (the IBM 5100 has a similar chart). I tested every key, and each scan code hex corresponds to the parallel voltages used by that key that go across the Z4 keyboard cable on the A1 board.
Using "LEFT ARROW" as an example, it has a normal scan code of 34 hex: 0011 0100
And here are the measured KBD pin values when I pressed the "LEFT ARROW" on my working 5110 system:
B05 KBD_0 0.2v (0)
D06 KBD_1 0.2v (0)
D13 KBD_2 5.0v (1)
B08 KBD_3 5.0v (1)
B09 KBD_4 0.2v (0)
B10 KBD_5 5.0v (1)
B13 KBD_6 0.2v (0)
B12 KBD_7 0.2v (0)
B04 KBD_P 5.0v (1)
i.e. the same "34" sequence described in the MIM as they scan code for this key (and this was observed for all the other keys, they match that chart). However, the trick is that last pin (B04, KBD_P -- parity?), which I don't see documented anywhere. I haven't seen a pattern yet on when it is 0 vs 1 for a given keypress, but I have "measured" what this P-value should be for all the keys.
CMD and SHIFT are key code modifiers, and by themselves don't have a scan code. So you can't determine when CMD or SHIFT (by themselves) has been pressed, or tell the difference between LEFT vs RIGHT shift - on this keyboard, they literally don't cause a KBD STROBE. Best you can do is determine whether CMD or SHIFT were pressed during when some other key was being pressed. Also there is no specific pin for SHIFT or CMD modifies - for most keys it is the KBD4 and KBD7 pins, but for seven keys this is not the case (HOLD, ATTN, LEFT, RIGHT, =, EXECUTE, @). And, my observation was that the value of the "P" pin gets inverted whenever SHIFT or CMD are pressed. For example, for ATTN the KBD_P pin is normally 1, but during CMD-ATTN or SHIFT-ATTN, the KBD_P pin gets inverted to 0.
All "0" bits were measured at around 0.2V, while expected "1" values measured as 5V. So, I'm still not sure why the IBM Z4 keyboard cable has need of 8.5V (other than maybe for the keyboard internal clock that controls signal durations? or maybe it's not really used in this system, and is just a left over interface from some other application).
Next I examined the Power on Reset, Typamatic, Kbd Lockout and Kbd Strobe pins, where the following behavior was observed:
- Power on Reset: this is normally 5v, except press the RESET button is pressed, it went to 0.2V . I'm not sure why the keyboard itself cares when RESET is being pressed (perhaps just that as RESET is being pressed, don't translate any scan codes so that the subsequent startup is in a standard state?). OR, maybe this same interface is just used on other industrial applications that do care when they are being reset.
- Typamatic: very few keys on the 5110 keyboard are marked as having typamatic capability (only the arrow keys and the spacebar). This pin is normally 0V (or 0.2V), but when pressing one of these "repeatable" keys, this pin pulses to 5V for ~1ms just after the Keyboard Strobe signal (on the downside, when it goes from 5V down to 0V). Then this pulse doesn't fire again till about another 200ms.
- Keyboard Lockout: nominally 0V, I never saw this signal pulse or go high. I suspect maybe a PALM IOCB can be issued to "lockout" the keyboard, such as perhaps during certain serial or communication processing, to avoid HOLD or DCP being activated during those moments of sending/recieving data. Since I'm not running any such thing, this lockout is probably normal to stay at 0V. Or as mentioned earlier, maybe there are other industrial applications using this same interface (could be what the 8.5V pin is for also, possibly just a carry over from those applications).
- Keyboard Strobe: Normally this is 5V. Upon pressing any key, this signal goes down to 0V (or 0.2V) for about 58ms then returns to 5V. When pressing a repeat key (like spacebar), this signal stays up for about 48ms, before automatically repeating the sequence (i.e. go back down to 0.2V, send typamatic pulse for 1ms, stay down 58ms, return back up for 48ms, repeat while the spacebar is held down).
All the other pins on the connector are either fixed voltage, ground, or not used.
Hopefully from this is enough information to construct a keyboard replacement. More to come.
They are hard to find keyboards, so I am looking for a way to build a replacement keyboard -- or, better yet: to tether in a cable and use some other device as the keyboard. The connector on this keyboard is a parallel-type interface, not serial.
So, I ordered a Hantek 1008A 8-channel oscilloscope, which isn't super expensive and works adequately for this. But I've just been monitoring 4-pins at a time, instead of a full 8 channels at a time, to keep the cable management less of a mess.
What I've found is this: In the IBM 5110 MIM 2-36 is has a chart of all the scan codes (the IBM 5100 has a similar chart). I tested every key, and each scan code hex corresponds to the parallel voltages used by that key that go across the Z4 keyboard cable on the A1 board.
Using "LEFT ARROW" as an example, it has a normal scan code of 34 hex: 0011 0100
And here are the measured KBD pin values when I pressed the "LEFT ARROW" on my working 5110 system:
B05 KBD_0 0.2v (0)
D06 KBD_1 0.2v (0)
D13 KBD_2 5.0v (1)
B08 KBD_3 5.0v (1)
B09 KBD_4 0.2v (0)
B10 KBD_5 5.0v (1)
B13 KBD_6 0.2v (0)
B12 KBD_7 0.2v (0)
B04 KBD_P 5.0v (1)
i.e. the same "34" sequence described in the MIM as they scan code for this key (and this was observed for all the other keys, they match that chart). However, the trick is that last pin (B04, KBD_P -- parity?), which I don't see documented anywhere. I haven't seen a pattern yet on when it is 0 vs 1 for a given keypress, but I have "measured" what this P-value should be for all the keys.
CMD and SHIFT are key code modifiers, and by themselves don't have a scan code. So you can't determine when CMD or SHIFT (by themselves) has been pressed, or tell the difference between LEFT vs RIGHT shift - on this keyboard, they literally don't cause a KBD STROBE. Best you can do is determine whether CMD or SHIFT were pressed during when some other key was being pressed. Also there is no specific pin for SHIFT or CMD modifies - for most keys it is the KBD4 and KBD7 pins, but for seven keys this is not the case (HOLD, ATTN, LEFT, RIGHT, =, EXECUTE, @). And, my observation was that the value of the "P" pin gets inverted whenever SHIFT or CMD are pressed. For example, for ATTN the KBD_P pin is normally 1, but during CMD-ATTN or SHIFT-ATTN, the KBD_P pin gets inverted to 0.
All "0" bits were measured at around 0.2V, while expected "1" values measured as 5V. So, I'm still not sure why the IBM Z4 keyboard cable has need of 8.5V (other than maybe for the keyboard internal clock that controls signal durations? or maybe it's not really used in this system, and is just a left over interface from some other application).
Next I examined the Power on Reset, Typamatic, Kbd Lockout and Kbd Strobe pins, where the following behavior was observed:
- Power on Reset: this is normally 5v, except press the RESET button is pressed, it went to 0.2V . I'm not sure why the keyboard itself cares when RESET is being pressed (perhaps just that as RESET is being pressed, don't translate any scan codes so that the subsequent startup is in a standard state?). OR, maybe this same interface is just used on other industrial applications that do care when they are being reset.
- Typamatic: very few keys on the 5110 keyboard are marked as having typamatic capability (only the arrow keys and the spacebar). This pin is normally 0V (or 0.2V), but when pressing one of these "repeatable" keys, this pin pulses to 5V for ~1ms just after the Keyboard Strobe signal (on the downside, when it goes from 5V down to 0V). Then this pulse doesn't fire again till about another 200ms.
- Keyboard Lockout: nominally 0V, I never saw this signal pulse or go high. I suspect maybe a PALM IOCB can be issued to "lockout" the keyboard, such as perhaps during certain serial or communication processing, to avoid HOLD or DCP being activated during those moments of sending/recieving data. Since I'm not running any such thing, this lockout is probably normal to stay at 0V. Or as mentioned earlier, maybe there are other industrial applications using this same interface (could be what the 8.5V pin is for also, possibly just a carry over from those applications).
- Keyboard Strobe: Normally this is 5V. Upon pressing any key, this signal goes down to 0V (or 0.2V) for about 58ms then returns to 5V. When pressing a repeat key (like spacebar), this signal stays up for about 48ms, before automatically repeating the sequence (i.e. go back down to 0.2V, send typamatic pulse for 1ms, stay down 58ms, return back up for 48ms, repeat while the spacebar is held down).
All the other pins on the connector are either fixed voltage, ground, or not used.
Hopefully from this is enough information to construct a keyboard replacement. More to come.
Last edited: