|===========================================================================| Objects : - Stepservo_v3debug | +--------FullDuplexSingleton | +--------RC_Time_ASM | +--------Jimsstepper_asm4debug | | | +----------BMAUtility | | | +----BMAopcodes | | | +----BMADebugger | | | +-----BMAPASMstub | +--------Numbers Object Address : 0010 : Object Name : Stepservo_v3debug Object Address : 00B4 : Object Name : RC_Time_ASM Object Address : 0310 : Object Name : Jimsstepper_asm4debug Object Address : 063C : Object Name : BMAUtility Object Address : 194C : Object Name : BMAopcodes Object Address : 1F84 : Object Name : BMADebugger Object Address : 22F0 : Object Name : BMAPASMstub Object Address : 2608 : Object Name : FullDuplexSingleton Object Address : 292C : Object Name : Numbers Binary Image Information : PBASE : 0010 VBASE : 2BA4 DBASE : 32A0 PCURR : 0030 DCURR : 32A4 |===========================================================================| |===========================================================================| Object Stepservo_v3debug Object Base is 0010 |===========================================================================| Object Constants |===========================================================================| Constant _clkmode = 00000408 (1032) Constant _xinfreq = 004C4B40 (5000000) Constant CS = 00000010 (16) Constant CE = 0000000B (11) Constant CB = 0000000C (12) Constant HM = 00000001 (1) Constant PC = 00000002 (2) Constant PX = 0000000E (14) Constant PY = 0000000F (15) Constant NL = 0000000D (13) Constant LF = 0000000A (10) Constant ML = 00000003 (3) Constant MR = 00000004 (4) Constant MU = 00000005 (5) Constant MD = 00000006 (6) Constant TB = 00000009 (9) Constant BS = 00000008 (8) Constant BP = 00000007 (7) Constant mP1 = 00000004 (4) Constant mP2 = 00000010 (16) Constant cmd = 00000000 (0) Constant stps1 = 00000001 (1) Constant stps2 = 00000002 (2) Constant dly1 = 00000003 (3) Constant dly2 = 00000004 (4) Constant cmdbase = 00030000 (196608) |===========================================================================| |===========================================================================| VBASE Global Variables |===========================================================================| VBASE : 0000 LONG Size 0020 Variable stepParms VBASE : 0020 LONG Size 0020 Variable debug1 VBASE : 0040 LONG Size 0020 Variable debug2 VBASE : 0060 LONG Size 0004 Variable Value VBASE : 0064 LONG Size 01F4 Variable stack VBASE : 0258 BYTE Size 0008 Variable inputstr |===========================================================================| |===========================================================================| Spin Block Start with 0 Parameters and 0 Extra Stack Longs. Method 1 PUB Start Local Parameter DBASE:0000 - Result |===========================================================================| 60 term.start(31,30,0,115200) Addr : 0030: 01 : Drop Anchor Addr : 0031: 37 24 : Constant Mask Y=36 Decrement 0000001F 31 Addr : 0033: 38 1E : Constant 1 Bytes - 1E - $0000001E 30 Addr : 0035: 35 : Constant 1 $00000000 Addr : 0036: 3A 01 C2 00 : Constant 3 Bytes - 01 C2 00 - $0001C200 115200 Addr : 003A: 06 04 01 : Call Obj.Sub 4 1 61 waitcnt(clkfreq + cnt) Addr : 003D: 35 : Constant 1 $00000000 Addr : 003E: C0 : Memory Op Long POP Address READ Addr : 003F: 3F 91 : Register op CNT Read Addr : 0041: EC : Math Op + Addr : 0042: 23 : WaitCnt(count) Addr : 0043: 37 00 : Constant Mask Y=0 00000002 2 62 cognew(Main,@stack) Addr : 0045: CB 64 : Memory Op Long VBASE + ADDRESS Address = 0064 Addr : 0047: 15 : Run Addr : 0048: 2C : CogInit(Id, Addr, Ptr) 63 ss.start(@stepParms,mP1,mP2) Addr : 0049: 01 : Drop Anchor Addr : 004A: 43 : Variable Operation Global Offset - 0 Address Addr : 004B: 37 01 : Constant Mask Y=1 00000004 4 Addr : 004D: 37 03 : Constant Mask Y=3 00000010 16 Addr : 004F: 06 06 01 : Call Obj.Sub 6 1 Addr : 0052: Label0001 Addr : 0052: Label0002 Addr : 0052: JMP Label0001 Addr : 0052: 04 7E : Jmp 0052 -2 Addr : 0054: Label0003 Addr : 0054: 32 : Return |===========================================================================| Spin Block Main with 0 Parameters and 5 Extra Stack Longs. Method 2 PUB Main | idx ,tGrowth , adjust, x , y Local Parameter DBASE:0000 - Result Local Variable DBASE:0004 - idx Local Variable DBASE:0008 - tGrowth Local Variable DBASE:000C - adjust Local Variable DBASE:0010 - x Local Variable DBASE:0014 - y |===========================================================================| 69 longfill(@stepParms,0,8) Addr : 0055: 43 : Variable Operation Global Offset - 0 Address Addr : 0056: 35 : Constant 1 $00000000 Addr : 0057: 37 02 : Constant Mask Y=2 00000008 8 Addr : 0059: 1A : LongFill(Start, Value, Count) 70 stepParms[dly1]:= $02 '$04 Addr : 005A: 37 00 : Constant Mask Y=0 00000002 2 Addr : 005C: 37 21 : Constant Mask Y=33 Decrement 00000003 3 Addr : 005E: D9 00 : Memory Op Long VBASE + POP Index WRITE Address = 0000 71 stepParms[dly2] := $02 ' $8 Addr : 0060: 37 00 : Constant Mask Y=0 00000002 2 Addr : 0062: 37 01 : Constant Mask Y=1 00000004 4 Addr : 0064: D9 00 : Memory Op Long VBASE + POP Index WRITE Address = 0000 Addr : 0066: Label0002 73 Value :=2 Addr : 0066: 37 00 : Constant Mask Y=0 00000002 2 Addr : 0068: C9 60 : Memory Op Long VBASE + WRITE Address = 0060 74 repeat idx from 0 to 3 Addr : 006A: 35 : Constant 1 $00000000 Addr : 006B: 65 : Variable Operation Local Offset - 1 Write Addr : 006C: Label0005 76 x := idx Addr : 006C: 64 : Variable Operation Local Offset - 1 Read Addr : 006D: 71 : Variable Operation Local Offset - 4 Write 77 stepParms[cmd]:= x + cmdbase Addr : 006E: 70 : Variable Operation Local Offset - 4 Read Addr : 006F: 3A 03 00 00 : Constant 3 Bytes - 03 00 00 - $00030000 196608 Addr : 0073: EC : Math Op + Addr : 0074: 35 : Constant 1 $00000000 Addr : 0075: D9 00 : Memory Op Long VBASE + POP Index WRITE Address = 0000 78 stepParms[stps1]:=value Addr : 0077: C8 60 : Memory Op Long VBASE + READ Address = 0060 Addr : 0079: 36 : Constant 2 $00000001 Addr : 007A: D9 00 : Memory Op Long VBASE + POP Index WRITE Address = 0000 79 stepParms[stps2] := $3 Addr : 007C: 37 21 : Constant Mask Y=33 Decrement 00000003 3 Addr : 007E: 37 00 : Constant Mask Y=0 00000002 2 Addr : 0080: D9 00 : Memory Op Long VBASE + POP Index WRITE Address = 0000 Addr : 0082: Label0008 80 repeat while stepParms[stps1] > 0 Addr : 0082: 36 : Constant 2 $00000001 Addr : 0083: D8 00 : Memory Op Long VBASE + POP Index READ Address = 0000 Addr : 0085: 35 : Constant 1 $00000000 Addr : 0086: FA : Math Op > Addr : 0087: JZ Label000A Addr : 0087: 0A 02 : jz Address = 008B 2 Addr : 0089: Label0009 Addr : 0089: JMP Label0008 Addr : 0089: 04 77 : Jmp 0082 -9 Addr : 008B: Label000A Addr : 008B: Label000B 81 repeat while stepParms[stps2] > 0 Addr : 008B: 37 00 : Constant Mask Y=0 00000002 2 Addr : 008D: D8 00 : Memory Op Long VBASE + POP Index READ Address = 0000 Addr : 008F: 35 : Constant 1 $00000000 Addr : 0090: FA : Math Op > Addr : 0091: JZ Label000D Addr : 0091: 0A 02 : jz Address = 0095 2 Addr : 0093: Label000C Addr : 0093: JMP Label000B Addr : 0093: 04 76 : Jmp 008B -10 Addr : 0095: Label000D Addr : 0095: Label0006 74 repeat idx from 0 to 3 Addr : 0095: 35 : Constant 1 $00000000 Addr : 0096: 37 21 : Constant Mask Y=33 Decrement 00000003 3 Addr : 0098: Repeat idx Step Label0005 Addr : 0098: 66 02 51 : Variable Operation Local Offset - 1 Assign Repeat-Var loop Address= 006C -47 Addr : 009B: Label0007 Addr : 009B: Label0003 Addr : 009B: JMP Label0002 Addr : 009B: 04 49 : Jmp 0066 -55 Addr : 009D: Label0004 Addr : 009D: 32 : Return |===========================================================================| Spin Block pause with 1 Parameters and 1 Extra Stack Longs. Method 3 PUB pause(ms) | c Local Parameter DBASE:0000 - Result Local Parameter DBASE:0004 - ms Local Variable DBASE:0008 - c |===========================================================================| 88 c := cnt ' sync with system counter Addr : 009E: 3F 91 : Register op CNT Read Addr : 00A0: 69 : Variable Operation Local Offset - 2 Write Addr : 00A1: Label0002 89 repeat until (ms-- == 0) ' repeat while time left Addr : 00A1: 66 BE : Variable Operation Local Offset - 1 Assign VAR-- post-dec Long Push Addr : 00A3: 35 : Constant 1 $00000000 Addr : 00A4: FC : Math Op == Addr : 00A5: JNZ Label0004 Addr : 00A5: 0B 0B : jnz Address = 00B2 11 90 waitcnt(c += clkfreq / 1000) ' wait 1 ms Addr : 00A7: 35 : Constant 1 $00000000 Addr : 00A8: C0 : Memory Op Long POP Address READ Addr : 00A9: 39 03 E8 : Constant 2 Bytes - 03 E8 - $000003E8 1000 Addr : 00AC: F6 : Math Op / Addr : 00AD: 6A CC : Variable Operation Local Offset - 2 Assign WordMathop + Push Addr : 00AF: 23 : WaitCnt(count) Addr : 00B0: Label0003 Addr : 00B0: JMP Label0002 Addr : 00B0: 04 6F : Jmp 00A1 -17 Addr : 00B2: Label0004 Addr : 00B2: 32 : Return |===========================================================================| Object RC_Time_ASM Object Base is 00B4 |===========================================================================| Object Constants |===========================================================================| |===========================================================================| VBASE Global Variables |===========================================================================| VBASE : 0000 LONG Size 0004 Variable cog VBASE : 0004 LONG Size 0004 Variable repetitions VBASE : 0008 LONG Size 0004 Variable change VBASE : 000C LONG Size 0004 Variable done VBASE : 0010 LONG Size 0004 Variable mode VBASE : 0014 LONG Size 0018 Variable params |===========================================================================| Object DAT Blocks |===========================================================================| 00D4(0000) | org ' Cog RAM address 0 00D4(0000) | entry 00D4(0000) 01 C8 FC 0C | cogid _cog ' Get cog 00D8(0001) 0C 42 FC 5C | call #GetParams ' Get parameters 00DC(0002) 22 5E FC 5C | call #Setup ' Set up for measurements 00E0(0003) 30 6E FC 5C | :loop call #Charge ' Charge/discharge circuit 00E4(0004) 38 9A FC 5C | call #Measure ' Measure RC decay or growth 00E8(0005) 02 D6 7C 86 | cmp _mode, #2 wz ' Check mode 00EC(0006) 4E BA E8 5C | if_z call #Update 00F0(0007) 02 D6 7C 86 | cmp _mode, #2 wz ' Check mode 00F4(0008) 5E BE E8 5C | if_z call #interval 00F8(0009) 02 D6 7C 86 | cmp _mode, #2 wz ' Check mode 00FC(000A) 03 00 68 5C | if_z jmp #:loop ' Repeat if mode is 2 0100(000B) 03 C8 7C 0C | cogstop _cog ' Measurement done, stop cog 0104(000C) | GetParams 0104(000C) F0 E1 BC A0 | mov addr, par ' Get mode 0108(000D) 04 E0 FC 84 | sub addr, #4 010C(000E) 70 D6 BC 08 | rdlong _mode, addr 0110(000F) 04 E0 FC 84 | sub addr, #4 ' Clear done in Spin interface 0114(0010) 00 DE FC A0 | mov temp, #0 0118(0011) 70 DE 3C 08 | wrlong temp, addr 011C(0012) F0 E1 BC A0 | mov addr, par ' Get pin, state, etc... 0120(0013) 61 E0 BC 80 | add addr, offsetbytes ' Go to end of params array 0124(0014) 70 D4 BC 0A | :wait4param rdlong _result, addr wz ' Wait for spin longmove to finish 0128(0015) 14 00 68 5C | if_z jmp #:wait4param 012C(0016) 61 E0 BC 84 | sub addr, offsetbytes ' Back to start of params array 0130(0017) 65 DE FC A0 | mov pointer, #_pin ' Start array copy 0134(0018) 05 E8 FC A0 | mov reps, #5 ' 5 params, 5 reps 0138(0019) 70 CA BC 08 | :loadparams rdlong _pin, addr ' Get pin param 013C(001A) 04 E0 FC 80 | add addr, #4 ' Self modifying code 0140(001B) 01 DE FC 80 | add pointer, #1 ' gets next 4 params. 0144(001C) 6F 32 BC 54 | movd :loadparams, pointer 0148(001D) 19 E8 FC E4 | djnz reps, #:loadparams 014C(001E) F0 E1 BC A0 | mov addr, par 0150(001F) 08 E0 FC 84 | sub addr, #8 ' point addr to global done var 0154(0020) 00 DC FC A0 | mov _reps, #0 0158(0021) 00 00 7C 5C | GetParams_ret ret 015C(0022) 01 CC FC 60 | Setup and _state, #1 ' State mask 0160(0023) 66 E4 BC A0 | mov smask, _state 0164(0024) 65 E4 BC 2C | shl smask, _pin 0168(0025) 01 E2 FC A0 | mov pmask, #1 ' Pin mask 016C(0026) 65 E2 BC 2C | shl pmask, _pin 0170(0027) 66 DE BC A0 | mov temp, _state ' CTR -> POS or NEG DETCT 0174(0028) 01 DE FC 6C | xor temp, #1 0178(0029) 05 DE FC 2C | shl temp, #5 017C(002A) 62 DE BC 68 | or temp, ctrposdet 0180(002B) 6F F0 BF 58 | movi ctra,temp ' Configure CTR 0184(002C) 65 F0 BF 50 | movs ctra,_pin 0188(002D) F1 EB BC A0 | mov _time, cnt ' Mark the time 018C(002E) 69 EA BC 80 | add _time, _interval ' Set first interval cycle 0190(002F) 00 00 7C 5C | Setup_ret ret 0194(0030) 72 E8 BF A0 | Charge mov outa, smask ' pin -> output state 0198(0031) 71 E8 BF 60 | and outa, pmask 019C(0032) 71 EC BF A0 | mov dira, pmask 01A0(0033) F1 DF BC A0 | mov temp, cnt ' Mark time 01A4(0034) 67 DE BC 80 | add temp, _chrgTime 01A8(0035) 18 DE FC 84 | sub temp, #24 01AC(0036) 00 DE FC F8 | waitcnt temp, #0 ' Move on with 24 ticks 01B0(0037) 00 00 7C 5C | Charge_ret ret ' before measurement starts 01B4(0038) 01 F4 FF A0 | Measure mov frqa, #1 ' Prime counter 01B8(0039) 00 F8 FF A0 | mov phsa, #0 01BC(003A) 00 EC FF A0 | mov dira, #0 01C0(003B) F1 E7 BC A0 | mov cnti, cnt ' Mark time 01C4(003C) F2 DF BC A0 | :wait mov temp, ina ' I/O pin -> input 01C8(003D) 71 DE BC 60 | and temp, pmask ' Check if threshold crossed 01CC(003E) 72 DE 3C 86 | cmp temp, smask wz 01D0(003F) 49 00 54 5C | if_nz jmp #:done ' Threshold crossed? -> done 01D4(0040) F1 DF BC A0 | mov temp, cnt ' No? Check timeout 01D8(0041) 40 DE FC 80 | add temp, #64 ' 64 ticks padding 01DC(0042) 73 DE BC 84 | sub temp, cnti 01E0(0043) 6F D0 3C 87 | cmp _timeout, temp wz, wc ' Check if timeout - 64 01E4(0044) 46 00 78 5C | if_z_or_c jmp #:pause ' Yes? jump to pause 01E8(0045) 3C 00 7C 5C | jmp #:wait ' No? jump to wait 01EC(0046) 68 E6 BC 80 | :pause add cnti, _timeout ' Exit at exactly TimeOut 01F0(0047) 07 E6 FC 84 | sub cnti, #7 01F4(0048) 00 E6 FC F8 | waitcnt cnti, #0 01F8(0049) FC DF BC A2 | :done mov temp, phsa wz ' Get PHS for measurement 01FC(004A) 04 DE D4 84 | if_nz sub temp, #4 0200(004B) 6A DE 3C 08 | wrlong temp, _result ' Copy parent's variable 0204(004C) 70 C6 3C 08 | wrlong finished, addr 0208(004D) 00 00 7C 5C | measure_ret ret 020C(004E) | Update 020C(004E) F0 ED BC A0 | mov tempAddr, par ' Get change var from Spin 0210(004F) 0C EC FC 84 | sub tempAddr, #12 0214(0050) 76 D8 BC 0A | rdlong _change, tempAddr wz 0218(0051) 5A 00 68 5C | if_z jmp #:counter ' Nothing if zero 021C(0052) 00 DE FC A0 | mov temp, #0 0220(0053) 76 DE 3C 08 | wrlong temp, tempAddr 0224(0054) 6C DE BC A0 | mov temp, _change 0228(0055) 02 D8 FC 2C | shl _change, #2 022C(0056) 65 DE FC 80 | add temp, #_pin 0230(0057) 59 DE FC 54 | movd temp, #:adjust 0234(0058) 6C EC BC 80 | add tempAddr, _change 0238(0059) 76 00 BC 08 | :adjust rdlong 0-0, tempAddr 023C(005A) 04 EC FC 84 | :counter sub tempAddr, #4 0240(005B) 01 DC FC 80 | add _reps, #1 0244(005C) 76 DC 3C 08 | wrlong _reps, tempAddr 0248(005D) 00 00 7C 5C | Update_ret ret 024C(005E) 69 EA BC F8 | Interval waitcnt _time, _interval ' Move on with 24 ticks 0250(005F) 00 00 7C 5C | Interval_ret ret ' before measurement starts 0254(0060) 18 00 00 00 | framebytes long 24 ' 1 set of RC params = 6 longs 0258(0061) 14 00 00 00 | offsetbytes long 20 ' result address in 5th long 025C(0062) 40 00 00 00 | ctrposdet long %01000_000 ' CTR mode mask for POS DETECT 0260(0063) FF FF FF FF | finished long true 0264(0064) | _cog res 1 ' Store RC method parameters 0264(0065) | _pin res 1 0264(0066) | _state res 1 0264(0067) | _chrgTime res 1 0264(0068) | _timeout res 1 0264(0069) | _interval res 1 0264(006A) | _result res 1 0264(006B) | _mode res 1 0264(006C) | _change res 1 0264(006D) | _repsAddr res 1 0264(006E) | _reps res 1 0264(006F) | temp res 0 ' ASM Variables 0264(006F) | pointer res 1 ' temp and pointer are same 0264(0070) | addr res 1 ' address 0264(0071) | pmask res 1 ' pin mask 0264(0072) | smask res 1 ' state mask 0264(0073) | cnti res 1 ' initial count 0264(0074) | reps res 1 ' repetitions 0264(0075) | _time res 1 0264(0076) | tempAddr res 1 |===========================================================================| |===========================================================================| Spin Block Start with 6 Parameters and 0 Extra Stack Longs. Method 1 PUB Start(pin, state, chargeTimeTicks, timeOutTicks, sampleTicks, resultAddr) : repsAddr Local Parameter DBASE:0000 - repsAddr Local Parameter DBASE:0004 - pin Local Parameter DBASE:0008 - state Local Parameter DBASE:000C - chargeTimeTicks Local Parameter DBASE:0010 - timeOutTicks Local Parameter DBASE:0014 - sampleTicks Local Parameter DBASE:0018 - resultAddr |===========================================================================| 71 stop ' Stop the cog if it's already running Addr : 0264: 01 : Drop Anchor Addr : 0265: 05 02 : Call Sub 2 72 mode:=REPEATED ' Set mode to REPEATED Addr : 0267: 37 00 : Constant Mask Y=0 00000002 2 Addr : 0269: 51 : Variable Operation Global Offset - 4 Write 73 change~ ' Clear the change variable Addr : 026A: 4A 18 : Variable Operation Global Offset - 2 Assign VAR~ Post-clear 74 chargeTimeTicks #>= 50 ' Clamp minimum values Addr : 026C: 38 32 : Constant 1 Bytes - 32 - $00000032 50 Addr : 026E: 6E 44 : Variable Operation Local Offset - 3 Assign WordMathop #> 75 timeOutTicks #>= 75 Addr : 0270: 38 4B : Constant 1 Bytes - 4B - $0000004B 75 Addr : 0272: 72 44 : Variable Operation Local Offset - 4 Assign WordMathop #> 76 sampleTicks #>= (chargeTimeTicks+timeOutTicks+225) Addr : 0274: 6C : Variable Operation Local Offset - 3 Read Addr : 0275: 70 : Variable Operation Local Offset - 4 Read Addr : 0276: EC : Math Op + Addr : 0277: 38 E1 : Constant 1 Bytes - E1 - $000000E1 225 Addr : 0279: EC : Math Op + Addr : 027A: 76 44 : Variable Operation Local Offset - 5 Assign WordMathop #> 77 longmove(@params, @pin, 6) ' Copy local parameters to global Addr : 027C: 57 : Variable Operation Global Offset - 5 Address Addr : 027D: 67 : Variable Operation Local Offset - 1 Address Addr : 027E: 38 06 : Constant 1 Bytes - 06 - $00000006 6 Addr : 0280: 1E : LongMove(To, From, Count) 78 cog := cognew(@entry, @params) + 1 ' Launch the cog returning okay Addr : 0281: 34 : Constant 0 $FFFFFFFF Addr : 0282: C7 20 : Memory Op Long PBASE + ADDRESS Address = 0020 Addr : 0284: 57 : Variable Operation Global Offset - 5 Address Addr : 0285: 28 : CogInit(Id, Addr, Ptr) Push Addr : 0286: 36 : Constant 2 $00000001 Addr : 0287: EC : Math Op + Addr : 0288: 41 : Variable Operation Global Offset - 0 Write 79 if cog Addr : 0289: 40 : Variable Operation Global Offset - 0 Read Addr : 028A: JZ Label0002 Addr : 028A: 0A 02 : jz Address = 028E 2 80 repsAddr := @repetitions Addr : 028C: 47 : Variable Operation Global Offset - 1 Address Addr : 028D: 61 : Variable Operation Local Offset - 0 Write Addr : 028E: Label0002 Addr : 028E: Label0003 Addr : 028E: 32 : Return |===========================================================================| Spin Block Stop with 0 Parameters and 0 Extra Stack Longs. Method 2 PUB Stop Local Parameter DBASE:0000 - Result |===========================================================================| 84 mode := 0 Addr : 028F: 35 : Constant 1 $00000000 Addr : 0290: 51 : Variable Operation Global Offset - 4 Write 85 if cog ' If cog is running Addr : 0291: 40 : Variable Operation Global Offset - 0 Read Addr : 0292: JZ Label0002 Addr : 0292: 0A 05 : jz Address = 0299 5 86 cogstop(cog~ - 1) ' Stop the cog and clear cog Addr : 0294: 42 98 : Variable Operation Global Offset - 0 Assign VAR~ Post-clear Push Addr : 0296: 36 : Constant 2 $00000001 Addr : 0297: ED : Math Op - Addr : 0298: 21 : CogStop(id) Addr : 0299: Label0002 Addr : 0299: Label0003 Addr : 0299: 32 : Return |===========================================================================| Spin Block SetMode with 1 Parameters and 0 Extra Stack Longs. Method 3 PUB SetMode(value) ''Configure mode Local Parameter DBASE:0000 - Result Local Parameter DBASE:0004 - value |===========================================================================| 89 change:=-1 '' Value = #SEQUENTIAL or #PARALLEL Addr : 029A: 34 : Constant 0 $FFFFFFFF Addr : 029B: 49 : Variable Operation Global Offset - 2 Write 90 mode := value Addr : 029C: 64 : Variable Operation Local Offset - 1 Read Addr : 029D: 51 : Variable Operation Global Offset - 4 Write Addr : 029E: 32 : Return |===========================================================================| Spin Block ChargeTime with 1 Parameters and 0 Extra Stack Longs. Method 4 PUB ChargeTime(value) ''Configure charge time Local Parameter DBASE:0000 - Result Local Parameter DBASE:0004 - value |===========================================================================| 95 params[change:=CHARGE_TIME] := value #> 50 ' v0.64 ran at 37 Addr : 029F: 64 : Variable Operation Local Offset - 1 Read Addr : 02A0: 38 32 : Constant 1 Bytes - 32 - $00000032 50 Addr : 02A2: E4 : Math Op #> Addr : 02A3: 37 00 : Constant Mask Y=0 00000002 2 Addr : 02A5: 4A 80 : Variable Operation Global Offset - 2 Assign Write Push Addr : 02A7: D9 14 : Memory Op Long VBASE + POP Index WRITE Address = 0014 Addr : 02A9: 32 : Return |===========================================================================| Spin Block TimeOut with 1 Parameters and 0 Extra Stack Longs. Method 5 PUB TimeOut(value) ''Configure timeout Local Parameter DBASE:0000 - Result Local Parameter DBASE:0004 - value |===========================================================================| 100 params[change:=TIME_OUT] := value #> 75 ' v0.64 ran at 56 Addr : 02AA: 64 : Variable Operation Local Offset - 1 Read Addr : 02AB: 38 4B : Constant 1 Bytes - 4B - $0000004B 75 Addr : 02AD: E4 : Math Op #> Addr : 02AE: 37 21 : Constant Mask Y=33 Decrement 00000003 3 Addr : 02B0: 4A 80 : Variable Operation Global Offset - 2 Assign Write Push Addr : 02B2: D9 14 : Memory Op Long VBASE + POP Index WRITE Address = 0014 Addr : 02B4: 32 : Return |===========================================================================| Spin Block SampleInterval with 1 Parameters and 0 Extra Stack Longs. Method 6 PUB SampleInterval(value) '' Set sampling interval Local Parameter DBASE:0000 - Result Local Parameter DBASE:0004 - value |===========================================================================| 106 params[change:=SAMPLE_INTERVAL]:= value #> (params[CHARGE_TIME]+params[TIME_OUT]+225) Addr : 02B5: 64 : Variable Operation Local Offset - 1 Read Addr : 02B6: 37 00 : Constant Mask Y=0 00000002 2 Addr : 02B8: D8 14 : Memory Op Long VBASE + POP Index READ Address = 0014 Addr : 02BA: 37 21 : Constant Mask Y=33 Decrement 00000003 3 Addr : 02BC: D8 14 : Memory Op Long VBASE + POP Index READ Address = 0014 Addr : 02BE: EC : Math Op + Addr : 02BF: 38 E1 : Constant 1 Bytes - E1 - $000000E1 225 Addr : 02C1: EC : Math Op + Addr : 02C2: E4 : Math Op #> Addr : 02C3: 38 06 : Constant 1 Bytes - 06 - $00000006 6 Addr : 02C5: 4A 80 : Variable Operation Global Offset - 2 Assign Write Push Addr : 02C7: D9 14 : Memory Op Long VBASE + POP Index WRITE Address = 0014 Addr : 02C9: 32 : Return |===========================================================================| Spin Block time with 3 Parameters and 0 Extra Stack Longs. Method 7 PUB time(pin, state, resultAddr) ''RC Time Measurement Local Parameter DBASE:0000 - Result Local Parameter DBASE:0004 - pin Local Parameter DBASE:0008 - state Local Parameter DBASE:000C - resultAddr |===========================================================================| 124 done~ Addr : 02CA: 4E 18 : Variable Operation Global Offset - 3 Assign VAR~ Post-clear 126 if NOT params[2] ' Check for charge time and timeout Addr : 02CC: 37 00 : Constant Mask Y=0 00000002 2 Addr : 02CE: D8 14 : Memory Op Long VBASE + POP Index READ Address = 0014 Addr : 02D0: FF : Math Op NOT Addr : 02D1: JZ Label0002 Addr : 02D1: 0A 09 : jz Address = 02DC 9 127 chargeTime(clkfreq/10_000) ' if NOT set, then set to defaults Addr : 02D3: 01 : Drop Anchor Addr : 02D4: 35 : Constant 1 $00000000 Addr : 02D5: C0 : Memory Op Long POP Address READ Addr : 02D6: 39 27 10 : Constant 2 Bytes - 27 10 - $00002710 10000 Addr : 02D9: F6 : Math Op / Addr : 02DA: 05 04 : Call Sub 4 Addr : 02DC: Label0002 Addr : 02DC: Label0003 128 if NOT params[3] Addr : 02DC: 37 21 : Constant Mask Y=33 Decrement 00000003 3 Addr : 02DE: D8 14 : Memory Op Long VBASE + POP Index READ Address = 0014 Addr : 02E0: FF : Math Op NOT Addr : 02E1: JZ Label0004 Addr : 02E1: 0A 08 : jz Address = 02EB 8 129 timeOut(clkfreq/100) Addr : 02E3: 01 : Drop Anchor Addr : 02E4: 35 : Constant 1 $00000000 Addr : 02E5: C0 : Memory Op Long POP Address READ Addr : 02E6: 38 64 : Constant 1 Bytes - 64 - $00000064 100 Addr : 02E8: F6 : Math Op / Addr : 02E9: 05 05 : Call Sub 5 Addr : 02EB: Label0004 Addr : 02EB: Label0005 130 long[resultAddr]~ ' Clear the measurement Addr : 02EB: 6C : Variable Operation Local Offset - 3 Read Addr : 02EC: C2 18 : Memory Op Long POP Address ASSIGN VAR~ Post-clear 131 params[0] := pin ' Copy to global Addr : 02EE: 64 : Variable Operation Local Offset - 1 Read Addr : 02EF: 35 : Constant 1 $00000000 Addr : 02F0: D9 14 : Memory Op Long VBASE + POP Index WRITE Address = 0014 132 params[1] := state Addr : 02F2: 68 : Variable Operation Local Offset - 2 Read Addr : 02F3: 36 : Constant 2 $00000001 Addr : 02F4: D9 14 : Memory Op Long VBASE + POP Index WRITE Address = 0014 133 params[5] := resultAddr Addr : 02F6: 6C : Variable Operation Local Offset - 3 Read Addr : 02F7: 38 05 : Constant 1 Bytes - 05 - $00000005 5 Addr : 02F9: D9 14 : Memory Op Long VBASE + POP Index WRITE Address = 0014 134 cog := cognew(@entry, @params) Addr : 02FB: 34 : Constant 0 $FFFFFFFF Addr : 02FC: C7 20 : Memory Op Long PBASE + ADDRESS Address = 0020 Addr : 02FE: 57 : Variable Operation Global Offset - 5 Address Addr : 02FF: 28 : CogInit(Id, Addr, Ptr) Push Addr : 0300: 41 : Variable Operation Global Offset - 0 Write 135 if mode==SEQUENTIAL ' If sequential mode Addr : 0301: 50 : Variable Operation Global Offset - 4 Read Addr : 0302: 35 : Constant 1 $00000000 Addr : 0303: FC : Math Op == Addr : 0304: JZ Label0006 Addr : 0304: 0A 05 : jz Address = 030B 5 Addr : 0306: Label0008 136 repeat until done ' then wait to complete Addr : 0306: 4C : Variable Operation Global Offset - 3 Read Addr : 0307: JNZ Label000A Addr : 0307: 0B 02 : jnz Address = 030B 2 Addr : 0309: Label0009 Addr : 0309: JMP Label0008 Addr : 0309: 04 7B : Jmp 0306 -5 Addr : 030B: Label000A Addr : 030B: Label0006 Addr : 030B: Label0007 137 return cog + 1 Addr : 030B: 40 : Variable Operation Global Offset - 0 Read Addr : 030C: 36 : Constant 2 $00000001 Addr : 030D: EC : Math Op + Addr : 030E: 33 : Return value Addr : 030F: Data : 32 2 |===========================================================================| Object Jimsstepper_asm4debug Object Base is 0310 |===========================================================================| Object Constants |===========================================================================| |===========================================================================| VBASE Global Variables |===========================================================================| VBASE : 0000 LONG Size 0004 Variable Cog VBASE : 0004 LONG Size 0018 Variable parms VBASE : 001C LONG Size 0004 Variable mstix VBASE : 0020 LONG Size 0004 Variable _FullStep VBASE : 0024 LONG Size 0004 Variable _HalfStep VBASE : 0028 LONG Size 0020 Variable tempregs VBASE : 0048 LONG Size 0004 Variable _mpin1 VBASE : 004C LONG Size 0004 Variable _mpin2 VBASE : 0050 LONG Size 0080 Variable stack |===========================================================================| Object DAT Blocks |===========================================================================| 031C(0000) | entry ORG 0 031C(0000) 00 00 00 00 | Long 0 [8] 033C(0008) 16 90 FC 5C | call #setup 0340(0009) C1 8C BD 08 | inloop rdlong mode,mdePtr 0344(000A) C7 8C 3D 62 | test mode,cmdMstr WZ 'continouous until command 0348(000B) 09 00 68 5C | if_z jmp #inloop 034C(000C) C1 70 3D 08 | wrlong zero,mdePtr 'reset command mode 0350(000D) B9 8C 3D 62 | test mode,mtrmde1 WZ 0354(000E) 49 AE D4 5C | if_NZ call #Cmd_M1 'NZ bit set high 0358(000F) BA 8C 3D 62 | test mode,mtrmde2 WZ 035C(0010) 58 CC D4 5C | if_NZ call #Cmd_M2 'NZ bit set high 0360(0011) B9 8C 3D 62 | cmdloop1 test mode,mtrmde1 WZ 0364(0012) 67 00 54 5C | if_NZ jmp #stp_1 0368(0013) BA 8C 3D 62 | cmdloop2 test mode,mtrmde2 WZ 036C(0014) 87 00 54 5C | if_NZ jmp #stp_2 0370(0015) 09 00 7C 5C | jmp #inloop 0374(0016) F0 9D BD A0 | setup mov tmp1,par 0378(0017) CE 66 BD 08 | rdlong ms001,tmp1 037C(0018) 04 9C FD 80 | add tmp1,#4 0380(0019) CE 68 BD 08 | rdlong full_Step1,tmp1 0384(001A) 04 9C FD 80 | add tmp1,#4 0388(001B) CE 6A BD 08 | rdlong Half_Step1,tmp1 038C(001C) B5 6E BD A0 | mov Half_Step2,Half_Step1 0390(001D) B4 6C BD A0 | mov full_step2,full_Step1 0394(001E) 04 9C FD 80 | add tmp1,#4 0398(001F) CE 82 BD 08 | rdlong mdePtr,tmp1 'PAR + 12 is Parms[0] 039C(0020) 04 9C FD 80 | add tmp1,#4 ' offset from Parms[0] 03A0(0021) CE 78 BD 08 | rdlong m1pins,tmp1 '+ 4 03A4(0022) 04 9C FD 80 | add tmp1,#4 03A8(0023) CE 7A BD 08 | rdlong m2pins,tmp1 '+ 8 03AC(0024) C1 9C BD A0 | mov tmp1,mdePtr 'parm[0] 03B0(0025) 04 9C FD 80 | add tmp1,#4 03B4(0026) CE 88 BD A0 | mov stpPtr1,tmp1 'parm[1] 03B8(0027) 04 9C FD 80 | add tmp1,#4 03BC(0028) CE 8A BD A0 | mov stpPtr2,tmp1 'parm[2] 03C0(0029) 04 9C FD 80 | add tmp1,#4 03C4(002A) CE 84 BD A0 | mov dly1_ptr,tmp1 'parm[3] 03C8(002B) 04 9C FD 80 | add tmp1,#4 03CC(002C) CE 86 BD A0 | mov dly2_ptr,tmp1 'parm[4] 03D0(002D) 0F A2 FD A0 | mov m1mask,#%1111 'set up motor1 pins 03D4(002E) BC A2 BD 2C | shl m1mask,m1pins 03D8(002F) 0F A4 FD A0 | mov m2mask,#%1111 'set up motor2 pins 03DC(0030) BD A4 BD 2C | shl m2mask,m2Pins 03E0(0031) D2 A6 BD A0 | mov mstrmask,m2mask 03E4(0032) D1 A6 BD 80 | add mstrmask,m1mask 03E8(0033) D3 E8 BF 64 | andn outa,mstrmask 03EC(0034) D3 EC BF 68 | or dira,mstrmask 03F0(0035) 01 AA FD A0 | mov b_26,#1 03F4(0036) 1A AA FD 2C | SHL b_26,#26 03F8(0037) 01 90 FD A0 | mov stepping1,#1 03FC(0038) 04 90 FD 2C | SHL stepping1,#4 0400(0039) 01 92 FD A0 | mov stepping2,#1 0404(003A) 08 92 FD 2C | shl stepping2,#8 0408(003B) 01 AC FD A0 | mov cmdM1,#1 040C(003C) 11 AC FD 2C | shl cmdM1,#17 0410(003D) 01 AE FD A0 | mov cmdM2,#1 0414(003E) 12 AE FD 2C | shl cmdM2,#18 0418(003F) D6 8E BD A0 | mov cmdMstr,cmdM1 041C(0040) D7 8E BD 68 | or cmdMstr,cmdM2 0420(0041) 0F B0 BD A0 | mov mskM1,$0F 0424(0042) F0 B2 BD A0 | mov mskM2,$0F0 0428(0043) 20 F0 FF 58 | movi ctra,#%00100_000 042C(0044) 20 F2 FF 58 | movi ctrb,#%00100_000 0430(0045) 01 F4 FF A0 | mov frqa,#1 0434(0046) 01 F6 FF A0 | mov frqb,#1 0438(0047) 87 B6 FD A0 | mov task2,#stp_2 'for jmpret 043C(0048) 00 00 7C 5C | setup_ret ret 0440(0049) C4 94 BD 08 | Cmd_m1 rdlong stpsm1,StpPtr1 0444(004A) 01 8C 7D 62 | test mode,#%01 WZ '01 is full/half 0448(004B) A7 CE A8 A0 | if_z mov stp_1,_stepf 044C(004C) C2 7E BD 08 | rdlong dly_1,dly1_ptr 0450(004D) A8 CE 94 A0 | if_nz mov stp_1,_steph 0454(004E) A9 DA A8 A0 | if_z mov m1dir,FS_m1Dir 0458(004F) AA DC A8 A0 | if_z mov m1dir1,FS_m1Dir1 045C(0050) AB DA 94 A0 | if_nz mov m1dir,Hs_m1Dir 0460(0051) AC DC 94 A0 | if_nz mov m1dir1,Hs_m1Dir1 ' 0464(0052) 01 94 D5 64 | if_nz andn stpsm1,#%01 'make halfstep even 0468(0053) 02 8C 7D 62 | test mode,#%010 WZ 'direction cw or ccw 046C(0054) D5 DA BC 78 | muxz m1Dir,b_26 0470(0055) D5 DC BC 78 | muxz m1Dir1,b_26 0474(0056) BB E6 BC 58 | movi start_stp2,jump 0478(0057) 00 00 7C 5C | cmd_m1_ret RET 047C(0058) C5 96 BD 08 | Cmd_m2 rdlong stpsm2,StpPtr2 0480(0059) 10 8C 7D 62 | test mode,#%01_0000 WZ 0484(005A) A7 0E A9 A0 | if_z mov stp_2,_stepf 0488(005B) C3 80 BD 08 | rdlong dly_2,dly2_ptr ' 048C(005C) A8 0E 95 A0 | if_nz mov stp_2,_steph ' 0490(005D) AF 1A A9 A0 | if_z mov m2dir,FS_m2Dir 0494(005E) B0 1C A9 A0 | if_z mov m2dir1,FS_m2dir1 0498(005F) B1 1A 95 A0 | if_nz mov m2dir,Hs_m2Dir 049C(0060) B2 1C 95 A0 | if_nz mov m2dir1,Hs_m2Dir1 ' 04A0(0061) 01 96 D5 64 | if_nz andn stpsm2,#%01 'make halfstep even 04A4(0062) 20 8C 7D 62 | test mode,#%010_0000 WZ 'determine direction cw or ccw 04A8(0063) D5 DA BC 78 | muxz m1Dir,b_26 04AC(0064) D5 DC BC 78 | muxz m1Dir1,b_26 04B0(0065) BB 28 BD 58 | movi skipto1,jump 04B4(0066) 00 00 7C 5C | Cmd_M2_ret RET 04B8(0067) 00 00 00 00 | Stp_1 nop 04BC(0068) D1 E8 BF 64 | andn outa,m1mask 'kill all m1 motor pins 04C0(0069) B4 9C BD A0 | mov tmp1,full_step1 04C4(006A) 0F 9C FD 60 | and tmp1,#%1111 04C8(006B) BC 9C BD 2C | shl tmp1,m1pins 04CC(006C) CE E8 BF 68 | or outa,tmp1 'set pins for current step 04D0(006D) 04 68 FD 20 | m1Dir ror full_step1,#4 'gets replaced by ROL or rol 04D4(006E) 08 6A FD 20 | m1Dir1 ror Half_step1,#8 'shift 8 keeps half= full on even 04D8(006F) BF 98 BD A0 | set_stpDly1 mov ms_dly1,dly_1 04DC(0070) 04 98 FD 48 | min ms_dly1,#4 'limit min delay 4ms 04E0(0071) C8 8C BD 68 | or mode,stepping1 'tells cmd doing something 04E4(0072) BA 8C 3D 62 | test mode,mtrmde2 WZ 'is motor2 to run? 04E8(0073) 87 00 54 5C | start_stp2 if_NZ jmp #Stp_2 'yes 04EC(0074) 00 28 FD 58 | movi skipto1,#0 'delete unnecessary step 04F0(0075) 00 F8 FF A0 | stpDly1_loop mov phsa,#0 04F4(0076) F0 B8 FD A0 | mov t1,#$F0 04F8(0077) 18 B8 FD 2C | shl t1,#24 04FC(0078) FC B9 3D 87 | stpDly1_reenter cmp t1,phsa WZ,WC 'debug line remove 0500(0079) DB B4 85 5C | if_NZ_and_NC jmpret Task1,task2 0504(007A) FC B9 3D 87 | cmp t1,phsa wz,wc 'debug line remove 0508(007B) 78 00 44 5C | if_NZ_and_NC jmp #stpDly1_reenter 050C(007C) 75 98 FD E4 | djnz ms_dly1,#stpDly1_loop 0510(007D) C8 8C BD 64 | andn mode,stepping1 0514(007E) C2 7E BD 08 | rdlong dly_1,dly1_ptr 0518(007F) 01 94 FD 84 | sub stpsM1,#1 051C(0080) C4 94 3D 08 | wrlong stpsM1,stpPtr1 0520(0081) BA 8C 3D 62 | Test mode,mtrMde2 wz 0524(0082) DB B4 95 5C | if_nz jmpret task1,task2 0528(0083) 00 94 7D 86 | cmp stpsM1,#0 wz 052C(0084) 67 00 54 5C | if_nz jmp #Stp_1 0530(0085) B9 8C BD 64 | andn mode,mtrMde1 'motor no longer running report to mode 0534(0086) 13 00 3C 5C | jmp cmdloop2 0538(0087) 00 00 00 00 | Stp_2 nop 053C(0088) D2 E8 BF 64 | andn outa,m2mask 'kill all m1 motor pins 0540(0089) B6 9E BD A0 | mov tmp2,full_step2 0544(008A) 0F 9E FD 60 | and tmp2,#%1111 0548(008B) BC 9E BD 2C | shl tmp2,m1pins 054C(008C) CF E8 BF 68 | or outa,tmp2 'set pins for current step 0550(008D) 04 6C FD 20 | m2Dir ror full_step2,#4 'gets replaced by ROL or rol 0554(008E) 08 6E FD 20 | m2Dir1 ror Half_step2,#8 'shift 8 keeps half= full on even 0558(008F) C0 9A BD A0 | set_stpDly2 mov ms_dly2,dly_2 055C(0090) 04 9A FD 48 | min ms_dly2,#4 'limit min delay 4ms 0560(0091) C9 8C BD 68 | or mode,stepping2 'tells cmd doing something 0564(0092) 00 E6 FC 58 | movi start_stp2,#0 'make nop 0568(0093) 00 00 00 00 | nop 056C(0094) 73 00 7C 5C | skipto1 jmp #start_stp2 0570(0095) 00 FA FF A0 | stpDly2_loop mov phsb,#0 0574(0096) F0 BA FD A0 | mov t2,#$f0 'debug line remove 0578(0097) 18 BA FD 2C | shl t2,#24 ' debug line remove 057C(0098) FD BB 3D 87 | stpDly2_reenter cmp t2,phsb WZ,WC 0580(0099) DA B6 85 5C | if_NZ_and_NC jmpret Task2,task1 0584(009A) FD BB 3D 84 | cmp t2,phsb 'debug line remove 0588(009B) 98 00 44 5C | if_NZ_and_NC jmp #stpDly2_reenter 058C(009C) 95 9A FD E4 | djnz ms_dly2,#stpDly2_loop 0590(009D) C9 8C BD 64 | andn mode,stepping2 0594(009E) C3 80 BD 08 | rdlong dly_2,dly2_ptr 0598(009F) 01 96 FD 84 | sub stpsM2,#1 059C(00A0) C5 96 3D 08 | wrlong stpsM2,stpPtr2 05A0(00A1) B9 8C 3D 62 | Test mode,mtrMde1 wz 05A4(00A2) DA B6 95 5C | if_nz jmpret task2,task1 05A8(00A3) 00 94 7D 86 | cmp stpsM1,#0 wz 05AC(00A4) 87 00 54 5C | if_nz jmp #Stp_2 05B0(00A5) BA 8C BD 64 | andn mode,mtrMde2 05B4(00A6) 11 00 3C 5C | jmp cmdloop1 05B8(00A7) B4 9C BD A0 | _stepf mov tmp1,full_step1 05BC(00A8) B5 9C BD A0 | _steph mov tmp1,half_step1 05C0(00A9) 04 68 FD 20 | FS_m1Dir ror full_step1,#4 'gets replaced by ROR or rol 05C4(00AA) 08 6A FD 20 | FS_m1Dir1 ror Half_step1,#8 'shift 8 keeps half= full on even pins 05C8(00AB) 02 68 FD 20 | Hs_m1Dir ror full_step1,#2 05CC(00AC) 04 6A FD 20 | Hs_m1Dir1 ror Half_step1,#4 05D0(00AD) B6 9E BD A0 | _stepf2 mov tmp2,full_step2 05D4(00AE) B7 9E BD A0 | _steph2 mov tmp2,half_step2 05D8(00AF) 04 6C FD 20 | FS_m2Dir ror full_step2,#4 'gets replaced by ROR or rol 05DC(00B0) 08 6E FD 20 | FS_m2Dir1 ror Half_step2,#8 'shift 8 keeps half= full on even pins 05E0(00B1) 02 6C FD 20 | Hs_m2Dir ror full_step2,#2 05E4(00B2) 04 6E FD 20 | Hs_m2Dir1 ror Half_step2,#4 05E8(00B3) 00 00 00 00 | ms001 long 0 05EC(00B4) 00 00 00 00 | full_Step1 long 0 05F0(00B5) 00 00 00 00 | Half_Step1 long 0 05F4(00B6) 00 00 00 00 | full_Step2 long 0 05F8(00B7) 00 00 00 00 | Half_Step2 long 0 05FC(00B8) 00 00 00 00 | Zero long 0 0600(00B9) 00 00 01 00 | mtrmde1 long %001_0000_0000_0000_0000 0604(00BA) 00 00 02 00 | mtrmde2 long %010_0000_0000_0000_0000 0608(00BB) B8 00 00 00 | jump long %010111_000 060C(00BC) | m1Pins res 1 060C(00BD) | m2Pins res 1 060C(00BE) | mde res 1 060C(00BF) | dly_1 res 1 060C(00C0) | dly_2 res 1 060C(00C1) | mdePtr res 1 060C(00C2) | dly1_ptr res 1 060C(00C3) | dly2_ptr res 1 060C(00C4) | stpPtr1 res 1 060C(00C5) | stpPtr2 res 1 060C(00C6) | mode res 1 'see constants for flags def 060C(00C7) | cmdMstr res 1 060C(00C8) | stepping1 res 1 060C(00C9) | stepping2 res 1 060C(00CA) | stpsm1 res 1 060C(00CB) | stpsm2 res 1 060C(00CC) | ms_dly1 res 1 060C(00CD) | ms_dly2 res 1 060C(00CE) | tmp1 res 1 060C(00CF) | tmp2 res 1 060C(00D0) | tmp3 res 1 060C(00D1) | m1Mask res 1 060C(00D2) | m2Mask res 1 060C(00D3) | mstrMask res 1 060C(00D4) | timer res 1 060C(00D5) | b_26 res 1 060C(00D6) | cmdM1 res 1 060C(00D7) | cmdM2 res 1 060C(00D8) | mskM1 res 1 060C(00D9) | mskM2 res 1 060C(00DA) | task1 res 1 060C(00DB) | task2 res 1 060C(00DC) | t1 res 1 'temp var for debug 060C(00DD) | t2 res 1 'temp var for debug 060C(00DE) | FIT 060C(00DE) | There are 274 ($112) Longs left in the cog |===========================================================================| |===========================================================================| Spin Block START with 3 Parameters and 1 Extra Stack Longs. Method 1 PUB START(pntr,Pn1,Pn2) | okay Local Parameter DBASE:0000 - Result Local Parameter DBASE:0004 - pntr Local Parameter DBASE:0008 - Pn1 Local Parameter DBASE:000C - Pn2 Local Variable DBASE:0010 - okay |===========================================================================| 67 zero := 0 Addr : 060C: 35 : Constant 1 $00000000 Addr : 060D: C5 82 EC : Memory Op Long PBASE + WRITE Address = 02EC 68 mstix := clkfreq / 1000 '1 millisec time Addr : 0610: 35 : Constant 1 $00000000 Addr : 0611: C0 : Memory Op Long POP Address READ Addr : 0612: 39 03 E8 : Constant 2 Bytes - 03 E8 - $000003E8 1000 Addr : 0615: F6 : Math Op / Addr : 0616: 5D : Variable Operation Global Offset - 7 Write 69 _fullstep := FullStep Addr : 0617: 3B 9C 63 9C 63 : Constant 4 Bytes - 9C 63 9C 63 - $9C639C63 2623773795 Addr : 061C: C9 20 : Memory Op Long VBASE + WRITE Address = 0020 70 _HalfStep := HalfStep Addr : 061E: 3B 8C 46 23 91 : Constant 4 Bytes - 8C 46 23 91 - $8C462391 2353406865 Addr : 0623: C9 24 : Memory Op Long VBASE + WRITE Address = 0024 72 longmove(@tempregs,@pntr,3) 'normal operation Addr : 0625: CB 28 : Memory Op Long VBASE + ADDRESS Address = 0028 Addr : 0627: 67 : Variable Operation Local Offset - 1 Address Addr : 0628: 37 21 : Constant Mask Y=33 Decrement 00000003 3 Addr : 062A: 1E : LongMove(To, From, Count) 74 If cog Addr : 062B: 40 : Variable Operation Global Offset - 0 Read Addr : 062C: JZ Label0001 Addr : 062C: 0A 05 : jz Address = 0633 5 75 cogstop(cog~ -1) Addr : 062E: 42 98 : Variable Operation Global Offset - 0 Assign VAR~ Post-clear Push Addr : 0630: 36 : Constant 2 $00000001 Addr : 0631: ED : Math Op - Addr : 0632: 21 : CogStop(id) Addr : 0633: Label0001 Addr : 0633: Label0002 76 deb.debug(@entry,@mstix) Addr : 0633: 01 : Drop Anchor Addr : 0634: C7 0C : Memory Op Long PBASE + ADDRESS Address = 000C Addr : 0636: 5F : Variable Operation Global Offset - 7 Address Addr : 0637: 06 02 03 : Call Obj.Sub 2 3 Addr : 063A: 32 : Return |===========================================================================| Object BMAUtility Object Base is 063C |===========================================================================| Object Constants |===========================================================================| |===========================================================================| VBASE Global Variables |===========================================================================| VBASE : 0000 LONG Size 0020 Variable pasm VBASE : 0020 LONG Size 0020 Variable parms VBASE : 0040 LONG Size 0020 Variable listpc |===========================================================================| Object DAT Blocks |===========================================================================| 0704(0000) 00 00 00 00 | task long 0 0708(0001) 00 00 00 00 | nooftask long 0 070C(0002) 00 | help byte 0 070D(0002) 61 | byte "ax : animate with x ms delay per step",0 070E(0002) 78 | 070F(0002) 20 | 0710(0003) 20 | 0711(0003) 20 | 0712(0003) 20 | 0713(0003) 20 | 0714(0004) 3A | 0715(0004) 20 | 0716(0004) 61 | 0717(0004) 6E | 0718(0005) 69 | 0719(0005) 6D | 071A(0005) 61 | 071B(0005) 74 | 071C(0006) 65 | 071D(0006) 20 | 071E(0006) 77 | 071F(0006) 69 | 0720(0007) 74 | 0721(0007) 68 | 0722(0007) 20 | 0723(0007) 78 | 0724(0008) 20 | 0725(0008) 6D | 0726(0008) 73 | 0727(0008) 20 | 0728(0009) 64 | 0729(0009) 65 | 072A(0009) 6C | 072B(0009) 61 | 072C(000A) 79 | 072D(000A) 20 | 072E(000A) 70 | 072F(000A) 65 | 0730(000B) 72 | 0731(000B) 20 | 0732(000B) 73 | 0733(000B) 74 | 0734(000C) 65 | 0735(000C) 70 | 0736(000C) 00 | 0737(000C) 62 | byte "bx : toggles breakpoint at COG address x",0 0738(000D) 78 | 0739(000D) 20 | 073A(000D) 20 | 073B(000D) 20 | 073C(000E) 20 | 073D(000E) 20 | 073E(000E) 3A | 073F(000E) 20 | 0740(000F) 74 | 0741(000F) 6F | 0742(000F) 67 | 0743(000F) 67 | 0744(0010) 6C | 0745(0010) 65 | 0746(0010) 73 | 0747(0010) 20 | 0748(0011) 62 | 0749(0011) 72 | 074A(0011) 65 | 074B(0011) 61 | 074C(0012) 6B | 074D(0012) 70 | 074E(0012) 6F | 074F(0012) 69 | 0750(0013) 6E | 0751(0013) 74 | 0752(0013) 20 | 0753(0013) 61 | 0754(0014) 74 | 0755(0014) 20 | 0756(0014) 43 | 0757(0014) 4F | 0758(0015) 47 | 0759(0015) 20 | 075A(0015) 61 | 075B(0015) 64 | 075C(0016) 64 | 075D(0016) 72 | 075E(0016) 65 | 075F(0016) 73 | 0760(0017) 73 | 0761(0017) 20 | 0762(0017) 78 | 0763(0017) 00 | 0764(0018) 63 | byte "c : clears all breakpoints",0 0765(0018) 20 | 0766(0018) 20 | 0767(0018) 20 | 0768(0019) 20 | 0769(0019) 20 | 076A(0019) 20 | 076B(0019) 3A | 076C(001A) 20 | 076D(001A) 63 | 076E(001A) 6C | 076F(001A) 65 | 0770(001B) 61 | 0771(001B) 72 | 0772(001B) 73 | 0773(001B) 20 | 0774(001C) 61 | 0775(001C) 6C | 0776(001C) 6C | 0777(001C) 20 | 0778(001D) 62 | 0779(001D) 72 | 077A(001D) 65 | 077B(001D) 61 | 077C(001E) 6B | 077D(001E) 70 | 077E(001E) 6F | 077F(001E) 69 | 0780(001F) 6E | 0781(001F) 74 | 0782(001F) 73 | 0783(001F) 00 | 0784(0020) 44 | byte "D : dumps all COG values",0 0785(0020) 20 | 0786(0020) 20 | 0787(0020) 20 | 0788(0021) 20 | 0789(0021) 20 | 078A(0021) 20 | 078B(0021) 3A | 078C(0022) 20 | 078D(0022) 64 | 078E(0022) 75 | 078F(0022) 6D | 0790(0023) 70 | 0791(0023) 73 | 0792(0023) 20 | 0793(0023) 61 | 0794(0024) 6C | 0795(0024) 6C | 0796(0024) 20 | 0797(0024) 43 | 0798(0025) 4F | 0799(0025) 47 | 079A(0025) 20 | 079B(0025) 76 | 079C(0026) 61 | 079D(0026) 6C | 079E(0026) 75 | 079F(0026) 65 | 07A0(0027) 73 | 07A1(0027) 00 | 07A2(0027) 64 | byte "dx n : dumps n COG values from x",0 07A3(0027) 78 | 07A4(0028) 20 | 07A5(0028) 6E | 07A6(0028) 20 | 07A7(0028) 20 | 07A8(0029) 20 | 07A9(0029) 3A | 07AA(0029) 20 | 07AB(0029) 64 | 07AC(002A) 75 | 07AD(002A) 6D | 07AE(002A) 70 | 07AF(002A) 73 | 07B0(002B) 20 | 07B1(002B) 6E | 07B2(002B) 20 | 07B3(002B) 43 | 07B4(002C) 4F | 07B5(002C) 47 | 07B6(002C) 20 | 07B7(002C) 76 | 07B8(002D) 61 | 07B9(002D) 6C | 07BA(002D) 75 | 07BB(002D) 65 | 07BC(002E) 73 | 07BD(002E) 20 | 07BE(002E) 66 | 07BF(002E) 72 | 07C0(002F) 6F | 07C1(002F) 6D | 07C2(002F) 20 | 07C3(002F) 78 | 07C4(0030) 00 | 07C5(0030) 66 | byte "ftx n v: fill n HUB addresses with v from x with t type = b,w,l",0 07C6(0030) 74 | 07C7(0030) 78 | 07C8(0031) 20 | 07C9(0031) 6E | 07CA(0031) 20 | 07CB(0031) 76 | 07CC(0032) 3A | 07CD(0032) 20 | 07CE(0032) 66 | 07CF(0032) 69 | 07D0(0033) 6C | 07D1(0033) 6C | 07D2(0033) 20 | 07D3(0033) 6E | 07D4(0034) 20 | 07D5(0034) 48 | 07D6(0034) 55 | 07D7(0034) 42 | 07D8(0035) 20 | 07D9(0035) 61 | 07DA(0035) 64 | 07DB(0035) 64 | 07DC(0036) 72 | 07DD(0036) 65 | 07DE(0036) 73 | 07DF(0036) 73 | 07E0(0037) 65 | 07E1(0037) 73 | 07E2(0037) 20 | 07E3(0037) 77 | 07E4(0038) 69 | 07E5(0038) 74 | 07E6(0038) 68 | 07E7(0038) 20 | 07E8(0039) 76 | 07E9(0039) 20 | 07EA(0039) 66 | 07EB(0039) 72 | 07EC(003A) 6F | 07ED(003A) 6D | 07EE(003A) 20 | 07EF(003A) 78 | 07F0(003B) 20 | 07F1(003B) 77 | 07F2(003B) 69 | 07F3(003B) 74 | 07F4(003C) 68 | 07F5(003C) 20 | 07F6(003C) 74 | 07F7(003C) 20 | 07F8(003D) 74 | 07F9(003D) 79 | 07FA(003D) 70 | 07FB(003D) 65 | 07FC(003E) 20 | 07FD(003E) 3D | 07FE(003E) 20 | 07FF(003E) 62 | 0800(003F) 2C | 0801(003F) 77 | 0802(003F) 2C | 0803(003F) 6C | 0804(0040) 00 | 0805(0040) 67 | byte "g : run COG and stop at any breakpoints",0 0806(0040) 20 | 0807(0040) 20 | 0808(0041) 20 | 0809(0041) 20 | 080A(0041) 20 | 080B(0041) 20 | 080C(0042) 3A | 080D(0042) 20 | 080E(0042) 72 | 080F(0042) 75 | 0810(0043) 6E | 0811(0043) 20 | 0812(0043) 43 | 0813(0043) 4F | 0814(0044) 47 | 0815(0044) 20 | 0816(0044) 61 | 0817(0044) 6E | 0818(0045) 64 | 0819(0045) 20 | 081A(0045) 73 | 081B(0045) 74 | 081C(0046) 6F | 081D(0046) 70 | 081E(0046) 20 | 081F(0046) 61 | 0820(0047) 74 | 0821(0047) 20 | 0822(0047) 61 | 0823(0047) 6E | 0824(0048) 79 | 0825(0048) 20 | 0826(0048) 62 | 0827(0048) 72 | 0828(0049) 65 | 0829(0049) 61 | 082A(0049) 6B | 082B(0049) 70 | 082C(004A) 6F | 082D(004A) 69 | 082E(004A) 6E | 082F(004A) 74 | 0830(004B) 73 | 0831(004B) 00 | 0832(004B) 68 | byte "htx n : dumps n HUB values from x with t type = b,w,l",0 0833(004B) 74 | 0834(004C) 78 | 0835(004C) 20 | 0836(004C) 6E | 0837(004C) 20 | 0838(004D) 20 | 0839(004D) 3A | 083A(004D) 20 | 083B(004D) 64 | 083C(004E) 75 | 083D(004E) 6D | 083E(004E) 70 | 083F(004E) 73 | 0840(004F) 20 | 0841(004F) 6E | 0842(004F) 20 | 0843(004F) 48 | 0844(0050) 55 | 0845(0050) 42 | 0846(0050) 20 | 0847(0050) 76 | 0848(0051) 61 | 0849(0051) 6C | 084A(0051) 75 | 084B(0051) 65 | 084C(0052) 73 | 084D(0052) 20 | 084E(0052) 66 | 084F(0052) 72 | 0850(0053) 6F | 0851(0053) 6D | 0852(0053) 20 | 0853(0053) 78 | 0854(0054) 20 | 0855(0054) 77 | 0856(0054) 69 | 0857(0054) 74 | 0858(0055) 68 | 0859(0055) 20 | 085A(0055) 74 | 085B(0055) 20 | 085C(0056) 74 | 085D(0056) 79 | 085E(0056) 70 | 085F(0056) 65 | 0860(0057) 20 | 0861(0057) 3D | 0862(0057) 20 | 0863(0057) 62 | 0864(0058) 2C | 0865(0058) 77 | 0866(0058) 2C | 0867(0058) 6C | 0868(0059) 00 | 0869(0059) 69 | byte "ix : step showing result of instructions at x",0 086A(0059) 78 | 086B(0059) 20 | 086C(005A) 20 | 086D(005A) 20 | 086E(005A) 20 | 086F(005A) 20 | 0870(005B) 3A | 0871(005B) 20 | 0872(005B) 73 | 0873(005B) 74 | 0874(005C) 65 | 0875(005C) 70 | 0876(005C) 20 | 0877(005C) 73 | 0878(005D) 68 | 0879(005D) 6F | 087A(005D) 77 | 087B(005D) 69 | 087C(005E) 6E | 087D(005E) 67 | 087E(005E) 20 | 087F(005E) 72 | 0880(005F) 65 | 0881(005F) 73 | 0882(005F) 75 | 0883(005F) 6C | 0884(0060) 74 | 0885(0060) 20 | 0886(0060) 6F | 0887(0060) 66 | 0888(0061) 20 | 0889(0061) 69 | 088A(0061) 6E | 088B(0061) 73 | 088C(0062) 74 | 088D(0062) 72 | 088E(0062) 75 | 088F(0062) 63 | 0890(0063) 74 | 0891(0063) 69 | 0892(0063) 6F | 0893(0063) 6E | 0894(0064) 73 | 0895(0064) 20 | 0896(0064) 61 | 0897(0064) 74 | 0898(0065) 20 | 0899(0065) 78 | 089A(0065) 00 | 089B(0065) 4C | byte "L : lists/disassembles all COG values/instructions",0 089C(0066) 20 | 089D(0066) 20 | 089E(0066) 20 | 089F(0066) 20 | 08A0(0067) 20 | 08A1(0067) 20 | 08A2(0067) 3A | 08A3(0067) 20 | 08A4(0068) 6C | 08A5(0068) 69 | 08A6(0068) 73 | 08A7(0068) 74 | 08A8(0069) 73 | 08A9(0069) 2F | 08AA(0069) 64 | 08AB(0069) 69 | 08AC(006A) 73 | 08AD(006A) 61 | 08AE(006A) 73 | 08AF(006A) 73 | 08B0(006B) 65 | 08B1(006B) 6D | 08B2(006B) 62 | 08B3(006B) 6C | 08B4(006C) 65 | 08B5(006C) 73 | 08B6(006C) 20 | 08B7(006C) 61 | 08B8(006D) 6C | 08B9(006D) 6C | 08BA(006D) 20 | 08BB(006D) 43 | 08BC(006E) 4F | 08BD(006E) 47 | 08BE(006E) 20 | 08BF(006E) 76 | 08C0(006F) 61 | 08C1(006F) 6C | 08C2(006F) 75 | 08C3(006F) 65 | 08C4(0070) 73 | 08C5(0070) 2F | 08C6(0070) 69 | 08C7(0070) 6E | 08C8(0071) 73 | 08C9(0071) 74 | 08CA(0071) 72 | 08CB(0071) 75 | 08CC(0072) 63 | 08CD(0072) 74 | 08CE(0072) 69 | 08CF(0072) 6F | 08D0(0073) 6E | 08D1(0073) 73 | 08D2(0073) 00 | 08D3(0073) 6C | byte "l : lists/disassembles 16 instructions from PC",0 08D4(0074) 20 | 08D5(0074) 20 | 08D6(0074) 20 | 08D7(0074) 20 | 08D8(0075) 20 | 08D9(0075) 20 | 08DA(0075) 3A | 08DB(0075) 20 | 08DC(0076) 6C | 08DD(0076) 69 | 08DE(0076) 73 | 08DF(0076) 74 | 08E0(0077) 73 | 08E1(0077) 2F | 08E2(0077) 64 | 08E3(0077) 69 | 08E4(0078) 73 | 08E5(0078) 61 | 08E6(0078) 73 | 08E7(0078) 73 | 08E8(0079) 65 | 08E9(0079) 6D | 08EA(0079) 62 | 08EB(0079) 6C | 08EC(007A) 65 | 08ED(007A) 73 | 08EE(007A) 20 | 08EF(007A) 31 | 08F0(007B) 36 | 08F1(007B) 20 | 08F2(007B) 69 | 08F3(007B) 6E | 08F4(007C) 73 | 08F5(007C) 74 | 08F6(007C) 72 | 08F7(007C) 75 | 08F8(007D) 63 | 08F9(007D) 74 | 08FA(007D) 69 | 08FB(007D) 6F | 08FC(007E) 6E | 08FD(007E) 73 | 08FE(007E) 20 | 08FF(007E) 66 | 0900(007F) 72 | 0901(007F) 6F | 0902(007F) 6D | 0903(007F) 20 | 0904(0080) 50 | 0905(0080) 43 | 0906(0080) 00 | 0907(0080) 6C | byte "lx n : list n instructions s starting at x",0 0908(0081) 78 | 0909(0081) 20 | 090A(0081) 6E | 090B(0081) 20 | 090C(0082) 20 | 090D(0082) 20 | 090E(0082) 3A | 090F(0082) 20 | 0910(0083) 6C | 0911(0083) 69 | 0912(0083) 73 | 0913(0083) 74 | 0914(0084) 20 | 0915(0084) 6E | 0916(0084) 20 | 0917(0084) 69 | 0918(0085) 6E | 0919(0085) 73 | 091A(0085) 74 | 091B(0085) 72 | 091C(0086) 75 | 091D(0086) 63 | 091E(0086) 74 | 091F(0086) 69 | 0920(0087) 6F | 0921(0087) 6E | 0922(0087) 73 | 0923(0087) 20 | 0924(0088) 73 | 0925(0088) 20 | 0926(0088) 73 | 0927(0088) 74 | 0928(0089) 61 | 0929(0089) 72 | 092A(0089) 74 | 092B(0089) 69 | 092C(008A) 6E | 092D(008A) 67 | 092E(008A) 20 | 092F(008A) 61 | 0930(008B) 74 | 0931(008B) 20 | 0932(008B) 78 | 0933(008B) 00 | 0934(008C) 6E | byte "n : step to next jmp",0 0935(008C) 20 | 0936(008C) 20 | 0937(008C) 20 | 0938(008D) 20 | 0939(008D) 20 | 093A(008D) 20 | 093B(008D) 3A | 093C(008E) 20 | 093D(008E) 73 | 093E(008E) 74 | 093F(008E) 65 | 0940(008F) 70 | 0941(008F) 20 | 0942(008F) 74 | 0943(008F) 6F | 0944(0090) 20 | 0945(0090) 6E | 0946(0090) 65 | 0947(0090) 78 | 0948(0091) 74 | 0949(0091) 20 | 094A(0091) 6A | 094B(0091) 6D | 094C(0092) 70 | 094D(0092) 00 | 094E(0092) 70 | byte "pr : prints special register values PAR, etc...",0 094F(0092) 72 | 0950(0093) 20 | 0951(0093) 20 | 0952(0093) 20 | 0953(0093) 20 | 0954(0094) 20 | 0955(0094) 3A | 0956(0094) 20 | 0957(0094) 70 | 0958(0095) 72 | 0959(0095) 69 | 095A(0095) 6E | 095B(0095) 74 | 095C(0096) 73 | 095D(0096) 20 | 095E(0096) 73 | 095F(0096) 70 | 0960(0097) 65 | 0961(0097) 63 | 0962(0097) 69 | 0963(0097) 61 | 0964(0098) 6C | 0965(0098) 20 | 0966(0098) 72 | 0967(0098) 65 | 0968(0099) 67 | 0969(0099) 69 | 096A(0099) 73 | 096B(0099) 74 | 096C(009A) 65 | 096D(009A) 72 | 096E(009A) 20 | 096F(009A) 76 | 0970(009B) 61 | 0971(009B) 6C | 0972(009B) 75 | 0973(009B) 65 | 0974(009C) 73 | 0975(009C) 20 | 0976(009C) 50 | 0977(009C) 41 | 0978(009D) 52 | 0979(009D) 2C | 097A(009D) 20 | 097B(009D) 65 | 097C(009E) 74 | 097D(009E) 63 | 097E(009E) 2E | 097F(009E) 2E | 0980(009F) 2E | 0981(009F) 00 | 0982(009F) 70 | byte "px : prints content of COG register number ",0 0983(009F) 78 | 0984(00A0) 20 | 0985(00A0) 20 | 0986(00A0) 20 | 0987(00A0) 20 | 0988(00A1) 20 | 0989(00A1) 3A | 098A(00A1) 20 | 098B(00A1) 70 | 098C(00A2) 72 | 098D(00A2) 69 | 098E(00A2) 6E | 098F(00A2) 74 | 0990(00A3) 73 | 0991(00A3) 20 | 0992(00A3) 63 | 0993(00A3) 6F | 0994(00A4) 6E | 0995(00A4) 74 | 0996(00A4) 65 | 0997(00A4) 6E | 0998(00A5) 74 | 0999(00A5) 20 | 099A(00A5) 6F | 099B(00A5) 66 | 099C(00A6) 20 | 099D(00A6) 43 | 099E(00A6) 4F | 099F(00A6) 47 | 09A0(00A7) 20 | 09A1(00A7) 72 | 09A2(00A7) 65 | 09A3(00A7) 67 | 09A4(00A8) 69 | 09A5(00A8) 73 | 09A6(00A8) 74 | 09A7(00A8) 65 | 09A8(00A9) 72 | 09A9(00A9) 20 | 09AA(00A9) 6E | 09AB(00A9) 75 | 09AC(00AA) 6D | 09AD(00AA) 62 | 09AE(00AA) 65 | 09AF(00AA) 72 | 09B0(00AB) 20 | 09B1(00AB) 3C | 09B2(00AB) 68 | 09B3(00AB) 65 | 09B4(00AC) 78 | 09B5(00AC) 3E | 09B6(00AC) 00 | 09B7(00AC) 72 | byte "r : resets pc back to starting position",0 09B8(00AD) 20 | 09B9(00AD) 20 | 09BA(00AD) 20 | 09BB(00AD) 20 | 09BC(00AE) 20 | 09BD(00AE) 20 | 09BE(00AE) 3A | 09BF(00AE) 20 | 09C0(00AF) 72 | 09C1(00AF) 65 | 09C2(00AF) 73 | 09C3(00AF) 65 | 09C4(00B0) 74 | 09C5(00B0) 73 | 09C6(00B0) 20 | 09C7(00B0) 70 | 09C8(00B1) 63 | 09C9(00B1) 20 | 09CA(00B1) 62 | 09CB(00B1) 61 | 09CC(00B2) 63 | 09CD(00B2) 6B | 09CE(00B2) 20 | 09CF(00B2) 74 | 09D0(00B3) 6F | 09D1(00B3) 20 | 09D2(00B3) 73 | 09D3(00B3) 74 | 09D4(00B4) 61 | 09D5(00B4) 72 | 09D6(00B4) 74 | 09D7(00B4) 69 | 09D8(00B5) 6E | 09D9(00B5) 67 | 09DA(00B5) 20 | 09DB(00B5) 70 | 09DC(00B6) 6F | 09DD(00B6) 73 | 09DE(00B6) 69 | 09DF(00B6) 74 | 09E0(00B7) 69 | 09E1(00B7) 6F | 09E2(00B7) 6E | 09E3(00B7) 00 | 09E4(00B8) 52 | byte "R : restarts COG",0 09E5(00B8) 20 | 09E6(00B8) 20 | 09E7(00B8) 20 | 09E8(00B9) 20 | 09E9(00B9) 20 | 09EA(00B9) 20 | 09EB(00B9) 3A | 09EC(00BA) 20 | 09ED(00BA) 72 | 09EE(00BA) 65 | 09EF(00BA) 73 | 09F0(00BB) 74 | 09F1(00BB) 61 | 09F2(00BB) 72 | 09F3(00BB) 74 | 09F4(00BC) 73 | 09F5(00BC) 20 | 09F6(00BC) 43 | 09F7(00BC) 4F | 09F8(00BD) 47 | 09F9(00BD) 00 | 09FA(00BD) 73 | byte "sx v : sets value at COG address x = v",0 09FB(00BD) 78 | 09FC(00BE) 20 | 09FD(00BE) 76 | 09FE(00BE) 20 | 09FF(00BE) 20 | 0A00(00BF) 20 | 0A01(00BF) 3A | 0A02(00BF) 20 | 0A03(00BF) 73 | 0A04(00C0) 65 | 0A05(00C0) 74 | 0A06(00C0) 73 | 0A07(00C0) 20 | 0A08(00C1) 76 | 0A09(00C1) 61 | 0A0A(00C1) 6C | 0A0B(00C1) 75 | 0A0C(00C2) 65 | 0A0D(00C2) 20 | 0A0E(00C2) 61 | 0A0F(00C2) 74 | 0A10(00C3) 20 | 0A11(00C3) 43 | 0A12(00C3) 4F | 0A13(00C3) 47 | 0A14(00C4) 20 | 0A15(00C4) 61 | 0A16(00C4) 64 | 0A17(00C4) 64 | 0A18(00C5) 72 | 0A19(00C5) 65 | 0A1A(00C5) 73 | 0A1B(00C5) 73 | 0A1C(00C6) 20 | 0A1D(00C6) 78 | 0A1E(00C6) 20 | 0A1F(00C6) 3D | 0A20(00C7) 20 | 0A21(00C7) 76 | 0A22(00C7) 00 | 0A23(00C7) 74 | byte "tx : switch to COG task x",0 0A24(00C8) 78 | 0A25(00C8) 20 | 0A26(00C8) 20 | 0A27(00C8) 20 | 0A28(00C9) 20 | 0A29(00C9) 20 | 0A2A(00C9) 3A | 0A2B(00C9) 20 | 0A2C(00CA) 73 | 0A2D(00CA) 77 | 0A2E(00CA) 69 | 0A2F(00CA) 74 | 0A30(00CB) 63 | 0A31(00CB) 68 | 0A32(00CB) 20 | 0A33(00CB) 74 | 0A34(00CC) 6F | 0A35(00CC) 20 | 0A36(00CC) 43 | 0A37(00CC) 4F | 0A38(00CD) 47 | 0A39(00CD) 20 | 0A3A(00CD) 74 | 0A3B(00CD) 61 | 0A3C(00CE) 73 | 0A3D(00CE) 6B | 0A3E(00CE) 20 | 0A3F(00CE) 78 | 0A40(00CF) 00 | 0A41(00CF) 7A | byte "z : shows flags",0 0A42(00CF) 20 | 0A43(00CF) 20 | 0A44(00D0) 20 | 0A45(00D0) 20 | 0A46(00D0) 20 | 0A47(00D0) 20 | 0A48(00D1) 3A | 0A49(00D1) 20 | 0A4A(00D1) 73 | 0A4B(00D1) 68 | 0A4C(00D2) 6F | 0A4D(00D2) 77 | 0A4E(00D2) 73 | 0A4F(00D2) 20 | 0A50(00D3) 66 | 0A51(00D3) 6C | 0A52(00D3) 61 | 0A53(00D3) 67 | 0A54(00D4) 73 | 0A55(00D4) 00 | 0A56(00D4) 45 | byte "Enter : single-step",0 0A57(00D4) 6E | 0A58(00D5) 74 | 0A59(00D5) 65 | 0A5A(00D5) 72 | 0A5B(00D5) 20 | 0A5C(00D6) 20 | 0A5D(00D6) 3A | 0A5E(00D6) 20 | 0A5F(00D6) 73 | 0A60(00D7) 69 | 0A61(00D7) 6E | 0A62(00D7) 67 | 0A63(00D7) 6C | 0A64(00D8) 65 | 0A65(00D8) 2D | 0A66(00D8) 73 | 0A67(00D8) 74 | 0A68(00D9) 65 | 0A69(00D9) 70 | 0A6A(00D9) 00 | 0A6B(00D9) 3F | byte "? : show this help screen",0 0A6C(00DA) 20 | 0A6D(00DA) 20 | 0A6E(00DA) 20 | 0A6F(00DA) 20 | 0A70(00DB) 20 | 0A71(00DB) 20 | 0A72(00DB) 3A | 0A73(00DB) 20 | 0A74(00DC) 73 | 0A75(00DC) 68 | 0A76(00DC) 6F | 0A77(00DC) 77 | 0A78(00DD) 20 | 0A79(00DD) 74 | 0A7A(00DD) 68 | 0A7B(00DD) 69 | 0A7C(00DE) 73 | 0A7D(00DE) 20 | 0A7E(00DE) 68 | 0A7F(00DE) 65 | 0A80(00DF) 6C | 0A81(00DF) 70 | 0A82(00DF) 20 | 0A83(00DF) 73 | 0A84(00E0) 63 | 0A85(00E0) 72 | 0A86(00E0) 65 | 0A87(00E0) 65 | 0A88(00E1) 6E | 0A89(00E1) 00 | 0A8A(00E1) | helpend 0A8A(00E1) | org 0 0A8C(0000) 01 0E FC 5C | brkjmp jmpret brkjmpaddr, #1 ' write PC+1 to COG address 0 and jump to wait for non-zero in stub 0A90(0001) 00 00 7C 5C | gojmp jmp #0-0 ' jump to instruction at address 0A94(0002) 00 00 00 00 | long 0 [5] 0AA8(0007) 07 00 00 00 | brkjmpaddr long $ ' so we don't have to add spin code 0AAC(0008) 50 | regs byte "PAR ",0 0AAD(0008) 41 | 0AAE(0008) 52 | 0AAF(0008) 20 | 0AB0(0009) 00 | 0AB1(0009) 43 | byte "CNT ",0 0AB2(0009) 4E | 0AB3(0009) 54 | 0AB4(000A) 20 | 0AB5(000A) 00 | 0AB6(000A) 49 | byte "INA ",0 0AB7(000A) 4E | 0AB8(000B) 41 | 0AB9(000B) 20 | 0ABA(000B) 00 | 0ABB(000B) 49 | byte "INB ",0 0ABC(000C) 4E | 0ABD(000C) 42 | 0ABE(000C) 20 | 0ABF(000C) 00 | 0AC0(000D) 4F | byte "OUTA",0 0AC1(000D) 55 | 0AC2(000D) 54 | 0AC3(000D) 41 | 0AC4(000E) 00 | 0AC5(000E) 4F | byte "OUTB",0 0AC6(000E) 55 | 0AC7(000E) 54 | 0AC8(000F) 42 | 0AC9(000F) 00 | 0ACA(000F) 44 | byte "DIRA",0 0ACB(000F) 49 | 0ACC(0010) 52 | 0ACD(0010) 41 | 0ACE(0010) 00 | 0ACF(0010) 44 | byte "DIRB",0 0AD0(0011) 49 | 0AD1(0011) 52 | 0AD2(0011) 42 | 0AD3(0011) 00 | 0AD4(0012) 43 | byte "CTRA",0 0AD5(0012) 54 | 0AD6(0012) 52 | 0AD7(0012) 41 | 0AD8(0013) 00 | 0AD9(0013) 43 | byte "CTRB",0 0ADA(0013) 54 | 0ADB(0013) 52 | 0ADC(0014) 42 | 0ADD(0014) 00 | 0ADE(0014) 46 | byte "FRQA",0 0ADF(0014) 52 | 0AE0(0015) 51 | 0AE1(0015) 41 | 0AE2(0015) 00 | 0AE3(0015) 46 | byte "FRQB",0 0AE4(0016) 52 | 0AE5(0016) 51 | 0AE6(0016) 42 | 0AE7(0016) 00 | 0AE8(0017) 50 | byte "PHSA",0 0AE9(0017) 48 | 0AEA(0017) 53 | 0AEB(0017) 41 | 0AEC(0018) 00 | 0AED(0018) 50 | byte "PHSB",0 0AEE(0018) 48 | 0AEF(0018) 53 | 0AF0(0019) 42 | 0AF1(0019) 00 | 0AF2(0019) 56 | byte "VCFG",0 0AF3(0019) 43 | 0AF4(001A) 46 | 0AF5(001A) 47 | 0AF6(001A) 00 | 0AF7(001A) 56 | byte "VSCL",0 0AF8(001B) 53 | 0AF9(001B) 43 | 0AFA(001B) 4C | 0AFB(001B) 00 | |===========================================================================| |===========================================================================| Spin Block start with 0 Parameters and 0 Extra Stack Longs. Method 1 pub start Local Parameter DBASE:0000 - Result |===========================================================================| 33 if(nooftask < 1) Addr : 0AFC: C4 80 CC : Memory Op Long PBASE + READ Address = 00CC Addr : 0AFF: 36 : Constant 2 $00000001 Addr : 0B00: F9 : Math Op < Addr : 0B01: JZ Label0002 Addr : 0B01: 0A 09 : jz Address = 0B0C 9 34 fd.str(string(EOL,EOL,"No COG tasks started. Debugger halted.",EOL)) Addr : 0B03: 01 : Drop Anchor Addr : 0B04: PBASE Constant Address of Label0004 Addr : 0B04: 87 84 E9 : Memory Op Byte PBASE + ADDRESS Address = 04E9 Addr : 0B07: 06 2A 0A : Call Obj.Sub 42 10 Addr : 0B0A: Label0005 Addr : 0B0A: Label0006 Addr : 0B0A: JMP Label0005 Addr : 0B0A: 04 7E : Jmp 0B0A -2 Addr : 0B0C: Label0007 Addr : 0B0C: Label0002 Addr : 0B0C: Label0003 36 fd.str(string(EOL,EOL,"BMA Debugger Task ")) ' we're running Addr : 0B0C: 01 : Drop Anchor Addr : 0B0D: PBASE Constant Address of Label0008 Addr : 0B0D: 87 85 13 : Memory Op Byte PBASE + ADDRESS Address = 0513 Addr : 0B10: 06 2A 0A : Call Obj.Sub 42 10 37 fd.dec(task) Addr : 0B13: 01 : Drop Anchor Addr : 0B14: C4 80 C8 : Memory Op Long PBASE + READ Address = 00C8 Addr : 0B17: 06 2A 0B : Call Obj.Sub 42 11 38 cli(bd[task].pcstart) Addr : 0B1A: 01 : Drop Anchor Addr : 0B1B: 00 : Drop Anchor Push Addr : 0B1C: C4 80 C8 : Memory Op Long PBASE + READ Address = 00C8 Addr : 0B1F: 07 2C 02 : Call Obj.Sub[ ]44 2 Addr : 0B22: 05 04 : Call Sub 4 Addr : 0B24: 32 : Return Addr : 0B25: Label0004 Addr : 0B25: Data : 0A 0A 4E 6F 20 43 4F 47 ..No COG Addr : 0B2D: Data : 20 74 61 73 6B 73 20 73 tasks s Addr : 0B35: Data : 74 61 72 74 65 64 2E 20 tarted. Addr : 0B3D: Data : 44 65 62 75 67 67 65 72 Debugger Addr : 0B45: Data : 20 68 61 6C 74 65 64 2E halted. Addr : 0B4D: Data : 0A 00 .. Addr : 0B4F: Label0008 Addr : 0B4F: Data : 0A 0A 42 4D 41 20 44 65 ..BMA De Addr : 0B57: Data : 62 75 67 67 65 72 20 54 bugger T Addr : 0B5F: Data : 61 73 6B 20 00 ask . |===========================================================================| Spin Block taskstart with 3 Parameters and 5 Extra Stack Longs. Method 2 pub taskstart(entryp, parmp, id) | ch, ut, pcstart, goinst, gopc Local Parameter DBASE:0000 - Result Local Parameter DBASE:0004 - entryp Local Parameter DBASE:0008 - parmp Local Parameter DBASE:000C - id Local Variable DBASE:0010 - ch Local Variable DBASE:0014 - ut Local Variable DBASE:0018 - pcstart Local Variable DBASE:001C - goinst Local Variable DBASE:0020 - gopc |===========================================================================| 46 fd.str(string("Starting BMA Debugger task ")) ' we're running Addr : 0B64: 01 : Drop Anchor Addr : 0B65: PBASE Constant Address of Label0002 Addr : 0B65: 87 85 7C : Memory Op Byte PBASE + ADDRESS Address = 057C Addr : 0B68: 06 2A 0A : Call Obj.Sub 42 10 47 fd.dec(nooftask) Addr : 0B6B: 01 : Drop Anchor Addr : 0B6C: C4 80 CC : Memory Op Long PBASE + READ Address = 00CC Addr : 0B6F: 06 2A 0B : Call Obj.Sub 42 11 48 if(id) Addr : 0B72: 6C : Variable Operation Local Offset - 3 Read Addr : 0B73: JZ Label0003 Addr : 0B73: 0A 13 : jz Address = 0B88 19 49 fd.tx(" ") Addr : 0B75: 01 : Drop Anchor Addr : 0B76: 37 04 : Constant Mask Y=4 00000020 32 Addr : 0B78: 06 2A 09 : Call Obj.Sub 42 9 50 fd.str(id) Addr : 0B7B: 01 : Drop Anchor Addr : 0B7C: 6C : Variable Operation Local Offset - 3 Read Addr : 0B7D: 06 2A 0A : Call Obj.Sub 42 10 51 bd[nooftask].setId(id) Addr : 0B80: 01 : Drop Anchor Addr : 0B81: 6C : Variable Operation Local Offset - 3 Read Addr : 0B82: C4 80 CC : Memory Op Long PBASE + READ Address = 00CC Addr : 0B85: 07 2C 03 : Call Obj.Sub[ ]44 3 Addr : 0B88: Label0003 Addr : 0B88: Label0004 52 fd.tx(EOL) Addr : 0B88: 01 : Drop Anchor Addr : 0B89: 38 0A : Constant 1 Bytes - 0A - $0000000A 10 Addr : 0B8B: 06 2A 09 : Call Obj.Sub 42 9 54 pasm[nooftask] := entryp Addr : 0B8E: 64 : Variable Operation Local Offset - 1 Read Addr : 0B8F: C4 80 CC : Memory Op Long PBASE + READ Address = 00CC Addr : 0B92: D9 00 : Memory Op Long VBASE + POP Index WRITE Address = 0000 55 parms[nooftask] := parmp Addr : 0B94: 68 : Variable Operation Local Offset - 2 Read Addr : 0B95: C4 80 CC : Memory Op Long PBASE + READ Address = 00CC Addr : 0B98: D9 20 : Memory Op Long VBASE + POP Index WRITE Address = 0020 56 result := bd[nooftask].start(entryp, parmp, nooftask) Addr : 0B9A: 00 : Drop Anchor Push Addr : 0B9B: 64 : Variable Operation Local Offset - 1 Read Addr : 0B9C: 68 : Variable Operation Local Offset - 2 Read Addr : 0B9D: C4 80 CC : Memory Op Long PBASE + READ Address = 00CC Addr : 0BA0: C4 80 CC : Memory Op Long PBASE + READ Address = 00CC Addr : 0BA3: 07 2C 01 : Call Obj.Sub[ ]44 1 Addr : 0BA6: 61 : Variable Operation Local Offset - 0 Write 57 listpc[nooftask] := bd[task].pcstart Addr : 0BA7: 00 : Drop Anchor Push Addr : 0BA8: C4 80 C8 : Memory Op Long PBASE + READ Address = 00C8 Addr : 0BAB: 07 2C 02 : Call Obj.Sub[ ]44 2 Addr : 0BAE: C4 80 CC : Memory Op Long PBASE + READ Address = 00CC Addr : 0BB1: D9 40 : Memory Op Long VBASE + POP Index WRITE Address = 0040 58 nooftask++ Addr : 0BB3: C6 80 CC 2E : Memory Op Long PBASE + ASSIGN Address = 00CC VAR++ post inc Long Addr : 0BB7: 32 : Return Addr : 0BB8: Label0002 Addr : 0BB8: Data : 53 74 61 72 74 69 6E 67 Starting Addr : 0BC0: Data : 20 42 4D 41 20 44 65 62 BMA Deb Addr : 0BC8: Data : 75 67 67 65 72 20 74 61 ugger ta Addr : 0BD0: Data : 73 6B 20 00 sk . |===========================================================================| Spin Block debug with 2 Parameters and 5 Extra Stack Longs. Method 3 pub debug(entryp, parmp) | ch, ut, pcstart, goinst, gopc Local Parameter DBASE:0000 - Result Local Parameter DBASE:0004 - entryp Local Parameter DBASE:0008 - parmp Local Variable DBASE:000C - ch Local Variable DBASE:0010 - ut Local Variable DBASE:0014 - pcstart Local Variable DBASE:0018 - goinst Local Variable DBASE:001C - gopc |===========================================================================| 66 fd.str(string(EOL,EOL,"Starting BMA Debugger ... ")) ' we're running Addr : 0BD4: 01 : Drop Anchor Addr : 0BD5: PBASE Constant Address of Label0002 Addr : 0BD5: 87 85 C5 : Memory Op Byte PBASE + ADDRESS Address = 05C5 Addr : 0BD8: 06 2A 0A : Call Obj.Sub 42 10 67 pasm := entryp Addr : 0BDB: 64 : Variable Operation Local Offset - 1 Read Addr : 0BDC: 41 : Variable Operation Global Offset - 0 Write 68 parms := parmp Addr : 0BDD: 68 : Variable Operation Local Offset - 2 Read Addr : 0BDE: C9 20 : Memory Op Long VBASE + WRITE Address = 0020 69 bd[task].start(pasm, parms,0) Addr : 0BE0: 01 : Drop Anchor Addr : 0BE1: 40 : Variable Operation Global Offset - 0 Read Addr : 0BE2: C8 20 : Memory Op Long VBASE + READ Address = 0020 Addr : 0BE4: 35 : Constant 1 $00000000 Addr : 0BE5: C4 80 C8 : Memory Op Long PBASE + READ Address = 00C8 Addr : 0BE8: 07 2C 01 : Call Obj.Sub[ ]44 1 71 goinst~ Addr : 0BEB: 7A 18 : Variable Operation Local Offset - 6 Assign VAR~ Post-clear 72 pcstart := bd[task].pcstart Addr : 0BED: 00 : Drop Anchor Push Addr : 0BEE: C4 80 C8 : Memory Op Long PBASE + READ Address = 00C8 Addr : 0BF1: 07 2C 02 : Call Obj.Sub[ ]44 2 Addr : 0BF4: 75 : Variable Operation Local Offset - 5 Write 73 fd.str(string(EOL,EOL,"BMA Debugger Started.")) ' we're running Addr : 0BF5: 01 : Drop Anchor Addr : 0BF6: PBASE Constant Address of Label0003 Addr : 0BF6: 87 85 E2 : Memory Op Byte PBASE + ADDRESS Address = 05E2 Addr : 0BF9: 06 2A 0A : Call Obj.Sub 42 10 75 cli(pcstart) Addr : 0BFC: 01 : Drop Anchor Addr : 0BFD: 74 : Variable Operation Local Offset - 5 Read Addr : 0BFE: 05 04 : Call Sub 4 Addr : 0C00: 32 : Return Addr : 0C01: Label0002 Addr : 0C01: Data : 0A 0A 53 74 61 72 74 69 ..Starti Addr : 0C09: Data : 6E 67 20 42 4D 41 20 44 ng BMA D Addr : 0C11: Data : 65 62 75 67 67 65 72 20 ebugger Addr : 0C19: Data : 2E 2E 2E 20 00 ... . Addr : 0C1E: Label0003 Addr : 0C1E: Data : 0A 0A 42 4D 41 20 44 65 ..BMA De Addr : 0C26: Data : 62 75 67 67 65 72 20 53 bugger S Addr : 0C2E: Data : 74 61 72 74 65 64 2E 00 tarted.. Addr : 0C36: Data : |===========================================================================| Spin Block cli with 1 Parameters and 4 Extra Stack Longs. Method 4 pub cli(pcstart) | ch, ut, goinst, gopc Local Parameter DBASE:0000 - Result Local Parameter DBASE:0004 - pcstart Local Variable DBASE:0008 - ch Local Variable DBASE:000C - ut Local Variable DBASE:0010 - goinst Local Variable DBASE:0014 - gopc |===========================================================================| 78 goinst~ Addr : 0C36: 72 18 : Variable Operation Local Offset - 4 Assign VAR~ Post-clear Addr : 0C38: Label0002 80 if goinst Addr : 0C38: 70 : Variable Operation Local Offset - 4 Read Addr : 0C39: JZ Label0005 Addr : 0C39: 0A 31 : jz Address = 0C6C 49 81 waitcnt(clkfreq/10+cnt) Addr : 0C3B: 35 : Constant 1 $00000000 Addr : 0C3C: C0 : Memory Op Long POP Address READ Addr : 0C3D: 38 0A : Constant 1 Bytes - 0A - $0000000A 10 Addr : 0C3F: F6 : Math Op / Addr : 0C40: 3F 91 : Register op CNT Read Addr : 0C42: EC : Math Op + Addr : 0C43: 23 : WaitCnt(count) 82 gopc := bd[task].peek(brkjmpaddr)-1 Addr : 0C44: 00 : Drop Anchor Push Addr : 0C45: C4 84 6C : Memory Op Long PBASE + READ Address = 046C Addr : 0C48: C4 80 C8 : Memory Op Long PBASE + READ Address = 00C8 Addr : 0C4B: 07 2C 0A : Call Obj.Sub[ ]44 10 Addr : 0C4E: 36 : Constant 2 $00000001 Addr : 0C4F: ED : Math Op - Addr : 0C50: 75 : Variable Operation Local Offset - 5 Write 83 long[bd[task].pcp] := gopc Addr : 0C51: 74 : Variable Operation Local Offset - 5 Read Addr : 0C52: 00 : Drop Anchor Push Addr : 0C53: C4 80 C8 : Memory Op Long PBASE + READ Address = 00C8 Addr : 0C56: 07 2C 07 : Call Obj.Sub[ ]44 7 Addr : 0C59: C1 : Memory Op Long POP Address WRITE 84 goinst~ Addr : 0C5A: 72 18 : Variable Operation Local Offset - 4 Assign VAR~ Post-clear 85 listpc[task] := gopc Addr : 0C5C: 74 : Variable Operation Local Offset - 5 Read Addr : 0C5D: C4 80 C8 : Memory Op Long PBASE + READ Address = 00C8 Addr : 0C60: D9 40 : Memory Op Long VBASE + POP Index WRITE Address = 0040 88 stepDump(bd[task].pcp) Addr : 0C62: 01 : Drop Anchor Addr : 0C63: 00 : Drop Anchor Push Addr : 0C64: C4 80 C8 : Memory Op Long PBASE + READ Address = 00C8 Addr : 0C67: 07 2C 07 : Call Obj.Sub[ ]44 7 Addr : 0C6A: 05 25 : Call Sub 37 Addr : 0C6C: Label0005 Addr : 0C6C: Label0006 89 prompt Addr : 0C6C: 01 : Drop Anchor Addr : 0C6D: 05 06 : Call Sub 6 90 ch := fd.rx Addr : 0C6F: 00 : Drop Anchor Push Addr : 0C70: 06 2A 07 : Call Obj.Sub 42 7 Addr : 0C73: 69 : Variable Operation Local Offset - 2 Write 91 ut := utility(ch,bd[task].pcp,pcstart) Addr : 0C74: 00 : Drop Anchor Push Addr : 0C75: 68 : Variable Operation Local Offset - 2 Read Addr : 0C76: 00 : Drop Anchor Push Addr : 0C77: C4 80 C8 : Memory Op Long PBASE + READ Address = 00C8 Addr : 0C7A: 07 2C 07 : Call Obj.Sub[ ]44 7 Addr : 0C7D: 64 : Variable Operation Local Offset - 1 Read Addr : 0C7E: 05 07 : Call Sub 7 Addr : 0C80: 6D : Variable Operation Local Offset - 3 Write Addr : 0C81: Constant Address of Label0007 Addr : 0C81: 39 06 C3 : Constant 2 Bytes - 06 C3 - $000006C3 1731 92 case ut Addr : 0C84: 6C : Variable Operation Local Offset - 3 Read 93 0 : Addr : 0C85: 35 : Constant 1 $00000000 Addr : 0C86: Case_Value Label0008 Addr : 0C86: 0D 30 : Value Case Address = 0CB8 48 95 "I","i" : Addr : 0C88: 38 49 : Constant 1 Bytes - 49 - $00000049 73 Addr : 0C8A: Case_Value Label0009 Addr : 0C8A: 0D 37 : Value Case Address = 0CC3 55 Addr : 0C8C: 38 69 : Constant 1 Bytes - 69 - $00000069 105 Addr : 0C8E: Case_Value Label0009 Addr : 0C8E: 0D 33 : Value Case Address = 0CC3 51 97 "n": Addr : 0C90: 38 6E : Constant 1 Bytes - 6E - $0000006E 110 Addr : 0C92: Case_Value Label000A Addr : 0C92: 0D 33 : Value Case Address = 0CC7 51 99 "N": Addr : 0C94: 38 4E : Constant 1 Bytes - 4E - $0000004E 78 Addr : 0C96: Case_Value Label000B Addr : 0C96: 0D 3B : Value Case Address = 0CD3 59 101 "g","G": Addr : 0C98: 38 67 : Constant 1 Bytes - 67 - $00000067 103 Addr : 0C9A: Case_Value Label000C Addr : 0C9A: 0D 80 42 : Value Case Address = 0CDF 66 Addr : 0C9D: 38 47 : Constant 1 Bytes - 47 - $00000047 71 Addr : 0C9F: Case_Value Label000C Addr : 0C9F: 0D 3E : Value Case Address = 0CDF 62 108 if chkBreak(bd[task].pcp) Addr : 0CA1: 00 : Drop Anchor Push Addr : 0CA2: 00 : Drop Anchor Push Addr : 0CA3: C4 80 C8 : Memory Op Long PBASE + READ Address = 00C8 Addr : 0CA6: 07 2C 07 : Call Obj.Sub[ ]44 7 Addr : 0CA9: 05 16 : Call Sub 22 Addr : 0CAB: JZ Label000D Addr : 0CAB: 0A 0A : jz Address = 0CB7 10 109 showInst(bd[task].pcp) Addr : 0CAD: 01 : Drop Anchor Addr : 0CAE: 00 : Drop Anchor Push Addr : 0CAF: C4 80 C8 : Memory Op Long PBASE + READ Address = 00C8 Addr : 0CB2: 07 2C 07 : Call Obj.Sub[ ]44 7 Addr : 0CB5: 05 27 : Call Sub 39 Addr : 0CB7: Label000D Addr : 0CB7: Label000E Addr : 0CB7: CaseDone Label000C Addr : 0CB7: 0C : Casedone Addr : 0CB8: Label0008 94 stepDump(bd[task].pcp) Addr : 0CB8: 01 : Drop Anchor Addr : 0CB9: 00 : Drop Anchor Push Addr : 0CBA: C4 80 C8 : Memory Op Long PBASE + READ Address = 00C8 Addr : 0CBD: 07 2C 07 : Call Obj.Sub[ ]44 7 Addr : 0CC0: 05 25 : Call Sub 37 Addr : 0CC2: CaseDone Label0008 Addr : 0CC2: 0C : Casedone Addr : 0CC3: Label0009 96 stepWatchInst Addr : 0CC3: 01 : Drop Anchor Addr : 0CC4: 05 23 : Call Sub 35 Addr : 0CC6: CaseDone Label0009 Addr : 0CC6: 0C : Casedone Addr : 0CC7: Label000A 98 stepOver(bd[task].pcp,0) ' step over Addr : 0CC7: 01 : Drop Anchor Addr : 0CC8: 00 : Drop Anchor Push Addr : 0CC9: C4 80 C8 : Memory Op Long PBASE + READ Address = 00C8 Addr : 0CCC: 07 2C 07 : Call Obj.Sub[ ]44 7 Addr : 0CCF: 35 : Constant 1 $00000000 Addr : 0CD0: 05 20 : Call Sub 32 Addr : 0CD2: CaseDone Label000A Addr : 0CD2: 0C : Casedone Addr : 0CD3: Label000B 100 stepOver(bd[task].pcp,1) ' step over verbose Addr : 0CD3: 01 : Drop Anchor Addr : 0CD4: 00 : Drop Anchor Push Addr : 0CD5: C4 80 C8 : Memory Op Long PBASE + READ Address = 00C8 Addr : 0CD8: 07 2C 07 : Call Obj.Sub[ ]44 7 Addr : 0CDB: 36 : Constant 2 $00000001 Addr : 0CDC: 05 20 : Call Sub 32 Addr : 0CDE: CaseDone Label000B Addr : 0CDE: 0C : Casedone Addr : 0CDF: Label000C 104 goinst := gojmp | (long[bd[task].pcp] & $1ff) Addr : 0CDF: C4 84 54 : Memory Op Long PBASE + READ Address = 0454 Addr : 0CE2: 00 : Drop Anchor Push Addr : 0CE3: C4 80 C8 : Memory Op Long PBASE + READ Address = 00C8 Addr : 0CE6: 07 2C 07 : Call Obj.Sub[ ]44 7 Addr : 0CE9: C0 : Memory Op Long POP Address READ Addr : 0CEA: 37 28 : Constant Mask Y=40 Decrement 000001FF 511 Addr : 0CEC: E8 : Math Op & Addr : 0CED: EA : Math Op | Addr : 0CEE: 71 : Variable Operation Local Offset - 4 Write 105 bd[task].execute(bd[task].peek(goinst)) Addr : 0CEF: 01 : Drop Anchor Addr : 0CF0: 00 : Drop Anchor Push Addr : 0CF1: 70 : Variable Operation Local Offset - 4 Read Addr : 0CF2: C4 80 C8 : Memory Op Long PBASE + READ Address = 00C8 Addr : 0CF5: 07 2C 0A : Call Obj.Sub[ ]44 10 Addr : 0CF8: C4 80 C8 : Memory Op Long PBASE + READ Address = 00C8 Addr : 0CFB: 07 2C 09 : Call Obj.Sub[ ]44 9 Addr : 0CFE: CaseDone Label000C Addr : 0CFE: 0C : Casedone Addr : 0CFF: Label0007 Addr : 0CFF: Label0003 Addr : 0CFF: JMP Label0002 Addr : 0CFF: 04 FF 36 : Jmp 0C38 -202 Addr : 0D02: Label0004 Addr : 0D02: 32 : Return |===========================================================================| Spin Block showPC with 0 Parameters and 0 Extra Stack Longs. Method 5 pri showPC Local Parameter DBASE:0000 - Result |===========================================================================| 113 fd.tx(EOL) Addr : 0D03: 01 : Drop Anchor Addr : 0D04: 38 0A : Constant 1 Bytes - 0A - $0000000A 10 Addr : 0D06: 06 2A 09 : Call Obj.Sub 42 9 114 fd.tx("T") Addr : 0D09: 01 : Drop Anchor Addr : 0D0A: 38 54 : Constant 1 Bytes - 54 - $00000054 84 Addr : 0D0C: 06 2A 09 : Call Obj.Sub 42 9 115 fd.dec(task) Addr : 0D0F: 01 : Drop Anchor Addr : 0D10: C4 80 C8 : Memory Op Long PBASE + READ Address = 00C8 Addr : 0D13: 06 2A 0B : Call Obj.Sub 42 11 116 fd.str(string(".PC")) Addr : 0D16: 01 : Drop Anchor Addr : 0D17: PBASE Constant Address of Label0002 Addr : 0D17: 87 86 E2 : Memory Op Byte PBASE + ADDRESS Address = 06E2 Addr : 0D1A: 06 2A 0A : Call Obj.Sub 42 10 Addr : 0D1D: 32 : Return Addr : 0D1E: Label0002 Addr : 0D1E: Data : 2E 50 43 00 .PC. |===========================================================================| Spin Block prompt with 0 Parameters and 0 Extra Stack Longs. Method 6 pri prompt Local Parameter DBASE:0000 - Result |===========================================================================| 119 showPC Addr : 0D22: 01 : Drop Anchor Addr : 0D23: 05 05 : Call Sub 5 120 if isbreak(long[bd[task].pcp]) Addr : 0D25: 00 : Drop Anchor Push Addr : 0D26: 00 : Drop Anchor Push Addr : 0D27: C4 80 C8 : Memory Op Long PBASE + READ Address = 00C8 Addr : 0D2A: 07 2C 07 : Call Obj.Sub[ ]44 7 Addr : 0D2D: C0 : Memory Op Long POP Address READ Addr : 0D2E: 05 15 : Call Sub 21 Addr : 0D30: JZ Label0002 Addr : 0D30: 0A 08 : jz Address = 0D3A 8 121 fd.tx("*") Addr : 0D32: 01 : Drop Anchor Addr : 0D33: 38 2A : Constant 1 Bytes - 2A - $0000002A 42 Addr : 0D35: 06 2A 09 : Call Obj.Sub 42 9 Addr : 0D38: JMP Label0003 Addr : 0D38: 04 06 : Jmp 0D40 6 Addr : 0D3A: Label0002 123 fd.tx(" ") Addr : 0D3A: 01 : Drop Anchor Addr : 0D3B: 37 04 : Constant Mask Y=4 00000020 32 Addr : 0D3D: 06 2A 09 : Call Obj.Sub 42 9 Addr : 0D40: Label0004 Addr : 0D40: Label0003 125 if long[bd[task].pcp] > -1 and long[bd[task].pcp] < $200 Addr : 0D40: 00 : Drop Anchor Push Addr : 0D41: C4 80 C8 : Memory Op Long PBASE + READ Address = 00C8 Addr : 0D44: 07 2C 07 : Call Obj.Sub[ ]44 7 Addr : 0D47: C0 : Memory Op Long POP Address READ Addr : 0D48: 34 : Constant 0 $FFFFFFFF Addr : 0D49: FA : Math Op > Addr : 0D4A: 00 : Drop Anchor Push Addr : 0D4B: C4 80 C8 : Memory Op Long PBASE + READ Address = 00C8 Addr : 0D4E: 07 2C 07 : Call Obj.Sub[ ]44 7 Addr : 0D51: C0 : Memory Op Long POP Address READ Addr : 0D52: 37 08 : Constant Mask Y=8 00000200 512 Addr : 0D54: F9 : Math Op < Addr : 0D55: F0 : Math Op AND Addr : 0D56: JZ Label0005 Addr : 0D56: 0A 10 : jz Address = 0D68 16 126 fd.hex(long[bd[task].pcp],3) Addr : 0D58: 01 : Drop Anchor Addr : 0D59: 00 : Drop Anchor Push Addr : 0D5A: C4 80 C8 : Memory Op Long PBASE + READ Address = 00C8 Addr : 0D5D: 07 2C 07 : Call Obj.Sub[ ]44 7 Addr : 0D60: C0 : Memory Op Long POP Address READ Addr : 0D61: 37 21 : Constant Mask Y=33 Decrement 00000003 3 Addr : 0D63: 06 2A 0C : Call Obj.Sub 42 12 Addr : 0D66: JMP Label0006 Addr : 0D66: 04 07 : Jmp 0D6F 7 Addr : 0D68: Label0005 128 fd.str(string("COG Running.")) Addr : 0D68: 01 : Drop Anchor Addr : 0D69: PBASE Constant Address of Label0008 Addr : 0D69: 87 87 3B : Memory Op Byte PBASE + ADDRESS Address = 073B Addr : 0D6C: 06 2A 0A : Call Obj.Sub 42 10 Addr : 0D6F: Label0007 Addr : 0D6F: Label0006 132 fd.str(string(" Ok> ")) Addr : 0D6F: 01 : Drop Anchor Addr : 0D70: PBASE Constant Address of Label0009 Addr : 0D70: 87 87 48 : Memory Op Byte PBASE + ADDRESS Address = 0748 Addr : 0D73: 06 2A 0A : Call Obj.Sub 42 10 Addr : 0D76: 32 : Return Addr : 0D77: Label0008 Addr : 0D77: Data : 43 4F 47 20 52 75 6E 6E COG Runn Addr : 0D7F: Data : 69 6E 67 2E 00 ing.. Addr : 0D84: Label0009 Addr : 0D84: Data : 20 4F 6B 3E 20 00 Ok> . |===========================================================================| Spin Block utility with 3 Parameters and 0 Extra Stack Longs. Method 7 pri utility(ch, pcp, pcstart) Local Parameter DBASE:0000 - Result Local Parameter DBASE:0004 - ch Local Parameter DBASE:0008 - pcp Local Parameter DBASE:000C - pcstart |===========================================================================| 149 result~~ Addr : 0D8A: 62 1C : Variable Operation Local Offset - 0 Assign VAR~~ Post-set Addr : 0D8C: Constant Address of Label0002 Addr : 0D8C: 39 07 76 : Constant 2 Bytes - 07 76 - $00000776 1910 150 case ch Addr : 0D8F: 64 : Variable Operation Local Offset - 1 Read 151 $a,$d: 'nada Addr : 0D90: 38 0A : Constant 1 Bytes - 0A - $0000000A 10 Addr : 0D92: Case_Value Label0003 Addr : 0D92: 0D 18 : Value Case Address = 0DAC 24 Addr : 0D94: 38 0D : Constant 1 Bytes - 0D - $0000000D 13 Addr : 0D96: Case_Value Label0003 Addr : 0D96: 0D 14 : Value Case Address = 0DAC 20 153 "N","n": Addr : 0D98: 38 4E : Constant 1 Bytes - 4E - $0000004E 78 Addr : 0D9A: Case_Value Label0004 Addr : 0D9A: 0D 13 : Value Case Address = 0DAF 19 Addr : 0D9C: 38 6E : Constant 1 Bytes - 6E - $0000006E 110 Addr : 0D9E: Case_Value Label0004 Addr : 0D9E: 0D 0F : Value Case Address = 0DAF 15 157 fd.tx(ch) Addr : 0DA0: 01 : Drop Anchor Addr : 0DA1: 64 : Variable Operation Local Offset - 1 Read Addr : 0DA2: 06 2A 09 : Call Obj.Sub 42 9 158 fd.tx(" ") Addr : 0DA5: 01 : Drop Anchor Addr : 0DA6: 37 04 : Constant Mask Y=4 00000020 32 Addr : 0DA8: 06 2A 09 : Call Obj.Sub 42 9 Addr : 0DAB: CaseDone Label0004 Addr : 0DAB: 0C : Casedone Addr : 0DAC: Label0003 152 return 0 Addr : 0DAC: 35 : Constant 1 $00000000 Addr : 0DAD: 33 : Return value Addr : 0DAE: CaseDone Label0003 Addr : 0DAE: 0C : Casedone Addr : 0DAF: Label0004 154 result := ch Addr : 0DAF: 64 : Variable Operation Local Offset - 1 Read Addr : 0DB0: 61 : Variable Operation Local Offset - 0 Write Addr : 0DB1: CaseDone Label0004 Addr : 0DB1: 0C : Casedone Addr : 0DB2: Label0002 Addr : 0DB2: Constant Address of Label0005 Addr : 0DB2: 39 08 50 : Constant 2 Bytes - 08 50 - $00000850 2128 159 case ch Addr : 0DB5: 64 : Variable Operation Local Offset - 1 Read 160 "a": animate Addr : 0DB6: 38 61 : Constant 1 Bytes - 61 - $00000061 97 Addr : 0DB8: Case_Value Label0006 Addr : 0DB8: 0D 80 74 : Value Case Address = 0E2F 116 161 "b": toggleBreak Addr : 0DBB: 38 62 : Constant 1 Bytes - 62 - $00000062 98 Addr : 0DBD: Case_Value Label0007 Addr : 0DBD: 0D 80 73 : Value Case Address = 0E33 115 162 "c": clearBreak Addr : 0DC0: 38 63 : Constant 1 Bytes - 63 - $00000063 99 Addr : 0DC2: Case_Value Label0008 Addr : 0DC2: 0D 80 72 : Value Case Address = 0E37 114 163 "d": dumpCogLines Addr : 0DC5: 38 64 : Constant 1 Bytes - 64 - $00000064 100 Addr : 0DC7: Case_Value Label0009 Addr : 0DC7: 0D 80 71 : Value Case Address = 0E3B 113 164 "D": dumpCog Addr : 0DCA: 38 44 : Constant 1 Bytes - 44 - $00000044 68 Addr : 0DCC: Case_Value Label000A Addr : 0DCC: 0D 80 70 : Value Case Address = 0E3F 112 165 "f": fillHubAddrs Addr : 0DCF: 38 66 : Constant 1 Bytes - 66 - $00000066 102 Addr : 0DD1: Case_Value Label000B Addr : 0DD1: 0D 80 6F : Value Case Address = 0E43 111 166 "h": dumpHubAddrs Addr : 0DD4: 38 68 : Constant 1 Bytes - 68 - $00000068 104 Addr : 0DD6: Case_Value Label000C Addr : 0DD6: 0D 80 6E : Value Case Address = 0E47 110 167 "I","i": result := ch Addr : 0DD9: 38 49 : Constant 1 Bytes - 49 - $00000049 73 Addr : 0DDB: Case_Value Label000D Addr : 0DDB: 0D 80 6D : Value Case Address = 0E4B 109 Addr : 0DDE: 38 69 : Constant 1 Bytes - 69 - $00000069 105 Addr : 0DE0: Case_Value Label000D Addr : 0DE0: 0D 80 68 : Value Case Address = 0E4B 104 168 "G","g": result := ch Addr : 0DE3: 38 47 : Constant 1 Bytes - 47 - $00000047 71 Addr : 0DE5: Case_Value Label000E Addr : 0DE5: 0D 80 66 : Value Case Address = 0E4E 102 Addr : 0DE8: 38 67 : Constant 1 Bytes - 67 - $00000067 103 Addr : 0DEA: Case_Value Label000E Addr : 0DEA: 0D 80 61 : Value Case Address = 0E4E 97 169 "l": listCogLines Addr : 0DED: 38 6C : Constant 1 Bytes - 6C - $0000006C 108 Addr : 0DEF: Case_Value Label000F Addr : 0DEF: 0D 80 5F : Value Case Address = 0E51 95 170 "L": listCog Addr : 0DF2: 38 4C : Constant 1 Bytes - 4C - $0000004C 76 Addr : 0DF4: Case_Value Label0010 Addr : 0DF4: 0D 80 5E : Value Case Address = 0E55 94 171 "N","n": result := ch Addr : 0DF7: 38 4E : Constant 1 Bytes - 4E - $0000004E 78 Addr : 0DF9: Case_Value Label0011 Addr : 0DF9: 0D 80 5D : Value Case Address = 0E59 93 Addr : 0DFC: 38 6E : Constant 1 Bytes - 6E - $0000006E 110 Addr : 0DFE: Case_Value Label0011 Addr : 0DFE: 0D 80 58 : Value Case Address = 0E59 88 172 "P","p": printReg Addr : 0E01: 38 50 : Constant 1 Bytes - 50 - $00000050 80 Addr : 0E03: Case_Value Label0012 Addr : 0E03: 0D 80 56 : Value Case Address = 0E5C 86 Addr : 0E06: 38 70 : Constant 1 Bytes - 70 - $00000070 112 Addr : 0E08: Case_Value Label0012 Addr : 0E08: 0D 80 51 : Value Case Address = 0E5C 81 173 "s": setReg Addr : 0E0B: 38 73 : Constant 1 Bytes - 73 - $00000073 115 Addr : 0E0D: Case_Value Label0013 Addr : 0E0D: 0D 80 50 : Value Case Address = 0E60 80 174 "t": setTask Addr : 0E10: 38 74 : Constant 1 Bytes - 74 - $00000074 116 Addr : 0E12: Case_Value Label0014 Addr : 0E12: 0D 80 4F : Value Case Address = 0E64 79 175 "R": Addr : 0E15: 38 52 : Constant 1 Bytes - 52 - $00000052 82 Addr : 0E17: Case_Value Label0015 Addr : 0E17: 0D 80 4E : Value Case Address = 0E68 78 178 "r": Addr : 0E1A: 38 72 : Constant 1 Bytes - 72 - $00000072 114 Addr : 0E1C: Case_Value Label0016 Addr : 0E1C: 0D 80 61 : Value Case Address = 0E80 97 180 "Z","z": printFlags Addr : 0E1F: 38 5A : Constant 1 Bytes - 5A - $0000005A 90 Addr : 0E21: Case_Value Label0017 Addr : 0E21: 0D 80 60 : Value Case Address = 0E84 96 Addr : 0E24: 38 7A : Constant 1 Bytes - 7A - $0000007A 122 Addr : 0E26: Case_Value Label0017 Addr : 0E26: 0D 80 5B : Value Case Address = 0E84 91 181 "?": showHelp Addr : 0E29: 37 25 : Constant Mask Y=37 Decrement 0000003F 63 Addr : 0E2B: Case_Value Label0018 Addr : 0E2B: 0D 80 5A : Value Case Address = 0E88 90 Addr : 0E2E: CaseDone Label0018 Addr : 0E2E: 0C : Casedone Addr : 0E2F: Label0006 160 "a": animate Addr : 0E2F: 01 : Drop Anchor Addr : 0E30: 05 22 : Call Sub 34 Addr : 0E32: CaseDone Label0006 Addr : 0E32: 0C : Casedone Addr : 0E33: Label0007 161 "b": toggleBreak Addr : 0E33: 01 : Drop Anchor Addr : 0E34: 05 12 : Call Sub 18 Addr : 0E36: CaseDone Label0007 Addr : 0E36: 0C : Casedone Addr : 0E37: Label0008 162 "c": clearBreak Addr : 0E37: 01 : Drop Anchor Addr : 0E38: 05 17 : Call Sub 23 Addr : 0E3A: CaseDone Label0008 Addr : 0E3A: 0C : Casedone Addr : 0E3B: Label0009 163 "d": dumpCogLines Addr : 0E3B: 01 : Drop Anchor Addr : 0E3C: 05 0C : Call Sub 12 Addr : 0E3E: CaseDone Label0009 Addr : 0E3E: 0C : Casedone Addr : 0E3F: Label000A 164 "D": dumpCog Addr : 0E3F: 01 : Drop Anchor Addr : 0E40: 05 0B : Call Sub 11 Addr : 0E42: CaseDone Label000A Addr : 0E42: 0C : Casedone Addr : 0E43: Label000B 165 "f": fillHubAddrs Addr : 0E43: 01 : Drop Anchor Addr : 0E44: 05 0F : Call Sub 15 Addr : 0E46: CaseDone Label000B Addr : 0E46: 0C : Casedone Addr : 0E47: Label000C 166 "h": dumpHubAddrs Addr : 0E47: 01 : Drop Anchor Addr : 0E48: 05 0E : Call Sub 14 Addr : 0E4A: CaseDone Label000C Addr : 0E4A: 0C : Casedone Addr : 0E4B: Label000D 167 "I","i": result := ch Addr : 0E4B: 64 : Variable Operation Local Offset - 1 Read Addr : 0E4C: 61 : Variable Operation Local Offset - 0 Write Addr : 0E4D: CaseDone Label000D Addr : 0E4D: 0C : Casedone Addr : 0E4E: Label000E 168 "G","g": result := ch Addr : 0E4E: 64 : Variable Operation Local Offset - 1 Read Addr : 0E4F: 61 : Variable Operation Local Offset - 0 Write Addr : 0E50: CaseDone Label000E Addr : 0E50: 0C : Casedone Addr : 0E51: Label000F 169 "l": listCogLines Addr : 0E51: 01 : Drop Anchor Addr : 0E52: 05 0A : Call Sub 10 Addr : 0E54: CaseDone Label000F Addr : 0E54: 0C : Casedone Addr : 0E55: Label0010 170 "L": listCog Addr : 0E55: 01 : Drop Anchor Addr : 0E56: 05 09 : Call Sub 9 Addr : 0E58: CaseDone Label0010 Addr : 0E58: 0C : Casedone Addr : 0E59: Label0011 171 "N","n": result := ch Addr : 0E59: 64 : Variable Operation Local Offset - 1 Read Addr : 0E5A: 61 : Variable Operation Local Offset - 0 Write Addr : 0E5B: CaseDone Label0011 Addr : 0E5B: 0C : Casedone Addr : 0E5C: Label0012 172 "P","p": printReg Addr : 0E5C: 01 : Drop Anchor Addr : 0E5D: 05 1F : Call Sub 31 Addr : 0E5F: CaseDone Label0012 Addr : 0E5F: 0C : Casedone Addr : 0E60: Label0013 173 "s": setReg Addr : 0E60: 01 : Drop Anchor Addr : 0E61: 05 10 : Call Sub 16 Addr : 0E63: CaseDone Label0013 Addr : 0E63: 0C : Casedone Addr : 0E64: Label0014 174 "t": setTask Addr : 0E64: 01 : Drop Anchor Addr : 0E65: 05 11 : Call Sub 17 Addr : 0E67: CaseDone Label0014 Addr : 0E67: 0C : Casedone Addr : 0E68: Label0015 176 bd[task].start(pasm[task], parms[task],task) Addr : 0E68: 01 : Drop Anchor Addr : 0E69: C4 80 C8 : Memory Op Long PBASE + READ Address = 00C8 Addr : 0E6C: D8 00 : Memory Op Long VBASE + POP Index READ Address = 0000 Addr : 0E6E: C4 80 C8 : Memory Op Long PBASE + READ Address = 00C8 Addr : 0E71: D8 20 : Memory Op Long VBASE + POP Index READ Address = 0020 Addr : 0E73: C4 80 C8 : Memory Op Long PBASE + READ Address = 00C8 Addr : 0E76: C4 80 C8 : Memory Op Long PBASE + READ Address = 00C8 Addr : 0E79: 07 2C 01 : Call Obj.Sub[ ]44 1 177 long[pcp] := pcstart Addr : 0E7C: 6C : Variable Operation Local Offset - 3 Read Addr : 0E7D: 68 : Variable Operation Local Offset - 2 Read Addr : 0E7E: C1 : Memory Op Long POP Address WRITE Addr : 0E7F: CaseDone Label0015 Addr : 0E7F: 0C : Casedone Addr : 0E80: Label0016 179 long[pcp] := pcstart Addr : 0E80: 6C : Variable Operation Local Offset - 3 Read Addr : 0E81: 68 : Variable Operation Local Offset - 2 Read Addr : 0E82: C1 : Memory Op Long POP Address WRITE Addr : 0E83: CaseDone Label0016 Addr : 0E83: 0C : Casedone Addr : 0E84: Label0017 180 "Z","z": printFlags Addr : 0E84: 01 : Drop Anchor Addr : 0E85: 05 1E : Call Sub 30 Addr : 0E87: CaseDone Label0017 Addr : 0E87: 0C : Casedone Addr : 0E88: Label0018 181 "?": showHelp Addr : 0E88: 01 : Drop Anchor Addr : 0E89: 05 08 : Call Sub 8 Addr : 0E8B: CaseDone Label0018 Addr : 0E8B: 0C : Casedone Addr : 0E8C: Label0005 Addr : 0E8C: 32 : Return |===========================================================================| Spin Block showHelp with 0 Parameters and 2 Extra Stack Longs. Method 8 pri showHelp | p, n Local Parameter DBASE:0000 - Result Local Variable DBASE:0004 - p Local Variable DBASE:0008 - n |===========================================================================| 212 repeat p from @help to @helpend Addr : 0E8D: 87 80 D0 : Memory Op Byte PBASE + ADDRESS Address = 00D0 Addr : 0E90: 65 : Variable Operation Local Offset - 1 Write Addr : 0E91: Label0002 213 ifnot byte[p] Addr : 0E91: 64 : Variable Operation Local Offset - 1 Read Addr : 0E92: 80 : Memory Op Byte POP Address READ Addr : 0E93: JNZ Label0005 Addr : 0E93: 0B 08 : jnz Address = 0E9D 8 214 fd.tx(EOL) Addr : 0E95: 01 : Drop Anchor Addr : 0E96: 38 0A : Constant 1 Bytes - 0A - $0000000A 10 Addr : 0E98: 06 2A 09 : Call Obj.Sub 42 9 Addr : 0E9B: JMP Label0006 Addr : 0E9B: 04 06 : Jmp 0EA3 6 Addr : 0E9D: Label0005 216 fd.tx(byte[p]) Addr : 0E9D: 01 : Drop Anchor Addr : 0E9E: 64 : Variable Operation Local Offset - 1 Read Addr : 0E9F: 80 : Memory Op Byte POP Address READ Addr : 0EA0: 06 2A 09 : Call Obj.Sub 42 9 Addr : 0EA3: Label0007 Addr : 0EA3: Label0006 Addr : 0EA3: Label0003 212 repeat p from @help to @helpend Addr : 0EA3: 87 80 D0 : Memory Op Byte PBASE + ADDRESS Address = 00D0 Addr : 0EA6: 87 84 4E : Memory Op Byte PBASE + ADDRESS Address = 044E Addr : 0EA9: Repeat p Step Label0002 Addr : 0EA9: 66 02 65 : Variable Operation Local Offset - 1 Assign Repeat-Var loop Address= 0E91 -27 Addr : 0EAC: Label0004 Addr : 0EAC: 32 : Return |===========================================================================| Spin Block listCog with 0 Parameters and 5 Extra Stack Longs. Method 9 pri listCog | x, n, j, p[2] Local Parameter DBASE:0000 - Result Local Variable DBASE:0004 - x Local Variable DBASE:0008 - n Local Variable DBASE:000C - j Local Variable DBASE:0010 - p |===========================================================================| 219 repeat n from 0 to $1ff Addr : 0EAD: 35 : Constant 1 $00000000 Addr : 0EAE: 69 : Variable Operation Local Offset - 2 Write Addr : 0EAF: Label0002 220 if n < 0 Addr : 0EAF: 68 : Variable Operation Local Offset - 2 Read Addr : 0EB0: 35 : Constant 1 $00000000 Addr : 0EB1: F9 : Math Op < Addr : 0EB2: JZ Label0005 Addr : 0EB2: 0A 02 : jz Address = 0EB6 2 221 next Addr : 0EB4: JMP Label0003 Addr : 0EB4: 04 10 : Jmp 0EC6 16 Addr : 0EB6: Label0005 Addr : 0EB6: Label0006 222 if n > $1ff Addr : 0EB6: 68 : Variable Operation Local Offset - 2 Read Addr : 0EB7: 37 28 : Constant Mask Y=40 Decrement 000001FF 511 Addr : 0EB9: FA : Math Op > Addr : 0EBA: JZ Label0007 Addr : 0EBA: 0A 02 : jz Address = 0EBE 2 223 quit Addr : 0EBC: JMP Label0004 Addr : 0EBC: 04 0E : Jmp 0ECC 14 Addr : 0EBE: Label0007 Addr : 0EBE: Label0008 224 p[0] := n Addr : 0EBE: 68 : Variable Operation Local Offset - 2 Read Addr : 0EBF: 35 : Constant 1 $00000000 Addr : 0EC0: DD 10 : Memory Op Long DBASE + POP Index WRITE Address = 0010 225 showInst(@p) Addr : 0EC2: 01 : Drop Anchor Addr : 0EC3: 73 : Variable Operation Local Offset - 4 Address Addr : 0EC4: 05 27 : Call Sub 39 Addr : 0EC6: Label0003 219 repeat n from 0 to $1ff Addr : 0EC6: 35 : Constant 1 $00000000 Addr : 0EC7: 37 28 : Constant Mask Y=40 Decrement 000001FF 511 Addr : 0EC9: Repeat n Step Label0002 Addr : 0EC9: 6A 02 63 : Variable Operation Local Offset - 2 Assign Repeat-Var loop Address= 0EAF -29 Addr : 0ECC: Label0004 Addr : 0ECC: 32 : Return |===========================================================================| Spin Block listCogLines with 0 Parameters and 5 Extra Stack Longs. Method 10 pri listCogLines | x, n, j, p[2] Local Parameter DBASE:0000 - Result Local Variable DBASE:0004 - x Local Variable DBASE:0008 - n Local Variable DBASE:000C - j Local Variable DBASE:0010 - p |===========================================================================| 231 x := gethex(0) Addr : 0ECD: 00 : Drop Anchor Push Addr : 0ECE: 35 : Constant 1 $00000000 Addr : 0ECF: 05 18 : Call Sub 24 Addr : 0ED1: 65 : Variable Operation Local Offset - 1 Write 232 if x Addr : 0ED2: 64 : Variable Operation Local Offset - 1 Read Addr : 0ED3: JZ Label0002 Addr : 0ED3: 0A 07 : jz Address = 0EDC 7 233 j := gethex(0) Addr : 0ED5: 00 : Drop Anchor Push Addr : 0ED6: 35 : Constant 1 $00000000 Addr : 0ED7: 05 18 : Call Sub 24 Addr : 0ED9: 6D : Variable Operation Local Offset - 3 Write Addr : 0EDA: JMP Label0003 Addr : 0EDA: 04 09 : Jmp 0EE5 9 Addr : 0EDC: Label0002 235 x := listpc[task] ' sb part of bd Addr : 0EDC: C4 80 C8 : Memory Op Long PBASE + READ Address = 00C8 Addr : 0EDF: D8 40 : Memory Op Long VBASE + POP Index READ Address = 0040 Addr : 0EE1: 65 : Variable Operation Local Offset - 1 Write 236 j := $10 Addr : 0EE2: 37 03 : Constant Mask Y=3 00000010 16 Addr : 0EE4: 6D : Variable Operation Local Offset - 3 Write Addr : 0EE5: Label0004 Addr : 0EE5: Label0003 237 repeat n from x to x+j-1 Addr : 0EE5: 64 : Variable Operation Local Offset - 1 Read Addr : 0EE6: 69 : Variable Operation Local Offset - 2 Write Addr : 0EE7: Label0005 238 if n < 0 Addr : 0EE7: 68 : Variable Operation Local Offset - 2 Read Addr : 0EE8: 35 : Constant 1 $00000000 Addr : 0EE9: F9 : Math Op < Addr : 0EEA: JZ Label0008 Addr : 0EEA: 0A 02 : jz Address = 0EEE 2 239 next Addr : 0EEC: JMP Label0006 Addr : 0EEC: 04 10 : Jmp 0EFE 16 Addr : 0EEE: Label0008 Addr : 0EEE: Label0009 240 if n > $1ff Addr : 0EEE: 68 : Variable Operation Local Offset - 2 Read Addr : 0EEF: 37 28 : Constant Mask Y=40 Decrement 000001FF 511 Addr : 0EF1: FA : Math Op > Addr : 0EF2: JZ Label000A Addr : 0EF2: 0A 02 : jz Address = 0EF6 2 241 quit Addr : 0EF4: JMP Label0007 Addr : 0EF4: 04 11 : Jmp 0F07 17 Addr : 0EF6: Label000A Addr : 0EF6: Label000B 242 p[0] := n Addr : 0EF6: 68 : Variable Operation Local Offset - 2 Read Addr : 0EF7: 35 : Constant 1 $00000000 Addr : 0EF8: DD 10 : Memory Op Long DBASE + POP Index WRITE Address = 0010 243 showInst(@p) Addr : 0EFA: 01 : Drop Anchor Addr : 0EFB: 73 : Variable Operation Local Offset - 4 Address Addr : 0EFC: 05 27 : Call Sub 39 Addr : 0EFE: Label0006 237 repeat n from x to x+j-1 Addr : 0EFE: 64 : Variable Operation Local Offset - 1 Read Addr : 0EFF: 64 : Variable Operation Local Offset - 1 Read Addr : 0F00: 6C : Variable Operation Local Offset - 3 Read Addr : 0F01: EC : Math Op + Addr : 0F02: 36 : Constant 2 $00000001 Addr : 0F03: ED : Math Op - Addr : 0F04: Repeat n Step Label0005 Addr : 0F04: 6A 02 60 : Variable Operation Local Offset - 2 Assign Repeat-Var loop Address= 0EE7 -32 Addr : 0F07: Label0007 245 listpc[task] += j Addr : 0F07: 6C : Variable Operation Local Offset - 3 Read Addr : 0F08: C4 80 C8 : Memory Op Long PBASE + READ Address = 00C8 Addr : 0F0B: DA 40 4C : Memory Op Long VBASE + POP Index ASSIGN Address = 0040 WordMathop + Addr : 0F0E: 32 : Return |===========================================================================| Spin Block dumpCog with 0 Parameters and 1 Extra Stack Longs. Method 11 pri dumpCog | n Local Parameter DBASE:0000 - Result Local Variable DBASE:0004 - n |===========================================================================| 248 repeat n from 0 to $1ff Addr : 0F0F: 35 : Constant 1 $00000000 Addr : 0F10: 65 : Variable Operation Local Offset - 1 Write Addr : 0F11: Label0002 249 ifnot n // 8 and n Addr : 0F11: 64 : Variable Operation Local Offset - 1 Read Addr : 0F12: 37 02 : Constant Mask Y=2 00000008 8 Addr : 0F14: F7 : Math Op // Addr : 0F15: 64 : Variable Operation Local Offset - 1 Read Addr : 0F16: F0 : Math Op AND Addr : 0F17: JNZ Label0005 Addr : 0F17: 0B 13 : jnz Address = 0F2C 19 250 fd.tx(EOL) Addr : 0F19: 01 : Drop Anchor Addr : 0F1A: 38 0A : Constant 1 Bytes - 0A - $0000000A 10 Addr : 0F1C: 06 2A 09 : Call Obj.Sub 42 9 251 fd.hex(n,3) Addr : 0F1F: 01 : Drop Anchor Addr : 0F20: 64 : Variable Operation Local Offset - 1 Read Addr : 0F21: 37 21 : Constant Mask Y=33 Decrement 00000003 3 Addr : 0F23: 06 2A 0C : Call Obj.Sub 42 12 252 fd.tx(":") Addr : 0F26: 01 : Drop Anchor Addr : 0F27: 38 3A : Constant 1 Bytes - 3A - $0000003A 58 Addr : 0F29: 06 2A 09 : Call Obj.Sub 42 9 Addr : 0F2C: Label0005 Addr : 0F2C: Label0006 253 fd.tx(" ") Addr : 0F2C: 01 : Drop Anchor Addr : 0F2D: 37 04 : Constant Mask Y=4 00000020 32 Addr : 0F2F: 06 2A 09 : Call Obj.Sub 42 9 254 fd.hex(bd[task].peek(n), 8) Addr : 0F32: 01 : Drop Anchor Addr : 0F33: 00 : Drop Anchor Push Addr : 0F34: 64 : Variable Operation Local Offset - 1 Read Addr : 0F35: C4 80 C8 : Memory Op Long PBASE + READ Address = 00C8 Addr : 0F38: 07 2C 0A : Call Obj.Sub[ ]44 10 Addr : 0F3B: 37 02 : Constant Mask Y=2 00000008 8 Addr : 0F3D: 06 2A 0C : Call Obj.Sub 42 12 Addr : 0F40: Label0003 248 repeat n from 0 to $1ff Addr : 0F40: 35 : Constant 1 $00000000 Addr : 0F41: 37 28 : Constant Mask Y=40 Decrement 000001FF 511 Addr : 0F43: Repeat n Step Label0002 Addr : 0F43: 66 02 4B : Variable Operation Local Offset - 1 Assign Repeat-Var loop Address= 0F11 -53 Addr : 0F46: Label0004 Addr : 0F46: 32 : Return |===========================================================================| Spin Block dumpCogLines with 0 Parameters and 5 Extra Stack Longs. Method 12 pri dumpCogLines | x, n, j, p[2] Local Parameter DBASE:0000 - Result Local Variable DBASE:0004 - x Local Variable DBASE:0008 - n Local Variable DBASE:000C - j Local Variable DBASE:0010 - p |===========================================================================| 257 x := gethex(0) Addr : 0F47: 00 : Drop Anchor Push Addr : 0F48: 35 : Constant 1 $00000000 Addr : 0F49: 05 18 : Call Sub 24 Addr : 0F4B: 65 : Variable Operation Local Offset - 1 Write 258 j := gethex(0) Addr : 0F4C: 00 : Drop Anchor Push Addr : 0F4D: 35 : Constant 1 $00000000 Addr : 0F4E: 05 18 : Call Sub 24 Addr : 0F50: 6D : Variable Operation Local Offset - 3 Write 259 repeat n from x to x+j-1 Addr : 0F51: 64 : Variable Operation Local Offset - 1 Read Addr : 0F52: 69 : Variable Operation Local Offset - 2 Write Addr : 0F53: Label0002 260 if n < 0 Addr : 0F53: 68 : Variable Operation Local Offset - 2 Read Addr : 0F54: 35 : Constant 1 $00000000 Addr : 0F55: F9 : Math Op < Addr : 0F56: JZ Label0005 Addr : 0F56: 0A 02 : jz Address = 0F5A 2 261 next Addr : 0F58: JMP Label0003 Addr : 0F58: 04 37 : Jmp 0F91 55 Addr : 0F5A: Label0005 Addr : 0F5A: Label0006 262 if n > $1ff Addr : 0F5A: 68 : Variable Operation Local Offset - 2 Read Addr : 0F5B: 37 28 : Constant Mask Y=40 Decrement 000001FF 511 Addr : 0F5D: FA : Math Op > Addr : 0F5E: JZ Label0007 Addr : 0F5E: 0A 02 : jz Address = 0F62 2 263 quit Addr : 0F60: JMP Label0004 Addr : 0F60: 04 39 : Jmp 0F9B 57 Addr : 0F62: Label0007 Addr : 0F62: Label0008 264 ifnot n // 8 and n Addr : 0F62: 68 : Variable Operation Local Offset - 2 Read Addr : 0F63: 37 02 : Constant Mask Y=2 00000008 8 Addr : 0F65: F7 : Math Op // Addr : 0F66: 68 : Variable Operation Local Offset - 2 Read Addr : 0F67: F0 : Math Op AND Addr : 0F68: JNZ Label0009 Addr : 0F68: 0B 13 : jnz Address = 0F7D 19 265 fd.tx(EOL) Addr : 0F6A: 01 : Drop Anchor Addr : 0F6B: 38 0A : Constant 1 Bytes - 0A - $0000000A 10 Addr : 0F6D: 06 2A 09 : Call Obj.Sub 42 9 266 fd.hex(n,3) Addr : 0F70: 01 : Drop Anchor Addr : 0F71: 68 : Variable Operation Local Offset - 2 Read Addr : 0F72: 37 21 : Constant Mask Y=33 Decrement 00000003 3 Addr : 0F74: 06 2A 0C : Call Obj.Sub 42 12 267 fd.tx(":") Addr : 0F77: 01 : Drop Anchor Addr : 0F78: 38 3A : Constant 1 Bytes - 3A - $0000003A 58 Addr : 0F7A: 06 2A 09 : Call Obj.Sub 42 9 Addr : 0F7D: Label0009 Addr : 0F7D: Label000A 268 fd.tx(" ") Addr : 0F7D: 01 : Drop Anchor Addr : 0F7E: 37 04 : Constant Mask Y=4 00000020 32 Addr : 0F80: 06 2A 09 : Call Obj.Sub 42 9 269 fd.hex(bd[task].peek(n), 8) Addr : 0F83: 01 : Drop Anchor Addr : 0F84: 00 : Drop Anchor Push Addr : 0F85: 68 : Variable Operation Local Offset - 2 Read Addr : 0F86: C4 80 C8 : Memory Op Long PBASE + READ Address = 00C8 Addr : 0F89: 07 2C 0A : Call Obj.Sub[ ]44 10 Addr : 0F8C: 37 02 : Constant Mask Y=2 00000008 8 Addr : 0F8E: 06 2A 0C : Call Obj.Sub 42 12 Addr : 0F91: Label0003 259 repeat n from x to x+j-1 Addr : 0F91: 64 : Variable Operation Local Offset - 1 Read Addr : 0F92: 64 : Variable Operation Local Offset - 1 Read Addr : 0F93: 6C : Variable Operation Local Offset - 3 Read Addr : 0F94: EC : Math Op + Addr : 0F95: 36 : Constant 2 $00000001 Addr : 0F96: ED : Math Op - Addr : 0F97: Repeat n Step Label0002 Addr : 0F97: 6A 02 FF B8 : Variable Operation Local Offset - 2 Assign Repeat-Var loop Address= 0F53 -72 Addr : 0F9B: Label0004 Addr : 0F9B: 32 : Return |===========================================================================| Spin Block dumpASCII with 1 Parameters and 1 Extra Stack Longs. Method 13 pri dumpASCII(p) | i Local Parameter DBASE:0000 - Result Local Parameter DBASE:0004 - p Local Variable DBASE:0008 - i |===========================================================================| 273 fd.tx(" ") Addr : 0F9C: 01 : Drop Anchor Addr : 0F9D: 37 04 : Constant Mask Y=4 00000020 32 Addr : 0F9F: 06 2A 09 : Call Obj.Sub 42 9 274 fd.tx(" ") Addr : 0FA2: 01 : Drop Anchor Addr : 0FA3: 37 04 : Constant Mask Y=4 00000020 32 Addr : 0FA5: 06 2A 09 : Call Obj.Sub 42 9 275 repeat i from 0 to 15 Addr : 0FA8: 35 : Constant 1 $00000000 Addr : 0FA9: 69 : Variable Operation Local Offset - 2 Write Addr : 0FAA: Label0002 276 if byte[p][i] > $1f and byte[p][i] < $7f Addr : 0FAA: 64 : Variable Operation Local Offset - 1 Read Addr : 0FAB: 68 : Variable Operation Local Offset - 2 Read Addr : 0FAC: 90 : Memory Op Byte POP Address POP Index READ Addr : 0FAD: 37 24 : Constant Mask Y=36 Decrement 0000001F 31 Addr : 0FAF: FA : Math Op > Addr : 0FB0: 64 : Variable Operation Local Offset - 1 Read Addr : 0FB1: 68 : Variable Operation Local Offset - 2 Read Addr : 0FB2: 90 : Memory Op Byte POP Address POP Index READ Addr : 0FB3: 37 26 : Constant Mask Y=38 Decrement 0000007F 127 Addr : 0FB5: F9 : Math Op < Addr : 0FB6: F0 : Math Op AND Addr : 0FB7: JZ Label0005 Addr : 0FB7: 0A 09 : jz Address = 0FC2 9 277 fd.tx(byte[p][i]) Addr : 0FB9: 01 : Drop Anchor Addr : 0FBA: 64 : Variable Operation Local Offset - 1 Read Addr : 0FBB: 68 : Variable Operation Local Offset - 2 Read Addr : 0FBC: 90 : Memory Op Byte POP Address POP Index READ Addr : 0FBD: 06 2A 09 : Call Obj.Sub 42 9 Addr : 0FC0: JMP Label0006 Addr : 0FC0: 04 06 : Jmp 0FC8 6 Addr : 0FC2: Label0005 279 fd.tx(".") Addr : 0FC2: 01 : Drop Anchor Addr : 0FC3: 38 2E : Constant 1 Bytes - 2E - $0000002E 46 Addr : 0FC5: 06 2A 09 : Call Obj.Sub 42 9 Addr : 0FC8: Label0007 Addr : 0FC8: Label0006 Addr : 0FC8: Label0003 275 repeat i from 0 to 15 Addr : 0FC8: 35 : Constant 1 $00000000 Addr : 0FC9: 37 23 : Constant Mask Y=35 Decrement 0000000F 15 Addr : 0FCB: Repeat i Step Label0002 Addr : 0FCB: 6A 02 5C : Variable Operation Local Offset - 2 Assign Repeat-Var loop Address= 0FAA -36 Addr : 0FCE: Label0004 Addr : 0FCE: 32 : Return |===========================================================================| Spin Block dumpHubAddrs with 0 Parameters and 11 Extra Stack Longs. Method 14 pri dumpHubAddrs | n, x, i, j, t, c, w, p[4] Local Parameter DBASE:0000 - Result Local Variable DBASE:0004 - n Local Variable DBASE:0008 - x Local Variable DBASE:000C - i Local Variable DBASE:0010 - j Local Variable DBASE:0014 - t Local Variable DBASE:0018 - c Local Variable DBASE:001C - w Local Variable DBASE:0020 - p |===========================================================================| 283 repeat ' repeat while next letter not bwl Addr : 0FCF: Label0002 284 t := fd.rxcheck Addr : 0FCF: 00 : Drop Anchor Push Addr : 0FD0: 06 2A 05 : Call Obj.Sub 42 5 Addr : 0FD3: 75 : Variable Operation Local Offset - 5 Write Addr : 0FD4: Constant Address of Label0005 Addr : 0FD4: 39 09 CD : Constant 2 Bytes - 09 CD - $000009CD 2509 285 case t Addr : 0FD7: 74 : Variable Operation Local Offset - 5 Read 286 "b": c := 16 ' byte Addr : 0FD8: 38 62 : Constant 1 Bytes - 62 - $00000062 98 Addr : 0FDA: Case_Value Label0006 Addr : 0FDA: 0D 09 : Value Case Address = 0FE5 9 289 "w": c := 8 ' word Addr : 0FDC: 38 77 : Constant 1 Bytes - 77 - $00000077 119 Addr : 0FDE: Case_Value Label0007 Addr : 0FDE: 0D 11 : Value Case Address = 0FF1 17 292 "l": c := 8 ' long Addr : 0FE0: 38 6C : Constant 1 Bytes - 6C - $0000006C 108 Addr : 0FE2: Case_Value Label0008 Addr : 0FE2: 0D 19 : Value Case Address = 0FFD 25 Addr : 0FE4: CaseDone Label0008 Addr : 0FE4: 0C : Casedone Addr : 0FE5: Label0006 286 "b": c := 16 ' byte Addr : 0FE5: 37 03 : Constant Mask Y=3 00000010 16 Addr : 0FE7: 79 : Variable Operation Local Offset - 6 Write 287 w := 2 Addr : 0FE8: 37 00 : Constant Mask Y=0 00000002 2 Addr : 0FEA: 7D : Variable Operation Local Offset - 7 Write 288 quit Addr : 0FEB: 37 02 : Constant Mask Y=2 00000008 8 Addr : 0FED: 14 : Pop Addr : 0FEE: JMP Label0004 Addr : 0FEE: 04 1B : Jmp 100B 27 Addr : 0FF0: CaseDone Label0006 Addr : 0FF0: 0C : Casedone Addr : 0FF1: Label0007 289 "w": c := 8 ' word Addr : 0FF1: 37 02 : Constant Mask Y=2 00000008 8 Addr : 0FF3: 79 : Variable Operation Local Offset - 6 Write 290 w := 4 Addr : 0FF4: 37 01 : Constant Mask Y=1 00000004 4 Addr : 0FF6: 7D : Variable Operation Local Offset - 7 Write 291 quit Addr : 0FF7: 37 02 : Constant Mask Y=2 00000008 8 Addr : 0FF9: 14 : Pop Addr : 0FFA: JMP Label0004 Addr : 0FFA: 04 0F : Jmp 100B 15 Addr : 0FFC: CaseDone Label0007 Addr : 0FFC: 0C : Casedone Addr : 0FFD: Label0008 292 "l": c := 8 ' long Addr : 0FFD: 37 02 : Constant Mask Y=2 00000008 8 Addr : 0FFF: 79 : Variable Operation Local Offset - 6 Write 293 w := 8 Addr : 1000: 37 02 : Constant Mask Y=2 00000008 8 Addr : 1002: 7D : Variable Operation Local Offset - 7 Write 294 quit Addr : 1003: 37 02 : Constant Mask Y=2 00000008 8 Addr : 1005: 14 : Pop Addr : 1006: JMP Label0004 Addr : 1006: 04 03 : Jmp 100B 3 Addr : 1008: CaseDone Label0008 Addr : 1008: 0C : Casedone Addr : 1009: Label0005 Addr : 1009: Label0003 Addr : 1009: JMP Label0002 Addr : 1009: 04 44 : Jmp 0FCF -60 Addr : 100B: Label0004 296 fd.tx(t) Addr : 100B: 01 : Drop Anchor Addr : 100C: 74 : Variable Operation Local Offset - 5 Read Addr : 100D: 06 2A 09 : Call Obj.Sub 42 9 297 fd.tx(" ") Addr : 1010: 01 : Drop Anchor Addr : 1011: 37 04 : Constant Mask Y=4 00000020 32 Addr : 1013: 06 2A 09 : Call Obj.Sub 42 9 298 x := gethex(0) ' address Addr : 1016: 00 : Drop Anchor Push Addr : 1017: 35 : Constant 1 $00000000 Addr : 1018: 05 18 : Call Sub 24 Addr : 101A: 69 : Variable Operation Local Offset - 2 Write 299 j := gethex(0) * (w>>1) ' length Addr : 101B: 00 : Drop Anchor Push Addr : 101C: 35 : Constant 1 $00000000 Addr : 101D: 05 18 : Call Sub 24 Addr : 101F: 7C : Variable Operation Local Offset - 7 Read Addr : 1020: 36 : Constant 2 $00000001 Addr : 1021: E2 : Math Op >> Addr : 1022: F4 : Math Op * Addr : 1023: 71 : Variable Operation Local Offset - 4 Write 301 i := 0 Addr : 1024: 35 : Constant 1 $00000000 Addr : 1025: 6D : Variable Operation Local Offset - 3 Write 302 repeat n from x to x+j-1 step (w>>1) Addr : 1026: 68 : Variable Operation Local Offset - 2 Read Addr : 1027: 65 : Variable Operation Local Offset - 1 Write Addr : 1028: Label0009 304 if n < 0 Addr : 1028: 64 : Variable Operation Local Offset - 1 Read Addr : 1029: 35 : Constant 1 $00000000 Addr : 102A: F9 : Math Op < Addr : 102B: JZ Label000C Addr : 102B: 0A 03 : jz Address = 1030 3 305 next Addr : 102D: JMP Label000A Addr : 102D: 04 80 67 : Jmp 1097 103 Addr : 1030: Label000C Addr : 1030: Label000D 306 if n > $ffff Addr : 1030: 64 : Variable Operation Local Offset - 1 Read Addr : 1031: 37 2F : Constant Mask Y=47 Decrement 0000FFFF 65535 Addr : 1033: FA : Math Op > Addr : 1034: JZ Label000E Addr : 1034: 0A 03 : jz Address = 1039 3 307 quit Addr : 1036: JMP Label000B Addr : 1036: 04 80 6B : Jmp 10A4 107 Addr : 1039: Label000E Addr : 1039: Label000F 309 ifnot i // c ' make nice columns Addr : 1039: 6C : Variable Operation Local Offset - 3 Read Addr : 103A: 78 : Variable Operation Local Offset - 6 Read Addr : 103B: F7 : Math Op // Addr : 103C: JNZ Label0010 Addr : 103C: 0B 20 : jnz Address = 105E 32 310 if i and w == 2 Addr : 103E: 6C : Variable Operation Local Offset - 3 Read Addr : 103F: 7C : Variable Operation Local Offset - 7 Read Addr : 1040: 37 00 : Constant Mask Y=0 00000002 2 Addr : 1042: FC : Math Op == Addr : 1043: F0 : Math Op AND Addr : 1044: JZ Label0012 Addr : 1044: 0A 05 : jz Address = 104B 5 311 dumpASCII(@p) Addr : 1046: 01 : Drop Anchor Addr : 1047: CF 20 : Memory Op Long DBASE + ADDRESS Address = 0020 Addr : 1049: 05 0D : Call Sub 13 Addr : 104B: Label0012 Addr : 104B: Label0013 313 fd.tx(EOL) Addr : 104B: 01 : Drop Anchor Addr : 104C: 38 0A : Constant 1 Bytes - 0A - $0000000A 10 Addr : 104E: 06 2A 09 : Call Obj.Sub 42 9 314 fd.hex(n,4) Addr : 1051: 01 : Drop Anchor Addr : 1052: 64 : Variable Operation Local Offset - 1 Read Addr : 1053: 37 01 : Constant Mask Y=1 00000004 4 Addr : 1055: 06 2A 0C : Call Obj.Sub 42 12 315 fd.tx(":") Addr : 1058: 01 : Drop Anchor Addr : 1059: 38 3A : Constant 1 Bytes - 3A - $0000003A 58 Addr : 105B: 06 2A 09 : Call Obj.Sub 42 9 Addr : 105E: Label0010 Addr : 105E: Label0011 317 fd.tx(" ") Addr : 105E: 01 : Drop Anchor Addr : 105F: 37 04 : Constant Mask Y=4 00000020 32 Addr : 1061: 06 2A 09 : Call Obj.Sub 42 9 Addr : 1064: Constant Address of Label0014 Addr : 1064: 39 0A 59 : Constant 2 Bytes - 0A 59 - $00000A59 2649 319 case w ' dump size we want Addr : 1067: 7C : Variable Operation Local Offset - 7 Read 320 2: fd.hex(byte[n], w) Addr : 1068: 37 00 : Constant Mask Y=0 00000002 2 Addr : 106A: Case_Value Label0015 Addr : 106A: 0D 09 : Value Case Address = 1075 9 322 4: fd.hex(word[n], w) Addr : 106C: 37 01 : Constant Mask Y=1 00000004 4 Addr : 106E: Case_Value Label0016 Addr : 106E: 0D 15 : Value Case Address = 1085 21 323 8: fd.hex(long[n], w) Addr : 1070: 37 02 : Constant Mask Y=2 00000008 8 Addr : 1072: Case_Value Label0017 Addr : 1072: 0D 19 : Value Case Address = 108D 25 Addr : 1074: CaseDone Label0017 Addr : 1074: 0C : Casedone Addr : 1075: Label0015 320 2: fd.hex(byte[n], w) Addr : 1075: 01 : Drop Anchor Addr : 1076: 64 : Variable Operation Local Offset - 1 Read Addr : 1077: 80 : Memory Op Byte POP Address READ Addr : 1078: 7C : Variable Operation Local Offset - 7 Read Addr : 1079: 06 2A 0C : Call Obj.Sub 42 12 321 byte[@p][i//c] := byte[n] Addr : 107C: 64 : Variable Operation Local Offset - 1 Read Addr : 107D: 80 : Memory Op Byte POP Address READ Addr : 107E: CF 20 : Memory Op Long DBASE + ADDRESS Address = 0020 Addr : 1080: 6C : Variable Operation Local Offset - 3 Read Addr : 1081: 78 : Variable Operation Local Offset - 6 Read Addr : 1082: F7 : Math Op // Addr : 1083: 91 : Memory Op Byte POP Address POP Index WRITE Addr : 1084: CaseDone Label0015 Addr : 1084: 0C : Casedone Addr : 1085: Label0016 322 4: fd.hex(word[n], w) Addr : 1085: 01 : Drop Anchor Addr : 1086: 64 : Variable Operation Local Offset - 1 Read Addr : 1087: A0 : Memory Op Word POP Address READ Addr : 1088: 7C : Variable Operation Local Offset - 7 Read Addr : 1089: 06 2A 0C : Call Obj.Sub 42 12 Addr : 108C: CaseDone Label0016 Addr : 108C: 0C : Casedone Addr : 108D: Label0017 323 8: fd.hex(long[n], w) Addr : 108D: 01 : Drop Anchor Addr : 108E: 64 : Variable Operation Local Offset - 1 Read Addr : 108F: C0 : Memory Op Long POP Address READ Addr : 1090: 7C : Variable Operation Local Offset - 7 Read Addr : 1091: 06 2A 0C : Call Obj.Sub 42 12 Addr : 1094: CaseDone Label0017 Addr : 1094: 0C : Casedone Addr : 1095: Label0014 325 i++ Addr : 1095: 6E 2E : Variable Operation Local Offset - 3 Assign VAR++ post inc Long Addr : 1097: Label000A 302 repeat n from x to x+j-1 step (w>>1) Addr : 1097: 7C : Variable Operation Local Offset - 7 Read Addr : 1098: 36 : Constant 2 $00000001 Addr : 1099: E2 : Math Op >> Addr : 109A: 68 : Variable Operation Local Offset - 2 Read Addr : 109B: 68 : Variable Operation Local Offset - 2 Read Addr : 109C: 70 : Variable Operation Local Offset - 4 Read Addr : 109D: EC : Math Op + Addr : 109E: 36 : Constant 2 $00000001 Addr : 109F: ED : Math Op - Addr : 10A0: Repeat n Step Label0009 Addr : 10A0: 66 06 FF 84 : Variable Operation Local Offset - 1 Assign Repeat-Var loop (pop step) Address= 1028 -124 Addr : 10A4: Label000B 327 if w == 2 Addr : 10A4: 7C : Variable Operation Local Offset - 7 Read Addr : 10A5: 37 00 : Constant Mask Y=0 00000002 2 Addr : 10A7: FC : Math Op == Addr : 10A8: JZ Label0018 Addr : 10A8: 0A 05 : jz Address = 10AF 5 328 dumpASCII(@p) Addr : 10AA: 01 : Drop Anchor Addr : 10AB: CF 20 : Memory Op Long DBASE + ADDRESS Address = 0020 Addr : 10AD: 05 0D : Call Sub 13 Addr : 10AF: Label0018 Addr : 10AF: Label0019 Addr : 10AF: 32 : Return |===========================================================================| Spin Block fillHubAddrs with 0 Parameters and 12 Extra Stack Longs. Method 15 pri fillHubAddrs | n, x, i, j, t, c, w, v, p[4] Local Parameter DBASE:0000 - Result Local Variable DBASE:0004 - n Local Variable DBASE:0008 - x Local Variable DBASE:000C - i Local Variable DBASE:0010 - j Local Variable DBASE:0014 - t Local Variable DBASE:0018 - c Local Variable DBASE:001C - w Local Variable DBASE:0020 - v Local Variable DBASE:0024 - p |===========================================================================| 332 repeat ' repeat while next letter not bwl Addr : 10B0: Label0002 333 t := fd.rxcheck Addr : 10B0: 00 : Drop Anchor Push Addr : 10B1: 06 2A 05 : Call Obj.Sub 42 5 Addr : 10B4: 75 : Variable Operation Local Offset - 5 Write Addr : 10B5: Constant Address of Label0005 Addr : 10B5: 39 0A AE : Constant 2 Bytes - 0A AE - $00000AAE 2734 334 case t Addr : 10B8: 74 : Variable Operation Local Offset - 5 Read 335 "b": c := 16 ' byte Addr : 10B9: 38 62 : Constant 1 Bytes - 62 - $00000062 98 Addr : 10BB: Case_Value Label0006 Addr : 10BB: 0D 09 : Value Case Address = 10C6 9 338 "w": c := 8 ' word Addr : 10BD: 38 77 : Constant 1 Bytes - 77 - $00000077 119 Addr : 10BF: Case_Value Label0007 Addr : 10BF: 0D 11 : Value Case Address = 10D2 17 341 "l": c := 8 ' long Addr : 10C1: 38 6C : Constant 1 Bytes - 6C - $0000006C 108 Addr : 10C3: Case_Value Label0008 Addr : 10C3: 0D 19 : Value Case Address = 10DE 25 Addr : 10C5: CaseDone Label0008 Addr : 10C5: 0C : Casedone Addr : 10C6: Label0006 335 "b": c := 16 ' byte Addr : 10C6: 37 03 : Constant Mask Y=3 00000010 16 Addr : 10C8: 79 : Variable Operation Local Offset - 6 Write 336 w := 2 Addr : 10C9: 37 00 : Constant Mask Y=0 00000002 2 Addr : 10CB: 7D : Variable Operation Local Offset - 7 Write 337 quit Addr : 10CC: 37 02 : Constant Mask Y=2 00000008 8 Addr : 10CE: 14 : Pop Addr : 10CF: JMP Label0004 Addr : 10CF: 04 1B : Jmp 10EC 27 Addr : 10D1: CaseDone Label0006 Addr : 10D1: 0C : Casedone Addr : 10D2: Label0007 338 "w": c := 8 ' word Addr : 10D2: 37 02 : Constant Mask Y=2 00000008 8 Addr : 10D4: 79 : Variable Operation Local Offset - 6 Write 339 w := 4 Addr : 10D5: 37 01 : Constant Mask Y=1 00000004 4 Addr : 10D7: 7D : Variable Operation Local Offset - 7 Write 340 quit Addr : 10D8: 37 02 : Constant Mask Y=2 00000008 8 Addr : 10DA: 14 : Pop Addr : 10DB: JMP Label0004 Addr : 10DB: 04 0F : Jmp 10EC 15 Addr : 10DD: CaseDone Label0007 Addr : 10DD: 0C : Casedone Addr : 10DE: Label0008 341 "l": c := 8 ' long Addr : 10DE: 37 02 : Constant Mask Y=2 00000008 8 Addr : 10E0: 79 : Variable Operation Local Offset - 6 Write 342 w := 8 Addr : 10E1: 37 02 : Constant Mask Y=2 00000008 8 Addr : 10E3: 7D : Variable Operation Local Offset - 7 Write 343 quit Addr : 10E4: 37 02 : Constant Mask Y=2 00000008 8 Addr : 10E6: 14 : Pop Addr : 10E7: JMP Label0004 Addr : 10E7: 04 03 : Jmp 10EC 3 Addr : 10E9: CaseDone Label0008 Addr : 10E9: 0C : Casedone Addr : 10EA: Label0005 Addr : 10EA: Label0003 Addr : 10EA: JMP Label0002 Addr : 10EA: 04 44 : Jmp 10B0 -60 Addr : 10EC: Label0004 345 fd.tx(t) Addr : 10EC: 01 : Drop Anchor Addr : 10ED: 74 : Variable Operation Local Offset - 5 Read Addr : 10EE: 06 2A 09 : Call Obj.Sub 42 9 346 fd.tx(" ") Addr : 10F1: 01 : Drop Anchor Addr : 10F2: 37 04 : Constant Mask Y=4 00000020 32 Addr : 10F4: 06 2A 09 : Call Obj.Sub 42 9 347 x := gethex(0) ' address Addr : 10F7: 00 : Drop Anchor Push Addr : 10F8: 35 : Constant 1 $00000000 Addr : 10F9: 05 18 : Call Sub 24 Addr : 10FB: 69 : Variable Operation Local Offset - 2 Write 348 j := gethex(0) * (w>>1) ' length Addr : 10FC: 00 : Drop Anchor Push Addr : 10FD: 35 : Constant 1 $00000000 Addr : 10FE: 05 18 : Call Sub 24 Addr : 1100: 7C : Variable Operation Local Offset - 7 Read Addr : 1101: 36 : Constant 2 $00000001 Addr : 1102: E2 : Math Op >> Addr : 1103: F4 : Math Op * Addr : 1104: 71 : Variable Operation Local Offset - 4 Write 349 v := gethex(0) ' length Addr : 1105: 00 : Drop Anchor Push Addr : 1106: 35 : Constant 1 $00000000 Addr : 1107: 05 18 : Call Sub 24 Addr : 1109: CD 20 : Memory Op Long DBASE + WRITE Address = 0020 351 repeat n from x to x+j-1 step (w>>1) Addr : 110B: 68 : Variable Operation Local Offset - 2 Read Addr : 110C: 65 : Variable Operation Local Offset - 1 Write Addr : 110D: Label0009 353 if n < 0 Addr : 110D: 64 : Variable Operation Local Offset - 1 Read Addr : 110E: 35 : Constant 1 $00000000 Addr : 110F: F9 : Math Op < Addr : 1110: JZ Label000C Addr : 1110: 0A 02 : jz Address = 1114 2 354 next Addr : 1112: JMP Label000A Addr : 1112: 04 28 : Jmp 113C 40 Addr : 1114: Label000C Addr : 1114: Label000D 355 if n > $ffff Addr : 1114: 64 : Variable Operation Local Offset - 1 Read Addr : 1115: 37 2F : Constant Mask Y=47 Decrement 0000FFFF 65535 Addr : 1117: FA : Math Op > Addr : 1118: JZ Label000E Addr : 1118: 0A 02 : jz Address = 111C 2 356 quit Addr : 111A: JMP Label000B Addr : 111A: 04 2C : Jmp 1148 44 Addr : 111C: Label000E Addr : 111C: Label000F Addr : 111C: Constant Address of Label0010 Addr : 111C: 39 0B 00 : Constant 2 Bytes - 0B 00 - $00000B00 2816 358 case w ' fill size we want Addr : 111F: 7C : Variable Operation Local Offset - 7 Read 359 2: byte[n] := v Addr : 1120: 37 00 : Constant Mask Y=0 00000002 2 Addr : 1122: Case_Value Label0011 Addr : 1122: 0D 09 : Value Case Address = 112D 9 360 4: word[n] := v Addr : 1124: 37 01 : Constant Mask Y=1 00000004 4 Addr : 1126: Case_Value Label0012 Addr : 1126: 0D 0A : Value Case Address = 1132 10 361 8: long[n] := v Addr : 1128: 37 02 : Constant Mask Y=2 00000008 8 Addr : 112A: Case_Value Label0013 Addr : 112A: 0D 0B : Value Case Address = 1137 11 Addr : 112C: CaseDone Label0013 Addr : 112C: 0C : Casedone Addr : 112D: Label0011 359 2: byte[n] := v Addr : 112D: CC 20 : Memory Op Long DBASE + READ Address = 0020 Addr : 112F: 64 : Variable Operation Local Offset - 1 Read Addr : 1130: 81 : Memory Op Byte POP Address WRITE Addr : 1131: CaseDone Label0011 Addr : 1131: 0C : Casedone Addr : 1132: Label0012 360 4: word[n] := v Addr : 1132: CC 20 : Memory Op Long DBASE + READ Address = 0020 Addr : 1134: 64 : Variable Operation Local Offset - 1 Read Addr : 1135: A1 : Memory Op Word POP Address WRITE Addr : 1136: CaseDone Label0012 Addr : 1136: 0C : Casedone Addr : 1137: Label0013 361 8: long[n] := v Addr : 1137: CC 20 : Memory Op Long DBASE + READ Address = 0020 Addr : 1139: 64 : Variable Operation Local Offset - 1 Read Addr : 113A: C1 : Memory Op Long POP Address WRITE Addr : 113B: CaseDone Label0013 Addr : 113B: 0C : Casedone Addr : 113C: Label0010 Addr : 113C: Label000A 351 repeat n from x to x+j-1 step (w>>1) Addr : 113C: 7C : Variable Operation Local Offset - 7 Read Addr : 113D: 36 : Constant 2 $00000001 Addr : 113E: E2 : Math Op >> Addr : 113F: 68 : Variable Operation Local Offset - 2 Read Addr : 1140: 68 : Variable Operation Local Offset - 2 Read Addr : 1141: 70 : Variable Operation Local Offset - 4 Read Addr : 1142: EC : Math Op + Addr : 1143: 36 : Constant 2 $00000001 Addr : 1144: ED : Math Op - Addr : 1145: Repeat n Step Label0009 Addr : 1145: 66 06 45 : Variable Operation Local Offset - 1 Assign Repeat-Var loop (pop step) Address= 110D -59 Addr : 1148: Label000B Addr : 1148: 32 : Return |===========================================================================| Spin Block setReg with 0 Parameters and 3 Extra Stack Longs. Method 16 pri setReg | x, n, ch Local Parameter DBASE:0000 - Result Local Variable DBASE:0004 - x Local Variable DBASE:0008 - n Local Variable DBASE:000C - ch |===========================================================================| 365 x := gethex(0) Addr : 1149: 00 : Drop Anchor Push Addr : 114A: 35 : Constant 1 $00000000 Addr : 114B: 05 18 : Call Sub 24 Addr : 114D: 65 : Variable Operation Local Offset - 1 Write 366 n := gethex(0) Addr : 114E: 00 : Drop Anchor Push Addr : 114F: 35 : Constant 1 $00000000 Addr : 1150: 05 18 : Call Sub 24 Addr : 1152: 69 : Variable Operation Local Offset - 2 Write 367 if x > 7 and x < $200 Addr : 1153: 64 : Variable Operation Local Offset - 1 Read Addr : 1154: 37 22 : Constant Mask Y=34 Decrement 00000007 7 Addr : 1156: FA : Math Op > Addr : 1157: 64 : Variable Operation Local Offset - 1 Read Addr : 1158: 37 08 : Constant Mask Y=8 00000200 512 Addr : 115A: F9 : Math Op < Addr : 115B: F0 : Math Op AND Addr : 115C: JZ Label0002 Addr : 115C: 0A 1B : jz Address = 1179 27 368 if x > $1ef Addr : 115E: 64 : Variable Operation Local Offset - 1 Read Addr : 115F: 39 01 EF : Constant 2 Bytes - 01 EF - $000001EF 495 Addr : 1162: FA : Math Op > Addr : 1163: JZ Label0004 Addr : 1163: 0A 0B : jz Address = 1170 11 369 bd[task].setreg(x,n) Addr : 1165: 01 : Drop Anchor Addr : 1166: 64 : Variable Operation Local Offset - 1 Read Addr : 1167: 68 : Variable Operation Local Offset - 2 Read Addr : 1168: C4 80 C8 : Memory Op Long PBASE + READ Address = 00C8 Addr : 116B: 07 2C 0F : Call Obj.Sub[ ]44 15 Addr : 116E: JMP Label0005 Addr : 116E: 04 09 : Jmp 1179 9 Addr : 1170: Label0004 371 bd[task].poke(x,n) Addr : 1170: 01 : Drop Anchor Addr : 1171: 64 : Variable Operation Local Offset - 1 Read Addr : 1172: 68 : Variable Operation Local Offset - 2 Read Addr : 1173: C4 80 C8 : Memory Op Long PBASE + READ Address = 00C8 Addr : 1176: 07 2C 0B : Call Obj.Sub[ ]44 11 Addr : 1179: Label0006 Addr : 1179: Label0005 Addr : 1179: Label0002 Addr : 1179: Label0003 Addr : 1179: 32 : Return |===========================================================================| Spin Block setTask with 0 Parameters and 1 Extra Stack Longs. Method 17 pri setTask | x Local Parameter DBASE:0000 - Result Local Variable DBASE:0004 - x |===========================================================================| 374 x := gethex(0) Addr : 117A: 00 : Drop Anchor Push Addr : 117B: 35 : Constant 1 $00000000 Addr : 117C: 05 18 : Call Sub 24 Addr : 117E: 65 : Variable Operation Local Offset - 1 Write 375 if(x < nooftask) Addr : 117F: 64 : Variable Operation Local Offset - 1 Read Addr : 1180: C4 80 CC : Memory Op Long PBASE + READ Address = 00CC Addr : 1183: F9 : Math Op < Addr : 1184: JZ Label0002 Addr : 1184: 0A 1F : jz Address = 11A5 31 376 task := x Addr : 1186: 64 : Variable Operation Local Offset - 1 Read Addr : 1187: C5 80 C8 : Memory Op Long PBASE + WRITE Address = 00C8 377 if(bd[task].getId) Addr : 118A: 00 : Drop Anchor Push Addr : 118B: C4 80 C8 : Memory Op Long PBASE + READ Address = 00C8 Addr : 118E: 07 2C 04 : Call Obj.Sub[ ]44 4 Addr : 1191: JZ Label0004 Addr : 1191: 0A 12 : jz Address = 11A5 18 378 fd.str(string(EOL,"Task : ")) Addr : 1193: 01 : Drop Anchor Addr : 1194: PBASE Constant Address of Label0006 Addr : 1194: 87 8B 6A : Memory Op Byte PBASE + ADDRESS Address = 0B6A Addr : 1197: 06 2A 0A : Call Obj.Sub 42 10 379 fd.str(bd[task].getId) Addr : 119A: 01 : Drop Anchor Addr : 119B: 00 : Drop Anchor Push Addr : 119C: C4 80 C8 : Memory Op Long PBASE + READ Address = 00C8 Addr : 119F: 07 2C 04 : Call Obj.Sub[ ]44 4 Addr : 11A2: 06 2A 0A : Call Obj.Sub 42 10 Addr : 11A5: Label0004 Addr : 11A5: Label0005 Addr : 11A5: Label0002 Addr : 11A5: Label0003 Addr : 11A5: 32 : Return Addr : 11A6: Label0006 Addr : 11A6: Data : 0A 54 61 73 6B 20 3A 20 .Task : Addr : 11AE: Data : 00 . |===========================================================================| Spin Block toggleBreak with 0 Parameters and 1 Extra Stack Longs. Method 18 pri toggleBreak | adr Local Parameter DBASE:0000 - Result Local Variable DBASE:0004 - adr |===========================================================================| 389 adr := gethex(0) Addr : 11AF: 00 : Drop Anchor Push Addr : 11B0: 35 : Constant 1 $00000000 Addr : 11B1: 05 18 : Call Sub 24 Addr : 11B3: 65 : Variable Operation Local Offset - 1 Write 390 if adr < 8 or adr > $1f0 Addr : 11B4: 64 : Variable Operation Local Offset - 1 Read Addr : 11B5: 37 02 : Constant Mask Y=2 00000008 8 Addr : 11B7: F9 : Math Op < Addr : 11B8: 64 : Variable Operation Local Offset - 1 Read Addr : 11B9: 39 01 F0 : Constant 2 Bytes - 01 F0 - $000001F0 496 Addr : 11BC: FA : Math Op > Addr : 11BD: F2 : Math Op OR Addr : 11BE: JZ Label0002 Addr : 11BE: 0A 01 : jz Address = 11C1 1 391 return Addr : 11C0: 32 : Return Addr : 11C1: Label0002 Addr : 11C1: Label0003 392 if bd[task].isBreak(adr) Addr : 11C1: 00 : Drop Anchor Push Addr : 11C2: 64 : Variable Operation Local Offset - 1 Read Addr : 11C3: C4 80 C8 : Memory Op Long PBASE + READ Address = 00C8 Addr : 11C6: 07 2C 12 : Call Obj.Sub[ ]44 18 Addr : 11C9: JZ Label0004 Addr : 11C9: 0A 06 : jz Address = 11D1 6 393 delBreak(adr) Addr : 11CB: 01 : Drop Anchor Addr : 11CC: 64 : Variable Operation Local Offset - 1 Read Addr : 11CD: 05 14 : Call Sub 20 Addr : 11CF: JMP Label0005 Addr : 11CF: 04 04 : Jmp 11D5 4 Addr : 11D1: Label0004 395 addBreak(adr) Addr : 11D1: 01 : Drop Anchor Addr : 11D2: 64 : Variable Operation Local Offset - 1 Read Addr : 11D3: 05 13 : Call Sub 19 Addr : 11D5: Label0006 Addr : 11D5: Label0005 Addr : 11D5: 32 : Return |===========================================================================| Spin Block addBreak with 1 Parameters and 0 Extra Stack Longs. Method 19 pri addBreak(adr) Local Parameter DBASE:0000 - Result Local Parameter DBASE:0004 - adr |===========================================================================| 398 bd[task].addBreak(adr,brkjmp) Addr : 11D6: 01 : Drop Anchor Addr : 11D7: 64 : Variable Operation Local Offset - 1 Read Addr : 11D8: C4 84 50 : Memory Op Long PBASE + READ Address = 0450 Addr : 11DB: C4 80 C8 : Memory Op Long PBASE + READ Address = 00C8 Addr : 11DE: 07 2C 10 : Call Obj.Sub[ ]44 16 Addr : 11E1: 32 : Return |===========================================================================| Spin Block delBreak with 1 Parameters and 0 Extra Stack Longs. Method 20 pri delBreak(adr) Local Parameter DBASE:0000 - Result Local Parameter DBASE:0004 - adr |===========================================================================| 401 bd[task].delBreak(adr) Addr : 11E2: 01 : Drop Anchor Addr : 11E3: 64 : Variable Operation Local Offset - 1 Read Addr : 11E4: C4 80 C8 : Memory Op Long PBASE + READ Address = 00C8 Addr : 11E7: 07 2C 11 : Call Obj.Sub[ ]44 17 Addr : 11EA: 32 : Return |===========================================================================| Spin Block isBreak with 1 Parameters and 0 Extra Stack Longs. Method 21 pri isBreak(adr) Local Parameter DBASE:0000 - Result Local Parameter DBASE:0004 - adr |===========================================================================| 404 return bd[task].isBreak(adr) Addr : 11EB: 00 : Drop Anchor Push Addr : 11EC: 64 : Variable Operation Local Offset - 1 Read Addr : 11ED: C4 80 C8 : Memory Op Long PBASE + READ Address = 00C8 Addr : 11F0: 07 2C 12 : Call Obj.Sub[ ]44 18 Addr : 11F3: 33 : Return value Addr : 11F4: Data : 32 2 |===========================================================================| Spin Block chkBreak with 1 Parameters and 0 Extra Stack Longs. Method 22 pri chkBreak(adr) Local Parameter DBASE:0000 - Result Local Parameter DBASE:0004 - adr |===========================================================================| 407 return bd[task].chkBreak(adr) Addr : 11F5: 00 : Drop Anchor Push Addr : 11F6: 64 : Variable Operation Local Offset - 1 Read Addr : 11F7: C4 80 C8 : Memory Op Long PBASE + READ Address = 00C8 Addr : 11FA: 07 2C 13 : Call Obj.Sub[ ]44 19 Addr : 11FD: 33 : Return value Addr : 11FE: Data : 32 2 |===========================================================================| Spin Block clearBreak with 0 Parameters and 0 Extra Stack Longs. Method 23 pri clearBreak Local Parameter DBASE:0000 - Result |===========================================================================| 410 bd[task].clearBreak Addr : 11FF: 01 : Drop Anchor Addr : 1200: C4 80 C8 : Memory Op Long PBASE + READ Address = 00C8 Addr : 1203: 07 2C 14 : Call Obj.Sub[ ]44 20 Addr : 1206: 32 : Return |===========================================================================| Spin Block getHex with 1 Parameters and 0 Extra Stack Longs. Method 24 pri getHex(ch) Local Parameter DBASE:0000 - Result Local Parameter DBASE:0004 - ch |===========================================================================| 499 result~ Addr : 1207: 62 18 : Variable Operation Local Offset - 0 Assign VAR~ Post-clear Addr : 1209: Label0002 501 ifnot ch Addr : 1209: 64 : Variable Operation Local Offset - 1 Read Addr : 120A: JNZ Label0005 Addr : 120A: 0B 0A : jnz Address = 1216 10 502 ch := fd.rx Addr : 120C: 00 : Drop Anchor Push Addr : 120D: 06 2A 07 : Call Obj.Sub 42 7 Addr : 1210: 65 : Variable Operation Local Offset - 1 Write 503 fd.tx(ch) Addr : 1211: 01 : Drop Anchor Addr : 1212: 64 : Variable Operation Local Offset - 1 Read Addr : 1213: 06 2A 09 : Call Obj.Sub 42 9 Addr : 1216: Label0005 Addr : 1216: Label0006 Addr : 1216: Constant Address of Label0007 Addr : 1216: 39 0C 27 : Constant 2 Bytes - 0C 27 - $00000C27 3111 504 case ch Addr : 1219: 64 : Variable Operation Local Offset - 1 Read 505 " ",$a,$d: Addr : 121A: 37 04 : Constant Mask Y=4 00000020 32 Addr : 121C: Case_Value Label0008 Addr : 121C: 0D 1B : Value Case Address = 1239 27 Addr : 121E: 38 0A : Constant 1 Bytes - 0A - $0000000A 10 Addr : 1220: Case_Value Label0008 Addr : 1220: 0D 17 : Value Case Address = 1239 23 Addr : 1222: 38 0D : Constant 1 Bytes - 0D - $0000000D 13 Addr : 1224: Case_Value Label0008 Addr : 1224: 0D 13 : Value Case Address = 1239 19 507 "0".."9": Addr : 1226: 38 30 : Constant 1 Bytes - 30 - $00000030 48 Addr : 1228: 38 39 : Constant 1 Bytes - 39 - $00000039 57 Addr : 122A: Case_Range Label0009 Addr : 122A: 0E 10 : Range Case Address = 123C 16 510 "a".."f": Addr : 122C: 38 61 : Constant 1 Bytes - 61 - $00000061 97 Addr : 122E: 38 66 : Constant 1 Bytes - 66 - $00000066 102 Addr : 1230: Case_Range Label000A Addr : 1230: 0E 15 : Range Case Address = 1247 21 513 "A".."F": Addr : 1232: 38 41 : Constant 1 Bytes - 41 - $00000041 65 Addr : 1234: 38 46 : Constant 1 Bytes - 46 - $00000046 70 Addr : 1236: Case_Range Label000B Addr : 1236: 0E 1D : Range Case Address = 1255 29 Addr : 1238: CaseDone Label000B Addr : 1238: 0C : Casedone Addr : 1239: Label0008 506 return result Addr : 1239: 60 : Variable Operation Local Offset - 0 Read Addr : 123A: 33 : Return value Addr : 123B: CaseDone Label0008 Addr : 123B: 0C : Casedone Addr : 123C: Label0009 508 result <<= 4 Addr : 123C: 37 01 : Constant Mask Y=1 00000004 4 Addr : 123E: 62 43 : Variable Operation Local Offset - 0 Assign ByteMathop << 509 result |= ch-"0" Addr : 1240: 64 : Variable Operation Local Offset - 1 Read Addr : 1241: 38 30 : Constant 1 Bytes - 30 - $00000030 48 Addr : 1243: ED : Math Op - Addr : 1244: 62 4A : Variable Operation Local Offset - 0 Assign ByteMathop | Addr : 1246: CaseDone Label0009 Addr : 1246: 0C : Casedone Addr : 1247: Label000A 511 result <<= 4 Addr : 1247: 37 01 : Constant Mask Y=1 00000004 4 Addr : 1249: 62 43 : Variable Operation Local Offset - 0 Assign ByteMathop << 512 result |= ch-"a"+$A Addr : 124B: 64 : Variable Operation Local Offset - 1 Read Addr : 124C: 38 61 : Constant 1 Bytes - 61 - $00000061 97 Addr : 124E: ED : Math Op - Addr : 124F: 38 0A : Constant 1 Bytes - 0A - $0000000A 10 Addr : 1251: EC : Math Op + Addr : 1252: 62 4A : Variable Operation Local Offset - 0 Assign ByteMathop | Addr : 1254: CaseDone Label000A Addr : 1254: 0C : Casedone Addr : 1255: Label000B 514 result <<= 4 Addr : 1255: 37 01 : Constant Mask Y=1 00000004 4 Addr : 1257: 62 43 : Variable Operation Local Offset - 0 Assign ByteMathop << 515 result |= ch-"A"+$A Addr : 1259: 64 : Variable Operation Local Offset - 1 Read Addr : 125A: 38 41 : Constant 1 Bytes - 41 - $00000041 65 Addr : 125C: ED : Math Op - Addr : 125D: 38 0A : Constant 1 Bytes - 0A - $0000000A 10 Addr : 125F: EC : Math Op + Addr : 1260: 62 4A : Variable Operation Local Offset - 0 Assign ByteMathop | Addr : 1262: CaseDone Label000B Addr : 1262: 0C : Casedone Addr : 1263: Label0007 516 ch~ Addr : 1263: 66 18 : Variable Operation Local Offset - 1 Assign VAR~ Post-clear Addr : 1265: Label0003 Addr : 1265: JMP Label0002 Addr : 1265: 04 FF A1 : Jmp 1209 -95 Addr : 1268: Label0004 Addr : 1268: 32 : Return |===========================================================================| Spin Block reg with 1 Parameters and 0 Extra Stack Longs. Method 25 pri reg(myaddr) Local Parameter DBASE:0000 - Result Local Parameter DBASE:0004 - myaddr |===========================================================================| 537 return @regs+(myaddr-$1f0)*5 Addr : 1269: 87 84 70 : Memory Op Byte PBASE + ADDRESS Address = 0470 Addr : 126C: 64 : Variable Operation Local Offset - 1 Read Addr : 126D: 39 01 F0 : Constant 2 Bytes - 01 F0 - $000001F0 496 Addr : 1270: ED : Math Op - Addr : 1271: 38 05 : Constant 1 Bytes - 05 - $00000005 5 Addr : 1273: F4 : Math Op * Addr : 1274: EC : Math Op + Addr : 1275: 33 : Return value Addr : 1276: Data : 32 2 |===========================================================================| Spin Block dumpRegs with 0 Parameters and 1 Extra Stack Longs. Method 26 pri dumpRegs | n Local Parameter DBASE:0000 - Result Local Variable DBASE:0004 - n |===========================================================================| 540 fd.tx(EOL) Addr : 1277: 01 : Drop Anchor Addr : 1278: 38 0A : Constant 1 Bytes - 0A - $0000000A 10 Addr : 127A: 06 2A 09 : Call Obj.Sub 42 9 541 repeat n from $1f0 to $1ff Addr : 127D: 39 01 F0 : Constant 2 Bytes - 01 F0 - $000001F0 496 Addr : 1280: 65 : Variable Operation Local Offset - 1 Write Addr : 1281: Label0002 542 dump(n) Addr : 1281: 01 : Drop Anchor Addr : 1282: 64 : Variable Operation Local Offset - 1 Read Addr : 1283: 05 1D : Call Sub 29 Addr : 1285: Label0003 541 repeat n from $1f0 to $1ff Addr : 1285: 39 01 F0 : Constant 2 Bytes - 01 F0 - $000001F0 496 Addr : 1288: 37 28 : Constant Mask Y=40 Decrement 000001FF 511 Addr : 128A: Repeat n Step Label0002 Addr : 128A: 66 02 74 : Variable Operation Local Offset - 1 Assign Repeat-Var loop Address= 1281 -12 Addr : 128D: Label0004 Addr : 128D: 32 : Return |===========================================================================| Spin Block dumpaddr with 1 Parameters and 0 Extra Stack Longs. Method 27 pri dumpaddr(myaddr) Local Parameter DBASE:0000 - Result Local Parameter DBASE:0004 - myaddr |===========================================================================| 545 if myaddr < $1f0 Addr : 128E: 64 : Variable Operation Local Offset - 1 Read Addr : 128F: 39 01 F0 : Constant 2 Bytes - 01 F0 - $000001F0 496 Addr : 1292: F9 : Math Op < Addr : 1293: JZ Label0002 Addr : 1293: 0A 0F : jz Address = 12A4 15 546 fd.hex(myaddr, 3) Addr : 1295: 01 : Drop Anchor Addr : 1296: 64 : Variable Operation Local Offset - 1 Read Addr : 1297: 37 21 : Constant Mask Y=33 Decrement 00000003 3 Addr : 1299: 06 2A 0C : Call Obj.Sub 42 12 547 fd.tx(" ") Addr : 129C: 01 : Drop Anchor Addr : 129D: 37 04 : Constant Mask Y=4 00000020 32 Addr : 129F: 06 2A 09 : Call Obj.Sub 42 9 Addr : 12A2: JMP Label0003 Addr : 12A2: 04 08 : Jmp 12AC 8 Addr : 12A4: Label0002 549 fd.str(reg(myaddr)) Addr : 12A4: 01 : Drop Anchor Addr : 12A5: 00 : Drop Anchor Push Addr : 12A6: 64 : Variable Operation Local Offset - 1 Read Addr : 12A7: 05 19 : Call Sub 25 Addr : 12A9: 06 2A 0A : Call Obj.Sub 42 10 Addr : 12AC: Label0004 Addr : 12AC: Label0003 Addr : 12AC: 32 : Return |===========================================================================| Spin Block dumpdata with 1 Parameters and 0 Extra Stack Longs. Method 28 pri dumpdata(myaddr) Local Parameter DBASE:0000 - Result Local Parameter DBASE:0004 - myaddr |===========================================================================| 552 if myaddr > $1ef and myaddr < $200 Addr : 12AD: 64 : Variable Operation Local Offset - 1 Read Addr : 12AE: 39 01 EF : Constant 2 Bytes - 01 EF - $000001EF 495 Addr : 12B1: FA : Math Op > Addr : 12B2: 64 : Variable Operation Local Offset - 1 Read Addr : 12B3: 37 08 : Constant Mask Y=8 00000200 512 Addr : 12B5: F9 : Math Op < Addr : 12B6: F0 : Math Op AND Addr : 12B7: JZ Label0002 Addr : 12B7: 0A 1E : jz Address = 12D7 30 553 fd.hex(bd[task].getreg(myaddr), 8) Addr : 12B9: 01 : Drop Anchor Addr : 12BA: 00 : Drop Anchor Push Addr : 12BB: 64 : Variable Operation Local Offset - 1 Read Addr : 12BC: C4 80 C8 : Memory Op Long PBASE + READ Address = 00C8 Addr : 12BF: 07 2C 0E : Call Obj.Sub[ ]44 14 Addr : 12C2: 37 02 : Constant Mask Y=2 00000008 8 Addr : 12C4: 06 2A 0C : Call Obj.Sub 42 12 554 bd[task].getc Addr : 12C7: 01 : Drop Anchor Addr : 12C8: C4 80 C8 : Memory Op Long PBASE + READ Address = 00C8 Addr : 12CB: 07 2C 0C : Call Obj.Sub[ ]44 12 555 bd[task].getz Addr : 12CE: 01 : Drop Anchor Addr : 12CF: C4 80 C8 : Memory Op Long PBASE + READ Address = 00C8 Addr : 12D2: 07 2C 0D : Call Obj.Sub[ ]44 13 Addr : 12D5: JMP Label0003 Addr : 12D5: 04 0E : Jmp 12E5 14 Addr : 12D7: Label0002 557 fd.hex(bd[task].peek(myaddr), 8) Addr : 12D7: 01 : Drop Anchor Addr : 12D8: 00 : Drop Anchor Push Addr : 12D9: 64 : Variable Operation Local Offset - 1 Read Addr : 12DA: C4 80 C8 : Memory Op Long PBASE + READ Address = 00C8 Addr : 12DD: 07 2C 0A : Call Obj.Sub[ ]44 10 Addr : 12E0: 37 02 : Constant Mask Y=2 00000008 8 Addr : 12E2: 06 2A 0C : Call Obj.Sub 42 12 Addr : 12E5: Label0004 Addr : 12E5: Label0003 Addr : 12E5: 32 : Return |===========================================================================| Spin Block dump with 1 Parameters and 0 Extra Stack Longs. Method 29 pri dump(myaddr) Local Parameter DBASE:0000 - Result Local Parameter DBASE:0004 - myaddr |===========================================================================| 560 dumpaddr(myaddr) Addr : 12E6: 01 : Drop Anchor Addr : 12E7: 64 : Variable Operation Local Offset - 1 Read Addr : 12E8: 05 1B : Call Sub 27 561 fd.tx(" ") Addr : 12EA: 01 : Drop Anchor Addr : 12EB: 37 04 : Constant Mask Y=4 00000020 32 Addr : 12ED: 06 2A 09 : Call Obj.Sub 42 9 562 if myaddr > $1ef and myaddr < $200 Addr : 12F0: 64 : Variable Operation Local Offset - 1 Read Addr : 12F1: 39 01 EF : Constant 2 Bytes - 01 EF - $000001EF 495 Addr : 12F4: FA : Math Op > Addr : 12F5: 64 : Variable Operation Local Offset - 1 Read Addr : 12F6: 37 08 : Constant Mask Y=8 00000200 512 Addr : 12F8: F9 : Math Op < Addr : 12F9: F0 : Math Op AND Addr : 12FA: JZ Label0002 Addr : 12FA: 0A 31 : jz Address = 132D 49 563 fd.hex(myaddr, 3) Addr : 12FC: 01 : Drop Anchor Addr : 12FD: 64 : Variable Operation Local Offset - 1 Read Addr : 12FE: 37 21 : Constant Mask Y=33 Decrement 00000003 3 Addr : 1300: 06 2A 0C : Call Obj.Sub 42 12 564 fd.tx(" ") Addr : 1303: 01 : Drop Anchor Addr : 1304: 37 04 : Constant Mask Y=4 00000020 32 Addr : 1306: 06 2A 09 : Call Obj.Sub 42 9 565 fd.hex(bd[task].getreg(myaddr), 8) Addr : 1309: 01 : Drop Anchor Addr : 130A: 00 : Drop Anchor Push Addr : 130B: 64 : Variable Operation Local Offset - 1 Read Addr : 130C: C4 80 C8 : Memory Op Long PBASE + READ Address = 00C8 Addr : 130F: 07 2C 0E : Call Obj.Sub[ ]44 14 Addr : 1312: 37 02 : Constant Mask Y=2 00000008 8 Addr : 1314: 06 2A 0C : Call Obj.Sub 42 12 566 fd.tx(" ") Addr : 1317: 01 : Drop Anchor Addr : 1318: 37 04 : Constant Mask Y=4 00000020 32 Addr : 131A: 06 2A 09 : Call Obj.Sub 42 9 567 fd.bin(bd[task].getreg(myaddr), 32) Addr : 131D: 01 : Drop Anchor Addr : 131E: 00 : Drop Anchor Push Addr : 131F: 64 : Variable Operation Local Offset - 1 Read Addr : 1320: C4 80 C8 : Memory Op Long PBASE + READ Address = 00C8 Addr : 1323: 07 2C 0E : Call Obj.Sub[ ]44 14 Addr : 1326: 37 04 : Constant Mask Y=4 00000020 32 Addr : 1328: 06 2A 0D : Call Obj.Sub 42 13 Addr : 132B: JMP Label0003 Addr : 132B: 04 0E : Jmp 133B 14 Addr : 132D: Label0002 569 fd.hex(bd[task].peek(myaddr), 8) Addr : 132D: 01 : Drop Anchor Addr : 132E: 00 : Drop Anchor Push Addr : 132F: 64 : Variable Operation Local Offset - 1 Read Addr : 1330: C4 80 C8 : Memory Op Long PBASE + READ Address = 00C8 Addr : 1333: 07 2C 0A : Call Obj.Sub[ ]44 10 Addr : 1336: 37 02 : Constant Mask Y=2 00000008 8 Addr : 1338: 06 2A 0C : Call Obj.Sub 42 12 Addr : 133B: Label0004 Addr : 133B: Label0003 570 fd.tx(EOL) Addr : 133B: 01 : Drop Anchor Addr : 133C: 38 0A : Constant 1 Bytes - 0A - $0000000A 10 Addr : 133E: 06 2A 09 : Call Obj.Sub 42 9 Addr : 1341: 32 : Return |===========================================================================| Spin Block printFlags with 0 Parameters and 0 Extra Stack Longs. Method 30 pri printFlags Local Parameter DBASE:0000 - Result |===========================================================================| 573 fd.tx(" ") Addr : 1342: 01 : Drop Anchor Addr : 1343: 37 04 : Constant Mask Y=4 00000020 32 Addr : 1345: 06 2A 09 : Call Obj.Sub 42 9 574 fd.tx("Z") Addr : 1348: 01 : Drop Anchor Addr : 1349: 38 5A : Constant 1 Bytes - 5A - $0000005A 90 Addr : 134B: 06 2A 09 : Call Obj.Sub 42 9 575 fd.tx(":") Addr : 134E: 01 : Drop Anchor Addr : 134F: 38 3A : Constant 1 Bytes - 3A - $0000003A 58 Addr : 1351: 06 2A 09 : Call Obj.Sub 42 9 576 fd.bin(bd[task].getz, 1) Addr : 1354: 01 : Drop Anchor Addr : 1355: 00 : Drop Anchor Push Addr : 1356: C4 80 C8 : Memory Op Long PBASE + READ Address = 00C8 Addr : 1359: 07 2C 0D : Call Obj.Sub[ ]44 13 Addr : 135C: 36 : Constant 2 $00000001 Addr : 135D: 06 2A 0D : Call Obj.Sub 42 13 577 fd.tx(" ") Addr : 1360: 01 : Drop Anchor Addr : 1361: 37 04 : Constant Mask Y=4 00000020 32 Addr : 1363: 06 2A 09 : Call Obj.Sub 42 9 578 fd.tx("C") Addr : 1366: 01 : Drop Anchor Addr : 1367: 38 43 : Constant 1 Bytes - 43 - $00000043 67 Addr : 1369: 06 2A 09 : Call Obj.Sub 42 9 579 fd.tx(":") Addr : 136C: 01 : Drop Anchor Addr : 136D: 38 3A : Constant 1 Bytes - 3A - $0000003A 58 Addr : 136F: 06 2A 09 : Call Obj.Sub 42 9 580 fd.bin(bd[task].getc, 1) Addr : 1372: 01 : Drop Anchor Addr : 1373: 00 : Drop Anchor Push Addr : 1374: C4 80 C8 : Memory Op Long PBASE + READ Address = 00C8 Addr : 1377: 07 2C 0C : Call Obj.Sub[ ]44 12 Addr : 137A: 36 : Constant 2 $00000001 Addr : 137B: 06 2A 0D : Call Obj.Sub 42 13 581 fd.tx(EOL) Addr : 137E: 01 : Drop Anchor Addr : 137F: 38 0A : Constant 1 Bytes - 0A - $0000000A 10 Addr : 1381: 06 2A 09 : Call Obj.Sub 42 9 Addr : 1384: 32 : Return |===========================================================================| Spin Block printReg with 0 Parameters and 2 Extra Stack Longs. Method 31 pri printReg | n, ch Local Parameter DBASE:0000 - Result Local Variable DBASE:0004 - n Local Variable DBASE:0008 - ch |===========================================================================| 584 n~ Addr : 1385: 66 18 : Variable Operation Local Offset - 1 Assign VAR~ Post-clear Addr : 1387: Label0002 586 ch := fd.rx Addr : 1387: 00 : Drop Anchor Push Addr : 1388: 06 2A 07 : Call Obj.Sub 42 7 Addr : 138B: 69 : Variable Operation Local Offset - 2 Write 587 fd.tx(ch) Addr : 138C: 01 : Drop Anchor Addr : 138D: 68 : Variable Operation Local Offset - 2 Read Addr : 138E: 06 2A 09 : Call Obj.Sub 42 9 Addr : 1391: Constant Address of Label0005 Addr : 1391: 39 0D 8C : Constant 2 Bytes - 0D 8C - $00000D8C 3468 588 case ch Addr : 1394: 68 : Variable Operation Local Offset - 2 Read 589 $a,$d: quit Addr : 1395: 38 0A : Constant 1 Bytes - 0A - $0000000A 10 Addr : 1397: Case_Value Label0006 Addr : 1397: 0D 1F : Value Case Address = 13B8 31 Addr : 1399: 38 0D : Constant 1 Bytes - 0D - $0000000D 13 Addr : 139B: Case_Value Label0006 Addr : 139B: 0D 1B : Value Case Address = 13B8 27 590 "R","r": Addr : 139D: 38 52 : Constant 1 Bytes - 52 - $00000052 82 Addr : 139F: Case_Value Label0007 Addr : 139F: 0D 1D : Value Case Address = 13BE 29 Addr : 13A1: 38 72 : Constant 1 Bytes - 72 - $00000072 114 Addr : 13A3: Case_Value Label0007 Addr : 13A3: 0D 19 : Value Case Address = 13BE 25 593 "Z","z": Addr : 13A5: 38 5A : Constant 1 Bytes - 5A - $0000005A 90 Addr : 13A7: Case_Value Label0008 Addr : 13A7: 0D 1A : Value Case Address = 13C3 26 Addr : 13A9: 38 7A : Constant 1 Bytes - 7A - $0000007A 122 Addr : 13AB: Case_Value Label0008 Addr : 13AB: 0D 16 : Value Case Address = 13C3 22 597 n := gethex(ch) Addr : 13AD: 00 : Drop Anchor Push Addr : 13AE: 68 : Variable Operation Local Offset - 2 Read Addr : 13AF: 05 18 : Call Sub 24 Addr : 13B1: 65 : Variable Operation Local Offset - 1 Write 598 quit Addr : 13B2: 37 02 : Constant Mask Y=2 00000008 8 Addr : 13B4: 14 : Pop Addr : 13B5: JMP Label0004 Addr : 13B5: 04 14 : Jmp 13CB 20 Addr : 13B7: CaseDone Label0008 Addr : 13B7: 0C : Casedone Addr : 13B8: Label0006 589 $a,$d: quit Addr : 13B8: 37 02 : Constant Mask Y=2 00000008 8 Addr : 13BA: 14 : Pop Addr : 13BB: JMP Label0004 Addr : 13BB: 04 0E : Jmp 13CB 14 Addr : 13BD: CaseDone Label0006 Addr : 13BD: 0C : Casedone Addr : 13BE: Label0007 591 dumpRegs Addr : 13BE: 01 : Drop Anchor Addr : 13BF: 05 1A : Call Sub 26 592 return Addr : 13C1: 32 : Return Addr : 13C2: CaseDone Label0007 Addr : 13C2: 0C : Casedone Addr : 13C3: Label0008 594 printFlags Addr : 13C3: 01 : Drop Anchor Addr : 13C4: 05 1E : Call Sub 30 595 return Addr : 13C6: 32 : Return Addr : 13C7: CaseDone Label0008 Addr : 13C7: 0C : Casedone Addr : 13C8: Label0005 Addr : 13C8: Label0003 Addr : 13C8: JMP Label0002 Addr : 13C8: 04 FF BC : Jmp 1387 -68 Addr : 13CB: Label0004 600 dump(n) Addr : 13CB: 01 : Drop Anchor Addr : 13CC: 64 : Variable Operation Local Offset - 1 Read Addr : 13CD: 05 1D : Call Sub 29 Addr : 13CF: 32 : Return |===========================================================================| Spin Block stepOver with 2 Parameters and 4 Extra Stack Longs. Method 32 pri stepOver(pcp,verbose) | pc, jmpretbrk, goinst, gopc Local Parameter DBASE:0000 - Result Local Parameter DBASE:0004 - pcp Local Parameter DBASE:0008 - verbose Local Variable DBASE:000C - pc Local Variable DBASE:0010 - jmpretbrk Local Variable DBASE:0014 - goinst Local Variable DBASE:0018 - gopc |===========================================================================| 607 pc := long[pcp] Addr : 13D0: 64 : Variable Operation Local Offset - 1 Read Addr : 13D1: C0 : Memory Op Long POP Address READ Addr : 13D2: 6D : Variable Operation Local Offset - 3 Write 608 showInst(pcp) Addr : 13D3: 01 : Drop Anchor Addr : 13D4: 64 : Variable Operation Local Offset - 1 Read Addr : 13D5: 05 27 : Call Sub 39 614 jmpretbrk := isJmpRet(pc) Addr : 13D7: 00 : Drop Anchor Push Addr : 13D8: 6C : Variable Operation Local Offset - 3 Read Addr : 13D9: 05 21 : Call Sub 33 Addr : 13DB: 71 : Variable Operation Local Offset - 4 Write 616 if jmpretbrk Addr : 13DC: 70 : Variable Operation Local Offset - 4 Read Addr : 13DD: JZ Label0002 Addr : 13DD: 0A 80 82 : jz Address = 1462 130 618 fd.tx("R") Addr : 13E0: 01 : Drop Anchor Addr : 13E1: 38 52 : Constant 1 Bytes - 52 - $00000052 82 Addr : 13E3: 06 2A 09 : Call Obj.Sub 42 9 619 fd.str(string("call ret: ")) Addr : 13E6: 01 : Drop Anchor Addr : 13E7: PBASE Constant Address of Label0004 Addr : 13E7: 87 8E 6B : Memory Op Byte PBASE + ADDRESS Address = 0E6B Addr : 13EA: 06 2A 0A : Call Obj.Sub 42 10 620 fd.hex(jmpretbrk,3) Addr : 13ED: 01 : Drop Anchor Addr : 13EE: 70 : Variable Operation Local Offset - 4 Read Addr : 13EF: 37 21 : Constant Mask Y=33 Decrement 00000003 3 Addr : 13F1: 06 2A 0C : Call Obj.Sub 42 12 Addr : 13F4: Label0005 641 if verbose Addr : 13F4: 68 : Variable Operation Local Offset - 2 Read Addr : 13F5: JZ Label0008 Addr : 13F5: 0A 0A : jz Address = 1401 10 642 showInst(bd[task].pcp) Addr : 13F7: 01 : Drop Anchor Addr : 13F8: 00 : Drop Anchor Push Addr : 13F9: C4 80 C8 : Memory Op Long PBASE + READ Address = 00C8 Addr : 13FC: 07 2C 07 : Call Obj.Sub[ ]44 7 Addr : 13FF: 05 27 : Call Sub 39 Addr : 1401: Label0008 Addr : 1401: Label0009 644 if(long[bd[task].pcp] == jmpretbrk) Addr : 1401: 00 : Drop Anchor Push Addr : 1402: C4 80 C8 : Memory Op Long PBASE + READ Address = 00C8 Addr : 1405: 07 2C 07 : Call Obj.Sub[ ]44 7 Addr : 1408: C0 : Memory Op Long POP Address READ Addr : 1409: 70 : Variable Operation Local Offset - 4 Read Addr : 140A: FC : Math Op == Addr : 140B: JZ Label000A Addr : 140B: 0A 03 : jz Address = 1410 3 645 quit Addr : 140D: JMP Label0007 Addr : 140D: 04 80 50 : Jmp 1460 80 Addr : 1410: Label000A Addr : 1410: Label000B 647 if isbreak(long[bd[task].pcp]) Addr : 1410: 00 : Drop Anchor Push Addr : 1411: 00 : Drop Anchor Push Addr : 1412: C4 80 C8 : Memory Op Long PBASE + READ Address = 00C8 Addr : 1415: 07 2C 07 : Call Obj.Sub[ ]44 7 Addr : 1418: C0 : Memory Op Long POP Address READ Addr : 1419: 05 15 : Call Sub 21 Addr : 141B: JZ Label000C Addr : 141B: 0A 23 : jz Address = 1440 35 648 delBreak(long[bd[task].pcp]) ' delete break jmp instruction Addr : 141D: 01 : Drop Anchor Addr : 141E: 00 : Drop Anchor Push Addr : 141F: C4 80 C8 : Memory Op Long PBASE + READ Address = 00C8 Addr : 1422: 07 2C 07 : Call Obj.Sub[ ]44 7 Addr : 1425: C0 : Memory Op Long POP Address READ Addr : 1426: 05 14 : Call Sub 20 649 bd[task].singleStep ' step normal instruction Addr : 1428: 01 : Drop Anchor Addr : 1429: C4 80 C8 : Memory Op Long PBASE + READ Address = 00C8 Addr : 142C: 07 2C 05 : Call Obj.Sub[ ]44 5 650 addBreak(long[bd[task].pcp]-1) ' add back the break jmp Addr : 142F: 01 : Drop Anchor Addr : 1430: 00 : Drop Anchor Push Addr : 1431: C4 80 C8 : Memory Op Long PBASE + READ Address = 00C8 Addr : 1434: 07 2C 07 : Call Obj.Sub[ ]44 7 Addr : 1437: C0 : Memory Op Long POP Address READ Addr : 1438: 36 : Constant 2 $00000001 Addr : 1439: ED : Math Op - Addr : 143A: 05 13 : Call Sub 19 651 quit Addr : 143C: JMP Label0007 Addr : 143C: 04 22 : Jmp 1460 34 Addr : 143E: JMP Label000D Addr : 143E: 04 07 : Jmp 1447 7 Addr : 1440: Label000C 653 bd[task].singleStep Addr : 1440: 01 : Drop Anchor Addr : 1441: C4 80 C8 : Memory Op Long PBASE + READ Address = 00C8 Addr : 1444: 07 2C 05 : Call Obj.Sub[ ]44 5 Addr : 1447: Label000E Addr : 1447: Label000D 655 if fd.rxready Addr : 1447: 00 : Drop Anchor Push Addr : 1448: 06 2A 04 : Call Obj.Sub 42 4 Addr : 144B: JZ Label000F Addr : 144B: 0A 02 : jz Address = 144F 2 656 quit Addr : 144D: JMP Label0007 Addr : 144D: 04 11 : Jmp 1460 17 Addr : 144F: Label000F Addr : 144F: Label0010 658 if verbose Addr : 144F: 68 : Variable Operation Local Offset - 2 Read Addr : 1450: JZ Label0011 Addr : 1450: 0A 0B : jz Address = 145D 11 659 showStatus(long[bd[task].pcp]) Addr : 1452: 01 : Drop Anchor Addr : 1453: 00 : Drop Anchor Push Addr : 1454: C4 80 C8 : Memory Op Long PBASE + READ Address = 00C8 Addr : 1457: 07 2C 07 : Call Obj.Sub[ ]44 7 Addr : 145A: C0 : Memory Op Long POP Address READ Addr : 145B: 05 28 : Call Sub 40 Addr : 145D: Label0011 Addr : 145D: Label0012 Addr : 145D: Label0006 Addr : 145D: JMP Label0005 Addr : 145D: 04 FF 94 : Jmp 13F4 -108 Addr : 1460: Label0007 Addr : 1460: JMP Label0003 Addr : 1460: 04 35 : Jmp 1497 53 Addr : 1462: Label0002 663 if isbreak(long[bd[task].pcp]) Addr : 1462: 00 : Drop Anchor Push Addr : 1463: 00 : Drop Anchor Push Addr : 1464: C4 80 C8 : Memory Op Long PBASE + READ Address = 00C8 Addr : 1467: 07 2C 07 : Call Obj.Sub[ ]44 7 Addr : 146A: C0 : Memory Op Long POP Address READ Addr : 146B: 05 15 : Call Sub 21 Addr : 146D: JZ Label0014 Addr : 146D: 0A 21 : jz Address = 1490 33 664 delBreak(long[bd[task].pcp]) ' delete break jmp instruction Addr : 146F: 01 : Drop Anchor Addr : 1470: 00 : Drop Anchor Push Addr : 1471: C4 80 C8 : Memory Op Long PBASE + READ Address = 00C8 Addr : 1474: 07 2C 07 : Call Obj.Sub[ ]44 7 Addr : 1477: C0 : Memory Op Long POP Address READ Addr : 1478: 05 14 : Call Sub 20 665 bd[task].singleStep ' step normal instruction Addr : 147A: 01 : Drop Anchor Addr : 147B: C4 80 C8 : Memory Op Long PBASE + READ Address = 00C8 Addr : 147E: 07 2C 05 : Call Obj.Sub[ ]44 5 666 addBreak(long[bd[task].pcp]-1) ' add back the break jmp Addr : 1481: 01 : Drop Anchor Addr : 1482: 00 : Drop Anchor Push Addr : 1483: C4 80 C8 : Memory Op Long PBASE + READ Address = 00C8 Addr : 1486: 07 2C 07 : Call Obj.Sub[ ]44 7 Addr : 1489: C0 : Memory Op Long POP Address READ Addr : 148A: 36 : Constant 2 $00000001 Addr : 148B: ED : Math Op - Addr : 148C: 05 13 : Call Sub 19 Addr : 148E: JMP Label0015 Addr : 148E: 04 07 : Jmp 1497 7 Addr : 1490: Label0014 668 bd[task].singleStep Addr : 1490: 01 : Drop Anchor Addr : 1491: C4 80 C8 : Memory Op Long PBASE + READ Address = 00C8 Addr : 1494: 07 2C 05 : Call Obj.Sub[ ]44 5 Addr : 1497: Label0016 Addr : 1497: Label0015 Addr : 1497: Label0013 Addr : 1497: Label0003 670 listpc[task] := long[pcp] Addr : 1497: 64 : Variable Operation Local Offset - 1 Read Addr : 1498: C0 : Memory Op Long POP Address READ Addr : 1499: C4 80 C8 : Memory Op Long PBASE + READ Address = 00C8 Addr : 149C: D9 40 : Memory Op Long VBASE + POP Index WRITE Address = 0040 675 showStatus(pc) Addr : 149E: 01 : Drop Anchor Addr : 149F: 6C : Variable Operation Local Offset - 3 Read Addr : 14A0: 05 28 : Call Sub 40 676 showInst(pcp) Addr : 14A2: 01 : Drop Anchor Addr : 14A3: 64 : Variable Operation Local Offset - 1 Read Addr : 14A4: 05 27 : Call Sub 39 Addr : 14A6: 32 : Return Addr : 14A7: Label0004 Addr : 14A7: Data : 63 61 6C 6C 20 72 65 74 call ret Addr : 14AF: Data : 3A 20 00 : . |===========================================================================| Spin Block isJmpRet with 1 Parameters and 6 Extra Stack Longs. Method 33 pri isJmpRet(pc) | instruction, inst, wres, cond, src, dst Local Parameter DBASE:0000 - Result Local Parameter DBASE:0004 - pc Local Variable DBASE:0008 - instruction Local Variable DBASE:000C - inst Local Variable DBASE:0010 - wres Local Variable DBASE:0014 - cond Local Variable DBASE:0018 - src Local Variable DBASE:001C - dst |===========================================================================| 681 instruction := bd[task].peek(pc) Addr : 14B2: 00 : Drop Anchor Push Addr : 14B3: 64 : Variable Operation Local Offset - 1 Read Addr : 14B4: C4 80 C8 : Memory Op Long PBASE + READ Address = 00C8 Addr : 14B7: 07 2C 0A : Call Obj.Sub[ ]44 10 Addr : 14BA: 69 : Variable Operation Local Offset - 2 Write 691 inst := (instruction >> 26) & $3f Addr : 14BB: 68 : Variable Operation Local Offset - 2 Read Addr : 14BC: 38 1A : Constant 1 Bytes - 1A - $0000001A 26 Addr : 14BE: E2 : Math Op >> Addr : 14BF: 37 25 : Constant Mask Y=37 Decrement 0000003F 63 Addr : 14C1: E8 : Math Op & Addr : 14C2: 6D : Variable Operation Local Offset - 3 Write 692 wres := (instruction >> 23) & 1 Addr : 14C3: 68 : Variable Operation Local Offset - 2 Read Addr : 14C4: 38 17 : Constant 1 Bytes - 17 - $00000017 23 Addr : 14C6: E2 : Math Op >> Addr : 14C7: 36 : Constant 2 $00000001 Addr : 14C8: E8 : Math Op & Addr : 14C9: 71 : Variable Operation Local Offset - 4 Write 693 cond := (instruction >> 19) & $f Addr : 14CA: 68 : Variable Operation Local Offset - 2 Read Addr : 14CB: 38 13 : Constant 1 Bytes - 13 - $00000013 19 Addr : 14CD: E2 : Math Op >> Addr : 14CE: 37 23 : Constant Mask Y=35 Decrement 0000000F 15 Addr : 14D0: E8 : Math Op & Addr : 14D1: 75 : Variable Operation Local Offset - 5 Write 694 dst := (instruction >> 9) & $1ff Addr : 14D2: 68 : Variable Operation Local Offset - 2 Read Addr : 14D3: 38 09 : Constant 1 Bytes - 09 - $00000009 9 Addr : 14D5: E2 : Math Op >> Addr : 14D6: 37 28 : Constant Mask Y=40 Decrement 000001FF 511 Addr : 14D8: E8 : Math Op & Addr : 14D9: 7D : Variable Operation Local Offset - 7 Write 695 src := instruction & $1ff Addr : 14DA: 68 : Variable Operation Local Offset - 2 Read Addr : 14DB: 37 28 : Constant Mask Y=40 Decrement 000001FF 511 Addr : 14DD: E8 : Math Op & Addr : 14DE: 79 : Variable Operation Local Offset - 6 Write 708 ifnot cond Addr : 14DF: 74 : Variable Operation Local Offset - 5 Read Addr : 14E0: JNZ Label0002 Addr : 14E0: 0B 04 : jnz Address = 14E6 4 709 result := false '(string("nop ")) Addr : 14E2: 35 : Constant 1 $00000000 Addr : 14E3: 61 : Variable Operation Local Offset - 0 Write Addr : 14E4: JMP Label0003 Addr : 14E4: 04 19 : Jmp 14FF 25 Addr : 14E6: Label0002 710 elseif inst == %010111 Addr : 14E6: 6C : Variable Operation Local Offset - 3 Read Addr : 14E7: 38 17 : Constant 1 Bytes - 17 - $00000017 23 Addr : 14E9: FC : Math Op == Addr : 14EA: JZ Label0004 Addr : 14EA: 0A 13 : jz Address = 14FF 19 Addr : 14EC: Constant Address of Label0005 Addr : 14EC: 39 0E C3 : Constant 2 Bytes - 0E C3 - $00000EC3 3779 711 case wres Addr : 14EF: 70 : Variable Operation Local Offset - 4 Read 712 0 : result := false '(string("jmp ")) Addr : 14F0: 35 : Constant 1 $00000000 Addr : 14F1: Case_Value Label0006 Addr : 14F1: 0D 04 : Value Case Address = 14F7 4 713 1 : result := pc+1 '(string("jmpret ")) Addr : 14F3: 36 : Constant 2 $00000001 Addr : 14F4: Case_Value Label0007 Addr : 14F4: 0D 04 : Value Case Address = 14FA 4 Addr : 14F6: CaseDone Label0007 Addr : 14F6: 0C : Casedone Addr : 14F7: Label0006 712 0 : result := false '(string("jmp ")) Addr : 14F7: 35 : Constant 1 $00000000 Addr : 14F8: 61 : Variable Operation Local Offset - 0 Write Addr : 14F9: CaseDone Label0006 Addr : 14F9: 0C : Casedone Addr : 14FA: Label0007 713 1 : result := pc+1 '(string("jmpret ")) Addr : 14FA: 64 : Variable Operation Local Offset - 1 Read Addr : 14FB: 36 : Constant 2 $00000001 Addr : 14FC: EC : Math Op + Addr : 14FD: 61 : Variable Operation Local Offset - 0 Write Addr : 14FE: CaseDone Label0007 Addr : 14FE: 0C : Casedone Addr : 14FF: Label0005 Addr : 14FF: Label0004 Addr : 14FF: Label0003 Addr : 14FF: 32 : Return |===========================================================================| Spin Block animate with 0 Parameters and 1 Extra Stack Longs. Method 34 pri animate | time Local Parameter DBASE:0000 - Result Local Variable DBASE:0004 - time |===========================================================================| 717 waitcnt(clkfreq/2+cnt) ' give a moment for next argument Addr : 1500: 35 : Constant 1 $00000000 Addr : 1501: C0 : Memory Op Long POP Address READ Addr : 1502: 37 00 : Constant Mask Y=0 00000002 2 Addr : 1504: F6 : Math Op / Addr : 1505: 3F 91 : Register op CNT Read Addr : 1507: EC : Math Op + Addr : 1508: 23 : WaitCnt(count) 721 if fd.rxready Addr : 1509: 00 : Drop Anchor Push Addr : 150A: 06 2A 04 : Call Obj.Sub 42 4 Addr : 150D: JZ Label0002 Addr : 150D: 0A 05 : jz Address = 1514 5 727 time := gethex(0) Addr : 150F: 00 : Drop Anchor Push Addr : 1510: 35 : Constant 1 $00000000 Addr : 1511: 05 18 : Call Sub 24 Addr : 1513: 65 : Variable Operation Local Offset - 1 Write Addr : 1514: Label0002 Addr : 1514: Label0003 Addr : 1514: Label0004 728 repeat while fd.rxcheck < 0 Addr : 1514: 00 : Drop Anchor Push Addr : 1515: 06 2A 05 : Call Obj.Sub 42 5 Addr : 1518: 35 : Constant 1 $00000000 Addr : 1519: F9 : Math Op < Addr : 151A: JZ Label0006 Addr : 151A: 0A 20 : jz Address = 153C 32 729 stepShow Addr : 151C: 01 : Drop Anchor Addr : 151D: 05 24 : Call Sub 36 730 if isbreak(long[bd[task].pcp]) Addr : 151F: 00 : Drop Anchor Push Addr : 1520: 00 : Drop Anchor Push Addr : 1521: C4 80 C8 : Memory Op Long PBASE + READ Address = 00C8 Addr : 1524: 07 2C 07 : Call Obj.Sub[ ]44 7 Addr : 1527: C0 : Memory Op Long POP Address READ Addr : 1528: 05 15 : Call Sub 21 Addr : 152A: JZ Label0007 Addr : 152A: 0A 02 : jz Address = 152E 2 731 quit Addr : 152C: JMP Label0006 Addr : 152C: 04 0E : Jmp 153C 14 Addr : 152E: Label0007 Addr : 152E: Label0008 732 waitcnt(clkfreq/1000*time+cnt) Addr : 152E: 35 : Constant 1 $00000000 Addr : 152F: C0 : Memory Op Long POP Address READ Addr : 1530: 39 03 E8 : Constant 2 Bytes - 03 E8 - $000003E8 1000 Addr : 1533: F6 : Math Op / Addr : 1534: 64 : Variable Operation Local Offset - 1 Read Addr : 1535: F4 : Math Op * Addr : 1536: 3F 91 : Register op CNT Read Addr : 1538: EC : Math Op + Addr : 1539: 23 : WaitCnt(count) Addr : 153A: Label0005 Addr : 153A: JMP Label0004 Addr : 153A: 04 58 : Jmp 1514 -40 Addr : 153C: Label0006 Addr : 153C: 32 : Return |===========================================================================| Spin Block stepWatchInst with 0 Parameters and 1 Extra Stack Longs. Method 35 pri stepWatchInst | watchinst Local Parameter DBASE:0000 - Result Local Variable DBASE:0004 - watchinst |===========================================================================| 736 watchinst := gethex(0) Addr : 153D: 00 : Drop Anchor Push Addr : 153E: 35 : Constant 1 $00000000 Addr : 153F: 05 18 : Call Sub 24 Addr : 1541: 65 : Variable Operation Local Offset - 1 Write 737 fd.str(string(EOL,"Step-watch Instruction @ ")) Addr : 1542: 01 : Drop Anchor Addr : 1543: PBASE Constant Address of Label0002 Addr : 1543: 87 8F 42 : Memory Op Byte PBASE + ADDRESS Address = 0F42 Addr : 1546: 06 2A 0A : Call Obj.Sub 42 10 738 fd.hex(watchinst,3) Addr : 1549: 01 : Drop Anchor Addr : 154A: 64 : Variable Operation Local Offset - 1 Read Addr : 154B: 37 21 : Constant Mask Y=33 Decrement 00000003 3 Addr : 154D: 06 2A 0C : Call Obj.Sub 42 12 Addr : 1550: Label0003 739 repeat while fd.rxcheck < 0 Addr : 1550: 00 : Drop Anchor Push Addr : 1551: 06 2A 05 : Call Obj.Sub 42 5 Addr : 1554: 35 : Constant 1 $00000000 Addr : 1555: F9 : Math Op < Addr : 1556: JZ Label0005 Addr : 1556: 0A 25 : jz Address = 157D 37 740 if isbreak(long[bd[task].pcp]) Addr : 1558: 00 : Drop Anchor Push Addr : 1559: 00 : Drop Anchor Push Addr : 155A: C4 80 C8 : Memory Op Long PBASE + READ Address = 00C8 Addr : 155D: 07 2C 07 : Call Obj.Sub[ ]44 7 Addr : 1560: C0 : Memory Op Long POP Address READ Addr : 1561: 05 15 : Call Sub 21 Addr : 1563: JZ Label0006 Addr : 1563: 0A 02 : jz Address = 1567 2 741 quit Addr : 1565: JMP Label0005 Addr : 1565: 04 16 : Jmp 157D 22 Addr : 1567: Label0006 Addr : 1567: Label0007 742 if(long[bd[task].pcp] == watchinst) Addr : 1567: 00 : Drop Anchor Push Addr : 1568: C4 80 C8 : Memory Op Long PBASE + READ Address = 00C8 Addr : 156B: 07 2C 07 : Call Obj.Sub[ ]44 7 Addr : 156E: C0 : Memory Op Long POP Address READ Addr : 156F: 64 : Variable Operation Local Offset - 1 Read Addr : 1570: FC : Math Op == Addr : 1571: JZ Label0008 Addr : 1571: 0A 05 : jz Address = 1578 5 743 stepShow Addr : 1573: 01 : Drop Anchor Addr : 1574: 05 24 : Call Sub 36 Addr : 1576: JMP Label0009 Addr : 1576: 04 03 : Jmp 157B 3 Addr : 1578: Label0008 745 stepInst Addr : 1578: 01 : Drop Anchor Addr : 1579: 05 26 : Call Sub 38 Addr : 157B: Label000A Addr : 157B: Label0009 Addr : 157B: Label0004 Addr : 157B: JMP Label0003 Addr : 157B: 04 53 : Jmp 1550 -45 Addr : 157D: Label0005 Addr : 157D: 32 : Return Addr : 157E: Label0002 Addr : 157E: Data : 0A 53 74 65 70 2D 77 61 .Step-wa Addr : 1586: Data : 74 63 68 20 49 6E 73 74 tch Inst Addr : 158E: Data : 72 75 63 74 69 6F 6E 20 ruction Addr : 1596: Data : 40 20 00 @ . |===========================================================================| Spin Block stepShow with 0 Parameters and 0 Extra Stack Longs. Method 36 pri stepShow Local Parameter DBASE:0000 - Result |===========================================================================| 749 stepDump(bd[task].pcp) Addr : 1599: 01 : Drop Anchor Addr : 159A: 00 : Drop Anchor Push Addr : 159B: C4 80 C8 : Memory Op Long PBASE + READ Address = 00C8 Addr : 159E: 07 2C 07 : Call Obj.Sub[ ]44 7 Addr : 15A1: 05 25 : Call Sub 37 Addr : 15A3: 32 : Return |===========================================================================| Spin Block stepDump with 1 Parameters and 1 Extra Stack Longs. Method 37 pri stepDump(pcp) | pc Local Parameter DBASE:0000 - Result Local Parameter DBASE:0004 - pcp Local Variable DBASE:0008 - pc |===========================================================================| 756 showInst(pcp) Addr : 15A4: 01 : Drop Anchor Addr : 15A5: 64 : Variable Operation Local Offset - 1 Read Addr : 15A6: 05 27 : Call Sub 39 757 pc := long[pcp] Addr : 15A8: 64 : Variable Operation Local Offset - 1 Read Addr : 15A9: C0 : Memory Op Long POP Address READ Addr : 15AA: 69 : Variable Operation Local Offset - 2 Write 762 stepInst Addr : 15AB: 01 : Drop Anchor Addr : 15AC: 05 26 : Call Sub 38 767 showStatus(pc) Addr : 15AE: 01 : Drop Anchor Addr : 15AF: 68 : Variable Operation Local Offset - 2 Read Addr : 15B0: 05 28 : Call Sub 40 Addr : 15B2: 32 : Return |===========================================================================| Spin Block stepInst with 0 Parameters and 0 Extra Stack Longs. Method 38 pri stepInst Local Parameter DBASE:0000 - Result |===========================================================================| 774 if isbreak(long[bd[task].pcp]) Addr : 15B3: 00 : Drop Anchor Push Addr : 15B4: 00 : Drop Anchor Push Addr : 15B5: C4 80 C8 : Memory Op Long PBASE + READ Address = 00C8 Addr : 15B8: 07 2C 07 : Call Obj.Sub[ ]44 7 Addr : 15BB: C0 : Memory Op Long POP Address READ Addr : 15BC: 05 15 : Call Sub 21 Addr : 15BE: JZ Label0002 Addr : 15BE: 0A 21 : jz Address = 15E1 33 775 delBreak(long[bd[task].pcp]) ' delete break jmp instruction Addr : 15C0: 01 : Drop Anchor Addr : 15C1: 00 : Drop Anchor Push Addr : 15C2: C4 80 C8 : Memory Op Long PBASE + READ Address = 00C8 Addr : 15C5: 07 2C 07 : Call Obj.Sub[ ]44 7 Addr : 15C8: C0 : Memory Op Long POP Address READ Addr : 15C9: 05 14 : Call Sub 20 776 bd[task].singleStep ' step normal instruction Addr : 15CB: 01 : Drop Anchor Addr : 15CC: C4 80 C8 : Memory Op Long PBASE + READ Address = 00C8 Addr : 15CF: 07 2C 05 : Call Obj.Sub[ ]44 5 777 addBreak(long[bd[task].pcp]-1) ' add back the break jmp Addr : 15D2: 01 : Drop Anchor Addr : 15D3: 00 : Drop Anchor Push Addr : 15D4: C4 80 C8 : Memory Op Long PBASE + READ Address = 00C8 Addr : 15D7: 07 2C 07 : Call Obj.Sub[ ]44 7 Addr : 15DA: C0 : Memory Op Long POP Address READ Addr : 15DB: 36 : Constant 2 $00000001 Addr : 15DC: ED : Math Op - Addr : 15DD: 05 13 : Call Sub 19 Addr : 15DF: JMP Label0003 Addr : 15DF: 04 07 : Jmp 15E8 7 Addr : 15E1: Label0002 779 bd[task].singleStep Addr : 15E1: 01 : Drop Anchor Addr : 15E2: C4 80 C8 : Memory Op Long PBASE + READ Address = 00C8 Addr : 15E5: 07 2C 05 : Call Obj.Sub[ ]44 5 Addr : 15E8: Label0004 Addr : 15E8: Label0003 781 listpc[task] := long[bd[task].pcp] Addr : 15E8: 00 : Drop Anchor Push Addr : 15E9: C4 80 C8 : Memory Op Long PBASE + READ Address = 00C8 Addr : 15EC: 07 2C 07 : Call Obj.Sub[ ]44 7 Addr : 15EF: C0 : Memory Op Long POP Address READ Addr : 15F0: C4 80 C8 : Memory Op Long PBASE + READ Address = 00C8 Addr : 15F3: D9 40 : Memory Op Long VBASE + POP Index WRITE Address = 0040 Addr : 15F5: 32 : Return |===========================================================================| Spin Block showInst with 1 Parameters and 12 Extra Stack Longs. Method 39 pri showInst(pcp) | mpc, mop, mnst, mi, mflg, mexe, msrc, mdst, ostr, mc, mz, brk Local Parameter DBASE:0000 - Result Local Parameter DBASE:0004 - pcp Local Variable DBASE:0008 - mpc Local Variable DBASE:000C - mop Local Variable DBASE:0010 - mnst Local Variable DBASE:0014 - mi Local Variable DBASE:0018 - mflg Local Variable DBASE:001C - mexe Local Variable DBASE:0020 - msrc Local Variable DBASE:0024 - mdst Local Variable DBASE:0028 - ostr Local Variable DBASE:002C - mc Local Variable DBASE:0030 - mz Local Variable DBASE:0034 - brk |===========================================================================| 791 mpc := long[pcp] Addr : 15F6: 64 : Variable Operation Local Offset - 1 Read Addr : 15F7: C0 : Memory Op Long POP Address READ Addr : 15F8: 69 : Variable Operation Local Offset - 2 Write 792 mop := bd[task].peek(mpc) ' get instruction Addr : 15F9: 00 : Drop Anchor Push Addr : 15FA: 68 : Variable Operation Local Offset - 2 Read Addr : 15FB: C4 80 C8 : Memory Op Long PBASE + READ Address = 00C8 Addr : 15FE: 07 2C 0A : Call Obj.Sub[ ]44 10 Addr : 1601: 6D : Variable Operation Local Offset - 3 Write 793 brk := isbreak(mpc) ' isbreak returns instruction Addr : 1602: 00 : Drop Anchor Push Addr : 1603: 68 : Variable Operation Local Offset - 2 Read Addr : 1604: 05 15 : Call Sub 21 Addr : 1606: CD 34 : Memory Op Long DBASE + WRITE Address = 0034 794 if brk Addr : 1608: CC 34 : Memory Op Long DBASE + READ Address = 0034 Addr : 160A: JZ Label0002 Addr : 160A: 0A 03 : jz Address = 160F 3 795 mop := brk ' replace instruction Addr : 160C: CC 34 : Memory Op Long DBASE + READ Address = 0034 Addr : 160E: 6D : Variable Operation Local Offset - 3 Write Addr : 160F: Label0002 Addr : 160F: Label0003 797 mnst:= (mop >> bd#OP_OPC_SHFT) & $3f Addr : 160F: 6C : Variable Operation Local Offset - 3 Read Addr : 1610: 38 1A : Constant 1 Bytes - 1A - $0000001A 26 Addr : 1612: E2 : Math Op >> Addr : 1613: 37 25 : Constant Mask Y=37 Decrement 0000003F 63 Addr : 1615: E8 : Math Op & Addr : 1616: 71 : Variable Operation Local Offset - 4 Write 798 mi := (mop >> bd#OP_ZCRI_SHFT) & 1 Addr : 1617: 6C : Variable Operation Local Offset - 3 Read Addr : 1618: 38 16 : Constant 1 Bytes - 16 - $00000016 22 Addr : 161A: E2 : Math Op >> Addr : 161B: 36 : Constant 2 $00000001 Addr : 161C: E8 : Math Op & Addr : 161D: 75 : Variable Operation Local Offset - 5 Write 799 mflg:= (mop >> bd#OP_ZCRI_SHFT) & $f Addr : 161E: 6C : Variable Operation Local Offset - 3 Read Addr : 161F: 38 16 : Constant 1 Bytes - 16 - $00000016 22 Addr : 1621: E2 : Math Op >> Addr : 1622: 37 23 : Constant Mask Y=35 Decrement 0000000F 15 Addr : 1624: E8 : Math Op & Addr : 1625: 79 : Variable Operation Local Offset - 6 Write 800 mexe:= (mop >> bd#OP_COND_SHFT) & $f Addr : 1626: 6C : Variable Operation Local Offset - 3 Read Addr : 1627: 38 12 : Constant 1 Bytes - 12 - $00000012 18 Addr : 1629: E2 : Math Op >> Addr : 162A: 37 23 : Constant Mask Y=35 Decrement 0000000F 15 Addr : 162C: E8 : Math Op & Addr : 162D: 7D : Variable Operation Local Offset - 7 Write 801 mdst:= (mop >> bd#OP_D_SHFT) & $1ff Addr : 162E: 6C : Variable Operation Local Offset - 3 Read Addr : 162F: 38 09 : Constant 1 Bytes - 09 - $00000009 9 Addr : 1631: E2 : Math Op >> Addr : 1632: 37 28 : Constant Mask Y=40 Decrement 000001FF 511 Addr : 1634: E8 : Math Op & Addr : 1635: CD 24 : Memory Op Long DBASE + WRITE Address = 0024 802 msrc:= (mop >> bd#OP_S_SHFT) & $1ff Addr : 1637: 6C : Variable Operation Local Offset - 3 Read Addr : 1638: 35 : Constant 1 $00000000 Addr : 1639: E2 : Math Op >> Addr : 163A: 37 28 : Constant Mask Y=40 Decrement 000001FF 511 Addr : 163C: E8 : Math Op & Addr : 163D: CD 20 : Memory Op Long DBASE + WRITE Address = 0020 807 showPC Addr : 163F: 01 : Drop Anchor Addr : 1640: 05 05 : Call Sub 5 808 if isbreak(mpc) Addr : 1642: 00 : Drop Anchor Push Addr : 1643: 68 : Variable Operation Local Offset - 2 Read Addr : 1644: 05 15 : Call Sub 21 Addr : 1646: JZ Label0004 Addr : 1646: 0A 08 : jz Address = 1650 8 809 fd.tx("*") Addr : 1648: 01 : Drop Anchor Addr : 1649: 38 2A : Constant 1 Bytes - 2A - $0000002A 42 Addr : 164B: 06 2A 09 : Call Obj.Sub 42 9 Addr : 164E: JMP Label0005 Addr : 164E: 04 06 : Jmp 1656 6 Addr : 1650: Label0004 811 fd.tx(" ") Addr : 1650: 01 : Drop Anchor Addr : 1651: 37 04 : Constant Mask Y=4 00000020 32 Addr : 1653: 06 2A 09 : Call Obj.Sub 42 9 Addr : 1656: Label0006 Addr : 1656: Label0005 812 fd.hex(mpc,3) Addr : 1656: 01 : Drop Anchor Addr : 1657: 68 : Variable Operation Local Offset - 2 Read Addr : 1658: 37 21 : Constant Mask Y=33 Decrement 00000003 3 Addr : 165A: 06 2A 0C : Call Obj.Sub 42 12 813 fd.str(string(" ")) Addr : 165D: 01 : Drop Anchor Addr : 165E: PBASE Constant Address of Label0007 Addr : 165E: 87 91 30 : Memory Op Byte PBASE + ADDRESS Address = 1130 Addr : 1661: 06 2A 0A : Call Obj.Sub 42 10 814 fd.str(conditions(mexe)) Addr : 1664: 01 : Drop Anchor Addr : 1665: 00 : Drop Anchor Push Addr : 1666: 7C : Variable Operation Local Offset - 7 Read Addr : 1667: 05 29 : Call Sub 41 Addr : 1669: 06 2A 0A : Call Obj.Sub 42 10 815 fd.str(string(": ")) Addr : 166C: 01 : Drop Anchor Addr : 166D: PBASE Constant Address of Label0008 Addr : 166D: 87 91 32 : Memory Op Byte PBASE + ADDRESS Address = 1132 Addr : 1670: 06 2A 0A : Call Obj.Sub 42 10 818 ostr := ot.get(mop) Addr : 1673: 00 : Drop Anchor Push Addr : 1674: 6C : Variable Operation Local Offset - 3 Read Addr : 1675: 06 2B 01 : Call Obj.Sub 43 1 Addr : 1678: CD 28 : Memory Op Long DBASE + WRITE Address = 0028 819 if strsize(ostr) Addr : 167A: CC 28 : Memory Op Long DBASE + READ Address = 0028 Addr : 167C: 16 : StrSize(String) Addr : 167D: JZ Label0009 Addr : 167D: 0A 08 : jz Address = 1687 8 820 fd.str(ostr) Addr : 167F: 01 : Drop Anchor Addr : 1680: CC 28 : Memory Op Long DBASE + READ Address = 0028 Addr : 1682: 06 2A 0A : Call Obj.Sub 42 10 Addr : 1685: JMP Label000A Addr : 1685: 04 15 : Jmp 169C 21 Addr : 1687: Label0009 823 fd.str(string(" I:")) Addr : 1687: 01 : Drop Anchor Addr : 1688: PBASE Constant Address of Label000C Addr : 1688: 87 91 35 : Memory Op Byte PBASE + ADDRESS Address = 1135 Addr : 168B: 06 2A 0A : Call Obj.Sub 42 10 824 fd.hex(mnst,2) Addr : 168E: 01 : Drop Anchor Addr : 168F: 70 : Variable Operation Local Offset - 4 Read Addr : 1690: 37 00 : Constant Mask Y=0 00000002 2 Addr : 1692: 06 2A 0C : Call Obj.Sub 42 12 825 fd.str(string(" ")) Addr : 1695: 01 : Drop Anchor Addr : 1696: PBASE Constant Address of Label000D Addr : 1696: 87 91 39 : Memory Op Byte PBASE + ADDRESS Address = 1139 Addr : 1699: 06 2A 0A : Call Obj.Sub 42 10 Addr : 169C: Label000B Addr : 169C: Label000A 826 fd.hex(mop,8) Addr : 169C: 01 : Drop Anchor Addr : 169D: 6C : Variable Operation Local Offset - 3 Read Addr : 169E: 37 02 : Constant Mask Y=2 00000008 8 Addr : 16A0: 06 2A 0C : Call Obj.Sub 42 12 Addr : 16A3: Constant Address of Label000E Addr : 16A3: 39 10 D7 : Constant 2 Bytes - 10 D7 - $000010D7 4311 828 case (mflg>>1) & $7 Addr : 16A6: 78 : Variable Operation Local Offset - 6 Read Addr : 16A7: 36 : Constant 2 $00000001 Addr : 16A8: E2 : Math Op >> Addr : 16A9: 37 22 : Constant Mask Y=34 Decrement 00000007 7 Addr : 16AB: E8 : Math Op & 829 $0: fd.str(string(" N")) Addr : 16AC: 35 : Constant 1 $00000000 Addr : 16AD: Case_Value Label000F Addr : 16AD: 0D 24 : Value Case Address = 16D3 36 830 $1: fd.str(string(" ")) Addr : 16AF: 36 : Constant 2 $00000001 Addr : 16B0: Case_Value Label0011 Addr : 16B0: 0D 29 : Value Case Address = 16DB 41 831 $2: fd.str(string(" CN")) Addr : 16B2: 37 00 : Constant Mask Y=0 00000002 2 Addr : 16B4: Case_Value Label0013 Addr : 16B4: 0D 2D : Value Case Address = 16E3 45 832 $3: fd.str(string(" C ")) Addr : 16B6: 37 21 : Constant Mask Y=33 Decrement 00000003 3 Addr : 16B8: Case_Value Label0015 Addr : 16B8: 0D 31 : Value Case Address = 16EB 49 833 $4: fd.str(string(" Z N")) Addr : 16BA: 37 01 : Constant Mask Y=1 00000004 4 Addr : 16BC: Case_Value Label0017 Addr : 16BC: 0D 35 : Value Case Address = 16F3 53 834 $5: fd.str(string(" Z ")) Addr : 16BE: 38 05 : Constant 1 Bytes - 05 - $00000005 5 Addr : 16C0: Case_Value Label0019 Addr : 16C0: 0D 39 : Value Case Address = 16FB 57 835 $6: fd.str(string(" ZCN")) Addr : 16C2: 38 06 : Constant 1 Bytes - 06 - $00000006 6 Addr : 16C4: Case_Value Label001B Addr : 16C4: 0D 3D : Value Case Address = 1703 61 836 $7: fd.str(string(" ZC ")) Addr : 16C6: 37 22 : Constant Mask Y=34 Decrement 00000007 7 Addr : 16C8: Case_Value Label001D Addr : 16C8: 0D 80 40 : Value Case Address = 170B 64 837 other: fd.str(string(" ")) Addr : 16CB: 01 : Drop Anchor Addr : 16CC: PBASE Constant Address of Label001F Addr : 16CC: 87 91 63 : Memory Op Byte PBASE + ADDRESS Address = 1163 Addr : 16CF: 06 2A 0A : Call Obj.Sub 42 10 Addr : 16D2: CaseDone Label001D Addr : 16D2: 0C : Casedone Addr : 16D3: Label000F 829 $0: fd.str(string(" N")) Addr : 16D3: 01 : Drop Anchor Addr : 16D4: PBASE Constant Address of Label0010 Addr : 16D4: 87 91 3B : Memory Op Byte PBASE + ADDRESS Address = 113B Addr : 16D7: 06 2A 0A : Call Obj.Sub 42 10 Addr : 16DA: CaseDone Label000F Addr : 16DA: 0C : Casedone Addr : 16DB: Label0011 830 $1: fd.str(string(" ")) Addr : 16DB: 01 : Drop Anchor Addr : 16DC: PBASE Constant Address of Label0012 Addr : 16DC: 87 91 40 : Memory Op Byte PBASE + ADDRESS Address = 1140 Addr : 16DF: 06 2A 0A : Call Obj.Sub 42 10 Addr : 16E2: CaseDone Label0011 Addr : 16E2: 0C : Casedone Addr : 16E3: Label0013 831 $2: fd.str(string(" CN")) Addr : 16E3: 01 : Drop Anchor Addr : 16E4: PBASE Constant Address of Label0014 Addr : 16E4: 87 91 45 : Memory Op Byte PBASE + ADDRESS Address = 1145 Addr : 16E7: 06 2A 0A : Call Obj.Sub 42 10 Addr : 16EA: CaseDone Label0013 Addr : 16EA: 0C : Casedone Addr : 16EB: Label0015 832 $3: fd.str(string(" C ")) Addr : 16EB: 01 : Drop Anchor Addr : 16EC: PBASE Constant Address of Label0016 Addr : 16EC: 87 91 4A : Memory Op Byte PBASE + ADDRESS Address = 114A Addr : 16EF: 06 2A 0A : Call Obj.Sub 42 10 Addr : 16F2: CaseDone Label0015 Addr : 16F2: 0C : Casedone Addr : 16F3: Label0017 833 $4: fd.str(string(" Z N")) Addr : 16F3: 01 : Drop Anchor Addr : 16F4: PBASE Constant Address of Label0018 Addr : 16F4: 87 91 4F : Memory Op Byte PBASE + ADDRESS Address = 114F Addr : 16F7: 06 2A 0A : Call Obj.Sub 42 10 Addr : 16FA: CaseDone Label0017 Addr : 16FA: 0C : Casedone Addr : 16FB: Label0019 834 $5: fd.str(string(" Z ")) Addr : 16FB: 01 : Drop Anchor Addr : 16FC: PBASE Constant Address of Label001A Addr : 16FC: 87 91 54 : Memory Op Byte PBASE + ADDRESS Address = 1154 Addr : 16FF: 06 2A 0A : Call Obj.Sub 42 10 Addr : 1702: CaseDone Label0019 Addr : 1702: 0C : Casedone Addr : 1703: Label001B 835 $6: fd.str(string(" ZCN")) Addr : 1703: 01 : Drop Anchor Addr : 1704: PBASE Constant Address of Label001C Addr : 1704: 87 91 59 : Memory Op Byte PBASE + ADDRESS Address = 1159 Addr : 1707: 06 2A 0A : Call Obj.Sub 42 10 Addr : 170A: CaseDone Label001B Addr : 170A: 0C : Casedone Addr : 170B: Label001D 836 $7: fd.str(string(" ZC ")) Addr : 170B: 01 : Drop Anchor Addr : 170C: PBASE Constant Address of Label001E Addr : 170C: 87 91 5E : Memory Op Byte PBASE + ADDRESS Address = 115E Addr : 170F: 06 2A 0A : Call Obj.Sub 42 10 Addr : 1712: CaseDone Label001D Addr : 1712: 0C : Casedone Addr : 1713: Label000E 839 fd.str(string(" D:")) Addr : 1713: 01 : Drop Anchor Addr : 1714: PBASE Constant Address of Label0020 Addr : 1714: 87 91 68 : Memory Op Byte PBASE + ADDRESS Address = 1168 Addr : 1717: 06 2A 0A : Call Obj.Sub 42 10 840 dumpaddr(mdst) Addr : 171A: 01 : Drop Anchor Addr : 171B: CC 24 : Memory Op Long DBASE + READ Address = 0024 Addr : 171D: 05 1B : Call Sub 27 842 fd.str(string(" ")) Addr : 171F: 01 : Drop Anchor Addr : 1720: PBASE Constant Address of Label0021 Addr : 1720: 87 91 6C : Memory Op Byte PBASE + ADDRESS Address = 116C Addr : 1723: 06 2A 0A : Call Obj.Sub 42 10 843 fd.hex(bd[task].peek(mdst),8) Addr : 1726: 01 : Drop Anchor Addr : 1727: 00 : Drop Anchor Push Addr : 1728: CC 24 : Memory Op Long DBASE + READ Address = 0024 Addr : 172A: C4 80 C8 : Memory Op Long PBASE + READ Address = 00C8 Addr : 172D: 07 2C 0A : Call Obj.Sub[ ]44 10 Addr : 1730: 37 02 : Constant Mask Y=2 00000008 8 Addr : 1732: 06 2A 0C : Call Obj.Sub 42 12 844 if mi Addr : 1735: 74 : Variable Operation Local Offset - 5 Read Addr : 1736: JZ Label0022 Addr : 1736: 0A 11 : jz Address = 1749 17 845 fd.str(string(" S#")) Addr : 1738: 01 : Drop Anchor Addr : 1739: PBASE Constant Address of Label0024 Addr : 1739: 87 91 6E : Memory Op Byte PBASE + ADDRESS Address = 116E Addr : 173C: 06 2A 0A : Call Obj.Sub 42 10 846 fd.hex(msrc,3) Addr : 173F: 01 : Drop Anchor Addr : 1740: CC 20 : Memory Op Long DBASE + READ Address = 0020 Addr : 1742: 37 21 : Constant Mask Y=33 Decrement 00000003 3 Addr : 1744: 06 2A 0C : Call Obj.Sub 42 12 Addr : 1747: JMP Label0023 Addr : 1747: 04 18 : Jmp 1761 24 Addr : 1749: Label0022 848 fd.str(string(" S:")) Addr : 1749: 01 : Drop Anchor Addr : 174A: PBASE Constant Address of Label0026 Addr : 174A: 87 91 72 : Memory Op Byte PBASE + ADDRESS Address = 1172 Addr : 174D: 06 2A 0A : Call Obj.Sub 42 10 849 dumpaddr(msrc) Addr : 1750: 01 : Drop Anchor Addr : 1751: CC 20 : Memory Op Long DBASE + READ Address = 0020 Addr : 1753: 05 1B : Call Sub 27 851 fd.str(string(" ")) Addr : 1755: 01 : Drop Anchor Addr : 1756: PBASE Constant Address of Label0027 Addr : 1756: 87 91 76 : Memory Op Byte PBASE + ADDRESS Address = 1176 Addr : 1759: 06 2A 0A : Call Obj.Sub 42 10 852 dumpdata(msrc) Addr : 175C: 01 : Drop Anchor Addr : 175D: CC 20 : Memory Op Long DBASE + READ Address = 0020 Addr : 175F: 05 1C : Call Sub 28 Addr : 1761: Label0025 Addr : 1761: Label0023 855 if mi Addr : 1761: 74 : Variable Operation Local Offset - 5 Read Addr : 1762: JZ Label0028 Addr : 1762: 0A 07 : jz Address = 176B 7 856 fd.str(string(" ")) Addr : 1764: 01 : Drop Anchor Addr : 1765: PBASE Constant Address of Label002A Addr : 1765: 87 91 78 : Memory Op Byte PBASE + ADDRESS Address = 1178 Addr : 1768: 06 2A 0A : Call Obj.Sub 42 10 Addr : 176B: Label0028 Addr : 176B: Label0029 Addr : 176B: 32 : Return Addr : 176C: Label0007 Addr : 176C: Data : 20 00 . Addr : 176E: Label0008 Addr : 176E: Data : 3A 20 00 : . Addr : 1771: Label000C Addr : 1771: Data : 20 49 3A 00 I:. Addr : 1775: Label000D Addr : 1775: Data : 20 00 . Addr : 1777: Label0010 Addr : 1777: Data : 20 20 20 4E 00 N. Addr : 177C: Label0012 Addr : 177C: Data : 20 20 20 20 00 . Addr : 1781: Label0014 Addr : 1781: Data : 20 20 43 4E 00 CN. Addr : 1786: Label0016 Addr : 1786: Data : 20 20 43 20 00 C . Addr : 178B: Label0018 Addr : 178B: Data : 20 5A 20 4E 00 Z N. Addr : 1790: Label001A Addr : 1790: Data : 20 5A 20 20 00 Z . Addr : 1795: Label001C Addr : 1795: Data : 20 5A 43 4E 00 ZCN. Addr : 179A: Label001E Addr : 179A: Data : 20 5A 43 20 00 ZC . Addr : 179F: Label001F Addr : 179F: Data : 20 20 20 20 00 . Addr : 17A4: Label0020 Addr : 17A4: Data : 20 44 3A 00 D:. Addr : 17A8: Label0021 Addr : 17A8: Data : 20 00 . Addr : 17AA: Label0024 Addr : 17AA: Data : 20 53 23 00 S#. Addr : 17AE: Label0026 Addr : 17AE: Data : 20 53 3A 00 S:. Addr : 17B2: Label0027 Addr : 17B2: Data : 20 00 . Addr : 17B4: Label002A Addr : 17B4: Data : 20 20 20 20 20 20 20 20 Addr : 17BC: Data : 20 20 00 . |===========================================================================| Spin Block showStatus with 1 Parameters and 4 Extra Stack Longs. Method 40 pri showStatus(mpc) | mop, msrc, mdst, brk Local Parameter DBASE:0000 - Result Local Parameter DBASE:0004 - mpc Local Variable DBASE:0008 - mop Local Variable DBASE:000C - msrc Local Variable DBASE:0010 - mdst Local Variable DBASE:0014 - brk |===========================================================================| 864 mop := bd[task].peek(mpc) Addr : 17BF: 00 : Drop Anchor Push Addr : 17C0: 64 : Variable Operation Local Offset - 1 Read Addr : 17C1: C4 80 C8 : Memory Op Long PBASE + READ Address = 00C8 Addr : 17C4: 07 2C 0A : Call Obj.Sub[ ]44 10 Addr : 17C7: 69 : Variable Operation Local Offset - 2 Write 866 brk := isbreak(mpc) ' isbreak returns instruction Addr : 17C8: 00 : Drop Anchor Push Addr : 17C9: 64 : Variable Operation Local Offset - 1 Read Addr : 17CA: 05 15 : Call Sub 21 Addr : 17CC: 75 : Variable Operation Local Offset - 5 Write 867 if brk Addr : 17CD: 74 : Variable Operation Local Offset - 5 Read Addr : 17CE: JZ Label0002 Addr : 17CE: 0A 02 : jz Address = 17D2 2 868 mop := brk ' replace instruction Addr : 17D0: 74 : Variable Operation Local Offset - 5 Read Addr : 17D1: 69 : Variable Operation Local Offset - 2 Write Addr : 17D2: Label0002 Addr : 17D2: Label0003 870 mdst:= (mop >> bd#OP_D_SHFT) & $1ff Addr : 17D2: 68 : Variable Operation Local Offset - 2 Read Addr : 17D3: 38 09 : Constant 1 Bytes - 09 - $00000009 9 Addr : 17D5: E2 : Math Op >> Addr : 17D6: 37 28 : Constant Mask Y=40 Decrement 000001FF 511 Addr : 17D8: E8 : Math Op & Addr : 17D9: 71 : Variable Operation Local Offset - 4 Write 871 msrc:= (mop >> bd#OP_S_SHFT) & $1ff Addr : 17DA: 68 : Variable Operation Local Offset - 2 Read Addr : 17DB: 35 : Constant 1 $00000000 Addr : 17DC: E2 : Math Op >> Addr : 17DD: 37 28 : Constant Mask Y=40 Decrement 000001FF 511 Addr : 17DF: E8 : Math Op & Addr : 17E0: 6D : Variable Operation Local Offset - 3 Write 873 fd.str(string(" D=")) Addr : 17E1: 01 : Drop Anchor Addr : 17E2: PBASE Constant Address of Label0004 Addr : 17E2: 87 91 DC : Memory Op Byte PBASE + ADDRESS Address = 11DC Addr : 17E5: 06 2A 0A : Call Obj.Sub 42 10 874 dumpaddr(mdst) Addr : 17E8: 01 : Drop Anchor Addr : 17E9: 70 : Variable Operation Local Offset - 4 Read Addr : 17EA: 05 1B : Call Sub 27 875 fd.str(string(" ")) Addr : 17EC: 01 : Drop Anchor Addr : 17ED: PBASE Constant Address of Label0005 Addr : 17ED: 87 91 E0 : Memory Op Byte PBASE + ADDRESS Address = 11E0 Addr : 17F0: 06 2A 0A : Call Obj.Sub 42 10 876 dumpdata(mdst) Addr : 17F3: 01 : Drop Anchor Addr : 17F4: 70 : Variable Operation Local Offset - 4 Read Addr : 17F5: 05 1C : Call Sub 28 878 if bd[task].getZ Addr : 17F7: 00 : Drop Anchor Push Addr : 17F8: C4 80 C8 : Memory Op Long PBASE + READ Address = 00C8 Addr : 17FB: 07 2C 0D : Call Obj.Sub[ ]44 13 Addr : 17FE: JZ Label0006 Addr : 17FE: 0A 07 : jz Address = 1807 7 879 fd.str(string(" Z")) Addr : 1800: 01 : Drop Anchor Addr : 1801: PBASE Constant Address of Label0008 Addr : 1801: 87 91 E2 : Memory Op Byte PBASE + ADDRESS Address = 11E2 Addr : 1804: 06 2A 0A : Call Obj.Sub 42 10 Addr : 1807: Label0006 Addr : 1807: Label0007 880 if bd[task].getC Addr : 1807: 00 : Drop Anchor Push Addr : 1808: C4 80 C8 : Memory Op Long PBASE + READ Address = 00C8 Addr : 180B: 07 2C 0C : Call Obj.Sub[ ]44 12 Addr : 180E: JZ Label0009 Addr : 180E: 0A 07 : jz Address = 1817 7 881 fd.str(string(" C")) Addr : 1810: 01 : Drop Anchor Addr : 1811: PBASE Constant Address of Label000B Addr : 1811: 87 91 E5 : Memory Op Byte PBASE + ADDRESS Address = 11E5 Addr : 1814: 06 2A 0A : Call Obj.Sub 42 10 Addr : 1817: Label0009 Addr : 1817: Label000A Addr : 1817: 32 : Return Addr : 1818: Label0004 Addr : 1818: Data : 20 44 3D 00 D=. Addr : 181C: Label0005 Addr : 181C: Data : 20 00 . Addr : 181E: Label0008 Addr : 181E: Data : 20 5A 00 Z. Addr : 1821: Label000B Addr : 1821: Data : 20 43 00 C. |===========================================================================| Spin Block conditions with 1 Parameters and 0 Extra Stack Longs. Method 41 pri conditions(mexe) Local Parameter DBASE:0000 - Result Local Parameter DBASE:0004 - mexe |===========================================================================| 894 case mexe & $f Addr : 1824: Constant Address of Label0002 Addr : 1824: 39 12 8E : Constant 2 Bytes - 12 8E - $0000128E 4750 Addr : 1827: 64 : Variable Operation Local Offset - 1 Read Addr : 1828: 37 23 : Constant Mask Y=35 Decrement 0000000F 15 Addr : 182A: E8 : Math Op & 895 %0001 : return (string("NC_&_NZ")) Addr : 182B: 36 : Constant 2 $00000001 Addr : 182C: Case_Value Label0003 Addr : 182C: 0D 80 4B : Value Case Address = 187A 75 896 %0010 : return (string("NC_&_Z ")) Addr : 182F: 37 00 : Constant Mask Y=0 00000002 2 Addr : 1831: Case_Value Label0005 Addr : 1831: 0D 80 4B : Value Case Address = 187F 75 897 %0011 : return (string("NC ")) Addr : 1834: 37 21 : Constant Mask Y=33 Decrement 00000003 3 Addr : 1836: Case_Value Label0007 Addr : 1836: 0D 80 4B : Value Case Address = 1884 75 898 %0100 : return (string("C_&_NZ ")) Addr : 1839: 37 01 : Constant Mask Y=1 00000004 4 Addr : 183B: Case_Value Label0009 Addr : 183B: 0D 80 4B : Value Case Address = 1889 75 899 %0101 : return (string("NZ ")) Addr : 183E: 38 05 : Constant 1 Bytes - 05 - $00000005 5 Addr : 1840: Case_Value Label000B Addr : 1840: 0D 80 4B : Value Case Address = 188E 75 900 %0110 : return (string("C_<>_Z ")) Addr : 1843: 38 06 : Constant 1 Bytes - 06 - $00000006 6 Addr : 1845: Case_Value Label000D Addr : 1845: 0D 80 4B : Value Case Address = 1893 75 901 %0111 : return (string("NC_|_NZ")) Addr : 1848: 37 22 : Constant Mask Y=34 Decrement 00000007 7 Addr : 184A: Case_Value Label000F Addr : 184A: 0D 80 4B : Value Case Address = 1898 75 902 %1000 : return (string("C_&_Z ")) Addr : 184D: 37 02 : Constant Mask Y=2 00000008 8 Addr : 184F: Case_Value Label0011 Addr : 184F: 0D 80 4B : Value Case Address = 189D 75 903 %1001 : return (string("C_==_Z ")) Addr : 1852: 38 09 : Constant 1 Bytes - 09 - $00000009 9 Addr : 1854: Case_Value Label0013 Addr : 1854: 0D 80 4B : Value Case Address = 18A2 75 904 %1010 : return (string("Z ")) Addr : 1857: 38 0A : Constant 1 Bytes - 0A - $0000000A 10 Addr : 1859: Case_Value Label0015 Addr : 1859: 0D 80 4B : Value Case Address = 18A7 75 905 %1011 : return (string("NC_|_Z ")) Addr : 185C: 38 0B : Constant 1 Bytes - 0B - $0000000B 11 Addr : 185E: Case_Value Label0017 Addr : 185E: 0D 80 4B : Value Case Address = 18AC 75 906 %1100 : return (string("C ")) Addr : 1861: 38 0C : Constant 1 Bytes - 0C - $0000000C 12 Addr : 1863: Case_Value Label0019 Addr : 1863: 0D 80 4B : Value Case Address = 18B1 75 907 %1101 : return (string("C_|_NZ ")) Addr : 1866: 38 0D : Constant 1 Bytes - 0D - $0000000D 13 Addr : 1868: Case_Value Label001B Addr : 1868: 0D 80 4B : Value Case Address = 18B6 75 908 %1110 : return (string("C_|_Z ")) Addr : 186B: 38 0E : Constant 1 Bytes - 0E - $0000000E 14 Addr : 186D: Case_Value Label001D Addr : 186D: 0D 80 4B : Value Case Address = 18BB 75 909 %0000 : return (string("nop ")) Addr : 1870: 35 : Constant 1 $00000000 Addr : 1871: Case_Value Label001F Addr : 1871: 0D 80 4C : Value Case Address = 18C0 76 910 %1111 : return (string(". ")) Addr : 1874: 37 23 : Constant Mask Y=35 Decrement 0000000F 15 Addr : 1876: Case_Value Label0021 Addr : 1876: 0D 80 4C : Value Case Address = 18C5 76 Addr : 1879: CaseDone Label0021 Addr : 1879: 0C : Casedone Addr : 187A: Label0003 Addr : 187A: PBASE Constant Address of Label0004 Addr : 187A: 87 92 8F : Memory Op Byte PBASE + ADDRESS Address = 128F 895 %0001 : return (string("NC_&_NZ")) Addr : 187D: 33 : Return value Addr : 187E: CaseDone Label0003 Addr : 187E: 0C : Casedone Addr : 187F: Label0005 Addr : 187F: PBASE Constant Address of Label0006 Addr : 187F: 87 92 97 : Memory Op Byte PBASE + ADDRESS Address = 1297 896 %0010 : return (string("NC_&_Z ")) Addr : 1882: 33 : Return value Addr : 1883: CaseDone Label0005 Addr : 1883: 0C : Casedone Addr : 1884: Label0007 Addr : 1884: PBASE Constant Address of Label0008 Addr : 1884: 87 92 9F : Memory Op Byte PBASE + ADDRESS Address = 129F 897 %0011 : return (string("NC ")) Addr : 1887: 33 : Return value Addr : 1888: CaseDone Label0007 Addr : 1888: 0C : Casedone Addr : 1889: Label0009 Addr : 1889: PBASE Constant Address of Label000A Addr : 1889: 87 92 A7 : Memory Op Byte PBASE + ADDRESS Address = 12A7 898 %0100 : return (string("C_&_NZ ")) Addr : 188C: 33 : Return value Addr : 188D: CaseDone Label0009 Addr : 188D: 0C : Casedone Addr : 188E: Label000B Addr : 188E: PBASE Constant Address of Label000C Addr : 188E: 87 92 AF : Memory Op Byte PBASE + ADDRESS Address = 12AF 899 %0101 : return (string("NZ ")) Addr : 1891: 33 : Return value Addr : 1892: CaseDone Label000B Addr : 1892: 0C : Casedone Addr : 1893: Label000D Addr : 1893: PBASE Constant Address of Label000E Addr : 1893: 87 92 B7 : Memory Op Byte PBASE + ADDRESS Address = 12B7 900 %0110 : return (string("C_<>_Z ")) Addr : 1896: 33 : Return value Addr : 1897: CaseDone Label000D Addr : 1897: 0C : Casedone Addr : 1898: Label000F Addr : 1898: PBASE Constant Address of Label0010 Addr : 1898: 87 92 BF : Memory Op Byte PBASE + ADDRESS Address = 12BF 901 %0111 : return (string("NC_|_NZ")) Addr : 189B: 33 : Return value Addr : 189C: CaseDone Label000F Addr : 189C: 0C : Casedone Addr : 189D: Label0011 Addr : 189D: PBASE Constant Address of Label0012 Addr : 189D: 87 92 C7 : Memory Op Byte PBASE + ADDRESS Address = 12C7 902 %1000 : return (string("C_&_Z ")) Addr : 18A0: 33 : Return value Addr : 18A1: CaseDone Label0011 Addr : 18A1: 0C : Casedone Addr : 18A2: Label0013 Addr : 18A2: PBASE Constant Address of Label0014 Addr : 18A2: 87 92 CF : Memory Op Byte PBASE + ADDRESS Address = 12CF 903 %1001 : return (string("C_==_Z ")) Addr : 18A5: 33 : Return value Addr : 18A6: CaseDone Label0013 Addr : 18A6: 0C : Casedone Addr : 18A7: Label0015 Addr : 18A7: PBASE Constant Address of Label0016 Addr : 18A7: 87 92 D7 : Memory Op Byte PBASE + ADDRESS Address = 12D7 904 %1010 : return (string("Z ")) Addr : 18AA: 33 : Return value Addr : 18AB: CaseDone Label0015 Addr : 18AB: 0C : Casedone Addr : 18AC: Label0017 Addr : 18AC: PBASE Constant Address of Label0018 Addr : 18AC: 87 92 DF : Memory Op Byte PBASE + ADDRESS Address = 12DF 905 %1011 : return (string("NC_|_Z ")) Addr : 18AF: 33 : Return value Addr : 18B0: CaseDone Label0017 Addr : 18B0: 0C : Casedone Addr : 18B1: Label0019 Addr : 18B1: PBASE Constant Address of Label001A Addr : 18B1: 87 92 E7 : Memory Op Byte PBASE + ADDRESS Address = 12E7 906 %1100 : return (string("C ")) Addr : 18B4: 33 : Return value Addr : 18B5: CaseDone Label0019 Addr : 18B5: 0C : Casedone Addr : 18B6: Label001B Addr : 18B6: PBASE Constant Address of Label001C Addr : 18B6: 87 92 EF : Memory Op Byte PBASE + ADDRESS Address = 12EF 907 %1101 : return (string("C_|_NZ ")) Addr : 18B9: 33 : Return value Addr : 18BA: CaseDone Label001B Addr : 18BA: 0C : Casedone Addr : 18BB: Label001D Addr : 18BB: PBASE Constant Address of Label001E Addr : 18BB: 87 92 F7 : Memory Op Byte PBASE + ADDRESS Address = 12F7 908 %1110 : return (string("C_|_Z ")) Addr : 18BE: 33 : Return value Addr : 18BF: CaseDone Label001D Addr : 18BF: 0C : Casedone Addr : 18C0: Label001F Addr : 18C0: PBASE Constant Address of Label0020 Addr : 18C0: 87 92 FF : Memory Op Byte PBASE + ADDRESS Address = 12FF 909 %0000 : return (string("nop ")) Addr : 18C3: 33 : Return value Addr : 18C4: CaseDone Label001F Addr : 18C4: 0C : Casedone Addr : 18C5: Label0021 Addr : 18C5: PBASE Constant Address of Label0022 Addr : 18C5: 87 93 07 : Memory Op Byte PBASE + ADDRESS Address = 1307 910 %1111 : return (string(". ")) Addr : 18C8: 33 : Return value Addr : 18C9: CaseDone Label0021 Addr : 18C9: Data : 0C . Addr : 18CA: Label0002 Addr : 18CA: Data : 32 2 Addr : 18CB: Label0004 Addr : 18CB: Data : 4E 43 5F 26 5F 4E 5A 00 NC_&_NZ. Addr : 18D3: Data : Addr : 18D3: Label0006 Addr : 18D3: Data : 4E 43 5F 26 5F 5A 20 00 NC_&_Z . Addr : 18DB: Data : Addr : 18DB: Label0008 Addr : 18DB: Data : 4E 43 20 20 20 20 20 00 NC . Addr : 18E3: Data : Addr : 18E3: Label000A Addr : 18E3: Data : 43 5F 26 5F 4E 5A 20 00 C_&_NZ . Addr : 18EB: Data : Addr : 18EB: Label000C Addr : 18EB: Data : 4E 5A 20 20 20 20 20 00 NZ . Addr : 18F3: Data : Addr : 18F3: Label000E Addr : 18F3: Data : 43 5F 3C 3E 5F 5A 20 00 C_<>_Z . Addr : 18FB: Data : Addr : 18FB: Label0010 Addr : 18FB: Data : 4E 43 5F 7C 5F 4E 5A 00 NC_|_NZ. Addr : 1903: Data : Addr : 1903: Label0012 Addr : 1903: Data : 43 5F 26 5F 5A 20 20 00 C_&_Z . Addr : 190B: Data : Addr : 190B: Label0014 Addr : 190B: Data : 43 5F 3D 3D 5F 5A 20 00 C_==_Z . Addr : 1913: Data : Addr : 1913: Label0016 Addr : 1913: Data : 5A 20 20 20 20 20 20 00 Z . Addr : 191B: Data : Addr : 191B: Label0018 Addr : 191B: Data : 4E 43 5F 7C 5F 5A 20 00 NC_|_Z . Addr : 1923: Data : Addr : 1923: Label001A Addr : 1923: Data : 43 20 20 20 20 20 20 00 C . Addr : 192B: Data : Addr : 192B: Label001C Addr : 192B: Data : 43 5F 7C 5F 4E 5A 20 00 C_|_NZ . Addr : 1933: Data : Addr : 1933: Label001E Addr : 1933: Data : 43 5F 7C 5F 5A 20 20 00 C_|_Z . Addr : 193B: Data : Addr : 193B: Label0020 Addr : 193B: Data : 6E 6F 70 20 20 20 20 00 nop . Addr : 1943: Data : Addr : 1943: Label0022 Addr : 1943: Data : 2E 20 20 20 20 20 20 00 . . Addr : 194B: Data : |===========================================================================| Object BMAopcodes Object Base is 194C |===========================================================================| Object Constants |===========================================================================| |===========================================================================| Spin Block get with 1 Parameters and 4 Extra Stack Longs. Method 1 pub get(instruction) | inst, wres, cond, src Local Parameter DBASE:0000 - Result Local Parameter DBASE:0004 - instruction Local Variable DBASE:0008 - inst Local Variable DBASE:000C - wres Local Variable DBASE:0010 - cond Local Variable DBASE:0014 - src |===========================================================================| 20 inst := (instruction >> 26) & $3f Addr : 1954: 64 : Variable Operation Local Offset - 1 Read Addr : 1955: 38 1A : Constant 1 Bytes - 1A - $0000001A 26 Addr : 1957: E2 : Math Op >> Addr : 1958: 37 25 : Constant Mask Y=37 Decrement 0000003F 63 Addr : 195A: E8 : Math Op & Addr : 195B: 69 : Variable Operation Local Offset - 2 Write 21 wres := (instruction >> 23) & 1 Addr : 195C: 64 : Variable Operation Local Offset - 1 Read Addr : 195D: 38 17 : Constant 1 Bytes - 17 - $00000017 23 Addr : 195F: E2 : Math Op >> Addr : 1960: 36 : Constant 2 $00000001 Addr : 1961: E8 : Math Op & Addr : 1962: 6D : Variable Operation Local Offset - 3 Write 22 cond := (instruction >> 19) & $f Addr : 1963: 64 : Variable Operation Local Offset - 1 Read Addr : 1964: 38 13 : Constant 1 Bytes - 13 - $00000013 19 Addr : 1966: E2 : Math Op >> Addr : 1967: 37 23 : Constant Mask Y=35 Decrement 0000000F 15 Addr : 1969: E8 : Math Op & Addr : 196A: 71 : Variable Operation Local Offset - 4 Write 23 src := instruction & $1ff Addr : 196B: 64 : Variable Operation Local Offset - 1 Read Addr : 196C: 37 28 : Constant Mask Y=40 Decrement 000001FF 511 Addr : 196E: E8 : Math Op & Addr : 196F: 75 : Variable Operation Local Offset - 5 Write 25 ifnot cond Addr : 1970: 70 : Variable Operation Local Offset - 4 Read Addr : 1971: JNZ Label0002 Addr : 1971: 0B 07 : jnz Address = 197A 7 Addr : 1973: PBASE Constant Address of Label0004 Addr : 1973: 87 83 70 : Memory Op Byte PBASE + ADDRESS Address = 0370 26 result := (string("nop ")) Addr : 1976: 61 : Variable Operation Local Offset - 0 Write Addr : 1977: JMP Label0003 Addr : 1977: 04 83 41 : Jmp 1CBB 833 Addr : 197A: Label0002 Addr : 197A: Constant Address of Label0006 Addr : 197A: 39 03 6F : Constant 2 Bytes - 03 6F - $0000036F 879 28 case (inst) Addr : 197D: 68 : Variable Operation Local Offset - 2 Read 29 %000000 : Addr : 197E: 35 : Constant 1 $00000000 Addr : 197F: Case_Value Label0007 Addr : 197F: 0D 81 3B : Value Case Address = 1ABD 315 33 %000001 : case wres Addr : 1982: 36 : Constant 2 $00000001 Addr : 1983: Case_Value Label000D Addr : 1983: 0D 81 4D : Value Case Address = 1AD3 333 36 %000010 : case wres Addr : 1986: 37 00 : Constant Mask Y=0 00000002 2 Addr : 1988: Case_Value Label0013 Addr : 1988: 0D 81 5E : Value Case Address = 1AE9 350 39 %000011 : case src Addr : 198B: 37 21 : Constant Mask Y=33 Decrement 00000003 3 Addr : 198D: Case_Value Label0019 Addr : 198D: 0D 81 6F : Value Case Address = 1AFF 367 48 %000100 : result := (string("mul ")) ' not implemented Addr : 1990: 37 01 : Constant Mask Y=1 00000004 4 Addr : 1992: Case_Value Label002B Addr : 1992: 0D 81 B6 : Value Case Address = 1B4B 438 49 %000101 : result := (string("muls ")) ' not implemented Addr : 1995: 38 05 : Constant 1 Bytes - 05 - $00000005 5 Addr : 1997: Case_Value Label002D Addr : 1997: 0D 81 B6 : Value Case Address = 1B50 438 50 %000110 : result := (string("enc ")) ' not implemented Addr : 199A: 38 06 : Constant 1 Bytes - 06 - $00000006 6 Addr : 199C: Case_Value Label002F Addr : 199C: 0D 81 B6 : Value Case Address = 1B55 438 51 %000111 : result := (string("ones ")) ' not implemented Addr : 199F: 37 22 : Constant Mask Y=34 Decrement 00000007 7 Addr : 19A1: Case_Value Label0031 Addr : 19A1: 0D 81 B6 : Value Case Address = 1B5A 438 52 %001000 : result := (string("ror ")) Addr : 19A4: 37 02 : Constant Mask Y=2 00000008 8 Addr : 19A6: Case_Value Label0033 Addr : 19A6: 0D 81 B6 : Value Case Address = 1B5F 438 53 %001001 : result := (string("rol ")) Addr : 19A9: 38 09 : Constant 1 Bytes - 09 - $00000009 9 Addr : 19AB: Case_Value Label0035 Addr : 19AB: 0D 81 B6 : Value Case Address = 1B64 438 54 %001010 : result := (string("shr ")) Addr : 19AE: 38 0A : Constant 1 Bytes - 0A - $0000000A 10 Addr : 19B0: Case_Value Label0037 Addr : 19B0: 0D 81 B6 : Value Case Address = 1B69 438 55 %001011 : result := (string("shl ")) Addr : 19B3: 38 0B : Constant 1 Bytes - 0B - $0000000B 11 Addr : 19B5: Case_Value Label0039 Addr : 19B5: 0D 81 B6 : Value Case Address = 1B6E 438 56 %001100 : result := (string("rcr ")) Addr : 19B8: 38 0C : Constant 1 Bytes - 0C - $0000000C 12 Addr : 19BA: Case_Value Label003B Addr : 19BA: 0D 81 B6 : Value Case Address = 1B73 438 57 %001101 : result := (string("rcl ")) Addr : 19BD: 38 0D : Constant 1 Bytes - 0D - $0000000D 13 Addr : 19BF: Case_Value Label003D Addr : 19BF: 0D 81 B6 : Value Case Address = 1B78 438 58 %001110 : result := (string("sar ")) Addr : 19C2: 38 0E : Constant 1 Bytes - 0E - $0000000E 14 Addr : 19C4: Case_Value Label003F Addr : 19C4: 0D 81 B6 : Value Case Address = 1B7D 438 59 %001111 : result := (string("rev ")) Addr : 19C7: 37 23 : Constant Mask Y=35 Decrement 0000000F 15 Addr : 19C9: Case_Value Label0041 Addr : 19C9: 0D 81 B6 : Value Case Address = 1B82 438 60 %010000 : result := (string("mins ")) Addr : 19CC: 37 03 : Constant Mask Y=3 00000010 16 Addr : 19CE: Case_Value Label0043 Addr : 19CE: 0D 81 B6 : Value Case Address = 1B87 438 61 %010001 : result := (string("maxs ")) Addr : 19D1: 38 11 : Constant 1 Bytes - 11 - $00000011 17 Addr : 19D3: Case_Value Label0045 Addr : 19D3: 0D 81 B6 : Value Case Address = 1B8C 438 62 %010010 : result := (string("min ")) Addr : 19D6: 38 12 : Constant 1 Bytes - 12 - $00000012 18 Addr : 19D8: Case_Value Label0047 Addr : 19D8: 0D 81 B6 : Value Case Address = 1B91 438 63 %010011 : result := (string("max ")) Addr : 19DB: 38 13 : Constant 1 Bytes - 13 - $00000013 19 Addr : 19DD: Case_Value Label0049 Addr : 19DD: 0D 81 B6 : Value Case Address = 1B96 438 64 %010100 : result := (string("movs ")) Addr : 19E0: 38 14 : Constant 1 Bytes - 14 - $00000014 20 Addr : 19E2: Case_Value Label004B Addr : 19E2: 0D 81 B6 : Value Case Address = 1B9B 438 65 %010101 : result := (string("movd ")) Addr : 19E5: 38 15 : Constant 1 Bytes - 15 - $00000015 21 Addr : 19E7: Case_Value Label004D Addr : 19E7: 0D 81 B6 : Value Case Address = 1BA0 438 66 %010110 : result := (string("movi ")) Addr : 19EA: 38 16 : Constant 1 Bytes - 16 - $00000016 22 Addr : 19EC: Case_Value Label004F Addr : 19EC: 0D 81 B6 : Value Case Address = 1BA5 438 67 %010111 : case wres Addr : 19EF: 38 17 : Constant 1 Bytes - 17 - $00000017 23 Addr : 19F1: Case_Value Label0051 Addr : 19F1: 0D 81 B6 : Value Case Address = 1BAA 438 70 %011000 : case wres Addr : 19F4: 38 18 : Constant 1 Bytes - 18 - $00000018 24 Addr : 19F6: Case_Value Label0057 Addr : 19F6: 0D 81 C7 : Value Case Address = 1BC0 455 73 %011001 : case wres Addr : 19F9: 38 19 : Constant 1 Bytes - 19 - $00000019 25 Addr : 19FB: Case_Value Label005D Addr : 19FB: 0D 81 D8 : Value Case Address = 1BD6 472 76 %011010 : result := (string("or ")) Addr : 19FE: 38 1A : Constant 1 Bytes - 1A - $0000001A 26 Addr : 1A00: Case_Value Label0063 Addr : 1A00: 0D 81 E9 : Value Case Address = 1BEC 489 77 %011011 : result := (string("xor ")) Addr : 1A03: 38 1B : Constant 1 Bytes - 1B - $0000001B 27 Addr : 1A05: Case_Value Label0065 Addr : 1A05: 0D 81 E9 : Value Case Address = 1BF1 489 78 %011100 : result := (string("muxc ")) Addr : 1A08: 38 1C : Constant 1 Bytes - 1C - $0000001C 28 Addr : 1A0A: Case_Value Label0067 Addr : 1A0A: 0D 81 E9 : Value Case Address = 1BF6 489 79 %011101 : result := (string("muxnc ")) Addr : 1A0D: 38 1D : Constant 1 Bytes - 1D - $0000001D 29 Addr : 1A0F: Case_Value Label0069 Addr : 1A0F: 0D 81 E9 : Value Case Address = 1BFB 489 80 %011110 : result := (string("muxz ")) Addr : 1A12: 38 1E : Constant 1 Bytes - 1E - $0000001E 30 Addr : 1A14: Case_Value Label006B Addr : 1A14: 0D 81 E9 : Value Case Address = 1C00 489 81 %011111 : result := (string("muxnz ")) Addr : 1A17: 37 24 : Constant Mask Y=36 Decrement 0000001F 31 Addr : 1A19: Case_Value Label006D Addr : 1A19: 0D 81 E9 : Value Case Address = 1C05 489 82 %100000 : result := (string("add ")) Addr : 1A1C: 37 04 : Constant Mask Y=4 00000020 32 Addr : 1A1E: Case_Value Label006F Addr : 1A1E: 0D 81 E9 : Value Case Address = 1C0A 489 83 %100001 : case wres Addr : 1A21: 38 21 : Constant 1 Bytes - 21 - $00000021 33 Addr : 1A23: Case_Value Label0071 Addr : 1A23: 0D 81 E9 : Value Case Address = 1C0F 489 86 %100010 : result := (string("addabs ")) Addr : 1A26: 38 22 : Constant 1 Bytes - 22 - $00000022 34 Addr : 1A28: Case_Value Label0077 Addr : 1A28: 0D 81 FA : Value Case Address = 1C25 506 87 %100011 : result := (string("subabs ")) Addr : 1A2B: 38 23 : Constant 1 Bytes - 23 - $00000023 35 Addr : 1A2D: Case_Value Label0079 Addr : 1A2D: 0D 81 FA : Value Case Address = 1C2A 506 88 %100100 : result := (string("sumc ")) Addr : 1A30: 38 24 : Constant 1 Bytes - 24 - $00000024 36 Addr : 1A32: Case_Value Label007B Addr : 1A32: 0D 81 FA : Value Case Address = 1C2F 506 89 %100101 : result := (string("sumnc ")) Addr : 1A35: 38 25 : Constant 1 Bytes - 25 - $00000025 37 Addr : 1A37: Case_Value Label007D Addr : 1A37: 0D 81 FA : Value Case Address = 1C34 506 90 %100110 : result := (string("sumz ")) Addr : 1A3A: 38 26 : Constant 1 Bytes - 26 - $00000026 38 Addr : 1A3C: Case_Value Label007F Addr : 1A3C: 0D 81 FA : Value Case Address = 1C39 506 91 %100111 : result := (string("sumnz ")) Addr : 1A3F: 38 27 : Constant 1 Bytes - 27 - $00000027 39 Addr : 1A41: Case_Value Label0081 Addr : 1A41: 0D 81 FA : Value Case Address = 1C3E 506 92 %101000 : result := (string("mov ")) Addr : 1A44: 38 28 : Constant 1 Bytes - 28 - $00000028 40 Addr : 1A46: Case_Value Label0083 Addr : 1A46: 0D 81 FA : Value Case Address = 1C43 506 93 %101001 : result := (string("neg ")) Addr : 1A49: 38 29 : Constant 1 Bytes - 29 - $00000029 41 Addr : 1A4B: Case_Value Label0085 Addr : 1A4B: 0D 81 FA : Value Case Address = 1C48 506 94 %101010 : result := (string("abs ")) Addr : 1A4E: 38 2A : Constant 1 Bytes - 2A - $0000002A 42 Addr : 1A50: Case_Value Label0087 Addr : 1A50: 0D 81 FA : Value Case Address = 1C4D 506 95 %101011 : result := (string("absneg ")) Addr : 1A53: 38 2B : Constant 1 Bytes - 2B - $0000002B 43 Addr : 1A55: Case_Value Label0089 Addr : 1A55: 0D 81 FA : Value Case Address = 1C52 506 96 %101100 : result := (string("negc ")) Addr : 1A58: 38 2C : Constant 1 Bytes - 2C - $0000002C 44 Addr : 1A5A: Case_Value Label008B Addr : 1A5A: 0D 81 FA : Value Case Address = 1C57 506 97 %101101 : result := (string("negnc ")) Addr : 1A5D: 38 2D : Constant 1 Bytes - 2D - $0000002D 45 Addr : 1A5F: Case_Value Label008D Addr : 1A5F: 0D 81 FA : Value Case Address = 1C5C 506 98 %101110 : result := (string("negz ")) Addr : 1A62: 38 2E : Constant 1 Bytes - 2E - $0000002E 46 Addr : 1A64: Case_Value Label008F Addr : 1A64: 0D 81 FA : Value Case Address = 1C61 506 99 %101111 : result := (string("negnz ")) Addr : 1A67: 38 2F : Constant 1 Bytes - 2F - $0000002F 47 Addr : 1A69: Case_Value Label0091 Addr : 1A69: 0D 81 FA : Value Case Address = 1C66 506 100 %110000 : result := (string("cmps ")) Addr : 1A6C: 38 30 : Constant 1 Bytes - 30 - $00000030 48 Addr : 1A6E: Case_Value Label0093 Addr : 1A6E: 0D 81 FA : Value Case Address = 1C6B 506 101 %110001 : result := (string("cmpsx ")) Addr : 1A71: 38 31 : Constant 1 Bytes - 31 - $00000031 49 Addr : 1A73: Case_Value Label0095 Addr : 1A73: 0D 81 FA : Value Case Address = 1C70 506 102 %110010 : result := (string("addx ")) Addr : 1A76: 38 32 : Constant 1 Bytes - 32 - $00000032 50 Addr : 1A78: Case_Value Label0097 Addr : 1A78: 0D 81 FA : Value Case Address = 1C75 506 103 %110011 : result := (string("subx ")) Addr : 1A7B: 38 33 : Constant 1 Bytes - 33 - $00000033 51 Addr : 1A7D: Case_Value Label0099 Addr : 1A7D: 0D 81 FA : Value Case Address = 1C7A 506 104 %110100 : result := (string("adds ")) Addr : 1A80: 38 34 : Constant 1 Bytes - 34 - $00000034 52 Addr : 1A82: Case_Value Label009B Addr : 1A82: 0D 81 FA : Value Case Address = 1C7F 506 105 %110101 : result := (string("subs ")) Addr : 1A85: 38 35 : Constant 1 Bytes - 35 - $00000035 53 Addr : 1A87: Case_Value Label009D Addr : 1A87: 0D 81 FA : Value Case Address = 1C84 506 106 %110110 : result := (string("addsx ")) Addr : 1A8A: 38 36 : Constant 1 Bytes - 36 - $00000036 54 Addr : 1A8C: Case_Value Label009F Addr : 1A8C: 0D 81 FA : Value Case Address = 1C89 506 107 %110111 : result := (string("subsx ")) Addr : 1A8F: 38 37 : Constant 1 Bytes - 37 - $00000037 55 Addr : 1A91: Case_Value Label00A1 Addr : 1A91: 0D 81 FA : Value Case Address = 1C8E 506 108 %111000 : result := (string("cmpsub ")) Addr : 1A94: 38 38 : Constant 1 Bytes - 38 - $00000038 56 Addr : 1A96: Case_Value Label00A3 Addr : 1A96: 0D 81 FA : Value Case Address = 1C93 506 109 %111001 : result := (string("djnz ")) Addr : 1A99: 38 39 : Constant 1 Bytes - 39 - $00000039 57 Addr : 1A9B: Case_Value Label00A5 Addr : 1A9B: 0D 81 FA : Value Case Address = 1C98 506 110 %111010 : result := (string("tjnz ")) Addr : 1A9E: 38 3A : Constant 1 Bytes - 3A - $0000003A 58 Addr : 1AA0: Case_Value Label00A7 Addr : 1AA0: 0D 81 FA : Value Case Address = 1C9D 506 111 %111011 : result := (string("tjz ")) Addr : 1AA3: 38 3B : Constant 1 Bytes - 3B - $0000003B 59 Addr : 1AA5: Case_Value Label00A9 Addr : 1AA5: 0D 81 FA : Value Case Address = 1CA2 506 112 %111100 : result := (string("waitpeq ")) Addr : 1AA8: 38 3C : Constant 1 Bytes - 3C - $0000003C 60 Addr : 1AAA: Case_Value Label00AB Addr : 1AAA: 0D 81 FA : Value Case Address = 1CA7 506 113 %111101 : result := (string("waitpne ")) Addr : 1AAD: 38 3D : Constant 1 Bytes - 3D - $0000003D 61 Addr : 1AAF: Case_Value Label00AD Addr : 1AAF: 0D 81 FA : Value Case Address = 1CAC 506 114 %111110 : result := (string("waitcnt ")) Addr : 1AB2: 38 3E : Constant 1 Bytes - 3E - $0000003E 62 Addr : 1AB4: Case_Value Label00AF Addr : 1AB4: 0D 81 FA : Value Case Address = 1CB1 506 115 %111111 : result := (string("waitvid ")) Addr : 1AB7: 37 25 : Constant Mask Y=37 Decrement 0000003F 63 Addr : 1AB9: Case_Value Label00B1 Addr : 1AB9: 0D 81 FA : Value Case Address = 1CB6 506 Addr : 1ABC: CaseDone Label00B1 Addr : 1ABC: 0C : Casedone Addr : 1ABD: Label0007 Addr : 1ABD: Constant Address of Label0008 Addr : 1ABD: 39 01 86 : Constant 2 Bytes - 01 86 - $00000186 390 30 case wres Addr : 1AC0: 6C : Variable Operation Local Offset - 3 Read 31 0 : result := (string("wrbyte ")) Addr : 1AC1: 35 : Constant 1 $00000000 Addr : 1AC2: Case_Value Label0009 Addr : 1AC2: 0D 04 : Value Case Address = 1AC8 4 32 1 : result := (string("rdbyte ")) Addr : 1AC4: 36 : Constant 2 $00000001 Addr : 1AC5: Case_Value Label000B Addr : 1AC5: 0D 06 : Value Case Address = 1ACD 6 Addr : 1AC7: CaseDone Label000B Addr : 1AC7: 0C : Casedone Addr : 1AC8: Label0009 Addr : 1AC8: PBASE Constant Address of Label000A Addr : 1AC8: 87 83 79 : Memory Op Byte PBASE + ADDRESS Address = 0379 31 0 : result := (string("wrbyte ")) Addr : 1ACB: 61 : Variable Operation Local Offset - 0 Write Addr : 1ACC: CaseDone Label0009 Addr : 1ACC: 0C : Casedone Addr : 1ACD: Label000B Addr : 1ACD: PBASE Constant Address of Label000C Addr : 1ACD: 87 83 82 : Memory Op Byte PBASE + ADDRESS Address = 0382 32 1 : result := (string("rdbyte ")) Addr : 1AD0: 61 : Variable Operation Local Offset - 0 Write Addr : 1AD1: CaseDone Label000B Addr : 1AD1: 0C : Casedone Addr : 1AD2: Label0008 Addr : 1AD2: CaseDone Label0007 Addr : 1AD2: 0C : Casedone Addr : 1AD3: Label000D Addr : 1AD3: Constant Address of Label000E Addr : 1AD3: 39 01 9C : Constant 2 Bytes - 01 9C - $0000019C 412 33 %000001 : case wres Addr : 1AD6: 6C : Variable Operation Local Offset - 3 Read 34 0 : result := (string("wrword ")) Addr : 1AD7: 35 : Constant 1 $00000000 Addr : 1AD8: Case_Value Label000F Addr : 1AD8: 0D 04 : Value Case Address = 1ADE 4 35 1 : result := (string("rdword ")) Addr : 1ADA: 36 : Constant 2 $00000001 Addr : 1ADB: Case_Value Label0011 Addr : 1ADB: 0D 06 : Value Case Address = 1AE3 6 Addr : 1ADD: CaseDone Label0011 Addr : 1ADD: 0C : Casedone Addr : 1ADE: Label000F Addr : 1ADE: PBASE Constant Address of Label0010 Addr : 1ADE: 87 83 8B : Memory Op Byte PBASE + ADDRESS Address = 038B 34 0 : result := (string("wrword ")) Addr : 1AE1: 61 : Variable Operation Local Offset - 0 Write Addr : 1AE2: CaseDone Label000F Addr : 1AE2: 0C : Casedone Addr : 1AE3: Label0011 Addr : 1AE3: PBASE Constant Address of Label0012 Addr : 1AE3: 87 83 94 : Memory Op Byte PBASE + ADDRESS Address = 0394 35 1 : result := (string("rdword ")) Addr : 1AE6: 61 : Variable Operation Local Offset - 0 Write Addr : 1AE7: CaseDone Label0011 Addr : 1AE7: 0C : Casedone Addr : 1AE8: Label000E Addr : 1AE8: CaseDone Label000D Addr : 1AE8: 0C : Casedone Addr : 1AE9: Label0013 Addr : 1AE9: Constant Address of Label0014 Addr : 1AE9: 39 01 B2 : Constant 2 Bytes - 01 B2 - $000001B2 434 36 %000010 : case wres Addr : 1AEC: 6C : Variable Operation Local Offset - 3 Read 37 0 : result := (string("wrlong ")) Addr : 1AED: 35 : Constant 1 $00000000 Addr : 1AEE: Case_Value Label0015 Addr : 1AEE: 0D 04 : Value Case Address = 1AF4 4 38 1 : result := (string("rdlong ")) Addr : 1AF0: 36 : Constant 2 $00000001 Addr : 1AF1: Case_Value Label0017 Addr : 1AF1: 0D 06 : Value Case Address = 1AF9 6 Addr : 1AF3: CaseDone Label0017 Addr : 1AF3: 0C : Casedone Addr : 1AF4: Label0015 Addr : 1AF4: PBASE Constant Address of Label0016 Addr : 1AF4: 87 83 9D : Memory Op Byte PBASE + ADDRESS Address = 039D 37 0 : result := (string("wrlong ")) Addr : 1AF7: 61 : Variable Operation Local Offset - 0 Write Addr : 1AF8: CaseDone Label0015 Addr : 1AF8: 0C : Casedone Addr : 1AF9: Label0017 Addr : 1AF9: PBASE Constant Address of Label0018 Addr : 1AF9: 87 83 A6 : Memory Op Byte PBASE + ADDRESS Address = 03A6 38 1 : result := (string("rdlong ")) Addr : 1AFC: 61 : Variable Operation Local Offset - 0 Write Addr : 1AFD: CaseDone Label0017 Addr : 1AFD: 0C : Casedone Addr : 1AFE: Label0014 Addr : 1AFE: CaseDone Label0013 Addr : 1AFE: 0C : Casedone Addr : 1AFF: Label0019 Addr : 1AFF: Constant Address of Label001A Addr : 1AFF: 39 01 FE : Constant 2 Bytes - 01 FE - $000001FE 510 39 %000011 : case src Addr : 1B02: 74 : Variable Operation Local Offset - 5 Read 40 0 : result := (string("clkset ")) Addr : 1B03: 35 : Constant 1 $00000000 Addr : 1B04: Case_Value Label001B Addr : 1B04: 0D 1C : Value Case Address = 1B22 28 41 1 : result := (string("cogid ")) Addr : 1B06: 36 : Constant 2 $00000001 Addr : 1B07: Case_Value Label001D Addr : 1B07: 0D 1E : Value Case Address = 1B27 30 42 2 : result := (string("coginit ")) Addr : 1B09: 37 00 : Constant Mask Y=0 00000002 2 Addr : 1B0B: Case_Value Label001F Addr : 1B0B: 0D 1F : Value Case Address = 1B2C 31 43 3 : result := (string("cogstop ")) Addr : 1B0D: 37 21 : Constant Mask Y=33 Decrement 00000003 3 Addr : 1B0F: Case_Value Label0021 Addr : 1B0F: 0D 20 : Value Case Address = 1B31 32 44 4 : result := (string("locknew ")) Addr : 1B11: 37 01 : Constant Mask Y=1 00000004 4 Addr : 1B13: Case_Value Label0023 Addr : 1B13: 0D 21 : Value Case Address = 1B36 33 45 5 : result := (string("lockret ")) Addr : 1B15: 38 05 : Constant 1 Bytes - 05 - $00000005 5 Addr : 1B17: Case_Value Label0025 Addr : 1B17: 0D 22 : Value Case Address = 1B3B 34 46 6 : result := (string("lockset ")) Addr : 1B19: 38 06 : Constant 1 Bytes - 06 - $00000006 6 Addr : 1B1B: Case_Value Label0027 Addr : 1B1B: 0D 23 : Value Case Address = 1B40 35 47 7 : result := (string("lockclr ")) Addr : 1B1D: 37 22 : Constant Mask Y=34 Decrement 00000007 7 Addr : 1B1F: Case_Value Label0029 Addr : 1B1F: 0D 24 : Value Case Address = 1B45 36 Addr : 1B21: CaseDone Label0029 Addr : 1B21: 0C : Casedone Addr : 1B22: Label001B Addr : 1B22: PBASE Constant Address of Label001C Addr : 1B22: 87 83 AF : Memory Op Byte PBASE + ADDRESS Address = 03AF 40 0 : result := (string("clkset ")) Addr : 1B25: 61 : Variable Operation Local Offset - 0 Write Addr : 1B26: CaseDone Label001B Addr : 1B26: 0C : Casedone Addr : 1B27: Label001D Addr : 1B27: PBASE Constant Address of Label001E Addr : 1B27: 87 83 B8 : Memory Op Byte PBASE + ADDRESS Address = 03B8 41 1 : result := (string("cogid ")) Addr : 1B2A: 61 : Variable Operation Local Offset - 0 Write Addr : 1B2B: CaseDone Label001D Addr : 1B2B: 0C : Casedone Addr : 1B2C: Label001F Addr : 1B2C: PBASE Constant Address of Label0020 Addr : 1B2C: 87 83 C1 : Memory Op Byte PBASE + ADDRESS Address = 03C1 42 2 : result := (string("coginit ")) Addr : 1B2F: 61 : Variable Operation Local Offset - 0 Write Addr : 1B30: CaseDone Label001F Addr : 1B30: 0C : Casedone Addr : 1B31: Label0021 Addr : 1B31: PBASE Constant Address of Label0022 Addr : 1B31: 87 83 CA : Memory Op Byte PBASE + ADDRESS Address = 03CA 43 3 : result := (string("cogstop ")) Addr : 1B34: 61 : Variable Operation Local Offset - 0 Write Addr : 1B35: CaseDone Label0021 Addr : 1B35: 0C : Casedone Addr : 1B36: Label0023 Addr : 1B36: PBASE Constant Address of Label0024 Addr : 1B36: 87 83 D3 : Memory Op Byte PBASE + ADDRESS Address = 03D3 44 4 : result := (string("locknew ")) Addr : 1B39: 61 : Variable Operation Local Offset - 0 Write Addr : 1B3A: CaseDone Label0023 Addr : 1B3A: 0C : Casedone Addr : 1B3B: Label0025 Addr : 1B3B: PBASE Constant Address of Label0026 Addr : 1B3B: 87 83 DC : Memory Op Byte PBASE + ADDRESS Address = 03DC 45 5 : result := (string("lockret ")) Addr : 1B3E: 61 : Variable Operation Local Offset - 0 Write Addr : 1B3F: CaseDone Label0025 Addr : 1B3F: 0C : Casedone Addr : 1B40: Label0027 Addr : 1B40: PBASE Constant Address of Label0028 Addr : 1B40: 87 83 E5 : Memory Op Byte PBASE + ADDRESS Address = 03E5 46 6 : result := (string("lockset ")) Addr : 1B43: 61 : Variable Operation Local Offset - 0 Write Addr : 1B44: CaseDone Label0027 Addr : 1B44: 0C : Casedone Addr : 1B45: Label0029 Addr : 1B45: PBASE Constant Address of Label002A Addr : 1B45: 87 83 EE : Memory Op Byte PBASE + ADDRESS Address = 03EE 47 7 : result := (string("lockclr ")) Addr : 1B48: 61 : Variable Operation Local Offset - 0 Write Addr : 1B49: CaseDone Label0029 Addr : 1B49: 0C : Casedone Addr : 1B4A: Label001A Addr : 1B4A: CaseDone Label0019 Addr : 1B4A: 0C : Casedone Addr : 1B4B: Label002B Addr : 1B4B: PBASE Constant Address of Label002C Addr : 1B4B: 87 83 F7 : Memory Op Byte PBASE + ADDRESS Address = 03F7 48 %000100 : result := (string("mul ")) ' not implemented Addr : 1B4E: 61 : Variable Operation Local Offset - 0 Write Addr : 1B4F: CaseDone Label002B Addr : 1B4F: 0C : Casedone Addr : 1B50: Label002D Addr : 1B50: PBASE Constant Address of Label002E Addr : 1B50: 87 84 00 : Memory Op Byte PBASE + ADDRESS Address = 0400 49 %000101 : result := (string("muls ")) ' not implemented Addr : 1B53: 61 : Variable Operation Local Offset - 0 Write Addr : 1B54: CaseDone Label002D Addr : 1B54: 0C : Casedone Addr : 1B55: Label002F Addr : 1B55: PBASE Constant Address of Label0030 Addr : 1B55: 87 84 09 : Memory Op Byte PBASE + ADDRESS Address = 0409 50 %000110 : result := (string("enc ")) ' not implemented Addr : 1B58: 61 : Variable Operation Local Offset - 0 Write Addr : 1B59: CaseDone Label002F Addr : 1B59: 0C : Casedone Addr : 1B5A: Label0031 Addr : 1B5A: PBASE Constant Address of Label0032 Addr : 1B5A: 87 84 12 : Memory Op Byte PBASE + ADDRESS Address = 0412 51 %000111 : result := (string("ones ")) ' not implemented Addr : 1B5D: 61 : Variable Operation Local Offset - 0 Write Addr : 1B5E: CaseDone Label0031 Addr : 1B5E: 0C : Casedone Addr : 1B5F: Label0033 Addr : 1B5F: PBASE Constant Address of Label0034 Addr : 1B5F: 87 84 1B : Memory Op Byte PBASE + ADDRESS Address = 041B 52 %001000 : result := (string("ror ")) Addr : 1B62: 61 : Variable Operation Local Offset - 0 Write Addr : 1B63: CaseDone Label0033 Addr : 1B63: 0C : Casedone Addr : 1B64: Label0035 Addr : 1B64: PBASE Constant Address of Label0036 Addr : 1B64: 87 84 24 : Memory Op Byte PBASE + ADDRESS Address = 0424 53 %001001 : result := (string("rol ")) Addr : 1B67: 61 : Variable Operation Local Offset - 0 Write Addr : 1B68: CaseDone Label0035 Addr : 1B68: 0C : Casedone Addr : 1B69: Label0037 Addr : 1B69: PBASE Constant Address of Label0038 Addr : 1B69: 87 84 2D : Memory Op Byte PBASE + ADDRESS Address = 042D 54 %001010 : result := (string("shr ")) Addr : 1B6C: 61 : Variable Operation Local Offset - 0 Write Addr : 1B6D: CaseDone Label0037 Addr : 1B6D: 0C : Casedone Addr : 1B6E: Label0039 Addr : 1B6E: PBASE Constant Address of Label003A Addr : 1B6E: 87 84 36 : Memory Op Byte PBASE + ADDRESS Address = 0436 55 %001011 : result := (string("shl ")) Addr : 1B71: 61 : Variable Operation Local Offset - 0 Write Addr : 1B72: CaseDone Label0039 Addr : 1B72: 0C : Casedone Addr : 1B73: Label003B Addr : 1B73: PBASE Constant Address of Label003C Addr : 1B73: 87 84 3F : Memory Op Byte PBASE + ADDRESS Address = 043F 56 %001100 : result := (string("rcr ")) Addr : 1B76: 61 : Variable Operation Local Offset - 0 Write Addr : 1B77: CaseDone Label003B Addr : 1B77: 0C : Casedone Addr : 1B78: Label003D Addr : 1B78: PBASE Constant Address of Label003E Addr : 1B78: 87 84 48 : Memory Op Byte PBASE + ADDRESS Address = 0448 57 %001101 : result := (string("rcl ")) Addr : 1B7B: 61 : Variable Operation Local Offset - 0 Write Addr : 1B7C: CaseDone Label003D Addr : 1B7C: 0C : Casedone Addr : 1B7D: Label003F Addr : 1B7D: PBASE Constant Address of Label0040 Addr : 1B7D: 87 84 51 : Memory Op Byte PBASE + ADDRESS Address = 0451 58 %001110 : result := (string("sar ")) Addr : 1B80: 61 : Variable Operation Local Offset - 0 Write Addr : 1B81: CaseDone Label003F Addr : 1B81: 0C : Casedone Addr : 1B82: Label0041 Addr : 1B82: PBASE Constant Address of Label0042 Addr : 1B82: 87 84 5A : Memory Op Byte PBASE + ADDRESS Address = 045A 59 %001111 : result := (string("rev ")) Addr : 1B85: 61 : Variable Operation Local Offset - 0 Write Addr : 1B86: CaseDone Label0041 Addr : 1B86: 0C : Casedone Addr : 1B87: Label0043 Addr : 1B87: PBASE Constant Address of Label0044 Addr : 1B87: 87 84 63 : Memory Op Byte PBASE + ADDRESS Address = 0463 60 %010000 : result := (string("mins ")) Addr : 1B8A: 61 : Variable Operation Local Offset - 0 Write Addr : 1B8B: CaseDone Label0043 Addr : 1B8B: 0C : Casedone Addr : 1B8C: Label0045 Addr : 1B8C: PBASE Constant Address of Label0046 Addr : 1B8C: 87 84 6C : Memory Op Byte PBASE + ADDRESS Address = 046C 61 %010001 : result := (string("maxs ")) Addr : 1B8F: 61 : Variable Operation Local Offset - 0 Write Addr : 1B90: CaseDone Label0045 Addr : 1B90: 0C : Casedone Addr : 1B91: Label0047 Addr : 1B91: PBASE Constant Address of Label0048 Addr : 1B91: 87 84 75 : Memory Op Byte PBASE + ADDRESS Address = 0475 62 %010010 : result := (string("min ")) Addr : 1B94: 61 : Variable Operation Local Offset - 0 Write Addr : 1B95: CaseDone Label0047 Addr : 1B95: 0C : Casedone Addr : 1B96: Label0049 Addr : 1B96: PBASE Constant Address of Label004A Addr : 1B96: 87 84 7E : Memory Op Byte PBASE + ADDRESS Address = 047E 63 %010011 : result := (string("max ")) Addr : 1B99: 61 : Variable Operation Local Offset - 0 Write Addr : 1B9A: CaseDone Label0049 Addr : 1B9A: 0C : Casedone Addr : 1B9B: Label004B Addr : 1B9B: PBASE Constant Address of Label004C Addr : 1B9B: 87 84 87 : Memory Op Byte PBASE + ADDRESS Address = 0487 64 %010100 : result := (string("movs ")) Addr : 1B9E: 61 : Variable Operation Local Offset - 0 Write Addr : 1B9F: CaseDone Label004B Addr : 1B9F: 0C : Casedone Addr : 1BA0: Label004D Addr : 1BA0: PBASE Constant Address of Label004E Addr : 1BA0: 87 84 90 : Memory Op Byte PBASE + ADDRESS Address = 0490 65 %010101 : result := (string("movd ")) Addr : 1BA3: 61 : Variable Operation Local Offset - 0 Write Addr : 1BA4: CaseDone Label004D Addr : 1BA4: 0C : Casedone Addr : 1BA5: Label004F Addr : 1BA5: PBASE Constant Address of Label0050 Addr : 1BA5: 87 84 99 : Memory Op Byte PBASE + ADDRESS Address = 0499 66 %010110 : result := (string("movi ")) Addr : 1BA8: 61 : Variable Operation Local Offset - 0 Write Addr : 1BA9: CaseDone Label004F Addr : 1BA9: 0C : Casedone Addr : 1BAA: Label0051 Addr : 1BAA: Constant Address of Label0052 Addr : 1BAA: 39 02 73 : Constant 2 Bytes - 02 73 - $00000273 627 67 %010111 : case wres Addr : 1BAD: 6C : Variable Operation Local Offset - 3 Read 68 0 : result := (string("jmp ")) Addr : 1BAE: 35 : Constant 1 $00000000 Addr : 1BAF: Case_Value Label0053 Addr : 1BAF: 0D 04 : Value Case Address = 1BB5 4 69 1 : result := (string("call ")) Addr : 1BB1: 36 : Constant 2 $00000001 Addr : 1BB2: Case_Value Label0055 Addr : 1BB2: 0D 06 : Value Case Address = 1BBA 6 Addr : 1BB4: CaseDone Label0055 Addr : 1BB4: 0C : Casedone Addr : 1BB5: Label0053 Addr : 1BB5: PBASE Constant Address of Label0054 Addr : 1BB5: 87 84 A2 : Memory Op Byte PBASE + ADDRESS Address = 04A2 68 0 : result := (string("jmp ")) Addr : 1BB8: 61 : Variable Operation Local Offset - 0 Write Addr : 1BB9: CaseDone Label0053 Addr : 1BB9: 0C : Casedone Addr : 1BBA: Label0055 Addr : 1BBA: PBASE Constant Address of Label0056 Addr : 1BBA: 87 84 AB : Memory Op Byte PBASE + ADDRESS Address = 04AB 69 1 : result := (string("call ")) Addr : 1BBD: 61 : Variable Operation Local Offset - 0 Write Addr : 1BBE: CaseDone Label0055 Addr : 1BBE: 0C : Casedone Addr : 1BBF: Label0052 Addr : 1BBF: CaseDone Label0051 Addr : 1BBF: 0C : Casedone Addr : 1BC0: Label0057 Addr : 1BC0: Constant Address of Label0058 Addr : 1BC0: 39 02 89 : Constant 2 Bytes - 02 89 - $00000289 649 70 %011000 : case wres Addr : 1BC3: 6C : Variable Operation Local Offset - 3 Read 71 0 : result := (string("test ")) Addr : 1BC4: 35 : Constant 1 $00000000 Addr : 1BC5: Case_Value Label0059 Addr : 1BC5: 0D 04 : Value Case Address = 1BCB 4 72 1 : result := (string("and ")) Addr : 1BC7: 36 : Constant 2 $00000001 Addr : 1BC8: Case_Value Label005B Addr : 1BC8: 0D 06 : Value Case Address = 1BD0 6 Addr : 1BCA: CaseDone Label005B Addr : 1BCA: 0C : Casedone Addr : 1BCB: Label0059 Addr : 1BCB: PBASE Constant Address of Label005A Addr : 1BCB: 87 84 B4 : Memory Op Byte PBASE + ADDRESS Address = 04B4 71 0 : result := (string("test ")) Addr : 1BCE: 61 : Variable Operation Local Offset - 0 Write Addr : 1BCF: CaseDone Label0059 Addr : 1BCF: 0C : Casedone Addr : 1BD0: Label005B Addr : 1BD0: PBASE Constant Address of Label005C Addr : 1BD0: 87 84 BD : Memory Op Byte PBASE + ADDRESS Address = 04BD 72 1 : result := (string("and ")) Addr : 1BD3: 61 : Variable Operation Local Offset - 0 Write Addr : 1BD4: CaseDone Label005B Addr : 1BD4: 0C : Casedone Addr : 1BD5: Label0058 Addr : 1BD5: CaseDone Label0057 Addr : 1BD5: 0C : Casedone Addr : 1BD6: Label005D Addr : 1BD6: Constant Address of Label005E Addr : 1BD6: 39 02 9F : Constant 2 Bytes - 02 9F - $0000029F 671 73 %011001 : case wres Addr : 1BD9: 6C : Variable Operation Local Offset - 3 Read 74 0 : result := (string("testn ")) Addr : 1BDA: 35 : Constant 1 $00000000 Addr : 1BDB: Case_Value Label005F Addr : 1BDB: 0D 04 : Value Case Address = 1BE1 4 75 1 : result := (string("andn ")) Addr : 1BDD: 36 : Constant 2 $00000001 Addr : 1BDE: Case_Value Label0061 Addr : 1BDE: 0D 06 : Value Case Address = 1BE6 6 Addr : 1BE0: CaseDone Label0061 Addr : 1BE0: 0C : Casedone Addr : 1BE1: Label005F Addr : 1BE1: PBASE Constant Address of Label0060 Addr : 1BE1: 87 84 C6 : Memory Op Byte PBASE + ADDRESS Address = 04C6 74 0 : result := (string("testn ")) Addr : 1BE4: 61 : Variable Operation Local Offset - 0 Write Addr : 1BE5: CaseDone Label005F Addr : 1BE5: 0C : Casedone Addr : 1BE6: Label0061 Addr : 1BE6: PBASE Constant Address of Label0062 Addr : 1BE6: 87 84 CF : Memory Op Byte PBASE + ADDRESS Address = 04CF 75 1 : result := (string("andn ")) Addr : 1BE9: 61 : Variable Operation Local Offset - 0 Write Addr : 1BEA: CaseDone Label0061 Addr : 1BEA: 0C : Casedone Addr : 1BEB: Label005E Addr : 1BEB: CaseDone Label005D Addr : 1BEB: 0C : Casedone Addr : 1BEC: Label0063 Addr : 1BEC: PBASE Constant Address of Label0064 Addr : 1BEC: 87 84 D8 : Memory Op Byte PBASE + ADDRESS Address = 04D8 76 %011010 : result := (string("or ")) Addr : 1BEF: 61 : Variable Operation Local Offset - 0 Write Addr : 1BF0: CaseDone Label0063 Addr : 1BF0: 0C : Casedone Addr : 1BF1: Label0065 Addr : 1BF1: PBASE Constant Address of Label0066 Addr : 1BF1: 87 84 E1 : Memory Op Byte PBASE + ADDRESS Address = 04E1 77 %011011 : result := (string("xor ")) Addr : 1BF4: 61 : Variable Operation Local Offset - 0 Write Addr : 1BF5: CaseDone Label0065 Addr : 1BF5: 0C : Casedone Addr : 1BF6: Label0067 Addr : 1BF6: PBASE Constant Address of Label0068 Addr : 1BF6: 87 84 EA : Memory Op Byte PBASE + ADDRESS Address = 04EA 78 %011100 : result := (string("muxc ")) Addr : 1BF9: 61 : Variable Operation Local Offset - 0 Write Addr : 1BFA: CaseDone Label0067 Addr : 1BFA: 0C : Casedone Addr : 1BFB: Label0069 Addr : 1BFB: PBASE Constant Address of Label006A Addr : 1BFB: 87 84 F3 : Memory Op Byte PBASE + ADDRESS Address = 04F3 79 %011101 : result := (string("muxnc ")) Addr : 1BFE: 61 : Variable Operation Local Offset - 0 Write Addr : 1BFF: CaseDone Label0069 Addr : 1BFF: 0C : Casedone Addr : 1C00: Label006B Addr : 1C00: PBASE Constant Address of Label006C Addr : 1C00: 87 84 FC : Memory Op Byte PBASE + ADDRESS Address = 04FC 80 %011110 : result := (string("muxz ")) Addr : 1C03: 61 : Variable Operation Local Offset - 0 Write Addr : 1C04: CaseDone Label006B Addr : 1C04: 0C : Casedone Addr : 1C05: Label006D Addr : 1C05: PBASE Constant Address of Label006E Addr : 1C05: 87 85 05 : Memory Op Byte PBASE + ADDRESS Address = 0505 81 %011111 : result := (string("muxnz ")) Addr : 1C08: 61 : Variable Operation Local Offset - 0 Write Addr : 1C09: CaseDone Label006D Addr : 1C09: 0C : Casedone Addr : 1C0A: Label006F Addr : 1C0A: PBASE Constant Address of Label0070 Addr : 1C0A: 87 85 0E : Memory Op Byte PBASE + ADDRESS Address = 050E 82 %100000 : result := (string("add ")) Addr : 1C0D: 61 : Variable Operation Local Offset - 0 Write Addr : 1C0E: CaseDone Label006F Addr : 1C0E: 0C : Casedone Addr : 1C0F: Label0071 Addr : 1C0F: Constant Address of Label0072 Addr : 1C0F: 39 02 D8 : Constant 2 Bytes - 02 D8 - $000002D8 728 83 %100001 : case wres Addr : 1C12: 6C : Variable Operation Local Offset - 3 Read 84 0 : result := (string("cmp ")) Addr : 1C13: 35 : Constant 1 $00000000 Addr : 1C14: Case_Value Label0073 Addr : 1C14: 0D 04 : Value Case Address = 1C1A 4 85 1 : result := (string("sub ")) Addr : 1C16: 36 : Constant 2 $00000001 Addr : 1C17: Case_Value Label0075 Addr : 1C17: 0D 06 : Value Case Address = 1C1F 6 Addr : 1C19: CaseDone Label0075 Addr : 1C19: 0C : Casedone Addr : 1C1A: Label0073 Addr : 1C1A: PBASE Constant Address of Label0074 Addr : 1C1A: 87 85 17 : Memory Op Byte PBASE + ADDRESS Address = 0517 84 0 : result := (string("cmp ")) Addr : 1C1D: 61 : Variable Operation Local Offset - 0 Write Addr : 1C1E: CaseDone Label0073 Addr : 1C1E: 0C : Casedone Addr : 1C1F: Label0075 Addr : 1C1F: PBASE Constant Address of Label0076 Addr : 1C1F: 87 85 20 : Memory Op Byte PBASE + ADDRESS Address = 0520 85 1 : result := (string("sub ")) Addr : 1C22: 61 : Variable Operation Local Offset - 0 Write Addr : 1C23: CaseDone Label0075 Addr : 1C23: 0C : Casedone Addr : 1C24: Label0072 Addr : 1C24: CaseDone Label0071 Addr : 1C24: 0C : Casedone Addr : 1C25: Label0077 Addr : 1C25: PBASE Constant Address of Label0078 Addr : 1C25: 87 85 29 : Memory Op Byte PBASE + ADDRESS Address = 0529 86 %100010 : result := (string("addabs ")) Addr : 1C28: 61 : Variable Operation Local Offset - 0 Write Addr : 1C29: CaseDone Label0077 Addr : 1C29: 0C : Casedone Addr : 1C2A: Label0079 Addr : 1C2A: PBASE Constant Address of Label007A Addr : 1C2A: 87 85 32 : Memory Op Byte PBASE + ADDRESS Address = 0532 87 %100011 : result := (string("subabs ")) Addr : 1C2D: 61 : Variable Operation Local Offset - 0 Write Addr : 1C2E: CaseDone Label0079 Addr : 1C2E: 0C : Casedone Addr : 1C2F: Label007B Addr : 1C2F: PBASE Constant Address of Label007C Addr : 1C2F: 87 85 3B : Memory Op Byte PBASE + ADDRESS Address = 053B 88 %100100 : result := (string("sumc ")) Addr : 1C32: 61 : Variable Operation Local Offset - 0 Write Addr : 1C33: CaseDone Label007B Addr : 1C33: 0C : Casedone Addr : 1C34: Label007D Addr : 1C34: PBASE Constant Address of Label007E Addr : 1C34: 87 85 44 : Memory Op Byte PBASE + ADDRESS Address = 0544 89 %100101 : result := (string("sumnc ")) Addr : 1C37: 61 : Variable Operation Local Offset - 0 Write Addr : 1C38: CaseDone Label007D Addr : 1C38: 0C : Casedone Addr : 1C39: Label007F Addr : 1C39: PBASE Constant Address of Label0080 Addr : 1C39: 87 85 4D : Memory Op Byte PBASE + ADDRESS Address = 054D 90 %100110 : result := (string("sumz ")) Addr : 1C3C: 61 : Variable Operation Local Offset - 0 Write Addr : 1C3D: CaseDone Label007F Addr : 1C3D: 0C : Casedone Addr : 1C3E: Label0081 Addr : 1C3E: PBASE Constant Address of Label0082 Addr : 1C3E: 87 85 56 : Memory Op Byte PBASE + ADDRESS Address = 0556 91 %100111 : result := (string("sumnz ")) Addr : 1C41: 61 : Variable Operation Local Offset - 0 Write Addr : 1C42: CaseDone Label0081 Addr : 1C42: 0C : Casedone Addr : 1C43: Label0083 Addr : 1C43: PBASE Constant Address of Label0084 Addr : 1C43: 87 85 5F : Memory Op Byte PBASE + ADDRESS Address = 055F 92 %101000 : result := (string("mov ")) Addr : 1C46: 61 : Variable Operation Local Offset - 0 Write Addr : 1C47: CaseDone Label0083 Addr : 1C47: 0C : Casedone Addr : 1C48: Label0085 Addr : 1C48: PBASE Constant Address of Label0086 Addr : 1C48: 87 85 68 : Memory Op Byte PBASE + ADDRESS Address = 0568 93 %101001 : result := (string("neg ")) Addr : 1C4B: 61 : Variable Operation Local Offset - 0 Write Addr : 1C4C: CaseDone Label0085 Addr : 1C4C: 0C : Casedone Addr : 1C4D: Label0087 Addr : 1C4D: PBASE Constant Address of Label0088 Addr : 1C4D: 87 85 71 : Memory Op Byte PBASE + ADDRESS Address = 0571 94 %101010 : result := (string("abs ")) Addr : 1C50: 61 : Variable Operation Local Offset - 0 Write Addr : 1C51: CaseDone Label0087 Addr : 1C51: 0C : Casedone Addr : 1C52: Label0089 Addr : 1C52: PBASE Constant Address of Label008A Addr : 1C52: 87 85 7A : Memory Op Byte PBASE + ADDRESS Address = 057A 95 %101011 : result := (string("absneg ")) Addr : 1C55: 61 : Variable Operation Local Offset - 0 Write Addr : 1C56: CaseDone Label0089 Addr : 1C56: 0C : Casedone Addr : 1C57: Label008B Addr : 1C57: PBASE Constant Address of Label008C Addr : 1C57: 87 85 83 : Memory Op Byte PBASE + ADDRESS Address = 0583 96 %101100 : result := (string("negc ")) Addr : 1C5A: 61 : Variable Operation Local Offset - 0 Write Addr : 1C5B: CaseDone Label008B Addr : 1C5B: 0C : Casedone Addr : 1C5C: Label008D Addr : 1C5C: PBASE Constant Address of Label008E Addr : 1C5C: 87 85 8C : Memory Op Byte PBASE + ADDRESS Address = 058C 97 %101101 : result := (string("negnc ")) Addr : 1C5F: 61 : Variable Operation Local Offset - 0 Write Addr : 1C60: CaseDone Label008D Addr : 1C60: 0C : Casedone Addr : 1C61: Label008F Addr : 1C61: PBASE Constant Address of Label0090 Addr : 1C61: 87 85 95 : Memory Op Byte PBASE + ADDRESS Address = 0595 98 %101110 : result := (string("negz ")) Addr : 1C64: 61 : Variable Operation Local Offset - 0 Write Addr : 1C65: CaseDone Label008F Addr : 1C65: 0C : Casedone Addr : 1C66: Label0091 Addr : 1C66: PBASE Constant Address of Label0092 Addr : 1C66: 87 85 9E : Memory Op Byte PBASE + ADDRESS Address = 059E 99 %101111 : result := (string("negnz ")) Addr : 1C69: 61 : Variable Operation Local Offset - 0 Write Addr : 1C6A: CaseDone Label0091 Addr : 1C6A: 0C : Casedone Addr : 1C6B: Label0093 Addr : 1C6B: PBASE Constant Address of Label0094 Addr : 1C6B: 87 85 A7 : Memory Op Byte PBASE + ADDRESS Address = 05A7 100 %110000 : result := (string("cmps ")) Addr : 1C6E: 61 : Variable Operation Local Offset - 0 Write Addr : 1C6F: CaseDone Label0093 Addr : 1C6F: 0C : Casedone Addr : 1C70: Label0095 Addr : 1C70: PBASE Constant Address of Label0096 Addr : 1C70: 87 85 B0 : Memory Op Byte PBASE + ADDRESS Address = 05B0 101 %110001 : result := (string("cmpsx ")) Addr : 1C73: 61 : Variable Operation Local Offset - 0 Write Addr : 1C74: CaseDone Label0095 Addr : 1C74: 0C : Casedone Addr : 1C75: Label0097 Addr : 1C75: PBASE Constant Address of Label0098 Addr : 1C75: 87 85 B9 : Memory Op Byte PBASE + ADDRESS Address = 05B9 102 %110010 : result := (string("addx ")) Addr : 1C78: 61 : Variable Operation Local Offset - 0 Write Addr : 1C79: CaseDone Label0097 Addr : 1C79: 0C : Casedone Addr : 1C7A: Label0099 Addr : 1C7A: PBASE Constant Address of Label009A Addr : 1C7A: 87 85 C2 : Memory Op Byte PBASE + ADDRESS Address = 05C2 103 %110011 : result := (string("subx ")) Addr : 1C7D: 61 : Variable Operation Local Offset - 0 Write Addr : 1C7E: CaseDone Label0099 Addr : 1C7E: 0C : Casedone Addr : 1C7F: Label009B Addr : 1C7F: PBASE Constant Address of Label009C Addr : 1C7F: 87 85 CB : Memory Op Byte PBASE + ADDRESS Address = 05CB 104 %110100 : result := (string("adds ")) Addr : 1C82: 61 : Variable Operation Local Offset - 0 Write Addr : 1C83: CaseDone Label009B Addr : 1C83: 0C : Casedone Addr : 1C84: Label009D Addr : 1C84: PBASE Constant Address of Label009E Addr : 1C84: 87 85 D4 : Memory Op Byte PBASE + ADDRESS Address = 05D4 105 %110101 : result := (string("subs ")) Addr : 1C87: 61 : Variable Operation Local Offset - 0 Write Addr : 1C88: CaseDone Label009D Addr : 1C88: 0C : Casedone Addr : 1C89: Label009F Addr : 1C89: PBASE Constant Address of Label00A0 Addr : 1C89: 87 85 DD : Memory Op Byte PBASE + ADDRESS Address = 05DD 106 %110110 : result := (string("addsx ")) Addr : 1C8C: 61 : Variable Operation Local Offset - 0 Write Addr : 1C8D: CaseDone Label009F Addr : 1C8D: 0C : Casedone Addr : 1C8E: Label00A1 Addr : 1C8E: PBASE Constant Address of Label00A2 Addr : 1C8E: 87 85 E6 : Memory Op Byte PBASE + ADDRESS Address = 05E6 107 %110111 : result := (string("subsx ")) Addr : 1C91: 61 : Variable Operation Local Offset - 0 Write Addr : 1C92: CaseDone Label00A1 Addr : 1C92: 0C : Casedone Addr : 1C93: Label00A3 Addr : 1C93: PBASE Constant Address of Label00A4 Addr : 1C93: 87 85 EF : Memory Op Byte PBASE + ADDRESS Address = 05EF 108 %111000 : result := (string("cmpsub ")) Addr : 1C96: 61 : Variable Operation Local Offset - 0 Write Addr : 1C97: CaseDone Label00A3 Addr : 1C97: 0C : Casedone Addr : 1C98: Label00A5 Addr : 1C98: PBASE Constant Address of Label00A6 Addr : 1C98: 87 85 F8 : Memory Op Byte PBASE + ADDRESS Address = 05F8 109 %111001 : result := (string("djnz ")) Addr : 1C9B: 61 : Variable Operation Local Offset - 0 Write Addr : 1C9C: CaseDone Label00A5 Addr : 1C9C: 0C : Casedone Addr : 1C9D: Label00A7 Addr : 1C9D: PBASE Constant Address of Label00A8 Addr : 1C9D: 87 86 01 : Memory Op Byte PBASE + ADDRESS Address = 0601 110 %111010 : result := (string("tjnz ")) Addr : 1CA0: 61 : Variable Operation Local Offset - 0 Write Addr : 1CA1: CaseDone Label00A7 Addr : 1CA1: 0C : Casedone Addr : 1CA2: Label00A9 Addr : 1CA2: PBASE Constant Address of Label00AA Addr : 1CA2: 87 86 0A : Memory Op Byte PBASE + ADDRESS Address = 060A 111 %111011 : result := (string("tjz ")) Addr : 1CA5: 61 : Variable Operation Local Offset - 0 Write Addr : 1CA6: CaseDone Label00A9 Addr : 1CA6: 0C : Casedone Addr : 1CA7: Label00AB Addr : 1CA7: PBASE Constant Address of Label00AC Addr : 1CA7: 87 86 13 : Memory Op Byte PBASE + ADDRESS Address = 0613 112 %111100 : result := (string("waitpeq ")) Addr : 1CAA: 61 : Variable Operation Local Offset - 0 Write Addr : 1CAB: CaseDone Label00AB Addr : 1CAB: 0C : Casedone Addr : 1CAC: Label00AD Addr : 1CAC: PBASE Constant Address of Label00AE Addr : 1CAC: 87 86 1C : Memory Op Byte PBASE + ADDRESS Address = 061C 113 %111101 : result := (string("waitpne ")) Addr : 1CAF: 61 : Variable Operation Local Offset - 0 Write Addr : 1CB0: CaseDone Label00AD Addr : 1CB0: 0C : Casedone Addr : 1CB1: Label00AF Addr : 1CB1: PBASE Constant Address of Label00B0 Addr : 1CB1: 87 86 25 : Memory Op Byte PBASE + ADDRESS Address = 0625 114 %111110 : result := (string("waitcnt ")) Addr : 1CB4: 61 : Variable Operation Local Offset - 0 Write Addr : 1CB5: CaseDone Label00AF Addr : 1CB5: 0C : Casedone Addr : 1CB6: Label00B1 Addr : 1CB6: PBASE Constant Address of Label00B2 Addr : 1CB6: 87 86 2E : Memory Op Byte PBASE + ADDRESS Address = 062E 115 %111111 : result := (string("waitvid ")) Addr : 1CB9: 61 : Variable Operation Local Offset - 0 Write Addr : 1CBA: CaseDone Label00B1 Addr : 1CBA: 0C : Casedone Addr : 1CBB: Label0006 Addr : 1CBB: Label0005 Addr : 1CBB: Label0003 Addr : 1CBB: 32 : Return Addr : 1CBC: Label0004 Addr : 1CBC: Data : 6E 6F 70 20 20 20 20 20 nop Addr : 1CC4: Data : 00 . Addr : 1CC5: Label000A Addr : 1CC5: Data : 77 72 62 79 74 65 20 20 wrbyte Addr : 1CCD: Data : 00 . Addr : 1CCE: Label000C Addr : 1CCE: Data : 72 64 62 79 74 65 20 20 rdbyte Addr : 1CD6: Data : 00 . Addr : 1CD7: Label0010 Addr : 1CD7: Data : 77 72 77 6F 72 64 20 20 wrword Addr : 1CDF: Data : 00 . Addr : 1CE0: Label0012 Addr : 1CE0: Data : 72 64 77 6F 72 64 20 20 rdword Addr : 1CE8: Data : 00 . Addr : 1CE9: Label0016 Addr : 1CE9: Data : 77 72 6C 6F 6E 67 20 20 wrlong Addr : 1CF1: Data : 00 . Addr : 1CF2: Label0018 Addr : 1CF2: Data : 72 64 6C 6F 6E 67 20 20 rdlong Addr : 1CFA: Data : 00 . Addr : 1CFB: Label001C Addr : 1CFB: Data : 63 6C 6B 73 65 74 20 20 clkset Addr : 1D03: Data : 00 . Addr : 1D04: Label001E Addr : 1D04: Data : 63 6F 67 69 64 20 20 20 cogid Addr : 1D0C: Data : 00 . Addr : 1D0D: Label0020 Addr : 1D0D: Data : 63 6F 67 69 6E 69 74 20 coginit Addr : 1D15: Data : 00 . Addr : 1D16: Label0022 Addr : 1D16: Data : 63 6F 67 73 74 6F 70 20 cogstop Addr : 1D1E: Data : 00 . Addr : 1D1F: Label0024 Addr : 1D1F: Data : 6C 6F 63 6B 6E 65 77 20 locknew Addr : 1D27: Data : 00 . Addr : 1D28: Label0026 Addr : 1D28: Data : 6C 6F 63 6B 72 65 74 20 lockret Addr : 1D30: Data : 00 . Addr : 1D31: Label0028 Addr : 1D31: Data : 6C 6F 63 6B 73 65 74 20 lockset Addr : 1D39: Data : 00 . Addr : 1D3A: Label002A Addr : 1D3A: Data : 6C 6F 63 6B 63 6C 72 20 lockclr Addr : 1D42: Data : 00 . Addr : 1D43: Label002C Addr : 1D43: Data : 6D 75 6C 20 20 20 20 20 mul Addr : 1D4B: Data : 00 . Addr : 1D4C: Label002E Addr : 1D4C: Data : 6D 75 6C 73 20 20 20 20 muls Addr : 1D54: Data : 00 . Addr : 1D55: Label0030 Addr : 1D55: Data : 65 6E 63 20 20 20 20 20 enc Addr : 1D5D: Data : 00 . Addr : 1D5E: Label0032 Addr : 1D5E: Data : 6F 6E 65 73 20 20 20 20 ones Addr : 1D66: Data : 00 . Addr : 1D67: Label0034 Addr : 1D67: Data : 72 6F 72 20 20 20 20 20 ror Addr : 1D6F: Data : 00 . Addr : 1D70: Label0036 Addr : 1D70: Data : 72 6F 6C 20 20 20 20 20 rol Addr : 1D78: Data : 00 . Addr : 1D79: Label0038 Addr : 1D79: Data : 73 68 72 20 20 20 20 20 shr Addr : 1D81: Data : 00 . Addr : 1D82: Label003A Addr : 1D82: Data : 73 68 6C 20 20 20 20 20 shl Addr : 1D8A: Data : 00 . Addr : 1D8B: Label003C Addr : 1D8B: Data : 72 63 72 20 20 20 20 20 rcr Addr : 1D93: Data : 00 . Addr : 1D94: Label003E Addr : 1D94: Data : 72 63 6C 20 20 20 20 20 rcl Addr : 1D9C: Data : 00 . Addr : 1D9D: Label0040 Addr : 1D9D: Data : 73 61 72 20 20 20 20 20 sar Addr : 1DA5: Data : 00 . Addr : 1DA6: Label0042 Addr : 1DA6: Data : 72 65 76 20 20 20 20 20 rev Addr : 1DAE: Data : 00 . Addr : 1DAF: Label0044 Addr : 1DAF: Data : 6D 69 6E 73 20 20 20 20 mins Addr : 1DB7: Data : 00 . Addr : 1DB8: Label0046 Addr : 1DB8: Data : 6D 61 78 73 20 20 20 20 maxs Addr : 1DC0: Data : 00 . Addr : 1DC1: Label0048 Addr : 1DC1: Data : 6D 69 6E 20 20 20 20 20 min Addr : 1DC9: Data : 00 . Addr : 1DCA: Label004A Addr : 1DCA: Data : 6D 61 78 20 20 20 20 20 max Addr : 1DD2: Data : 00 . Addr : 1DD3: Label004C Addr : 1DD3: Data : 6D 6F 76 73 20 20 20 20 movs Addr : 1DDB: Data : 00 . Addr : 1DDC: Label004E Addr : 1DDC: Data : 6D 6F 76 64 20 20 20 20 movd Addr : 1DE4: Data : 00 . Addr : 1DE5: Label0050 Addr : 1DE5: Data : 6D 6F 76 69 20 20 20 20 movi Addr : 1DED: Data : 00 . Addr : 1DEE: Label0054 Addr : 1DEE: Data : 6A 6D 70 20 20 20 20 20 jmp Addr : 1DF6: Data : 00 . Addr : 1DF7: Label0056 Addr : 1DF7: Data : 63 61 6C 6C 20 20 20 20 call Addr : 1DFF: Data : 00 . Addr : 1E00: Label005A Addr : 1E00: Data : 74 65 73 74 20 20 20 20 test Addr : 1E08: Data : 00 . Addr : 1E09: Label005C Addr : 1E09: Data : 61 6E 64 20 20 20 20 20 and Addr : 1E11: Data : 00 . Addr : 1E12: Label0060 Addr : 1E12: Data : 74 65 73 74 6E 20 20 20 testn Addr : 1E1A: Data : 00 . Addr : 1E1B: Label0062 Addr : 1E1B: Data : 61 6E 64 6E 20 20 20 20 andn Addr : 1E23: Data : 00 . Addr : 1E24: Label0064 Addr : 1E24: Data : 6F 72 20 20 20 20 20 20 or Addr : 1E2C: Data : 00 . Addr : 1E2D: Label0066 Addr : 1E2D: Data : 78 6F 72 20 20 20 20 20 xor Addr : 1E35: Data : 00 . Addr : 1E36: Label0068 Addr : 1E36: Data : 6D 75 78 63 20 20 20 20 muxc Addr : 1E3E: Data : 00 . Addr : 1E3F: Label006A Addr : 1E3F: Data : 6D 75 78 6E 63 20 20 20 muxnc Addr : 1E47: Data : 00 . Addr : 1E48: Label006C Addr : 1E48: Data : 6D 75 78 7A 20 20 20 20 muxz Addr : 1E50: Data : 00 . Addr : 1E51: Label006E Addr : 1E51: Data : 6D 75 78 6E 7A 20 20 20 muxnz Addr : 1E59: Data : 00 . Addr : 1E5A: Label0070 Addr : 1E5A: Data : 61 64 64 20 20 20 20 20 add Addr : 1E62: Data : 00 . Addr : 1E63: Label0074 Addr : 1E63: Data : 63 6D 70 20 20 20 20 20 cmp Addr : 1E6B: Data : 00 . Addr : 1E6C: Label0076 Addr : 1E6C: Data : 73 75 62 20 20 20 20 20 sub Addr : 1E74: Data : 00 . Addr : 1E75: Label0078 Addr : 1E75: Data : 61 64 64 61 62 73 20 20 addabs Addr : 1E7D: Data : 00 . Addr : 1E7E: Label007A Addr : 1E7E: Data : 73 75 62 61 62 73 20 20 subabs Addr : 1E86: Data : 00 . Addr : 1E87: Label007C Addr : 1E87: Data : 73 75 6D 63 20 20 20 20 sumc Addr : 1E8F: Data : 00 . Addr : 1E90: Label007E Addr : 1E90: Data : 73 75 6D 6E 63 20 20 20 sumnc Addr : 1E98: Data : 00 . Addr : 1E99: Label0080 Addr : 1E99: Data : 73 75 6D 7A 20 20 20 20 sumz Addr : 1EA1: Data : 00 . Addr : 1EA2: Label0082 Addr : 1EA2: Data : 73 75 6D 6E 7A 20 20 20 sumnz Addr : 1EAA: Data : 00 . Addr : 1EAB: Label0084 Addr : 1EAB: Data : 6D 6F 76 20 20 20 20 20 mov Addr : 1EB3: Data : 00 . Addr : 1EB4: Label0086 Addr : 1EB4: Data : 6E 65 67 20 20 20 20 20 neg Addr : 1EBC: Data : 00 . Addr : 1EBD: Label0088 Addr : 1EBD: Data : 61 62 73 20 20 20 20 20 abs Addr : 1EC5: Data : 00 . Addr : 1EC6: Label008A Addr : 1EC6: Data : 61 62 73 6E 65 67 20 20 absneg Addr : 1ECE: Data : 00 . Addr : 1ECF: Label008C Addr : 1ECF: Data : 6E 65 67 63 20 20 20 20 negc Addr : 1ED7: Data : 00 . Addr : 1ED8: Label008E Addr : 1ED8: Data : 6E 65 67 6E 63 20 20 20 negnc Addr : 1EE0: Data : 00 . Addr : 1EE1: Label0090 Addr : 1EE1: Data : 6E 65 67 7A 20 20 20 20 negz Addr : 1EE9: Data : 00 . Addr : 1EEA: Label0092 Addr : 1EEA: Data : 6E 65 67 6E 7A 20 20 20 negnz Addr : 1EF2: Data : 00 . Addr : 1EF3: Label0094 Addr : 1EF3: Data : 63 6D 70 73 20 20 20 20 cmps Addr : 1EFB: Data : 00 . Addr : 1EFC: Label0096 Addr : 1EFC: Data : 63 6D 70 73 78 20 20 20 cmpsx Addr : 1F04: Data : 00 . Addr : 1F05: Label0098 Addr : 1F05: Data : 61 64 64 78 20 20 20 20 addx Addr : 1F0D: Data : 00 . Addr : 1F0E: Label009A Addr : 1F0E: Data : 73 75 62 78 20 20 20 20 subx Addr : 1F16: Data : 00 . Addr : 1F17: Label009C Addr : 1F17: Data : 61 64 64 73 20 20 20 20 adds Addr : 1F1F: Data : 00 . Addr : 1F20: Label009E Addr : 1F20: Data : 73 75 62 73 20 20 20 20 subs Addr : 1F28: Data : 00 . Addr : 1F29: Label00A0 Addr : 1F29: Data : 61 64 64 73 78 20 20 20 addsx Addr : 1F31: Data : 00 . Addr : 1F32: Label00A2 Addr : 1F32: Data : 73 75 62 73 78 20 20 20 subsx Addr : 1F3A: Data : 00 . Addr : 1F3B: Label00A4 Addr : 1F3B: Data : 63 6D 70 73 75 62 20 20 cmpsub Addr : 1F43: Data : 00 . Addr : 1F44: Label00A6 Addr : 1F44: Data : 64 6A 6E 7A 20 20 20 20 djnz Addr : 1F4C: Data : 00 . Addr : 1F4D: Label00A8 Addr : 1F4D: Data : 74 6A 6E 7A 20 20 20 20 tjnz Addr : 1F55: Data : 00 . Addr : 1F56: Label00AA Addr : 1F56: Data : 74 6A 7A 20 20 20 20 20 tjz Addr : 1F5E: Data : 00 . Addr : 1F5F: Label00AC Addr : 1F5F: Data : 77 61 69 74 70 65 71 20 waitpeq Addr : 1F67: Data : 00 . Addr : 1F68: Label00AE Addr : 1F68: Data : 77 61 69 74 70 6E 65 20 waitpne Addr : 1F70: Data : 00 . Addr : 1F71: Label00B0 Addr : 1F71: Data : 77 61 69 74 63 6E 74 20 waitcnt Addr : 1F79: Data : 00 . Addr : 1F7A: Label00B2 Addr : 1F7A: Data : 77 61 69 74 76 69 64 20 waitvid Addr : 1F82: Data : 00 . |===========================================================================| Object BMADebugger Object Base is 1F84 |===========================================================================| Object Constants |===========================================================================| |===========================================================================| VBASE Global Variables |===========================================================================| VBASE : 0000 LONG Size 0004 Variable cog_pc VBASE : 0004 LONG Size 0004 Variable idptr VBASE : 0008 LONG Size 0040 Variable brkdat VBASE : 0048 WORD Size 0002 Variable brkcnt VBASE : 004A WORD Size 0020 Variable brkpts |===========================================================================| |===========================================================================| Spin Block start with 3 Parameters and 0 Extra Stack Longs. Method 1 pub start(entryp, parmp, task) Local Parameter DBASE:0000 - Result Local Parameter DBASE:0004 - entryp Local Parameter DBASE:0008 - parmp Local Parameter DBASE:000C - task |===========================================================================| 25 cog_pc := p#PC Addr : 1FEC: 37 02 : Constant Mask Y=2 00000008 8 Addr : 1FEE: 41 : Variable Operation Global Offset - 0 Write 26 p.copystub(entryp) ' copy stub to my code Addr : 1FEF: 01 : Drop Anchor Addr : 1FF0: 64 : Variable Operation Local Offset - 1 Read Addr : 1FF1: 06 18 02 : Call Obj.Sub 24 2 27 p.start(entryp, parmp, task) Addr : 1FF4: 01 : Drop Anchor Addr : 1FF5: 64 : Variable Operation Local Offset - 1 Read Addr : 1FF6: 68 : Variable Operation Local Offset - 2 Read Addr : 1FF7: 6C : Variable Operation Local Offset - 3 Read Addr : 1FF8: 06 18 01 : Call Obj.Sub 24 1 Addr : 1FFB: 32 : Return |===========================================================================| Spin Block pcstart with 0 Parameters and 0 Extra Stack Longs. Method 2 pub pcstart Local Parameter DBASE:0000 - Result |===========================================================================| 30 return p#PC Addr : 1FFC: 37 02 : Constant Mask Y=2 00000008 8 Addr : 1FFE: 33 : Return value Addr : 1FFF: Data : 32 2 |===========================================================================| Spin Block setId with 1 Parameters and 0 Extra Stack Longs. Method 3 pub setId(ptr) Local Parameter DBASE:0000 - Result Local Parameter DBASE:0004 - ptr |===========================================================================| 33 idptr := ptr Addr : 2000: 64 : Variable Operation Local Offset - 1 Read Addr : 2001: 45 : Variable Operation Global Offset - 1 Write Addr : 2002: 32 : Return |===========================================================================| Spin Block getId with 0 Parameters and 0 Extra Stack Longs. Method 4 pub getId Local Parameter DBASE:0000 - Result |===========================================================================| 36 return idptr Addr : 2003: 44 : Variable Operation Global Offset - 1 Read Addr : 2004: 33 : Return value Addr : 2005: Data : 32 2 |===========================================================================| Spin Block singleStep with 0 Parameters and 11 Extra Stack Longs. Method 5 pub singleStep | opc, exec, jump, jumpret, dest, c, nc, z, nz, v, addr Local Parameter DBASE:0000 - Result Local Variable DBASE:0004 - opc Local Variable DBASE:0008 - exec Local Variable DBASE:000C - jump Local Variable DBASE:0010 - jumpret Local Variable DBASE:0014 - dest Local Variable DBASE:0018 - c Local Variable DBASE:001C - nc Local Variable DBASE:0020 - z Local Variable DBASE:0024 - nz Local Variable DBASE:0028 - v Local Variable DBASE:002C - addr |===========================================================================| 84 opc := Peek(cog_pc) 'get the opcode Addr : 2006: 00 : Drop Anchor Push Addr : 2007: 40 : Variable Operation Global Offset - 0 Read Addr : 2008: 05 0A : Call Sub 10 Addr : 200A: 65 : Variable Operation Local Offset - 1 Write 85 cog_pc++ 'next addr ... modified if jump Addr : 200B: 42 2E : Variable Operation Global Offset - 0 Assign VAR++ post inc Long 88 exec := getCondition(opc) Addr : 200D: 00 : Drop Anchor Push Addr : 200E: 64 : Variable Operation Local Offset - 1 Read Addr : 200F: 05 17 : Call Sub 23 Addr : 2011: 69 : Variable Operation Local Offset - 2 Write 92 if exec Addr : 2012: 68 : Variable Operation Local Offset - 2 Read Addr : 2013: JZ Label0002 Addr : 2013: 0A 80 DA : jz Address = 20F0 218 94 jump~ Addr : 2016: 6E 18 : Variable Operation Local Offset - 3 Assign VAR~ Post-clear 95 jumpret~ Addr : 2018: 72 18 : Variable Operation Local Offset - 4 Assign VAR~ Post-clear 96 v := (opc >> OP_OPC_SHFT) & $3F Addr : 201A: 64 : Variable Operation Local Offset - 1 Read Addr : 201B: 38 1A : Constant 1 Bytes - 1A - $0000001A 26 Addr : 201D: E2 : Math Op >> Addr : 201E: 37 25 : Constant Mask Y=37 Decrement 0000003F 63 Addr : 2020: E8 : Math Op & Addr : 2021: CD 28 : Memory Op Long DBASE + WRITE Address = 0028 Addr : 2023: Constant Address of Label0004 Addr : 2023: 39 01 20 : Constant 2 Bytes - 01 20 - $00000120 288 97 case v Addr : 2026: CC 28 : Memory Op Long DBASE + READ Address = 0028 98 %111001 : 'djnz (test and decrement) Addr : 2028: 38 39 : Constant 1 Bytes - 39 - $00000039 57 Addr : 202A: Case_Value Label0005 Addr : 202A: 0D 0E : Value Case Address = 203A 14 106 %111010 : 'tjnz Addr : 202C: 38 3A : Constant 1 Bytes - 3A - $0000003A 58 Addr : 202E: Case_Value Label0009 Addr : 202E: 0D 2F : Value Case Address = 205F 47 108 %111011 : 'tjz Addr : 2030: 38 3B : Constant 1 Bytes - 3B - $0000003B 59 Addr : 2032: Case_Value Label000A Addr : 2032: 0D 39 : Value Case Address = 206D 57 110 %010111 : 'jmp/jmpret/ret/call Addr : 2034: 38 17 : Constant 1 Bytes - 17 - $00000017 23 Addr : 2036: Case_Value Label000B Addr : 2036: 0D 80 42 : Value Case Address = 207B 66 Addr : 2039: CaseDone Label000B Addr : 2039: 0C : Casedone Addr : 203A: Label0005 99 addr := (opc >> OP_D_SHFT ) & $1FF Addr : 203A: 64 : Variable Operation Local Offset - 1 Read Addr : 203B: 38 09 : Constant 1 Bytes - 09 - $00000009 9 Addr : 203D: E2 : Math Op >> Addr : 203E: 37 28 : Constant Mask Y=40 Decrement 000001FF 511 Addr : 2040: E8 : Math Op & Addr : 2041: CD 2C : Memory Op Long DBASE + WRITE Address = 002C 100 v := peek(addr) Addr : 2043: 00 : Drop Anchor Push Addr : 2044: CC 2C : Memory Op Long DBASE + READ Address = 002C Addr : 2046: 05 0A : Call Sub 10 Addr : 2048: CD 28 : Memory Op Long DBASE + WRITE Address = 0028 101 if v > 1 Addr : 204A: CC 28 : Memory Op Long DBASE + READ Address = 0028 Addr : 204C: 36 : Constant 2 $00000001 Addr : 204D: FA : Math Op > Addr : 204E: JZ Label0006 Addr : 204E: 0A 0D : jz Address = 205D 13 102 poke(addr,v-1) Addr : 2050: 01 : Drop Anchor Addr : 2051: CC 2C : Memory Op Long DBASE + READ Address = 002C Addr : 2053: CC 28 : Memory Op Long DBASE + READ Address = 0028 Addr : 2055: 36 : Constant 2 $00000001 Addr : 2056: ED : Math Op - Addr : 2057: 05 0B : Call Sub 11 103 jump~~ Addr : 2059: 6E 1C : Variable Operation Local Offset - 3 Assign VAR~~ Post-set Addr : 205B: JMP Label0007 Addr : 205B: 04 01 : Jmp 205E 1 Addr : 205D: Label0006 105 return Addr : 205D: 32 : Return Addr : 205E: Label0008 Addr : 205E: Label0007 Addr : 205E: CaseDone Label0005 Addr : 205E: 0C : Casedone Addr : 205F: Label0009 107 jump := peek((opc >> OP_D_SHFT ) & $1FF) <> 0 Addr : 205F: 00 : Drop Anchor Push Addr : 2060: 64 : Variable Operation Local Offset - 1 Read Addr : 2061: 38 09 : Constant 1 Bytes - 09 - $00000009 9 Addr : 2063: E2 : Math Op >> Addr : 2064: 37 28 : Constant Mask Y=40 Decrement 000001FF 511 Addr : 2066: E8 : Math Op & Addr : 2067: 05 0A : Call Sub 10 Addr : 2069: 35 : Constant 1 $00000000 Addr : 206A: FB : Math Op <> Addr : 206B: 6D : Variable Operation Local Offset - 3 Write Addr : 206C: CaseDone Label0009 Addr : 206C: 0C : Casedone Addr : 206D: Label000A 109 jump := peek((opc >> OP_D_SHFT ) & $1FF) == 0 Addr : 206D: 00 : Drop Anchor Push Addr : 206E: 64 : Variable Operation Local Offset - 1 Read Addr : 206F: 38 09 : Constant 1 Bytes - 09 - $00000009 9 Addr : 2071: E2 : Math Op >> Addr : 2072: 37 28 : Constant Mask Y=40 Decrement 000001FF 511 Addr : 2074: E8 : Math Op & Addr : 2075: 05 0A : Call Sub 10 Addr : 2077: 35 : Constant 1 $00000000 Addr : 2078: FC : Math Op == Addr : 2079: 6D : Variable Operation Local Offset - 3 Write Addr : 207A: CaseDone Label000A Addr : 207A: 0C : Casedone Addr : 207B: Label000B 111 jump~~ Addr : 207B: 6E 1C : Variable Operation Local Offset - 3 Assign VAR~~ Post-set 112 if opc & OP_R Addr : 207D: 64 : Variable Operation Local Offset - 1 Read Addr : 207E: 37 16 : Constant Mask Y=22 00800000 8388608 Addr : 2080: E8 : Math Op & Addr : 2081: JZ Label000C Addr : 2081: 0A 02 : jz Address = 2085 2 113 jumpret := cog_pc Addr : 2083: 40 : Variable Operation Global Offset - 0 Read Addr : 2084: 71 : Variable Operation Local Offset - 4 Write Addr : 2085: Label000C Addr : 2085: Label000D 116 if opc & OP_Z Addr : 2085: 64 : Variable Operation Local Offset - 1 Read Addr : 2086: 37 18 : Constant Mask Y=24 02000000 33554432 Addr : 2088: E8 : Math Op & Addr : 2089: JZ Label000E Addr : 2089: 0A 18 : jz Address = 20A3 24 117 dest := peek((opc >> OP_D_SHFT ) & $1FF) Addr : 208B: 00 : Drop Anchor Push Addr : 208C: 64 : Variable Operation Local Offset - 1 Read Addr : 208D: 38 09 : Constant 1 Bytes - 09 - $00000009 9 Addr : 208F: E2 : Math Op >> Addr : 2090: 37 28 : Constant Mask Y=40 Decrement 000001FF 511 Addr : 2092: E8 : Math Op & Addr : 2093: 05 0A : Call Sub 10 Addr : 2095: 75 : Variable Operation Local Offset - 5 Write 118 if dest Addr : 2096: 74 : Variable Operation Local Offset - 5 Read Addr : 2097: JZ Label0010 Addr : 2097: 0A 06 : jz Address = 209F 6 119 p.clrz Addr : 2099: 01 : Drop Anchor Addr : 209A: 06 18 08 : Call Obj.Sub 24 8 Addr : 209D: JMP Label0011 Addr : 209D: 04 04 : Jmp 20A3 4 Addr : 209F: Label0010 121 p.setz Addr : 209F: 01 : Drop Anchor Addr : 20A0: 06 18 09 : Call Obj.Sub 24 9 Addr : 20A3: Label0012 Addr : 20A3: Label0011 Addr : 20A3: Label000E Addr : 20A3: Label000F Addr : 20A3: CaseDone Label000B Addr : 20A3: 0C : Casedone Addr : 20A4: Label0004 130 if jump 'adjust PC if a jump Addr : 20A4: 6C : Variable Operation Local Offset - 3 Read Addr : 20A5: JZ Label0013 Addr : 20A5: 0A 80 44 : jz Address = 20EC 68 Addr : 20A8: Constant Address of Label0015 Addr : 20A8: 39 01 46 : Constant 2 Bytes - 01 46 - $00000146 326 132 case (opc >> OP_ZCRI_SHFT) & $01 'immediate? Addr : 20AB: 64 : Variable Operation Local Offset - 1 Read Addr : 20AC: 38 16 : Constant 1 Bytes - 16 - $00000016 22 Addr : 20AE: E2 : Math Op >> Addr : 20AF: 36 : Constant 2 $00000001 Addr : 20B0: E8 : Math Op & 133 0 : cog_pc := Peek(opc & $1FF) & $1FF 'src_data Addr : 20B1: 35 : Constant 1 $00000000 Addr : 20B2: Case_Value Label0016 Addr : 20B2: 0D 04 : Value Case Address = 20B8 4 134 1 : cog_pc := opc & $1FF '#src_data Addr : 20B4: 36 : Constant 2 $00000001 Addr : 20B5: Case_Value Label0017 Addr : 20B5: 0D 0D : Value Case Address = 20C4 13 Addr : 20B7: CaseDone Label0017 Addr : 20B7: 0C : Casedone Addr : 20B8: Label0016 133 0 : cog_pc := Peek(opc & $1FF) & $1FF 'src_data Addr : 20B8: 00 : Drop Anchor Push Addr : 20B9: 64 : Variable Operation Local Offset - 1 Read Addr : 20BA: 37 28 : Constant Mask Y=40 Decrement 000001FF 511 Addr : 20BC: E8 : Math Op & Addr : 20BD: 05 0A : Call Sub 10 Addr : 20BF: 37 28 : Constant Mask Y=40 Decrement 000001FF 511 Addr : 20C1: E8 : Math Op & Addr : 20C2: 41 : Variable Operation Global Offset - 0 Write Addr : 20C3: CaseDone Label0016 Addr : 20C3: 0C : Casedone Addr : 20C4: Label0017 134 1 : cog_pc := opc & $1FF '#src_data Addr : 20C4: 64 : Variable Operation Local Offset - 1 Read Addr : 20C5: 37 28 : Constant Mask Y=40 Decrement 000001FF 511 Addr : 20C7: E8 : Math Op & Addr : 20C8: 41 : Variable Operation Global Offset - 0 Write Addr : 20C9: CaseDone Label0017 Addr : 20C9: 0C : Casedone Addr : 20CA: Label0015 136 if jump ' don't run jump instructions Addr : 20CA: 6C : Variable Operation Local Offset - 3 Read Addr : 20CB: JZ Label0018 Addr : 20CB: 0A 1F : jz Address = 20EC 31 137 if jumpret Addr : 20CD: 70 : Variable Operation Local Offset - 4 Read Addr : 20CE: JZ Label001A Addr : 20CE: 0A 1B : jz Address = 20EB 27 138 addr := (opc >> OP_D_SHFT) & $1FF Addr : 20D0: 64 : Variable Operation Local Offset - 1 Read Addr : 20D1: 38 09 : Constant 1 Bytes - 09 - $00000009 9 Addr : 20D3: E2 : Math Op >> Addr : 20D4: 37 28 : Constant Mask Y=40 Decrement 000001FF 511 Addr : 20D6: E8 : Math Op & Addr : 20D7: CD 2C : Memory Op Long DBASE + WRITE Address = 002C 139 dest := Peek(addr) Addr : 20D9: 00 : Drop Anchor Push Addr : 20DA: CC 2C : Memory Op Long DBASE + READ Address = 002C Addr : 20DC: 05 0A : Call Sub 10 Addr : 20DE: 75 : Variable Operation Local Offset - 5 Write 140 poke(addr, (dest & !$1FF) | jumpret) Addr : 20DF: 01 : Drop Anchor Addr : 20E0: CC 2C : Memory Op Long DBASE + READ Address = 002C Addr : 20E2: 74 : Variable Operation Local Offset - 5 Read Addr : 20E3: 37 28 : Constant Mask Y=40 Decrement 000001FF 511 Addr : 20E5: E7 : Math Op ! Addr : 20E6: E8 : Math Op & Addr : 20E7: 70 : Variable Operation Local Offset - 4 Read Addr : 20E8: EA : Math Op | Addr : 20E9: 05 0B : Call Sub 11 Addr : 20EB: Label001A Addr : 20EB: Label001B 142 return Addr : 20EB: 32 : Return Addr : 20EC: Label0018 Addr : 20EC: Label0019 Addr : 20EC: Label0013 Addr : 20EC: Label0014 144 Execute(opc) 'execute the opc Addr : 20EC: 01 : Drop Anchor Addr : 20ED: 64 : Variable Operation Local Offset - 1 Read Addr : 20EE: 05 09 : Call Sub 9 Addr : 20F0: Label0002 Addr : 20F0: Label0003 Addr : 20F0: 32 : Return |===========================================================================| Spin Block pc with 0 Parameters and 0 Extra Stack Longs. Method 6 pub pc Local Parameter DBASE:0000 - Result |===========================================================================| 177 return cog_pc Addr : 20F1: 40 : Variable Operation Global Offset - 0 Read Addr : 20F2: 33 : Return value Addr : 20F3: Data : 32 2 |===========================================================================| Spin Block pcp with 0 Parameters and 0 Extra Stack Longs. Method 7 pub pcp Local Parameter DBASE:0000 - Result |===========================================================================| 180 return @cog_pc Addr : 20F4: 43 : Variable Operation Global Offset - 0 Address Addr : 20F5: 33 : Return value Addr : 20F6: Data : 32 2 |===========================================================================| Spin Block instruction with 0 Parameters and 0 Extra Stack Longs. Method 8 pub instruction Local Parameter DBASE:0000 - Result |===========================================================================| 183 return p.read(cog_pc) Addr : 20F7: 00 : Drop Anchor Push Addr : 20F8: 40 : Variable Operation Global Offset - 0 Read Addr : 20F9: 06 18 04 : Call Obj.Sub 24 4 Addr : 20FC: 33 : Return value Addr : 20FD: Data : 32 2 |===========================================================================| Spin Block Execute with 1 Parameters and 0 Extra Stack Longs. Method 9 pub Execute(myopc) Local Parameter DBASE:0000 - Result Local Parameter DBASE:0004 - myopc |===========================================================================| 186 p.run(myopc) Addr : 20FE: 01 : Drop Anchor Addr : 20FF: 64 : Variable Operation Local Offset - 1 Read Addr : 2100: 06 18 03 : Call Obj.Sub 24 3 Addr : 2103: 32 : Return |===========================================================================| Spin Block peek with 1 Parameters and 0 Extra Stack Longs. Method 10 pub peek(myaddr) Local Parameter DBASE:0000 - Result Local Parameter DBASE:0004 - myaddr |===========================================================================| 189 return p.read(myaddr) Addr : 2104: 00 : Drop Anchor Push Addr : 2105: 64 : Variable Operation Local Offset - 1 Read Addr : 2106: 06 18 04 : Call Obj.Sub 24 4 Addr : 2109: 33 : Return value Addr : 210A: Data : 32 2 |===========================================================================| Spin Block poke with 2 Parameters and 0 Extra Stack Longs. Method 11 pub poke(myaddr,myval) Local Parameter DBASE:0000 - Result Local Parameter DBASE:0004 - myaddr Local Parameter DBASE:0008 - myval |===========================================================================| 192 p.write(myaddr,myval) Addr : 210B: 01 : Drop Anchor Addr : 210C: 64 : Variable Operation Local Offset - 1 Read Addr : 210D: 68 : Variable Operation Local Offset - 2 Read Addr : 210E: 06 18 05 : Call Obj.Sub 24 5 Addr : 2111: 32 : Return |===========================================================================| Spin Block getc with 0 Parameters and 0 Extra Stack Longs. Method 12 pub getc Local Parameter DBASE:0000 - Result |===========================================================================| 195 return p.getc Addr : 2112: 00 : Drop Anchor Push Addr : 2113: 06 18 06 : Call Obj.Sub 24 6 Addr : 2116: 33 : Return value Addr : 2117: Data : 32 2 |===========================================================================| Spin Block getz with 0 Parameters and 0 Extra Stack Longs. Method 13 pub getz Local Parameter DBASE:0000 - Result |===========================================================================| 198 return p.getz Addr : 2118: 00 : Drop Anchor Push Addr : 2119: 06 18 07 : Call Obj.Sub 24 7 Addr : 211C: 33 : Return value Addr : 211D: Data : 32 2 |===========================================================================| Spin Block getreg with 1 Parameters and 0 Extra Stack Longs. Method 14 pub getreg(addr) Local Parameter DBASE:0000 - Result Local Parameter DBASE:0004 - addr |===========================================================================| 201 return p.getreg(addr) Addr : 211E: 00 : Drop Anchor Push Addr : 211F: 64 : Variable Operation Local Offset - 1 Read Addr : 2120: 06 18 0A : Call Obj.Sub 24 10 Addr : 2123: 33 : Return value Addr : 2124: Data : 32 2 |===========================================================================| Spin Block setreg with 2 Parameters and 0 Extra Stack Longs. Method 15 pub setreg(addr, val) Local Parameter DBASE:0000 - Result Local Parameter DBASE:0004 - addr Local Parameter DBASE:0008 - val |===========================================================================| 204 return p.setreg(addr, val) Addr : 2125: 00 : Drop Anchor Push Addr : 2126: 64 : Variable Operation Local Offset - 1 Read Addr : 2127: 68 : Variable Operation Local Offset - 2 Read Addr : 2128: 06 18 0B : Call Obj.Sub 24 11 Addr : 212B: 33 : Return value Addr : 212C: Data : 32 2 |===========================================================================| Spin Block addBreak with 2 Parameters and 1 Extra Stack Longs. Method 16 pub addBreak(adr,brkjmp) | n Local Parameter DBASE:0000 - Result Local Parameter DBASE:0004 - adr Local Parameter DBASE:0008 - brkjmp Local Variable DBASE:000C - n |===========================================================================| 226 repeat n from 0 to brkcnt Addr : 212D: 35 : Constant 1 $00000000 Addr : 212E: 6D : Variable Operation Local Offset - 3 Write Addr : 212F: Label0002 227 if brkpts[n] == adr Addr : 212F: 6C : Variable Operation Local Offset - 3 Read Addr : 2130: B8 4A : Memory Op Word VBASE + POP Index READ Address = 004A Addr : 2132: 64 : Variable Operation Local Offset - 1 Read Addr : 2133: FC : Math Op == Addr : 2134: JZ Label0005 Addr : 2134: 0A 01 : jz Address = 2137 1 228 return ' brk already set Addr : 2136: 32 : Return Addr : 2137: Label0005 Addr : 2137: Label0006 Addr : 2137: Label0003 226 repeat n from 0 to brkcnt Addr : 2137: 35 : Constant 1 $00000000 Addr : 2138: A8 48 : Memory Op Word VBASE + READ Address = 0048 Addr : 213A: Repeat n Step Label0002 Addr : 213A: 6E 02 72 : Variable Operation Local Offset - 3 Assign Repeat-Var loop Address= 212F -14 Addr : 213D: Label0004 229 if brkcnt < MAXBRKPTS Addr : 213D: A8 48 : Memory Op Word VBASE + READ Address = 0048 Addr : 213F: 37 03 : Constant Mask Y=3 00000010 16 Addr : 2141: F9 : Math Op < Addr : 2142: JZ Label0007 Addr : 2142: 0A 1D : jz Address = 2161 29 230 brkpts[brkcnt] := word[@adr] Addr : 2144: 67 : Variable Operation Local Offset - 1 Address Addr : 2145: A0 : Memory Op Word POP Address READ Addr : 2146: A8 48 : Memory Op Word VBASE + READ Address = 0048 Addr : 2148: B9 4A : Memory Op Word VBASE + POP Index WRITE Address = 004A 231 brkdat[brkcnt] := peek(adr) Addr : 214A: 00 : Drop Anchor Push Addr : 214B: 64 : Variable Operation Local Offset - 1 Read Addr : 214C: 05 0A : Call Sub 10 Addr : 214E: A8 48 : Memory Op Word VBASE + READ Address = 0048 Addr : 2150: D9 08 : Memory Op Long VBASE + POP Index WRITE Address = 0008 238 poke(adr, brkjmp) Addr : 2152: 01 : Drop Anchor Addr : 2153: 64 : Variable Operation Local Offset - 1 Read Addr : 2154: 68 : Variable Operation Local Offset - 2 Read Addr : 2155: 05 0B : Call Sub 11 239 brkcnt++ Addr : 2157: AA 48 2C : Memory Op Word VBASE + ASSIGN Address = 0048 VAR++ post inc Word 240 brkpts[brkcnt] := $CAFE Addr : 215A: 39 CA FE : Constant 2 Bytes - CA FE - $0000CAFE 51966 Addr : 215D: A8 48 : Memory Op Word VBASE + READ Address = 0048 Addr : 215F: B9 4A : Memory Op Word VBASE + POP Index WRITE Address = 004A Addr : 2161: Label0007 Addr : 2161: Label0008 Addr : 2161: 32 : Return |===========================================================================| Spin Block delBreak with 1 Parameters and 2 Extra Stack Longs. Method 17 pub delBreak(adr) | n, m Local Parameter DBASE:0000 - Result Local Parameter DBASE:0004 - adr Local Variable DBASE:0008 - n Local Variable DBASE:000C - m |===========================================================================| 243 n := brkcnt Addr : 2162: A8 48 : Memory Op Word VBASE + READ Address = 0048 Addr : 2164: 69 : Variable Operation Local Offset - 2 Write 244 repeat brkcnt Addr : 2165: A8 48 : Memory Op Word VBASE + READ Address = 0048 Addr : 2167: TJZ Label0004 Addr : 2167: 08 36 : tjz Address = 219F 54 Addr : 2169: Label0002 245 if brkpts[n-1] == word[@adr] ' cast as a word or it won't work Addr : 2169: 68 : Variable Operation Local Offset - 2 Read Addr : 216A: 36 : Constant 2 $00000001 Addr : 216B: ED : Math Op - Addr : 216C: B8 4A : Memory Op Word VBASE + POP Index READ Address = 004A Addr : 216E: 67 : Variable Operation Local Offset - 1 Address Addr : 216F: A0 : Memory Op Word POP Address READ Addr : 2170: FC : Math Op == Addr : 2171: JZ Label0005 Addr : 2171: 0A 28 : jz Address = 219B 40 246 poke(adr, brkdat[n-1]) Addr : 2173: 01 : Drop Anchor Addr : 2174: 64 : Variable Operation Local Offset - 1 Read Addr : 2175: 68 : Variable Operation Local Offset - 2 Read Addr : 2176: 36 : Constant 2 $00000001 Addr : 2177: ED : Math Op - Addr : 2178: D8 08 : Memory Op Long VBASE + POP Index READ Address = 0008 Addr : 217A: 05 0B : Call Sub 11 247 repeat m from n-1 to brkcnt Addr : 217C: 68 : Variable Operation Local Offset - 2 Read Addr : 217D: 36 : Constant 2 $00000001 Addr : 217E: ED : Math Op - Addr : 217F: 6D : Variable Operation Local Offset - 3 Write Addr : 2180: Label0007 248 brkpts[m] := brkpts[m+1] Addr : 2180: 6C : Variable Operation Local Offset - 3 Read Addr : 2181: 36 : Constant 2 $00000001 Addr : 2182: EC : Math Op + Addr : 2183: B8 4A : Memory Op Word VBASE + POP Index READ Address = 004A Addr : 2185: 6C : Variable Operation Local Offset - 3 Read Addr : 2186: B9 4A : Memory Op Word VBASE + POP Index WRITE Address = 004A 249 brkdat[m] := brkdat[m+1] Addr : 2188: 6C : Variable Operation Local Offset - 3 Read Addr : 2189: 36 : Constant 2 $00000001 Addr : 218A: EC : Math Op + Addr : 218B: D8 08 : Memory Op Long VBASE + POP Index READ Address = 0008 Addr : 218D: 6C : Variable Operation Local Offset - 3 Read Addr : 218E: D9 08 : Memory Op Long VBASE + POP Index WRITE Address = 0008 Addr : 2190: Label0008 247 repeat m from n-1 to brkcnt Addr : 2190: 68 : Variable Operation Local Offset - 2 Read Addr : 2191: 36 : Constant 2 $00000001 Addr : 2192: ED : Math Op - Addr : 2193: A8 48 : Memory Op Word VBASE + READ Address = 0048 Addr : 2195: Repeat m Step Label0007 Addr : 2195: 6E 02 68 : Variable Operation Local Offset - 3 Assign Repeat-Var loop Address= 2180 -24 Addr : 2198: Label0009 250 brkcnt-- Addr : 2198: AA 48 3C : Memory Op Word VBASE + ASSIGN Address = 0048 VAR-- post-dec Word Addr : 219B: Label0005 Addr : 219B: Label0006 251 n-- Addr : 219B: 6A 3E : Variable Operation Local Offset - 2 Assign VAR-- post-dec Long Addr : 219D: Label0003 Addr : 219D: DJNZ Label0002 Addr : 219D: 09 4A : djnz Address = 2169 -54 Addr : 219F: Label0004 Addr : 219F: 32 : Return |===========================================================================| Spin Block isBreak with 1 Parameters and 1 Extra Stack Longs. Method 18 pub isBreak(adr) | n Local Parameter DBASE:0000 - Result Local Parameter DBASE:0004 - adr Local Variable DBASE:0008 - n |===========================================================================| 255 ifnot adr Addr : 21A0: 64 : Variable Operation Local Offset - 1 Read Addr : 21A1: JNZ Label0002 Addr : 21A1: 0B 02 : jnz Address = 21A5 2 256 return false Addr : 21A3: 35 : Constant 1 $00000000 Addr : 21A4: 33 : Return value Addr : 21A5: Label0002 Addr : 21A5: Label0003 257 repeat n from 0 to brkcnt Addr : 21A5: 35 : Constant 1 $00000000 Addr : 21A6: 69 : Variable Operation Local Offset - 2 Write Addr : 21A7: Label0004 258 if brkpts[n] == adr Addr : 21A7: 68 : Variable Operation Local Offset - 2 Read Addr : 21A8: B8 4A : Memory Op Word VBASE + POP Index READ Address = 004A Addr : 21AA: 64 : Variable Operation Local Offset - 1 Read Addr : 21AB: FC : Math Op == Addr : 21AC: JZ Label0007 Addr : 21AC: 0A 0E : jz Address = 21BC 14 259 ifnot brkdat[n] Addr : 21AE: 68 : Variable Operation Local Offset - 2 Read Addr : 21AF: D8 08 : Memory Op Long VBASE + POP Index READ Address = 0008 Addr : 21B1: JNZ Label0009 Addr : 21B1: 0B 05 : jnz Address = 21B8 5 260 return $cafee Addr : 21B3: 3A 0C AF EE : Constant 3 Bytes - 0C AF EE - $000CAFEE 831470 Addr : 21B7: 33 : Return value Addr : 21B8: Label0009 Addr : 21B8: Label000A 261 return brkdat[n] ' always non-zero Addr : 21B8: 68 : Variable Operation Local Offset - 2 Read Addr : 21B9: D8 08 : Memory Op Long VBASE + POP Index READ Address = 0008 Addr : 21BB: 33 : Return value Addr : 21BC: Label0007 Addr : 21BC: Label0008 Addr : 21BC: Label0005 257 repeat n from 0 to brkcnt Addr : 21BC: 35 : Constant 1 $00000000 Addr : 21BD: A8 48 : Memory Op Word VBASE + READ Address = 0048 Addr : 21BF: Repeat n Step Label0004 Addr : 21BF: 6A 02 65 : Variable Operation Local Offset - 2 Assign Repeat-Var loop Address= 21A7 -27 Addr : 21C2: Label0006 263 return false Addr : 21C2: 35 : Constant 1 $00000000 Addr : 21C3: 33 : Return value Addr : 21C4: Data : 32 2 |===========================================================================| Spin Block chkBreak with 1 Parameters and 2 Extra Stack Longs. Method 19 pub chkBreak(mpcp) | n, adr Local Parameter DBASE:0000 - Result Local Parameter DBASE:0004 - mpcp Local Variable DBASE:0008 - n Local Variable DBASE:000C - adr |===========================================================================| 266 adr := peek(0)-1 ' break address-1 in cog register 0 Addr : 21C5: 00 : Drop Anchor Push Addr : 21C6: 35 : Constant 1 $00000000 Addr : 21C7: 05 0A : Call Sub 10 Addr : 21C9: 36 : Constant 2 $00000001 Addr : 21CA: ED : Math Op - Addr : 21CB: 6D : Variable Operation Local Offset - 3 Write 267 repeat n from 0 to brkcnt Addr : 21CC: 35 : Constant 1 $00000000 Addr : 21CD: 69 : Variable Operation Local Offset - 2 Write Addr : 21CE: Label0002 268 if brkpts[n] == adr Addr : 21CE: 68 : Variable Operation Local Offset - 2 Read Addr : 21CF: B8 4A : Memory Op Word VBASE + POP Index READ Address = 004A Addr : 21D1: 6C : Variable Operation Local Offset - 3 Read Addr : 21D2: FC : Math Op == Addr : 21D3: JZ Label0005 Addr : 21D3: 0A 05 : jz Address = 21DA 5 269 long[mpcp] := adr Addr : 21D5: 6C : Variable Operation Local Offset - 3 Read Addr : 21D6: 64 : Variable Operation Local Offset - 1 Read Addr : 21D7: C1 : Memory Op Long POP Address WRITE 270 return true Addr : 21D8: 34 : Constant 0 $FFFFFFFF Addr : 21D9: 33 : Return value Addr : 21DA: Label0005 Addr : 21DA: Label0006 Addr : 21DA: Label0003 267 repeat n from 0 to brkcnt Addr : 21DA: 35 : Constant 1 $00000000 Addr : 21DB: A8 48 : Memory Op Word VBASE + READ Address = 0048 Addr : 21DD: Repeat n Step Label0002 Addr : 21DD: 6A 02 6E : Variable Operation Local Offset - 2 Assign Repeat-Var loop Address= 21CE -18 Addr : 21E0: Label0004 271 return false Addr : 21E0: 35 : Constant 1 $00000000 Addr : 21E1: 33 : Return value Addr : 21E2: Data : 32 2 |===========================================================================| Spin Block clearBreak with 0 Parameters and 1 Extra Stack Longs. Method 20 pub clearBreak | n Local Parameter DBASE:0000 - Result Local Variable DBASE:0004 - n |===========================================================================| 274 repeat n from 0 to brkcnt Addr : 21E3: 35 : Constant 1 $00000000 Addr : 21E4: 65 : Variable Operation Local Offset - 1 Write Addr : 21E5: Label0002 275 if brkdat[n] <> 0 ' save old instruction Addr : 21E5: 64 : Variable Operation Local Offset - 1 Read Addr : 21E6: D8 08 : Memory Op Long VBASE + POP Index READ Address = 0008 Addr : 21E8: 35 : Constant 1 $00000000 Addr : 21E9: FB : Math Op <> Addr : 21EA: JZ Label0005 Addr : 21EA: 0A 09 : jz Address = 21F5 9 276 poke(brkpts[n], brkdat[n]) Addr : 21EC: 01 : Drop Anchor Addr : 21ED: 64 : Variable Operation Local Offset - 1 Read Addr : 21EE: B8 4A : Memory Op Word VBASE + POP Index READ Address = 004A Addr : 21F0: 64 : Variable Operation Local Offset - 1 Read Addr : 21F1: D8 08 : Memory Op Long VBASE + POP Index READ Address = 0008 Addr : 21F3: 05 0B : Call Sub 11 Addr : 21F5: Label0005 Addr : 21F5: Label0006 277 brkpts[n]~ Addr : 21F5: 64 : Variable Operation Local Offset - 1 Read Addr : 21F6: BA 4A 18 : Memory Op Word VBASE + POP Index ASSIGN Address = 004A VAR~ Post-clear Addr : 21F9: Label0003 274 repeat n from 0 to brkcnt Addr : 21F9: 35 : Constant 1 $00000000 Addr : 21FA: A8 48 : Memory Op Word VBASE + READ Address = 0048 Addr : 21FC: Repeat n Step Label0002 Addr : 21FC: 66 02 66 : Variable Operation Local Offset - 1 Assign Repeat-Var loop Address= 21E5 -26 Addr : 21FF: Label0004 278 brkcnt~ Addr : 21FF: AA 48 18 : Memory Op Word VBASE + ASSIGN Address = 0048 VAR~ Post-clear Addr : 2202: 32 : Return |===========================================================================| Spin Block listBreak with 0 Parameters and 1 Extra Stack Longs. Method 21 pub listBreak | n Local Parameter DBASE:0000 - Result Local Variable DBASE:0004 - n |===========================================================================| 281 repeat n from 0 to brkcnt Addr : 2203: 35 : Constant 1 $00000000 Addr : 2204: 65 : Variable Operation Local Offset - 1 Write Addr : 2205: Label0002 282 printBreak(n) Addr : 2205: 01 : Drop Anchor Addr : 2206: 64 : Variable Operation Local Offset - 1 Read Addr : 2207: 05 16 : Call Sub 22 Addr : 2209: Label0003 281 repeat n from 0 to brkcnt Addr : 2209: 35 : Constant 1 $00000000 Addr : 220A: A8 48 : Memory Op Word VBASE + READ Address = 0048 Addr : 220C: Repeat n Step Label0002 Addr : 220C: 66 02 76 : Variable Operation Local Offset - 1 Assign Repeat-Var loop Address= 2205 -10 Addr : 220F: Label0004 Addr : 220F: 32 : Return |===========================================================================| Spin Block printBreak with 1 Parameters and 0 Extra Stack Longs. Method 22 pub printBreak(j) Local Parameter DBASE:0000 - Result Local Parameter DBASE:0004 - j |===========================================================================| 285 fd.hex(brkcnt,2) Addr : 2210: 01 : Drop Anchor Addr : 2211: A8 48 : Memory Op Word VBASE + READ Address = 0048 Addr : 2213: 37 00 : Constant Mask Y=0 00000002 2 Addr : 2215: 06 19 0C : Call Obj.Sub 25 12 286 fd.str(string(" ")) Addr : 2218: 01 : Drop Anchor Addr : 2219: PBASE Constant Address of Label0002 Addr : 2219: 87 82 B9 : Memory Op Byte PBASE + ADDRESS Address = 02B9 Addr : 221C: 06 19 0A : Call Obj.Sub 25 10 287 fd.hex(j,2) Addr : 221F: 01 : Drop Anchor Addr : 2220: 64 : Variable Operation Local Offset - 1 Read Addr : 2221: 37 00 : Constant Mask Y=0 00000002 2 Addr : 2223: 06 19 0C : Call Obj.Sub 25 12 288 fd.str(string(" ")) Addr : 2226: 01 : Drop Anchor Addr : 2227: PBASE Constant Address of Label0003 Addr : 2227: 87 82 BB : Memory Op Byte PBASE + ADDRESS Address = 02BB Addr : 222A: 06 19 0A : Call Obj.Sub 25 10 289 fd.hex(brkpts[j],4) Addr : 222D: 01 : Drop Anchor Addr : 222E: 64 : Variable Operation Local Offset - 1 Read Addr : 222F: B8 4A : Memory Op Word VBASE + POP Index READ Address = 004A Addr : 2231: 37 01 : Constant Mask Y=1 00000004 4 Addr : 2233: 06 19 0C : Call Obj.Sub 25 12 290 fd.tx($d) Addr : 2236: 01 : Drop Anchor Addr : 2237: 38 0D : Constant 1 Bytes - 0D - $0000000D 13 Addr : 2239: 06 19 09 : Call Obj.Sub 25 9 Addr : 223C: 32 : Return Addr : 223D: Label0002 Addr : 223D: Data : 20 00 . Addr : 223F: Label0003 Addr : 223F: Data : 20 00 . |===========================================================================| Spin Block getCondition with 1 Parameters and 4 Extra Stack Longs. Method 23 pri getCondition(myopc) | c, z, nc, nz Local Parameter DBASE:0000 - Result Local Parameter DBASE:0004 - myopc Local Variable DBASE:0008 - c Local Variable DBASE:000C - z Local Variable DBASE:0010 - nc Local Variable DBASE:0014 - nz |===========================================================================| 155 nc := not ( c := GetC ) Addr : 2241: 00 : Drop Anchor Push Addr : 2242: 05 0C : Call Sub 12 Addr : 2244: 6A 80 : Variable Operation Local Offset - 2 Assign Write Push Addr : 2246: FF : Math Op NOT Addr : 2247: 71 : Variable Operation Local Offset - 4 Write 156 nz := not ( z := GetZ ) Addr : 2248: 00 : Drop Anchor Push Addr : 2249: 05 0D : Call Sub 13 Addr : 224B: 6E 80 : Variable Operation Local Offset - 3 Assign Write Push Addr : 224D: FF : Math Op NOT Addr : 224E: 75 : Variable Operation Local Offset - 5 Write Addr : 224F: Constant Address of Label0002 Addr : 224F: 39 03 68 : Constant 2 Bytes - 03 68 - $00000368 872 157 case ( myopc >> OP_COND_SHFT) & $0F Addr : 2252: 64 : Variable Operation Local Offset - 1 Read Addr : 2253: 38 12 : Constant 1 Bytes - 12 - $00000012 18 Addr : 2255: E2 : Math Op >> Addr : 2256: 37 23 : Constant Mask Y=35 Decrement 0000000F 15 Addr : 2258: E8 : Math Op & 158 %0000 : result := false 'NEVER (report NEVER for wrbyte but it works anyway!) Addr : 2259: 35 : Constant 1 $00000000 Addr : 225A: Case_Value Label0003 Addr : 225A: 0D 80 4B : Value Case Address = 22A8 75 159 %0001 : result := nc and nz 'if_nc_and_nz Addr : 225D: 36 : Constant 2 $00000001 Addr : 225E: Case_Value Label0004 Addr : 225E: 0D 80 4A : Value Case Address = 22AB 74 160 %0010 : result := nc and z 'if_nc_and_z Addr : 2261: 37 00 : Constant Mask Y=0 00000002 2 Addr : 2263: Case_Value Label0005 Addr : 2263: 0D 80 4A : Value Case Address = 22B0 74 161 %0011 : result := nc 'if_nc Addr : 2266: 37 21 : Constant Mask Y=33 Decrement 00000003 3 Addr : 2268: Case_Value Label0006 Addr : 2268: 0D 80 4A : Value Case Address = 22B5 74 162 %0100 : result := c and nz 'if_c_and_nz Addr : 226B: 37 01 : Constant Mask Y=1 00000004 4 Addr : 226D: Case_Value Label0007 Addr : 226D: 0D 80 48 : Value Case Address = 22B8 72 163 %0101 : result := nz 'if_nz Addr : 2270: 38 05 : Constant 1 Bytes - 05 - $00000005 5 Addr : 2272: Case_Value Label0008 Addr : 2272: 0D 80 48 : Value Case Address = 22BD 72 164 %0110 : result := nc <> nz 'if_c_ne_z Addr : 2275: 38 06 : Constant 1 Bytes - 06 - $00000006 6 Addr : 2277: Case_Value Label0009 Addr : 2277: 0D 80 46 : Value Case Address = 22C0 70 165 %0111 : result := nc or nz 'if_nc_or_nz Addr : 227A: 37 22 : Constant Mask Y=34 Decrement 00000007 7 Addr : 227C: Case_Value Label000A Addr : 227C: 0D 80 46 : Value Case Address = 22C5 70 166 %1000 : result := c and z 'if_c_and_z Addr : 227F: 37 02 : Constant Mask Y=2 00000008 8 Addr : 2281: Case_Value Label000B Addr : 2281: 0D 80 46 : Value Case Address = 22CA 70 167 %1001 : result := c == z 'if_c_eq_z Addr : 2284: 38 09 : Constant 1 Bytes - 09 - $00000009 9 Addr : 2286: Case_Value Label000C Addr : 2286: 0D 80 46 : Value Case Address = 22CF 70 168 %1010 : result := z 'if_z Addr : 2289: 38 0A : Constant 1 Bytes - 0A - $0000000A 10 Addr : 228B: Case_Value Label000D Addr : 228B: 0D 80 46 : Value Case Address = 22D4 70 169 %1011 : result := nc or z 'if_nc_or_z Addr : 228E: 38 0B : Constant 1 Bytes - 0B - $0000000B 11 Addr : 2290: Case_Value Label000E Addr : 2290: 0D 80 44 : Value Case Address = 22D7 68 170 %1100 : result := c 'if_c Addr : 2293: 38 0C : Constant 1 Bytes - 0C - $0000000C 12 Addr : 2295: Case_Value Label000F Addr : 2295: 0D 80 44 : Value Case Address = 22DC 68 171 %1101 : result := c or nz 'if_c_or_nz Addr : 2298: 38 0D : Constant 1 Bytes - 0D - $0000000D 13 Addr : 229A: Case_Value Label0010 Addr : 229A: 0D 80 42 : Value Case Address = 22DF 66 172 %1110 : result := c or z 'if_c_or_z Addr : 229D: 38 0E : Constant 1 Bytes - 0E - $0000000E 14 Addr : 229F: Case_Value Label0011 Addr : 229F: 0D 80 42 : Value Case Address = 22E4 66 173 %1111 : result := true 'ALWAYS Addr : 22A2: 37 23 : Constant Mask Y=35 Decrement 0000000F 15 Addr : 22A4: Case_Value Label0012 Addr : 22A4: 0D 80 42 : Value Case Address = 22E9 66 Addr : 22A7: CaseDone Label0012 Addr : 22A7: 0C : Casedone Addr : 22A8: Label0003 158 %0000 : result := false 'NEVER (report NEVER for wrbyte but it works anyway!) Addr : 22A8: 35 : Constant 1 $00000000 Addr : 22A9: 61 : Variable Operation Local Offset - 0 Write Addr : 22AA: CaseDone Label0003 Addr : 22AA: 0C : Casedone Addr : 22AB: Label0004 159 %0001 : result := nc and nz 'if_nc_and_nz Addr : 22AB: 70 : Variable Operation Local Offset - 4 Read Addr : 22AC: 74 : Variable Operation Local Offset - 5 Read Addr : 22AD: F0 : Math Op AND Addr : 22AE: 61 : Variable Operation Local Offset - 0 Write Addr : 22AF: CaseDone Label0004 Addr : 22AF: 0C : Casedone Addr : 22B0: Label0005 160 %0010 : result := nc and z 'if_nc_and_z Addr : 22B0: 70 : Variable Operation Local Offset - 4 Read Addr : 22B1: 6C : Variable Operation Local Offset - 3 Read Addr : 22B2: F0 : Math Op AND Addr : 22B3: 61 : Variable Operation Local Offset - 0 Write Addr : 22B4: CaseDone Label0005 Addr : 22B4: 0C : Casedone Addr : 22B5: Label0006 161 %0011 : result := nc 'if_nc Addr : 22B5: 70 : Variable Operation Local Offset - 4 Read Addr : 22B6: 61 : Variable Operation Local Offset - 0 Write Addr : 22B7: CaseDone Label0006 Addr : 22B7: 0C : Casedone Addr : 22B8: Label0007 162 %0100 : result := c and nz 'if_c_and_nz Addr : 22B8: 68 : Variable Operation Local Offset - 2 Read Addr : 22B9: 74 : Variable Operation Local Offset - 5 Read Addr : 22BA: F0 : Math Op AND Addr : 22BB: 61 : Variable Operation Local Offset - 0 Write Addr : 22BC: CaseDone Label0007 Addr : 22BC: 0C : Casedone Addr : 22BD: Label0008 163 %0101 : result := nz 'if_nz Addr : 22BD: 74 : Variable Operation Local Offset - 5 Read Addr : 22BE: 61 : Variable Operation Local Offset - 0 Write Addr : 22BF: CaseDone Label0008 Addr : 22BF: 0C : Casedone Addr : 22C0: Label0009 164 %0110 : result := nc <> nz 'if_c_ne_z Addr : 22C0: 70 : Variable Operation Local Offset - 4 Read Addr : 22C1: 74 : Variable Operation Local Offset - 5 Read Addr : 22C2: FB : Math Op <> Addr : 22C3: 61 : Variable Operation Local Offset - 0 Write Addr : 22C4: CaseDone Label0009 Addr : 22C4: 0C : Casedone Addr : 22C5: Label000A 165 %0111 : result := nc or nz 'if_nc_or_nz Addr : 22C5: 70 : Variable Operation Local Offset - 4 Read Addr : 22C6: 74 : Variable Operation Local Offset - 5 Read Addr : 22C7: F2 : Math Op OR Addr : 22C8: 61 : Variable Operation Local Offset - 0 Write Addr : 22C9: CaseDone Label000A Addr : 22C9: 0C : Casedone Addr : 22CA: Label000B 166 %1000 : result := c and z 'if_c_and_z Addr : 22CA: 68 : Variable Operation Local Offset - 2 Read Addr : 22CB: 6C : Variable Operation Local Offset - 3 Read Addr : 22CC: F0 : Math Op AND Addr : 22CD: 61 : Variable Operation Local Offset - 0 Write Addr : 22CE: CaseDone Label000B Addr : 22CE: 0C : Casedone Addr : 22CF: Label000C 167 %1001 : result := c == z 'if_c_eq_z Addr : 22CF: 68 : Variable Operation Local Offset - 2 Read Addr : 22D0: 6C : Variable Operation Local Offset - 3 Read Addr : 22D1: FC : Math Op == Addr : 22D2: 61 : Variable Operation Local Offset - 0 Write Addr : 22D3: CaseDone Label000C Addr : 22D3: 0C : Casedone Addr : 22D4: Label000D 168 %1010 : result := z 'if_z Addr : 22D4: 6C : Variable Operation Local Offset - 3 Read Addr : 22D5: 61 : Variable Operation Local Offset - 0 Write Addr : 22D6: CaseDone Label000D Addr : 22D6: 0C : Casedone Addr : 22D7: Label000E 169 %1011 : result := nc or z 'if_nc_or_z Addr : 22D7: 70 : Variable Operation Local Offset - 4 Read Addr : 22D8: 6C : Variable Operation Local Offset - 3 Read Addr : 22D9: F2 : Math Op OR Addr : 22DA: 61 : Variable Operation Local Offset - 0 Write Addr : 22DB: CaseDone Label000E Addr : 22DB: 0C : Casedone Addr : 22DC: Label000F 170 %1100 : result := c 'if_c Addr : 22DC: 68 : Variable Operation Local Offset - 2 Read Addr : 22DD: 61 : Variable Operation Local Offset - 0 Write Addr : 22DE: CaseDone Label000F Addr : 22DE: 0C : Casedone Addr : 22DF: Label0010 171 %1101 : result := c or nz 'if_c_or_nz Addr : 22DF: 68 : Variable Operation Local Offset - 2 Read Addr : 22E0: 74 : Variable Operation Local Offset - 5 Read Addr : 22E1: F2 : Math Op OR Addr : 22E2: 61 : Variable Operation Local Offset - 0 Write Addr : 22E3: CaseDone Label0010 Addr : 22E3: 0C : Casedone Addr : 22E4: Label0011 172 %1110 : result := c or z 'if_c_or_z Addr : 22E4: 68 : Variable Operation Local Offset - 2 Read Addr : 22E5: 6C : Variable Operation Local Offset - 3 Read Addr : 22E6: F2 : Math Op OR Addr : 22E7: 61 : Variable Operation Local Offset - 0 Write Addr : 22E8: CaseDone Label0011 Addr : 22E8: 0C : Casedone Addr : 22E9: Label0012 173 %1111 : result := true 'ALWAYS Addr : 22E9: 34 : Constant 0 $FFFFFFFF Addr : 22EA: 61 : Variable Operation Local Offset - 0 Write Addr : 22EB: CaseDone Label0012 Addr : 22EB: 0C : Casedone Addr : 22EC: Label0002 Addr : 22EC: 32 : Return |===========================================================================| Object BMAPASMstub Object Base is 22F0 |===========================================================================| Object Constants |===========================================================================| |===========================================================================| VBASE Global Variables |===========================================================================| VBASE : 0000 LONG Size 0004 Variable mytask VBASE : 0004 LONG Size 0004 Variable INSA VBASE : 0008 LONG Size 0004 Variable DATA |===========================================================================| Object DAT Blocks |===========================================================================| 2320(0000) | stub 2320(0000) 06 EA BF A4 | long $a4bfea06, $08bc0bf5, $e87c0a01, $08bc0bf5, $ec7c0a03, $0, $5c7c8001, $0 ' stub binary form 2324(0001) F5 0B BC 08 | 2328(0002) 01 0A 7C E8 | 232C(0003) F5 0B BC 08 | 2330(0004) 03 0A 7C EC | 2334(0005) 00 00 00 00 | 2338(0006) 01 80 7C 5C | 233C(0007) 00 00 00 00 | 2340(0008) | tstcode 2340(0008) 01 EC FF 68 | tst1 or dira, #1 2344(0009) 01 E8 FF 6F | tst2 xor outa, #1 wc,wz 2348(000A) | initcode 2348(000A) 03 EA FF 84 | init1 sub outb, #3 ' align comm address to long boundary 234C(000B) 04 EA FF 84 | init2 sub outb, #4 ' mov comm address down 2350(000C) 00 00 FC A0 | init3 mov 0, #0 ' nop in address 0 2354(000D) 7F E6 FF A0 | mov inb, #$7f ' setup for inb data comm address 2358(000E) 08 E6 FF 2C | shl inb, #8 ' inb = $7f00 235C(000F) F4 E6 FF 68 | or inb, #$f4 ' inb = $7ff4 2360(0010) 0F 00 FC A0 | mov USER, #$f ' ALWAYS mask 2364(0011) 12 00 FC 2C | initlast shl USER, #18 ' set cond ALWAYS bits 2368(0012) 0C EA FF 84 | init0t sub outb, #$c ' mov comm address down to $7ff0 236C(0013) 10 EA FF 84 | init1t sub outb, #$10 ' mov comm address down to $7fec 2370(0014) 14 EA FF 84 | init2t sub outb, #$14 ' mov comm address down to $7fe8 2374(0015) 18 EA FF 84 | init3t sub outb, #$18 ' mov comm address down to $7fe4 2378(0016) 1C EA FF 84 | init4t sub outb, #$1c ' mov comm address down to $7fe0 237C(0017) 20 EA FF 84 | init5t sub outb, #$20 ' mov comm address down to $7fdc 2380(0018) 24 EA FF 84 | init6t sub outb, #$24 ' mov comm address down to $7fd8 2384(0019) 28 EA FF 84 | init7t sub outb, #$28 ' mov comm address down to $7fd4 2388(001A) 00 00 FC 54 | rdcode movd USER, #0-0 ' set destination 238C(001B) F3 01 FC 50 | movs USER, #inb ' src is in inb 2390(001C) 10 00 FC 58 | movi USER, #MWRLONG ' wrlong - write to hub long[data] for caller to read 2394(001D) 00 00 7C 5C | rdlast long JMPUSER ' run instruction 2398(001E) 00 00 FC 54 | wrcode movd USER, #0-0 ' set destination 239C(001F) F3 01 FC 50 | movs USER, #inb ' src is in inb 23A0(0020) 11 00 FC 58 | movi USER, #MRDLONG ' rdlong - read from hub long[data] where caller wrote 23A4(0021) 00 00 7C 5C | wrlast long JMPUSER ' run instruction 23A8(0022) 00 EE FF A0 | gccode mov dirb, #0 23AC(0023) 01 EE FF 70 | muxc dirb, #1 ' get carry bit 23B0(0024) F7 01 FC 54 | movd USER, #dirb ' set destination 23B4(0025) F3 01 FC 50 | movs USER, #inb ' src location is in inb 23B8(0026) 10 00 FC 58 | movi USER, #MWRLONG ' wrlong - write to hub long[data] for caller to read 23BC(0027) 00 00 7C 5C | gclast long JMPUSER ' run instruction 23C0(0028) 00 EE FF A0 | gzcode mov dirb, #0 23C4(0029) 01 EE FF 78 | muxz dirb, #1 ' get zero bit 23C8(002A) F7 01 FC 54 | movd USER, #dirb ' set destination 23CC(002B) F3 01 FC 50 | movs USER, #inb ' src location is in inb 23D0(002C) 10 00 FC 58 | movi USER, #MWRLONG ' wrlong - write to hub long[data] for caller to read 23D4(002D) 00 00 7C 5C | gzlast long JMPUSER ' run instruction 23D8(002E) 01 5C 7C 66 | czcode testn $, #1 wz ' clr zero bit 23DC(002F) 00 00 7C 5C | czlast long JMPUSER ' run instruction 23E0(0030) F7 EF 3F 86 | szcode cmp dirb, dirb wz ' set zero bit 23E4(0031) 00 00 7C 5C | szlast long JMPUSER ' run instruction 23E8(0032) 00 EE BF A0 | grcode mov dirb, 0-0 ' get reg 23EC(0033) F7 01 FC 54 | movd USER, #dirb ' set destination 23F0(0034) F3 01 FC 50 | movs USER, #inb ' src location is in inb 23F4(0035) 10 00 FC 58 | movi USER, #MWRLONG ' wrlong - write to hub long[data] for caller to read 23F8(0036) 00 00 7C 5C | grlast long JMPUSER ' run instruction 23FC(0037) F7 01 BC A0 | gscode mov 0-0, dirb ' set value 2400(0038) F7 01 FC 54 | movd USER, #dirb ' set destination 2404(0039) F3 01 FC 50 | movs USER, #inb ' src location is in inb 2408(003A) 10 00 FC 58 | movi USER, #MWRLONG ' wrlong - write to hub long[data] for caller to read 240C(003B) 00 00 7C 5C | gslast long JMPUSER ' run instruction |===========================================================================| |===========================================================================| Spin Block start with 3 Parameters and 1 Extra Stack Longs. Method 1 pub start(entryp,parmp,task) | n Local Parameter DBASE:0000 - Result Local Parameter DBASE:0004 - entryp Local Parameter DBASE:0008 - parmp Local Parameter DBASE:000C - task Local Variable DBASE:0010 - n |===========================================================================| 39 cognew(entryp,parmp) Addr : 2410: 34 : Constant 0 $FFFFFFFF Addr : 2411: 64 : Variable Operation Local Offset - 1 Read Addr : 2412: 68 : Variable Operation Local Offset - 2 Read Addr : 2413: 2C : CogInit(Id, Addr, Ptr) 40 waitcnt(clkfreq/50+cnt) ' wait for startup Addr : 2414: 35 : Constant 1 $00000000 Addr : 2415: C0 : Memory Op Long POP Address READ Addr : 2416: 38 32 : Constant 1 Bytes - 32 - $00000032 50 Addr : 2418: F6 : Math Op / Addr : 2419: 3F 91 : Register op CNT Read Addr : 241B: EC : Math Op + Addr : 241C: 23 : WaitCnt(count) 42 mytask := task+1 ' make sure task is non-zero Addr : 241D: 6C : Variable Operation Local Offset - 3 Read Addr : 241E: 36 : Constant 2 $00000001 Addr : 241F: EC : Math Op + Addr : 2420: 41 : Variable Operation Global Offset - 0 Write 44 INSA := $7FFC Addr : 2421: 39 7F FC : Constant 2 Bytes - 7F FC - $00007FFC 32764 Addr : 2424: 45 : Variable Operation Global Offset - 1 Write 45 run(init1) ' align to long boundary Addr : 2425: 01 : Drop Anchor Addr : 2426: C4 58 : Memory Op Long PBASE + READ Address = 0058 Addr : 2428: 05 03 : Call Sub 3 Addr : 242A: Constant Address of Label0002 Addr : 242A: 39 01 B6 : Constant 2 Bytes - 01 B6 - $000001B6 438 46 case task Addr : 242D: 6C : Variable Operation Local Offset - 3 Read 47 0: run(init0t) ' adjust comm address for task Addr : 242E: 35 : Constant 1 $00000000 Addr : 242F: Case_Value Label0003 Addr : 242F: 0D 1F : Value Case Address = 2450 31 49 1: run(init1t) ' adjust comm address for task Addr : 2431: 36 : Constant 2 $00000001 Addr : 2432: Case_Value Label0004 Addr : 2432: 0D 26 : Value Case Address = 245A 38 51 2: run(init2t) ' adjust comm address for task Addr : 2434: 37 00 : Constant Mask Y=0 00000002 2 Addr : 2436: Case_Value Label0005 Addr : 2436: 0D 2C : Value Case Address = 2464 44 53 3: run(init3t) ' adjust comm address for task Addr : 2438: 37 21 : Constant Mask Y=33 Decrement 00000003 3 Addr : 243A: Case_Value Label0006 Addr : 243A: 0D 33 : Value Case Address = 246F 51 55 4: run(init4t) ' adjust comm address for task Addr : 243C: 37 01 : Constant Mask Y=1 00000004 4 Addr : 243E: Case_Value Label0007 Addr : 243E: 0D 3A : Value Case Address = 247A 58 57 5: run(init5t) ' adjust comm address for task Addr : 2440: 38 05 : Constant 1 Bytes - 05 - $00000005 5 Addr : 2442: Case_Value Label0008 Addr : 2442: 0D 80 40 : Value Case Address = 2485 64 59 6: run(init6t) ' adjust comm address for task Addr : 2445: 38 06 : Constant 1 Bytes - 06 - $00000006 6 Addr : 2447: Case_Value Label0009 Addr : 2447: 0D 80 46 : Value Case Address = 2490 70 61 7: run(init7t) ' adjust comm address for task Addr : 244A: 37 22 : Constant Mask Y=34 Decrement 00000007 7 Addr : 244C: Case_Value Label000A Addr : 244C: 0D 80 4C : Value Case Address = 249B 76 Addr : 244F: CaseDone Label000A Addr : 244F: 0C : Casedone Addr : 2450: Label0003 47 0: run(init0t) ' adjust comm address for task Addr : 2450: 01 : Drop Anchor Addr : 2451: C4 78 : Memory Op Long PBASE + READ Address = 0078 Addr : 2453: 05 03 : Call Sub 3 48 INSA -= $c Addr : 2455: 38 0C : Constant 1 Bytes - 0C - $0000000C 12 Addr : 2457: 46 4D : Variable Operation Global Offset - 1 Assign WordMathop - Addr : 2459: CaseDone Label0003 Addr : 2459: 0C : Casedone Addr : 245A: Label0004 49 1: run(init1t) ' adjust comm address for task Addr : 245A: 01 : Drop Anchor Addr : 245B: C4 7C : Memory Op Long PBASE + READ Address = 007C Addr : 245D: 05 03 : Call Sub 3 50 INSA -= $10 Addr : 245F: 37 03 : Constant Mask Y=3 00000010 16 Addr : 2461: 46 4D : Variable Operation Global Offset - 1 Assign WordMathop - Addr : 2463: CaseDone Label0004 Addr : 2463: 0C : Casedone Addr : 2464: Label0005 51 2: run(init2t) ' adjust comm address for task Addr : 2464: 01 : Drop Anchor Addr : 2465: C4 80 80 : Memory Op Long PBASE + READ Address = 0080 Addr : 2468: 05 03 : Call Sub 3 52 INSA -= $14 Addr : 246A: 38 14 : Constant 1 Bytes - 14 - $00000014 20 Addr : 246C: 46 4D : Variable Operation Global Offset - 1 Assign WordMathop - Addr : 246E: CaseDone Label0005 Addr : 246E: 0C : Casedone Addr : 246F: Label0006 53 3: run(init3t) ' adjust comm address for task Addr : 246F: 01 : Drop Anchor Addr : 2470: C4 80 84 : Memory Op Long PBASE + READ Address = 0084 Addr : 2473: 05 03 : Call Sub 3 54 INSA -= $18 Addr : 2475: 38 18 : Constant 1 Bytes - 18 - $00000018 24 Addr : 2477: 46 4D : Variable Operation Global Offset - 1 Assign WordMathop - Addr : 2479: CaseDone Label0006 Addr : 2479: 0C : Casedone Addr : 247A: Label0007 55 4: run(init4t) ' adjust comm address for task Addr : 247A: 01 : Drop Anchor Addr : 247B: C4 80 88 : Memory Op Long PBASE + READ Address = 0088 Addr : 247E: 05 03 : Call Sub 3 56 INSA -= $1c Addr : 2480: 38 1C : Constant 1 Bytes - 1C - $0000001C 28 Addr : 2482: 46 4D : Variable Operation Global Offset - 1 Assign WordMathop - Addr : 2484: CaseDone Label0007 Addr : 2484: 0C : Casedone Addr : 2485: Label0008 57 5: run(init5t) ' adjust comm address for task Addr : 2485: 01 : Drop Anchor Addr : 2486: C4 80 8C : Memory Op Long PBASE + READ Address = 008C Addr : 2489: 05 03 : Call Sub 3 58 INSA -= $20 Addr : 248B: 37 04 : Constant Mask Y=4 00000020 32 Addr : 248D: 46 4D : Variable Operation Global Offset - 1 Assign WordMathop - Addr : 248F: CaseDone Label0008 Addr : 248F: 0C : Casedone Addr : 2490: Label0009 59 6: run(init6t) ' adjust comm address for task Addr : 2490: 01 : Drop Anchor Addr : 2491: C4 80 90 : Memory Op Long PBASE + READ Address = 0090 Addr : 2494: 05 03 : Call Sub 3 60 INSA -= $24 Addr : 2496: 38 24 : Constant 1 Bytes - 24 - $00000024 36 Addr : 2498: 46 4D : Variable Operation Global Offset - 1 Assign WordMathop - Addr : 249A: CaseDone Label0009 Addr : 249A: 0C : Casedone Addr : 249B: Label000A 61 7: run(init7t) ' adjust comm address for task Addr : 249B: 01 : Drop Anchor Addr : 249C: C4 80 94 : Memory Op Long PBASE + READ Address = 0094 Addr : 249F: 05 03 : Call Sub 3 62 INSA -= $28 Addr : 24A1: 38 28 : Constant 1 Bytes - 28 - $00000028 40 Addr : 24A3: 46 4D : Variable Operation Global Offset - 1 Assign WordMathop - Addr : 24A5: CaseDone Label000A Addr : 24A5: 0C : Casedone Addr : 24A6: Label0002 64 DATA := $7FF4 ' outb = DATA Addr : 24A6: 39 7F F4 : Constant 2 Bytes - 7F F4 - $00007FF4 32756 Addr : 24A9: 49 : Variable Operation Global Offset - 2 Write 66 repeat n from 0 to (@initlast-@init3)/4 Addr : 24AA: 35 : Constant 1 $00000000 Addr : 24AB: 71 : Variable Operation Local Offset - 4 Write Addr : 24AC: Label000B 67 run(long[@init3+(n*4)]) Addr : 24AC: 01 : Drop Anchor Addr : 24AD: C7 60 : Memory Op Long PBASE + ADDRESS Address = 0060 Addr : 24AF: 70 : Variable Operation Local Offset - 4 Read Addr : 24B0: 37 01 : Constant Mask Y=1 00000004 4 Addr : 24B2: F4 : Math Op * Addr : 24B3: EC : Math Op + Addr : 24B4: C0 : Memory Op Long POP Address READ Addr : 24B5: 05 03 : Call Sub 3 Addr : 24B7: Label000C 66 repeat n from 0 to (@initlast-@init3)/4 Addr : 24B7: 35 : Constant 1 $00000000 Addr : 24B8: C7 74 : Memory Op Long PBASE + ADDRESS Address = 0074 Addr : 24BA: C7 60 : Memory Op Long PBASE + ADDRESS Address = 0060 Addr : 24BC: ED : Math Op - Addr : 24BD: 37 01 : Constant Mask Y=1 00000004 4 Addr : 24BF: F6 : Math Op / Addr : 24C0: Repeat n Step Label000B Addr : 24C0: 72 02 69 : Variable Operation Local Offset - 4 Assign Repeat-Var loop Address= 24AC -23 Addr : 24C3: Label000D Addr : 24C3: 32 : Return |===========================================================================| Spin Block copystub with 1 Parameters and 0 Extra Stack Longs. Method 2 pub copystub(ptr) Local Parameter DBASE:0000 - Result Local Parameter DBASE:0004 - ptr |===========================================================================| 70 longmove(ptr, @stub, 7) Addr : 24C4: 64 : Variable Operation Local Offset - 1 Read Addr : 24C5: 87 30 : Memory Op Byte PBASE + ADDRESS Address = 0030 Addr : 24C7: 37 22 : Constant Mask Y=34 Decrement 00000007 7 Addr : 24C9: 1E : LongMove(To, From, Count) Addr : 24CA: 32 : Return |===========================================================================| Spin Block run with 1 Parameters and 0 Extra Stack Longs. Method 3 pub run(minst) Local Parameter DBASE:0000 - Result Local Parameter DBASE:0004 - minst |===========================================================================| 108 long[INSA]~ ' tell stub we're ready Addr : 24CB: 44 : Variable Operation Global Offset - 1 Read Addr : 24CC: C2 18 : Memory Op Long POP Address ASSIGN VAR~ Post-clear 109 long[INSA] := minst ' set instruction Addr : 24CE: 64 : Variable Operation Local Offset - 1 Read Addr : 24CF: 44 : Variable Operation Global Offset - 1 Read Addr : 24D0: C1 : Memory Op Long POP Address WRITE Addr : 24D1: 32 : Return |===========================================================================| Spin Block read with 1 Parameters and 1 Extra Stack Longs. Method 4 pub read(madr) | n Local Parameter DBASE:0000 - Result Local Parameter DBASE:0004 - madr Local Variable DBASE:0008 - n |===========================================================================| 113 run(rdcode | madr) Addr : 24D2: 01 : Drop Anchor Addr : 24D3: C4 80 98 : Memory Op Long PBASE + READ Address = 0098 Addr : 24D6: 64 : Variable Operation Local Offset - 1 Read Addr : 24D7: EA : Math Op | Addr : 24D8: 05 03 : Call Sub 3 114 repeat n from 1 to (@rdlast-@rdcode)/4 Addr : 24DA: 36 : Constant 2 $00000001 Addr : 24DB: 69 : Variable Operation Local Offset - 2 Write Addr : 24DC: Label0002 115 run(long[@rdcode+(n*4)]) Addr : 24DC: 01 : Drop Anchor Addr : 24DD: C7 80 98 : Memory Op Long PBASE + ADDRESS Address = 0098 Addr : 24E0: 68 : Variable Operation Local Offset - 2 Read Addr : 24E1: 37 01 : Constant Mask Y=1 00000004 4 Addr : 24E3: F4 : Math Op * Addr : 24E4: EC : Math Op + Addr : 24E5: C0 : Memory Op Long POP Address READ Addr : 24E6: 05 03 : Call Sub 3 Addr : 24E8: Label0003 114 repeat n from 1 to (@rdlast-@rdcode)/4 Addr : 24E8: 36 : Constant 2 $00000001 Addr : 24E9: C7 80 A4 : Memory Op Long PBASE + ADDRESS Address = 00A4 Addr : 24EC: C7 80 98 : Memory Op Long PBASE + ADDRESS Address = 0098 Addr : 24EF: ED : Math Op - Addr : 24F0: 37 01 : Constant Mask Y=1 00000004 4 Addr : 24F2: F6 : Math Op / Addr : 24F3: Repeat n Step Label0002 Addr : 24F3: 6A 02 66 : Variable Operation Local Offset - 2 Assign Repeat-Var loop Address= 24DC -26 Addr : 24F6: Label0004 116 return long[DATA] ' inb points to here Addr : 24F6: 48 : Variable Operation Global Offset - 2 Read Addr : 24F7: C0 : Memory Op Long POP Address READ Addr : 24F8: 33 : Return value Addr : 24F9: Data : 32 2 |===========================================================================| Spin Block write with 2 Parameters and 1 Extra Stack Longs. Method 5 pub write(madr,mdat) | n Local Parameter DBASE:0000 - Result Local Parameter DBASE:0004 - madr Local Parameter DBASE:0008 - mdat Local Variable DBASE:000C - n |===========================================================================| 126 long[DATA] := mdat ' inb points to here Addr : 24FA: 68 : Variable Operation Local Offset - 2 Read Addr : 24FB: 48 : Variable Operation Global Offset - 2 Read Addr : 24FC: C1 : Memory Op Long POP Address WRITE 127 run(wrcode | madr) Addr : 24FD: 01 : Drop Anchor Addr : 24FE: C4 80 A8 : Memory Op Long PBASE + READ Address = 00A8 Addr : 2501: 64 : Variable Operation Local Offset - 1 Read Addr : 2502: EA : Math Op | Addr : 2503: 05 03 : Call Sub 3 128 repeat n from 1 to (@wrlast-@wrcode)/4 Addr : 2505: 36 : Constant 2 $00000001 Addr : 2506: 6D : Variable Operation Local Offset - 3 Write Addr : 2507: Label0002 129 run(long[@wrcode+(n*4)]) Addr : 2507: 01 : Drop Anchor Addr : 2508: C7 80 A8 : Memory Op Long PBASE + ADDRESS Address = 00A8 Addr : 250B: 6C : Variable Operation Local Offset - 3 Read Addr : 250C: 37 01 : Constant Mask Y=1 00000004 4 Addr : 250E: F4 : Math Op * Addr : 250F: EC : Math Op + Addr : 2510: C0 : Memory Op Long POP Address READ Addr : 2511: 05 03 : Call Sub 3 Addr : 2513: Label0003 128 repeat n from 1 to (@wrlast-@wrcode)/4 Addr : 2513: 36 : Constant 2 $00000001 Addr : 2514: C7 80 B4 : Memory Op Long PBASE + ADDRESS Address = 00B4 Addr : 2517: C7 80 A8 : Memory Op Long PBASE + ADDRESS Address = 00A8 Addr : 251A: ED : Math Op - Addr : 251B: 37 01 : Constant Mask Y=1 00000004 4 Addr : 251D: F6 : Math Op / Addr : 251E: Repeat n Step Label0002 Addr : 251E: 6E 02 66 : Variable Operation Local Offset - 3 Assign Repeat-Var loop Address= 2507 -26 Addr : 2521: Label0004 Addr : 2521: 32 : Return |===========================================================================| Spin Block getc with 0 Parameters and 1 Extra Stack Longs. Method 6 pub getc | n Local Parameter DBASE:0000 - Result Local Variable DBASE:0004 - n |===========================================================================| 139 repeat n from 0 to (@gclast-@gccode)/4 Addr : 2522: 35 : Constant 1 $00000000 Addr : 2523: 65 : Variable Operation Local Offset - 1 Write Addr : 2524: Label0002 140 run(long[@gccode+(n*4)]) Addr : 2524: 01 : Drop Anchor Addr : 2525: C7 80 B8 : Memory Op Long PBASE + ADDRESS Address = 00B8 Addr : 2528: 64 : Variable Operation Local Offset - 1 Read Addr : 2529: 37 01 : Constant Mask Y=1 00000004 4 Addr : 252B: F4 : Math Op * Addr : 252C: EC : Math Op + Addr : 252D: C0 : Memory Op Long POP Address READ Addr : 252E: 05 03 : Call Sub 3 Addr : 2530: Label0003 139 repeat n from 0 to (@gclast-@gccode)/4 Addr : 2530: 35 : Constant 1 $00000000 Addr : 2531: C7 80 CC : Memory Op Long PBASE + ADDRESS Address = 00CC Addr : 2534: C7 80 B8 : Memory Op Long PBASE + ADDRESS Address = 00B8 Addr : 2537: ED : Math Op - Addr : 2538: 37 01 : Constant Mask Y=1 00000004 4 Addr : 253A: F6 : Math Op / Addr : 253B: Repeat n Step Label0002 Addr : 253B: 66 02 66 : Variable Operation Local Offset - 1 Assign Repeat-Var loop Address= 2524 -26 Addr : 253E: Label0004 141 return long[DATA] Addr : 253E: 48 : Variable Operation Global Offset - 2 Read Addr : 253F: C0 : Memory Op Long POP Address READ Addr : 2540: 33 : Return value Addr : 2541: Data : 32 2 |===========================================================================| Spin Block getz with 0 Parameters and 1 Extra Stack Longs. Method 7 pub getz | n Local Parameter DBASE:0000 - Result Local Variable DBASE:0004 - n |===========================================================================| 153 repeat n from 0 to (@gzlast-@gzcode)/4 Addr : 2542: 35 : Constant 1 $00000000 Addr : 2543: 65 : Variable Operation Local Offset - 1 Write Addr : 2544: Label0002 154 run(long[@gzcode+(n*4)]) Addr : 2544: 01 : Drop Anchor Addr : 2545: C7 80 D0 : Memory Op Long PBASE + ADDRESS Address = 00D0 Addr : 2548: 64 : Variable Operation Local Offset - 1 Read Addr : 2549: 37 01 : Constant Mask Y=1 00000004 4 Addr : 254B: F4 : Math Op * Addr : 254C: EC : Math Op + Addr : 254D: C0 : Memory Op Long POP Address READ Addr : 254E: 05 03 : Call Sub 3 Addr : 2550: Label0003 153 repeat n from 0 to (@gzlast-@gzcode)/4 Addr : 2550: 35 : Constant 1 $00000000 Addr : 2551: C7 80 E4 : Memory Op Long PBASE + ADDRESS Address = 00E4 Addr : 2554: C7 80 D0 : Memory Op Long PBASE + ADDRESS Address = 00D0 Addr : 2557: ED : Math Op - Addr : 2558: 37 01 : Constant Mask Y=1 00000004 4 Addr : 255A: F6 : Math Op / Addr : 255B: Repeat n Step Label0002 Addr : 255B: 66 02 66 : Variable Operation Local Offset - 1 Assign Repeat-Var loop Address= 2544 -26 Addr : 255E: Label0004 155 return long[DATA] Addr : 255E: 48 : Variable Operation Global Offset - 2 Read Addr : 255F: C0 : Memory Op Long POP Address READ Addr : 2560: 33 : Return value Addr : 2561: Data : 32 2 |===========================================================================| Spin Block clrz with 0 Parameters and 1 Extra Stack Longs. Method 8 pub clrz | n Local Parameter DBASE:0000 - Result Local Variable DBASE:0004 - n |===========================================================================| 167 repeat n from 0 to (@czlast-@czcode)/4 Addr : 2562: 35 : Constant 1 $00000000 Addr : 2563: 65 : Variable Operation Local Offset - 1 Write Addr : 2564: Label0002 168 run(long[@czcode+(n*4)]) Addr : 2564: 01 : Drop Anchor Addr : 2565: C7 80 E8 : Memory Op Long PBASE + ADDRESS Address = 00E8 Addr : 2568: 64 : Variable Operation Local Offset - 1 Read Addr : 2569: 37 01 : Constant Mask Y=1 00000004 4 Addr : 256B: F4 : Math Op * Addr : 256C: EC : Math Op + Addr : 256D: C0 : Memory Op Long POP Address READ Addr : 256E: 05 03 : Call Sub 3 Addr : 2570: Label0003 167 repeat n from 0 to (@czlast-@czcode)/4 Addr : 2570: 35 : Constant 1 $00000000 Addr : 2571: C7 80 EC : Memory Op Long PBASE + ADDRESS Address = 00EC Addr : 2574: C7 80 E8 : Memory Op Long PBASE + ADDRESS Address = 00E8 Addr : 2577: ED : Math Op - Addr : 2578: 37 01 : Constant Mask Y=1 00000004 4 Addr : 257A: F6 : Math Op / Addr : 257B: Repeat n Step Label0002 Addr : 257B: 66 02 66 : Variable Operation Local Offset - 1 Assign Repeat-Var loop Address= 2564 -26 Addr : 257E: Label0004 Addr : 257E: 32 : Return |===========================================================================| Spin Block setz with 0 Parameters and 1 Extra Stack Longs. Method 9 pub setz | n Local Parameter DBASE:0000 - Result Local Variable DBASE:0004 - n |===========================================================================| 176 repeat n from 0 to (@szlast-@szcode)/4 Addr : 257F: 35 : Constant 1 $00000000 Addr : 2580: 65 : Variable Operation Local Offset - 1 Write Addr : 2581: Label0002 177 run(long[@czcode+(n*4)]) Addr : 2581: 01 : Drop Anchor Addr : 2582: C7 80 E8 : Memory Op Long PBASE + ADDRESS Address = 00E8 Addr : 2585: 64 : Variable Operation Local Offset - 1 Read Addr : 2586: 37 01 : Constant Mask Y=1 00000004 4 Addr : 2588: F4 : Math Op * Addr : 2589: EC : Math Op + Addr : 258A: C0 : Memory Op Long POP Address READ Addr : 258B: 05 03 : Call Sub 3 Addr : 258D: Label0003 176 repeat n from 0 to (@szlast-@szcode)/4 Addr : 258D: 35 : Constant 1 $00000000 Addr : 258E: C7 80 F4 : Memory Op Long PBASE + ADDRESS Address = 00F4 Addr : 2591: C7 80 F0 : Memory Op Long PBASE + ADDRESS Address = 00F0 Addr : 2594: ED : Math Op - Addr : 2595: 37 01 : Constant Mask Y=1 00000004 4 Addr : 2597: F6 : Math Op / Addr : 2598: Repeat n Step Label0002 Addr : 2598: 66 02 66 : Variable Operation Local Offset - 1 Assign Repeat-Var loop Address= 2581 -26 Addr : 259B: Label0004 Addr : 259B: 32 : Return |===========================================================================| Spin Block getreg with 1 Parameters and 1 Extra Stack Longs. Method 10 pub getreg(addr) | n Local Parameter DBASE:0000 - Result Local Parameter DBASE:0004 - addr Local Variable DBASE:0008 - n |===========================================================================| 187 grcode &= !$1ff Addr : 259C: 37 28 : Constant Mask Y=40 Decrement 000001FF 511 Addr : 259E: E7 : Math Op ! Addr : 259F: C6 80 F8 48 : Memory Op Long PBASE + ASSIGN Address = 00F8 BitMathop & 188 grcode |= addr & $1ff Addr : 25A3: 64 : Variable Operation Local Offset - 1 Read Addr : 25A4: 37 28 : Constant Mask Y=40 Decrement 000001FF 511 Addr : 25A6: E8 : Math Op & Addr : 25A7: C6 80 F8 4A : Memory Op Long PBASE + ASSIGN Address = 00F8 ByteMathop | 189 repeat n from 0 to (@grlast-@grcode)/4 Addr : 25AB: 35 : Constant 1 $00000000 Addr : 25AC: 69 : Variable Operation Local Offset - 2 Write Addr : 25AD: Label0002 190 run(long[@grcode+(n*4)]) Addr : 25AD: 01 : Drop Anchor Addr : 25AE: C7 80 F8 : Memory Op Long PBASE + ADDRESS Address = 00F8 Addr : 25B1: 68 : Variable Operation Local Offset - 2 Read Addr : 25B2: 37 01 : Constant Mask Y=1 00000004 4 Addr : 25B4: F4 : Math Op * Addr : 25B5: EC : Math Op + Addr : 25B6: C0 : Memory Op Long POP Address READ Addr : 25B7: 05 03 : Call Sub 3 Addr : 25B9: Label0003 189 repeat n from 0 to (@grlast-@grcode)/4 Addr : 25B9: 35 : Constant 1 $00000000 Addr : 25BA: C7 81 08 : Memory Op Long PBASE + ADDRESS Address = 0108 Addr : 25BD: C7 80 F8 : Memory Op Long PBASE + ADDRESS Address = 00F8 Addr : 25C0: ED : Math Op - Addr : 25C1: 37 01 : Constant Mask Y=1 00000004 4 Addr : 25C3: F6 : Math Op / Addr : 25C4: Repeat n Step Label0002 Addr : 25C4: 6A 02 66 : Variable Operation Local Offset - 2 Assign Repeat-Var loop Address= 25AD -26 Addr : 25C7: Label0004 191 return long[DATA] Addr : 25C7: 48 : Variable Operation Global Offset - 2 Read Addr : 25C8: C0 : Memory Op Long POP Address READ Addr : 25C9: 33 : Return value Addr : 25CA: Data : 32 2 |===========================================================================| Spin Block setreg with 2 Parameters and 1 Extra Stack Longs. Method 11 pub setreg(addr, val) | n Local Parameter DBASE:0000 - Result Local Parameter DBASE:0004 - addr Local Parameter DBASE:0008 - val Local Variable DBASE:000C - n |===========================================================================| 202 write($1f7, val) Addr : 25CB: 01 : Drop Anchor Addr : 25CC: 39 01 F7 : Constant 2 Bytes - 01 F7 - $000001F7 503 Addr : 25CF: 68 : Variable Operation Local Offset - 2 Read Addr : 25D0: 05 05 : Call Sub 5 205 gscode &= !($1ff << 9) Addr : 25D2: 37 28 : Constant Mask Y=40 Decrement 000001FF 511 Addr : 25D4: 38 09 : Constant 1 Bytes - 09 - $00000009 9 Addr : 25D6: E3 : Math Op << Addr : 25D7: E7 : Math Op ! Addr : 25D8: C6 81 0C 48 : Memory Op Long PBASE + ASSIGN Address = 010C BitMathop & 206 gscode |= (addr & $1ff) << 9 Addr : 25DC: 64 : Variable Operation Local Offset - 1 Read Addr : 25DD: 37 28 : Constant Mask Y=40 Decrement 000001FF 511 Addr : 25DF: E8 : Math Op & Addr : 25E0: 38 09 : Constant 1 Bytes - 09 - $00000009 9 Addr : 25E2: E3 : Math Op << Addr : 25E3: C6 81 0C 4A : Memory Op Long PBASE + ASSIGN Address = 010C ByteMathop | 207 repeat n from 0 to (@gslast-@gscode)/4 Addr : 25E7: 35 : Constant 1 $00000000 Addr : 25E8: 6D : Variable Operation Local Offset - 3 Write Addr : 25E9: Label0002 208 run(long[@gscode+(n*4)]) Addr : 25E9: 01 : Drop Anchor Addr : 25EA: C7 81 0C : Memory Op Long PBASE + ADDRESS Address = 010C Addr : 25ED: 6C : Variable Operation Local Offset - 3 Read Addr : 25EE: 37 01 : Constant Mask Y=1 00000004 4 Addr : 25F0: F4 : Math Op * Addr : 25F1: EC : Math Op + Addr : 25F2: C0 : Memory Op Long POP Address READ Addr : 25F3: 05 03 : Call Sub 3 Addr : 25F5: Label0003 207 repeat n from 0 to (@gslast-@gscode)/4 Addr : 25F5: 35 : Constant 1 $00000000 Addr : 25F6: C7 81 1C : Memory Op Long PBASE + ADDRESS Address = 011C Addr : 25F9: C7 81 0C : Memory Op Long PBASE + ADDRESS Address = 010C Addr : 25FC: ED : Math Op - Addr : 25FD: 37 01 : Constant Mask Y=1 00000004 4 Addr : 25FF: F6 : Math Op / Addr : 2600: Repeat n Step Label0002 Addr : 2600: 6E 02 66 : Variable Operation Local Offset - 3 Assign Repeat-Var loop Address= 25E9 -26 Addr : 2603: Label0004 209 return long[DATA] Addr : 2603: 48 : Variable Operation Global Offset - 2 Read Addr : 2604: C0 : Memory Op Long POP Address READ Addr : 2605: 33 : Return value Addr : 2606: Data : 32 2 |===========================================================================| Object FullDuplexSingleton Object Base is 2608 |===========================================================================| Object Constants |===========================================================================| |===========================================================================| VBASE Global Variables |===========================================================================| VBASE : 0000 LONG Size 0004 Variable cog |===========================================================================| Object DAT Blocks |===========================================================================| 2640(0000) 00 00 00 00 | rx_head long 0 '9 contiguous longs 2644(0001) 00 00 00 00 | rx_tail long 0 2648(0002) 00 00 00 00 | tx_head long 0 264C(0003) 00 00 00 00 | tx_tail long 0 2650(0004) 00 00 00 00 | rx_pin long 0 2654(0005) 00 00 00 00 | tx_pin long 0 2658(0006) 00 00 00 00 | rxtx_mode long 0 265C(0007) 00 00 00 00 | bit_ticks long 0 2660(0008) 00 00 00 00 | buffer_ptr long 0 2664(0009) 00 | rx_buffer byte 0 [16] 'transmit and receive buffers 2674(000D) 00 | tx_buffer byte 0 [16] 2684(0011) | org 2684(0000) F0 A9 BC A0 | entry mov t1,par 'get structure address 2688(0001) 10 A8 FC 80 | add t1,#4 << 2 'skip past heads and tails 268C(0002) 54 AA BC 08 | rdlong t2,t1 'get rx_pin 2690(0003) 01 B2 FC A0 | mov rxmask,#1 2694(0004) 55 B2 BC 2C | shl rxmask,t2 2698(0005) 04 A8 FC 80 | add t1,#4 'get tx_pin 269C(0006) 54 AA BC 08 | rdlong t2,t1 26A0(0007) 01 BE FC A0 | mov txmask,#1 26A4(0008) 55 BE BC 2C | shl txmask,t2 26A8(0009) 04 A8 FC 80 | add t1,#4 'get rxtx_mode 26AC(000A) 54 AE BC 08 | rdlong rxtxmode,t1 26B0(000B) 04 A8 FC 80 | add t1,#4 'get bit_ticks 26B4(000C) 54 B0 BC 08 | rdlong bitticks,t1 26B8(000D) 04 A8 FC 80 | add t1,#4 'get buffer_ptr 26BC(000E) 54 B4 BC 08 | rdlong rxbuff,t1 26C0(000F) 5A C0 BC A0 | mov txbuff,rxbuff 26C4(0010) 10 C0 FC 80 | add txbuff,#16 26C8(0011) 04 AE 7C 62 | test rxtxmode,#%100 wz 'init tx pin according to mode 26CC(0012) 02 AE 7C 61 | test rxtxmode,#%010 wc 26D0(0013) 5F E8 9B 68 | if_z_ne_c or outa,txmask 26D4(0014) 5F EC AB 68 | if_z or dira,txmask 26D8(0015) 33 C8 FC A0 | mov txcode,#transmit 'initialize ping-pong multitasking 26DC(0016) 64 BC BC 5C | receive jmpret rxcode,txcode 'run a chunk of transmit code, then return 26E0(0017) 01 AE 7C 62 | test rxtxmode,#%001 wz 'wait for start bit on rx pin 26E4(0018) F2 B3 3C 61 | test rxmask,ina wc 26E8(0019) 16 00 64 5C | if_z_eq_c jmp #receive 26EC(001A) 09 B8 FC A0 | mov rxbits,#9 'ready to receive byte 26F0(001B) 58 BA BC A0 | mov rxcnt,bitticks 26F4(001C) 01 BA FC 28 | shr rxcnt,#1 26F8(001D) F1 BB BC 80 | add rxcnt,cnt 26FC(001E) 58 BA BC 80 | :bit add rxcnt,bitticks 'ready next bit period 2700(001F) 64 BC BC 5C | :wait jmpret rxcode,txcode 'run a chuck of transmit code, then return 2704(0020) 5D A8 BC A0 | mov t1,rxcnt 'check if bit receive period done 2708(0021) F1 A9 BC 84 | sub t1,cnt 270C(0022) 00 A8 7C C1 | cmps t1,#0 wc 2710(0023) 1F 00 4C 5C | if_nc jmp #:wait 2714(0024) F2 B3 3C 61 | test rxmask,ina wc 'receive bit on rx pin 2718(0025) 01 B6 FC 30 | rcr rxdata,#1 271C(0026) 1E B8 FC E4 | djnz rxbits,#:bit 2720(0027) 17 B6 FC 28 | shr rxdata,#32-9 'justify and trim received byte 2724(0028) FF B6 FC 60 | and rxdata,#$FF 2728(0029) 01 AE 7C 62 | test rxtxmode,#%001 wz 'if rx inverted, invert byte 272C(002A) FF B6 D4 6C | if_nz xor rxdata,#$FF 2730(002B) F0 AB BC 08 | rdlong t2,par 'save received byte and inc head 2734(002C) 5A AA BC 80 | add t2,rxbuff 2738(002D) 55 B6 3C 00 | wrbyte rxdata,t2 273C(002E) 5A AA BC 84 | sub t2,rxbuff 2740(002F) 01 AA FC 80 | add t2,#1 2744(0030) 0F AA FC 60 | and t2,#$0F 2748(0031) F0 AB 3C 08 | wrlong t2,par 274C(0032) 16 00 7C 5C | jmp #receive 'byte done, receive next byte 2750(0033) 5E C8 BC 5C | transmit jmpret txcode,rxcode 'run a chunk of receive code, then return 2754(0034) F0 A9 BC A0 | mov t1,par 'check for head <> tail 2758(0035) 08 A8 FC 80 | add t1,#2 << 2 275C(0036) 54 AA BC 08 | rdlong t2,t1 2760(0037) 04 A8 FC 80 | add t1,#1 << 2 2764(0038) 54 AC BC 08 | rdlong t3,t1 2768(0039) 56 AA 3C 86 | cmp t2,t3 wz 276C(003A) 33 00 68 5C | if_z jmp #transmit 2770(003B) 60 AC BC 80 | add t3,txbuff 'get byte and inc tail 2774(003C) 56 C2 BC 00 | rdbyte txdata,t3 2778(003D) 60 AC BC 84 | sub t3,txbuff 277C(003E) 01 AC FC 80 | add t3,#1 2780(003F) 0F AC FC 60 | and t3,#$0F 2784(0040) 54 AC 3C 08 | wrlong t3,t1 2788(0041) 00 C3 FC 68 | or txdata,#$100 'ready byte to transmit 278C(0042) 02 C2 FC 2C | shl txdata,#2 2790(0043) 01 C2 FC 68 | or txdata,#1 2794(0044) 0B C4 FC A0 | mov txbits,#11 2798(0045) F1 C7 BC A0 | mov txcnt,cnt 279C(0046) 04 AE 7C 62 | :bit test rxtxmode,#%100 wz 'output bit on tx pin according to mode 27A0(0047) 02 AE 7C 61 | test rxtxmode,#%010 wc 27A4(0048) 01 C2 E0 6C | if_z_and_c xor txdata,#1 27A8(0049) 01 C2 FC 29 | shr txdata,#1 wc 27AC(004A) 5F E8 AB 70 | if_z muxc outa,txmask 27B0(004B) 5F EC 97 74 | if_nz muxnc dira,txmask 27B4(004C) 58 C6 BC 80 | add txcnt,bitticks 'ready next cnt 27B8(004D) 5E C8 BC 5C | :wait jmpret txcode,rxcode 'run a chunk of receive code, then return 27BC(004E) 63 A8 BC A0 | mov t1,txcnt 'check if bit transmit period done 27C0(004F) F1 A9 BC 84 | sub t1,cnt 27C4(0050) 00 A8 7C C1 | cmps t1,#0 wc 27C8(0051) 4D 00 4C 5C | if_nc jmp #:wait 27CC(0052) 46 C4 FC E4 | djnz txbits,#:bit 'another bit to transmit? 27D0(0053) 33 00 7C 5C | jmp #transmit 'byte done, transmit next byte 27D4(0054) | t1 res 1 27D4(0055) | t2 res 1 27D4(0056) | t3 res 1 27D4(0057) | rxtxmode res 1 27D4(0058) | bitticks res 1 27D4(0059) | rxmask res 1 27D4(005A) | rxbuff res 1 27D4(005B) | rxdata res 1 27D4(005C) | rxbits res 1 27D4(005D) | rxcnt res 1 27D4(005E) | rxcode res 1 27D4(005F) | txmask res 1 27D4(0060) | txbuff res 1 27D4(0061) | txdata res 1 27D4(0062) | txbits res 1 27D4(0063) | txcnt res 1 27D4(0064) | txcode res 1 |===========================================================================| |===========================================================================| Spin Block start with 4 Parameters and 0 Extra Stack Longs. Method 1 PUB start(rxpin, txpin, mode, baudrate) : okay Local Parameter DBASE:0000 - okay Local Parameter DBASE:0004 - rxpin Local Parameter DBASE:0008 - txpin Local Parameter DBASE:000C - mode Local Parameter DBASE:0010 - baudrate |===========================================================================| 47 stop Addr : 27D4: 01 : Drop Anchor Addr : 27D5: 05 02 : Call Sub 2 48 longfill(@rx_head, 0, 4) Addr : 27D7: C7 38 : Memory Op Long PBASE + ADDRESS Address = 0038 Addr : 27D9: 35 : Constant 1 $00000000 Addr : 27DA: 37 01 : Constant Mask Y=1 00000004 4 Addr : 27DC: 1A : LongFill(Start, Value, Count) 49 longmove(@rx_pin, @rxpin, 3) Addr : 27DD: C7 48 : Memory Op Long PBASE + ADDRESS Address = 0048 Addr : 27DF: 67 : Variable Operation Local Offset - 1 Address Addr : 27E0: 37 21 : Constant Mask Y=33 Decrement 00000003 3 Addr : 27E2: 1E : LongMove(To, From, Count) 50 bit_ticks := clkfreq / baudrate Addr : 27E3: 35 : Constant 1 $00000000 Addr : 27E4: C0 : Memory Op Long POP Address READ Addr : 27E5: 70 : Variable Operation Local Offset - 4 Read Addr : 27E6: F6 : Math Op / Addr : 27E7: C5 54 : Memory Op Long PBASE + WRITE Address = 0054 51 buffer_ptr := @rx_buffer Addr : 27E9: 87 5C : Memory Op Byte PBASE + ADDRESS Address = 005C Addr : 27EB: C5 58 : Memory Op Long PBASE + WRITE Address = 0058 52 okay := cog := cognew(@entry, @rx_head) + 1 Addr : 27ED: 34 : Constant 0 $FFFFFFFF Addr : 27EE: C7 7C : Memory Op Long PBASE + ADDRESS Address = 007C Addr : 27F0: C7 38 : Memory Op Long PBASE + ADDRESS Address = 0038 Addr : 27F2: 28 : CogInit(Id, Addr, Ptr) Push Addr : 27F3: 36 : Constant 2 $00000001 Addr : 27F4: EC : Math Op + Addr : 27F5: 42 80 : Variable Operation Global Offset - 0 Assign Write Push Addr : 27F7: 61 : Variable Operation Local Offset - 0 Write Addr : 27F8: 32 : Return |===========================================================================| Spin Block stop with 0 Parameters and 0 Extra Stack Longs. Method 2 PUB stop Local Parameter DBASE:0000 - Result |===========================================================================| 59 if cog Addr : 27F9: 40 : Variable Operation Global Offset - 0 Read Addr : 27FA: JZ Label0002 Addr : 27FA: 0A 05 : jz Address = 2801 5 60 cogstop(cog~ - 1) Addr : 27FC: 42 98 : Variable Operation Global Offset - 0 Assign VAR~ Post-clear Push Addr : 27FE: 36 : Constant 2 $00000001 Addr : 27FF: ED : Math Op - Addr : 2800: 21 : CogStop(id) Addr : 2801: Label0002 Addr : 2801: Label0003 61 longfill(@rx_head, 0, 9) Addr : 2801: C7 38 : Memory Op Long PBASE + ADDRESS Address = 0038 Addr : 2803: 35 : Constant 1 $00000000 Addr : 2804: 38 09 : Constant 1 Bytes - 09 - $00000009 9 Addr : 2806: 1A : LongFill(Start, Value, Count) Addr : 2807: 32 : Return |===========================================================================| Spin Block rxflush with 0 Parameters and 0 Extra Stack Longs. Method 3 PUB rxflush Local Parameter DBASE:0000 - Result |===========================================================================| 68 repeat while rxcheck => 0 Addr : 2808: Label0002 Addr : 2808: 00 : Drop Anchor Push Addr : 2809: 05 05 : Call Sub 5 Addr : 280B: 35 : Constant 1 $00000000 Addr : 280C: FE : Math Op => Addr : 280D: JZ Label0004 Addr : 280D: 0A 02 : jz Address = 2811 2 Addr : 280F: Label0003 Addr : 280F: JMP Label0002 Addr : 280F: 04 77 : Jmp 2808 -9 Addr : 2811: Label0004 Addr : 2811: 32 : Return |===========================================================================| Spin Block rxready with 0 Parameters and 0 Extra Stack Longs. Method 4 PUB rxready Local Parameter DBASE:0000 - Result |===========================================================================| 71 return rx_tail <> rx_head Addr : 2812: C4 3C : Memory Op Long PBASE + READ Address = 003C Addr : 2814: C4 38 : Memory Op Long PBASE + READ Address = 0038 Addr : 2816: FB : Math Op <> Addr : 2817: 33 : Return value Addr : 2818: Data : 32 2 |===========================================================================| Spin Block rxcheck with 0 Parameters and 0 Extra Stack Longs. Method 5 PUB rxcheck : rxbyte Local Parameter DBASE:0000 - rxbyte |===========================================================================| 78 rxbyte-- Addr : 2819: 62 3E : Variable Operation Local Offset - 0 Assign VAR-- post-dec Long 79 if rx_tail <> rx_head Addr : 281B: C4 3C : Memory Op Long PBASE + READ Address = 003C Addr : 281D: C4 38 : Memory Op Long PBASE + READ Address = 0038 Addr : 281F: FB : Math Op <> Addr : 2820: JZ Label0002 Addr : 2820: 0A 0E : jz Address = 2830 14 80 rxbyte := rx_buffer[rx_tail] Addr : 2822: C4 3C : Memory Op Long PBASE + READ Address = 003C Addr : 2824: 94 5C : Memory Op Byte PBASE + POP Index READ Address = 005C Addr : 2826: 61 : Variable Operation Local Offset - 0 Write 81 rx_tail := (rx_tail + 1) & $F Addr : 2827: C4 3C : Memory Op Long PBASE + READ Address = 003C Addr : 2829: 36 : Constant 2 $00000001 Addr : 282A: EC : Math Op + Addr : 282B: 37 23 : Constant Mask Y=35 Decrement 0000000F 15 Addr : 282D: E8 : Math Op & Addr : 282E: C5 3C : Memory Op Long PBASE + WRITE Address = 003C Addr : 2830: Label0002 Addr : 2830: Label0003 Addr : 2830: 32 : Return |===========================================================================| Spin Block rxtime with 1 Parameters and 1 Extra Stack Longs. Method 6 PUB rxtime(ms) : rxbyte | t Local Parameter DBASE:0000 - rxbyte Local Parameter DBASE:0004 - ms Local Variable DBASE:0008 - t |===========================================================================| 89 t := cnt Addr : 2831: 3F 91 : Register op CNT Read Addr : 2833: 69 : Variable Operation Local Offset - 2 Write Addr : 2834: Label0002 90 repeat until (rxbyte := rxcheck) => 0 or (cnt - t) / (clkfreq / 1000) > ms Addr : 2834: 00 : Drop Anchor Push Addr : 2835: 05 05 : Call Sub 5 Addr : 2837: 62 80 : Variable Operation Local Offset - 0 Assign Write Push Addr : 2839: 35 : Constant 1 $00000000 Addr : 283A: FE : Math Op => Addr : 283B: 3F 91 : Register op CNT Read Addr : 283D: 68 : Variable Operation Local Offset - 2 Read Addr : 283E: ED : Math Op - Addr : 283F: 35 : Constant 1 $00000000 Addr : 2840: C0 : Memory Op Long POP Address READ Addr : 2841: 39 03 E8 : Constant 2 Bytes - 03 E8 - $000003E8 1000 Addr : 2844: F6 : Math Op / Addr : 2845: F6 : Math Op / Addr : 2846: 64 : Variable Operation Local Offset - 1 Read Addr : 2847: FA : Math Op > Addr : 2848: F2 : Math Op OR Addr : 2849: JNZ Label0004 Addr : 2849: 0B 02 : jnz Address = 284D 2 Addr : 284B: Label0003 Addr : 284B: JMP Label0002 Addr : 284B: 04 67 : Jmp 2834 -25 Addr : 284D: Label0004 Addr : 284D: 32 : Return |===========================================================================| Spin Block rx with 0 Parameters and 0 Extra Stack Longs. Method 7 PUB rx : rxbyte Local Parameter DBASE:0000 - rxbyte |===========================================================================| 98 repeat while (rxbyte := rxcheck) < 0 Addr : 284E: Label0002 Addr : 284E: 00 : Drop Anchor Push Addr : 284F: 05 05 : Call Sub 5 Addr : 2851: 62 80 : Variable Operation Local Offset - 0 Assign Write Push Addr : 2853: 35 : Constant 1 $00000000 Addr : 2854: F9 : Math Op < Addr : 2855: JZ Label0004 Addr : 2855: 0A 02 : jz Address = 2859 2 Addr : 2857: Label0003 Addr : 2857: JMP Label0002 Addr : 2857: 04 75 : Jmp 284E -11 Addr : 2859: Label0004 Addr : 2859: 32 : Return |===========================================================================| Spin Block out with 1 Parameters and 0 Extra Stack Longs. Method 8 PUB out(txbyte) Local Parameter DBASE:0000 - Result Local Parameter DBASE:0004 - txbyte |===========================================================================| 101 tx(txbyte) Addr : 285A: 01 : Drop Anchor Addr : 285B: 64 : Variable Operation Local Offset - 1 Read Addr : 285C: 05 09 : Call Sub 9 Addr : 285E: 32 : Return |===========================================================================| Spin Block tx with 1 Parameters and 0 Extra Stack Longs. Method 9 PUB tx(txbyte) Local Parameter DBASE:0000 - Result Local Parameter DBASE:0004 - txbyte |===========================================================================| 105 if txbyte == EOL Addr : 285F: 64 : Variable Operation Local Offset - 1 Read Addr : 2860: 38 0A : Constant 1 Bytes - 0A - $0000000A 10 Addr : 2862: FC : Math Op == Addr : 2863: JZ Label0002 Addr : 2863: 0A 05 : jz Address = 286A 5 106 tx(CR) Addr : 2865: 01 : Drop Anchor Addr : 2866: 38 0D : Constant 1 Bytes - 0D - $0000000D 13 Addr : 2868: 05 09 : Call Sub 9 Addr : 286A: Label0002 Addr : 286A: Label0003 Addr : 286A: Label0004 110 repeat until (tx_tail <> (tx_head + 1) & $F) Addr : 286A: C4 44 : Memory Op Long PBASE + READ Address = 0044 Addr : 286C: C4 40 : Memory Op Long PBASE + READ Address = 0040 Addr : 286E: 36 : Constant 2 $00000001 Addr : 286F: EC : Math Op + Addr : 2870: 37 23 : Constant Mask Y=35 Decrement 0000000F 15 Addr : 2872: E8 : Math Op & Addr : 2873: FB : Math Op <> Addr : 2874: JNZ Label0006 Addr : 2874: 0B 02 : jnz Address = 2878 2 Addr : 2876: Label0005 Addr : 2876: JMP Label0004 Addr : 2876: 04 72 : Jmp 286A -14 Addr : 2878: Label0006 111 tx_buffer[tx_head] := txbyte Addr : 2878: 64 : Variable Operation Local Offset - 1 Read Addr : 2879: C4 40 : Memory Op Long PBASE + READ Address = 0040 Addr : 287B: 95 6C : Memory Op Byte PBASE + POP Index WRITE Address = 006C 112 tx_head := (tx_head + 1) & $F Addr : 287D: C4 40 : Memory Op Long PBASE + READ Address = 0040 Addr : 287F: 36 : Constant 2 $00000001 Addr : 2880: EC : Math Op + Addr : 2881: 37 23 : Constant Mask Y=35 Decrement 0000000F 15 Addr : 2883: E8 : Math Op & Addr : 2884: C5 40 : Memory Op Long PBASE + WRITE Address = 0040 114 if rxtx_mode & %1000 Addr : 2886: C4 50 : Memory Op Long PBASE + READ Address = 0050 Addr : 2888: 37 02 : Constant Mask Y=2 00000008 8 Addr : 288A: E8 : Math Op & Addr : 288B: JZ Label0007 Addr : 288B: 0A 03 : jz Address = 2890 3 115 rx Addr : 288D: 01 : Drop Anchor Addr : 288E: 05 07 : Call Sub 7 Addr : 2890: Label0007 Addr : 2890: Label0008 Addr : 2890: 32 : Return |===========================================================================| Spin Block str with 1 Parameters and 0 Extra Stack Longs. Method 10 PUB str(stringptr) Local Parameter DBASE:0000 - Result Local Parameter DBASE:0004 - stringptr |===========================================================================| 122 repeat while byte[stringptr] Addr : 2891: Label0002 Addr : 2891: 64 : Variable Operation Local Offset - 1 Read Addr : 2892: 80 : Memory Op Byte POP Address READ Addr : 2893: JZ Label0004 Addr : 2893: 0A 08 : jz Address = 289D 8 123 tx(byte[stringptr++]) Addr : 2895: 01 : Drop Anchor Addr : 2896: 66 AE : Variable Operation Local Offset - 1 Assign VAR++ post inc Long Push Addr : 2898: 80 : Memory Op Byte POP Address READ Addr : 2899: 05 09 : Call Sub 9 Addr : 289B: Label0003 Addr : 289B: JMP Label0002 Addr : 289B: 04 74 : Jmp 2891 -12 Addr : 289D: Label0004 Addr : 289D: 32 : Return |===========================================================================| Spin Block dec with 1 Parameters and 2 Extra Stack Longs. Method 11 PUB dec(value) | i, x Local Parameter DBASE:0000 - Result Local Parameter DBASE:0004 - value Local Variable DBASE:0008 - i Local Variable DBASE:000C - x |===========================================================================| 130 x := value == NEGX 'Check for max negative Addr : 289E: 64 : Variable Operation Local Offset - 1 Read Addr : 289F: 37 1E : Constant Mask Y=30 80000000 2147483648 Addr : 28A1: FC : Math Op == Addr : 28A2: 6D : Variable Operation Local Offset - 3 Write 131 if value < 0 Addr : 28A3: 64 : Variable Operation Local Offset - 1 Read Addr : 28A4: 35 : Constant 1 $00000000 Addr : 28A5: F9 : Math Op < Addr : 28A6: JZ Label0002 Addr : 28A6: 0A 0A : jz Address = 28B2 10 132 value := ||(value+x) 'If negative, make positive; adjust for max negative Addr : 28A8: 64 : Variable Operation Local Offset - 1 Read Addr : 28A9: 6C : Variable Operation Local Offset - 3 Read Addr : 28AA: EC : Math Op + Addr : 28AB: E9 : Math Op || Addr : 28AC: 65 : Variable Operation Local Offset - 1 Write 133 tx("-") 'and output sign Addr : 28AD: 01 : Drop Anchor Addr : 28AE: 38 2D : Constant 1 Bytes - 2D - $0000002D 45 Addr : 28B0: 05 09 : Call Sub 9 Addr : 28B2: Label0002 Addr : 28B2: Label0003 135 i := 1_000_000_000 'Initialize divisor Addr : 28B2: 3B 3B 9A CA 00 : Constant 4 Bytes - 3B 9A CA 00 - $3B9ACA00 1000000000 Addr : 28B7: 69 : Variable Operation Local Offset - 2 Write 137 repeat 10 'Loop for 10 digits Addr : 28B8: 38 0A : Constant 1 Bytes - 0A - $0000000A 10 Addr : 28BA: TJZ Label0006 Addr : 28BA: 08 2D : tjz Address = 28E9 45 Addr : 28BC: Label0004 138 if value => i Addr : 28BC: 64 : Variable Operation Local Offset - 1 Read Addr : 28BD: 68 : Variable Operation Local Offset - 2 Read Addr : 28BE: FE : Math Op => Addr : 28BF: JZ Label0007 Addr : 28BF: 0A 16 : jz Address = 28D7 22 139 tx(value / i + "0" + x*(i == 1)) 'If non-zero digit, output digit; adjust for max negative Addr : 28C1: 01 : Drop Anchor Addr : 28C2: 64 : Variable Operation Local Offset - 1 Read Addr : 28C3: 68 : Variable Operation Local Offset - 2 Read Addr : 28C4: F6 : Math Op / Addr : 28C5: 38 30 : Constant 1 Bytes - 30 - $00000030 48 Addr : 28C7: EC : Math Op + Addr : 28C8: 6C : Variable Operation Local Offset - 3 Read Addr : 28C9: 68 : Variable Operation Local Offset - 2 Read Addr : 28CA: 36 : Constant 2 $00000001 Addr : 28CB: FC : Math Op == Addr : 28CC: F4 : Math Op * Addr : 28CD: EC : Math Op + Addr : 28CE: 05 09 : Call Sub 9 140 value //= i 'and digit from value Addr : 28D0: 68 : Variable Operation Local Offset - 2 Read Addr : 28D1: 66 57 : Variable Operation Local Offset - 1 Assign LongMathop // 141 result~~ 'flag non-zero found Addr : 28D3: 62 1C : Variable Operation Local Offset - 0 Assign VAR~~ Post-set Addr : 28D5: JMP Label0008 Addr : 28D5: 04 0C : Jmp 28E3 12 Addr : 28D7: Label0007 142 elseif result or i == 1 Addr : 28D7: 60 : Variable Operation Local Offset - 0 Read Addr : 28D8: 68 : Variable Operation Local Offset - 2 Read Addr : 28D9: 36 : Constant 2 $00000001 Addr : 28DA: FC : Math Op == Addr : 28DB: F2 : Math Op OR Addr : 28DC: JZ Label0009 Addr : 28DC: 0A 05 : jz Address = 28E3 5 143 tx("0") 'If zero digit (or only digit) output it Addr : 28DE: 01 : Drop Anchor Addr : 28DF: 38 30 : Constant 1 Bytes - 30 - $00000030 48 Addr : 28E1: 05 09 : Call Sub 9 Addr : 28E3: Label0009 Addr : 28E3: Label0008 144 i /= 10 'Update divisor Addr : 28E3: 38 0A : Constant 1 Bytes - 0A - $0000000A 10 Addr : 28E5: 6A 56 : Variable Operation Local Offset - 2 Assign LongMathop / Addr : 28E7: Label0005 Addr : 28E7: DJNZ Label0004 Addr : 28E7: 09 53 : djnz Address = 28BC -45 Addr : 28E9: Label0006 Addr : 28E9: 32 : Return |===========================================================================| Spin Block hex with 2 Parameters and 0 Extra Stack Longs. Method 12 PUB hex(value, digits) Local Parameter DBASE:0000 - Result Local Parameter DBASE:0004 - value Local Parameter DBASE:0008 - digits |===========================================================================| 151 value <<= (8 - digits) << 2 Addr : 28EA: 37 02 : Constant Mask Y=2 00000008 8 Addr : 28EC: 68 : Variable Operation Local Offset - 2 Read Addr : 28ED: ED : Math Op - Addr : 28EE: 37 00 : Constant Mask Y=0 00000002 2 Addr : 28F0: E3 : Math Op << Addr : 28F1: 66 43 : Variable Operation Local Offset - 1 Assign ByteMathop << 152 repeat digits Addr : 28F3: 68 : Variable Operation Local Offset - 2 Read Addr : 28F4: TJZ Label0004 Addr : 28F4: 08 1B : tjz Address = 2911 27 Addr : 28F6: Label0002 153 tx(lookupz((value <-= 4) & $F : "0".."9", "a".."f")) Addr : 28F6: 01 : Drop Anchor Addr : 28F7: 35 : Constant 1 $00000000 Addr : 28F8: Constant Address of Label0005 Addr : 28F8: 39 03 05 : Constant 2 Bytes - 03 05 - $00000305 773 Addr : 28FB: 37 01 : Constant Mask Y=1 00000004 4 Addr : 28FD: 66 C1 : Variable Operation Local Offset - 1 Assign BitMathop -< Push Addr : 28FF: 37 23 : Constant Mask Y=35 Decrement 0000000F 15 Addr : 2901: E8 : Math Op & Addr : 2902: 38 30 : Constant 1 Bytes - 30 - $00000030 48 Addr : 2904: 38 39 : Constant 1 Bytes - 39 - $00000039 57 Addr : 2906: 12 : Range LookUp Addr : 2907: 38 61 : Constant 1 Bytes - 61 - $00000061 97 Addr : 2909: 38 66 : Constant 1 Bytes - 66 - $00000066 102 Addr : 290B: 12 : Range LookUp Addr : 290C: 0F : Lookdone Addr : 290D: Label0005 Addr : 290D: 05 09 : Call Sub 9 Addr : 290F: Label0003 Addr : 290F: DJNZ Label0002 Addr : 290F: 09 65 : djnz Address = 28F6 -27 Addr : 2911: Label0004 Addr : 2911: 32 : Return |===========================================================================| Spin Block bin with 2 Parameters and 0 Extra Stack Longs. Method 13 PUB bin(value, digits) Local Parameter DBASE:0000 - Result Local Parameter DBASE:0004 - value Local Parameter DBASE:0008 - digits |===========================================================================| 160 value <<= 32 - digits Addr : 2912: 37 04 : Constant Mask Y=4 00000020 32 Addr : 2914: 68 : Variable Operation Local Offset - 2 Read Addr : 2915: ED : Math Op - Addr : 2916: 66 43 : Variable Operation Local Offset - 1 Assign ByteMathop << 161 repeat digits Addr : 2918: 68 : Variable Operation Local Offset - 2 Read Addr : 2919: TJZ Label0004 Addr : 2919: 08 0D : tjz Address = 2928 13 Addr : 291B: Label0002 162 tx((value <-= 1) & 1 + "0") Addr : 291B: 01 : Drop Anchor Addr : 291C: 36 : Constant 2 $00000001 Addr : 291D: 66 C1 : Variable Operation Local Offset - 1 Assign BitMathop -< Push Addr : 291F: 36 : Constant 2 $00000001 Addr : 2920: E8 : Math Op & Addr : 2921: 38 30 : Constant 1 Bytes - 30 - $00000030 48 Addr : 2923: EC : Math Op + Addr : 2924: 05 09 : Call Sub 9 Addr : 2926: Label0003 Addr : 2926: DJNZ Label0002 Addr : 2926: 09 73 : djnz Address = 291B -13 Addr : 2928: Label0004 Addr : 2928: 32 : Return |===========================================================================| Object Numbers Object Base is 292C |===========================================================================| Object Constants |===========================================================================| |===========================================================================| VBASE Global Variables |===========================================================================| VBASE : 0000 LONG Size 0004 Variable BCX0 VBASE : 0004 LONG Size 0004 Variable BCX1 VBASE : 0008 LONG Size 0004 Variable BCX2 VBASE : 000C LONG Size 0004 Variable BCX3 VBASE : 0010 BYTE Size 0007 Variable Symbols VBASE : 0017 BYTE Size 0031 Variable StrBuf |===========================================================================| Object DAT Blocks |===========================================================================| 294C(0000) 2C | DefaultSymbols byte ",_$%xxx" 'Special, default, symbols ("x" means unused) 294D(0000) 5F | 294E(0000) 24 | 294F(0000) 25 | 2950(0001) 78 | 2951(0001) 78 | 2952(0001) 78 | |===========================================================================| |===========================================================================| Spin Block Init with 0 Parameters and 0 Extra Stack Longs. Method 1 PUB Init Local Parameter DBASE:0000 - Result |===========================================================================| 32 Config(@DefaultSymbols) Addr : 2953: 01 : Drop Anchor Addr : 2954: 87 20 : Memory Op Byte PBASE + ADDRESS Address = 0020 Addr : 2956: 05 02 : Call Sub 2 Addr : 2958: 32 : Return |===========================================================================| Spin Block Config with 1 Parameters and 0 Extra Stack Longs. Method 2 PUB Config(SymAddr) Local Parameter DBASE:0000 - Result Local Parameter DBASE:0004 - SymAddr |===========================================================================| 41 bytemove(@Symbols, SymAddr, 7) Addr : 2959: 8B 10 : Memory Op Byte VBASE + ADDRESS Address = 0010 Addr : 295B: 64 : Variable Operation Local Offset - 1 Read Addr : 295C: 37 22 : Constant Mask Y=34 Decrement 00000007 7 Addr : 295E: 1C : ByteMove(To, From, Count) Addr : 295F: 32 : Return |===========================================================================| Spin Block ToStr with 2 Parameters and 0 Extra Stack Longs. Method 3 PUB ToStr(Num, Format): StrAddr Local Parameter DBASE:0000 - StrAddr Local Parameter DBASE:0004 - Num Local Parameter DBASE:0008 - Format |===========================================================================| 49 BCXToText(Format >> 19 & 7, Format >> 13 & $3F, Format >> 12 & 1, Format >> 11 & 1, Format >> 5 & $3F, BinToBCX(Num, Format & $1F #> 2 <# 16)) Addr : 2960: 01 : Drop Anchor Addr : 2961: 68 : Variable Operation Local Offset - 2 Read Addr : 2962: 38 13 : Constant 1 Bytes - 13 - $00000013 19 Addr : 2964: E2 : Math Op >> Addr : 2965: 37 22 : Constant Mask Y=34 Decrement 00000007 7 Addr : 2967: E8 : Math Op & Addr : 2968: 68 : Variable Operation Local Offset - 2 Read Addr : 2969: 38 0D : Constant 1 Bytes - 0D - $0000000D 13 Addr : 296B: E2 : Math Op >> Addr : 296C: 37 25 : Constant Mask Y=37 Decrement 0000003F 63 Addr : 296E: E8 : Math Op & Addr : 296F: 68 : Variable Operation Local Offset - 2 Read Addr : 2970: 38 0C : Constant 1 Bytes - 0C - $0000000C 12 Addr : 2972: E2 : Math Op >> Addr : 2973: 36 : Constant 2 $00000001 Addr : 2974: E8 : Math Op & Addr : 2975: 68 : Variable Operation Local Offset - 2 Read Addr : 2976: 38 0B : Constant 1 Bytes - 0B - $0000000B 11 Addr : 2978: E2 : Math Op >> Addr : 2979: 36 : Constant 2 $00000001 Addr : 297A: E8 : Math Op & Addr : 297B: 68 : Variable Operation Local Offset - 2 Read Addr : 297C: 38 05 : Constant 1 Bytes - 05 - $00000005 5 Addr : 297E: E2 : Math Op >> Addr : 297F: 37 25 : Constant Mask Y=37 Decrement 0000003F 63 Addr : 2981: E8 : Math Op & Addr : 2982: 00 : Drop Anchor Push Addr : 2983: 64 : Variable Operation Local Offset - 1 Read Addr : 2984: 68 : Variable Operation Local Offset - 2 Read Addr : 2985: 37 24 : Constant Mask Y=36 Decrement 0000001F 31 Addr : 2987: E8 : Math Op & Addr : 2988: 37 00 : Constant Mask Y=0 00000002 2 Addr : 298A: E4 : Math Op #> Addr : 298B: 37 03 : Constant Mask Y=3 00000010 16 Addr : 298D: E5 : Math Op <# Addr : 298E: 05 05 : Call Sub 5 Addr : 2990: 05 06 : Call Sub 6 50 StrAddr := @StrBuf Addr : 2992: 8B 17 : Memory Op Byte VBASE + ADDRESS Address = 0017 Addr : 2994: 61 : Variable Operation Local Offset - 0 Write Addr : 2995: 32 : Return |===========================================================================| Spin Block FromStr with 2 Parameters and 8 Extra Stack Longs. Method 4 PUB FromStr(StrAddr, Format): Num | Idx, N, Val, Char, Base, GChar, IChar, Field Local Parameter DBASE:0000 - Num Local Parameter DBASE:0004 - StrAddr Local Parameter DBASE:0008 - Format Local Variable DBASE:000C - Idx Local Variable DBASE:0010 - N Local Variable DBASE:0014 - Val Local Variable DBASE:0018 - Char Local Variable DBASE:001C - Base Local Variable DBASE:0020 - GChar Local Variable DBASE:0024 - IChar Local Variable DBASE:0028 - Field |===========================================================================| 59 Base := Format & $1F #> 2 <# 16 'Get base Addr : 2996: 68 : Variable Operation Local Offset - 2 Read Addr : 2997: 37 24 : Constant Mask Y=36 Decrement 0000001F 31 Addr : 2999: E8 : Math Op & Addr : 299A: 37 00 : Constant Mask Y=0 00000002 2 Addr : 299C: E4 : Math Op #> Addr : 299D: 37 03 : Constant Mask Y=3 00000010 16 Addr : 299F: E5 : Math Op <# Addr : 29A0: 7D : Variable Operation Local Offset - 7 Write 60 if GChar := Format >> 13 & 7 'Get grouping character Addr : 29A1: 68 : Variable Operation Local Offset - 2 Read Addr : 29A2: 38 0D : Constant 1 Bytes - 0D - $0000000D 13 Addr : 29A4: E2 : Math Op >> Addr : 29A5: 37 22 : Constant Mask Y=34 Decrement 00000007 7 Addr : 29A7: E8 : Math Op & Addr : 29A8: CE 20 80 : Memory Op Long DBASE + ASSIGN Address = 0020 Write Push Addr : 29AB: JZ Label0002 Addr : 29AB: 0A 09 : jz Address = 29B6 9 61 GChar := Symbols[--GChar #> 0] Addr : 29AD: CE 20 B6 : Memory Op Long DBASE + ASSIGN Address = 0020 --VAR pre-dec Long Push Addr : 29B0: 35 : Constant 1 $00000000 Addr : 29B1: E4 : Math Op #> Addr : 29B2: 98 10 : Memory Op Byte VBASE + POP Index READ Address = 0010 Addr : 29B4: CD 20 : Memory Op Long DBASE + WRITE Address = 0020 Addr : 29B6: Label0002 Addr : 29B6: Label0003 62 if IChar := Format >> 19 & 7 'Get indicator character Addr : 29B6: 68 : Variable Operation Local Offset - 2 Read Addr : 29B7: 38 13 : Constant 1 Bytes - 13 - $00000013 19 Addr : 29B9: E2 : Math Op >> Addr : 29BA: 37 22 : Constant Mask Y=34 Decrement 00000007 7 Addr : 29BC: E8 : Math Op & Addr : 29BD: CE 24 80 : Memory Op Long DBASE + ASSIGN Address = 0024 Write Push Addr : 29C0: JZ Label0004 Addr : 29C0: 0A 09 : jz Address = 29CB 9 63 IChar := Symbols[--IChar #> 0] Addr : 29C2: CE 24 B6 : Memory Op Long DBASE + ASSIGN Address = 0024 --VAR pre-dec Long Push Addr : 29C5: 35 : Constant 1 $00000000 Addr : 29C6: E4 : Math Op #> Addr : 29C7: 98 10 : Memory Op Byte VBASE + POP Index READ Address = 0010 Addr : 29C9: CD 24 : Memory Op Long DBASE + WRITE Address = 0024 Addr : 29CB: Label0004 Addr : 29CB: Label0005 64 Field := Format >> 5 & $3F - 1 'Get field size, if any (subtract out sign char) Addr : 29CB: 68 : Variable Operation Local Offset - 2 Read Addr : 29CC: 38 05 : Constant 1 Bytes - 05 - $00000005 5 Addr : 29CE: E2 : Math Op >> Addr : 29CF: 37 25 : Constant Mask Y=37 Decrement 0000003F 63 Addr : 29D1: E8 : Math Op & Addr : 29D2: 36 : Constant 2 $00000001 Addr : 29D3: ED : Math Op - Addr : 29D4: CD 28 : Memory Op Long DBASE + WRITE Address = 0028 65 longfill(@Idx, 0, 3) 'Clear Idx, N and Val Addr : 29D6: 6F : Variable Operation Local Offset - 3 Address Addr : 29D7: 35 : Constant 1 $00000000 Addr : 29D8: 37 21 : Constant Mask Y=33 Decrement 00000003 3 Addr : 29DA: 1A : LongFill(Start, Value, Count) Addr : 29DB: Label0006 66 repeat while Char := byte[StrAddr][Idx] 'While not null Addr : 29DB: 64 : Variable Operation Local Offset - 1 Read Addr : 29DC: 6C : Variable Operation Local Offset - 3 Read Addr : 29DD: 90 : Memory Op Byte POP Address POP Index READ Addr : 29DE: 7A 80 : Variable Operation Local Offset - 6 Assign Write Push Addr : 29E0: JZ Label0008 Addr : 29E0: 0A 2B : jz Address = 2A0D 43 67 if (not IChar or (IChar and Val)) and InBaseRange(Char, Base) > 0 'Found first valid digit? (with prefix indicator if required)? Addr : 29E2: CC 24 : Memory Op Long DBASE + READ Address = 0024 Addr : 29E4: FF : Math Op NOT Addr : 29E5: CC 24 : Memory Op Long DBASE + READ Address = 0024 Addr : 29E7: 74 : Variable Operation Local Offset - 5 Read Addr : 29E8: F0 : Math Op AND Addr : 29E9: F2 : Math Op OR Addr : 29EA: 00 : Drop Anchor Push Addr : 29EB: 78 : Variable Operation Local Offset - 6 Read Addr : 29EC: 7C : Variable Operation Local Offset - 7 Read Addr : 29ED: 05 07 : Call Sub 7 Addr : 29EF: 35 : Constant 1 $00000000 Addr : 29F0: FA : Math Op > Addr : 29F1: F0 : Math Op AND Addr : 29F2: JZ Label0009 Addr : 29F2: 0A 04 : jz Address = 29F8 4 68 quit ' exit to process digits Addr : 29F4: JMP Label0008 Addr : 29F4: 04 17 : Jmp 2A0D 23 Addr : 29F6: JMP Label000A Addr : 29F6: 04 11 : Jmp 2A09 17 Addr : 29F8: Label0009 70 if not Val := IChar and (Char == IChar) ' look for indicator character (if required) Addr : 29F8: CC 24 : Memory Op Long DBASE + READ Address = 0024 Addr : 29FA: 78 : Variable Operation Local Offset - 6 Read Addr : 29FB: CC 24 : Memory Op Long DBASE + READ Address = 0024 Addr : 29FD: FC : Math Op == Addr : 29FE: F0 : Math Op AND Addr : 29FF: 76 80 : Variable Operation Local Offset - 5 Assign Write Push Addr : 2A01: FF : Math Op NOT Addr : 2A02: JZ Label000C Addr : 2A02: 0A 05 : jz Address = 2A09 5 71 N := Char == "-" 'Update N flag if not indicator Addr : 2A04: 78 : Variable Operation Local Offset - 6 Read Addr : 2A05: 38 2D : Constant 1 Bytes - 2D - $0000002D 45 Addr : 2A07: FC : Math Op == Addr : 2A08: 71 : Variable Operation Local Offset - 4 Write Addr : 2A09: Label000C Addr : 2A09: Label000D Addr : 2A09: Label000B Addr : 2A09: Label000A 72 Idx++ Addr : 2A09: 6E 2E : Variable Operation Local Offset - 3 Assign VAR++ post inc Long Addr : 2A0B: Label0007 Addr : 2A0B: JMP Label0006 Addr : 2A0B: 04 4E : Jmp 29DB -50 Addr : 2A0D: Label0008 73 Field += Val 'Subract indicator character from remaining field size Addr : 2A0D: 74 : Variable Operation Local Offset - 5 Read Addr : 2A0E: CE 28 4C : Memory Op Long DBASE + ASSIGN Address = 0028 WordMathop + Addr : 2A11: Label000E 74 repeat while (Field--) and (Char := byte[StrAddr][Idx++]) and ((Val := InBaseRange(Char, Base)) > 0 or (GChar and (Char == GChar))) Addr : 2A11: CE 28 BE : Memory Op Long DBASE + ASSIGN Address = 0028 VAR-- post-dec Long Push Addr : 2A14: 64 : Variable Operation Local Offset - 1 Read Addr : 2A15: 6E AE : Variable Operation Local Offset - 3 Assign VAR++ post inc Long Push Addr : 2A17: 90 : Memory Op Byte POP Address POP Index READ Addr : 2A18: 7A 80 : Variable Operation Local Offset - 6 Assign Write Push Addr : 2A1A: F0 : Math Op AND Addr : 2A1B: 00 : Drop Anchor Push Addr : 2A1C: 78 : Variable Operation Local Offset - 6 Read Addr : 2A1D: 7C : Variable Operation Local Offset - 7 Read Addr : 2A1E: 05 07 : Call Sub 7 Addr : 2A20: 76 80 : Variable Operation Local Offset - 5 Assign Write Push Addr : 2A22: 35 : Constant 1 $00000000 Addr : 2A23: FA : Math Op > Addr : 2A24: CC 20 : Memory Op Long DBASE + READ Address = 0020 Addr : 2A26: 78 : Variable Operation Local Offset - 6 Read Addr : 2A27: CC 20 : Memory Op Long DBASE + READ Address = 0020 Addr : 2A29: FC : Math Op == Addr : 2A2A: F0 : Math Op AND Addr : 2A2B: F2 : Math Op OR Addr : 2A2C: F0 : Math Op AND Addr : 2A2D: JZ Label0010 Addr : 2A2D: 0A 0C : jz Address = 2A3B 12 75 if Val 'While not null and valid digit or grouping char Addr : 2A2F: 74 : Variable Operation Local Offset - 5 Read Addr : 2A30: JZ Label0011 Addr : 2A30: 0A 07 : jz Address = 2A39 7 76 Num := Num * Base + --Val 'Accumulate if valid digit Addr : 2A32: 60 : Variable Operation Local Offset - 0 Read Addr : 2A33: 7C : Variable Operation Local Offset - 7 Read Addr : 2A34: F4 : Math Op * Addr : 2A35: 76 B6 : Variable Operation Local Offset - 5 Assign --VAR pre-dec Long Push Addr : 2A37: EC : Math Op + Addr : 2A38: 61 : Variable Operation Local Offset - 0 Write Addr : 2A39: Label0011 Addr : 2A39: Label0012 Addr : 2A39: Label000F Addr : 2A39: JMP Label000E Addr : 2A39: 04 56 : Jmp 2A11 -42 Addr : 2A3B: Label0010 77 if N Addr : 2A3B: 70 : Variable Operation Local Offset - 4 Read Addr : 2A3C: JZ Label0013 Addr : 2A3C: 0A 02 : jz Address = 2A40 2 78 -Num 'Negate if necessary Addr : 2A3E: 62 46 : Variable Operation Local Offset - 0 Assign LongMathop - Addr : 2A40: Label0013 Addr : 2A40: Label0014 Addr : 2A40: 32 : Return |===========================================================================| Spin Block BinToBCX with 2 Parameters and 1 Extra Stack Longs. Method 5 PRI BinToBCX(Num, Base): Digits | N Local Parameter DBASE:0000 - Digits Local Parameter DBASE:0004 - Num Local Parameter DBASE:0008 - Base Local Variable DBASE:000C - N |===========================================================================| 84 longfill(@BCX0, 0, 4) 'Clear BCX Workspace Addr : 2A41: 43 : Variable Operation Global Offset - 0 Address Addr : 2A42: 35 : Constant 1 $00000000 Addr : 2A43: 37 01 : Constant Mask Y=1 00000004 4 Addr : 2A45: 1A : LongFill(Start, Value, Count) 85 N := (Num < 0) & $10000000 'Remember if Num negative Addr : 2A46: 64 : Variable Operation Local Offset - 1 Read Addr : 2A47: 35 : Constant 1 $00000000 Addr : 2A48: F9 : Math Op < Addr : 2A49: 37 1B : Constant Mask Y=27 10000000 268435456 Addr : 2A4B: E8 : Math Op & Addr : 2A4C: 6D : Variable Operation Local Offset - 3 Write Addr : 2A4D: Label0002 87 byte[@BCX0][Digits++ >> 1] += ||(Num // Base) << (4 * Digits&1) Addr : 2A4D: 64 : Variable Operation Local Offset - 1 Read Addr : 2A4E: 68 : Variable Operation Local Offset - 2 Read Addr : 2A4F: F7 : Math Op // Addr : 2A50: E9 : Math Op || Addr : 2A51: 37 01 : Constant Mask Y=1 00000004 4 Addr : 2A53: 60 : Variable Operation Local Offset - 0 Read Addr : 2A54: 36 : Constant 2 $00000001 Addr : 2A55: E8 : Math Op & Addr : 2A56: F4 : Math Op * Addr : 2A57: E3 : Math Op << Addr : 2A58: 43 : Variable Operation Global Offset - 0 Address Addr : 2A59: 62 AE : Variable Operation Local Offset - 0 Assign VAR++ post inc Long Push Addr : 2A5B: 36 : Constant 2 $00000001 Addr : 2A5C: E2 : Math Op >> Addr : 2A5D: 92 4C : Memory Op Byte POP Address POP Index ASSIGN WordMathop + Addr : 2A5F: Label0003 88 while Num /= Base Addr : 2A5F: 68 : Variable Operation Local Offset - 2 Read Addr : 2A60: 66 D6 : Variable Operation Local Offset - 1 Assign LongMathop / Push Addr : 2A62: JNZ Label0002 Addr : 2A62: 0B 69 : jnz Address = 2A4D -23 Addr : 2A64: Label0004 89 BCX3 |= N 'If negative, set flag (highest digit of BCX Workspace) Addr : 2A64: 6C : Variable Operation Local Offset - 3 Read Addr : 2A65: 4E 4A : Variable Operation Global Offset - 3 Assign ByteMathop | Addr : 2A67: 32 : Return |===========================================================================| Spin Block BCXToText with 6 Parameters and 5 Extra Stack Longs. Method 6 PRI BCXToText(IChar, Group, ShowPlus, SPad, Field, Digits): Size | Idx, GCnt, SChar, GChar, X Local Parameter DBASE:0000 - Size Local Parameter DBASE:0004 - IChar Local Parameter DBASE:0008 - Group Local Parameter DBASE:000C - ShowPlus Local Parameter DBASE:0010 - SPad Local Parameter DBASE:0014 - Field Local Parameter DBASE:0018 - Digits Local Variable DBASE:001C - Idx Local Variable DBASE:0020 - GCnt Local Variable DBASE:0024 - SChar Local Variable DBASE:0028 - GChar Local Variable DBASE:002C - X |===========================================================================| 98 X := 1-(IChar > 0) 'Xtra char count (1 or 2, for sign and optional base indicator) Addr : 2A68: 36 : Constant 2 $00000001 Addr : 2A69: 64 : Variable Operation Local Offset - 1 Read Addr : 2A6A: 35 : Constant 1 $00000000 Addr : 2A6B: FA : Math Op > Addr : 2A6C: ED : Math Op - Addr : 2A6D: CD 2C : Memory Op Long DBASE + WRITE Address = 002C 99 IChar := Symbols[--IChar] 'Get base indicator character Addr : 2A6F: 66 B6 : Variable Operation Local Offset - 1 Assign --VAR pre-dec Long Push Addr : 2A71: 98 10 : Memory Op Byte VBASE + POP Index READ Address = 0010 Addr : 2A73: 65 : Variable Operation Local Offset - 1 Write 100 SChar := "+" + 2*(BCX3 >> 28) + 11*(not (ShowPlus | (BCX3 >> 28)) or ((Digits == 1) and (BCX0 == 0))) 'Determine sign character ('+', ' ' or '-') Addr : 2A74: 38 2B : Constant 1 Bytes - 2B - $0000002B 43 Addr : 2A76: 37 00 : Constant Mask Y=0 00000002 2 Addr : 2A78: 4C : Variable Operation Global Offset - 3 Read Addr : 2A79: 38 1C : Constant 1 Bytes - 1C - $0000001C 28 Addr : 2A7B: E2 : Math Op >> Addr : 2A7C: F4 : Math Op * Addr : 2A7D: EC : Math Op + Addr : 2A7E: 38 0B : Constant 1 Bytes - 0B - $0000000B 11 Addr : 2A80: 6C : Variable Operation Local Offset - 3 Read Addr : 2A81: 4C : Variable Operation Global Offset - 3 Read Addr : 2A82: 38 1C : Constant 1 Bytes - 1C - $0000001C 28 Addr : 2A84: E2 : Math Op >> Addr : 2A85: EA : Math Op | Addr : 2A86: FF : Math Op NOT Addr : 2A87: 78 : Variable Operation Local Offset - 6 Read Addr : 2A88: 36 : Constant 2 $00000001 Addr : 2A89: FC : Math Op == Addr : 2A8A: 40 : Variable Operation Global Offset - 0 Read Addr : 2A8B: 35 : Constant 1 $00000000 Addr : 2A8C: FC : Math Op == Addr : 2A8D: F0 : Math Op AND Addr : 2A8E: F2 : Math Op OR Addr : 2A8F: F4 : Math Op * Addr : 2A90: EC : Math Op + Addr : 2A91: CD 24 : Memory Op Long DBASE + WRITE Address = 0024 101 GChar := Symbols[Group & 7 - 1 #> 0] 'Get group character Addr : 2A93: 68 : Variable Operation Local Offset - 2 Read Addr : 2A94: 37 22 : Constant Mask Y=34 Decrement 00000007 7 Addr : 2A96: E8 : Math Op & Addr : 2A97: 36 : Constant 2 $00000001 Addr : 2A98: ED : Math Op - Addr : 2A99: 35 : Constant 1 $00000000 Addr : 2A9A: E4 : Math Op #> Addr : 2A9B: 98 10 : Memory Op Byte VBASE + POP Index READ Address = 0010 Addr : 2A9D: CD 28 : Memory Op Long DBASE + WRITE Address = 0028 102 if Field > 0 and SPad^1 and Digits < 32 'Need to add extra zero-padding? Addr : 2A9F: 74 : Variable Operation Local Offset - 5 Read Addr : 2AA0: 35 : Constant 1 $00000000 Addr : 2AA1: FA : Math Op > Addr : 2AA2: 70 : Variable Operation Local Offset - 4 Read Addr : 2AA3: 36 : Constant 2 $00000001 Addr : 2AA4: EB : Math Op ^ Addr : 2AA5: F0 : Math Op AND Addr : 2AA6: 78 : Variable Operation Local Offset - 6 Read Addr : 2AA7: 37 04 : Constant Mask Y=4 00000020 32 Addr : 2AA9: F9 : Math Op < Addr : 2AAA: F0 : Math Op AND Addr : 2AAB: JZ Label0002 Addr : 2AAB: 0A 07 : jz Address = 2AB4 7 103 BCX3 &= $0FFFFFFF ' then clear negative flag and set to 32 digits Addr : 2AAD: 37 3B : Constant Mask Y=59 Decrement 0FFFFFFF 268435455 Addr : 2AAF: 4E 48 : Variable Operation Global Offset - 3 Assign BitMathop & 104 Digits := 32 Addr : 2AB1: 37 04 : Constant Mask Y=4 00000020 32 Addr : 2AB3: 79 : Variable Operation Local Offset - 6 Write Addr : 2AB4: Label0002 Addr : 2AB4: Label0003 105 Group := -((Group >>= 3)-(Group > 0))*(Group+1 < Digits) 'Get group size (0 if not enough Digits) Addr : 2AB4: 37 21 : Constant Mask Y=33 Decrement 00000003 3 Addr : 2AB6: 6A C2 : Variable Operation Local Offset - 2 Assign ByteMathop >> Push Addr : 2AB8: 68 : Variable Operation Local Offset - 2 Read Addr : 2AB9: 35 : Constant 1 $00000000 Addr : 2ABA: FA : Math Op > Addr : 2ABB: ED : Math Op - Addr : 2ABC: E6 : Math Op - Addr : 2ABD: 68 : Variable Operation Local Offset - 2 Read Addr : 2ABE: 36 : Constant 2 $00000001 Addr : 2ABF: EC : Math Op + Addr : 2AC0: 78 : Variable Operation Local Offset - 6 Read Addr : 2AC1: F9 : Math Op < Addr : 2AC2: F4 : Math Op * Addr : 2AC3: 69 : Variable Operation Local Offset - 2 Write 106 Size := (Field - (Field==0)*(Digits+X+((Digits-1)/Group))) <# 49 'Field = 0? Set Size to Digits+X+Group (max 49). Addr : 2AC4: 74 : Variable Operation Local Offset - 5 Read Addr : 2AC5: 74 : Variable Operation Local Offset - 5 Read Addr : 2AC6: 35 : Constant 1 $00000000 Addr : 2AC7: FC : Math Op == Addr : 2AC8: 78 : Variable Operation Local Offset - 6 Read Addr : 2AC9: CC 2C : Memory Op Long DBASE + READ Address = 002C Addr : 2ACB: EC : Math Op + Addr : 2ACC: 78 : Variable Operation Local Offset - 6 Read Addr : 2ACD: 36 : Constant 2 $00000001 Addr : 2ACE: ED : Math Op - Addr : 2ACF: 68 : Variable Operation Local Offset - 2 Read Addr : 2AD0: F6 : Math Op / Addr : 2AD1: EC : Math Op + Addr : 2AD2: F4 : Math Op * Addr : 2AD3: ED : Math Op - Addr : 2AD4: 38 31 : Constant 1 Bytes - 31 - $00000031 49 Addr : 2AD6: E5 : Math Op <# Addr : 2AD7: 61 : Variable Operation Local Offset - 0 Write 107 if Group 'Insert group chars Addr : 2AD8: 68 : Variable Operation Local Offset - 2 Read Addr : 2AD9: JZ Label0004 Addr : 2AD9: 0A 1B : jz Address = 2AF6 27 108 bytefill(@StrBuf+(Size-Digits-(Digits-1)/Group #> 2), GChar, Digits+(Digits-1)/Group <# Size) Addr : 2ADB: 8B 17 : Memory Op Byte VBASE + ADDRESS Address = 0017 Addr : 2ADD: 60 : Variable Operation Local Offset - 0 Read Addr : 2ADE: 78 : Variable Operation Local Offset - 6 Read Addr : 2ADF: ED : Math Op - Addr : 2AE0: 78 : Variable Operation Local Offset - 6 Read Addr : 2AE1: 36 : Constant 2 $00000001 Addr : 2AE2: ED : Math Op - Addr : 2AE3: 68 : Variable Operation Local Offset - 2 Read Addr : 2AE4: F6 : Math Op / Addr : 2AE5: ED : Math Op - Addr : 2AE6: 37 00 : Constant Mask Y=0 00000002 2 Addr : 2AE8: E4 : Math Op #> Addr : 2AE9: EC : Math Op + Addr : 2AEA: CC 28 : Memory Op Long DBASE + READ Address = 0028 Addr : 2AEC: 78 : Variable Operation Local Offset - 6 Read Addr : 2AED: 78 : Variable Operation Local Offset - 6 Read Addr : 2AEE: 36 : Constant 2 $00000001 Addr : 2AEF: ED : Math Op - Addr : 2AF0: 68 : Variable Operation Local Offset - 2 Read Addr : 2AF1: F6 : Math Op / Addr : 2AF2: EC : Math Op + Addr : 2AF3: 60 : Variable Operation Local Offset - 0 Read Addr : 2AF4: E5 : Math Op <# Addr : 2AF5: 18 : ByteFill(Start, Value, Count) Addr : 2AF6: Label0004 Addr : 2AF6: Label0005 109 Idx~~ 'Insert digits Addr : 2AF6: 7E 1C : Variable Operation Local Offset - 7 Assign VAR~~ Post-set Addr : 2AF8: Label0006 110 repeat while (++Idx < Digits) and (Idx + (GCnt := Idx/Group) < Size-X) Addr : 2AF8: 7E A6 : Variable Operation Local Offset - 7 Assign ++VAR pre-inc Long Push Addr : 2AFA: 78 : Variable Operation Local Offset - 6 Read Addr : 2AFB: F9 : Math Op < Addr : 2AFC: 7C : Variable Operation Local Offset - 7 Read Addr : 2AFD: 7C : Variable Operation Local Offset - 7 Read Addr : 2AFE: 68 : Variable Operation Local Offset - 2 Read Addr : 2AFF: F6 : Math Op / Addr : 2B00: CE 20 80 : Memory Op Long DBASE + ASSIGN Address = 0020 Write Push Addr : 2B03: EC : Math Op + Addr : 2B04: 60 : Variable Operation Local Offset - 0 Read Addr : 2B05: CC 2C : Memory Op Long DBASE + READ Address = 002C Addr : 2B07: ED : Math Op - Addr : 2B08: F9 : Math Op < Addr : 2B09: F0 : Math Op AND Addr : 2B0A: JZ Label0008 Addr : 2B0A: 0A 2B : jz Address = 2B37 43 111 byte[@StrBuf][Size-Idx-1-GCnt] := lookupz(byte[@BCX0][Idx>>1] >> (4 * Idx&1) // 16: "0".."9","A".."F") Addr : 2B0C: 35 : Constant 1 $00000000 Addr : 2B0D: Constant Address of Label0009 Addr : 2B0D: 39 01 FE : Constant 2 Bytes - 01 FE - $000001FE 510 Addr : 2B10: 43 : Variable Operation Global Offset - 0 Address Addr : 2B11: 7C : Variable Operation Local Offset - 7 Read Addr : 2B12: 36 : Constant 2 $00000001 Addr : 2B13: E2 : Math Op >> Addr : 2B14: 90 : Memory Op Byte POP Address POP Index READ Addr : 2B15: 37 01 : Constant Mask Y=1 00000004 4 Addr : 2B17: 7C : Variable Operation Local Offset - 7 Read Addr : 2B18: 36 : Constant 2 $00000001 Addr : 2B19: E8 : Math Op & Addr : 2B1A: F4 : Math Op * Addr : 2B1B: E2 : Math Op >> Addr : 2B1C: 37 03 : Constant Mask Y=3 00000010 16 Addr : 2B1E: F7 : Math Op // Addr : 2B1F: 38 30 : Constant 1 Bytes - 30 - $00000030 48 Addr : 2B21: 38 39 : Constant 1 Bytes - 39 - $00000039 57 Addr : 2B23: 12 : Range LookUp Addr : 2B24: 38 41 : Constant 1 Bytes - 41 - $00000041 65 Addr : 2B26: 38 46 : Constant 1 Bytes - 46 - $00000046 70 Addr : 2B28: 12 : Range LookUp Addr : 2B29: 0F : Lookdone Addr : 2B2A: Label0009 Addr : 2B2A: 8B 17 : Memory Op Byte VBASE + ADDRESS Address = 0017 Addr : 2B2C: 60 : Variable Operation Local Offset - 0 Read Addr : 2B2D: 7C : Variable Operation Local Offset - 7 Read Addr : 2B2E: ED : Math Op - Addr : 2B2F: 36 : Constant 2 $00000001 Addr : 2B30: ED : Math Op - Addr : 2B31: CC 20 : Memory Op Long DBASE + READ Address = 0020 Addr : 2B33: ED : Math Op - Addr : 2B34: 91 : Memory Op Byte POP Address POP Index WRITE Addr : 2B35: Label0007 Addr : 2B35: JMP Label0006 Addr : 2B35: 04 41 : Jmp 2AF8 -63 Addr : 2B37: Label0008 112 bytefill(@StrBuf, " ", Size-Idx-(Idx-1)/Group #> 0) 'Left pad with spaces, if necessary Addr : 2B37: 8B 17 : Memory Op Byte VBASE + ADDRESS Address = 0017 Addr : 2B39: 37 04 : Constant Mask Y=4 00000020 32 Addr : 2B3B: 60 : Variable Operation Local Offset - 0 Read Addr : 2B3C: 7C : Variable Operation Local Offset - 7 Read Addr : 2B3D: ED : Math Op - Addr : 2B3E: 7C : Variable Operation Local Offset - 7 Read Addr : 2B3F: 36 : Constant 2 $00000001 Addr : 2B40: ED : Math Op - Addr : 2B41: 68 : Variable Operation Local Offset - 2 Read Addr : 2B42: F6 : Math Op / Addr : 2B43: ED : Math Op - Addr : 2B44: 35 : Constant 1 $00000000 Addr : 2B45: E4 : Math Op #> Addr : 2B46: 18 : ByteFill(Start, Value, Count) 113 byte[@StrBuf][Size-X-Idx-(Idx-1)/Group #> 0] := SChar 'Insert sign Addr : 2B47: CC 24 : Memory Op Long DBASE + READ Address = 0024 Addr : 2B49: 8B 17 : Memory Op Byte VBASE + ADDRESS Address = 0017 Addr : 2B4B: 60 : Variable Operation Local Offset - 0 Read Addr : 2B4C: CC 2C : Memory Op Long DBASE + READ Address = 002C Addr : 2B4E: ED : Math Op - Addr : 2B4F: 7C : Variable Operation Local Offset - 7 Read Addr : 2B50: ED : Math Op - Addr : 2B51: 7C : Variable Operation Local Offset - 7 Read Addr : 2B52: 36 : Constant 2 $00000001 Addr : 2B53: ED : Math Op - Addr : 2B54: 68 : Variable Operation Local Offset - 2 Read Addr : 2B55: F6 : Math Op / Addr : 2B56: ED : Math Op - Addr : 2B57: 35 : Constant 1 $00000000 Addr : 2B58: E4 : Math Op #> Addr : 2B59: 91 : Memory Op Byte POP Address POP Index WRITE 114 if X == 2 Addr : 2B5A: CC 2C : Memory Op Long DBASE + READ Address = 002C Addr : 2B5C: 37 00 : Constant Mask Y=0 00000002 2 Addr : 2B5E: FC : Math Op == Addr : 2B5F: JZ Label000A Addr : 2B5F: 0A 11 : jz Address = 2B72 17 115 byte[@StrBuf][Size-1-Idx-(Idx-1)/Group #> 1] := IChar 'Insert base indicator, if necessary Addr : 2B61: 64 : Variable Operation Local Offset - 1 Read Addr : 2B62: 8B 17 : Memory Op Byte VBASE + ADDRESS Address = 0017 Addr : 2B64: 60 : Variable Operation Local Offset - 0 Read Addr : 2B65: 36 : Constant 2 $00000001 Addr : 2B66: ED : Math Op - Addr : 2B67: 7C : Variable Operation Local Offset - 7 Read Addr : 2B68: ED : Math Op - Addr : 2B69: 7C : Variable Operation Local Offset - 7 Read Addr : 2B6A: 36 : Constant 2 $00000001 Addr : 2B6B: ED : Math Op - Addr : 2B6C: 68 : Variable Operation Local Offset - 2 Read Addr : 2B6D: F6 : Math Op / Addr : 2B6E: ED : Math Op - Addr : 2B6F: 36 : Constant 2 $00000001 Addr : 2B70: E4 : Math Op #> Addr : 2B71: 91 : Memory Op Byte POP Address POP Index WRITE Addr : 2B72: Label000A Addr : 2B72: Label000B 116 byte[@StrBuf][Size] := 0 'Zero-terminate string Addr : 2B72: 35 : Constant 1 $00000000 Addr : 2B73: 8B 17 : Memory Op Byte VBASE + ADDRESS Address = 0017 Addr : 2B75: 60 : Variable Operation Local Offset - 0 Read Addr : 2B76: 91 : Memory Op Byte POP Address POP Index WRITE Addr : 2B77: 32 : Return |===========================================================================| Spin Block InBaseRange with 2 Parameters and 0 Extra Stack Longs. Method 7 PRI InBaseRange(Char, Base): Value Local Parameter DBASE:0000 - Value Local Parameter DBASE:0004 - Char Local Parameter DBASE:0008 - Base |===========================================================================| 122 Value := ( Value -= (Char - $2F) * (Char => "0" and Char =< "9") + ((Char &= $DF) - $36) * (Char => "A" and Char =< "F") ) * -(Value < ++Base) Addr : 2B78: 64 : Variable Operation Local Offset - 1 Read Addr : 2B79: 38 2F : Constant 1 Bytes - 2F - $0000002F 47 Addr : 2B7B: ED : Math Op - Addr : 2B7C: 64 : Variable Operation Local Offset - 1 Read Addr : 2B7D: 38 30 : Constant 1 Bytes - 30 - $00000030 48 Addr : 2B7F: FE : Math Op => Addr : 2B80: 64 : Variable Operation Local Offset - 1 Read Addr : 2B81: 38 39 : Constant 1 Bytes - 39 - $00000039 57 Addr : 2B83: FD : Math Op =< Addr : 2B84: F0 : Math Op AND Addr : 2B85: F4 : Math Op * Addr : 2B86: 38 DF : Constant 1 Bytes - DF - $000000DF 223 Addr : 2B88: 66 C8 : Variable Operation Local Offset - 1 Assign BitMathop & Push Addr : 2B8A: 38 36 : Constant 1 Bytes - 36 - $00000036 54 Addr : 2B8C: ED : Math Op - Addr : 2B8D: 64 : Variable Operation Local Offset - 1 Read Addr : 2B8E: 38 41 : Constant 1 Bytes - 41 - $00000041 65 Addr : 2B90: FE : Math Op => Addr : 2B91: 64 : Variable Operation Local Offset - 1 Read Addr : 2B92: 38 46 : Constant 1 Bytes - 46 - $00000046 70 Addr : 2B94: FD : Math Op =< Addr : 2B95: F0 : Math Op AND Addr : 2B96: F4 : Math Op * Addr : 2B97: EC : Math Op + Addr : 2B98: 62 CD : Variable Operation Local Offset - 0 Assign WordMathop - Push Addr : 2B9A: 60 : Variable Operation Local Offset - 0 Read Addr : 2B9B: 6A A6 : Variable Operation Local Offset - 2 Assign ++VAR pre-inc Long Push Addr : 2B9D: F9 : Math Op < Addr : 2B9E: E6 : Math Op - Addr : 2B9F: F4 : Math Op * Addr : 2BA0: 61 : Variable Operation Local Offset - 0 Write Addr : 2BA1: 32 : Return