123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182 |
- IBM 4704 Keyboard
- =================
- IBM capacitive switch models:
- 6019273 Model 100 50-key (grid layout) http://kishy.ca/?p=894
- 6019284 Model 200 62-key Alpha(60% layout) http://kishy.ca/?p=894
- 6019303 Model 300 77-key Expanded Alpha http://deskthority.net/photos-f62/ibm-6019303-t8502.html
- 6020218 Model 400 107-key Full key http://kishy.ca/?p=894
-
- Alps switch(vintage Green) models:
- 5954339 Japanese 102-key http://deskthority.net/post87127.html#p87127
- 6112883 Japanese 102-key http://geekhack.org/index.php?topic=52888.msg1194489#msg1194489
- 6112884 Japanese 102-key http://geekhack.org/index.php?topic=50437.msg1193047#msg1193047
- 6341739 Chinese 102-key http://geekhack.org/index.php?topic=52888.msg1176566#msg1176566
-
- Resourse
- --------
- The IBM 4704: lots of pictures and info
- http://kishy.dyndns.org/?p=648#more-648
-
- Brochure:
- http://ed-thelen.org/comp-hist/IBM-ProdAnn/4700.pdf
-
-
-
- IBM 4704 Keyboard Protocol
- ==========================
- On powering up keyboard sends keyboard ID; A3h for 6019284(62-key), for example.
- After that the keyboard enters FC command mode and waits for parameter data from host
- so that it doesn't send any scancode until you send 'FF'(End of FC command mode).
-
- Keyboard ID
- -------------------------------
- Model 100 50-key A2h
- Model 200 62-key A3h
- Model 300 77-key A4h
- Model 400 107-key A5h
- Japanese/Chinese 102-key A6h
-
-
- Connector
- ---------
- Keyboard Plug from front
-
- DSUB-9
- -------------
- \ N 2 3 4 5 /
- \ N N N N /
- ---------
- 2 GND
- 3 VCC 5V
- 4 DATA
- 5 CLOCK
- N No connection/No pin.
-
-
- Keyboard to Host
- ----------------
- Data bits are LSB first and Pairty is odd. Clock has around 60us high and 30us low part.
-
- ____ __ __ __ __ __ __ __ __ __ _______
- Clock \_____/ \_/ \_/ \_/ \_/ \_/ \_/ \_/ \_/ \_/
- ____ ____ ____ ____ ____ ____ ____ ____ ____ ____
- Data ____/ X____X____X____X____X____X____X____X____X____X________
- Start 0 1 2 3 4 5 6 7 P Stop
-
- Start bit: can be long as 300-350us.
- Inhibit: Pull Data line down to inhibit keyboard to send.
- Timing: Host reads bit while Clock is hi.(rising edge)
- Stop bit: Keyboard pulls down Data line to lo after 9th clock.
-
-
- Host to Keyboard
- ----------------
- Data bits are LSB first and Pairty is odd. Clock has around 60us high and 30us low part.
-
- ____ __ __ __ __ __ __ __ __ __ ________
- Clock \______/ \_/ \_/ \_/ \_/ \_/ \_/ \_/ \_/ \_/
- ^ ____ ____ ____ ____ ____ ____ ____ ____ ____ ____ ___
- Data ____|__/ X____X____X____X____X____X____X____X____X____X \___
- | Start 0 1 2 3 4 5 6 7 P Stop
- Request by host
-
- Start bit: can be long as 300-350us.
- Request: Host pulls Clock line down to request to send a command.
- Timing: After Request keyboard pull up Data and down Clock line to low for start bit.
- After request host release Clock line once Data line becomes hi.
- Host wirtes a bit while Clock is hi and Keyboard reads while low.
- Stop bit: Host releases or pulls up Data line to hi after 9th clock and waits for keybaord pull down the line to lo.
-
-
- Scancodes
- ---------
- Keyboard doesn't send Break code for all keys except for Alt by default.
-
- 6019284 62-key:
- ,-----------------------------------------------------------.
- | `| 1| 2| 3| 4| 5| 6| 7| 8| 9| 0| -| =|???|BS |
- |-----------------------------------------------------------|
- |Tab | Q| W| E| R| T| Y| U| I| O| P| ¢| \| PD2|
- |-----------------------------------------------------------|
- |Ctrl | A| S| D| F| G| H| J| K| L| ;| '| {}| PD3|
- |-----------------------------------------------------------|
- |Shif| <>| Z| X| C| V| B| N| M| ,| ,| /|???|Shift |
- |-----------------------------------------------------------|
- |Reset|blk|Alt | Space |Alt |blk|Enter|
- `-----------------------------------------------------------'
- +----------+---------------------+----------+----------+
- |` 00|PD1 04|Caps 20|LShift 30|Reset 31|
- |1 18|q 05|a 21|<> 3E|Rblank 41|
- |2 19|w 06|s 22|z 32|Alt 3F|
- |3 1A|e 13|d 23|x 33|Space 40|
- |4 10|r 14|f 24|c 34|Alt 3F|
- |5 11|t 15|g 25|v 35|Lblank 42|
- |6 12|y 16|h 26|b 36|Enter 2F|
- |7 08|u 17|j 27|n 37| |
- |8 09|i 01|k 28|m 38| |
- |9 0A|o 02|l 29|, 39| |
- |0 0F|p 03|; 2A|. 3A| |
- |- 1F|¢ 1B|' 2B|/ 3B| |
- |= 0D|\ 1C|{} 2C|??? 3C| |
- |??? 0C|PD2 1D|PD3 2D|RShift 3D| |
- |BS 0E| | | | |
- +----------+---------------------+----------+----------+
- Bit7 is 'press flag' which set 1 on press and 0 on release when break code is enabled.
-
- NOTE: When break code is enabled the key sends scancode with setting 7th bit on press
- and without it on release. That is, '`' sends 80h on press and 00h on release.
-
-
- Keyboard command
- ----------------
- Keyboard accepts these commands from host.
-
- Description Entry point
- -----------------------------------------------------------
- FF Soft Reset 0008h
- FE Resend 00e8h
- FD Buzzer(emits a short beep) 00edh
- FC Set Key Flag 00f6h
- FB Soft Reset 0008h
- FA Reset 0000h
-
-
- Keyboard response
- -----------------
- Keyobard sends these bytes to host.
-
- Description Entry point
- -----------------------------------------------------------
- FE Overflow(key event/receive data) 00c5h, 0346h
- Memory test error 0224h
- FD Command out of bound 00d8h
- Key out of bound
- 7E Read/Parity error in receive from host 00bch
-
-
- Set Key Flag command(FC)
- ------------------------
- After 'Power on Reset' firmware enters this command mode and waits for data from host,
- so that you don't need to send 'FC' and it doesn't send any scancode until you send 'FF'.
-
- Data sent from host:
-
- bit: 7 6 ... 0
- en | |
- | `-----`--- scan code
- `------------- enable bit(0: enable repeat, 1: enable break)
-
- 00-79 Enable repeat
- 80-F9 Enable break(FA-FF are used as other commands, see above.)
- FE Resend(011ah) no need to use
- FF End(0114h) exits FC command mode.
-
- Response from keyboard:
- FD Out of bound - Invalid scancode
- -- OK - No response means that command is accepted.
-
- Examples:
- To enable break code of all keys.
-
- FC 80 81 ... F7 FF
|