📄 keyscan.asl
字号:
+ 1 ;|---------------------------------------|
+ 2 ;|Program name : KeyScan.asm |
+ 3 ;|Use bady: 83137 |
+ 4 ;|Programer: Alton |
+ 5 ;| |
+ 6 ;|---------------------------------------|
+ 7
+ 8 .area Keyscan(code)
0080 9 .OnOff EQU 0x80
0066 10 .Power EQU 0x66
0004 11 .DataLine2 EQU 00000100b
007F 12 .DataLine7 EQU 01111111b
0083 13 .D7D1D0 EQU 10000011b
0080 14 .Line7 EQU 10000000b
+ 15 ;===========================================
+ 16
+B 00 01
0000 17 .KeyScan::
0000 F3 00 18 lda #0h
0002 FC 28 19 sta PP
0004 F9 00 20 sta0 .KeyC
0006 F9 00 21 sta0 .KeyD
0008 F3 04 22 lda #.DataLine2 ;Start DataLine data
000A F9 00 23 sta0 .KeyBuf1
000C F3 FF 24 lda #0ffh
000E FC 58 25 sta PRT17
0010 F9 00 26 sta0 .KeyC
+ 27
0012 28 .StartCheck:
0012 F5 00 29 lda0 .KeyBuf1
0014 EB FF 30 xora #0ffh
0016 FC 32 31 sta PRTD
0018 A7 7F 32 cmpe #.DataLine7 ;End DataLine data
001A 06 00 8C 33 brz .CheckKey
001D 20 00 31 34 call .ScanLine
0020 F5 00 35 lda0 .KeyBuf1
0022 7E 36 rolc
0023 CB FE 37 anda #~01h
0025 F9 00 38 sta0 .KeyBuf1
0027 F5 00 39 lda0 .KeyD
0029 A7 00 40 cmpe #0h
002B 07 00 8C 41 brnz .CheckKey
002E 02 00 12 42 br .StartCheck
+ 43
0031 44 .ScanLine:
0031 F0 58 45 lda PRT17
0033 A7 FF 46 cmpe #0ffh
0035 06 00 41 47 brz .CheckD7D0D1
0038 F9 00 48 sta0 .KeyC
003A F5 00 49 lda0 .KeyBuf1
003C EB FF 50 xora #0ffh
003E FD 00 51 sta .KeyD
0040 24 52 ret
0041 53 .CheckD7D0D1:
0041 F0 32 54 lda PRTD
0043 CB 83 55 anda #.D7D1D0
0045 A7 83 56 cmpe #.D7D1D0
0047 06 00 8B 57 brz .EndLine
004A A7 01 58 cmpe #01h
004C 06 00 6F 59 brz .PD01
004F A7 02 60 cmpe #02h
0051 06 00 64 61 brz .PD0
0054 A7 81 62 cmpe #81h
0056 06 00 6F 63 brz .PD01
0059 A7 82 64 cmpe #82h
005B 06 00 64 65 brz .PD0
005E A7 03 66 cmpe #03h
0060 06 00 7C 67 brz .PD07
0063 24 68 ret
0064 69 .PD0:
0064 F3 FF 70 lda #0ffh
0066 F9 00 71 sta0 .KeyC
0068 F5 00 72 lda0 .KeyBuf1
006A EB FF 73 xora #0ffh
006C F9 00 74 sta0 .KeyD
006E 24 75 ret
006F 76 .PD01:
006F F3 7F 77 lda #7fh
0071 F9 00 78 sta0 .KeyD
0073 F5 00 79 lda0 .KeyBuf1
0075 EB FF 80 xora #0ffh
0077 CB FD 81 anda #~02h
0079 F9 00 82 sta0 .KeyC
007B 24 83 ret
007C 84 .PD07:
007C F5 00 85 lda0 .KeyBuf1
007E A7 40 86 cmpe #40h
0080 07 00 8B 87 brnz .EndLine
0083 F3 FF 88 lda #0ffh
0085 F9 00 89 sta0 .KeyC
0087 F3 66 90 lda #066h
0089 F9 00 91 sta0 .KeyD
008B 92 .EndLine:
008B 24 93 ret
+ 94
+ 95 ;-----------
008C 96 .CheckKey:
+ 97
008C F5 00 98 lda0 .KeyC
008E A7 FF 99 cmpe #0ffh
0090 07 00 AF 100 brnz .CheckPd
0093 F5 00 101 lda0 .KeyD
0095 A7 FF 102 cmpe #0ffh
0097 06 00 D7 103 brz .NoKeyCode
009A A7 00 104 cmpe #0h
009C 06 00 D7 105 brz .NoKeyCode
009F A7 66 106 cmpe #.Power
00A1 07 00 AF 107 brnz .CheckPd
00A4 F3 00 108 lda #0h
00A6 F9 00 109 sta0 .KeyC
00A8 F3 66 110 lda #.Power
00AA F9 00 111 sta0 .KeyD
00AC 02 00 BE 112 br .CkRepeaterkey
00AF 113 .CheckPd:
00AF F5 00 114 lda0 .KeyC
00B1 EB FF 115 xora #0ffh
00B3 F9 00 116 sta0 .KeyC
00B5 F5 00 117 lda0 .KeyD
00B7 EB FF 118 xora #0ffh
00B9 F9 00 119 sta0 .KeyD
00BB 20 01 04 120 call .TransCode
00BE 121 .CkRepeaterkey:
00BE F3 00 122 lda #0h
00C0 FC 28 123 sta PP
00C2 F5 00 124 lda0 .KeyC
00C4 D9 00 125 ora .KeyD
00C6 F9 00 126 sta0 .KeyD
00C8 F5 00 127 lda0 .KeyBuf
00CA A9 00 128 suba .KeyD
00CC 07 00 E8 129 brnz .SaveKey
00CF F5 00 130 lda0 .KeyCnt
00D1 1F 131 inca
00D2 F9 00 132 sta0 .KeyCnt
00D4 02 00 E8 133 br .SaveKey
00D7 134 .NoKeyCode:
00D7 F3 00 135 lda #>.Count
00D9 FC 28 136 sta PP
00DB F3 00 137 lda #0h
00DD FD 00 138 sta .Count
00DF F9 00 139 sta0 .KeyCodeBuf
00E1 F9 00 140 sta0 .KeyCnt
00E3 F9 00 141 sta0 .KeyBuf
00E5 02 00 FF 142 br .EndScan
00E8 143 .SaveKey:
00E8 F5 00 144 lda0 .KeyD
00EA F9 00 145 sta0 .KeyBuf
00EC F5 00 146 lda0 .KeyCnt
00EE CB 0F 147 anda #0fh
00F0 A7 03 148 cmpe #03h ;check three times
00F2 05 00 FF 149 brnc .EndScan
00F5 F3 00 150 lda #0h
00F7 F9 00 151 sta0 .KeyBuf
00F9 F9 00 152 sta0 .KeyCnt
00FB F5 00 153 lda0 .KeyD
00FD F9 00 154 sta0 .KeyCodeBuf
+ 155
00FF 156 .EndScan:
00FF F3 00 157 lda #0h
0101 FC 28 158 sta PP
0103 24 159 ret
+ 160 ;===========================================
0104 161 .TransCode:
0104 162 .SftL0:
0104 F5 00 163 lda0 .KeyC
0106 A7 00 164 cmpe #0h
0108 07 01 10 165 brnz .SftL1
010B F3 00 166 lda #0h
010D 02 01 B2 167 br .SftR0
0110 168 .SftL1:
0110 A7 01 169 cmpe #01h
0112 07 01 1A 170 brnz .SftL2
0115 F3 80 171 lda #80h
0117 02 01 B2 172 br .SftR0
011A 173 .SftL2:
011A A7 02 174 cmpe #02h
011C 07 01 24 175 brnz .SftL3
011F F3 70 176 lda #70h
0121 02 01 B2 177 br .SftR0
0124 178 .SftL3:
0124 A7 04 179 cmpe #04h
0126 07 01 2E 180 brnz .SftL4
0129 F3 60 181 lda #60h
012B 02 01 B2 182 br .SftR0
012E 183 .SftL4:
012E A7 10 184 cmpe #10h
0130 07 01 38 185 brnz .SftL5
0133 F3 40 186 lda #40h
0135 02 01 B2 187 br .SftR0
0138 188 .SftL5:
0138 A7 20 189 cmpe #20h
013A 07 01 42 190 brnz .SftL6
013D F3 30 191 lda #30h
013F 02 01 B2 192 br .SftR0
0142 193 .SftL6:
0142 A7 40 194 cmpe #40h
0144 07 01 4C 195 brnz .SftL7
0147 F3 20 196 lda #20h
0149 02 01 B2 197 br .SftR0
014C 198 .SftL7:
014C A7 80 199 cmpe #80h
014E 07 01 56 200 brnz .SftL8
0151 F3 10 201 lda #10h
0153 02 01 B2 202 br .SftR0
0156 203 .SftL8:
0156 A7 08 204 cmpe #08h
0158 07 01 60 205 brnz .SftL9
015B F3 50 206 lda #50h
015D 02 01 B2 207 br .SftR0
0160 208 .SftL9:
0160 A7 06 209 cmpe #06h
0162 07 01 71 210 brnz .SftLA
0165 F5 00 211 lda0 .KeyD
0167 A7 80 212 cmpe #.Line7
0169 07 01 F2 213 brnz .DualKey
016C F3 20 214 lda #20h
016E 02 01 B2 215 br .SftR0
0171 216 .SftLA:
0171 A7 0A 217 cmpe #0ah
0173 07 01 82 218 brnz .SftLB
0176 F5 00 219 lda0 .KeyD
0178 A7 80 220 cmpe #.Line7
017A 07 01 F2 221 brnz .DualKey
017D F3 30 222 lda #30h
017F 02 01 B2 223 br .SftR0
0182 224 .SftLB:
0182 A7 12 225 cmpe #12h
0184 07 01 93 226 brnz .SftLC
0187 F5 00 227 lda0 .KeyD
0189 A7 80 228 cmpe #.Line7
018B 07 01 F2 229 brnz .DualKey
018E F3 40 230 lda #40h
0190 02 01 B2 231 br .SftR0
0193 232 .SftLC:
0193 A7 22 233 cmpe #22h
0195 07 01 A4 234 brnz .SftLD
0198 F5 00 235 lda0 .KeyD
019A A7 80 236 cmpe #.Line7
019C 07 01 F2 237 brnz .DualKey
019F F3 50 238 lda #50h
01A1 02 01 B2 239 br .SftR0
01A4 240 .SftLD:
01A4 A7 42 241 cmpe #042h
01A6 07 01 B2 242 brnz .SftR0
01A9 F5 00 243 lda0 .KeyD
01AB A7 80 244 cmpe #.Line7
01AD 07 01 F2 245 brnz .DualKey
01B0 F3 10 246 lda #10h
01B2 247 .SftR0:
01B2 F9 00 248 sta0 .KeyC
01B4 F5 00 249 lda0 .KeyD
01B6 A7 04 250 cmpe #04h
01B8 07 01 C0 251 brnz .SftR4
01BB F3 02 252 lda #02h
01BD 02 01 EF 253 br .PosCD
01C0 254 .SftR4:
01C0 A7 08 255 cmpe #08h
01C2 07 01 CA 256 brnz .SftR5
01C5 F3 03 257 lda #03h
01C7 02 01 EF 258 br .PosCD
01CA 259 .SftR5:
01CA A7 10 260 cmpe #10h
01CC 07 01 D4 261 brnz .SftR6
01CF F3 04 262 lda #04h
01D1 02 01 EF 263 br .PosCD
01D4 264 .SftR6:
01D4 A7 20 265 cmpe #20h
01D6 07 01 DE 266 brnz .SftR7
01D9 F3 05 267 lda #05h
01DB 02 01 EF 268 br .PosCD
01DE 269 .SftR7:
01DE A7 40 270 cmpe #40h
01E0 07 01 E8 271 brnz .SftR8
01E3 F3 06 272 lda #06h
01E5 02 01 EF 273 br .PosCD
01E8 274 .SftR8:
01E8 A7 80 275 cmpe #80h
01EA 07 01 EF 276 brnz .PosCD
01ED F3 07 277 lda #07h
+ 278
01EF 279 .PosCD:
01EF F9 00 280 sta0 .KeyD
01F1 24 281 ret
01F2 282 .DualKey:
01F2 F3 00 283 lda #0h
01F4 F9 00 284 sta0 .KeyD
01F6 F9 00 285 sta0 .KeyC
01F8 24 286 ret
+ 287
+ 288
+ 289
+ 290
+ 291
+ 292
+ 293
+ 294
+ 295
+
+Symbol Table
+
+ 1 .CheckD7D0D1 0041 R
+ 1 .CheckKey 008C R
+ 1 .CheckPd 00AF R
+ 1 .CkRepeaterkey 00BE R
+ .Count **** GX
+ .D7D1D0 = 0083
+ .DataLine2 = 0004
+ .DataLine7 = 007F
+ 1 .DualKey 01F2 R
+ 1 .EndLine 008B R
+ 1 .EndScan 00FF R
+ .KeyBuf **** GX
+ .KeyBuf1 **** GX
+ .KeyC **** GX
+ .KeyCnt **** GX
+ .KeyCodeBuf **** GX
+ .KeyD **** GX
+ 1 .KeyScan 0000 GR
+ .Line7 = 0080
+ 1 .NoKeyCode 00D7 R
+ .OnOff = 0080
+ 1 .PD0 0064 R
+ 1 .PD01 006F R
+ 1 .PD07 007C R
+ 1 .PosCD 01EF R
+ .Power = 0066
+ 1 .SaveKey 00E8 R
+ 1 .ScanLine 0031 R
+ 1 .SftL0 0104 R
+ 1 .SftL1 0110 R
+ 1 .SftL2 011A R
+ 1 .SftL3 0124 R
+ 1 .SftL4 012E R
+ 1 .SftL5 0138 R
+ 1 .SftL6 0142 R
+ 1 .SftL7 014C R
+ 1 .SftL8 0156 R
+ 1 .SftL9 0160 R
+ 1 .SftLA 0171 R
+ 1 .SftLB 0182 R
+ 1 .SftLC 0193 R
+ 1 .SftLD 01A4 R
+ 1 .SftR0 01B2 R
+ 1 .SftR4 01C0 R
+ 1 .SftR5 01CA R
+ 1 .SftR6 01D4 R
+ 1 .SftR7 01DE R
+ 1 .SftR8 01E8 R
+ 1 .StartCheck 0012 R
+ 1 .TransCode 0104 R
+
+
+Area Table
+
+ 0 . size 0 flags 0
+ 1 Keyscan size 1F9 flags 1
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -