|
1 | | -; Assisted with the following python: |
2 | | -; kbmap = """ |
3 | | -; CloseBracket OpenBracket RETURN F8 STOP Yen SHIFTRight KANA |
4 | | -; Semicolon Colon atSign F7 Caret Dash Slash Underscore |
5 | | -; K L O F6 0 P Comma Period |
6 | | -; J U I F5 8 9 N M |
7 | | -; H G Y F4 6 7 V B |
8 | | -; D R T F3 4 5 C F |
9 | | -; A S W F2 3 E Z X |
10 | | -; CTR Q ESC F1 2 1 GRPH SHIFTLeft |
11 | | -; Left Right UP CLR_HOME INS DEL Space Down |
12 | | -; """ |
13 | | -; for row, keys in enumerate(kbmap.strip().splitlines()): |
14 | | -; for mask, key in enumerate(keys.split()): |
15 | | -; print(f"key{key:<12} = ${((8 - row) << 3) | mask:02X}") |
16 | | - |
17 | | -.macro readKeyDirect keyMap |
18 | | - lda keyboardInput + (keyMap >> 3) |
19 | | - and #$80 >> (keyMap & 7) |
20 | | -.endmacro |
21 | | - |
22 | | -.macro expandKeyRow keyMap |
23 | | - .byte keyMap >> 3 |
24 | | -.endmacro |
25 | | - |
26 | | -.macro expandKeyMask keyMap |
27 | | - .byte $80 >> (keyMap & 7) |
28 | | -.endmacro |
29 | | - |
30 | | - |
31 | 1 | ; each key is represented by a byte 0RRRRCCC |
32 | | -; row is 0-8 and is inverted |
| 2 | +; row is 0-8 |
33 | 3 | ; col is byte position from left to right |
34 | 4 |
|
35 | 5 | keyF1 = $0B |
@@ -113,3 +83,27 @@ keyW = $12 |
113 | 83 | keyX = $17 |
114 | 84 | keyY = $22 |
115 | 85 | keyZ = $16 |
| 86 | + |
| 87 | + |
| 88 | +KB_DISABLE = $00 |
| 89 | +KB_INIT = $05 |
| 90 | +KB_COL_0 = $04 |
| 91 | +KB_COL_1 = $06 |
| 92 | +KB_MASK = $1E |
| 93 | + |
| 94 | +UPDOWN = BUTTON_UP | BUTTON_DOWN |
| 95 | +LEFTRIGHT = BUTTON_LEFT | BUTTON_RIGHT |
| 96 | + |
| 97 | +.macro readKeyDirect keyMap |
| 98 | +; not zero - key is pressed |
| 99 | + lda kbRawInput + (keyMap >> 3) |
| 100 | + and #$80 >> (keyMap & 7) |
| 101 | +.endmacro |
| 102 | + |
| 103 | +.macro expandKeyRow keyMap |
| 104 | + .byte keyMap >> 3 |
| 105 | +.endmacro |
| 106 | + |
| 107 | +.macro expandKeyMask keyMap |
| 108 | + .byte $80 >> (keyMap & 7) |
| 109 | +.endmacro |
0 commit comments