📄 baseposfix.asl
字号:
+ 1 ;/subrutine name : BasenPosfix.asm
+ 2 ;/user bady : HE
+ 3 ;/fast clock : 4Mhz
+ 4 ;/slow clock : 32768khz
+ 5 ;/programer : Alton
00A4 6 .ADD EQU 0xa4
00A5 7 .DEC EQU 0xa5
00A6 8 .MUL EQU 0xa6
00A7 9 .DIV EQU 0xa7
00B2 10 .LC EQU 0xb2
00B3 11 .RC EQU 0xb3
0020 12 .And EQU 0x20
0021 13 .Or EQU 0x21
0022 14 .Xnor EQU 0x22
0023 15 .Xor EQU 0x23
0024 16 .Not EQU 0x24
0025 17 .Neg EQU 0x25
+ 18
+B 00 01
+ 19 .area basepostfix(code,rel)
0000 20 .BaseNPosfix::
0000 20 05 11 21 call .InitBasePos
0003 22 .TransbaseN:
0003 F3 00 23 lda #>.INDP
0005 FC 28 24 sta PP
0007 F5 00 25 lda0 .INDP
0009 A5 00 26 cmpe .DataDP
000B 06 00 30 27 brz .EndBasePos
000E F3 02 28 lda #02h
0010 FC 28 29 sta PP
0012 F5 00 30 lda0 .INDP
0014 FC 21 31 sta DP
0016 F2 32 lda i
0017 F9 00 33 sta0 .DataBuf
0019 A7 10 34 cmpe #10h ;0----9 A---F
001B 04 00 94 35 brc .CmpOperand
001E 02 01 56 36 br .DOnum
+ 37
0021 38 .NextDp:
0021 F5 00 39 lda0 .INDP
0023 1F 40 inca
0024 F9 00 41 sta0 .INDP
0026 02 00 03 42 br .TransbaseN
0029 43 .SynError:
0029 F3 02 44 lda #02h
002B F9 00 45 sta0 ErrorFlag
002D 02 00 93 46 br .EedBasen
+ 47 ;-------------------------------------------
0030 48 .EndBasePos:
+ 49
0030 F3 02 50 lda #02h
0032 FC 28 51 sta PP
0034 F5 00 52 lda0 .PSDP
0036 FC 21 53 sta DP
0038 38 54 decdp
0039 F0 21 55 lda DP
003B A7 FF 56 cmpe #0ffh
003D 06 00 43 57 brz .BasePosEnd
0040 20 00 00 58 call .ClosEndPS
+ 59
0043 60 .BasePosEnd:
0043 F5 00 61 lda0 .DecFlag
0045 CB 01 62 anda #01h
0047 06 00 5D 63 brz 1$
004A F5 00 64 lda0 .DataBuf
004C F9 00 65 sta0 .Buf3
004E F3 A8 66 lda #0a8h
0050 F9 00 67 sta0 .DataBuf
0052 F3 00 68 lda #0h
0054 F9 00 69 sta0 .DecFlag
0056 20 00 00 70 call .StoStack
0059 F5 00 71 lda0 .Buf3
005B F9 00 72 sta0 .DataBuf
+ 73 1$:
005D F3 03 74 lda #03h
005F FC 28 75 sta PP
0061 F5 00 76 lda0 .STDP
0063 FC 21 77 sta DP
0065 F0 21 78 lda DP
0067 A7 FF 79 cmpe #0ffh
0069 06 00 87 80 brz .PosEnd
006C F2 81 lda i
006D F9 00 82 sta0 .DataBuf
006F A7 00 83 cmpe #0h
0071 06 00 87 84 brz .PosEnd
0074 A7 B2 85 cmpe #.LC
0076 06 00 7F 86 brz .NotSave
0079 20 00 00 87 call .NoSignal
007C 20 00 00 88 call .ClosEndPS
007F 89 .NotSave:
007F F5 00 90 lda0 .STDP
0081 3F 91 deca
0082 F9 00 92 sta0 .STDP
0084 02 00 43 93 br .BasePosEnd
0087 94 .PosEnd:
0087 F3 02 95 lda #02h
0089 FC 28 96 sta PP
008B F5 00 97 lda0 .PSDP
008D FC 21 98 sta DP
008F 38 99 decdp
0090 F3 EE 100 lda #0eeh
0092 FE 101 sta i
0093 102 .EedBasen:
0093 24 103 ret
+ 104 ;-------------------------------------------
0094 105 .CmpOperand:
0094 20 00 00 106 call .CheckMem
0097 20 04 36 107 call .Paricmp
009A F5 00 108 lda0 .DataBuf
009C A7 B2 109 cmpe #.LC
009E 06 00 CD 110 brz .DOLC
00A1 A7 B3 111 cmpe #.RC
00A3 06 01 15 112 brz .DORC
00A6 F5 00 113 lda0 .AfterPari
00A8 F9 00 114 sta0 .BeforePari
00AA F5 00 115 lda0 .AfterPari
00AC A7 01 116 cmpe #01h
00AE 06 01 28 117 brz .DOmemSto
00B1 A7 04 118 cmpe #04h
00B3 06 01 56 119 brz .DOnum
00B6 A7 0E 120 cmpe #0eh
00B8 06 01 D7 121 brz .DONotNeg
00BB A7 0C 122 cmpe #0ch
00BD 06 01 6F 123 brz .DOaddec
00C0 A7 0D 124 cmpe #0dh
00C2 06 01 9A 125 brz .DOmuldiv
00C5 A7 0F 126 cmpe #0fh
00C7 06 01 A0 127 brz .TransCode
00CA 02 01 C0 128 br .DO2Operand
+ 129 ;-------------------------------------------
00CD 130 .DOLC:
00CD F5 00 131 lda0 .INDP
00CF A7 00 132 cmpe #0h
00D1 06 02 83 133 brz .TOStack
00D4 F5 00 134 lda0 .Buf1
00D6 A7 B2 135 cmpe #.LC
00D8 06 02 83 136 brz .TOStack
00DB A7 B3 137 cmpe #.RC
00DD 06 02 E6 138 brz .RCAddMulCls
00E0 20 02 49 139 call .GetPari
00E3 F5 00 140 lda0 .AfterPari
00E5 A7 00 141 cmpe #0h
00E7 06 02 83 142 brz .TOStack
00EA A7 01 143 cmpe #01h
00EC 06 02 A7 144 brz .LCAddMulCls
00EF A7 04 145 cmpe #04h
00F1 06 02 A7 146 brz .LCAddMulCls
00F4 A7 07 147 cmpe #07h
00F6 06 02 83 148 brz .TOStack
00F9 A7 08 149 cmpe #08h
00FB 06 02 83 150 brz .TOStack
00FE A7 09 151 cmpe #09h
0100 06 02 83 152 brz .TOStack
0103 A7 0C 153 cmpe #0ch
0105 06 02 83 154 brz .TOStack
0108 A7 0D 155 cmpe #0dh
010A 06 02 83 156 brz .TOStack
010D A7 0E 157 cmpe #0eh
010F 06 02 83 158 brz .TOStack
0112 02 00 21 159 br .NextDp
+ 160 ;-------------------------------------------
0115 161 .DORC:
0115 F5 00 162 lda0 .DataBuf
0117 F9 00 163 sta0 .Buf1
0119 20 00 00 164 call .ClosEndPS
011C 20 04 14 165 call .Addnegtive
011F 20 00 00 166 call .ClosEndPS
0122 20 00 00 167 call .CkRightC
0125 02 00 21 168 br .NextDp
+ 169 ;-------------------------------------------
0128 170 .DOmemSto:
+ 171
0128 F5 00 172 lda0 .INDP
012A A7 00 173 cmpe #0h
012C 06 01 41 174 brz 1$
012F 20 02 49 175 call .GetPari
0132 F5 00 176 lda0 .AfterPari
0134 A7 01 177 cmpe #01h
0136 06 03 38 178 brz .MemAddMulCls
0139 A7 04 179 cmpe #04h
013B 06 03 38 180 brz .MemAddMulCls
013E 02 01 50 181 br .Sto2PS
+ 182 1$:
0141 F5 00 183 lda0 .DataBuf
0143 F9 00 184 sta0 .Buf3
0145 F3 26 185 lda #26h
0147 F9 00 186 sta0 .DataBuf
0149 20 00 00 187 call .StoStack
014C F5 00 188 lda0 .Buf3
014E F9 00 189 sta0 .DataBuf
0150 190 .Sto2PS:
0150 20 03 99 191 call .NotSign ;.PosFixSto
0153 02 00 21 192 br .NextDp
+ 193 ;-------------------------------------------
0156 194 .DOnum:
0156 F5 00 195 lda0 .INDP
0158 A7 00 196 cmpe #0h
015A 06 02 1F 197 brz .AddBase
015D 20 02 49 198 call .GetPari
0160 F5 00 199 lda0 .AfterPari
0162 A7 04 200 cmpe #04h
0164 06 01 50 201 brz .Sto2PS
0167 A7 0F 202 cmpe #0fh
0169 06 01 50 203 brz .Sto2PS
016C 02 02 1F 204 br .AddBase
+ 205 ;-------------------------------------------
016F 206 .DOaddec:
016F F5 00 207 lda0 .INDP
0171 A7 00 208 cmpe #0h
0173 06 02 63 209 brz .Signal
+ 210
0176 20 02 49 211 call .GetPari
0179 F5 00 212 lda0 .Buf1
017B A7 B2 213 cmpe #.LC
017D 06 01 91 214 brz 1$
0180 A7 B3 215 cmpe #.RC
0182 06 01 94 216 brz 2$ ;.PushStackCls
0185 F5 00 217 lda0 .AfterPari
0187 A7 01 218 cmpe #01h
0189 06 01 94 219 brz 2$ ;.PushStackCls
018C A7 04 220 cmpe #04h
018E 06 01 94 221 brz 2$ ;.PushStackCls
+ 222 1$:
0191 02 02 63 223 br .Signal ;.PushStackCls
+ 224 2$:
0194 20 04 14 225 call .Addnegtive
0197 02 02 76 226 br .PushStackCls
+ 227 ;-------------------------------------------
019A 228 .DOmuldiv:
019A 20 04 14 229 call .Addnegtive
019D 02 02 76 230 br .PushStackCls
+ 231 ;-------------------------------------------
01A0 232 .TransCode:
01A0 F5 00 233 lda0 .INDP
01A2 A7 00 234 cmpe #0h
01A4 06 02 79 235 brz .PushStack
01A7 F5 00 236 lda0 .Buf1
01A9 A7 B2 237 cmpe #.LC
01AB 06 02 79 238 brz .PushStack
01AE 20 02 49 239 call .GetPari
01B1 F5 00 240 lda0 .AfterPari
01B3 A7 01 241 cmpe #01h
01B5 06 03 0C 242 brz .AddMulCls
01B8 A7 04 243 cmpe #04h
01BA 06 03 0C 244 brz .AddMulCls
01BD 02 02 79 245 br .PushStack
+ 246
+ 247 ;-------------------------------------------
01C0 248 .DO2Operand:
01C0 20 02 49 249 call .GetPari
01C3 F5 00 250 lda0 .AfterPari
01C5 A7 00 251 cmpe #0h
01C7 06 02 79 252 brz .PushStack
01CA A7 01 253 cmpe #01h
01CC 06 02 76 254 brz .PushStackCls
01CF A7 04 255 cmpe #04h
01D1 06 02 76 256 brz .PushStackCls
01D4 02 00 21 257 br .NextDp
+ 258 ;-------------------------------------------
01D7 259 .DONotNeg:
01D7 F5 00 260 lda0 .INDP
01D9 A7 00 261 cmpe #0h
01DB 06 02 83 262 brz .TOStack
01DE 20 02 49 263 call .GetPari
01E1 F5 00 264 lda0 .Buf1
01E3 A7 B2 265 cmpe #.LC
01E5 06 02 83 266 brz .TOStack
01E8 A7 B3 267 cmpe #.RC
01EA 06 03 0F 268 brz .AddMul
01ED F5 00 269 lda0 .AfterPari
01EF A7 01 270 cmpe #01h
01F1 06 03 0C 271 brz .AddMulCls
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -