Home » Archimedes archive » Acorn User » AU 1995-02.adf » !Dark_DarkHorse » !DarkHorse/WorkHorses/Puzzle
!DarkHorse/WorkHorses/Puzzle
This website contains an archive of files for the Acorn Electron, BBC Micro, Acorn Archimedes, Commodore 16 and Commodore 64 computers, which Dominic Ford has rescued from his private collection of floppy disks and cassettes.
Some of these files were originally commercial releases in the 1980s and 1990s, but they are now widely available online. I assume that copyright over them is no longer being asserted. If you own the copyright and would like files to be removed, please contact me.
Tape/disk: | Home » Archimedes archive » Acorn User » AU 1995-02.adf » !Dark_DarkHorse |
Filename: | !DarkHorse/WorkHorses/Puzzle |
Read OK: | ✔ |
File size: | 3354 bytes |
Load address: | 0000 |
Exec address: | 0000 |
File contents
10REM > <Dark$Dir>.WorkHorses.Puzzle 20 30ON ERROR PRINT ERL,REPORT$:END 40 50DIM code% 4096 60 70PROCAssemble 80PROCSetV 90PROCDo 100END 110 120DEFPROCSetV 130!(code%+0)=3+255 : REM saver takes 2 args. 140!(code%+4)=128 : REM arg1 - size of slide square 150!(code%+8)=4 : REM arg2 - speed of square slide 160!(code%+12)=1 : REM arg3 - plinth on. 170 180$(code%+36)="<square size (minimum=16)>" 190$(code%+68)="<speed factor> <plinth (0=off)>" 200 210ENDPROC 220 230DEFPROCDo 240A%=1280:B%=1024:C%=256 250REMPRINT USR (code%+100) 260CALL code%+100 270A%=RND(1280):B%=RND(1024) 280CALL code%+108 290GOTO 270 300ENDPROC 310 320DEFPROCAssemble 330 340CX = 11 350CY = 12 360ST = 7 370BW = 8 380X = 6 390Y = 6 400 410FOR pass=0 TO 3 STEP 3 420P%=code% 430[OPT pass 440 450.argtype 460EQUD 0 ; 470 480.args 490EQUD 0:EQUD 0:EQUD 0:EQUD 0:EQUD 0:EQUD 0:EQUD 0:EQUD 0 500 510.help 520EQUD 0:EQUD 0:EQUD 0:EQUD 0:EQUD 0:EQUD 0:EQUD 0:EQUD 0 530EQUD 0:EQUD 0:EQUD 0:EQUD 0:EQUD 0:EQUD 0:EQUD 0:EQUD 0 540 550 560B init ; Jumps to the initialisation routine. 570 ; this is location code+100 580 590B shutdown ; Jumps to the shutdown routine. 600 ; this is location code+104 610 620 630 640.poll_ret 650 660FNadr(0,regs) 670STMIA r0!,{r1-r14} 680 690AND r0,r1,#(%11) ; make r0 a value (0-3) 700 710FNadr(10,vars) 720 730CMPS r0,#0 740BNE cmp2 750LDR r11,[r10,#8] ; load current Y pos 760LDR r12,[r10,#16] ; load number of blocks in Y 770CMPS r11,r12 780MOVEQ r0,#2 790BEQ cmpexit 800 810.cmp2 820CMPS r0,#2 830BNE cmp1 840LDR r11,[r10,#8] ; load current Y pos 850CMPS r11,#0 860MOVEQ r0,#0 870BEQ cmpexit 880 890.cmp1 900CMPS r0,#1 910BNE cmp3 920LDR r11,[r10,#4] ; load current X pos 930LDR r12,[r10,#12] ; load number of blocks in X 940CMPS r11,r12 950MOVEQ r0,#3 960BEQ cmpexit 970 980.cmp3 990CMPS r0,#3 1000BNE cmpexit 1010LDR r11,[r10,#4] ; load current X pos 1020CMPS r11,#0 1030MOVEQ r0,#1 1040 1050.cmpexit 1060 1070MOV r9,r0 ; r9 = value of random direction 1080LDR r8,[r10] ; r8 = block width bw 1090LDR r7,[r10,#24] ; r7 = step 1100LDR r11,[r10,#4] ; r11 = current Xpos CX 1110LDR r12,[r10,#8] ; r12 = current Ypos CY 1120 1130; set gcol to black 1140 1150SWI 256+18 1160MOV r0,#0 1170SWI "OS_WriteC" 1180LDR r0,[r10,#20] ; get number of colours. 1190CMP r0,#254 1200MOVLT r0,#7 1210MOVGE r0,#0 1220SWI "OS_WriteC" 1230 1240CMP r9,#0 1250BNE do2 1260 1270; r=0 -------------- 1280 1290MOV Y,#0 1300 1310.loop_0 1320 1330FNadr(0,scanregs):STMIA r0!,{r1-r14}:BL Scan 1340CMPS r10,#1:BEQ out:FNadr(0,scanregs):LDMIA r0!,{r1-r14} 1350 1360MOV r0,#188:MUL r1,CX,BW 1370MUL r2,CY,BW:ADD r2,r2,BW:SUB r2,r2,Y 1380SWI "OS_Plot" 1390 1400MOV r0,#188:MUL r1,CX,BW:ADD r1,r1,BW 1410MUL r2,CY,BW:ADD r2,r2,BW,LSL#1:SUB r2,r2,Y 1420SWI "OS_Plot" 1430 1440MOV r0,#190:MUL r1,CX,BW:MUL r2,CY,BW:ADD r2,r2,BW 1450SUB r2,r2,Y:SUB r2,r2,ST 1460SWI "OS_Plot" 1470 1480MOV r0,#4:MUL r1,CX,BW 1490MUL r2,CY,BW:ADD r2,r2,BW,LSL#1:SUB r2,r2,ST 1500SUB r2,r2,Y:SWI "OS_Plot" 1510MOV r0,#97:MOV r1,BW:MOV r2,ST:SWI "OS_Plot" 1520 1530ADD Y,Y,ST 1540SUB r0,BW,#1 1550CMP Y,r0 1560BLE loop_0 1570 1580ADD CY,CY,#1 1590STR CY,[r10,#8] 1600 1610; r=2 -------------- 1620 1630.do2 1640 1650CMP r9,#2 1660BNE do1 1670 1680MOV Y,#0 1690 1700.loop_2 1710 1720FNadr(0,scanregs):STMIA r0!,{r1-r14}:BL Scan 1730CMPS r10,#1:BEQ out:FNadr(0,scanregs):LDMIA r0!,{r1-r14} 1740 1750MOV r0,#188:MUL r1,CX,BW 1760MUL r2,CY,BW:SUB r2,r2,BW:ADD r2,r2,Y 1770SWI "OS_Plot" 1780 1790MOV r0,#188:MUL r1,CX,BW:ADD r1,r1,BW 1800MUL r2,CY,BW:ADD r2,r2,Y 1810SWI "OS_Plot" 1820 1830MOV r0,#190:MUL r1,CX,BW:MUL r2,CY,BW:SUB r2,r2,BW 1840ADD r2,r2,Y:ADD r2,r2,ST 1850SWI "OS_Plot" 1860 1870MOV r0,#4:MUL r1,CX,BW 1880MUL r2,CY,BW:SUB r2,r2,BW 1890ADD r2,r2,Y:SWI "OS_Plot" 1900MOV r0,#97:MOV r1,BW:MOV r2,ST:SWI "OS_Plot" 1910 1920ADD Y,Y,ST 1930SUB r0,BW,#1 1940CMP Y,r0 1950BLE loop_2 1960 1970SUB CY,CY,#1 1980STR CY,[r10,#8] 1990 2000; r=1 ------------ 2010 2020.do1 2030CMP r9,#1 2040BNE do3 2050 2060MOV X,#0 2070 2080.loop_1 2090 2100FNadr(0,scanregs):STMIA r0!,{r1-r14}:BL Scan 2110CMPS r10,#1:BEQ out:FNadr(0,scanregs):LDMIA r0!,{r1-r14} 2120 2130MOV r0,#188:MUL r1,CX,BW:ADD r1,r1,BW:SUB r1,r1,X 2140MUL r2,CY,BW:SWI "OS_Plot" 2150 2160MOV r0,#188:MUL r1,CX,BW:ADD r1,r1,BW,LSL#1:SUB r1,r1,X 2170MUL r2,CY,BW:ADD r2,r2,BW:SWI "OS_Plot" 2180 2190MOV r0,#190:MUL r1,CX,BW:ADD r1,r1,BW:SUB r1,r1,X 2200SUB r1,r1,ST:MUL r2,CY,BW:SWI "OS_Plot" 2210 2220MOV r0,#4:MUL r1,CX,BW:ADD r1,r1,BW,LSL#1 2230SUB r1,r1,X:SUB r1,r1,ST 2240MUL r2,CY,BW:SWI "OS_Plot" 2250MOV r0,#97:MOV r1,ST:MOV r2,BW:SWI "OS_Plot" 2260 2270ADD X,X,ST 2280SUB r0,BW,#1 2290CMP X,r0 2300BLE loop_1 2310 2320ADD CX,CX,#1 2330STR CX,[r10,#4] 2340 2350; r=3 ---------------- 2360 2370.do3 2380CMP r9,#3 2390BNE out 2400 2410MOV X,#0 2420 2430.loop_3 2440 2450ADR r0,scanregs:STMIA r0!,{r1-r14}:BL Scan 2460CMPS r10,#1:BEQ out:ADR r0,scanregs:LDMIA r0!,{r1-r14} 2470 2480MOV r0,#188:MUL r1,CX,BW:SUB r1,r1,BW:ADD r1,r1,X 2490MUL r2,CY,BW:SWI "OS_Plot" 2500 2510MOV r0,#188:MUL r1,CX,BW:ADD r1,r1,X 2520MUL r2,CY,BW:ADD r2,r2,BW:SWI "OS_Plot" 2530 2540MOV r0,#190:MUL r1,CX,BW:SUB r1,r1,BW:ADD r1,r1,X 2550ADD r1,r1,ST:MUL r2,CY,BW:SWI "OS_Plot" 2560 2570MOV r0,#4:MUL r1,CX,BW:SUB r1,r1,BW 2580ADD r1,r1,X:MUL r2,CY,BW:SWI "OS_Plot" 2590MOV r0,#97:MOV r1,ST:MOV r2,BW:SWI "OS_Plot" 2600 2610ADD X,X,ST 2620SUB r0,BW,#1 2630CMP X,r0 2640BLE loop_3 2650 2660SUB CX,CX,#1 2670STR CX,[r10,#4] 2680 2690.out 2700 2710ADR r0,regs 2720LDMIA r0!,{r1-r14} 2730 2740MOV PC,r14 2750 2760.init ; ------------------------------------------------- 2770;-------------------------------------------------------- 2780 2790 2800MOV r11,r0 ; r11 = screen width 2810MOV r12,r1 ; r12 = screen height 2820 2830FNadr(10,args) 2840LDR r5,[r10,#8] ; get plinth option into r5. 2850LDR r3,[r10] ; get block size into r3 2860MOV r4,r12,LSR#2 2870CMPS r3,r4 2880MOVGT r3,r4 2890CMPS r3,#12 2900MOVLE r3,#128 2910STR r3,[r10] ; store auto value of width if too big. 2920LDR r4,[r10,#4] ; get STEP 2930CMP r4,#0 2940MOVEQ r4,#1 2950STREQ r4,[r10,#4] ; store step back. 2960 2970ADR r10,vars 2980STR r3,[r10] ; store block size in my store. 2990STR r2,[r10,#20] ; store number of colours in my store. 3000STR r4,[r10,#24] ; store step into my store. 3010STR r5,[r10,#28] ; store plinth value. 3020 3030; on entry r1=op1 ; r2=op2 ; r0 = result of r1/r2 3040 3050MOV r1,r11 ; copy screen width for op1. 3060MOV r2,r3 ; copy block width for op2. 3070MOV r0,#0 3080.divloop1 3090CMP r1,#0 3100SUBGT r1,r1,r2 3110ADDGT r0,r0,#1 3120BGT divloop1 3130 3140ADDEQ r0,r0,#1 ; if an exact fit across screen. 3150 3160SUB r0,r0,#2 ; r0 now equals no. of blocks in X 3170STR r0,[r10,#12] ; store this value to my store. 3180 3190; on entry r1=op1 ; r2=op2 ; r0 = result of r1/r2 3200 3210MOV r1,r12 ; copy screen height for op1. 3220 ; r2 is already width for op2. 3230MOV r0,#0 3240.divloop2 3250CMP r1,#0 3260SUBGT r1,r1,r2 3270ADDGT r0,r0,#1 3280BGT divloop2 3290 3300ADDEQ r0,r0,#1 ; if an exact fit across screen. 3310 3320SUB r0,r0,#2 ; r0 now equals no. of blocks in Y 3330STR r0,[r10,#16] ; store this value to my store. 3340 3350MOV r5,r2 ; r5 equals width of block 3360 3370; check and set step value. 3380 3390MOV r1,r5 ; get block width 3400LDR r2,[r10,#24] ; load step value 3410 3420CMP r2,#0 3430MOVLE r2,#1 3440STRLE r2,[r10,#24] ; store back. 3450 3460MOV r0,#0 3470.divloop3 3480CMP r1,#0 3490SUBGT r1,r1,r2 3500ADDGT r0,r0,#1 3510BGT divloop3 3520 3530CMPS r1,#0 3540STRNE r5,[r10,#24] ; if step not a factor, step = width 3550 3560LDR r7,[r10,#20] ; get number of colours. 3570 3580CMP r7,#16 3590BLT doblack 3600LDR r6,[r10,#28] 3610CMP r6,#0 3620BEQ doblack 3630 3640 3650; draw the grid 3660 3670ADD r8,r12,r5 3680 3690MOV r4,#0 3700.yagain 3710 3720SWI 256+18 3730CMP r7,#16 3740MOVEQ r0,#2 3750MOVGT r0,#1 3760SWI "OS_WriteC" 3770CMP r7,#16 3780MOVEQ r0,#2 3790MOVGT r0,#42 3800SWI "OS_WriteC" 3810 3820MOV r0,#4: MOV r1,#0:SUB r2,r4,#4:SWI "OS_Plot" 3830MOV r0,#97: MOV r1,r11:MOV r2,#4:SWI "OS_Plot" 3840 3850SWI 256+18 3860CMP r7,#16 3870MOVEQ r0,#1 3880MOVGT r0,#2 3890SWI "OS_WriteC" 3900CMP r7,#16 3910MOVEQ r0,#2 3920MOVGT r0,#42 3930SWI "OS_WriteC" 3940 3950MOV r0,#4: MOV r1,#0:MOV r2,r4:SWI "OS_Plot" 3960MOV r0,#97: MOV r1,r11:MOV r2,#4:SWI "OS_Plot" 3970 3980ADD r4,r4,r5 3990CMP r4,r8 4000BLT yagain 4010 4020MOV r4,#0 4030ADD r8,r11,r5 4040.xagain 4050 4060SWI 256+18 4070CMP r7,#16 4080MOVEQ r0,#1 4090MOVGT r0,#2 4100SWI "OS_WriteC" 4110CMP r7,#16 4120MOVEQ r0,#2 4130MOVGT r0,#42 4140SWI "OS_WriteC" 4150 4160MOV r0,#4: MOV r2,#0:SUB r1,r4,#4:SWI "OS_Plot" 4170MOV r0,#97: MOV r2,r12:MOV r1,#4:SWI "OS_Plot" 4180 4190SWI 256+18 4200CMP r7,#16 4210MOVEQ r0,#2 4220MOVGT r0,#1 4230SWI "OS_WriteC" 4240CMP r7,#16 4250MOVEQ r0,#2 4260MOVGT r0,#42 4270SWI "OS_WriteC" 4280 4290MOV r0,#4: MOV r2,#0:MOV r1,r4:SWI "OS_Plot" 4300MOV r0,#97: MOV r2,r12:MOV r1,#4:SWI "OS_Plot" 4310 4320ADD r4,r4,r5 4330CMP r4,r8 4340BLT xagain 4350 4360; draw black lines. 4370 4380.doblack 4390 4400SWI 256+18 4410MOV r0,#0 4420SWI "OS_WriteC" 4430CMP r7,#254 4440MOVLT r0,#7 4450MOVGE r0,#0 4460SWI "OS_WriteC" 4470 4480MOV r4,#0 4490.y2again 4500 4510MOV r0,#4: MOV r1,#0: MOV r2,r4: SWI "OS_Plot" 4520MOV r0,#5: MOV r1,r11: MOV r2,r4: SWI "OS_Plot" 4530ADD r4,r4,r5 4540CMP r4,r12 4550BLT y2again 4560 4570MOV r4,#0 4580.x2again 4590 4600MOV r0,#4: MOV r1,r4: MOV r2,#0: SWI "OS_Plot" 4610MOV r0,#5: MOV r1,r4: MOV r2,r12: SWI "OS_Plot" 4620ADD r4,r4,r5 4630CMP r4,r11 4640BLT x2again 4650 4660 4670 4680; calculate and store hole position 4690 4700LDR r0,[r10,#12] 4710MOV r0,r0,LSR#1 4720STR r0,[r10,#4] 4730 4740LDR r0,[r10,#16] 4750MOV r0,r0,LSR#1 4760STR r0,[r10,#8] 4770 4780; draw hole - black rectangle 4790 4800MOV r0,#4 4810LDR r4,[r10,#4] 4820MUL r1,r4,r5 4830LDR r4,[r10,#8] 4840MUL r2,r4,r5 4850SWI "OS_Plot" 4860MOV r0,#97 4870MOV r1,r5 4880MOV r2,r5 4890SWI "OS_Plot" 4900 4910MOV PC,r14 4920 4930.vars 4940EQUD 0 ; block size 4950EQUD 0 ; Current X-pos of hole 4960EQUD 0 ; Current Y-pos of hole 4970EQUD 0 ; Number of full squares (X) 4980EQUD 0 ; Number of full squares (Y) 4990EQUD 0 ; number of colours 5000EQUD 0 ; REAL step value 5010EQUD 0 ; plinth ? 5020 5030.scanregs 5040EQUD 0:EQUD 0:EQUD 0:EQUD 0:EQUD 0:EQUD 0:EQUD 0:EQUD 0 5050EQUD 0:EQUD 0:EQUD 0:EQUD 0:EQUD 0:EQUD 0:EQUD 0:EQUD 0 5060 5070.regs 5080EQUD 0:EQUD 0:EQUD 0:EQUD 0:EQUD 0:EQUD 0:EQUD 0:EQUD 0 5090EQUD 0:EQUD 0:EQUD 0:EQUD 0:EQUD 0:EQUD 0:EQUD 0:EQUD 0 5100 5110;-------------------------------------------------------------------- 5120 5130.Scan 5140; on return r10 will contain 1 = exit prog. 0 = don't exit. 5150 5160SWI "OS_Mouse":MOV r8,r0:MOV r9,r1:MOV r11,r2 5170MOV r10,#0:MOV r0,#121:MOV r1,#0:SWI "OS_Byte":CMPS r1,#255:MOVNE r10,#1 5180SWI "OS_Mouse":CMPS r0,r8:MOVNE r10,#1:CMPS r1,r9:MOVNE r10,#1 5190CMPS r2,r11::MOVNE r10,#1 5200MOV PC,r14 5210 5220;-------------------------------------------------------------------- 5230 5240;----------------------------------------------------------------- 5250 5260.shutdown ; the shutdown code 5270 5280;-------------------------------------------------------------------- 5290; ******************************************** 5300; *** YOUR SHUTDOWN CODE STARTS HERE *** 5310; ******************************************** 5320 5330; blah! blah! blah! blah! blah! blah! blah! 5340 5350; ******************************************** 5360; *** YOUR SHUTDOWN CODE ENDS HERE *** 5370; ******************************************** 5380;-------------------------------------------------------------------- 5390MOV PC,r14 ; exit shutdown code. 5400 5410 5420 5430] 5440NEXT pass 5450PRINT P%-code% 5460A$=GET$ 5470ENDPROC 5480 5490DEF FNadr(r,l) 5500p%=P% 5510IF l>p% THEN 5520[ 5530ADD r,PC,#(l-p%-8)MOD &100 5540ADD r,r,#(l-p%-8) DIV &100<<8:] 5550ELSE 5560[ 5570SUB r,PC,#(p%+8-l)MOD &100 5580SUB r,r,#(p%+8-l)DIV &100<<8:] 5590ENDIF 5600="" 5610 5620REM - BASIC VERSION WHICH WAS TRANSLATED INTO THE 5630REM - ABOVE ASSEMBLY CODE. :- 5640 5650bw%=64 5660step%=4 5670 5680W%=1280 5690H%=1024 5700 5710NBX%=(W%/bw%)-1 5720NBY%=(H%/bw%)-1 5730 5740FOR Y%=1 TO H% STEP bw% 5750MOVE 0,Y% 5760DRAW W%,Y% 5770NEXT Y% 5780FOR X%=1 TO W% STEP bw% 5790MOVE X%,0 5800DRAW X%,H% 5810NEXT X% 5820 5830 5840CX%=NBX%/2 5850CY%=NBY%/2 5860 5870RECTANGLE FILL CX%*bw%,CY%*bw%,bw%,bw% 5880 5890REM ----------------------------------------------- 5900 5910R%=RND(W%) 5920 5930R%=R% AND %11 5940 5950REM R%=0 > top. 5960REM R%=1 > right. 5970REM R%=2 > bottom. 5980REM R%=3 > left. 5990 6000IF R%=0 AND CY%=NBY% THEN R%=2 6010IF R%=2 AND CY%=0 THEN R%=0 6020 6030IF R%=1 AND CX%=NBX% THEN R%=3 6040IF R%=3 AND CX%=0 THEN R%=1 6050 6060IF R%=0 THEN 6070FOR y%=0 TO bw%-1 STEP step% 6080SYS "OS_Plot",188,CX%*bw%,(CY%*bw%)+bw%-y% 6090SYS "OS_Plot",188,(CX%*bw%)+bw%,(CY%*bw%)+bw%+bw%-y% 6100SYS "OS_Plot",190,CX%*bw%,(CY%*bw%)+bw%-y%-step% 6110RECTANGLE FILL CX%*bw%,(CY%*bw%)+bw%-y%+bw%-step%,bw%,step% 6120NEXT y% 6130CY%+=1 6140ENDIF 6150 6160IF R%=2 THEN 6170FOR y%=0 TO bw%-1 STEP step% 6180SYS "OS_Plot",188,CX%*bw%,(CY%*bw%)-bw%+y% 6190SYS "OS_Plot",188,(CX%*bw%)+bw%,(CY%*bw%)+y% 6200SYS "OS_Plot",190,CX%*bw%,(CY%*bw%)-bw%+y%+step% 6210RECTANGLE FILL CX%*bw%,(CY%*bw%)-bw%+y%,bw%,step% 6220NEXT y% 6230CY%-=1 6240ENDIF 6250 6260IF R%=1 THEN 6270FOR x%=0 TO bw%-1 STEP step% 6280SYS "OS_Plot",188,(CX%*bw%)+bw%-x%,CY%*bw% 6290SYS "OS_Plot",188,(CX%*bw%)+bw%+bw%-x%,(CY%*bw%)+bw% 6300SYS "OS_Plot",190,(CX%*bw%)+bw%-x%-step%,CY%*bw% 6310RECTANGLE FILL (CX%*bw%)+bw%+bw%-x%-step%,CY%*bw%,step%,bw% 6320NEXT x% 6330CX%+=1 6340ENDIF 6350 6360IF R%=3 THEN 6370FOR x%=0 TO bw%-1 STEP step% 6380SYS "OS_Plot",188,(CX%*bw%)-bw%+x%,CY%*bw% 6390SYS "OS_Plot",188,CX%*bw%+x%,(CY%*bw%)+bw% 6400SYS "OS_Plot",190,(CX%*bw%)-bw%+x%+step%,CY%*bw% 6410RECTANGLE FILL (CX%*bw%)-bw%+x%,CY%*bw%,step%,bw% 6420NEXT x% 6430CX%-=1 6440ENDIF 6450 6460GOTO 5910 6470END 6480
$� > <Dark$Dir>.WorkHorses.Puzzle � � � �,�$:� ( 2� code% 4096 < F �Assemble P �SetV Z�Do d� n x ��SetV �.!(code%+0)=3+255 : � saver takes 2 args. �2!(code%+4)=128 : � arg1 - size of slide square �3!(code%+8)=4 : � arg2 - speed of square slide �(!(code%+12)=1 : � arg3 - plinth on. � �,$(code%+36)="<square size (minimum=16)>" �1$(code%+68)="<speed factor> <plinth (0=off)>" � �� � ���Do �A%=1280:B%=1024:C%=256 ��PRINT USR (code%+100) � code%+100 A%=�(1280):B%=�(1024) � code%+108 " � �TNA ,� 6 @��Assemble J TCX = 11 ^CY = 12 h ST = 7 r BW = 8 | X = 6 � Y = 6 � �� pass=0 � 3 � 3 �P%=code% � [OPT pass � �.argtype �EQUD 0 ; � � .args �;EQUD 0:EQUD 0:EQUD 0:EQUD 0:EQUD 0:EQUD 0:EQUD 0:EQUD 0 � � .help ;EQUD 0:EQUD 0:EQUD 0:EQUD 0:EQUD 0:EQUD 0:EQUD 0:EQUD 0 ;EQUD 0:EQUD 0:EQUD 0:EQUD 0:EQUD 0:EQUD 0:EQUD 0:EQUD 0 & 05B init ; Jumps to the initialisation routine. :* ; this is location code+100 D N/B shutdown ; Jumps to the shutdown routine. X* ; this is location code+104 b l v � .poll_ret � ��adr(0,regs) �STMIA r0!,{r1-r14} � �*� r0,r1,#(%11) ; make r0 a value (0-3) � ��adr(10,vars) � �CMPS r0,#0 �BNE cmp2 �*LDR r11,[r10,#8] ; load current Y pos �2LDR r12,[r10,#16] ; load number of blocks in Y CMPS r11,r12 �Q r0,#2 BEQ cmpexit * .cmp2 4CMPS r0,#2 >BNE cmp1 H*LDR r11,[r10,#8] ; load current Y pos RCMPS r11,#0 \�Q r0,#0 fBEQ cmpexit p z .cmp1 �CMPS r0,#1 �BNE cmp3 �*LDR r11,[r10,#4] ; load current X pos �2LDR r12,[r10,#12] ; load number of blocks in X �CMPS r11,r12 ��Q r0,#3 �BEQ cmpexit � � .cmp3 �CMPS r0,#3 �BNE cmpexit �*LDR r11,[r10,#4] ; load current X pos �CMPS r11,#0 �Q r0,#1 .cmpexit $ .7MOV r9,r0 ; r9 = value of random direction 8.LDR r8,[r10] ; r8 = block width bw B"LDR r7,[r10,#24] ; r7 = step L.LDR r11,[r10,#4] ; r11 = current Xpos CX V.LDR r12,[r10,#8] ; r12 = current Ypos CY ` j; set gcol to black t ~SWI 256+18 � MOV r0,#0 �SWI "OS_WriteC" �-LDR r0,[r10,#20] ; get number of colours. �CMP r0,#254 �MOVLT r0,#7 �MOVGE r0,#0 �SWI "OS_WriteC" � � CMP r9,#0 �BNE do2 � �; r=0 -------------- MOV Y,#0 .loop_0 ( 2/�adr(0,scanregs):STMIA r0!,{r1-r14}:BL Scan <;CMPS r10,#1:BEQ out:�adr(0,scanregs):LDMIA r0!,{r1-r14} F PMOV r0,#188:MUL r1,CX,BW Z)MUL r2,CY,BW:ADD r2,r2,BW:SUB r2,r2,Y dSWI "OS_Plot" n x)MOV r0,#188:MUL r1,CX,BW:ADD r1,r1,BW �/MUL r2,CY,BW:ADD r2,r2,BW,LSL#1:SUB r2,r2,Y �SWI "OS_Plot" � �6MOV r0,#190:MUL r1,CX,BW:MUL r2,CY,BW:ADD r2,r2,BW �SUB r2,r2,Y:SUB r2,r2,ST �SWI "OS_Plot" � �MOV r0,#4:MUL r1,CX,BW �0MUL r2,CY,BW:ADD r2,r2,BW,LSL#1:SUB r2,r2,ST �SUB r2,r2,Y:SWI "OS_Plot" �0MOV r0,#97:MOV r1,BW:MOV r2,ST:SWI "OS_Plot" � �ADD Y,Y,ST SUB r0,BW,#1 CMP Y,r0 BLE loop_0 " ,ADD CY,CY,#1 6STR CY,[r10,#8] @ J; r=2 -------------- T ^.do2 h r CMP r9,#2 |BNE do1 � �MOV Y,#0 � �.loop_2 � �/�adr(0,scanregs):STMIA r0!,{r1-r14}:BL Scan �;CMPS r10,#1:BEQ out:�adr(0,scanregs):LDMIA r0!,{r1-r14} � �MOV r0,#188:MUL r1,CX,BW �)MUL r2,CY,BW:SUB r2,r2,BW:ADD r2,r2,Y �SWI "OS_Plot" � �)MOV r0,#188:MUL r1,CX,BW:ADD r1,r1,BW MUL r2,CY,BW:ADD r2,r2,Y SWI "OS_Plot" &6MOV r0,#190:MUL r1,CX,BW:MUL r2,CY,BW:SUB r2,r2,BW 0ADD r2,r2,Y:ADD r2,r2,ST :SWI "OS_Plot" D NMOV r0,#4:MUL r1,CX,BW XMUL r2,CY,BW:SUB r2,r2,BW bADD r2,r2,Y:SWI "OS_Plot" l0MOV r0,#97:MOV r1,BW:MOV r2,ST:SWI "OS_Plot" v �ADD Y,Y,ST �SUB r0,BW,#1 �CMP Y,r0 �BLE loop_2 � �SUB CY,CY,#1 �STR CY,[r10,#8] � �; r=1 ------------ � �.do1 � CMP r9,#1 �BNE do3 MOV X,#0 .loop_1 * 4/�adr(0,scanregs):STMIA r0!,{r1-r14}:BL Scan >;CMPS r10,#1:BEQ out:�adr(0,scanregs):LDMIA r0!,{r1-r14} H R5MOV r0,#188:MUL r1,CX,BW:ADD r1,r1,BW:SUB r1,r1,X \MUL r2,CY,BW:SWI "OS_Plot" f p;MOV r0,#188:MUL r1,CX,BW:ADD r1,r1,BW,LSL#1:SUB r1,r1,X z+MUL r2,CY,BW:ADD r2,r2,BW:SWI "OS_Plot" � �5MOV r0,#190:MUL r1,CX,BW:ADD r1,r1,BW:SUB r1,r1,X �+SUB r1,r1,ST:MUL r2,CY,BW:SWI "OS_Plot" � �-MOV r0,#4:MUL r1,CX,BW:ADD r1,r1,BW,LSL#1 �SUB r1,r1,X:SUB r1,r1,ST �MUL r2,CY,BW:SWI "OS_Plot" �0MOV r0,#97:MOV r1,ST:MOV r2,BW:SWI "OS_Plot" � �ADD X,X,ST �SUB r0,BW,#1 �CMP X,r0 �BLE loop_1 ADD CX,CX,#1 STR CX,[r10,#4] $ .; r=3 ---------------- 8 B.do3 L CMP r9,#3 VBNE out ` jMOV X,#0 t ~.loop_3 � �.ADR r0,scanregs:STMIA r0!,{r1-r14}:BL Scan �:CMPS r10,#1:BEQ out:ADR r0,scanregs:LDMIA r0!,{r1-r14} � �5MOV r0,#188:MUL r1,CX,BW:SUB r1,r1,BW:ADD r1,r1,X �MUL r2,CY,BW:SWI "OS_Plot" � �(MOV r0,#188:MUL r1,CX,BW:ADD r1,r1,X �+MUL r2,CY,BW:ADD r2,r2,BW:SWI "OS_Plot" � �5MOV r0,#190:MUL r1,CX,BW:SUB r1,r1,BW:ADD r1,r1,X �+ADD r1,r1,ST:MUL r2,CY,BW:SWI "OS_Plot" 'MOV r0,#4:MUL r1,CX,BW:SUB r1,r1,BW *ADD r1,r1,X:MUL r2,CY,BW:SWI "OS_Plot" 0MOV r0,#97:MOV r1,ST:MOV r2,BW:SWI "OS_Plot" ( 2ADD X,X,ST <SUB r0,BW,#1 FCMP X,r0 PBLE loop_3 Z dSUB CX,CX,#1 nSTR CX,[r10,#4] x �.out � �ADR r0,regs �LDMIA r0!,{r1-r14} � �MOV PC,r14 � �=.init ; ------------------------------------------------- �=;-------------------------------------------------------- � � �#MOV r11,r0 ; r11 = screen width �$MOV r12,r1 ; r12 = screen height �adr(10,args) 0LDR r5,[r10,#8] ; get plinth option into r5. ",LDR r3,[r10] ; get block size into r3 ,MOV r4,r12,LSR#2 6CMPS r3,r4 @MOVGT r3,r4 JCMPS r3,#12 TMOVLE r3,#128 ^;STR r3,[r10] ; store auto value of width if too big. hLDR r4,[r10,#4] ; get � r CMP r4,#0 |�Q r4,#1 �(STREQ r4,[r10,#4] ; store step back. � �ADR r10,vars �4STR r3,[r10] ; store block size in my store. �;STR r2,[r10,#20] ; store number of colours in my store. �0STR r4,[r10,#24] ; store step into my store. �*STR r5,[r10,#28] ; store plinth value. � �5; on entry r1=op1 ; r2=op2 ; r0 = result of r1/r2 � �+MOV r1,r11 ; copy screen width for op1. �*MOV r2,r3 ; copy block width for op2. � MOV r0,#0 .divloop1 CMP r1,#0 SUBGT r1,r1,r2 &ADDGT r0,r0,#1 0BGT divloop1 : D3ADDEQ r0,r0,#1 ; if an exact fit across screen. N X7SUB r0,r0,#2 ; r0 now equals no. of blocks in X b4STR r0,[r10,#12] ; store this value to my store. l v5; on entry r1=op1 ; r2=op2 ; r0 = result of r1/r2 � �,MOV r1,r12 ; copy screen height for op1. �- ; r2 is already width for op2. � MOV r0,#0 � .divloop2 � CMP r1,#0 �SUBGT r1,r1,r2 �ADDGT r0,r0,#1 �BGT divloop2 � �3ADDEQ r0,r0,#1 ; if an exact fit across screen. � �7SUB r0,r0,#2 ; r0 now equals no. of blocks in Y 4STR r0,[r10,#16] ; store this value to my store. /MOV r5,r2 ; r5 equals width of block *; check and set step value. 4 >&MOV r1,r5 ; get block width H&LDR r2,[r10,#24] ; load step value R \ CMP r2,#0 fMOVLE r2,#1 p$STRLE r2,[r10,#24] ; store back. z � MOV r0,#0 � .divloop3 � CMP r1,#0 �SUBGT r1,r1,r2 �ADDGT r0,r0,#1 �BGT divloop3 � �CMPS r1,#0 �;STRNE r5,[r10,#24] ; if step not a factor, step = width � �-LDR r7,[r10,#20] ; get number of colours. � �CMP r7,#16 BLT doblack LDR r6,[r10,#28] CMP r6,#0 $BEQ doblack . 8 B; draw the grid L VADD r8,r12,r5 ` j MOV r4,#0 t.yagain ~ �SWI 256+18 �CMP r7,#16 ��Q r0,#2 �MOVGT r0,#1 �SWI "OS_WriteC" �CMP r7,#16 ��Q r0,#2 �MOVGT r0,#42 �SWI "OS_WriteC" � �3MOV r0,#4: MOV r1,#0:SUB r2,r4,#4:SWI "OS_Plot" �2MOV r0,#97: MOV r1,r11:MOV r2,#4:SWI "OS_Plot" SWI 256+18 CMP r7,#16 �Q r0,#1 (MOVGT r0,#2 2SWI "OS_WriteC" <CMP r7,#16 F�Q r0,#2 PMOVGT r0,#42 ZSWI "OS_WriteC" d n0MOV r0,#4: MOV r1,#0:MOV r2,r4:SWI "OS_Plot" x2MOV r0,#97: MOV r1,r11:MOV r2,#4:SWI "OS_Plot" � �ADD r4,r4,r5 � CMP r4,r8 �BLT yagain � � MOV r4,#0 �ADD r8,r11,r5 �.xagain � �SWI 256+18 �CMP r7,#16 ��Q r0,#1 �MOVGT r0,#2 SWI "OS_WriteC" CMP r7,#16 �Q r0,#2 "MOVGT r0,#42 ,SWI "OS_WriteC" 6 @3MOV r0,#4: MOV r2,#0:SUB r1,r4,#4:SWI "OS_Plot" J2MOV r0,#97: MOV r2,r12:MOV r1,#4:SWI "OS_Plot" T ^SWI 256+18 hCMP r7,#16 r�Q r0,#2 |MOVGT r0,#1 �SWI "OS_WriteC" �CMP r7,#16 ��Q r0,#2 �MOVGT r0,#42 �SWI "OS_WriteC" � �0MOV r0,#4: MOV r2,#0:MOV r1,r4:SWI "OS_Plot" �2MOV r0,#97: MOV r2,r12:MOV r1,#4:SWI "OS_Plot" � �ADD r4,r4,r5 � CMP r4,r8 �BLT xagain � ; draw black lines. .doblack & 0SWI 256+18 : MOV r0,#0 DSWI "OS_WriteC" NCMP r7,#254 XMOVLT r0,#7 bMOVGE r0,#0 lSWI "OS_WriteC" v � MOV r4,#0 �.y2again � �2MOV r0,#4: MOV r1,#0: MOV r2,r4: SWI "OS_Plot" �3MOV r0,#5: MOV r1,r11: MOV r2,r4: SWI "OS_Plot" �ADD r4,r4,r5 �CMP r4,r12 �BLT y2again � � MOV r4,#0 �.x2again � �2MOV r0,#4: MOV r1,r4: MOV r2,#0: SWI "OS_Plot" 3MOV r0,#5: MOV r1,r4: MOV r2,r12: SWI "OS_Plot" ADD r4,r4,r5 CMP r4,r11 BLT x2again * 4 > H'; calculate and store hole position R \LDR r0,[r10,#12] fMOV r0,r0,LSR#1 pSTR r0,[r10,#4] z �LDR r0,[r10,#16] �MOV r0,r0,LSR#1 �STR r0,[r10,#8] � �!; draw hole - black rectangle � � MOV r0,#4 �LDR r4,[r10,#4] �MUL r1,r4,r5 �LDR r4,[r10,#8] �MUL r2,r4,r5 �SWI "OS_Plot" �MOV r0,#97 MOV r1,r5 MOV r2,r5 SWI "OS_Plot" $ .MOV PC,r14 8 B .vars LEQUD 0 ; block size V"EQUD 0 ; Current X-pos of hole `"EQUD 0 ; Current Y-pos of hole j'EQUD 0 ; Number of full squares (X) t'EQUD 0 ; Number of full squares (Y) ~EQUD 0 ; number of colours �EQUD 0 ; REAL step value �EQUD 0 ; plinth ? � � .scanregs �;EQUD 0:EQUD 0:EQUD 0:EQUD 0:EQUD 0:EQUD 0:EQUD 0:EQUD 0 �;EQUD 0:EQUD 0:EQUD 0:EQUD 0:EQUD 0:EQUD 0:EQUD 0:EQUD 0 � � .regs �;EQUD 0:EQUD 0:EQUD 0:EQUD 0:EQUD 0:EQUD 0:EQUD 0:EQUD 0 �;EQUD 0:EQUD 0:EQUD 0:EQUD 0:EQUD 0:EQUD 0:EQUD 0:EQUD 0 � �I;-------------------------------------------------------------------- .Scan ?; on return r10 will contain 1 = exit prog. 0 = don't exit. (1SWI "OS_Mouse":MOV r8,r0:MOV r9,r1:MOV r11,r2 2LMOV r10,#0:MOV r0,#121:MOV r1,#0:SWI "OS_Byte":CMPS r1,#255:MOVNE r10,#1 <BSWI "OS_Mouse":CMPS r0,r8:MOVNE r10,#1:CMPS r1,r9:MOVNE r10,#1 FCMPS r2,r11::MOVNE r10,#1 PMOV PC,r14 Z dI;-------------------------------------------------------------------- n xF;----------------------------------------------------------------- � �!.shutdown ; the shutdown code � �I;-------------------------------------------------------------------- �<; ******************************************** �<; *** YOUR SHUTDOWN CODE STARTS HERE *** �<; ******************************************** � �:; blah! blah! blah! blah! blah! blah! blah! � �<; ******************************************** �<; *** YOUR SHUTDOWN CODE ENDS HERE *** �<; ******************************************** I;-------------------------------------------------------------------- $MOV PC,r14 ; exit shutdown code. " , 6] @ � pass J� P%-code% TA$=� ^� h r� �adr(r,l) | p%=P% �� l>p% � �[ �ADD r,PC,#(l-p%-8)� &100 �!ADD r,r,#(l-p%-8) � &100<<8:] �� �[ �SUB r,PC,#(p%+8-l)� &100 � SUB r,r,#(p%+8-l)� &100<<8:] �� �="" � �3� - BASIC VERSION WHICH WAS TRANSLATED INTO THE �� - ABOVE ASSEMBLY CODE. :- bw%=64 step%=4 & 0W%=1280 :H%=1024 D NNBX%=(W%/bw%)-1 XNBY%=(H%/bw%)-1 b l� Y%=1 � H% � bw% v � 0,Y% �� W%,Y% �� Y% �� X%=1 � W% � bw% � � X%,0 �� X%,H% �� X% � � �CX%=NBX%/2 �CY%=NBY%/2 � �!ȓ Ȑ CX%*bw%,CY%*bw%,bw%,bw% � 5� ----------------------------------------------- R%=�(W%) *R%=R% � %11 4 >� R%=0 > top. H� R%=1 > right. R� R%=2 > bottom. \� R%=3 > left. f p� R%=0 � CY%=NBY% � R%=2 z� R%=2 � CY%=0 � R%=0 � �� R%=1 � CX%=NBX% � R%=3 �� R%=3 � CX%=0 � R%=1 � �� R%=0 � �� y%=0 � bw%-1 � step% �-ș "OS_Plot",188,CX%*bw%,(CY%*bw%)+bw%-y% �7ș "OS_Plot",188,(CX%*bw%)+bw%,(CY%*bw%)+bw%+bw%-y% �3ș "OS_Plot",190,CX%*bw%,(CY%*bw%)+bw%-y%-step% �6ȓ Ȑ CX%*bw%,(CY%*bw%)+bw%-y%+bw%-step%,bw%,step% �� y% � CY%+=1 �� � R%=2 � � y%=0 � bw%-1 � step% $-ș "OS_Plot",188,CX%*bw%,(CY%*bw%)-bw%+y% ./ș "OS_Plot",188,(CX%*bw%)+bw%,(CY%*bw%)+y% 83ș "OS_Plot",190,CX%*bw%,(CY%*bw%)-bw%+y%+step% B,ȓ Ȑ CX%*bw%,(CY%*bw%)-bw%+y%,bw%,step% L� y% V CY%-=1 `� j t� R%=1 � ~� x%=0 � bw%-1 � step% �-ș "OS_Plot",188,(CX%*bw%)+bw%-x%,CY%*bw% �7ș "OS_Plot",188,(CX%*bw%)+bw%+bw%-x%,(CY%*bw%)+bw% �3ș "OS_Plot",190,(CX%*bw%)+bw%-x%-step%,CY%*bw% �6ȓ Ȑ (CX%*bw%)+bw%+bw%-x%-step%,CY%*bw%,step%,bw% �� x% � CX%+=1 �� � �� R%=3 � �� x%=0 � bw%-1 � step% �-ș "OS_Plot",188,(CX%*bw%)-bw%+x%,CY%*bw% �-ș "OS_Plot",188,CX%*bw%+x%,(CY%*bw%)+bw% 3ș "OS_Plot",190,(CX%*bw%)-bw%+x%+step%,CY%*bw% ,ȓ Ȑ (CX%*bw%)-bw%+x%,CY%*bw%,step%,bw% � x% CX%-=1 (� 2 < � �TVW F� P �
00000000 0d 00 0a 24 f4 20 3e 20 3c 44 61 72 6b 24 44 69 |...$. > <Dark$Di| 00000010 72 3e 2e 57 6f 72 6b 48 6f 72 73 65 73 2e 50 75 |r>.WorkHorses.Pu| 00000020 7a 7a 6c 65 0d 00 14 04 0d 00 1e 10 ee 20 85 20 |zzle......... . | 00000030 f1 20 9e 2c f6 24 3a e0 0d 00 28 04 0d 00 32 10 |. .,.$:...(...2.| 00000040 de 20 63 6f 64 65 25 20 34 30 39 36 0d 00 3c 04 |. code% 4096..<.| 00000050 0d 00 46 0d f2 41 73 73 65 6d 62 6c 65 0d 00 50 |..F..Assemble..P| 00000060 09 f2 53 65 74 56 0d 00 5a 07 f2 44 6f 0d 00 64 |..SetV..Z..Do..d| 00000070 05 e0 0d 00 6e 04 0d 00 78 0a dd f2 53 65 74 56 |....n...x...SetV| 00000080 0d 00 82 2e 21 28 63 6f 64 65 25 2b 30 29 3d 33 |....!(code%+0)=3| 00000090 2b 32 35 35 20 20 20 3a 20 f4 20 73 61 76 65 72 |+255 : . saver| 000000a0 20 74 61 6b 65 73 20 32 20 61 72 67 73 2e 0d 00 | takes 2 args...| 000000b0 8c 32 21 28 63 6f 64 65 25 2b 34 29 3d 31 32 38 |.2!(code%+4)=128| 000000c0 20 3a 20 f4 20 61 72 67 31 20 2d 20 73 69 7a 65 | : . arg1 - size| 000000d0 20 6f 66 20 73 6c 69 64 65 20 73 71 75 61 72 65 | of slide square| 000000e0 0d 00 96 33 21 28 63 6f 64 65 25 2b 38 29 3d 34 |...3!(code%+8)=4| 000000f0 20 20 20 3a 20 f4 20 61 72 67 32 20 2d 20 73 70 | : . arg2 - sp| 00000100 65 65 64 20 6f 66 20 73 71 75 61 72 65 20 73 6c |eed of square sl| 00000110 69 64 65 0d 00 a0 28 21 28 63 6f 64 65 25 2b 31 |ide...(!(code%+1| 00000120 32 29 3d 31 20 20 3a 20 f4 20 61 72 67 33 20 2d |2)=1 : . arg3 -| 00000130 20 70 6c 69 6e 74 68 20 6f 6e 2e 0d 00 aa 04 0d | plinth on......| 00000140 00 b4 2c 24 28 63 6f 64 65 25 2b 33 36 29 3d 22 |..,$(code%+36)="| 00000150 3c 73 71 75 61 72 65 20 73 69 7a 65 20 28 6d 69 |<square size (mi| 00000160 6e 69 6d 75 6d 3d 31 36 29 3e 22 0d 00 be 31 24 |nimum=16)>"...1$| 00000170 28 63 6f 64 65 25 2b 36 38 29 3d 22 3c 73 70 65 |(code%+68)="<spe| 00000180 65 64 20 66 61 63 74 6f 72 3e 20 3c 70 6c 69 6e |ed factor> <plin| 00000190 74 68 20 28 30 3d 6f 66 66 29 3e 22 0d 00 c8 04 |th (0=off)>"....| 000001a0 0d 00 d2 05 e1 0d 00 dc 04 0d 00 e6 08 dd f2 44 |...............D| 000001b0 6f 0d 00 f0 1a 41 25 3d 31 32 38 30 3a 42 25 3d |o....A%=1280:B%=| 000001c0 31 30 32 34 3a 43 25 3d 32 35 36 0d 00 fa 1a f4 |1024:C%=256.....| 000001d0 50 52 49 4e 54 20 55 53 52 20 28 63 6f 64 65 25 |PRINT USR (code%| 000001e0 2b 31 30 30 29 0d 01 04 0f d6 20 63 6f 64 65 25 |+100)..... code%| 000001f0 2b 31 30 30 0d 01 0e 19 41 25 3d b3 28 31 32 38 |+100....A%=.(128| 00000200 30 29 3a 42 25 3d b3 28 31 30 32 34 29 0d 01 18 |0):B%=.(1024)...| 00000210 0f d6 20 63 6f 64 65 25 2b 31 30 38 0d 01 22 0a |.. code%+108..".| 00000220 e5 20 8d 54 4e 41 0d 01 2c 05 e1 0d 01 36 04 0d |. .TNA..,....6..| 00000230 01 40 0e dd f2 41 73 73 65 6d 62 6c 65 0d 01 4a |.@...Assemble..J| 00000240 04 0d 01 54 0b 43 58 20 3d 20 31 31 0d 01 5e 0b |...T.CX = 11..^.| 00000250 43 59 20 3d 20 31 32 0d 01 68 0a 53 54 20 3d 20 |CY = 12..h.ST = | 00000260 37 0d 01 72 0a 42 57 20 3d 20 38 0d 01 7c 09 58 |7..r.BW = 8..|.X| 00000270 20 3d 20 36 0d 01 86 09 59 20 3d 20 36 0d 01 90 | = 6....Y = 6...| 00000280 04 0d 01 9a 14 e3 20 70 61 73 73 3d 30 20 b8 20 |...... pass=0 . | 00000290 33 20 88 20 33 0d 01 a4 0c 50 25 3d 63 6f 64 65 |3 . 3....P%=code| 000002a0 25 0d 01 ae 0d 5b 4f 50 54 20 70 61 73 73 0d 01 |%....[OPT pass..| 000002b0 b8 04 0d 01 c2 0c 2e 61 72 67 74 79 70 65 0d 01 |.......argtype..| 000002c0 cc 0c 45 51 55 44 20 30 20 3b 0d 01 d6 04 0d 01 |..EQUD 0 ;......| 000002d0 e0 09 2e 61 72 67 73 0d 01 ea 3b 45 51 55 44 20 |...args...;EQUD | 000002e0 30 3a 45 51 55 44 20 30 3a 45 51 55 44 20 30 3a |0:EQUD 0:EQUD 0:| 000002f0 45 51 55 44 20 30 3a 45 51 55 44 20 30 3a 45 51 |EQUD 0:EQUD 0:EQ| 00000300 55 44 20 30 3a 45 51 55 44 20 30 3a 45 51 55 44 |UD 0:EQUD 0:EQUD| 00000310 20 30 0d 01 f4 04 0d 01 fe 09 2e 68 65 6c 70 0d | 0.........help.| 00000320 02 08 3b 45 51 55 44 20 30 3a 45 51 55 44 20 30 |..;EQUD 0:EQUD 0| 00000330 3a 45 51 55 44 20 30 3a 45 51 55 44 20 30 3a 45 |:EQUD 0:EQUD 0:E| 00000340 51 55 44 20 30 3a 45 51 55 44 20 30 3a 45 51 55 |QUD 0:EQUD 0:EQU| 00000350 44 20 30 3a 45 51 55 44 20 30 0d 02 12 3b 45 51 |D 0:EQUD 0...;EQ| 00000360 55 44 20 30 3a 45 51 55 44 20 30 3a 45 51 55 44 |UD 0:EQUD 0:EQUD| 00000370 20 30 3a 45 51 55 44 20 30 3a 45 51 55 44 20 30 | 0:EQUD 0:EQUD 0| 00000380 3a 45 51 55 44 20 30 3a 45 51 55 44 20 30 3a 45 |:EQUD 0:EQUD 0:E| 00000390 51 55 44 20 30 0d 02 1c 04 0d 02 26 04 0d 02 30 |QUD 0......&...0| 000003a0 35 42 20 69 6e 69 74 20 20 20 20 20 3b 20 4a 75 |5B init ; Ju| 000003b0 6d 70 73 20 74 6f 20 74 68 65 20 69 6e 69 74 69 |mps to the initi| 000003c0 61 6c 69 73 61 74 69 6f 6e 20 72 6f 75 74 69 6e |alisation routin| 000003d0 65 2e 0d 02 3a 2a 20 20 20 20 20 20 20 20 20 20 |e...:* | 000003e0 20 3b 20 74 68 69 73 20 69 73 20 6c 6f 63 61 74 | ; this is locat| 000003f0 69 6f 6e 20 63 6f 64 65 2b 31 30 30 0d 02 44 04 |ion code+100..D.| 00000400 0d 02 4e 2f 42 20 73 68 75 74 64 6f 77 6e 20 3b |..N/B shutdown ;| 00000410 20 4a 75 6d 70 73 20 74 6f 20 74 68 65 20 73 68 | Jumps to the sh| 00000420 75 74 64 6f 77 6e 20 72 6f 75 74 69 6e 65 2e 0d |utdown routine..| 00000430 02 58 2a 20 20 20 20 20 20 20 20 20 20 20 3b 20 |.X* ; | 00000440 74 68 69 73 20 69 73 20 6c 6f 63 61 74 69 6f 6e |this is location| 00000450 20 63 6f 64 65 2b 31 30 34 0d 02 62 04 0d 02 6c | code+104..b...l| 00000460 04 0d 02 76 04 0d 02 80 0d 2e 70 6f 6c 6c 5f 72 |...v......poll_r| 00000470 65 74 0d 02 8a 04 0d 02 94 10 a4 61 64 72 28 30 |et.........adr(0| 00000480 2c 72 65 67 73 29 0d 02 9e 16 53 54 4d 49 41 20 |,regs)....STMIA | 00000490 72 30 21 2c 7b 72 31 2d 72 31 34 7d 0d 02 a8 04 |r0!,{r1-r14}....| 000004a0 0d 02 b2 2a 80 20 72 30 2c 72 31 2c 23 28 25 31 |...*. r0,r1,#(%1| 000004b0 31 29 20 3b 20 6d 61 6b 65 20 72 30 20 61 20 76 |1) ; make r0 a v| 000004c0 61 6c 75 65 20 28 30 2d 33 29 0d 02 bc 04 0d 02 |alue (0-3)......| 000004d0 c6 11 a4 61 64 72 28 31 30 2c 76 61 72 73 29 0d |...adr(10,vars).| 000004e0 02 d0 04 0d 02 da 0e 43 4d 50 53 20 72 30 2c 23 |.......CMPS r0,#| 000004f0 30 0d 02 e4 0c 42 4e 45 20 63 6d 70 32 0d 02 ee |0....BNE cmp2...| 00000500 2a 4c 44 52 20 72 31 31 2c 5b 72 31 30 2c 23 38 |*LDR r11,[r10,#8| 00000510 5d 20 20 3b 20 6c 6f 61 64 20 63 75 72 72 65 6e |] ; load curren| 00000520 74 20 59 20 70 6f 73 0d 02 f8 32 4c 44 52 20 72 |t Y pos...2LDR r| 00000530 31 32 2c 5b 72 31 30 2c 23 31 36 5d 20 3b 20 6c |12,[r10,#16] ; l| 00000540 6f 61 64 20 6e 75 6d 62 65 72 20 6f 66 20 62 6c |oad number of bl| 00000550 6f 63 6b 73 20 69 6e 20 59 0d 03 02 10 43 4d 50 |ocks in Y....CMP| 00000560 53 20 72 31 31 2c 72 31 32 0d 03 0c 0c ec 51 20 |S r11,r12.....Q | 00000570 72 30 2c 23 32 0d 03 16 0f 42 45 51 20 63 6d 70 |r0,#2....BEQ cmp| 00000580 65 78 69 74 0d 03 20 04 0d 03 2a 09 2e 63 6d 70 |exit.. ...*..cmp| 00000590 32 0d 03 34 0e 43 4d 50 53 20 72 30 2c 23 32 0d |2..4.CMPS r0,#2.| 000005a0 03 3e 0c 42 4e 45 20 63 6d 70 31 0d 03 48 2a 4c |.>.BNE cmp1..H*L| 000005b0 44 52 20 72 31 31 2c 5b 72 31 30 2c 23 38 5d 20 |DR r11,[r10,#8] | 000005c0 20 3b 20 6c 6f 61 64 20 63 75 72 72 65 6e 74 20 | ; load current | 000005d0 59 20 70 6f 73 0d 03 52 0f 43 4d 50 53 20 72 31 |Y pos..R.CMPS r1| 000005e0 31 2c 23 30 0d 03 5c 0c ec 51 20 72 30 2c 23 30 |1,#0..\..Q r0,#0| 000005f0 0d 03 66 0f 42 45 51 20 63 6d 70 65 78 69 74 0d |..f.BEQ cmpexit.| 00000600 03 70 04 0d 03 7a 09 2e 63 6d 70 31 0d 03 84 0e |.p...z..cmp1....| 00000610 43 4d 50 53 20 72 30 2c 23 31 0d 03 8e 0c 42 4e |CMPS r0,#1....BN| 00000620 45 20 63 6d 70 33 0d 03 98 2a 4c 44 52 20 72 31 |E cmp3...*LDR r1| 00000630 31 2c 5b 72 31 30 2c 23 34 5d 20 20 3b 20 6c 6f |1,[r10,#4] ; lo| 00000640 61 64 20 63 75 72 72 65 6e 74 20 58 20 70 6f 73 |ad current X pos| 00000650 0d 03 a2 32 4c 44 52 20 72 31 32 2c 5b 72 31 30 |...2LDR r12,[r10| 00000660 2c 23 31 32 5d 20 3b 20 6c 6f 61 64 20 6e 75 6d |,#12] ; load num| 00000670 62 65 72 20 6f 66 20 62 6c 6f 63 6b 73 20 69 6e |ber of blocks in| 00000680 20 58 0d 03 ac 10 43 4d 50 53 20 72 31 31 2c 72 | X....CMPS r11,r| 00000690 31 32 0d 03 b6 0c ec 51 20 72 30 2c 23 33 0d 03 |12.....Q r0,#3..| 000006a0 c0 0f 42 45 51 20 63 6d 70 65 78 69 74 0d 03 ca |..BEQ cmpexit...| 000006b0 04 0d 03 d4 09 2e 63 6d 70 33 0d 03 de 0e 43 4d |......cmp3....CM| 000006c0 50 53 20 72 30 2c 23 33 0d 03 e8 0f 42 4e 45 20 |PS r0,#3....BNE | 000006d0 63 6d 70 65 78 69 74 0d 03 f2 2a 4c 44 52 20 72 |cmpexit...*LDR r| 000006e0 31 31 2c 5b 72 31 30 2c 23 34 5d 20 20 3b 20 6c |11,[r10,#4] ; l| 000006f0 6f 61 64 20 63 75 72 72 65 6e 74 20 58 20 70 6f |oad current X po| 00000700 73 0d 03 fc 0f 43 4d 50 53 20 72 31 31 2c 23 30 |s....CMPS r11,#0| 00000710 0d 04 06 0c ec 51 20 72 30 2c 23 31 0d 04 10 04 |.....Q r0,#1....| 00000720 0d 04 1a 0c 2e 63 6d 70 65 78 69 74 0d 04 24 04 |.....cmpexit..$.| 00000730 0d 04 2e 37 4d 4f 56 20 72 39 2c 72 30 20 20 20 |...7MOV r9,r0 | 00000740 20 20 20 20 20 20 20 3b 20 72 39 20 3d 20 76 61 | ; r9 = va| 00000750 6c 75 65 20 6f 66 20 72 61 6e 64 6f 6d 20 64 69 |lue of random di| 00000760 72 65 63 74 69 6f 6e 0d 04 38 2e 4c 44 52 20 72 |rection..8.LDR r| 00000770 38 2c 5b 72 31 30 5d 20 20 20 20 20 20 20 3b 20 |8,[r10] ; | 00000780 72 38 20 3d 20 62 6c 6f 63 6b 20 77 69 64 74 68 |r8 = block width| 00000790 20 20 20 62 77 0d 04 42 22 4c 44 52 20 72 37 2c | bw..B"LDR r7,| 000007a0 5b 72 31 30 2c 23 32 34 5d 20 20 20 3b 20 72 37 |[r10,#24] ; r7| 000007b0 20 3d 20 73 74 65 70 0d 04 4c 2e 4c 44 52 20 72 | = step..L.LDR r| 000007c0 31 31 2c 5b 72 31 30 2c 23 34 5d 20 20 20 3b 20 |11,[r10,#4] ; | 000007d0 72 31 31 20 3d 20 63 75 72 72 65 6e 74 20 58 70 |r11 = current Xp| 000007e0 6f 73 20 43 58 0d 04 56 2e 4c 44 52 20 72 31 32 |os CX..V.LDR r12| 000007f0 2c 5b 72 31 30 2c 23 38 5d 20 20 20 3b 20 72 31 |,[r10,#8] ; r1| 00000800 32 20 3d 20 63 75 72 72 65 6e 74 20 59 70 6f 73 |2 = current Ypos| 00000810 20 43 59 0d 04 60 04 0d 04 6a 17 3b 20 73 65 74 | CY..`...j.; set| 00000820 20 67 63 6f 6c 20 74 6f 20 62 6c 61 63 6b 0d 04 | gcol to black..| 00000830 74 04 0d 04 7e 0e 53 57 49 20 32 35 36 2b 31 38 |t...~.SWI 256+18| 00000840 0d 04 88 0d 4d 4f 56 20 72 30 2c 23 30 0d 04 92 |....MOV r0,#0...| 00000850 13 53 57 49 20 22 4f 53 5f 57 72 69 74 65 43 22 |.SWI "OS_WriteC"| 00000860 0d 04 9c 2d 4c 44 52 20 72 30 2c 5b 72 31 30 2c |...-LDR r0,[r10,| 00000870 23 32 30 5d 20 3b 20 67 65 74 20 6e 75 6d 62 65 |#20] ; get numbe| 00000880 72 20 6f 66 20 63 6f 6c 6f 75 72 73 2e 0d 04 a6 |r of colours....| 00000890 0f 43 4d 50 20 72 30 2c 23 32 35 34 0d 04 b0 0f |.CMP r0,#254....| 000008a0 4d 4f 56 4c 54 20 72 30 2c 23 37 0d 04 ba 0f 4d |MOVLT r0,#7....M| 000008b0 4f 56 47 45 20 72 30 2c 23 30 0d 04 c4 13 53 57 |OVGE r0,#0....SW| 000008c0 49 20 22 4f 53 5f 57 72 69 74 65 43 22 0d 04 ce |I "OS_WriteC"...| 000008d0 04 0d 04 d8 0d 43 4d 50 20 72 39 2c 23 30 0d 04 |.....CMP r9,#0..| 000008e0 e2 0b 42 4e 45 20 64 6f 32 0d 04 ec 04 0d 04 f6 |..BNE do2.......| 000008f0 18 3b 20 72 3d 30 20 2d 2d 2d 2d 2d 2d 2d 2d 2d |.; r=0 ---------| 00000900 2d 2d 2d 2d 2d 0d 05 00 04 0d 05 0a 0c 4d 4f 56 |-----........MOV| 00000910 20 59 2c 23 30 0d 05 14 04 0d 05 1e 0b 2e 6c 6f | Y,#0.........lo| 00000920 6f 70 5f 30 0d 05 28 04 0d 05 32 2f a4 61 64 72 |op_0..(...2/.adr| 00000930 28 30 2c 73 63 61 6e 72 65 67 73 29 3a 53 54 4d |(0,scanregs):STM| 00000940 49 41 20 72 30 21 2c 7b 72 31 2d 72 31 34 7d 3a |IA r0!,{r1-r14}:| 00000950 42 4c 20 53 63 61 6e 0d 05 3c 3b 43 4d 50 53 20 |BL Scan..<;CMPS | 00000960 72 31 30 2c 23 31 3a 42 45 51 20 6f 75 74 3a a4 |r10,#1:BEQ out:.| 00000970 61 64 72 28 30 2c 73 63 61 6e 72 65 67 73 29 3a |adr(0,scanregs):| 00000980 4c 44 4d 49 41 20 72 30 21 2c 7b 72 31 2d 72 31 |LDMIA r0!,{r1-r1| 00000990 34 7d 0d 05 46 04 0d 05 50 1c 4d 4f 56 20 72 30 |4}..F...P.MOV r0| 000009a0 2c 23 31 38 38 3a 4d 55 4c 20 72 31 2c 43 58 2c |,#188:MUL r1,CX,| 000009b0 42 57 0d 05 5a 29 4d 55 4c 20 72 32 2c 43 59 2c |BW..Z)MUL r2,CY,| 000009c0 42 57 3a 41 44 44 20 72 32 2c 72 32 2c 42 57 3a |BW:ADD r2,r2,BW:| 000009d0 53 55 42 20 72 32 2c 72 32 2c 59 0d 05 64 11 53 |SUB r2,r2,Y..d.S| 000009e0 57 49 20 22 4f 53 5f 50 6c 6f 74 22 0d 05 6e 04 |WI "OS_Plot"..n.| 000009f0 0d 05 78 29 4d 4f 56 20 72 30 2c 23 31 38 38 3a |..x)MOV r0,#188:| 00000a00 4d 55 4c 20 72 31 2c 43 58 2c 42 57 3a 41 44 44 |MUL r1,CX,BW:ADD| 00000a10 20 72 31 2c 72 31 2c 42 57 0d 05 82 2f 4d 55 4c | r1,r1,BW.../MUL| 00000a20 20 72 32 2c 43 59 2c 42 57 3a 41 44 44 20 72 32 | r2,CY,BW:ADD r2| 00000a30 2c 72 32 2c 42 57 2c 4c 53 4c 23 31 3a 53 55 42 |,r2,BW,LSL#1:SUB| 00000a40 20 72 32 2c 72 32 2c 59 0d 05 8c 11 53 57 49 20 | r2,r2,Y....SWI | 00000a50 22 4f 53 5f 50 6c 6f 74 22 0d 05 96 04 0d 05 a0 |"OS_Plot".......| 00000a60 36 4d 4f 56 20 72 30 2c 23 31 39 30 3a 4d 55 4c |6MOV r0,#190:MUL| 00000a70 20 72 31 2c 43 58 2c 42 57 3a 4d 55 4c 20 72 32 | r1,CX,BW:MUL r2| 00000a80 2c 43 59 2c 42 57 3a 41 44 44 20 72 32 2c 72 32 |,CY,BW:ADD r2,r2| 00000a90 2c 42 57 0d 05 aa 1c 53 55 42 20 72 32 2c 72 32 |,BW....SUB r2,r2| 00000aa0 2c 59 3a 53 55 42 20 72 32 2c 72 32 2c 53 54 0d |,Y:SUB r2,r2,ST.| 00000ab0 05 b4 11 53 57 49 20 22 4f 53 5f 50 6c 6f 74 22 |...SWI "OS_Plot"| 00000ac0 0d 05 be 04 0d 05 c8 1a 4d 4f 56 20 72 30 2c 23 |........MOV r0,#| 00000ad0 34 3a 4d 55 4c 20 72 31 2c 43 58 2c 42 57 0d 05 |4:MUL r1,CX,BW..| 00000ae0 d2 30 4d 55 4c 20 72 32 2c 43 59 2c 42 57 3a 41 |.0MUL r2,CY,BW:A| 00000af0 44 44 20 72 32 2c 72 32 2c 42 57 2c 4c 53 4c 23 |DD r2,r2,BW,LSL#| 00000b00 31 3a 53 55 42 20 72 32 2c 72 32 2c 53 54 0d 05 |1:SUB r2,r2,ST..| 00000b10 dc 1d 53 55 42 20 72 32 2c 72 32 2c 59 3a 53 57 |..SUB r2,r2,Y:SW| 00000b20 49 20 22 4f 53 5f 50 6c 6f 74 22 0d 05 e6 30 4d |I "OS_Plot"...0M| 00000b30 4f 56 20 72 30 2c 23 39 37 3a 4d 4f 56 20 72 31 |OV r0,#97:MOV r1| 00000b40 2c 42 57 3a 4d 4f 56 20 72 32 2c 53 54 3a 53 57 |,BW:MOV r2,ST:SW| 00000b50 49 20 22 4f 53 5f 50 6c 6f 74 22 0d 05 f0 04 0d |I "OS_Plot".....| 00000b60 05 fa 0e 41 44 44 20 59 2c 59 2c 53 54 0d 06 04 |...ADD Y,Y,ST...| 00000b70 10 53 55 42 20 72 30 2c 42 57 2c 23 31 0d 06 0e |.SUB r0,BW,#1...| 00000b80 0c 43 4d 50 20 59 2c 72 30 0d 06 18 0e 42 4c 45 |.CMP Y,r0....BLE| 00000b90 20 6c 6f 6f 70 5f 30 0d 06 22 04 0d 06 2c 10 41 | loop_0.."...,.A| 00000ba0 44 44 20 43 59 2c 43 59 2c 23 31 0d 06 36 13 53 |DD CY,CY,#1..6.S| 00000bb0 54 52 20 43 59 2c 5b 72 31 30 2c 23 38 5d 0d 06 |TR CY,[r10,#8]..| 00000bc0 40 04 0d 06 4a 18 3b 20 72 3d 32 20 2d 2d 2d 2d |@...J.; r=2 ----| 00000bd0 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0d 06 54 04 0d 06 |----------..T...| 00000be0 5e 08 2e 64 6f 32 0d 06 68 04 0d 06 72 0d 43 4d |^..do2..h...r.CM| 00000bf0 50 20 72 39 2c 23 32 0d 06 7c 0b 42 4e 45 20 64 |P r9,#2..|.BNE d| 00000c00 6f 31 0d 06 86 04 0d 06 90 0c 4d 4f 56 20 59 2c |o1........MOV Y,| 00000c10 23 30 0d 06 9a 04 0d 06 a4 0b 2e 6c 6f 6f 70 5f |#0.........loop_| 00000c20 32 0d 06 ae 04 0d 06 b8 2f a4 61 64 72 28 30 2c |2......./.adr(0,| 00000c30 73 63 61 6e 72 65 67 73 29 3a 53 54 4d 49 41 20 |scanregs):STMIA | 00000c40 72 30 21 2c 7b 72 31 2d 72 31 34 7d 3a 42 4c 20 |r0!,{r1-r14}:BL | 00000c50 53 63 61 6e 0d 06 c2 3b 43 4d 50 53 20 72 31 30 |Scan...;CMPS r10| 00000c60 2c 23 31 3a 42 45 51 20 6f 75 74 3a a4 61 64 72 |,#1:BEQ out:.adr| 00000c70 28 30 2c 73 63 61 6e 72 65 67 73 29 3a 4c 44 4d |(0,scanregs):LDM| 00000c80 49 41 20 72 30 21 2c 7b 72 31 2d 72 31 34 7d 0d |IA r0!,{r1-r14}.| 00000c90 06 cc 04 0d 06 d6 1c 4d 4f 56 20 72 30 2c 23 31 |.......MOV r0,#1| 00000ca0 38 38 3a 4d 55 4c 20 72 31 2c 43 58 2c 42 57 0d |88:MUL r1,CX,BW.| 00000cb0 06 e0 29 4d 55 4c 20 72 32 2c 43 59 2c 42 57 3a |..)MUL r2,CY,BW:| 00000cc0 53 55 42 20 72 32 2c 72 32 2c 42 57 3a 41 44 44 |SUB r2,r2,BW:ADD| 00000cd0 20 72 32 2c 72 32 2c 59 0d 06 ea 11 53 57 49 20 | r2,r2,Y....SWI | 00000ce0 22 4f 53 5f 50 6c 6f 74 22 0d 06 f4 04 0d 06 fe |"OS_Plot".......| 00000cf0 29 4d 4f 56 20 72 30 2c 23 31 38 38 3a 4d 55 4c |)MOV r0,#188:MUL| 00000d00 20 72 31 2c 43 58 2c 42 57 3a 41 44 44 20 72 31 | r1,CX,BW:ADD r1| 00000d10 2c 72 31 2c 42 57 0d 07 08 1c 4d 55 4c 20 72 32 |,r1,BW....MUL r2| 00000d20 2c 43 59 2c 42 57 3a 41 44 44 20 72 32 2c 72 32 |,CY,BW:ADD r2,r2| 00000d30 2c 59 0d 07 12 11 53 57 49 20 22 4f 53 5f 50 6c |,Y....SWI "OS_Pl| 00000d40 6f 74 22 0d 07 1c 04 0d 07 26 36 4d 4f 56 20 72 |ot"......&6MOV r| 00000d50 30 2c 23 31 39 30 3a 4d 55 4c 20 72 31 2c 43 58 |0,#190:MUL r1,CX| 00000d60 2c 42 57 3a 4d 55 4c 20 72 32 2c 43 59 2c 42 57 |,BW:MUL r2,CY,BW| 00000d70 3a 53 55 42 20 72 32 2c 72 32 2c 42 57 0d 07 30 |:SUB r2,r2,BW..0| 00000d80 1c 41 44 44 20 72 32 2c 72 32 2c 59 3a 41 44 44 |.ADD r2,r2,Y:ADD| 00000d90 20 72 32 2c 72 32 2c 53 54 0d 07 3a 11 53 57 49 | r2,r2,ST..:.SWI| 00000da0 20 22 4f 53 5f 50 6c 6f 74 22 0d 07 44 04 0d 07 | "OS_Plot"..D...| 00000db0 4e 1a 4d 4f 56 20 72 30 2c 23 34 3a 4d 55 4c 20 |N.MOV r0,#4:MUL | 00000dc0 72 31 2c 43 58 2c 42 57 0d 07 58 1d 4d 55 4c 20 |r1,CX,BW..X.MUL | 00000dd0 72 32 2c 43 59 2c 42 57 3a 53 55 42 20 72 32 2c |r2,CY,BW:SUB r2,| 00000de0 72 32 2c 42 57 0d 07 62 1d 41 44 44 20 72 32 2c |r2,BW..b.ADD r2,| 00000df0 72 32 2c 59 3a 53 57 49 20 22 4f 53 5f 50 6c 6f |r2,Y:SWI "OS_Plo| 00000e00 74 22 0d 07 6c 30 4d 4f 56 20 72 30 2c 23 39 37 |t"..l0MOV r0,#97| 00000e10 3a 4d 4f 56 20 72 31 2c 42 57 3a 4d 4f 56 20 72 |:MOV r1,BW:MOV r| 00000e20 32 2c 53 54 3a 53 57 49 20 22 4f 53 5f 50 6c 6f |2,ST:SWI "OS_Plo| 00000e30 74 22 0d 07 76 04 0d 07 80 0e 41 44 44 20 59 2c |t"..v.....ADD Y,| 00000e40 59 2c 53 54 0d 07 8a 10 53 55 42 20 72 30 2c 42 |Y,ST....SUB r0,B| 00000e50 57 2c 23 31 0d 07 94 0c 43 4d 50 20 59 2c 72 30 |W,#1....CMP Y,r0| 00000e60 0d 07 9e 0e 42 4c 45 20 6c 6f 6f 70 5f 32 0d 07 |....BLE loop_2..| 00000e70 a8 04 0d 07 b2 10 53 55 42 20 43 59 2c 43 59 2c |......SUB CY,CY,| 00000e80 23 31 0d 07 bc 13 53 54 52 20 43 59 2c 5b 72 31 |#1....STR CY,[r1| 00000e90 30 2c 23 38 5d 0d 07 c6 04 0d 07 d0 16 3b 20 72 |0,#8]........; r| 00000ea0 3d 31 20 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0d |=1 ------------.| 00000eb0 07 da 04 0d 07 e4 08 2e 64 6f 31 0d 07 ee 0d 43 |........do1....C| 00000ec0 4d 50 20 72 39 2c 23 31 0d 07 f8 0b 42 4e 45 20 |MP r9,#1....BNE | 00000ed0 64 6f 33 0d 08 02 04 0d 08 0c 0c 4d 4f 56 20 58 |do3........MOV X| 00000ee0 2c 23 30 0d 08 16 04 0d 08 20 0b 2e 6c 6f 6f 70 |,#0...... ..loop| 00000ef0 5f 31 0d 08 2a 04 0d 08 34 2f a4 61 64 72 28 30 |_1..*...4/.adr(0| 00000f00 2c 73 63 61 6e 72 65 67 73 29 3a 53 54 4d 49 41 |,scanregs):STMIA| 00000f10 20 72 30 21 2c 7b 72 31 2d 72 31 34 7d 3a 42 4c | r0!,{r1-r14}:BL| 00000f20 20 53 63 61 6e 0d 08 3e 3b 43 4d 50 53 20 72 31 | Scan..>;CMPS r1| 00000f30 30 2c 23 31 3a 42 45 51 20 6f 75 74 3a a4 61 64 |0,#1:BEQ out:.ad| 00000f40 72 28 30 2c 73 63 61 6e 72 65 67 73 29 3a 4c 44 |r(0,scanregs):LD| 00000f50 4d 49 41 20 72 30 21 2c 7b 72 31 2d 72 31 34 7d |MIA r0!,{r1-r14}| 00000f60 0d 08 48 04 0d 08 52 35 4d 4f 56 20 72 30 2c 23 |..H...R5MOV r0,#| 00000f70 31 38 38 3a 4d 55 4c 20 72 31 2c 43 58 2c 42 57 |188:MUL r1,CX,BW| 00000f80 3a 41 44 44 20 72 31 2c 72 31 2c 42 57 3a 53 55 |:ADD r1,r1,BW:SU| 00000f90 42 20 72 31 2c 72 31 2c 58 0d 08 5c 1e 4d 55 4c |B r1,r1,X..\.MUL| 00000fa0 20 72 32 2c 43 59 2c 42 57 3a 53 57 49 20 22 4f | r2,CY,BW:SWI "O| 00000fb0 53 5f 50 6c 6f 74 22 0d 08 66 04 0d 08 70 3b 4d |S_Plot"..f...p;M| 00000fc0 4f 56 20 72 30 2c 23 31 38 38 3a 4d 55 4c 20 72 |OV r0,#188:MUL r| 00000fd0 31 2c 43 58 2c 42 57 3a 41 44 44 20 72 31 2c 72 |1,CX,BW:ADD r1,r| 00000fe0 31 2c 42 57 2c 4c 53 4c 23 31 3a 53 55 42 20 72 |1,BW,LSL#1:SUB r| 00000ff0 31 2c 72 31 2c 58 0d 08 7a 2b 4d 55 4c 20 72 32 |1,r1,X..z+MUL r2| 00001000 2c 43 59 2c 42 57 3a 41 44 44 20 72 32 2c 72 32 |,CY,BW:ADD r2,r2| 00001010 2c 42 57 3a 53 57 49 20 22 4f 53 5f 50 6c 6f 74 |,BW:SWI "OS_Plot| 00001020 22 0d 08 84 04 0d 08 8e 35 4d 4f 56 20 72 30 2c |".......5MOV r0,| 00001030 23 31 39 30 3a 4d 55 4c 20 72 31 2c 43 58 2c 42 |#190:MUL r1,CX,B| 00001040 57 3a 41 44 44 20 72 31 2c 72 31 2c 42 57 3a 53 |W:ADD r1,r1,BW:S| 00001050 55 42 20 72 31 2c 72 31 2c 58 0d 08 98 2b 53 55 |UB r1,r1,X...+SU| 00001060 42 20 72 31 2c 72 31 2c 53 54 3a 4d 55 4c 20 72 |B r1,r1,ST:MUL r| 00001070 32 2c 43 59 2c 42 57 3a 53 57 49 20 22 4f 53 5f |2,CY,BW:SWI "OS_| 00001080 50 6c 6f 74 22 0d 08 a2 04 0d 08 ac 2d 4d 4f 56 |Plot".......-MOV| 00001090 20 72 30 2c 23 34 3a 4d 55 4c 20 72 31 2c 43 58 | r0,#4:MUL r1,CX| 000010a0 2c 42 57 3a 41 44 44 20 72 31 2c 72 31 2c 42 57 |,BW:ADD r1,r1,BW| 000010b0 2c 4c 53 4c 23 31 0d 08 b6 1c 53 55 42 20 72 31 |,LSL#1....SUB r1| 000010c0 2c 72 31 2c 58 3a 53 55 42 20 72 31 2c 72 31 2c |,r1,X:SUB r1,r1,| 000010d0 53 54 0d 08 c0 1e 4d 55 4c 20 72 32 2c 43 59 2c |ST....MUL r2,CY,| 000010e0 42 57 3a 53 57 49 20 22 4f 53 5f 50 6c 6f 74 22 |BW:SWI "OS_Plot"| 000010f0 0d 08 ca 30 4d 4f 56 20 72 30 2c 23 39 37 3a 4d |...0MOV r0,#97:M| 00001100 4f 56 20 72 31 2c 53 54 3a 4d 4f 56 20 72 32 2c |OV r1,ST:MOV r2,| 00001110 42 57 3a 53 57 49 20 22 4f 53 5f 50 6c 6f 74 22 |BW:SWI "OS_Plot"| 00001120 0d 08 d4 04 0d 08 de 0e 41 44 44 20 58 2c 58 2c |........ADD X,X,| 00001130 53 54 0d 08 e8 10 53 55 42 20 72 30 2c 42 57 2c |ST....SUB r0,BW,| 00001140 23 31 0d 08 f2 0c 43 4d 50 20 58 2c 72 30 0d 08 |#1....CMP X,r0..| 00001150 fc 0e 42 4c 45 20 6c 6f 6f 70 5f 31 0d 09 06 04 |..BLE loop_1....| 00001160 0d 09 10 10 41 44 44 20 43 58 2c 43 58 2c 23 31 |....ADD CX,CX,#1| 00001170 0d 09 1a 13 53 54 52 20 43 58 2c 5b 72 31 30 2c |....STR CX,[r10,| 00001180 23 34 5d 0d 09 24 04 0d 09 2e 1a 3b 20 72 3d 33 |#4]..$.....; r=3| 00001190 20 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d | ---------------| 000011a0 2d 0d 09 38 04 0d 09 42 08 2e 64 6f 33 0d 09 4c |-..8...B..do3..L| 000011b0 0d 43 4d 50 20 72 39 2c 23 33 0d 09 56 0b 42 4e |.CMP r9,#3..V.BN| 000011c0 45 20 6f 75 74 0d 09 60 04 0d 09 6a 0c 4d 4f 56 |E out..`...j.MOV| 000011d0 20 58 2c 23 30 0d 09 74 04 0d 09 7e 0b 2e 6c 6f | X,#0..t...~..lo| 000011e0 6f 70 5f 33 0d 09 88 04 0d 09 92 2e 41 44 52 20 |op_3........ADR | 000011f0 72 30 2c 73 63 61 6e 72 65 67 73 3a 53 54 4d 49 |r0,scanregs:STMI| 00001200 41 20 72 30 21 2c 7b 72 31 2d 72 31 34 7d 3a 42 |A r0!,{r1-r14}:B| 00001210 4c 20 53 63 61 6e 0d 09 9c 3a 43 4d 50 53 20 72 |L Scan...:CMPS r| 00001220 31 30 2c 23 31 3a 42 45 51 20 6f 75 74 3a 41 44 |10,#1:BEQ out:AD| 00001230 52 20 72 30 2c 73 63 61 6e 72 65 67 73 3a 4c 44 |R r0,scanregs:LD| 00001240 4d 49 41 20 72 30 21 2c 7b 72 31 2d 72 31 34 7d |MIA r0!,{r1-r14}| 00001250 0d 09 a6 04 0d 09 b0 35 4d 4f 56 20 72 30 2c 23 |.......5MOV r0,#| 00001260 31 38 38 3a 4d 55 4c 20 72 31 2c 43 58 2c 42 57 |188:MUL r1,CX,BW| 00001270 3a 53 55 42 20 72 31 2c 72 31 2c 42 57 3a 41 44 |:SUB r1,r1,BW:AD| 00001280 44 20 72 31 2c 72 31 2c 58 0d 09 ba 1e 4d 55 4c |D r1,r1,X....MUL| 00001290 20 72 32 2c 43 59 2c 42 57 3a 53 57 49 20 22 4f | r2,CY,BW:SWI "O| 000012a0 53 5f 50 6c 6f 74 22 0d 09 c4 04 0d 09 ce 28 4d |S_Plot".......(M| 000012b0 4f 56 20 72 30 2c 23 31 38 38 3a 4d 55 4c 20 72 |OV r0,#188:MUL r| 000012c0 31 2c 43 58 2c 42 57 3a 41 44 44 20 72 31 2c 72 |1,CX,BW:ADD r1,r| 000012d0 31 2c 58 0d 09 d8 2b 4d 55 4c 20 72 32 2c 43 59 |1,X...+MUL r2,CY| 000012e0 2c 42 57 3a 41 44 44 20 72 32 2c 72 32 2c 42 57 |,BW:ADD r2,r2,BW| 000012f0 3a 53 57 49 20 22 4f 53 5f 50 6c 6f 74 22 0d 09 |:SWI "OS_Plot"..| 00001300 e2 04 0d 09 ec 35 4d 4f 56 20 72 30 2c 23 31 39 |.....5MOV r0,#19| 00001310 30 3a 4d 55 4c 20 72 31 2c 43 58 2c 42 57 3a 53 |0:MUL r1,CX,BW:S| 00001320 55 42 20 72 31 2c 72 31 2c 42 57 3a 41 44 44 20 |UB r1,r1,BW:ADD | 00001330 72 31 2c 72 31 2c 58 0d 09 f6 2b 41 44 44 20 72 |r1,r1,X...+ADD r| 00001340 31 2c 72 31 2c 53 54 3a 4d 55 4c 20 72 32 2c 43 |1,r1,ST:MUL r2,C| 00001350 59 2c 42 57 3a 53 57 49 20 22 4f 53 5f 50 6c 6f |Y,BW:SWI "OS_Plo| 00001360 74 22 0d 0a 00 04 0d 0a 0a 27 4d 4f 56 20 72 30 |t".......'MOV r0| 00001370 2c 23 34 3a 4d 55 4c 20 72 31 2c 43 58 2c 42 57 |,#4:MUL r1,CX,BW| 00001380 3a 53 55 42 20 72 31 2c 72 31 2c 42 57 0d 0a 14 |:SUB r1,r1,BW...| 00001390 2a 41 44 44 20 72 31 2c 72 31 2c 58 3a 4d 55 4c |*ADD r1,r1,X:MUL| 000013a0 20 72 32 2c 43 59 2c 42 57 3a 53 57 49 20 22 4f | r2,CY,BW:SWI "O| 000013b0 53 5f 50 6c 6f 74 22 0d 0a 1e 30 4d 4f 56 20 72 |S_Plot"...0MOV r| 000013c0 30 2c 23 39 37 3a 4d 4f 56 20 72 31 2c 53 54 3a |0,#97:MOV r1,ST:| 000013d0 4d 4f 56 20 72 32 2c 42 57 3a 53 57 49 20 22 4f |MOV r2,BW:SWI "O| 000013e0 53 5f 50 6c 6f 74 22 0d 0a 28 04 0d 0a 32 0e 41 |S_Plot"..(...2.A| 000013f0 44 44 20 58 2c 58 2c 53 54 0d 0a 3c 10 53 55 42 |DD X,X,ST..<.SUB| 00001400 20 72 30 2c 42 57 2c 23 31 0d 0a 46 0c 43 4d 50 | r0,BW,#1..F.CMP| 00001410 20 58 2c 72 30 0d 0a 50 0e 42 4c 45 20 6c 6f 6f | X,r0..P.BLE loo| 00001420 70 5f 33 0d 0a 5a 04 0d 0a 64 10 53 55 42 20 43 |p_3..Z...d.SUB C| 00001430 58 2c 43 58 2c 23 31 0d 0a 6e 13 53 54 52 20 43 |X,CX,#1..n.STR C| 00001440 58 2c 5b 72 31 30 2c 23 34 5d 0d 0a 78 04 0d 0a |X,[r10,#4]..x...| 00001450 82 08 2e 6f 75 74 0d 0a 8c 04 0d 0a 96 0f 41 44 |...out........AD| 00001460 52 20 72 30 2c 72 65 67 73 0d 0a a0 16 4c 44 4d |R r0,regs....LDM| 00001470 49 41 20 72 30 21 2c 7b 72 31 2d 72 31 34 7d 0d |IA r0!,{r1-r14}.| 00001480 0a aa 04 0d 0a b4 0e 4d 4f 56 20 50 43 2c 72 31 |.......MOV PC,r1| 00001490 34 0d 0a be 04 0d 0a c8 3d 2e 69 6e 69 74 20 3b |4.......=.init ;| 000014a0 20 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d | ---------------| 000014b0 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d |----------------| * 000014d0 2d 2d 0d 0a d2 3d 3b 2d 2d 2d 2d 2d 2d 2d 2d 2d |--...=;---------| 000014e0 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d |----------------| * 00001500 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0d |---------------.| 00001510 0a dc 04 0d 0a e6 04 0d 0a f0 23 4d 4f 56 20 72 |..........#MOV r| 00001520 31 31 2c 72 30 20 3b 20 72 31 31 20 3d 20 73 63 |11,r0 ; r11 = sc| 00001530 72 65 65 6e 20 77 69 64 74 68 0d 0a fa 24 4d 4f |reen width...$MO| 00001540 56 20 72 31 32 2c 72 31 20 3b 20 72 31 32 20 3d |V r12,r1 ; r12 =| 00001550 20 73 63 72 65 65 6e 20 68 65 69 67 68 74 0d 0b | screen height..| 00001560 04 04 0d 0b 0e 11 a4 61 64 72 28 31 30 2c 61 72 |.......adr(10,ar| 00001570 67 73 29 0d 0b 18 30 4c 44 52 20 72 35 2c 5b 72 |gs)...0LDR r5,[r| 00001580 31 30 2c 23 38 5d 20 3b 20 67 65 74 20 70 6c 69 |10,#8] ; get pli| 00001590 6e 74 68 20 6f 70 74 69 6f 6e 20 69 6e 74 6f 20 |nth option into | 000015a0 72 35 2e 0d 0b 22 2c 4c 44 52 20 72 33 2c 5b 72 |r5...",LDR r3,[r| 000015b0 31 30 5d 20 20 20 20 3b 20 67 65 74 20 62 6c 6f |10] ; get blo| 000015c0 63 6b 20 73 69 7a 65 20 69 6e 74 6f 20 72 33 0d |ck size into r3.| 000015d0 0b 2c 14 4d 4f 56 20 72 34 2c 72 31 32 2c 4c 53 |.,.MOV r4,r12,LS| 000015e0 52 23 32 0d 0b 36 0e 43 4d 50 53 20 72 33 2c 72 |R#2..6.CMPS r3,r| 000015f0 34 0d 0b 40 0f 4d 4f 56 47 54 20 72 33 2c 72 34 |4..@.MOVGT r3,r4| 00001600 0d 0b 4a 0f 43 4d 50 53 20 72 33 2c 23 31 32 0d |..J.CMPS r3,#12.| 00001610 0b 54 11 4d 4f 56 4c 45 20 72 33 2c 23 31 32 38 |.T.MOVLE r3,#128| 00001620 0d 0b 5e 3b 53 54 52 20 72 33 2c 5b 72 31 30 5d |..^;STR r3,[r10]| 00001630 20 20 20 20 3b 20 73 74 6f 72 65 20 61 75 74 6f | ; store auto| 00001640 20 76 61 6c 75 65 20 6f 66 20 77 69 64 74 68 20 | value of width | 00001650 69 66 20 74 6f 6f 20 62 69 67 2e 0d 0b 68 1b 4c |if too big...h.L| 00001660 44 52 20 72 34 2c 5b 72 31 30 2c 23 34 5d 20 3b |DR r4,[r10,#4] ;| 00001670 20 67 65 74 20 88 0d 0b 72 0d 43 4d 50 20 72 34 | get ...r.CMP r4| 00001680 2c 23 30 0d 0b 7c 0c ec 51 20 72 34 2c 23 31 0d |,#0..|..Q r4,#1.| 00001690 0b 86 28 53 54 52 45 51 20 72 34 2c 5b 72 31 30 |..(STREQ r4,[r10| 000016a0 2c 23 34 5d 20 3b 20 73 74 6f 72 65 20 73 74 65 |,#4] ; store ste| 000016b0 70 20 62 61 63 6b 2e 0d 0b 90 04 0d 0b 9a 10 41 |p back.........A| 000016c0 44 52 20 72 31 30 2c 76 61 72 73 0d 0b a4 34 53 |DR r10,vars...4S| 000016d0 54 52 20 72 33 2c 5b 72 31 30 5d 20 20 20 20 20 |TR r3,[r10] | 000016e0 3b 20 73 74 6f 72 65 20 62 6c 6f 63 6b 20 73 69 |; store block si| 000016f0 7a 65 20 69 6e 20 6d 79 20 73 74 6f 72 65 2e 0d |ze in my store..| 00001700 0b ae 3b 53 54 52 20 72 32 2c 5b 72 31 30 2c 23 |..;STR r2,[r10,#| 00001710 32 30 5d 20 3b 20 73 74 6f 72 65 20 6e 75 6d 62 |20] ; store numb| 00001720 65 72 20 6f 66 20 63 6f 6c 6f 75 72 73 20 69 6e |er of colours in| 00001730 20 6d 79 20 73 74 6f 72 65 2e 0d 0b b8 30 53 54 | my store....0ST| 00001740 52 20 72 34 2c 5b 72 31 30 2c 23 32 34 5d 20 3b |R r4,[r10,#24] ;| 00001750 20 73 74 6f 72 65 20 73 74 65 70 20 69 6e 74 6f | store step into| 00001760 20 6d 79 20 73 74 6f 72 65 2e 0d 0b c2 2a 53 54 | my store....*ST| 00001770 52 20 72 35 2c 5b 72 31 30 2c 23 32 38 5d 20 3b |R r5,[r10,#28] ;| 00001780 20 73 74 6f 72 65 20 70 6c 69 6e 74 68 20 76 61 | store plinth va| 00001790 6c 75 65 2e 0d 0b cc 04 0d 0b d6 35 3b 20 6f 6e |lue........5; on| 000017a0 20 65 6e 74 72 79 20 72 31 3d 6f 70 31 20 3b 20 | entry r1=op1 ; | 000017b0 72 32 3d 6f 70 32 20 3b 20 72 30 20 3d 20 72 65 |r2=op2 ; r0 = re| 000017c0 73 75 6c 74 20 6f 66 20 72 31 2f 72 32 0d 0b e0 |sult of r1/r2...| 000017d0 04 0d 0b ea 2b 4d 4f 56 20 72 31 2c 72 31 31 20 |....+MOV r1,r11 | 000017e0 3b 20 63 6f 70 79 20 73 63 72 65 65 6e 20 77 69 |; copy screen wi| 000017f0 64 74 68 20 66 6f 72 20 6f 70 31 2e 0d 0b f4 2a |dth for op1....*| 00001800 4d 4f 56 20 72 32 2c 72 33 20 20 3b 20 63 6f 70 |MOV r2,r3 ; cop| 00001810 79 20 62 6c 6f 63 6b 20 77 69 64 74 68 20 66 6f |y block width fo| 00001820 72 20 6f 70 32 2e 0d 0b fe 0d 4d 4f 56 20 72 30 |r op2.....MOV r0| 00001830 2c 23 30 0d 0c 08 0d 2e 64 69 76 6c 6f 6f 70 31 |,#0.....divloop1| 00001840 0d 0c 12 0d 43 4d 50 20 72 31 2c 23 30 0d 0c 1c |....CMP r1,#0...| 00001850 12 53 55 42 47 54 20 72 31 2c 72 31 2c 72 32 0d |.SUBGT r1,r1,r2.| 00001860 0c 26 12 41 44 44 47 54 20 72 30 2c 72 30 2c 23 |.&.ADDGT r0,r0,#| 00001870 31 0d 0c 30 10 42 47 54 20 64 69 76 6c 6f 6f 70 |1..0.BGT divloop| 00001880 31 0d 0c 3a 04 0d 0c 44 33 41 44 44 45 51 20 72 |1..:...D3ADDEQ r| 00001890 30 2c 72 30 2c 23 31 20 3b 20 69 66 20 61 6e 20 |0,r0,#1 ; if an | 000018a0 65 78 61 63 74 20 66 69 74 20 61 63 72 6f 73 73 |exact fit across| 000018b0 20 73 63 72 65 65 6e 2e 0d 0c 4e 04 0d 0c 58 37 | screen...N...X7| 000018c0 53 55 42 20 72 30 2c 72 30 2c 23 32 20 20 20 20 |SUB r0,r0,#2 | 000018d0 20 3b 20 72 30 20 6e 6f 77 20 65 71 75 61 6c 73 | ; r0 now equals| 000018e0 20 6e 6f 2e 20 6f 66 20 62 6c 6f 63 6b 73 20 69 | no. of blocks i| 000018f0 6e 20 58 0d 0c 62 34 53 54 52 20 72 30 2c 5b 72 |n X..b4STR r0,[r| 00001900 31 30 2c 23 31 32 5d 20 3b 20 73 74 6f 72 65 20 |10,#12] ; store | 00001910 74 68 69 73 20 76 61 6c 75 65 20 74 6f 20 6d 79 |this value to my| 00001920 20 73 74 6f 72 65 2e 0d 0c 6c 04 0d 0c 76 35 3b | store...l...v5;| 00001930 20 6f 6e 20 65 6e 74 72 79 20 72 31 3d 6f 70 31 | on entry r1=op1| 00001940 20 3b 20 72 32 3d 6f 70 32 20 3b 20 72 30 20 3d | ; r2=op2 ; r0 =| 00001950 20 72 65 73 75 6c 74 20 6f 66 20 72 31 2f 72 32 | result of r1/r2| 00001960 0d 0c 80 04 0d 0c 8a 2c 4d 4f 56 20 72 31 2c 72 |.......,MOV r1,r| 00001970 31 32 20 3b 20 63 6f 70 79 20 73 63 72 65 65 6e |12 ; copy screen| 00001980 20 68 65 69 67 68 74 20 66 6f 72 20 6f 70 31 2e | height for op1.| 00001990 0d 0c 94 2d 20 20 20 20 20 20 20 20 20 20 20 3b |...- ;| 000019a0 20 72 32 20 69 73 20 61 6c 72 65 61 64 79 20 77 | r2 is already w| 000019b0 69 64 74 68 20 66 6f 72 20 6f 70 32 2e 0d 0c 9e |idth for op2....| 000019c0 0d 4d 4f 56 20 72 30 2c 23 30 0d 0c a8 0d 2e 64 |.MOV r0,#0.....d| 000019d0 69 76 6c 6f 6f 70 32 0d 0c b2 0d 43 4d 50 20 72 |ivloop2....CMP r| 000019e0 31 2c 23 30 0d 0c bc 12 53 55 42 47 54 20 72 31 |1,#0....SUBGT r1| 000019f0 2c 72 31 2c 72 32 0d 0c c6 12 41 44 44 47 54 20 |,r1,r2....ADDGT | 00001a00 72 30 2c 72 30 2c 23 31 0d 0c d0 10 42 47 54 20 |r0,r0,#1....BGT | 00001a10 64 69 76 6c 6f 6f 70 32 0d 0c da 04 0d 0c e4 33 |divloop2.......3| 00001a20 41 44 44 45 51 20 72 30 2c 72 30 2c 23 31 20 3b |ADDEQ r0,r0,#1 ;| 00001a30 20 69 66 20 61 6e 20 65 78 61 63 74 20 66 69 74 | if an exact fit| 00001a40 20 61 63 72 6f 73 73 20 73 63 72 65 65 6e 2e 0d | across screen..| 00001a50 0c ee 04 0d 0c f8 37 53 55 42 20 72 30 2c 72 30 |......7SUB r0,r0| 00001a60 2c 23 32 20 20 20 20 20 3b 20 72 30 20 6e 6f 77 |,#2 ; r0 now| 00001a70 20 65 71 75 61 6c 73 20 6e 6f 2e 20 6f 66 20 62 | equals no. of b| 00001a80 6c 6f 63 6b 73 20 69 6e 20 59 0d 0d 02 34 53 54 |locks in Y...4ST| 00001a90 52 20 72 30 2c 5b 72 31 30 2c 23 31 36 5d 20 3b |R r0,[r10,#16] ;| 00001aa0 20 73 74 6f 72 65 20 74 68 69 73 20 76 61 6c 75 | store this valu| 00001ab0 65 20 74 6f 20 6d 79 20 73 74 6f 72 65 2e 0d 0d |e to my store...| 00001ac0 0c 04 0d 0d 16 2f 4d 4f 56 20 72 35 2c 72 32 20 |...../MOV r5,r2 | 00001ad0 20 20 20 20 20 20 20 3b 20 72 35 20 65 71 75 61 | ; r5 equa| 00001ae0 6c 73 20 77 69 64 74 68 20 6f 66 20 62 6c 6f 63 |ls width of bloc| 00001af0 6b 0d 0d 20 04 0d 0d 2a 1f 3b 20 63 68 65 63 6b |k.. ...*.; check| 00001b00 20 61 6e 64 20 73 65 74 20 73 74 65 70 20 76 61 | and set step va| 00001b10 6c 75 65 2e 0d 0d 34 04 0d 0d 3e 26 4d 4f 56 20 |lue...4...>&MOV | 00001b20 72 31 2c 72 35 20 20 20 20 20 20 20 20 3b 20 67 |r1,r5 ; g| 00001b30 65 74 20 62 6c 6f 63 6b 20 77 69 64 74 68 0d 0d |et block width..| 00001b40 48 26 4c 44 52 20 72 32 2c 5b 72 31 30 2c 23 32 |H&LDR r2,[r10,#2| 00001b50 34 5d 20 3b 20 6c 6f 61 64 20 73 74 65 70 20 76 |4] ; load step v| 00001b60 61 6c 75 65 0d 0d 52 04 0d 0d 5c 0d 43 4d 50 20 |alue..R...\.CMP | 00001b70 72 32 2c 23 30 0d 0d 66 0f 4d 4f 56 4c 45 20 72 |r2,#0..f.MOVLE r| 00001b80 32 2c 23 31 0d 0d 70 24 53 54 52 4c 45 20 72 32 |2,#1..p$STRLE r2| 00001b90 2c 5b 72 31 30 2c 23 32 34 5d 20 3b 20 73 74 6f |,[r10,#24] ; sto| 00001ba0 72 65 20 62 61 63 6b 2e 0d 0d 7a 04 0d 0d 84 0d |re back...z.....| 00001bb0 4d 4f 56 20 72 30 2c 23 30 0d 0d 8e 0d 2e 64 69 |MOV r0,#0.....di| 00001bc0 76 6c 6f 6f 70 33 0d 0d 98 0d 43 4d 50 20 72 31 |vloop3....CMP r1| 00001bd0 2c 23 30 0d 0d a2 12 53 55 42 47 54 20 72 31 2c |,#0....SUBGT r1,| 00001be0 72 31 2c 72 32 0d 0d ac 12 41 44 44 47 54 20 72 |r1,r2....ADDGT r| 00001bf0 30 2c 72 30 2c 23 31 0d 0d b6 10 42 47 54 20 64 |0,r0,#1....BGT d| 00001c00 69 76 6c 6f 6f 70 33 0d 0d c0 04 0d 0d ca 0e 43 |ivloop3........C| 00001c10 4d 50 53 20 72 31 2c 23 30 0d 0d d4 3b 53 54 52 |MPS r1,#0...;STR| 00001c20 4e 45 20 72 35 2c 5b 72 31 30 2c 23 32 34 5d 20 |NE r5,[r10,#24] | 00001c30 3b 20 69 66 20 73 74 65 70 20 6e 6f 74 20 61 20 |; if step not a | 00001c40 66 61 63 74 6f 72 2c 20 73 74 65 70 20 3d 20 77 |factor, step = w| 00001c50 69 64 74 68 0d 0d de 04 0d 0d e8 2d 4c 44 52 20 |idth.......-LDR | 00001c60 72 37 2c 5b 72 31 30 2c 23 32 30 5d 20 3b 20 67 |r7,[r10,#20] ; g| 00001c70 65 74 20 6e 75 6d 62 65 72 20 6f 66 20 63 6f 6c |et number of col| 00001c80 6f 75 72 73 2e 0d 0d f2 04 0d 0d fc 0e 43 4d 50 |ours.........CMP| 00001c90 20 72 37 2c 23 31 36 0d 0e 06 0f 42 4c 54 20 64 | r7,#16....BLT d| 00001ca0 6f 62 6c 61 63 6b 0d 0e 10 14 4c 44 52 20 72 36 |oblack....LDR r6| 00001cb0 2c 5b 72 31 30 2c 23 32 38 5d 0d 0e 1a 0d 43 4d |,[r10,#28]....CM| 00001cc0 50 20 72 36 2c 23 30 0d 0e 24 0f 42 45 51 20 64 |P r6,#0..$.BEQ d| 00001cd0 6f 62 6c 61 63 6b 0d 0e 2e 04 0d 0e 38 04 0d 0e |oblack......8...| 00001ce0 42 13 3b 20 64 72 61 77 20 74 68 65 20 67 72 69 |B.; draw the gri| 00001cf0 64 0d 0e 4c 04 0d 0e 56 11 41 44 44 20 72 38 2c |d..L...V.ADD r8,| 00001d00 72 31 32 2c 72 35 0d 0e 60 04 0d 0e 6a 0d 4d 4f |r12,r5..`...j.MO| 00001d10 56 20 72 34 2c 23 30 0d 0e 74 0b 2e 79 61 67 61 |V r4,#0..t..yaga| 00001d20 69 6e 0d 0e 7e 04 0d 0e 88 0e 53 57 49 20 32 35 |in..~.....SWI 25| 00001d30 36 2b 31 38 0d 0e 92 0e 43 4d 50 20 72 37 2c 23 |6+18....CMP r7,#| 00001d40 31 36 0d 0e 9c 0c ec 51 20 72 30 2c 23 32 0d 0e |16.....Q r0,#2..| 00001d50 a6 0f 4d 4f 56 47 54 20 72 30 2c 23 31 0d 0e b0 |..MOVGT r0,#1...| 00001d60 13 53 57 49 20 22 4f 53 5f 57 72 69 74 65 43 22 |.SWI "OS_WriteC"| 00001d70 0d 0e ba 0e 43 4d 50 20 72 37 2c 23 31 36 0d 0e |....CMP r7,#16..| 00001d80 c4 0c ec 51 20 72 30 2c 23 32 0d 0e ce 10 4d 4f |...Q r0,#2....MO| 00001d90 56 47 54 20 72 30 2c 23 34 32 0d 0e d8 13 53 57 |VGT r0,#42....SW| 00001da0 49 20 22 4f 53 5f 57 72 69 74 65 43 22 0d 0e e2 |I "OS_WriteC"...| 00001db0 04 0d 0e ec 33 4d 4f 56 20 72 30 2c 23 34 3a 20 |....3MOV r0,#4: | 00001dc0 4d 4f 56 20 72 31 2c 23 30 3a 53 55 42 20 72 32 |MOV r1,#0:SUB r2| 00001dd0 2c 72 34 2c 23 34 3a 53 57 49 20 22 4f 53 5f 50 |,r4,#4:SWI "OS_P| 00001de0 6c 6f 74 22 0d 0e f6 32 4d 4f 56 20 72 30 2c 23 |lot"...2MOV r0,#| 00001df0 39 37 3a 20 4d 4f 56 20 72 31 2c 72 31 31 3a 4d |97: MOV r1,r11:M| 00001e00 4f 56 20 72 32 2c 23 34 3a 53 57 49 20 22 4f 53 |OV r2,#4:SWI "OS| 00001e10 5f 50 6c 6f 74 22 0d 0f 00 04 0d 0f 0a 0e 53 57 |_Plot"........SW| 00001e20 49 20 32 35 36 2b 31 38 0d 0f 14 0e 43 4d 50 20 |I 256+18....CMP | 00001e30 72 37 2c 23 31 36 0d 0f 1e 0c ec 51 20 72 30 2c |r7,#16.....Q r0,| 00001e40 23 31 0d 0f 28 0f 4d 4f 56 47 54 20 72 30 2c 23 |#1..(.MOVGT r0,#| 00001e50 32 0d 0f 32 13 53 57 49 20 22 4f 53 5f 57 72 69 |2..2.SWI "OS_Wri| 00001e60 74 65 43 22 0d 0f 3c 0e 43 4d 50 20 72 37 2c 23 |teC"..<.CMP r7,#| 00001e70 31 36 0d 0f 46 0c ec 51 20 72 30 2c 23 32 0d 0f |16..F..Q r0,#2..| 00001e80 50 10 4d 4f 56 47 54 20 72 30 2c 23 34 32 0d 0f |P.MOVGT r0,#42..| 00001e90 5a 13 53 57 49 20 22 4f 53 5f 57 72 69 74 65 43 |Z.SWI "OS_WriteC| 00001ea0 22 0d 0f 64 04 0d 0f 6e 30 4d 4f 56 20 72 30 2c |"..d...n0MOV r0,| 00001eb0 23 34 3a 20 4d 4f 56 20 72 31 2c 23 30 3a 4d 4f |#4: MOV r1,#0:MO| 00001ec0 56 20 72 32 2c 72 34 3a 53 57 49 20 22 4f 53 5f |V r2,r4:SWI "OS_| 00001ed0 50 6c 6f 74 22 0d 0f 78 32 4d 4f 56 20 72 30 2c |Plot"..x2MOV r0,| 00001ee0 23 39 37 3a 20 4d 4f 56 20 72 31 2c 72 31 31 3a |#97: MOV r1,r11:| 00001ef0 4d 4f 56 20 72 32 2c 23 34 3a 53 57 49 20 22 4f |MOV r2,#4:SWI "O| 00001f00 53 5f 50 6c 6f 74 22 0d 0f 82 04 0d 0f 8c 10 41 |S_Plot"........A| 00001f10 44 44 20 72 34 2c 72 34 2c 72 35 0d 0f 96 0d 43 |DD r4,r4,r5....C| 00001f20 4d 50 20 72 34 2c 72 38 0d 0f a0 0e 42 4c 54 20 |MP r4,r8....BLT | 00001f30 79 61 67 61 69 6e 0d 0f aa 04 0d 0f b4 0d 4d 4f |yagain........MO| 00001f40 56 20 72 34 2c 23 30 0d 0f be 11 41 44 44 20 72 |V r4,#0....ADD r| 00001f50 38 2c 72 31 31 2c 72 35 0d 0f c8 0b 2e 78 61 67 |8,r11,r5.....xag| 00001f60 61 69 6e 0d 0f d2 04 0d 0f dc 0e 53 57 49 20 32 |ain........SWI 2| 00001f70 35 36 2b 31 38 0d 0f e6 0e 43 4d 50 20 72 37 2c |56+18....CMP r7,| 00001f80 23 31 36 0d 0f f0 0c ec 51 20 72 30 2c 23 31 0d |#16.....Q r0,#1.| 00001f90 0f fa 0f 4d 4f 56 47 54 20 72 30 2c 23 32 0d 10 |...MOVGT r0,#2..| 00001fa0 04 13 53 57 49 20 22 4f 53 5f 57 72 69 74 65 43 |..SWI "OS_WriteC| 00001fb0 22 0d 10 0e 0e 43 4d 50 20 72 37 2c 23 31 36 0d |"....CMP r7,#16.| 00001fc0 10 18 0c ec 51 20 72 30 2c 23 32 0d 10 22 10 4d |....Q r0,#2..".M| 00001fd0 4f 56 47 54 20 72 30 2c 23 34 32 0d 10 2c 13 53 |OVGT r0,#42..,.S| 00001fe0 57 49 20 22 4f 53 5f 57 72 69 74 65 43 22 0d 10 |WI "OS_WriteC"..| 00001ff0 36 04 0d 10 40 33 4d 4f 56 20 72 30 2c 23 34 3a |6...@3MOV r0,#4:| 00002000 20 4d 4f 56 20 72 32 2c 23 30 3a 53 55 42 20 72 | MOV r2,#0:SUB r| 00002010 31 2c 72 34 2c 23 34 3a 53 57 49 20 22 4f 53 5f |1,r4,#4:SWI "OS_| 00002020 50 6c 6f 74 22 0d 10 4a 32 4d 4f 56 20 72 30 2c |Plot"..J2MOV r0,| 00002030 23 39 37 3a 20 4d 4f 56 20 72 32 2c 72 31 32 3a |#97: MOV r2,r12:| 00002040 4d 4f 56 20 72 31 2c 23 34 3a 53 57 49 20 22 4f |MOV r1,#4:SWI "O| 00002050 53 5f 50 6c 6f 74 22 0d 10 54 04 0d 10 5e 0e 53 |S_Plot"..T...^.S| 00002060 57 49 20 32 35 36 2b 31 38 0d 10 68 0e 43 4d 50 |WI 256+18..h.CMP| 00002070 20 72 37 2c 23 31 36 0d 10 72 0c ec 51 20 72 30 | r7,#16..r..Q r0| 00002080 2c 23 32 0d 10 7c 0f 4d 4f 56 47 54 20 72 30 2c |,#2..|.MOVGT r0,| 00002090 23 31 0d 10 86 13 53 57 49 20 22 4f 53 5f 57 72 |#1....SWI "OS_Wr| 000020a0 69 74 65 43 22 0d 10 90 0e 43 4d 50 20 72 37 2c |iteC"....CMP r7,| 000020b0 23 31 36 0d 10 9a 0c ec 51 20 72 30 2c 23 32 0d |#16.....Q r0,#2.| 000020c0 10 a4 10 4d 4f 56 47 54 20 72 30 2c 23 34 32 0d |...MOVGT r0,#42.| 000020d0 10 ae 13 53 57 49 20 22 4f 53 5f 57 72 69 74 65 |...SWI "OS_Write| 000020e0 43 22 0d 10 b8 04 0d 10 c2 30 4d 4f 56 20 72 30 |C".......0MOV r0| 000020f0 2c 23 34 3a 20 4d 4f 56 20 72 32 2c 23 30 3a 4d |,#4: MOV r2,#0:M| 00002100 4f 56 20 72 31 2c 72 34 3a 53 57 49 20 22 4f 53 |OV r1,r4:SWI "OS| 00002110 5f 50 6c 6f 74 22 0d 10 cc 32 4d 4f 56 20 72 30 |_Plot"...2MOV r0| 00002120 2c 23 39 37 3a 20 4d 4f 56 20 72 32 2c 72 31 32 |,#97: MOV r2,r12| 00002130 3a 4d 4f 56 20 72 31 2c 23 34 3a 53 57 49 20 22 |:MOV r1,#4:SWI "| 00002140 4f 53 5f 50 6c 6f 74 22 0d 10 d6 04 0d 10 e0 10 |OS_Plot"........| 00002150 41 44 44 20 72 34 2c 72 34 2c 72 35 0d 10 ea 0d |ADD r4,r4,r5....| 00002160 43 4d 50 20 72 34 2c 72 38 0d 10 f4 0e 42 4c 54 |CMP r4,r8....BLT| 00002170 20 78 61 67 61 69 6e 0d 10 fe 04 0d 11 08 17 3b | xagain........;| 00002180 20 64 72 61 77 20 62 6c 61 63 6b 20 6c 69 6e 65 | draw black line| 00002190 73 2e 0d 11 12 04 0d 11 1c 0c 2e 64 6f 62 6c 61 |s..........dobla| 000021a0 63 6b 0d 11 26 04 0d 11 30 0e 53 57 49 20 32 35 |ck..&...0.SWI 25| 000021b0 36 2b 31 38 0d 11 3a 0d 4d 4f 56 20 72 30 2c 23 |6+18..:.MOV r0,#| 000021c0 30 0d 11 44 13 53 57 49 20 22 4f 53 5f 57 72 69 |0..D.SWI "OS_Wri| 000021d0 74 65 43 22 0d 11 4e 0f 43 4d 50 20 72 37 2c 23 |teC"..N.CMP r7,#| 000021e0 32 35 34 0d 11 58 0f 4d 4f 56 4c 54 20 72 30 2c |254..X.MOVLT r0,| 000021f0 23 37 0d 11 62 0f 4d 4f 56 47 45 20 72 30 2c 23 |#7..b.MOVGE r0,#| 00002200 30 0d 11 6c 13 53 57 49 20 22 4f 53 5f 57 72 69 |0..l.SWI "OS_Wri| 00002210 74 65 43 22 0d 11 76 04 0d 11 80 0d 4d 4f 56 20 |teC"..v.....MOV | 00002220 72 34 2c 23 30 0d 11 8a 0c 2e 79 32 61 67 61 69 |r4,#0.....y2agai| 00002230 6e 0d 11 94 04 0d 11 9e 32 4d 4f 56 20 72 30 2c |n.......2MOV r0,| 00002240 23 34 3a 20 4d 4f 56 20 72 31 2c 23 30 3a 20 4d |#4: MOV r1,#0: M| 00002250 4f 56 20 72 32 2c 72 34 3a 20 53 57 49 20 22 4f |OV r2,r4: SWI "O| 00002260 53 5f 50 6c 6f 74 22 0d 11 a8 33 4d 4f 56 20 72 |S_Plot"...3MOV r| 00002270 30 2c 23 35 3a 20 4d 4f 56 20 72 31 2c 72 31 31 |0,#5: MOV r1,r11| 00002280 3a 20 4d 4f 56 20 72 32 2c 72 34 3a 20 53 57 49 |: MOV r2,r4: SWI| 00002290 20 22 4f 53 5f 50 6c 6f 74 22 0d 11 b2 10 41 44 | "OS_Plot"....AD| 000022a0 44 20 72 34 2c 72 34 2c 72 35 0d 11 bc 0e 43 4d |D r4,r4,r5....CM| 000022b0 50 20 72 34 2c 72 31 32 0d 11 c6 0f 42 4c 54 20 |P r4,r12....BLT | 000022c0 79 32 61 67 61 69 6e 0d 11 d0 04 0d 11 da 0d 4d |y2again........M| 000022d0 4f 56 20 72 34 2c 23 30 0d 11 e4 0c 2e 78 32 61 |OV r4,#0.....x2a| 000022e0 67 61 69 6e 0d 11 ee 04 0d 11 f8 32 4d 4f 56 20 |gain.......2MOV | 000022f0 72 30 2c 23 34 3a 20 4d 4f 56 20 72 31 2c 72 34 |r0,#4: MOV r1,r4| 00002300 3a 20 4d 4f 56 20 72 32 2c 23 30 3a 20 53 57 49 |: MOV r2,#0: SWI| 00002310 20 22 4f 53 5f 50 6c 6f 74 22 0d 12 02 33 4d 4f | "OS_Plot"...3MO| 00002320 56 20 72 30 2c 23 35 3a 20 4d 4f 56 20 72 31 2c |V r0,#5: MOV r1,| 00002330 72 34 3a 20 4d 4f 56 20 72 32 2c 72 31 32 3a 20 |r4: MOV r2,r12: | 00002340 53 57 49 20 22 4f 53 5f 50 6c 6f 74 22 0d 12 0c |SWI "OS_Plot"...| 00002350 10 41 44 44 20 72 34 2c 72 34 2c 72 35 0d 12 16 |.ADD r4,r4,r5...| 00002360 0e 43 4d 50 20 72 34 2c 72 31 31 0d 12 20 0f 42 |.CMP r4,r11.. .B| 00002370 4c 54 20 78 32 61 67 61 69 6e 0d 12 2a 04 0d 12 |LT x2again..*...| 00002380 34 04 0d 12 3e 04 0d 12 48 27 3b 20 63 61 6c 63 |4...>...H'; calc| 00002390 75 6c 61 74 65 20 61 6e 64 20 73 74 6f 72 65 20 |ulate and store | 000023a0 68 6f 6c 65 20 70 6f 73 69 74 69 6f 6e 0d 12 52 |hole position..R| 000023b0 04 0d 12 5c 14 4c 44 52 20 72 30 2c 5b 72 31 30 |...\.LDR r0,[r10| 000023c0 2c 23 31 32 5d 0d 12 66 13 4d 4f 56 20 72 30 2c |,#12]..f.MOV r0,| 000023d0 72 30 2c 4c 53 52 23 31 0d 12 70 13 53 54 52 20 |r0,LSR#1..p.STR | 000023e0 72 30 2c 5b 72 31 30 2c 23 34 5d 0d 12 7a 04 0d |r0,[r10,#4]..z..| 000023f0 12 84 14 4c 44 52 20 72 30 2c 5b 72 31 30 2c 23 |...LDR r0,[r10,#| 00002400 31 36 5d 0d 12 8e 13 4d 4f 56 20 72 30 2c 72 30 |16]....MOV r0,r0| 00002410 2c 4c 53 52 23 31 0d 12 98 13 53 54 52 20 72 30 |,LSR#1....STR r0| 00002420 2c 5b 72 31 30 2c 23 38 5d 0d 12 a2 04 0d 12 ac |,[r10,#8].......| 00002430 21 3b 20 64 72 61 77 20 68 6f 6c 65 20 2d 20 62 |!; draw hole - b| 00002440 6c 61 63 6b 20 72 65 63 74 61 6e 67 6c 65 0d 12 |lack rectangle..| 00002450 b6 04 0d 12 c0 0d 4d 4f 56 20 72 30 2c 23 34 0d |......MOV r0,#4.| 00002460 12 ca 13 4c 44 52 20 72 34 2c 5b 72 31 30 2c 23 |...LDR r4,[r10,#| 00002470 34 5d 0d 12 d4 10 4d 55 4c 20 72 31 2c 72 34 2c |4]....MUL r1,r4,| 00002480 72 35 0d 12 de 13 4c 44 52 20 72 34 2c 5b 72 31 |r5....LDR r4,[r1| 00002490 30 2c 23 38 5d 0d 12 e8 10 4d 55 4c 20 72 32 2c |0,#8]....MUL r2,| 000024a0 72 34 2c 72 35 0d 12 f2 11 53 57 49 20 22 4f 53 |r4,r5....SWI "OS| 000024b0 5f 50 6c 6f 74 22 0d 12 fc 0e 4d 4f 56 20 72 30 |_Plot"....MOV r0| 000024c0 2c 23 39 37 0d 13 06 0d 4d 4f 56 20 72 31 2c 72 |,#97....MOV r1,r| 000024d0 35 0d 13 10 0d 4d 4f 56 20 72 32 2c 72 35 0d 13 |5....MOV r2,r5..| 000024e0 1a 11 53 57 49 20 22 4f 53 5f 50 6c 6f 74 22 0d |..SWI "OS_Plot".| 000024f0 13 24 04 0d 13 2e 0e 4d 4f 56 20 50 43 2c 72 31 |.$.....MOV PC,r1| 00002500 34 0d 13 38 04 0d 13 42 09 2e 76 61 72 73 0d 13 |4..8...B..vars..| 00002510 4c 17 45 51 55 44 20 30 20 3b 20 62 6c 6f 63 6b |L.EQUD 0 ; block| 00002520 20 73 69 7a 65 0d 13 56 22 45 51 55 44 20 30 20 | size..V"EQUD 0 | 00002530 3b 20 43 75 72 72 65 6e 74 20 58 2d 70 6f 73 20 |; Current X-pos | 00002540 6f 66 20 68 6f 6c 65 0d 13 60 22 45 51 55 44 20 |of hole..`"EQUD | 00002550 30 20 3b 20 43 75 72 72 65 6e 74 20 59 2d 70 6f |0 ; Current Y-po| 00002560 73 20 6f 66 20 68 6f 6c 65 0d 13 6a 27 45 51 55 |s of hole..j'EQU| 00002570 44 20 30 20 3b 20 4e 75 6d 62 65 72 20 6f 66 20 |D 0 ; Number of | 00002580 66 75 6c 6c 20 73 71 75 61 72 65 73 20 28 58 29 |full squares (X)| 00002590 0d 13 74 27 45 51 55 44 20 30 20 3b 20 4e 75 6d |..t'EQUD 0 ; Num| 000025a0 62 65 72 20 6f 66 20 66 75 6c 6c 20 73 71 75 61 |ber of full squa| 000025b0 72 65 73 20 28 59 29 0d 13 7e 1e 45 51 55 44 20 |res (Y)..~.EQUD | 000025c0 30 20 3b 20 6e 75 6d 62 65 72 20 6f 66 20 63 6f |0 ; number of co| 000025d0 6c 6f 75 72 73 0d 13 88 1c 45 51 55 44 20 30 20 |lours....EQUD 0 | 000025e0 3b 20 52 45 41 4c 20 73 74 65 70 20 76 61 6c 75 |; REAL step valu| 000025f0 65 0d 13 92 15 45 51 55 44 20 30 20 3b 20 70 6c |e....EQUD 0 ; pl| 00002600 69 6e 74 68 20 3f 0d 13 9c 04 0d 13 a6 0d 2e 73 |inth ?.........s| 00002610 63 61 6e 72 65 67 73 0d 13 b0 3b 45 51 55 44 20 |canregs...;EQUD | 00002620 30 3a 45 51 55 44 20 30 3a 45 51 55 44 20 30 3a |0:EQUD 0:EQUD 0:| 00002630 45 51 55 44 20 30 3a 45 51 55 44 20 30 3a 45 51 |EQUD 0:EQUD 0:EQ| 00002640 55 44 20 30 3a 45 51 55 44 20 30 3a 45 51 55 44 |UD 0:EQUD 0:EQUD| 00002650 20 30 0d 13 ba 3b 45 51 55 44 20 30 3a 45 51 55 | 0...;EQUD 0:EQU| 00002660 44 20 30 3a 45 51 55 44 20 30 3a 45 51 55 44 20 |D 0:EQUD 0:EQUD | 00002670 30 3a 45 51 55 44 20 30 3a 45 51 55 44 20 30 3a |0:EQUD 0:EQUD 0:| 00002680 45 51 55 44 20 30 3a 45 51 55 44 20 30 0d 13 c4 |EQUD 0:EQUD 0...| 00002690 04 0d 13 ce 09 2e 72 65 67 73 0d 13 d8 3b 45 51 |......regs...;EQ| 000026a0 55 44 20 30 3a 45 51 55 44 20 30 3a 45 51 55 44 |UD 0:EQUD 0:EQUD| 000026b0 20 30 3a 45 51 55 44 20 30 3a 45 51 55 44 20 30 | 0:EQUD 0:EQUD 0| 000026c0 3a 45 51 55 44 20 30 3a 45 51 55 44 20 30 3a 45 |:EQUD 0:EQUD 0:E| 000026d0 51 55 44 20 30 0d 13 e2 3b 45 51 55 44 20 30 3a |QUD 0...;EQUD 0:| 000026e0 45 51 55 44 20 30 3a 45 51 55 44 20 30 3a 45 51 |EQUD 0:EQUD 0:EQ| 000026f0 55 44 20 30 3a 45 51 55 44 20 30 3a 45 51 55 44 |UD 0:EQUD 0:EQUD| 00002700 20 30 3a 45 51 55 44 20 30 3a 45 51 55 44 20 30 | 0:EQUD 0:EQUD 0| 00002710 0d 13 ec 04 0d 13 f6 49 3b 2d 2d 2d 2d 2d 2d 2d |.......I;-------| 00002720 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d |----------------| * 00002750 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0d 14 00 |-------------...| 00002760 04 0d 14 0a 09 2e 53 63 61 6e 0d 14 14 3f 3b 20 |......Scan...?; | 00002770 6f 6e 20 72 65 74 75 72 6e 20 72 31 30 20 77 69 |on return r10 wi| 00002780 6c 6c 20 63 6f 6e 74 61 69 6e 20 31 20 3d 20 65 |ll contain 1 = e| 00002790 78 69 74 20 70 72 6f 67 2e 20 30 20 3d 20 64 6f |xit prog. 0 = do| 000027a0 6e 27 74 20 65 78 69 74 2e 0d 14 1e 04 0d 14 28 |n't exit.......(| 000027b0 31 53 57 49 20 22 4f 53 5f 4d 6f 75 73 65 22 3a |1SWI "OS_Mouse":| 000027c0 4d 4f 56 20 72 38 2c 72 30 3a 4d 4f 56 20 72 39 |MOV r8,r0:MOV r9| 000027d0 2c 72 31 3a 4d 4f 56 20 72 31 31 2c 72 32 0d 14 |,r1:MOV r11,r2..| 000027e0 32 4c 4d 4f 56 20 72 31 30 2c 23 30 3a 4d 4f 56 |2LMOV r10,#0:MOV| 000027f0 20 72 30 2c 23 31 32 31 3a 4d 4f 56 20 72 31 2c | r0,#121:MOV r1,| 00002800 23 30 3a 53 57 49 20 22 4f 53 5f 42 79 74 65 22 |#0:SWI "OS_Byte"| 00002810 3a 43 4d 50 53 20 72 31 2c 23 32 35 35 3a 4d 4f |:CMPS r1,#255:MO| 00002820 56 4e 45 20 72 31 30 2c 23 31 0d 14 3c 42 53 57 |VNE r10,#1..<BSW| 00002830 49 20 22 4f 53 5f 4d 6f 75 73 65 22 3a 43 4d 50 |I "OS_Mouse":CMP| 00002840 53 20 72 30 2c 72 38 3a 4d 4f 56 4e 45 20 72 31 |S r0,r8:MOVNE r1| 00002850 30 2c 23 31 3a 43 4d 50 53 20 72 31 2c 72 39 3a |0,#1:CMPS r1,r9:| 00002860 4d 4f 56 4e 45 20 72 31 30 2c 23 31 0d 14 46 1d |MOVNE r10,#1..F.| 00002870 43 4d 50 53 20 72 32 2c 72 31 31 3a 3a 4d 4f 56 |CMPS r2,r11::MOV| 00002880 4e 45 20 72 31 30 2c 23 31 0d 14 50 0e 4d 4f 56 |NE r10,#1..P.MOV| 00002890 20 50 43 2c 72 31 34 0d 14 5a 04 0d 14 64 49 3b | PC,r14..Z...dI;| 000028a0 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d |----------------| * 000028e0 2d 2d 2d 2d 0d 14 6e 04 0d 14 78 46 3b 2d 2d 2d |----..n...xF;---| 000028f0 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d |----------------| * 00002920 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0d 14 |--------------..| 00002930 82 04 0d 14 8c 21 2e 73 68 75 74 64 6f 77 6e 20 |.....!.shutdown | 00002940 3b 20 74 68 65 20 73 68 75 74 64 6f 77 6e 20 63 |; the shutdown c| 00002950 6f 64 65 0d 14 96 04 0d 14 a0 49 3b 2d 2d 2d 2d |ode.......I;----| 00002960 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d |----------------| * 000029a0 0d 14 aa 3c 3b 20 20 20 20 20 20 20 20 20 20 20 |...<; | 000029b0 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a |****************| * 000029d0 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 0d 14 b4 3c |************...<| 000029e0 3b 20 20 20 20 20 20 20 20 20 20 20 2a 2a 2a 20 |; *** | 000029f0 20 20 20 59 4f 55 52 20 53 48 55 54 44 4f 57 4e | YOUR SHUTDOWN| 00002a00 20 43 4f 44 45 20 53 54 41 52 54 53 20 48 45 52 | CODE STARTS HER| 00002a10 45 20 20 20 20 2a 2a 2a 0d 14 be 3c 3b 20 20 20 |E ***...<; | 00002a20 20 20 20 20 20 20 20 20 2a 2a 2a 2a 2a 2a 2a 2a | ********| 00002a30 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a |****************| * 00002a50 2a 2a 2a 2a 0d 14 c8 04 0d 14 d2 3a 3b 20 20 20 |****.......:; | 00002a60 20 20 20 20 20 20 20 20 20 62 6c 61 68 21 20 62 | blah! b| 00002a70 6c 61 68 21 20 62 6c 61 68 21 20 62 6c 61 68 21 |lah! blah! blah!| 00002a80 20 62 6c 61 68 21 20 62 6c 61 68 21 20 62 6c 61 | blah! blah! bla| 00002a90 68 21 0d 14 dc 04 0d 14 e6 3c 3b 20 20 20 20 20 |h!.......<; | 00002aa0 20 20 20 20 20 20 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a | **********| 00002ab0 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a |****************| * 00002ad0 2a 2a 0d 14 f0 3c 3b 20 20 20 20 20 20 20 20 20 |**...<; | 00002ae0 20 20 2a 2a 2a 20 20 20 20 20 59 4f 55 52 20 53 | *** YOUR S| 00002af0 48 55 54 44 4f 57 4e 20 43 4f 44 45 20 45 4e 44 |HUTDOWN CODE END| 00002b00 53 20 48 45 52 45 20 20 20 20 20 2a 2a 2a 0d 14 |S HERE ***..| 00002b10 fa 3c 3b 20 20 20 20 20 20 20 20 20 20 20 2a 2a |.<; **| 00002b20 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a |****************| * 00002b40 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 0d 15 04 49 3b 2d |**********...I;-| 00002b50 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d |----------------| * 00002b90 2d 2d 2d 0d 15 0e 24 4d 4f 56 20 50 43 2c 72 31 |---...$MOV PC,r1| 00002ba0 34 20 3b 20 65 78 69 74 20 73 68 75 74 64 6f 77 |4 ; exit shutdow| 00002bb0 6e 20 63 6f 64 65 2e 0d 15 18 04 0d 15 22 04 0d |n code......."..| 00002bc0 15 2c 04 0d 15 36 05 5d 0d 15 40 0a ed 20 70 61 |.,...6.]..@.. pa| 00002bd0 73 73 0d 15 4a 0e f1 20 50 25 2d 63 6f 64 65 25 |ss..J.. P%-code%| 00002be0 0d 15 54 08 41 24 3d be 0d 15 5e 05 e1 0d 15 68 |..T.A$=...^....h| 00002bf0 04 0d 15 72 0f dd 20 a4 61 64 72 28 72 2c 6c 29 |...r.. .adr(r,l)| 00002c00 0d 15 7c 09 70 25 3d 50 25 0d 15 86 0c e7 20 6c |..|.p%=P%..... l| 00002c10 3e 70 25 20 8c 0d 15 90 05 5b 0d 15 9a 1c 41 44 |>p% .....[....AD| 00002c20 44 20 72 2c 50 43 2c 23 28 6c 2d 70 25 2d 38 29 |D r,PC,#(l-p%-8)| 00002c30 83 20 26 31 30 30 0d 15 a4 21 41 44 44 20 72 2c |. &100...!ADD r,| 00002c40 72 2c 23 28 6c 2d 70 25 2d 38 29 20 81 20 26 31 |r,#(l-p%-8) . &1| 00002c50 30 30 3c 3c 38 3a 5d 0d 15 ae 05 cc 0d 15 b8 05 |00<<8:].........| 00002c60 5b 0d 15 c2 1c 53 55 42 20 72 2c 50 43 2c 23 28 |[....SUB r,PC,#(| 00002c70 70 25 2b 38 2d 6c 29 83 20 26 31 30 30 0d 15 cc |p%+8-l). &100...| 00002c80 20 53 55 42 20 72 2c 72 2c 23 28 70 25 2b 38 2d | SUB r,r,#(p%+8-| 00002c90 6c 29 81 20 26 31 30 30 3c 3c 38 3a 5d 0d 15 d6 |l). &100<<8:]...| 00002ca0 05 cd 0d 15 e0 07 3d 22 22 0d 15 ea 04 0d 15 f4 |......="".......| 00002cb0 33 f4 20 2d 20 42 41 53 49 43 20 56 45 52 53 49 |3. - BASIC VERSI| 00002cc0 4f 4e 20 57 48 49 43 48 20 57 41 53 20 54 52 41 |ON WHICH WAS TRA| 00002cd0 4e 53 4c 41 54 45 44 20 49 4e 54 4f 20 54 48 45 |NSLATED INTO THE| 00002ce0 0d 15 fe 1f f4 20 2d 20 41 42 4f 56 45 20 41 53 |..... - ABOVE AS| 00002cf0 53 45 4d 42 4c 59 20 43 4f 44 45 2e 20 3a 2d 0d |SEMBLY CODE. :-.| 00002d00 16 08 04 0d 16 12 0a 62 77 25 3d 36 34 0d 16 1c |.......bw%=64...| 00002d10 0b 73 74 65 70 25 3d 34 0d 16 26 04 0d 16 30 0b |.step%=4..&...0.| 00002d20 57 25 3d 31 32 38 30 0d 16 3a 0b 48 25 3d 31 30 |W%=1280..:.H%=10| 00002d30 32 34 0d 16 44 04 0d 16 4e 13 4e 42 58 25 3d 28 |24..D...N.NBX%=(| 00002d40 57 25 2f 62 77 25 29 2d 31 0d 16 58 13 4e 42 59 |W%/bw%)-1..X.NBY| 00002d50 25 3d 28 48 25 2f 62 77 25 29 2d 31 0d 16 62 04 |%=(H%/bw%)-1..b.| 00002d60 0d 16 6c 15 e3 20 59 25 3d 31 20 b8 20 48 25 20 |..l.. Y%=1 . H% | 00002d70 88 20 62 77 25 0d 16 76 0a ec 20 30 2c 59 25 0d |. bw%..v.. 0,Y%.| 00002d80 16 80 0b df 20 57 25 2c 59 25 0d 16 8a 08 ed 20 |.... W%,Y%..... | 00002d90 59 25 0d 16 94 15 e3 20 58 25 3d 31 20 b8 20 57 |Y%..... X%=1 . W| 00002da0 25 20 88 20 62 77 25 0d 16 9e 0a ec 20 58 25 2c |% . bw%..... X%,| 00002db0 30 0d 16 a8 0b df 20 58 25 2c 48 25 0d 16 b2 08 |0..... X%,H%....| 00002dc0 ed 20 58 25 0d 16 bc 04 0d 16 c6 04 0d 16 d0 0e |. X%............| 00002dd0 43 58 25 3d 4e 42 58 25 2f 32 0d 16 da 0e 43 59 |CX%=NBX%/2....CY| 00002de0 25 3d 4e 42 59 25 2f 32 0d 16 e4 04 0d 16 ee 21 |%=NBY%/2.......!| 00002df0 c8 93 20 c8 90 20 43 58 25 2a 62 77 25 2c 43 59 |.. .. CX%*bw%,CY| 00002e00 25 2a 62 77 25 2c 62 77 25 2c 62 77 25 0d 16 f8 |%*bw%,bw%,bw%...| 00002e10 04 0d 17 02 35 f4 20 2d 2d 2d 2d 2d 2d 2d 2d 2d |....5. ---------| 00002e20 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d |----------------| * 00002e40 2d 2d 2d 2d 2d 2d 0d 17 0c 04 0d 17 16 0c 52 25 |------........R%| 00002e50 3d b3 28 57 25 29 0d 17 20 04 0d 17 2a 0f 52 25 |=.(W%).. ...*.R%| 00002e60 3d 52 25 20 80 20 25 31 31 0d 17 34 04 0d 17 3e |=R% . %11..4...>| 00002e70 11 f4 20 52 25 3d 30 20 3e 20 74 6f 70 2e 0d 17 |.. R%=0 > top...| 00002e80 48 13 f4 20 52 25 3d 31 20 3e 20 72 69 67 68 74 |H.. R%=1 > right| 00002e90 2e 0d 17 52 14 f4 20 52 25 3d 32 20 3e 20 62 6f |...R.. R%=2 > bo| 00002ea0 74 74 6f 6d 2e 0d 17 5c 12 f4 20 52 25 3d 33 20 |ttom...\.. R%=3 | 00002eb0 3e 20 6c 65 66 74 2e 0d 17 66 04 0d 17 70 1c e7 |> left...f...p..| 00002ec0 20 52 25 3d 30 20 80 20 43 59 25 3d 4e 42 59 25 | R%=0 . CY%=NBY%| 00002ed0 20 8c 20 52 25 3d 32 0d 17 7a 19 e7 20 52 25 3d | . R%=2..z.. R%=| 00002ee0 32 20 80 20 43 59 25 3d 30 20 8c 20 52 25 3d 30 |2 . CY%=0 . R%=0| 00002ef0 0d 17 84 04 0d 17 8e 1c e7 20 52 25 3d 31 20 80 |......... R%=1 .| 00002f00 20 43 58 25 3d 4e 42 58 25 20 8c 20 52 25 3d 33 | CX%=NBX% . R%=3| 00002f10 0d 17 98 19 e7 20 52 25 3d 33 20 80 20 43 58 25 |..... R%=3 . CX%| 00002f20 3d 30 20 8c 20 52 25 3d 31 0d 17 a2 04 0d 17 ac |=0 . R%=1.......| 00002f30 0c e7 20 52 25 3d 30 20 8c 0d 17 b6 1a e3 20 79 |.. R%=0 ...... y| 00002f40 25 3d 30 20 b8 20 62 77 25 2d 31 20 88 20 73 74 |%=0 . bw%-1 . st| 00002f50 65 70 25 0d 17 c0 2d c8 99 20 22 4f 53 5f 50 6c |ep%...-.. "OS_Pl| 00002f60 6f 74 22 2c 31 38 38 2c 43 58 25 2a 62 77 25 2c |ot",188,CX%*bw%,| 00002f70 28 43 59 25 2a 62 77 25 29 2b 62 77 25 2d 79 25 |(CY%*bw%)+bw%-y%| 00002f80 0d 17 ca 37 c8 99 20 22 4f 53 5f 50 6c 6f 74 22 |...7.. "OS_Plot"| 00002f90 2c 31 38 38 2c 28 43 58 25 2a 62 77 25 29 2b 62 |,188,(CX%*bw%)+b| 00002fa0 77 25 2c 28 43 59 25 2a 62 77 25 29 2b 62 77 25 |w%,(CY%*bw%)+bw%| 00002fb0 2b 62 77 25 2d 79 25 0d 17 d4 33 c8 99 20 22 4f |+bw%-y%...3.. "O| 00002fc0 53 5f 50 6c 6f 74 22 2c 31 39 30 2c 43 58 25 2a |S_Plot",190,CX%*| 00002fd0 62 77 25 2c 28 43 59 25 2a 62 77 25 29 2b 62 77 |bw%,(CY%*bw%)+bw| 00002fe0 25 2d 79 25 2d 73 74 65 70 25 0d 17 de 36 c8 93 |%-y%-step%...6..| 00002ff0 20 c8 90 20 43 58 25 2a 62 77 25 2c 28 43 59 25 | .. CX%*bw%,(CY%| 00003000 2a 62 77 25 29 2b 62 77 25 2d 79 25 2b 62 77 25 |*bw%)+bw%-y%+bw%| 00003010 2d 73 74 65 70 25 2c 62 77 25 2c 73 74 65 70 25 |-step%,bw%,step%| 00003020 0d 17 e8 08 ed 20 79 25 0d 17 f2 0a 43 59 25 2b |..... y%....CY%+| 00003030 3d 31 0d 17 fc 05 cd 0d 18 06 04 0d 18 10 0c e7 |=1..............| 00003040 20 52 25 3d 32 20 8c 0d 18 1a 1a e3 20 79 25 3d | R%=2 ...... y%=| 00003050 30 20 b8 20 62 77 25 2d 31 20 88 20 73 74 65 70 |0 . bw%-1 . step| 00003060 25 0d 18 24 2d c8 99 20 22 4f 53 5f 50 6c 6f 74 |%..$-.. "OS_Plot| 00003070 22 2c 31 38 38 2c 43 58 25 2a 62 77 25 2c 28 43 |",188,CX%*bw%,(C| 00003080 59 25 2a 62 77 25 29 2d 62 77 25 2b 79 25 0d 18 |Y%*bw%)-bw%+y%..| 00003090 2e 2f c8 99 20 22 4f 53 5f 50 6c 6f 74 22 2c 31 |./.. "OS_Plot",1| 000030a0 38 38 2c 28 43 58 25 2a 62 77 25 29 2b 62 77 25 |88,(CX%*bw%)+bw%| 000030b0 2c 28 43 59 25 2a 62 77 25 29 2b 79 25 0d 18 38 |,(CY%*bw%)+y%..8| 000030c0 33 c8 99 20 22 4f 53 5f 50 6c 6f 74 22 2c 31 39 |3.. "OS_Plot",19| 000030d0 30 2c 43 58 25 2a 62 77 25 2c 28 43 59 25 2a 62 |0,CX%*bw%,(CY%*b| 000030e0 77 25 29 2d 62 77 25 2b 79 25 2b 73 74 65 70 25 |w%)-bw%+y%+step%| 000030f0 0d 18 42 2c c8 93 20 c8 90 20 43 58 25 2a 62 77 |..B,.. .. CX%*bw| 00003100 25 2c 28 43 59 25 2a 62 77 25 29 2d 62 77 25 2b |%,(CY%*bw%)-bw%+| 00003110 79 25 2c 62 77 25 2c 73 74 65 70 25 0d 18 4c 08 |y%,bw%,step%..L.| 00003120 ed 20 79 25 0d 18 56 0a 43 59 25 2d 3d 31 0d 18 |. y%..V.CY%-=1..| 00003130 60 05 cd 0d 18 6a 04 0d 18 74 0c e7 20 52 25 3d |`....j...t.. R%=| 00003140 31 20 8c 0d 18 7e 1a e3 20 78 25 3d 30 20 b8 20 |1 ...~.. x%=0 . | 00003150 62 77 25 2d 31 20 88 20 73 74 65 70 25 0d 18 88 |bw%-1 . step%...| 00003160 2d c8 99 20 22 4f 53 5f 50 6c 6f 74 22 2c 31 38 |-.. "OS_Plot",18| 00003170 38 2c 28 43 58 25 2a 62 77 25 29 2b 62 77 25 2d |8,(CX%*bw%)+bw%-| 00003180 78 25 2c 43 59 25 2a 62 77 25 0d 18 92 37 c8 99 |x%,CY%*bw%...7..| 00003190 20 22 4f 53 5f 50 6c 6f 74 22 2c 31 38 38 2c 28 | "OS_Plot",188,(| 000031a0 43 58 25 2a 62 77 25 29 2b 62 77 25 2b 62 77 25 |CX%*bw%)+bw%+bw%| 000031b0 2d 78 25 2c 28 43 59 25 2a 62 77 25 29 2b 62 77 |-x%,(CY%*bw%)+bw| 000031c0 25 0d 18 9c 33 c8 99 20 22 4f 53 5f 50 6c 6f 74 |%...3.. "OS_Plot| 000031d0 22 2c 31 39 30 2c 28 43 58 25 2a 62 77 25 29 2b |",190,(CX%*bw%)+| 000031e0 62 77 25 2d 78 25 2d 73 74 65 70 25 2c 43 59 25 |bw%-x%-step%,CY%| 000031f0 2a 62 77 25 0d 18 a6 36 c8 93 20 c8 90 20 28 43 |*bw%...6.. .. (C| 00003200 58 25 2a 62 77 25 29 2b 62 77 25 2b 62 77 25 2d |X%*bw%)+bw%+bw%-| 00003210 78 25 2d 73 74 65 70 25 2c 43 59 25 2a 62 77 25 |x%-step%,CY%*bw%| 00003220 2c 73 74 65 70 25 2c 62 77 25 0d 18 b0 08 ed 20 |,step%,bw%..... | 00003230 78 25 0d 18 ba 0a 43 58 25 2b 3d 31 0d 18 c4 05 |x%....CX%+=1....| 00003240 cd 0d 18 ce 04 0d 18 d8 0c e7 20 52 25 3d 33 20 |.......... R%=3 | 00003250 8c 0d 18 e2 1a e3 20 78 25 3d 30 20 b8 20 62 77 |...... x%=0 . bw| 00003260 25 2d 31 20 88 20 73 74 65 70 25 0d 18 ec 2d c8 |%-1 . step%...-.| 00003270 99 20 22 4f 53 5f 50 6c 6f 74 22 2c 31 38 38 2c |. "OS_Plot",188,| 00003280 28 43 58 25 2a 62 77 25 29 2d 62 77 25 2b 78 25 |(CX%*bw%)-bw%+x%| 00003290 2c 43 59 25 2a 62 77 25 0d 18 f6 2d c8 99 20 22 |,CY%*bw%...-.. "| 000032a0 4f 53 5f 50 6c 6f 74 22 2c 31 38 38 2c 43 58 25 |OS_Plot",188,CX%| 000032b0 2a 62 77 25 2b 78 25 2c 28 43 59 25 2a 62 77 25 |*bw%+x%,(CY%*bw%| 000032c0 29 2b 62 77 25 0d 19 00 33 c8 99 20 22 4f 53 5f |)+bw%...3.. "OS_| 000032d0 50 6c 6f 74 22 2c 31 39 30 2c 28 43 58 25 2a 62 |Plot",190,(CX%*b| 000032e0 77 25 29 2d 62 77 25 2b 78 25 2b 73 74 65 70 25 |w%)-bw%+x%+step%| 000032f0 2c 43 59 25 2a 62 77 25 0d 19 0a 2c c8 93 20 c8 |,CY%*bw%...,.. .| 00003300 90 20 28 43 58 25 2a 62 77 25 29 2d 62 77 25 2b |. (CX%*bw%)-bw%+| 00003310 78 25 2c 43 59 25 2a 62 77 25 2c 73 74 65 70 25 |x%,CY%*bw%,step%| 00003320 2c 62 77 25 0d 19 14 08 ed 20 78 25 0d 19 1e 0a |,bw%..... x%....| 00003330 43 58 25 2d 3d 31 0d 19 28 05 cd 0d 19 32 04 0d |CX%-=1..(....2..| 00003340 19 3c 0a e5 20 8d 54 56 57 0d 19 46 05 e0 0d 19 |.<.. .TVW..F....| 00003350 50 04 0d ff |P...| 00003354