AY-3-4592 keyboard ROM matrix mapping ===================================== Inverted data bus Y0 Y1 Y2 Y3 Y4 Y5 Y6 Y7 +-------+-------+-------+-------+-------+-------+-------+-------+ C | 000 | 000 | 000 | 000 | 000 | 000 | 000 | 331 1 | X0 S | 000 | 000 | 000 | 000 | 000 | 000 | 000 | 321 ! | - | 3FE | 3FD | 3FC | 3FB | 3FA | 3F9 | 3F8 | 331 1 | | SHIFT | SHIFT | SLOCK | CTRL | ALPHA | X15 | D10 | | +-------+-------+-------+-------+-------+-------+-------+-------+ C | 21B | 332 2 | 332 2 | 217 | 211 | 213 | 201 | 21A | X1 S | 21B | 240 @ | 322 " | 257 W | 251 Q | 253 S | 241 A | 25A Z | - | 21B | 332 2 | 332 2 | 277 w | 271 q | 273 s | 261 a | 27A z | +-------+-------+-------+-------+-------+-------+-------+-------+ C | 280 | 334 4 | 333 3 | 212 | 205 | 204 | 218 | 203 | X2 S | 280 | 324 $ | 323 # | 252 R | 245 E | 244 D | 258 X | 243 C | - | 280 | 334 4 | 333 3 | 272 r | 265 e | 264 d | 278 x | 263 c | +-------+-------+-------+-------+-------+-------+-------+-------+ C | 281 | 282 | 335 % | 214 | 206 | 207 | 216 | 202 | X3 S | 281 | 282 | 325 % | 254 T | 246 F | 247 G | 256 V | 242 B | - | 281 | 282 | 335 5 | 274 t | 266 f | 267 g | 276 v | 262 b | +-------+-------+-------+-------+-------+-------+-------+-------+ C | 283 | 337 7 | 336 6 | 219 | 208 | 20E | 336 6 | 320 | X4 S | 283 | 326 & | 326 & | 259 Y | 248 H | 24E N | 33C < | 320 | - | 283 | 337 7 | 336 6 | 279 y | 268 h | 26E n | 336 6 | 320 | +-------+-------+-------+-------+-------+-------+-------+-------+ C | 284 | 338 8 | 337 7 | 215 | 20A | 20B | 20D | 32C , | X5 S | 284 | 32A * | 327 ' | 255 U | 24A J | 24B K | 24D M | 33C < | - | 284 | 338 8 | 337 7 | 275 u | 26A j | 26B k | 26D m | 32C , | +-------+-------+-------+-------+-------+-------+-------+-------+ C | 285 | 339 9 | 338 8 | 209 | 20F | 20B | 20C | 20D | X6 S | 285 | 328 ( | 328 ( | 249 I | 24F O | 25B [ | 24C L | 25D ] | - | 285 | 339 9 | 338 8 | 269 i | 26F o | 26B k | 26C l | 26D m | +-------+-------+-------+-------+-------+-------+-------+-------+ C | 286 | 330 0 | 329 9 | 287 | 210 | 33B ; | 20C | 32E . | X7 S | 286 | 329 ) | 329 ) | 287 | 250 P | 33A : | 25C \ | 33E > | - | 286 | 330 0 | 339 9 | 287 | 270 p | 33B ; | 26C l | 32E . | +-------+-------+-------+-------+-------+-------+-------+-------+ C | 32D - | 20E | 210 | 21B | 327 ' | 33B ; | 32F / | 288 | X8 S | 25F _ | 25E ^ | 240 @ | 25D ] | 322 " | 32B + | 33F ? | 288 | - | 32B - | 26E n | 270 p | 25B [ | 327 ' | 33B ; | 32F / | 288 | +-------+-------+-------+-------+-------+-------+-------+-------+ C | 33D = | 33A : | 289 | 21C | 28A | 21B | 20D | 21D | X9 S | 32B + | 32A * | 289 | 37C | | 28A | 37B { | 20D | 37D } | - | 33D = | 33A : | 289 | 25C \ | 28A | 25B [ | 20D | 25D ] | +-------+-------+-------+-------+-------+-------+-------+-------+ C | 37F | 28B | 21F | 28C | 20A | 200 | 21E | 25F _ | X10 S | 37F | 28B | 25F _ | 28C | 20A | 25C \ | 37E ~ | 33D = | - | 37F | 28B | 32D - | 28C | 20A | 240 @ | 25E ^ | 25F _ | +-------+-------+-------+-------+-------+-------+-------+-------+ C | 28D | 209 | 32D - | 28E | 20F | 25B [ | 208 | 29F | X11 S | 28D | 209 | 33D = | 28E | 25F _ | 25D ] | 208 | 29F | - | 28D | 209 | 32D - | 28E | 26F o | 25B [ | 208 | 29F | +-------+-------+-------+-------+-------+-------+-------+-------+ C | 28F | 337 7 | 20B | 290 | 334 4 | 32C , | 331 1 | 330 0 | X12 S | 28F | 337 7 | 20B | 290 | 334 4 | 32C , | 331 1 | 330 0 | - | 28F | 337 7 | 20B | 290 | 334 4 | 32C , | 331 1 | 330 0 | +-------+-------+-------+-------+-------+-------+-------+-------+ C | 291 | 339 9 | 338 8 | 335 5 | 336 6 | 332 2 | 333 3 | 32E . | X13 S | 291 | 339 9 | 338 8 | 335 5 | 336 6 | 332 2 | 333 3 | 32E . | - | 291 | 339 9 | 338 8 | 335 5 | 336 6 | 332 2 | 333 3 | 32E . | +-------+-------+-------+-------+-------+-------+-------+-------+ D0-D7: ASCII code D8: 0=letter key, external CapsLock can modify code if D6=1 1=non-letter key, CapsLock must not modify D9: 0=no action 1=active keypress The key matrix allows mapping for: * bit-paired keyboard with keys, eg 6& 7' 8( 9) etc. * typewriter keyboard with keys, eg 6^ 7& 8* 9( 0) etc. * teletype keyboard with keys, eg K[ L\ M] N^ O_ P@ etc. * calculator numberpad with number keys not modified by Shift * keys that return &80-&91 and &9F to allow additional special keys, such as function keys.