📄 getkeycode.asl
字号:
+ 1 .area getkeydata(data,abs)
+ 2 .org 0x12a
+B 00 01
012A 3 .TPPTemp:: .ds 1
012B 4 .TPHTemp:: .ds 1
012C 5 .TPLTemp:: .ds 1
012D 6 .SFlag:: .ds 1
012E 7 .FunctFlag::
012E 8 .DelayCnt: .ds 1
0066 9 .AC EQU 0x66
0066 10 .ON EQU 0x66
0017 11 .OFF EQU 0x17
0016 12 .MODE EQU 0x16
0012 13 .SHIFT EQU 0x12
0013 14 .ALPHA EQU 0x13
0014 15 .LEFT EQU 0x14
0015 16 .RIGHT EQU 0x15
0044 17 .HYP EQU 0x44
0052 18 .STO EQU 0x52
0053 19 .RCL EQU 0x53
0006 20 .ENTER EQU 0x06
00E9 21 .SinH EQU 0xe9
00F0 22 .CosH EQU 0xf0
00F1 23 .TanH EQU 0xf1
00F2 24 .ASinH EQU 0xf2
00F3 25 .ACosH EQU 0xf3
00F4 26 .ATanH EQU 0xf4
+ 27
+ 28
+ 29
+ 30
+ 31
+ 32 ;SFlag 7 6 5 4 3 2 1 0
+ 33 ;On: 1 cal AC RCL STO EQU Sft Alf Hpy
+ 34 ;Off:0
+ 35
+ 36 ;SetFlag 7 6 5 4 3 2 1 0
+ 37 ; %+ cma disp pt num dms drg rnd
+ 38
+ 39 .area getkeycode(code)
+B 00 02
0000 40 .GetKeyCode::
+ 41
0000 F3 01 42 lda #01h
0002 FC 28 43 sta PP
0004 F5 00 44 lda0 .KeyPos
0006 A7 00 45 cmpe #0h
0008 06 04 1A 46 brz .EndGetKeyCode
000B A7 66 47 cmpe #.AC
000D 06 00 C1 48 brz .PowerOn
0010 A7 17 49 cmpe #.OFF
0012 06 01 3E 50 brz .PowerOff
0015 A7 14 51 cmpe #.LEFT
0017 06 00 37 52 brz .ChangKEY
001A A7 15 53 cmpe #.RIGHT
001C 06 00 37 54 brz .ChangKEY
001F F5 00 55 lda0 ErrorFlag
0021 A7 00 56 cmpe #0h
0023 07 04 1A 57 brnz .EndGetKeyCode
0026 F5 00 58 lda0 .KeyPos
0028 A7 06 59 cmpe #.ENTER
002A 06 01 44 60 brz .EQU
002D A7 52 61 cmpe #.STO
002F 06 01 63 62 brz .STOset
0032 A7 53 63 cmpe #.RCL
0034 06 01 A5 64 brz .RCLset
+ 65
0037 66 .ChangKEY:
+ 67
0037 F1 2D 68 lda .SFlag
0039 CB 07 69 anda #07h
003B A7 00 70 cmpe #0h
003D 06 00 54 71 brz .CkStoRcl
0040 A7 01 72 cmpe #01h
0042 06 03 84 73 brz .HypAddNor
0045 A7 02 74 cmpe #02h
0047 06 03 0B 75 brz .AlfAddNor
004A A7 04 76 cmpe #04h
004C 06 02 7D 77 brz .SftAddNor
004F A7 05 78 cmpe #05h
0051 06 03 CF 79 brz .HypAddSft
0054 80 .CkStoRcl:
0054 F1 2D 81 lda .SFlag
0056 CB 30 82 anda #30h
0058 07 00 6F 83 brnz .ChkStoRcl
+ 84
005B 85 .NomlKey::
005B F5 00 86 lda0 .KeyPos
005D A7 12 87 cmpe #.SHIFT
005F 06 01 E4 88 brz .SetShift
0062 A7 13 89 cmpe #.ALPHA
0064 06 02 2F 90 brz .SetAlpha
0067 A7 44 91 cmpe #.HYP
0069 06 02 3E 92 brz .SetHyp
006C 02 00 7B 93 br .KeyTrans
006F 94 .ChkStoRcl:
006F F5 00 95 lda0 .KeyPos
0071 A7 12 96 cmpe #.SHIFT
0073 06 01 E4 97 brz .SetShift
0076 A7 13 98 cmpe #.ALPHA
0078 06 02 2F 99 brz .SetAlpha
007B 100 .KeyTrans:
007B F3 01 101 lda #01h
007D FC 28 102 sta PP
007F F5 00 103 lda0 .KeyPos
0081 FD 01 104 sta .M_bcdbuf+1
0083 F3 00 105 lda #0h
0085 FD 00 106 sta .M_bcdbuf
0087 20 00 00 107 call .Bcd2Hex
008A F1 01 108 lda .M_bcdbuf+1
008C F9 00 109 sta0 .KeyPos
008E F3 01 110 lda #01h
0090 FC 28 111 sta PP
0092 F3 00 112 lda #^(.NormalKey)
0094 FD 2A 113 sta .TPPTemp
0096 F3 07 114 lda #@(.NormalKey)
0098 FD 2B 115 sta .TPHTemp
009A F3 19 116 lda #<(.NormalKey)
009C FD 2C 117 sta .TPLTemp
009E F5 00 118 lda0 .KeyPos
00A0 89 2C 119 adda .TPLTemp
00A2 FD 2C 120 sta .TPLTemp
00A4 05 00 AC 121 brnc .NoCarry
00A7 F1 2B 122 lda .TPHTemp
00A9 1F 123 inca
00AA FD 2B 124 sta .TPHTemp
00AC 125 .NoCarry:
00AC F1 2A 126 lda .TPPTemp
00AE FC 54 127 sta TPP
00B0 F1 2B 128 lda .TPHTemp
00B2 FC 02 129 sta TPH
00B4 F1 2C 130 lda .TPLTemp
00B6 FC 01 131 sta TPL
00B8 F8 132 ldv
00B9 F9 00 133 sta0 .KeyPos
00BB 20 05 2A 134 call .CheckClrData
00BE 02 04 1A 135 br .EndGetKeyCode
+ 136
00C1 137 .PowerOn:
+ 138
00C1 F3 01 139 lda #01h
00C3 FC 28 140 sta PP
00C5 F5 00 141 lda0 ErrorFlag
00C7 A7 00 142 cmpe #0h
00C9 06 00 D2 143 brz 1$
00CC F1 2D 144 lda .SFlag
00CE CB F7 145 anda #~08h
00D0 FD 2D 146 sta .SFlag
+ 147 1$:
00D2 F3 00 148 lda #0h
00D4 FD 00 149 sta .CalcFlag
00D6 FD 00 150 sta .SRFlag
00D8 FD 00 151 sta Insetflag
00DA F9 00 152 sta0 ErrorFlag
00DC F1 2D 153 lda .SFlag
00DE CB 04 154 anda #04h
00E0 07 00 37 155 brnz .ChangKEY
00E3 F9 00 156 sta0 ErrorFlag
00E5 F1 2D 157 lda .SFlag
00E7 CB C8 158 anda #~37h
00E9 DB 40 159 ora #40h
00EB FD 2D 160 sta .SFlag
00ED CB 08 161 anda #08h
00EF A7 08 162 cmpe #08h
00F1 06 00 F7 163 brz .PwrEditMode
00F4 20 00 00 164 call .ClrP2Data
00F7 165 .PwrEditMode:
00F7 20 00 00 166 call .ClrZ
00FA F3 00 167 lda #>.SetFlag
00FC FC 28 168 sta PP
00FE F1 00 169 lda .SetFlag
0100 CB C0 170 anda #~3fh ;ClrAllStatus
0102 FD 00 171 sta .SetFlag
0104 F3 01 172 lda #01h
0106 F9 00 173 sta0 .ModeFlag
0108 F1 00 174 lda BasenFlag ;BaseN 0308
010A CB F0 175 anda #0f0h
010C FD 00 176 sta BasenFlag ;
010E 20 00 00 177 call ClrAlldisp
+ 178 ;lda #01h
0111 F3 05 179 lda #00000101b ;bit 2 1=B type
0113 FC 38 180 sta LCDC
0115 F3 00 181 lda #0h
0117 F9 00 182 sta0 .KeyPos
+ 183 ;;;;;;;formula AC
0119 F3 01 184 lda #>.SFlag
011B FC 28 185 sta PP
011D F1 2D 186 lda .SFlag
011F DB 40 187 ora #40h
0121 CB 7F 188 anda #~80h
0123 FD 2D 189 sta .SFlag
0125 F5 00 190 lda0 .FormulaFlag
0127 A7 01 191 cmpe #01h
0129 07 04 1A 192 brnz .EndGetKeyCode
012C 20 00 00 193 call .Formula2Input
012F F3 00 194 lda #0h
0131 F9 00 195 sta0 .FormulaFlag
0133 F3 00 196 lda #>.ForLDP
0135 FC 28 197 sta PP
0137 F1 00 198 lda .ForLDP
0139 F9 00 199 sta0 .DataDP
013B 02 04 1A 200 br .EndGetKeyCode
013E 201 .PowerOff:
+ 202 ;lda #0ffh
+ 203 ;sta SP
013E 20 00 00 204 call .Sleep
0141 02 04 1A 205 br .EndGetKeyCode
0144 206 .EQU:
+ 207
0144 F3 01 208 lda #01h
0146 FC 28 209 sta PP
0148 F1 2D 210 lda .SFlag
014A CB 40 211 anda #40h
014C 07 01 56 212 brnz .SetKey0
+ 213
014F F3 00 214 lda #0h
0151 FD 00 215 sta Insetflag
0153 02 00 37 216 br .ChangKEY
0156 217 .SetKey0:
0156 F3 00 218 lda #0h
0158 F9 00 219 sta0 .KeyPos
015A F1 2D 220 lda .SFlag
015C CB C8 221 anda #~37h
015E FD 2D 222 sta .SFlag
0160 02 04 1A 223 br .EndGetKeyCode
+ 224 ;-------------------------------------------
+ 225 ;;;Judge mode choice enable ;if mdoe enable can't set sto or rcl
0163 226 .STOset:
0163 F3 01 227 lda #01h
0165 FC 28 228 sta PP
0167 F1 00 229 lda .SetFlag
0169 CB 02 230 anda #02h
016B 07 04 1A 231 brnz .EndGetKeyCode
016E F1 00 232 lda BasenFlag
0170 CB 0F 233 anda #0fh
0172 07 04 1A 234 brnz .EndGetKeyCode
0175 F5 00 235 lda0 .ModeFlag
0177 CB F0 236 anda #0f0h
0179 07 04 1A 237 brnz .EndGetKeyCode
017C F1 2D 238 lda .SFlag
017E CB 30 239 anda #30h
0180 A7 20 240 cmpe #20h
0182 06 01 8A 241 brz .DosetSto
0185 A7 10 242 cmpe #10h
0187 06 01 95 243 brz .ResetSto
+ 244
018A 245 .DosetSto:
+ 246
018A F1 2D 247 lda .SFlag
018C CB C8 248 anda #~37h
018E DB 10 249 ora #10h
0190 FD 2D 250 sta .SFlag
0192 02 01 9F 251 br .EndSTOset
0195 252 .ResetSto:
0195 F1 2D 253 lda .SFlag
0197 CB E8 254 anda #~17h
0199 FD 2D 255 sta .SFlag
019B F3 00 256 lda #0h
019D F9 00 257 sta0 .KeyPos
+ 258
019F 259 .EndSTOset:
019F 20 05 2A 260 call .CheckClrData
01A2 02 04 1A 261 br .EndGetKeyCode
+ 262
+ 263 ;-------------------------------------------
+ 264 ;;;Judge mode choice enable ;if mdoe enable can't set sto or rcl
01A5 265 .RCLset:
01A5 F3 01 266 lda #01h
01A7 FC 28 267 sta PP
01A9 F1 00 268 lda .SetFlag
01AB CB 02 269 anda #02h
01AD 07 04 1A 270 brnz .EndGetKeyCode
01B0 F1 00 271 lda BasenFlag
01B2 CB 0F 272 anda #0fh
01B4 07 04 1A 273 brnz .EndGetKeyCode
01B7 F5 00 274 lda0 .ModeFlag
01B9 CB F0 275 anda #0f0h
01BB 07 04 1A 276 brnz .EndGetKeyCode
01BE F1 2D 277 lda .SFlag
01C0 CB 30 278 anda #30h
01C2 A7 10 279 cmpe #10h
01C4 06 01 CC 280 brz .DosetRcl
01C7 A7 20 281 cmpe #20h
01C9 06 01 D7 282 brz .ResetRcl
+ 283
01CC 284 .DosetRcl:
+ 285
01CC F1 2D 286 lda .SFlag
01CE CB C8 287 anda #~37h
01D0 DB 20 288 ora #20h
01D2 FD 2D 289 sta .SFlag
01D4 02 01 E1 290 br .EndRCLset
01D7 291 .ResetRcl:
01D7 F1 2D 292 lda .SFlag
01D9 CB D8 293 anda #~27h
01DB FD 2D 294 sta .SFlag
01DD F3 00 295 lda #0h
01DF F9 00 296 sta0 .KeyPos
+ 297
+ 298
01E1 299 .EndRCLset:
+ 300 ;call .CheckClrData
01E1 02 04 1A 301 br .EndGetKeyCode
+ 302 ;-------------------------------------------
01E4 303 .SetShift:
01E4 F1 2D 304 lda .SFlag
01E6 CB 07 305 anda #07h
01E8 A7 00 306 cmpe #0h
01EA 06 02 22 307 brz .SetSF4
01ED A7 01 308 cmpe #01h
01EF 06 02 13 309 brz .ADDhpy
01F2 A7 02 310 cmpe #02h
01F4 07 02 06 311 brnz .Sft
01F7 F1 2D 312 lda .SFlag
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -