|===========================================================================| Objects : - Object Address : 0010 : Object Name : FEMTOBASIC Object Address : 213C : Object Name : FSRWFEMTO Object Address : 4268 : Object Name : SDSPIFEMTO Object Address : 6394 : Object Name : VGA_DRIVE Object Address : 84C0 : Object Name : COMBOKEYBOARD |===========================================================================| |===========================================================================| Object FEMTOBASIC Object Base is 0010 |===========================================================================| |===========================================================================| VBASE Global Variables |===========================================================================| VBASE : 0000 LONG Size 0004 Variable sp VBASE : 0004 LONG Size 0004 Variable tp VBASE : 0008 LONG Size 0004 Variable eop VBASE : 000C LONG Size 0004 Variable nextlineloc VBASE : 0010 LONG Size 0004 Variable rv VBASE : 0014 LONG Size 0004 Variable curlineno VBASE : 0018 LONG Size 0004 Variable pauseTime VBASE : 001C LONG Size 0068 Variable vars VBASE : 0084 LONG Size 0050 Variable stack VBASE : 00D4 LONG Size 0008 Variable control VBASE : 00DC LONG Size 0068 Variable forStep VBASE : 0144 LONG Size 0068 Variable forLimit VBASE : 01AC LONG Size 0068 Variable forLoop VBASE : 0214 LONG Size 0008 Variable ioControl VBASE : 021C WORD Size 0002 Variable outputs VBASE : 021E BYTE Size 0100 Variable tline VBASE : 031E BYTE Size 0100 Variable tailLine VBASE : 041E BYTE Size 001A Variable inVars VBASE : 0438 BYTE Size 0001 Variable fileOpened |===========================================================================| Object DAT Variables |===========================================================================| ABS : 00B8 PBASE : 00A8 BYTE Variable tok0 ABS : 00BB PBASE : 00AB BYTE Variable tok1 ABS : 00C0 PBASE : 00B0 BYTE Variable tok2 ABS : 00C6 PBASE : 00B6 BYTE Variable tok3 ABS : 00CC PBASE : 00BC BYTE Variable tok4 ABS : 00D1 PBASE : 00C1 BYTE Variable tok5 ABS : 00D7 PBASE : 00C7 BYTE Variable tok6 ABS : 00DE PBASE : 00CE BYTE Variable tok7 ABS : 00E2 PBASE : 00D2 BYTE Variable tok8 ABS : 00E6 PBASE : 00D6 BYTE Variable tok9 ABS : 00EB PBASE : 00DB BYTE Variable tok10 ABS : 00EF PBASE : 00DF BYTE Variable tok11 ABS : 00F3 PBASE : 00E3 BYTE Variable tok12 ABS : 00F8 PBASE : 00E8 BYTE Variable tok13 ABS : 00FD PBASE : 00ED BYTE Variable tok14 ABS : 0103 PBASE : 00F3 BYTE Variable tok15 ABS : 0109 PBASE : 00F9 BYTE Variable tok16 ABS : 0110 PBASE : 0100 BYTE Variable tok17 ABS : 0117 PBASE : 0107 BYTE Variable tok18 ABS : 011D PBASE : 010D BYTE Variable tok19 ABS : 0122 PBASE : 0112 BYTE Variable tok20 ABS : 0127 PBASE : 0117 BYTE Variable tok21 ABS : 012B PBASE : 011B BYTE Variable tok22 ABS : 012F PBASE : 011F BYTE Variable tok23 ABS : 0132 PBASE : 0122 BYTE Variable tok24 ABS : 0136 PBASE : 0126 BYTE Variable tok25 ABS : 013A PBASE : 012A BYTE Variable tok26 ABS : 013E PBASE : 012E BYTE Variable tok27 ABS : 0141 PBASE : 0131 BYTE Variable tok28 ABS : 0146 PBASE : 0136 BYTE Variable tok29 ABS : 014B PBASE : 013B BYTE Variable tok30 ABS : 014F PBASE : 013F BYTE Variable tok31 ABS : 0154 PBASE : 0144 BYTE Variable tok32 ABS : 015A PBASE : 014A BYTE Variable tok33 ABS : 0160 PBASE : 0150 BYTE Variable tok34 ABS : 0164 PBASE : 0154 BYTE Variable tok35 ABS : 0168 PBASE : 0158 BYTE Variable tok36 ABS : 016C PBASE : 015C BYTE Variable tok37 ABS : 0170 PBASE : 0160 BYTE Variable tok38 ABS : 0175 PBASE : 0165 BYTE Variable tok39 ABS : 017A PBASE : 016A BYTE Variable tok40 ABS : 017F PBASE : 016F BYTE Variable tok41 ABS : 0183 PBASE : 0173 BYTE Variable tok42 ABS : 0188 PBASE : 0178 BYTE Variable tok43 ABS : 018D PBASE : 017D BYTE Variable tok44 ABS : 0192 PBASE : 0182 BYTE Variable tok45 ABS : 0197 PBASE : 0187 BYTE Variable tok46 ABS : 019C PBASE : 018C BYTE Variable tok47 ABS : 01A1 PBASE : 0191 BYTE Variable tok48 ABS : 01A9 PBASE : 0199 BYTE Variable tok49 ABS : 01B1 PBASE : 01A1 BYTE Variable tok50 ABS : 01B5 PBASE : 01A5 BYTE Variable tok51 ABS : 01BA PBASE : 01AA BYTE Variable tok52 ABS : 01BE PBASE : 01AE BYTE Variable tok53 ABS : 01C5 PBASE : 01B5 BYTE Variable tok54 ABS : 01CA PBASE : 01BA BYTE Variable tok55 ABS : 01CE PBASE : 01BE BYTE Variable tok56 ABS : 01D3 PBASE : 01C3 BYTE Variable tok57 ABS : 01D8 PBASE : 01C8 BYTE Variable tok58 ABS : 01DE PBASE : 01CE WORD Variable toks ABS : 0254 PBASE : 0244 WORD Variable tokx ABS : 0254 PBASE : 0244 BYTE Variable syn ABS : 0261 PBASE : 0251 BYTE Variable ln |===========================================================================| |===========================================================================| Spin Block main with 0 Parameters and 2 Extra Stack Longs. Method 1 PUB main | err, s |===========================================================================| 142 dsp.start(dspPins) ' Start display Addr : 0275: 01 : Drop Anchor Addr : 0276: 37 03 : Constant Mask Y=3 00000010 Addr : 0278: 06 28 02 : Call Obj.Sub 40 2 143 key.start(keyPins) ' Start keyboard driver Addr : 027B: 01 : Drop Anchor Addr : 027C: 38 1A : Constant 1 Bytes - 1A Addr : 027E: 06 29 01 : Call Obj.Sub 41 1 144 fsrw.start(@ioControl) ' Start I2C/SPI driver Addr : 0281: 01 : Drop Anchor Addr : 0282: CB 82 14 : Memory Op Long VBASE + ADDRESS Address = 0214 Addr : 0285: 06 27 01 : Call Obj.Sub 39 1 145 pauseTime := 0 Addr : 0288: 35 : Constant 1 $00000000 Addr : 0289: 59 : Variable Operation Global Offset - 6 Write 146 outputs := 0 Addr : 028A: 35 : Constant 1 $00000000 Addr : 028B: A9 82 1C : Memory Op Word VBASE + WRITE Address = 021C 147 fileOpened := 0 Addr : 028E: 35 : Constant 1 $00000000 Addr : 028F: 89 84 38 : Memory Op Byte VBASE + WRITE Address = 0438 148 long[userPtr] := userPtr - progsize ' Allocate memory Addr : 0292: 39 73 20 : Constant 2 Bytes - 73 20 Addr : 0295: 37 0C : Constant Mask Y=12 00002000 Addr : 0297: ED : Math Op - Addr : 0298: 39 73 20 : Constant 2 Bytes - 73 20 Addr : 029B: C1 : Memory Op Long POP Address WRITE 149 waitcnt(clkfreq + cnt) Addr : 029C: 35 : Constant 1 $00000000 Addr : 029D: C0 : Memory Op Long POP Address READ Addr : 029E: 3F 91 : Register op CNT Read Addr : 02A0: EC : Math Op + Addr : 02A1: 23 : WaitCnt(count) 150 dsp.str(string("FemtoBasic")) Addr : 02A2: 01 : Drop Anchor Addr : 02A3: PBASE Constant Address of Label0003 Addr : 02A3: 87 83 66 : Memory Op Byte PBASE + ADDRESS Address = 0366 Addr : 02A6: 06 28 05 : Call Obj.Sub 40 5 151 if version > 0 or release > 0 or testLevel > 0 Addr : 02A9: 37 21 : Constant Mask Y=33 Decrement 00000003 Addr : 02AB: 35 : Constant 1 $00000000 Addr : 02AC: FA : Math Op > Addr : 02AD: 38 06 : Constant 1 Bytes - 06 Addr : 02AF: 35 : Constant 1 $00000000 Addr : 02B0: FA : Math Op > Addr : 02B1: F2 : Math Op OR Addr : 02B2: 35 : Constant 1 $00000000 Addr : 02B3: 35 : Constant 1 $00000000 Addr : 02B4: FA : Math Op > Addr : 02B5: F2 : Math Op OR Addr : 02B6: JZ Label0004 Addr : 02B6: 0A 80 42 : jz Address = 02FB 66 152 dsp.str(string(" Version ")) Addr : 02B9: 01 : Drop Anchor Addr : 02BA: PBASE Constant Address of Label0006 Addr : 02BA: 87 83 71 : Memory Op Byte PBASE + ADDRESS Address = 0371 Addr : 02BD: 06 28 05 : Call Obj.Sub 40 5 153 dsp.dec(version) Addr : 02C0: 01 : Drop Anchor Addr : 02C1: 37 21 : Constant Mask Y=33 Decrement 00000003 Addr : 02C3: 06 28 06 : Call Obj.Sub 40 6 154 dsp.out(".") Addr : 02C6: 01 : Drop Anchor Addr : 02C7: 38 2E : Constant 1 Bytes - 2E Addr : 02C9: 06 28 09 : Call Obj.Sub 40 9 155 if release < 100 Addr : 02CC: 38 06 : Constant 1 Bytes - 06 Addr : 02CE: 38 64 : Constant 1 Bytes - 64 Addr : 02D0: F9 : Math Op < Addr : 02D1: JZ Label0007 Addr : 02D1: 0A 06 : jz Address = 02D9 6 156 dsp.out("0") Addr : 02D3: 01 : Drop Anchor Addr : 02D4: 38 30 : Constant 1 Bytes - 30 Addr : 02D6: 06 28 09 : Call Obj.Sub 40 9 Addr : 02D9: Label0007 Addr : 02D9: Label0008 157 if release < 10 Addr : 02D9: 38 06 : Constant 1 Bytes - 06 Addr : 02DB: 38 0A : Constant 1 Bytes - 0A Addr : 02DD: F9 : Math Op < Addr : 02DE: JZ Label0009 Addr : 02DE: 0A 06 : jz Address = 02E6 6 158 dsp.out("0") Addr : 02E0: 01 : Drop Anchor Addr : 02E1: 38 30 : Constant 1 Bytes - 30 Addr : 02E3: 06 28 09 : Call Obj.Sub 40 9 Addr : 02E6: Label0009 Addr : 02E6: Label000A 159 dsp.dec(release) Addr : 02E6: 01 : Drop Anchor Addr : 02E7: 38 06 : Constant 1 Bytes - 06 Addr : 02E9: 06 28 06 : Call Obj.Sub 40 6 160 if testLevel > 0 Addr : 02EC: 35 : Constant 1 $00000000 Addr : 02ED: 35 : Constant 1 $00000000 Addr : 02EE: FA : Math Op > Addr : 02EF: JZ Label000B Addr : 02EF: 0A 0A : jz Address = 02FB 10 161 dsp.out("a"+testLevel-1) Addr : 02F1: 01 : Drop Anchor Addr : 02F2: 38 61 : Constant 1 Bytes - 61 Addr : 02F4: 35 : Constant 1 $00000000 Addr : 02F5: EC : Math Op + Addr : 02F6: 36 : Constant 2 $00000001 Addr : 02F7: ED : Math Op - Addr : 02F8: 06 28 09 : Call Obj.Sub 40 9 Addr : 02FB: Label000B Addr : 02FB: Label000C Addr : 02FB: Label0004 Addr : 02FB: Label0005 162 dsp.out(fReturn) Addr : 02FB: 01 : Drop Anchor Addr : 02FC: 38 0D : Constant 1 Bytes - 0D Addr : 02FE: 06 28 09 : Call Obj.Sub 40 9 163 waitcnt(clkfreq + cnt) Addr : 0301: 35 : Constant 1 $00000000 Addr : 0302: C0 : Memory Op Long POP Address READ Addr : 0303: 3F 91 : Register op CNT Read Addr : 0305: EC : Math Op + Addr : 0306: 23 : WaitCnt(count) 164 if not key.present Addr : 0307: 00 : Drop Anchor Push Addr : 0308: 06 29 04 : Call Obj.Sub 41 4 Addr : 030B: FF : Math Op NOT Addr : 030C: JZ Label000D Addr : 030C: 0A 08 : jz Address = 0316 8 165 dsp.str(string("No keyboard present",fReturn)) Addr : 030E: 01 : Drop Anchor Addr : 030F: PBASE Constant Address of Label000F Addr : 030F: 87 83 7B : Memory Op Byte PBASE + ADDRESS Address = 037B Addr : 0312: 06 28 05 : Call Obj.Sub 40 5 166 abort Addr : 0315: 30 : Abort Addr : 0316: Label000D Addr : 0316: Label000E 167 key.clearkeys Addr : 0316: 01 : Drop Anchor Addr : 0317: 06 29 0C : Call Obj.Sub 41 12 168 key.breakCode(breakKey) Addr : 031A: 01 : Drop Anchor Addr : 031B: 38 CB : Constant 1 Bytes - CB Addr : 031D: 06 29 07 : Call Obj.Sub 41 7 169 clearall Addr : 0320: 01 : Drop Anchor Addr : 0321: 05 12 : Call Sub 18 170 s := 0 Addr : 0323: 35 : Constant 1 $00000000 Addr : 0324: 69 : Variable Operation Local Offset - 2 Write 171 curlineno := -1 Addr : 0325: 34 : Constant 0 $FFFFFFFF Addr : 0326: 55 : Variable Operation Global Offset - 5 Write 172 ifnot \fsrw.mount(spiDO,spiClk,spiDI,spiCS) < 0 Addr : 0327: 02 : Drop Anchor Push Try Addr : 0328: 35 : Constant 1 $00000000 Addr : 0329: 36 : Constant 2 $00000001 Addr : 032A: 37 00 : Constant Mask Y=0 00000002 Addr : 032C: 37 21 : Constant Mask Y=33 Decrement 00000003 Addr : 032E: 06 27 13 : Call Obj.Sub 39 19 Addr : 0331: 35 : Constant 1 $00000000 Addr : 0332: F9 : Math Op < Addr : 0333: JNZ Label0010 Addr : 0333: 0B 30 : jnz Address = 0365 48 173 ifnot \fsrw.popen(string("autoexec.bas"),"r") Addr : 0335: 02 : Drop Anchor Push Try Addr : 0336: PBASE Constant Address of Label0014 Addr : 0336: 87 83 90 : Memory Op Byte PBASE + ADDRESS Address = 0390 Addr : 0339: 38 72 : Constant 1 Bytes - 72 Addr : 033B: 06 27 16 : Call Obj.Sub 39 22 Addr : 033E: JNZ Label0012 Addr : 033E: 0B 25 : jnz Address = 0365 37 174 if (err := \processLoad) <> fEof Addr : 0340: 02 : Drop Anchor Push Try Addr : 0341: 05 23 : Call Sub 35 Addr : 0343: 66 80 : Variable Operation Local Offset - 1 Assign Write Push Addr : 0345: 34 : Constant 0 $FFFFFFFF Addr : 0346: FB : Math Op <> Addr : 0347: JZ Label0015 Addr : 0347: 0A 07 : jz Address = 0350 7 175 showError(err) Addr : 0349: 01 : Drop Anchor Addr : 034A: 64 : Variable Operation Local Offset - 1 Read Addr : 034B: 05 03 : Call Sub 3 176 newprog Addr : 034D: 01 : Drop Anchor Addr : 034E: 05 11 : Call Sub 17 Addr : 0350: Label0015 Addr : 0350: Label0016 177 ifnot \fsrw.pclose < 0 Addr : 0350: 02 : Drop Anchor Push Try Addr : 0351: 06 27 15 : Call Obj.Sub 39 21 Addr : 0354: 35 : Constant 1 $00000000 Addr : 0355: F9 : Math Op < Addr : 0356: JNZ Label0017 Addr : 0356: 0B 04 : jnz Address = 035C 4 178 \fsrw.unmount Addr : 0358: 03 : Drop Anchor Try Addr : 0359: 06 27 0D : Call Obj.Sub 39 13 Addr : 035C: Label0017 Addr : 035C: Label0018 179 if err == fEof Addr : 035C: 64 : Variable Operation Local Offset - 1 Read Addr : 035D: 34 : Constant 0 $FFFFFFFF Addr : 035E: FC : Math Op == Addr : 035F: JZ Label0019 Addr : 035F: 0A 04 : jz Address = 0365 4 Addr : 0361: PBASE Constant Address of Label001B Addr : 0361: 87 83 9D : Memory Op Byte PBASE + ADDRESS Address = 039D 180 s := string("run") Addr : 0364: 69 : Variable Operation Local Offset - 2 Write Addr : 0365: Label0019 Addr : 0365: Label001A Addr : 0365: Label0012 Addr : 0365: Label0013 Addr : 0365: Label0010 Addr : 0365: Label0011 Addr : 0365: Label001C 182 err := \doline(s) Addr : 0365: 02 : Drop Anchor Push Try Addr : 0366: 68 : Variable Operation Local Offset - 2 Read Addr : 0367: 05 22 : Call Sub 34 Addr : 0369: 65 : Variable Operation Local Offset - 1 Write 183 s := 0 Addr : 036A: 35 : Constant 1 $00000000 Addr : 036B: 69 : Variable Operation Local Offset - 2 Write 184 if err Addr : 036C: 64 : Variable Operation Local Offset - 1 Read Addr : 036D: JZ Label001F Addr : 036D: 0A 04 : jz Address = 0373 4 185 showError(err) Addr : 036F: 01 : Drop Anchor Addr : 0370: 64 : Variable Operation Local Offset - 1 Read Addr : 0371: 05 03 : Call Sub 3 Addr : 0373: Label001F Addr : 0373: Label0020 Addr : 0373: Label001D Addr : 0373: JMP Label001C Addr : 0373: 04 70 : Jmp 0365 -16 Addr : 0375: Label001E Addr : 0375: 32 : Return Addr : 0376: Label0003 Addr : 0376: Data : 46 65 6D 74 6F 42 61 73 FemtoBas Addr : 037E: Data : 69 63 00 ic. Addr : 0381: Label0006 Addr : 0381: Data : 20 56 65 72 73 69 6F 6E Version Addr : 0389: Data : 20 00 . Addr : 038B: Label000F Addr : 038B: Data : 4E 6F 20 6B 65 79 62 6F No keybo Addr : 0393: Data : 61 72 64 20 70 72 65 73 ard pres Addr : 039B: Data : 65 6E 74 0D 00 ent.. Addr : 03A0: Label0014 Addr : 03A0: Data : 61 75 74 6F 65 78 65 63 autoexec Addr : 03A8: Data : 2E 62 61 73 00 .bas. Addr : 03AD: Label001B Addr : 03AD: Data : 72 75 6E 00 run. |===========================================================================| Spin Block dumpMemory with 3 Parameters and 7 Extra Stack Longs. Method 2 PUB dumpMemory(pin,addr,size) | i, c, p, first, buf0, buf1, buf2 |===========================================================================| 1306 addr &= $7FFFF Addr : 03B1: 37 32 : Constant Mask Y=50 Decrement 0007FFFF Addr : 03B3: 6A 48 : Variable Operation Local Offset - 2 Assign BitMathop & 1307 first := true Addr : 03B5: 34 : Constant 0 $FFFFFFFF Addr : 03B6: 7D : Variable Operation Local Offset - 7 Write 1308 p := addr & $7FFF8 Addr : 03B7: 68 : Variable Operation Local Offset - 2 Read Addr : 03B8: 3A 07 FF F8 : Constant 3 Bytes - 07 FF F8 Addr : 03BC: E8 : Math Op & Addr : 03BD: 79 : Variable Operation Local Offset - 6 Write Addr : 03BE: Label0003 1309 repeat while p < (addr + size) Addr : 03BE: 78 : Variable Operation Local Offset - 6 Read Addr : 03BF: 68 : Variable Operation Local Offset - 2 Read Addr : 03C0: 6C : Variable Operation Local Offset - 3 Read Addr : 03C1: EC : Math Op + Addr : 03C2: F9 : Math Op < Addr : 03C3: JZ Label0005 Addr : 03C3: 0A 80 9B : jz Address = 0461 155 1310 if first Addr : 03C6: 7C : Variable Operation Local Offset - 7 Read Addr : 03C7: JZ Label0006 Addr : 03C7: 0A 0B : jz Address = 03D4 11 1311 dsp.hex(addr,5) Addr : 03C9: 01 : Drop Anchor Addr : 03CA: 68 : Variable Operation Local Offset - 2 Read Addr : 03CB: 38 05 : Constant 1 Bytes - 05 Addr : 03CD: 06 28 07 : Call Obj.Sub 40 7 1312 first := false Addr : 03D0: 35 : Constant 1 $00000000 Addr : 03D1: 7D : Variable Operation Local Offset - 7 Write Addr : 03D2: JMP Label0007 Addr : 03D2: 04 07 : Jmp 03DB 7 Addr : 03D4: Label0006 1314 dsp.hex(p,5) Addr : 03D4: 01 : Drop Anchor Addr : 03D5: 78 : Variable Operation Local Offset - 6 Read Addr : 03D6: 38 05 : Constant 1 Bytes - 05 Addr : 03D8: 06 28 07 : Call Obj.Sub 40 7 Addr : 03DB: Label0008 Addr : 03DB: Label0007 1315 dsp.out(":") Addr : 03DB: 01 : Drop Anchor Addr : 03DC: 38 3A : Constant 1 Bytes - 3A Addr : 03DE: 06 28 09 : Call Obj.Sub 40 9 1316 repeat i from 0 to 7 Addr : 03E1: 35 : Constant 1 $00000000 Addr : 03E2: 71 : Variable Operation Local Offset - 4 Write Addr : 03E3: Label0009 1317 byte[@buf0][i] := " " Addr : 03E3: 37 04 : Constant Mask Y=4 00000020 Addr : 03E5: CF 20 : Memory Op Long DBASE + ADDRESS Address = 0020 Addr : 03E7: 70 : Variable Operation Local Offset - 4 Read Addr : 03E8: 91 : Memory Op Byte POP Address POP Index WRITE 1318 if p => addr and p < (addr + size) Addr : 03E9: 78 : Variable Operation Local Offset - 6 Read Addr : 03EA: 68 : Variable Operation Local Offset - 2 Read Addr : 03EB: FE : Math Op => Addr : 03EC: 78 : Variable Operation Local Offset - 6 Read Addr : 03ED: 68 : Variable Operation Local Offset - 2 Read Addr : 03EE: 6C : Variable Operation Local Offset - 3 Read Addr : 03EF: EC : Math Op + Addr : 03F0: F9 : Math Op < Addr : 03F1: F0 : Math Op AND Addr : 03F2: JZ Label000C Addr : 03F2: 0A 34 : jz Address = 0428 52 1319 if pin <> -1 Addr : 03F4: 64 : Variable Operation Local Offset - 1 Read Addr : 03F5: 34 : Constant 0 $FFFFFFFF Addr : 03F6: FB : Math Op <> Addr : 03F7: JZ Label000E Addr : 03F7: 0A 13 : jz Address = 040C 19 1320 c := 0 Addr : 03F9: 35 : Constant 1 $00000000 Addr : 03FA: 75 : Variable Operation Local Offset - 5 Write 1321 if fsrw.readEEPROM(pin|p,@c,1) Addr : 03FB: 00 : Drop Anchor Push Addr : 03FC: 64 : Variable Operation Local Offset - 1 Read Addr : 03FD: 78 : Variable Operation Local Offset - 6 Read Addr : 03FE: EA : Math Op | Addr : 03FF: 77 : Variable Operation Local Offset - 5 Address Addr : 0400: 36 : Constant 2 $00000001 Addr : 0401: 06 27 04 : Call Obj.Sub 39 4 Addr : 0404: JZ Label0010 Addr : 0404: 0A 04 : jz Address = 040A 4 Addr : 0406: PBASE Constant Address of Label0012 Addr : 0406: 87 84 52 : Memory Op Byte PBASE + ADDRESS Address = 0452 1322 abort string("EEPROM read") Addr : 0409: 31 : Abort value Addr : 040A: Label0010 Addr : 040A: Label0011 Addr : 040A: JMP Label000F Addr : 040A: 04 03 : Jmp 040F 3 Addr : 040C: Label000E 1324 c := byte[p] Addr : 040C: 78 : Variable Operation Local Offset - 6 Read Addr : 040D: 80 : Memory Op Byte POP Address READ Addr : 040E: 75 : Variable Operation Local Offset - 5 Write Addr : 040F: Label0013 Addr : 040F: Label000F 1325 dsp.hex(c,2) Addr : 040F: 01 : Drop Anchor Addr : 0410: 74 : Variable Operation Local Offset - 5 Read Addr : 0411: 37 00 : Constant Mask Y=0 00000002 Addr : 0413: 06 28 07 : Call Obj.Sub 40 7 1326 if c => " " and c =< "~" Addr : 0416: 74 : Variable Operation Local Offset - 5 Read Addr : 0417: 37 04 : Constant Mask Y=4 00000020 Addr : 0419: FE : Math Op => Addr : 041A: 74 : Variable Operation Local Offset - 5 Read Addr : 041B: 38 7E : Constant 1 Bytes - 7E Addr : 041D: FD : Math Op =< Addr : 041E: F0 : Math Op AND Addr : 041F: JZ Label0014 Addr : 041F: 0A 05 : jz Address = 0426 5 1327 byte[@buf0][i] := c Addr : 0421: 74 : Variable Operation Local Offset - 5 Read Addr : 0422: CF 20 : Memory Op Long DBASE + ADDRESS Address = 0020 Addr : 0424: 70 : Variable Operation Local Offset - 4 Read Addr : 0425: 91 : Memory Op Byte POP Address POP Index WRITE Addr : 0426: Label0014 Addr : 0426: Label0015 Addr : 0426: JMP Label000D Addr : 0426: 04 0C : Jmp 0434 12 Addr : 0428: Label000C 1329 dsp.out(" ") Addr : 0428: 01 : Drop Anchor Addr : 0429: 37 04 : Constant Mask Y=4 00000020 Addr : 042B: 06 28 09 : Call Obj.Sub 40 9 1330 dsp.out(" ") Addr : 042E: 01 : Drop Anchor Addr : 042F: 37 04 : Constant Mask Y=4 00000020 Addr : 0431: 06 28 09 : Call Obj.Sub 40 9 Addr : 0434: Label0016 Addr : 0434: Label000D 1331 dsp.out(" ") Addr : 0434: 01 : Drop Anchor Addr : 0435: 37 04 : Constant Mask Y=4 00000020 Addr : 0437: 06 28 09 : Call Obj.Sub 40 9 1332 p++ Addr : 043A: 7A 2E : Variable Operation Local Offset - 6 Assign VAR++ post inc Long Addr : 043C: Label000A 1316 repeat i from 0 to 7 Addr : 043C: 35 : Constant 1 $00000000 Addr : 043D: 37 22 : Constant Mask Y=34 Decrement 00000007 Addr : 043F: Repeat i Step Label0009 Addr : 043F: 72 02 FF A0 : Variable Operation Local Offset - 4 Assign Repeat-Var loop Address= 03E3 -96 Addr : 0443: Label000B 1333 buf2 := 0 Addr : 0443: 35 : Constant 1 $00000000 Addr : 0444: CD 28 : Memory Op Long DBASE + WRITE Address = 0028 1334 dsp.out("|") Addr : 0446: 01 : Drop Anchor Addr : 0447: 38 7C : Constant 1 Bytes - 7C Addr : 0449: 06 28 09 : Call Obj.Sub 40 9 1335 dsp.str(@buf0) Addr : 044C: 01 : Drop Anchor Addr : 044D: CF 20 : Memory Op Long DBASE + ADDRESS Address = 0020 Addr : 044F: 06 28 05 : Call Obj.Sub 40 5 1336 dsp.out("|") Addr : 0452: 01 : Drop Anchor Addr : 0453: 38 7C : Constant 1 Bytes - 7C Addr : 0455: 06 28 09 : Call Obj.Sub 40 9 1337 dsp.out(fReturn) Addr : 0458: 01 : Drop Anchor Addr : 0459: 38 0D : Constant 1 Bytes - 0D Addr : 045B: 06 28 09 : Call Obj.Sub 40 9 Addr : 045E: Label0004 Addr : 045E: JMP Label0003 Addr : 045E: 04 FF 5D : Jmp 03BE -163 Addr : 0461: Label0005 Addr : 0461: 32 : Return Addr : 0462: Label0012 Addr : 0462: Data : 45 45 50 52 4F 4D 20 72 EEPROM r Addr : 046A: Data : 65 61 64 00 ead. |===========================================================================| Spin Block showError with 1 Parameters and 0 Extra Stack Longs. Method 3 PRI showError(err) |===========================================================================| 188 if curlineno => 0 Addr : 046E: 54 : Variable Operation Global Offset - 5 Read Addr : 046F: 35 : Constant 1 $00000000 Addr : 0470: FE : Math Op => Addr : 0471: JZ Label0003 Addr : 0471: 0A 12 : jz Address = 0485 18 189 dsp.str(string("IN LINE ")) Addr : 0473: 01 : Drop Anchor Addr : 0474: PBASE Constant Address of Label0005 Addr : 0474: 87 84 98 : Memory Op Byte PBASE + ADDRESS Address = 0498 Addr : 0477: 06 28 05 : Call Obj.Sub 40 5 190 dsp.dec(curlineno) Addr : 047A: 01 : Drop Anchor Addr : 047B: 54 : Variable Operation Global Offset - 5 Read Addr : 047C: 06 28 06 : Call Obj.Sub 40 6 191 dsp.out(" ") Addr : 047F: 01 : Drop Anchor Addr : 0480: 37 04 : Constant Mask Y=4 00000020 Addr : 0482: 06 28 09 : Call Obj.Sub 40 9 Addr : 0485: Label0003 Addr : 0485: Label0004 192 if err < 0 Addr : 0485: 64 : Variable Operation Local Offset - 1 Read Addr : 0486: 35 : Constant 1 $00000000 Addr : 0487: F9 : Math Op < Addr : 0488: JZ Label0006 Addr : 0488: 0A 14 : jz Address = 049E 20 193 dsp.str(string("SD card ")) Addr : 048A: 01 : Drop Anchor Addr : 048B: PBASE Constant Address of Label0008 Addr : 048B: 87 84 A1 : Memory Op Byte PBASE + ADDRESS Address = 04A1 Addr : 048E: 06 28 05 : Call Obj.Sub 40 5 194 dsp.dec(err) Addr : 0491: 01 : Drop Anchor Addr : 0492: 64 : Variable Operation Local Offset - 1 Read Addr : 0493: 06 28 06 : Call Obj.Sub 40 6 195 dsp.out(dsp#Cr) Addr : 0496: 01 : Drop Anchor Addr : 0497: 38 0D : Constant 1 Bytes - 0D Addr : 0499: 06 28 09 : Call Obj.Sub 40 9 Addr : 049C: JMP Label0007 Addr : 049C: 04 04 : Jmp 04A2 4 Addr : 049E: Label0006 197 putlinet(err) Addr : 049E: 01 : Drop Anchor Addr : 049F: 64 : Variable Operation Local Offset - 1 Read Addr : 04A0: 05 05 : Call Sub 5 Addr : 04A2: Label0009 Addr : 04A2: Label0007 198 nextlineloc := eop - 2 Addr : 04A2: 48 : Variable Operation Global Offset - 2 Read Addr : 04A3: 37 00 : Constant Mask Y=0 00000002 Addr : 04A5: ED : Math Op - Addr : 04A6: 4D : Variable Operation Global Offset - 3 Write Addr : 04A7: 32 : Return Addr : 04A8: Label0005 Addr : 04A8: Data : 49 4E 20 4C 49 4E 45 20 IN LINE Addr : 04B0: Data : 00 . Addr : 04B1: Label0008 Addr : 04B1: Data : 53 44 20 63 61 72 64 20 SD card Addr : 04B9: Data : 00 . |===========================================================================| Spin Block getline with 0 Parameters and 2 Extra Stack Longs. Method 4 PRI getline | i, c |===========================================================================| 201 i := 0 Addr : 04BA: 35 : Constant 1 $00000000 Addr : 04BB: 65 : Variable Operation Local Offset - 1 Write Addr : 04BC: Label0003 203 c := key.getkey Addr : 04BC: 00 : Drop Anchor Push Addr : 04BD: 06 29 09 : Call Obj.Sub 41 9 Addr : 04C0: 69 : Variable Operation Local Offset - 2 Write 204 if c == bspKey Addr : 04C1: 68 : Variable Operation Local Offset - 2 Read Addr : 04C2: 38 C8 : Constant 1 Bytes - C8 Addr : 04C4: FC : Math Op == Addr : 04C5: JZ Label0006 Addr : 04C5: 0A 10 : jz Address = 04D7 16 205 if i > 0 Addr : 04C7: 64 : Variable Operation Local Offset - 1 Read Addr : 04C8: 35 : Constant 1 $00000000 Addr : 04C9: FA : Math Op > Addr : 04CA: JZ Label0008 Addr : 04CA: 0A 09 : jz Address = 04D5 9 206 dsp.str(string(backspace," ",backspace)) Addr : 04CC: 01 : Drop Anchor Addr : 04CD: PBASE Constant Address of Label000A Addr : 04CD: 87 84 F5 : Memory Op Byte PBASE + ADDRESS Address = 04F5 Addr : 04D0: 06 28 05 : Call Obj.Sub 40 5 207 i-- Addr : 04D3: 66 3E : Variable Operation Local Offset - 1 Assign VAR-- post-dec Long Addr : 04D5: Label0008 Addr : 04D5: Label0009 Addr : 04D5: JMP Label0007 Addr : 04D5: 04 2A : Jmp 0501 42 Addr : 04D7: Label0006 208 elseif c == fReturn Addr : 04D7: 68 : Variable Operation Local Offset - 2 Read Addr : 04D8: 38 0D : Constant 1 Bytes - 0D Addr : 04DA: FC : Math Op == Addr : 04DB: JZ Label000B Addr : 04DB: 0A 11 : jz Address = 04EE 17 209 dsp.out(c) Addr : 04DD: 01 : Drop Anchor Addr : 04DE: 68 : Variable Operation Local Offset - 2 Read Addr : 04DF: 06 28 09 : Call Obj.Sub 40 9 210 tline[i] := 0 Addr : 04E2: 35 : Constant 1 $00000000 Addr : 04E3: 64 : Variable Operation Local Offset - 1 Read Addr : 04E4: 99 82 1E : Memory Op Byte VBASE + POP Index WRITE Address = 021E 211 tp := @tline Addr : 04E7: 8B 82 1E : Memory Op Byte VBASE + ADDRESS Address = 021E Addr : 04EA: 45 : Variable Operation Global Offset - 1 Write 212 return Addr : 04EB: 32 : Return Addr : 04EC: JMP Label0007 Addr : 04EC: 04 13 : Jmp 0501 19 Addr : 04EE: Label000B 213 elseif i < linelen-1 Addr : 04EE: 64 : Variable Operation Local Offset - 1 Read Addr : 04EF: 37 07 : Constant Mask Y=7 00000100 Addr : 04F1: 36 : Constant 2 $00000001 Addr : 04F2: ED : Math Op - Addr : 04F3: F9 : Math Op < Addr : 04F4: JZ Label000C Addr : 04F4: 0A 0B : jz Address = 0501 11 214 dsp.out(c) Addr : 04F6: 01 : Drop Anchor Addr : 04F7: 68 : Variable Operation Local Offset - 2 Read Addr : 04F8: 06 28 09 : Call Obj.Sub 40 9 215 tline[i++] := c Addr : 04FB: 68 : Variable Operation Local Offset - 2 Read Addr : 04FC: 66 AE : Variable Operation Local Offset - 1 Assign VAR++ post inc Long Push Addr : 04FE: 99 82 1E : Memory Op Byte VBASE + POP Index WRITE Address = 021E Addr : 0501: Label000C Addr : 0501: Label0007 Addr : 0501: Label0004 Addr : 0501: JMP Label0003 Addr : 0501: 04 FF B8 : Jmp 04BC -72 Addr : 0504: Label0005 Addr : 0504: 32 : Return Addr : 0505: Label000A Addr : 0505: Data : 08 20 08 00 . .. |===========================================================================| Spin Block putlinet with 1 Parameters and 2 Extra Stack Longs. Method 5 pri putlinet(s) | c, ntoks |===========================================================================| 218 ntoks := (@tokx - @toks) / 2 Addr : 0509: A7 82 44 : Memory Op Word PBASE + ADDRESS Address = 0244 Addr : 050C: A7 81 CE : Memory Op Word PBASE + ADDRESS Address = 01CE Addr : 050F: ED : Math Op - Addr : 0510: 37 00 : Constant Mask Y=0 00000002 Addr : 0512: F6 : Math Op / Addr : 0513: 6D : Variable Operation Local Offset - 3 Write Addr : 0514: Label0003 219 repeat while c := byte[s++] Addr : 0514: 66 AE : Variable Operation Local Offset - 1 Assign VAR++ post inc Long Push Addr : 0516: 80 : Memory Op Byte POP Address READ Addr : 0517: 6A 80 : Variable Operation Local Offset - 2 Assign Write Push Addr : 0519: JZ Label0005 Addr : 0519: 0A 80 41 : jz Address = 055D 65 220 if c => 128 Addr : 051C: 68 : Variable Operation Local Offset - 2 Read Addr : 051D: 37 06 : Constant Mask Y=6 00000080 Addr : 051F: FE : Math Op => Addr : 0520: JZ Label0006 Addr : 0520: 0A 33 : jz Address = 0555 51 221 if (c -= 128) < ntoks Addr : 0522: 37 06 : Constant Mask Y=6 00000080 Addr : 0524: 6A CD : Variable Operation Local Offset - 2 Assign WordMathop - Push Addr : 0526: 6C : Variable Operation Local Offset - 3 Read Addr : 0527: F9 : Math Op < Addr : 0528: JZ Label0008 Addr : 0528: 0A 18 : jz Address = 0542 24 222 dsp.str(@@toks[c]) Addr : 052A: 01 : Drop Anchor Addr : 052B: 68 : Variable Operation Local Offset - 2 Read Addr : 052C: B4 81 CE : Memory Op Word PBASE + POP Index READ Address = 01CE Addr : 052F: 97 00 : Memory Op Byte PBASE + POP Index ADDRESS Address = 0000 Addr : 0531: 06 28 05 : Call Obj.Sub 40 5 223 if c <> 7 ' REM Addr : 0534: 68 : Variable Operation Local Offset - 2 Read Addr : 0535: 37 22 : Constant Mask Y=34 Decrement 00000007 Addr : 0537: FB : Math Op <> Addr : 0538: JZ Label000A Addr : 0538: 0A 06 : jz Address = 0540 6 224 dsp.out(" ") Addr : 053A: 01 : Drop Anchor Addr : 053B: 37 04 : Constant Mask Y=4 00000020 Addr : 053D: 06 28 09 : Call Obj.Sub 40 9 Addr : 0540: Label000A Addr : 0540: Label000B Addr : 0540: JMP Label0009 Addr : 0540: 04 11 : Jmp 0553 17 Addr : 0542: Label0008 226 dsp.out("{") Addr : 0542: 01 : Drop Anchor Addr : 0543: 38 7B : Constant 1 Bytes - 7B Addr : 0545: 06 28 09 : Call Obj.Sub 40 9 227 dsp.dec(c) Addr : 0548: 01 : Drop Anchor Addr : 0549: 68 : Variable Operation Local Offset - 2 Read Addr : 054A: 06 28 06 : Call Obj.Sub 40 6 228 dsp.out("}") Addr : 054D: 01 : Drop Anchor Addr : 054E: 38 7D : Constant 1 Bytes - 7D Addr : 0550: 06 28 09 : Call Obj.Sub 40 9 Addr : 0553: Label000C Addr : 0553: Label0009 Addr : 0553: JMP Label0007 Addr : 0553: 04 05 : Jmp 055A 5 Addr : 0555: Label0006 230 dsp.out(c) Addr : 0555: 01 : Drop Anchor Addr : 0556: 68 : Variable Operation Local Offset - 2 Read Addr : 0557: 06 28 09 : Call Obj.Sub 40 9 Addr : 055A: Label000D Addr : 055A: Label0007 Addr : 055A: Label0004 Addr : 055A: JMP Label0003 Addr : 055A: 04 FF B7 : Jmp 0514 -73 Addr : 055D: Label0005 231 dsp.out(fReturn) Addr : 055D: 01 : Drop Anchor Addr : 055E: 38 0D : Constant 1 Bytes - 0D Addr : 0560: 06 28 09 : Call Obj.Sub 40 9 Addr : 0563: 32 : Return |===========================================================================| Spin Block spaces with 0 Parameters and 1 Extra Stack Longs. Method 6 pri spaces | c |===========================================================================| 234 repeat Addr : 0564: Label0003 235 c := byte[tp] Addr : 0564: 44 : Variable Operation Global Offset - 1 Read Addr : 0565: 80 : Memory Op Byte POP Address READ Addr : 0566: 65 : Variable Operation Local Offset - 1 Write 236 if c == 0 or c > " " Addr : 0567: 64 : Variable Operation Local Offset - 1 Read Addr : 0568: 35 : Constant 1 $00000000 Addr : 0569: FC : Math Op == Addr : 056A: 64 : Variable Operation Local Offset - 1 Read Addr : 056B: 37 04 : Constant Mask Y=4 00000020 Addr : 056D: FA : Math Op > Addr : 056E: F2 : Math Op OR Addr : 056F: JZ Label0006 Addr : 056F: 0A 02 : jz Address = 0573 2 237 return c Addr : 0571: 64 : Variable Operation Local Offset - 1 Read Addr : 0572: 33 : Return value Addr : 0573: Label0006 Addr : 0573: Label0007 238 tp++ Addr : 0573: 46 2E : Variable Operation Global Offset - 1 Assign VAR++ post inc Long Addr : 0575: Label0004 Addr : 0575: JMP Label0003 Addr : 0575: 04 6D : Jmp 0564 -19 Addr : 0577: Label0005 Addr : 0577: 32 : Return |===========================================================================| Spin Block skipspaces with 0 Parameters and 0 Extra Stack Longs. Method 7 pri skipspaces |===========================================================================| 241 if byte[tp] Addr : 0578: 44 : Variable Operation Global Offset - 1 Read Addr : 0579: 80 : Memory Op Byte POP Address READ Addr : 057A: JZ Label0003 Addr : 057A: 0A 02 : jz Address = 057E 2 242 tp++ Addr : 057C: 46 2E : Variable Operation Global Offset - 1 Assign VAR++ post inc Long Addr : 057E: Label0003 Addr : 057E: Label0004 243 return spaces Addr : 057E: 00 : Drop Anchor Push Addr : 057F: 05 06 : Call Sub 6 Addr : 0581: 33 : Return value Addr : 0582: Data : 32 2 |===========================================================================| Spin Block parseliteral with 0 Parameters and 2 Extra Stack Longs. Method 8 pri parseliteral | r, c |===========================================================================| 246 r := 0 Addr : 0583: 35 : Constant 1 $00000000 Addr : 0584: 65 : Variable Operation Local Offset - 1 Write Addr : 0585: Label0003 248 c := byte[tp] Addr : 0585: 44 : Variable Operation Global Offset - 1 Read Addr : 0586: 80 : Memory Op Byte POP Address READ Addr : 0587: 69 : Variable Operation Local Offset - 2 Write 249 if c < "0" or c > "9" Addr : 0588: 68 : Variable Operation Local Offset - 2 Read Addr : 0589: 38 30 : Constant 1 Bytes - 30 Addr : 058B: F9 : Math Op < Addr : 058C: 68 : Variable Operation Local Offset - 2 Read Addr : 058D: 38 39 : Constant 1 Bytes - 39 Addr : 058F: FA : Math Op > Addr : 0590: F2 : Math Op OR Addr : 0591: JZ Label0006 Addr : 0591: 0A 02 : jz Address = 0595 2 250 return r Addr : 0593: 64 : Variable Operation Local Offset - 1 Read Addr : 0594: 33 : Return value Addr : 0595: Label0006 Addr : 0595: Label0007 251 r := r * 10 + c - "0" Addr : 0595: 64 : Variable Operation Local Offset - 1 Read Addr : 0596: 38 0A : Constant 1 Bytes - 0A Addr : 0598: F4 : Math Op * Addr : 0599: 68 : Variable Operation Local Offset - 2 Read Addr : 059A: EC : Math Op + Addr : 059B: 38 30 : Constant 1 Bytes - 30 Addr : 059D: ED : Math Op - Addr : 059E: 65 : Variable Operation Local Offset - 1 Write 252 tp++ Addr : 059F: 46 2E : Variable Operation Global Offset - 1 Assign VAR++ post inc Long Addr : 05A1: Label0004 Addr : 05A1: JMP Label0003 Addr : 05A1: 04 62 : Jmp 0585 -30 Addr : 05A3: Label0005 Addr : 05A3: 32 : Return |===========================================================================| Spin Block movprog with 2 Parameters and 0 Extra Stack Longs. Method 9 pri movprog(at, delta) |===========================================================================| 255 if eop + delta + 2 - long[userPtr] > progsize Addr : 05A4: 48 : Variable Operation Global Offset - 2 Read Addr : 05A5: 68 : Variable Operation Local Offset - 2 Read Addr : 05A6: EC : Math Op + Addr : 05A7: 37 00 : Constant Mask Y=0 00000002 Addr : 05A9: EC : Math Op + Addr : 05AA: 39 73 20 : Constant 2 Bytes - 73 20 Addr : 05AD: C0 : Memory Op Long POP Address READ Addr : 05AE: ED : Math Op - Addr : 05AF: 37 0C : Constant Mask Y=12 00002000 Addr : 05B1: FA : Math Op > Addr : 05B2: JZ Label0003 Addr : 05B2: 0A 04 : jz Address = 05B8 4 Addr : 05B4: PBASE Constant Address of Label0005 Addr : 05B4: 87 85 B4 : Memory Op Byte PBASE + ADDRESS Address = 05B4 256 abort string("NO MEMORY") Addr : 05B7: 31 : Abort value Addr : 05B8: Label0003 Addr : 05B8: Label0004 257 bytemove(at+delta, at, eop-at) Addr : 05B8: 64 : Variable Operation Local Offset - 1 Read Addr : 05B9: 68 : Variable Operation Local Offset - 2 Read Addr : 05BA: EC : Math Op + Addr : 05BB: 64 : Variable Operation Local Offset - 1 Read Addr : 05BC: 48 : Variable Operation Global Offset - 2 Read Addr : 05BD: 64 : Variable Operation Local Offset - 1 Read Addr : 05BE: ED : Math Op - Addr : 05BF: 1C : ByteMove(To, From, Count) 258 eop += delta Addr : 05C0: 68 : Variable Operation Local Offset - 2 Read Addr : 05C1: 4A 4C : Variable Operation Global Offset - 2 Assign WordMathop + Addr : 05C3: 32 : Return Addr : 05C4: Label0005 Addr : 05C4: Data : 4E 4F 20 4D 45 4D 4F 52 NO MEMOR Addr : 05CC: Data : 59 00 Y. |===========================================================================| Spin Block fixvar with 1 Parameters and 0 Extra Stack Longs. Method 10 pri fixvar(c) |===========================================================================| 261 if c => "a" Addr : 05CE: 64 : Variable Operation Local Offset - 1 Read Addr : 05CF: 38 61 : Constant 1 Bytes - 61 Addr : 05D1: FE : Math Op => Addr : 05D2: JZ Label0003 Addr : 05D2: 0A 04 : jz Address = 05D8 4 262 c -= 32 Addr : 05D4: 37 04 : Constant Mask Y=4 00000020 Addr : 05D6: 66 4D : Variable Operation Local Offset - 1 Assign WordMathop - Addr : 05D8: Label0003 Addr : 05D8: Label0004 263 return c - "A" Addr : 05D8: 64 : Variable Operation Local Offset - 1 Read Addr : 05D9: 38 41 : Constant 1 Bytes - 41 Addr : 05DB: ED : Math Op - Addr : 05DC: 33 : Return value Addr : 05DD: Data : 32 2 |===========================================================================| Spin Block isvar with 1 Parameters and 0 Extra Stack Longs. Method 11 pri isvar(c) |===========================================================================| 266 c := fixvar(c) Addr : 05DE: 00 : Drop Anchor Push Addr : 05DF: 64 : Variable Operation Local Offset - 1 Read Addr : 05E0: 05 0A : Call Sub 10 Addr : 05E2: 65 : Variable Operation Local Offset - 1 Write 267 return c => 0 and c < 26 Addr : 05E3: 64 : Variable Operation Local Offset - 1 Read Addr : 05E4: 35 : Constant 1 $00000000 Addr : 05E5: FE : Math Op => Addr : 05E6: 64 : Variable Operation Local Offset - 1 Read Addr : 05E7: 38 1A : Constant 1 Bytes - 1A Addr : 05E9: F9 : Math Op < Addr : 05EA: F0 : Math Op AND Addr : 05EB: 33 : Return value Addr : 05EC: Data : 32 2 |===========================================================================| Spin Block tokenize with 0 Parameters and 8 Extra Stack Longs. Method 12 pri tokenize | tok, c, at, put, state, i, j, ntoks |===========================================================================| 270 ntoks := (@tokx - @toks) / 2 Addr : 05ED: A7 82 44 : Memory Op Word PBASE + ADDRESS Address = 0244 Addr : 05F0: A7 81 CE : Memory Op Word PBASE + ADDRESS Address = 01CE Addr : 05F3: ED : Math Op - Addr : 05F4: 37 00 : Constant Mask Y=0 00000002 Addr : 05F6: F6 : Math Op / Addr : 05F7: CD 20 : Memory Op Long DBASE + WRITE Address = 0020 271 at := tp Addr : 05F9: 44 : Variable Operation Global Offset - 1 Read Addr : 05FA: 6D : Variable Operation Local Offset - 3 Write 272 put := tp Addr : 05FB: 44 : Variable Operation Global Offset - 1 Read Addr : 05FC: 71 : Variable Operation Local Offset - 4 Write 273 state := 0 Addr : 05FD: 35 : Constant 1 $00000000 Addr : 05FE: 75 : Variable Operation Local Offset - 5 Write Addr : 05FF: Label0003 274 repeat while c := byte[at] Addr : 05FF: 6C : Variable Operation Local Offset - 3 Read Addr : 0600: 80 : Memory Op Byte POP Address READ Addr : 0601: 6A 80 : Variable Operation Local Offset - 2 Assign Write Push Addr : 0603: JZ Label0005 Addr : 0603: 0A 80 98 : jz Address = 069E 152 275 if c == quote Addr : 0606: 68 : Variable Operation Local Offset - 2 Read Addr : 0607: 38 22 : Constant 1 Bytes - 22 Addr : 0609: FC : Math Op == Addr : 060A: JZ Label0006 Addr : 060A: 0A 12 : jz Address = 061E 18 276 if state == "Q" Addr : 060C: 74 : Variable Operation Local Offset - 5 Read Addr : 060D: 38 51 : Constant 1 Bytes - 51 Addr : 060F: FC : Math Op == Addr : 0610: JZ Label0008 Addr : 0610: 0A 04 : jz Address = 0616 4 277 state := 0 Addr : 0612: 35 : Constant 1 $00000000 Addr : 0613: 75 : Variable Operation Local Offset - 5 Write Addr : 0614: JMP Label0009 Addr : 0614: 04 08 : Jmp 061E 8 Addr : 0616: Label0008 278 elseif state == 0 Addr : 0616: 74 : Variable Operation Local Offset - 5 Read Addr : 0617: 35 : Constant 1 $00000000 Addr : 0618: FC : Math Op == Addr : 0619: JZ Label000A Addr : 0619: 0A 03 : jz Address = 061E 3 279 state := "Q" Addr : 061B: 38 51 : Constant 1 Bytes - 51 Addr : 061D: 75 : Variable Operation Local Offset - 5 Write Addr : 061E: Label000A Addr : 061E: Label0009 Addr : 061E: Label0006 Addr : 061E: Label0007 280 if state == 0 Addr : 061E: 74 : Variable Operation Local Offset - 5 Read Addr : 061F: 35 : Constant 1 $00000000 Addr : 0620: FC : Math Op == Addr : 0621: JZ Label000B Addr : 0621: 0A 80 71 : jz Address = 0695 113 281 repeat i from 0 to ntoks-1 Addr : 0624: 35 : Constant 1 $00000000 Addr : 0625: 79 : Variable Operation Local Offset - 6 Write Addr : 0626: Label000D 282 tok := @@toks[i] Addr : 0626: 78 : Variable Operation Local Offset - 6 Read Addr : 0627: B4 81 CE : Memory Op Word PBASE + POP Index READ Address = 01CE Addr : 062A: 97 00 : Memory Op Byte PBASE + POP Index ADDRESS Address = 0000 Addr : 062C: 65 : Variable Operation Local Offset - 1 Write 283 j := 0 Addr : 062D: 35 : Constant 1 $00000000 Addr : 062E: 7D : Variable Operation Local Offset - 7 Write Addr : 062F: Label0010 284 repeat while byte[tok] and ((byte[tok] ^ byte[j+at]) & caseBit) == 0 Addr : 062F: 64 : Variable Operation Local Offset - 1 Read Addr : 0630: 80 : Memory Op Byte POP Address READ Addr : 0631: 64 : Variable Operation Local Offset - 1 Read Addr : 0632: 80 : Memory Op Byte POP Address READ Addr : 0633: 7C : Variable Operation Local Offset - 7 Read Addr : 0634: 6C : Variable Operation Local Offset - 3 Read Addr : 0635: EC : Math Op + Addr : 0636: 80 : Memory Op Byte POP Address READ Addr : 0637: EB : Math Op ^ Addr : 0638: 37 44 : Constant Mask Y=68 Invert FFFFFFDF Addr : 063A: E8 : Math Op & Addr : 063B: 35 : Constant 1 $00000000 Addr : 063C: FC : Math Op == Addr : 063D: F0 : Math Op AND Addr : 063E: JZ Label0012 Addr : 063E: 0A 06 : jz Address = 0646 6 285 j++ Addr : 0640: 7E 2E : Variable Operation Local Offset - 7 Assign VAR++ post inc Long 286 tok++ Addr : 0642: 66 2E : Variable Operation Local Offset - 1 Assign VAR++ post inc Long Addr : 0644: Label0011 Addr : 0644: JMP Label0010 Addr : 0644: 04 69 : Jmp 062F -23 Addr : 0646: Label0012 287 if byte[tok] == 0 and not isvar(byte[j+at]) Addr : 0646: 64 : Variable Operation Local Offset - 1 Read Addr : 0647: 80 : Memory Op Byte POP Address READ Addr : 0648: 35 : Constant 1 $00000000 Addr : 0649: FC : Math Op == Addr : 064A: 00 : Drop Anchor Push Addr : 064B: 7C : Variable Operation Local Offset - 7 Read Addr : 064C: 6C : Variable Operation Local Offset - 3 Read Addr : 064D: EC : Math Op + Addr : 064E: 80 : Memory Op Byte POP Address READ Addr : 064F: 05 0B : Call Sub 11 Addr : 0651: FF : Math Op NOT Addr : 0652: F0 : Math Op AND Addr : 0653: JZ Label0013 Addr : 0653: 0A 25 : jz Address = 067A 37 288 byte[put++] := 128 + i Addr : 0655: 37 06 : Constant Mask Y=6 00000080 Addr : 0657: 78 : Variable Operation Local Offset - 6 Read Addr : 0658: EC : Math Op + Addr : 0659: 72 AE : Variable Operation Local Offset - 4 Assign VAR++ post inc Long Push Addr : 065B: 81 : Memory Op Byte POP Address WRITE 289 at += j Addr : 065C: 7C : Variable Operation Local Offset - 7 Read Addr : 065D: 6E 4C : Variable Operation Local Offset - 3 Assign WordMathop + 290 if i == 7 Addr : 065F: 78 : Variable Operation Local Offset - 6 Read Addr : 0660: 37 22 : Constant Mask Y=34 Decrement 00000007 Addr : 0662: FC : Math Op == Addr : 0663: JZ Label0015 Addr : 0663: 0A 05 : jz Address = 066A 5 291 state := "R" Addr : 0665: 38 52 : Constant 1 Bytes - 52 Addr : 0667: 75 : Variable Operation Local Offset - 5 Write Addr : 0668: JMP Label0016 Addr : 0668: 04 0E : Jmp 0678 14 Addr : 066A: Label0015 Addr : 066A: Label0018 293 repeat while byte[at] == " " Addr : 066A: 6C : Variable Operation Local Offset - 3 Read Addr : 066B: 80 : Memory Op Byte POP Address READ Addr : 066C: 37 04 : Constant Mask Y=4 00000020 Addr : 066E: FC : Math Op == Addr : 066F: JZ Label001A Addr : 066F: 0A 04 : jz Address = 0675 4 294 at++ Addr : 0671: 6E 2E : Variable Operation Local Offset - 3 Assign VAR++ post inc Long Addr : 0673: Label0019 Addr : 0673: JMP Label0018 Addr : 0673: 04 75 : Jmp 066A -11 Addr : 0675: Label001A 295 state := "F" Addr : 0675: 38 46 : Constant 1 Bytes - 46 Addr : 0677: 75 : Variable Operation Local Offset - 5 Write Addr : 0678: Label0017 Addr : 0678: Label0016 296 quit Addr : 0678: JMP Label000F Addr : 0678: 04 09 : Jmp 0683 9 Addr : 067A: Label0013 Addr : 067A: Label0014 Addr : 067A: Label000E 281 repeat i from 0 to ntoks-1 Addr : 067A: 35 : Constant 1 $00000000 Addr : 067B: CC 20 : Memory Op Long DBASE + READ Address = 0020 Addr : 067D: 36 : Constant 2 $00000001 Addr : 067E: ED : Math Op - Addr : 067F: Repeat i Step Label000D Addr : 067F: 7A 02 FF A3 : Variable Operation Local Offset - 6 Assign Repeat-Var loop Address= 0626 -93 Addr : 0683: Label000F 297 if state == "F" Addr : 0683: 74 : Variable Operation Local Offset - 5 Read Addr : 0684: 38 46 : Constant 1 Bytes - 46 Addr : 0686: FC : Math Op == Addr : 0687: JZ Label001B Addr : 0687: 0A 04 : jz Address = 068D 4 298 state := 0 Addr : 0689: 35 : Constant 1 $00000000 Addr : 068A: 75 : Variable Operation Local Offset - 5 Write Addr : 068B: JMP Label001C Addr : 068B: 04 06 : Jmp 0693 6 Addr : 068D: Label001B 300 byte[put++] := byte[at++] Addr : 068D: 6E AE : Variable Operation Local Offset - 3 Assign VAR++ post inc Long Push Addr : 068F: 80 : Memory Op Byte POP Address READ Addr : 0690: 72 AE : Variable Operation Local Offset - 4 Assign VAR++ post inc Long Push Addr : 0692: 81 : Memory Op Byte POP Address WRITE Addr : 0693: Label001D Addr : 0693: Label001C Addr : 0693: JMP Label000C Addr : 0693: 04 06 : Jmp 069B 6 Addr : 0695: Label000B 302 byte[put++] := byte[at++] Addr : 0695: 6E AE : Variable Operation Local Offset - 3 Assign VAR++ post inc Long Push Addr : 0697: 80 : Memory Op Byte POP Address READ Addr : 0698: 72 AE : Variable Operation Local Offset - 4 Assign VAR++ post inc Long Push Addr : 069A: 81 : Memory Op Byte POP Address WRITE Addr : 069B: Label001E Addr : 069B: Label000C Addr : 069B: Label0004 Addr : 069B: JMP Label0003 Addr : 069B: 04 FF 61 : Jmp 05FF -159 Addr : 069E: Label0005 303 byte[put] := 0 Addr : 069E: 35 : Constant 1 $00000000 Addr : 069F: 70 : Variable Operation Local Offset - 4 Read Addr : 06A0: 81 : Memory Op Byte POP Address WRITE Addr : 06A1: 32 : Return |===========================================================================| Spin Block wordat with 1 Parameters and 0 Extra Stack Longs. Method 13 pri wordat(loc) |===========================================================================| 306 return (byte[loc]<<8)+byte[loc+1] Addr : 06A2: 64 : Variable Operation Local Offset - 1 Read Addr : 06A3: 80 : Memory Op Byte POP Address READ Addr : 06A4: 37 02 : Constant Mask Y=2 00000008 Addr : 06A6: E3 : Math Op << Addr : 06A7: 64 : Variable Operation Local Offset - 1 Read Addr : 06A8: 36 : Constant 2 $00000001 Addr : 06A9: EC : Math Op + Addr : 06AA: 80 : Memory Op Byte POP Address READ Addr : 06AB: EC : Math Op + Addr : 06AC: 33 : Return value Addr : 06AD: Data : 32 2 |===========================================================================| Spin Block findline with 1 Parameters and 1 Extra Stack Longs. Method 14 pri findline(lineno) | at |===========================================================================| 309 at := long[userPtr] Addr : 06AE: 39 73 20 : Constant 2 Bytes - 73 20 Addr : 06B1: C0 : Memory Op Long POP Address READ Addr : 06B2: 69 : Variable Operation Local Offset - 2 Write Addr : 06B3: Label0003 310 repeat while wordat(at) < lineno Addr : 06B3: 00 : Drop Anchor Push Addr : 06B4: 68 : Variable Operation Local Offset - 2 Read Addr : 06B5: 05 0D : Call Sub 13 Addr : 06B7: 64 : Variable Operation Local Offset - 1 Read Addr : 06B8: F9 : Math Op < Addr : 06B9: JZ Label0005 Addr : 06B9: 0A 0C : jz Address = 06C7 12 311 at += 3 + strsize(at+2) Addr : 06BB: 37 21 : Constant Mask Y=33 Decrement 00000003 Addr : 06BD: 68 : Variable Operation Local Offset - 2 Read Addr : 06BE: 37 00 : Constant Mask Y=0 00000002 Addr : 06C0: EC : Math Op + Addr : 06C1: 16 : StrSize(String) Addr : 06C2: EC : Math Op + Addr : 06C3: 6A 4C : Variable Operation Local Offset - 2 Assign WordMathop + Addr : 06C5: Label0004 Addr : 06C5: JMP Label0003 Addr : 06C5: 04 6C : Jmp 06B3 -20 Addr : 06C7: Label0005 312 return at Addr : 06C7: 68 : Variable Operation Local Offset - 2 Read Addr : 06C8: 33 : Return value Addr : 06C9: Data : 32 2 |===========================================================================| Spin Block insertline with 0 Parameters and 6 Extra Stack Longs. Method 15 pri insertline | lineno, fc, loc, locat, newlen, oldlen |===========================================================================| 315 lineno := parseliteral Addr : 06CA: 00 : Drop Anchor Push Addr : 06CB: 05 08 : Call Sub 8 Addr : 06CD: 65 : Variable Operation Local Offset - 1 Write 316 if lineno < 0 or lineno => 65535 Addr : 06CE: 64 : Variable Operation Local Offset - 1 Read Addr : 06CF: 35 : Constant 1 $00000000 Addr : 06D0: F9 : Math Op < Addr : 06D1: 64 : Variable Operation Local Offset - 1 Read Addr : 06D2: 37 2F : Constant Mask Y=47 Decrement 0000FFFF Addr : 06D4: FE : Math Op => Addr : 06D5: F2 : Math Op OR Addr : 06D6: JZ Label0003 Addr : 06D6: 0A 04 : jz Address = 06DC 4 317 abort @ln Addr : 06D8: 87 82 51 : Memory Op Byte PBASE + ADDRESS Address = 0251 Addr : 06DB: 31 : Abort value Addr : 06DC: Label0003 Addr : 06DC: Label0004 318 tokenize Addr : 06DC: 01 : Drop Anchor Addr : 06DD: 05 0C : Call Sub 12 319 fc := spaces Addr : 06DF: 00 : Drop Anchor Push Addr : 06E0: 05 06 : Call Sub 6 Addr : 06E2: 69 : Variable Operation Local Offset - 2 Write 320 loc := findline(lineno) Addr : 06E3: 00 : Drop Anchor Push Addr : 06E4: 64 : Variable Operation Local Offset - 1 Read Addr : 06E5: 05 0E : Call Sub 14 Addr : 06E7: 6D : Variable Operation Local Offset - 3 Write 321 locat := wordat(loc) Addr : 06E8: 00 : Drop Anchor Push Addr : 06E9: 6C : Variable Operation Local Offset - 3 Read Addr : 06EA: 05 0D : Call Sub 13 Addr : 06EC: 71 : Variable Operation Local Offset - 4 Write 322 newlen := 3 + strsize(tp) Addr : 06ED: 37 21 : Constant Mask Y=33 Decrement 00000003 Addr : 06EF: 44 : Variable Operation Global Offset - 1 Read Addr : 06F0: 16 : StrSize(String) Addr : 06F1: EC : Math Op + Addr : 06F2: 75 : Variable Operation Local Offset - 5 Write 323 if locat == lineno Addr : 06F3: 70 : Variable Operation Local Offset - 4 Read Addr : 06F4: 64 : Variable Operation Local Offset - 1 Read Addr : 06F5: FC : Math Op == Addr : 06F6: JZ Label0005 Addr : 06F6: 0A 23 : jz Address = 071B 35 324 oldlen := 3 + strsize(loc+2) Addr : 06F8: 37 21 : Constant Mask Y=33 Decrement 00000003 Addr : 06FA: 6C : Variable Operation Local Offset - 3 Read Addr : 06FB: 37 00 : Constant Mask Y=0 00000002 Addr : 06FD: EC : Math Op + Addr : 06FE: 16 : StrSize(String) Addr : 06FF: EC : Math Op + Addr : 0700: 79 : Variable Operation Local Offset - 6 Write 325 if fc == 0 Addr : 0701: 68 : Variable Operation Local Offset - 2 Read Addr : 0702: 35 : Constant 1 $00000000 Addr : 0703: FC : Math Op == Addr : 0704: JZ Label0007 Addr : 0704: 0A 0A : jz Address = 0710 10 326 movprog(loc+oldlen, -oldlen) Addr : 0706: 01 : Drop Anchor Addr : 0707: 6C : Variable Operation Local Offset - 3 Read Addr : 0708: 78 : Variable Operation Local Offset - 6 Read Addr : 0709: EC : Math Op + Addr : 070A: 78 : Variable Operation Local Offset - 6 Read Addr : 070B: E6 : Math Op - Addr : 070C: 05 09 : Call Sub 9 Addr : 070E: JMP Label0008 Addr : 070E: 04 09 : Jmp 0719 9 Addr : 0710: Label0007 328 movprog(loc+oldlen, newlen-oldlen) Addr : 0710: 01 : Drop Anchor Addr : 0711: 6C : Variable Operation Local Offset - 3 Read Addr : 0712: 78 : Variable Operation Local Offset - 6 Read Addr : 0713: EC : Math Op + Addr : 0714: 74 : Variable Operation Local Offset - 5 Read Addr : 0715: 78 : Variable Operation Local Offset - 6 Read Addr : 0716: ED : Math Op - Addr : 0717: 05 09 : Call Sub 9 Addr : 0719: Label0009 Addr : 0719: Label0008 Addr : 0719: JMP Label0006 Addr : 0719: 04 08 : Jmp 0723 8 Addr : 071B: Label0005 329 elseif fc Addr : 071B: 68 : Variable Operation Local Offset - 2 Read Addr : 071C: JZ Label000A Addr : 071C: 0A 05 : jz Address = 0723 5 330 movprog(loc, newlen) Addr : 071E: 01 : Drop Anchor Addr : 071F: 6C : Variable Operation Local Offset - 3 Read Addr : 0720: 74 : Variable Operation Local Offset - 5 Read Addr : 0721: 05 09 : Call Sub 9 Addr : 0723: Label000A Addr : 0723: Label0006 331 if fc Addr : 0723: 68 : Variable Operation Local Offset - 2 Read Addr : 0724: JZ Label000B Addr : 0724: 0A 15 : jz Address = 073B 21 332 byte[loc] := lineno >> 8 Addr : 0726: 64 : Variable Operation Local Offset - 1 Read Addr : 0727: 37 02 : Constant Mask Y=2 00000008 Addr : 0729: E2 : Math Op >> Addr : 072A: 6C : Variable Operation Local Offset - 3 Read Addr : 072B: 81 : Memory Op Byte POP Address WRITE 333 byte[loc+1] := lineno Addr : 072C: 64 : Variable Operation Local Offset - 1 Read Addr : 072D: 6C : Variable Operation Local Offset - 3 Read Addr : 072E: 36 : Constant 2 $00000001 Addr : 072F: EC : Math Op + Addr : 0730: 81 : Memory Op Byte POP Address WRITE 334 bytemove(loc+2, tp, newlen-2) Addr : 0731: 6C : Variable Operation Local Offset - 3 Read Addr : 0732: 37 00 : Constant Mask Y=0 00000002 Addr : 0734: EC : Math Op + Addr : 0735: 44 : Variable Operation Global Offset - 1 Read Addr : 0736: 74 : Variable Operation Local Offset - 5 Read Addr : 0737: 37 00 : Constant Mask Y=0 00000002 Addr : 0739: ED : Math Op - Addr : 073A: 1C : ByteMove(To, From, Count) Addr : 073B: Label000B Addr : 073B: Label000C Addr : 073B: 32 : Return |===========================================================================| Spin Block clearvars with 0 Parameters and 0 Extra Stack Longs. Method 16 pri clearvars |===========================================================================| 337 bytefill(@vars, 0, 26) Addr : 073C: 5F : Variable Operation Global Offset - 7 Address Addr : 073D: 35 : Constant 1 $00000000 Addr : 073E: 38 1A : Constant 1 Bytes - 1A Addr : 0740: 18 : ByteFill(Start, Value, Count) 338 pauseTime := 0 Addr : 0741: 35 : Constant 1 $00000000 Addr : 0742: 59 : Variable Operation Global Offset - 6 Write 339 nextlineloc := long[userPtr] Addr : 0743: 39 73 20 : Constant 2 Bytes - 73 20 Addr : 0746: C0 : Memory Op Long POP Address READ Addr : 0747: 4D : Variable Operation Global Offset - 3 Write 340 sp := 0 Addr : 0748: 35 : Constant 1 $00000000 Addr : 0749: 41 : Variable Operation Global Offset - 0 Write Addr : 074A: 32 : Return |===========================================================================| Spin Block newprog with 0 Parameters and 0 Extra Stack Longs. Method 17 pri newprog |===========================================================================| 343 byte[long[userPtr]][0] := 255 Addr : 074B: 37 27 : Constant Mask Y=39 Decrement 000000FF Addr : 074D: 39 73 20 : Constant 2 Bytes - 73 20 Addr : 0750: C0 : Memory Op Long POP Address READ Addr : 0751: 35 : Constant 1 $00000000 Addr : 0752: 91 : Memory Op Byte POP Address POP Index WRITE 344 byte[long[userPtr]][1] := 255 Addr : 0753: 37 27 : Constant Mask Y=39 Decrement 000000FF Addr : 0755: 39 73 20 : Constant 2 Bytes - 73 20 Addr : 0758: C0 : Memory Op Long POP Address READ Addr : 0759: 36 : Constant 2 $00000001 Addr : 075A: 91 : Memory Op Byte POP Address POP Index WRITE 345 byte[long[userPtr]][2] := 0 Addr : 075B: 35 : Constant 1 $00000000 Addr : 075C: 39 73 20 : Constant 2 Bytes - 73 20 Addr : 075F: C0 : Memory Op Long POP Address READ Addr : 0760: 37 00 : Constant Mask Y=0 00000002 Addr : 0762: 91 : Memory Op Byte POP Address POP Index WRITE 346 eop := long[userPtr] + 2 Addr : 0763: 39 73 20 : Constant 2 Bytes - 73 20 Addr : 0766: C0 : Memory Op Long POP Address READ Addr : 0767: 37 00 : Constant Mask Y=0 00000002 Addr : 0769: EC : Math Op + Addr : 076A: 49 : Variable Operation Global Offset - 2 Write 347 nextlineloc := eop - 2 Addr : 076B: 48 : Variable Operation Global Offset - 2 Read Addr : 076C: 37 00 : Constant Mask Y=0 00000002 Addr : 076E: ED : Math Op - Addr : 076F: 4D : Variable Operation Global Offset - 3 Write 348 sp := 0 Addr : 0770: 35 : Constant 1 $00000000 Addr : 0771: 41 : Variable Operation Global Offset - 0 Write Addr : 0772: 32 : Return |===========================================================================| Spin Block clearall with 0 Parameters and 0 Extra Stack Longs. Method 18 pri clearall |===========================================================================| 351 newprog Addr : 0773: 01 : Drop Anchor Addr : 0774: 05 11 : Call Sub 17 352 clearvars Addr : 0776: 01 : Drop Anchor Addr : 0777: 05 10 : Call Sub 16 Addr : 0779: 32 : Return |===========================================================================| Spin Block pushstack with 0 Parameters and 0 Extra Stack Longs. Method 19 pri pushstack |===========================================================================| 355 if sp => constant(maxstack-1) Addr : 077A: 40 : Variable Operation Global Offset - 0 Read Addr : 077B: 38 13 : Constant 1 Bytes - 13 Addr : 077D: FE : Math Op => Addr : 077E: JZ Label0003 Addr : 077E: 0A 04 : jz Address = 0784 4 Addr : 0780: PBASE Constant Address of Label0005 Addr : 0780: 87 87 7B : Memory Op Byte PBASE + ADDRESS Address = 077B 356 abort string("RECURSION ERROR") Addr : 0783: 31 : Abort value Addr : 0784: Label0003 Addr : 0784: Label0004 357 stack[sp++] := nextlineloc Addr : 0784: 4C : Variable Operation Global Offset - 3 Read Addr : 0785: 42 AE : Variable Operation Global Offset - 0 Assign VAR++ post inc Long Push Addr : 0787: D9 80 84 : Memory Op Long VBASE + POP Index WRITE Address = 0084 Addr : 078A: 32 : Return Addr : 078B: Label0005 Addr : 078B: Data : 52 45 43 55 52 53 49 4F RECURSIO Addr : 0793: Data : 4E 20 45 52 52 4F 52 00 N ERROR. Addr : 079B: Data : |===========================================================================| Spin Block getAddress with 1 Parameters and 1 Extra Stack Longs. Method 20 pri getAddress(delim) | t |===========================================================================| 360 if spaces <> "[" Addr : 079B: 00 : Drop Anchor Push Addr : 079C: 05 06 : Call Sub 6 Addr : 079E: 38 5B : Constant 1 Bytes - 5B Addr : 07A0: FB : Math Op <> Addr : 07A1: JZ Label0003 Addr : 07A1: 0A 04 : jz Address = 07A7 4 361 abort @syn Addr : 07A3: 87 82 44 : Memory Op Byte PBASE + ADDRESS Address = 0244 Addr : 07A6: 31 : Abort value Addr : 07A7: Label0003 Addr : 07A7: Label0004 362 skipspaces Addr : 07A7: 01 : Drop Anchor Addr : 07A8: 05 07 : Call Sub 7 363 result := expr Addr : 07AA: 00 : Drop Anchor Push Addr : 07AB: 05 1E : Call Sub 30 Addr : 07AD: 61 : Variable Operation Local Offset - 0 Write 364 if delim == "." and (result < 0 or result > 31) Addr : 07AE: 64 : Variable Operation Local Offset - 1 Read Addr : 07AF: 38 2E : Constant 1 Bytes - 2E Addr : 07B1: FC : Math Op == Addr : 07B2: 60 : Variable Operation Local Offset - 0 Read Addr : 07B3: 35 : Constant 1 $00000000 Addr : 07B4: F9 : Math Op < Addr : 07B5: 60 : Variable Operation Local Offset - 0 Read Addr : 07B6: 37 24 : Constant Mask Y=36 Decrement 0000001F Addr : 07B8: FA : Math Op > Addr : 07B9: F2 : Math Op OR Addr : 07BA: F0 : Math Op AND Addr : 07BB: JZ Label0005 Addr : 07BB: 0A 04 : jz Address = 07C1 4 Addr : 07BD: PBASE Constant Address of Label0007 Addr : 07BD: 87 88 3A : Memory Op Byte PBASE + ADDRESS Address = 083A 365 abort string("Invalid pin number") Addr : 07C0: 31 : Abort value Addr : 07C1: Label0005 Addr : 07C1: Label0006 366 if delim == "." or delim == "," Addr : 07C1: 64 : Variable Operation Local Offset - 1 Read Addr : 07C2: 38 2E : Constant 1 Bytes - 2E Addr : 07C4: FC : Math Op == Addr : 07C5: 64 : Variable Operation Local Offset - 1 Read Addr : 07C6: 38 2C : Constant 1 Bytes - 2C Addr : 07C8: FC : Math Op == Addr : 07C9: F2 : Math Op OR Addr : 07CA: JZ Label0008 Addr : 07CA: 0A 80 6E : jz Address = 083B 110 367 if spaces == delim Addr : 07CD: 00 : Drop Anchor Push Addr : 07CE: 05 06 : Call Sub 6 Addr : 07D0: 64 : Variable Operation Local Offset - 1 Read Addr : 07D1: FC : Math Op == Addr : 07D2: JZ Label000A Addr : 07D2: 0A 80 56 : jz Address = 082B 86 368 if delim == "." ' Handle the form .. Addr : 07D5: 64 : Variable Operation Local Offset - 1 Read Addr : 07D6: 38 2E : Constant 1 Bytes - 2E Addr : 07D8: FC : Math Op == Addr : 07D9: JZ Label000C Addr : 07D9: 0A 2D : jz Address = 0808 45 369 if byte[++tp] <> "." Addr : 07DB: 46 A6 : Variable Operation Global Offset - 1 Assign ++VAR pre-inc Long Push Addr : 07DD: 80 : Memory Op Byte POP Address READ Addr : 07DE: 38 2E : Constant 1 Bytes - 2E Addr : 07E0: FB : Math Op <> Addr : 07E1: JZ Label000E Addr : 07E1: 0A 04 : jz Address = 07E7 4 370 abort @syn Addr : 07E3: 87 82 44 : Memory Op Byte PBASE + ADDRESS Address = 0244 Addr : 07E6: 31 : Abort value Addr : 07E7: Label000E Addr : 07E7: Label000F 371 result <<= 8 Addr : 07E7: 37 02 : Constant Mask Y=2 00000008 Addr : 07E9: 62 43 : Variable Operation Local Offset - 0 Assign ByteMathop << 372 skipspaces Addr : 07EB: 01 : Drop Anchor Addr : 07EC: 05 07 : Call Sub 7 373 t := expr Addr : 07EE: 00 : Drop Anchor Push Addr : 07EF: 05 1E : Call Sub 30 Addr : 07F1: 69 : Variable Operation Local Offset - 2 Write 374 if t < 0 or t > 31 Addr : 07F2: 68 : Variable Operation Local Offset - 2 Read Addr : 07F3: 35 : Constant 1 $00000000 Addr : 07F4: F9 : Math Op < Addr : 07F5: 68 : Variable Operation Local Offset - 2 Read Addr : 07F6: 37 24 : Constant Mask Y=36 Decrement 0000001F Addr : 07F8: FA : Math Op > Addr : 07F9: F2 : Math Op OR Addr : 07FA: JZ Label0010 Addr : 07FA: 0A 04 : jz Address = 0800 4 Addr : 07FC: PBASE Constant Address of Label0012 Addr : 07FC: 87 88 4D : Memory Op Byte PBASE + ADDRESS Address = 084D 375 abort string("Invalid pin number") Addr : 07FF: 31 : Abort value Addr : 0800: Label0010 Addr : 0800: Label0011 376 result |= t | $10000 Addr : 0800: 68 : Variable Operation Local Offset - 2 Read Addr : 0801: 37 0F : Constant Mask Y=15 00010000 Addr : 0803: EA : Math Op | Addr : 0804: 62 4A : Variable Operation Local Offset - 0 Assign ByteMathop | Addr : 0806: JMP Label000D Addr : 0806: 04 21 : Jmp 0829 33 Addr : 0808: Label000C 378 if result & 1 or result < 0 or result > 31 Addr : 0808: 60 : Variable Operation Local Offset - 0 Read Addr : 0809: 36 : Constant 2 $00000001 Addr : 080A: E8 : Math Op & Addr : 080B: 60 : Variable Operation Local Offset - 0 Read Addr : 080C: 35 : Constant 1 $00000000 Addr : 080D: F9 : Math Op < Addr : 080E: F2 : Math Op OR Addr : 080F: 60 : Variable Operation Local Offset - 0 Read Addr : 0810: 37 24 : Constant Mask Y=36 Decrement 0000001F Addr : 0812: FA : Math Op > Addr : 0813: F2 : Math Op OR Addr : 0814: JZ Label0014 Addr : 0814: 0A 04 : jz Address = 081A 4 Addr : 0816: PBASE Constant Address of Label0016 Addr : 0816: 87 88 60 : Memory Op Byte PBASE + ADDRESS Address = 0860 379 abort string("Invalid pin number") Addr : 0819: 31 : Abort value Addr : 081A: Label0014 Addr : 081A: Label0015 380 skipspaces Addr : 081A: 01 : Drop Anchor Addr : 081B: 05 07 : Call Sub 7 381 result := (result << 18) | (expr & $7FFFF) Addr : 081D: 60 : Variable Operation Local Offset - 0 Read Addr : 081E: 38 12 : Constant 1 Bytes - 12 Addr : 0820: E3 : Math Op << Addr : 0821: 00 : Drop Anchor Push Addr : 0822: 05 1E : Call Sub 30 Addr : 0824: 37 32 : Constant Mask Y=50 Decrement 0007FFFF Addr : 0826: E8 : Math Op & Addr : 0827: EA : Math Op | Addr : 0828: 61 : Variable Operation Local Offset - 0 Write Addr : 0829: Label0013 Addr : 0829: Label000D Addr : 0829: JMP Label000B Addr : 0829: 04 10 : Jmp 083B 16 Addr : 082B: Label000A 382 elseif delim == "," Addr : 082B: 64 : Variable Operation Local Offset - 1 Read Addr : 082C: 38 2C : Constant 1 Bytes - 2C Addr : 082E: FC : Math Op == Addr : 082F: JZ Label0017 Addr : 082F: 0A 0A : jz Address = 083B 10 383 result := (result & $7FFFF) | fsrw#bootAddr Addr : 0831: 60 : Variable Operation Local Offset - 0 Read Addr : 0832: 37 32 : Constant Mask Y=50 Decrement 0007FFFF Addr : 0834: E8 : Math Op & Addr : 0835: 3A 70 00 00 : Constant 3 Bytes - 70 00 00 Addr : 0839: EA : Math Op | Addr : 083A: 61 : Variable Operation Local Offset - 0 Write Addr : 083B: Label0017 Addr : 083B: Label000B Addr : 083B: Label0008 Addr : 083B: Label0009 384 if spaces <> "]" Addr : 083B: 00 : Drop Anchor Push Addr : 083C: 05 06 : Call Sub 6 Addr : 083E: 38 5D : Constant 1 Bytes - 5D Addr : 0840: FB : Math Op <> Addr : 0841: JZ Label0018 Addr : 0841: 0A 04 : jz Address = 0847 4 385 abort @syn Addr : 0843: 87 82 44 : Memory Op Byte PBASE + ADDRESS Address = 0244 Addr : 0846: 31 : Abort value Addr : 0847: Label0018 Addr : 0847: Label0019 386 tp++ Addr : 0847: 46 2E : Variable Operation Global Offset - 1 Assign VAR++ post inc Long Addr : 0849: 32 : Return Addr : 084A: Label0007 Addr : 084A: Data : 49 6E 76 61 6C 69 64 20 Invalid Addr : 0852: Data : 70 69 6E 20 6E 75 6D 62 pin numb Addr : 085A: Data : 65 72 00 er. Addr : 085D: Label0012 Addr : 085D: Data : 49 6E 76 61 6C 69 64 20 Invalid Addr : 0865: Data : 70 69 6E 20 6E 75 6D 62 pin numb Addr : 086D: Data : 65 72 00 er. Addr : 0870: Label0016 Addr : 0870: Data : 49 6E 76 61 6C 69 64 20 Invalid Addr : 0878: Data : 70 69 6E 20 6E 75 6D 62 pin numb Addr : 0880: Data : 65 72 00 er. |===========================================================================| Spin Block factor with 0 Parameters and 3 Extra Stack Longs. Method 21 pri factor | tok, t, i |===========================================================================| 389 tok := spaces Addr : 0883: 00 : Drop Anchor Push Addr : 0884: 05 06 : Call Sub 6 Addr : 0886: 65 : Variable Operation Local Offset - 1 Write 390 tp++ Addr : 0887: 46 2E : Variable Operation Global Offset - 1 Assign VAR++ post inc Long Addr : 0889: Constant Address of Label0003 Addr : 0889: 39 09 E8 : Constant 2 Bytes - 09 E8 391 case tok Addr : 088C: 64 : Variable Operation Local Offset - 1 Read 392 "(": Addr : 088D: 38 28 : Constant 1 Bytes - 28 Addr : 088F: Case_Value Label0004 Addr : 088F: 0D 80 83 : Value Case Address = 0915 131 398 "a".."z","A".."Z": Addr : 0892: 38 61 : Constant 1 Bytes - 61 Addr : 0894: 38 7A : Constant 1 Bytes - 7A Addr : 0896: Case_Range Label0007 Addr : 0896: 0E 80 91 : Range Case Address = 092A 145 Addr : 0899: 38 41 : Constant 1 Bytes - 41 Addr : 089B: 38 5A : Constant 1 Bytes - 5A Addr : 089D: Case_Range Label0007 Addr : 089D: 0E 80 8A : Range Case Address = 092A 138 400 158: ' INA [ {..} ] Addr : 08A0: 38 9E : Constant 1 Bytes - 9E Addr : 08A2: Case_Value Label0008 Addr : 08A2: 0D 80 8D : Value Case Address = 0932 141 413 166: ' BYTE [ ] Addr : 08A5: 38 A6 : Constant 1 Bytes - A6 Addr : 08A7: Case_Value Label000F Addr : 08A7: 0D 80 CB : Value Case Address = 0975 203 415 167: ' WORD [ ] Addr : 08AA: 38 A7 : Constant 1 Bytes - A7 Addr : 08AC: Case_Value Label0010 Addr : 08AC: 0D 80 CE : Value Case Address = 097D 206 417 168: ' LONG [ ] Addr : 08AF: 38 A8 : Constant 1 Bytes - A8 Addr : 08B1: Case_Value Label0011 Addr : 08B1: 0D 80 D1 : Value Case Address = 0985 209 419 181: ' EEPROM [ ] Addr : 08B4: 38 B5 : Constant 1 Bytes - B5 Addr : 08B6: Case_Value Label0012 Addr : 08B6: 0D 80 D4 : Value Case Address = 098D 212 424 182: ' FILE Addr : 08B9: 38 B6 : Constant 1 Bytes - B6 Addr : 08BB: Case_Value Label0016 Addr : 08BB: 0D 80 E8 : Value Case Address = 09A6 232 426 183: ' MEM Addr : 08BE: 38 B7 : Constant 1 Bytes - B7 Addr : 08C0: Case_Value Label0017 Addr : 08C0: 0D 80 E9 : Value Case Address = 09AC 233 428 169: ' CNT Addr : 08C3: 38 A9 : Constant 1 Bytes - A9 Addr : 08C5: Case_Value Label0018 Addr : 08C5: 0D 80 EF : Value Case Address = 09B7 239 430 170: ' PHSA Addr : 08C8: 38 AA : Constant 1 Bytes - AA Addr : 08CA: Case_Value Label0019 Addr : 08CA: 0D 80 EE : Value Case Address = 09BB 238 432 171: ' PHSB Addr : 08CD: 38 AB : Constant 1 Bytes - AB Addr : 08CF: Case_Value Label001A Addr : 08CF: 0D 80 ED : Value Case Address = 09BF 237 434 172: ' FRQA Addr : 08D2: 38 AC : Constant 1 Bytes - AC Addr : 08D4: Case_Value Label001B Addr : 08D4: 0D 80 EC : Value Case Address = 09C3 236 436 173: ' FRQB Addr : 08D7: 38 AD : Constant 1 Bytes - AD Addr : 08D9: Case_Value Label001C Addr : 08D9: 0D 80 EB : Value Case Address = 09C7 235 438 174: ' CTRA Addr : 08DC: 38 AE : Constant 1 Bytes - AE Addr : 08DE: Case_Value Label001D Addr : 08DE: 0D 80 EA : Value Case Address = 09CB 234 440 175: ' CTRB Addr : 08E1: 38 AF : Constant 1 Bytes - AF Addr : 08E3: Case_Value Label001E Addr : 08E3: 0D 80 E9 : Value Case Address = 09CF 233 442 177: ' KEYCODE Addr : 08E6: 38 B1 : Constant 1 Bytes - B1 Addr : 08E8: Case_Value Label001F Addr : 08E8: 0D 80 E8 : Value Case Address = 09D3 232 444 139: ' RND Addr : 08EB: 38 8B : Constant 1 Bytes - 8B Addr : 08ED: Case_Value Label0020 Addr : 08ED: 0D 80 E9 : Value Case Address = 09D9 233 446 "-": Addr : 08F0: 38 2D : Constant 1 Bytes - 2D Addr : 08F2: Case_Value Label0021 Addr : 08F2: 0D 80 F0 : Value Case Address = 09E5 240 448 "!": Addr : 08F5: 38 21 : Constant 1 Bytes - 21 Addr : 08F7: Case_Value Label0022 Addr : 08F7: 0D 80 F1 : Value Case Address = 09EB 241 450 "$", "%", quote, "0".."9": Addr : 08FA: 38 24 : Constant 1 Bytes - 24 Addr : 08FC: Case_Value Label0023 Addr : 08FC: 0D 80 F2 : Value Case Address = 09F1 242 Addr : 08FF: 38 25 : Constant 1 Bytes - 25 Addr : 0901: Case_Value Label0023 Addr : 0901: 0D 80 ED : Value Case Address = 09F1 237 Addr : 0904: 38 22 : Constant 1 Bytes - 22 Addr : 0906: Case_Value Label0023 Addr : 0906: 0D 80 E8 : Value Case Address = 09F1 232 Addr : 0909: 38 30 : Constant 1 Bytes - 30 Addr : 090B: 38 39 : Constant 1 Bytes - 39 Addr : 090D: Case_Range Label0023 Addr : 090D: 0E 80 E1 : Range Case Address = 09F1 225 454 abort(@syn) Addr : 0910: 87 82 44 : Memory Op Byte PBASE + ADDRESS Address = 0244 Addr : 0913: 31 : Abort value Addr : 0914: CaseDone Label0023 Addr : 0914: 0C : Casedone Addr : 0915: Label0004 393 t := expr Addr : 0915: 00 : Drop Anchor Push Addr : 0916: 05 1E : Call Sub 30 Addr : 0918: 69 : Variable Operation Local Offset - 2 Write 394 if spaces <> ")" Addr : 0919: 00 : Drop Anchor Push Addr : 091A: 05 06 : Call Sub 6 Addr : 091C: 38 29 : Constant 1 Bytes - 29 Addr : 091E: FB : Math Op <> Addr : 091F: JZ Label0005 Addr : 091F: 0A 04 : jz Address = 0925 4 395 abort @syn Addr : 0921: 87 82 44 : Memory Op Byte PBASE + ADDRESS Address = 0244 Addr : 0924: 31 : Abort value Addr : 0925: Label0005 Addr : 0925: Label0006 396 tp++ Addr : 0925: 46 2E : Variable Operation Global Offset - 1 Assign VAR++ post inc Long 397 return t Addr : 0927: 68 : Variable Operation Local Offset - 2 Read Addr : 0928: 33 : Return value Addr : 0929: CaseDone Label0004 Addr : 0929: 0C : Casedone Addr : 092A: Label0007 399 return vars[fixvar(tok)] Addr : 092A: 00 : Drop Anchor Push Addr : 092B: 64 : Variable Operation Local Offset - 1 Read Addr : 092C: 05 0A : Call Sub 10 Addr : 092E: D8 1C : Memory Op Long VBASE + POP Index READ Address = 001C Addr : 0930: 33 : Return value Addr : 0931: CaseDone Label0007 Addr : 0931: 0C : Casedone Addr : 0932: Label0008 401 t := getAddress(".") Addr : 0932: 00 : Drop Anchor Push Addr : 0933: 38 2E : Constant 1 Bytes - 2E Addr : 0935: 05 14 : Call Sub 20 Addr : 0937: 69 : Variable Operation Local Offset - 2 Write 402 if t > $FFFF Addr : 0938: 68 : Variable Operation Local Offset - 2 Read Addr : 0939: 37 2F : Constant Mask Y=47 Decrement 0000FFFF Addr : 093B: FA : Math Op > Addr : 093C: JZ Label0009 Addr : 093C: 0A 27 : jz Address = 0965 39 403 tok := t & $FF Addr : 093E: 68 : Variable Operation Local Offset - 2 Read Addr : 093F: 37 27 : Constant Mask Y=39 Decrement 000000FF Addr : 0941: E8 : Math Op & Addr : 0942: 65 : Variable Operation Local Offset - 1 Write 404 t := (t >> 8) & $FF Addr : 0943: 68 : Variable Operation Local Offset - 2 Read Addr : 0944: 37 02 : Constant Mask Y=2 00000008 Addr : 0946: E2 : Math Op >> Addr : 0947: 37 27 : Constant Mask Y=39 Decrement 000000FF Addr : 0949: E8 : Math Op & Addr : 094A: 69 : Variable Operation Local Offset - 2 Write 405 repeat i from t to tok Addr : 094B: 68 : Variable Operation Local Offset - 2 Read Addr : 094C: 6D : Variable Operation Local Offset - 3 Write Addr : 094D: Label000B 406 outputs &= ! |< i Addr : 094D: 6C : Variable Operation Local Offset - 3 Read Addr : 094E: F3 : Math Op |< Addr : 094F: E7 : Math Op ! Addr : 0950: AA 82 1C 48 : Memory Op Word VBASE + ASSIGN Address = 021C BitMathop & Addr : 0954: Label000C 405 repeat i from t to tok Addr : 0954: 68 : Variable Operation Local Offset - 2 Read Addr : 0955: 64 : Variable Operation Local Offset - 1 Read Addr : 0956: Repeat i Step Label000B Addr : 0956: 6E 02 74 : Variable Operation Local Offset - 3 Assign Repeat-Var loop Address= 094D -12 Addr : 0959: Label000D 407 dira[t..tok]~ Addr : 0959: 68 : Variable Operation Local Offset - 2 Read Addr : 095A: 64 : Variable Operation Local Offset - 1 Read Addr : 095B: 3E D6 18 : Register [Bit..Bit] op DIRA VAR~ Post-clear 408 return ina[t..tok] Addr : 095E: 68 : Variable Operation Local Offset - 2 Read Addr : 095F: 64 : Variable Operation Local Offset - 1 Read Addr : 0960: 3E 92 : Register [Bit..Bit] op INA Read Addr : 0962: 33 : Return value Addr : 0963: JMP Label000A Addr : 0963: 04 0F : Jmp 0974 15 Addr : 0965: Label0009 410 outputs &= ! |< t Addr : 0965: 68 : Variable Operation Local Offset - 2 Read Addr : 0966: F3 : Math Op |< Addr : 0967: E7 : Math Op ! Addr : 0968: AA 82 1C 48 : Memory Op Word VBASE + ASSIGN Address = 021C BitMathop & 411 dira[t]~ Addr : 096C: 68 : Variable Operation Local Offset - 2 Read Addr : 096D: 3D D6 18 : Register [Bit] op DIRA VAR~ Post-clear 412 return ina[t] Addr : 0970: 68 : Variable Operation Local Offset - 2 Read Addr : 0971: 3D 92 : Register [Bit] op INA Read Addr : 0973: 33 : Return value Addr : 0974: Label000E Addr : 0974: Label000A Addr : 0974: CaseDone Label0008 Addr : 0974: 0C : Casedone Addr : 0975: Label000F 414 return byte[getAddress(" ")] Addr : 0975: 00 : Drop Anchor Push Addr : 0976: 37 04 : Constant Mask Y=4 00000020 Addr : 0978: 05 14 : Call Sub 20 Addr : 097A: 80 : Memory Op Byte POP Address READ Addr : 097B: 33 : Return value Addr : 097C: CaseDone Label000F Addr : 097C: 0C : Casedone Addr : 097D: Label0010 416 return word[getAddress(" ")] Addr : 097D: 00 : Drop Anchor Push Addr : 097E: 37 04 : Constant Mask Y=4 00000020 Addr : 0980: 05 14 : Call Sub 20 Addr : 0982: A0 : Memory Op Word POP Address READ Addr : 0983: 33 : Return value Addr : 0984: CaseDone Label0010 Addr : 0984: 0C : Casedone Addr : 0985: Label0011 418 return long[getAddress(" ")] Addr : 0985: 00 : Drop Anchor Push Addr : 0986: 37 04 : Constant Mask Y=4 00000020 Addr : 0988: 05 14 : Call Sub 20 Addr : 098A: C0 : Memory Op Long POP Address READ Addr : 098B: 33 : Return value Addr : 098C: CaseDone Label0011 Addr : 098C: 0C : Casedone Addr : 098D: Label0012 420 t := getAddress(",") Addr : 098D: 00 : Drop Anchor Push Addr : 098E: 38 2C : Constant 1 Bytes - 2C Addr : 0990: 05 14 : Call Sub 20 Addr : 0992: 69 : Variable Operation Local Offset - 2 Write 421 if fsrw.readEEPROM(t,@t,1) Addr : 0993: 00 : Drop Anchor Push Addr : 0994: 68 : Variable Operation Local Offset - 2 Read Addr : 0995: 6B : Variable Operation Local Offset - 2 Address Addr : 0996: 36 : Constant 2 $00000001 Addr : 0997: 06 27 04 : Call Obj.Sub 39 4 Addr : 099A: JZ Label0013 Addr : 099A: 0A 04 : jz Address = 09A0 4 Addr : 099C: PBASE Constant Address of Label0015 Addr : 099C: 87 89 E9 : Memory Op Byte PBASE + ADDRESS Address = 09E9 422 abort string("EEPROM read") Addr : 099F: 31 : Abort value Addr : 09A0: Label0013 Addr : 09A0: Label0014 423 return t & $FF Addr : 09A0: 68 : Variable Operation Local Offset - 2 Read Addr : 09A1: 37 27 : Constant Mask Y=39 Decrement 000000FF Addr : 09A3: E8 : Math Op & Addr : 09A4: 33 : Return value Addr : 09A5: CaseDone Label0012 Addr : 09A5: 0C : Casedone Addr : 09A6: Label0016 425 return fsrw.pgetc Addr : 09A6: 00 : Drop Anchor Push Addr : 09A7: 06 27 18 : Call Obj.Sub 39 24 Addr : 09AA: 33 : Return value Addr : 09AB: CaseDone Label0016 Addr : 09AB: 0C : Casedone Addr : 09AC: Label0017 427 return progsize - (eop - long[userPtr] ) Addr : 09AC: 37 0C : Constant Mask Y=12 00002000 Addr : 09AE: 48 : Variable Operation Global Offset - 2 Read Addr : 09AF: 39 73 20 : Constant 2 Bytes - 73 20 Addr : 09B2: C0 : Memory Op Long POP Address READ Addr : 09B3: ED : Math Op - Addr : 09B4: ED : Math Op - Addr : 09B5: 33 : Return value Addr : 09B6: CaseDone Label0017 Addr : 09B6: 0C : Casedone Addr : 09B7: Label0018 429 return CNT Addr : 09B7: 3F 91 : Register op CNT Read Addr : 09B9: 33 : Return value Addr : 09BA: CaseDone Label0018 Addr : 09BA: 0C : Casedone Addr : 09BB: Label0019 431 return PHSA Addr : 09BB: 3F 9C : Register op PHSA Read Addr : 09BD: 33 : Return value Addr : 09BE: CaseDone Label0019 Addr : 09BE: 0C : Casedone Addr : 09BF: Label001A 433 return PHSB Addr : 09BF: 3F 9D : Register op PHSB Read Addr : 09C1: 33 : Return value Addr : 09C2: CaseDone Label001A Addr : 09C2: 0C : Casedone Addr : 09C3: Label001B 435 return FRQA Addr : 09C3: 3F 9A : Register op FRQA Read Addr : 09C5: 33 : Return value Addr : 09C6: CaseDone Label001B Addr : 09C6: 0C : Casedone Addr : 09C7: Label001C 437 return FRQB Addr : 09C7: 3F 9B : Register op FRQB Read Addr : 09C9: 33 : Return value Addr : 09CA: CaseDone Label001C Addr : 09CA: 0C : Casedone Addr : 09CB: Label001D 439 return CTRA Addr : 09CB: 3F 98 : Register op CTRA Read Addr : 09CD: 33 : Return value Addr : 09CE: CaseDone Label001D Addr : 09CE: 0C : Casedone Addr : 09CF: Label001E 441 return CTRB Addr : 09CF: 3F 99 : Register op CTRB Read Addr : 09D1: 33 : Return value Addr : 09D2: CaseDone Label001E Addr : 09D2: 0C : Casedone Addr : 09D3: Label001F 443 return key.key Addr : 09D3: 00 : Drop Anchor Push Addr : 09D4: 06 29 08 : Call Obj.Sub 41 8 Addr : 09D7: 33 : Return value Addr : 09D8: CaseDone Label001F Addr : 09D8: 0C : Casedone Addr : 09D9: Label0020 445 return (rv? >> 1) ** (factor << 1) Addr : 09D9: 52 8C : Variable Operation Global Offset - 4 Assign VAR? Random Reverse (long) Push Addr : 09DB: 36 : Constant 2 $00000001 Addr : 09DC: E2 : Math Op >> Addr : 09DD: 00 : Drop Anchor Push Addr : 09DE: 05 15 : Call Sub 21 Addr : 09E0: 36 : Constant 2 $00000001 Addr : 09E1: E3 : Math Op << Addr : 09E2: F5 : Math Op ** Addr : 09E3: 33 : Return value Addr : 09E4: CaseDone Label0020 Addr : 09E4: 0C : Casedone Addr : 09E5: Label0021 447 return - factor Addr : 09E5: 00 : Drop Anchor Push Addr : 09E6: 05 15 : Call Sub 21 Addr : 09E8: E6 : Math Op - Addr : 09E9: 33 : Return value Addr : 09EA: CaseDone Label0021 Addr : 09EA: 0C : Casedone Addr : 09EB: Label0022 449 return ! factor Addr : 09EB: 00 : Drop Anchor Push Addr : 09EC: 05 15 : Call Sub 21 Addr : 09EE: E7 : Math Op ! Addr : 09EF: 33 : Return value Addr : 09F0: CaseDone Label0022 Addr : 09F0: 0C : Casedone Addr : 09F1: Label0023 451 --tp Addr : 09F1: 46 36 : Variable Operation Global Offset - 1 Assign --VAR pre-dec Long 452 return getAnyNumber Addr : 09F3: 00 : Drop Anchor Push Addr : 09F4: 05 25 : Call Sub 37 Addr : 09F6: 33 : Return value Addr : 09F7: CaseDone Label0023 Addr : 09F7: Data : 0C . Addr : 09F8: Label0003 Addr : 09F8: Data : 32 2 Addr : 09F9: Label0015 Addr : 09F9: Data : 45 45 50 52 4F 4D 20 72 EEPROM r Addr : 0A01: Data : 65 61 64 00 ead. |===========================================================================| Spin Block shifts with 0 Parameters and 2 Extra Stack Longs. Method 22 pri shifts | tok, t |===========================================================================| 457 t := factor Addr : 0A05: 00 : Drop Anchor Push Addr : 0A06: 05 15 : Call Sub 21 Addr : 0A08: 69 : Variable Operation Local Offset - 2 Write 458 tok := spaces Addr : 0A09: 00 : Drop Anchor Push Addr : 0A0A: 05 06 : Call Sub 6 Addr : 0A0C: 65 : Variable Operation Local Offset - 1 Write 459 if tok == 152 ' SHL Addr : 0A0D: 64 : Variable Operation Local Offset - 1 Read Addr : 0A0E: 38 98 : Constant 1 Bytes - 98 Addr : 0A10: FC : Math Op == Addr : 0A11: JZ Label0003 Addr : 0A11: 0A 0B : jz Address = 0A1E 11 460 tp++ Addr : 0A13: 46 2E : Variable Operation Global Offset - 1 Assign VAR++ post inc Long 461 return t << factor Addr : 0A15: 68 : Variable Operation Local Offset - 2 Read Addr : 0A16: 00 : Drop Anchor Push Addr : 0A17: 05 15 : Call Sub 21 Addr : 0A19: E3 : Math Op << Addr : 0A1A: 33 : Return value Addr : 0A1B: JMP Label0004 Addr : 0A1B: 04 80 53 : Jmp 0A71 83 Addr : 0A1E: Label0003 462 elseif tok == 153 ' SHR Addr : 0A1E: 64 : Variable Operation Local Offset - 1 Read Addr : 0A1F: 38 99 : Constant 1 Bytes - 99 Addr : 0A21: FC : Math Op == Addr : 0A22: JZ Label0005 Addr : 0A22: 0A 0B : jz Address = 0A2F 11 463 tp++ Addr : 0A24: 46 2E : Variable Operation Global Offset - 1 Assign VAR++ post inc Long 464 return t >> factor Addr : 0A26: 68 : Variable Operation Local Offset - 2 Read Addr : 0A27: 00 : Drop Anchor Push Addr : 0A28: 05 15 : Call Sub 21 Addr : 0A2A: E2 : Math Op >> Addr : 0A2B: 33 : Return value Addr : 0A2C: JMP Label0004 Addr : 0A2C: 04 80 42 : Jmp 0A71 66 Addr : 0A2F: Label0005 465 elseif tok == 162 ' ROL Addr : 0A2F: 64 : Variable Operation Local Offset - 1 Read Addr : 0A30: 38 A2 : Constant 1 Bytes - A2 Addr : 0A32: FC : Math Op == Addr : 0A33: JZ Label0006 Addr : 0A33: 0A 0A : jz Address = 0A3F 10 466 tp++ Addr : 0A35: 46 2E : Variable Operation Global Offset - 1 Assign VAR++ post inc Long 467 return t <- factor Addr : 0A37: 68 : Variable Operation Local Offset - 2 Read Addr : 0A38: 00 : Drop Anchor Push Addr : 0A39: 05 15 : Call Sub 21 Addr : 0A3B: E1 : Math Op -< Addr : 0A3C: 33 : Return value Addr : 0A3D: JMP Label0004 Addr : 0A3D: 04 32 : Jmp 0A71 50 Addr : 0A3F: Label0006 468 elseif tok == 163 ' ROR Addr : 0A3F: 64 : Variable Operation Local Offset - 1 Read Addr : 0A40: 38 A3 : Constant 1 Bytes - A3 Addr : 0A42: FC : Math Op == Addr : 0A43: JZ Label0007 Addr : 0A43: 0A 0A : jz Address = 0A4F 10 469 tp++ Addr : 0A45: 46 2E : Variable Operation Global Offset - 1 Assign VAR++ post inc Long 470 return t -> factor Addr : 0A47: 68 : Variable Operation Local Offset - 2 Read Addr : 0A48: 00 : Drop Anchor Push Addr : 0A49: 05 15 : Call Sub 21 Addr : 0A4B: E0 : Math Op -> Addr : 0A4C: 33 : Return value Addr : 0A4D: JMP Label0004 Addr : 0A4D: 04 22 : Jmp 0A71 34 Addr : 0A4F: Label0007 471 elseif tok == 164 ' SAR Addr : 0A4F: 64 : Variable Operation Local Offset - 1 Read Addr : 0A50: 38 A4 : Constant 1 Bytes - A4 Addr : 0A52: FC : Math Op == Addr : 0A53: JZ Label0008 Addr : 0A53: 0A 0A : jz Address = 0A5F 10 472 tp++ Addr : 0A55: 46 2E : Variable Operation Global Offset - 1 Assign VAR++ post inc Long 473 return t ~> factor Addr : 0A57: 68 : Variable Operation Local Offset - 2 Read Addr : 0A58: 00 : Drop Anchor Push Addr : 0A59: 05 15 : Call Sub 21 Addr : 0A5B: EE : Math Op ~> Addr : 0A5C: 33 : Return value Addr : 0A5D: JMP Label0004 Addr : 0A5D: 04 12 : Jmp 0A71 18 Addr : 0A5F: Label0008 474 elseif tok == 165 ' REV Addr : 0A5F: 64 : Variable Operation Local Offset - 1 Read Addr : 0A60: 38 A5 : Constant 1 Bytes - A5 Addr : 0A62: FC : Math Op == Addr : 0A63: JZ Label0009 Addr : 0A63: 0A 0A : jz Address = 0A6F 10 475 tp++ Addr : 0A65: 46 2E : Variable Operation Global Offset - 1 Assign VAR++ post inc Long 476 return t >< factor Addr : 0A67: 68 : Variable Operation Local Offset - 2 Read Addr : 0A68: 00 : Drop Anchor Push Addr : 0A69: 05 15 : Call Sub 21 Addr : 0A6B: EF : Math Op >< Addr : 0A6C: 33 : Return value Addr : 0A6D: JMP Label0004 Addr : 0A6D: 04 02 : Jmp 0A71 2 Addr : 0A6F: Label0009 478 return t Addr : 0A6F: 68 : Variable Operation Local Offset - 2 Read Addr : 0A70: 33 : Return value Addr : 0A71: Label000A Addr : 0A71: Label0004 Addr : 0A71: 32 : Return |===========================================================================| Spin Block bitFactor with 0 Parameters and 2 Extra Stack Longs. Method 23 pri bitFactor | tok, t |===========================================================================| 481 t := shifts Addr : 0A72: 00 : Drop Anchor Push Addr : 0A73: 05 16 : Call Sub 22 Addr : 0A75: 69 : Variable Operation Local Offset - 2 Write Addr : 0A76: Label0003 483 tok := spaces Addr : 0A76: 00 : Drop Anchor Push Addr : 0A77: 05 06 : Call Sub 6 Addr : 0A79: 65 : Variable Operation Local Offset - 1 Write 484 if tok == "&" Addr : 0A7A: 64 : Variable Operation Local Offset - 1 Read Addr : 0A7B: 38 26 : Constant 1 Bytes - 26 Addr : 0A7D: FC : Math Op == Addr : 0A7E: JZ Label0006 Addr : 0A7E: 0A 09 : jz Address = 0A89 9 485 tp++ Addr : 0A80: 46 2E : Variable Operation Global Offset - 1 Assign VAR++ post inc Long 486 t &= shifts Addr : 0A82: 00 : Drop Anchor Push Addr : 0A83: 05 16 : Call Sub 22 Addr : 0A85: 6A 48 : Variable Operation Local Offset - 2 Assign BitMathop & Addr : 0A87: JMP Label0007 Addr : 0A87: 04 02 : Jmp 0A8B 2 Addr : 0A89: Label0006 488 return t Addr : 0A89: 68 : Variable Operation Local Offset - 2 Read Addr : 0A8A: 33 : Return value Addr : 0A8B: Label0008 Addr : 0A8B: Label0007 Addr : 0A8B: Label0004 Addr : 0A8B: JMP Label0003 Addr : 0A8B: 04 69 : Jmp 0A76 -23 Addr : 0A8D: Label0005 Addr : 0A8D: 32 : Return |===========================================================================| Spin Block bitTerm with 0 Parameters and 2 Extra Stack Longs. Method 24 pri bitTerm | tok, t |===========================================================================| 491 t := bitFactor Addr : 0A8E: 00 : Drop Anchor Push Addr : 0A8F: 05 17 : Call Sub 23 Addr : 0A91: 69 : Variable Operation Local Offset - 2 Write Addr : 0A92: Label0003 493 tok := spaces Addr : 0A92: 00 : Drop Anchor Push Addr : 0A93: 05 06 : Call Sub 6 Addr : 0A95: 65 : Variable Operation Local Offset - 1 Write 494 if tok == "|" Addr : 0A96: 64 : Variable Operation Local Offset - 1 Read Addr : 0A97: 38 7C : Constant 1 Bytes - 7C Addr : 0A99: FC : Math Op == Addr : 0A9A: JZ Label0006 Addr : 0A9A: 0A 09 : jz Address = 0AA5 9 495 tp++ Addr : 0A9C: 46 2E : Variable Operation Global Offset - 1 Assign VAR++ post inc Long 496 t |= bitFactor Addr : 0A9E: 00 : Drop Anchor Push Addr : 0A9F: 05 17 : Call Sub 23 Addr : 0AA1: 6A 4A : Variable Operation Local Offset - 2 Assign ByteMathop | Addr : 0AA3: JMP Label0007 Addr : 0AA3: 04 11 : Jmp 0AB6 17 Addr : 0AA5: Label0006 497 elseif tok == "^" Addr : 0AA5: 64 : Variable Operation Local Offset - 1 Read Addr : 0AA6: 38 5E : Constant 1 Bytes - 5E Addr : 0AA8: FC : Math Op == Addr : 0AA9: JZ Label0008 Addr : 0AA9: 0A 09 : jz Address = 0AB4 9 498 tp++ Addr : 0AAB: 46 2E : Variable Operation Global Offset - 1 Assign VAR++ post inc Long 499 t ^= bitFactor Addr : 0AAD: 00 : Drop Anchor Push Addr : 0AAE: 05 17 : Call Sub 23 Addr : 0AB0: 6A 4B : Variable Operation Local Offset - 2 Assign ByteMathop ^ Addr : 0AB2: JMP Label0007 Addr : 0AB2: 04 02 : Jmp 0AB6 2 Addr : 0AB4: Label0008 501 return t Addr : 0AB4: 68 : Variable Operation Local Offset - 2 Read Addr : 0AB5: 33 : Return value Addr : 0AB6: Label0009 Addr : 0AB6: Label0007 Addr : 0AB6: Label0004 Addr : 0AB6: JMP Label0003 Addr : 0AB6: 04 5A : Jmp 0A92 -38 Addr : 0AB8: Label0005 Addr : 0AB8: 32 : Return |===========================================================================| Spin Block term with 0 Parameters and 2 Extra Stack Longs. Method 25 pri term | tok, t |===========================================================================| 504 t := bitTerm Addr : 0AB9: 00 : Drop Anchor Push Addr : 0ABA: 05 18 : Call Sub 24 Addr : 0ABC: 69 : Variable Operation Local Offset - 2 Write Addr : 0ABD: Label0003 506 tok := spaces Addr : 0ABD: 00 : Drop Anchor Push Addr : 0ABE: 05 06 : Call Sub 6 Addr : 0AC0: 65 : Variable Operation Local Offset - 1 Write 507 if tok == "*" Addr : 0AC1: 64 : Variable Operation Local Offset - 1 Read Addr : 0AC2: 38 2A : Constant 1 Bytes - 2A Addr : 0AC4: FC : Math Op == Addr : 0AC5: JZ Label0006 Addr : 0AC5: 0A 09 : jz Address = 0AD0 9 508 tp++ Addr : 0AC7: 46 2E : Variable Operation Global Offset - 1 Assign VAR++ post inc Long 509 t *= bitTerm Addr : 0AC9: 00 : Drop Anchor Push Addr : 0ACA: 05 18 : Call Sub 24 Addr : 0ACC: 6A 54 : Variable Operation Local Offset - 2 Assign WordMathop * Addr : 0ACE: JMP Label0007 Addr : 0ACE: 04 20 : Jmp 0AF0 32 Addr : 0AD0: Label0006 510 elseif tok == "/" Addr : 0AD0: 64 : Variable Operation Local Offset - 1 Read Addr : 0AD1: 38 2F : Constant 1 Bytes - 2F Addr : 0AD3: FC : Math Op == Addr : 0AD4: JZ Label0008 Addr : 0AD4: 0A 18 : jz Address = 0AEE 24 511 if byte[++tp] == "/" Addr : 0AD6: 46 A6 : Variable Operation Global Offset - 1 Assign ++VAR pre-inc Long Push Addr : 0AD8: 80 : Memory Op Byte POP Address READ Addr : 0AD9: 38 2F : Constant 1 Bytes - 2F Addr : 0ADB: FC : Math Op == Addr : 0ADC: JZ Label0009 Addr : 0ADC: 0A 09 : jz Address = 0AE7 9 512 tp++ Addr : 0ADE: 46 2E : Variable Operation Global Offset - 1 Assign VAR++ post inc Long 513 t //= bitTerm Addr : 0AE0: 00 : Drop Anchor Push Addr : 0AE1: 05 18 : Call Sub 24 Addr : 0AE3: 6A 57 : Variable Operation Local Offset - 2 Assign LongMathop // Addr : 0AE5: JMP Label000A Addr : 0AE5: 04 05 : Jmp 0AEC 5 Addr : 0AE7: Label0009 515 t / =bitTerm Addr : 0AE7: 00 : Drop Anchor Push Addr : 0AE8: 05 18 : Call Sub 24 Addr : 0AEA: 6A 56 : Variable Operation Local Offset - 2 Assign LongMathop / Addr : 0AEC: Label000B Addr : 0AEC: Label000A Addr : 0AEC: JMP Label0007 Addr : 0AEC: 04 02 : Jmp 0AF0 2 Addr : 0AEE: Label0008 517 return t Addr : 0AEE: 68 : Variable Operation Local Offset - 2 Read Addr : 0AEF: 33 : Return value Addr : 0AF0: Label000C Addr : 0AF0: Label0007 Addr : 0AF0: Label0004 Addr : 0AF0: JMP Label0003 Addr : 0AF0: 04 4B : Jmp 0ABD -53 Addr : 0AF2: Label0005 Addr : 0AF2: 32 : Return |===========================================================================| Spin Block arithExpr with 0 Parameters and 2 Extra Stack Longs. Method 26 pri arithExpr | tok, t |===========================================================================| 520 t := term Addr : 0AF3: 00 : Drop Anchor Push Addr : 0AF4: 05 19 : Call Sub 25 Addr : 0AF6: 69 : Variable Operation Local Offset - 2 Write Addr : 0AF7: Label0003 522 tok := spaces Addr : 0AF7: 00 : Drop Anchor Push Addr : 0AF8: 05 06 : Call Sub 6 Addr : 0AFA: 65 : Variable Operation Local Offset - 1 Write 523 if tok == "+" Addr : 0AFB: 64 : Variable Operation Local Offset - 1 Read Addr : 0AFC: 38 2B : Constant 1 Bytes - 2B Addr : 0AFE: FC : Math Op == Addr : 0AFF: JZ Label0006 Addr : 0AFF: 0A 09 : jz Address = 0B0A 9 524 tp++ Addr : 0B01: 46 2E : Variable Operation Global Offset - 1 Assign VAR++ post inc Long 525 t += term Addr : 0B03: 00 : Drop Anchor Push Addr : 0B04: 05 19 : Call Sub 25 Addr : 0B06: 6A 4C : Variable Operation Local Offset - 2 Assign WordMathop + Addr : 0B08: JMP Label0007 Addr : 0B08: 04 11 : Jmp 0B1B 17 Addr : 0B0A: Label0006 526 elseif tok == "-" Addr : 0B0A: 64 : Variable Operation Local Offset - 1 Read Addr : 0B0B: 38 2D : Constant 1 Bytes - 2D Addr : 0B0D: FC : Math Op == Addr : 0B0E: JZ Label0008 Addr : 0B0E: 0A 09 : jz Address = 0B19 9 527 tp++ Addr : 0B10: 46 2E : Variable Operation Global Offset - 1 Assign VAR++ post inc Long 528 t -= term Addr : 0B12: 00 : Drop Anchor Push Addr : 0B13: 05 19 : Call Sub 25 Addr : 0B15: 6A 4D : Variable Operation Local Offset - 2 Assign WordMathop - Addr : 0B17: JMP Label0007 Addr : 0B17: 04 02 : Jmp 0B1B 2 Addr : 0B19: Label0008 530 return t Addr : 0B19: 68 : Variable Operation Local Offset - 2 Read Addr : 0B1A: 33 : Return value Addr : 0B1B: Label0009 Addr : 0B1B: Label0007 Addr : 0B1B: Label0004 Addr : 0B1B: JMP Label0003 Addr : 0B1B: 04 5A : Jmp 0AF7 -38 Addr : 0B1D: Label0005 Addr : 0B1D: 32 : Return |===========================================================================| Spin Block compare with 0 Parameters and 4 Extra Stack Longs. Method 27 pri compare | op, a, b, c |===========================================================================| 533 a := arithExpr Addr : 0B1E: 00 : Drop Anchor Push Addr : 0B1F: 05 1A : Call Sub 26 Addr : 0B21: 69 : Variable Operation Local Offset - 2 Write 534 op := 0 Addr : 0B22: 35 : Constant 1 $00000000 Addr : 0B23: 65 : Variable Operation Local Offset - 1 Write 535 spaces Addr : 0B24: 01 : Drop Anchor Addr : 0B25: 05 06 : Call Sub 6 Addr : 0B27: Label0003 537 c := byte[tp] Addr : 0B27: 44 : Variable Operation Global Offset - 1 Read Addr : 0B28: 80 : Memory Op Byte POP Address READ Addr : 0B29: 71 : Variable Operation Local Offset - 4 Write Addr : 0B2A: Constant Address of Label0006 Addr : 0B2A: 39 0B 44 : Constant 2 Bytes - 0B 44 538 case c Addr : 0B2D: 70 : Variable Operation Local Offset - 4 Read 539 "<": op |= 1 Addr : 0B2E: 38 3C : Constant 1 Bytes - 3C Addr : 0B30: Case_Value Label0007 Addr : 0B30: 0D 0E : Value Case Address = 0B40 14 541 ">": op |= 2 Addr : 0B32: 38 3E : Constant 1 Bytes - 3E Addr : 0B34: Case_Value Label0008 Addr : 0B34: 0D 10 : Value Case Address = 0B46 16 543 "=": op |= 4 Addr : 0B36: 38 3D : Constant 1 Bytes - 3D Addr : 0B38: Case_Value Label0009 Addr : 0B38: 0D 13 : Value Case Address = 0B4D 19 545 other: quit Addr : 0B3A: 37 02 : Constant Mask Y=2 00000008 Addr : 0B3C: 14 : Pop Addr : 0B3D: JMP Label0005 Addr : 0B3D: 04 17 : Jmp 0B56 23 Addr : 0B3F: CaseDone Label0009 Addr : 0B3F: 0C : Casedone Addr : 0B40: Label0007 539 "<": op |= 1 Addr : 0B40: 36 : Constant 2 $00000001 Addr : 0B41: 66 4A : Variable Operation Local Offset - 1 Assign ByteMathop | 540 tp++ Addr : 0B43: 46 2E : Variable Operation Global Offset - 1 Assign VAR++ post inc Long Addr : 0B45: CaseDone Label0007 Addr : 0B45: 0C : Casedone Addr : 0B46: Label0008 541 ">": op |= 2 Addr : 0B46: 37 00 : Constant Mask Y=0 00000002 Addr : 0B48: 66 4A : Variable Operation Local Offset - 1 Assign ByteMathop | 542 tp++ Addr : 0B4A: 46 2E : Variable Operation Global Offset - 1 Assign VAR++ post inc Long Addr : 0B4C: CaseDone Label0008 Addr : 0B4C: 0C : Casedone Addr : 0B4D: Label0009 543 "=": op |= 4 Addr : 0B4D: 37 01 : Constant Mask Y=1 00000004 Addr : 0B4F: 66 4A : Variable Operation Local Offset - 1 Assign ByteMathop | 544 tp++ Addr : 0B51: 46 2E : Variable Operation Global Offset - 1 Assign VAR++ post inc Long Addr : 0B53: CaseDone Label0009 Addr : 0B53: 0C : Casedone Addr : 0B54: Label0006 Addr : 0B54: Label0004 Addr : 0B54: JMP Label0003 Addr : 0B54: 04 51 : Jmp 0B27 -47 Addr : 0B56: Label0005 Addr : 0B56: Constant Address of Label000A Addr : 0B56: 39 0B 9B : Constant 2 Bytes - 0B 9B 546 case op Addr : 0B59: 64 : Variable Operation Local Offset - 1 Read 547 0: return a Addr : 0B5A: 35 : Constant 1 $00000000 Addr : 0B5B: Case_Value Label000B Addr : 0B5B: 0D 1C : Value Case Address = 0B79 28 548 1: return a < arithExpr Addr : 0B5D: 36 : Constant 2 $00000001 Addr : 0B5E: Case_Value Label000C Addr : 0B5E: 0D 1C : Value Case Address = 0B7C 28 549 2: return a > arithExpr Addr : 0B60: 37 00 : Constant Mask Y=0 00000002 Addr : 0B62: Case_Value Label000D Addr : 0B62: 0D 1F : Value Case Address = 0B83 31 550 3: return a <> arithExpr Addr : 0B64: 37 21 : Constant Mask Y=33 Decrement 00000003 Addr : 0B66: Case_Value Label000E Addr : 0B66: 0D 22 : Value Case Address = 0B8A 34 551 4: return a == arithExpr Addr : 0B68: 37 01 : Constant Mask Y=1 00000004 Addr : 0B6A: Case_Value Label000F Addr : 0B6A: 0D 25 : Value Case Address = 0B91 37 552 5: return a =< arithExpr Addr : 0B6C: 38 05 : Constant 1 Bytes - 05 Addr : 0B6E: Case_Value Label0010 Addr : 0B6E: 0D 28 : Value Case Address = 0B98 40 553 6: return a => arithExpr Addr : 0B70: 38 06 : Constant 1 Bytes - 06 Addr : 0B72: Case_Value Label0011 Addr : 0B72: 0D 2B : Value Case Address = 0B9F 43 554 7: abort string("Invalid comparison") Addr : 0B74: 37 22 : Constant Mask Y=34 Decrement 00000007 Addr : 0B76: Case_Value Label0012 Addr : 0B76: 0D 2E : Value Case Address = 0BA6 46 Addr : 0B78: CaseDone Label0012 Addr : 0B78: 0C : Casedone Addr : 0B79: Label000B 547 0: return a Addr : 0B79: 68 : Variable Operation Local Offset - 2 Read Addr : 0B7A: 33 : Return value Addr : 0B7B: CaseDone Label000B Addr : 0B7B: 0C : Casedone Addr : 0B7C: Label000C 548 1: return a < arithExpr Addr : 0B7C: 68 : Variable Operation Local Offset - 2 Read Addr : 0B7D: 00 : Drop Anchor Push Addr : 0B7E: 05 1A : Call Sub 26 Addr : 0B80: F9 : Math Op < Addr : 0B81: 33 : Return value Addr : 0B82: CaseDone Label000C Addr : 0B82: 0C : Casedone Addr : 0B83: Label000D 549 2: return a > arithExpr Addr : 0B83: 68 : Variable Operation Local Offset - 2 Read Addr : 0B84: 00 : Drop Anchor Push Addr : 0B85: 05 1A : Call Sub 26 Addr : 0B87: FA : Math Op > Addr : 0B88: 33 : Return value Addr : 0B89: CaseDone Label000D Addr : 0B89: 0C : Casedone Addr : 0B8A: Label000E 550 3: return a <> arithExpr Addr : 0B8A: 68 : Variable Operation Local Offset - 2 Read Addr : 0B8B: 00 : Drop Anchor Push Addr : 0B8C: 05 1A : Call Sub 26 Addr : 0B8E: FB : Math Op <> Addr : 0B8F: 33 : Return value Addr : 0B90: CaseDone Label000E Addr : 0B90: 0C : Casedone Addr : 0B91: Label000F 551 4: return a == arithExpr Addr : 0B91: 68 : Variable Operation Local Offset - 2 Read Addr : 0B92: 00 : Drop Anchor Push Addr : 0B93: 05 1A : Call Sub 26 Addr : 0B95: FC : Math Op == Addr : 0B96: 33 : Return value Addr : 0B97: CaseDone Label000F Addr : 0B97: 0C : Casedone Addr : 0B98: Label0010 552 5: return a =< arithExpr Addr : 0B98: 68 : Variable Operation Local Offset - 2 Read Addr : 0B99: 00 : Drop Anchor Push Addr : 0B9A: 05 1A : Call Sub 26 Addr : 0B9C: FD : Math Op =< Addr : 0B9D: 33 : Return value Addr : 0B9E: CaseDone Label0010 Addr : 0B9E: 0C : Casedone Addr : 0B9F: Label0011 553 6: return a => arithExpr Addr : 0B9F: 68 : Variable Operation Local Offset - 2 Read Addr : 0BA0: 00 : Drop Anchor Push Addr : 0BA1: 05 1A : Call Sub 26 Addr : 0BA3: FE : Math Op => Addr : 0BA4: 33 : Return value Addr : 0BA5: CaseDone Label0011 Addr : 0BA5: 0C : Casedone Addr : 0BA6: Label0012 Addr : 0BA6: PBASE Constant Address of Label0013 Addr : 0BA6: 87 8B 9C : Memory Op Byte PBASE + ADDRESS Address = 0B9C 554 7: abort string("Invalid comparison") Addr : 0BA9: 31 : Abort value Addr : 0BAA: CaseDone Label0012 Addr : 0BAA: Data : 0C . Addr : 0BAB: Label000A Addr : 0BAB: Data : 32 2 Addr : 0BAC: Label0013 Addr : 0BAC: Data : 49 6E 76 61 6C 69 64 20 Invalid Addr : 0BB4: Data : 63 6F 6D 70 61 72 69 73 comparis Addr : 0BBC: Data : 6F 6E 00 on. |===========================================================================| Spin Block logicNot with 0 Parameters and 1 Extra Stack Longs. Method 28 pri logicNot | tok |===========================================================================| 557 tok := spaces Addr : 0BBF: 00 : Drop Anchor Push Addr : 0BC0: 05 06 : Call Sub 6 Addr : 0BC2: 65 : Variable Operation Local Offset - 1 Write 558 if tok == 149 ' NOT Addr : 0BC3: 64 : Variable Operation Local Offset - 1 Read Addr : 0BC4: 38 95 : Constant 1 Bytes - 95 Addr : 0BC6: FC : Math Op == Addr : 0BC7: JZ Label0003 Addr : 0BC7: 0A 07 : jz Address = 0BD0 7 559 tp++ Addr : 0BC9: 46 2E : Variable Operation Global Offset - 1 Assign VAR++ post inc Long 560 return not compare Addr : 0BCB: 00 : Drop Anchor Push Addr : 0BCC: 05 1B : Call Sub 27 Addr : 0BCE: FF : Math Op NOT Addr : 0BCF: 33 : Return value Addr : 0BD0: Label0003 Addr : 0BD0: Label0004 561 return compare Addr : 0BD0: 00 : Drop Anchor Push Addr : 0BD1: 05 1B : Call Sub 27 Addr : 0BD3: 33 : Return value Addr : 0BD4: Data : 32 2 |===========================================================================| Spin Block logicAnd with 0 Parameters and 2 Extra Stack Longs. Method 29 pri logicAnd | t, tok |===========================================================================| 564 t := logicNot Addr : 0BD5: 00 : Drop Anchor Push Addr : 0BD6: 05 1C : Call Sub 28 Addr : 0BD8: 65 : Variable Operation Local Offset - 1 Write Addr : 0BD9: Label0003 566 tok := spaces Addr : 0BD9: 00 : Drop Anchor Push Addr : 0BDA: 05 06 : Call Sub 6 Addr : 0BDC: 69 : Variable Operation Local Offset - 2 Write 567 if tok == 150 ' AND Addr : 0BDD: 68 : Variable Operation Local Offset - 2 Read Addr : 0BDE: 38 96 : Constant 1 Bytes - 96 Addr : 0BE0: FC : Math Op == Addr : 0BE1: JZ Label0006 Addr : 0BE1: 0A 0A : jz Address = 0BED 10 568 tp++ Addr : 0BE3: 46 2E : Variable Operation Global Offset - 1 Assign VAR++ post inc Long 569 t := t and logicNot Addr : 0BE5: 64 : Variable Operation Local Offset - 1 Read Addr : 0BE6: 00 : Drop Anchor Push Addr : 0BE7: 05 1C : Call Sub 28 Addr : 0BE9: F0 : Math Op AND Addr : 0BEA: 65 : Variable Operation Local Offset - 1 Write Addr : 0BEB: JMP Label0007 Addr : 0BEB: 04 02 : Jmp 0BEF 2 Addr : 0BED: Label0006 571 return t Addr : 0BED: 64 : Variable Operation Local Offset - 1 Read Addr : 0BEE: 33 : Return value Addr : 0BEF: Label0008 Addr : 0BEF: Label0007 Addr : 0BEF: Label0004 Addr : 0BEF: JMP Label0003 Addr : 0BEF: 04 68 : Jmp 0BD9 -24 Addr : 0BF1: Label0005 Addr : 0BF1: 32 : Return |===========================================================================| Spin Block expr with 0 Parameters and 2 Extra Stack Longs. Method 30 pri expr | tok, t |===========================================================================| 574 t := logicAnd Addr : 0BF2: 00 : Drop Anchor Push Addr : 0BF3: 05 1D : Call Sub 29 Addr : 0BF5: 69 : Variable Operation Local Offset - 2 Write Addr : 0BF6: Label0003 576 tok := spaces Addr : 0BF6: 00 : Drop Anchor Push Addr : 0BF7: 05 06 : Call Sub 6 Addr : 0BF9: 65 : Variable Operation Local Offset - 1 Write 577 if tok == 151 ' OR Addr : 0BFA: 64 : Variable Operation Local Offset - 1 Read Addr : 0BFB: 38 97 : Constant 1 Bytes - 97 Addr : 0BFD: FC : Math Op == Addr : 0BFE: JZ Label0006 Addr : 0BFE: 0A 0A : jz Address = 0C0A 10 578 tp++ Addr : 0C00: 46 2E : Variable Operation Global Offset - 1 Assign VAR++ post inc Long 579 t := t or logicAnd Addr : 0C02: 68 : Variable Operation Local Offset - 2 Read Addr : 0C03: 00 : Drop Anchor Push Addr : 0C04: 05 1D : Call Sub 29 Addr : 0C06: F2 : Math Op OR Addr : 0C07: 69 : Variable Operation Local Offset - 2 Write Addr : 0C08: JMP Label0007 Addr : 0C08: 04 02 : Jmp 0C0C 2 Addr : 0C0A: Label0006 581 return t Addr : 0C0A: 68 : Variable Operation Local Offset - 2 Read Addr : 0C0B: 33 : Return value Addr : 0C0C: Label0008 Addr : 0C0C: Label0007 Addr : 0C0C: Label0004 Addr : 0C0C: JMP Label0003 Addr : 0C0C: 04 68 : Jmp 0BF6 -24 Addr : 0C0E: Label0005 Addr : 0C0E: 32 : Return |===========================================================================| Spin Block specialExpr with 0 Parameters and 0 Extra Stack Longs. Method 31 pri specialExpr |===========================================================================| 584 if spaces <> "=" Addr : 0C0F: 00 : Drop Anchor Push Addr : 0C10: 05 06 : Call Sub 6 Addr : 0C12: 38 3D : Constant 1 Bytes - 3D Addr : 0C14: FB : Math Op <> Addr : 0C15: JZ Label0003 Addr : 0C15: 0A 04 : jz Address = 0C1B 4 585 abort @syn Addr : 0C17: 87 82 44 : Memory Op Byte PBASE + ADDRESS Address = 0244 Addr : 0C1A: 31 : Abort value Addr : 0C1B: Label0003 Addr : 0C1B: Label0004 586 skipspaces Addr : 0C1B: 01 : Drop Anchor Addr : 0C1C: 05 07 : Call Sub 7 587 return expr Addr : 0C1E: 00 : Drop Anchor Push Addr : 0C1F: 05 1E : Call Sub 30 Addr : 0C21: 33 : Return value Addr : 0C22: Data : 32 2 |===========================================================================| Spin Block scanFilename with 1 Parameters and 2 Extra Stack Longs. Method 32 pri scanFilename(f) | c, chars |===========================================================================| 590 chars := 0 Addr : 0C23: 35 : Constant 1 $00000000 Addr : 0C24: 6D : Variable Operation Local Offset - 3 Write 591 tp++ ' skip past initial quote Addr : 0C25: 46 2E : Variable Operation Global Offset - 1 Assign VAR++ post inc Long Addr : 0C27: Label0003 592 repeat while (c := byte[tp++]) <> quote Addr : 0C27: 46 AE : Variable Operation Global Offset - 1 Assign VAR++ post inc Long Push Addr : 0C29: 80 : Memory Op Byte POP Address READ Addr : 0C2A: 6A 80 : Variable Operation Local Offset - 2 Assign Write Push Addr : 0C2C: 38 22 : Constant 1 Bytes - 22 Addr : 0C2E: FB : Math Op <> Addr : 0C2F: JZ Label0005 Addr : 0C2F: 0A 0D : jz Address = 0C3E 13 593 if chars++ < 31 Addr : 0C31: 6E AE : Variable Operation Local Offset - 3 Assign VAR++ post inc Long Push Addr : 0C33: 37 24 : Constant Mask Y=36 Decrement 0000001F Addr : 0C35: F9 : Math Op < Addr : 0C36: JZ Label0006 Addr : 0C36: 0A 04 : jz Address = 0C3C 4 594 byte[f++] := c Addr : 0C38: 68 : Variable Operation Local Offset - 2 Read Addr : 0C39: 66 AE : Variable Operation Local Offset - 1 Assign VAR++ post inc Long Push Addr : 0C3B: 81 : Memory Op Byte POP Address WRITE Addr : 0C3C: Label0006 Addr : 0C3C: Label0007 Addr : 0C3C: Label0004 Addr : 0C3C: JMP Label0003 Addr : 0C3C: 04 69 : Jmp 0C27 -23 Addr : 0C3E: Label0005 595 byte[f] := 0 Addr : 0C3E: 35 : Constant 1 $00000000 Addr : 0C3F: 64 : Variable Operation Local Offset - 1 Read Addr : 0C40: 81 : Memory Op Byte POP Address WRITE Addr : 0C41: 32 : Return |===========================================================================| Spin Block texec with 0 Parameters and 17 Extra Stack Longs. Method 33 pri texec | ht, nt, restart, thisLine, uS, a,b,c,d, f0,f1,f2,f3,f4,f5,f6,f7 |===========================================================================| 598 uS := clkfreq / 1_000_000 Addr : 0C42: 35 : Constant 1 $00000000 Addr : 0C43: C0 : Memory Op Long POP Address READ Addr : 0C44: 3A 0F 42 40 : Constant 3 Bytes - 0F 42 40 Addr : 0C48: F6 : Math Op / Addr : 0C49: 75 : Variable Operation Local Offset - 5 Write 599 thisLine := tp - 2 Addr : 0C4A: 44 : Variable Operation Global Offset - 1 Read Addr : 0C4B: 37 00 : Constant Mask Y=0 00000002 Addr : 0C4D: ED : Math Op - Addr : 0C4E: 71 : Variable Operation Local Offset - 4 Write 600 restart := 1 Addr : 0C4F: 36 : Constant 2 $00000001 Addr : 0C50: 6D : Variable Operation Local Offset - 3 Write Addr : 0C51: Label0003 601 repeat while restart Addr : 0C51: 6C : Variable Operation Local Offset - 3 Read Addr : 0C52: JZ Label0005 Addr : 0C52: 0A 8D 42 : jz Address = 1997 3394 602 restart := 0 Addr : 0C55: 35 : Constant 1 $00000000 Addr : 0C56: 6D : Variable Operation Local Offset - 3 Write 603 ht := spaces Addr : 0C57: 00 : Drop Anchor Push Addr : 0C58: 05 06 : Call Sub 6 Addr : 0C5A: 65 : Variable Operation Local Offset - 1 Write 604 if ht == 0 Addr : 0C5B: 64 : Variable Operation Local Offset - 1 Read Addr : 0C5C: 35 : Constant 1 $00000000 Addr : 0C5D: FC : Math Op == Addr : 0C5E: JZ Label0006 Addr : 0C5E: 0A 01 : jz Address = 0C61 1 605 return Addr : 0C60: 32 : Return Addr : 0C61: Label0006 Addr : 0C61: Label0007 606 nt := skipspaces Addr : 0C61: 00 : Drop Anchor Push Addr : 0C62: 05 07 : Call Sub 7 Addr : 0C64: 69 : Variable Operation Local Offset - 2 Write 607 if isvar(ht) and nt == "=" Addr : 0C65: 00 : Drop Anchor Push Addr : 0C66: 64 : Variable Operation Local Offset - 1 Read Addr : 0C67: 05 0B : Call Sub 11 Addr : 0C69: 68 : Variable Operation Local Offset - 2 Read Addr : 0C6A: 38 3D : Constant 1 Bytes - 3D Addr : 0C6C: FC : Math Op == Addr : 0C6D: F0 : Math Op AND Addr : 0C6E: JZ Label0008 Addr : 0C6E: 0A 0E : jz Address = 0C7E 14 608 tp++ Addr : 0C70: 46 2E : Variable Operation Global Offset - 1 Assign VAR++ post inc Long 609 vars[fixvar(ht)] := expr Addr : 0C72: 00 : Drop Anchor Push Addr : 0C73: 05 1E : Call Sub 30 Addr : 0C75: 00 : Drop Anchor Push Addr : 0C76: 64 : Variable Operation Local Offset - 1 Read Addr : 0C77: 05 0A : Call Sub 10 Addr : 0C79: D9 1C : Memory Op Long VBASE + POP Index WRITE Address = 001C Addr : 0C7B: JMP Label0009 Addr : 0C7B: 04 8D 0A : Jmp 1988 3338 Addr : 0C7E: Label0008 610 elseif ht => 128 Addr : 0C7E: 64 : Variable Operation Local Offset - 1 Read Addr : 0C7F: 37 06 : Constant Mask Y=6 00000080 Addr : 0C81: FE : Math Op => Addr : 0C82: JZ Label000A Addr : 0C82: 0A 8C FF : jz Address = 1984 3327 Addr : 0C85: Constant Address of Label000B Addr : 0C85: 39 19 72 : Constant 2 Bytes - 19 72 611 case ht Addr : 0C88: 64 : Variable Operation Local Offset - 1 Read 612 128: ' THEN Addr : 0C89: 37 06 : Constant Mask Y=6 00000080 Addr : 0C8B: Case_Value Label000C Addr : 0C8B: 0D 80 C9 : Value Case Address = 0D57 201 620 130: ' INPUT {"";} {, } Addr : 0C8E: 38 82 : Constant 1 Bytes - 82 Addr : 0C90: Case_Value Label0012 Addr : 0C90: 0D 80 DF : Value Case Address = 0D72 223 647 131: ' PRINT Addr : 0C93: 38 83 : Constant 1 Bytes - 83 Addr : 0C95: Case_Value Label002A Addr : 0C95: 0D 81 7D : Value Case Address = 0E15 381 693 132, 133: ' GOTO, GOSUB Addr : 0C98: 38 84 : Constant 1 Bytes - 84 Addr : 0C9A: Case_Value Label0048 Addr : 0C9A: 0D 82 54 : Value Case Address = 0EF1 596 Addr : 0C9D: 38 85 : Constant 1 Bytes - 85 Addr : 0C9F: Case_Value Label0048 Addr : 0C9F: 0D 82 4F : Value Case Address = 0EF1 591 703 134: ' RETURN Addr : 0CA2: 38 86 : Constant 1 Bytes - 86 Addr : 0CA4: Case_Value Label004F Addr : 0CA4: 0D 82 79 : Value Case Address = 0F20 633 707 135: ' REM Addr : 0CA7: 38 87 : Constant 1 Bytes - 87 Addr : 0CA9: Case_Value Label0053 Addr : 0CA9: 0D 82 84 : Value Case Address = 0F30 644 709 136: ' NEW Addr : 0CAC: 38 88 : Constant 1 Bytes - 88 Addr : 0CAE: Case_Value Label0057 Addr : 0CAE: 0D 82 87 : Value Case Address = 0F38 647 711 137: ' LIST { {,}} Addr : 0CB1: 38 89 : Constant 1 Bytes - 89 Addr : 0CB3: Case_Value Label0058 Addr : 0CB3: 0D 82 86 : Value Case Address = 0F3C 646 727 138: ' RUN Addr : 0CB6: 38 8A : Constant 1 Bytes - 8A Addr : 0CB8: Case_Value Label0062 Addr : 0CB8: 0D 82 E4 : Value Case Address = 0F9F 740 729 140: ' OPEN " ", R/W/A Addr : 0CBB: 38 8C : Constant 1 Bytes - 8C Addr : 0CBD: Case_Value Label0063 Addr : 0CBD: 0D 82 E3 : Value Case Address = 0FA3 739 746 141: ' READ {, } Addr : 0CC0: 38 8D : Constant 1 Bytes - 8D Addr : 0CC2: Case_Value Label0073 Addr : 0CC2: 0D 83 54 : Value Case Address = 1019 852 775 142: ' WRITE ... Addr : 0CC5: 38 8E : Constant 1 Bytes - 8E Addr : 0CC7: Case_Value Label008B Addr : 0CC7: 0D 84 02 : Value Case Address = 10CC 1026 820 143: ' CLOSE Addr : 0CCA: 38 8F : Constant 1 Bytes - 8F Addr : 0CCC: Case_Value Label00A9 Addr : 0CCC: 0D 84 D9 : Value Case Address = 11A8 1241 825 144: ' DELETE " " Addr : 0CCF: 38 90 : Constant 1 Bytes - 90 Addr : 0CD1: Case_Value Label00AD Addr : 0CD1: 0D 84 E9 : Value Case Address = 11BD 1257 836 145: ' RENAME " "," " Addr : 0CD4: 38 91 : Constant 1 Bytes - 91 Addr : 0CD6: Case_Value Label00B9 Addr : 0CD6: 0D 85 26 : Value Case Address = 11FF 1318 846 146: ' FILES Addr : 0CD9: 38 92 : Constant 1 Bytes - 92 Addr : 0CDB: Case_Value Label00C1 Addr : 0CDB: 0D 85 54 : Value Case Address = 1232 1364 864 147: ' SAVE or SAVE "" Addr : 0CDE: 38 93 : Constant 1 Bytes - 93 Addr : 0CE0: Case_Value Label00CF Addr : 0CE0: 0D 85 AF : Value Case Address = 1292 1455 896 148: ' LOAD or LOAD "" Addr : 0CE3: 38 94 : Constant 1 Bytes - 94 Addr : 0CE5: Case_Value Label00F2 Addr : 0CE5: 0D 86 A0 : Value Case Address = 1388 1696 933 154: ' FOR = TO {STEP } Addr : 0CE8: 38 9A : Constant 1 Bytes - 9A Addr : 0CEA: Case_Value Label0112 Addr : 0CEA: 0D 87 9E : Value Case Address = 148B 1950 970 157: ' NEXT Addr : 0CED: 38 9D : Constant 1 Bytes - 9D Addr : 0CEF: Case_Value Label012C Addr : 0CEF: 0D 88 62 : Value Case Address = 1554 2146 983 159: ' OUTA [ {..} ] = Addr : 0CF2: 38 9F : Constant 1 Bytes - 9F Addr : 0CF4: Case_Value Label0134 Addr : 0CF4: 0D 88 A0 : Value Case Address = 1597 2208 996 160: ' PAUSE {,} Addr : 0CF7: 38 A0 : Constant 1 Bytes - A0 Addr : 0CF9: Case_Value Label013B Addr : 0CF9: 0D 88 E3 : Value Case Address = 15DF 2275 1012 166: ' BYTE [ ] = Addr : 0CFC: 38 A6 : Constant 1 Bytes - A6 Addr : 0CFE: Case_Value Label0143 Addr : 0CFE: 0D 89 29 : Value Case Address = 162A 2345 1015 167: ' WORD [ ] = Addr : 0D01: 38 A7 : Constant 1 Bytes - A7 Addr : 0D03: Case_Value Label0144 Addr : 0D03: 0D 89 30 : Value Case Address = 1636 2352 1018 168: ' LONG [ ] = Addr : 0D06: 38 A8 : Constant 1 Bytes - A8 Addr : 0D08: Case_Value Label0145 Addr : 0D08: 0D 89 37 : Value Case Address = 1642 2359 1021 170: ' PHSA = Addr : 0D0B: 38 AA : Constant 1 Bytes - AA Addr : 0D0D: Case_Value Label0146 Addr : 0D0D: 0D 89 3E : Value Case Address = 164E 2366 1023 171: ' PHSB = Addr : 0D10: 38 AB : Constant 1 Bytes - AB Addr : 0D12: Case_Value Label0147 Addr : 0D12: 0D 89 3F : Value Case Address = 1654 2367 1025 172: ' FRQA = Addr : 0D15: 38 AC : Constant 1 Bytes - AC Addr : 0D17: Case_Value Label0148 Addr : 0D17: 0D 89 40 : Value Case Address = 165A 2368 1027 173: ' FRQB = Addr : 0D1A: 38 AD : Constant 1 Bytes - AD Addr : 0D1C: Case_Value Label0149 Addr : 0D1C: 0D 89 41 : Value Case Address = 1660 2369 1029 174: ' CTRA = Addr : 0D1F: 38 AE : Constant 1 Bytes - AE Addr : 0D21: Case_Value Label014A Addr : 0D21: 0D 89 42 : Value Case Address = 1666 2370 1031 175: ' CTRB = Addr : 0D24: 38 AF : Constant 1 Bytes - AF Addr : 0D26: Case_Value Label014B Addr : 0D26: 0D 89 43 : Value Case Address = 166C 2371 1033 176: ' DISPLAY {,} Addr : 0D29: 38 B0 : Constant 1 Bytes - B0 Addr : 0D2B: Case_Value Label014C Addr : 0D2B: 0D 89 44 : Value Case Address = 1672 2372 1039 178: ' LET = Addr : 0D2E: 38 B2 : Constant 1 Bytes - B2 Addr : 0D30: Case_Value Label0150 Addr : 0D30: 0D 89 5E : Value Case Address = 1691 2398 1045 179: ' STOP Addr : 0D33: 38 B3 : Constant 1 Bytes - B3 Addr : 0D35: Case_Value Label0153 Addr : 0D35: 0D 89 74 : Value Case Address = 16AC 2420 1048 180: ' END Addr : 0D38: 38 B4 : Constant 1 Bytes - B4 Addr : 0D3A: Case_Value Label0154 Addr : 0D3A: 0D 89 76 : Value Case Address = 16B3 2422 1051 181: ' EEPROM [ ] = Addr : 0D3D: 38 B5 : Constant 1 Bytes - B5 Addr : 0D3F: Case_Value Label0155 Addr : 0D3F: 0D 89 78 : Value Case Address = 16BA 2424 1058 182: ' FILE = Addr : 0D42: 38 B6 : Constant 1 Bytes - B6 Addr : 0D44: Case_Value Label015C Addr : 0D44: 0D 89 96 : Value Case Address = 16DD 2454 1061 184: ' SPIN [{,}] or "" Addr : 0D47: 38 B8 : Constant 1 Bytes - B8 Addr : 0D49: Case_Value Label0160 Addr : 0D49: 0D 89 A1 : Value Case Address = 16ED 2465 1075 185: ' COPY [],"" or COPY "",[] or Addr : 0D4C: 38 B9 : Constant 1 Bytes - B9 Addr : 0D4E: Case_Value Label016E Addr : 0D4E: 0D 89 EE : Value Case Address = 173F 2542 1147 186: ' DUMP , or DUMP [], Addr : 0D51: 38 BA : Constant 1 Bytes - BA Addr : 0D53: Case_Value Label01C7 Addr : 0D53: 0D 8B EF : Value Case Address = 1945 3055 Addr : 0D56: CaseDone Label01C7 Addr : 0D56: 0C : Casedone Addr : 0D57: Label000C 613 a := expr Addr : 0D57: 00 : Drop Anchor Push Addr : 0D58: 05 1E : Call Sub 30 Addr : 0D5A: 79 : Variable Operation Local Offset - 6 Write 614 if spaces <> 129 Addr : 0D5B: 00 : Drop Anchor Push Addr : 0D5C: 05 06 : Call Sub 6 Addr : 0D5E: 38 81 : Constant 1 Bytes - 81 Addr : 0D60: FB : Math Op <> Addr : 0D61: JZ Label000D Addr : 0D61: 0A 04 : jz Address = 0D67 4 Addr : 0D63: PBASE Constant Address of Label000F Addr : 0D63: 87 99 88 : Memory Op Byte PBASE + ADDRESS Address = 1988 615 abort string("MISSING THEN") Addr : 0D66: 31 : Abort value Addr : 0D67: Label000D Addr : 0D67: Label000E 616 skipspaces Addr : 0D67: 01 : Drop Anchor Addr : 0D68: 05 07 : Call Sub 7 617 if not a Addr : 0D6A: 78 : Variable Operation Local Offset - 6 Read Addr : 0D6B: FF : Math Op NOT Addr : 0D6C: JZ Label0010 Addr : 0D6C: 0A 01 : jz Address = 0D6F 1 618 return Addr : 0D6E: 32 : Return Addr : 0D6F: Label0010 Addr : 0D6F: Label0011 619 restart := 1 Addr : 0D6F: 36 : Constant 2 $00000001 Addr : 0D70: 6D : Variable Operation Local Offset - 3 Write Addr : 0D71: CaseDone Label000C Addr : 0D71: 0C : Casedone Addr : 0D72: Label0012 621 if nt == quote Addr : 0D72: 68 : Variable Operation Local Offset - 2 Read Addr : 0D73: 38 22 : Constant 1 Bytes - 22 Addr : 0D75: FC : Math Op == Addr : 0D76: JZ Label0013 Addr : 0D76: 0A 37 : jz Address = 0DAF 55 622 c := byte[++tp] Addr : 0D78: 46 A6 : Variable Operation Global Offset - 1 Assign ++VAR pre-inc Long Push Addr : 0D7A: 80 : Memory Op Byte POP Address READ Addr : 0D7B: CD 20 : Memory Op Long DBASE + WRITE Address = 0020 Addr : 0D7D: Label0015 623 repeat while c <> quote and c Addr : 0D7D: CC 20 : Memory Op Long DBASE + READ Address = 0020 Addr : 0D7F: 38 22 : Constant 1 Bytes - 22 Addr : 0D81: FB : Math Op <> Addr : 0D82: CC 20 : Memory Op Long DBASE + READ Address = 0020 Addr : 0D84: F0 : Math Op AND Addr : 0D85: JZ Label0017 Addr : 0D85: 0A 0D : jz Address = 0D94 13 624 dsp.out(c) Addr : 0D87: 01 : Drop Anchor Addr : 0D88: CC 20 : Memory Op Long DBASE + READ Address = 0020 Addr : 0D8A: 06 28 09 : Call Obj.Sub 40 9 625 c := byte[++tp] Addr : 0D8D: 46 A6 : Variable Operation Global Offset - 1 Assign ++VAR pre-inc Long Push Addr : 0D8F: 80 : Memory Op Byte POP Address READ Addr : 0D90: CD 20 : Memory Op Long DBASE + WRITE Address = 0020 Addr : 0D92: Label0016 Addr : 0D92: JMP Label0015 Addr : 0D92: 04 69 : Jmp 0D7D -23 Addr : 0D94: Label0017 626 if c <> quote Addr : 0D94: CC 20 : Memory Op Long DBASE + READ Address = 0020 Addr : 0D96: 38 22 : Constant 1 Bytes - 22 Addr : 0D98: FB : Math Op <> Addr : 0D99: JZ Label0018 Addr : 0D99: 0A 04 : jz Address = 0D9F 4 627 abort @syn Addr : 0D9B: 87 82 44 : Memory Op Byte PBASE + ADDRESS Address = 0244 Addr : 0D9E: 31 : Abort value Addr : 0D9F: Label0018 Addr : 0D9F: Label0019 628 if skipspaces <> ";" Addr : 0D9F: 00 : Drop Anchor Push Addr : 0DA0: 05 07 : Call Sub 7 Addr : 0DA2: 38 3B : Constant 1 Bytes - 3B Addr : 0DA4: FB : Math Op <> Addr : 0DA5: JZ Label001A Addr : 0DA5: 0A 04 : jz Address = 0DAB 4 629 abort @syn Addr : 0DA7: 87 82 44 : Memory Op Byte PBASE + ADDRESS Address = 0244 Addr : 0DAA: 31 : Abort value Addr : 0DAB: Label001A Addr : 0DAB: Label001B 630 nt := skipspaces Addr : 0DAB: 00 : Drop Anchor Push Addr : 0DAC: 05 07 : Call Sub 7 Addr : 0DAE: 69 : Variable Operation Local Offset - 2 Write Addr : 0DAF: Label0013 Addr : 0DAF: Label0014 631 if not isvar(nt) Addr : 0DAF: 00 : Drop Anchor Push Addr : 0DB0: 68 : Variable Operation Local Offset - 2 Read Addr : 0DB1: 05 0B : Call Sub 11 Addr : 0DB3: FF : Math Op NOT Addr : 0DB4: JZ Label001C Addr : 0DB4: 0A 04 : jz Address = 0DBA 4 632 abort @syn Addr : 0DB6: 87 82 44 : Memory Op Byte PBASE + ADDRESS Address = 0244 Addr : 0DB9: 31 : Abort value Addr : 0DBA: Label001C Addr : 0DBA: Label001D 633 b := 0 Addr : 0DBA: 35 : Constant 1 $00000000 Addr : 0DBB: 7D : Variable Operation Local Offset - 7 Write 634 inVars[b++] := fixvar(nt) Addr : 0DBC: 00 : Drop Anchor Push Addr : 0DBD: 68 : Variable Operation Local Offset - 2 Read Addr : 0DBE: 05 0A : Call Sub 10 Addr : 0DC0: 7E AE : Variable Operation Local Offset - 7 Assign VAR++ post inc Long Push Addr : 0DC2: 99 84 1E : Memory Op Byte VBASE + POP Index WRITE Address = 041E Addr : 0DC5: Label001E 635 repeat while skipspaces == "," Addr : 0DC5: 00 : Drop Anchor Push Addr : 0DC6: 05 07 : Call Sub 7 Addr : 0DC8: 38 2C : Constant 1 Bytes - 2C Addr : 0DCA: FC : Math Op == Addr : 0DCB: JZ Label0020 Addr : 0DCB: 0A 1F : jz Address = 0DEC 31 636 nt := skipspaces Addr : 0DCD: 00 : Drop Anchor Push Addr : 0DCE: 05 07 : Call Sub 7 Addr : 0DD0: 69 : Variable Operation Local Offset - 2 Write 637 if not isvar(nt) or b == 26 Addr : 0DD1: 00 : Drop Anchor Push Addr : 0DD2: 68 : Variable Operation Local Offset - 2 Read Addr : 0DD3: 05 0B : Call Sub 11 Addr : 0DD5: FF : Math Op NOT Addr : 0DD6: 7C : Variable Operation Local Offset - 7 Read Addr : 0DD7: 38 1A : Constant 1 Bytes - 1A Addr : 0DD9: FC : Math Op == Addr : 0DDA: F2 : Math Op OR Addr : 0DDB: JZ Label0021 Addr : 0DDB: 0A 04 : jz Address = 0DE1 4 638 abort @syn Addr : 0DDD: 87 82 44 : Memory Op Byte PBASE + ADDRESS Address = 0244 Addr : 0DE0: 31 : Abort value Addr : 0DE1: Label0021 Addr : 0DE1: Label0022 639 inVars[b++] := fixvar(nt) Addr : 0DE1: 00 : Drop Anchor Push Addr : 0DE2: 68 : Variable Operation Local Offset - 2 Read Addr : 0DE3: 05 0A : Call Sub 10 Addr : 0DE5: 7E AE : Variable Operation Local Offset - 7 Assign VAR++ post inc Long Push Addr : 0DE7: 99 84 1E : Memory Op Byte VBASE + POP Index WRITE Address = 041E Addr : 0DEA: Label001F Addr : 0DEA: JMP Label001E Addr : 0DEA: 04 59 : Jmp 0DC5 -39 Addr : 0DEC: Label0020 640 getline Addr : 0DEC: 01 : Drop Anchor Addr : 0DED: 05 04 : Call Sub 4 641 tokenize Addr : 0DEF: 01 : Drop Anchor Addr : 0DF0: 05 0C : Call Sub 12 642 repeat a from 1 to b Addr : 0DF2: 36 : Constant 2 $00000001 Addr : 0DF3: 79 : Variable Operation Local Offset - 6 Write Addr : 0DF4: Label0023 643 vars[inVars[a-1]] := expr Addr : 0DF4: 00 : Drop Anchor Push Addr : 0DF5: 05 1E : Call Sub 30 Addr : 0DF7: 78 : Variable Operation Local Offset - 6 Read Addr : 0DF8: 36 : Constant 2 $00000001 Addr : 0DF9: ED : Math Op - Addr : 0DFA: 98 84 1E : Memory Op Byte VBASE + POP Index READ Address = 041E Addr : 0DFD: D9 1C : Memory Op Long VBASE + POP Index WRITE Address = 001C 644 if a < b Addr : 0DFF: 78 : Variable Operation Local Offset - 6 Read Addr : 0E00: 7C : Variable Operation Local Offset - 7 Read Addr : 0E01: F9 : Math Op < Addr : 0E02: JZ Label0026 Addr : 0E02: 0A 0B : jz Address = 0E0F 11 645 if spaces == "," Addr : 0E04: 00 : Drop Anchor Push Addr : 0E05: 05 06 : Call Sub 6 Addr : 0E07: 38 2C : Constant 1 Bytes - 2C Addr : 0E09: FC : Math Op == Addr : 0E0A: JZ Label0028 Addr : 0E0A: 0A 03 : jz Address = 0E0F 3 646 skipspaces Addr : 0E0C: 01 : Drop Anchor Addr : 0E0D: 05 07 : Call Sub 7 Addr : 0E0F: Label0028 Addr : 0E0F: Label0029 Addr : 0E0F: Label0026 Addr : 0E0F: Label0027 Addr : 0E0F: Label0024 642 repeat a from 1 to b Addr : 0E0F: 36 : Constant 2 $00000001 Addr : 0E10: 7C : Variable Operation Local Offset - 7 Read Addr : 0E11: Repeat a Step Label0023 Addr : 0E11: 7A 02 60 : Variable Operation Local Offset - 6 Assign Repeat-Var loop Address= 0DF4 -32 Addr : 0E14: Label0025 Addr : 0E14: CaseDone Label0012 Addr : 0E14: 0C : Casedone Addr : 0E15: Label002A 648 a := 0 Addr : 0E15: 35 : Constant 1 $00000000 Addr : 0E16: 79 : Variable Operation Local Offset - 6 Write Addr : 0E17: Label002B 650 nt := spaces Addr : 0E17: 00 : Drop Anchor Push Addr : 0E18: 05 06 : Call Sub 6 Addr : 0E1A: 69 : Variable Operation Local Offset - 2 Write 651 if nt == 0 or nt == ":" Addr : 0E1B: 68 : Variable Operation Local Offset - 2 Read Addr : 0E1C: 35 : Constant 1 $00000000 Addr : 0E1D: FC : Math Op == Addr : 0E1E: 68 : Variable Operation Local Offset - 2 Read Addr : 0E1F: 38 3A : Constant 1 Bytes - 3A Addr : 0E21: FC : Math Op == Addr : 0E22: F2 : Math Op OR Addr : 0E23: JZ Label002E Addr : 0E23: 0A 03 : jz Address = 0E28 3 652 quit Addr : 0E25: JMP Label002D Addr : 0E25: 04 80 C8 : Jmp 0EF0 200 Addr : 0E28: Label002E Addr : 0E28: Label002F 653 if nt == quote Addr : 0E28: 68 : Variable Operation Local Offset - 2 Read Addr : 0E29: 38 22 : Constant 1 Bytes - 22 Addr : 0E2B: FC : Math Op == Addr : 0E2C: JZ Label0030 Addr : 0E2C: 0A 22 : jz Address = 0E50 34 654 tp++ Addr : 0E2E: 46 2E : Variable Operation Global Offset - 1 Assign VAR++ post inc Long Addr : 0E30: Label0032 656 c := byte[tp++] Addr : 0E30: 46 AE : Variable Operation Global Offset - 1 Assign VAR++ post inc Long Push Addr : 0E32: 80 : Memory Op Byte POP Address READ Addr : 0E33: CD 20 : Memory Op Long DBASE + WRITE Address = 0020 657 if c == 0 or c == quote Addr : 0E35: CC 20 : Memory Op Long DBASE + READ Address = 0020 Addr : 0E37: 35 : Constant 1 $00000000 Addr : 0E38: FC : Math Op == Addr : 0E39: CC 20 : Memory Op Long DBASE + READ Address = 0020 Addr : 0E3B: 38 22 : Constant 1 Bytes - 22 Addr : 0E3D: FC : Math Op == Addr : 0E3E: F2 : Math Op OR Addr : 0E3F: JZ Label0035 Addr : 0E3F: 0A 02 : jz Address = 0E43 2 658 quit Addr : 0E41: JMP Label0034 Addr : 0E41: 04 0A : Jmp 0E4D 10 Addr : 0E43: Label0035 Addr : 0E43: Label0036 659 dsp.out(c) Addr : 0E43: 01 : Drop Anchor Addr : 0E44: CC 20 : Memory Op Long DBASE + READ Address = 0020 Addr : 0E46: 06 28 09 : Call Obj.Sub 40 9 660 a++ Addr : 0E49: 7A 2E : Variable Operation Local Offset - 6 Assign VAR++ post inc Long Addr : 0E4B: Label0033 Addr : 0E4B: JMP Label0032 Addr : 0E4B: 04 63 : Jmp 0E30 -29 Addr : 0E4D: Label0034 Addr : 0E4D: JMP Label0031 Addr : 0E4D: 04 80 55 : Jmp 0EA5 85 Addr : 0E50: Label0030 662 d~ Addr : 0E50: CE 24 18 : Memory Op Long DBASE + ASSIGN Address = 0024 VAR~ Post-clear 663 if (b := expr) < 0 Addr : 0E53: 00 : Drop Anchor Push Addr : 0E54: 05 1E : Call Sub 30 Addr : 0E56: 7E 80 : Variable Operation Local Offset - 7 Assign Write Push Addr : 0E58: 35 : Constant 1 $00000000 Addr : 0E59: F9 : Math Op < Addr : 0E5A: JZ Label0038 Addr : 0E5A: 0A 0A : jz Address = 0E66 10 664 -b Addr : 0E5C: 7E 46 : Variable Operation Local Offset - 7 Assign LongMathop - 665 dsp.out("-") Addr : 0E5E: 01 : Drop Anchor Addr : 0E5F: 38 2D : Constant 1 Bytes - 2D Addr : 0E61: 06 28 09 : Call Obj.Sub 40 9 666 a++ Addr : 0E64: 7A 2E : Variable Operation Local Offset - 6 Assign VAR++ post inc Long Addr : 0E66: Label0038 Addr : 0E66: Label0039 667 c := 1_000_000_000 Addr : 0E66: 3B 3B 9A CA 00 : Constant 4 Bytes - 3B 9A CA 00 Addr : 0E6B: CD 20 : Memory Op Long DBASE + WRITE Address = 0020 668 repeat 10 Addr : 0E6D: 38 0A : Constant 1 Bytes - 0A Addr : 0E6F: TJZ Label003C Addr : 0E6F: 08 34 : tjz Address = 0EA5 52 Addr : 0E71: Label003A 669 if b => c Addr : 0E71: 7C : Variable Operation Local Offset - 7 Read Addr : 0E72: CC 20 : Memory Op Long DBASE + READ Address = 0020 Addr : 0E74: FE : Math Op => Addr : 0E75: JZ Label003D Addr : 0E75: 0A 16 : jz Address = 0E8D 22 670 dsp.out(b / c + "0") Addr : 0E77: 01 : Drop Anchor Addr : 0E78: 7C : Variable Operation Local Offset - 7 Read Addr : 0E79: CC 20 : Memory Op Long DBASE + READ Address = 0020 Addr : 0E7B: F6 : Math Op / Addr : 0E7C: 38 30 : Constant 1 Bytes - 30 Addr : 0E7E: EC : Math Op + Addr : 0E7F: 06 28 09 : Call Obj.Sub 40 9 671 a++ Addr : 0E82: 7A 2E : Variable Operation Local Offset - 6 Assign VAR++ post inc Long 672 b //= c Addr : 0E84: CC 20 : Memory Op Long DBASE + READ Address = 0020 Addr : 0E86: 7E 57 : Variable Operation Local Offset - 7 Assign LongMathop // 673 d~~ Addr : 0E88: CE 24 1C : Memory Op Long DBASE + ASSIGN Address = 0024 VAR~~ Post-set Addr : 0E8B: JMP Label003E Addr : 0E8B: 04 11 : Jmp 0E9E 17 Addr : 0E8D: Label003D 674 elseif d or c == 1 Addr : 0E8D: CC 24 : Memory Op Long DBASE + READ Address = 0024 Addr : 0E8F: CC 20 : Memory Op Long DBASE + READ Address = 0020 Addr : 0E91: 36 : Constant 2 $00000001 Addr : 0E92: FC : Math Op == Addr : 0E93: F2 : Math Op OR Addr : 0E94: JZ Label003F Addr : 0E94: 0A 08 : jz Address = 0E9E 8 675 dsp.out("0") Addr : 0E96: 01 : Drop Anchor Addr : 0E97: 38 30 : Constant 1 Bytes - 30 Addr : 0E99: 06 28 09 : Call Obj.Sub 40 9 676 a++ Addr : 0E9C: 7A 2E : Variable Operation Local Offset - 6 Assign VAR++ post inc Long Addr : 0E9E: Label003F Addr : 0E9E: Label003E 677 c /= 10 Addr : 0E9E: 38 0A : Constant 1 Bytes - 0A Addr : 0EA0: CE 20 56 : Memory Op Long DBASE + ASSIGN Address = 0020 LongMathop / Addr : 0EA3: Label003B Addr : 0EA3: DJNZ Label003A Addr : 0EA3: 09 4C : djnz Address = 0E71 -52 Addr : 0EA5: Label003C Addr : 0EA5: Label0037 Addr : 0EA5: Label0031 678 nt := spaces Addr : 0EA5: 00 : Drop Anchor Push Addr : 0EA6: 05 06 : Call Sub 6 Addr : 0EA8: 69 : Variable Operation Local Offset - 2 Write 679 if nt == ";" Addr : 0EA9: 68 : Variable Operation Local Offset - 2 Read Addr : 0EAA: 38 3B : Constant 1 Bytes - 3B Addr : 0EAC: FC : Math Op == Addr : 0EAD: JZ Label0040 Addr : 0EAD: 0A 04 : jz Address = 0EB3 4 680 tp++ Addr : 0EAF: 46 2E : Variable Operation Global Offset - 1 Assign VAR++ post inc Long Addr : 0EB1: JMP Label0041 Addr : 0EB1: 04 3A : Jmp 0EED 58 Addr : 0EB3: Label0040 681 elseif nt == "," Addr : 0EB3: 68 : Variable Operation Local Offset - 2 Read Addr : 0EB4: 38 2C : Constant 1 Bytes - 2C Addr : 0EB6: FC : Math Op == Addr : 0EB7: JZ Label0042 Addr : 0EB7: 0A 1C : jz Address = 0ED5 28 682 dsp.out(" ") Addr : 0EB9: 01 : Drop Anchor Addr : 0EBA: 37 04 : Constant Mask Y=4 00000020 Addr : 0EBC: 06 28 09 : Call Obj.Sub 40 9 683 a++ Addr : 0EBF: 7A 2E : Variable Operation Local Offset - 6 Assign VAR++ post inc Long Addr : 0EC1: Label0043 684 repeat while a & 7 Addr : 0EC1: 78 : Variable Operation Local Offset - 6 Read Addr : 0EC2: 37 22 : Constant Mask Y=34 Decrement 00000007 Addr : 0EC4: E8 : Math Op & Addr : 0EC5: JZ Label0045 Addr : 0EC5: 0A 0A : jz Address = 0ED1 10 685 dsp.out(" ") Addr : 0EC7: 01 : Drop Anchor Addr : 0EC8: 37 04 : Constant Mask Y=4 00000020 Addr : 0ECA: 06 28 09 : Call Obj.Sub 40 9 686 a++ Addr : 0ECD: 7A 2E : Variable Operation Local Offset - 6 Assign VAR++ post inc Long Addr : 0ECF: Label0044 Addr : 0ECF: JMP Label0043 Addr : 0ECF: 04 70 : Jmp 0EC1 -16 Addr : 0ED1: Label0045 687 tp++ Addr : 0ED1: 46 2E : Variable Operation Global Offset - 1 Assign VAR++ post inc Long Addr : 0ED3: JMP Label0041 Addr : 0ED3: 04 18 : Jmp 0EED 24 Addr : 0ED5: Label0042 688 elseif nt == 0 or nt == ":" Addr : 0ED5: 68 : Variable Operation Local Offset - 2 Read Addr : 0ED6: 35 : Constant 1 $00000000 Addr : 0ED7: FC : Math Op == Addr : 0ED8: 68 : Variable Operation Local Offset - 2 Read Addr : 0ED9: 38 3A : Constant 1 Bytes - 3A Addr : 0EDB: FC : Math Op == Addr : 0EDC: F2 : Math Op OR Addr : 0EDD: JZ Label0046 Addr : 0EDD: 0A 0A : jz Address = 0EE9 10 689 dsp.out(fReturn) Addr : 0EDF: 01 : Drop Anchor Addr : 0EE0: 38 0D : Constant 1 Bytes - 0D Addr : 0EE2: 06 28 09 : Call Obj.Sub 40 9 690 quit Addr : 0EE5: JMP Label002D Addr : 0EE5: 04 09 : Jmp 0EF0 9 Addr : 0EE7: JMP Label0041 Addr : 0EE7: 04 04 : Jmp 0EED 4 Addr : 0EE9: Label0046 692 abort @syn Addr : 0EE9: 87 82 44 : Memory Op Byte PBASE + ADDRESS Address = 0244 Addr : 0EEC: 31 : Abort value Addr : 0EED: Label0047 Addr : 0EED: Label0041 Addr : 0EED: Label002C Addr : 0EED: JMP Label002B Addr : 0EED: 04 FF 27 : Jmp 0E17 -217 Addr : 0EF0: Label002D Addr : 0EF0: CaseDone Label002A Addr : 0EF0: 0C : Casedone Addr : 0EF1: Label0048 694 a := expr Addr : 0EF1: 00 : Drop Anchor Push Addr : 0EF2: 05 1E : Call Sub 30 Addr : 0EF4: 79 : Variable Operation Local Offset - 6 Write 695 if a < 0 or a => 65535 Addr : 0EF5: 78 : Variable Operation Local Offset - 6 Read Addr : 0EF6: 35 : Constant 1 $00000000 Addr : 0EF7: F9 : Math Op < Addr : 0EF8: 78 : Variable Operation Local Offset - 6 Read Addr : 0EF9: 37 2F : Constant Mask Y=47 Decrement 0000FFFF Addr : 0EFB: FE : Math Op => Addr : 0EFC: F2 : Math Op OR Addr : 0EFD: JZ Label0049 Addr : 0EFD: 0A 04 : jz Address = 0F03 4 696 abort @ln Addr : 0EFF: 87 82 51 : Memory Op Byte PBASE + ADDRESS Address = 0251 Addr : 0F02: 31 : Abort value Addr : 0F03: Label0049 Addr : 0F03: Label004A 697 b := findline(a) Addr : 0F03: 00 : Drop Anchor Push Addr : 0F04: 78 : Variable Operation Local Offset - 6 Read Addr : 0F05: 05 0E : Call Sub 14 Addr : 0F07: 7D : Variable Operation Local Offset - 7 Write 698 if wordat(b) <> a Addr : 0F08: 00 : Drop Anchor Push Addr : 0F09: 7C : Variable Operation Local Offset - 7 Read Addr : 0F0A: 05 0D : Call Sub 13 Addr : 0F0C: 78 : Variable Operation Local Offset - 6 Read Addr : 0F0D: FB : Math Op <> Addr : 0F0E: JZ Label004B Addr : 0F0E: 0A 04 : jz Address = 0F14 4 699 abort @ln Addr : 0F10: 87 82 51 : Memory Op Byte PBASE + ADDRESS Address = 0251 Addr : 0F13: 31 : Abort value Addr : 0F14: Label004B Addr : 0F14: Label004C 700 if ht == 133 Addr : 0F14: 64 : Variable Operation Local Offset - 1 Read Addr : 0F15: 38 85 : Constant 1 Bytes - 85 Addr : 0F17: FC : Math Op == Addr : 0F18: JZ Label004D Addr : 0F18: 0A 03 : jz Address = 0F1D 3 701 pushstack Addr : 0F1A: 01 : Drop Anchor Addr : 0F1B: 05 13 : Call Sub 19 Addr : 0F1D: Label004D Addr : 0F1D: Label004E 702 nextlineloc := b Addr : 0F1D: 7C : Variable Operation Local Offset - 7 Read Addr : 0F1E: 4D : Variable Operation Global Offset - 3 Write Addr : 0F1F: CaseDone Label0048 Addr : 0F1F: 0C : Casedone Addr : 0F20: Label004F 704 if sp == 0 Addr : 0F20: 40 : Variable Operation Global Offset - 0 Read Addr : 0F21: 35 : Constant 1 $00000000 Addr : 0F22: FC : Math Op == Addr : 0F23: JZ Label0050 Addr : 0F23: 0A 04 : jz Address = 0F29 4 Addr : 0F25: PBASE Constant Address of Label0052 Addr : 0F25: 87 99 95 : Memory Op Byte PBASE + ADDRESS Address = 1995 705 abort string("INVALID RETURN") Addr : 0F28: 31 : Abort value Addr : 0F29: Label0050 Addr : 0F29: Label0051 706 nextlineloc := stack[--sp] Addr : 0F29: 42 B6 : Variable Operation Global Offset - 0 Assign --VAR pre-dec Long Push Addr : 0F2B: D8 80 84 : Memory Op Long VBASE + POP Index READ Address = 0084 Addr : 0F2E: 4D : Variable Operation Global Offset - 3 Write Addr : 0F2F: CaseDone Label004F Addr : 0F2F: 0C : Casedone Addr : 0F30: Label0053 Addr : 0F30: Label0054 708 repeat while skipspaces Addr : 0F30: 00 : Drop Anchor Push Addr : 0F31: 05 07 : Call Sub 7 Addr : 0F33: JZ Label0056 Addr : 0F33: 0A 02 : jz Address = 0F37 2 Addr : 0F35: Label0055 Addr : 0F35: JMP Label0054 Addr : 0F35: 04 79 : Jmp 0F30 -7 Addr : 0F37: Label0056 Addr : 0F37: CaseDone Label0053 Addr : 0F37: 0C : Casedone Addr : 0F38: Label0057 710 clearall Addr : 0F38: 01 : Drop Anchor Addr : 0F39: 05 12 : Call Sub 18 Addr : 0F3B: CaseDone Label0057 Addr : 0F3B: 0C : Casedone Addr : 0F3C: Label0058 712 b := 0 ' Default line range Addr : 0F3C: 35 : Constant 1 $00000000 Addr : 0F3D: 7D : Variable Operation Local Offset - 7 Write 713 c := 65535 Addr : 0F3E: 37 2F : Constant Mask Y=47 Decrement 0000FFFF Addr : 0F40: CD 20 : Memory Op Long DBASE + WRITE Address = 0020 714 if spaces <> 0 ' At least one parameter Addr : 0F42: 00 : Drop Anchor Push Addr : 0F43: 05 06 : Call Sub 6 Addr : 0F45: 35 : Constant 1 $00000000 Addr : 0F46: FB : Math Op <> Addr : 0F47: JZ Label0059 Addr : 0F47: 0A 17 : jz Address = 0F60 23 715 b := c := expr Addr : 0F49: 00 : Drop Anchor Push Addr : 0F4A: 05 1E : Call Sub 30 Addr : 0F4C: CE 20 80 : Memory Op Long DBASE + ASSIGN Address = 0020 Write Push Addr : 0F4F: 7D : Variable Operation Local Offset - 7 Write 716 if spaces == "," Addr : 0F50: 00 : Drop Anchor Push Addr : 0F51: 05 06 : Call Sub 6 Addr : 0F53: 38 2C : Constant 1 Bytes - 2C Addr : 0F55: FC : Math Op == Addr : 0F56: JZ Label005B Addr : 0F56: 0A 08 : jz Address = 0F60 8 717 skipspaces Addr : 0F58: 01 : Drop Anchor Addr : 0F59: 05 07 : Call Sub 7 718 c := expr Addr : 0F5B: 00 : Drop Anchor Push Addr : 0F5C: 05 1E : Call Sub 30 Addr : 0F5E: CD 20 : Memory Op Long DBASE + WRITE Address = 0020 Addr : 0F60: Label005B Addr : 0F60: Label005C Addr : 0F60: Label0059 Addr : 0F60: Label005A 719 a := long[userPtr] Addr : 0F60: 39 73 20 : Constant 2 Bytes - 73 20 Addr : 0F63: C0 : Memory Op Long POP Address READ Addr : 0F64: 79 : Variable Operation Local Offset - 6 Write Addr : 0F65: Label005D 720 repeat while a+2 < eop Addr : 0F65: 78 : Variable Operation Local Offset - 6 Read Addr : 0F66: 37 00 : Constant Mask Y=0 00000002 Addr : 0F68: EC : Math Op + Addr : 0F69: 48 : Variable Operation Global Offset - 2 Read Addr : 0F6A: F9 : Math Op < Addr : 0F6B: JZ Label005F Addr : 0F6B: 0A 31 : jz Address = 0F9E 49 721 d := wordat(a) Addr : 0F6D: 00 : Drop Anchor Push Addr : 0F6E: 78 : Variable Operation Local Offset - 6 Read Addr : 0F6F: 05 0D : Call Sub 13 Addr : 0F71: CD 24 : Memory Op Long DBASE + WRITE Address = 0024 722 if d => b and d =< c Addr : 0F73: CC 24 : Memory Op Long DBASE + READ Address = 0024 Addr : 0F75: 7C : Variable Operation Local Offset - 7 Read Addr : 0F76: FE : Math Op => Addr : 0F77: CC 24 : Memory Op Long DBASE + READ Address = 0024 Addr : 0F79: CC 20 : Memory Op Long DBASE + READ Address = 0020 Addr : 0F7B: FD : Math Op =< Addr : 0F7C: F0 : Math Op AND Addr : 0F7D: JZ Label0060 Addr : 0F7D: 0A 13 : jz Address = 0F92 19 723 dsp.dec(d) Addr : 0F7F: 01 : Drop Anchor Addr : 0F80: CC 24 : Memory Op Long DBASE + READ Address = 0024 Addr : 0F82: 06 28 06 : Call Obj.Sub 40 6 724 dsp.out(" ") Addr : 0F85: 01 : Drop Anchor Addr : 0F86: 37 04 : Constant Mask Y=4 00000020 Addr : 0F88: 06 28 09 : Call Obj.Sub 40 9 725 putlinet(a+2) Addr : 0F8B: 01 : Drop Anchor Addr : 0F8C: 78 : Variable Operation Local Offset - 6 Read Addr : 0F8D: 37 00 : Constant Mask Y=0 00000002 Addr : 0F8F: EC : Math Op + Addr : 0F90: 05 05 : Call Sub 5 Addr : 0F92: Label0060 Addr : 0F92: Label0061 726 a += 3 + strsize(a+2) Addr : 0F92: 37 21 : Constant Mask Y=33 Decrement 00000003 Addr : 0F94: 78 : Variable Operation Local Offset - 6 Read Addr : 0F95: 37 00 : Constant Mask Y=0 00000002 Addr : 0F97: EC : Math Op + Addr : 0F98: 16 : StrSize(String) Addr : 0F99: EC : Math Op + Addr : 0F9A: 7A 4C : Variable Operation Local Offset - 6 Assign WordMathop + Addr : 0F9C: Label005E Addr : 0F9C: JMP Label005D Addr : 0F9C: 04 47 : Jmp 0F65 -57 Addr : 0F9E: Label005F Addr : 0F9E: CaseDone Label0058 Addr : 0F9E: 0C : Casedone Addr : 0F9F: Label0062 728 clearvars Addr : 0F9F: 01 : Drop Anchor Addr : 0FA0: 05 10 : Call Sub 16 Addr : 0FA2: CaseDone Label0062 Addr : 0FA2: 0C : Casedone Addr : 0FA3: Label0063 730 if spaces <> quote Addr : 0FA3: 00 : Drop Anchor Push Addr : 0FA4: 05 06 : Call Sub 6 Addr : 0FA6: 38 22 : Constant 1 Bytes - 22 Addr : 0FA8: FB : Math Op <> Addr : 0FA9: JZ Label0064 Addr : 0FA9: 0A 04 : jz Address = 0FAF 4 731 abort @syn Addr : 0FAB: 87 82 44 : Memory Op Byte PBASE + ADDRESS Address = 0244 Addr : 0FAE: 31 : Abort value Addr : 0FAF: Label0064 Addr : 0FAF: Label0065 732 scanFilename(@f0) Addr : 0FAF: 01 : Drop Anchor Addr : 0FB0: CF 28 : Memory Op Long DBASE + ADDRESS Address = 0028 Addr : 0FB2: 05 20 : Call Sub 32 733 if spaces <> "," Addr : 0FB4: 00 : Drop Anchor Push Addr : 0FB5: 05 06 : Call Sub 6 Addr : 0FB7: 38 2C : Constant 1 Bytes - 2C Addr : 0FB9: FB : Math Op <> Addr : 0FBA: JZ Label0066 Addr : 0FBA: 0A 04 : jz Address = 0FC0 4 734 abort @syn Addr : 0FBC: 87 82 44 : Memory Op Byte PBASE + ADDRESS Address = 0244 Addr : 0FBF: 31 : Abort value Addr : 0FC0: Label0066 Addr : 0FC0: Label0067 Addr : 0FC0: Constant Address of Label0068 Addr : 0FC0: 39 0F E2 : Constant 2 Bytes - 0F E2 735 case skipspaces Addr : 0FC3: 00 : Drop Anchor Push Addr : 0FC4: 05 07 : Call Sub 7 736 "A", "a": d := "a" Addr : 0FC6: 38 41 : Constant 1 Bytes - 41 Addr : 0FC8: Case_Value Label0069 Addr : 0FC8: 0D 19 : Value Case Address = 0FE3 25 Addr : 0FCA: 38 61 : Constant 1 Bytes - 61 Addr : 0FCC: Case_Value Label0069 Addr : 0FCC: 0D 15 : Value Case Address = 0FE3 21 737 "W", "w": d := "w" Addr : 0FCE: 38 57 : Constant 1 Bytes - 57 Addr : 0FD0: Case_Value Label006A Addr : 0FD0: 0D 16 : Value Case Address = 0FE8 22 Addr : 0FD2: 38 77 : Constant 1 Bytes - 77 Addr : 0FD4: Case_Value Label006A Addr : 0FD4: 0D 12 : Value Case Address = 0FE8 18 738 "R", "r": d := "r" Addr : 0FD6: 38 52 : Constant 1 Bytes - 52 Addr : 0FD8: Case_Value Label006B Addr : 0FD8: 0D 13 : Value Case Address = 0FED 19 Addr : 0FDA: 38 72 : Constant 1 Bytes - 72 Addr : 0FDC: Case_Value Label006B Addr : 0FDC: 0D 0F : Value Case Address = 0FED 15 Addr : 0FDE: PBASE Constant Address of Label006C Addr : 0FDE: 87 99 A4 : Memory Op Byte PBASE + ADDRESS Address = 19A4 739 other: abort string("Invalid open file mode") Addr : 0FE1: 31 : Abort value Addr : 0FE2: CaseDone Label006B Addr : 0FE2: 0C : Casedone Addr : 0FE3: Label0069 736 "A", "a": d := "a" Addr : 0FE3: 38 61 : Constant 1 Bytes - 61 Addr : 0FE5: CD 24 : Memory Op Long DBASE + WRITE Address = 0024 Addr : 0FE7: CaseDone Label0069 Addr : 0FE7: 0C : Casedone Addr : 0FE8: Label006A 737 "W", "w": d := "w" Addr : 0FE8: 38 77 : Constant 1 Bytes - 77 Addr : 0FEA: CD 24 : Memory Op Long DBASE + WRITE Address = 0024 Addr : 0FEC: CaseDone Label006A Addr : 0FEC: 0C : Casedone Addr : 0FED: Label006B 738 "R", "r": d := "r" Addr : 0FED: 38 72 : Constant 1 Bytes - 72 Addr : 0FEF: CD 24 : Memory Op Long DBASE + WRITE Address = 0024 Addr : 0FF1: CaseDone Label006B Addr : 0FF1: 0C : Casedone Addr : 0FF2: Label0068 740 tp++ Addr : 0FF2: 46 2E : Variable Operation Global Offset - 1 Assign VAR++ post inc Long 741 if \fsrw.mount(spiDO,spiClk,spiDI,spiCS) < 0 Addr : 0FF4: 02 : Drop Anchor Push Try Addr : 0FF5: 35 : Constant 1 $00000000 Addr : 0FF6: 36 : Constant 2 $00000001 Addr : 0FF7: 37 00 : Constant Mask Y=0 00000002 Addr : 0FF9: 37 21 : Constant Mask Y=33 Decrement 00000003 Addr : 0FFB: 06 27 13 : Call Obj.Sub 39 19 Addr : 0FFE: 35 : Constant 1 $00000000 Addr : 0FFF: F9 : Math Op < Addr : 1000: JZ Label006D Addr : 1000: 0A 04 : jz Address = 1006 4 Addr : 1002: PBASE Constant Address of Label006F Addr : 1002: 87 99 BB : Memory Op Byte PBASE + ADDRESS Address = 19BB 742 abort string("Can't mount SD card") Addr : 1005: 31 : Abort value Addr : 1006: Label006D Addr : 1006: Label006E 743 if \fsrw.popen(@f0,d) Addr : 1006: 02 : Drop Anchor Push Try Addr : 1007: CF 28 : Memory Op Long DBASE + ADDRESS Address = 0028 Addr : 1009: CC 24 : Memory Op Long DBASE + READ Address = 0024 Addr : 100B: 06 27 16 : Call Obj.Sub 39 22 Addr : 100E: JZ Label0070 Addr : 100E: 0A 04 : jz Address = 1014 4 Addr : 1010: PBASE Constant Address of Label0072 Addr : 1010: 87 99 CF : Memory Op Byte PBASE + ADDRESS Address = 19CF 744 abort string("Can't open file") Addr : 1013: 31 : Abort value Addr : 1014: Label0070 Addr : 1014: Label0071 745 fileOpened := true Addr : 1014: 34 : Constant 0 $FFFFFFFF Addr : 1015: 89 84 38 : Memory Op Byte VBASE + WRITE Address = 0438 Addr : 1018: CaseDone Label0063 Addr : 1018: 0C : Casedone Addr : 1019: Label0073 747 if not isvar(nt) Addr : 1019: 00 : Drop Anchor Push Addr : 101A: 68 : Variable Operation Local Offset - 2 Read Addr : 101B: 05 0B : Call Sub 11 Addr : 101D: FF : Math Op NOT Addr : 101E: JZ Label0074 Addr : 101E: 0A 04 : jz Address = 1024 4 748 abort @syn Addr : 1020: 87 82 44 : Memory Op Byte PBASE + ADDRESS Address = 0244 Addr : 1023: 31 : Abort value Addr : 1024: Label0074 Addr : 1024: Label0075 749 d := 0 Addr : 1024: 35 : Constant 1 $00000000 Addr : 1025: CD 24 : Memory Op Long DBASE + WRITE Address = 0024 750 inVars[d++] := fixvar(nt) Addr : 1027: 00 : Drop Anchor Push Addr : 1028: 68 : Variable Operation Local Offset - 2 Read Addr : 1029: 05 0A : Call Sub 10 Addr : 102B: CE 24 AE : Memory Op Long DBASE + ASSIGN Address = 0024 VAR++ post inc Long Push Addr : 102E: 99 84 1E : Memory Op Byte VBASE + POP Index WRITE Address = 041E Addr : 1031: Label0076 751 repeat while skipspaces == "," Addr : 1031: 00 : Drop Anchor Push Addr : 1032: 05 07 : Call Sub 7 Addr : 1034: 38 2C : Constant 1 Bytes - 2C Addr : 1036: FC : Math Op == Addr : 1037: JZ Label0078 Addr : 1037: 0A 21 : jz Address = 105A 33 752 nt := skipspaces Addr : 1039: 00 : Drop Anchor Push Addr : 103A: 05 07 : Call Sub 7 Addr : 103C: 69 : Variable Operation Local Offset - 2 Write 753 if not isvar(nt) or d == 26 Addr : 103D: 00 : Drop Anchor Push Addr : 103E: 68 : Variable Operation Local Offset - 2 Read Addr : 103F: 05 0B : Call Sub 11 Addr : 1041: FF : Math Op NOT Addr : 1042: CC 24 : Memory Op Long DBASE + READ Address = 0024 Addr : 1044: 38 1A : Constant 1 Bytes - 1A Addr : 1046: FC : Math Op == Addr : 1047: F2 : Math Op OR Addr : 1048: JZ Label0079 Addr : 1048: 0A 04 : jz Address = 104E 4 754 abort @syn Addr : 104A: 87 82 44 : Memory Op Byte PBASE + ADDRESS Address = 0244 Addr : 104D: 31 : Abort value Addr : 104E: Label0079 Addr : 104E: Label007A 755 inVars[d++] := fixvar(nt) Addr : 104E: 00 : Drop Anchor Push Addr : 104F: 68 : Variable Operation Local Offset - 2 Read Addr : 1050: 05 0A : Call Sub 10 Addr : 1052: CE 24 AE : Memory Op Long DBASE + ASSIGN Address = 0024 VAR++ post inc Long Push Addr : 1055: 99 84 1E : Memory Op Byte VBASE + POP Index WRITE Address = 041E Addr : 1058: Label0077 Addr : 1058: JMP Label0076 Addr : 1058: 04 57 : Jmp 1031 -41 Addr : 105A: Label0078 756 a := 0 Addr : 105A: 35 : Constant 1 $00000000 Addr : 105B: 79 : Variable Operation Local Offset - 6 Write Addr : 105C: Label007B 758 c := fsrw.pgetc Addr : 105C: 00 : Drop Anchor Push Addr : 105D: 06 27 18 : Call Obj.Sub 39 24 Addr : 1060: CD 20 : Memory Op Long DBASE + WRITE Address = 0020 759 if c < 0 Addr : 1062: CC 20 : Memory Op Long DBASE + READ Address = 0020 Addr : 1064: 35 : Constant 1 $00000000 Addr : 1065: F9 : Math Op < Addr : 1066: JZ Label007E Addr : 1066: 0A 06 : jz Address = 106E 6 Addr : 1068: PBASE Constant Address of Label0080 Addr : 1068: 87 99 DF : Memory Op Byte PBASE + ADDRESS Address = 19DF 760 abort string("Can't read file") Addr : 106B: 31 : Abort value Addr : 106C: JMP Label007F Addr : 106C: 04 33 : Jmp 10A1 51 Addr : 106E: Label007E 761 elseif c == fReturn or c == fEof Addr : 106E: CC 20 : Memory Op Long DBASE + READ Address = 0020 Addr : 1070: 38 0D : Constant 1 Bytes - 0D Addr : 1072: FC : Math Op == Addr : 1073: CC 20 : Memory Op Long DBASE + READ Address = 0020 Addr : 1075: 34 : Constant 0 $FFFFFFFF Addr : 1076: FC : Math Op == Addr : 1077: F2 : Math Op OR Addr : 1078: JZ Label0081 Addr : 1078: 0A 0D : jz Address = 1087 13 762 tline[a] := 0 Addr : 107A: 35 : Constant 1 $00000000 Addr : 107B: 78 : Variable Operation Local Offset - 6 Read Addr : 107C: 99 82 1E : Memory Op Byte VBASE + POP Index WRITE Address = 021E 763 tp := @tline Addr : 107F: 8B 82 1E : Memory Op Byte VBASE + ADDRESS Address = 021E Addr : 1082: 45 : Variable Operation Global Offset - 1 Write 764 quit Addr : 1083: JMP Label007D Addr : 1083: 04 1F : Jmp 10A4 31 Addr : 1085: JMP Label007F Addr : 1085: 04 1A : Jmp 10A1 26 Addr : 1087: Label0081 765 elseif c == fLinefeed Addr : 1087: CC 20 : Memory Op Long DBASE + READ Address = 0020 Addr : 1089: 38 0A : Constant 1 Bytes - 0A Addr : 108B: FC : Math Op == Addr : 108C: JZ Label0082 Addr : 108C: 0A 04 : jz Address = 1092 4 766 next Addr : 108E: JMP Label007B Addr : 108E: 04 4C : Jmp 105C -52 Addr : 1090: JMP Label007F Addr : 1090: 04 0F : Jmp 10A1 15 Addr : 1092: Label0082 767 elseif a < linelen-1 Addr : 1092: 78 : Variable Operation Local Offset - 6 Read Addr : 1093: 37 07 : Constant Mask Y=7 00000100 Addr : 1095: 36 : Constant 2 $00000001 Addr : 1096: ED : Math Op - Addr : 1097: F9 : Math Op < Addr : 1098: JZ Label0083 Addr : 1098: 0A 07 : jz Address = 10A1 7 768 tline[a++] := c Addr : 109A: CC 20 : Memory Op Long DBASE + READ Address = 0020 Addr : 109C: 7A AE : Variable Operation Local Offset - 6 Assign VAR++ post inc Long Push Addr : 109E: 99 82 1E : Memory Op Byte VBASE + POP Index WRITE Address = 021E Addr : 10A1: Label0083 Addr : 10A1: Label007F Addr : 10A1: Label007C Addr : 10A1: JMP Label007B Addr : 10A1: 04 FF B8 : Jmp 105C -72 Addr : 10A4: Label007D 769 tokenize Addr : 10A4: 01 : Drop Anchor Addr : 10A5: 05 0C : Call Sub 12 770 repeat a from 1 to d Addr : 10A7: 36 : Constant 2 $00000001 Addr : 10A8: 79 : Variable Operation Local Offset - 6 Write Addr : 10A9: Label0084 771 vars[inVars[a-1]] := expr Addr : 10A9: 00 : Drop Anchor Push Addr : 10AA: 05 1E : Call Sub 30 Addr : 10AC: 78 : Variable Operation Local Offset - 6 Read Addr : 10AD: 36 : Constant 2 $00000001 Addr : 10AE: ED : Math Op - Addr : 10AF: 98 84 1E : Memory Op Byte VBASE + POP Index READ Address = 041E Addr : 10B2: D9 1C : Memory Op Long VBASE + POP Index WRITE Address = 001C 772 if a < d Addr : 10B4: 78 : Variable Operation Local Offset - 6 Read Addr : 10B5: CC 24 : Memory Op Long DBASE + READ Address = 0024 Addr : 10B7: F9 : Math Op < Addr : 10B8: JZ Label0087 Addr : 10B8: 0A 0B : jz Address = 10C5 11 773 if spaces == "," Addr : 10BA: 00 : Drop Anchor Push Addr : 10BB: 05 06 : Call Sub 6 Addr : 10BD: 38 2C : Constant 1 Bytes - 2C Addr : 10BF: FC : Math Op == Addr : 10C0: JZ Label0089 Addr : 10C0: 0A 03 : jz Address = 10C5 3 774 skipspaces Addr : 10C2: 01 : Drop Anchor Addr : 10C3: 05 07 : Call Sub 7 Addr : 10C5: Label0089 Addr : 10C5: Label008A Addr : 10C5: Label0087 Addr : 10C5: Label0088 Addr : 10C5: Label0085 770 repeat a from 1 to d Addr : 10C5: 36 : Constant 2 $00000001 Addr : 10C6: CC 24 : Memory Op Long DBASE + READ Address = 0024 Addr : 10C8: Repeat a Step Label0084 Addr : 10C8: 7A 02 5E : Variable Operation Local Offset - 6 Assign Repeat-Var loop Address= 10A9 -34 Addr : 10CB: Label0086 Addr : 10CB: CaseDone Label0073 Addr : 10CB: 0C : Casedone Addr : 10CC: Label008B 776 d := 0 ' record column Addr : 10CC: 35 : Constant 1 $00000000 Addr : 10CD: CD 24 : Memory Op Long DBASE + WRITE Address = 0024 Addr : 10CF: Label008C 778 nt := spaces Addr : 10CF: 00 : Drop Anchor Push Addr : 10D0: 05 06 : Call Sub 6 Addr : 10D2: 69 : Variable Operation Local Offset - 2 Write 779 if nt == 0 or nt == ":" Addr : 10D3: 68 : Variable Operation Local Offset - 2 Read Addr : 10D4: 35 : Constant 1 $00000000 Addr : 10D5: FC : Math Op == Addr : 10D6: 68 : Variable Operation Local Offset - 2 Read Addr : 10D7: 38 3A : Constant 1 Bytes - 3A Addr : 10D9: FC : Math Op == Addr : 10DA: F2 : Math Op OR Addr : 10DB: JZ Label008F Addr : 10DB: 0A 03 : jz Address = 10E0 3 780 quit Addr : 10DD: JMP Label008E Addr : 10DD: 04 80 C7 : Jmp 11A7 199 Addr : 10E0: Label008F Addr : 10E0: Label0090 781 if nt == quote Addr : 10E0: 68 : Variable Operation Local Offset - 2 Read Addr : 10E1: 38 22 : Constant 1 Bytes - 22 Addr : 10E3: FC : Math Op == Addr : 10E4: JZ Label0091 Addr : 10E4: 0A 23 : jz Address = 1109 35 782 tp++ Addr : 10E6: 46 2E : Variable Operation Global Offset - 1 Assign VAR++ post inc Long Addr : 10E8: Label0093 784 c := byte[tp++] Addr : 10E8: 46 AE : Variable Operation Global Offset - 1 Assign VAR++ post inc Long Push Addr : 10EA: 80 : Memory Op Byte POP Address READ Addr : 10EB: CD 20 : Memory Op Long DBASE + WRITE Address = 0020 785 if c == 0 or c == quote Addr : 10ED: CC 20 : Memory Op Long DBASE + READ Address = 0020 Addr : 10EF: 35 : Constant 1 $00000000 Addr : 10F0: FC : Math Op == Addr : 10F1: CC 20 : Memory Op Long DBASE + READ Address = 0020 Addr : 10F3: 38 22 : Constant 1 Bytes - 22 Addr : 10F5: FC : Math Op == Addr : 10F6: F2 : Math Op OR Addr : 10F7: JZ Label0096 Addr : 10F7: 0A 02 : jz Address = 10FB 2 786 quit Addr : 10F9: JMP Label0095 Addr : 10F9: 04 0B : Jmp 1106 11 Addr : 10FB: Label0096 Addr : 10FB: Label0097 787 fsrw.pputc(c) Addr : 10FB: 01 : Drop Anchor Addr : 10FC: CC 20 : Memory Op Long DBASE + READ Address = 0020 Addr : 10FE: 06 27 1A : Call Obj.Sub 39 26 788 d++ Addr : 1101: CE 24 2E : Memory Op Long DBASE + ASSIGN Address = 0024 VAR++ post inc Long Addr : 1104: Label0094 Addr : 1104: JMP Label0093 Addr : 1104: 04 62 : Jmp 10E8 -30 Addr : 1106: Label0095 Addr : 1106: JMP Label0092 Addr : 1106: 04 80 49 : Jmp 1152 73 Addr : 1109: Label0091 790 a := expr Addr : 1109: 00 : Drop Anchor Push Addr : 110A: 05 1E : Call Sub 30 Addr : 110C: 79 : Variable Operation Local Offset - 6 Write 791 if a < 0 Addr : 110D: 78 : Variable Operation Local Offset - 6 Read Addr : 110E: 35 : Constant 1 $00000000 Addr : 110F: F9 : Math Op < Addr : 1110: JZ Label0099 Addr : 1110: 0A 08 : jz Address = 111A 8 792 -a Addr : 1112: 7A 46 : Variable Operation Local Offset - 6 Assign LongMathop - 793 fsrw.pputc("-") Addr : 1114: 01 : Drop Anchor Addr : 1115: 38 2D : Constant 1 Bytes - 2D Addr : 1117: 06 27 1A : Call Obj.Sub 39 26 Addr : 111A: Label0099 Addr : 111A: Label009A 794 b := 1_000_000_000 Addr : 111A: 3B 3B 9A CA 00 : Constant 4 Bytes - 3B 9A CA 00 Addr : 111F: 7D : Variable Operation Local Offset - 7 Write 795 c := false Addr : 1120: 35 : Constant 1 $00000000 Addr : 1121: CD 20 : Memory Op Long DBASE + WRITE Address = 0020 796 repeat 10 Addr : 1123: 38 0A : Constant 1 Bytes - 0A Addr : 1125: TJZ Label009D Addr : 1125: 08 2B : tjz Address = 1152 43 Addr : 1127: Label009B 797 if a => b Addr : 1127: 78 : Variable Operation Local Offset - 6 Read Addr : 1128: 7C : Variable Operation Local Offset - 7 Read Addr : 1129: FE : Math Op => Addr : 112A: JZ Label009E Addr : 112A: 0A 12 : jz Address = 113E 18 798 fsrw.pputc(a / b + "0") Addr : 112C: 01 : Drop Anchor Addr : 112D: 78 : Variable Operation Local Offset - 6 Read Addr : 112E: 7C : Variable Operation Local Offset - 7 Read Addr : 112F: F6 : Math Op / Addr : 1130: 38 30 : Constant 1 Bytes - 30 Addr : 1132: EC : Math Op + Addr : 1133: 06 27 1A : Call Obj.Sub 39 26 799 a //= b Addr : 1136: 7C : Variable Operation Local Offset - 7 Read Addr : 1137: 7A 57 : Variable Operation Local Offset - 6 Assign LongMathop // 800 c := true Addr : 1139: 34 : Constant 0 $FFFFFFFF Addr : 113A: CD 20 : Memory Op Long DBASE + WRITE Address = 0020 Addr : 113C: JMP Label009F Addr : 113C: 04 0E : Jmp 114C 14 Addr : 113E: Label009E 801 elseif c or b == 1 Addr : 113E: CC 20 : Memory Op Long DBASE + READ Address = 0020 Addr : 1140: 7C : Variable Operation Local Offset - 7 Read Addr : 1141: 36 : Constant 2 $00000001 Addr : 1142: FC : Math Op == Addr : 1143: F2 : Math Op OR Addr : 1144: JZ Label00A0 Addr : 1144: 0A 06 : jz Address = 114C 6 802 fsrw.pputc("0") Addr : 1146: 01 : Drop Anchor Addr : 1147: 38 30 : Constant 1 Bytes - 30 Addr : 1149: 06 27 1A : Call Obj.Sub 39 26 Addr : 114C: Label00A0 Addr : 114C: Label009F 803 b /= 10 Addr : 114C: 38 0A : Constant 1 Bytes - 0A Addr : 114E: 7E 56 : Variable Operation Local Offset - 7 Assign LongMathop / Addr : 1150: Label009C Addr : 1150: DJNZ Label009B Addr : 1150: 09 55 : djnz Address = 1127 -43 Addr : 1152: Label009D Addr : 1152: Label0098 Addr : 1152: Label0092 804 nt := spaces Addr : 1152: 00 : Drop Anchor Push Addr : 1153: 05 06 : Call Sub 6 Addr : 1155: 69 : Variable Operation Local Offset - 2 Write 805 if nt == ";" Addr : 1156: 68 : Variable Operation Local Offset - 2 Read Addr : 1157: 38 3B : Constant 1 Bytes - 3B Addr : 1159: FC : Math Op == Addr : 115A: JZ Label00A1 Addr : 115A: 0A 05 : jz Address = 1161 5 806 tp++ Addr : 115C: 46 2E : Variable Operation Global Offset - 1 Assign VAR++ post inc Long Addr : 115E: JMP Label00A2 Addr : 115E: 04 80 43 : Jmp 11A4 67 Addr : 1161: Label00A1 807 elseif nt == "," Addr : 1161: 68 : Variable Operation Local Offset - 2 Read Addr : 1162: 38 2C : Constant 1 Bytes - 2C Addr : 1164: FC : Math Op == Addr : 1165: JZ Label00A3 Addr : 1165: 0A 1F : jz Address = 1186 31 808 fsrw.pputc(" ") Addr : 1167: 01 : Drop Anchor Addr : 1168: 37 04 : Constant Mask Y=4 00000020 Addr : 116A: 06 27 1A : Call Obj.Sub 39 26 809 d++ Addr : 116D: CE 24 2E : Memory Op Long DBASE + ASSIGN Address = 0024 VAR++ post inc Long Addr : 1170: Label00A4 810 repeat while d & 7 Addr : 1170: CC 24 : Memory Op Long DBASE + READ Address = 0024 Addr : 1172: 37 22 : Constant Mask Y=34 Decrement 00000007 Addr : 1174: E8 : Math Op & Addr : 1175: JZ Label00A6 Addr : 1175: 0A 0B : jz Address = 1182 11 811 fsrw.pputc(" ") Addr : 1177: 01 : Drop Anchor Addr : 1178: 37 04 : Constant Mask Y=4 00000020 Addr : 117A: 06 27 1A : Call Obj.Sub 39 26 812 d++ Addr : 117D: CE 24 2E : Memory Op Long DBASE + ASSIGN Address = 0024 VAR++ post inc Long Addr : 1180: Label00A5 Addr : 1180: JMP Label00A4 Addr : 1180: 04 6E : Jmp 1170 -18 Addr : 1182: Label00A6 813 tp++ Addr : 1182: 46 2E : Variable Operation Global Offset - 1 Assign VAR++ post inc Long Addr : 1184: JMP Label00A2 Addr : 1184: 04 1E : Jmp 11A4 30 Addr : 1186: Label00A3 814 elseif nt == 0 or nt == ":" Addr : 1186: 68 : Variable Operation Local Offset - 2 Read Addr : 1187: 35 : Constant 1 $00000000 Addr : 1188: FC : Math Op == Addr : 1189: 68 : Variable Operation Local Offset - 2 Read Addr : 118A: 38 3A : Constant 1 Bytes - 3A Addr : 118C: FC : Math Op == Addr : 118D: F2 : Math Op OR Addr : 118E: JZ Label00A7 Addr : 118E: 0A 10 : jz Address = 11A0 16 815 fsrw.pputc(fReturn) Addr : 1190: 01 : Drop Anchor Addr : 1191: 38 0D : Constant 1 Bytes - 0D Addr : 1193: 06 27 1A : Call Obj.Sub 39 26 816 fsrw.pputc(fLinefeed) Addr : 1196: 01 : Drop Anchor Addr : 1197: 38 0A : Constant 1 Bytes - 0A Addr : 1199: 06 27 1A : Call Obj.Sub 39 26 817 quit Addr : 119C: JMP Label008E Addr : 119C: 04 09 : Jmp 11A7 9 Addr : 119E: JMP Label00A2 Addr : 119E: 04 04 : Jmp 11A4 4 Addr : 11A0: Label00A7 819 abort @syn Addr : 11A0: 87 82 44 : Memory Op Byte PBASE + ADDRESS Address = 0244 Addr : 11A3: 31 : Abort value Addr : 11A4: Label00A8 Addr : 11A4: Label00A2 Addr : 11A4: Label008D Addr : 11A4: JMP Label008C Addr : 11A4: 04 FF 28 : Jmp 10CF -216 Addr : 11A7: Label008E Addr : 11A7: CaseDone Label008B Addr : 11A7: 0C : Casedone Addr : 11A8: Label00A9 821 fileOpened := false Addr : 11A8: 35 : Constant 1 $00000000 Addr : 11A9: 89 84 38 : Memory Op Byte VBASE + WRITE Address = 0438 822 if \fsrw.pclose < 0 Addr : 11AC: 02 : Drop Anchor Push Try Addr : 11AD: 06 27 15 : Call Obj.Sub 39 21 Addr : 11B0: 35 : Constant 1 $00000000 Addr : 11B1: F9 : Math Op < Addr : 11B2: JZ Label00AA Addr : 11B2: 0A 04 : jz Address = 11B8 4 Addr : 11B4: PBASE Constant Address of Label00AC Addr : 11B4: 87 99 EF : Memory Op Byte PBASE + ADDRESS Address = 19EF 823 abort string("Error closing file") Addr : 11B7: 31 : Abort value Addr : 11B8: Label00AA Addr : 11B8: Label00AB 824 \fsrw.unmount Addr : 11B8: 03 : Drop Anchor Try Addr : 11B9: 06 27 0D : Call Obj.Sub 39 13 Addr : 11BC: CaseDone Label00A9 Addr : 11BC: 0C : Casedone Addr : 11BD: Label00AD 826 if spaces <> quote Addr : 11BD: 00 : Drop Anchor Push Addr : 11BE: 05 06 : Call Sub 6 Addr : 11C0: 38 22 : Constant 1 Bytes - 22 Addr : 11C2: FB : Math Op <> Addr : 11C3: JZ Label00AE Addr : 11C3: 0A 04 : jz Address = 11C9 4 827 abort @syn Addr : 11C5: 87 82 44 : Memory Op Byte PBASE + ADDRESS Address = 0244 Addr : 11C8: 31 : Abort value Addr : 11C9: Label00AE Addr : 11C9: Label00AF 828 scanFilename(@f0) Addr : 11C9: 01 : Drop Anchor Addr : 11CA: CF 28 : Memory Op Long DBASE + ADDRESS Address = 0028 Addr : 11CC: 05 20 : Call Sub 32 829 if \fsrw.mount(spiDO,spiClk,spiDI,spiCS) < 0 Addr : 11CE: 02 : Drop Anchor Push Try Addr : 11CF: 35 : Constant 1 $00000000 Addr : 11D0: 36 : Constant 2 $00000001 Addr : 11D1: 37 00 : Constant Mask Y=0 00000002 Addr : 11D3: 37 21 : Constant Mask Y=33 Decrement 00000003 Addr : 11D5: 06 27 13 : Call Obj.Sub 39 19 Addr : 11D8: 35 : Constant 1 $00000000 Addr : 11D9: F9 : Math Op < Addr : 11DA: JZ Label00B0 Addr : 11DA: 0A 04 : jz Address = 11E0 4 Addr : 11DC: PBASE Constant Address of Label00B2 Addr : 11DC: 87 9A 02 : Memory Op Byte PBASE + ADDRESS Address = 1A02 830 abort string("Can't mount SD card") Addr : 11DF: 31 : Abort value Addr : 11E0: Label00B0 Addr : 11E0: Label00B1 831 if \fsrw.popen(@f0,"d") Addr : 11E0: 02 : Drop Anchor Push Try Addr : 11E1: CF 28 : Memory Op Long DBASE + ADDRESS Address = 0028 Addr : 11E3: 38 64 : Constant 1 Bytes - 64 Addr : 11E5: 06 27 16 : Call Obj.Sub 39 22 Addr : 11E8: JZ Label00B3 Addr : 11E8: 0A 04 : jz Address = 11EE 4 Addr : 11EA: PBASE Constant Address of Label00B5 Addr : 11EA: 87 9A 16 : Memory Op Byte PBASE + ADDRESS Address = 1A16 832 abort string("Can't delete file") Addr : 11ED: 31 : Abort value Addr : 11EE: Label00B3 Addr : 11EE: Label00B4 833 if \fsrw.pclose < 0 Addr : 11EE: 02 : Drop Anchor Push Try Addr : 11EF: 06 27 15 : Call Obj.Sub 39 21 Addr : 11F2: 35 : Constant 1 $00000000 Addr : 11F3: F9 : Math Op < Addr : 11F4: JZ Label00B6 Addr : 11F4: 0A 04 : jz Address = 11FA 4 Addr : 11F6: PBASE Constant Address of Label00B8 Addr : 11F6: 87 9A 28 : Memory Op Byte PBASE + ADDRESS Address = 1A28 834 abort string("Error deleting file") Addr : 11F9: 31 : Abort value Addr : 11FA: Label00B6 Addr : 11FA: Label00B7 835 \fsrw.unmount Addr : 11FA: 03 : Drop Anchor Try Addr : 11FB: 06 27 0D : Call Obj.Sub 39 13 Addr : 11FE: CaseDone Label00AD Addr : 11FE: 0C : Casedone Addr : 11FF: Label00B9 837 if spaces <> quote Addr : 11FF: 00 : Drop Anchor Push Addr : 1200: 05 06 : Call Sub 6 Addr : 1202: 38 22 : Constant 1 Bytes - 22 Addr : 1204: FB : Math Op <> Addr : 1205: JZ Label00BA Addr : 1205: 0A 04 : jz Address = 120B 4 838 abort @syn Addr : 1207: 87 82 44 : Memory Op Byte PBASE + ADDRESS Address = 0244 Addr : 120A: 31 : Abort value Addr : 120B: Label00BA Addr : 120B: Label00BB 839 scanFilename(@f0) Addr : 120B: 01 : Drop Anchor Addr : 120C: CF 28 : Memory Op Long DBASE + ADDRESS Address = 0028 Addr : 120E: 05 20 : Call Sub 32 840 if spaces <> "," Addr : 1210: 00 : Drop Anchor Push Addr : 1211: 05 06 : Call Sub 6 Addr : 1213: 38 2C : Constant 1 Bytes - 2C Addr : 1215: FB : Math Op <> Addr : 1216: JZ Label00BC Addr : 1216: 0A 04 : jz Address = 121C 4 841 abort @syn Addr : 1218: 87 82 44 : Memory Op Byte PBASE + ADDRESS Address = 0244 Addr : 121B: 31 : Abort value Addr : 121C: Label00BC Addr : 121C: Label00BD 842 if skipspaces <> quote Addr : 121C: 00 : Drop Anchor Push Addr : 121D: 05 07 : Call Sub 7 Addr : 121F: 38 22 : Constant 1 Bytes - 22 Addr : 1221: FB : Math Op <> Addr : 1222: JZ Label00BE Addr : 1222: 0A 04 : jz Address = 1228 4 843 abort @syn Addr : 1224: 87 82 44 : Memory Op Byte PBASE + ADDRESS Address = 0244 Addr : 1227: 31 : Abort value Addr : 1228: Label00BE Addr : 1228: Label00BF 844 scanFilename(@f0) Addr : 1228: 01 : Drop Anchor Addr : 1229: CF 28 : Memory Op Long DBASE + ADDRESS Address = 0028 Addr : 122B: 05 20 : Call Sub 32 Addr : 122D: PBASE Constant Address of Label00C0 Addr : 122D: 87 9A 3C : Memory Op Byte PBASE + ADDRESS Address = 1A3C 845 abort string("Rename not implemented") Addr : 1230: 31 : Abort value Addr : 1231: CaseDone Label00B9 Addr : 1231: 0C : Casedone Addr : 1232: Label00C1 847 if \fsrw.mount(spiDO,spiClk,spiDI,spiCS) Addr : 1232: 02 : Drop Anchor Push Try Addr : 1233: 35 : Constant 1 $00000000 Addr : 1234: 36 : Constant 2 $00000001 Addr : 1235: 37 00 : Constant Mask Y=0 00000002 Addr : 1237: 37 21 : Constant Mask Y=33 Decrement 00000003 Addr : 1239: 06 27 13 : Call Obj.Sub 39 19 Addr : 123C: JZ Label00C2 Addr : 123C: 0A 04 : jz Address = 1242 4 Addr : 123E: PBASE Constant Address of Label00C4 Addr : 123E: 87 9A 53 : Memory Op Byte PBASE + ADDRESS Address = 1A53 848 abort string("Can't mount SD card") Addr : 1241: 31 : Abort value Addr : 1242: Label00C2 Addr : 1242: Label00C3 849 fsrw.opendir Addr : 1242: 01 : Drop Anchor Addr : 1243: 06 27 1B : Call Obj.Sub 39 27 850 b := 0 Addr : 1246: 35 : Constant 1 $00000000 Addr : 1247: 7D : Variable Operation Local Offset - 7 Write 851 d := false Addr : 1248: 35 : Constant 1 $00000000 Addr : 1249: CD 24 : Memory Op Long DBASE + WRITE Address = 0024 Addr : 124B: Label00C5 852 repeat while fsrw.nextfile(@f0) == 0 Addr : 124B: 00 : Drop Anchor Push Addr : 124C: CF 28 : Memory Op Long DBASE + ADDRESS Address = 0028 Addr : 124E: 06 27 1C : Call Obj.Sub 39 28 Addr : 1251: 35 : Constant 1 $00000000 Addr : 1252: FC : Math Op == Addr : 1253: JZ Label00C7 Addr : 1253: 0A 2E : jz Address = 1283 46 853 d := true Addr : 1255: 34 : Constant 0 $FFFFFFFF Addr : 1256: CD 24 : Memory Op Long DBASE + WRITE Address = 0024 854 if b == 39 Addr : 1258: 7C : Variable Operation Local Offset - 7 Read Addr : 1259: 38 27 : Constant 1 Bytes - 27 Addr : 125B: FC : Math Op == Addr : 125C: JZ Label00C8 Addr : 125C: 0A 08 : jz Address = 1266 8 855 dsp.out(dsp#Cr) Addr : 125E: 01 : Drop Anchor Addr : 125F: 38 0D : Constant 1 Bytes - 0D Addr : 1261: 06 28 09 : Call Obj.Sub 40 9 856 b := 0 Addr : 1264: 35 : Constant 1 $00000000 Addr : 1265: 7D : Variable Operation Local Offset - 7 Write Addr : 1266: Label00C8 Addr : 1266: Label00C9 857 dsp.str(@f0) Addr : 1266: 01 : Drop Anchor Addr : 1267: CF 28 : Memory Op Long DBASE + ADDRESS Address = 0028 Addr : 1269: 06 28 05 : Call Obj.Sub 40 5 858 repeat 13 - strsize(@f0) Addr : 126C: 38 0D : Constant 1 Bytes - 0D Addr : 126E: CF 28 : Memory Op Long DBASE + ADDRESS Address = 0028 Addr : 1270: 16 : StrSize(String) Addr : 1271: ED : Math Op - Addr : 1272: TJZ Label00CC Addr : 1272: 08 08 : tjz Address = 127C 8 Addr : 1274: Label00CA 859 dsp.out(" ") Addr : 1274: 01 : Drop Anchor Addr : 1275: 37 04 : Constant Mask Y=4 00000020 Addr : 1277: 06 28 09 : Call Obj.Sub 40 9 Addr : 127A: Label00CB Addr : 127A: DJNZ Label00CA Addr : 127A: 09 78 : djnz Address = 1274 -8 Addr : 127C: Label00CC 860 b := b + 13 Addr : 127C: 7C : Variable Operation Local Offset - 7 Read Addr : 127D: 38 0D : Constant 1 Bytes - 0D Addr : 127F: EC : Math Op + Addr : 1280: 7D : Variable Operation Local Offset - 7 Write Addr : 1281: Label00C6 Addr : 1281: JMP Label00C5 Addr : 1281: 04 48 : Jmp 124B -56 Addr : 1283: Label00C7 861 if d Addr : 1283: CC 24 : Memory Op Long DBASE + READ Address = 0024 Addr : 1285: JZ Label00CD Addr : 1285: 0A 06 : jz Address = 128D 6 862 dsp.out(dsp#Cr) Addr : 1287: 01 : Drop Anchor Addr : 1288: 38 0D : Constant 1 Bytes - 0D Addr : 128A: 06 28 09 : Call Obj.Sub 40 9 Addr : 128D: Label00CD Addr : 128D: Label00CE 863 \fsrw.unmount Addr : 128D: 03 : Drop Anchor Try Addr : 128E: 06 27 0D : Call Obj.Sub 39 13 Addr : 1291: CaseDone Label00C1 Addr : 1291: 0C : Casedone Addr : 1292: Label00CF 865 if (nt := spaces) == quote Addr : 1292: 00 : Drop Anchor Push Addr : 1293: 05 06 : Call Sub 6 Addr : 1295: 6A 80 : Variable Operation Local Offset - 2 Assign Write Push Addr : 1297: 38 22 : Constant 1 Bytes - 22 Addr : 1299: FC : Math Op == Addr : 129A: JZ Label00D0 Addr : 129A: 0A 3B : jz Address = 12D7 59 866 scanFilename(@f0) Addr : 129C: 01 : Drop Anchor Addr : 129D: CF 28 : Memory Op Long DBASE + ADDRESS Address = 0028 Addr : 129F: 05 20 : Call Sub 32 867 if \fsrw.mount(spiDO,spiClk,spiDI,spiCS) < 0 Addr : 12A1: 02 : Drop Anchor Push Try Addr : 12A2: 35 : Constant 1 $00000000 Addr : 12A3: 36 : Constant 2 $00000001 Addr : 12A4: 37 00 : Constant Mask Y=0 00000002 Addr : 12A6: 37 21 : Constant Mask Y=33 Decrement 00000003 Addr : 12A8: 06 27 13 : Call Obj.Sub 39 19 Addr : 12AB: 35 : Constant 1 $00000000 Addr : 12AC: F9 : Math Op < Addr : 12AD: JZ Label00D2 Addr : 12AD: 0A 04 : jz Address = 12B3 4 Addr : 12AF: PBASE Constant Address of Label00D4 Addr : 12AF: 87 9A 67 : Memory Op Byte PBASE + ADDRESS Address = 1A67 868 abort string("Can't mount SD card") Addr : 12B2: 31 : Abort value Addr : 12B3: Label00D2 Addr : 12B3: Label00D3 869 if \fsrw.popen(@f0,"w") Addr : 12B3: 02 : Drop Anchor Push Try Addr : 12B4: CF 28 : Memory Op Long DBASE + ADDRESS Address = 0028 Addr : 12B6: 38 77 : Constant 1 Bytes - 77 Addr : 12B8: 06 27 16 : Call Obj.Sub 39 22 Addr : 12BB: JZ Label00D5 Addr : 12BB: 0A 04 : jz Address = 12C1 4 Addr : 12BD: PBASE Constant Address of Label00D7 Addr : 12BD: 87 9A 7B : Memory Op Byte PBASE + ADDRESS Address = 1A7B 870 abort string("Can't create file") Addr : 12C0: 31 : Abort value Addr : 12C1: Label00D5 Addr : 12C1: Label00D6 871 processSave Addr : 12C1: 01 : Drop Anchor Addr : 12C2: 05 24 : Call Sub 36 872 if \fsrw.pclose < 0 Addr : 12C4: 02 : Drop Anchor Push Try Addr : 12C5: 06 27 15 : Call Obj.Sub 39 21 Addr : 12C8: 35 : Constant 1 $00000000 Addr : 12C9: F9 : Math Op < Addr : 12CA: JZ Label00D8 Addr : 12CA: 0A 04 : jz Address = 12D0 4 Addr : 12CC: PBASE Constant Address of Label00DA Addr : 12CC: 87 9A 8D : Memory Op Byte PBASE + ADDRESS Address = 1A8D 873 abort string("Error closing file") Addr : 12CF: 31 : Abort value Addr : 12D0: Label00D8 Addr : 12D0: Label00D9 874 \fsrw.unmount Addr : 12D0: 03 : Drop Anchor Try Addr : 12D1: 06 27 0D : Call Obj.Sub 39 13 Addr : 12D4: JMP Label00D1 Addr : 12D4: 04 80 B0 : Jmp 1387 176 Addr : 12D7: Label00D0 876 if nt == "[" ' Align save area for paged writes Addr : 12D7: 68 : Variable Operation Local Offset - 2 Read Addr : 12D8: 38 5B : Constant 1 Bytes - 5B Addr : 12DA: FC : Math Op == Addr : 12DB: JZ Label00DC Addr : 12DB: 0A 24 : jz Address = 1301 36 877 a := getaddress(",") + 64 Addr : 12DD: 00 : Drop Anchor Push Addr : 12DE: 38 2C : Constant 1 Bytes - 2C Addr : 12E0: 05 14 : Call Sub 20 Addr : 12E2: 37 05 : Constant Mask Y=5 00000040 Addr : 12E4: EC : Math Op + Addr : 12E5: 79 : Variable Operation Local Offset - 6 Write 878 if (a & 63) == 63 Addr : 12E6: 78 : Variable Operation Local Offset - 6 Read Addr : 12E7: 37 25 : Constant Mask Y=37 Decrement 0000003F Addr : 12E9: E8 : Math Op & Addr : 12EA: 37 25 : Constant Mask Y=37 Decrement 0000003F Addr : 12EC: FC : Math Op == Addr : 12ED: JZ Label00DE Addr : 12ED: 0A 04 : jz Address = 12F3 4 879 a += 64 Addr : 12EF: 37 05 : Constant Mask Y=5 00000040 Addr : 12F1: 7A 4C : Variable Operation Local Offset - 6 Assign WordMathop + Addr : 12F3: Label00DE Addr : 12F3: Label00DF 880 a := (a & $7FFC0) | fsrw#bootAddr Addr : 12F3: 78 : Variable Operation Local Offset - 6 Read Addr : 12F4: 3A 07 FF C0 : Constant 3 Bytes - 07 FF C0 Addr : 12F8: E8 : Math Op & Addr : 12F9: 3A 70 00 00 : Constant 3 Bytes - 70 00 00 Addr : 12FD: EA : Math Op | Addr : 12FE: 79 : Variable Operation Local Offset - 6 Write Addr : 12FF: JMP Label00DD Addr : 12FF: 04 13 : Jmp 1314 19 Addr : 1301: Label00DC 882 a := ((userPtr - progsize - 62) & $7FC0) | fsrw#bootAddr Addr : 1301: 39 73 20 : Constant 2 Bytes - 73 20 Addr : 1304: 37 0C : Constant Mask Y=12 00002000 Addr : 1306: ED : Math Op - Addr : 1307: 38 3E : Constant 1 Bytes - 3E Addr : 1309: ED : Math Op - Addr : 130A: 39 7F C0 : Constant 2 Bytes - 7F C0 Addr : 130D: E8 : Math Op & Addr : 130E: 3A 70 00 00 : Constant 3 Bytes - 70 00 00 Addr : 1312: EA : Math Op | Addr : 1313: 79 : Variable Operation Local Offset - 6 Write Addr : 1314: Label00E0 Addr : 1314: Label00DD 883 nt := spaces Addr : 1314: 00 : Drop Anchor Push Addr : 1315: 05 06 : Call Sub 6 Addr : 1317: 69 : Variable Operation Local Offset - 2 Write 884 if nt <> 0 and nt <> ":" Addr : 1318: 68 : Variable Operation Local Offset - 2 Read Addr : 1319: 35 : Constant 1 $00000000 Addr : 131A: FB : Math Op <> Addr : 131B: 68 : Variable Operation Local Offset - 2 Read Addr : 131C: 38 3A : Constant 1 Bytes - 3A Addr : 131E: FB : Math Op <> Addr : 131F: F0 : Math Op AND Addr : 1320: JZ Label00E1 Addr : 1320: 0A 04 : jz Address = 1326 4 885 abort @syn ' Write program to EEPROM Addr : 1322: 87 82 44 : Memory Op Byte PBASE + ADDRESS Address = 0244 Addr : 1325: 31 : Abort value Addr : 1326: Label00E1 Addr : 1326: Label00E2 886 d := eop - long[userPtr] + 1 Addr : 1326: 48 : Variable Operation Global Offset - 2 Read Addr : 1327: 39 73 20 : Constant 2 Bytes - 73 20 Addr : 132A: C0 : Memory Op Long POP Address READ Addr : 132B: ED : Math Op - Addr : 132C: 36 : Constant 2 $00000001 Addr : 132D: EC : Math Op + Addr : 132E: CD 24 : Memory Op Long DBASE + WRITE Address = 0024 887 if fsrw.writeEEPROM(a-2,@d,2) ' Write program size Addr : 1330: 00 : Drop Anchor Push Addr : 1331: 78 : Variable Operation Local Offset - 6 Read Addr : 1332: 37 00 : Constant Mask Y=0 00000002 Addr : 1334: ED : Math Op - Addr : 1335: CF 24 : Memory Op Long DBASE + ADDRESS Address = 0024 Addr : 1337: 37 00 : Constant Mask Y=0 00000002 Addr : 1339: 06 27 05 : Call Obj.Sub 39 5 Addr : 133C: JZ Label00E3 Addr : 133C: 0A 04 : jz Address = 1342 4 Addr : 133E: PBASE Constant Address of Label00E5 Addr : 133E: 87 9A A0 : Memory Op Byte PBASE + ADDRESS Address = 1AA0 888 abort string("Save EEPROM write") Addr : 1341: 31 : Abort value Addr : 1342: Label00E3 Addr : 1342: Label00E4 889 if fsrw.writeWait(a-2) Addr : 1342: 00 : Drop Anchor Push Addr : 1343: 78 : Variable Operation Local Offset - 6 Read Addr : 1344: 37 00 : Constant Mask Y=0 00000002 Addr : 1346: ED : Math Op - Addr : 1347: 06 27 07 : Call Obj.Sub 39 7 Addr : 134A: JZ Label00E6 Addr : 134A: 0A 04 : jz Address = 1350 4 Addr : 134C: PBASE Constant Address of Label00E8 Addr : 134C: 87 9A B2 : Memory Op Byte PBASE + ADDRESS Address = 1AB2 890 abort string("Save EEPROM timeout") Addr : 134F: 31 : Abort value Addr : 1350: Label00E6 Addr : 1350: Label00E7 891 repeat c from 0 to d step 64 ' Write the program itself Addr : 1350: 35 : Constant 1 $00000000 Addr : 1351: CD 20 : Memory Op Long DBASE + WRITE Address = 0020 Addr : 1353: Label00E9 892 if fsrw.writeEEPROM(a+c,long[userPtr]+c,d-c<#64) Addr : 1353: 00 : Drop Anchor Push Addr : 1354: 78 : Variable Operation Local Offset - 6 Read Addr : 1355: CC 20 : Memory Op Long DBASE + READ Address = 0020 Addr : 1357: EC : Math Op + Addr : 1358: 39 73 20 : Constant 2 Bytes - 73 20 Addr : 135B: C0 : Memory Op Long POP Address READ Addr : 135C: CC 20 : Memory Op Long DBASE + READ Address = 0020 Addr : 135E: EC : Math Op + Addr : 135F: CC 24 : Memory Op Long DBASE + READ Address = 0024 Addr : 1361: CC 20 : Memory Op Long DBASE + READ Address = 0020 Addr : 1363: ED : Math Op - Addr : 1364: 37 05 : Constant Mask Y=5 00000040 Addr : 1366: E5 : Math Op <| Addr : 1367: 06 27 05 : Call Obj.Sub 39 5 Addr : 136A: JZ Label00EC Addr : 136A: 0A 04 : jz Address = 1370 4 Addr : 136C: PBASE Constant Address of Label00EE Addr : 136C: 87 9A C6 : Memory Op Byte PBASE + ADDRESS Address = 1AC6 893 abort string("Save EEPROM write") Addr : 136F: 31 : Abort value Addr : 1370: Label00EC Addr : 1370: Label00ED 894 if fsrw.writeWait(a+c) Addr : 1370: 00 : Drop Anchor Push Addr : 1371: 78 : Variable Operation Local Offset - 6 Read Addr : 1372: CC 20 : Memory Op Long DBASE + READ Address = 0020 Addr : 1374: EC : Math Op + Addr : 1375: 06 27 07 : Call Obj.Sub 39 7 Addr : 1378: JZ Label00EF Addr : 1378: 0A 04 : jz Address = 137E 4 Addr : 137A: PBASE Constant Address of Label00F1 Addr : 137A: 87 9A D8 : Memory Op Byte PBASE + ADDRESS Address = 1AD8 895 abort string("Save EEPROM timeout") Addr : 137D: 31 : Abort value Addr : 137E: Label00EF Addr : 137E: Label00F0 Addr : 137E: Label00EA 891 repeat c from 0 to d step 64 ' Write the program itself Addr : 137E: 37 05 : Constant Mask Y=5 00000040 Addr : 1380: 35 : Constant 1 $00000000 Addr : 1381: CC 24 : Memory Op Long DBASE + READ Address = 0024 Addr : 1383: Repeat c Step Label00E9 Addr : 1383: CE 20 06 4C : Memory Op Long DBASE + ASSIGN Address = 0020 Repeat-Var loop (pop step) Address= 1353 -52 Addr : 1387: Label00EB Addr : 1387: Label00DB Addr : 1387: Label00D1 Addr : 1387: CaseDone Label00CF Addr : 1387: 0C : Casedone Addr : 1388: Label00F2 897 if (nt := spaces) == quote Addr : 1388: 00 : Drop Anchor Push Addr : 1389: 05 06 : Call Sub 6 Addr : 138B: 6A 80 : Variable Operation Local Offset - 2 Assign Write Push Addr : 138D: 38 22 : Constant 1 Bytes - 22 Addr : 138F: FC : Math Op == Addr : 1390: JZ Label00F3 Addr : 1390: 0A 80 4B : jz Address = 13DE 75 898 scanFilename(@f0) Addr : 1393: 01 : Drop Anchor Addr : 1394: CF 28 : Memory Op Long DBASE + ADDRESS Address = 0028 Addr : 1396: 05 20 : Call Sub 32 899 if \fsrw.mount(spiDO,spiClk,spiDI,spiCS) < 0 Addr : 1398: 02 : Drop Anchor Push Try Addr : 1399: 35 : Constant 1 $00000000 Addr : 139A: 36 : Constant 2 $00000001 Addr : 139B: 37 00 : Constant Mask Y=0 00000002 Addr : 139D: 37 21 : Constant Mask Y=33 Decrement 00000003 Addr : 139F: 06 27 13 : Call Obj.Sub 39 19 Addr : 13A2: 35 : Constant 1 $00000000 Addr : 13A3: F9 : Math Op < Addr : 13A4: JZ Label00F5 Addr : 13A4: 0A 04 : jz Address = 13AA 4 Addr : 13A6: PBASE Constant Address of Label00F7 Addr : 13A6: 87 9A EC : Memory Op Byte PBASE + ADDRESS Address = 1AEC 900 abort string("Can't mount SD card") Addr : 13A9: 31 : Abort value Addr : 13AA: Label00F5 Addr : 13AA: Label00F6 901 if \fsrw.popen(@f0,"r") ' Open requested file Addr : 13AA: 02 : Drop Anchor Push Try Addr : 13AB: CF 28 : Memory Op Long DBASE + ADDRESS Address = 0028 Addr : 13AD: 38 72 : Constant 1 Bytes - 72 Addr : 13AF: 06 27 16 : Call Obj.Sub 39 22 Addr : 13B2: JZ Label00F8 Addr : 13B2: 0A 04 : jz Address = 13B8 4 Addr : 13B4: PBASE Constant Address of Label00FA Addr : 13B4: 87 9B 00 : Memory Op Byte PBASE + ADDRESS Address = 1B00 902 abort string("Can't open file") Addr : 13B7: 31 : Abort value Addr : 13B8: Label00F8 Addr : 13B8: Label00F9 903 bytemove(@tailLine,tp,strsize(tp)+1) Addr : 13B8: 8B 83 1E : Memory Op Byte VBASE + ADDRESS Address = 031E Addr : 13BB: 44 : Variable Operation Global Offset - 1 Read Addr : 13BC: 44 : Variable Operation Global Offset - 1 Read Addr : 13BD: 16 : StrSize(String) Addr : 13BE: 36 : Constant 2 $00000001 Addr : 13BF: EC : Math Op + Addr : 13C0: 1C : ByteMove(To, From, Count) 904 newprog Addr : 13C1: 01 : Drop Anchor Addr : 13C2: 05 11 : Call Sub 17 905 processLoad Addr : 13C4: 01 : Drop Anchor Addr : 13C5: 05 23 : Call Sub 35 906 tp := @tailLine ' Scan command tail after load Addr : 13C7: 8B 83 1E : Memory Op Byte VBASE + ADDRESS Address = 031E Addr : 13CA: 45 : Variable Operation Global Offset - 1 Write 907 if \fsrw.pclose < 0 Addr : 13CB: 02 : Drop Anchor Push Try Addr : 13CC: 06 27 15 : Call Obj.Sub 39 21 Addr : 13CF: 35 : Constant 1 $00000000 Addr : 13D0: F9 : Math Op < Addr : 13D1: JZ Label00FB Addr : 13D1: 0A 04 : jz Address = 13D7 4 Addr : 13D3: PBASE Constant Address of Label00FD Addr : 13D3: 87 9B 10 : Memory Op Byte PBASE + ADDRESS Address = 1B10 908 abort string("Error closing file") Addr : 13D6: 31 : Abort value Addr : 13D7: Label00FB Addr : 13D7: Label00FC 909 \fsrw.unmount Addr : 13D7: 03 : Drop Anchor Try Addr : 13D8: 06 27 0D : Call Obj.Sub 39 13 Addr : 13DB: JMP Label00F4 Addr : 13DB: 04 80 AC : Jmp 148A 172 Addr : 13DE: Label00F3 911 if nt == "[" ' Align save area for paged writes Addr : 13DE: 68 : Variable Operation Local Offset - 2 Read Addr : 13DF: 38 5B : Constant 1 Bytes - 5B Addr : 13E1: FC : Math Op == Addr : 13E2: JZ Label00FF Addr : 13E2: 0A 24 : jz Address = 1408 36 912 a := getaddress(",") + 64 Addr : 13E4: 00 : Drop Anchor Push Addr : 13E5: 38 2C : Constant 1 Bytes - 2C Addr : 13E7: 05 14 : Call Sub 20 Addr : 13E9: 37 05 : Constant Mask Y=5 00000040 Addr : 13EB: EC : Math Op + Addr : 13EC: 79 : Variable Operation Local Offset - 6 Write 913 if (a & 63) == 63 Addr : 13ED: 78 : Variable Operation Local Offset - 6 Read Addr : 13EE: 37 25 : Constant Mask Y=37 Decrement 0000003F Addr : 13F0: E8 : Math Op & Addr : 13F1: 37 25 : Constant Mask Y=37 Decrement 0000003F Addr : 13F3: FC : Math Op == Addr : 13F4: JZ Label0101 Addr : 13F4: 0A 04 : jz Address = 13FA 4 914 a += 64 Addr : 13F6: 37 05 : Constant Mask Y=5 00000040 Addr : 13F8: 7A 4C : Variable Operation Local Offset - 6 Assign WordMathop + Addr : 13FA: Label0101 Addr : 13FA: Label0102 915 a := (a & $7FFC0) | fsrw#bootAddr Addr : 13FA: 78 : Variable Operation Local Offset - 6 Read Addr : 13FB: 3A 07 FF C0 : Constant 3 Bytes - 07 FF C0 Addr : 13FF: E8 : Math Op & Addr : 1400: 3A 70 00 00 : Constant 3 Bytes - 70 00 00 Addr : 1404: EA : Math Op | Addr : 1405: 79 : Variable Operation Local Offset - 6 Write Addr : 1406: JMP Label0100 Addr : 1406: 04 13 : Jmp 141B 19 Addr : 1408: Label00FF 917 a := ((userPtr - progsize - 62) & $7FC0) | fsrw#bootAddr Addr : 1408: 39 73 20 : Constant 2 Bytes - 73 20 Addr : 140B: 37 0C : Constant Mask Y=12 00002000 Addr : 140D: ED : Math Op - Addr : 140E: 38 3E : Constant 1 Bytes - 3E Addr : 1410: ED : Math Op - Addr : 1411: 39 7F C0 : Constant 2 Bytes - 7F C0 Addr : 1414: E8 : Math Op & Addr : 1415: 3A 70 00 00 : Constant 3 Bytes - 70 00 00 Addr : 1419: EA : Math Op | Addr : 141A: 79 : Variable Operation Local Offset - 6 Write Addr : 141B: Label0103 Addr : 141B: Label0100 918 nt := spaces Addr : 141B: 00 : Drop Anchor Push Addr : 141C: 05 06 : Call Sub 6 Addr : 141E: 69 : Variable Operation Local Offset - 2 Write 919 if nt <> 0 and nt <> ":" Addr : 141F: 68 : Variable Operation Local Offset - 2 Read Addr : 1420: 35 : Constant 1 $00000000 Addr : 1421: FB : Math Op <> Addr : 1422: 68 : Variable Operation Local Offset - 2 Read Addr : 1423: 38 3A : Constant 1 Bytes - 3A Addr : 1425: FB : Math Op <> Addr : 1426: F0 : Math Op AND Addr : 1427: JZ Label0104 Addr : 1427: 0A 04 : jz Address = 142D 4 920 abort @syn ' Read program from EEPROM Addr : 1429: 87 82 44 : Memory Op Byte PBASE + ADDRESS Address = 0244 Addr : 142C: 31 : Abort value Addr : 142D: Label0104 Addr : 142D: Label0105 921 if fsrw.readEEPROM(a-2,@d,2) Addr : 142D: 00 : Drop Anchor Push Addr : 142E: 78 : Variable Operation Local Offset - 6 Read Addr : 142F: 37 00 : Constant Mask Y=0 00000002 Addr : 1431: ED : Math Op - Addr : 1432: CF 24 : Memory Op Long DBASE + ADDRESS Address = 0024 Addr : 1434: 37 00 : Constant Mask Y=0 00000002 Addr : 1436: 06 27 04 : Call Obj.Sub 39 4 Addr : 1439: JZ Label0106 Addr : 1439: 0A 04 : jz Address = 143F 4 Addr : 143B: PBASE Constant Address of Label0108 Addr : 143B: 87 9B 23 : Memory Op Byte PBASE + ADDRESS Address = 1B23 922 abort string("Load EEPROM read") Addr : 143E: 31 : Abort value Addr : 143F: Label0106 Addr : 143F: Label0107 923 d &= $FFFF Addr : 143F: 37 2F : Constant Mask Y=47 Decrement 0000FFFF Addr : 1441: CE 24 48 : Memory Op Long DBASE + ASSIGN Address = 0024 BitMathop & 924 if d < 3 or d > progsize ' Read program size & check Addr : 1444: CC 24 : Memory Op Long DBASE + READ Address = 0024 Addr : 1446: 37 21 : Constant Mask Y=33 Decrement 00000003 Addr : 1448: F9 : Math Op < Addr : 1449: CC 24 : Memory Op Long DBASE + READ Address = 0024 Addr : 144B: 37 0C : Constant Mask Y=12 00002000 Addr : 144D: FA : Math Op > Addr : 144E: F2 : Math Op OR Addr : 144F: JZ Label0109 Addr : 144F: 0A 04 : jz Address = 1455 4 Addr : 1451: PBASE Constant Address of Label010B Addr : 1451: 87 9B 34 : Memory Op Byte PBASE + ADDRESS Address = 1B34 925 abort string("Invalid program size") Addr : 1454: 31 : Abort value Addr : 1455: Label0109 Addr : 1455: Label010A 926 c := @tailLine ' Save statement tail Addr : 1455: 8B 83 1E : Memory Op Byte VBASE + ADDRESS Address = 031E Addr : 1458: CD 20 : Memory Op Long DBASE + WRITE Address = 0020 Addr : 145A: Label010C 927 repeat while byte[c++] := byte[tp++] Addr : 145A: 46 AE : Variable Operation Global Offset - 1 Assign VAR++ post inc Long Push Addr : 145C: 80 : Memory Op Byte POP Address READ Addr : 145D: CE 20 AE : Memory Op Long DBASE + ASSIGN Address = 0020 VAR++ post inc Long Push Addr : 1460: 82 80 : Memory Op Byte POP Address ASSIGN Write Push Addr : 1462: JZ Label010E Addr : 1462: 0A 02 : jz Address = 1466 2 Addr : 1464: Label010D Addr : 1464: JMP Label010C Addr : 1464: 04 74 : Jmp 145A -12 Addr : 1466: Label010E 928 tp := @tailLine ' Scan copy after load Addr : 1466: 8B 83 1E : Memory Op Byte VBASE + ADDRESS Address = 031E Addr : 1469: 45 : Variable Operation Global Offset - 1 Write 929 if fsrw.readEEPROM(a,long[userPtr],d) Addr : 146A: 00 : Drop Anchor Push Addr : 146B: 78 : Variable Operation Local Offset - 6 Read Addr : 146C: 39 73 20 : Constant 2 Bytes - 73 20 Addr : 146F: C0 : Memory Op Long POP Address READ Addr : 1470: CC 24 : Memory Op Long DBASE + READ Address = 0024 Addr : 1472: 06 27 04 : Call Obj.Sub 39 4 Addr : 1475: JZ Label010F Addr : 1475: 0A 04 : jz Address = 147B 4 Addr : 1477: PBASE Constant Address of Label0111 Addr : 1477: 87 9B 49 : Memory Op Byte PBASE + ADDRESS Address = 1B49 930 abort string("Load EEPROM read") Addr : 147A: 31 : Abort value Addr : 147B: Label010F Addr : 147B: Label0110 931 eop := long[userPtr] + d - 1 Addr : 147B: 39 73 20 : Constant 2 Bytes - 73 20 Addr : 147E: C0 : Memory Op Long POP Address READ Addr : 147F: CC 24 : Memory Op Long DBASE + READ Address = 0024 Addr : 1481: EC : Math Op + Addr : 1482: 36 : Constant 2 $00000001 Addr : 1483: ED : Math Op - Addr : 1484: 49 : Variable Operation Global Offset - 2 Write 932 nextlineloc := eop - 2 ' Leave it stopped Addr : 1485: 48 : Variable Operation Global Offset - 2 Read Addr : 1486: 37 00 : Constant Mask Y=0 00000002 Addr : 1488: ED : Math Op - Addr : 1489: 4D : Variable Operation Global Offset - 3 Write Addr : 148A: Label00FE Addr : 148A: Label00F4 Addr : 148A: CaseDone Label00F2 Addr : 148A: 0C : Casedone Addr : 148B: Label0112 934 ht := spaces Addr : 148B: 00 : Drop Anchor Push Addr : 148C: 05 06 : Call Sub 6 Addr : 148E: 65 : Variable Operation Local Offset - 1 Write 935 if ht == 0 Addr : 148F: 64 : Variable Operation Local Offset - 1 Read Addr : 1490: 35 : Constant 1 $00000000 Addr : 1491: FC : Math Op == Addr : 1492: JZ Label0113 Addr : 1492: 0A 04 : jz Address = 1498 4 936 abort @syn Addr : 1494: 87 82 44 : Memory Op Byte PBASE + ADDRESS Address = 0244 Addr : 1497: 31 : Abort value Addr : 1498: Label0113 Addr : 1498: Label0114 937 nt := skipspaces Addr : 1498: 00 : Drop Anchor Push Addr : 1499: 05 07 : Call Sub 7 Addr : 149B: 69 : Variable Operation Local Offset - 2 Write 938 if not isvar(ht) or nt <> "=" Addr : 149C: 00 : Drop Anchor Push Addr : 149D: 64 : Variable Operation Local Offset - 1 Read Addr : 149E: 05 0B : Call Sub 11 Addr : 14A0: FF : Math Op NOT Addr : 14A1: 68 : Variable Operation Local Offset - 2 Read Addr : 14A2: 38 3D : Constant 1 Bytes - 3D Addr : 14A4: FB : Math Op <> Addr : 14A5: F2 : Math Op OR Addr : 14A6: JZ Label0115 Addr : 14A6: 0A 04 : jz Address = 14AC 4 939 abort @syn Addr : 14A8: 87 82 44 : Memory Op Byte PBASE + ADDRESS Address = 0244 Addr : 14AB: 31 : Abort value Addr : 14AC: Label0115 Addr : 14AC: Label0116 940 a := fixvar(ht) Addr : 14AC: 00 : Drop Anchor Push Addr : 14AD: 64 : Variable Operation Local Offset - 1 Read Addr : 14AE: 05 0A : Call Sub 10 Addr : 14B0: 79 : Variable Operation Local Offset - 6 Write 941 skipspaces Addr : 14B1: 01 : Drop Anchor Addr : 14B2: 05 07 : Call Sub 7 942 vars[a] := expr Addr : 14B4: 00 : Drop Anchor Push Addr : 14B5: 05 1E : Call Sub 30 Addr : 14B7: 78 : Variable Operation Local Offset - 6 Read Addr : 14B8: D9 1C : Memory Op Long VBASE + POP Index WRITE Address = 001C 943 if spaces <> 155 ' TO ' Save FOR limit Addr : 14BA: 00 : Drop Anchor Push Addr : 14BB: 05 06 : Call Sub 6 Addr : 14BD: 38 9B : Constant 1 Bytes - 9B Addr : 14BF: FB : Math Op <> Addr : 14C0: JZ Label0117 Addr : 14C0: 0A 04 : jz Address = 14C6 4 944 abort @syn Addr : 14C2: 87 82 44 : Memory Op Byte PBASE + ADDRESS Address = 0244 Addr : 14C5: 31 : Abort value Addr : 14C6: Label0117 Addr : 14C6: Label0118 945 skipspaces Addr : 14C6: 01 : Drop Anchor Addr : 14C7: 05 07 : Call Sub 7 946 forLimit[a] := expr Addr : 14C9: 00 : Drop Anchor Push Addr : 14CA: 05 1E : Call Sub 30 Addr : 14CC: 78 : Variable Operation Local Offset - 6 Read Addr : 14CD: D9 81 44 : Memory Op Long VBASE + POP Index WRITE Address = 0144 947 if spaces == 156 ' STEP ' Save step size Addr : 14D0: 00 : Drop Anchor Push Addr : 14D1: 05 06 : Call Sub 6 Addr : 14D3: 38 9C : Constant 1 Bytes - 9C Addr : 14D5: FC : Math Op == Addr : 14D6: JZ Label0119 Addr : 14D6: 0A 0C : jz Address = 14E4 12 948 skipspaces Addr : 14D8: 01 : Drop Anchor Addr : 14D9: 05 07 : Call Sub 7 949 forStep[a] := expr Addr : 14DB: 00 : Drop Anchor Push Addr : 14DC: 05 1E : Call Sub 30 Addr : 14DE: 78 : Variable Operation Local Offset - 6 Read Addr : 14DF: D9 80 DC : Memory Op Long VBASE + POP Index WRITE Address = 00DC Addr : 14E2: JMP Label011A Addr : 14E2: 04 05 : Jmp 14E9 5 Addr : 14E4: Label0119 951 forStep[a] := 1 ' Default step is 1 Addr : 14E4: 36 : Constant 2 $00000001 Addr : 14E5: 78 : Variable Operation Local Offset - 6 Read Addr : 14E6: D9 80 DC : Memory Op Long VBASE + POP Index WRITE Address = 00DC Addr : 14E9: Label011B Addr : 14E9: Label011A 952 if spaces Addr : 14E9: 00 : Drop Anchor Push Addr : 14EA: 05 06 : Call Sub 6 Addr : 14EC: JZ Label011C Addr : 14EC: 0A 04 : jz Address = 14F2 4 953 abort @syn Addr : 14EE: 87 82 44 : Memory Op Byte PBASE + ADDRESS Address = 0244 Addr : 14F1: 31 : Abort value Addr : 14F2: Label011C Addr : 14F2: Label011D 954 forLoop[a] := nextlineloc ' Save address of line Addr : 14F2: 4C : Variable Operation Global Offset - 3 Read Addr : 14F3: 78 : Variable Operation Local Offset - 6 Read Addr : 14F4: D9 81 AC : Memory Op Long VBASE + POP Index WRITE Address = 01AC 955 if forStep[a] < 0 ' following the FOR Addr : 14F7: 78 : Variable Operation Local Offset - 6 Read Addr : 14F8: D8 80 DC : Memory Op Long VBASE + POP Index READ Address = 00DC Addr : 14FB: 35 : Constant 1 $00000000 Addr : 14FC: F9 : Math Op < Addr : 14FD: JZ Label011E Addr : 14FD: 0A 0B : jz Address = 150A 11 956 b := vars[a] => forLimit[a] Addr : 14FF: 78 : Variable Operation Local Offset - 6 Read Addr : 1500: D8 1C : Memory Op Long VBASE + POP Index READ Address = 001C Addr : 1502: 78 : Variable Operation Local Offset - 6 Read Addr : 1503: D8 81 44 : Memory Op Long VBASE + POP Index READ Address = 0144 Addr : 1506: FE : Math Op => Addr : 1507: 7D : Variable Operation Local Offset - 7 Write Addr : 1508: JMP Label011F Addr : 1508: 04 09 : Jmp 1513 9 Addr : 150A: Label011E 958 b := vars[a] =< forLimit[a] Addr : 150A: 78 : Variable Operation Local Offset - 6 Read Addr : 150B: D8 1C : Memory Op Long VBASE + POP Index READ Address = 001C Addr : 150D: 78 : Variable Operation Local Offset - 6 Read Addr : 150E: D8 81 44 : Memory Op Long VBASE + POP Index READ Address = 0144 Addr : 1511: FD : Math Op =< Addr : 1512: 7D : Variable Operation Local Offset - 7 Write Addr : 1513: Label0120 Addr : 1513: Label011F 959 if not b ' Search for matching NEXT Addr : 1513: 7C : Variable Operation Local Offset - 7 Read Addr : 1514: FF : Math Op NOT Addr : 1515: JZ Label0121 Addr : 1515: 0A 3C : jz Address = 1553 60 Addr : 1517: Label0123 960 repeat while nextlineloc < eop-2 Addr : 1517: 4C : Variable Operation Global Offset - 3 Read Addr : 1518: 48 : Variable Operation Global Offset - 2 Read Addr : 1519: 37 00 : Constant Mask Y=0 00000002 Addr : 151B: ED : Math Op - Addr : 151C: F9 : Math Op < Addr : 151D: JZ Label0125 Addr : 151D: 0A 34 : jz Address = 1553 52 961 curlineno := wordat(nextlineloc) Addr : 151F: 00 : Drop Anchor Push Addr : 1520: 4C : Variable Operation Global Offset - 3 Read Addr : 1521: 05 0D : Call Sub 13 Addr : 1523: 55 : Variable Operation Global Offset - 5 Write 962 tp := nextlineloc + 2 Addr : 1524: 4C : Variable Operation Global Offset - 3 Read Addr : 1525: 37 00 : Constant Mask Y=0 00000002 Addr : 1527: EC : Math Op + Addr : 1528: 45 : Variable Operation Global Offset - 1 Write 963 nextlineloc := tp + strsize(tp) + 1 Addr : 1529: 44 : Variable Operation Global Offset - 1 Read Addr : 152A: 44 : Variable Operation Global Offset - 1 Read Addr : 152B: 16 : StrSize(String) Addr : 152C: EC : Math Op + Addr : 152D: 36 : Constant 2 $00000001 Addr : 152E: EC : Math Op + Addr : 152F: 4D : Variable Operation Global Offset - 3 Write 964 if spaces == 157 ' NEXT Addr : 1530: 00 : Drop Anchor Push Addr : 1531: 05 06 : Call Sub 6 Addr : 1533: 38 9D : Constant 1 Bytes - 9D Addr : 1535: FC : Math Op == Addr : 1536: JZ Label0126 Addr : 1536: 0A 19 : jz Address = 1551 25 965 nt := skipspaces ' Variable has to agree Addr : 1538: 00 : Drop Anchor Push Addr : 1539: 05 07 : Call Sub 7 Addr : 153B: 69 : Variable Operation Local Offset - 2 Write 966 if not isvar(nt) Addr : 153C: 00 : Drop Anchor Push Addr : 153D: 68 : Variable Operation Local Offset - 2 Read Addr : 153E: 05 0B : Call Sub 11 Addr : 1540: FF : Math Op NOT Addr : 1541: JZ Label0128 Addr : 1541: 0A 04 : jz Address = 1547 4 967 abort @syn Addr : 1543: 87 82 44 : Memory Op Byte PBASE + ADDRESS Address = 0244 Addr : 1546: 31 : Abort value Addr : 1547: Label0128 Addr : 1547: Label0129 968 if fixvar(nt) == a ' If match, continue after Addr : 1547: 00 : Drop Anchor Push Addr : 1548: 68 : Variable Operation Local Offset - 2 Read Addr : 1549: 05 0A : Call Sub 10 Addr : 154B: 78 : Variable Operation Local Offset - 6 Read Addr : 154C: FC : Math Op == Addr : 154D: JZ Label012A Addr : 154D: 0A 02 : jz Address = 1551 2 969 quit ' the matching NEXT Addr : 154F: JMP Label0125 Addr : 154F: 04 02 : Jmp 1553 2 Addr : 1551: Label012A Addr : 1551: Label012B Addr : 1551: Label0126 Addr : 1551: Label0127 Addr : 1551: Label0124 Addr : 1551: JMP Label0123 Addr : 1551: 04 44 : Jmp 1517 -60 Addr : 1553: Label0125 Addr : 1553: Label0121 Addr : 1553: Label0122 Addr : 1553: CaseDone Label0112 Addr : 1553: 0C : Casedone Addr : 1554: Label012C 971 nt := spaces Addr : 1554: 00 : Drop Anchor Push Addr : 1555: 05 06 : Call Sub 6 Addr : 1557: 69 : Variable Operation Local Offset - 2 Write 972 if not isvar(nt) Addr : 1558: 00 : Drop Anchor Push Addr : 1559: 68 : Variable Operation Local Offset - 2 Read Addr : 155A: 05 0B : Call Sub 11 Addr : 155C: FF : Math Op NOT Addr : 155D: JZ Label012D Addr : 155D: 0A 04 : jz Address = 1563 4 973 abort @syn Addr : 155F: 87 82 44 : Memory Op Byte PBASE + ADDRESS Address = 0244 Addr : 1562: 31 : Abort value Addr : 1563: Label012D Addr : 1563: Label012E 974 a := fixvar(nt) Addr : 1563: 00 : Drop Anchor Push Addr : 1564: 68 : Variable Operation Local Offset - 2 Read Addr : 1565: 05 0A : Call Sub 10 Addr : 1567: 79 : Variable Operation Local Offset - 6 Write 975 vars[a] += forStep[a] ' Increment or decrement the Addr : 1568: 78 : Variable Operation Local Offset - 6 Read Addr : 1569: D8 80 DC : Memory Op Long VBASE + POP Index READ Address = 00DC Addr : 156C: 78 : Variable Operation Local Offset - 6 Read Addr : 156D: DA 1C 4C : Memory Op Long VBASE + POP Index ASSIGN Address = 001C WordMathop + 976 if forStep[a] < 0 ' FOR variable and check for Addr : 1570: 78 : Variable Operation Local Offset - 6 Read Addr : 1571: D8 80 DC : Memory Op Long VBASE + POP Index READ Address = 00DC Addr : 1574: 35 : Constant 1 $00000000 Addr : 1575: F9 : Math Op < Addr : 1576: JZ Label012F Addr : 1576: 0A 0B : jz Address = 1583 11 977 b := vars[a] => forLimit[a] Addr : 1578: 78 : Variable Operation Local Offset - 6 Read Addr : 1579: D8 1C : Memory Op Long VBASE + POP Index READ Address = 001C Addr : 157B: 78 : Variable Operation Local Offset - 6 Read Addr : 157C: D8 81 44 : Memory Op Long VBASE + POP Index READ Address = 0144 Addr : 157F: FE : Math Op => Addr : 1580: 7D : Variable Operation Local Offset - 7 Write Addr : 1581: JMP Label0130 Addr : 1581: 04 09 : Jmp 158C 9 Addr : 1583: Label012F 979 b := vars[a] =< forLimit[a] Addr : 1583: 78 : Variable Operation Local Offset - 6 Read Addr : 1584: D8 1C : Memory Op Long VBASE + POP Index READ Address = 001C Addr : 1586: 78 : Variable Operation Local Offset - 6 Read Addr : 1587: D8 81 44 : Memory Op Long VBASE + POP Index READ Address = 0144 Addr : 158A: FD : Math Op =< Addr : 158B: 7D : Variable Operation Local Offset - 7 Write Addr : 158C: Label0131 Addr : 158C: Label0130 980 if b ' If continuing loop, go to Addr : 158C: 7C : Variable Operation Local Offset - 7 Read Addr : 158D: JZ Label0132 Addr : 158D: 0A 05 : jz Address = 1594 5 981 nextlineloc := forLoop[a] ' statement after FOR Addr : 158F: 78 : Variable Operation Local Offset - 6 Read Addr : 1590: D8 81 AC : Memory Op Long VBASE + POP Index READ Address = 01AC Addr : 1593: 4D : Variable Operation Global Offset - 3 Write Addr : 1594: Label0132 Addr : 1594: Label0133 982 tp++ Addr : 1594: 46 2E : Variable Operation Global Offset - 1 Assign VAR++ post inc Long Addr : 1596: CaseDone Label012C Addr : 1596: 0C : Casedone Addr : 1597: Label0134 984 a := getAddress(".") Addr : 1597: 00 : Drop Anchor Push Addr : 1598: 38 2E : Constant 1 Bytes - 2E Addr : 159A: 05 14 : Call Sub 20 Addr : 159C: 79 : Variable Operation Local Offset - 6 Write 985 if a > $FFFF Addr : 159D: 78 : Variable Operation Local Offset - 6 Read Addr : 159E: 37 2F : Constant Mask Y=47 Decrement 0000FFFF Addr : 15A0: FA : Math Op > Addr : 15A1: JZ Label0135 Addr : 15A1: 0A 2B : jz Address = 15CE 43 986 b := a & $FF Addr : 15A3: 78 : Variable Operation Local Offset - 6 Read Addr : 15A4: 37 27 : Constant Mask Y=39 Decrement 000000FF Addr : 15A6: E8 : Math Op & Addr : 15A7: 7D : Variable Operation Local Offset - 7 Write 987 a := (a >> 8) & $FF Addr : 15A8: 78 : Variable Operation Local Offset - 6 Read Addr : 15A9: 37 02 : Constant Mask Y=2 00000008 Addr : 15AB: E2 : Math Op >> Addr : 15AC: 37 27 : Constant Mask Y=39 Decrement 000000FF Addr : 15AE: E8 : Math Op & Addr : 15AF: 79 : Variable Operation Local Offset - 6 Write 988 outa[a..b] := specialExpr Addr : 15B0: 00 : Drop Anchor Push Addr : 15B1: 05 1F : Call Sub 31 Addr : 15B3: 78 : Variable Operation Local Offset - 6 Read Addr : 15B4: 7C : Variable Operation Local Offset - 7 Read Addr : 15B5: 3E B4 : Register [Bit..Bit] op OUTA Write 989 dira[a..b]~~ Addr : 15B7: 78 : Variable Operation Local Offset - 6 Read Addr : 15B8: 7C : Variable Operation Local Offset - 7 Read Addr : 15B9: 3E D6 1C : Register [Bit..Bit] op DIRA VAR~~ Post-set 990 repeat c from a to b Addr : 15BC: 78 : Variable Operation Local Offset - 6 Read Addr : 15BD: CD 20 : Memory Op Long DBASE + WRITE Address = 0020 Addr : 15BF: Label0137 991 outputs |= |< c Addr : 15BF: CC 20 : Memory Op Long DBASE + READ Address = 0020 Addr : 15C1: F3 : Math Op |< Addr : 15C2: AA 82 1C 4A : Memory Op Word VBASE + ASSIGN Address = 021C ByteMathop | Addr : 15C6: Label0138 990 repeat c from a to b Addr : 15C6: 78 : Variable Operation Local Offset - 6 Read Addr : 15C7: 7C : Variable Operation Local Offset - 7 Read Addr : 15C8: Repeat c Step Label0137 Addr : 15C8: CE 20 02 73 : Memory Op Long DBASE + ASSIGN Address = 0020 Repeat-Var loop Address= 15BF -13 Addr : 15CC: Label0139 Addr : 15CC: JMP Label0136 Addr : 15CC: 04 10 : Jmp 15DE 16 Addr : 15CE: Label0135 993 outa[a] := specialExpr Addr : 15CE: 00 : Drop Anchor Push Addr : 15CF: 05 1F : Call Sub 31 Addr : 15D1: 78 : Variable Operation Local Offset - 6 Read Addr : 15D2: 3D B4 : Register [Bit] op OUTA Write 994 dira[a]~~ Addr : 15D4: 78 : Variable Operation Local Offset - 6 Read Addr : 15D5: 3D D6 1C : Register [Bit] op DIRA VAR~~ Post-set 995 outputs |= |< a Addr : 15D8: 78 : Variable Operation Local Offset - 6 Read Addr : 15D9: F3 : Math Op |< Addr : 15DA: AA 82 1C 4A : Memory Op Word VBASE + ASSIGN Address = 021C ByteMathop | Addr : 15DE: Label013A Addr : 15DE: Label0136 Addr : 15DE: CaseDone Label0134 Addr : 15DE: 0C : Casedone Addr : 15DF: Label013B 997 if pauseTime == 0 ' If no active pause time, set it Addr : 15DF: 58 : Variable Operation Global Offset - 6 Read Addr : 15E0: 35 : Constant 1 $00000000 Addr : 15E1: FC : Math Op == Addr : 15E2: JZ Label013C Addr : 15E2: 0A 1F : jz Address = 1603 31 998 spaces ' with a minimum time of 50us Addr : 15E4: 01 : Drop Anchor Addr : 15E5: 05 06 : Call Sub 6 999 pauseTime := expr * 1000 Addr : 15E7: 00 : Drop Anchor Push Addr : 15E8: 05 1E : Call Sub 30 Addr : 15EA: 39 03 E8 : Constant 2 Bytes - 03 E8 Addr : 15ED: F4 : Math Op * Addr : 15EE: 59 : Variable Operation Global Offset - 6 Write 1000 if spaces == "," ' First (or only) value is in ms Addr : 15EF: 00 : Drop Anchor Push Addr : 15F0: 05 06 : Call Sub 6 Addr : 15F2: 38 2C : Constant 1 Bytes - 2C Addr : 15F4: FC : Math Op == Addr : 15F5: JZ Label013E Addr : 15F5: 0A 08 : jz Address = 15FF 8 1001 skipspaces Addr : 15F7: 01 : Drop Anchor Addr : 15F8: 05 07 : Call Sub 7 1002 pauseTime += expr ' Second value is in us Addr : 15FA: 00 : Drop Anchor Push Addr : 15FB: 05 1E : Call Sub 30 Addr : 15FD: 5A 4C : Variable Operation Global Offset - 6 Assign WordMathop + Addr : 15FF: Label013E Addr : 15FF: Label013F 1003 pauseTime #>= 50 Addr : 15FF: 38 32 : Constant 1 Bytes - 32 Addr : 1601: 5A 44 : Variable Operation Global Offset - 6 Assign WordMathop |> Addr : 1603: Label013C Addr : 1603: Label013D 1004 if pauseTime < 10_050 ' Normally pause at most 10ms at a time, Addr : 1603: 58 : Variable Operation Global Offset - 6 Read Addr : 1604: 39 27 42 : Constant 2 Bytes - 27 42 Addr : 1607: F9 : Math Op < Addr : 1608: JZ Label0140 Addr : 1608: 0A 0B : jz Address = 1615 11 1005 waitcnt(pauseTime * uS + cnt) ' but, if that would leave < 50us, Addr : 160A: 58 : Variable Operation Global Offset - 6 Read Addr : 160B: 74 : Variable Operation Local Offset - 5 Read Addr : 160C: F4 : Math Op * Addr : 160D: 3F 91 : Register op CNT Read Addr : 160F: EC : Math Op + Addr : 1610: 23 : WaitCnt(count) 1006 pauseTime := 0 ' pause the whole amount now Addr : 1611: 35 : Constant 1 $00000000 Addr : 1612: 59 : Variable Operation Global Offset - 6 Write Addr : 1613: JMP Label0141 Addr : 1613: 04 14 : Jmp 1629 20 Addr : 1615: Label0140 1008 a := pauseTime <# 10_000 Addr : 1615: 58 : Variable Operation Global Offset - 6 Read Addr : 1616: 39 27 10 : Constant 2 Bytes - 27 10 Addr : 1619: E5 : Math Op <| Addr : 161A: 79 : Variable Operation Local Offset - 6 Write 1009 waitcnt(a * uS + cnt) ' Otherwise, pause at most 10ms and Addr : 161B: 78 : Variable Operation Local Offset - 6 Read Addr : 161C: 74 : Variable Operation Local Offset - 5 Read Addr : 161D: F4 : Math Op * Addr : 161E: 3F 91 : Register op CNT Read Addr : 1620: EC : Math Op + Addr : 1621: 23 : WaitCnt(count) 1010 nextlineloc := thisLine ' re-execute the PAUSE for the rest Addr : 1622: 70 : Variable Operation Local Offset - 4 Read Addr : 1623: 4D : Variable Operation Global Offset - 3 Write 1011 pauseTime -= 10_000 Addr : 1624: 39 27 10 : Constant 2 Bytes - 27 10 Addr : 1627: 5A 4D : Variable Operation Global Offset - 6 Assign WordMathop - Addr : 1629: Label0142 Addr : 1629: Label0141 Addr : 1629: CaseDone Label013B Addr : 1629: 0C : Casedone Addr : 162A: Label0143 1013 a := getAddress(" ") Addr : 162A: 00 : Drop Anchor Push Addr : 162B: 37 04 : Constant Mask Y=4 00000020 Addr : 162D: 05 14 : Call Sub 20 Addr : 162F: 79 : Variable Operation Local Offset - 6 Write 1014 byte[a] := specialExpr Addr : 1630: 00 : Drop Anchor Push Addr : 1631: 05 1F : Call Sub 31 Addr : 1633: 78 : Variable Operation Local Offset - 6 Read Addr : 1634: 81 : Memory Op Byte POP Address WRITE Addr : 1635: CaseDone Label0143 Addr : 1635: 0C : Casedone Addr : 1636: Label0144 1016 a := getAddress(" ") Addr : 1636: 00 : Drop Anchor Push Addr : 1637: 37 04 : Constant Mask Y=4 00000020 Addr : 1639: 05 14 : Call Sub 20 Addr : 163B: 79 : Variable Operation Local Offset - 6 Write 1017 word[a] := specialExpr Addr : 163C: 00 : Drop Anchor Push Addr : 163D: 05 1F : Call Sub 31 Addr : 163F: 78 : Variable Operation Local Offset - 6 Read Addr : 1640: A1 : Memory Op Word POP Address WRITE Addr : 1641: CaseDone Label0144 Addr : 1641: 0C : Casedone Addr : 1642: Label0145 1019 a := getAddress(" ") Addr : 1642: 00 : Drop Anchor Push Addr : 1643: 37 04 : Constant Mask Y=4 00000020 Addr : 1645: 05 14 : Call Sub 20 Addr : 1647: 79 : Variable Operation Local Offset - 6 Write 1020 long[a] := specialExpr Addr : 1648: 00 : Drop Anchor Push Addr : 1649: 05 1F : Call Sub 31 Addr : 164B: 78 : Variable Operation Local Offset - 6 Read Addr : 164C: C1 : Memory Op Long POP Address WRITE Addr : 164D: CaseDone Label0145 Addr : 164D: 0C : Casedone Addr : 164E: Label0146 1022 PHSA := specialExpr Addr : 164E: 00 : Drop Anchor Push Addr : 164F: 05 1F : Call Sub 31 Addr : 1651: 3F BC : Register op PHSA Write Addr : 1653: CaseDone Label0146 Addr : 1653: 0C : Casedone Addr : 1654: Label0147 1024 PHSB := specialExpr Addr : 1654: 00 : Drop Anchor Push Addr : 1655: 05 1F : Call Sub 31 Addr : 1657: 3F BD : Register op PHSB Write Addr : 1659: CaseDone Label0147 Addr : 1659: 0C : Casedone Addr : 165A: Label0148 1026 FRQA := specialExpr Addr : 165A: 00 : Drop Anchor Push Addr : 165B: 05 1F : Call Sub 31 Addr : 165D: 3F BA : Register op FRQA Write Addr : 165F: CaseDone Label0148 Addr : 165F: 0C : Casedone Addr : 1660: Label0149 1028 FRQB := specialExpr Addr : 1660: 00 : Drop Anchor Push Addr : 1661: 05 1F : Call Sub 31 Addr : 1663: 3F BB : Register op FRQB Write Addr : 1665: CaseDone Label0149 Addr : 1665: 0C : Casedone Addr : 1666: Label014A 1030 CTRA := specialExpr Addr : 1666: 00 : Drop Anchor Push Addr : 1667: 05 1F : Call Sub 31 Addr : 1669: 3F B8 : Register op CTRA Write Addr : 166B: CaseDone Label014A Addr : 166B: 0C : Casedone Addr : 166C: Label014B 1032 CTRB := specialExpr Addr : 166C: 00 : Drop Anchor Push Addr : 166D: 05 1F : Call Sub 31 Addr : 166F: 3F B9 : Register op CTRB Write Addr : 1671: CaseDone Label014B Addr : 1671: 0C : Casedone Addr : 1672: Label014C 1034 spaces Addr : 1672: 01 : Drop Anchor Addr : 1673: 05 06 : Call Sub 6 1035 dsp.out(expr) Addr : 1675: 01 : Drop Anchor Addr : 1676: 00 : Drop Anchor Push Addr : 1677: 05 1E : Call Sub 30 Addr : 1679: 06 28 09 : Call Obj.Sub 40 9 Addr : 167C: Label014D 1036 repeat while spaces == "," Addr : 167C: 00 : Drop Anchor Push Addr : 167D: 05 06 : Call Sub 6 Addr : 167F: 38 2C : Constant 1 Bytes - 2C Addr : 1681: FC : Math Op == Addr : 1682: JZ Label014F Addr : 1682: 0A 0C : jz Address = 1690 12 1037 skipspaces Addr : 1684: 01 : Drop Anchor Addr : 1685: 05 07 : Call Sub 7 1038 dsp.out(expr) Addr : 1687: 01 : Drop Anchor Addr : 1688: 00 : Drop Anchor Push Addr : 1689: 05 1E : Call Sub 30 Addr : 168B: 06 28 09 : Call Obj.Sub 40 9 Addr : 168E: Label014E Addr : 168E: JMP Label014D Addr : 168E: 04 6C : Jmp 167C -20 Addr : 1690: Label014F Addr : 1690: CaseDone Label014C Addr : 1690: 0C : Casedone Addr : 1691: Label0150 1040 nt := spaces Addr : 1691: 00 : Drop Anchor Push Addr : 1692: 05 06 : Call Sub 6 Addr : 1694: 69 : Variable Operation Local Offset - 2 Write 1041 if not isvar(nt) Addr : 1695: 00 : Drop Anchor Push Addr : 1696: 68 : Variable Operation Local Offset - 2 Read Addr : 1697: 05 0B : Call Sub 11 Addr : 1699: FF : Math Op NOT Addr : 169A: JZ Label0151 Addr : 169A: 0A 04 : jz Address = 16A0 4 1042 abort @syn Addr : 169C: 87 82 44 : Memory Op Byte PBASE + ADDRESS Address = 0244 Addr : 169F: 31 : Abort value Addr : 16A0: Label0151 Addr : 16A0: Label0152 1043 tp++ Addr : 16A0: 46 2E : Variable Operation Global Offset - 1 Assign VAR++ post inc Long 1044 vars[fixvar(nt)] := specialExpr Addr : 16A2: 00 : Drop Anchor Push Addr : 16A3: 05 1F : Call Sub 31 Addr : 16A5: 00 : Drop Anchor Push Addr : 16A6: 68 : Variable Operation Local Offset - 2 Read Addr : 16A7: 05 0A : Call Sub 10 Addr : 16A9: D9 1C : Memory Op Long VBASE + POP Index WRITE Address = 001C Addr : 16AB: CaseDone Label0150 Addr : 16AB: 0C : Casedone Addr : 16AC: Label0153 1046 nextlineloc := eop-2 Addr : 16AC: 48 : Variable Operation Global Offset - 2 Read Addr : 16AD: 37 00 : Constant Mask Y=0 00000002 Addr : 16AF: ED : Math Op - Addr : 16B0: 4D : Variable Operation Global Offset - 3 Write 1047 return Addr : 16B1: 32 : Return Addr : 16B2: CaseDone Label0153 Addr : 16B2: 0C : Casedone Addr : 16B3: Label0154 1049 nextlineloc := eop-2 Addr : 16B3: 48 : Variable Operation Global Offset - 2 Read Addr : 16B4: 37 00 : Constant Mask Y=0 00000002 Addr : 16B6: ED : Math Op - Addr : 16B7: 4D : Variable Operation Global Offset - 3 Write 1050 return Addr : 16B8: 32 : Return Addr : 16B9: CaseDone Label0154 Addr : 16B9: 0C : Casedone Addr : 16BA: Label0155 1052 a := getAddress(",") Addr : 16BA: 00 : Drop Anchor Push Addr : 16BB: 38 2C : Constant 1 Bytes - 2C Addr : 16BD: 05 14 : Call Sub 20 Addr : 16BF: 79 : Variable Operation Local Offset - 6 Write 1053 b := specialExpr Addr : 16C0: 00 : Drop Anchor Push Addr : 16C1: 05 1F : Call Sub 31 Addr : 16C3: 7D : Variable Operation Local Offset - 7 Write 1054 if fsrw.writeEEPROM(a,@b,1) Addr : 16C4: 00 : Drop Anchor Push Addr : 16C5: 78 : Variable Operation Local Offset - 6 Read Addr : 16C6: 7F : Variable Operation Local Offset - 7 Address Addr : 16C7: 36 : Constant 2 $00000001 Addr : 16C8: 06 27 05 : Call Obj.Sub 39 5 Addr : 16CB: JZ Label0156 Addr : 16CB: 0A 04 : jz Address = 16D1 4 Addr : 16CD: PBASE Constant Address of Label0158 Addr : 16CD: 87 9B 5A : Memory Op Byte PBASE + ADDRESS Address = 1B5A 1055 abort string("EEPROM write") Addr : 16D0: 31 : Abort value Addr : 16D1: Label0156 Addr : 16D1: Label0157 1056 if fsrw.writeWait(a) Addr : 16D1: 00 : Drop Anchor Push Addr : 16D2: 78 : Variable Operation Local Offset - 6 Read Addr : 16D3: 06 27 07 : Call Obj.Sub 39 7 Addr : 16D6: JZ Label0159 Addr : 16D6: 0A 04 : jz Address = 16DC 4 Addr : 16D8: PBASE Constant Address of Label015B Addr : 16D8: 87 9B 67 : Memory Op Byte PBASE + ADDRESS Address = 1B67 1057 abort string("EEPROM timeout") Addr : 16DB: 31 : Abort value Addr : 16DC: Label0159 Addr : 16DC: Label015A Addr : 16DC: CaseDone Label0155 Addr : 16DC: 0C : Casedone Addr : 16DD: Label015C 1059 if fsrw.pputc(specialExpr) < 0 Addr : 16DD: 00 : Drop Anchor Push Addr : 16DE: 00 : Drop Anchor Push Addr : 16DF: 05 1F : Call Sub 31 Addr : 16E1: 06 27 1A : Call Obj.Sub 39 26 Addr : 16E4: 35 : Constant 1 $00000000 Addr : 16E5: F9 : Math Op < Addr : 16E6: JZ Label015D Addr : 16E6: 0A 04 : jz Address = 16EC 4 Addr : 16E8: PBASE Constant Address of Label015F Addr : 16E8: 87 9B 76 : Memory Op Byte PBASE + ADDRESS Address = 1B76 1060 abort string("SDCARD write error") Addr : 16EB: 31 : Abort value Addr : 16EC: Label015D Addr : 16EC: Label015E Addr : 16EC: CaseDone Label015C Addr : 16EC: 0C : Casedone Addr : 16ED: Label0160 1062 if spaces == quote Addr : 16ED: 00 : Drop Anchor Push Addr : 16EE: 05 06 : Call Sub 6 Addr : 16F0: 38 22 : Constant 1 Bytes - 22 Addr : 16F2: FC : Math Op == Addr : 16F3: JZ Label0161 Addr : 16F3: 0A 2B : jz Address = 1720 43 1063 scanFilename(@f0) Addr : 16F5: 01 : Drop Anchor Addr : 16F6: CF 28 : Memory Op Long DBASE + ADDRESS Address = 0028 Addr : 16F8: 05 20 : Call Sub 32 1064 if \fsrw.mount(spiDO,spiClk,spiDI,spiCS) < 0 Addr : 16FA: 02 : Drop Anchor Push Try Addr : 16FB: 35 : Constant 1 $00000000 Addr : 16FC: 36 : Constant 2 $00000001 Addr : 16FD: 37 00 : Constant Mask Y=0 00000002 Addr : 16FF: 37 21 : Constant Mask Y=33 Decrement 00000003 Addr : 1701: 06 27 13 : Call Obj.Sub 39 19 Addr : 1704: 35 : Constant 1 $00000000 Addr : 1705: F9 : Math Op < Addr : 1706: JZ Label0163 Addr : 1706: 0A 04 : jz Address = 170C 4 Addr : 1708: PBASE Constant Address of Label0165 Addr : 1708: 87 9B 89 : Memory Op Byte PBASE + ADDRESS Address = 1B89 1065 abort string("Can't mount SD card") Addr : 170B: 31 : Abort value Addr : 170C: Label0163 Addr : 170C: Label0164 1066 if \fsrw.popen(@f0,"r") Addr : 170C: 02 : Drop Anchor Push Try Addr : 170D: CF 28 : Memory Op Long DBASE + ADDRESS Address = 0028 Addr : 170F: 38 72 : Constant 1 Bytes - 72 Addr : 1711: 06 27 16 : Call Obj.Sub 39 22 Addr : 1714: JZ Label0166 Addr : 1714: 0A 04 : jz Address = 171A 4 Addr : 1716: PBASE Constant Address of Label0168 Addr : 1716: 87 9B 9D : Memory Op Byte PBASE + ADDRESS Address = 1B9D 1067 abort string("Can't open file") Addr : 1719: 31 : Abort value Addr : 171A: Label0166 Addr : 171A: Label0167 1068 fsrw.bootSDCard Addr : 171A: 01 : Drop Anchor Addr : 171B: 06 27 0A : Call Obj.Sub 39 10 Addr : 171E: JMP Label0162 Addr : 171E: 04 1A : Jmp 173A 26 Addr : 1720: Label0161 1070 a := getAddress(",") & !$7FFF Addr : 1720: 00 : Drop Anchor Push Addr : 1721: 38 2C : Constant 1 Bytes - 2C Addr : 1723: 05 14 : Call Sub 20 Addr : 1725: 37 2E : Constant Mask Y=46 Decrement 00007FFF Addr : 1727: E7 : Math Op ! Addr : 1728: E8 : Math Op & Addr : 1729: 79 : Variable Operation Local Offset - 6 Write 1071 ifnot fsrw.checkPresence(a) Addr : 172A: 00 : Drop Anchor Push Addr : 172B: 78 : Variable Operation Local Offset - 6 Read Addr : 172C: 06 27 06 : Call Obj.Sub 39 6 Addr : 172F: JNZ Label016A Addr : 172F: 0B 04 : jnz Address = 1735 4 Addr : 1731: PBASE Constant Address of Label016C Addr : 1731: 87 9B AD : Memory Op Byte PBASE + ADDRESS Address = 1BAD 1072 abort string("No EEPROM there") Addr : 1734: 31 : Abort value Addr : 1735: Label016A Addr : 1735: Label016B 1073 fsrw.bootEEPROM(a) Addr : 1735: 01 : Drop Anchor Addr : 1736: 78 : Variable Operation Local Offset - 6 Read Addr : 1737: 06 27 03 : Call Obj.Sub 39 3 Addr : 173A: Label0169 Addr : 173A: Label0162 Addr : 173A: PBASE Constant Address of Label016D Addr : 173A: 87 9B BD : Memory Op Byte PBASE + ADDRESS Address = 1BBD 1074 abort string("SPIN unsuccessful") Addr : 173D: 31 : Abort value Addr : 173E: CaseDone Label0160 Addr : 173E: 0C : Casedone Addr : 173F: Label016E 1077 if spaces == quote Addr : 173F: 00 : Drop Anchor Push Addr : 1740: 05 06 : Call Sub 6 Addr : 1742: 38 22 : Constant 1 Bytes - 22 Addr : 1744: FC : Math Op == Addr : 1745: JZ Label016F Addr : 1745: 0A 80 D8 : jz Address = 1820 216 1078 scanFileName(@f0) Addr : 1748: 01 : Drop Anchor Addr : 1749: CF 28 : Memory Op Long DBASE + ADDRESS Address = 0028 Addr : 174B: 05 20 : Call Sub 32 1079 if spaces <> "," Addr : 174D: 00 : Drop Anchor Push Addr : 174E: 05 06 : Call Sub 6 Addr : 1750: 38 2C : Constant 1 Bytes - 2C Addr : 1752: FB : Math Op <> Addr : 1753: JZ Label0171 Addr : 1753: 0A 04 : jz Address = 1759 4 1080 abort @syn Addr : 1755: 87 82 44 : Memory Op Byte PBASE + ADDRESS Address = 0244 Addr : 1758: 31 : Abort value Addr : 1759: Label0171 Addr : 1759: Label0172 1081 skipspaces Addr : 1759: 01 : Drop Anchor Addr : 175A: 05 07 : Call Sub 7 1082 b := getAddress(",") & !$7FFF Addr : 175C: 00 : Drop Anchor Push Addr : 175D: 38 2C : Constant 1 Bytes - 2C Addr : 175F: 05 14 : Call Sub 20 Addr : 1761: 37 2E : Constant Mask Y=46 Decrement 00007FFF Addr : 1763: E7 : Math Op ! Addr : 1764: E8 : Math Op & Addr : 1765: 7D : Variable Operation Local Offset - 7 Write 1083 ifnot fsrw.checkPresence(b) Addr : 1766: 00 : Drop Anchor Push Addr : 1767: 7C : Variable Operation Local Offset - 7 Read Addr : 1768: 06 27 06 : Call Obj.Sub 39 6 Addr : 176B: JNZ Label0173 Addr : 176B: 0B 04 : jnz Address = 1771 4 Addr : 176D: PBASE Constant Address of Label0175 Addr : 176D: 87 9B CF : Memory Op Byte PBASE + ADDRESS Address = 1BCF 1084 abort string("No EEPROM there") Addr : 1770: 31 : Abort value Addr : 1771: Label0173 Addr : 1771: Label0174 1085 if \fsrw.mount(spiDO,spiClk,spiDI,spiCS) < 0 Addr : 1771: 02 : Drop Anchor Push Try Addr : 1772: 35 : Constant 1 $00000000 Addr : 1773: 36 : Constant 2 $00000001 Addr : 1774: 37 00 : Constant Mask Y=0 00000002 Addr : 1776: 37 21 : Constant Mask Y=33 Decrement 00000003 Addr : 1778: 06 27 13 : Call Obj.Sub 39 19 Addr : 177B: 35 : Constant 1 $00000000 Addr : 177C: F9 : Math Op < Addr : 177D: JZ Label0176 Addr : 177D: 0A 04 : jz Address = 1783 4 Addr : 177F: PBASE Constant Address of Label0178 Addr : 177F: 87 9B DF : Memory Op Byte PBASE + ADDRESS Address = 1BDF 1086 abort string("Can't mount SD card") Addr : 1782: 31 : Abort value Addr : 1783: Label0176 Addr : 1783: Label0177 1087 if \fsrw.popen(@f0,"r") Addr : 1783: 02 : Drop Anchor Push Try Addr : 1784: CF 28 : Memory Op Long DBASE + ADDRESS Address = 0028 Addr : 1786: 38 72 : Constant 1 Bytes - 72 Addr : 1788: 06 27 16 : Call Obj.Sub 39 22 Addr : 178B: JZ Label0179 Addr : 178B: 0A 04 : jz Address = 1791 4 Addr : 178D: PBASE Constant Address of Label017B Addr : 178D: 87 9B F3 : Memory Op Byte PBASE + ADDRESS Address = 1BF3 1088 abort string("Can't open file") Addr : 1790: 31 : Abort value Addr : 1791: Label0179 Addr : 1791: Label017A 1089 if fsrw.pread(@f0,32) <> 32 Addr : 1791: 00 : Drop Anchor Push Addr : 1792: CF 28 : Memory Op Long DBASE + ADDRESS Address = 0028 Addr : 1794: 37 04 : Constant Mask Y=4 00000020 Addr : 1796: 06 27 17 : Call Obj.Sub 39 23 Addr : 1799: 37 04 : Constant Mask Y=4 00000020 Addr : 179B: FB : Math Op <> Addr : 179C: JZ Label017C Addr : 179C: 0A 04 : jz Address = 17A2 4 Addr : 179E: PBASE Constant Address of Label017E Addr : 179E: 87 9C 03 : Memory Op Byte PBASE + ADDRESS Address = 1C03 1090 abort string("Can't read program") Addr : 17A1: 31 : Abort value Addr : 17A2: Label017C Addr : 17A2: Label017D 1091 if fsrw.writeEEPROM(b,@f0,32) Addr : 17A2: 00 : Drop Anchor Push Addr : 17A3: 7C : Variable Operation Local Offset - 7 Read Addr : 17A4: CF 28 : Memory Op Long DBASE + ADDRESS Address = 0028 Addr : 17A6: 37 04 : Constant Mask Y=4 00000020 Addr : 17A8: 06 27 05 : Call Obj.Sub 39 5 Addr : 17AB: JZ Label017F Addr : 17AB: 0A 04 : jz Address = 17B1 4 Addr : 17AD: PBASE Constant Address of Label0181 Addr : 17AD: 87 9C 16 : Memory Op Byte PBASE + ADDRESS Address = 1C16 1092 abort string("Copy EEPROM write error") Addr : 17B0: 31 : Abort value Addr : 17B1: Label017F Addr : 17B1: Label0180 1093 if fsrw.writeWait(b) Addr : 17B1: 00 : Drop Anchor Push Addr : 17B2: 7C : Variable Operation Local Offset - 7 Read Addr : 17B3: 06 27 07 : Call Obj.Sub 39 7 Addr : 17B6: JZ Label0182 Addr : 17B6: 0A 04 : jz Address = 17BC 4 Addr : 17B8: PBASE Constant Address of Label0184 Addr : 17B8: 87 9C 2E : Memory Op Byte PBASE + ADDRESS Address = 1C2E 1094 abort string("Copy EEPROM wait error") Addr : 17BB: 31 : Abort value Addr : 17BC: Label0182 Addr : 17BC: Label0183 1095 a := word[@f0+fsrw#vbase] Addr : 17BC: CF 28 : Memory Op Long DBASE + ADDRESS Address = 0028 Addr : 17BE: 37 02 : Constant Mask Y=2 00000008 Addr : 17C0: EC : Math Op + Addr : 17C1: A0 : Memory Op Word POP Address READ Addr : 17C2: 79 : Variable Operation Local Offset - 6 Write 1096 repeat c from 32 to a - 1 step 32 Addr : 17C3: 37 04 : Constant Mask Y=4 00000020 Addr : 17C5: CD 20 : Memory Op Long DBASE + WRITE Address = 0020 Addr : 17C7: Label0185 1097 d := (a - c) <# 32 Addr : 17C7: 78 : Variable Operation Local Offset - 6 Read Addr : 17C8: CC 20 : Memory Op Long DBASE + READ Address = 0020 Addr : 17CA: ED : Math Op - Addr : 17CB: 37 04 : Constant Mask Y=4 00000020 Addr : 17CD: E5 : Math Op <| Addr : 17CE: CD 24 : Memory Op Long DBASE + WRITE Address = 0024 1098 if fsrw.pread(@f0,d) <> d Addr : 17D0: 00 : Drop Anchor Push Addr : 17D1: CF 28 : Memory Op Long DBASE + ADDRESS Address = 0028 Addr : 17D3: CC 24 : Memory Op Long DBASE + READ Address = 0024 Addr : 17D5: 06 27 17 : Call Obj.Sub 39 23 Addr : 17D8: CC 24 : Memory Op Long DBASE + READ Address = 0024 Addr : 17DA: FB : Math Op <> Addr : 17DB: JZ Label0188 Addr : 17DB: 0A 04 : jz Address = 17E1 4 Addr : 17DD: PBASE Constant Address of Label018A Addr : 17DD: 87 9C 45 : Memory Op Byte PBASE + ADDRESS Address = 1C45 1099 abort string("Can't read program") Addr : 17E0: 31 : Abort value Addr : 17E1: Label0188 Addr : 17E1: Label0189 1100 if fsrw.writeEEPROM(b+c,@f0,d) Addr : 17E1: 00 : Drop Anchor Push Addr : 17E2: 7C : Variable Operation Local Offset - 7 Read Addr : 17E3: CC 20 : Memory Op Long DBASE + READ Address = 0020 Addr : 17E5: EC : Math Op + Addr : 17E6: CF 28 : Memory Op Long DBASE + ADDRESS Address = 0028 Addr : 17E8: CC 24 : Memory Op Long DBASE + READ Address = 0024 Addr : 17EA: 06 27 05 : Call Obj.Sub 39 5 Addr : 17ED: JZ Label018B Addr : 17ED: 0A 04 : jz Address = 17F3 4 Addr : 17EF: PBASE Constant Address of Label018D Addr : 17EF: 87 9C 58 : Memory Op Byte PBASE + ADDRESS Address = 1C58 1101 abort string("Copy EEPROM write error") Addr : 17F2: 31 : Abort value Addr : 17F3: Label018B Addr : 17F3: Label018C 1102 if fsrw.writeWait(b+c) Addr : 17F3: 00 : Drop Anchor Push Addr : 17F4: 7C : Variable Operation Local Offset - 7 Read Addr : 17F5: CC 20 : Memory Op Long DBASE + READ Address = 0020 Addr : 17F7: EC : Math Op + Addr : 17F8: 06 27 07 : Call Obj.Sub 39 7 Addr : 17FB: JZ Label018E Addr : 17FB: 0A 04 : jz Address = 1801 4 Addr : 17FD: PBASE Constant Address of Label0190 Addr : 17FD: 87 9C 70 : Memory Op Byte PBASE + ADDRESS Address = 1C70 1103 abort string("Copy EEPROM wait error") Addr : 1800: 31 : Abort value Addr : 1801: Label018E Addr : 1801: Label018F Addr : 1801: Label0186 1096 repeat c from 32 to a - 1 step 32 Addr : 1801: 37 04 : Constant Mask Y=4 00000020 Addr : 1803: 37 04 : Constant Mask Y=4 00000020 Addr : 1805: 78 : Variable Operation Local Offset - 6 Read Addr : 1806: 36 : Constant 2 $00000001 Addr : 1807: ED : Math Op - Addr : 1808: Repeat c Step Label0185 Addr : 1808: CE 20 06 FF BA : Memory Op Long DBASE + ASSIGN Address = 0020 Repeat-Var loop (pop step) Address= 17C7 -70 Addr : 180D: Label0187 1104 if \fsrw.pclose < 0 Addr : 180D: 02 : Drop Anchor Push Try Addr : 180E: 06 27 15 : Call Obj.Sub 39 21 Addr : 1811: 35 : Constant 1 $00000000 Addr : 1812: F9 : Math Op < Addr : 1813: JZ Label0191 Addr : 1813: 0A 04 : jz Address = 1819 4 Addr : 1815: PBASE Constant Address of Label0193 Addr : 1815: 87 9C 87 : Memory Op Byte PBASE + ADDRESS Address = 1C87 1105 abort string("Error closing file") Addr : 1818: 31 : Abort value Addr : 1819: Label0191 Addr : 1819: Label0192 1106 \fsrw.unmount Addr : 1819: 03 : Drop Anchor Try Addr : 181A: 06 27 0D : Call Obj.Sub 39 13 Addr : 181D: JMP Label0170 Addr : 181D: 04 81 24 : Jmp 1944 292 Addr : 1820: Label016F 1108 a := getAddress(",") & !$7FFF Addr : 1820: 00 : Drop Anchor Push Addr : 1821: 38 2C : Constant 1 Bytes - 2C Addr : 1823: 05 14 : Call Sub 20 Addr : 1825: 37 2E : Constant Mask Y=46 Decrement 00007FFF Addr : 1827: E7 : Math Op ! Addr : 1828: E8 : Math Op & Addr : 1829: 79 : Variable Operation Local Offset - 6 Write 1109 ifnot fsrw.checkPresence(a) Addr : 182A: 00 : Drop Anchor Push Addr : 182B: 78 : Variable Operation Local Offset - 6 Read Addr : 182C: 06 27 06 : Call Obj.Sub 39 6 Addr : 182F: JNZ Label0195 Addr : 182F: 0B 04 : jnz Address = 1835 4 Addr : 1831: PBASE Constant Address of Label0197 Addr : 1831: 87 9C 9A : Memory Op Byte PBASE + ADDRESS Address = 1C9A 1110 abort string("No EEPROM there") Addr : 1834: 31 : Abort value Addr : 1835: Label0195 Addr : 1835: Label0196 1111 if spaces <> "," Addr : 1835: 00 : Drop Anchor Push Addr : 1836: 05 06 : Call Sub 6 Addr : 1838: 38 2C : Constant 1 Bytes - 2C Addr : 183A: FB : Math Op <> Addr : 183B: JZ Label0198 Addr : 183B: 0A 04 : jz Address = 1841 4 1112 abort @syn Addr : 183D: 87 82 44 : Memory Op Byte PBASE + ADDRESS Address = 0244 Addr : 1840: 31 : Abort value Addr : 1841: Label0198 Addr : 1841: Label0199 1113 skipspaces Addr : 1841: 01 : Drop Anchor Addr : 1842: 05 07 : Call Sub 7 1114 if spaces == quote Addr : 1844: 00 : Drop Anchor Push Addr : 1845: 05 06 : Call Sub 6 Addr : 1847: 38 22 : Constant 1 Bytes - 22 Addr : 1849: FC : Math Op == Addr : 184A: JZ Label019A Addr : 184A: 0A 80 84 : jz Address = 18D1 132 1115 scanFileName(@f0) Addr : 184D: 01 : Drop Anchor Addr : 184E: CF 28 : Memory Op Long DBASE + ADDRESS Address = 0028 Addr : 1850: 05 20 : Call Sub 32 1116 if \fsrw.mount(spiDO,spiClk,spiDI,spiCS) < 0 Addr : 1852: 02 : Drop Anchor Push Try Addr : 1853: 35 : Constant 1 $00000000 Addr : 1854: 36 : Constant 2 $00000001 Addr : 1855: 37 00 : Constant Mask Y=0 00000002 Addr : 1857: 37 21 : Constant Mask Y=33 Decrement 00000003 Addr : 1859: 06 27 13 : Call Obj.Sub 39 19 Addr : 185C: 35 : Constant 1 $00000000 Addr : 185D: F9 : Math Op < Addr : 185E: JZ Label019C Addr : 185E: 0A 04 : jz Address = 1864 4 Addr : 1860: PBASE Constant Address of Label019E Addr : 1860: 87 9C AA : Memory Op Byte PBASE + ADDRESS Address = 1CAA 1117 abort string("Can't mount SD card") Addr : 1863: 31 : Abort value Addr : 1864: Label019C Addr : 1864: Label019D 1118 if \fsrw.popen(@f0,"w") Addr : 1864: 02 : Drop Anchor Push Try Addr : 1865: CF 28 : Memory Op Long DBASE + ADDRESS Address = 0028 Addr : 1867: 38 77 : Constant 1 Bytes - 77 Addr : 1869: 06 27 16 : Call Obj.Sub 39 22 Addr : 186C: JZ Label019F Addr : 186C: 0A 04 : jz Address = 1872 4 Addr : 186E: PBASE Constant Address of Label01A1 Addr : 186E: 87 9C BE : Memory Op Byte PBASE + ADDRESS Address = 1CBE 1119 abort string("Can't create file") Addr : 1871: 31 : Abort value Addr : 1872: Label019F Addr : 1872: Label01A0 1120 b := 0 Addr : 1872: 35 : Constant 1 $00000000 Addr : 1873: 7D : Variable Operation Local Offset - 7 Write 1121 if fsrw.readEEPROM(a+fsrw#vbase,@b,2) Addr : 1874: 00 : Drop Anchor Push Addr : 1875: 78 : Variable Operation Local Offset - 6 Read Addr : 1876: 37 02 : Constant Mask Y=2 00000008 Addr : 1878: EC : Math Op + Addr : 1879: 7F : Variable Operation Local Offset - 7 Address Addr : 187A: 37 00 : Constant Mask Y=0 00000002 Addr : 187C: 06 27 04 : Call Obj.Sub 39 4 Addr : 187F: JZ Label01A2 Addr : 187F: 0A 04 : jz Address = 1885 4 Addr : 1881: PBASE Constant Address of Label01A4 Addr : 1881: 87 9C D0 : Memory Op Byte PBASE + ADDRESS Address = 1CD0 1122 abort string("Copy EEPROM read error") Addr : 1884: 31 : Abort value Addr : 1885: Label01A2 Addr : 1885: Label01A3 1123 repeat c from 0 to b - 1 step 32 Addr : 1885: 35 : Constant 1 $00000000 Addr : 1886: CD 20 : Memory Op Long DBASE + WRITE Address = 0020 Addr : 1888: Label01A5 1124 d := (b - c) <# 32 Addr : 1888: 7C : Variable Operation Local Offset - 7 Read Addr : 1889: CC 20 : Memory Op Long DBASE + READ Address = 0020 Addr : 188B: ED : Math Op - Addr : 188C: 37 04 : Constant Mask Y=4 00000020 Addr : 188E: E5 : Math Op <| Addr : 188F: CD 24 : Memory Op Long DBASE + WRITE Address = 0024 1125 if fsrw.readEEPROM(a+c,@f0,d) Addr : 1891: 00 : Drop Anchor Push Addr : 1892: 78 : Variable Operation Local Offset - 6 Read Addr : 1893: CC 20 : Memory Op Long DBASE + READ Address = 0020 Addr : 1895: EC : Math Op + Addr : 1896: CF 28 : Memory Op Long DBASE + ADDRESS Address = 0028 Addr : 1898: CC 24 : Memory Op Long DBASE + READ Address = 0024 Addr : 189A: 06 27 04 : Call Obj.Sub 39 4 Addr : 189D: JZ Label01A8 Addr : 189D: 0A 04 : jz Address = 18A3 4 Addr : 189F: PBASE Constant Address of Label01AA Addr : 189F: 87 9C E7 : Memory Op Byte PBASE + ADDRESS Address = 1CE7 1126 abort string("Copy EEPROM read error") Addr : 18A2: 31 : Abort value Addr : 18A3: Label01A8 Addr : 18A3: Label01A9 1127 if fsrw.pwrite(@f0,d) <> d Addr : 18A3: 00 : Drop Anchor Push Addr : 18A4: CF 28 : Memory Op Long DBASE + ADDRESS Address = 0028 Addr : 18A6: CC 24 : Memory Op Long DBASE + READ Address = 0024 Addr : 18A8: 06 27 19 : Call Obj.Sub 39 25 Addr : 18AB: CC 24 : Memory Op Long DBASE + READ Address = 0024 Addr : 18AD: FB : Math Op <> Addr : 18AE: JZ Label01AB Addr : 18AE: 0A 04 : jz Address = 18B4 4 Addr : 18B0: PBASE Constant Address of Label01AD Addr : 18B0: 87 9C FE : Memory Op Byte PBASE + ADDRESS Address = 1CFE 1128 abort string("Can't save program") Addr : 18B3: 31 : Abort value Addr : 18B4: Label01AB Addr : 18B4: Label01AC Addr : 18B4: Label01A6 1123 repeat c from 0 to b - 1 step 32 Addr : 18B4: 37 04 : Constant Mask Y=4 00000020 Addr : 18B6: 35 : Constant 1 $00000000 Addr : 18B7: 7C : Variable Operation Local Offset - 7 Read Addr : 18B8: 36 : Constant 2 $00000001 Addr : 18B9: ED : Math Op - Addr : 18BA: Repeat c Step Label01A5 Addr : 18BA: CE 20 06 4A : Memory Op Long DBASE + ASSIGN Address = 0020 Repeat-Var loop (pop step) Address= 1888 -54 Addr : 18BE: Label01A7 1129 if \fsrw.pclose < 0 Addr : 18BE: 02 : Drop Anchor Push Try Addr : 18BF: 06 27 15 : Call Obj.Sub 39 21 Addr : 18C2: 35 : Constant 1 $00000000 Addr : 18C3: F9 : Math Op < Addr : 18C4: JZ Label01AE Addr : 18C4: 0A 04 : jz Address = 18CA 4 Addr : 18C6: PBASE Constant Address of Label01B0 Addr : 18C6: 87 9D 11 : Memory Op Byte PBASE + ADDRESS Address = 1D11 1130 abort string("Error closing file") Addr : 18C9: 31 : Abort value Addr : 18CA: Label01AE Addr : 18CA: Label01AF 1131 \fsrw.unmount Addr : 18CA: 03 : Drop Anchor Try Addr : 18CB: 06 27 0D : Call Obj.Sub 39 13 Addr : 18CE: JMP Label019B Addr : 18CE: 04 80 73 : Jmp 1944 115 Addr : 18D1: Label019A 1133 if a == (b := getAddress(",") & !$7FFF) Addr : 18D1: 78 : Variable Operation Local Offset - 6 Read Addr : 18D2: 00 : Drop Anchor Push Addr : 18D3: 38 2C : Constant 1 Bytes - 2C Addr : 18D5: 05 14 : Call Sub 20 Addr : 18D7: 37 2E : Constant Mask Y=46 Decrement 00007FFF Addr : 18D9: E7 : Math Op ! Addr : 18DA: E8 : Math Op & Addr : 18DB: 7E 80 : Variable Operation Local Offset - 7 Assign Write Push Addr : 18DD: FC : Math Op == Addr : 18DE: JZ Label01B2 Addr : 18DE: 0A 04 : jz Address = 18E4 4 Addr : 18E0: PBASE Constant Address of Label01B4 Addr : 18E0: 87 9D 24 : Memory Op Byte PBASE + ADDRESS Address = 1D24 1134 abort string("EEPROM areas same") Addr : 18E3: 31 : Abort value Addr : 18E4: Label01B2 Addr : 18E4: Label01B3 1135 ifnot fsrw.checkPresence(b) Addr : 18E4: 00 : Drop Anchor Push Addr : 18E5: 7C : Variable Operation Local Offset - 7 Read Addr : 18E6: 06 27 06 : Call Obj.Sub 39 6 Addr : 18E9: JNZ Label01B5 Addr : 18E9: 0B 04 : jnz Address = 18EF 4 Addr : 18EB: PBASE Constant Address of Label01B7 Addr : 18EB: 87 9D 36 : Memory Op Byte PBASE + ADDRESS Address = 1D36 1136 abort string("No EEPROM there") Addr : 18EE: 31 : Abort value Addr : 18EF: Label01B5 Addr : 18EF: Label01B6 1137 d := 0 Addr : 18EF: 35 : Constant 1 $00000000 Addr : 18F0: CD 24 : Memory Op Long DBASE + WRITE Address = 0024 1138 if fsrw.readEEPROM(a+fsrw#vbase,@d,2) Addr : 18F2: 00 : Drop Anchor Push Addr : 18F3: 78 : Variable Operation Local Offset - 6 Read Addr : 18F4: 37 02 : Constant Mask Y=2 00000008 Addr : 18F6: EC : Math Op + Addr : 18F7: CF 24 : Memory Op Long DBASE + ADDRESS Address = 0024 Addr : 18F9: 37 00 : Constant Mask Y=0 00000002 Addr : 18FB: 06 27 04 : Call Obj.Sub 39 4 Addr : 18FE: JZ Label01B8 Addr : 18FE: 0A 04 : jz Address = 1904 4 Addr : 1900: PBASE Constant Address of Label01BA Addr : 1900: 87 9D 46 : Memory Op Byte PBASE + ADDRESS Address = 1D46 1139 abort string("Copy EEPROM read error") Addr : 1903: 31 : Abort value Addr : 1904: Label01B8 Addr : 1904: Label01B9 1140 repeat c from 0 to d - 1 step 32 Addr : 1904: 35 : Constant 1 $00000000 Addr : 1905: CD 20 : Memory Op Long DBASE + WRITE Address = 0020 Addr : 1907: Label01BB 1141 if fsrw.readEEPROM(a+c,@f0,32) Addr : 1907: 00 : Drop Anchor Push Addr : 1908: 78 : Variable Operation Local Offset - 6 Read Addr : 1909: CC 20 : Memory Op Long DBASE + READ Address = 0020 Addr : 190B: EC : Math Op + Addr : 190C: CF 28 : Memory Op Long DBASE + ADDRESS Address = 0028 Addr : 190E: 37 04 : Constant Mask Y=4 00000020 Addr : 1910: 06 27 04 : Call Obj.Sub 39 4 Addr : 1913: JZ Label01BE Addr : 1913: 0A 04 : jz Address = 1919 4 Addr : 1915: PBASE Constant Address of Label01C0 Addr : 1915: 87 9D 5D : Memory Op Byte PBASE + ADDRESS Address = 1D5D 1142 abort string("Copy EEPROM read error") Addr : 1918: 31 : Abort value Addr : 1919: Label01BE Addr : 1919: Label01BF 1143 if fsrw.writeEEPROM(b+c,@f0,32) Addr : 1919: 00 : Drop Anchor Push Addr : 191A: 7C : Variable Operation Local Offset - 7 Read Addr : 191B: CC 20 : Memory Op Long DBASE + READ Address = 0020 Addr : 191D: EC : Math Op + Addr : 191E: CF 28 : Memory Op Long DBASE + ADDRESS Address = 0028 Addr : 1920: 37 04 : Constant Mask Y=4 00000020 Addr : 1922: 06 27 05 : Call Obj.Sub 39 5 Addr : 1925: JZ Label01C1 Addr : 1925: 0A 04 : jz Address = 192B 4 Addr : 1927: PBASE Constant Address of Label01C3 Addr : 1927: 87 9D 74 : Memory Op Byte PBASE + ADDRESS Address = 1D74 1144 abort string("Copy EEPROM write error") Addr : 192A: 31 : Abort value Addr : 192B: Label01C1 Addr : 192B: Label01C2 1145 if fsrw.writeWait(b+c) Addr : 192B: 00 : Drop Anchor Push Addr : 192C: 7C : Variable Operation Local Offset - 7 Read Addr : 192D: CC 20 : Memory Op Long DBASE + READ Address = 0020 Addr : 192F: EC : Math Op + Addr : 1930: 06 27 07 : Call Obj.Sub 39 7 Addr : 1933: JZ Label01C4 Addr : 1933: 0A 04 : jz Address = 1939 4 Addr : 1935: PBASE Constant Address of Label01C6 Addr : 1935: 87 9D 8C : Memory Op Byte PBASE + ADDRESS Address = 1D8C 1146 abort string("Copy EEPROM wait error") Addr : 1938: 31 : Abort value Addr : 1939: Label01C4 Addr : 1939: Label01C5 Addr : 1939: Label01BC 1140 repeat c from 0 to d - 1 step 32 Addr : 1939: 37 04 : Constant Mask Y=4 00000020 Addr : 193B: 35 : Constant 1 $00000000 Addr : 193C: CC 24 : Memory Op Long DBASE + READ Address = 0024 Addr : 193E: 36 : Constant 2 $00000001 Addr : 193F: ED : Math Op - Addr : 1940: Repeat c Step Label01BB Addr : 1940: CE 20 06 43 : Memory Op Long DBASE + ASSIGN Address = 0020 Repeat-Var loop (pop step) Address= 1907 -61 Addr : 1944: Label01BD Addr : 1944: Label01B1 Addr : 1944: Label019B Addr : 1944: Label0194 Addr : 1944: Label0170 Addr : 1944: CaseDone Label016E Addr : 1944: 0C : Casedone Addr : 1945: Label01C7 1148 if spaces == "[" Addr : 1945: 00 : Drop Anchor Push Addr : 1946: 05 06 : Call Sub 6 Addr : 1948: 38 5B : Constant 1 Bytes - 5B Addr : 194A: FC : Math Op == Addr : 194B: JZ Label01C8 Addr : 194B: 0A 17 : jz Address = 1964 23 1149 c := getAddress(",") Addr : 194D: 00 : Drop Anchor Push Addr : 194E: 38 2C : Constant 1 Bytes - 2C Addr : 1950: 05 14 : Call Sub 20 Addr : 1952: CD 20 : Memory Op Long DBASE + WRITE Address = 0020 1150 a := c & $F80000 Addr : 1954: CC 20 : Memory Op Long DBASE + READ Address = 0020 Addr : 1956: 3A F8 00 00 : Constant 3 Bytes - F8 00 00 Addr : 195A: E8 : Math Op & Addr : 195B: 79 : Variable Operation Local Offset - 6 Write 1151 b := c & $07FFFF Addr : 195C: CC 20 : Memory Op Long DBASE + READ Address = 0020 Addr : 195E: 37 32 : Constant Mask Y=50 Decrement 0007FFFF Addr : 1960: E8 : Math Op & Addr : 1961: 7D : Variable Operation Local Offset - 7 Write Addr : 1962: JMP Label01C9 Addr : 1962: 04 06 : Jmp 196A 6 Addr : 1964: Label01C8 1153 a := -1 Addr : 1964: 34 : Constant 0 $FFFFFFFF Addr : 1965: 79 : Variable Operation Local Offset - 6 Write 1154 b := expr Addr : 1966: 00 : Drop Anchor Push Addr : 1967: 05 1E : Call Sub 30 Addr : 1969: 7D : Variable Operation Local Offset - 7 Write Addr : 196A: Label01CA Addr : 196A: Label01C9 1155 if spaces <> "," Addr : 196A: 00 : Drop Anchor Push Addr : 196B: 05 06 : Call Sub 6 Addr : 196D: 38 2C : Constant 1 Bytes - 2C Addr : 196F: FB : Math Op <> Addr : 1970: JZ Label01CB Addr : 1970: 0A 04 : jz Address = 1976 4 1156 abort @syn Addr : 1972: 87 82 44 : Memory Op Byte PBASE + ADDRESS Address = 0244 Addr : 1975: 31 : Abort value Addr : 1976: Label01CB Addr : 1976: Label01CC 1157 skipspaces Addr : 1976: 01 : Drop Anchor Addr : 1977: 05 07 : Call Sub 7 1158 dumpMemory(a,b,expr) Addr : 1979: 01 : Drop Anchor Addr : 197A: 78 : Variable Operation Local Offset - 6 Read Addr : 197B: 7C : Variable Operation Local Offset - 7 Read Addr : 197C: 00 : Drop Anchor Push Addr : 197D: 05 1E : Call Sub 30 Addr : 197F: 05 02 : Call Sub 2 Addr : 1981: CaseDone Label01C7 Addr : 1981: 0C : Casedone Addr : 1982: Label000B Addr : 1982: JMP Label0009 Addr : 1982: 04 04 : Jmp 1988 4 Addr : 1984: Label000A 1160 abort(@syn) Addr : 1984: 87 82 44 : Memory Op Byte PBASE + ADDRESS Address = 0244 Addr : 1987: 31 : Abort value Addr : 1988: Label01CD Addr : 1988: Label0009 1161 if spaces == ":" Addr : 1988: 00 : Drop Anchor Push Addr : 1989: 05 06 : Call Sub 6 Addr : 198B: 38 3A : Constant 1 Bytes - 3A Addr : 198D: FC : Math Op == Addr : 198E: JZ Label01CE Addr : 198E: 0A 04 : jz Address = 1994 4 1162 restart := 1 Addr : 1990: 36 : Constant 2 $00000001 Addr : 1991: 6D : Variable Operation Local Offset - 3 Write 1163 tp++ Addr : 1992: 46 2E : Variable Operation Global Offset - 1 Assign VAR++ post inc Long Addr : 1994: Label01CE Addr : 1994: Label01CF Addr : 1994: Label0004 Addr : 1994: JMP Label0003 Addr : 1994: 04 F2 BA : Jmp 0C51 -3398 Addr : 1997: Label0005 Addr : 1997: 32 : Return Addr : 1998: Label000F Addr : 1998: Data : 4D 49 53 53 49 4E 47 20 MISSING Addr : 19A0: Data : 54 48 45 4E 00 THEN. Addr : 19A5: Label0052 Addr : 19A5: Data : 49 4E 56 41 4C 49 44 20 INVALID Addr : 19AD: Data : 52 45 54 55 52 4E 00 RETURN. Addr : 19B4: Label006C Addr : 19B4: Data : 49 6E 76 61 6C 69 64 20 Invalid Addr : 19BC: Data : 6F 70 65 6E 20 66 69 6C open fil Addr : 19C4: Data : 65 20 6D 6F 64 65 00 e mode. Addr : 19CB: Label006F Addr : 19CB: Data : 43 61 6E 27 74 20 6D 6F Can't mo Addr : 19D3: Data : 75 6E 74 20 53 44 20 63 unt SD c Addr : 19DB: Data : 61 72 64 00 ard. Addr : 19DF: Label0072 Addr : 19DF: Data : 43 61 6E 27 74 20 6F 70 Can't op Addr : 19E7: Data : 65 6E 20 66 69 6C 65 00 en file. Addr : 19EF: Data : Addr : 19EF: Label0080 Addr : 19EF: Data : 43 61 6E 27 74 20 72 65 Can't re Addr : 19F7: Data : 61 64 20 66 69 6C 65 00 ad file. Addr : 19FF: Data : Addr : 19FF: Label00AC Addr : 19FF: Data : 45 72 72 6F 72 20 63 6C Error cl Addr : 1A07: Data : 6F 73 69 6E 67 20 66 69 osing fi Addr : 1A0F: Data : 6C 65 00 le. Addr : 1A12: Label00B2 Addr : 1A12: Data : 43 61 6E 27 74 20 6D 6F Can't mo Addr : 1A1A: Data : 75 6E 74 20 53 44 20 63 unt SD c Addr : 1A22: Data : 61 72 64 00 ard. Addr : 1A26: Label00B5 Addr : 1A26: Data : 43 61 6E 27 74 20 64 65 Can't de Addr : 1A2E: Data : 6C 65 74 65 20 66 69 6C lete fil Addr : 1A36: Data : 65 00 e. Addr : 1A38: Label00B8 Addr : 1A38: Data : 45 72 72 6F 72 20 64 65 Error de Addr : 1A40: Data : 6C 65 74 69 6E 67 20 66 leting f Addr : 1A48: Data : 69 6C 65 00 ile. Addr : 1A4C: Label00C0 Addr : 1A4C: Data : 52 65 6E 61 6D 65 20 6E Rename n Addr : 1A54: Data : 6F 74 20 69 6D 70 6C 65 ot imple Addr : 1A5C: Data : 6D 65 6E 74 65 64 00 mented. Addr : 1A63: Label00C4 Addr : 1A63: Data : 43 61 6E 27 74 20 6D 6F Can't mo Addr : 1A6B: Data : 75 6E 74 20 53 44 20 63 unt SD c Addr : 1A73: Data : 61 72 64 00 ard. Addr : 1A77: Label00D4 Addr : 1A77: Data : 43 61 6E 27 74 20 6D 6F Can't mo Addr : 1A7F: Data : 75 6E 74 20 53 44 20 63 unt SD c Addr : 1A87: Data : 61 72 64 00 ard. Addr : 1A8B: Label00D7 Addr : 1A8B: Data : 43 61 6E 27 74 20 63 72 Can't cr Addr : 1A93: Data : 65 61 74 65 20 66 69 6C eate fil Addr : 1A9B: Data : 65 00 e. Addr : 1A9D: Label00DA Addr : 1A9D: Data : 45 72 72 6F 72 20 63 6C Error cl Addr : 1AA5: Data : 6F 73 69 6E 67 20 66 69 osing fi Addr : 1AAD: Data : 6C 65 00 le. Addr : 1AB0: Label00E5 Addr : 1AB0: Data : 53 61 76 65 20 45 45 50 Save EEP Addr : 1AB8: Data : 52 4F 4D 20 77 72 69 74 ROM writ Addr : 1AC0: Data : 65 00 e. Addr : 1AC2: Label00E8 Addr : 1AC2: Data : 53 61 76 65 20 45 45 50 Save EEP Addr : 1ACA: Data : 52 4F 4D 20 74 69 6D 65 ROM time Addr : 1AD2: Data : 6F 75 74 00 out. Addr : 1AD6: Label00EE Addr : 1AD6: Data : 53 61 76 65 20 45 45 50 Save EEP Addr : 1ADE: Data : 52 4F 4D 20 77 72 69 74 ROM writ Addr : 1AE6: Data : 65 00 e. Addr : 1AE8: Label00F1 Addr : 1AE8: Data : 53 61 76 65 20 45 45 50 Save EEP Addr : 1AF0: Data : 52 4F 4D 20 74 69 6D 65 ROM time Addr : 1AF8: Data : 6F 75 74 00 out. Addr : 1AFC: Label00F7 Addr : 1AFC: Data : 43 61 6E 27 74 20 6D 6F Can't mo Addr : 1B04: Data : 75 6E 74 20 53 44 20 63 unt SD c Addr : 1B0C: Data : 61 72 64 00 ard. Addr : 1B10: Label00FA Addr : 1B10: Data : 43 61 6E 27 74 20 6F 70 Can't op Addr : 1B18: Data : 65 6E 20 66 69 6C 65 00 en file. Addr : 1B20: Data : Addr : 1B20: Label00FD Addr : 1B20: Data : 45 72 72 6F 72 20 63 6C Error cl Addr : 1B28: Data : 6F 73 69 6E 67 20 66 69 osing fi Addr : 1B30: Data : 6C 65 00 le. Addr : 1B33: Label0108 Addr : 1B33: Data : 4C 6F 61 64 20 45 45 50 Load EEP Addr : 1B3B: Data : 52 4F 4D 20 72 65 61 64 ROM read Addr : 1B43: Data : 00 . Addr : 1B44: Label010B Addr : 1B44: Data : 49 6E 76 61 6C 69 64 20 Invalid Addr : 1B4C: Data : 70 72 6F 67 72 61 6D 20 program Addr : 1B54: Data : 73 69 7A 65 00 size. Addr : 1B59: Label0111 Addr : 1B59: Data : 4C 6F 61 64 20 45 45 50 Load EEP Addr : 1B61: Data : 52 4F 4D 20 72 65 61 64 ROM read Addr : 1B69: Data : 00 . Addr : 1B6A: Label0158 Addr : 1B6A: Data : 45 45 50 52 4F 4D 20 77 EEPROM w Addr : 1B72: Data : 72 69 74 65 00 rite. Addr : 1B77: Label015B Addr : 1B77: Data : 45 45 50 52 4F 4D 20 74 EEPROM t Addr : 1B7F: Data : 69 6D 65 6F 75 74 00 imeout. Addr : 1B86: Label015F Addr : 1B86: Data : 53 44 43 41 52 44 20 77 SDCARD w Addr : 1B8E: Data : 72 69 74 65 20 65 72 72 rite err Addr : 1B96: Data : 6F 72 00 or. Addr : 1B99: Label0165 Addr : 1B99: Data : 43 61 6E 27 74 20 6D 6F Can't mo Addr : 1BA1: Data : 75 6E 74 20 53 44 20 63 unt SD c Addr : 1BA9: Data : 61 72 64 00 ard. Addr : 1BAD: Label0168 Addr : 1BAD: Data : 43 61 6E 27 74 20 6F 70 Can't op Addr : 1BB5: Data : 65 6E 20 66 69 6C 65 00 en file. Addr : 1BBD: Data : Addr : 1BBD: Label016C Addr : 1BBD: Data : 4E 6F 20 45 45 50 52 4F No EEPRO Addr : 1BC5: Data : 4D 20 74 68 65 72 65 00 M there. Addr : 1BCD: Data : Addr : 1BCD: Label016D Addr : 1BCD: Data : 53 50 49 4E 20 75 6E 73 SPIN uns Addr : 1BD5: Data : 75 63 63 65 73 73 66 75 uccessfu Addr : 1BDD: Data : 6C 00 l. Addr : 1BDF: Label0175 Addr : 1BDF: Data : 4E 6F 20 45 45 50 52 4F No EEPRO Addr : 1BE7: Data : 4D 20 74 68 65 72 65 00 M there. Addr : 1BEF: Data : Addr : 1BEF: Label0178 Addr : 1BEF: Data : 43 61 6E 27 74 20 6D 6F Can't mo Addr : 1BF7: Data : 75 6E 74 20 53 44 20 63 unt SD c Addr : 1BFF: Data : 61 72 64 00 ard. Addr : 1C03: Label017B Addr : 1C03: Data : 43 61 6E 27 74 20 6F 70 Can't op Addr : 1C0B: Data : 65 6E 20 66 69 6C 65 00 en file. Addr : 1C13: Data : Addr : 1C13: Label017E Addr : 1C13: Data : 43 61 6E 27 74 20 72 65 Can't re Addr : 1C1B: Data : 61 64 20 70 72 6F 67 72 ad progr Addr : 1C23: Data : 61 6D 00 am. Addr : 1C26: Label0181 Addr : 1C26: Data : 43 6F 70 79 20 45 45 50 Copy EEP Addr : 1C2E: Data : 52 4F 4D 20 77 72 69 74 ROM writ Addr : 1C36: Data : 65 20 65 72 72 6F 72 00 e error. Addr : 1C3E: Data : Addr : 1C3E: Label0184 Addr : 1C3E: Data : 43 6F 70 79 20 45 45 50 Copy EEP Addr : 1C46: Data : 52 4F 4D 20 77 61 69 74 ROM wait Addr : 1C4E: Data : 20 65 72 72 6F 72 00 error. Addr : 1C55: Label018A Addr : 1C55: Data : 43 61 6E 27 74 20 72 65 Can't re Addr : 1C5D: Data : 61 64 20 70 72 6F 67 72 ad progr Addr : 1C65: Data : 61 6D 00 am. Addr : 1C68: Label018D Addr : 1C68: Data : 43 6F 70 79 20 45 45 50 Copy EEP Addr : 1C70: Data : 52 4F 4D 20 77 72 69 74 ROM writ Addr : 1C78: Data : 65 20 65 72 72 6F 72 00 e error. Addr : 1C80: Data : Addr : 1C80: Label0190 Addr : 1C80: Data : 43 6F 70 79 20 45 45 50 Copy EEP Addr : 1C88: Data : 52 4F 4D 20 77 61 69 74 ROM wait Addr : 1C90: Data : 20 65 72 72 6F 72 00 error. Addr : 1C97: Label0193 Addr : 1C97: Data : 45 72 72 6F 72 20 63 6C Error cl Addr : 1C9F: Data : 6F 73 69 6E 67 20 66 69 osing fi Addr : 1CA7: Data : 6C 65 00 le. Addr : 1CAA: Label0197 Addr : 1CAA: Data : 4E 6F 20 45 45 50 52 4F No EEPRO Addr : 1CB2: Data : 4D 20 74 68 65 72 65 00 M there. Addr : 1CBA: Data : Addr : 1CBA: Label019E Addr : 1CBA: Data : 43 61 6E 27 74 20 6D 6F Can't mo Addr : 1CC2: Data : 75 6E 74 20 53 44 20 63 unt SD c Addr : 1CCA: Data : 61 72 64 00 ard. Addr : 1CCE: Label01A1 Addr : 1CCE: Data : 43 61 6E 27 74 20 63 72 Can't cr Addr : 1CD6: Data : 65 61 74 65 20 66 69 6C eate fil Addr : 1CDE: Data : 65 00 e. Addr : 1CE0: Label01A4 Addr : 1CE0: Data : 43 6F 70 79 20 45 45 50 Copy EEP Addr : 1CE8: Data : 52 4F 4D 20 72 65 61 64 ROM read Addr : 1CF0: Data : 20 65 72 72 6F 72 00 error. Addr : 1CF7: Label01AA Addr : 1CF7: Data : 43 6F 70 79 20 45 45 50 Copy EEP Addr : 1CFF: Data : 52 4F 4D 20 72 65 61 64 ROM read Addr : 1D07: Data : 20 65 72 72 6F 72 00 error. Addr : 1D0E: Label01AD Addr : 1D0E: Data : 43 61 6E 27 74 20 73 61 Can't sa Addr : 1D16: Data : 76 65 20 70 72 6F 67 72 ve progr Addr : 1D1E: Data : 61 6D 00 am. Addr : 1D21: Label01B0 Addr : 1D21: Data : 45 72 72 6F 72 20 63 6C Error cl Addr : 1D29: Data : 6F 73 69 6E 67 20 66 69 osing fi Addr : 1D31: Data : 6C 65 00 le. Addr : 1D34: Label01B4 Addr : 1D34: Data : 45 45 50 52 4F 4D 20 61 EEPROM a Addr : 1D3C: Data : 72 65 61 73 20 73 61 6D reas sam Addr : 1D44: Data : 65 00 e. Addr : 1D46: Label01B7 Addr : 1D46: Data : 4E 6F 20 45 45 50 52 4F No EEPRO Addr : 1D4E: Data : 4D 20 74 68 65 72 65 00 M there. Addr : 1D56: Data : Addr : 1D56: Label01BA Addr : 1D56: Data : 43 6F 70 79 20 45 45 50 Copy EEP Addr : 1D5E: Data : 52 4F 4D 20 72 65 61 64 ROM read Addr : 1D66: Data : 20 65 72 72 6F 72 00 error. Addr : 1D6D: Label01C0 Addr : 1D6D: Data : 43 6F 70 79 20 45 45 50 Copy EEP Addr : 1D75: Data : 52 4F 4D 20 72 65 61 64 ROM read Addr : 1D7D: Data : 20 65 72 72 6F 72 00 error. Addr : 1D84: Label01C3 Addr : 1D84: Data : 43 6F 70 79 20 45 45 50 Copy EEP Addr : 1D8C: Data : 52 4F 4D 20 77 72 69 74 ROM writ Addr : 1D94: Data : 65 20 65 72 72 6F 72 00 e error. Addr : 1D9C: Data : Addr : 1D9C: Label01C6 Addr : 1D9C: Data : 43 6F 70 79 20 45 45 50 Copy EEP Addr : 1DA4: Data : 52 4F 4D 20 77 61 69 74 ROM wait Addr : 1DAC: Data : 20 65 72 72 6F 72 00 error. |===========================================================================| Spin Block doline with 1 Parameters and 1 Extra Stack Longs. Method 34 pri doline(s) | c ' Execute the string in s or wait for input |===========================================================================| 1166 curlineno := -1 Addr : 1DB3: 34 : Constant 0 $FFFFFFFF Addr : 1DB4: 55 : Variable Operation Global Offset - 5 Write 1167 if key.breakTest ' Was the "break key" pressed? Addr : 1DB5: 00 : Drop Anchor Push Addr : 1DB6: 06 29 06 : Call Obj.Sub 41 6 Addr : 1DB9: JZ Label0003 Addr : 1DB9: 0A 0F : jz Address = 1DCA 15 1168 key.clearkeys ' If so, clear the keyboard buffer Addr : 1DBB: 01 : Drop Anchor Addr : 1DBC: 06 29 0C : Call Obj.Sub 41 12 1169 key.breakCode(breakKey) ' and reset the "break key" Addr : 1DBF: 01 : Drop Anchor Addr : 1DC0: 38 CB : Constant 1 Bytes - CB Addr : 1DC2: 06 29 07 : Call Obj.Sub 41 7 1170 nextlineloc := eop-2 ' Stop the program Addr : 1DC5: 48 : Variable Operation Global Offset - 2 Read Addr : 1DC6: 37 00 : Constant Mask Y=0 00000002 Addr : 1DC8: ED : Math Op - Addr : 1DC9: 4D : Variable Operation Global Offset - 3 Write Addr : 1DCA: Label0003 Addr : 1DCA: Label0004 1171 if nextlineloc < eop-2 Addr : 1DCA: 4C : Variable Operation Global Offset - 3 Read Addr : 1DCB: 48 : Variable Operation Global Offset - 2 Read Addr : 1DCC: 37 00 : Constant Mask Y=0 00000002 Addr : 1DCE: ED : Math Op - Addr : 1DCF: F9 : Math Op < Addr : 1DD0: JZ Label0005 Addr : 1DD0: 0A 17 : jz Address = 1DE9 23 1172 curlineno := wordat(nextlineloc) Addr : 1DD2: 00 : Drop Anchor Push Addr : 1DD3: 4C : Variable Operation Global Offset - 3 Read Addr : 1DD4: 05 0D : Call Sub 13 Addr : 1DD6: 55 : Variable Operation Global Offset - 5 Write 1173 tp := nextlineloc + 2 Addr : 1DD7: 4C : Variable Operation Global Offset - 3 Read Addr : 1DD8: 37 00 : Constant Mask Y=0 00000002 Addr : 1DDA: EC : Math Op + Addr : 1DDB: 45 : Variable Operation Global Offset - 1 Write 1174 nextlineloc := tp + strsize(tp) + 1 Addr : 1DDC: 44 : Variable Operation Global Offset - 1 Read Addr : 1DDD: 44 : Variable Operation Global Offset - 1 Read Addr : 1DDE: 16 : StrSize(String) Addr : 1DDF: EC : Math Op + Addr : 1DE0: 36 : Constant 2 $00000001 Addr : 1DE1: EC : Math Op + Addr : 1DE2: 4D : Variable Operation Global Offset - 3 Write 1175 texec Addr : 1DE3: 01 : Drop Anchor Addr : 1DE4: 05 21 : Call Sub 33 Addr : 1DE6: JMP Label0006 Addr : 1DE6: 04 80 77 : Jmp 1E60 119 Addr : 1DE9: Label0005 1177 if fileOpened Addr : 1DE9: 88 84 38 : Memory Op Byte VBASE + READ Address = 0438 Addr : 1DEC: JZ Label0008 Addr : 1DEC: 0A 17 : jz Address = 1E05 23 1178 fileOpened := false Addr : 1DEE: 35 : Constant 1 $00000000 Addr : 1DEF: 89 84 38 : Memory Op Byte VBASE + WRITE Address = 0438 1179 if fsrw.pclose < 0 Addr : 1DF2: 00 : Drop Anchor Push Addr : 1DF3: 06 27 15 : Call Obj.Sub 39 21 Addr : 1DF6: 35 : Constant 1 $00000000 Addr : 1DF7: F9 : Math Op < Addr : 1DF8: JZ Label000A Addr : 1DF8: 0A 07 : jz Address = 1E01 7 1180 dsp.str(string("Error closing open file",fReturn)) Addr : 1DFA: 01 : Drop Anchor Addr : 1DFB: PBASE Constant Address of Label000C Addr : 1DFB: 87 9E 51 : Memory Op Byte PBASE + ADDRESS Address = 1E51 Addr : 1DFE: 06 28 05 : Call Obj.Sub 40 5 Addr : 1E01: Label000A Addr : 1E01: Label000B 1181 \fsrw.unmount Addr : 1E01: 03 : Drop Anchor Try Addr : 1E02: 06 27 0D : Call Obj.Sub 39 13 Addr : 1E05: Label0008 Addr : 1E05: Label0009 1182 pauseTime := 0 Addr : 1E05: 35 : Constant 1 $00000000 Addr : 1E06: 59 : Variable Operation Global Offset - 6 Write 1183 repeat c from 0 to 15 Addr : 1E07: 35 : Constant 1 $00000000 Addr : 1E08: 69 : Variable Operation Local Offset - 2 Write Addr : 1E09: Label000D 1184 if outputs & |< c Addr : 1E09: A8 82 1C : Memory Op Word VBASE + READ Address = 021C Addr : 1E0C: 68 : Variable Operation Local Offset - 2 Read Addr : 1E0D: F3 : Math Op |< Addr : 1E0E: E8 : Math Op & Addr : 1E0F: JZ Label0010 Addr : 1E0F: 0A 08 : jz Address = 1E19 8 1185 dira[c]~ Addr : 1E11: 68 : Variable Operation Local Offset - 2 Read Addr : 1E12: 3D D6 18 : Register [Bit] op DIRA VAR~ Post-clear 1186 outa[c]~ Addr : 1E15: 68 : Variable Operation Local Offset - 2 Read Addr : 1E16: 3D D4 18 : Register [Bit] op OUTA VAR~ Post-clear Addr : 1E19: Label0010 Addr : 1E19: Label0011 Addr : 1E19: Label000E 1183 repeat c from 0 to 15 Addr : 1E19: 35 : Constant 1 $00000000 Addr : 1E1A: 37 23 : Constant Mask Y=35 Decrement 0000000F Addr : 1E1C: Repeat c Step Label000D Addr : 1E1C: 6A 02 6A : Variable Operation Local Offset - 2 Assign Repeat-Var loop Address= 1E09 -22 Addr : 1E1F: Label000F 1187 outputs := 0 Addr : 1E1F: 35 : Constant 1 $00000000 Addr : 1E20: A9 82 1C : Memory Op Word VBASE + WRITE Address = 021C 1188 if s Addr : 1E23: 64 : Variable Operation Local Offset - 1 Read Addr : 1E24: JZ Label0012 Addr : 1E24: 0A 0D : jz Address = 1E33 13 1189 bytemove(tp:=@tline,s,strsize(s)+1) Addr : 1E26: 8B 82 1E : Memory Op Byte VBASE + ADDRESS Address = 021E Addr : 1E29: 46 80 : Variable Operation Global Offset - 1 Assign Write Push Addr : 1E2B: 64 : Variable Operation Local Offset - 1 Read Addr : 1E2C: 64 : Variable Operation Local Offset - 1 Read Addr : 1E2D: 16 : StrSize(String) Addr : 1E2E: 36 : Constant 2 $00000001 Addr : 1E2F: EC : Math Op + Addr : 1E30: 1C : ByteMove(To, From, Count) Addr : 1E31: JMP Label0013 Addr : 1E31: 04 09 : Jmp 1E3C 9 Addr : 1E33: Label0012 1191 putlinet(string("OK")) Addr : 1E33: 01 : Drop Anchor Addr : 1E34: PBASE Constant Address of Label0015 Addr : 1E34: 87 9E 6A : Memory Op Byte PBASE + ADDRESS Address = 1E6A Addr : 1E37: 05 05 : Call Sub 5 1192 getline Addr : 1E39: 01 : Drop Anchor Addr : 1E3A: 05 04 : Call Sub 4 Addr : 1E3C: Label0014 Addr : 1E3C: Label0013 1193 c := spaces Addr : 1E3C: 00 : Drop Anchor Push Addr : 1E3D: 05 06 : Call Sub 6 Addr : 1E3F: 69 : Variable Operation Local Offset - 2 Write 1194 if "0" =< c and c =< "9" Addr : 1E40: 38 30 : Constant 1 Bytes - 30 Addr : 1E42: 68 : Variable Operation Local Offset - 2 Read Addr : 1E43: FD : Math Op =< Addr : 1E44: 68 : Variable Operation Local Offset - 2 Read Addr : 1E45: 38 39 : Constant 1 Bytes - 39 Addr : 1E47: FD : Math Op =< Addr : 1E48: F0 : Math Op AND Addr : 1E49: JZ Label0016 Addr : 1E49: 0A 0A : jz Address = 1E55 10 1195 insertline Addr : 1E4B: 01 : Drop Anchor Addr : 1E4C: 05 0F : Call Sub 15 1196 nextlineloc := eop - 2 Addr : 1E4E: 48 : Variable Operation Global Offset - 2 Read Addr : 1E4F: 37 00 : Constant Mask Y=0 00000002 Addr : 1E51: ED : Math Op - Addr : 1E52: 4D : Variable Operation Global Offset - 3 Write Addr : 1E53: JMP Label0017 Addr : 1E53: 04 0B : Jmp 1E60 11 Addr : 1E55: Label0016 1198 tokenize Addr : 1E55: 01 : Drop Anchor Addr : 1E56: 05 0C : Call Sub 12 1199 if spaces Addr : 1E58: 00 : Drop Anchor Push Addr : 1E59: 05 06 : Call Sub 6 Addr : 1E5B: JZ Label0019 Addr : 1E5B: 0A 03 : jz Address = 1E60 3 1200 texec Addr : 1E5D: 01 : Drop Anchor Addr : 1E5E: 05 21 : Call Sub 33 Addr : 1E60: Label0019 Addr : 1E60: Label001A Addr : 1E60: Label0018 Addr : 1E60: Label0017 Addr : 1E60: Label0007 Addr : 1E60: Label0006 Addr : 1E60: 32 : Return Addr : 1E61: Label000C Addr : 1E61: Data : 45 72 72 6F 72 20 63 6C Error cl Addr : 1E69: Data : 6F 73 69 6E 67 20 6F 70 osing op Addr : 1E71: Data : 65 6E 20 66 69 6C 65 0D en file. Addr : 1E79: Data : 00 . Addr : 1E7A: Label0015 Addr : 1E7A: Data : 4F 4B 00 OK. |===========================================================================| Spin Block processLoad with 0 Parameters and 1 Extra Stack Longs. Method 35 PRI processLoad : c | a |===========================================================================| 1203 repeat Addr : 1E7D: Label0003 1204 a := 0 Addr : 1E7D: 35 : Constant 1 $00000000 Addr : 1E7E: 65 : Variable Operation Local Offset - 1 Write Addr : 1E7F: Label0006 1206 c := fsrw.pgetc Addr : 1E7F: 00 : Drop Anchor Push Addr : 1E80: 06 27 18 : Call Obj.Sub 39 24 Addr : 1E83: 61 : Variable Operation Local Offset - 0 Write 1207 if c == fReturn or c == fEof Addr : 1E84: 60 : Variable Operation Local Offset - 0 Read Addr : 1E85: 38 0D : Constant 1 Bytes - 0D Addr : 1E87: FC : Math Op == Addr : 1E88: 60 : Variable Operation Local Offset - 0 Read Addr : 1E89: 34 : Constant 0 $FFFFFFFF Addr : 1E8A: FC : Math Op == Addr : 1E8B: F2 : Math Op OR Addr : 1E8C: JZ Label0009 Addr : 1E8C: 0A 0D : jz Address = 1E9B 13 1208 tline[a] := 0 Addr : 1E8E: 35 : Constant 1 $00000000 Addr : 1E8F: 64 : Variable Operation Local Offset - 1 Read Addr : 1E90: 99 82 1E : Memory Op Byte VBASE + POP Index WRITE Address = 021E 1209 tp := @tline Addr : 1E93: 8B 82 1E : Memory Op Byte VBASE + ADDRESS Address = 021E Addr : 1E96: 45 : Variable Operation Global Offset - 1 Write 1210 quit Addr : 1E97: JMP Label0008 Addr : 1E97: 04 25 : Jmp 1EBE 37 Addr : 1E99: JMP Label000A Addr : 1E99: 04 21 : Jmp 1EBC 33 Addr : 1E9B: Label0009 1211 elseif c == fLinefeed Addr : 1E9B: 60 : Variable Operation Local Offset - 0 Read Addr : 1E9C: 38 0A : Constant 1 Bytes - 0A Addr : 1E9E: FC : Math Op == Addr : 1E9F: JZ Label000B Addr : 1E9F: 0A 04 : jz Address = 1EA5 4 1212 next Addr : 1EA1: JMP Label0006 Addr : 1EA1: 04 5C : Jmp 1E7F -36 Addr : 1EA3: JMP Label000A Addr : 1EA3: 04 17 : Jmp 1EBC 23 Addr : 1EA5: Label000B 1213 elseif c < 0 Addr : 1EA5: 60 : Variable Operation Local Offset - 0 Read Addr : 1EA6: 35 : Constant 1 $00000000 Addr : 1EA7: F9 : Math Op < Addr : 1EA8: JZ Label000C Addr : 1EA8: 0A 04 : jz Address = 1EAE 4 1214 quit Addr : 1EAA: JMP Label0008 Addr : 1EAA: 04 12 : Jmp 1EBE 18 Addr : 1EAC: JMP Label000A Addr : 1EAC: 04 0E : Jmp 1EBC 14 Addr : 1EAE: Label000C 1215 elseif a < linelen-1 Addr : 1EAE: 64 : Variable Operation Local Offset - 1 Read Addr : 1EAF: 37 07 : Constant Mask Y=7 00000100 Addr : 1EB1: 36 : Constant 2 $00000001 Addr : 1EB2: ED : Math Op - Addr : 1EB3: F9 : Math Op < Addr : 1EB4: JZ Label000D Addr : 1EB4: 0A 06 : jz Address = 1EBC 6 1216 tline[a++] := c Addr : 1EB6: 60 : Variable Operation Local Offset - 0 Read Addr : 1EB7: 66 AE : Variable Operation Local Offset - 1 Assign VAR++ post inc Long Push Addr : 1EB9: 99 82 1E : Memory Op Byte VBASE + POP Index WRITE Address = 021E Addr : 1EBC: Label000D Addr : 1EBC: Label000A Addr : 1EBC: Label0007 Addr : 1EBC: JMP Label0006 Addr : 1EBC: 04 41 : Jmp 1E7F -63 Addr : 1EBE: Label0008 1217 if c == fEof and tline[0] == 0 Addr : 1EBE: 60 : Variable Operation Local Offset - 0 Read Addr : 1EBF: 34 : Constant 0 $FFFFFFFF Addr : 1EC0: FC : Math Op == Addr : 1EC1: 35 : Constant 1 $00000000 Addr : 1EC2: 98 82 1E : Memory Op Byte VBASE + POP Index READ Address = 021E Addr : 1EC5: 35 : Constant 1 $00000000 Addr : 1EC6: FC : Math Op == Addr : 1EC7: F0 : Math Op AND Addr : 1EC8: JZ Label000E Addr : 1EC8: 0A 02 : jz Address = 1ECC 2 1218 quit Addr : 1ECA: JMP Label0005 Addr : 1ECA: 04 32 : Jmp 1EFE 50 Addr : 1ECC: Label000E Addr : 1ECC: Label000F 1219 if c < 0 Addr : 1ECC: 60 : Variable Operation Local Offset - 0 Read Addr : 1ECD: 35 : Constant 1 $00000000 Addr : 1ECE: F9 : Math Op < Addr : 1ECF: JZ Label0010 Addr : 1ECF: 0A 04 : jz Address = 1ED5 4 Addr : 1ED1: PBASE Constant Address of Label0012 Addr : 1ED1: 87 9E EF : Memory Op Byte PBASE + ADDRESS Address = 1EEF 1220 abort string("Error while loading file") Addr : 1ED4: 31 : Abort value Addr : 1ED5: Label0010 Addr : 1ED5: Label0011 1221 tp := @tline Addr : 1ED5: 8B 82 1E : Memory Op Byte VBASE + ADDRESS Address = 021E Addr : 1ED8: 45 : Variable Operation Global Offset - 1 Write 1222 a := spaces Addr : 1ED9: 00 : Drop Anchor Push Addr : 1EDA: 05 06 : Call Sub 6 Addr : 1EDC: 65 : Variable Operation Local Offset - 1 Write 1223 if "0" =< a and a =< "9" Addr : 1EDD: 38 30 : Constant 1 Bytes - 30 Addr : 1EDF: 64 : Variable Operation Local Offset - 1 Read Addr : 1EE0: FD : Math Op =< Addr : 1EE1: 64 : Variable Operation Local Offset - 1 Read Addr : 1EE2: 38 39 : Constant 1 Bytes - 39 Addr : 1EE4: FD : Math Op =< Addr : 1EE5: F0 : Math Op AND Addr : 1EE6: JZ Label0013 Addr : 1EE6: 0A 0A : jz Address = 1EF2 10 1224 insertline Addr : 1EE8: 01 : Drop Anchor Addr : 1EE9: 05 0F : Call Sub 15 1225 nextlineloc := eop - 2 Addr : 1EEB: 48 : Variable Operation Global Offset - 2 Read Addr : 1EEC: 37 00 : Constant Mask Y=0 00000002 Addr : 1EEE: ED : Math Op - Addr : 1EEF: 4D : Variable Operation Global Offset - 3 Write Addr : 1EF0: JMP Label0014 Addr : 1EF0: 04 09 : Jmp 1EFB 9 Addr : 1EF2: Label0013 1227 if a <> 0 Addr : 1EF2: 64 : Variable Operation Local Offset - 1 Read Addr : 1EF3: 35 : Constant 1 $00000000 Addr : 1EF4: FB : Math Op <> Addr : 1EF5: JZ Label0016 Addr : 1EF5: 0A 04 : jz Address = 1EFB 4 Addr : 1EF7: PBASE Constant Address of Label0018 Addr : 1EF7: 87 9F 08 : Memory Op Byte PBASE + ADDRESS Address = 1F08 1228 abort string("Missing line number in file") Addr : 1EFA: 31 : Abort value Addr : 1EFB: Label0016 Addr : 1EFB: Label0017 Addr : 1EFB: Label0015 Addr : 1EFB: Label0014 Addr : 1EFB: Label0004 Addr : 1EFB: JMP Label0003 Addr : 1EFB: 04 FF 7F : Jmp 1E7D -129 Addr : 1EFE: Label0005 Addr : 1EFE: 32 : Return Addr : 1EFF: Label0012 Addr : 1EFF: Data : 45 72 72 6F 72 20 77 68 Error wh Addr : 1F07: Data : 69 6C 65 20 6C 6F 61 64 ile load Addr : 1F0F: Data : 69 6E 67 20 66 69 6C 65 ing file Addr : 1F17: Data : 00 . Addr : 1F18: Label0018 Addr : 1F18: Data : 4D 69 73 73 69 6E 67 20 Missing Addr : 1F20: Data : 6C 69 6E 65 20 6E 75 6D line num Addr : 1F28: Data : 62 65 72 20 69 6E 20 66 ber in f Addr : 1F30: Data : 69 6C 65 00 ile. |===========================================================================| Spin Block processSave with 0 Parameters and 4 Extra Stack Longs. Method 36 PRI processSave | a, c, d, ntoks |===========================================================================| 1231 ntoks := (@tokx - @toks) / 2 Addr : 1F34: A7 82 44 : Memory Op Word PBASE + ADDRESS Address = 0244 Addr : 1F37: A7 81 CE : Memory Op Word PBASE + ADDRESS Address = 01CE Addr : 1F3A: ED : Math Op - Addr : 1F3B: 37 00 : Constant Mask Y=0 00000002 Addr : 1F3D: F6 : Math Op / Addr : 1F3E: 71 : Variable Operation Local Offset - 4 Write 1232 a := long[userPtr] Addr : 1F3F: 39 73 20 : Constant 2 Bytes - 73 20 Addr : 1F42: C0 : Memory Op Long POP Address READ Addr : 1F43: 65 : Variable Operation Local Offset - 1 Write Addr : 1F44: Label0003 1233 repeat while a+2 < eop Addr : 1F44: 64 : Variable Operation Local Offset - 1 Read Addr : 1F45: 37 00 : Constant Mask Y=0 00000002 Addr : 1F47: EC : Math Op + Addr : 1F48: 48 : Variable Operation Global Offset - 2 Read Addr : 1F49: F9 : Math Op < Addr : 1F4A: JZ Label0005 Addr : 1F4A: 0A 80 77 : jz Address = 1FC4 119 1234 d := wordat(a) Addr : 1F4D: 00 : Drop Anchor Push Addr : 1F4E: 64 : Variable Operation Local Offset - 1 Read Addr : 1F4F: 05 0D : Call Sub 13 Addr : 1F51: 6D : Variable Operation Local Offset - 3 Write 1235 fsrw.dec(d) Addr : 1F52: 01 : Drop Anchor Addr : 1F53: 6C : Variable Operation Local Offset - 3 Read Addr : 1F54: 06 27 10 : Call Obj.Sub 39 16 1236 fsrw.out(" ") Addr : 1F57: 01 : Drop Anchor Addr : 1F58: 37 04 : Constant Mask Y=4 00000020 Addr : 1F5A: 06 27 0E : Call Obj.Sub 39 14 1237 d := a + 2 Addr : 1F5D: 64 : Variable Operation Local Offset - 1 Read Addr : 1F5E: 37 00 : Constant Mask Y=0 00000002 Addr : 1F60: EC : Math Op + Addr : 1F61: 6D : Variable Operation Local Offset - 3 Write Addr : 1F62: Label0006 1238 repeat while c := byte[d++] Addr : 1F62: 6E AE : Variable Operation Local Offset - 3 Assign VAR++ post inc Long Push Addr : 1F64: 80 : Memory Op Byte POP Address READ Addr : 1F65: 6A 80 : Variable Operation Local Offset - 2 Assign Write Push Addr : 1F67: JZ Label0008 Addr : 1F67: 0A 80 41 : jz Address = 1FAB 65 1239 if c => 128 Addr : 1F6A: 68 : Variable Operation Local Offset - 2 Read Addr : 1F6B: 37 06 : Constant Mask Y=6 00000080 Addr : 1F6D: FE : Math Op => Addr : 1F6E: JZ Label0009 Addr : 1F6E: 0A 33 : jz Address = 1FA3 51 1240 if (c -= 128) < ntoks Addr : 1F70: 37 06 : Constant Mask Y=6 00000080 Addr : 1F72: 6A CD : Variable Operation Local Offset - 2 Assign WordMathop - Push Addr : 1F74: 70 : Variable Operation Local Offset - 4 Read Addr : 1F75: F9 : Math Op < Addr : 1F76: JZ Label000B Addr : 1F76: 0A 18 : jz Address = 1F90 24 1241 fsrw.str(@@toks[c]) Addr : 1F78: 01 : Drop Anchor Addr : 1F79: 68 : Variable Operation Local Offset - 2 Read Addr : 1F7A: B4 81 CE : Memory Op Word PBASE + POP Index READ Address = 01CE Addr : 1F7D: 97 00 : Memory Op Byte PBASE + POP Index ADDRESS Address = 0000 Addr : 1F7F: 06 27 0F : Call Obj.Sub 39 15 1242 if c <> 7 ' REM Addr : 1F82: 68 : Variable Operation Local Offset - 2 Read Addr : 1F83: 37 22 : Constant Mask Y=34 Decrement 00000007 Addr : 1F85: FB : Math Op <> Addr : 1F86: JZ Label000D Addr : 1F86: 0A 06 : jz Address = 1F8E 6 1243 fsrw.out(" ") Addr : 1F88: 01 : Drop Anchor Addr : 1F89: 37 04 : Constant Mask Y=4 00000020 Addr : 1F8B: 06 27 0E : Call Obj.Sub 39 14 Addr : 1F8E: Label000D Addr : 1F8E: Label000E Addr : 1F8E: JMP Label000C Addr : 1F8E: 04 11 : Jmp 1FA1 17 Addr : 1F90: Label000B 1245 fsrw.out("{") Addr : 1F90: 01 : Drop Anchor Addr : 1F91: 38 7B : Constant 1 Bytes - 7B Addr : 1F93: 06 27 0E : Call Obj.Sub 39 14 1246 fsrw.dec(c) Addr : 1F96: 01 : Drop Anchor Addr : 1F97: 68 : Variable Operation Local Offset - 2 Read Addr : 1F98: 06 27 10 : Call Obj.Sub 39 16 1247 fsrw.out("}") Addr : 1F9B: 01 : Drop Anchor Addr : 1F9C: 38 7D : Constant 1 Bytes - 7D Addr : 1F9E: 06 27 0E : Call Obj.Sub 39 14 Addr : 1FA1: Label000F Addr : 1FA1: Label000C Addr : 1FA1: JMP Label000A Addr : 1FA1: 04 05 : Jmp 1FA8 5 Addr : 1FA3: Label0009 1249 fsrw.out(c) Addr : 1FA3: 01 : Drop Anchor Addr : 1FA4: 68 : Variable Operation Local Offset - 2 Read Addr : 1FA5: 06 27 0E : Call Obj.Sub 39 14 Addr : 1FA8: Label0010 Addr : 1FA8: Label000A Addr : 1FA8: Label0007 Addr : 1FA8: JMP Label0006 Addr : 1FA8: 04 FF B7 : Jmp 1F62 -73 Addr : 1FAB: Label0008 1250 fsrw.out(fReturn) Addr : 1FAB: 01 : Drop Anchor Addr : 1FAC: 38 0D : Constant 1 Bytes - 0D Addr : 1FAE: 06 27 0E : Call Obj.Sub 39 14 1251 fsrw.out(fLinefeed) Addr : 1FB1: 01 : Drop Anchor Addr : 1FB2: 38 0A : Constant 1 Bytes - 0A Addr : 1FB4: 06 27 0E : Call Obj.Sub 39 14 1252 a += 3 + strsize(a+2) Addr : 1FB7: 37 21 : Constant Mask Y=33 Decrement 00000003 Addr : 1FB9: 64 : Variable Operation Local Offset - 1 Read Addr : 1FBA: 37 00 : Constant Mask Y=0 00000002 Addr : 1FBC: EC : Math Op + Addr : 1FBD: 16 : StrSize(String) Addr : 1FBE: EC : Math Op + Addr : 1FBF: 66 4C : Variable Operation Local Offset - 1 Assign WordMathop + Addr : 1FC1: Label0004 Addr : 1FC1: JMP Label0003 Addr : 1FC1: 04 FF 80 : Jmp 1F44 -128 Addr : 1FC4: Label0005 Addr : 1FC4: 32 : Return |===========================================================================| Spin Block getAnyNumber with 0 Parameters and 2 Extra Stack Longs. Method 37 PRI getAnyNumber | c, t |===========================================================================| 1255 case c := byte[tp] Addr : 1FC5: Constant Address of Label0003 Addr : 1FC5: 39 20 80 : Constant 2 Bytes - 20 80 Addr : 1FC8: 44 : Variable Operation Global Offset - 1 Read Addr : 1FC9: 80 : Memory Op Byte POP Address READ Addr : 1FCA: 66 80 : Variable Operation Local Offset - 1 Assign Write Push 1256 quote: Addr : 1FCC: 38 22 : Constant 1 Bytes - 22 Addr : 1FCE: Case_Value Label0004 Addr : 1FCE: 0D 15 : Value Case Address = 1FE5 21 1264 "$": Addr : 1FD0: 38 24 : Constant 1 Bytes - 24 Addr : 1FD2: Case_Value Label000D Addr : 1FD2: 0D 2F : Value Case Address = 2003 47 1273 "%": Addr : 1FD4: 38 25 : Constant 1 Bytes - 25 Addr : 1FD6: Case_Value Label0014 Addr : 1FD6: 0D 80 5A : Value Case Address = 2033 90 1282 "0".."9": Addr : 1FD9: 38 30 : Constant 1 Bytes - 30 Addr : 1FDB: 38 39 : Constant 1 Bytes - 39 Addr : 1FDD: Case_Range Label001B Addr : 1FDD: 0E 80 8B : Range Case Address = 206B 139 Addr : 1FE0: PBASE Constant Address of Label001F Addr : 1FE0: 87 A0 DC : Memory Op Byte PBASE + ADDRESS Address = 20DC 1289 abort string("invalid literal value") Addr : 1FE3: 31 : Abort value Addr : 1FE4: CaseDone Label001B Addr : 1FE4: 0C : Casedone Addr : 1FE5: Label0004 1257 if result := byte[++tp] Addr : 1FE5: 46 A6 : Variable Operation Global Offset - 1 Assign ++VAR pre-inc Long Push Addr : 1FE7: 80 : Memory Op Byte POP Address READ Addr : 1FE8: 62 80 : Variable Operation Local Offset - 0 Assign Write Push Addr : 1FEA: JZ Label0005 Addr : 1FEA: 0A 12 : jz Address = 1FFE 18 1258 if byte[++tp] == quote Addr : 1FEC: 46 A6 : Variable Operation Global Offset - 1 Assign ++VAR pre-inc Long Push Addr : 1FEE: 80 : Memory Op Byte POP Address READ Addr : 1FEF: 38 22 : Constant 1 Bytes - 22 Addr : 1FF1: FC : Math Op == Addr : 1FF2: JZ Label0007 Addr : 1FF2: 0A 04 : jz Address = 1FF8 4 1259 tp++ Addr : 1FF4: 46 2E : Variable Operation Global Offset - 1 Assign VAR++ post inc Long Addr : 1FF6: JMP Label0008 Addr : 1FF6: 04 04 : Jmp 1FFC 4 Addr : 1FF8: Label0007 Addr : 1FF8: PBASE Constant Address of Label000A Addr : 1FF8: 87 A0 81 : Memory Op Byte PBASE + ADDRESS Address = 2081 1261 abort string("missing closing quote") Addr : 1FFB: 31 : Abort value Addr : 1FFC: Label0009 Addr : 1FFC: Label0008 Addr : 1FFC: JMP Label0006 Addr : 1FFC: 04 04 : Jmp 2002 4 Addr : 1FFE: Label0005 Addr : 1FFE: PBASE Constant Address of Label000C Addr : 1FFE: 87 A0 97 : Memory Op Byte PBASE + ADDRESS Address = 2097 1263 abort string("end of line in string") Addr : 2001: 31 : Abort value Addr : 2002: Label000B Addr : 2002: Label0006 Addr : 2002: CaseDone Label0004 Addr : 2002: 0C : Casedone Addr : 2003: Label000D 1265 c := byte[++tp] Addr : 2003: 46 A6 : Variable Operation Global Offset - 1 Assign ++VAR pre-inc Long Push Addr : 2005: 80 : Memory Op Byte POP Address READ Addr : 2006: 65 : Variable Operation Local Offset - 1 Write 1266 if (t := hexDigit(c)) < 0 Addr : 2007: 00 : Drop Anchor Push Addr : 2008: 64 : Variable Operation Local Offset - 1 Read Addr : 2009: 05 26 : Call Sub 38 Addr : 200B: 6A 80 : Variable Operation Local Offset - 2 Assign Write Push Addr : 200D: 35 : Constant 1 $00000000 Addr : 200E: F9 : Math Op < Addr : 200F: JZ Label000E Addr : 200F: 0A 04 : jz Address = 2015 4 Addr : 2011: PBASE Constant Address of Label0010 Addr : 2011: 87 A0 AD : Memory Op Byte PBASE + ADDRESS Address = 20AD 1267 abort string("invalid hex character") Addr : 2014: 31 : Abort value Addr : 2015: Label000E Addr : 2015: Label000F 1268 result := t Addr : 2015: 68 : Variable Operation Local Offset - 2 Read Addr : 2016: 61 : Variable Operation Local Offset - 0 Write 1269 c := byte[++tp] Addr : 2017: 46 A6 : Variable Operation Global Offset - 1 Assign ++VAR pre-inc Long Push Addr : 2019: 80 : Memory Op Byte POP Address READ Addr : 201A: 65 : Variable Operation Local Offset - 1 Write Addr : 201B: Label0011 1270 repeat until (t := hexDigit(c)) < 0 Addr : 201B: 00 : Drop Anchor Push Addr : 201C: 64 : Variable Operation Local Offset - 1 Read Addr : 201D: 05 26 : Call Sub 38 Addr : 201F: 6A 80 : Variable Operation Local Offset - 2 Assign Write Push Addr : 2021: 35 : Constant 1 $00000000 Addr : 2022: F9 : Math Op < Addr : 2023: JNZ Label0013 Addr : 2023: 0B 0D : jnz Address = 2032 13 1271 result := result << 4 | t Addr : 2025: 60 : Variable Operation Local Offset - 0 Read Addr : 2026: 37 01 : Constant Mask Y=1 00000004 Addr : 2028: E3 : Math Op << Addr : 2029: 68 : Variable Operation Local Offset - 2 Read Addr : 202A: EA : Math Op | Addr : 202B: 61 : Variable Operation Local Offset - 0 Write 1272 c := byte[++tp] Addr : 202C: 46 A6 : Variable Operation Global Offset - 1 Assign ++VAR pre-inc Long Push Addr : 202E: 80 : Memory Op Byte POP Address READ Addr : 202F: 65 : Variable Operation Local Offset - 1 Write Addr : 2030: Label0012 Addr : 2030: JMP Label0011 Addr : 2030: 04 69 : Jmp 201B -23 Addr : 2032: Label0013 Addr : 2032: CaseDone Label000D Addr : 2032: 0C : Casedone Addr : 2033: Label0014 1274 c := byte[++tp] Addr : 2033: 46 A6 : Variable Operation Global Offset - 1 Assign ++VAR pre-inc Long Push Addr : 2035: 80 : Memory Op Byte POP Address READ Addr : 2036: 65 : Variable Operation Local Offset - 1 Write 1275 if not (c == "0" or c == "1") Addr : 2037: 64 : Variable Operation Local Offset - 1 Read Addr : 2038: 38 30 : Constant 1 Bytes - 30 Addr : 203A: FC : Math Op == Addr : 203B: 64 : Variable Operation Local Offset - 1 Read Addr : 203C: 38 31 : Constant 1 Bytes - 31 Addr : 203E: FC : Math Op == Addr : 203F: F2 : Math Op OR Addr : 2040: FF : Math Op NOT Addr : 2041: JZ Label0015 Addr : 2041: 0A 04 : jz Address = 2047 4 Addr : 2043: PBASE Constant Address of Label0017 Addr : 2043: 87 A0 C3 : Memory Op Byte PBASE + ADDRESS Address = 20C3 1276 abort string("invalid binary character") Addr : 2046: 31 : Abort value Addr : 2047: Label0015 Addr : 2047: Label0016 1277 result := c - "0" Addr : 2047: 64 : Variable Operation Local Offset - 1 Read Addr : 2048: 38 30 : Constant 1 Bytes - 30 Addr : 204A: ED : Math Op - Addr : 204B: 61 : Variable Operation Local Offset - 0 Write 1278 c := byte[++tp] Addr : 204C: 46 A6 : Variable Operation Global Offset - 1 Assign ++VAR pre-inc Long Push Addr : 204E: 80 : Memory Op Byte POP Address READ Addr : 204F: 65 : Variable Operation Local Offset - 1 Write Addr : 2050: Label0018 1279 repeat while c == "0" or c == "1" Addr : 2050: 64 : Variable Operation Local Offset - 1 Read Addr : 2051: 38 30 : Constant 1 Bytes - 30 Addr : 2053: FC : Math Op == Addr : 2054: 64 : Variable Operation Local Offset - 1 Read Addr : 2055: 38 31 : Constant 1 Bytes - 31 Addr : 2057: FC : Math Op == Addr : 2058: F2 : Math Op OR Addr : 2059: JZ Label001A Addr : 2059: 0A 0F : jz Address = 206A 15 1280 result := result << 1 | (c - "0") Addr : 205B: 60 : Variable Operation Local Offset - 0 Read Addr : 205C: 36 : Constant 2 $00000001 Addr : 205D: E3 : Math Op << Addr : 205E: 64 : Variable Operation Local Offset - 1 Read Addr : 205F: 38 30 : Constant 1 Bytes - 30 Addr : 2061: ED : Math Op - Addr : 2062: EA : Math Op | Addr : 2063: 61 : Variable Operation Local Offset - 0 Write 1281 c := byte[++tp] Addr : 2064: 46 A6 : Variable Operation Global Offset - 1 Assign ++VAR pre-inc Long Push Addr : 2066: 80 : Memory Op Byte POP Address READ Addr : 2067: 65 : Variable Operation Local Offset - 1 Write Addr : 2068: Label0019 Addr : 2068: JMP Label0018 Addr : 2068: 04 66 : Jmp 2050 -26 Addr : 206A: Label001A Addr : 206A: CaseDone Label0014 Addr : 206A: 0C : Casedone Addr : 206B: Label001B 1283 result := c - "0" Addr : 206B: 64 : Variable Operation Local Offset - 1 Read Addr : 206C: 38 30 : Constant 1 Bytes - 30 Addr : 206E: ED : Math Op - Addr : 206F: 61 : Variable Operation Local Offset - 0 Write 1284 c := byte[++tp] Addr : 2070: 46 A6 : Variable Operation Global Offset - 1 Assign ++VAR pre-inc Long Push Addr : 2072: 80 : Memory Op Byte POP Address READ Addr : 2073: 65 : Variable Operation Local Offset - 1 Write Addr : 2074: Label001C 1285 repeat while c => "0" and c =< "9" Addr : 2074: 64 : Variable Operation Local Offset - 1 Read Addr : 2075: 38 30 : Constant 1 Bytes - 30 Addr : 2077: FE : Math Op => Addr : 2078: 64 : Variable Operation Local Offset - 1 Read Addr : 2079: 38 39 : Constant 1 Bytes - 39 Addr : 207B: FD : Math Op =< Addr : 207C: F0 : Math Op AND Addr : 207D: JZ Label001E Addr : 207D: 0A 10 : jz Address = 208F 16 1286 result := result * 10 + c - "0" Addr : 207F: 60 : Variable Operation Local Offset - 0 Read Addr : 2080: 38 0A : Constant 1 Bytes - 0A Addr : 2082: F4 : Math Op * Addr : 2083: 64 : Variable Operation Local Offset - 1 Read Addr : 2084: EC : Math Op + Addr : 2085: 38 30 : Constant 1 Bytes - 30 Addr : 2087: ED : Math Op - Addr : 2088: 61 : Variable Operation Local Offset - 0 Write 1287 c := byte[++tp] Addr : 2089: 46 A6 : Variable Operation Global Offset - 1 Assign ++VAR pre-inc Long Push Addr : 208B: 80 : Memory Op Byte POP Address READ Addr : 208C: 65 : Variable Operation Local Offset - 1 Write Addr : 208D: Label001D Addr : 208D: JMP Label001C Addr : 208D: 04 65 : Jmp 2074 -27 Addr : 208F: Label001E Addr : 208F: CaseDone Label001B Addr : 208F: 0C : Casedone Addr : 2090: Label0003 Addr : 2090: 32 : Return Addr : 2091: Label000A Addr : 2091: Data : 6D 69 73 73 69 6E 67 20 missing Addr : 2099: Data : 63 6C 6F 73 69 6E 67 20 closing Addr : 20A1: Data : 71 75 6F 74 65 00 quote. Addr : 20A7: Label000C Addr : 20A7: Data : 65 6E 64 20 6F 66 20 6C end of l Addr : 20AF: Data : 69 6E 65 20 69 6E 20 73 ine in s Addr : 20B7: Data : 74 72 69 6E 67 00 tring. Addr : 20BD: Label0010 Addr : 20BD: Data : 69 6E 76 61 6C 69 64 20 invalid Addr : 20C5: Data : 68 65 78 20 63 68 61 72 hex char Addr : 20CD: Data : 61 63 74 65 72 00 acter. Addr : 20D3: Label0017 Addr : 20D3: Data : 69 6E 76 61 6C 69 64 20 invalid Addr : 20DB: Data : 62 69 6E 61 72 79 20 63 binary c Addr : 20E3: Data : 68 61 72 61 63 74 65 72 haracter Addr : 20EB: Data : 00 . Addr : 20EC: Label001F Addr : 20EC: Data : 69 6E 76 61 6C 69 64 20 invalid Addr : 20F4: Data : 6C 69 74 65 72 61 6C 20 literal Addr : 20FC: Data : 76 61 6C 75 65 00 value. |===========================================================================| Spin Block hexDigit with 1 Parameters and 0 Extra Stack Longs. Method 38 PRI hexDigit(c) |===========================================================================| 1293 if c => "0" and c =< "9" Addr : 2102: 64 : Variable Operation Local Offset - 1 Read Addr : 2103: 38 30 : Constant 1 Bytes - 30 Addr : 2105: FE : Math Op => Addr : 2106: 64 : Variable Operation Local Offset - 1 Read Addr : 2107: 38 39 : Constant 1 Bytes - 39 Addr : 2109: FD : Math Op =< Addr : 210A: F0 : Math Op AND Addr : 210B: JZ Label0003 Addr : 210B: 0A 05 : jz Address = 2112 5 1294 return c - "0" Addr : 210D: 64 : Variable Operation Local Offset - 1 Read Addr : 210E: 38 30 : Constant 1 Bytes - 30 Addr : 2110: ED : Math Op - Addr : 2111: 33 : Return value Addr : 2112: Label0003 Addr : 2112: Label0004 1295 if c => "A" and c =< "F" Addr : 2112: 64 : Variable Operation Local Offset - 1 Read Addr : 2113: 38 41 : Constant 1 Bytes - 41 Addr : 2115: FE : Math Op => Addr : 2116: 64 : Variable Operation Local Offset - 1 Read Addr : 2117: 38 46 : Constant 1 Bytes - 46 Addr : 2119: FD : Math Op =< Addr : 211A: F0 : Math Op AND Addr : 211B: JZ Label0005 Addr : 211B: 0A 08 : jz Address = 2125 8 1296 return c - "A" + 10 Addr : 211D: 64 : Variable Operation Local Offset - 1 Read Addr : 211E: 38 41 : Constant 1 Bytes - 41 Addr : 2120: ED : Math Op - Addr : 2121: 38 0A : Constant 1 Bytes - 0A Addr : 2123: EC : Math Op + Addr : 2124: 33 : Return value Addr : 2125: Label0005 Addr : 2125: Label0006 1297 if c => "a" and c =< "f" Addr : 2125: 64 : Variable Operation Local Offset - 1 Read Addr : 2126: 38 61 : Constant 1 Bytes - 61 Addr : 2128: FE : Math Op => Addr : 2129: 64 : Variable Operation Local Offset - 1 Read Addr : 212A: 38 66 : Constant 1 Bytes - 66 Addr : 212C: FD : Math Op =< Addr : 212D: F0 : Math Op AND Addr : 212E: JZ Label0007 Addr : 212E: 0A 08 : jz Address = 2138 8 1298 return c - "a" + 10 Addr : 2130: 64 : Variable Operation Local Offset - 1 Read Addr : 2131: 38 61 : Constant 1 Bytes - 61 Addr : 2133: ED : Math Op - Addr : 2134: 38 0A : Constant 1 Bytes - 0A Addr : 2136: EC : Math Op + Addr : 2137: 33 : Return value Addr : 2138: Label0007 Addr : 2138: Label0008 1299 return -1 Addr : 2138: 34 : Constant 0 $FFFFFFFF Addr : 2139: 33 : Return value Addr : 213A: Data : 32 2 |===========================================================================| Object FSRWFEMTO Object Base is 213C |===========================================================================| |===========================================================================| VBASE Global Variables |===========================================================================| VBASE : 0000 LONG Size 0004 Variable fclust VBASE : 0004 LONG Size 0004 Variable filesize VBASE : 0008 LONG Size 0004 Variable floc VBASE : 000C LONG Size 0004 Variable frem VBASE : 0010 LONG Size 0004 Variable bufat VBASE : 0014 LONG Size 0004 Variable bufend VBASE : 0018 LONG Size 0004 Variable writelink VBASE : 001C LONG Size 0004 Variable direntry VBASE : 0020 LONG Size 0004 Variable fatptr VBASE : 0024 LONG Size 0004 Variable rootdir VBASE : 0028 LONG Size 0004 Variable rootdirend VBASE : 002C LONG Size 0004 Variable dataregion VBASE : 0030 LONG Size 0004 Variable clustershift VBASE : 0034 LONG Size 0004 Variable fat1 VBASE : 0038 LONG Size 0004 Variable totclusters VBASE : 003C LONG Size 0004 Variable sectorsperfat VBASE : 0040 LONG Size 0004 Variable lastread VBASE : 0044 LONG Size 0004 Variable dirty VBASE : 0048 BYTE Size 0200 Variable buf VBASE : 0248 BYTE Size 0200 Variable buf2 VBASE : 0448 BYTE Size 000B Variable padname |===========================================================================| |===========================================================================| Spin Block start with 1 Parameters and 0 Extra Stack Longs. Method 1 pub start(ioControl) |===========================================================================| 88 return ldr.start(ioControl) Addr : 21F8: 00 : Drop Anchor Push Addr : 21F9: 64 : Variable Operation Local Offset - 1 Read Addr : 21FA: 06 2E 0C : Call Obj.Sub 46 12 Addr : 21FD: 33 : Return value Addr : 21FE: Data : 32 2 |===========================================================================| Spin Block stop with 0 Parameters and 0 Extra Stack Longs. Method 2 pub stop |===========================================================================| 91 return ldr.stop Addr : 21FF: 00 : Drop Anchor Push Addr : 2200: 06 2E 0D : Call Obj.Sub 46 13 Addr : 2203: 33 : Return value Addr : 2204: Data : 32 2 |===========================================================================| Spin Block bootEEPROM with 1 Parameters and 0 Extra Stack Longs. Method 3 pub bootEEPROM(address) |===========================================================================| 94 return ldr.bootEEPROM(address) Addr : 2205: 00 : Drop Anchor Push Addr : 2206: 64 : Variable Operation Local Offset - 1 Read Addr : 2207: 06 2E 01 : Call Obj.Sub 46 1 Addr : 220A: 33 : Return value Addr : 220B: Data : 32 2 |===========================================================================| Spin Block readEEPROM with 3 Parameters and 0 Extra Stack Longs. Method 4 pub readEEPROM(address, bufAdr, size) |===========================================================================| 97 return ldr.readEEPROM(address, bufAdr, size) Addr : 220C: 00 : Drop Anchor Push Addr : 220D: 64 : Variable Operation Local Offset - 1 Read Addr : 220E: 68 : Variable Operation Local Offset - 2 Read Addr : 220F: 6C : Variable Operation Local Offset - 3 Read Addr : 2210: 06 2E 02 : Call Obj.Sub 46 2 Addr : 2213: 33 : Return value Addr : 2214: Data : 32 2 |===========================================================================| Spin Block writeEEPROM with 3 Parameters and 0 Extra Stack Longs. Method 5 pub writeEEPROM(address, bufAdr, size) |===========================================================================| 100 return ldr.writeEEPROM(address, bufAdr, size) Addr : 2215: 00 : Drop Anchor Push Addr : 2216: 64 : Variable Operation Local Offset - 1 Read Addr : 2217: 68 : Variable Operation Local Offset - 2 Read Addr : 2218: 6C : Variable Operation Local Offset - 3 Read Addr : 2219: 06 2E 03 : Call Obj.Sub 46 3 Addr : 221C: 33 : Return value Addr : 221D: Data : 32 2 |===========================================================================| Spin Block checkPresence with 1 Parameters and 0 Extra Stack Longs. Method 6 pub checkPresence(address) |===========================================================================| 103 return ldr.checkPresence(address) Addr : 221E: 00 : Drop Anchor Push Addr : 221F: 64 : Variable Operation Local Offset - 1 Read Addr : 2220: 06 2E 04 : Call Obj.Sub 46 4 Addr : 2223: 33 : Return value Addr : 2224: Data : 32 2 |===========================================================================| Spin Block writeWait with 1 Parameters and 1 Extra Stack Longs. Method 7 pub writeWait(address) | startTime |===========================================================================| 106 return ldr.writeWait(address) Addr : 2225: 00 : Drop Anchor Push Addr : 2226: 64 : Variable Operation Local Offset - 1 Read Addr : 2227: 06 2E 05 : Call Obj.Sub 46 5 Addr : 222A: 33 : Return value Addr : 222B: Data : 32 2 |===========================================================================| Spin Block initSDCard with 4 Parameters and 0 Extra Stack Longs. Method 8 pub initSDCard(DO, Clk, DI, CS) |===========================================================================| 109 return ldr.initSDCard(DO, Clk, DI, CS) Addr : 222C: 00 : Drop Anchor Push Addr : 222D: 64 : Variable Operation Local Offset - 1 Read Addr : 222E: 68 : Variable Operation Local Offset - 2 Read Addr : 222F: 6C : Variable Operation Local Offset - 3 Read Addr : 2230: 70 : Variable Operation Local Offset - 4 Read Addr : 2231: 06 2E 07 : Call Obj.Sub 46 7 Addr : 2234: 33 : Return value Addr : 2235: Data : 32 2 |===========================================================================| Spin Block stopSDCard with 0 Parameters and 0 Extra Stack Longs. Method 9 pub stopSDCard |===========================================================================| 112 return ldr.stopSDCard Addr : 2236: 00 : Drop Anchor Push Addr : 2237: 06 2E 08 : Call Obj.Sub 46 8 Addr : 223A: 33 : Return value Addr : 223B: Data : 32 2 |===========================================================================| Spin Block bootSDCard with 0 Parameters and 0 Extra Stack Longs. Method 10 pub bootSDCard ' Execute up to 32K from current file |===========================================================================| 115 return ldr.bootSDCard(datablock, filesize <# $8000) Addr : 223C: 00 : Drop Anchor Push Addr : 223D: 00 : Drop Anchor Push Addr : 223E: 05 29 : Call Sub 41 Addr : 2240: 44 : Variable Operation Global Offset - 1 Read Addr : 2241: 37 0E : Constant Mask Y=14 00008000 Addr : 2243: E5 : Math Op <| Addr : 2244: 06 2E 0B : Call Obj.Sub 46 11 Addr : 2247: 33 : Return value Addr : 2248: Data : 32 2 |===========================================================================| Spin Block readSDCard with 3 Parameters and 0 Extra Stack Longs. Method 11 pub readSDCard(address, bufAdr, size) |===========================================================================| 118 return ldr.readSDCard(address, bufAdr, size) Addr : 2249: 00 : Drop Anchor Push Addr : 224A: 64 : Variable Operation Local Offset - 1 Read Addr : 224B: 68 : Variable Operation Local Offset - 2 Read Addr : 224C: 6C : Variable Operation Local Offset - 3 Read Addr : 224D: 06 2E 09 : Call Obj.Sub 46 9 Addr : 2250: 33 : Return value Addr : 2251: Data : 32 2 |===========================================================================| Spin Block writeSDCard with 3 Parameters and 0 Extra Stack Longs. Method 12 pub writeSDCard(address, bufAdr, size) |===========================================================================| 121 return ldr.writeSDCard(address, bufAdr, size) Addr : 2252: 00 : Drop Anchor Push Addr : 2253: 64 : Variable Operation Local Offset - 1 Read Addr : 2254: 68 : Variable Operation Local Offset - 2 Read Addr : 2255: 6C : Variable Operation Local Offset - 3 Read Addr : 2256: 06 2E 0A : Call Obj.Sub 46 10 Addr : 2259: 33 : Return value Addr : 225A: Data : 32 2 |===========================================================================| Spin Block unmount with 0 Parameters and 0 Extra Stack Longs. Method 13 pub unmount |===========================================================================| 124 return ldr.stopSDCard Addr : 225B: 00 : Drop Anchor Push Addr : 225C: 06 2E 08 : Call Obj.Sub 46 8 Addr : 225F: 33 : Return value Addr : 2260: Data : 32 2 |===========================================================================| Spin Block out with 1 Parameters and 0 Extra Stack Longs. Method 14 pub out(c) ' Output a single character |===========================================================================| 127 pputc(c) Addr : 2261: 01 : Drop Anchor Addr : 2262: 64 : Variable Operation Local Offset - 1 Read Addr : 2263: 05 1A : Call Sub 26 Addr : 2265: 32 : Return |===========================================================================| Spin Block str with 1 Parameters and 0 Extra Stack Longs. Method 15 pub str(stringptr) ' Output a zero-terminated string |===========================================================================| 130 repeat strsize(stringptr) Addr : 2266: 64 : Variable Operation Local Offset - 1 Read Addr : 2267: 16 : StrSize(String) Addr : 2268: TJZ Label0005 Addr : 2268: 08 08 : tjz Address = 2272 8 Addr : 226A: Label0003 131 pputc(byte[stringptr++]) Addr : 226A: 01 : Drop Anchor Addr : 226B: 66 AE : Variable Operation Local Offset - 1 Assign VAR++ post inc Long Push Addr : 226D: 80 : Memory Op Byte POP Address READ Addr : 226E: 05 1A : Call Sub 26 Addr : 2270: Label0004 Addr : 2270: DJNZ Label0003 Addr : 2270: 09 78 : djnz Address = 226A -8 Addr : 2272: Label0005 Addr : 2272: 32 : Return |===========================================================================| Spin Block dec with 1 Parameters and 1 Extra Stack Longs. Method 16 pub dec(value) | i ' Output a decimal value |===========================================================================| 134 if value < 0 Addr : 2273: 64 : Variable Operation Local Offset - 1 Read Addr : 2274: 35 : Constant 1 $00000000 Addr : 2275: F9 : Math Op < Addr : 2276: JZ Label0002 Addr : 2276: 0A 07 : jz Address = 227F 7 135 -value Addr : 2278: 66 46 : Variable Operation Local Offset - 1 Assign LongMathop - 136 pputc("-") Addr : 227A: 01 : Drop Anchor Addr : 227B: 38 2D : Constant 1 Bytes - 2D Addr : 227D: 05 1A : Call Sub 26 Addr : 227F: Label0002 Addr : 227F: Label0003 137 i := 1_000_000_000 Addr : 227F: 3B 3B 9A CA 00 : Constant 4 Bytes - 3B 9A CA 00 Addr : 2284: 69 : Variable Operation Local Offset - 2 Write 138 repeat 10 Addr : 2285: 38 0A : Constant 1 Bytes - 0A Addr : 2287: TJZ Label0006 Addr : 2287: 08 27 : tjz Address = 22B0 39 Addr : 2289: Label0004 139 if value => i Addr : 2289: 64 : Variable Operation Local Offset - 1 Read Addr : 228A: 68 : Variable Operation Local Offset - 2 Read Addr : 228B: FE : Math Op => Addr : 228C: JZ Label0007 Addr : 228C: 0A 10 : jz Address = 229E 16 140 pputc(value / i + "0") Addr : 228E: 01 : Drop Anchor Addr : 228F: 64 : Variable Operation Local Offset - 1 Read Addr : 2290: 68 : Variable Operation Local Offset - 2 Read Addr : 2291: F6 : Math Op / Addr : 2292: 38 30 : Constant 1 Bytes - 30 Addr : 2294: EC : Math Op + Addr : 2295: 05 1A : Call Sub 26 141 value //= i Addr : 2297: 68 : Variable Operation Local Offset - 2 Read Addr : 2298: 66 57 : Variable Operation Local Offset - 1 Assign LongMathop // 142 result~~ Addr : 229A: 62 1C : Variable Operation Local Offset - 0 Assign VAR~~ Post-set Addr : 229C: JMP Label0008 Addr : 229C: 04 0C : Jmp 22AA 12 Addr : 229E: Label0007 143 elseif result or i == 1 Addr : 229E: 60 : Variable Operation Local Offset - 0 Read Addr : 229F: 68 : Variable Operation Local Offset - 2 Read Addr : 22A0: 36 : Constant 2 $00000001 Addr : 22A1: FC : Math Op == Addr : 22A2: F2 : Math Op OR Addr : 22A3: JZ Label0009 Addr : 22A3: 0A 05 : jz Address = 22AA 5 144 pputc("0") Addr : 22A5: 01 : Drop Anchor Addr : 22A6: 38 30 : Constant 1 Bytes - 30 Addr : 22A8: 05 1A : Call Sub 26 Addr : 22AA: Label0009 Addr : 22AA: Label0008 145 i /= 10 Addr : 22AA: 38 0A : Constant 1 Bytes - 0A Addr : 22AC: 6A 56 : Variable Operation Local Offset - 2 Assign LongMathop / Addr : 22AE: Label0005 Addr : 22AE: DJNZ Label0004 Addr : 22AE: 09 59 : djnz Address = 2289 -39 Addr : 22B0: Label0006 Addr : 22B0: 32 : Return |===========================================================================| Spin Block hex with 2 Parameters and 0 Extra Stack Longs. Method 17 pub hex(value, digits) ' Output a hexadecimal value |===========================================================================| 148 value <<= (8 - digits) << 2 Addr : 22B1: 37 02 : Constant Mask Y=2 00000008 Addr : 22B3: 68 : Variable Operation Local Offset - 2 Read Addr : 22B4: ED : Math Op - Addr : 22B5: 37 00 : Constant Mask Y=0 00000002 Addr : 22B7: E3 : Math Op << Addr : 22B8: 66 43 : Variable Operation Local Offset - 1 Assign ByteMathop << 149 repeat digits Addr : 22BA: 68 : Variable Operation Local Offset - 2 Read Addr : 22BB: TJZ Label0004 Addr : 22BB: 08 1B : tjz Address = 22D8 27 Addr : 22BD: Label0002 150 pputc(lookupz((value <-= 4) & $F : "0".."9", "A".."F")) Addr : 22BD: 01 : Drop Anchor Addr : 22BE: 35 : Constant 1 $00000000 Addr : 22BF: Constant Address of Label0005 Addr : 22BF: 39 01 98 : Constant 2 Bytes - 01 98 Addr : 22C2: 37 01 : Constant Mask Y=1 00000004 Addr : 22C4: 66 C1 : Variable Operation Local Offset - 1 Assign BitMathop -< Push Addr : 22C6: 37 23 : Constant Mask Y=35 Decrement 0000000F Addr : 22C8: E8 : Math Op & Addr : 22C9: 38 30 : Constant 1 Bytes - 30 Addr : 22CB: 38 39 : Constant 1 Bytes - 39 Addr : 22CD: 12 : Range LookUp Addr : 22CE: 38 41 : Constant 1 Bytes - 41 Addr : 22D0: 38 46 : Constant 1 Bytes - 46 Addr : 22D2: 12 : Range LookUp Addr : 22D3: 0F : Lookdone Addr : 22D4: Label0005 Addr : 22D4: 05 1A : Call Sub 26 Addr : 22D6: Label0003 Addr : 22D6: DJNZ Label0002 Addr : 22D6: 09 65 : djnz Address = 22BD -27 Addr : 22D8: Label0004 Addr : 22D8: 32 : Return |===========================================================================| Spin Block bin with 2 Parameters and 0 Extra Stack Longs. Method 18 pub bin(value, digits) ' Output a binary value |===========================================================================| 153 value <<= 32 - digits Addr : 22D9: 37 04 : Constant Mask Y=4 00000020 Addr : 22DB: 68 : Variable Operation Local Offset - 2 Read Addr : 22DC: ED : Math Op - Addr : 22DD: 66 43 : Variable Operation Local Offset - 1 Assign ByteMathop << 154 repeat digits Addr : 22DF: 68 : Variable Operation Local Offset - 2 Read Addr : 22E0: TJZ Label0004 Addr : 22E0: 08 0D : tjz Address = 22EF 13 Addr : 22E2: Label0002 155 pputc((value <-= 1) & 1 + "0") Addr : 22E2: 01 : Drop Anchor Addr : 22E3: 36 : Constant 2 $00000001 Addr : 22E4: 66 C1 : Variable Operation Local Offset - 1 Assign BitMathop -< Push Addr : 22E6: 36 : Constant 2 $00000001 Addr : 22E7: E8 : Math Op & Addr : 22E8: 38 30 : Constant 1 Bytes - 30 Addr : 22EA: EC : Math Op + Addr : 22EB: 05 1A : Call Sub 26 Addr : 22ED: Label0003 Addr : 22ED: DJNZ Label0002 Addr : 22ED: 09 73 : djnz Address = 22E2 -13 Addr : 22EF: Label0004 Addr : 22EF: 32 : Return |===========================================================================| Spin Block mount with 4 Parameters and 5 Extra Stack Longs. Method 19 pub mount(DO, Clk, DI, CS) | startBlk, sectorspercluster, reserved, rootentries, sectors |===========================================================================| 219 if initSDCard(DO, Clk, DI, CS) Addr : 22F0: 00 : Drop Anchor Push Addr : 22F1: 64 : Variable Operation Local Offset - 1 Read Addr : 22F2: 68 : Variable Operation Local Offset - 2 Read Addr : 22F3: 6C : Variable Operation Local Offset - 3 Read Addr : 22F4: 70 : Variable Operation Local Offset - 4 Read Addr : 22F5: 05 08 : Call Sub 8 Addr : 22F7: JZ Label0003 Addr : 22F7: 0A 05 : jz Address = 22FE 5 Addr : 22F9: PBASE Constant Address of Label0005 Addr : 22F9: 87 82 E8 : Memory Op Byte PBASE + ADDRESS Address = 02E8 220 abort -string("InitSDCard mount") Addr : 22FC: E6 : Math Op - Addr : 22FD: 31 : Abort value Addr : 22FE: Label0003 Addr : 22FE: Label0004 221 lastread := -1 Addr : 22FE: 34 : Constant 0 $FFFFFFFF Addr : 22FF: C9 40 : Memory Op Long VBASE + WRITE Address = 0040 222 dirty := 0 Addr : 2301: 35 : Constant 1 $00000000 Addr : 2302: C9 44 : Memory Op Long VBASE + WRITE Address = 0044 223 ldr.readSDCard(0, @buf, SECTORSIZE) Addr : 2304: 01 : Drop Anchor Addr : 2305: 35 : Constant 1 $00000000 Addr : 2306: 8B 48 : Memory Op Byte VBASE + ADDRESS Address = 0048 Addr : 2308: 37 08 : Constant Mask Y=8 00000200 Addr : 230A: 06 2E 09 : Call Obj.Sub 46 9 224 if (brlong(@buf+$36) == constant("F" + ("A" << 8) + ("T" << 16) + ("1" << 24))) Addr : 230D: 00 : Drop Anchor Push Addr : 230E: 8B 48 : Memory Op Byte VBASE + ADDRESS Address = 0048 Addr : 2310: 38 36 : Constant 1 Bytes - 36 Addr : 2312: EC : Math Op + Addr : 2313: 05 21 : Call Sub 33 Addr : 2315: 3B 31 54 41 46 : Constant 4 Bytes - 31 54 41 46 Addr : 231A: FC : Math Op == Addr : 231B: JZ Label0006 Addr : 231B: 0A 04 : jz Address = 2321 4 225 startBlk := 0 Addr : 231D: 35 : Constant 1 $00000000 Addr : 231E: 75 : Variable Operation Local Offset - 5 Write Addr : 231F: JMP Label0007 Addr : 231F: 04 13 : Jmp 2334 19 Addr : 2321: Label0006 227 startBlk := brlong(@buf+$1c6) Addr : 2321: 00 : Drop Anchor Push Addr : 2322: 8B 48 : Memory Op Byte VBASE + ADDRESS Address = 0048 Addr : 2324: 39 01 C6 : Constant 2 Bytes - 01 C6 Addr : 2327: EC : Math Op + Addr : 2328: 05 21 : Call Sub 33 Addr : 232A: 75 : Variable Operation Local Offset - 5 Write 228 ldr.readSDCard(startBlk, @buf, SECTORSIZE) Addr : 232B: 01 : Drop Anchor Addr : 232C: 74 : Variable Operation Local Offset - 5 Read Addr : 232D: 8B 48 : Memory Op Byte VBASE + ADDRESS Address = 0048 Addr : 232F: 37 08 : Constant Mask Y=8 00000200 Addr : 2331: 06 2E 09 : Call Obj.Sub 46 9 Addr : 2334: Label0008 Addr : 2334: Label0007 229 if (brlong(@buf+$36) <> constant("F" + ("A" << 8) + ("T" << 16) + ("1" << 24)) or buf[$3a] <> "6") Addr : 2334: 00 : Drop Anchor Push Addr : 2335: 8B 48 : Memory Op Byte VBASE + ADDRESS Address = 0048 Addr : 2337: 38 36 : Constant 1 Bytes - 36 Addr : 2339: EC : Math Op + Addr : 233A: 05 21 : Call Sub 33 Addr : 233C: 3B 31 54 41 46 : Constant 4 Bytes - 31 54 41 46 Addr : 2341: FB : Math Op <> Addr : 2342: 38 3A : Constant 1 Bytes - 3A Addr : 2344: 98 48 : Memory Op Byte VBASE + POP Index READ Address = 0048 Addr : 2346: 38 36 : Constant 1 Bytes - 36 Addr : 2348: FB : Math Op <> Addr : 2349: F2 : Math Op OR Addr : 234A: JZ Label0009 Addr : 234A: 0A 04 : jz Address = 2350 4 230 abort(-20) ' not a fat16 volume Addr : 234C: 38 13 : Constant 1 Bytes - 13 Addr : 234E: E7 : Math Op ! Addr : 234F: 31 : Abort value Addr : 2350: Label0009 Addr : 2350: Label000A 231 if (brword(@buf+$0b) <> SECTORSIZE) Addr : 2350: 00 : Drop Anchor Push Addr : 2351: 8B 48 : Memory Op Byte VBASE + ADDRESS Address = 0048 Addr : 2353: 38 0B : Constant 1 Bytes - 0B Addr : 2355: EC : Math Op + Addr : 2356: 05 20 : Call Sub 32 Addr : 2358: 37 08 : Constant Mask Y=8 00000200 Addr : 235A: FB : Math Op <> Addr : 235B: JZ Label000B Addr : 235B: 0A 04 : jz Address = 2361 4 232 abort(-21) ' bad bytes per sector Addr : 235D: 38 14 : Constant 1 Bytes - 14 Addr : 235F: E7 : Math Op ! Addr : 2360: 31 : Abort value Addr : 2361: Label000B Addr : 2361: Label000C 233 sectorspercluster := buf[$0d] Addr : 2361: 38 0D : Constant 1 Bytes - 0D Addr : 2363: 98 48 : Memory Op Byte VBASE + POP Index READ Address = 0048 Addr : 2365: 79 : Variable Operation Local Offset - 6 Write 234 if (sectorspercluster & (sectorspercluster - 1)) Addr : 2366: 78 : Variable Operation Local Offset - 6 Read Addr : 2367: 78 : Variable Operation Local Offset - 6 Read Addr : 2368: 36 : Constant 2 $00000001 Addr : 2369: ED : Math Op - Addr : 236A: E8 : Math Op & Addr : 236B: JZ Label000D Addr : 236B: 0A 04 : jz Address = 2371 4 235 abort(-22) ' bad sectors per cluster Addr : 236D: 38 15 : Constant 1 Bytes - 15 Addr : 236F: E7 : Math Op ! Addr : 2370: 31 : Abort value Addr : 2371: Label000D Addr : 2371: Label000E 236 clustershift := 0 Addr : 2371: 35 : Constant 1 $00000000 Addr : 2372: C9 30 : Memory Op Long VBASE + WRITE Address = 0030 Addr : 2374: Label000F 237 repeat while (sectorspercluster > 1) Addr : 2374: 78 : Variable Operation Local Offset - 6 Read Addr : 2375: 36 : Constant 2 $00000001 Addr : 2376: FA : Math Op > Addr : 2377: JZ Label0011 Addr : 2377: 0A 08 : jz Address = 2381 8 238 clustershift++ Addr : 2379: CA 30 2E : Memory Op Long VBASE + ASSIGN Address = 0030 VAR++ post inc Long 239 sectorspercluster >>= 1 Addr : 237C: 36 : Constant 2 $00000001 Addr : 237D: 7A 42 : Variable Operation Local Offset - 6 Assign ByteMathop >> Addr : 237F: Label0010 Addr : 237F: JMP Label000F Addr : 237F: 04 73 : Jmp 2374 -13 Addr : 2381: Label0011 240 sectorspercluster := 1 << clustershift Addr : 2381: 36 : Constant 2 $00000001 Addr : 2382: C8 30 : Memory Op Long VBASE + READ Address = 0030 Addr : 2384: E3 : Math Op << Addr : 2385: 79 : Variable Operation Local Offset - 6 Write 241 reserved := brword(@buf+$0e) Addr : 2386: 00 : Drop Anchor Push Addr : 2387: 8B 48 : Memory Op Byte VBASE + ADDRESS Address = 0048 Addr : 2389: 38 0E : Constant 1 Bytes - 0E Addr : 238B: EC : Math Op + Addr : 238C: 05 20 : Call Sub 32 Addr : 238E: 7D : Variable Operation Local Offset - 7 Write 242 if (buf[$10] <> 2) Addr : 238F: 37 03 : Constant Mask Y=3 00000010 Addr : 2391: 98 48 : Memory Op Byte VBASE + POP Index READ Address = 0048 Addr : 2393: 37 00 : Constant Mask Y=0 00000002 Addr : 2395: FB : Math Op <> Addr : 2396: JZ Label0012 Addr : 2396: 0A 04 : jz Address = 239C 4 243 abort(-23) ' not two FATs Addr : 2398: 38 16 : Constant 1 Bytes - 16 Addr : 239A: E7 : Math Op ! Addr : 239B: 31 : Abort value Addr : 239C: Label0012 Addr : 239C: Label0013 244 rootentries := brword(@buf+$11) Addr : 239C: 00 : Drop Anchor Push Addr : 239D: 8B 48 : Memory Op Byte VBASE + ADDRESS Address = 0048 Addr : 239F: 38 11 : Constant 1 Bytes - 11 Addr : 23A1: EC : Math Op + Addr : 23A2: 05 20 : Call Sub 32 Addr : 23A4: CD 20 : Memory Op Long DBASE + WRITE Address = 0020 245 sectors := brword(@buf+$13) Addr : 23A6: 00 : Drop Anchor Push Addr : 23A7: 8B 48 : Memory Op Byte VBASE + ADDRESS Address = 0048 Addr : 23A9: 38 13 : Constant 1 Bytes - 13 Addr : 23AB: EC : Math Op + Addr : 23AC: 05 20 : Call Sub 32 Addr : 23AE: CD 24 : Memory Op Long DBASE + WRITE Address = 0024 246 if (sectors == 0) Addr : 23B0: CC 24 : Memory Op Long DBASE + READ Address = 0024 Addr : 23B2: 35 : Constant 1 $00000000 Addr : 23B3: FC : Math Op == Addr : 23B4: JZ Label0014 Addr : 23B4: 0A 0A : jz Address = 23C0 10 247 sectors := brlong(@buf+$20) Addr : 23B6: 00 : Drop Anchor Push Addr : 23B7: 8B 48 : Memory Op Byte VBASE + ADDRESS Address = 0048 Addr : 23B9: 37 04 : Constant Mask Y=4 00000020 Addr : 23BB: EC : Math Op + Addr : 23BC: 05 21 : Call Sub 33 Addr : 23BE: CD 24 : Memory Op Long DBASE + WRITE Address = 0024 Addr : 23C0: Label0014 Addr : 23C0: Label0015 248 sectorsperfat := brword(@buf+$16) Addr : 23C0: 00 : Drop Anchor Push Addr : 23C1: 8B 48 : Memory Op Byte VBASE + ADDRESS Address = 0048 Addr : 23C3: 38 16 : Constant 1 Bytes - 16 Addr : 23C5: EC : Math Op + Addr : 23C6: 05 20 : Call Sub 32 Addr : 23C8: C9 3C : Memory Op Long VBASE + WRITE Address = 003C 249 if (brword(@buf+$1fe) <> $aa55) Addr : 23CA: 00 : Drop Anchor Push Addr : 23CB: 8B 48 : Memory Op Byte VBASE + ADDRESS Address = 0048 Addr : 23CD: 39 01 FE : Constant 2 Bytes - 01 FE Addr : 23D0: EC : Math Op + Addr : 23D1: 05 20 : Call Sub 32 Addr : 23D3: 39 AA 55 : Constant 2 Bytes - AA 55 Addr : 23D6: FB : Math Op <> Addr : 23D7: JZ Label0016 Addr : 23D7: 0A 04 : jz Address = 23DD 4 250 abort(-24) ' bad FAT signature Addr : 23D9: 38 17 : Constant 1 Bytes - 17 Addr : 23DB: E7 : Math Op ! Addr : 23DC: 31 : Abort value Addr : 23DD: Label0016 Addr : 23DD: Label0017 251 fat1 := startBlk + reserved Addr : 23DD: 74 : Variable Operation Local Offset - 5 Read Addr : 23DE: 7C : Variable Operation Local Offset - 7 Read Addr : 23DF: EC : Math Op + Addr : 23E0: C9 34 : Memory Op Long VBASE + WRITE Address = 0034 252 rootdir := (fat1 + 2 * sectorsperfat) << SECTORSHIFT Addr : 23E2: C8 34 : Memory Op Long VBASE + READ Address = 0034 Addr : 23E4: 37 00 : Constant Mask Y=0 00000002 Addr : 23E6: C8 3C : Memory Op Long VBASE + READ Address = 003C Addr : 23E8: F4 : Math Op * Addr : 23E9: EC : Math Op + Addr : 23EA: 38 09 : Constant 1 Bytes - 09 Addr : 23EC: E3 : Math Op << Addr : 23ED: C9 24 : Memory Op Long VBASE + WRITE Address = 0024 253 rootdirend := rootdir + (rootentries << DIRSHIFT) Addr : 23EF: C8 24 : Memory Op Long VBASE + READ Address = 0024 Addr : 23F1: CC 20 : Memory Op Long DBASE + READ Address = 0020 Addr : 23F3: 38 05 : Constant 1 Bytes - 05 Addr : 23F5: E3 : Math Op << Addr : 23F6: EC : Math Op + Addr : 23F7: C9 28 : Memory Op Long VBASE + WRITE Address = 0028 254 dataregion := 1 + ((rootdirend - 1) >> SECTORSHIFT) - 2 * sectorspercluster Addr : 23F9: 36 : Constant 2 $00000001 Addr : 23FA: C8 28 : Memory Op Long VBASE + READ Address = 0028 Addr : 23FC: 36 : Constant 2 $00000001 Addr : 23FD: ED : Math Op - Addr : 23FE: 38 09 : Constant 1 Bytes - 09 Addr : 2400: E2 : Math Op >> Addr : 2401: EC : Math Op + Addr : 2402: 37 00 : Constant Mask Y=0 00000002 Addr : 2404: 78 : Variable Operation Local Offset - 6 Read Addr : 2405: F4 : Math Op * Addr : 2406: ED : Math Op - Addr : 2407: C9 2C : Memory Op Long VBASE + WRITE Address = 002C 255 totclusters := ((sectors - dataregion + startBlk) >> clustershift) Addr : 2409: CC 24 : Memory Op Long DBASE + READ Address = 0024 Addr : 240B: C8 2C : Memory Op Long VBASE + READ Address = 002C Addr : 240D: ED : Math Op - Addr : 240E: 74 : Variable Operation Local Offset - 5 Read Addr : 240F: EC : Math Op + Addr : 2410: C8 30 : Memory Op Long VBASE + READ Address = 0030 Addr : 2412: E2 : Math Op >> Addr : 2413: C9 38 : Memory Op Long VBASE + WRITE Address = 0038 256 if (totclusters > $fff0) Addr : 2415: C8 38 : Memory Op Long VBASE + READ Address = 0038 Addr : 2417: 39 FF F0 : Constant 2 Bytes - FF F0 Addr : 241A: FA : Math Op > Addr : 241B: JZ Label0018 Addr : 241B: 0A 04 : jz Address = 2421 4 257 abort(-25) ' too many clusters Addr : 241D: 38 18 : Constant 1 Bytes - 18 Addr : 241F: E7 : Math Op ! Addr : 2420: 31 : Abort value Addr : 2421: Label0018 Addr : 2421: Label0019 258 return 0 Addr : 2421: 35 : Constant 1 $00000000 Addr : 2422: 33 : Return value Addr : 2423: Data : 32 2 Addr : 2424: Label0005 Addr : 2424: Data : 49 6E 69 74 53 44 43 61 InitSDCa Addr : 242C: Data : 72 64 20 6D 6F 75 6E 74 rd mount Addr : 2434: Data : 00 . |===========================================================================| Spin Block pflush with 0 Parameters and 0 Extra Stack Longs. Method 20 pub pflush |===========================================================================| 384 return pflushbuf(bufat, 1) Addr : 2435: 00 : Drop Anchor Push Addr : 2436: 50 : Variable Operation Global Offset - 4 Read Addr : 2437: 36 : Constant 2 $00000001 Addr : 2438: 05 2B : Call Sub 43 Addr : 243A: 33 : Return value Addr : 243B: Data : 32 2 |===========================================================================| Spin Block pclose with 0 Parameters and 1 Extra Stack Longs. Method 21 pub pclose | r |===========================================================================| 414 r := 0 Addr : 243C: 35 : Constant 1 $00000000 Addr : 243D: 65 : Variable Operation Local Offset - 1 Write 415 if (direntry) Addr : 243E: 5C : Variable Operation Global Offset - 7 Read Addr : 243F: JZ Label0003 Addr : 243F: 0A 04 : jz Address = 2445 4 416 r := pflush Addr : 2441: 00 : Drop Anchor Push Addr : 2442: 05 14 : Call Sub 20 Addr : 2444: 65 : Variable Operation Local Offset - 1 Write Addr : 2445: Label0003 Addr : 2445: Label0004 417 bufat := 0 Addr : 2445: 35 : Constant 1 $00000000 Addr : 2446: 51 : Variable Operation Global Offset - 4 Write 418 bufend := 0 Addr : 2447: 35 : Constant 1 $00000000 Addr : 2448: 55 : Variable Operation Global Offset - 5 Write 419 filesize := 0 Addr : 2449: 35 : Constant 1 $00000000 Addr : 244A: 45 : Variable Operation Global Offset - 1 Write 420 floc := 0 Addr : 244B: 35 : Constant 1 $00000000 Addr : 244C: 49 : Variable Operation Global Offset - 2 Write 421 frem := 0 Addr : 244D: 35 : Constant 1 $00000000 Addr : 244E: 4D : Variable Operation Global Offset - 3 Write 422 writelink := 0 Addr : 244F: 35 : Constant 1 $00000000 Addr : 2450: 59 : Variable Operation Global Offset - 6 Write 423 direntry := 0 Addr : 2451: 35 : Constant 1 $00000000 Addr : 2452: 5D : Variable Operation Global Offset - 7 Write 424 fclust := 0 Addr : 2453: 35 : Constant 1 $00000000 Addr : 2454: 41 : Variable Operation Global Offset - 0 Write 425 return r Addr : 2455: 64 : Variable Operation Local Offset - 1 Read Addr : 2456: 33 : Return value Addr : 2457: Data : 32 2 |===========================================================================| Spin Block popen with 2 Parameters and 4 Extra Stack Longs. Method 22 pub popen(s, mode) | i, sentinel, dirptr, freeentry |===========================================================================| 446 pclose Addr : 2458: 01 : Drop Anchor Addr : 2459: 05 15 : Call Sub 21 447 i := 0 Addr : 245B: 35 : Constant 1 $00000000 Addr : 245C: 6D : Variable Operation Local Offset - 3 Write Addr : 245D: Label0003 448 repeat while (i<8 and byte[s] and byte[s] <> ".") Addr : 245D: 6C : Variable Operation Local Offset - 3 Read Addr : 245E: 37 02 : Constant Mask Y=2 00000008 Addr : 2460: F9 : Math Op < Addr : 2461: 64 : Variable Operation Local Offset - 1 Read Addr : 2462: 80 : Memory Op Byte POP Address READ Addr : 2463: F0 : Math Op AND Addr : 2464: 64 : Variable Operation Local Offset - 1 Read Addr : 2465: 80 : Memory Op Byte POP Address READ Addr : 2466: 38 2E : Constant 1 Bytes - 2E Addr : 2468: FB : Math Op <> Addr : 2469: F0 : Math Op AND Addr : 246A: JZ Label0005 Addr : 246A: 0A 0D : jz Address = 2479 13 449 padname[i++] := uc(byte[s++]) Addr : 246C: 00 : Drop Anchor Push Addr : 246D: 66 AE : Variable Operation Local Offset - 1 Assign VAR++ post inc Long Push Addr : 246F: 80 : Memory Op Byte POP Address READ Addr : 2470: 05 2A : Call Sub 42 Addr : 2472: 6E AE : Variable Operation Local Offset - 3 Assign VAR++ post inc Long Push Addr : 2474: 99 84 48 : Memory Op Byte VBASE + POP Index WRITE Address = 0448 Addr : 2477: Label0004 Addr : 2477: JMP Label0003 Addr : 2477: 04 64 : Jmp 245D -28 Addr : 2479: Label0005 Addr : 2479: Label0006 450 repeat while (i<8) Addr : 2479: 6C : Variable Operation Local Offset - 3 Read Addr : 247A: 37 02 : Constant Mask Y=2 00000008 Addr : 247C: F9 : Math Op < Addr : 247D: JZ Label0008 Addr : 247D: 0A 09 : jz Address = 2488 9 451 padname[i++] := " " Addr : 247F: 37 04 : Constant Mask Y=4 00000020 Addr : 2481: 6E AE : Variable Operation Local Offset - 3 Assign VAR++ post inc Long Push Addr : 2483: 99 84 48 : Memory Op Byte VBASE + POP Index WRITE Address = 0448 Addr : 2486: Label0007 Addr : 2486: JMP Label0006 Addr : 2486: 04 71 : Jmp 2479 -15 Addr : 2488: Label0008 Addr : 2488: Label0009 452 repeat while (byte[s] and byte[s] <> ".") Addr : 2488: 64 : Variable Operation Local Offset - 1 Read Addr : 2489: 80 : Memory Op Byte POP Address READ Addr : 248A: 64 : Variable Operation Local Offset - 1 Read Addr : 248B: 80 : Memory Op Byte POP Address READ Addr : 248C: 38 2E : Constant 1 Bytes - 2E Addr : 248E: FB : Math Op <> Addr : 248F: F0 : Math Op AND Addr : 2490: JZ Label000B Addr : 2490: 0A 04 : jz Address = 2496 4 453 s++ Addr : 2492: 66 2E : Variable Operation Local Offset - 1 Assign VAR++ post inc Long Addr : 2494: Label000A Addr : 2494: JMP Label0009 Addr : 2494: 04 72 : Jmp 2488 -14 Addr : 2496: Label000B 454 if (byte[s] == ".") Addr : 2496: 64 : Variable Operation Local Offset - 1 Read Addr : 2497: 80 : Memory Op Byte POP Address READ Addr : 2498: 38 2E : Constant 1 Bytes - 2E Addr : 249A: FC : Math Op == Addr : 249B: JZ Label000C Addr : 249B: 0A 02 : jz Address = 249F 2 455 s++ Addr : 249D: 66 2E : Variable Operation Local Offset - 1 Assign VAR++ post inc Long Addr : 249F: Label000C Addr : 249F: Label000D Addr : 249F: Label000E 456 repeat while (i<11 and byte[s]) Addr : 249F: 6C : Variable Operation Local Offset - 3 Read Addr : 24A0: 38 0B : Constant 1 Bytes - 0B Addr : 24A2: F9 : Math Op < Addr : 24A3: 64 : Variable Operation Local Offset - 1 Read Addr : 24A4: 80 : Memory Op Byte POP Address READ Addr : 24A5: F0 : Math Op AND Addr : 24A6: JZ Label0010 Addr : 24A6: 0A 0D : jz Address = 24B5 13 457 padname[i++] := uc(byte[s++]) Addr : 24A8: 00 : Drop Anchor Push Addr : 24A9: 66 AE : Variable Operation Local Offset - 1 Assign VAR++ post inc Long Push Addr : 24AB: 80 : Memory Op Byte POP Address READ Addr : 24AC: 05 2A : Call Sub 42 Addr : 24AE: 6E AE : Variable Operation Local Offset - 3 Assign VAR++ post inc Long Push Addr : 24B0: 99 84 48 : Memory Op Byte VBASE + POP Index WRITE Address = 0448 Addr : 24B3: Label000F Addr : 24B3: JMP Label000E Addr : 24B3: 04 6A : Jmp 249F -22 Addr : 24B5: Label0010 Addr : 24B5: Label0011 458 repeat while (i < 11) Addr : 24B5: 6C : Variable Operation Local Offset - 3 Read Addr : 24B6: 38 0B : Constant 1 Bytes - 0B Addr : 24B8: F9 : Math Op < Addr : 24B9: JZ Label0013 Addr : 24B9: 0A 09 : jz Address = 24C4 9 459 padname[i++] := " " Addr : 24BB: 37 04 : Constant Mask Y=4 00000020 Addr : 24BD: 6E AE : Variable Operation Local Offset - 3 Assign VAR++ post inc Long Push Addr : 24BF: 99 84 48 : Memory Op Byte VBASE + POP Index WRITE Address = 0448 Addr : 24C2: Label0012 Addr : 24C2: JMP Label0011 Addr : 24C2: 04 71 : Jmp 24B5 -15 Addr : 24C4: Label0013 460 sentinel := 0 Addr : 24C4: 35 : Constant 1 $00000000 Addr : 24C5: 71 : Variable Operation Local Offset - 4 Write 461 freeentry := 0 Addr : 24C6: 35 : Constant 1 $00000000 Addr : 24C7: 79 : Variable Operation Local Offset - 6 Write 462 repeat dirptr from rootdir to rootdirend - DIRSIZE step DIRSIZE Addr : 24C8: C8 24 : Memory Op Long VBASE + READ Address = 0024 Addr : 24CA: 75 : Variable Operation Local Offset - 5 Write Addr : 24CB: Label0014 463 s := readbytec(dirptr) Addr : 24CB: 00 : Drop Anchor Push Addr : 24CC: 74 : Variable Operation Local Offset - 5 Read Addr : 24CD: 05 24 : Call Sub 36 Addr : 24CF: 65 : Variable Operation Local Offset - 1 Write 464 if (freeentry == 0 and (byte[s] == 0 or byte[s] == $e5)) Addr : 24D0: 78 : Variable Operation Local Offset - 6 Read Addr : 24D1: 35 : Constant 1 $00000000 Addr : 24D2: FC : Math Op == Addr : 24D3: 64 : Variable Operation Local Offset - 1 Read Addr : 24D4: 80 : Memory Op Byte POP Address READ Addr : 24D5: 35 : Constant 1 $00000000 Addr : 24D6: FC : Math Op == Addr : 24D7: 64 : Variable Operation Local Offset - 1 Read Addr : 24D8: 80 : Memory Op Byte POP Address READ Addr : 24D9: 38 E5 : Constant 1 Bytes - E5 Addr : 24DB: FC : Math Op == Addr : 24DC: F2 : Math Op OR Addr : 24DD: F0 : Math Op AND Addr : 24DE: JZ Label0017 Addr : 24DE: 0A 02 : jz Address = 24E2 2 465 freeentry := dirptr Addr : 24E0: 74 : Variable Operation Local Offset - 5 Read Addr : 24E1: 79 : Variable Operation Local Offset - 6 Write Addr : 24E2: Label0017 Addr : 24E2: Label0018 466 if (byte[s] == 0) Addr : 24E2: 64 : Variable Operation Local Offset - 1 Read Addr : 24E3: 80 : Memory Op Byte POP Address READ Addr : 24E4: 35 : Constant 1 $00000000 Addr : 24E5: FC : Math Op == Addr : 24E6: JZ Label0019 Addr : 24E6: 0A 05 : jz Address = 24ED 5 467 sentinel := dirptr Addr : 24E8: 74 : Variable Operation Local Offset - 5 Read Addr : 24E9: 71 : Variable Operation Local Offset - 4 Write 468 quit Addr : 24EA: JMP Label0016 Addr : 24EA: 04 81 2A : Jmp 2617 298 Addr : 24ED: Label0019 Addr : 24ED: Label001A 469 repeat i from 0 to 10 Addr : 24ED: 35 : Constant 1 $00000000 Addr : 24EE: 6D : Variable Operation Local Offset - 3 Write Addr : 24EF: Label001B 470 if (padname[i] <> byte[s][i]) Addr : 24EF: 6C : Variable Operation Local Offset - 3 Read Addr : 24F0: 98 84 48 : Memory Op Byte VBASE + POP Index READ Address = 0448 Addr : 24F3: 64 : Variable Operation Local Offset - 1 Read Addr : 24F4: 6C : Variable Operation Local Offset - 3 Read Addr : 24F5: 90 : Memory Op Byte POP Address POP Index READ Addr : 24F6: FB : Math Op <> Addr : 24F7: JZ Label001E Addr : 24F7: 0A 02 : jz Address = 24FB 2 471 quit Addr : 24F9: JMP Label001D Addr : 24F9: 04 06 : Jmp 2501 6 Addr : 24FB: Label001E Addr : 24FB: Label001F Addr : 24FB: Label001C 469 repeat i from 0 to 10 Addr : 24FB: 35 : Constant 1 $00000000 Addr : 24FC: 38 0A : Constant 1 Bytes - 0A Addr : 24FE: Repeat i Step Label001B Addr : 24FE: 6E 02 6E : Variable Operation Local Offset - 3 Assign Repeat-Var loop Address= 24EF -18 Addr : 2501: Label001D 472 if (i == 11 and 0 == (byte[s][$0b] & $18)) ' this always returns Addr : 2501: 6C : Variable Operation Local Offset - 3 Read Addr : 2502: 38 0B : Constant 1 Bytes - 0B Addr : 2504: FC : Math Op == Addr : 2505: 35 : Constant 1 $00000000 Addr : 2506: 64 : Variable Operation Local Offset - 1 Read Addr : 2507: 38 0B : Constant 1 Bytes - 0B Addr : 2509: 90 : Memory Op Byte POP Address POP Index READ Addr : 250A: 38 18 : Constant 1 Bytes - 18 Addr : 250C: E8 : Math Op & Addr : 250D: FC : Math Op == Addr : 250E: F0 : Math Op AND Addr : 250F: JZ Label0020 Addr : 250F: 0A 80 F8 : jz Address = 260A 248 473 fclust := brword(s+$1a) Addr : 2512: 00 : Drop Anchor Push Addr : 2513: 64 : Variable Operation Local Offset - 1 Read Addr : 2514: 38 1A : Constant 1 Bytes - 1A Addr : 2516: EC : Math Op + Addr : 2517: 05 20 : Call Sub 32 Addr : 2519: 41 : Variable Operation Global Offset - 0 Write 474 filesize := brlong(s+$1c) Addr : 251A: 00 : Drop Anchor Push Addr : 251B: 64 : Variable Operation Local Offset - 1 Read Addr : 251C: 38 1C : Constant 1 Bytes - 1C Addr : 251E: EC : Math Op + Addr : 251F: 05 21 : Call Sub 33 Addr : 2521: 45 : Variable Operation Global Offset - 1 Write 475 if (mode == "r") Addr : 2522: 68 : Variable Operation Local Offset - 2 Read Addr : 2523: 38 72 : Constant 1 Bytes - 72 Addr : 2525: FC : Math Op == Addr : 2526: JZ Label0022 Addr : 2526: 0A 0F : jz Address = 2537 15 476 frem := SECTORSIZE << clustershift Addr : 2528: 37 08 : Constant Mask Y=8 00000200 Addr : 252A: C8 30 : Memory Op Long VBASE + READ Address = 0030 Addr : 252C: E3 : Math Op << Addr : 252D: 4D : Variable Operation Global Offset - 3 Write 477 if (frem > filesize) Addr : 252E: 4C : Variable Operation Global Offset - 3 Read Addr : 252F: 44 : Variable Operation Global Offset - 1 Read Addr : 2530: FA : Math Op > Addr : 2531: JZ Label0024 Addr : 2531: 0A 02 : jz Address = 2535 2 478 frem := filesize Addr : 2533: 44 : Variable Operation Global Offset - 1 Read Addr : 2534: 4D : Variable Operation Global Offset - 3 Write Addr : 2535: Label0024 Addr : 2535: Label0025 479 return 0 Addr : 2535: 35 : Constant 1 $00000000 Addr : 2536: 33 : Return value Addr : 2537: Label0022 Addr : 2537: Label0023 480 if (byte[s][11] & $d9) Addr : 2537: 64 : Variable Operation Local Offset - 1 Read Addr : 2538: 38 0B : Constant 1 Bytes - 0B Addr : 253A: 90 : Memory Op Byte POP Address POP Index READ Addr : 253B: 38 D9 : Constant 1 Bytes - D9 Addr : 253D: E8 : Math Op & Addr : 253E: JZ Label0026 Addr : 253E: 0A 04 : jz Address = 2544 4 481 abort(-6) ' no permission to write Addr : 2540: 38 05 : Constant 1 Bytes - 05 Addr : 2542: E7 : Math Op ! Addr : 2543: 31 : Abort value Addr : 2544: Label0026 Addr : 2544: Label0027 482 if (mode == "d") Addr : 2544: 68 : Variable Operation Local Offset - 2 Read Addr : 2545: 38 64 : Constant 1 Bytes - 64 Addr : 2547: FC : Math Op == Addr : 2548: JZ Label0028 Addr : 2548: 0A 0F : jz Address = 2559 15 483 brwword(s, $e5) Addr : 254A: 01 : Drop Anchor Addr : 254B: 64 : Variable Operation Local Offset - 1 Read Addr : 254C: 38 E5 : Constant 1 Bytes - E5 Addr : 254E: 05 22 : Call Sub 34 484 freeclusters(fclust) Addr : 2550: 01 : Drop Anchor Addr : 2551: 40 : Variable Operation Global Offset - 0 Read Addr : 2552: 05 28 : Call Sub 40 485 flushifdirty Addr : 2554: 01 : Drop Anchor Addr : 2555: 05 1E : Call Sub 30 486 return 0 Addr : 2557: 35 : Constant 1 $00000000 Addr : 2558: 33 : Return value Addr : 2559: Label0028 Addr : 2559: Label0029 487 if (mode == "w") Addr : 2559: 68 : Variable Operation Local Offset - 2 Read Addr : 255A: 38 77 : Constant 1 Bytes - 77 Addr : 255C: FC : Math Op == Addr : 255D: JZ Label002A Addr : 255D: 0A 29 : jz Address = 2588 41 488 brwword(s+26, -1) Addr : 255F: 01 : Drop Anchor Addr : 2560: 64 : Variable Operation Local Offset - 1 Read Addr : 2561: 38 1A : Constant 1 Bytes - 1A Addr : 2563: EC : Math Op + Addr : 2564: 34 : Constant 0 $FFFFFFFF Addr : 2565: 05 22 : Call Sub 34 489 brwlong(s+28, 0) Addr : 2567: 01 : Drop Anchor Addr : 2568: 64 : Variable Operation Local Offset - 1 Read Addr : 2569: 38 1C : Constant 1 Bytes - 1C Addr : 256B: EC : Math Op + Addr : 256C: 35 : Constant 1 $00000000 Addr : 256D: 05 23 : Call Sub 35 490 writelink := dirptr + 26 Addr : 256F: 74 : Variable Operation Local Offset - 5 Read Addr : 2570: 38 1A : Constant 1 Bytes - 1A Addr : 2572: EC : Math Op + Addr : 2573: 59 : Variable Operation Global Offset - 6 Write 491 direntry := dirptr Addr : 2574: 74 : Variable Operation Local Offset - 5 Read Addr : 2575: 5D : Variable Operation Global Offset - 7 Write 492 freeclusters(fclust) Addr : 2576: 01 : Drop Anchor Addr : 2577: 40 : Variable Operation Global Offset - 0 Read Addr : 2578: 05 28 : Call Sub 40 493 bufend := SECTORSIZE Addr : 257A: 37 08 : Constant Mask Y=8 00000200 Addr : 257C: 55 : Variable Operation Global Offset - 5 Write 494 fclust := 0 Addr : 257D: 35 : Constant 1 $00000000 Addr : 257E: 41 : Variable Operation Global Offset - 0 Write 495 filesize := 0 Addr : 257F: 35 : Constant 1 $00000000 Addr : 2580: 45 : Variable Operation Global Offset - 1 Write 496 frem := 0 Addr : 2581: 35 : Constant 1 $00000000 Addr : 2582: 4D : Variable Operation Global Offset - 3 Write 497 return 0 Addr : 2583: 35 : Constant 1 $00000000 Addr : 2584: 33 : Return value Addr : 2585: JMP Label002B Addr : 2585: 04 80 82 : Jmp 260A 130 Addr : 2588: Label002A 498 elseif (mode == "a") Addr : 2588: 68 : Variable Operation Local Offset - 2 Read Addr : 2589: 38 61 : Constant 1 Bytes - 61 Addr : 258B: FC : Math Op == Addr : 258C: JZ Label002C Addr : 258C: 0A 80 78 : jz Address = 2607 120 500 frem := filesize Addr : 258F: 44 : Variable Operation Global Offset - 1 Read Addr : 2590: 4D : Variable Operation Global Offset - 3 Write 501 freeentry := SECTORSIZE << clustershift Addr : 2591: 37 08 : Constant Mask Y=8 00000200 Addr : 2593: C8 30 : Memory Op Long VBASE + READ Address = 0030 Addr : 2595: E3 : Math Op << Addr : 2596: 79 : Variable Operation Local Offset - 6 Write 502 if (fclust => $fff0) Addr : 2597: 40 : Variable Operation Global Offset - 0 Read Addr : 2598: 39 FF F0 : Constant 2 Bytes - FF F0 Addr : 259B: FE : Math Op => Addr : 259C: JZ Label002D Addr : 259C: 0A 02 : jz Address = 25A0 2 503 fclust := 0 Addr : 259E: 35 : Constant 1 $00000000 Addr : 259F: 41 : Variable Operation Global Offset - 0 Write Addr : 25A0: Label002D Addr : 25A0: Label002E Addr : 25A0: Label002F 504 repeat while (frem > freeentry) Addr : 25A0: 4C : Variable Operation Global Offset - 3 Read Addr : 25A1: 78 : Variable Operation Local Offset - 6 Read Addr : 25A2: FA : Math Op > Addr : 25A3: JZ Label0031 Addr : 25A3: 0A 13 : jz Address = 25B8 19 505 if (fclust < 2) Addr : 25A5: 40 : Variable Operation Global Offset - 0 Read Addr : 25A6: 37 00 : Constant Mask Y=0 00000002 Addr : 25A8: F9 : Math Op < Addr : 25A9: JZ Label0032 Addr : 25A9: 0A 04 : jz Address = 25AF 4 506 abort(-7) ' eof repeat while following chain Addr : 25AB: 38 06 : Constant 1 Bytes - 06 Addr : 25AD: E7 : Math Op ! Addr : 25AE: 31 : Abort value Addr : 25AF: Label0032 Addr : 25AF: Label0033 507 fclust := nextcluster Addr : 25AF: 00 : Drop Anchor Push Addr : 25B0: 05 27 : Call Sub 39 Addr : 25B2: 41 : Variable Operation Global Offset - 0 Write 508 frem -= freeentry Addr : 25B3: 78 : Variable Operation Local Offset - 6 Read Addr : 25B4: 4E 4D : Variable Operation Global Offset - 3 Assign WordMathop - Addr : 25B6: Label0030 Addr : 25B6: JMP Label002F Addr : 25B6: 04 68 : Jmp 25A0 -24 Addr : 25B8: Label0031 509 floc := filesize & constant(!(SECTORSIZE - 1)) Addr : 25B8: 44 : Variable Operation Global Offset - 1 Read Addr : 25B9: 37 68 : Constant Mask Y=104 Decrement Invert FFFFFE00 Addr : 25BB: E8 : Math Op & Addr : 25BC: 49 : Variable Operation Global Offset - 2 Write 510 bufend := SECTORSIZE Addr : 25BD: 37 08 : Constant Mask Y=8 00000200 Addr : 25BF: 55 : Variable Operation Global Offset - 5 Write 511 bufat := frem & constant(SECTORSIZE - 1) Addr : 25C0: 4C : Variable Operation Global Offset - 3 Read Addr : 25C1: 37 28 : Constant Mask Y=40 Decrement 000001FF Addr : 25C3: E8 : Math Op & Addr : 25C4: 51 : Variable Operation Global Offset - 4 Write 512 writelink := dirptr + 26 Addr : 25C5: 74 : Variable Operation Local Offset - 5 Read Addr : 25C6: 38 1A : Constant 1 Bytes - 1A Addr : 25C8: EC : Math Op + Addr : 25C9: 59 : Variable Operation Global Offset - 6 Write 513 direntry := dirptr Addr : 25CA: 74 : Variable Operation Local Offset - 5 Read Addr : 25CB: 5D : Variable Operation Global Offset - 7 Write 514 if (bufat) Addr : 25CC: 50 : Variable Operation Global Offset - 4 Read Addr : 25CD: JZ Label0034 Addr : 25CD: 0A 15 : jz Address = 25E4 21 515 ldr.readSDCard(datablock, @buf, SECTORSIZE) Addr : 25CF: 01 : Drop Anchor Addr : 25D0: 00 : Drop Anchor Push Addr : 25D1: 05 29 : Call Sub 41 Addr : 25D3: 8B 48 : Memory Op Byte VBASE + ADDRESS Address = 0048 Addr : 25D5: 37 08 : Constant Mask Y=8 00000200 Addr : 25D7: 06 2E 09 : Call Obj.Sub 46 9 516 frem := freeentry - (floc & (freeentry - 1)) Addr : 25DA: 78 : Variable Operation Local Offset - 6 Read Addr : 25DB: 48 : Variable Operation Global Offset - 2 Read Addr : 25DC: 78 : Variable Operation Local Offset - 6 Read Addr : 25DD: 36 : Constant 2 $00000001 Addr : 25DE: ED : Math Op - Addr : 25DF: E8 : Math Op & Addr : 25E0: ED : Math Op - Addr : 25E1: 4D : Variable Operation Global Offset - 3 Write Addr : 25E2: JMP Label0035 Addr : 25E2: 04 16 : Jmp 25FA 22 Addr : 25E4: Label0034 518 if (fclust < 2 or frem == freeentry) Addr : 25E4: 40 : Variable Operation Global Offset - 0 Read Addr : 25E5: 37 00 : Constant Mask Y=0 00000002 Addr : 25E7: F9 : Math Op < Addr : 25E8: 4C : Variable Operation Global Offset - 3 Read Addr : 25E9: 78 : Variable Operation Local Offset - 6 Read Addr : 25EA: FC : Math Op == Addr : 25EB: F2 : Math Op OR Addr : 25EC: JZ Label0037 Addr : 25EC: 0A 04 : jz Address = 25F2 4 519 frem := 0 Addr : 25EE: 35 : Constant 1 $00000000 Addr : 25EF: 4D : Variable Operation Global Offset - 3 Write Addr : 25F0: JMP Label0038 Addr : 25F0: 04 08 : Jmp 25FA 8 Addr : 25F2: Label0037 521 frem := freeentry - (floc & (freeentry - 1)) Addr : 25F2: 78 : Variable Operation Local Offset - 6 Read Addr : 25F3: 48 : Variable Operation Global Offset - 2 Read Addr : 25F4: 78 : Variable Operation Local Offset - 6 Read Addr : 25F5: 36 : Constant 2 $00000001 Addr : 25F6: ED : Math Op - Addr : 25F7: E8 : Math Op & Addr : 25F8: ED : Math Op - Addr : 25F9: 4D : Variable Operation Global Offset - 3 Write Addr : 25FA: Label0039 Addr : 25FA: Label0038 Addr : 25FA: Label0036 Addr : 25FA: Label0035 522 if (fclust => 2) Addr : 25FA: 40 : Variable Operation Global Offset - 0 Read Addr : 25FB: 37 00 : Constant Mask Y=0 00000002 Addr : 25FD: FE : Math Op => Addr : 25FE: JZ Label003A Addr : 25FE: 0A 03 : jz Address = 2603 3 523 followchain Addr : 2600: 01 : Drop Anchor Addr : 2601: 05 26 : Call Sub 38 Addr : 2603: Label003A Addr : 2603: Label003B 524 return 0 Addr : 2603: 35 : Constant 1 $00000000 Addr : 2604: 33 : Return value Addr : 2605: JMP Label002B Addr : 2605: 04 03 : Jmp 260A 3 Addr : 2607: Label002C 526 abort(-3) ' bad argument Addr : 2607: 37 40 : Constant Mask Y=64 Invert FFFFFFFD Addr : 2609: 31 : Abort value Addr : 260A: Label003C Addr : 260A: Label002B Addr : 260A: Label0020 Addr : 260A: Label0021 Addr : 260A: Label0015 462 repeat dirptr from rootdir to rootdirend - DIRSIZE step DIRSIZE Addr : 260A: 37 04 : Constant Mask Y=4 00000020 Addr : 260C: C8 24 : Memory Op Long VBASE + READ Address = 0024 Addr : 260E: C8 28 : Memory Op Long VBASE + READ Address = 0028 Addr : 2610: 37 04 : Constant Mask Y=4 00000020 Addr : 2612: ED : Math Op - Addr : 2613: Repeat dirptr Step Label0014 Addr : 2613: 76 06 FE B4 : Variable Operation Local Offset - 5 Assign Repeat-Var loop (pop step) Address= 24CB -332 Addr : 2617: Label0016 527 if (mode <> "w" and mode <> "a") Addr : 2617: 68 : Variable Operation Local Offset - 2 Read Addr : 2618: 38 77 : Constant 1 Bytes - 77 Addr : 261A: FB : Math Op <> Addr : 261B: 68 : Variable Operation Local Offset - 2 Read Addr : 261C: 38 61 : Constant 1 Bytes - 61 Addr : 261E: FB : Math Op <> Addr : 261F: F0 : Math Op AND Addr : 2620: JZ Label003D Addr : 2620: 0A 02 : jz Address = 2624 2 528 return -1 ' not found Addr : 2622: 34 : Constant 0 $FFFFFFFF Addr : 2623: 33 : Return value Addr : 2624: Label003D Addr : 2624: Label003E 529 direntry := freeentry Addr : 2624: 78 : Variable Operation Local Offset - 6 Read Addr : 2625: 5D : Variable Operation Global Offset - 7 Write 530 if (direntry == 0) Addr : 2626: 5C : Variable Operation Global Offset - 7 Read Addr : 2627: 35 : Constant 1 $00000000 Addr : 2628: FC : Math Op == Addr : 2629: JZ Label003F Addr : 2629: 0A 03 : jz Address = 262E 3 531 abort(-2) ' no empty directory entry Addr : 262B: 37 60 : Constant Mask Y=96 Decrement Invert FFFFFFFE Addr : 262D: 31 : Abort value Addr : 262E: Label003F Addr : 262E: Label0040 533 s := readbytec(direntry) Addr : 262E: 00 : Drop Anchor Push Addr : 262F: 5C : Variable Operation Global Offset - 7 Read Addr : 2630: 05 24 : Call Sub 36 Addr : 2632: 65 : Variable Operation Local Offset - 1 Write 534 bytefill(s, 0, DIRSIZE) Addr : 2633: 64 : Variable Operation Local Offset - 1 Read Addr : 2634: 35 : Constant 1 $00000000 Addr : 2635: 37 04 : Constant Mask Y=4 00000020 Addr : 2637: 18 : ByteFill(Start, Value, Count) 535 bytemove(s, @padname, 11) Addr : 2638: 64 : Variable Operation Local Offset - 1 Read Addr : 2639: 8B 84 48 : Memory Op Byte VBASE + ADDRESS Address = 0448 Addr : 263C: 38 0B : Constant 1 Bytes - 0B Addr : 263E: 1C : ByteMove(To, From, Count) 536 brwword(s+26, -1) Addr : 263F: 01 : Drop Anchor Addr : 2640: 64 : Variable Operation Local Offset - 1 Read Addr : 2641: 38 1A : Constant 1 Bytes - 1A Addr : 2643: EC : Math Op + Addr : 2644: 34 : Constant 0 $FFFFFFFF Addr : 2645: 05 22 : Call Sub 34 537 i := pdate Addr : 2647: 00 : Drop Anchor Push Addr : 2648: 05 2D : Call Sub 45 Addr : 264A: 6D : Variable Operation Local Offset - 3 Write 538 brwlong(s+$e, i) ' write create time and date Addr : 264B: 01 : Drop Anchor Addr : 264C: 64 : Variable Operation Local Offset - 1 Read Addr : 264D: 38 0E : Constant 1 Bytes - 0E Addr : 264F: EC : Math Op + Addr : 2650: 6C : Variable Operation Local Offset - 3 Read Addr : 2651: 05 23 : Call Sub 35 539 brwlong(s+$16, i) ' write last modified date and time Addr : 2653: 01 : Drop Anchor Addr : 2654: 64 : Variable Operation Local Offset - 1 Read Addr : 2655: 38 16 : Constant 1 Bytes - 16 Addr : 2657: EC : Math Op + Addr : 2658: 6C : Variable Operation Local Offset - 3 Read Addr : 2659: 05 23 : Call Sub 35 540 if (direntry == sentinel and direntry + DIRSIZE < rootdirend) Addr : 265B: 5C : Variable Operation Global Offset - 7 Read Addr : 265C: 70 : Variable Operation Local Offset - 4 Read Addr : 265D: FC : Math Op == Addr : 265E: 5C : Variable Operation Global Offset - 7 Read Addr : 265F: 37 04 : Constant Mask Y=4 00000020 Addr : 2661: EC : Math Op + Addr : 2662: C8 28 : Memory Op Long VBASE + READ Address = 0028 Addr : 2664: F9 : Math Op < Addr : 2665: F0 : Math Op AND Addr : 2666: JZ Label0041 Addr : 2666: 0A 0B : jz Address = 2673 11 541 brwword(readbytec(direntry+DIRSIZE), 0) Addr : 2668: 01 : Drop Anchor Addr : 2669: 00 : Drop Anchor Push Addr : 266A: 5C : Variable Operation Global Offset - 7 Read Addr : 266B: 37 04 : Constant Mask Y=4 00000020 Addr : 266D: EC : Math Op + Addr : 266E: 05 24 : Call Sub 36 Addr : 2670: 35 : Constant 1 $00000000 Addr : 2671: 05 22 : Call Sub 34 Addr : 2673: Label0041 Addr : 2673: Label0042 542 flushifdirty Addr : 2673: 01 : Drop Anchor Addr : 2674: 05 1E : Call Sub 30 543 writelink := direntry + 26 Addr : 2676: 5C : Variable Operation Global Offset - 7 Read Addr : 2677: 38 1A : Constant 1 Bytes - 1A Addr : 2679: EC : Math Op + Addr : 267A: 59 : Variable Operation Global Offset - 6 Write 544 fclust := 0 Addr : 267B: 35 : Constant 1 $00000000 Addr : 267C: 41 : Variable Operation Global Offset - 0 Write 545 bufend := SECTORSIZE Addr : 267D: 37 08 : Constant Mask Y=8 00000200 Addr : 267F: 55 : Variable Operation Global Offset - 5 Write 546 return 0 Addr : 2680: 35 : Constant 1 $00000000 Addr : 2681: 33 : Return value Addr : 2682: Data : 32 2 |===========================================================================| Spin Block pread with 2 Parameters and 2 Extra Stack Longs. Method 23 pub pread(ubuf, count) | r, t |===========================================================================| 554 r := 0 Addr : 2683: 35 : Constant 1 $00000000 Addr : 2684: 6D : Variable Operation Local Offset - 3 Write Addr : 2685: Label0003 555 repeat while (count > 0) Addr : 2685: 68 : Variable Operation Local Offset - 2 Read Addr : 2686: 35 : Constant 1 $00000000 Addr : 2687: FA : Math Op > Addr : 2688: JZ Label0005 Addr : 2688: 0A 37 : jz Address = 26C1 55 556 if (bufat => bufend) Addr : 268A: 50 : Variable Operation Global Offset - 4 Read Addr : 268B: 54 : Variable Operation Global Offset - 5 Read Addr : 268C: FE : Math Op => Addr : 268D: JZ Label0006 Addr : 268D: 0A 12 : jz Address = 26A1 18 557 t := pfillbuf Addr : 268F: 00 : Drop Anchor Push Addr : 2690: 05 2C : Call Sub 44 Addr : 2692: 71 : Variable Operation Local Offset - 4 Write 558 if (t =< 0) Addr : 2693: 70 : Variable Operation Local Offset - 4 Read Addr : 2694: 35 : Constant 1 $00000000 Addr : 2695: FD : Math Op =< Addr : 2696: JZ Label0008 Addr : 2696: 0A 09 : jz Address = 26A1 9 559 if (r > 0) Addr : 2698: 6C : Variable Operation Local Offset - 3 Read Addr : 2699: 35 : Constant 1 $00000000 Addr : 269A: FA : Math Op > Addr : 269B: JZ Label000A Addr : 269B: 0A 02 : jz Address = 269F 2 560 return r Addr : 269D: 6C : Variable Operation Local Offset - 3 Read Addr : 269E: 33 : Return value Addr : 269F: Label000A Addr : 269F: Label000B 561 return t Addr : 269F: 70 : Variable Operation Local Offset - 4 Read Addr : 26A0: 33 : Return value Addr : 26A1: Label0008 Addr : 26A1: Label0009 Addr : 26A1: Label0006 Addr : 26A1: Label0007 562 t := bufend - bufat Addr : 26A1: 54 : Variable Operation Global Offset - 5 Read Addr : 26A2: 50 : Variable Operation Global Offset - 4 Read Addr : 26A3: ED : Math Op - Addr : 26A4: 71 : Variable Operation Local Offset - 4 Write 563 if (t > count) Addr : 26A5: 70 : Variable Operation Local Offset - 4 Read Addr : 26A6: 68 : Variable Operation Local Offset - 2 Read Addr : 26A7: FA : Math Op > Addr : 26A8: JZ Label000C Addr : 26A8: 0A 02 : jz Address = 26AC 2 564 t := count Addr : 26AA: 68 : Variable Operation Local Offset - 2 Read Addr : 26AB: 71 : Variable Operation Local Offset - 4 Write Addr : 26AC: Label000C Addr : 26AC: Label000D 565 bytemove(ubuf, @buf+bufat, t) Addr : 26AC: 64 : Variable Operation Local Offset - 1 Read Addr : 26AD: 8B 48 : Memory Op Byte VBASE + ADDRESS Address = 0048 Addr : 26AF: 50 : Variable Operation Global Offset - 4 Read Addr : 26B0: EC : Math Op + Addr : 26B1: 70 : Variable Operation Local Offset - 4 Read Addr : 26B2: 1C : ByteMove(To, From, Count) 566 bufat += t Addr : 26B3: 70 : Variable Operation Local Offset - 4 Read Addr : 26B4: 52 4C : Variable Operation Global Offset - 4 Assign WordMathop + 567 r += t Addr : 26B6: 70 : Variable Operation Local Offset - 4 Read Addr : 26B7: 6E 4C : Variable Operation Local Offset - 3 Assign WordMathop + 568 ubuf += t Addr : 26B9: 70 : Variable Operation Local Offset - 4 Read Addr : 26BA: 66 4C : Variable Operation Local Offset - 1 Assign WordMathop + 569 count -= t Addr : 26BC: 70 : Variable Operation Local Offset - 4 Read Addr : 26BD: 6A 4D : Variable Operation Local Offset - 2 Assign WordMathop - Addr : 26BF: Label0004 Addr : 26BF: JMP Label0003 Addr : 26BF: 04 44 : Jmp 2685 -60 Addr : 26C1: Label0005 570 return r Addr : 26C1: 6C : Variable Operation Local Offset - 3 Read Addr : 26C2: 33 : Return value Addr : 26C3: Data : 32 2 |===========================================================================| Spin Block pgetc with 0 Parameters and 1 Extra Stack Longs. Method 24 pub pgetc | t |===========================================================================| 578 if (bufat => bufend) Addr : 26C4: 50 : Variable Operation Global Offset - 4 Read Addr : 26C5: 54 : Variable Operation Global Offset - 5 Read Addr : 26C6: FE : Math Op => Addr : 26C7: JZ Label0003 Addr : 26C7: 0A 0B : jz Address = 26D4 11 579 t := pfillbuf Addr : 26C9: 00 : Drop Anchor Push Addr : 26CA: 05 2C : Call Sub 44 Addr : 26CC: 65 : Variable Operation Local Offset - 1 Write 580 if (t =< 0) Addr : 26CD: 64 : Variable Operation Local Offset - 1 Read Addr : 26CE: 35 : Constant 1 $00000000 Addr : 26CF: FD : Math Op =< Addr : 26D0: JZ Label0005 Addr : 26D0: 0A 02 : jz Address = 26D4 2 581 return -1 Addr : 26D2: 34 : Constant 0 $FFFFFFFF Addr : 26D3: 33 : Return value Addr : 26D4: Label0005 Addr : 26D4: Label0006 Addr : 26D4: Label0003 Addr : 26D4: Label0004 582 return (buf[bufat++]) Addr : 26D4: 52 AE : Variable Operation Global Offset - 4 Assign VAR++ post inc Long Push Addr : 26D6: 98 48 : Memory Op Byte VBASE + POP Index READ Address = 0048 Addr : 26D8: 33 : Return value Addr : 26D9: Data : 32 2 |===========================================================================| Spin Block pwrite with 2 Parameters and 2 Extra Stack Longs. Method 25 pub pwrite(ubuf, count) | r, t |===========================================================================| 590 t := 0 Addr : 26DA: 35 : Constant 1 $00000000 Addr : 26DB: 71 : Variable Operation Local Offset - 4 Write Addr : 26DC: Label0003 591 repeat while (count > 0) Addr : 26DC: 68 : Variable Operation Local Offset - 2 Read Addr : 26DD: 35 : Constant 1 $00000000 Addr : 26DE: FA : Math Op > Addr : 26DF: JZ Label0005 Addr : 26DF: 0A 2B : jz Address = 270C 43 592 if (bufat => bufend) Addr : 26E1: 50 : Variable Operation Global Offset - 4 Read Addr : 26E2: 54 : Variable Operation Global Offset - 5 Read Addr : 26E3: FE : Math Op => Addr : 26E4: JZ Label0006 Addr : 26E4: 0A 06 : jz Address = 26EC 6 593 t := pflushbuf(bufat, 0) Addr : 26E6: 00 : Drop Anchor Push Addr : 26E7: 50 : Variable Operation Global Offset - 4 Read Addr : 26E8: 35 : Constant 1 $00000000 Addr : 26E9: 05 2B : Call Sub 43 Addr : 26EB: 71 : Variable Operation Local Offset - 4 Write Addr : 26EC: Label0006 Addr : 26EC: Label0007 594 t := bufend - bufat Addr : 26EC: 54 : Variable Operation Global Offset - 5 Read Addr : 26ED: 50 : Variable Operation Global Offset - 4 Read Addr : 26EE: ED : Math Op - Addr : 26EF: 71 : Variable Operation Local Offset - 4 Write 595 if (t > count) Addr : 26F0: 70 : Variable Operation Local Offset - 4 Read Addr : 26F1: 68 : Variable Operation Local Offset - 2 Read Addr : 26F2: FA : Math Op > Addr : 26F3: JZ Label0008 Addr : 26F3: 0A 02 : jz Address = 26F7 2 596 t := count Addr : 26F5: 68 : Variable Operation Local Offset - 2 Read Addr : 26F6: 71 : Variable Operation Local Offset - 4 Write Addr : 26F7: Label0008 Addr : 26F7: Label0009 597 bytemove(@buf+bufat, ubuf, t) Addr : 26F7: 8B 48 : Memory Op Byte VBASE + ADDRESS Address = 0048 Addr : 26F9: 50 : Variable Operation Global Offset - 4 Read Addr : 26FA: EC : Math Op + Addr : 26FB: 64 : Variable Operation Local Offset - 1 Read Addr : 26FC: 70 : Variable Operation Local Offset - 4 Read Addr : 26FD: 1C : ByteMove(To, From, Count) 598 r += t Addr : 26FE: 70 : Variable Operation Local Offset - 4 Read Addr : 26FF: 6E 4C : Variable Operation Local Offset - 3 Assign WordMathop + 599 bufat += t Addr : 2701: 70 : Variable Operation Local Offset - 4 Read Addr : 2702: 52 4C : Variable Operation Global Offset - 4 Assign WordMathop + 600 ubuf += t Addr : 2704: 70 : Variable Operation Local Offset - 4 Read Addr : 2705: 66 4C : Variable Operation Local Offset - 1 Assign WordMathop + 601 count -= t Addr : 2707: 70 : Variable Operation Local Offset - 4 Read Addr : 2708: 6A 4D : Variable Operation Local Offset - 2 Assign WordMathop - Addr : 270A: Label0004 Addr : 270A: JMP Label0003 Addr : 270A: 04 50 : Jmp 26DC -48 Addr : 270C: Label0005 602 return t Addr : 270C: 70 : Variable Operation Local Offset - 4 Read Addr : 270D: 33 : Return value Addr : 270E: Data : 32 2 |===========================================================================| Spin Block pputc with 1 Parameters and 0 Extra Stack Longs. Method 26 pub pputc(c) |===========================================================================| 609 buf[bufat++] := c Addr : 270F: 64 : Variable Operation Local Offset - 1 Read Addr : 2710: 52 AE : Variable Operation Global Offset - 4 Assign VAR++ post inc Long Push Addr : 2712: 99 48 : Memory Op Byte VBASE + POP Index WRITE Address = 0048 610 if (bufat == SECTORSIZE) Addr : 2714: 50 : Variable Operation Global Offset - 4 Read Addr : 2715: 37 08 : Constant Mask Y=8 00000200 Addr : 2717: FC : Math Op == Addr : 2718: JZ Label0003 Addr : 2718: 0A 07 : jz Address = 2721 7 611 return pflushbuf(SECTORSIZE, 0) Addr : 271A: 00 : Drop Anchor Push Addr : 271B: 37 08 : Constant Mask Y=8 00000200 Addr : 271D: 35 : Constant 1 $00000000 Addr : 271E: 05 2B : Call Sub 43 Addr : 2720: 33 : Return value Addr : 2721: Label0003 Addr : 2721: Label0004 612 return 0 Addr : 2721: 35 : Constant 1 $00000000 Addr : 2722: 33 : Return value Addr : 2723: Data : 32 2 |===========================================================================| Spin Block opendir with 0 Parameters and 1 Extra Stack Longs. Method 27 pub opendir | off |===========================================================================| 619 pclose Addr : 2724: 01 : Drop Anchor Addr : 2725: 05 15 : Call Sub 21 620 off := rootdir - (dataregion << SECTORSHIFT) Addr : 2727: C8 24 : Memory Op Long VBASE + READ Address = 0024 Addr : 2729: C8 2C : Memory Op Long VBASE + READ Address = 002C Addr : 272B: 38 09 : Constant 1 Bytes - 09 Addr : 272D: E3 : Math Op << Addr : 272E: ED : Math Op - Addr : 272F: 65 : Variable Operation Local Offset - 1 Write 621 fclust := off >> (clustershift + SECTORSHIFT) Addr : 2730: 64 : Variable Operation Local Offset - 1 Read Addr : 2731: C8 30 : Memory Op Long VBASE + READ Address = 0030 Addr : 2733: 38 09 : Constant 1 Bytes - 09 Addr : 2735: EC : Math Op + Addr : 2736: E2 : Math Op >> Addr : 2737: 41 : Variable Operation Global Offset - 0 Write 622 floc := off - (fclust << (clustershift + SECTORSHIFT)) Addr : 2738: 64 : Variable Operation Local Offset - 1 Read Addr : 2739: 40 : Variable Operation Global Offset - 0 Read Addr : 273A: C8 30 : Memory Op Long VBASE + READ Address = 0030 Addr : 273C: 38 09 : Constant 1 Bytes - 09 Addr : 273E: EC : Math Op + Addr : 273F: E3 : Math Op << Addr : 2740: ED : Math Op - Addr : 2741: 49 : Variable Operation Global Offset - 2 Write 623 frem := rootdirend - rootdir Addr : 2742: C8 28 : Memory Op Long VBASE + READ Address = 0028 Addr : 2744: C8 24 : Memory Op Long VBASE + READ Address = 0024 Addr : 2746: ED : Math Op - Addr : 2747: 4D : Variable Operation Global Offset - 3 Write 624 filesize := floc + frem Addr : 2748: 48 : Variable Operation Global Offset - 2 Read Addr : 2749: 4C : Variable Operation Global Offset - 3 Read Addr : 274A: EC : Math Op + Addr : 274B: 45 : Variable Operation Global Offset - 1 Write 625 return 0 Addr : 274C: 35 : Constant 1 $00000000 Addr : 274D: 33 : Return value Addr : 274E: Data : 32 2 |===========================================================================| Spin Block nextfile with 1 Parameters and 4 Extra Stack Longs. Method 28 pub nextfile(fbuf) | i, t, at, lns |===========================================================================| 634 repeat Addr : 274F: Label0003 635 if (bufat => bufend) Addr : 274F: 50 : Variable Operation Global Offset - 4 Read Addr : 2750: 54 : Variable Operation Global Offset - 5 Read Addr : 2751: FE : Math Op => Addr : 2752: JZ Label0006 Addr : 2752: 0A 0B : jz Address = 275F 11 636 t := pfillbuf Addr : 2754: 00 : Drop Anchor Push Addr : 2755: 05 2C : Call Sub 44 Addr : 2757: 6D : Variable Operation Local Offset - 3 Write 637 if (t < 0) Addr : 2758: 6C : Variable Operation Local Offset - 3 Read Addr : 2759: 35 : Constant 1 $00000000 Addr : 275A: F9 : Math Op < Addr : 275B: JZ Label0008 Addr : 275B: 0A 02 : jz Address = 275F 2 638 return t Addr : 275D: 6C : Variable Operation Local Offset - 3 Read Addr : 275E: 33 : Return value Addr : 275F: Label0008 Addr : 275F: Label0009 Addr : 275F: Label0006 Addr : 275F: Label0007 639 if (((floc >> SECTORSHIFT) & ((1 << clustershift) - 1)) == 0) Addr : 275F: 48 : Variable Operation Global Offset - 2 Read Addr : 2760: 38 09 : Constant 1 Bytes - 09 Addr : 2762: E2 : Math Op >> Addr : 2763: 36 : Constant 2 $00000001 Addr : 2764: C8 30 : Memory Op Long VBASE + READ Address = 0030 Addr : 2766: E3 : Math Op << Addr : 2767: 36 : Constant 2 $00000001 Addr : 2768: ED : Math Op - Addr : 2769: E8 : Math Op & Addr : 276A: 35 : Constant 1 $00000000 Addr : 276B: FC : Math Op == Addr : 276C: JZ Label000A Addr : 276C: 0A 02 : jz Address = 2770 2 640 fclust++ Addr : 276E: 42 2E : Variable Operation Global Offset - 0 Assign VAR++ post inc Long Addr : 2770: Label000A Addr : 2770: Label000B 641 at := @buf + bufat Addr : 2770: 8B 48 : Memory Op Byte VBASE + ADDRESS Address = 0048 Addr : 2772: 50 : Variable Operation Global Offset - 4 Read Addr : 2773: EC : Math Op + Addr : 2774: 71 : Variable Operation Local Offset - 4 Write 642 if (byte[at] == 0) Addr : 2775: 70 : Variable Operation Local Offset - 4 Read Addr : 2776: 80 : Memory Op Byte POP Address READ Addr : 2777: 35 : Constant 1 $00000000 Addr : 2778: FC : Math Op == Addr : 2779: JZ Label000C Addr : 2779: 0A 02 : jz Address = 277D 2 643 return -1 Addr : 277B: 34 : Constant 0 $FFFFFFFF Addr : 277C: 33 : Return value Addr : 277D: Label000C Addr : 277D: Label000D 644 bufat += DIRSIZE Addr : 277D: 37 04 : Constant Mask Y=4 00000020 Addr : 277F: 52 4C : Variable Operation Global Offset - 4 Assign WordMathop + 645 if (byte[at] <> $e5 and (byte[at][$0b] & $18) == 0) Addr : 2781: 70 : Variable Operation Local Offset - 4 Read Addr : 2782: 80 : Memory Op Byte POP Address READ Addr : 2783: 38 E5 : Constant 1 Bytes - E5 Addr : 2785: FB : Math Op <> Addr : 2786: 70 : Variable Operation Local Offset - 4 Read Addr : 2787: 38 0B : Constant 1 Bytes - 0B Addr : 2789: 90 : Memory Op Byte POP Address POP Index READ Addr : 278A: 38 18 : Constant 1 Bytes - 18 Addr : 278C: E8 : Math Op & Addr : 278D: 35 : Constant 1 $00000000 Addr : 278E: FC : Math Op == Addr : 278F: F0 : Math Op AND Addr : 2790: JZ Label000E Addr : 2790: 0A 39 : jz Address = 27CB 57 646 lns := fbuf Addr : 2792: 64 : Variable Operation Local Offset - 1 Read Addr : 2793: 75 : Variable Operation Local Offset - 5 Write 647 repeat i from 0 to 10 Addr : 2794: 35 : Constant 1 $00000000 Addr : 2795: 69 : Variable Operation Local Offset - 2 Write Addr : 2796: Label0010 648 byte[fbuf] := byte[at][i] Addr : 2796: 70 : Variable Operation Local Offset - 4 Read Addr : 2797: 68 : Variable Operation Local Offset - 2 Read Addr : 2798: 90 : Memory Op Byte POP Address POP Index READ Addr : 2799: 64 : Variable Operation Local Offset - 1 Read Addr : 279A: 81 : Memory Op Byte POP Address WRITE 649 fbuf++ Addr : 279B: 66 2E : Variable Operation Local Offset - 1 Assign VAR++ post inc Long 650 if (byte[at][i] <> " ") Addr : 279D: 70 : Variable Operation Local Offset - 4 Read Addr : 279E: 68 : Variable Operation Local Offset - 2 Read Addr : 279F: 90 : Memory Op Byte POP Address POP Index READ Addr : 27A0: 37 04 : Constant Mask Y=4 00000020 Addr : 27A2: FB : Math Op <> Addr : 27A3: JZ Label0013 Addr : 27A3: 0A 02 : jz Address = 27A7 2 651 lns := fbuf Addr : 27A5: 64 : Variable Operation Local Offset - 1 Read Addr : 27A6: 75 : Variable Operation Local Offset - 5 Write Addr : 27A7: Label0013 Addr : 27A7: Label0014 652 if (i == 7 or i == 10) Addr : 27A7: 68 : Variable Operation Local Offset - 2 Read Addr : 27A8: 37 22 : Constant Mask Y=34 Decrement 00000007 Addr : 27AA: FC : Math Op == Addr : 27AB: 68 : Variable Operation Local Offset - 2 Read Addr : 27AC: 38 0A : Constant 1 Bytes - 0A Addr : 27AE: FC : Math Op == Addr : 27AF: F2 : Math Op OR Addr : 27B0: JZ Label0015 Addr : 27B0: 0A 0E : jz Address = 27C0 14 653 fbuf := lns Addr : 27B2: 74 : Variable Operation Local Offset - 5 Read Addr : 27B3: 65 : Variable Operation Local Offset - 1 Write 654 if (i == 7) Addr : 27B4: 68 : Variable Operation Local Offset - 2 Read Addr : 27B5: 37 22 : Constant Mask Y=34 Decrement 00000007 Addr : 27B7: FC : Math Op == Addr : 27B8: JZ Label0017 Addr : 27B8: 0A 06 : jz Address = 27C0 6 655 byte[fbuf] := "." Addr : 27BA: 38 2E : Constant 1 Bytes - 2E Addr : 27BC: 64 : Variable Operation Local Offset - 1 Read Addr : 27BD: 81 : Memory Op Byte POP Address WRITE 656 fbuf++ Addr : 27BE: 66 2E : Variable Operation Local Offset - 1 Assign VAR++ post inc Long Addr : 27C0: Label0017 Addr : 27C0: Label0018 Addr : 27C0: Label0015 Addr : 27C0: Label0016 Addr : 27C0: Label0011 647 repeat i from 0 to 10 Addr : 27C0: 35 : Constant 1 $00000000 Addr : 27C1: 38 0A : Constant 1 Bytes - 0A Addr : 27C3: Repeat i Step Label0010 Addr : 27C3: 6A 02 50 : Variable Operation Local Offset - 2 Assign Repeat-Var loop Address= 2796 -48 Addr : 27C6: Label0012 657 byte[fbuf] := 0 Addr : 27C6: 35 : Constant 1 $00000000 Addr : 27C7: 64 : Variable Operation Local Offset - 1 Read Addr : 27C8: 81 : Memory Op Byte POP Address WRITE 658 return 0 Addr : 27C9: 35 : Constant 1 $00000000 Addr : 27CA: 33 : Return value Addr : 27CB: Label000E Addr : 27CB: Label000F Addr : 27CB: Label0004 Addr : 27CB: JMP Label0003 Addr : 27CB: 04 FF 81 : Jmp 274F -127 Addr : 27CE: Label0005 Addr : 27CE: 32 : Return |===========================================================================| Spin Block writeblock2 with 2 Parameters and 0 Extra Stack Longs. Method 29 pri writeblock2(n, b) |===========================================================================| 162 ldr.writeSDCard(n, b, SECTORSIZE) Addr : 27CF: 01 : Drop Anchor Addr : 27D0: 64 : Variable Operation Local Offset - 1 Read Addr : 27D1: 68 : Variable Operation Local Offset - 2 Read Addr : 27D2: 37 08 : Constant Mask Y=8 00000200 Addr : 27D4: 06 2E 0A : Call Obj.Sub 46 10 163 if (n => fat1 and n < fat1 + sectorsperfat) Addr : 27D7: 64 : Variable Operation Local Offset - 1 Read Addr : 27D8: C8 34 : Memory Op Long VBASE + READ Address = 0034 Addr : 27DA: FE : Math Op => Addr : 27DB: 64 : Variable Operation Local Offset - 1 Read Addr : 27DC: C8 34 : Memory Op Long VBASE + READ Address = 0034 Addr : 27DE: C8 3C : Memory Op Long VBASE + READ Address = 003C Addr : 27E0: EC : Math Op + Addr : 27E1: F9 : Math Op < Addr : 27E2: F0 : Math Op AND Addr : 27E3: JZ Label0003 Addr : 27E3: 0A 0B : jz Address = 27F0 11 164 ldr.writeSDCard(n+sectorsperfat, b, SECTORSIZE) Addr : 27E5: 01 : Drop Anchor Addr : 27E6: 64 : Variable Operation Local Offset - 1 Read Addr : 27E7: C8 3C : Memory Op Long VBASE + READ Address = 003C Addr : 27E9: EC : Math Op + Addr : 27EA: 68 : Variable Operation Local Offset - 2 Read Addr : 27EB: 37 08 : Constant Mask Y=8 00000200 Addr : 27ED: 06 2E 0A : Call Obj.Sub 46 10 Addr : 27F0: Label0003 Addr : 27F0: Label0004 Addr : 27F0: 32 : Return |===========================================================================| Spin Block flushifdirty with 0 Parameters and 0 Extra Stack Longs. Method 30 pri flushifdirty |===========================================================================| 170 if (dirty) Addr : 27F1: C8 44 : Memory Op Long VBASE + READ Address = 0044 Addr : 27F3: JZ Label0003 Addr : 27F3: 0A 0B : jz Address = 2800 11 171 writeblock2(lastread, @buf2) Addr : 27F5: 01 : Drop Anchor Addr : 27F6: C8 40 : Memory Op Long VBASE + READ Address = 0040 Addr : 27F8: 8B 82 48 : Memory Op Byte VBASE + ADDRESS Address = 0248 Addr : 27FB: 05 1D : Call Sub 29 172 dirty := 0 Addr : 27FD: 35 : Constant 1 $00000000 Addr : 27FE: C9 44 : Memory Op Long VBASE + WRITE Address = 0044 Addr : 2800: Label0003 Addr : 2800: Label0004 Addr : 2800: 32 : Return |===========================================================================| Spin Block readblockc with 1 Parameters and 0 Extra Stack Longs. Method 31 pri readblockc(n) |===========================================================================| 179 if (n <> lastread) Addr : 2801: 64 : Variable Operation Local Offset - 1 Read Addr : 2802: C8 40 : Memory Op Long VBASE + READ Address = 0040 Addr : 2804: FB : Math Op <> Addr : 2805: JZ Label0003 Addr : 2805: 0A 10 : jz Address = 2817 16 180 flushifdirty Addr : 2807: 01 : Drop Anchor Addr : 2808: 05 1E : Call Sub 30 181 ldr.readSDCard(n, @buf2, SECTORSIZE) Addr : 280A: 01 : Drop Anchor Addr : 280B: 64 : Variable Operation Local Offset - 1 Read Addr : 280C: 8B 82 48 : Memory Op Byte VBASE + ADDRESS Address = 0248 Addr : 280F: 37 08 : Constant Mask Y=8 00000200 Addr : 2811: 06 2E 09 : Call Obj.Sub 46 9 182 lastread := n Addr : 2814: 64 : Variable Operation Local Offset - 1 Read Addr : 2815: C9 40 : Memory Op Long VBASE + WRITE Address = 0040 Addr : 2817: Label0003 Addr : 2817: Label0004 Addr : 2817: 32 : Return |===========================================================================| Spin Block brword with 1 Parameters and 0 Extra Stack Longs. Method 32 pri brword(b) |===========================================================================| 188 return (byte[b]) + ((byte[b][1]) << 8) Addr : 2818: 64 : Variable Operation Local Offset - 1 Read Addr : 2819: 80 : Memory Op Byte POP Address READ Addr : 281A: 64 : Variable Operation Local Offset - 1 Read Addr : 281B: 36 : Constant 2 $00000001 Addr : 281C: 90 : Memory Op Byte POP Address POP Index READ Addr : 281D: 37 02 : Constant Mask Y=2 00000008 Addr : 281F: E3 : Math Op << Addr : 2820: EC : Math Op + Addr : 2821: 33 : Return value Addr : 2822: Data : 32 2 |===========================================================================| Spin Block brlong with 1 Parameters and 0 Extra Stack Longs. Method 33 pri brlong(b) |===========================================================================| 194 return brword(b) + (brword(b+2) << 16) Addr : 2823: 00 : Drop Anchor Push Addr : 2824: 64 : Variable Operation Local Offset - 1 Read Addr : 2825: 05 20 : Call Sub 32 Addr : 2827: 00 : Drop Anchor Push Addr : 2828: 64 : Variable Operation Local Offset - 1 Read Addr : 2829: 37 00 : Constant Mask Y=0 00000002 Addr : 282B: EC : Math Op + Addr : 282C: 05 20 : Call Sub 32 Addr : 282E: 37 03 : Constant Mask Y=3 00000010 Addr : 2830: E3 : Math Op << Addr : 2831: EC : Math Op + Addr : 2832: 33 : Return value Addr : 2833: Data : 32 2 |===========================================================================| Spin Block brwword with 2 Parameters and 0 Extra Stack Longs. Method 34 pri brwword(w, v) |===========================================================================| 201 byte[w++] := v Addr : 2834: 68 : Variable Operation Local Offset - 2 Read Addr : 2835: 66 AE : Variable Operation Local Offset - 1 Assign VAR++ post inc Long Push Addr : 2837: 81 : Memory Op Byte POP Address WRITE 202 byte[w] := v >> 8 Addr : 2838: 68 : Variable Operation Local Offset - 2 Read Addr : 2839: 37 02 : Constant Mask Y=2 00000008 Addr : 283B: E2 : Math Op >> Addr : 283C: 64 : Variable Operation Local Offset - 1 Read Addr : 283D: 81 : Memory Op Byte POP Address WRITE 203 dirty := 1 Addr : 283E: 36 : Constant 2 $00000001 Addr : 283F: C9 44 : Memory Op Long VBASE + WRITE Address = 0044 Addr : 2841: 32 : Return |===========================================================================| Spin Block brwlong with 2 Parameters and 0 Extra Stack Longs. Method 35 pri brwlong(w, v) |===========================================================================| 210 brwword(w, v) Addr : 2842: 01 : Drop Anchor Addr : 2843: 64 : Variable Operation Local Offset - 1 Read Addr : 2844: 68 : Variable Operation Local Offset - 2 Read Addr : 2845: 05 22 : Call Sub 34 211 brwword(w+2, v >> 16) Addr : 2847: 01 : Drop Anchor Addr : 2848: 64 : Variable Operation Local Offset - 1 Read Addr : 2849: 37 00 : Constant Mask Y=0 00000002 Addr : 284B: EC : Math Op + Addr : 284C: 68 : Variable Operation Local Offset - 2 Read Addr : 284D: 37 03 : Constant Mask Y=3 00000010 Addr : 284F: E2 : Math Op >> Addr : 2850: 05 22 : Call Sub 34 Addr : 2852: 32 : Return |===========================================================================| Spin Block readbytec with 1 Parameters and 0 Extra Stack Longs. Method 36 pri readbytec(byteloc) |===========================================================================| 265 readblockc(byteloc >> SECTORSHIFT) Addr : 2853: 01 : Drop Anchor Addr : 2854: 64 : Variable Operation Local Offset - 1 Read Addr : 2855: 38 09 : Constant 1 Bytes - 09 Addr : 2857: E2 : Math Op >> Addr : 2858: 05 1F : Call Sub 31 266 return @buf2 + (byteloc & constant(SECTORSIZE - 1)) Addr : 285A: 8B 82 48 : Memory Op Byte VBASE + ADDRESS Address = 0248 Addr : 285D: 64 : Variable Operation Local Offset - 1 Read Addr : 285E: 37 28 : Constant Mask Y=40 Decrement 000001FF Addr : 2860: E8 : Math Op & Addr : 2861: EC : Math Op + Addr : 2862: 33 : Return value Addr : 2863: Data : 32 2 |===========================================================================| Spin Block readfat with 1 Parameters and 0 Extra Stack Longs. Method 37 pri readfat(clust) |===========================================================================| 273 fatptr := (fat1 << SECTORSHIFT) + (clust << 1) Addr : 2864: C8 34 : Memory Op Long VBASE + READ Address = 0034 Addr : 2866: 38 09 : Constant 1 Bytes - 09 Addr : 2868: E3 : Math Op << Addr : 2869: 64 : Variable Operation Local Offset - 1 Read Addr : 286A: 36 : Constant 2 $00000001 Addr : 286B: E3 : Math Op << Addr : 286C: EC : Math Op + Addr : 286D: C9 20 : Memory Op Long VBASE + WRITE Address = 0020 274 return readbytec(fatptr) Addr : 286F: 00 : Drop Anchor Push Addr : 2870: C8 20 : Memory Op Long VBASE + READ Address = 0020 Addr : 2872: 05 24 : Call Sub 36 Addr : 2874: 33 : Return value Addr : 2875: Data : 32 2 |===========================================================================| Spin Block followchain with 0 Parameters and 1 Extra Stack Longs. Method 38 pri followchain | clust |===========================================================================| 280 clust := brword(readfat(fclust)) Addr : 2876: 00 : Drop Anchor Push Addr : 2877: 00 : Drop Anchor Push Addr : 2878: 40 : Variable Operation Global Offset - 0 Read Addr : 2879: 05 25 : Call Sub 37 Addr : 287B: 05 20 : Call Sub 32 Addr : 287D: 65 : Variable Operation Local Offset - 1 Write 281 writelink := fatptr Addr : 287E: C8 20 : Memory Op Long VBASE + READ Address = 0020 Addr : 2880: 59 : Variable Operation Global Offset - 6 Write 282 return clust Addr : 2881: 64 : Variable Operation Local Offset - 1 Read Addr : 2882: 33 : Return value Addr : 2883: Data : 32 2 |===========================================================================| Spin Block nextcluster with 0 Parameters and 1 Extra Stack Longs. Method 39 pri nextcluster | clust |===========================================================================| 290 clust := followchain Addr : 2884: 00 : Drop Anchor Push Addr : 2885: 05 26 : Call Sub 38 Addr : 2887: 65 : Variable Operation Local Offset - 1 Write 291 if (clust < 2 or clust => totclusters) Addr : 2888: 64 : Variable Operation Local Offset - 1 Read Addr : 2889: 37 00 : Constant Mask Y=0 00000002 Addr : 288B: F9 : Math Op < Addr : 288C: 64 : Variable Operation Local Offset - 1 Read Addr : 288D: C8 38 : Memory Op Long VBASE + READ Address = 0038 Addr : 288F: FE : Math Op => Addr : 2890: F2 : Math Op OR Addr : 2891: JZ Label0003 Addr : 2891: 0A 03 : jz Address = 2896 3 292 abort(-9) ' bad cluster value Addr : 2893: 37 42 : Constant Mask Y=66 Invert FFFFFFF7 Addr : 2895: 31 : Abort value Addr : 2896: Label0003 Addr : 2896: Label0004 293 return clust Addr : 2896: 64 : Variable Operation Local Offset - 1 Read Addr : 2897: 33 : Return value Addr : 2898: Data : 32 2 |===========================================================================| Spin Block freeclusters with 1 Parameters and 1 Extra Stack Longs. Method 40 pri freeclusters(clust) | bp |===========================================================================| 300 repeat while (clust < $fff0) Addr : 2899: Label0003 Addr : 2899: 64 : Variable Operation Local Offset - 1 Read Addr : 289A: 39 FF F0 : Constant 2 Bytes - FF F0 Addr : 289D: F9 : Math Op < Addr : 289E: JZ Label0005 Addr : 289E: 0A 1B : jz Address = 28BB 27 301 if (clust < 2) Addr : 28A0: 64 : Variable Operation Local Offset - 1 Read Addr : 28A1: 37 00 : Constant Mask Y=0 00000002 Addr : 28A3: F9 : Math Op < Addr : 28A4: JZ Label0006 Addr : 28A4: 0A 04 : jz Address = 28AA 4 302 abort(-26) ' bad cluster number") Addr : 28A6: 38 19 : Constant 1 Bytes - 19 Addr : 28A8: E7 : Math Op ! Addr : 28A9: 31 : Abort value Addr : 28AA: Label0006 Addr : 28AA: Label0007 303 bp := readfat(clust) Addr : 28AA: 00 : Drop Anchor Push Addr : 28AB: 64 : Variable Operation Local Offset - 1 Read Addr : 28AC: 05 25 : Call Sub 37 Addr : 28AE: 69 : Variable Operation Local Offset - 2 Write 304 clust := brword(bp) Addr : 28AF: 00 : Drop Anchor Push Addr : 28B0: 68 : Variable Operation Local Offset - 2 Read Addr : 28B1: 05 20 : Call Sub 32 Addr : 28B3: 65 : Variable Operation Local Offset - 1 Write 305 brwword(bp, 0) Addr : 28B4: 01 : Drop Anchor Addr : 28B5: 68 : Variable Operation Local Offset - 2 Read Addr : 28B6: 35 : Constant 1 $00000000 Addr : 28B7: 05 22 : Call Sub 34 Addr : 28B9: Label0004 Addr : 28B9: JMP Label0003 Addr : 28B9: 04 5E : Jmp 2899 -34 Addr : 28BB: Label0005 306 flushifdirty Addr : 28BB: 01 : Drop Anchor Addr : 28BC: 05 1E : Call Sub 30 Addr : 28BE: 32 : Return |===========================================================================| Spin Block datablock with 0 Parameters and 0 Extra Stack Longs. Method 41 pri datablock |===========================================================================| 312 return (fclust << clustershift) + dataregion + ((floc >> SECTORSHIFT) & ((1 << clustershift) - 1)) Addr : 28BF: 40 : Variable Operation Global Offset - 0 Read Addr : 28C0: C8 30 : Memory Op Long VBASE + READ Address = 0030 Addr : 28C2: E3 : Math Op << Addr : 28C3: C8 2C : Memory Op Long VBASE + READ Address = 002C Addr : 28C5: EC : Math Op + Addr : 28C6: 48 : Variable Operation Global Offset - 2 Read Addr : 28C7: 38 09 : Constant 1 Bytes - 09 Addr : 28C9: E2 : Math Op >> Addr : 28CA: 36 : Constant 2 $00000001 Addr : 28CB: C8 30 : Memory Op Long VBASE + READ Address = 0030 Addr : 28CD: E3 : Math Op << Addr : 28CE: 36 : Constant 2 $00000001 Addr : 28CF: ED : Math Op - Addr : 28D0: E8 : Math Op & Addr : 28D1: EC : Math Op + Addr : 28D2: 33 : Return value Addr : 28D3: Data : 32 2 |===========================================================================| Spin Block uc with 1 Parameters and 0 Extra Stack Longs. Method 42 pri uc(c) |===========================================================================| 318 if ("a" =< c and c =< "z") Addr : 28D4: 38 61 : Constant 1 Bytes - 61 Addr : 28D6: 64 : Variable Operation Local Offset - 1 Read Addr : 28D7: FD : Math Op =< Addr : 28D8: 64 : Variable Operation Local Offset - 1 Read Addr : 28D9: 38 7A : Constant 1 Bytes - 7A Addr : 28DB: FD : Math Op =< Addr : 28DC: F0 : Math Op AND Addr : 28DD: JZ Label0003 Addr : 28DD: 0A 05 : jz Address = 28E4 5 319 return c - 32 Addr : 28DF: 64 : Variable Operation Local Offset - 1 Read Addr : 28E0: 37 04 : Constant Mask Y=4 00000020 Addr : 28E2: ED : Math Op - Addr : 28E3: 33 : Return value Addr : 28E4: Label0003 Addr : 28E4: Label0004 320 return c Addr : 28E4: 64 : Variable Operation Local Offset - 1 Read Addr : 28E5: 33 : Return value Addr : 28E6: Data : 32 2 |===========================================================================| Spin Block pflushbuf with 2 Parameters and 4 Extra Stack Longs. Method 43 pri pflushbuf(r, metadata) | cluststart, newcluster, count, i |===========================================================================| 329 if (direntry == 0) Addr : 28E7: 5C : Variable Operation Global Offset - 7 Read Addr : 28E8: 35 : Constant 1 $00000000 Addr : 28E9: FC : Math Op == Addr : 28EA: JZ Label0003 Addr : 28EA: 0A 04 : jz Address = 28F0 4 330 abort(-27) ' not open for writing Addr : 28EC: 38 1A : Constant 1 Bytes - 1A Addr : 28EE: E7 : Math Op ! Addr : 28EF: 31 : Abort value Addr : 28F0: Label0003 Addr : 28F0: Label0004 331 if (r > 0) ' must *not* allocate cluster if flushing an empty buffer Addr : 28F0: 64 : Variable Operation Local Offset - 1 Read Addr : 28F1: 35 : Constant 1 $00000000 Addr : 28F2: FA : Math Op > Addr : 28F3: JZ Label0005 Addr : 28F3: 0A 80 AC : jz Address = 29A2 172 332 if (frem < SECTORSIZE) Addr : 28F6: 4C : Variable Operation Global Offset - 3 Read Addr : 28F7: 37 08 : Constant Mask Y=8 00000200 Addr : 28F9: F9 : Math Op < Addr : 28FA: JZ Label0007 Addr : 28FA: 0A 80 82 : jz Address = 297F 130 335 newcluster := -1 Addr : 28FD: 34 : Constant 0 $FFFFFFFF Addr : 28FE: 71 : Variable Operation Local Offset - 4 Write 336 cluststart := fclust & constant(!((SECTORSIZE >> 1) - 1)) Addr : 28FF: 40 : Variable Operation Global Offset - 0 Read Addr : 2900: 37 67 : Constant Mask Y=103 Decrement Invert FFFFFF00 Addr : 2902: E8 : Math Op & Addr : 2903: 6D : Variable Operation Local Offset - 3 Write 337 count := 2 Addr : 2904: 37 00 : Constant Mask Y=0 00000002 Addr : 2906: 75 : Variable Operation Local Offset - 5 Write Addr : 2907: Label0009 339 readfat(cluststart) Addr : 2907: 01 : Drop Anchor Addr : 2908: 6C : Variable Operation Local Offset - 3 Read Addr : 2909: 05 25 : Call Sub 37 340 repeat i from 0 to constant(SECTORSIZE - 2) step 2 Addr : 290B: 35 : Constant 1 $00000000 Addr : 290C: 79 : Variable Operation Local Offset - 6 Write Addr : 290D: Label000C 341 if (buf2[i]==0 and buf2[i+1]==0) Addr : 290D: 78 : Variable Operation Local Offset - 6 Read Addr : 290E: 98 82 48 : Memory Op Byte VBASE + POP Index READ Address = 0248 Addr : 2911: 35 : Constant 1 $00000000 Addr : 2912: FC : Math Op == Addr : 2913: 78 : Variable Operation Local Offset - 6 Read Addr : 2914: 36 : Constant 2 $00000001 Addr : 2915: EC : Math Op + Addr : 2916: 98 82 48 : Memory Op Byte VBASE + POP Index READ Address = 0248 Addr : 2919: 35 : Constant 1 $00000000 Addr : 291A: FC : Math Op == Addr : 291B: F0 : Math Op AND Addr : 291C: JZ Label000F Addr : 291C: 0A 02 : jz Address = 2920 2 342 quit Addr : 291E: JMP Label000E Addr : 291E: 04 09 : Jmp 2929 9 Addr : 2920: Label000F Addr : 2920: Label0010 Addr : 2920: Label000D 340 repeat i from 0 to constant(SECTORSIZE - 2) step 2 Addr : 2920: 37 00 : Constant Mask Y=0 00000002 Addr : 2922: 35 : Constant 1 $00000000 Addr : 2923: 39 01 FE : Constant 2 Bytes - 01 FE Addr : 2926: Repeat i Step Label000C Addr : 2926: 7A 06 64 : Variable Operation Local Offset - 6 Assign Repeat-Var loop (pop step) Address= 290D -28 Addr : 2929: Label000E 343 if (i < SECTORSIZE) Addr : 2929: 78 : Variable Operation Local Offset - 6 Read Addr : 292A: 37 08 : Constant Mask Y=8 00000200 Addr : 292C: F9 : Math Op < Addr : 292D: JZ Label0011 Addr : 292D: 0A 0E : jz Address = 293D 14 344 newcluster := cluststart + (i >> 1) Addr : 292F: 6C : Variable Operation Local Offset - 3 Read Addr : 2930: 78 : Variable Operation Local Offset - 6 Read Addr : 2931: 36 : Constant 2 $00000001 Addr : 2932: E2 : Math Op >> Addr : 2933: EC : Math Op + Addr : 2934: 71 : Variable Operation Local Offset - 4 Write 345 if (newcluster => totclusters) Addr : 2935: 70 : Variable Operation Local Offset - 4 Read Addr : 2936: C8 38 : Memory Op Long VBASE + READ Address = 0038 Addr : 2938: FE : Math Op => Addr : 2939: JZ Label0013 Addr : 2939: 0A 02 : jz Address = 293D 2 346 newcluster := -1 Addr : 293B: 34 : Constant 0 $FFFFFFFF Addr : 293C: 71 : Variable Operation Local Offset - 4 Write Addr : 293D: Label0013 Addr : 293D: Label0014 Addr : 293D: Label0011 Addr : 293D: Label0012 347 if (newcluster > 1) Addr : 293D: 70 : Variable Operation Local Offset - 4 Read Addr : 293E: 36 : Constant 2 $00000001 Addr : 293F: FA : Math Op > Addr : 2940: JZ Label0015 Addr : 2940: 0A 22 : jz Address = 2964 34 348 brwword(@buf2+i, -1) Addr : 2942: 01 : Drop Anchor Addr : 2943: 8B 82 48 : Memory Op Byte VBASE + ADDRESS Address = 0248 Addr : 2946: 78 : Variable Operation Local Offset - 6 Read Addr : 2947: EC : Math Op + Addr : 2948: 34 : Constant 0 $FFFFFFFF Addr : 2949: 05 22 : Call Sub 34 349 brwword(readbytec(writelink), newcluster) Addr : 294B: 01 : Drop Anchor Addr : 294C: 00 : Drop Anchor Push Addr : 294D: 58 : Variable Operation Global Offset - 6 Read Addr : 294E: 05 24 : Call Sub 36 Addr : 2950: 70 : Variable Operation Local Offset - 4 Read Addr : 2951: 05 22 : Call Sub 34 350 writelink := fatptr + i Addr : 2953: C8 20 : Memory Op Long VBASE + READ Address = 0020 Addr : 2955: 78 : Variable Operation Local Offset - 6 Read Addr : 2956: EC : Math Op + Addr : 2957: 59 : Variable Operation Global Offset - 6 Write 351 fclust := newcluster Addr : 2958: 70 : Variable Operation Local Offset - 4 Read Addr : 2959: 41 : Variable Operation Global Offset - 0 Write 352 frem := SECTORSIZE << clustershift Addr : 295A: 37 08 : Constant Mask Y=8 00000200 Addr : 295C: C8 30 : Memory Op Long VBASE + READ Address = 0030 Addr : 295E: E3 : Math Op << Addr : 295F: 4D : Variable Operation Global Offset - 3 Write 353 quit Addr : 2960: JMP Label000B Addr : 2960: 04 1D : Jmp 297F 29 Addr : 2962: JMP Label0016 Addr : 2962: 04 18 : Jmp 297C 24 Addr : 2964: Label0015 355 cluststart += constant(SECTORSIZE >> 1) Addr : 2964: 37 07 : Constant Mask Y=7 00000100 Addr : 2966: 6E 4C : Variable Operation Local Offset - 3 Assign WordMathop + 356 if (cluststart => totclusters) Addr : 2968: 6C : Variable Operation Local Offset - 3 Read Addr : 2969: C8 38 : Memory Op Long VBASE + READ Address = 0038 Addr : 296B: FE : Math Op => Addr : 296C: JZ Label0018 Addr : 296C: 0A 0E : jz Address = 297C 14 357 cluststart := 0 Addr : 296E: 35 : Constant 1 $00000000 Addr : 296F: 6D : Variable Operation Local Offset - 3 Write 358 count-- Addr : 2970: 76 3E : Variable Operation Local Offset - 5 Assign VAR-- post-dec Long 359 if (count < 0) Addr : 2972: 74 : Variable Operation Local Offset - 5 Read Addr : 2973: 35 : Constant 1 $00000000 Addr : 2974: F9 : Math Op < Addr : 2975: JZ Label001A Addr : 2975: 0A 05 : jz Address = 297C 5 360 r := -5 ' No space left on device Addr : 2977: 37 41 : Constant Mask Y=65 Invert FFFFFFFB Addr : 2979: 65 : Variable Operation Local Offset - 1 Write 361 quit Addr : 297A: JMP Label000B Addr : 297A: 04 03 : Jmp 297F 3 Addr : 297C: Label001A Addr : 297C: Label001B Addr : 297C: Label0018 Addr : 297C: Label0019 Addr : 297C: Label0017 Addr : 297C: Label0016 Addr : 297C: Label000A Addr : 297C: JMP Label0009 Addr : 297C: 04 FF 88 : Jmp 2907 -120 Addr : 297F: Label000B Addr : 297F: Label0007 Addr : 297F: Label0008 362 if (frem => SECTORSIZE) Addr : 297F: 4C : Variable Operation Global Offset - 3 Read Addr : 2980: 37 08 : Constant Mask Y=8 00000200 Addr : 2982: FE : Math Op => Addr : 2983: JZ Label001C Addr : 2983: 0A 1D : jz Address = 29A2 29 363 ldr.writeSDCard(datablock, @buf, SECTORSIZE) Addr : 2985: 01 : Drop Anchor Addr : 2986: 00 : Drop Anchor Push Addr : 2987: 05 29 : Call Sub 41 Addr : 2989: 8B 48 : Memory Op Byte VBASE + ADDRESS Address = 0048 Addr : 298B: 37 08 : Constant Mask Y=8 00000200 Addr : 298D: 06 2E 0A : Call Obj.Sub 46 10 364 if (r == SECTORSIZE) ' full buffer, clear it Addr : 2990: 64 : Variable Operation Local Offset - 1 Read Addr : 2991: 37 08 : Constant Mask Y=8 00000200 Addr : 2993: FC : Math Op == Addr : 2994: JZ Label001E Addr : 2994: 0A 0C : jz Address = 29A2 12 365 floc += r Addr : 2996: 64 : Variable Operation Local Offset - 1 Read Addr : 2997: 4A 4C : Variable Operation Global Offset - 2 Assign WordMathop + 366 frem -= r Addr : 2999: 64 : Variable Operation Local Offset - 1 Read Addr : 299A: 4E 4D : Variable Operation Global Offset - 3 Assign WordMathop - 367 bufat := 0 Addr : 299C: 35 : Constant 1 $00000000 Addr : 299D: 51 : Variable Operation Global Offset - 4 Write 368 bufend := r Addr : 299E: 64 : Variable Operation Local Offset - 1 Read Addr : 299F: 55 : Variable Operation Global Offset - 5 Write Addr : 29A0: JMP Label001F Addr : 29A0: 04 00 : Jmp 29A2 0 Addr : 29A2: Label001E Addr : 29A2: Label0020 Addr : 29A2: Label001F Addr : 29A2: Label001C Addr : 29A2: Label001D Addr : 29A2: Label0005 Addr : 29A2: Label0006 371 if (r < 0 or metadata) ' update metadata even if error Addr : 29A2: 64 : Variable Operation Local Offset - 1 Read Addr : 29A3: 35 : Constant 1 $00000000 Addr : 29A4: F9 : Math Op < Addr : 29A5: 68 : Variable Operation Local Offset - 2 Read Addr : 29A6: F2 : Math Op OR Addr : 29A7: JZ Label0021 Addr : 29A7: 0A 1B : jz Address = 29C4 27 372 readblockc(direntry >> SECTORSHIFT) ' flushes unwritten FAT too Addr : 29A9: 01 : Drop Anchor Addr : 29AA: 5C : Variable Operation Global Offset - 7 Read Addr : 29AB: 38 09 : Constant 1 Bytes - 09 Addr : 29AD: E2 : Math Op >> Addr : 29AE: 05 1F : Call Sub 31 373 brwlong(@buf2+(direntry & constant(SECTORSIZE-1))+28, floc+bufat) Addr : 29B0: 01 : Drop Anchor Addr : 29B1: 8B 82 48 : Memory Op Byte VBASE + ADDRESS Address = 0248 Addr : 29B4: 5C : Variable Operation Global Offset - 7 Read Addr : 29B5: 37 28 : Constant Mask Y=40 Decrement 000001FF Addr : 29B7: E8 : Math Op & Addr : 29B8: EC : Math Op + Addr : 29B9: 38 1C : Constant 1 Bytes - 1C Addr : 29BB: EC : Math Op + Addr : 29BC: 48 : Variable Operation Global Offset - 2 Read Addr : 29BD: 50 : Variable Operation Global Offset - 4 Read Addr : 29BE: EC : Math Op + Addr : 29BF: 05 23 : Call Sub 35 374 flushifdirty Addr : 29C1: 01 : Drop Anchor Addr : 29C2: 05 1E : Call Sub 30 Addr : 29C4: Label0021 Addr : 29C4: Label0022 375 if (r < 0) Addr : 29C4: 64 : Variable Operation Local Offset - 1 Read Addr : 29C5: 35 : Constant 1 $00000000 Addr : 29C6: F9 : Math Op < Addr : 29C7: JZ Label0023 Addr : 29C7: 0A 02 : jz Address = 29CB 2 376 abort(r) Addr : 29C9: 64 : Variable Operation Local Offset - 1 Read Addr : 29CA: 31 : Abort value Addr : 29CB: Label0023 Addr : 29CB: Label0024 377 return r Addr : 29CB: 64 : Variable Operation Local Offset - 1 Read Addr : 29CC: 33 : Return value Addr : 29CD: Data : 32 2 |===========================================================================| Spin Block pfillbuf with 0 Parameters and 1 Extra Stack Longs. Method 44 pri pfillbuf | r |===========================================================================| 392 if (floc => filesize) Addr : 29CE: 48 : Variable Operation Global Offset - 2 Read Addr : 29CF: 44 : Variable Operation Global Offset - 1 Read Addr : 29D0: FE : Math Op => Addr : 29D1: JZ Label0003 Addr : 29D1: 0A 02 : jz Address = 29D5 2 393 return -1 Addr : 29D3: 34 : Constant 0 $FFFFFFFF Addr : 29D4: 33 : Return value Addr : 29D5: Label0003 Addr : 29D5: Label0004 394 if (frem == 0) Addr : 29D5: 4C : Variable Operation Global Offset - 3 Read Addr : 29D6: 35 : Constant 1 $00000000 Addr : 29D7: FC : Math Op == Addr : 29D8: JZ Label0005 Addr : 29D8: 0A 15 : jz Address = 29EF 21 395 fclust := nextcluster Addr : 29DA: 00 : Drop Anchor Push Addr : 29DB: 05 27 : Call Sub 39 Addr : 29DD: 41 : Variable Operation Global Offset - 0 Write 396 frem := SECTORSIZE << clustershift Addr : 29DE: 37 08 : Constant Mask Y=8 00000200 Addr : 29E0: C8 30 : Memory Op Long VBASE + READ Address = 0030 Addr : 29E2: E3 : Math Op << Addr : 29E3: 4D : Variable Operation Global Offset - 3 Write 397 if (frem + floc > filesize) Addr : 29E4: 4C : Variable Operation Global Offset - 3 Read Addr : 29E5: 48 : Variable Operation Global Offset - 2 Read Addr : 29E6: EC : Math Op + Addr : 29E7: 44 : Variable Operation Global Offset - 1 Read Addr : 29E8: FA : Math Op > Addr : 29E9: JZ Label0007 Addr : 29E9: 0A 04 : jz Address = 29EF 4 398 frem := filesize - floc Addr : 29EB: 44 : Variable Operation Global Offset - 1 Read Addr : 29EC: 48 : Variable Operation Global Offset - 2 Read Addr : 29ED: ED : Math Op - Addr : 29EE: 4D : Variable Operation Global Offset - 3 Write Addr : 29EF: Label0007 Addr : 29EF: Label0008 Addr : 29EF: Label0005 Addr : 29EF: Label0006 399 ldr.readSDCard(datablock, @buf, SECTORSIZE) Addr : 29EF: 01 : Drop Anchor Addr : 29F0: 00 : Drop Anchor Push Addr : 29F1: 05 29 : Call Sub 41 Addr : 29F3: 8B 48 : Memory Op Byte VBASE + ADDRESS Address = 0048 Addr : 29F5: 37 08 : Constant Mask Y=8 00000200 Addr : 29F7: 06 2E 09 : Call Obj.Sub 46 9 400 r := SECTORSIZE Addr : 29FA: 37 08 : Constant Mask Y=8 00000200 Addr : 29FC: 65 : Variable Operation Local Offset - 1 Write 401 if (floc + r => filesize) Addr : 29FD: 48 : Variable Operation Global Offset - 2 Read Addr : 29FE: 64 : Variable Operation Local Offset - 1 Read Addr : 29FF: EC : Math Op + Addr : 2A00: 44 : Variable Operation Global Offset - 1 Read Addr : 2A01: FE : Math Op => Addr : 2A02: JZ Label0009 Addr : 2A02: 0A 04 : jz Address = 2A08 4 402 r := filesize - floc Addr : 2A04: 44 : Variable Operation Global Offset - 1 Read Addr : 2A05: 48 : Variable Operation Global Offset - 2 Read Addr : 2A06: ED : Math Op - Addr : 2A07: 65 : Variable Operation Local Offset - 1 Write Addr : 2A08: Label0009 Addr : 2A08: Label000A 403 floc += r Addr : 2A08: 64 : Variable Operation Local Offset - 1 Read Addr : 2A09: 4A 4C : Variable Operation Global Offset - 2 Assign WordMathop + 404 frem -= r Addr : 2A0B: 64 : Variable Operation Local Offset - 1 Read Addr : 2A0C: 4E 4D : Variable Operation Global Offset - 3 Assign WordMathop - 405 bufat := 0 Addr : 2A0E: 35 : Constant 1 $00000000 Addr : 2A0F: 51 : Variable Operation Global Offset - 4 Write 406 bufend := r Addr : 2A10: 64 : Variable Operation Local Offset - 1 Read Addr : 2A11: 55 : Variable Operation Global Offset - 5 Write 407 return r Addr : 2A12: 64 : Variable Operation Local Offset - 1 Read Addr : 2A13: 33 : Return value Addr : 2A14: Data : 32 2 |===========================================================================| Spin Block pdate with 0 Parameters and 0 Extra Stack Longs. Method 45 pri pdate |===========================================================================| 435 return constant(((2007-1980) << 25) + (1 << 21) + (6 << 16) + (12 << 11)) Addr : 2A15: 3B 36 26 60 00 : Constant 4 Bytes - 36 26 60 00 Addr : 2A1A: 33 : Return value Addr : 2A1B: Data : 32 2 |===========================================================================| Object SDSPIFEMTO Object Base is 4268 |===========================================================================| |===========================================================================| VBASE Global Variables |===========================================================================| VBASE : 0000 LONG Size 0004 Variable cog VBASE : 0004 LONG Size 0004 Variable control |===========================================================================| Object DAT Variables |===========================================================================| ABS : 4954 PBASE : 06EC LONG Variable ActionTbl ABS : 4970 PBASE : 0708 LONG Variable i2cWordMask ABS : 4974 PBASE : 070C LONG Variable i2cAddrMask ABS : 4978 PBASE : 0710 LONG Variable errorFlag ABS : 497C PBASE : 0714 LONG Variable speedMask ABS : 4980 PBASE : 0718 LONG Variable time_xtal ABS : 4984 PBASE : 071C LONG Variable interpreter ABS : 4988 PBASE : 0720 LONG Variable i2cBootSCLm ABS : 498C PBASE : 0724 LONG Variable incrDst ABS : 49A0 PBASE : 0738 LONG Variable spiInitCnt ABS : 49A4 PBASE : 073C LONG Variable StackMark ABS : 49A8 PBASE : 0740 LONG Variable Preamble ABS : 49B8 PBASE : 0750 LONG Variable Action ABS : 49BC PBASE : 0754 LONG Variable i2cCogId ABS : 49C0 PBASE : 0758 LONG Variable i2cCmd ABS : 49C4 PBASE : 075C LONG Variable FirstCall ABS : 49C8 PBASE : 0760 LONG Variable i2cTemp ABS : 49CC PBASE : 0764 LONG Variable i2cCount ABS : 49D0 PBASE : 0768 LONG Variable i2cBufAdr ABS : 49D4 PBASE : 076C LONG Variable i2cAddr ABS : 49D8 PBASE : 0770 LONG Variable i2cDataSet ABS : 49DC PBASE : 0774 LONG Variable i2cClkLow ABS : 49E0 PBASE : 0778 LONG Variable i2cClkHigh ABS : 49E4 PBASE : 077C LONG Variable i2cDataSet1 ABS : 49E8 PBASE : 0780 LONG Variable i2cClkLow1 ABS : 49EC PBASE : 0784 LONG Variable i2cClkHigh1 ABS : 49F0 PBASE : 0788 LONG Variable i2cDataSet4 ABS : 49F4 PBASE : 078C LONG Variable i2cClkLow4 ABS : 49F8 PBASE : 0790 LONG Variable i2cClkHigh4 ABS : 49FC PBASE : 0794 LONG Variable i2cPause ABS : 4A00 PBASE : 0798 LONG Variable SaveClkFreq ABS : 4A04 PBASE : 079C LONG Variable SaveClkMode ABS : 4A08 PBASE : 07A0 LONG Variable spiBlkCnt ABS : 4A0C PBASE : 07A4 LONG Variable CheckSum ABS : 4A10 PBASE : 07A8 LONG Variable Options ABS : 4A14 PBASE : 07AC LONG Variable i2cSCL ABS : 4A18 PBASE : 07B0 LONG Variable i2cSDA ABS : 4A1C PBASE : 07B4 LONG Variable i2cTime ABS : 4A20 PBASE : 07B8 LONG Variable i2cData ABS : 4A24 PBASE : 07BC LONG Variable i2cMask ABS : 4A28 PBASE : 07C0 LONG Variable i2cBitCnt ABS : 4A2C PBASE : 07C4 LONG Variable spiMaskDO ABS : 4A30 PBASE : 07C8 LONG Variable spiMaskClk ABS : 4A34 PBASE : 07CC LONG Variable spiMaskDI ABS : 4A38 PBASE : 07D0 LONG Variable spiMaskCS |===========================================================================| |===========================================================================| Spin Block bootEEPROM with 1 Parameters and 3 Extra Stack Longs. Method 1 PUB bootEEPROM(addr) | t, c0, c1 '' Load and run a new SPIN program |===========================================================================| 140 if not start(@c0) ' Start up the I/O routines using a Addr : 4A3C: 00 : Drop Anchor Push Addr : 4A3D: 6F : Variable Operation Local Offset - 3 Address Addr : 4A3E: 05 0C : Call Sub 12 Addr : 4A40: FF : Math Op NOT Addr : 4A41: JZ Label0002 Addr : 4A41: 0A 01 : jz Address = 4A44 1 141 abort ' local control block Addr : 4A43: 30 : Abort Addr : 4A44: Label0002 Addr : 4A44: Label0003 142 long[control][1] := 0 ' Check for the presence of EEPROM Addr : 4A44: 35 : Constant 1 $00000000 Addr : 4A45: 44 : Variable Operation Global Offset - 1 Read Addr : 4A46: 36 : Constant 2 $00000001 Addr : 4A47: D1 : Memory Op Long POP Address POP Index WRITE 143 long[control][0] := (ioReadCmd | ioLowSpeed) << 24 | (addr & $FFFFFF) Addr : 4A48: 36 : Constant 2 $00000001 Addr : 4A49: 37 05 : Constant Mask Y=5 00000040 Addr : 4A4B: EA : Math Op | Addr : 4A4C: 38 18 : Constant 1 Bytes - 18 Addr : 4A4E: E3 : Math Op << Addr : 4A4F: 64 : Variable Operation Local Offset - 1 Read Addr : 4A50: 37 37 : Constant Mask Y=55 Decrement 00FFFFFF Addr : 4A52: E8 : Math Op & Addr : 4A53: EA : Math Op | Addr : 4A54: 44 : Variable Operation Global Offset - 1 Read Addr : 4A55: 35 : Constant 1 $00000000 Addr : 4A56: D1 : Memory Op Long POP Address POP Index WRITE Addr : 4A57: Label0004 144 repeat while long[control][0] & ioTestRdy ' Wait for check to complete and Addr : 4A57: 44 : Variable Operation Global Offset - 1 Read Addr : 4A58: 35 : Constant 1 $00000000 Addr : 4A59: D0 : Memory Op Long POP Address POP Index READ Addr : 4A5A: 3B 1F 00 00 00 : Constant 4 Bytes - 1F 00 00 00 Addr : 4A5F: E8 : Math Op & Addr : 4A60: JZ Label0006 Addr : 4A60: 0A 02 : jz Address = 4A64 2 Addr : 4A62: Label0005 Addr : 4A62: JMP Label0004 Addr : 4A62: 04 73 : Jmp 4A57 -13 Addr : 4A64: Label0006 145 if long[control][0] & ioTestErr ' abort if there's an error Addr : 4A64: 44 : Variable Operation Global Offset - 1 Read Addr : 4A65: 35 : Constant 1 $00000000 Addr : 4A66: D0 : Memory Op Long POP Address POP Index READ Addr : 4A67: 37 1E : Constant Mask Y=30 80000000 Addr : 4A69: E8 : Math Op & Addr : 4A6A: JZ Label0007 Addr : 4A6A: 0A 01 : jz Address = 4A6D 1 146 abort Addr : 4A6C: 30 : Abort Addr : 4A6D: Label0007 Addr : 4A6D: Label0008 147 repeat t from 0 to 7 ' Stop all COGs except this one and Addr : 4A6D: 35 : Constant 1 $00000000 Addr : 4A6E: 69 : Variable Operation Local Offset - 2 Write Addr : 4A6F: Label0009 148 if (t <> cogid) and (t <> (cog-1)) ' the one with the I2C driver in it Addr : 4A6F: 68 : Variable Operation Local Offset - 2 Read Addr : 4A70: 3F 89 : Register op $1E9 Read Addr : 4A72: FB : Math Op <> Addr : 4A73: 68 : Variable Operation Local Offset - 2 Read Addr : 4A74: 40 : Variable Operation Global Offset - 0 Read Addr : 4A75: 36 : Constant 2 $00000001 Addr : 4A76: ED : Math Op - Addr : 4A77: FB : Math Op <> Addr : 4A78: F0 : Math Op AND Addr : 4A79: JZ Label000C Addr : 4A79: 0A 02 : jz Address = 4A7D 2 149 cogstop(t) Addr : 4A7B: 68 : Variable Operation Local Offset - 2 Read Addr : 4A7C: 21 : CogStop(id) Addr : 4A7D: Label000C Addr : 4A7D: Label000D Addr : 4A7D: Label000A 147 repeat t from 0 to 7 ' Stop all COGs except this one and Addr : 4A7D: 35 : Constant 1 $00000000 Addr : 4A7E: 37 22 : Constant Mask Y=34 Decrement 00000007 Addr : 4A80: Repeat t Step Label0009 Addr : 4A80: 6A 02 6C : Variable Operation Local Offset - 2 Assign Repeat-Var loop Address= 4A6F -20 Addr : 4A83: Label000B 150 t := ioBootCmd | ioLowSpeed | ioStopLdr | cogid ' Tell the I2C driver to load 32K Addr : 4A83: 37 02 : Constant Mask Y=2 00000008 Addr : 4A85: 37 05 : Constant Mask Y=5 00000040 Addr : 4A87: EA : Math Op | Addr : 4A88: 37 06 : Constant Mask Y=6 00000080 Addr : 4A8A: EA : Math Op | Addr : 4A8B: 3F 89 : Register op $1E9 Read Addr : 4A8D: EA : Math Op | Addr : 4A8E: 69 : Variable Operation Local Offset - 2 Write 151 long[control][1] := $80000000 ' into HUB RAM after stopping Addr : 4A8F: 37 1E : Constant Mask Y=30 80000000 Addr : 4A91: 44 : Variable Operation Global Offset - 1 Read Addr : 4A92: 36 : Constant 2 $00000001 Addr : 4A93: D1 : Memory Op Long POP Address POP Index WRITE 152 long[control][0] := (t << 24) | (addr & $FFFFFF) ' this calling cog Addr : 4A94: 68 : Variable Operation Local Offset - 2 Read Addr : 4A95: 38 18 : Constant 1 Bytes - 18 Addr : 4A97: E3 : Math Op << Addr : 4A98: 64 : Variable Operation Local Offset - 1 Read Addr : 4A99: 37 37 : Constant Mask Y=55 Decrement 00FFFFFF Addr : 4A9B: E8 : Math Op & Addr : 4A9C: EA : Math Op | Addr : 4A9D: 44 : Variable Operation Global Offset - 1 Read Addr : 4A9E: 35 : Constant 1 $00000000 Addr : 4A9F: D1 : Memory Op Long POP Address POP Index WRITE Addr : 4AA0: Label000E 153 repeat while long[control][0] & ioTestRdy ' Wait for this to finish Addr : 4AA0: 44 : Variable Operation Global Offset - 1 Read Addr : 4AA1: 35 : Constant 1 $00000000 Addr : 4AA2: D0 : Memory Op Long POP Address POP Index READ Addr : 4AA3: 3B 1F 00 00 00 : Constant 4 Bytes - 1F 00 00 00 Addr : 4AA8: E8 : Math Op & Addr : 4AA9: JZ Label0010 Addr : 4AA9: 0A 02 : jz Address = 4AAD 2 Addr : 4AAB: Label000F Addr : 4AAB: JMP Label000E Addr : 4AAB: 04 73 : Jmp 4AA0 -13 Addr : 4AAD: Label0010 154 return (long[control][0] & ioTestErr) <> 0 ' Return any error code Addr : 4AAD: 44 : Variable Operation Global Offset - 1 Read Addr : 4AAE: 35 : Constant 1 $00000000 Addr : 4AAF: D0 : Memory Op Long POP Address POP Index READ Addr : 4AB0: 37 1E : Constant Mask Y=30 80000000 Addr : 4AB2: E8 : Math Op & Addr : 4AB3: 35 : Constant 1 $00000000 Addr : 4AB4: FB : Math Op <> Addr : 4AB5: 33 : Return value Addr : 4AB6: Data : 32 2 |===========================================================================| Spin Block readEEPROM with 3 Parameters and 1 Extra Stack Longs. Method 2 PUB readEEPROM(addr,buffer,count) | t '' Read a block from EEPROM to RAM |===========================================================================| 157 t := ioReadCmd | ioLowSpeed Addr : 4AB7: 36 : Constant 2 $00000001 Addr : 4AB8: 37 05 : Constant Mask Y=5 00000040 Addr : 4ABA: EA : Math Op | Addr : 4ABB: 71 : Variable Operation Local Offset - 4 Write Addr : 4ABC: Label0002 158 repeat while long[control][0] & ioTestRdy ' Wait for previous I/O to finish Addr : 4ABC: 44 : Variable Operation Global Offset - 1 Read Addr : 4ABD: 35 : Constant 1 $00000000 Addr : 4ABE: D0 : Memory Op Long POP Address POP Index READ Addr : 4ABF: 3B 1F 00 00 00 : Constant 4 Bytes - 1F 00 00 00 Addr : 4AC4: E8 : Math Op & Addr : 4AC5: JZ Label0004 Addr : 4AC5: 0A 02 : jz Address = 4AC9 2 Addr : 4AC7: Label0003 Addr : 4AC7: JMP Label0002 Addr : 4AC7: 04 73 : Jmp 4ABC -13 Addr : 4AC9: Label0004 159 long[control][1] := (count << 16) | (buffer & $FFFF) Addr : 4AC9: 6C : Variable Operation Local Offset - 3 Read Addr : 4ACA: 37 03 : Constant Mask Y=3 00000010 Addr : 4ACC: E3 : Math Op << Addr : 4ACD: 68 : Variable Operation Local Offset - 2 Read Addr : 4ACE: 37 2F : Constant Mask Y=47 Decrement 0000FFFF Addr : 4AD0: E8 : Math Op & Addr : 4AD1: EA : Math Op | Addr : 4AD2: 44 : Variable Operation Global Offset - 1 Read Addr : 4AD3: 36 : Constant 2 $00000001 Addr : 4AD4: D1 : Memory Op Long POP Address POP Index WRITE 160 long[control][0] := (t << 24) | (addr & $FFFFFF) Addr : 4AD5: 70 : Variable Operation Local Offset - 4 Read Addr : 4AD6: 38 18 : Constant 1 Bytes - 18 Addr : 4AD8: E3 : Math Op << Addr : 4AD9: 64 : Variable Operation Local Offset - 1 Read Addr : 4ADA: 37 37 : Constant Mask Y=55 Decrement 00FFFFFF Addr : 4ADC: E8 : Math Op & Addr : 4ADD: EA : Math Op | Addr : 4ADE: 44 : Variable Operation Global Offset - 1 Read Addr : 4ADF: 35 : Constant 1 $00000000 Addr : 4AE0: D1 : Memory Op Long POP Address POP Index WRITE Addr : 4AE1: Label0005 161 repeat while long[control][0] & ioTestRdy ' Wait for this to finish Addr : 4AE1: 44 : Variable Operation Global Offset - 1 Read Addr : 4AE2: 35 : Constant 1 $00000000 Addr : 4AE3: D0 : Memory Op Long POP Address POP Index READ Addr : 4AE4: 3B 1F 00 00 00 : Constant 4 Bytes - 1F 00 00 00 Addr : 4AE9: E8 : Math Op & Addr : 4AEA: JZ Label0007 Addr : 4AEA: 0A 02 : jz Address = 4AEE 2 Addr : 4AEC: Label0006 Addr : 4AEC: JMP Label0005 Addr : 4AEC: 04 73 : Jmp 4AE1 -13 Addr : 4AEE: Label0007 162 return (long[control][0] & ioTestErr) <> 0 ' Return any error code Addr : 4AEE: 44 : Variable Operation Global Offset - 1 Read Addr : 4AEF: 35 : Constant 1 $00000000 Addr : 4AF0: D0 : Memory Op Long POP Address POP Index READ Addr : 4AF1: 37 1E : Constant Mask Y=30 80000000 Addr : 4AF3: E8 : Math Op & Addr : 4AF4: 35 : Constant 1 $00000000 Addr : 4AF5: FB : Math Op <> Addr : 4AF6: 33 : Return value Addr : 4AF7: Data : 32 2 |===========================================================================| Spin Block writeEEPROM with 3 Parameters and 1 Extra Stack Longs. Method 3 PUB writeEEPROM(addr,buffer,count) | t '' Write a block to EEPROM from RAM |===========================================================================| 165 t := ioWriteCmd | ioLowSpeed Addr : 4AF8: 37 00 : Constant Mask Y=0 00000002 Addr : 4AFA: 37 05 : Constant Mask Y=5 00000040 Addr : 4AFC: EA : Math Op | Addr : 4AFD: 71 : Variable Operation Local Offset - 4 Write Addr : 4AFE: Label0002 166 repeat while long[control][0] & ioTestRdy ' Wait for previous I/O to finish Addr : 4AFE: 44 : Variable Operation Global Offset - 1 Read Addr : 4AFF: 35 : Constant 1 $00000000 Addr : 4B00: D0 : Memory Op Long POP Address POP Index READ Addr : 4B01: 3B 1F 00 00 00 : Constant 4 Bytes - 1F 00 00 00 Addr : 4B06: E8 : Math Op & Addr : 4B07: JZ Label0004 Addr : 4B07: 0A 02 : jz Address = 4B0B 2 Addr : 4B09: Label0003 Addr : 4B09: JMP Label0002 Addr : 4B09: 04 73 : Jmp 4AFE -13 Addr : 4B0B: Label0004 167 long[control][1] := (count << 16) | (buffer & $FFFF) Addr : 4B0B: 6C : Variable Operation Local Offset - 3 Read Addr : 4B0C: 37 03 : Constant Mask Y=3 00000010 Addr : 4B0E: E3 : Math Op << Addr : 4B0F: 68 : Variable Operation Local Offset - 2 Read Addr : 4B10: 37 2F : Constant Mask Y=47 Decrement 0000FFFF Addr : 4B12: E8 : Math Op & Addr : 4B13: EA : Math Op | Addr : 4B14: 44 : Variable Operation Global Offset - 1 Read Addr : 4B15: 36 : Constant 2 $00000001 Addr : 4B16: D1 : Memory Op Long POP Address POP Index WRITE 168 long[control][0] := (t << 24) | (addr & $FFFFFF) Addr : 4B17: 70 : Variable Operation Local Offset - 4 Read Addr : 4B18: 38 18 : Constant 1 Bytes - 18 Addr : 4B1A: E3 : Math Op << Addr : 4B1B: 64 : Variable Operation Local Offset - 1 Read Addr : 4B1C: 37 37 : Constant Mask Y=55 Decrement 00FFFFFF Addr : 4B1E: E8 : Math Op & Addr : 4B1F: EA : Math Op | Addr : 4B20: 44 : Variable Operation Global Offset - 1 Read Addr : 4B21: 35 : Constant 1 $00000000 Addr : 4B22: D1 : Memory Op Long POP Address POP Index WRITE Addr : 4B23: Label0005 169 repeat while long[control][0] & ioTestRdy ' Wait for this to finish Addr : 4B23: 44 : Variable Operation Global Offset - 1 Read Addr : 4B24: 35 : Constant 1 $00000000 Addr : 4B25: D0 : Memory Op Long POP Address POP Index READ Addr : 4B26: 3B 1F 00 00 00 : Constant 4 Bytes - 1F 00 00 00 Addr : 4B2B: E8 : Math Op & Addr : 4B2C: JZ Label0007 Addr : 4B2C: 0A 02 : jz Address = 4B30 2 Addr : 4B2E: Label0006 Addr : 4B2E: JMP Label0005 Addr : 4B2E: 04 73 : Jmp 4B23 -13 Addr : 4B30: Label0007 170 return (long[control][0] & ioTestErr) <> 0 ' Return any error code Addr : 4B30: 44 : Variable Operation Global Offset - 1 Read Addr : 4B31: 35 : Constant 1 $00000000 Addr : 4B32: D0 : Memory Op Long POP Address POP Index READ Addr : 4B33: 37 1E : Constant Mask Y=30 80000000 Addr : 4B35: E8 : Math Op & Addr : 4B36: 35 : Constant 1 $00000000 Addr : 4B37: FB : Math Op <> Addr : 4B38: 33 : Return value Addr : 4B39: Data : 32 2 |===========================================================================| Spin Block checkPresence with 1 Parameters and 1 Extra Stack Longs. Method 4 PUB checkPresence(addr) | t |===========================================================================| 177 t := ioReadCmd | ioLowSpeed Addr : 4B3A: 36 : Constant 2 $00000001 Addr : 4B3B: 37 05 : Constant Mask Y=5 00000040 Addr : 4B3D: EA : Math Op | Addr : 4B3E: 69 : Variable Operation Local Offset - 2 Write Addr : 4B3F: Label0002 178 repeat while long[control][0] & ioTestRdy ' Wait for previous I/O to finish Addr : 4B3F: 44 : Variable Operation Global Offset - 1 Read Addr : 4B40: 35 : Constant 1 $00000000 Addr : 4B41: D0 : Memory Op Long POP Address POP Index READ Addr : 4B42: 3B 1F 00 00 00 : Constant 4 Bytes - 1F 00 00 00 Addr : 4B47: E8 : Math Op & Addr : 4B48: JZ Label0004 Addr : 4B48: 0A 02 : jz Address = 4B4C 2 Addr : 4B4A: Label0003 Addr : 4B4A: JMP Label0002 Addr : 4B4A: 04 73 : Jmp 4B3F -13 Addr : 4B4C: Label0004 179 long[control][1] := 0 ' Attempt to address the device Addr : 4B4C: 35 : Constant 1 $00000000 Addr : 4B4D: 44 : Variable Operation Global Offset - 1 Read Addr : 4B4E: 36 : Constant 2 $00000001 Addr : 4B4F: D1 : Memory Op Long POP Address POP Index WRITE 180 long[control][0] := (t << 24) | (addr & $FFFFFF) Addr : 4B50: 68 : Variable Operation Local Offset - 2 Read Addr : 4B51: 38 18 : Constant 1 Bytes - 18 Addr : 4B53: E3 : Math Op << Addr : 4B54: 64 : Variable Operation Local Offset - 1 Read Addr : 4B55: 37 37 : Constant Mask Y=55 Decrement 00FFFFFF Addr : 4B57: E8 : Math Op & Addr : 4B58: EA : Math Op | Addr : 4B59: 44 : Variable Operation Global Offset - 1 Read Addr : 4B5A: 35 : Constant 1 $00000000 Addr : 4B5B: D1 : Memory Op Long POP Address POP Index WRITE Addr : 4B5C: Label0005 181 repeat while long[control][0] & ioTestRdy ' Wait for this to finish Addr : 4B5C: 44 : Variable Operation Global Offset - 1 Read Addr : 4B5D: 35 : Constant 1 $00000000 Addr : 4B5E: D0 : Memory Op Long POP Address POP Index READ Addr : 4B5F: 3B 1F 00 00 00 : Constant 4 Bytes - 1F 00 00 00 Addr : 4B64: E8 : Math Op & Addr : 4B65: JZ Label0007 Addr : 4B65: 0A 02 : jz Address = 4B69 2 Addr : 4B67: Label0006 Addr : 4B67: JMP Label0005 Addr : 4B67: 04 73 : Jmp 4B5C -13 Addr : 4B69: Label0007 182 return (long[control][0] & ioTestErr) == 0 ' Return false on error Addr : 4B69: 44 : Variable Operation Global Offset - 1 Read Addr : 4B6A: 35 : Constant 1 $00000000 Addr : 4B6B: D0 : Memory Op Long POP Address POP Index READ Addr : 4B6C: 37 1E : Constant Mask Y=30 80000000 Addr : 4B6E: E8 : Math Op & Addr : 4B6F: 35 : Constant 1 $00000000 Addr : 4B70: FC : Math Op == Addr : 4B71: 33 : Return value Addr : 4B72: Data : 32 2 |===========================================================================| Spin Block writeWait with 1 Parameters and 1 Extra Stack Longs. Method 5 PUB writeWait(addr) | t '' Wait for EEPROM to complete write |===========================================================================| 185 t := cnt Addr : 4B73: 3F 91 : Register op CNT Read Addr : 4B75: 69 : Variable Operation Local Offset - 2 Write Addr : 4B76: Label0002 186 repeat until checkPresence(addr) ' Maximum wait time is 20ms Addr : 4B76: 00 : Drop Anchor Push Addr : 4B77: 64 : Variable Operation Local Offset - 1 Read Addr : 4B78: 05 04 : Call Sub 4 Addr : 4B7A: JNZ Label0004 Addr : 4B7A: 0B 10 : jnz Address = 4B8C 16 187 if (cnt - t) > (clkfreq / 50) Addr : 4B7C: 3F 91 : Register op CNT Read Addr : 4B7E: 68 : Variable Operation Local Offset - 2 Read Addr : 4B7F: ED : Math Op - Addr : 4B80: 35 : Constant 1 $00000000 Addr : 4B81: C0 : Memory Op Long POP Address READ Addr : 4B82: 38 32 : Constant 1 Bytes - 32 Addr : 4B84: F6 : Math Op / Addr : 4B85: FA : Math Op > Addr : 4B86: JZ Label0005 Addr : 4B86: 0A 02 : jz Address = 4B8A 2 188 return true ' Return true if a timeout occurred Addr : 4B88: 34 : Constant 0 $FFFFFFFF Addr : 4B89: 33 : Return value Addr : 4B8A: Label0005 Addr : 4B8A: Label0006 Addr : 4B8A: Label0003 Addr : 4B8A: JMP Label0002 Addr : 4B8A: 04 6A : Jmp 4B76 -22 Addr : 4B8C: Label0004 189 return false ' Otherwise return false Addr : 4B8C: 35 : Constant 1 $00000000 Addr : 4B8D: 33 : Return value Addr : 4B8E: Data : 32 2 |===========================================================================| Spin Block computeTimes with 0 Parameters and 0 Extra Stack Longs. Method 6 PUB computeTimes '' Set up timing constants in assembly |===========================================================================| 193 i2cDataSet1 := ((clkfreq / 10000) * 600) / 100000 ' Data setup time - 600ns (100KHz) Addr : 4B8F: 35 : Constant 1 $00000000 Addr : 4B90: C0 : Memory Op Long POP Address READ Addr : 4B91: 39 27 10 : Constant 2 Bytes - 27 10 Addr : 4B94: F6 : Math Op / Addr : 4B95: 39 02 58 : Constant 2 Bytes - 02 58 Addr : 4B98: F4 : Math Op * Addr : 4B99: 3A 01 86 A0 : Constant 3 Bytes - 01 86 A0 Addr : 4B9D: F6 : Math Op / Addr : 4B9E: C5 87 7C : Memory Op Long PBASE + WRITE Address = 077C 194 i2cClkLow1 := ((clkfreq / 10000) * 4700) / 100000 ' Clock low time - 4700ns (100KHz) Addr : 4BA1: 35 : Constant 1 $00000000 Addr : 4BA2: C0 : Memory Op Long POP Address READ Addr : 4BA3: 39 27 10 : Constant 2 Bytes - 27 10 Addr : 4BA6: F6 : Math Op / Addr : 4BA7: 39 12 5C : Constant 2 Bytes - 12 5C Addr : 4BAA: F4 : Math Op * Addr : 4BAB: 3A 01 86 A0 : Constant 3 Bytes - 01 86 A0 Addr : 4BAF: F6 : Math Op / Addr : 4BB0: C5 87 80 : Memory Op Long PBASE + WRITE Address = 0780 195 i2cClkHigh1 := ((clkfreq / 10000) * 4000) / 100000 ' Clock high time - 4000ns (100KHz) Addr : 4BB3: 35 : Constant 1 $00000000 Addr : 4BB4: C0 : Memory Op Long POP Address READ Addr : 4BB5: 39 27 10 : Constant 2 Bytes - 27 10 Addr : 4BB8: F6 : Math Op / Addr : 4BB9: 39 0F A0 : Constant 2 Bytes - 0F A0 Addr : 4BBC: F4 : Math Op * Addr : 4BBD: 3A 01 86 A0 : Constant 3 Bytes - 01 86 A0 Addr : 4BC1: F6 : Math Op / Addr : 4BC2: C5 87 84 : Memory Op Long PBASE + WRITE Address = 0784 196 i2cDataSet4 := ((clkfreq / 10000) * 250) / 100000 ' Data setup time - 250ns (400KHz) Addr : 4BC5: 35 : Constant 1 $00000000 Addr : 4BC6: C0 : Memory Op Long POP Address READ Addr : 4BC7: 39 27 10 : Constant 2 Bytes - 27 10 Addr : 4BCA: F6 : Math Op / Addr : 4BCB: 38 FA : Constant 1 Bytes - FA Addr : 4BCD: F4 : Math Op * Addr : 4BCE: 3A 01 86 A0 : Constant 3 Bytes - 01 86 A0 Addr : 4BD2: F6 : Math Op / Addr : 4BD3: C5 87 88 : Memory Op Long PBASE + WRITE Address = 0788 197 i2cClkLow4 := ((clkfreq / 10000) * 1300) / 100000 ' Clock low time - 1300ns (400KHz) Addr : 4BD6: 35 : Constant 1 $00000000 Addr : 4BD7: C0 : Memory Op Long POP Address READ Addr : 4BD8: 39 27 10 : Constant 2 Bytes - 27 10 Addr : 4BDB: F6 : Math Op / Addr : 4BDC: 39 05 14 : Constant 2 Bytes - 05 14 Addr : 4BDF: F4 : Math Op * Addr : 4BE0: 3A 01 86 A0 : Constant 3 Bytes - 01 86 A0 Addr : 4BE4: F6 : Math Op / Addr : 4BE5: C5 87 8C : Memory Op Long PBASE + WRITE Address = 078C 198 i2cClkHigh4 := ((clkfreq / 10000) * 1000) / 100000 ' Clock high time - 1000ns (400KHz) Addr : 4BE8: 35 : Constant 1 $00000000 Addr : 4BE9: C0 : Memory Op Long POP Address READ Addr : 4BEA: 39 27 10 : Constant 2 Bytes - 27 10 Addr : 4BED: F6 : Math Op / Addr : 4BEE: 39 03 E8 : Constant 2 Bytes - 03 E8 Addr : 4BF1: F4 : Math Op * Addr : 4BF2: 3A 01 86 A0 : Constant 3 Bytes - 01 86 A0 Addr : 4BF6: F6 : Math Op / Addr : 4BF7: C5 87 90 : Memory Op Long PBASE + WRITE Address = 0790 199 i2cPause := clkfreq / 100000 ' Pause between checks for operations Addr : 4BFA: 35 : Constant 1 $00000000 Addr : 4BFB: C0 : Memory Op Long POP Address READ Addr : 4BFC: 3A 01 86 A0 : Constant 3 Bytes - 01 86 A0 Addr : 4C00: F6 : Math Op / Addr : 4C01: C5 87 94 : Memory Op Long PBASE + WRITE Address = 0794 Addr : 4C04: 32 : Return |===========================================================================| Spin Block initSDCard with 4 Parameters and 1 Extra Stack Longs. Method 7 PUB initSDCard(DO,Clk,DI,CS) | t '' Initialize SD card access |===========================================================================| 202 t := cnt Addr : 4C05: 3F 91 : Register op CNT Read Addr : 4C07: 75 : Variable Operation Local Offset - 5 Write Addr : 4C08: Label0002 203 repeat while long[control][0] & ioTestRdy ' Wait for previous I/O to finish Addr : 4C08: 44 : Variable Operation Global Offset - 1 Read Addr : 4C09: 35 : Constant 1 $00000000 Addr : 4C0A: D0 : Memory Op Long POP Address POP Index READ Addr : 4C0B: 3B 1F 00 00 00 : Constant 4 Bytes - 1F 00 00 00 Addr : 4C10: E8 : Math Op & Addr : 4C11: JZ Label0004 Addr : 4C11: 0A 02 : jz Address = 4C15 2 Addr : 4C13: Label0003 Addr : 4C13: JMP Label0002 Addr : 4C13: 04 73 : Jmp 4C08 -13 Addr : 4C15: Label0004 204 long[control][1] := 0 Addr : 4C15: 35 : Constant 1 $00000000 Addr : 4C16: 44 : Variable Operation Global Offset - 1 Read Addr : 4C17: 36 : Constant 2 $00000001 Addr : 4C18: D1 : Memory Op Long POP Address POP Index WRITE 205 long[control][0] := ioSpiInit << 24 | DO << 18 | Clk << 12 | DI << 6 | CS Addr : 4C19: 37 03 : Constant Mask Y=3 00000010 Addr : 4C1B: 38 18 : Constant 1 Bytes - 18 Addr : 4C1D: E3 : Math Op << Addr : 4C1E: 64 : Variable Operation Local Offset - 1 Read Addr : 4C1F: 38 12 : Constant 1 Bytes - 12 Addr : 4C21: E3 : Math Op << Addr : 4C22: EA : Math Op | Addr : 4C23: 68 : Variable Operation Local Offset - 2 Read Addr : 4C24: 38 0C : Constant 1 Bytes - 0C Addr : 4C26: E3 : Math Op << Addr : 4C27: EA : Math Op | Addr : 4C28: 6C : Variable Operation Local Offset - 3 Read Addr : 4C29: 38 06 : Constant 1 Bytes - 06 Addr : 4C2B: E3 : Math Op << Addr : 4C2C: EA : Math Op | Addr : 4C2D: 70 : Variable Operation Local Offset - 4 Read Addr : 4C2E: EA : Math Op | Addr : 4C2F: 44 : Variable Operation Global Offset - 1 Read Addr : 4C30: 35 : Constant 1 $00000000 Addr : 4C31: D1 : Memory Op Long POP Address POP Index WRITE Addr : 4C32: Label0005 206 repeat while long[control][0] & ioTestRdy ' Wait for this to finish Addr : 4C32: 44 : Variable Operation Global Offset - 1 Read Addr : 4C33: 35 : Constant 1 $00000000 Addr : 4C34: D0 : Memory Op Long POP Address POP Index READ Addr : 4C35: 3B 1F 00 00 00 : Constant 4 Bytes - 1F 00 00 00 Addr : 4C3A: E8 : Math Op & Addr : 4C3B: JZ Label0007 Addr : 4C3B: 0A 02 : jz Address = 4C3F 2 Addr : 4C3D: Label0006 Addr : 4C3D: JMP Label0005 Addr : 4C3D: 04 73 : Jmp 4C32 -13 Addr : 4C3F: Label0007 207 return (long[control][0] & ioTestErr) <> 0 ' Return any error code Addr : 4C3F: 44 : Variable Operation Global Offset - 1 Read Addr : 4C40: 35 : Constant 1 $00000000 Addr : 4C41: D0 : Memory Op Long POP Address POP Index READ Addr : 4C42: 37 1E : Constant Mask Y=30 80000000 Addr : 4C44: E8 : Math Op & Addr : 4C45: 35 : Constant 1 $00000000 Addr : 4C46: FB : Math Op <> Addr : 4C47: 33 : Return value Addr : 4C48: Data : 32 2 |===========================================================================| Spin Block stopSDCard with 0 Parameters and 0 Extra Stack Longs. Method 8 PUB stopSDCard '' Stop SD card access |===========================================================================| 210 repeat while long[control][0] & ioTestRdy ' Wait for previous I/O to finish Addr : 4C49: Label0002 Addr : 4C49: 44 : Variable Operation Global Offset - 1 Read Addr : 4C4A: 35 : Constant 1 $00000000 Addr : 4C4B: D0 : Memory Op Long POP Address POP Index READ Addr : 4C4C: 3B 1F 00 00 00 : Constant 4 Bytes - 1F 00 00 00 Addr : 4C51: E8 : Math Op & Addr : 4C52: JZ Label0004 Addr : 4C52: 0A 02 : jz Address = 4C56 2 Addr : 4C54: Label0003 Addr : 4C54: JMP Label0002 Addr : 4C54: 04 73 : Jmp 4C49 -13 Addr : 4C56: Label0004 211 long[control][1] := 0 Addr : 4C56: 35 : Constant 1 $00000000 Addr : 4C57: 44 : Variable Operation Global Offset - 1 Read Addr : 4C58: 36 : Constant 2 $00000001 Addr : 4C59: D1 : Memory Op Long POP Address POP Index WRITE 212 long[control][0] := ioSpiStop << 24 Addr : 4C5A: 38 11 : Constant 1 Bytes - 11 Addr : 4C5C: 38 18 : Constant 1 Bytes - 18 Addr : 4C5E: E3 : Math Op << Addr : 4C5F: 44 : Variable Operation Global Offset - 1 Read Addr : 4C60: 35 : Constant 1 $00000000 Addr : 4C61: D1 : Memory Op Long POP Address POP Index WRITE Addr : 4C62: Label0005 213 repeat while long[control][0] & ioTestRdy ' Wait for this to finish Addr : 4C62: 44 : Variable Operation Global Offset - 1 Read Addr : 4C63: 35 : Constant 1 $00000000 Addr : 4C64: D0 : Memory Op Long POP Address POP Index READ Addr : 4C65: 3B 1F 00 00 00 : Constant 4 Bytes - 1F 00 00 00 Addr : 4C6A: E8 : Math Op & Addr : 4C6B: JZ Label0007 Addr : 4C6B: 0A 02 : jz Address = 4C6F 2 Addr : 4C6D: Label0006 Addr : 4C6D: JMP Label0005 Addr : 4C6D: 04 73 : Jmp 4C62 -13 Addr : 4C6F: Label0007 214 return (long[control][0] & ioTestErr) <> 0 ' Return any error code Addr : 4C6F: 44 : Variable Operation Global Offset - 1 Read Addr : 4C70: 35 : Constant 1 $00000000 Addr : 4C71: D0 : Memory Op Long POP Address POP Index READ Addr : 4C72: 37 1E : Constant Mask Y=30 80000000 Addr : 4C74: E8 : Math Op & Addr : 4C75: 35 : Constant 1 $00000000 Addr : 4C76: FB : Math Op <> Addr : 4C77: 33 : Return value Addr : 4C78: Data : 32 2 |===========================================================================| Spin Block readSDCard with 3 Parameters and 0 Extra Stack Longs. Method 9 PUB readSDCard(addr,buffer,count) '' Read block(s) from SD card to RAM |===========================================================================| 217 repeat while long[control][0] & ioTestRdy ' Wait for previous I/O to finish Addr : 4C79: Label0002 Addr : 4C79: 44 : Variable Operation Global Offset - 1 Read Addr : 4C7A: 35 : Constant 1 $00000000 Addr : 4C7B: D0 : Memory Op Long POP Address POP Index READ Addr : 4C7C: 3B 1F 00 00 00 : Constant 4 Bytes - 1F 00 00 00 Addr : 4C81: E8 : Math Op & Addr : 4C82: JZ Label0004 Addr : 4C82: 0A 02 : jz Address = 4C86 2 Addr : 4C84: Label0003 Addr : 4C84: JMP Label0002 Addr : 4C84: 04 73 : Jmp 4C79 -13 Addr : 4C86: Label0004 218 long[control][1] := (count << 16) | (buffer & $FFFF) Addr : 4C86: 6C : Variable Operation Local Offset - 3 Read Addr : 4C87: 37 03 : Constant Mask Y=3 00000010 Addr : 4C89: E3 : Math Op << Addr : 4C8A: 68 : Variable Operation Local Offset - 2 Read Addr : 4C8B: 37 2F : Constant Mask Y=47 Decrement 0000FFFF Addr : 4C8D: E8 : Math Op & Addr : 4C8E: EA : Math Op | Addr : 4C8F: 44 : Variable Operation Global Offset - 1 Read Addr : 4C90: 36 : Constant 2 $00000001 Addr : 4C91: D1 : Memory Op Long POP Address POP Index WRITE 219 long[control][0] := (ioSpiRead << 24) | (addr & $FFFFFF) Addr : 4C92: 38 12 : Constant 1 Bytes - 12 Addr : 4C94: 38 18 : Constant 1 Bytes - 18 Addr : 4C96: E3 : Math Op << Addr : 4C97: 64 : Variable Operation Local Offset - 1 Read Addr : 4C98: 37 37 : Constant Mask Y=55 Decrement 00FFFFFF Addr : 4C9A: E8 : Math Op & Addr : 4C9B: EA : Math Op | Addr : 4C9C: 44 : Variable Operation Global Offset - 1 Read Addr : 4C9D: 35 : Constant 1 $00000000 Addr : 4C9E: D1 : Memory Op Long POP Address POP Index WRITE Addr : 4C9F: Label0005 220 repeat while long[control][0] & ioTestRdy ' Wait for this to finish Addr : 4C9F: 44 : Variable Operation Global Offset - 1 Read Addr : 4CA0: 35 : Constant 1 $00000000 Addr : 4CA1: D0 : Memory Op Long POP Address POP Index READ Addr : 4CA2: 3B 1F 00 00 00 : Constant 4 Bytes - 1F 00 00 00 Addr : 4CA7: E8 : Math Op & Addr : 4CA8: JZ Label0007 Addr : 4CA8: 0A 02 : jz Address = 4CAC 2 Addr : 4CAA: Label0006 Addr : 4CAA: JMP Label0005 Addr : 4CAA: 04 73 : Jmp 4C9F -13 Addr : 4CAC: Label0007 221 return (long[control][0] & ioTestErr) <> 0 ' Return any error code Addr : 4CAC: 44 : Variable Operation Global Offset - 1 Read Addr : 4CAD: 35 : Constant 1 $00000000 Addr : 4CAE: D0 : Memory Op Long POP Address POP Index READ Addr : 4CAF: 37 1E : Constant Mask Y=30 80000000 Addr : 4CB1: E8 : Math Op & Addr : 4CB2: 35 : Constant 1 $00000000 Addr : 4CB3: FB : Math Op <> Addr : 4CB4: 33 : Return value Addr : 4CB5: Data : 32 2 |===========================================================================| Spin Block writeSDCard with 3 Parameters and 0 Extra Stack Longs. Method 10 PUB writeSDCard(addr,buffer,count) '' Write block(s) to SD card from RAM |===========================================================================| 224 repeat while long[control][0] & ioTestRdy ' Wait for previous I/O to finish Addr : 4CB6: Label0002 Addr : 4CB6: 44 : Variable Operation Global Offset - 1 Read Addr : 4CB7: 35 : Constant 1 $00000000 Addr : 4CB8: D0 : Memory Op Long POP Address POP Index READ Addr : 4CB9: 3B 1F 00 00 00 : Constant 4 Bytes - 1F 00 00 00 Addr : 4CBE: E8 : Math Op & Addr : 4CBF: JZ Label0004 Addr : 4CBF: 0A 02 : jz Address = 4CC3 2 Addr : 4CC1: Label0003 Addr : 4CC1: JMP Label0002 Addr : 4CC1: 04 73 : Jmp 4CB6 -13 Addr : 4CC3: Label0004 225 long[control][1] := (count << 16) | (buffer & $FFFF) Addr : 4CC3: 6C : Variable Operation Local Offset - 3 Read Addr : 4CC4: 37 03 : Constant Mask Y=3 00000010 Addr : 4CC6: E3 : Math Op << Addr : 4CC7: 68 : Variable Operation Local Offset - 2 Read Addr : 4CC8: 37 2F : Constant Mask Y=47 Decrement 0000FFFF Addr : 4CCA: E8 : Math Op & Addr : 4CCB: EA : Math Op | Addr : 4CCC: 44 : Variable Operation Global Offset - 1 Read Addr : 4CCD: 36 : Constant 2 $00000001 Addr : 4CCE: D1 : Memory Op Long POP Address POP Index WRITE 226 long[control][0] := (ioSpiWrite << 24) | (addr & $FFFFFF) Addr : 4CCF: 38 13 : Constant 1 Bytes - 13 Addr : 4CD1: 38 18 : Constant 1 Bytes - 18 Addr : 4CD3: E3 : Math Op << Addr : 4CD4: 64 : Variable Operation Local Offset - 1 Read Addr : 4CD5: 37 37 : Constant Mask Y=55 Decrement 00FFFFFF Addr : 4CD7: E8 : Math Op & Addr : 4CD8: EA : Math Op | Addr : 4CD9: 44 : Variable Operation Global Offset - 1 Read Addr : 4CDA: 35 : Constant 1 $00000000 Addr : 4CDB: D1 : Memory Op Long POP Address POP Index WRITE Addr : 4CDC: Label0005 227 repeat while long[control][0] & ioTestRdy ' Wait for this to finish Addr : 4CDC: 44 : Variable Operation Global Offset - 1 Read Addr : 4CDD: 35 : Constant 1 $00000000 Addr : 4CDE: D0 : Memory Op Long POP Address POP Index READ Addr : 4CDF: 3B 1F 00 00 00 : Constant 4 Bytes - 1F 00 00 00 Addr : 4CE4: E8 : Math Op & Addr : 4CE5: JZ Label0007 Addr : 4CE5: 0A 02 : jz Address = 4CE9 2 Addr : 4CE7: Label0006 Addr : 4CE7: JMP Label0005 Addr : 4CE7: 04 73 : Jmp 4CDC -13 Addr : 4CE9: Label0007 228 return (long[control][0] & ioTestErr) <> 0 ' Return any error code Addr : 4CE9: 44 : Variable Operation Global Offset - 1 Read Addr : 4CEA: 35 : Constant 1 $00000000 Addr : 4CEB: D0 : Memory Op Long POP Address POP Index READ Addr : 4CEC: 37 1E : Constant Mask Y=30 80000000 Addr : 4CEE: E8 : Math Op & Addr : 4CEF: 35 : Constant 1 $00000000 Addr : 4CF0: FB : Math Op <> Addr : 4CF1: 33 : Return value Addr : 4CF2: Data : 32 2 |===========================================================================| Spin Block bootSDCard with 2 Parameters and 1 Extra Stack Longs. Method 11 PUB bootSDCard(addr,count) | t '' Boot from an SD card |===========================================================================| 231 if count < 16 ' Must load at least 16 bytes Addr : 4CF3: 68 : Variable Operation Local Offset - 2 Read Addr : 4CF4: 37 03 : Constant Mask Y=3 00000010 Addr : 4CF6: F9 : Math Op < Addr : 4CF7: JZ Label0002 Addr : 4CF7: 0A 02 : jz Address = 4CFB 2 232 return true Addr : 4CF9: 34 : Constant 0 $FFFFFFFF Addr : 4CFA: 33 : Return value Addr : 4CFB: Label0002 Addr : 4CFB: Label0003 233 repeat t from 0 to 7 ' Stop all COGs except this one and Addr : 4CFB: 35 : Constant 1 $00000000 Addr : 4CFC: 6D : Variable Operation Local Offset - 3 Write Addr : 4CFD: Label0004 234 if (t <> cogid) and (t <> (cog-1)) ' the one with the I2C/SPI driver Addr : 4CFD: 6C : Variable Operation Local Offset - 3 Read Addr : 4CFE: 3F 89 : Register op $1E9 Read Addr : 4D00: FB : Math Op <> Addr : 4D01: 6C : Variable Operation Local Offset - 3 Read Addr : 4D02: 40 : Variable Operation Global Offset - 0 Read Addr : 4D03: 36 : Constant 2 $00000001 Addr : 4D04: ED : Math Op - Addr : 4D05: FB : Math Op <> Addr : 4D06: F0 : Math Op AND Addr : 4D07: JZ Label0007 Addr : 4D07: 0A 02 : jz Address = 4D0B 2 235 cogstop(t) Addr : 4D09: 6C : Variable Operation Local Offset - 3 Read Addr : 4D0A: 21 : CogStop(id) Addr : 4D0B: Label0007 Addr : 4D0B: Label0008 Addr : 4D0B: Label0005 233 repeat t from 0 to 7 ' Stop all COGs except this one and Addr : 4D0B: 35 : Constant 1 $00000000 Addr : 4D0C: 37 22 : Constant Mask Y=34 Decrement 00000007 Addr : 4D0E: Repeat t Step Label0004 Addr : 4D0E: 6E 02 6C : Variable Operation Local Offset - 3 Assign Repeat-Var loop Address= 4CFD -20 Addr : 4D11: Label0006 236 t := ioSpiBoot | ioStopLdr | cogid ' Tell the SD card driver to load Addr : 4D11: 38 18 : Constant 1 Bytes - 18 Addr : 4D13: 37 06 : Constant Mask Y=6 00000080 Addr : 4D15: EA : Math Op | Addr : 4D16: 3F 89 : Register op $1E9 Read Addr : 4D18: EA : Math Op | Addr : 4D19: 6D : Variable Operation Local Offset - 3 Write 237 long[control][1] := count << 16 ' into HUB RAM after stopping Addr : 4D1A: 68 : Variable Operation Local Offset - 2 Read Addr : 4D1B: 37 03 : Constant Mask Y=3 00000010 Addr : 4D1D: E3 : Math Op << Addr : 4D1E: 44 : Variable Operation Global Offset - 1 Read Addr : 4D1F: 36 : Constant 2 $00000001 Addr : 4D20: D1 : Memory Op Long POP Address POP Index WRITE 238 long[control][0] := (t << 24) | (addr & $FFFFFF) ' this calling cog Addr : 4D21: 6C : Variable Operation Local Offset - 3 Read Addr : 4D22: 38 18 : Constant 1 Bytes - 18 Addr : 4D24: E3 : Math Op << Addr : 4D25: 64 : Variable Operation Local Offset - 1 Read Addr : 4D26: 37 37 : Constant Mask Y=55 Decrement 00FFFFFF Addr : 4D28: E8 : Math Op & Addr : 4D29: EA : Math Op | Addr : 4D2A: 44 : Variable Operation Global Offset - 1 Read Addr : 4D2B: 35 : Constant 1 $00000000 Addr : 4D2C: D1 : Memory Op Long POP Address POP Index WRITE Addr : 4D2D: Label0009 239 repeat while long[control][0] & ioTestRdy ' Wait for this to finish Addr : 4D2D: 44 : Variable Operation Global Offset - 1 Read Addr : 4D2E: 35 : Constant 1 $00000000 Addr : 4D2F: D0 : Memory Op Long POP Address POP Index READ Addr : 4D30: 3B 1F 00 00 00 : Constant 4 Bytes - 1F 00 00 00 Addr : 4D35: E8 : Math Op & Addr : 4D36: JZ Label000B Addr : 4D36: 0A 02 : jz Address = 4D3A 2 Addr : 4D38: Label000A Addr : 4D38: JMP Label0009 Addr : 4D38: 04 73 : Jmp 4D2D -13 Addr : 4D3A: Label000B 240 return (long[control][0] & ioTestErr) <> 0 ' Return any error code Addr : 4D3A: 44 : Variable Operation Global Offset - 1 Read Addr : 4D3B: 35 : Constant 1 $00000000 Addr : 4D3C: D0 : Memory Op Long POP Address POP Index READ Addr : 4D3D: 37 1E : Constant Mask Y=30 80000000 Addr : 4D3F: E8 : Math Op & Addr : 4D40: 35 : Constant 1 $00000000 Addr : 4D41: FB : Math Op <> Addr : 4D42: 33 : Return value Addr : 4D43: Data : 32 2 |===========================================================================| Spin Block start with 1 Parameters and 1 Extra Stack Longs. Method 12 PUB start(ctrlBlk) | t '' Start the I2C I/O driver (standalone) |===========================================================================| 243 control := ctrlBlk '' using address of 2 longs for control Addr : 4D44: 64 : Variable Operation Local Offset - 1 Read Addr : 4D45: 45 : Variable Operation Global Offset - 1 Write 244 stop ' Stop a previous copy Addr : 4D46: 01 : Drop Anchor Addr : 4D47: 05 0D : Call Sub 13 245 computeTimes Addr : 4D49: 01 : Drop Anchor Addr : 4D4A: 05 06 : Call Sub 6 246 long[control][0] := 0 ' Initialize the control block Addr : 4D4C: 35 : Constant 1 $00000000 Addr : 4D4D: 44 : Variable Operation Global Offset - 1 Read Addr : 4D4E: 35 : Constant 1 $00000000 Addr : 4D4F: D1 : Memory Op Long POP Address POP Index WRITE 247 long[control][1] := 0 Addr : 4D50: 35 : Constant 1 $00000000 Addr : 4D51: 44 : Variable Operation Global Offset - 1 Read Addr : 4D52: 36 : Constant 2 $00000001 Addr : 4D53: D1 : Memory Op Long POP Address POP Index WRITE 248 cog := cognew(@i2cEntryPoint,control) + 1 ' Start a new cog with the I2C driver Addr : 4D54: 34 : Constant 0 $FFFFFFFF Addr : 4D55: C7 40 : Memory Op Long PBASE + ADDRESS Address = 0040 Addr : 4D57: 44 : Variable Operation Global Offset - 1 Read Addr : 4D58: 28 : CogInit(Id, Addr, Ptr) Push Addr : 4D59: 36 : Constant 2 $00000001 Addr : 4D5A: EC : Math Op + Addr : 4D5B: 41 : Variable Operation Global Offset - 0 Write 249 return cog > 0 ' Indicate success Addr : 4D5C: 40 : Variable Operation Global Offset - 0 Read Addr : 4D5D: 35 : Constant 1 $00000000 Addr : 4D5E: FA : Math Op > Addr : 4D5F: 33 : Return value Addr : 4D60: Data : 32 2 |===========================================================================| Spin Block stop with 0 Parameters and 0 Extra Stack Longs. Method 13 PUB stop '' Stop the I2C I/O driver (standalone) |===========================================================================| 252 if cog > 0 Addr : 4D61: 40 : Variable Operation Global Offset - 0 Read Addr : 4D62: 35 : Constant 1 $00000000 Addr : 4D63: FA : Math Op > Addr : 4D64: JZ Label0002 Addr : 4D64: 0A 04 : jz Address = 4D6A 4 253 cogstop(cog - 1) Addr : 4D66: 40 : Variable Operation Global Offset - 0 Read Addr : 4D67: 36 : Constant 2 $00000001 Addr : 4D68: ED : Math Op - Addr : 4D69: 21 : CogStop(id) Addr : 4D6A: Label0002 Addr : 4D6A: Label0003 Addr : 4D6A: 32 : Return |===========================================================================| Spin Block getControl with 1 Parameters and 0 Extra Stack Longs. Method 14 PUB getControl(i) '' Return a long from the control block |===========================================================================| 256 return long[control][i] ' Check for operation completed first Addr : 4D6B: 44 : Variable Operation Global Offset - 1 Read Addr : 4D6C: 64 : Variable Operation Local Offset - 1 Read Addr : 4D6D: D0 : Memory Op Long POP Address POP Index READ Addr : 4D6E: 33 : Return value Addr : 4D6F: Data : 32 2 |===========================================================================| Spin Block setControl with 2 Parameters and 0 Extra Stack Longs. Method 15 PUB setControl(i,value) '' Set value of a long in the control block |===========================================================================| 259 long[control][i] := value ' Always set the first long last Addr : 4D70: 68 : Variable Operation Local Offset - 2 Read Addr : 4D71: 44 : Variable Operation Global Offset - 1 Read Addr : 4D72: 64 : Variable Operation Local Offset - 1 Read Addr : 4D73: D1 : Memory Op Long POP Address POP Index WRITE Addr : 4D74: 32 : Return |===========================================================================| Object VGA_DRIVE Object Base is 6394 |===========================================================================| |===========================================================================| VBASE Global Variables |===========================================================================| VBASE : 0000 LONG Size 0004 Variable colNo VBASE : 0004 LONG Size 0004 Variable rowNo VBASE : 0008 LONG Size 0004 Variable arg VBASE : 000C BYTE Size 0001 Variable rowClr VBASE : 000D BYTE Size 0001 Variable bgClr |===========================================================================| Object DAT Variables |===========================================================================| ABS : 63C0 PBASE : 002C LONG Variable d0 ABS : 6420 PBASE : 008C LONG Variable d0s0 ABS : 6424 PBASE : 0090 LONG Variable d1 ABS : 6428 PBASE : 0094 LONG Variable main_ctr ABS : 642C PBASE : 0098 LONG Variable scan_ctr ABS : 6444 PBASE : 00B0 LONG Variable reg_dira ABS : 6448 PBASE : 00B4 LONG Variable reg_dirb ABS : 644C PBASE : 00B8 LONG Variable reg_vcfg ABS : 6450 PBASE : 00BC LONG Variable sync_cnt ABS : 65AC PBASE : 0218 LONG Variable screen_base ABS : 65B0 PBASE : 021C LONG Variable color_base ABS : 65B4 PBASE : 0220 LONG Variable cursor_base ABS : 65B8 PBASE : 0224 LONG Variable font_base ABS : 65BC PBASE : 0228 LONG Variable font_third ABS : 65C0 PBASE : 022C LONG Variable hx ABS : 65C4 PBASE : 0230 LONG Variable vscl_line2x ABS : 65C8 PBASE : 0234 LONG Variable vscl_chr ABS : 65CC PBASE : 0238 LONG Variable colormask ABS : 65D0 PBASE : 023C LONG Variable longmask ABS : 65D4 PBASE : 0240 LONG Variable slowbit ABS : 65D8 PBASE : 0244 LONG Variable fastbit ABS : 65DC PBASE : 0248 LONG Variable underscore ABS : 65E0 PBASE : 024C LONG Variable hv ABS : 65E4 PBASE : 0250 LONG Variable hvsync ABS : 65E8 PBASE : 0254 LONG Variable font |===========================================================================| |===========================================================================| Spin Block videoCog with 1 Parameters and 0 Extra Stack Longs. Method 1 PUB videoCog(i) |===========================================================================| 92 return byte[cogUse][i] - 1 Addr : 6BE8: 39 73 28 : Constant 2 Bytes - 73 28 Addr : 6BEB: 64 : Variable Operation Local Offset - 1 Read Addr : 6BEC: 90 : Memory Op Byte POP Address POP Index READ Addr : 6BED: 36 : Constant 2 $00000001 Addr : 6BEE: ED : Math Op - Addr : 6BEF: 33 : Return value Addr : 6BF0: Data : 32 2 |===========================================================================| Spin Block start with 1 Parameters and 0 Extra Stack Longs. Method 2 PUB start(basePin) ' Default initialization |===========================================================================| 95 longfill(screen,$20202020,cols*rows/4) Addr : 6BF1: 39 73 80 : Constant 2 Bytes - 73 80 Addr : 6BF4: 3B 20 20 20 20 : Constant 4 Bytes - 20 20 20 20 Addr : 6BF9: 38 50 : Constant 1 Bytes - 50 Addr : 6BFB: 38 28 : Constant 1 Bytes - 28 Addr : 6BFD: F4 : Math Op * Addr : 6BFE: 37 01 : Constant Mask Y=1 00000004 Addr : 6C00: F6 : Math Op / Addr : 6C01: 1A : LongFill(Start, Value, Count) 96 wordfill(colors,%%0020_3300,rows) Addr : 6C02: 39 73 30 : Constant 2 Bytes - 73 30 Addr : 6C05: 39 08 F0 : Constant 2 Bytes - 08 F0 Addr : 6C08: 38 28 : Constant 1 Bytes - 28 Addr : 6C0A: 19 : WordFill(Start, Value, Count) 97 bytefill(cursor,0,6) Addr : 6C0B: 39 73 2A : Constant 2 Bytes - 73 2A Addr : 6C0E: 35 : Constant 1 $00000000 Addr : 6C0F: 38 06 : Constant 1 Bytes - 06 Addr : 6C11: 18 : ByteFill(Start, Value, Count) 98 colNo := rowNo := 0 Addr : 6C12: 35 : Constant 1 $00000000 Addr : 6C13: 46 80 : Variable Operation Global Offset - 1 Assign Write Push Addr : 6C15: 41 : Variable Operation Global Offset - 0 Write 99 arg := 0 Addr : 6C16: 35 : Constant 1 $00000000 Addr : 6C17: 49 : Variable Operation Global Offset - 2 Write 100 return startX(basePin, screen, colors, cursor, sync) Addr : 6C18: 00 : Drop Anchor Push Addr : 6C19: 64 : Variable Operation Local Offset - 1 Read Addr : 6C1A: 39 73 80 : Constant 2 Bytes - 73 80 Addr : 6C1D: 39 73 30 : Constant 2 Bytes - 73 30 Addr : 6C20: 39 73 2A : Constant 2 Bytes - 73 2A Addr : 6C23: 39 73 24 : Constant 2 Bytes - 73 24 Addr : 6C26: 05 03 : Call Sub 3 Addr : 6C28: 33 : Return value Addr : 6C29: Data : 32 2 |===========================================================================| Spin Block startX with 5 Parameters and 2 Extra Stack Longs. Method 3 PUB startX(BasePin, ScreenPtr, ColorPtr, CursorPtr, SyncPtr) : okay | i, j |===========================================================================| 149 stop Addr : 6C2A: 01 : Drop Anchor Addr : 6C2B: 05 04 : Call Sub 4 152 reg_vcfg := $200000FF + (BasePin & %111000) << 6 Addr : 6C2D: 3B 20 00 00 FF : Constant 4 Bytes - 20 00 00 FF Addr : 6C32: 64 : Variable Operation Local Offset - 1 Read Addr : 6C33: 38 38 : Constant 1 Bytes - 38 Addr : 6C35: E8 : Math Op & Addr : 6C36: 38 06 : Constant 1 Bytes - 06 Addr : 6C38: E3 : Math Op << Addr : 6C39: EC : Math Op + Addr : 6C3A: C5 80 B8 : Memory Op Long PBASE + WRITE Address = 00B8 153 i := $FF << (BasePin & %011000) Addr : 6C3D: 37 27 : Constant Mask Y=39 Decrement 000000FF Addr : 6C3F: 64 : Variable Operation Local Offset - 1 Read Addr : 6C40: 38 18 : Constant 1 Bytes - 18 Addr : 6C42: E8 : Math Op & Addr : 6C43: E3 : Math Op << Addr : 6C44: 79 : Variable Operation Local Offset - 6 Write 154 j := BasePin & %100000 == 0 Addr : 6C45: 64 : Variable Operation Local Offset - 1 Read Addr : 6C46: 37 04 : Constant Mask Y=4 00000020 Addr : 6C48: E8 : Math Op & Addr : 6C49: 35 : Constant 1 $00000000 Addr : 6C4A: FC : Math Op == Addr : 6C4B: 7D : Variable Operation Local Offset - 7 Write 155 reg_dira := i & j Addr : 6C4C: 78 : Variable Operation Local Offset - 6 Read Addr : 6C4D: 7C : Variable Operation Local Offset - 7 Read Addr : 6C4E: E8 : Math Op & Addr : 6C4F: C5 80 B0 : Memory Op Long PBASE + WRITE Address = 00B0 156 reg_dirb := i & !j Addr : 6C52: 78 : Variable Operation Local Offset - 6 Read Addr : 6C53: 7C : Variable Operation Local Offset - 7 Read Addr : 6C54: E7 : Math Op ! Addr : 6C55: E8 : Math Op & Addr : 6C56: C5 80 B4 : Memory Op Long PBASE + WRITE Address = 00B4 159 sync_cnt := cnt + $10000 Addr : 6C59: 3F 91 : Register op CNT Read Addr : 6C5B: 37 0F : Constant Mask Y=15 00010000 Addr : 6C5D: EC : Math Op + Addr : 6C5E: C5 80 BC : Memory Op Long PBASE + WRITE Address = 00BC 162 longmove(@screen_base, @ScreenPtr, 3) Addr : 6C61: C7 82 18 : Memory Op Long PBASE + ADDRESS Address = 0218 Addr : 6C64: 6B : Variable Operation Local Offset - 2 Address Addr : 6C65: 37 21 : Constant Mask Y=33 Decrement 00000003 Addr : 6C67: 1E : LongMove(To, From, Count) 163 font_base := @font Addr : 6C68: C7 82 54 : Memory Op Long PBASE + ADDRESS Address = 0254 Addr : 6C6B: C5 82 24 : Memory Op Long PBASE + WRITE Address = 0224 166 vf_lines.byte := vf Addr : 6C6E: 38 09 : Constant 1 Bytes - 09 Addr : 6C70: 85 81 E0 : Memory Op Byte PBASE + WRITE Address = 01E0 167 vb_lines.byte := vb Addr : 6C73: 38 1C : Constant 1 Bytes - 1C Addr : 6C75: 85 80 C8 : Memory Op Byte PBASE + WRITE Address = 00C8 168 font_third := 1 Addr : 6C78: 36 : Constant 2 $00000001 Addr : 6C79: C5 82 28 : Memory Op Long PBASE + WRITE Address = 0228 169 byte[cogUse][1] := cognew(@d0, SyncPtr) + 1 Addr : 6C7C: 34 : Constant 0 $FFFFFFFF Addr : 6C7D: C7 2C : Memory Op Long PBASE + ADDRESS Address = 002C Addr : 6C7F: 74 : Variable Operation Local Offset - 5 Read Addr : 6C80: 28 : CogInit(Id, Addr, Ptr) Push Addr : 6C81: 36 : Constant 2 $00000001 Addr : 6C82: EC : Math Op + Addr : 6C83: 39 73 28 : Constant 2 Bytes - 73 28 Addr : 6C86: 36 : Constant 2 $00000001 Addr : 6C87: 91 : Memory Op Byte POP Address POP Index WRITE 172 waitcnt($2000 + cnt) Addr : 6C88: 37 0C : Constant Mask Y=12 00002000 Addr : 6C8A: 3F 91 : Register op CNT Read Addr : 6C8C: EC : Math Op + Addr : 6C8D: 23 : WaitCnt(count) 175 vf_lines.byte := vf+4 Addr : 6C8E: 38 09 : Constant 1 Bytes - 09 Addr : 6C90: 37 01 : Constant Mask Y=1 00000004 Addr : 6C92: EC : Math Op + Addr : 6C93: 85 81 E0 : Memory Op Byte PBASE + WRITE Address = 01E0 176 vb_lines.byte := vb-4 Addr : 6C96: 38 1C : Constant 1 Bytes - 1C Addr : 6C98: 37 01 : Constant Mask Y=1 00000004 Addr : 6C9A: ED : Math Op - Addr : 6C9B: 85 80 C8 : Memory Op Byte PBASE + WRITE Address = 00C8 177 font_third := 0 Addr : 6C9E: 35 : Constant 1 $00000000 Addr : 6C9F: C5 82 28 : Memory Op Long PBASE + WRITE Address = 0228 178 byte[cogUse][0] := cognew(@d0, SyncPtr) + 1 Addr : 6CA2: 34 : Constant 0 $FFFFFFFF Addr : 6CA3: C7 2C : Memory Op Long PBASE + ADDRESS Address = 002C Addr : 6CA5: 74 : Variable Operation Local Offset - 5 Read Addr : 6CA6: 28 : CogInit(Id, Addr, Ptr) Push Addr : 6CA7: 36 : Constant 2 $00000001 Addr : 6CA8: EC : Math Op + Addr : 6CA9: 39 73 28 : Constant 2 Bytes - 73 28 Addr : 6CAC: 35 : Constant 1 $00000000 Addr : 6CAD: 91 : Memory Op Byte POP Address POP Index WRITE 181 if byte[cogUse][0] and byte[cogUse][1] Addr : 6CAE: 39 73 28 : Constant 2 Bytes - 73 28 Addr : 6CB1: 35 : Constant 1 $00000000 Addr : 6CB2: 90 : Memory Op Byte POP Address POP Index READ Addr : 6CB3: 39 73 28 : Constant 2 Bytes - 73 28 Addr : 6CB6: 36 : Constant 2 $00000001 Addr : 6CB7: 90 : Memory Op Byte POP Address POP Index READ Addr : 6CB8: F0 : Math Op AND Addr : 6CB9: JZ Label0002 Addr : 6CB9: 0A 04 : jz Address = 6CBF 4 182 return true Addr : 6CBB: 34 : Constant 0 $FFFFFFFF Addr : 6CBC: 33 : Return value Addr : 6CBD: JMP Label0003 Addr : 6CBD: 04 03 : Jmp 6CC2 3 Addr : 6CBF: Label0002 186 stop Addr : 6CBF: 01 : Drop Anchor Addr : 6CC0: 05 04 : Call Sub 4 Addr : 6CC2: Label0004 Addr : 6CC2: Label0003 Addr : 6CC2: 32 : Return |===========================================================================| Spin Block stop with 0 Parameters and 1 Extra Stack Longs. Method 4 PUB stop | i |===========================================================================| 192 repeat i from 0 to 1 Addr : 6CC3: 35 : Constant 1 $00000000 Addr : 6CC4: 65 : Variable Operation Local Offset - 1 Write Addr : 6CC5: Label0002 193 if byte[cogUse][i] Addr : 6CC5: 39 73 28 : Constant 2 Bytes - 73 28 Addr : 6CC8: 64 : Variable Operation Local Offset - 1 Read Addr : 6CC9: 90 : Memory Op Byte POP Address POP Index READ Addr : 6CCA: JZ Label0005 Addr : 6CCA: 0A 09 : jz Address = 6CD5 9 194 cogstop(byte[cogUse][i]~ - 1) Addr : 6CCC: 39 73 28 : Constant 2 Bytes - 73 28 Addr : 6CCF: 64 : Variable Operation Local Offset - 1 Read Addr : 6CD0: 92 98 : Memory Op Byte POP Address POP Index ASSIGN VAR~ Post-clear Push Addr : 6CD2: 36 : Constant 2 $00000001 Addr : 6CD3: ED : Math Op - Addr : 6CD4: 21 : CogStop(id) Addr : 6CD5: Label0005 Addr : 6CD5: Label0006 Addr : 6CD5: Label0003 192 repeat i from 0 to 1 Addr : 6CD5: 35 : Constant 1 $00000000 Addr : 6CD6: 36 : Constant 2 $00000001 Addr : 6CD7: Repeat i Step Label0002 Addr : 6CD7: 66 02 6B : Variable Operation Local Offset - 1 Assign Repeat-Var loop Address= 6CC5 -21 Addr : 6CDA: Label0004 Addr : 6CDA: 32 : Return |===========================================================================| Spin Block str with 1 Parameters and 0 Extra Stack Longs. Method 5 PUB str(stringptr) |===========================================================================| 200 repeat strsize(stringptr) Addr : 6CDB: 64 : Variable Operation Local Offset - 1 Read Addr : 6CDC: 16 : StrSize(String) Addr : 6CDD: TJZ Label0004 Addr : 6CDD: 08 08 : tjz Address = 6CE7 8 Addr : 6CDF: Label0002 201 out(byte[stringptr++]) Addr : 6CDF: 01 : Drop Anchor Addr : 6CE0: 66 AE : Variable Operation Local Offset - 1 Assign VAR++ post inc Long Push Addr : 6CE2: 80 : Memory Op Byte POP Address READ Addr : 6CE3: 05 09 : Call Sub 9 Addr : 6CE5: Label0003 Addr : 6CE5: DJNZ Label0002 Addr : 6CE5: 09 78 : djnz Address = 6CDF -8 Addr : 6CE7: Label0004 Addr : 6CE7: 32 : Return |===========================================================================| Spin Block dec with 1 Parameters and 1 Extra Stack Longs. Method 6 PUB dec(value) | i |===========================================================================| 207 if value < 0 Addr : 6CE8: 64 : Variable Operation Local Offset - 1 Read Addr : 6CE9: 35 : Constant 1 $00000000 Addr : 6CEA: F9 : Math Op < Addr : 6CEB: JZ Label0002 Addr : 6CEB: 0A 07 : jz Address = 6CF4 7 208 -value Addr : 6CED: 66 46 : Variable Operation Local Offset - 1 Assign LongMathop - 209 out("-") Addr : 6CEF: 01 : Drop Anchor Addr : 6CF0: 38 2D : Constant 1 Bytes - 2D Addr : 6CF2: 05 09 : Call Sub 9 Addr : 6CF4: Label0002 Addr : 6CF4: Label0003 211 i := 1_000_000_000 Addr : 6CF4: 3B 3B 9A CA 00 : Constant 4 Bytes - 3B 9A CA 00 Addr : 6CF9: 69 : Variable Operation Local Offset - 2 Write 213 repeat 10 Addr : 6CFA: 38 0A : Constant 1 Bytes - 0A Addr : 6CFC: TJZ Label0006 Addr : 6CFC: 08 27 : tjz Address = 6D25 39 Addr : 6CFE: Label0004 214 if value => i Addr : 6CFE: 64 : Variable Operation Local Offset - 1 Read Addr : 6CFF: 68 : Variable Operation Local Offset - 2 Read Addr : 6D00: FE : Math Op => Addr : 6D01: JZ Label0007 Addr : 6D01: 0A 10 : jz Address = 6D13 16 215 out(value / i + "0") Addr : 6D03: 01 : Drop Anchor Addr : 6D04: 64 : Variable Operation Local Offset - 1 Read Addr : 6D05: 68 : Variable Operation Local Offset - 2 Read Addr : 6D06: F6 : Math Op / Addr : 6D07: 38 30 : Constant 1 Bytes - 30 Addr : 6D09: EC : Math Op + Addr : 6D0A: 05 09 : Call Sub 9 216 value //= i Addr : 6D0C: 68 : Variable Operation Local Offset - 2 Read Addr : 6D0D: 66 57 : Variable Operation Local Offset - 1 Assign LongMathop // 217 result~~ Addr : 6D0F: 62 1C : Variable Operation Local Offset - 0 Assign VAR~~ Post-set Addr : 6D11: JMP Label0008 Addr : 6D11: 04 0C : Jmp 6D1F 12 Addr : 6D13: Label0007 218 elseif result or i == 1 Addr : 6D13: 60 : Variable Operation Local Offset - 0 Read Addr : 6D14: 68 : Variable Operation Local Offset - 2 Read Addr : 6D15: 36 : Constant 2 $00000001 Addr : 6D16: FC : Math Op == Addr : 6D17: F2 : Math Op OR Addr : 6D18: JZ Label0009 Addr : 6D18: 0A 05 : jz Address = 6D1F 5 219 out("0") Addr : 6D1A: 01 : Drop Anchor Addr : 6D1B: 38 30 : Constant 1 Bytes - 30 Addr : 6D1D: 05 09 : Call Sub 9 Addr : 6D1F: Label0009 Addr : 6D1F: Label0008 220 i /= 10 Addr : 6D1F: 38 0A : Constant 1 Bytes - 0A Addr : 6D21: 6A 56 : Variable Operation Local Offset - 2 Assign LongMathop / Addr : 6D23: Label0005 Addr : 6D23: DJNZ Label0004 Addr : 6D23: 09 59 : djnz Address = 6CFE -39 Addr : 6D25: Label0006 Addr : 6D25: 32 : Return |===========================================================================| Spin Block hex with 2 Parameters and 0 Extra Stack Longs. Method 7 PUB hex(value, digits) |===========================================================================| 226 value <<= (8 - digits) << 2 Addr : 6D26: 37 02 : Constant Mask Y=2 00000008 Addr : 6D28: 68 : Variable Operation Local Offset - 2 Read Addr : 6D29: ED : Math Op - Addr : 6D2A: 37 00 : Constant Mask Y=0 00000002 Addr : 6D2C: E3 : Math Op << Addr : 6D2D: 66 43 : Variable Operation Local Offset - 1 Assign ByteMathop << 227 repeat digits Addr : 6D2F: 68 : Variable Operation Local Offset - 2 Read Addr : 6D30: TJZ Label0004 Addr : 6D30: 08 1B : tjz Address = 6D4D 27 Addr : 6D32: Label0002 228 out(lookupz((value <-= 4) & $F : "0".."9", "A".."F")) Addr : 6D32: 01 : Drop Anchor Addr : 6D33: 35 : Constant 1 $00000000 Addr : 6D34: Constant Address of Label0005 Addr : 6D34: 39 09 B5 : Constant 2 Bytes - 09 B5 Addr : 6D37: 37 01 : Constant Mask Y=1 00000004 Addr : 6D39: 66 C1 : Variable Operation Local Offset - 1 Assign BitMathop -< Push Addr : 6D3B: 37 23 : Constant Mask Y=35 Decrement 0000000F Addr : 6D3D: E8 : Math Op & Addr : 6D3E: 38 30 : Constant 1 Bytes - 30 Addr : 6D40: 38 39 : Constant 1 Bytes - 39 Addr : 6D42: 12 : Range LookUp Addr : 6D43: 38 41 : Constant 1 Bytes - 41 Addr : 6D45: 38 46 : Constant 1 Bytes - 46 Addr : 6D47: 12 : Range LookUp Addr : 6D48: 0F : Lookdone Addr : 6D49: Label0005 Addr : 6D49: 05 09 : Call Sub 9 Addr : 6D4B: Label0003 Addr : 6D4B: DJNZ Label0002 Addr : 6D4B: 09 65 : djnz Address = 6D32 -27 Addr : 6D4D: Label0004 Addr : 6D4D: 32 : Return |===========================================================================| Spin Block bin with 2 Parameters and 0 Extra Stack Longs. Method 8 PUB bin(value, digits) |===========================================================================| 234 value <<= 32 - digits Addr : 6D4E: 37 04 : Constant Mask Y=4 00000020 Addr : 6D50: 68 : Variable Operation Local Offset - 2 Read Addr : 6D51: ED : Math Op - Addr : 6D52: 66 43 : Variable Operation Local Offset - 1 Assign ByteMathop << 235 repeat digits Addr : 6D54: 68 : Variable Operation Local Offset - 2 Read Addr : 6D55: TJZ Label0004 Addr : 6D55: 08 0D : tjz Address = 6D64 13 Addr : 6D57: Label0002 236 out((value <-= 1) & 1 + "0") Addr : 6D57: 01 : Drop Anchor Addr : 6D58: 36 : Constant 2 $00000001 Addr : 6D59: 66 C1 : Variable Operation Local Offset - 1 Assign BitMathop -< Push Addr : 6D5B: 36 : Constant 2 $00000001 Addr : 6D5C: E8 : Math Op & Addr : 6D5D: 38 30 : Constant 1 Bytes - 30 Addr : 6D5F: EC : Math Op + Addr : 6D60: 05 09 : Call Sub 9 Addr : 6D62: Label0003 Addr : 6D62: DJNZ Label0002 Addr : 6D62: 09 73 : djnz Address = 6D57 -13 Addr : 6D64: Label0004 Addr : 6D64: 32 : Return |===========================================================================| Spin Block out with 1 Parameters and 0 Extra Stack Longs. Method 9 PUB out(c) |===========================================================================| 239 case arg Addr : 6D65: Constant Address of Label0002 Addr : 6D65: 39 0A 9F : Constant 2 Bytes - 0A 9F Addr : 6D68: 48 : Variable Operation Global Offset - 2 Read 240 0: Addr : 6D69: 35 : Constant 1 $00000000 Addr : 6D6A: Case_Value Label0003 Addr : 6D6A: 0D 1C : Value Case Address = 6D88 28 258 SetColor: ' Save row number Addr : 6D6C: 38 0C : Constant 1 Bytes - 0C Addr : 6D6E: Case_Value Label000E Addr : 6D6E: 0D 80 89 : Value Case Address = 6DFA 137 261 $101: ' Save background color information Addr : 6D71: 39 01 01 : Constant 2 Bytes - 01 01 Addr : 6D74: Case_Value Label000F Addr : 6D74: 0D 80 90 : Value Case Address = 6E07 144 264 $102: ' Now set row background and foreground color Addr : 6D77: 39 01 02 : Constant 2 Bytes - 01 02 Addr : 6D7A: Case_Value Label0010 Addr : 6D7A: 0D 80 92 : Value Case Address = 6E0F 146 267 MoveX: Addr : 6D7D: 38 0E : Constant 1 Bytes - 0E Addr : 6D7F: Case_Value Label0011 Addr : 6D7F: 0D 80 9D : Value Case Address = 6E1F 157 270 MoveY: Addr : 6D82: 37 23 : Constant Mask Y=35 Decrement 0000000F Addr : 6D84: Case_Value Label0012 Addr : 6D84: 0D 80 A2 : Value Case Address = 6E29 162 Addr : 6D87: CaseDone Label0012 Addr : 6D87: 0C : Casedone Addr : 6D88: Label0003 Addr : 6D88: Constant Address of Label0004 Addr : 6D88: 39 0A 65 : Constant 2 Bytes - 0A 65 241 case c Addr : 6D8B: 64 : Variable Operation Local Offset - 1 Read 242 ClrScr: Addr : 6D8C: 35 : Constant 1 $00000000 Addr : 6D8D: Case_Value Label0005 Addr : 6D8D: 0D 34 : Value Case Address = 6DC3 52 245 Home: Addr : 6D8F: 36 : Constant 2 $00000001 Addr : 6D90: Case_Value Label0006 Addr : 6D90: 0D 80 46 : Value Case Address = 6DD9 70 247 Bsp: Addr : 6D93: 37 02 : Constant Mask Y=2 00000008 Addr : 6D95: Case_Value Label0007 Addr : 6D95: 0D 80 46 : Value Case Address = 6DDE 70 250 Cr: Addr : 6D98: 38 0D : Constant 1 Bytes - 0D Addr : 6D9A: Case_Value Label000A Addr : 6D9A: 0D 80 55 : Value Case Address = 6DF2 85 252 SetColor, MoveX, MoveY: Addr : 6D9D: 38 0C : Constant 1 Bytes - 0C Addr : 6D9F: Case_Value Label000B Addr : 6D9F: 0D 80 54 : Value Case Address = 6DF6 84 Addr : 6DA2: 38 0E : Constant 1 Bytes - 0E Addr : 6DA4: Case_Value Label000B Addr : 6DA4: 0D 80 4F : Value Case Address = 6DF6 79 Addr : 6DA7: 37 23 : Constant Mask Y=35 Decrement 0000000F Addr : 6DA9: Case_Value Label000B Addr : 6DA9: 0D 80 4A : Value Case Address = 6DF6 74 255 byte[screen+rowNo*cols+colNo++] := c Addr : 6DAC: 64 : Variable Operation Local Offset - 1 Read Addr : 6DAD: 39 73 80 : Constant 2 Bytes - 73 80 Addr : 6DB0: 44 : Variable Operation Global Offset - 1 Read Addr : 6DB1: 38 50 : Constant 1 Bytes - 50 Addr : 6DB3: F4 : Math Op * Addr : 6DB4: EC : Math Op + Addr : 6DB5: 42 AE : Variable Operation Global Offset - 0 Assign VAR++ post inc Long Push Addr : 6DB7: EC : Math Op + Addr : 6DB8: 81 : Memory Op Byte POP Address WRITE 256 if colNo == cols Addr : 6DB9: 40 : Variable Operation Global Offset - 0 Read Addr : 6DBA: 38 50 : Constant 1 Bytes - 50 Addr : 6DBC: FC : Math Op == Addr : 6DBD: JZ Label000C Addr : 6DBD: 0A 03 : jz Address = 6DC2 3 257 newline Addr : 6DBF: 01 : Drop Anchor Addr : 6DC0: 05 0A : Call Sub 10 Addr : 6DC2: Label000C Addr : 6DC2: Label000D Addr : 6DC2: CaseDone Label000B Addr : 6DC2: 0C : Casedone Addr : 6DC3: Label0005 243 longfill(screen,$20202020,cols*rows/4) Addr : 6DC3: 39 73 80 : Constant 2 Bytes - 73 80 Addr : 6DC6: 3B 20 20 20 20 : Constant 4 Bytes - 20 20 20 20 Addr : 6DCB: 38 50 : Constant 1 Bytes - 50 Addr : 6DCD: 38 28 : Constant 1 Bytes - 28 Addr : 6DCF: F4 : Math Op * Addr : 6DD0: 37 01 : Constant Mask Y=1 00000004 Addr : 6DD2: F6 : Math Op / Addr : 6DD3: 1A : LongFill(Start, Value, Count) 244 colNo := rowNo := 0 Addr : 6DD4: 35 : Constant 1 $00000000 Addr : 6DD5: 46 80 : Variable Operation Global Offset - 1 Assign Write Push Addr : 6DD7: 41 : Variable Operation Global Offset - 0 Write Addr : 6DD8: CaseDone Label0005 Addr : 6DD8: 0C : Casedone Addr : 6DD9: Label0006 246 colNo := rowNo := 0 Addr : 6DD9: 35 : Constant 1 $00000000 Addr : 6DDA: 46 80 : Variable Operation Global Offset - 1 Assign Write Push Addr : 6DDC: 41 : Variable Operation Global Offset - 0 Write Addr : 6DDD: CaseDone Label0006 Addr : 6DDD: 0C : Casedone Addr : 6DDE: Label0007 248 if colNo > 0 Addr : 6DDE: 40 : Variable Operation Global Offset - 0 Read Addr : 6DDF: 35 : Constant 1 $00000000 Addr : 6DE0: FA : Math Op > Addr : 6DE1: JZ Label0008 Addr : 6DE1: 0A 0E : jz Address = 6DF1 14 249 byte[screen+rowNo*cols+(--colNo)] := " " Addr : 6DE3: 37 04 : Constant Mask Y=4 00000020 Addr : 6DE5: 39 73 80 : Constant 2 Bytes - 73 80 Addr : 6DE8: 44 : Variable Operation Global Offset - 1 Read Addr : 6DE9: 38 50 : Constant 1 Bytes - 50 Addr : 6DEB: F4 : Math Op * Addr : 6DEC: EC : Math Op + Addr : 6DED: 42 B6 : Variable Operation Global Offset - 0 Assign --VAR pre-dec Long Push Addr : 6DEF: EC : Math Op + Addr : 6DF0: 81 : Memory Op Byte POP Address WRITE Addr : 6DF1: Label0008 Addr : 6DF1: Label0009 Addr : 6DF1: CaseDone Label0007 Addr : 6DF1: 0C : Casedone Addr : 6DF2: Label000A 251 newline Addr : 6DF2: 01 : Drop Anchor Addr : 6DF3: 05 0A : Call Sub 10 Addr : 6DF5: CaseDone Label000A Addr : 6DF5: 0C : Casedone Addr : 6DF6: Label000B 253 arg := c Addr : 6DF6: 64 : Variable Operation Local Offset - 1 Read Addr : 6DF7: 49 : Variable Operation Global Offset - 2 Write Addr : 6DF8: CaseDone Label000B Addr : 6DF8: 0C : Casedone Addr : 6DF9: Label0004 Addr : 6DF9: CaseDone Label0003 Addr : 6DF9: 0C : Casedone Addr : 6DFA: Label000E 259 rowClr := c <# rows-1 Addr : 6DFA: 64 : Variable Operation Local Offset - 1 Read Addr : 6DFB: 38 28 : Constant 1 Bytes - 28 Addr : 6DFD: 36 : Constant 2 $00000001 Addr : 6DFE: ED : Math Op - Addr : 6DFF: E5 : Math Op <| Addr : 6E00: 89 0C : Memory Op Byte VBASE + WRITE Address = 000C 260 arg := $101 Addr : 6E02: 39 01 01 : Constant 2 Bytes - 01 01 Addr : 6E05: 49 : Variable Operation Global Offset - 2 Write Addr : 6E06: CaseDone Label000E Addr : 6E06: 0C : Casedone Addr : 6E07: Label000F 262 bgClr := c Addr : 6E07: 64 : Variable Operation Local Offset - 1 Read Addr : 6E08: 89 0D : Memory Op Byte VBASE + WRITE Address = 000D 263 arg := $102 Addr : 6E0A: 39 01 02 : Constant 2 Bytes - 01 02 Addr : 6E0D: 49 : Variable Operation Global Offset - 2 Write Addr : 6E0E: CaseDone Label000F Addr : 6E0E: 0C : Casedone Addr : 6E0F: Label0010 265 word[colors][rowClr] := bgClr << 8 | c Addr : 6E0F: 88 0D : Memory Op Byte VBASE + READ Address = 000D Addr : 6E11: 37 02 : Constant Mask Y=2 00000008 Addr : 6E13: E3 : Math Op << Addr : 6E14: 64 : Variable Operation Local Offset - 1 Read Addr : 6E15: EA : Math Op | Addr : 6E16: 39 73 30 : Constant 2 Bytes - 73 30 Addr : 6E19: 88 0C : Memory Op Byte VBASE + READ Address = 000C Addr : 6E1B: B1 : Memory Op Word POP Address POP Index WRITE 266 arg := 0 Addr : 6E1C: 35 : Constant 1 $00000000 Addr : 6E1D: 49 : Variable Operation Global Offset - 2 Write Addr : 6E1E: CaseDone Label0010 Addr : 6E1E: 0C : Casedone Addr : 6E1F: Label0011 268 colNo := c <# cols-1 Addr : 6E1F: 64 : Variable Operation Local Offset - 1 Read Addr : 6E20: 38 50 : Constant 1 Bytes - 50 Addr : 6E22: 36 : Constant 2 $00000001 Addr : 6E23: ED : Math Op - Addr : 6E24: E5 : Math Op <| Addr : 6E25: 41 : Variable Operation Global Offset - 0 Write 269 arg := 0 Addr : 6E26: 35 : Constant 1 $00000000 Addr : 6E27: 49 : Variable Operation Global Offset - 2 Write Addr : 6E28: CaseDone Label0011 Addr : 6E28: 0C : Casedone Addr : 6E29: Label0012 271 rowNo := c <# rows-1 Addr : 6E29: 64 : Variable Operation Local Offset - 1 Read Addr : 6E2A: 38 28 : Constant 1 Bytes - 28 Addr : 6E2C: 36 : Constant 2 $00000001 Addr : 6E2D: ED : Math Op - Addr : 6E2E: E5 : Math Op <| Addr : 6E2F: 45 : Variable Operation Global Offset - 1 Write 272 arg := 0 Addr : 6E30: 35 : Constant 1 $00000000 Addr : 6E31: 49 : Variable Operation Global Offset - 2 Write Addr : 6E32: CaseDone Label0012 Addr : 6E32: 0C : Casedone Addr : 6E33: Label0002 Addr : 6E33: 32 : Return |===========================================================================| Spin Block newline with 0 Parameters and 0 Extra Stack Longs. Method 10 PRI newline |===========================================================================| 275 colNo := 0 Addr : 6E34: 35 : Constant 1 $00000000 Addr : 6E35: 41 : Variable Operation Global Offset - 0 Write 276 if ++rowNo == rows Addr : 6E36: 46 A6 : Variable Operation Global Offset - 1 Assign ++VAR pre-inc Long Push Addr : 6E38: 38 28 : Constant 1 Bytes - 28 Addr : 6E3A: FC : Math Op == Addr : 6E3B: JZ Label0002 Addr : 6E3B: 0A 2F : jz Address = 6E6C 47 277 longmove(screen,screen+cols,(rows-1)*cols/4) Addr : 6E3D: 39 73 80 : Constant 2 Bytes - 73 80 Addr : 6E40: 39 73 80 : Constant 2 Bytes - 73 80 Addr : 6E43: 38 50 : Constant 1 Bytes - 50 Addr : 6E45: EC : Math Op + Addr : 6E46: 38 28 : Constant 1 Bytes - 28 Addr : 6E48: 36 : Constant 2 $00000001 Addr : 6E49: ED : Math Op - Addr : 6E4A: 38 50 : Constant 1 Bytes - 50 Addr : 6E4C: F4 : Math Op * Addr : 6E4D: 37 01 : Constant Mask Y=1 00000004 Addr : 6E4F: F6 : Math Op / Addr : 6E50: 1E : LongMove(To, From, Count) 278 longfill(screen+cols*(rows-1),$20202020,cols/4) Addr : 6E51: 39 73 80 : Constant 2 Bytes - 73 80 Addr : 6E54: 38 50 : Constant 1 Bytes - 50 Addr : 6E56: 38 28 : Constant 1 Bytes - 28 Addr : 6E58: 36 : Constant 2 $00000001 Addr : 6E59: ED : Math Op - Addr : 6E5A: F4 : Math Op * Addr : 6E5B: EC : Math Op + Addr : 6E5C: 3B 20 20 20 20 : Constant 4 Bytes - 20 20 20 20 Addr : 6E61: 38 50 : Constant 1 Bytes - 50 Addr : 6E63: 37 01 : Constant Mask Y=1 00000004 Addr : 6E65: F6 : Math Op / Addr : 6E66: 1A : LongFill(Start, Value, Count) 279 rowNo := rows - 1 Addr : 6E67: 38 28 : Constant 1 Bytes - 28 Addr : 6E69: 36 : Constant 2 $00000001 Addr : 6E6A: ED : Math Op - Addr : 6E6B: 45 : Variable Operation Global Offset - 1 Write Addr : 6E6C: Label0002 Addr : 6E6C: Label0003 Addr : 6E6C: 32 : Return |===========================================================================| Object COMBOKEYBOARD Object Base is 84C0 |===========================================================================| |===========================================================================| VBASE Global Variables |===========================================================================| VBASE : 0000 LONG Size 0004 Variable cog VBASE : 0004 LONG Size 0004 Variable par_tail VBASE : 0008 LONG Size 0004 Variable par_head VBASE : 000C LONG Size 0004 Variable par_present VBASE : 0010 LONG Size 0020 Variable par_states VBASE : 0030 LONG Size 0020 Variable par_keys VBASE : 0050 LONG Size 0004 Variable par_break |===========================================================================| Object DAT Variables |===========================================================================| ABS : 8894 PBASE : 03D4 LONG Variable dlsb ABS : 8898 PBASE : 03D8 LONG Variable tenms ABS : 889C PBASE : 03DC WORD Variable table ABS : 89A4 PBASE : 04E4 BYTE Variable keypad1 ABS : 89B4 PBASE : 04F4 BYTE Variable keypad2 ABS : 89C4 PBASE : 0504 BYTE Variable shift1 ABS : 89CA PBASE : 050A BYTE Variable shift2 |===========================================================================| |===========================================================================| Spin Block start with 1 Parameters and 0 Extra Stack Longs. Method 1 PUB start(pingroup) : okay |===========================================================================| 48 okay := startx(pingroup, %0_000_100, %01_01000) Addr : 89E4: 00 : Drop Anchor Push Addr : 89E5: 64 : Variable Operation Local Offset - 1 Read Addr : 89E6: 37 01 : Constant Mask Y=1 00000004 Addr : 89E8: 38 28 : Constant 1 Bytes - 28 Addr : 89EA: 05 02 : Call Sub 2 Addr : 89EC: 61 : Variable Operation Local Offset - 0 Write Addr : 89ED: 32 : Return |===========================================================================| Spin Block startx with 3 Parameters and 0 Extra Stack Longs. Method 2 PUB startx(pingroup, locks, auto) : okay |===========================================================================| 66 stop Addr : 89EE: 01 : Drop Anchor Addr : 89EF: 05 03 : Call Sub 3 67 longmove(@par_keys, @pingroup, 3) Addr : 89F1: CB 30 : Memory Op Long VBASE + ADDRESS Address = 0030 Addr : 89F3: 67 : Variable Operation Local Offset - 1 Address Addr : 89F4: 37 21 : Constant Mask Y=33 Decrement 00000003 Addr : 89F6: 1E : LongMove(To, From, Count) 68 okay := cog := cognew(@entry, @par_tail) + 1 Addr : 89F7: 34 : Constant 0 $FFFFFFFF Addr : 89F8: C7 38 : Memory Op Long PBASE + ADDRESS Address = 0038 Addr : 89FA: 47 : Variable Operation Global Offset - 1 Address Addr : 89FB: 28 : CogInit(Id, Addr, Ptr) Push Addr : 89FC: 36 : Constant 2 $00000001 Addr : 89FD: EC : Math Op + Addr : 89FE: 42 80 : Variable Operation Global Offset - 0 Assign Write Push Addr : 8A00: 61 : Variable Operation Local Offset - 0 Write Addr : 8A01: 32 : Return |===========================================================================| Spin Block stop with 0 Parameters and 0 Extra Stack Longs. Method 3 PUB stop |===========================================================================| 74 if cog Addr : 8A02: 40 : Variable Operation Global Offset - 0 Read Addr : 8A03: JZ Label0002 Addr : 8A03: 0A 05 : jz Address = 8A0A 5 75 cogstop(cog~ - 1) Addr : 8A05: 42 98 : Variable Operation Global Offset - 0 Assign VAR~ Post-clear Push Addr : 8A07: 36 : Constant 2 $00000001 Addr : 8A08: ED : Math Op - Addr : 8A09: 21 : CogStop(id) Addr : 8A0A: Label0002 Addr : 8A0A: Label0003 76 longfill(@par_tail, 0, 20) Addr : 8A0A: 47 : Variable Operation Global Offset - 1 Address Addr : 8A0B: 35 : Constant 1 $00000000 Addr : 8A0C: 38 14 : Constant 1 Bytes - 14 Addr : 8A0E: 1A : LongFill(Start, Value, Count) Addr : 8A0F: 32 : Return |===========================================================================| Spin Block present with 0 Parameters and 0 Extra Stack Longs. Method 4 PUB present : truefalse |===========================================================================| 84 truefalse := -par_present Addr : 8A10: 4C : Variable Operation Global Offset - 3 Read Addr : 8A11: E6 : Math Op - Addr : 8A12: 61 : Variable Operation Local Offset - 0 Write Addr : 8A13: 32 : Return |===========================================================================| Spin Block peekkey with 0 Parameters and 0 Extra Stack Longs. Method 5 PUB peekkey : keycode |===========================================================================| 93 if par_tail == par_head Addr : 8A14: 44 : Variable Operation Global Offset - 1 Read Addr : 8A15: 48 : Variable Operation Global Offset - 2 Read Addr : 8A16: FC : Math Op == Addr : 8A17: JZ Label0002 Addr : 8A17: 0A 04 : jz Address = 8A1D 4 94 keycode := 0 Addr : 8A19: 35 : Constant 1 $00000000 Addr : 8A1A: 61 : Variable Operation Local Offset - 0 Write Addr : 8A1B: JMP Label0003 Addr : 8A1B: 04 04 : Jmp 8A21 4 Addr : 8A1D: Label0002 96 keycode := par_keys.word[par_tail] Addr : 8A1D: 44 : Variable Operation Global Offset - 1 Read Addr : 8A1E: B8 30 : Memory Op Word VBASE + POP Index READ Address = 0030 Addr : 8A20: 61 : Variable Operation Local Offset - 0 Write Addr : 8A21: Label0004 Addr : 8A21: Label0003 Addr : 8A21: 32 : Return |===========================================================================| Spin Block breakTest with 0 Parameters and 0 Extra Stack Longs. Method 6 PUB breakTest |===========================================================================| 103 return par_break & $FFFF0000 <> 0 Addr : 8A22: C8 50 : Memory Op Long VBASE + READ Address = 0050 Addr : 8A24: 37 6F : Constant Mask Y=111 Decrement Invert FFFF0000 Addr : 8A26: E8 : Math Op & Addr : 8A27: 35 : Constant 1 $00000000 Addr : 8A28: FB : Math Op <> Addr : 8A29: 33 : Return value Addr : 8A2A: Data : 32 2 |===========================================================================| Spin Block breakCode with 1 Parameters and 0 Extra Stack Longs. Method 7 PUB breakCode(code) |===========================================================================| 115 par_break := code & $0000FFFF Addr : 8A2B: 64 : Variable Operation Local Offset - 1 Read Addr : 8A2C: 37 2F : Constant Mask Y=47 Decrement 0000FFFF Addr : 8A2E: E8 : Math Op & Addr : 8A2F: C9 50 : Memory Op Long VBASE + WRITE Address = 0050 Addr : 8A31: 32 : Return |===========================================================================| Spin Block key with 0 Parameters and 0 Extra Stack Longs. Method 8 PUB key : keycode |===========================================================================| 123 if par_tail <> par_head Addr : 8A32: 44 : Variable Operation Global Offset - 1 Read Addr : 8A33: 48 : Variable Operation Global Offset - 2 Read Addr : 8A34: FB : Math Op <> Addr : 8A35: JZ Label0002 Addr : 8A35: 0A 0A : jz Address = 8A41 10 124 keycode := par_keys.word[par_tail] Addr : 8A37: 44 : Variable Operation Global Offset - 1 Read Addr : 8A38: B8 30 : Memory Op Word VBASE + POP Index READ Address = 0030 Addr : 8A3A: 61 : Variable Operation Local Offset - 0 Write 125 par_tail := ++par_tail & $F Addr : 8A3B: 46 A6 : Variable Operation Global Offset - 1 Assign ++VAR pre-inc Long Push Addr : 8A3D: 37 23 : Constant Mask Y=35 Decrement 0000000F Addr : 8A3F: E8 : Math Op & Addr : 8A40: 45 : Variable Operation Global Offset - 1 Write Addr : 8A41: Label0002 Addr : 8A41: Label0003 Addr : 8A41: 32 : Return |===========================================================================| Spin Block getkey with 0 Parameters and 0 Extra Stack Longs. Method 9 PUB getkey : keycode |===========================================================================| 133 repeat until (keycode := key) Addr : 8A42: Label0002 Addr : 8A42: 00 : Drop Anchor Push Addr : 8A43: 05 08 : Call Sub 8 Addr : 8A45: 62 80 : Variable Operation Local Offset - 0 Assign Write Push Addr : 8A47: JNZ Label0004 Addr : 8A47: 0B 02 : jnz Address = 8A4B 2 Addr : 8A49: Label0003 Addr : 8A49: JMP Label0002 Addr : 8A49: 04 77 : Jmp 8A42 -9 Addr : 8A4B: Label0004 Addr : 8A4B: 32 : Return |===========================================================================| Spin Block newkey with 0 Parameters and 0 Extra Stack Longs. Method 10 PUB newkey : keycode |===========================================================================| 141 par_tail := par_head Addr : 8A4C: 48 : Variable Operation Global Offset - 2 Read Addr : 8A4D: 45 : Variable Operation Global Offset - 1 Write 142 keycode := getkey Addr : 8A4E: 00 : Drop Anchor Push Addr : 8A4F: 05 09 : Call Sub 9 Addr : 8A51: 61 : Variable Operation Local Offset - 0 Write Addr : 8A52: 32 : Return |===========================================================================| Spin Block gotkey with 0 Parameters and 0 Extra Stack Longs. Method 11 PUB gotkey : truefalse |===========================================================================| 150 truefalse := par_tail <> par_head Addr : 8A53: 44 : Variable Operation Global Offset - 1 Read Addr : 8A54: 48 : Variable Operation Global Offset - 2 Read Addr : 8A55: FB : Math Op <> Addr : 8A56: 61 : Variable Operation Local Offset - 0 Write Addr : 8A57: 32 : Return |===========================================================================| Spin Block clearkeys with 0 Parameters and 0 Extra Stack Longs. Method 12 PUB clearkeys |===========================================================================| 157 par_tail := par_head Addr : 8A58: 48 : Variable Operation Global Offset - 2 Read Addr : 8A59: 45 : Variable Operation Global Offset - 1 Write Addr : 8A5A: 32 : Return |===========================================================================| Spin Block keystate with 1 Parameters and 0 Extra Stack Longs. Method 13 PUB keystate(k) : state |===========================================================================| 165 state := -(par_states[k >> 5] >> k & 1) Addr : 8A5B: 64 : Variable Operation Local Offset - 1 Read Addr : 8A5C: 38 05 : Constant 1 Bytes - 05 Addr : 8A5E: E2 : Math Op >> Addr : 8A5F: D8 10 : Memory Op Long VBASE + POP Index READ Address = 0010 Addr : 8A61: 64 : Variable Operation Local Offset - 1 Read Addr : 8A62: E2 : Math Op >> Addr : 8A63: 36 : Constant 2 $00000001 Addr : 8A64: E8 : Math Op & Addr : 8A65: E6 : Math Op - Addr : 8A66: 61 : Variable Operation Local Offset - 0 Write Addr : 8A67: 32 : Return