File tree Expand file tree Collapse file tree 3 files changed +312
-265
lines changed Expand file tree Collapse file tree 3 files changed +312
-265
lines changed Original file line number Diff line number Diff line change 1212; """
1313; for row, keys in enumerate(kbmap.strip().splitlines()):
1414; for mask, key in enumerate(keys.split()):
15- ; mask = 0x80 >> mask
16- ; print(f"key{key:<12} = ${row:02x}{mask:02x}")
15+ ; print(f"key{key:<12} = ${((8 - row) << 3) | mask:02X}")
1716
17+ .macro readKeyDirect keyMap
18+ lda keyboardInput + (keyMap >> 3 )
19+ and # $ 80 >> (keyMap & 7 )
20+ .endmacro
1821
19- ; 2 bytes to represent each key
20- ; hi byte is an index into keyboardInput and represents row
21- ; lo byte is a bitmask to single out key's bit
22- ; result is not zero if key pressed
22+ .macro expandKeyRow keyMap
23+ . byte keyMap >> 3
24+ .endmacro
2325
24- .macro readKeyDirect keyMap
25- lda keyboardInput + >keyMap
26- and #<keyMap
26+ .macro expandKeyMask keyMap
27+ . byte $ 80 >> (keyMap & 7 )
2728.endmacro
2829
29- keyF1 = $ 0710
30- keyF2 = $ 0610
31- keyF3 = $ 0510
32- keyF4 = $ 0410
33- keyF5 = $ 0310
34- keyF6 = $ 0210
35- keyF7 = $ 0110
36- keyF8 = $ 0010
3730
38- keyStop = $ 0008
39- keyReturn = $ 0020
31+ ; each key is represented by a byte 0RRRRCCC
32+ ; row is 0-8 and is inverted
33+ ; col is byte position from left to right
34+
35+ keyF1 = $ 0B
36+ keyF2 = $ 13
37+ keyF3 = $ 1B
38+ keyF4 = $ 23
39+ keyF5 = $ 2B
40+ keyF6 = $ 33
41+ keyF7 = $ 3B
42+ keyF8 = $ 43
43+
44+ keyStop = $ 44
45+ keyReturn = $ 42
4046
41- keyShiftRight = $ 0002
42- keyShiftLeft = $ 0701
47+ keyShiftRight = $ 46
48+ keyShiftLeft = $ 0F
4349
44- keyESC = $ 0720
45- keyCTR = $ 0780
46- keyGRPH = $ 0702
50+ keyESC = $ 0A
51+ keyCTR = $ 08
52+ keyGRPH = $ 0E
4753
48- keyCLR_HOME = $ 0810
49- keyINS = $ 0808
50- keyDEL = $ 0804
54+ keyCLR_HOME = $ 03
55+ keyINS = $ 04
56+ keyDEL = $ 05
5157
52- keyUp = $ 0820
53- keyLeft = $ 0880
54- keyRight = $ 0840
55- keyDown = $ 0801
58+ keyUp = $ 02
59+ keyLeft = $ 00
60+ keyRight = $ 01
61+ keyDown = $ 07
5662
57- keyCloseBracket = $ 0080 ; ]
58- keyOpenBracket = $ 0040 ; [
59- keyYen = $ 0004 ; ¥
60- keySemicolon = $ 0180 ; ;
61- keyColon = $ 0140 ; :
62- keyatSign = $ 0120 ; @
63- keyCaret = $ 0108 ; ^
64- keySlash = $ 0102 ; /
65- keyUnderscore = $ 0101 ; _
66- keyComma = $ 0202 ; ,
67- keyPeriod = $ 0201 ; .
68- keyDash = $ 0104 ; -
69- keyKana = $ 0001
63+ keyCloseBracket = $ 40 ; ]
64+ keyOpenBracket = $ 41 ; [
65+ keyYen = $ 45 ; ¥
66+ keySemicolon = $ 38 ; ;
67+ keyColon = $ 39 ; :
68+ keyatSign = $ 3A ; @
69+ keyCaret = $ 3C ; ^
70+ keySlash = $ 3E ; /
71+ keyUnderscore = $ 3F ; _
72+ keyComma = $ 36 ; ,
73+ keyPeriod = $ 37 ; .
74+ keyDash = $ 3D ; -
75+ keyKana = $ 47
7076
71- keySpace = $ 0802
77+ keySpace = $ 06
7278
73- key0 = $ 0208
74- key1 = $ 0704
75- key2 = $ 0708
76- key3 = $ 0608
77- key4 = $ 0508
78- key5 = $ 0504
79- key6 = $ 0408
80- key7 = $ 0404
81- key8 = $ 0308
82- key9 = $ 0304
79+ key0 = $ 34
80+ key1 = $ 0D
81+ key2 = $ 0C
82+ key3 = $ 14
83+ key4 = $ 1C
84+ key5 = $ 1D
85+ key6 = $ 24
86+ key7 = $ 25
87+ key8 = $ 2C
88+ key9 = $ 2D
8389
84- keyA = $ 0680
85- keyB = $ 0401
86- keyC = $ 0502
87- keyD = $ 0580
88- keyE = $ 0604
89- keyF = $ 0501
90- keyG = $ 0440
91- keyH = $ 0480
92- keyI = $ 0320
93- keyJ = $ 0380
94- keyK = $ 0280
95- keyL = $ 0240
96- keyM = $ 0301
97- keyN = $ 0302
98- keyO = $ 0220
99- keyP = $ 0204
100- keyQ = $ 0740
101- keyR = $ 0540
102- keyS = $ 0640
103- keyT = $ 0520
104- keyU = $ 0340
105- keyV = $ 0402
106- keyW = $ 0620
107- keyX = $ 0601
108- keyY = $ 0420
109- keyZ = $ 0602
90+ keyA = $ 10
91+ keyB = $ 27
92+ keyC = $ 1E
93+ keyD = $ 18
94+ keyE = $ 15
95+ keyF = $ 1F
96+ keyG = $ 21
97+ keyH = $ 20
98+ keyI = $ 2A
99+ keyJ = $ 28
100+ keyK = $ 30
101+ keyL = $ 31
102+ keyM = $ 2F
103+ keyN = $ 2E
104+ keyO = $ 32
105+ keyP = $ 35
106+ keyQ = $ 09
107+ keyR = $ 19
108+ keyS = $ 11
109+ keyT = $ 1A
110+ keyU = $ 29
111+ keyV = $ 26
112+ keyW = $ 12
113+ keyX = $ 17
114+ keyY = $ 22
115+ keyZ = $ 16
You can’t perform that action at this time.
0 commit comments