📄 postfixvalume.asl
字号:
+ 1 ;/subrutine name : PostfixValume.asm
+ 2 ;/user bady : HE
+ 3 ;/fast clock : 4Mhz
+ 4 ;/slow clock : 32768khz
+ 5 ;/programer : Alton
0002 6 .STPP EQU 0x02
0002 7 .INPP EQU 0x02
+B 00 01
+ 8 .area .PosValData(data,abs)
+ 9 .org 0x7b
007B 10 .PsValDP:: .ds 1
007C 11 .IndexDP:: .ds 1
007D 12 .P3DP:: .ds 1
007E 13 .P2DP:: .ds 1
007F 14 .FunDP:: .ds 1
+B 00 02
+ 15 .area .PosVal(code)
0000 16 .PosValue::
0000 F3 00 17 lda #0h ;Clear ErrorCnt
0002 F9 00 18 sta0 .ErrorCnt
0004 F5 00 19 lda0 .DataDP
0006 A7 00 20 cmpe #0h
0008 06 01 B3 21 brz .NoDataInp
000B F3 00 22 lda #0h
000D F9 00 23 sta0 .FinFlag
000F 20 0A 32 24 call .ClrSK
0012 20 08 4C 25 call .PushSkData
0015 F3 F0 26 lda #0f0h
0017 F9 7E 27 sta0 .P2DP
0019 F3 50 28 lda #50h
001B F9 7D 29 sta0 .P3DP
001D F3 00 30 lda #0h
001F F9 7C 31 sta0 .IndexDP
0021 FC 21 32 sta DP
0023 F3 03 33 lda #03h
0025 FC 28 34 sta PP
0027 F2 35 lda i
0028 F9 7B 36 sta0 .PsValDP
002A 37 .PosValueHead:
002A F3 00 38 lda #0h
002C F9 7C 39 sta0 .IndexDP
+ 40
002E 41 .CalcPsVal:
002E F5 7C 42 lda0 .IndexDP
0030 FC 21 43 sta DP
0032 F3 03 44 lda #03h
0034 FC 28 45 sta PP
0036 F2 46 lda i
0037 F9 7B 47 sta0 .PsValDP
0039 F2 48 lda i
003A A7 F0 49 cmpe #0f0h
003C 04 00 7F 50 brc .CKnextIS0
003F A7 00 51 cmpe #0h
0041 06 00 86 52 brz .PsValEnd
0044 A7 FF 53 cmpe #0ffh
0046 06 00 77 54 brz .SchNext
0049 55 .CalcPosfixAns:
0049 20 01 CE 56 call .CalcVal
004C F5 00 57 lda0 .ErrorCnt
004E 1F 58 inca
004F F9 00 59 sta0 .ErrorCnt
0051 A7 80 60 cmpe #80h
0053 07 00 5A 61 brnz .GetNextVal
0056 F3 04 62 lda #04h
0058 F9 00 63 sta0 ErrorFlag
005A 64 .GetNextVal:
005A F5 00 65 lda0 ErrorFlag
005C A7 00 66 cmpe #0h
005E 07 01 CD 67 brnz .EndPos
0061 F5 00 68 lda0 .FinFlag
0063 A7 00 69 cmpe #0h
0065 06 00 77 70 brz .SchNext
0068 20 0A 5F 71 call .MoveP3DP
006B 20 0A AB 72 call .ReSetP3ST
006E F3 00 73 lda #0h
0070 F9 7C 74 sta0 .IndexDP
0072 F9 00 75 sta0 .FinFlag
0074 02 00 2E 76 br .CalcPsVal
0077 77 .SchNext:
0077 F5 7C 78 lda0 .IndexDP
0079 1F 79 inca
007A F9 7C 80 sta0 .IndexDP
007C 02 00 2E 81 br .CalcPsVal
007F 82 .CKnextIS0:
007F 18 83 incdp
0080 F2 84 lda i
0081 A7 00 85 cmpe #0h
0083 07 00 49 86 brnz .CalcPosfixAns
+ 87
0086 88 .PsValEnd:
0086 20 0A 5F 89 call .MoveP3DP
0089 20 0A AB 90 call .ReSetP3ST
008C F3 03 91 lda #03h
008E FC 28 92 sta PP
0090 F3 01 93 lda #01h
0092 FC 21 94 sta DP
+ 95
0094 96 .KeepCK:
0094 F2 97 lda i
0095 A7 00 98 cmpe #0h
0097 06 00 A3 99 brz .EndPosValue
009A A7 FF 100 cmpe #0ffh
009C 07 00 2A 101 brnz .PosValueHead
009F 18 102 incdp
00A0 02 00 94 103 br .KeepCK
00A3 104 .EndPosValue:
+ 105 ;;;;;;;SDmode--------------------------
00A3 F3 01 106 lda #01h
00A5 FC 28 107 sta PP
00A7 F1 00 108 lda StateFlag
00A9 CB 40 109 anda #40h
00AB A7 40 110 cmpe #40h
00AD 07 01 01 111 brnz .EndValCalc
00B0 F5 00 112 lda0 .KeyPos
00B2 A7 B5 113 cmpe #0b5h
00B4 06 00 BC 114 brz .StoreSD
00B7 A7 DF 115 cmpe #0dfh
00B9 07 01 01 116 brnz .EndValCalc
00BC 117 .StoreSD:
00BC F3 02 118 lda #02h
00BE FC 28 119 sta PP
00C0 F3 00 120 lda #0h
00C2 FC 21 121 sta DP
00C4 F2 122 lda i
00C5 A7 B0 123 cmpe #0b0h
00C7 06 01 01 124 brz .EndValCalc
00CA F5 00 125 lda0 .Buf4
00CC A7 B0 126 cmpe #0b0h
00CE 06 01 01 127 brz .EndValCalc
00D1 20 00 00 128 call .Z_trans_I
00D4 20 00 00 129 call .Z_trans_X
00D7 20 16 36 130 call .ChkOverExp50
00DA F5 00 131 lda0 ErrorFlag
00DC A7 00 132 cmpe #0h
00DE 07 01 CD 133 brnz .EndPos
00E1 20 00 00 134 call .I_trans_X
00E4 20 00 00 135 call .X_trans_LRX
00E7 F5 00 136 lda0 .KeyPos
00E9 A7 DF 137 cmpe #0dfh
00EB 07 00 FB 138 brnz .SD_DTmode
00EE 20 00 00 139 call .ClrX
00F1 F3 02 140 lda #02h
00F3 F9 06 141 sta0 OperandX+6
00F5 20 15 53 142 call .SimeCounter
00F8 02 01 01 143 br .EndValCalc
00FB 144 .SD_DTmode:
00FB 20 00 00 145 call SD_Prepare
00FE 20 00 00 146 call .I_trans_Z
+ 147
+ 148 ;---------------------------
0101 149 .EndValCalc:
0101 F5 00 150 lda0 .DataDP
0103 A7 01 151 cmpe #01h
0105 07 01 16 152 brnz 1$
0108 F3 02 153 lda #02h
010A FC 28 154 sta PP
010C F3 00 155 lda #0h
010E FC 21 156 sta DP
0110 F2 157 lda i
0111 A7 B6 158 cmpe #0b6h ;mcl
0113 06 01 19 159 brz .BaseN_Mode_Check
+ 160 1$:
0116 20 00 00 161 call .Z_trans_I ;I=ANS
0119 162 .BaseN_Mode_Check:
0119 F3 00 163 lda #>StateFlag
011B FC 28 164 sta PP
011D F1 00 165 lda StateFlag
011F CB 08 166 anda #08h
0121 06 01 82 167 brz .ChkFormula
0124 20 00 00 168 call .DelPoint
0127 20 00 00 169 call .Z_trans_X
012A 20 00 00 170 call .X_trans_Buf
012D F3 00 171 lda #>BasenFlag
012F FC 28 172 sta PP
0131 F1 00 173 lda BasenFlag
0133 CB F0 174 anda #0f0h
0135 A7 80 175 cmpe #80h ;DEC Mode
0137 06 01 79 176 brz .Dec2Dec
013A A7 40 177 cmpe #40h ;Hex Mode
013C 06 01 4C 178 brz .Dec2Hex
013F A7 20 179 cmpe #20h ;Bin Mode
0141 06 01 5B 180 brz .Dec2Bin
0144 A7 10 181 cmpe #10h
0146 06 01 6A 182 brz .Dec2Oct ;Oct Mode
0149 02 01 CD 183 br .EndPos
014C 184 .Dec2Hex::
+ 185
014C 20 00 00 186 call Base_Dec2Hex
014F 20 00 00 187 call .Z_trans_X
0152 20 00 00 188 call CheckHexLimit
0155 20 00 00 189 call .X_trans_Z
0158 02 01 CD 190 br .EndPos
015B 191 .Dec2Bin::
+ 192
015B 20 00 00 193 call Base_Dec2Bin
015E 20 00 00 194 call .Z_trans_X
0161 20 00 00 195 call CheckBinLimit
0164 20 00 00 196 call .X_trans_Z
0167 02 01 CD 197 br .EndPos
016A 198 .Dec2Oct::
+ 199
016A 20 00 00 200 call Base_Dec2Oct
016D 20 00 00 201 call .Z_trans_X
0170 20 00 00 202 call CheckOctLimit
0173 20 00 00 203 call .X_trans_Z
0176 02 01 CD 204 br .EndPos
0179 205 .Dec2Dec::
0179 20 00 00 206 call CheckDecLimit
017C 20 00 00 207 call .X_trans_Z
017F 02 01 CD 208 br .EndPos
+ 209 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
0182 210 .ChkFormula:
0182 F3 00 211 lda #>.SFlag
0184 FC 28 212 sta PP
0186 F1 00 213 lda .SFlag
0188 CB 80 214 anda #80h
018A 06 01 9B 215 brz .2$
018D F5 00 216 lda0 .ForData
018F F9 00 217 sta0 .KeyPos
0191 20 00 00 218 call .STOReg
0194 F3 00 219 lda #0h
0196 F9 00 220 sta0 .StoFlag
0198 02 01 CD 221 br .NomalMode
019B 222 .2$:
019B F5 00 223 lda0 .FormulaFlag ;sto formula value
019D A7 01 224 cmpe #01h
019F 07 01 CD 225 brnz .NomalMode
01A2 F3 02 226 lda #02h
01A4 FC 28 227 sta PP
01A6 F3 00 228 lda #0h
01A8 FC 21 229 sta DP
01AA F2 230 lda i
01AB F9 00 231 sta0 .KeyPos
01AD 20 00 00 232 call .STOReg
01B0 02 01 CD 233 br .EndPos
+ 234 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
01B3 235 .NoDataInp:
01B3 F3 00 236 lda #>StateFlag
01B5 FC 28 237 sta PP
01B7 F1 00 238 lda StateFlag
01B9 CB 80 239 anda #80h
01BB 06 01 CD 240 brz .EndPos
01BE F5 00 241 lda0 .KeyPos
01C0 A7 DF 242 cmpe #0dfh
01C2 06 01 CA 243 brz .AnsToZ
01C5 A7 B5 244 cmpe #0b5h
01C7 07 01 CD 245 brnz .EndPos
01CA 246 .AnsToZ:
01CA 20 00 00 247 call .I_trans_Z
01CD 248 .NomalMode:
01CD 249 .EndPos:
+ 250
01CD 24 251 ret
+ 252 ;-------------------------------------------
01CE 253 .CalcVal:
+ 254
01CE F5 7B 255 lda0 .PsValDP
01D0 A7 F0 256 cmpe #0f0h
01D2 04 02 03 257 brc .CKY
01D5 F3 02 258 lda #02h
01D7 FC 28 259 sta PP
01D9 F5 7B 260 lda0 .PsValDP
01DB FC 21 261 sta DP
01DD F2 262 lda i
01DE F9 01 263 sta0 .DataBuf+1
01E0 F9 00 264 sta0 .DataBuf
01E2 A7 B6 265 cmpe #0b6h
01E4 06 07 2D 266 brz .ClearrMem
01E7 F5 00 267 lda0 .DataBuf
01E9 A7 A0 268 cmpe #0a0h
01EB 06 02 03 269 brz .CKY
01EE 20 00 00 270 call .CheckPari
01F1 20 00 00 271 call .CheckMem
01F4 F5 00 272 lda0 .AfterPari
01F6 A7 01 273 cmpe #01h
01F8 06 02 03 274 brz .CKY
01FB A7 02 275 cmpe #02h
01FD 06 02 03 276 brz .CKY
0200 02 07 BA 277 br .EndCalcVal
0203 278 .CKY:
0203 F5 7C 279 lda0 .IndexDP
0205 FC 21 280 sta DP
0207 F3 03 281 lda #03h
0209 FC 28 282 sta PP
020B 18 283 incdp
020C F2 284 lda i
020D F9 7B 285 sta0 .PsValDP
020F A7 00 286 cmpe #0h
0211 06 02 E3 287 brz .StartCalcV
0214 A7 F0 288 cmpe #0f0h
0216 04 02 59 289 brc .CKOP
0219 F3 02 290 lda #02h
021B FC 28 291 sta PP
021D F5 7B 292 lda0 .PsValDP
021F FC 21 293 sta DP
0221 F2 294 lda i
0222 F9 01 295 sta0 .DataBuf+1
0224 F9 00 296 sta0 .DataBuf
0226 A7 B4 297 cmpe #0b4h
0228 06 02 E3 298 brz .StartCalcV
022B A7 B0 299 cmpe #0b0h
022D 06 02 E3 300 brz .StartCalcV
0230 A7 A0 301 cmpe #0a0h
0232 06 02 59 302 brz .CKOP
0235 20 00 00 303 call .CheckPari
0238 20 00 00 304 call .CheckMem
023B F5 00 305 lda0 .AfterPari
023D A7 01 306 cmpe #01h
023F 06 02 59 307 brz .CKOP
0242 A7 02 308 cmpe #02h
0244 06 02 59 309 brz .CKOP
0247 A7 06 310 cmpe #06h ;05h
0249 06 02 E3 311 brz .StartCalcV
024C A7 0A 312 cmpe #0ah
024E 06 02 E3 313 brz .StartCalcV
0251 A7 0B 314 cmpe #0bh
0253 06 02 E3 315 brz .StartCalcV
0256 02 07 BA 316 br .EndCalcVal
0259 317 .CKOP:
0259 F5 7C 318 lda0 .IndexDP
025B FC 21 319 sta DP
025D F3 03 320 lda #03h
025F FC 28 321 sta PP
0261 18 322 incdp
0262 18 323 incdp
0263 F2 324 lda i
0264 F9 7B 325 sta0 .PsValDP
0266 A7 00 326 cmpe #0h
0268 06 07 BA 327 brz .EndCalcVal
026B A7 F0 328 cmpe #0f0h
026D 04 07 BA 329 brc .EndCalcVal
0270 F3 02 330 lda #02h
0272 FC 28 331 sta PP
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -