]> git.friedersdorff.com Git - max/tmk_keyboard.git/blob - converter/pc98_usb/README
pc98_usb: Add prebuilt firmware files
[max/tmk_keyboard.git] / converter / pc98_usb / README
1 PC98 to USB keyboard protocol converter
2 =======================================
3 Target MCU is ATMega32u2 but other USB capable AVR will also work.
4
5
6 Connector
7 ---------
8 On host/converter:
9
10     8Pin mini DIN
11        ___ ___
12       /  |_|  \
13      / 8  7  6 \
14     | 5    4  3 |
15      \_ 2   1 _/
16        \_____/
17      (receptacle)
18
19
20 Wiring: You can change this with editing config.h.
21
22     Pin mini DIN        MCU
23     ----------------------------------
24     1  ~RST(TXD)        PD3
25     2   GND             GND
26     3  ~RDY             PD4
27     4   RXD             PD2
28     5  ~RTY             PD1
29     6   NC
30     7   NC
31     8   5V              VCC
32
33
34
35
36 Protocol
37 --------
38 Signal: Asynchronous, Positive logic, 19200baud, Least bit first
39 Frame format: 1-Start bit(Lo), 8-Data bits, Odd-Parity, 1-Stop bit
40
41
42
43 Prebilt Firmware
44 ----------------
45 Prebuilt firmware HEX files are available under 'binary' directory.
46
47
48
49 Build Firmware
50 --------------
51 Just use 'make' to bild firmware for TMK PC98 converter(ATMega32u2).
52
53     $ make clean
54     $ make
55
56 To flash firmware run this command
57
58     $ make dfu
59
60 then push button on converter to flash firmware.
61
62 If you are using ATMega32u4 based board use following commands to get firmware HEX file.
63
64     $ make -f Makefile.32u4 clean
65     $ make -f Makefile.32u4
66
67 And flash it on your board using specific program method.
68
69
70
71 PC98 Scan Codes
72 ---------------
73     ,---. ,---. ,------------------------. ,------------------------. ,------------------------.
74     |Stp| |Cpy| | F1 | F2 | F3 | F4 | F5 | | F6 | F7 | F8 | F9 | F10| | F11| F12| F13| F14| F15|
75     `---' `---' `------------------------' `------------------------' `------------------------'
76     ,-------------------------------------------------------------. ,-------.  ,---------------.
77     | Esc|  1|  2|  3|  4|  5|  6|  7|  8|  9|  0|  -|  =|JPY|Bspc| |Ins|Del|  |Hom|Hlp|  -|  /|
78     |-------------------------------------------------------------| |-------|  |---------------|
79     | Tab  |  Q|  W|  E|  R|  T|  Y|  U|  I|  O|  P|  [|  ]|      | |RUp|RDn|  |  7|  8|  9|  *|
80     |-------------------------------------------------------`Enter| |-------|  |---------------|
81     |Ctl|Cap|  A|  S|  D|  F|  G|  H|  J|  K|  L|  ;|  '|  \|     | |  Up   |  |  4|  5|  6|  +|
82     |-------------------------------------------------------------| |-------|  |---------------|
83     | Shift   |  Z|  X|  C|  V|  B|  N|  M|  ,|  .|  /| RO| Shift | |Lef|Rig|  |  1|  2|  3|  =|
84     `-------------------------------------------------------------' |-------|  |---------------|
85        |Kana|Win|GRP|NFER|       Space        |XFER| ^2|Win| ^3|    | Down  |  |  0|  ,|  .| ^1|
86        `-------------------------------------------------------'    `-------'  `---------------'
87     ^1: Enter on keypad is identical to Enter on alphanumeric portion
88     ^2: ALT on DIGITAL WAVE Dboard while Menu on PC-9821 keyboard
89     ^3: HOME on PC98XL keyboard
90     ^4: CAPS and Kana are locking keys, either mechanically or by firmware emulation
91
92
93     ,---. ,---. ,------------------------. ,------------------------. ,------------------------.
94     | 60| | 61| | 62 | 63 | 64 | 65 | 66 | | 67 | 68 | 69 | 6A | 6B | | 52 | 53 | 54 | 55 | 56 |
95     `---' `---' `------------------------' `------------------------' `------------------------'
96     ,-------------------------------------------------------------. ,-------.  ,---------------.
97     | 00 | 01| 02| 03| 04| 05| 06| 07| 08| 09| 0A| 0B| 0C| 0D| 0E | | 38| 39|  | 3E| 3F| 4D| 41|
98     |-------------------------------------------------------------| |-------|  |---------------|
99     |  0F  | 10| 11| 12| 13| 14| 15| 16| 17| 18| 19| 1A| 1B|      | | 36| 37|  | 42| 43| 44| 45|
100     |-------------------------------------------------------`  1C | |-------|  |---------------|
101     | 74| 71| 1D| 1E| 1F| 20| 21| 22| 23| 24| 25| 26| 27| 28|     | |   3A  |  | 46| 47| 48| 49|
102     |-------------------------------------------------------------| |-------|  |---------------|
103     |   70    | 29| 2A| 2B| 2C| 2D| 2E| 2F| 30| 31| 32| 33| 70/7D | | 3B| 3C|  | 4A| 4B| 4C| 4D|
104     `-------------------------------------------------------------' |-------|  |---------------|
105        | 72 | 77| 73| 51 |        34          | 35 | 79| 78| 5E|    |   3D  |  | 4E| 4F| 50| 1C|
106        `-------------------------------------------------------'    `-------'  `---------------'
107     5E: HOME on PC98XL keyboard
108     79: ALT on DIGITAL WAVE Dboard
109     77,78,79: Left Win, right Win and Application on PC-9821 keyboard
110
111
112
113 PC98 keyboard commands
114 ----------------------
115 http://www.webtech.co.jp/company/doc/undocumented_mem/io_kb.txt
116
117 response from keyboard:
118     FAh: ACK
119     FCh: NACK
120
121 Inhibit repeating key:
122     9Ch, 70h
123
124 LED control:
125     9Dh 7xh
126
127     second byte:
128     0111 xxxx
129          |||`- NumLock
130          ||`-- ?
131          |`--- CapsLock
132          `---- Kana
133
134 Enabling Win and App key on PC-9821 keyboard:
135     95h, 03h
136
137
138
139 Raku Raku keyboard support
140 --------------------------
141 NEC PC-9801-98-S02 - raku raku keyboard:
142 https://deskthority.net/photos-f62/nec-pc-9801-98-s02-t5212.html
143
144 To build firmware for the keyboard
145
146     $ make KEYMAP=rakuraku clean
147     $ make KEYMAP=rakuraku
148     $ make KEYMAP=rakuraku dfu
149
150 Its scan code map is very different from standard types. This is not tested.
151
152
153
154 Other PC98 converter projects and resource
155 ------------------------------------------
156 PC-9800シリーズ テクニカルデータブック HARDWARE 編 1993年 p139, p343
157 https://archive.org/stream/PC9800TechnicalDataBookHARDWARE1993/PC-9800TechnicalDataBook_HARDWARE1993#page/n151
158 https://archive.org/stream/PC9800TechnicalDataBookHARDWARE1993/PC-9800TechnicalDataBook_HARDWARE1993#page/n355
159
160 PC98 to USB
161 http://davy.nyacom.net/kbd98usb/
162
163 PC98 to PS/2
164 http://www.tsp.ne.jp/~sawada/mago/c_gka98at.htm
165 http://www.tsp.ne.jp/~sawada/mago/src/gka98at.asm
166
167 scan code:
168 http://ixsvr.dyndns.org/usb2pc98
169
170
171
172 NOTES
173 -----
174 ### Tested on
175 - PC-9801V
176 - DIGITAL WAVE Dboard
177
178
179 ### RDY
180 PC98 host keeps RDY line high to prevent keyboard from sending data while processing.
181
182 https://archive.org/stream/PC9800TechnicalDataBookHARDWARE1993/PC-9800TechnicalDataBook_HARDWARE1993#page/n359
183
184 PC-9801V keyboard requires RDY pulse as acknowledgement from host, it doesn't next data without this. Dboard doens't need this.
185
186
187 ### Inhibit key repeating
188 The command(9Ch, 70h) works with Raku Raku keybaord but not with Dboard.
189
190 ### LED indicater
191 Dboard has LEDs but replys with FA to 9D command but ignore it. The LED indicates just its internal states. Dboard replays with FA to 9C command but it doesn't seem to understand repeat setting.
192
193 PC-9801V has no LEDs and doesn't accept LED command. It replys with 9D to 9D command. PC-9801V doesn't accept repeat setting command. It replys with 9C to 9C command.
194
195
196 ## PC-9801V
197 Note that you have to connect this keyboard with converter before plug in USB port. It seems this keyboard requires for host to send any command before starting to send scan code.