Controller (http://geekhack.org/index.php?topic=50437.0) firmware is now up, and handles this keyboard :D
Show Image(http://www.kbdbabel.org/conn/kbd_connector_ibm5291-2.png)
It has no CPU! The 'protocol' as such is driving the mux and capacitive sense chips directly. I've got proof-of-concept code working pretty well, but it needs more work.
In essence, to read a key...
- set the key code onto the D lines
- set strobe low
- read the output
- set strobe high
On the plus side, it uses the older 4-channel capsense chip which seems to be far easier to drive than the 8-channel version with its variable sensitivty setting. I've been scanning the matrix at 1000Hz :D
Got any pics of the controller board - if it has one?
D1 1 20 Ground
(missing pin) -Strobe
D2 Ground
D3 D0
(unused) (unused)
(unused) (unused)
(unused) Frame Ground
D4 +5V
D5 Ground
D6 10 11 Output
In a useful format, that's:Code: [Select]D1 1 20 Ground
(missing pin) -Strobe
D2 Ground
D3 D0
(unused) (unused)
(unused) (unused)
(unused) Frame Ground
D4 +5V
D5 Ground
D6 10 11 Output
matrix
scanrate 1
debounce 1
blocking 0
muxstrobe_port PB6:0
sense_delay 1
muxstrobe_gate -PD1
sense_polarity 1
sense PD0
muxstrobe 0 UNASSIGNED
muxstrobe 1 UNASSIGNED
muxstrobe 2 UNASSIGNED
# ...
muxstrobe 94 UNASSIGNED
muxstrobe 95 UNASSIGNED
end
erm, I'm not really following this, but can I ask if there is a very high chance of this keyboard being adapted to work on a soarer converter?
I have two of these keyboards. Willing to test a new controller, when it is ready.
These jumper wires are great for quickly hacking a Teensy inside most IBMs...
(Attachment Link)
Yes, I do.I have two of these keyboards. Willing to test a new controller, when it is ready.
I'll post to this thread once I have something. Do you have a Teensy and the ability to connect it to your keyboards?
These jumper wires are great for quickly hacking a Teensy inside most IBMs...
(Attachment Link)
There's a connector there that looks like two rows of Teensy pins side-by-side. It's where the cable would normally plug in to the PCB.
matrix
scanrate 1
debounce 1
blocking 0
muxstrobe_port PB6:0
sense_delay 1
muxstrobe_gate -PD1
sense_polarity 1
sense PD0
muxstrobe 0 Z # 00
muxstrobe 1 S # 01
muxstrobe 2 W # 02
muxstrobe 3 3 # 03
muxstrobe 4 X # 04
muxstrobe 5 D # 05
muxstrobe 6 E # 06
muxstrobe 7 4 # 07
muxstrobe 8 C # 08
muxstrobe 9 F # 09
muxstrobe 10 R # 0A
muxstrobe 11 5 # 0B
muxstrobe 12 V # 0C
muxstrobe 13 G # 0D
muxstrobe 14 T # 0E
muxstrobe 15 6 # 0F
muxstrobe 16 B # 10
muxstrobe 17 H # 11
muxstrobe 18 Y # 12
muxstrobe 19 7 # 13
muxstrobe 20 N # 14
muxstrobe 21 J # 15
muxstrobe 22 U # 16
muxstrobe 23 8 # 17
muxstrobe 24 PAD_2 # 18
muxstrobe 25 PAD_5 # 19
muxstrobe 26 PAD_8 # 1A
muxstrobe 27 NUM_LOCK # 1B
muxstrobe 28 M # 1C
muxstrobe 29 K # 1D
muxstrobe 30 I # 1E
muxstrobe 31 9 # 1F
muxstrobe 32 COMMA # 20
muxstrobe 33 L # 21
muxstrobe 34 O # 22
muxstrobe 35 0 # 23
muxstrobe 36 PERIOD # 24
muxstrobe 37 SEMICOLON # 25
muxstrobe 38 P # 26
muxstrobe 39 MINUS # 27
muxstrobe 40 SLASH # 28
muxstrobe 41 QUOTE # 29
muxstrobe 42 LEFT_BRACE # 2A
muxstrobe 43 EQUAL # 2B
muxstrobe 44 SPACE # 2C
muxstrobe 45 RSHIFT # 2D
muxstrobe 46 BACKSLASH # 2E # ~ (ISO)
muxstrobe 47 RIGHT_BRACE # 2F
muxstrobe 48 CAPS_LOCK # 30
muxstrobe 49 PAD_ASTERIX # 31
muxstrobe 50 ENTER # 32
muxstrobe 51 BACKSPACE # 33
muxstrobe 52 PAD_0 # 34
muxstrobe 53 PAD_1 # 35
muxstrobe 54 PAD_4 # 36
muxstrobe 55 PAD_7 # 37
muxstrobe 56 PAD_PLUS # 38
muxstrobe 57 UNASSIGNED # 39
muxstrobe 58 PAD_MINUS # 3A
muxstrobe 59 SCROLL_LOCK # 3B
muxstrobe 60 PAD_PERIOD # 3C
muxstrobe 61 PAD_3 # 3D
muxstrobe 62 PAD_6 # 3E
muxstrobe 63 PAD_9 # 3F
muxstrobe 64 EUROPE_2 # 40 \ | (ISO)
muxstrobe 65 A # 41
muxstrobe 66 Q # 42
muxstrobe 67 2 # 43
muxstrobe 68 LALT # 44
muxstrobe 69 UNASSIGNED # 45
muxstrobe 70 UNASSIGNED # 46
muxstrobe 71 1 # 47
muxstrobe 72 F7 # 48
muxstrobe 73 F5 # 49
muxstrobe 74 F3 # 4A
muxstrobe 75 F1 # 4B
muxstrobe 76 F8 # 4C
muxstrobe 77 F6 # 4D
muxstrobe 78 F4 # 4E
muxstrobe 79 F2 # 4F
muxstrobe 80 F10 # 50
muxstrobe 81 UNASSIGNED # 51
muxstrobe 82 UNASSIGNED # 52
muxstrobe 83 UNASSIGNED # 53
muxstrobe 84 F9 # 54
muxstrobe 85 UNASSIGNED # 55
muxstrobe 86 UNASSIGNED # 56
muxstrobe 87 UNASSIGNED # 57
muxstrobe 88 LSHIFT # 58
muxstrobe 89 LCTRL # 59
muxstrobe 90 TAB # 5A
muxstrobe 91 ESC # 5B
muxstrobe 92 UNASSIGNED # 5C
muxstrobe 93 UNASSIGNED # 5D
muxstrobe 94 UNASSIGNED # 5E
muxstrobe 95 UNASSIGNED # 5F
end
I guess you could call this 'working like a normal keyboard' - I just put a basic keymap onto it and typed this :DCode: [Select]matrix
scanrate 1
debounce 1
blocking 0
muxstrobe_port PB6:0
sense_delay 1
muxstrobe_gate -PD1
sense_polarity 1
sense PD0
muxstrobe 0 Z # 00
muxstrobe 1 S # 01
muxstrobe 2 W # 02
muxstrobe 3 3 # 03
muxstrobe 4 X # 04
muxstrobe 5 D # 05
muxstrobe 6 E # 06
muxstrobe 7 4 # 07
muxstrobe 8 C # 08
muxstrobe 9 F # 09
muxstrobe 10 R # 0A
muxstrobe 11 5 # 0B
muxstrobe 12 V # 0C
muxstrobe 13 G # 0D
muxstrobe 14 T # 0E
muxstrobe 15 6 # 0F
muxstrobe 16 B # 10
muxstrobe 17 H # 11
muxstrobe 18 Y # 12
muxstrobe 19 7 # 13
muxstrobe 20 N # 14
muxstrobe 21 J # 15
muxstrobe 22 U # 16
muxstrobe 23 8 # 17
muxstrobe 24 PAD_2 # 18
muxstrobe 25 PAD_5 # 19
muxstrobe 26 PAD_8 # 1A
muxstrobe 27 NUM_LOCK # 1B
muxstrobe 28 M # 1C
muxstrobe 29 K # 1D
muxstrobe 30 I # 1E
muxstrobe 31 9 # 1F
muxstrobe 32 COMMA # 20
muxstrobe 33 L # 21
muxstrobe 34 O # 22
muxstrobe 35 0 # 23
muxstrobe 36 PERIOD # 24
muxstrobe 37 SEMICOLON # 25
muxstrobe 38 P # 26
muxstrobe 39 MINUS # 27
muxstrobe 40 SLASH # 28
muxstrobe 41 QUOTE # 29
muxstrobe 42 LEFT_BRACE # 2A
muxstrobe 43 EQUAL # 2B
muxstrobe 44 SPACE # 2C
muxstrobe 45 RSHIFT # 2D
muxstrobe 46 BACKSLASH # 2E # ~ (ISO)
muxstrobe 47 RIGHT_BRACE # 2F
muxstrobe 48 CAPS_LOCK # 30
muxstrobe 49 PAD_ASTERIX # 31
muxstrobe 50 ENTER # 32
muxstrobe 51 BACKSPACE # 33
muxstrobe 52 PAD_0 # 34
muxstrobe 53 PAD_1 # 35
muxstrobe 54 PAD_4 # 36
muxstrobe 55 PAD_7 # 37
muxstrobe 56 PAD_PLUS # 38
muxstrobe 57 UNASSIGNED # 39
muxstrobe 58 PAD_MINUS # 3A
muxstrobe 59 SCROLL_LOCK # 3B
muxstrobe 60 PAD_PERIOD # 3C
muxstrobe 61 PAD_3 # 3D
muxstrobe 62 PAD_6 # 3E
muxstrobe 63 PAD_9 # 3F
muxstrobe 64 EUROPE_2 # 40 \ | (ISO)
muxstrobe 65 A # 41
muxstrobe 66 Q # 42
muxstrobe 67 2 # 43
muxstrobe 68 LALT # 44
muxstrobe 69 UNASSIGNED # 45
muxstrobe 70 UNASSIGNED # 46
muxstrobe 71 1 # 47
muxstrobe 72 F7 # 48
muxstrobe 73 F5 # 49
muxstrobe 74 F3 # 4A
muxstrobe 75 F1 # 4B
muxstrobe 76 F8 # 4C
muxstrobe 77 F6 # 4D
muxstrobe 78 F4 # 4E
muxstrobe 79 F2 # 4F
muxstrobe 80 F10 # 50
muxstrobe 81 UNASSIGNED # 51
muxstrobe 82 UNASSIGNED # 52
muxstrobe 83 UNASSIGNED # 53
muxstrobe 84 F9 # 54
muxstrobe 85 UNASSIGNED # 55
muxstrobe 86 UNASSIGNED # 56
muxstrobe 87 UNASSIGNED # 57
muxstrobe 88 LSHIFT # 58
muxstrobe 89 LCTRL # 59
muxstrobe 90 TAB # 5A
muxstrobe 91 ESC # 5B
muxstrobe 92 UNASSIGNED # 5C
muxstrobe 93 UNASSIGNED # 5D
muxstrobe 94 UNASSIGNED # 5E
muxstrobe 95 UNASSIGNED # 5F
end
Controller (http://geekhack.org/index.php?topic=50437.0) firmware is now up, and handles this keyboard :D
Controller (http://geekhack.org/index.php?topic=50437.0) firmware is now up, and handles this keyboard :D
Did somebody try it on 3178 display terminal keyboards ?
Controller (http://geekhack.org/index.php?topic=50437.0) firmware is now up, and handles this keyboard :D
Did somebody try it on 3178 display terminal keyboards ?
I doubt it, yet!
edit: moved full reply (http://geekhack.org/index.php?topic=50437.msg1107578#msg1107578) to my controller thread ;D
I probably won't be able to get any photos up for a while. But I got it all cleaned up and am typing on it right now. Thanks to Soarer for posting his firmware. :)
With it's legs fully extended this thing is a monster!!!!
Controller (http://geekhack.org/index.php?topic=50437.0) firmware is now up, and handles this keyboard :D
Did somebody try it on 3178 display terminal keyboards ?
I doubt it, yet!
edit: moved full reply (http://geekhack.org/index.php?topic=50437.msg1107578#msg1107578) to my controller thread ;D
They do have a chip, it's not the same as 5291, right ?
Try replacing the bolt that holds the PCB to the backplate - that makes an important ground connection!
This has worked!
From 5291_MaintenanceLibrary.pdf (http://www.retrocomputing.eu/documents/5291_MaintenanceLibrary.pdf) p38:
(Attachment Link)
(Attachment Link)
In a useful format, that's:Code: [Select]D1 1 20 Ground
(missing pin) -Strobe
D2 Ground
D3 D0
(unused) (unused)
(unused) (unused)
(unused) Frame Ground
D4 +5V
D5 Ground
D6 10 11 Output
Only one Ground pin needs to be connected, I used pin 12.
Big thanks to soarer and xavierblack, I have had this 5291 for a couple of years and only just stumbled upon this thread.
I never thought I would see the day when I could actually see output from this keyboard, absolutely amazing.
Definitely a strange typing experience, spacebar is so large, feels so much nicer than an model M.
Still going strong after 27 years,
From 5291_MaintenanceLibrary.pdf (http://www.retrocomputing.eu/documents/5291_MaintenanceLibrary.pdf) p38:
(Attachment Link)
(Attachment Link)
In a useful format, that's:Code: [Select]D1 1 20 Ground
(missing pin) -Strobe
D2 Ground
D3 D0
(unused) (unused)
(unused) (unused)
(unused) Frame Ground
D4 +5V
D5 Ground
D6 10 11 Output
Only one Ground pin needs to be connected, I used pin 12.
A How To Do this Guide: