Home » Archimedes archive » Acorn User » AU 1997-12.adf » Regulars » StarInfo/Smale/!TUNNL/ARMTUNL7

StarInfo/Smale/!TUNNL/ARMTUNL7

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 1997-12.adf » Regulars
Filename: StarInfo/Smale/!TUNNL/ARMTUNL7
Read OK:
File size: 3711 bytes
Load address: 0000
Exec address: 0000
File contents
   10MODE0:OFF
   20A%=RND(-TIME)
   30NT%=16
   40DIM P%(15),T%(255)
   50
   60ON ERROR REPORT:PRINT" at line ";ERL:END
   70INPUT'"  RiscPC Mode? (Y/N)"
   80REPEAT G$=GET$:UNTIL INSTR("YyNn",G$)
   90IF INSTR("Yy",G$) mode49%=-1 ELSE mode49%=0
  100fast%=0
  110TIME=0:FOR I%=0 TO 40960:NEXT:A%=TIME
  120IF A%<25 fast%=-1
  130
  140PROCcols
  150PROCsetup
  160screen=12
  170sp=13
  180link=14
  190x=60
  200y=30
  210
  220xmove=1
  230ymove=1
  240
  250PROCass66
  260CLS
  270COLOUR 1,0,0,0
  280PRINTTAB(32,8);"Welcome to Tunnl!"
  290PRINTTAB(20,11);"Code and original design by Edward Smale"
  300PRINTTAB(20,13);"    Additional design by Daniel Shaw"
  310PRINTTAB(34,28);"Please wait..."
  320
  330PROCfadein
  340
  350OSCLI("LOAD <ed$dir>.POSDATA"+" "+STR$~(code+1024*16))
  360PROCsloadB
  370PROCfadeout
  380
  390REPEAT
  400MODE0:OFF
  410COLOUR 1,0,0,0
  420PRINTTAB(12,1);"  Welcome to Tunnl!"
  430PRINT'"    Please choose your preferred texture."'
  440PRINT "  Press G for Granite texture,"
  450PRINT "  Press K for Kaleidoscope texture,"
  460PRINT "  Press P for Plasma texture,"
  470PRINT "  Press S to load a mode 13 Sprite file from ramdisc,"
  480PRINT "  Press T to create a tiled pattern with a mode13 Sprite file from ramdisc,"
  490PRINT "  Press B to use a built-in tiling texture."
  500PROCfadein
  510
  520REPEAT
  530G$=GET$
  540UNTIL INSTR("GgKkSsPpTtBb",G$)
  550
  560CLS
  570kali%=0
  580IF INSTR("Pp",G$) plasma%=-1:PROCplasma:PROCenable(3,plasmado%) ELSE plasma%=0:PROCdisable(3,plasmado%)
  590
  600IF G$="G" OR G$="g" PROCgraniteproc
  610IF G$="S" OR G$="s" OSCLI"RAM":INPUT'"Filename: "F$:OSCLI("SCREENLOAD "+F$)
  620IF G$="K" OR G$="k" THEN
  630PROCpic
  640IF fast% PROCenable(2,kalislower%)
  650ELSE
  660PROCdisable(2,kalislower%)
  670ENDIF
  680
  690IF G$="T" OR G$="t" PROCtiled
  700IF G$="B" OR G$="b" PROCbtiled
  710
  720MOUSEOFF
  730CALL grabsprite
  740MODE0:OFF
  750PRINTTAB(28,28);"Press SPACE to finish..."
  760A%=INKEY(100)
  770IF mode49% MODE49:OFF ELSE MODE13:OFF
  780CALL init
  790UNTIL 0
  800
  810DEFPROCgraniteproc
  820MODE13:OFF
  830CS%=FNchoose
  840PRINTTAB(14,29);"Please wait..."
  850DIM code2 1024+16
  860ONERRORREPORT:PRINT" at line ";ERL:END
  870PROCcolsg
  880link=14
  890sp=13
  900screen=12
  910FORpass=0TO2STEP2
  920P%=code2
  930[OPT pass
  940.granite STMFD (sp)!,{link}
  950LDR screen,scrn%
  960MOV R1,#253
  970.yloopg MOV R0,#1
  980.xloopg ADD R2,R0,R1,LSL#6
  990ADD R2,R2,R1,LSL#8
 1000ADD R2,R2,screen
 1010SUB R2,R2,#4
 1020LDRB R4,[R2,#0]
 1030LDRB R3,[R2,#320*2]
 1040ADD R4,R4,R3
 1050ADD R2,R2,#2
 1060LDRB R3,[R2,#320]
 1070ADD R4,R4,R3
 1080ADD R2,R2,#2
 1090LDRB R3,[R2,#320*2]
 1100ADD R4,R4,R3
 1110MOV R4,R4,LSL#8-2
 1120BL rnd
 1130SUB R7,R7,#113
 1140ADD R4,R4,R7,ASL#3
 1150CMP R4,#0
 1160LDRLT R4,oldcol%
 1170BLT maus
 1180MOVGE R4,R4,ASR#8
 1190AND R4,R4,#%1111
 1200STRLT R4,oldcol%
 1210.maus SUB R2,R2,#1
 1220STRB R4,[R2,#0]
 1230ADD R0,R0,#2
 1240CMP R0,#320
 1250SUBLE R0,R0,#1
 1260BLE xloopg
 1270SUB R1,R1,#1
 1280CMP R1,#1
 1290BGT yloopg
 1300
 1310MOV R0,screen
 1320ADD R1,R0,#64
 1330ADD R2,R0,#81920/2
 1340SUB R2,R2,#64
 1350.movelp LDMIA R1!,{R3-R10}
 1360STMIA R0!,{R3-R10}
 1370CMP R1,R2
 1380BLT movelp
 1390LDMFD (sp)!,{PC}
 1400
 1410.granite2 STMFD (sp)!,{link}
 1420LDR screen,scrn%
 1430MOV R5,#320
 1440ADD R5,R5,#1
 1450MOV R1,#252
 1460.yloopg2 MOV R0,#320-128
 1470.xloopg2 ADD R2,R0,R1,LSL#6
 1480ADD R2,R2,R1,LSL#8
 1490ADD R2,R2,screen
 1500SUB R2,R2,#4
 1510LDRB R4,[R2,#0]
 1520LDRB R3,[R2,#320*2]
 1530ADD R4,R4,R3
 1540ADD R2,R2,#2
 1550LDRB R3,[R2,#320]
 1560ADD R4,R4,R3
 1570ADD R2,R2,#2
 1580LDRB R3,[R2,#320*2]
 1590ADD R4,R4,R3
 1600MOV R4,R4,LSL#8-2
 1610BL rnd
 1620SUB R7,R7,#113
 1630ADD R4,R4,R7,ASL#3
 1640CMP R4,#0
 1650LDRLT R4,oldcol%
 1660BLT maus2
 1670MOVGE R4,R4,ASR#8
 1680AND R4,R4,#%1111
 1690STRLT R4,oldcol%
 1700.maus2 SUB R2,R2,#1
 1710STRB R4,[R2,#0]
 1720ADD R0,R0,#2
 1730CMP R0,R5
 1740SUBLE R0,R0,#1
 1750BLE xloopg2
 1760SUB R1,R1,#1
 1770CMP R1,#1
 1780BGT yloopg2
 1790
 1800.smudge LDR R1,otherscrn
 1810MOV R0,screen
 1820ADD R1,R1,#1
 1830ADD R0,R0,#320
 1840ADD R1,R1,#320
 1850ADD R11,R0,#81920
 1860SUB R11,R11,#1
 1870SUB R11,R11,#320*2
 1880
 1890.smudgelp LDRB R2,[R0,#0]
 1900LDRB R3,[R0,#1]
 1910LDRB R4,[R0,#2]
 1920SUB R0,R0,#320
 1930ADD R0,R0,#1
 1940LDRB R5,[R0],#640
 1950LDRB R6,[R0,#0]
 1960SUB R0,R0,#320
 1970SUB R0,R0,#1
 1980ADD R3,R3,R2
 1990ADD R3,R3,R4
 2000ADD R3,R3,R5
 2010ADD R3,R3,R6
 2020MOV R7,#14
 2030MUL R2,R3,R7
 2040MOV R2,R2,LSR#6
 2050STRB R2,[R1],#1
 2060ADD R0,R0,#1
 2070CMP R0,R11
 2080BLT smudgelp
 2090
 2100.nosmudge
 2110LDR R1,otherscrn
 2120ADD R1,R1,#320
 2130ADD R0,screen,#320
 2140ADD R11,R0,#81920
 2150SUB R11,R11,#640
 2160.copyloopg LDMIA R1!,{R2-R9}
 2170STMIA R0!,{R2-R9}
 2180CMP R0,R11
 2190BLT copyloopg
 2200LDR R0,counter
 2210CMP R0,#2
 2220ADDLE R0,R0,#1
 2230STRLE R0,counter
 2240BLE smudge
 2250
 2260LDR R5,coldata
 2270MOV R0,screen
 2280ADD R1,R0,#81920
 2290.changelp LDRB R2,[R0,#0]
 2300LDRB R6,[R5,R2]
 2310STRB R6,[R0],#1
 2320CMP R0,R1
 2330BLT changelp
 2340.fini LDMFD (sp)!,{PC}
 2350.coldata EQUD code2+1024
 2360.oldcol% EQUD 0
 2370.scrn%   EQUD  screen%
 2380.otherscrn EQUD code+1024*16+81920
 2390.counter EQUD 1
 2400.rnd LDR R7,seed
 2410LDR R8,c1
 2420LDR R9,c2
 2430MLA R7,R8,R7,R9
 2440MLA R10,R8,R7,R9
 2450STR R10,seed
 2460EOR R7,R7,R10,ROR#16
 2470MOV R8,#256
 2480SUB R8,R8,#1
 2490AND R7,R7,R8
 2500MOV PC,R14
 2510.c1 EQUD 1664525
 2520.c2 EQUD 907633393
 2530.seed EQUD TIME
 2540.rnd%EQUD 0
 2550]
 2560NEXT
 2570
 2580CALLgranite
 2590GCOL 0 TINT 0
 2600RECTANGLEFILL 1280-64*4,0,256,1023
 2610CALL granite2
 2620RECTANGLEFILL 0,1024,1279,-12
 2630POINT 0,1023
 2640ENDPROC
 2650
 2660DEFPROCcolsg
 2670data%=code2+1024
 2680FORI%=0TO15
 2690data%?I%=COL%(CS%,I%)
 2700NEXT
 2710ENDPROC
 2720
 2730DEFPROCsetup
 2740PROCscrn
 2750DIM code 1024*16+81920*2
 2760ENDPROC
 2770
 2780DEFPROCcols
 2790DIM R(7),G(7),B(7)
 2800FOR I%=0 TO 6
 2810READ R(I%),G(I%),B(I%)
 2820NEXT
 2830
 2840DIM COL%(7,15)
 2850FOR J%=0 TO 7
 2860FOR C%=0 TO 15
 2870READ COL%(J%,C%)
 2880NEXT:NEXT
 2890DIM C%(255)
 2900
 2910DIM cols 256
 2920
 2930
 2940ENDPROC
 2950
 2960DEFPROCscrn
 2970DIM block% 15,b2% 15
 2980block%!0=148
 2990block%!4=7
 3000block%!8=6
 3010block%!12=-1
 3020SYS "OS_ReadVduVariables",block%,b2%
 3030screen%=b2%!0
 3040ENDPROC
 3050
 3060DATA 1,0.5,0.5
 3070DATA 1,1,0.5
 3080DATA 0.5,1,0.5
 3090DATA 0.5,1,1
 3100DATA 0.5,0.5,1
 3110DATA 1,0.5,1
 3120DATA 1,1,1
 3130
 3140DATA 0,0,1,2,4,5,6,7,16,17,18,19,60,61,62,63
 3150DATA 0,0,1,2,36,37,38,39,80,81,82,83,244,245,246,247
 3160DATA 0,0,1,2,32,33,34,35,76,77,78,79,240,241,242,243
 3170DATA 0,1,2,3,40,41,42,43,196,197,198,199,248,249,250,251
 3180DATA 0,0,1,2, 8,9,10,11, 164,165,166,167, 216,217,218,219
 3190DATA 0,0,1,2,8,9,10,11,132,133,134,135,184,185,186,187
 3200DATA 0,1,2,3,44,45,46,47,208,209,210,211,252,253,254,255
 3210DATA 0,1,2,3,44,45,46,47,208,209,210,211,252,253,254,255
 3220
 3230DEFPROCpic
 3240MODE13:OFF
 3250PRINTTAB(14,29);"Please wait..."
 3260
 3270A%=screen%
 3280CS%=-1
 3290DCS%=1
 3300FOR YY%=0 TO 128*7-1 STEP 128
 3310CS%+=DCS%
 3320IF CS%=4 DCS%=-1
 3330FOR Y%=YY% TO YY%+128 STEP 4
 3340
 3350FOR C%=0 TO 15
 3360P%(C%)=16/(( (16*(SIN(Y%/128*PI)^2) -C%)^4)+1)
 3370NEXT
 3380
 3390T%=0
 3400C%=0
 3410REPEAT
 3420
 3430WHILE P%(C%)>0
 3440P%(C%)-=1
 3450T%(T%)=C%
 3460T%+=1
 3470ENDWHILE
 3480C%+=1
 3490UNTIL C%=16
 3500N%=T%-1
 3510
 3520FOR X%=0 TO 31
 3530C%=COL%(CS%,T%(RND(N%)))
 3540IF C%>0 C%-=RND(1)
 3550?A%=C%
 3560A%+=1
 3570NEXT
 3580A%-=32
 3590A%+=320
 3600NEXT
 3610NEXT
 3620
 3630FOR XX%=0 TO 9*32-1 STEP 32
 3640A%=screen%
 3650
 3660FOR Y%=0 TO 255
 3670FOR X%=0 TO 7
 3680!(A%+XX%)=!A%
 3690A%+=4
 3700NEXT
 3710A%-=32
 3720A%+=320
 3730NEXT
 3740
 3750NEXT
 3760
 3770XX%=RND(2)*4
 3780YY%=RND(2)*4
 3790DA=PI/RND(16)
 3800
 3810FOR J%=1 TO 3+RND(3)
 3820A=0
 3830C%=0
 3840FOR I%=0 TO 1279 STEP XX%
 3850RECTANGLEFILL I%,0,XX%,1023 TO I%,XX%*SIN(A)
 3860A+=DA
 3870IF A>2*PI A=0
 3880NEXT
 3890C%=0
 3900A=0
 3910FOR I%=0 TO 1023 STEP YY%
 3920RECTANGLEFILL 0,I%,1279,YY% TO YY%*SIN(A),I%
 3930A+=DA
 3940IF A>2*PI A=0
 3950NEXT
 3960
 3970RECTANGLEFILL 0,0,1275,1023 TO 4,0
 3980NEXT
 3990
 4000A%=screen%
 4010FOR Y%=0 TO 255
 4020FOR X%=0 TO 79
 4030?A%=?(A%+160)
 4040A%+=1
 4050NEXT
 4060A%-=80
 4070A%+=320
 4080NEXT
 4090
 4100FOR XX%=80 TO 3*80 STEP 80
 4110A%=screen%
 4120
 4130FOR Y%=0 TO 255
 4140FOR X%=0 TO 19
 4150!(A%+XX%)=!A%
 4160A%+=4
 4170NEXT
 4180A%-=80
 4190A%+=320
 4200NEXT
 4210
 4220NEXT
 4230ENDPROC
 4240
 4250DEFPROCplasma
 4260MODE13:OFF
 4270CS%=FNchoose
 4280C%=0
 4290FOR I%=0 TO 255
 4300SYS "ColourTrans_SetGCOL",FNcol(C%)
 4310RECTANGLEFILL 0,1008,16
 4320C%(I%)=?screen%
 4330C%+=1
 4340NEXT
 4350
 4360C%=0
 4370A=0
 4380FOR R=820 TO 0 STEP -4
 4390C%+=8
 4400IF C%>=256 C%=0
 4410SYS "ColourTrans_SetGCOL",FNcol(C%)
 4420CIRCLEFILL 640,512,R
 4430NEXT
 4440
 4450XX%=4
 4460YY%=4
 4470A%=6
 4480DA=PI/16
 4490FOR J%=1 TO 3
 4500A=0
 4510C%=0
 4520FOR I%=0 TO 1279 STEP XX%
 4530RECTANGLEFILL I%,0,XX%,1023 TO I%,A%*SIN(A)
 4540A+=DA
 4550IF A>2*PI A=0
 4560NEXT
 4570C%=0
 4580A=0
 4590FOR I%=0 TO 1023 STEP YY%
 4600RECTANGLEFILL 0,I%,1279,YY% TO A%*SIN(A),I%
 4610A+=DA
 4620IF A>2*PI A=0
 4630NEXT
 4640
 4650RECTANGLEFILL 0,0,1275,1023 TO 4,0
 4660NEXT
 4670FOR I%=0 TO 255
 4680IF I%<255 NC%=C%(I%+1) ELSE NC%=C%(0)
 4690?(cols+C%(I%))=NC%
 4700NEXT
 4710
 4720ENDPROC
 4730
 4740DEFFNcol(n%)
 4750R%=n%*R(CS%)
 4760G%=n%*G(CS%)
 4770B%=n%*B(CS%)
 4780=(B%<<24)+(G%<<16)+(R%<<8)
 4790
 4800DEFFNdo_it(n%)
 4810reg=n%
 4820[OPT pass
 4830MOV R7,reg,LSR#24
 4840SUB reg,reg,R7,LSL#24
 4850MOV R8,reg,LSR#16
 4860SUB reg,reg,R8,LSL#16
 4870MOV R9,reg,LSR#8
 4880SUB reg,reg,R9,LSL#8
 4890LDRB reg,[R10,reg]
 4900LDRB R7,[R10,R7]
 4910LDRB R8,[R10,R8]
 4920LDRB R9,[R10,R9]
 4930ADD reg,reg,R9,LSL#8
 4940ADD reg,reg,R8,LSL#16
 4950ADD reg,reg,R7,LSL#24
 4960]
 4970=1
 4980
 4990DEFPROCass66
 5000FOR pass=0 TO 2 STEP 2:P%=code
 5010[OPT pass
 5020.yass EQUD 0
 5030.init       STMFD (sp)!,{link}
 5040
 5050            BL varsread
 5060            SWI &10C
 5070
 5080ADD R5,screen,#x
 5090ADD R5,R5,#320*y
 5100LDR R4,pos
 5110LDR R3,posdata
 5120
 5130.mainloop
 5140]
 5150IF fast% THEN
 5160[OPT pass
 5170MOV R0,#19
 5180SWI "OS_Byte"
 5190]
 5200ENDIF
 5210
 5220[OPT pass
 5230.kalislower%
 5240MOVNV R0,#19
 5250SWINV "OS_Byte"
 5260
 5270LDR R8,spritedata
 5280            ADD R4,R4,#320*ymove
 5290SUB R4,R4,#xmove
 5300            CMP R4,#81920
 5310            SUBGE R4,R4,#81920
 5320ADD R7,R8,#81920
 5330            ADD R8,R8,R4
 5340SUB R6,R7,R8
 5350
 5360            MOV R11,R3
 5370STMFD (sp)!,{screen}
 5380
 5390MOV R12,#0
 5400
 5410.yloop      LDMIA R11!,{R0}
 5420
 5430]
 5440IF mode49% THEN
 5450[OPT pass
 5460CMP R0,R12
 5470ADDGE R5,R5,#320
 5480ADDGE R12,R0,#312
 5490]
 5500ENDIF
 5510[OPT pass
 5520
 5530
 5540
 5550            CMP   R0,#0
 5560            BEQ   endglobe
 5570
 5580            ADD   R0,R0,R5
 5590
 5600.xloop2     LDMIA R11!,{R9}
 5610
 5620            MOV   R10,R9,LSR#16
 5630            CMP   R10,#0
 5640            BEQ   yloop
 5650            SUB   R9,R9,R10,LSL#16
 5660
 5670CMP R10,R6
 5680SUBGE R10,R10,#81920
 5690            LDRB  R1,[R8,R10]
 5700            STRB  R1,[R0],#1
 5710
 5720            CMP   R9,#0
 5730
 5740            BEQ   yloop
 5750
 5760            CMP     R9,R10
 5770            STREQB  R1,[R0],#1
 5780            BEQ     xloop2
 5790
 5800CMP R9,R6
 5810SUBGE R9,R9,#81920
 5820            LDRB    R1,[R8,R9]
 5830            STRB    R1,[R0],#1
 5840
 5850            B xloop2
 5860
 5870.endglobe
 5880LDMFD (sp)!,{screen}
 5890
 5900]
 5910IF mode49% THEN
 5920[OPT pass
 5930ADD R5,screen,#x
 5940ADD R5,R5,#320*y
 5950
 5960STMFD (sp)!,{R0-R12}
 5970
 5980MOV R0,screen
 5990ADD R1,R0,#320
 6000ADD R11,R0,#81920*2
 6010.fill_lp
 6020ADD R10,R0,#320
 6030.xlp
 6040LDMIA R0!,{R2-R9}
 6050STMIA R1!,{R2-R9}
 6060CMP R0,R10
 6070BLT xlp
 6080
 6090ADD R0,R0,#320
 6100ADD R1,R1,#320
 6110CMP R0,R11
 6120BLT fill_lp
 6130
 6140LDMFD (sp)!,{R0-R12}
 6150]
 6160
 6170ENDIF
 6180
 6190[OPT pass
 6200.plasmado%
 6210STMNVFD (sp)!,{R0-R12}
 6220BLNV cycle
 6230LDMNVFD (sp)!,{R0-R12}
 6240
 6250MOV R0,#129
 6260MVN R1,#98
 6270MOV R2,#255
 6280SWI "OS_Byte"
 6290CMP R2,#255
 6300LDMEQFD (sp)!,{PC}
 6310            SWI "OS_ReadEscapeState"
 6320            BCC mainloop
 6330
 6340.end        LDMFD (sp)!,{PC}
 6350
 6360.grabsprite
 6370LDR R0,screenadd
 6380ADD R11,R0,#81920
 6390LDR R9,spritedata
 6400.grabloop
 6410LDMIA R0!,{R1-R8}
 6420STMIA R9!,{R1-R8}
 6430CMP R0,R11
 6440BLT grabloop
 6450MOV PC,R14
 6460
 6470.con        EQUD 800
 6480.pos        EQUD  0
 6490.globe
 6500
 6510.posdata    EQUD code+1024*16
 6520.spritedata EQUD posdata+81920
 6530.varsread   LDR  screen,screenadd
 6540            MOV  PC,R14
 6550.screenadd  EQUD screen%
 6560
 6570.coldata3 EQUD cols
 6580
 6590.cycle
 6600LDR R12,spritedata
 6610LDR R10,coldata3
 6620.cycleloop
 6630MOV R0,R12
 6640ADD R11,R0,#81920
 6650SUB R11,R11,#320-8
 6660
 6670.cyc
 6680LDMIA R0,{R1,R2,R3,R4,R5,R6}
 6690FNdo_it(1)
 6700FNdo_it(2)
 6710FNdo_it(3)
 6720FNdo_it(4)
 6730FNdo_it(5)
 6740FNdo_it(6)
 6750STMIA R0!,{R1,R2,R3,R4,R5,R6}
 6760
 6770CMP R0,R11
 6780BLT cyc
 6790
 6800LDMIA R0,{R1,R2}
 6810FNdo_it(1)
 6820FNdo_it(2)
 6830STMIA R0!,{R1,R2}
 6840
 6850MOV PC,R14
 6860]
 6870NEXT
 6880ENDPROC
 6890
 6900DEFFNchoose
 6910PRINTTAB(4,2);"Please click on a colour scheme."
 6920MOUSEON
 6930PRINT'
 6940A%=screen%+320*32+32
 6950FOR S%=0 TO 6
 6960FOR C%=0 TO 15
 6970CW%=COL%(S%,C%)
 6980CW%=CW%+(CW%<<8)+(CW%<<16)+(CW%<<24)
 6990
 7000FOR Y%=0 TO 15
 7010FOR X%=0 TO 3
 7020!A%=CW%
 7030A%+=4
 7040NEXT
 7050A%+=320-16
 7060NEXT
 7070
 7080A%-=320*16
 7090A%+=16
 7100
 7110NEXT
 7120PRINT STR$ S%;"."''
 7130
 7140A%-=16*16
 7150A%+=320*24
 7160NEXT
 7170
 7180OS%=0
 7190GCOL 3,63
 7200RECTANGLE 128,1024-128-64,64*16,64
 7210
 7220REPEAT
 7230MOUSE X,Y,Z
 7240S%=((1024-Y)-128) DIV 96
 7250IF S%<0 S%=0 ELSE IF S%>6 S%=6
 7260IF S%<>OS% RECTANGLE 128,1024-128-64-OS%*96,64*16,64:RECTANGLE 128,1024-128-64-S%*96,64*16,64:OS%=S%
 7270UNTIL Z>0
 7280=S%
 7290
 7300DEFPROCsp(N$,x%,y%)
 7310SYS"OS_SpriteOp",256+34,s%,N$,x%,y%,8
 7320ENDPROC
 7330
 7340DEFPROCsp2(N$,x%,y%)
 7350SYS"OS_SpriteOp",256+34,sb%,N$,x%,y%,8
 7360ENDPROC
 7370
 7380DEFPROCsload(S$)
 7390FILE%=OPENIN(S$)
 7400SIZE%=EXT#FILE%+64
 7410CLOSE#FILE%
 7420DIM A% SIZE%
 7430A%!0=S%
 7440SYS"OS_SpriteOp",256+9,A%
 7450SYS"OS_SpriteOp",256+10,A%,S$
 7460s%=A%
 7470ENDPROC
 7480
 7490DEFPROCsloadB
 7500FILE%=OPENIN("<ed$dir>.TILES")
 7510S$="<ed$dir>.TILES"
 7520SIZE%=EXT#FILE%+64
 7530CLOSE#FILE%
 7540DIM B% SIZE%
 7550B%!0=S%
 7560SYS"OS_SpriteOp",256+9,B%
 7570SYS"OS_SpriteOp",256+10,B%,S$
 7580sb%=B%
 7590DIM X%(NT%),Y%(NT%)
 7600FOR I%=0 TO NT%-1
 7610READ X%(I%),Y%(I%)
 7620NEXT
 7630ENDPROC
 7640
 7650DEFPROCenable(n%,add%)
 7660bin%=%11101111111111111111111111111111
 7670FOR L%=1 TO n%
 7680!add%=(!add%) AND bin%
 7690add%+=4
 7700NEXT
 7710ENDPROC
 7720
 7730DEFPROCdisable(n%,add%)
 7740bin%=%00010000000000000000000000000000
 7750FOR L%=1 TO n%
 7760!add%=(!add%) OR bin%
 7770add%+=4
 7780NEXT
 7790ENDPROC
 7800
 7810DEFPROCtiled
 7820*RAM
 7830CLS
 7840PRINT''"   Please type the name of the sprite file."
 7850INPUT F$
 7860PROCsload(F$)
 7870PRINT'"   Please type the name of the sprite itself."
 7880INPUT N$
 7890PRINT'"   Please input the sprite's width."
 7900INPUT X%
 7910PRINT'"   Please input the sprite's height."
 7920INPUT Y%
 7930MODE13
 7940OFF
 7950PROCtile(N$,X%,Y%)
 7960ENDPROC
 7970
 7980DEFPROCfadein
 7990FOR I%=0 TO 255 STEP 8:COLOUR 1,I%,I%,I%:WAIT:NEXT
 8000ENDPROC
 8010
 8020DEFPROCfadeout
 8030FOR I%=255 TO 0 STEP -8:COLOUR 1,I%,I%,I%:WAIT:NEXT
 8040ENDPROC
 8050
 8060DEFPROCbtiled
 8070MODE13:OFF
 8080MOUSEON
 8090PRINTTAB(6,2);"Please click on a tiling pattern."
 8100X%=64
 8110Y%=1024-64*8
 8120FOR T%=1 TO NT%
 8130PROCsp2(STR$(T%),X%,Y%)
 8140X%+=48*4
 8150IF X%>=(1279-64-48) X%=64:Y%-=48*4
 8160NEXT
 8170
 8180GCOL 3,63
 8190
 8200N%=-1
 8210REPEAT
 8220REPEAT MOUSE X,Y,Z
 8230Y=Y+64*8-48*4
 8240Y=1024-Y
 8250Y=Y DIV 192
 8260X=X-48
 8270X=X DIV 192
 8280X%=X*192+48+16+48*4
 8290Y%=(1024-Y*192)-64*8+48*4
 8300N%=X+Y*6
 8310
 8320IF N%<NT% THEN
 8330RECTANGLE X%-48*4,Y%-48*4,(X%(N%)-1)*4,(Y%(N%)-1)*4
 8340WAIT
 8350RECTANGLE X%-48*4,Y%-48*4,(X%(N%)-1)*4,(Y%(N%)-1)*4
 8360ENDIF
 8370
 8380UNTIL Z>0
 8390IF X>48 AND X<(1279-64-48) AND Y<(1024-64*4) THEN
 8400
 8410N%=X+Y*6
 8420ENDIF
 8430UNTIL N%>-1 AND N%<NT%
 8440
 8450PROCtileb(STR$(N%+1),X%(N%),Y%(N%))
 8460
 8470MOUSEOFF
 8480ENDPROC
 8490
 8500DEFPROCtile(n$,x%,y%)
 8510FOR I%=0 TO 1279 STEP x%*4
 8520FOR J%=0 TO 1023 STEP y%*4
 8530PROCsp(n$,I%,J%)
 8540NEXT:NEXT
 8550ENDPROC
 8560DEFPROCtileb(n$,x%,y%)
 8570FOR I%=0 TO 1279 STEP x%*4
 8580FOR J%=0 TO 1023 STEP y%*4
 8590PROCsp2(n$,I%,J%)
 8600NEXT:NEXT
 8610ENDPROC
 8620
 8630DATA 24,24
 8640DATA 48,48
 8650DATA 32,32
 8660DATA 48,48
 8670
 8680DATA 48,48
 8690DATA 20,20
 8700DATA 20,20
 8710DATA 16,16
 8720
 8730DATA 48,48
 8740DATA 48,48
 8750DATA 40,40
 8760DATA 20,20
 8770
 8780DATA 32,32
 8790DATA 32,46
 8800DATA 40,40
 8810DATA 30,30

�0:�
A%=�(-�)

NT%=16
(� P%(15),T%(255)
2
<� � �:�" at line ";�:�
F�'"  RiscPC Mode? (Y/N)"
P� G$=�:� �"YyNn",G$)
Z&� �"Yy",G$) mode49%=-1 � mode49%=0
dfast%=0
n�=0:� I%=0 � 40960:�:A%=�
x� A%<25 fast%=-1
�
�	�cols
�
�setup
�
screen=12
�	sp=13
�link=14
�x=60
�y=30
�
�xmove=1
�ymove=1
�
�
�ass66
�

� 1,0,0,0
�32,8);"Welcome to Tunnl!"
"7�20,11);"Code and original design by Edward Smale"
,3�20,13);"    Additional design by Daniel Shaw"
6�34,28);"Please wait..."
@
J�fadein
T
^3�("LOAD <ed$dir>.POSDATA"+" "+�~(code+1024*16))
h�sloadB
r�fadeout
|
��
��0:�
�
� 1,0,0,0
�!�12,1);"  Welcome to Tunnl!"
�2�'"    Please choose your preferred texture."'
�&� "  Press G for Granite texture,"
�+� "  Press K for Kaleidoscope texture,"
�%� "  Press P for Plasma texture,"
�=� "  Press S to load a mode 13 Sprite file from ramdisc,"
�S� "  Press T to create a tiled pattern with a mode13 Sprite file from ramdisc,"
�3� "  Press B to use a built-in tiling texture."
��fadein
�
�
G$=�
� �"GgKkSsPpTtBb",G$)
&
0�
:kali%=0
DY� �"Pp",G$) plasma%=-1:�plasma:�enable(3,plasmado%) � plasma%=0:�disable(3,plasmado%)
N
X"� G$="G" � G$="g" �graniteproc
bA� G$="S" � G$="s" �"RAM":�'"Filename: "F$:�("SCREENLOAD "+F$)
l� G$="K" � G$="k" �
v�pic
�"� fast% �enable(2,kalislower%)
��
��disable(2,kalislower%)
��
�
�� G$="T" � G$="t" �tiled
�� G$="B" � G$="b" �btiled
�
�ȗ�
�� grabsprite
��0:�
�'�28,28);"Press SPACE to finish..."
�
A%=�(100)
� mode49% �49:� � �13:�

� init
� 0
 
*��graniteproc
4	�13:�
>CS%=�choose
H�14,29);"Please wait..."
R� code2 1024+16
\�:�" at line ";�:�
f
�colsg
plink=14
z	sp=13
�
screen=12
��pass=0�2�2
�P%=code2
�
[OPT pass
�.granite STMFD (sp)!,{link}
�LDR screen,scrn%
�MOV R1,#253
�.yloopg MOV R0,#1
�.xloopg ADD R2,R0,R1,LSL#6
�ADD R2,R2,R1,LSL#8
�ADD R2,R2,screen
�SUB R2,R2,#4
�LDRB R4,[R2,#0]
LDRB R3,[R2,#320*2]
ADD R4,R4,R3
ADD R2,R2,#2
$LDRB R3,[R2,#320]
.ADD R4,R4,R3
8ADD R2,R2,#2
BLDRB R3,[R2,#320*2]
LADD R4,R4,R3
VMOV R4,R4,LSL#8-2
`
BL rnd
jSUB R7,R7,#113
tADD R4,R4,R7,ASL#3
~
CMP R4,#0
�LDRLT R4,oldcol%
�BLT maus
�MOVGE R4,R4,ASR#8
�� R4,R4,#%1111
�STRLT R4,oldcol%
�.maus SUB R2,R2,#1
�STRB R4,[R2,#0]
�ADD R0,R0,#2
�CMP R0,#320
�SUBLE R0,R0,#1
�BLE xloopg
�SUB R1,R1,#1

CMP R1,#1

BGT yloopg

MOV R0,screen
(ADD R1,R0,#64
2ADD R2,R0,#81920/2
<SUB R2,R2,#64
F.movelp LDMIA R1!,{R3-R10}
PSTMIA R0!,{R3-R10}
Z
CMP R1,R2
dBLT movelp
nLDMFD (sp)!,{PC}
x
� .granite2 STMFD (sp)!,{link}
�LDR screen,scrn%
�MOV R5,#320
�ADD R5,R5,#1
�MOV R1,#252
�.yloopg2 MOV R0,#320-128
�.xloopg2 ADD R2,R0,R1,LSL#6
�ADD R2,R2,R1,LSL#8
�ADD R2,R2,screen
�SUB R2,R2,#4
�LDRB R4,[R2,#0]
�LDRB R3,[R2,#320*2]
�ADD R4,R4,R3
ADD R2,R2,#2
LDRB R3,[R2,#320]
ADD R4,R4,R3
"ADD R2,R2,#2
,LDRB R3,[R2,#320*2]
6ADD R4,R4,R3
@MOV R4,R4,LSL#8-2
J
BL rnd
TSUB R7,R7,#113
^ADD R4,R4,R7,ASL#3
h
CMP R4,#0
rLDRLT R4,oldcol%
|
BLT maus2
�MOVGE R4,R4,ASR#8
�� R4,R4,#%1111
�STRLT R4,oldcol%
�.maus2 SUB R2,R2,#1
�STRB R4,[R2,#0]
�ADD R0,R0,#2
�
CMP R0,R5
�SUBLE R0,R0,#1
�BLE xloopg2
�SUB R1,R1,#1
�
CMP R1,#1
�BGT yloopg2
�
.smudge LDR R1,otherscrn
MOV R0,screen
ADD R1,R1,#1
&ADD R0,R0,#320
0ADD R1,R1,#320
:ADD R11,R0,#81920
DSUB R11,R11,#1
NSUB R11,R11,#320*2
X
b.smudgelp LDRB R2,[R0,#0]
lLDRB R3,[R0,#1]
vLDRB R4,[R0,#2]
�SUB R0,R0,#320
�ADD R0,R0,#1
�LDRB R5,[R0],#640
�LDRB R6,[R0,#0]
�SUB R0,R0,#320
�SUB R0,R0,#1
�ADD R3,R3,R2
�ADD R3,R3,R4
�ADD R3,R3,R5
�ADD R3,R3,R6
�MOV R7,#14
�MUL R2,R3,R7
�MOV R2,R2,LSR#6
STRB R2,[R1],#1
ADD R0,R0,#1
CMP R0,R11
 BLT smudgelp
*
4
.nosmudge
>LDR R1,otherscrn
HADD R1,R1,#320
RADD R0,screen,#320
\ADD R11,R0,#81920
fSUB R11,R11,#640
p .copyloopg LDMIA R1!,{R2-R9}
zSTMIA R0!,{R2-R9}
�CMP R0,R11
�BLT copyloopg
�LDR R0,counter
�
CMP R0,#2
�ADDLE R0,R0,#1
�STRLE R0,counter
�BLE smudge
�
�LDR R5,coldata
�MOV R0,screen
�ADD R1,R0,#81920
�.changelp LDRB R2,[R0,#0]
�LDRB R6,[R5,R2]
	STRB R6,[R0],#1
	
CMP R0,R1
	BLT changelp
	$.fini LDMFD (sp)!,{PC}
	..coldata EQUD code2+1024
	8.oldcol% EQUD 0
	B.scrn%   EQUD  screen%
	L&.otherscrn EQUD code+1024*16+81920
	V.counter EQUD 1
	`.rnd LDR R7,seed
	j
LDR R8,c1
	t
LDR R9,c2
	~MLA R7,R8,R7,R9
	�MLA R10,R8,R7,R9
	�STR R10,seed
	�� R7,R7,R10,ROR#16
	�MOV R8,#256
	�SUB R8,R8,#1
	�� R7,R7,R8
	�MOV PC,R14
	�.c1 EQUD 1664525
	�.c2 EQUD 907633393
	�.seed EQUD �
	�.rnd%EQUD 0
	�]
�


�granite
� 0 Ȝ 0
(ȓȐ 1280-64*4,0,256,1023
2� granite2
<ȓȐ 0,1024,1279,-12
F
Ȓ 0,1023
P�
Z
d��colsg
ndata%=code2+1024
x�I%=0�15
�data%?I%=COL%(CS%,I%)
��
��
�
���setup
�	�scrn
�� code 1024*16+81920*2
��
�
�
��cols
�� R(7),G(7),B(7)
�� I%=0 � 6
�� R(I%),G(I%),B(I%)
�

� COL%(7,15)
"� J%=0 � 7
,� C%=0 � 15
6� COL%(J%,C%)
@�:�
J
� C%(255)
T
^� cols 256
h
r
|�
�
�
��scrn
�� block% 15,b2% 15
�block%!0=148
�block%!4=7
�block%!8=6
�block%!12=-1
�'ș "OS_ReadVduVariables",block%,b2%
�screen%=b2%!0
��
�
�� 1,0.5,0.5
�
� 1,1,0.5
� 0.5,1,0.5

� 0.5,1,1
� 0.5,0.5,1
&
� 1,0.5,1
0� 1,1,1
:
D-� 0,0,1,2,4,5,6,7,16,17,18,19,60,61,62,63
N5� 0,0,1,2,36,37,38,39,80,81,82,83,244,245,246,247
X5� 0,0,1,2,32,33,34,35,76,77,78,79,240,241,242,243
b9� 0,1,2,3,40,41,42,43,196,197,198,199,248,249,250,251
l:� 0,0,1,2, 8,9,10,11, 164,165,166,167, 216,217,218,219
v7� 0,0,1,2,8,9,10,11,132,133,134,135,184,185,186,187
�9� 0,1,2,3,44,45,46,47,208,209,210,211,252,253,254,255
�9� 0,1,2,3,44,45,46,47,208,209,210,211,252,253,254,255
�
�	��pic
�	�13:�
��14,29);"Please wait..."
�
�A%=screen%
�
CS%=-1
�
DCS%=1
�� YY%=0 � 128*7-1 � 128
�
CS%+=DCS%
�� CS%=4 DCS%=-1

� Y%=YY% � YY%+128 � 4



� C%=0 � 15

 /P%(C%)=16/(( (16*(�(Y%/128*�)^2) -C%)^4)+1)

*�

4

>T%=0

HC%=0

R�

\

fȕ P%(C%)>0

p
P%(C%)-=1

z
T%(T%)=C%

�	T%+=1

��

�	C%+=1

�� C%=16

�N%=T%-1

�

�� X%=0 � 31

�C%=COL%(CS%,T%(�(N%)))

�� C%>0 C%-=�(1)

�
?A%=C%

�	A%+=1

��

�
A%-=32
A%+=320
�
�
$
.� XX%=0 � 9*32-1 � 32
8A%=screen%
B
L� Y%=0 � 255
V� X%=0 � 7
`!(A%+XX%)=!A%
j	A%+=4
t�
~
A%-=32
�A%+=320
��
�
��
�
�XX%=�(2)*4
�YY%=�(2)*4
�DA=�/�(16)
�
�� J%=1 � 3+�(3)
�A=0
�C%=0
� I%=0 � 1279 � XX%

$ȓȐ I%,0,XX%,1023 � I%,XX%*�(A)
	A+=DA
� A>2*� A=0
(�
2C%=0
<A=0
F� I%=0 � 1023 � YY%
P$ȓȐ 0,I%,1279,YY% � YY%*�(A),I%
Z	A+=DA
d� A>2*� A=0
n�
x
�ȓȐ 0,0,1275,1023 � 4,0
��
�
�A%=screen%
�� Y%=0 � 255
�� X%=0 � 79
�?A%=?(A%+160)
�	A%+=1
��
�
A%-=80
�A%+=320
��
�
� XX%=80 � 3*80 � 80
A%=screen%

"� Y%=0 � 255
,� X%=0 � 19
6!(A%+XX%)=!A%
@	A%+=4
J�
T
A%-=80
^A%+=320
h�
r
|�
��
�
���plasma
�	�13:�
�CS%=�choose
�C%=0
�� I%=0 � 255
�%ș "ColourTrans_SetGCOL",�col(C%)
�ȓȐ 0,1008,16
�C%(I%)=?screen%
�	C%+=1
��
�
C%=0
A=0
� R=820 � 0 � -4
&	C%+=8
0� C%>=256 C%=0
:%ș "ColourTrans_SetGCOL",�col(C%)
DȏȐ 640,512,R
N�
X
b	XX%=4
l	YY%=4
vA%=6
�DA=�/16
�� J%=1 � 3
�A=0
�C%=0
�� I%=0 � 1279 � XX%
�#ȓȐ I%,0,XX%,1023 � I%,A%*�(A)
�	A+=DA
�� A>2*� A=0
��
�C%=0
�A=0
�� I%=0 � 1023 � YY%
�#ȓȐ 0,I%,1279,YY% � A%*�(A),I%
	A+=DA
� A>2*� A=0
�
 
*ȓȐ 0,0,1275,1023 � 4,0
4�
>� I%=0 � 255
H%� I%<255 NC%=C%(I%+1) � NC%=C%(0)
R?(cols+C%(I%))=NC%
\�
f
p�
z
�
ݤcol(n%)
�R%=n%*R(CS%)
�G%=n%*G(CS%)
�B%=n%*B(CS%)
�=(B%<<24)+(G%<<16)+(R%<<8)
�
�ݤdo_it(n%)
�
reg=n%
�
[OPT pass
�MOV R7,reg,LSR#24
�SUB reg,reg,R7,LSL#24
�MOV R8,reg,LSR#16
�SUB reg,reg,R8,LSL#16
MOV R9,reg,LSR#8
SUB reg,reg,R9,LSL#8
LDRB reg,[R10,reg]
$LDRB R7,[R10,R7]
.LDRB R8,[R10,R8]
8LDRB R9,[R10,R9]
BADD reg,reg,R9,LSL#8
LADD reg,reg,R8,LSL#16
VADD reg,reg,R7,LSL#24
`]
j=1
t
~��ass66
�� pass=0 � 2 � 2:P%=code
�
[OPT pass
�.yass EQUD 0
�".init       STMFD (sp)!,{link}
�
�            BL varsread
�            SWI &10C
�
�ADD R5,screen,#x
�ADD R5,R5,#320*y
�LDR R4,pos
�LDR R3,posdata



.mainloop
]

� fast% �
(
[OPT pass
2MOV R0,#19
<SWI "OS_Byte"
F]
P�
Z
d
[OPT pass
n.kalislower%
xMOVNV R0,#19
�SWINV "OS_Byte"
�
�LDR R8,spritedata
�$            ADD R4,R4,#320*ymove
�SUB R4,R4,#xmove
�            CMP R4,#81920
�"            SUBGE R4,R4,#81920
�ADD R7,R8,#81920
�            ADD R8,R8,R4
�SUB R6,R7,R8
�
�            MOV R11,R3
�STMFD (sp)!,{screen}

MOV R12,#0

".yloop      LDMIA R11!,{R0}
,
6]
@� mode49% �
J
[OPT pass
TCMP R0,R12
^ADDGE R5,R5,#320
hADDGE R12,R0,#312
r]
|�
�
[OPT pass
�
�
�
�            CMP   R0,#0
�            BEQ   endglobe
�
�            ADD   R0,R0,R5
�
�.xloop2     LDMIA R11!,{R9}
�
�#            MOV   R10,R9,LSR#16
�            CMP   R10,#0
            BEQ   yloop
&            SUB   R9,R9,R10,LSL#16

&CMP R10,R6
0SUBGE R10,R10,#81920
:!            LDRB  R1,[R8,R10]
D             STRB  R1,[R0],#1
N
X            CMP   R9,#0
b
l            BEQ   yloop
v
�            CMP     R9,R10
�"            STREQB  R1,[R0],#1
�            BEQ     xloop2
�
�
CMP R9,R6
�SUBGE R9,R9,#81920
�"            LDRB    R1,[R8,R9]
�"            STRB    R1,[R0],#1
�
�            B xloop2
�
�
.endglobe
�LDMFD (sp)!,{screen}

]
� mode49% �
 
[OPT pass
*ADD R5,screen,#x
4ADD R5,R5,#320*y
>
HSTMFD (sp)!,{R0-R12}
R
\MOV R0,screen
fADD R1,R0,#320
pADD R11,R0,#81920*2
z.fill_lp
�ADD R10,R0,#320
�.xlp
�LDMIA R0!,{R2-R9}
�STMIA R1!,{R2-R9}
�CMP R0,R10
�BLT xlp
�
�ADD R0,R0,#320
�ADD R1,R1,#320
�CMP R0,R11
�BLT fill_lp
�
�LDMFD (sp)!,{R0-R12}
]

�
$
.
[OPT pass
8.plasmado%
BSTMNVFD (sp)!,{R0-R12}
LBLNV cycle
VLDMNVFD (sp)!,{R0-R12}
`
jMOV R0,#129
tMVN R1,#98
~MOV R2,#255
�SWI "OS_Byte"
�CMP R2,#255
�LDMEQFD (sp)!,{PC}
�(            SWI "OS_ReadEscapeState"
�            BCC mainloop
�
� .end        LDMFD (sp)!,{PC}
�
�.grabsprite
�LDR R0,screenadd
�ADD R11,R0,#81920
�LDR R9,spritedata

.grabloop

LDMIA R0!,{R1-R8}
STMIA R9!,{R1-R8}
CMP R0,R11
(BLT grabloop
2MOV PC,R14
<
F.con        EQUD 800
P.pos        EQUD  0
Z
.globe
d
n!.posdata    EQUD code+1024*16
x".spritedata EQUD posdata+81920
�%.varsread   LDR  screen,screenadd
�            MOV  PC,R14
�.screenadd  EQUD screen%
�
�.coldata3 EQUD cols
�
�
.cycle
�LDR R12,spritedata
�LDR R10,coldata3
�.cycleloop
�MOV R0,R12
�ADD R11,R0,#81920
�SUB R11,R11,#320-8

.cyc
 LDMIA R0,{R1,R2,R3,R4,R5,R6}
"
�do_it(1)
,
�do_it(2)
6
�do_it(3)
@
�do_it(4)
J
�do_it(5)
T
�do_it(6)
^!STMIA R0!,{R1,R2,R3,R4,R5,R6}
h
rCMP R0,R11
|BLT cyc
�
�LDMIA R0,{R1,R2}
�
�do_it(1)
�
�do_it(2)
�STMIA R0!,{R1,R2}
�
�MOV PC,R14
�]
��
��
�
�ݤchoose
�-�4,2);"Please click on a colour scheme."
ȗ�
�'
A%=screen%+320*32+32
&� S%=0 � 6
0� C%=0 � 15
:CW%=COL%(S%,C%)
D(CW%=CW%+(CW%<<8)+(CW%<<16)+(CW%<<24)
N
X� Y%=0 � 15
b� X%=0 � 3
l!A%=CW%
v	A%+=4
��
�A%+=320-16
��
�
�A%-=320*16
�
A%+=16
�
��
�� � S%;"."''
�
�
A%-=16*16
�A%+=320*24
��

	OS%=0

� 3,63
 ȓ 128,1024-128-64,64*16,64
*
4�
>ȗ X,Y,Z
HS%=((1024-Y)-128) � 96
R� S%<0 S%=0 � � S%>6 S%=6
\Y� S%<>OS% ȓ 128,1024-128-64-OS%*96,64*16,64:ȓ 128,1024-128-64-S%*96,64*16,64:OS%=S%
f	� Z>0
p=S%
z
���sp(N$,x%,y%)
�(ș"OS_SpriteOp",256+34,s%,N$,x%,y%,8
��
�
���sp2(N$,x%,y%)
�)ș"OS_SpriteOp",256+34,sb%,N$,x%,y%,8
��
�
���sload(S$)
�FILE%=�(S$)
�SIZE%=�#FILE%+64
��#FILE%
�� A% SIZE%
A%!0=S%
ș"OS_SpriteOp",256+9,A%
 ș"OS_SpriteOp",256+10,A%,S$
$	s%=A%
.�
8
B��sloadB
LFILE%=�("<ed$dir>.TILES")
VS$="<ed$dir>.TILES"
`SIZE%=�#FILE%+64
j�#FILE%
t� B% SIZE%
~B%!0=S%
�ș"OS_SpriteOp",256+9,B%
� ș"OS_SpriteOp",256+10,B%,S$
�
sb%=B%
�� X%(NT%),Y%(NT%)
�� I%=0 � NT%-1
�� X%(I%),Y%(I%)
��
��
�
���enable(n%,add%)
�*bin%=%11101111111111111111111111111111
�� L%=1 � n%
!add%=(!add%) � bin%

add%+=4
�
�
(
2��disable(n%,add%)
<*bin%=%00010000000000000000000000000000
F� L%=1 � n%
P!add%=(!add%) � bin%
Zadd%+=4
d�
n�
x
���tiled
�*RAM
��
�4�''"   Please type the name of the sprite file."
�� F$
��sload(F$)
�5�'"   Please type the name of the sprite itself."
�� N$
�+�'"   Please input the sprite's width."
�� X%
�,�'"   Please input the sprite's height."
�� Y%
��13
�
�tile(N$,X%,Y%)
�
"
,��fadein
6&� I%=0 � 255 � 8:� 1,I%,I%,I%:Ȗ:�
@�
J
T
��fadeout
^'� I%=255 � 0 � -8:� 1,I%,I%,I%:Ȗ:�
h�
r
|��btiled
�	�13:�
�ȗ�
�.�6,2);"Please click on a tiling pattern."
�	X%=64
�Y%=1024-64*8
�� T%=1 � NT%
��sp2(�(T%),X%,Y%)
�X%+=48*4
�%� X%>=(1279-64-48) X%=64:Y%-=48*4
��
�
�
� 3,63
�
 	N%=-1
 �
 � ȗ X,Y,Z
 &Y=Y+64*8-48*4
 0Y=1024-Y
 :
Y=Y � 192
 D
X=X-48
 N
X=X � 192
 XX%=X*192+48+16+48*4
 bY%=(1024-Y*192)-64*8+48*4
 lN%=X+Y*6
 v
 �� N%<NT% �
 �0ȓ X%-48*4,Y%-48*4,(X%(N%)-1)*4,(Y%(N%)-1)*4
 �Ȗ
 �0ȓ X%-48*4,Y%-48*4,(X%(N%)-1)*4,(Y%(N%)-1)*4
 ��
 �
 �	� Z>0
 �-� X>48 � X<(1279-64-48) � Y<(1024-64*4) �
 �
 �N%=X+Y*6
 ��
 �� N%>-1 � N%<NT%
 �
!!�tileb(�(N%+1),X%(N%),Y%(N%))
!
!ȗ�
! �
!*
!4��tile(n$,x%,y%)
!>� I%=0 � 1279 � x%*4
!H� J%=0 � 1023 � y%*4
!R�sp(n$,I%,J%)
!\�:�
!f�
!p��tileb(n$,x%,y%)
!z� I%=0 � 1279 � x%*4
!�� J%=0 � 1023 � y%*4
!��sp2(n$,I%,J%)
!��:�
!��
!�
!�� 24,24
!�� 48,48
!�� 32,32
!�� 48,48
!�
!�� 48,48
!�� 20,20
!�� 20,20
"� 16,16
"
"� 48,48
"$� 48,48
".� 40,40
"8� 20,20
"B
"L� 32,32
"V� 32,46
"`� 40,40
"j� 30,30
�
00000000  0d 00 0a 08 eb 30 3a 87  0d 00 14 0c 41 25 3d b3  |.....0:.....A%=.|
00000010  28 2d 91 29 0d 00 1e 0a  4e 54 25 3d 31 36 0d 00  |(-.)....NT%=16..|
00000020  28 14 de 20 50 25 28 31  35 29 2c 54 25 28 32 35  |(.. P%(15),T%(25|
00000030  35 29 0d 00 32 04 0d 00  3c 1a ee 20 85 20 f6 3a  |5)..2...<.. . .:|
00000040  f1 22 20 61 74 20 6c 69  6e 65 20 22 3b 9e 3a e0  |." at line ";.:.|
00000050  0d 00 46 1c e8 27 22 20  20 52 69 73 63 50 43 20  |..F..'"  RiscPC |
00000060  4d 6f 64 65 3f 20 28 59  2f 4e 29 22 0d 00 50 18  |Mode? (Y/N)"..P.|
00000070  f5 20 47 24 3d be 3a fd  20 a7 22 59 79 4e 6e 22  |. G$=.:. ."YyNn"|
00000080  2c 47 24 29 0d 00 5a 26  e7 20 a7 22 59 79 22 2c  |,G$)..Z&. ."Yy",|
00000090  47 24 29 20 6d 6f 64 65  34 39 25 3d 2d 31 20 8b  |G$) mode49%=-1 .|
000000a0  20 6d 6f 64 65 34 39 25  3d 30 0d 00 64 0b 66 61  | mode49%=0..d.fa|
000000b0  73 74 25 3d 30 0d 00 6e  1d d1 3d 30 3a e3 20 49  |st%=0..n..=0:. I|
000000c0  25 3d 30 20 b8 20 34 30  39 36 30 3a ed 3a 41 25  |%=0 . 40960:.:A%|
000000d0  3d 91 0d 00 78 14 e7 20  41 25 3c 32 35 20 66 61  |=...x.. A%<25 fa|
000000e0  73 74 25 3d 2d 31 0d 00  82 04 0d 00 8c 09 f2 63  |st%=-1.........c|
000000f0  6f 6c 73 0d 00 96 0a f2  73 65 74 75 70 0d 00 a0  |ols.....setup...|
00000100  0d 73 63 72 65 65 6e 3d  31 32 0d 00 aa 09 73 70  |.screen=12....sp|
00000110  3d 31 33 0d 00 b4 0b 6c  69 6e 6b 3d 31 34 0d 00  |=13....link=14..|
00000120  be 08 78 3d 36 30 0d 00  c8 08 79 3d 33 30 0d 00  |..x=60....y=30..|
00000130  d2 04 0d 00 dc 0b 78 6d  6f 76 65 3d 31 0d 00 e6  |......xmove=1...|
00000140  0b 79 6d 6f 76 65 3d 31  0d 00 f0 04 0d 00 fa 0a  |.ymove=1........|
00000150  f2 61 73 73 36 36 0d 01  04 05 db 0d 01 0e 0d fb  |.ass66..........|
00000160  20 31 2c 30 2c 30 2c 30  0d 01 18 1f f1 8a 33 32  | 1,0,0,0......32|
00000170  2c 38 29 3b 22 57 65 6c  63 6f 6d 65 20 74 6f 20  |,8);"Welcome to |
00000180  54 75 6e 6e 6c 21 22 0d  01 22 37 f1 8a 32 30 2c  |Tunnl!".."7..20,|
00000190  31 31 29 3b 22 43 6f 64  65 20 61 6e 64 20 6f 72  |11);"Code and or|
000001a0  69 67 69 6e 61 6c 20 64  65 73 69 67 6e 20 62 79  |iginal design by|
000001b0  20 45 64 77 61 72 64 20  53 6d 61 6c 65 22 0d 01  | Edward Smale"..|
000001c0  2c 33 f1 8a 32 30 2c 31  33 29 3b 22 20 20 20 20  |,3..20,13);"    |
000001d0  41 64 64 69 74 69 6f 6e  61 6c 20 64 65 73 69 67  |Additional desig|
000001e0  6e 20 62 79 20 44 61 6e  69 65 6c 20 53 68 61 77  |n by Daniel Shaw|
000001f0  22 0d 01 36 1d f1 8a 33  34 2c 32 38 29 3b 22 50  |"..6...34,28);"P|
00000200  6c 65 61 73 65 20 77 61  69 74 2e 2e 2e 22 0d 01  |lease wait..."..|
00000210  40 04 0d 01 4a 0b f2 66  61 64 65 69 6e 0d 01 54  |@...J..fadein..T|
00000220  04 0d 01 5e 33 ff 28 22  4c 4f 41 44 20 3c 65 64  |...^3.("LOAD <ed|
00000230  24 64 69 72 3e 2e 50 4f  53 44 41 54 41 22 2b 22  |$dir>.POSDATA"+"|
00000240  20 22 2b c3 7e 28 63 6f  64 65 2b 31 30 32 34 2a  | "+.~(code+1024*|
00000250  31 36 29 29 0d 01 68 0b  f2 73 6c 6f 61 64 42 0d  |16))..h..sloadB.|
00000260  01 72 0c f2 66 61 64 65  6f 75 74 0d 01 7c 04 0d  |.r..fadeout..|..|
00000270  01 86 05 f5 0d 01 90 08  eb 30 3a 87 0d 01 9a 0d  |.........0:.....|
00000280  fb 20 31 2c 30 2c 30 2c  30 0d 01 a4 21 f1 8a 31  |. 1,0,0,0...!..1|
00000290  32 2c 31 29 3b 22 20 20  57 65 6c 63 6f 6d 65 20  |2,1);"  Welcome |
000002a0  74 6f 20 54 75 6e 6e 6c  21 22 0d 01 ae 32 f1 27  |to Tunnl!"...2.'|
000002b0  22 20 20 20 20 50 6c 65  61 73 65 20 63 68 6f 6f  |"    Please choo|
000002c0  73 65 20 79 6f 75 72 20  70 72 65 66 65 72 72 65  |se your preferre|
000002d0  64 20 74 65 78 74 75 72  65 2e 22 27 0d 01 b8 26  |d texture."'...&|
000002e0  f1 20 22 20 20 50 72 65  73 73 20 47 20 66 6f 72  |. "  Press G for|
000002f0  20 47 72 61 6e 69 74 65  20 74 65 78 74 75 72 65  | Granite texture|
00000300  2c 22 0d 01 c2 2b f1 20  22 20 20 50 72 65 73 73  |,"...+. "  Press|
00000310  20 4b 20 66 6f 72 20 4b  61 6c 65 69 64 6f 73 63  | K for Kaleidosc|
00000320  6f 70 65 20 74 65 78 74  75 72 65 2c 22 0d 01 cc  |ope texture,"...|
00000330  25 f1 20 22 20 20 50 72  65 73 73 20 50 20 66 6f  |%. "  Press P fo|
00000340  72 20 50 6c 61 73 6d 61  20 74 65 78 74 75 72 65  |r Plasma texture|
00000350  2c 22 0d 01 d6 3d f1 20  22 20 20 50 72 65 73 73  |,"...=. "  Press|
00000360  20 53 20 74 6f 20 6c 6f  61 64 20 61 20 6d 6f 64  | S to load a mod|
00000370  65 20 31 33 20 53 70 72  69 74 65 20 66 69 6c 65  |e 13 Sprite file|
00000380  20 66 72 6f 6d 20 72 61  6d 64 69 73 63 2c 22 0d  | from ramdisc,".|
00000390  01 e0 53 f1 20 22 20 20  50 72 65 73 73 20 54 20  |..S. "  Press T |
000003a0  74 6f 20 63 72 65 61 74  65 20 61 20 74 69 6c 65  |to create a tile|
000003b0  64 20 70 61 74 74 65 72  6e 20 77 69 74 68 20 61  |d pattern with a|
000003c0  20 6d 6f 64 65 31 33 20  53 70 72 69 74 65 20 66  | mode13 Sprite f|
000003d0  69 6c 65 20 66 72 6f 6d  20 72 61 6d 64 69 73 63  |ile from ramdisc|
000003e0  2c 22 0d 01 ea 33 f1 20  22 20 20 50 72 65 73 73  |,"...3. "  Press|
000003f0  20 42 20 74 6f 20 75 73  65 20 61 20 62 75 69 6c  | B to use a buil|
00000400  74 2d 69 6e 20 74 69 6c  69 6e 67 20 74 65 78 74  |t-in tiling text|
00000410  75 72 65 2e 22 0d 01 f4  0b f2 66 61 64 65 69 6e  |ure.".....fadein|
00000420  0d 01 fe 04 0d 02 08 05  f5 0d 02 12 08 47 24 3d  |.............G$=|
00000430  be 0d 02 1c 19 fd 20 a7  22 47 67 4b 6b 53 73 50  |...... ."GgKkSsP|
00000440  70 54 74 42 62 22 2c 47  24 29 0d 02 26 04 0d 02  |pTtBb",G$)..&...|
00000450  30 05 db 0d 02 3a 0b 6b  61 6c 69 25 3d 30 0d 02  |0....:.kali%=0..|
00000460  44 59 e7 20 a7 22 50 70  22 2c 47 24 29 20 70 6c  |DY. ."Pp",G$) pl|
00000470  61 73 6d 61 25 3d 2d 31  3a f2 70 6c 61 73 6d 61  |asma%=-1:.plasma|
00000480  3a f2 65 6e 61 62 6c 65  28 33 2c 70 6c 61 73 6d  |:.enable(3,plasm|
00000490  61 64 6f 25 29 20 8b 20  70 6c 61 73 6d 61 25 3d  |ado%) . plasma%=|
000004a0  30 3a f2 64 69 73 61 62  6c 65 28 33 2c 70 6c 61  |0:.disable(3,pla|
000004b0  73 6d 61 64 6f 25 29 0d  02 4e 04 0d 02 58 22 e7  |smado%)..N...X".|
000004c0  20 47 24 3d 22 47 22 20  84 20 47 24 3d 22 67 22  | G$="G" . G$="g"|
000004d0  20 f2 67 72 61 6e 69 74  65 70 72 6f 63 0d 02 62  | .graniteproc..b|
000004e0  41 e7 20 47 24 3d 22 53  22 20 84 20 47 24 3d 22  |A. G$="S" . G$="|
000004f0  73 22 20 ff 22 52 41 4d  22 3a e8 27 22 46 69 6c  |s" ."RAM":.'"Fil|
00000500  65 6e 61 6d 65 3a 20 22  46 24 3a ff 28 22 53 43  |ename: "F$:.("SC|
00000510  52 45 45 4e 4c 4f 41 44  20 22 2b 46 24 29 0d 02  |REENLOAD "+F$)..|
00000520  6c 17 e7 20 47 24 3d 22  4b 22 20 84 20 47 24 3d  |l.. G$="K" . G$=|
00000530  22 6b 22 20 8c 0d 02 76  08 f2 70 69 63 0d 02 80  |"k" ...v..pic...|
00000540  22 e7 20 66 61 73 74 25  20 f2 65 6e 61 62 6c 65  |". fast% .enable|
00000550  28 32 2c 6b 61 6c 69 73  6c 6f 77 65 72 25 29 0d  |(2,kalislower%).|
00000560  02 8a 05 cc 0d 02 94 1b  f2 64 69 73 61 62 6c 65  |.........disable|
00000570  28 32 2c 6b 61 6c 69 73  6c 6f 77 65 72 25 29 0d  |(2,kalislower%).|
00000580  02 9e 05 cd 0d 02 a8 04  0d 02 b2 1c e7 20 47 24  |............. G$|
00000590  3d 22 54 22 20 84 20 47  24 3d 22 74 22 20 f2 74  |="T" . G$="t" .t|
000005a0  69 6c 65 64 0d 02 bc 1d  e7 20 47 24 3d 22 42 22  |iled..... G$="B"|
000005b0  20 84 20 47 24 3d 22 62  22 20 f2 62 74 69 6c 65  | . G$="b" .btile|
000005c0  64 0d 02 c6 04 0d 02 d0  07 c8 97 87 0d 02 da 10  |d...............|
000005d0  d6 20 67 72 61 62 73 70  72 69 74 65 0d 02 e4 08  |. grabsprite....|
000005e0  eb 30 3a 87 0d 02 ee 27  f1 8a 32 38 2c 32 38 29  |.0:....'..28,28)|
000005f0  3b 22 50 72 65 73 73 20  53 50 41 43 45 20 74 6f  |;"Press SPACE to|
00000600  20 66 69 6e 69 73 68 2e  2e 2e 22 0d 02 f8 0d 41  | finish..."....A|
00000610  25 3d a6 28 31 30 30 29  0d 03 02 1b e7 20 6d 6f  |%=.(100)..... mo|
00000620  64 65 34 39 25 20 eb 34  39 3a 87 20 8b 20 eb 31  |de49% .49:. . .1|
00000630  33 3a 87 0d 03 0c 0a d6  20 69 6e 69 74 0d 03 16  |3:...... init...|
00000640  07 fd 20 30 0d 03 20 04  0d 03 2a 11 dd f2 67 72  |.. 0.. ...*...gr|
00000650  61 6e 69 74 65 70 72 6f  63 0d 03 34 09 eb 31 33  |aniteproc..4..13|
00000660  3a 87 0d 03 3e 0f 43 53  25 3d a4 63 68 6f 6f 73  |:...>.CS%=.choos|
00000670  65 0d 03 48 1d f1 8a 31  34 2c 32 39 29 3b 22 50  |e..H...14,29);"P|
00000680  6c 65 61 73 65 20 77 61  69 74 2e 2e 2e 22 0d 03  |lease wait..."..|
00000690  52 13 de 20 63 6f 64 65  32 20 31 30 32 34 2b 31  |R.. code2 1024+1|
000006a0  36 0d 03 5c 18 ee 85 f6  3a f1 22 20 61 74 20 6c  |6..\....:." at l|
000006b0  69 6e 65 20 22 3b 9e 3a  e0 0d 03 66 0a f2 63 6f  |ine ";.:...f..co|
000006c0  6c 73 67 0d 03 70 0b 6c  69 6e 6b 3d 31 34 0d 03  |lsg..p.link=14..|
000006d0  7a 09 73 70 3d 31 33 0d  03 84 0d 73 63 72 65 65  |z.sp=13....scree|
000006e0  6e 3d 31 32 0d 03 8e 0f  e3 70 61 73 73 3d 30 b8  |n=12.....pass=0.|
000006f0  32 88 32 0d 03 98 0c 50  25 3d 63 6f 64 65 32 0d  |2.2....P%=code2.|
00000700  03 a2 0d 5b 4f 50 54 20  70 61 73 73 0d 03 ac 1f  |...[OPT pass....|
00000710  2e 67 72 61 6e 69 74 65  20 53 54 4d 46 44 20 28  |.granite STMFD (|
00000720  73 70 29 21 2c 7b 6c 69  6e 6b 7d 0d 03 b6 14 4c  |sp)!,{link}....L|
00000730  44 52 20 73 63 72 65 65  6e 2c 73 63 72 6e 25 0d  |DR screen,scrn%.|
00000740  03 c0 0f 4d 4f 56 20 52  31 2c 23 32 35 33 0d 03  |...MOV R1,#253..|
00000750  ca 15 2e 79 6c 6f 6f 70  67 20 4d 4f 56 20 52 30  |...yloopg MOV R0|
00000760  2c 23 31 0d 03 d4 1e 2e  78 6c 6f 6f 70 67 20 41  |,#1.....xloopg A|
00000770  44 44 20 52 32 2c 52 30  2c 52 31 2c 4c 53 4c 23  |DD R2,R0,R1,LSL#|
00000780  36 0d 03 de 16 41 44 44  20 52 32 2c 52 32 2c 52  |6....ADD R2,R2,R|
00000790  31 2c 4c 53 4c 23 38 0d  03 e8 14 41 44 44 20 52  |1,LSL#8....ADD R|
000007a0  32 2c 52 32 2c 73 63 72  65 65 6e 0d 03 f2 10 53  |2,R2,screen....S|
000007b0  55 42 20 52 32 2c 52 32  2c 23 34 0d 03 fc 13 4c  |UB R2,R2,#4....L|
000007c0  44 52 42 20 52 34 2c 5b  52 32 2c 23 30 5d 0d 04  |DRB R4,[R2,#0]..|
000007d0  06 17 4c 44 52 42 20 52  33 2c 5b 52 32 2c 23 33  |..LDRB R3,[R2,#3|
000007e0  32 30 2a 32 5d 0d 04 10  10 41 44 44 20 52 34 2c  |20*2]....ADD R4,|
000007f0  52 34 2c 52 33 0d 04 1a  10 41 44 44 20 52 32 2c  |R4,R3....ADD R2,|
00000800  52 32 2c 23 32 0d 04 24  15 4c 44 52 42 20 52 33  |R2,#2..$.LDRB R3|
00000810  2c 5b 52 32 2c 23 33 32  30 5d 0d 04 2e 10 41 44  |,[R2,#320]....AD|
00000820  44 20 52 34 2c 52 34 2c  52 33 0d 04 38 10 41 44  |D R4,R4,R3..8.AD|
00000830  44 20 52 32 2c 52 32 2c  23 32 0d 04 42 17 4c 44  |D R2,R2,#2..B.LD|
00000840  52 42 20 52 33 2c 5b 52  32 2c 23 33 32 30 2a 32  |RB R3,[R2,#320*2|
00000850  5d 0d 04 4c 10 41 44 44  20 52 34 2c 52 34 2c 52  |]..L.ADD R4,R4,R|
00000860  33 0d 04 56 15 4d 4f 56  20 52 34 2c 52 34 2c 4c  |3..V.MOV R4,R4,L|
00000870  53 4c 23 38 2d 32 0d 04  60 0a 42 4c 20 72 6e 64  |SL#8-2..`.BL rnd|
00000880  0d 04 6a 12 53 55 42 20  52 37 2c 52 37 2c 23 31  |..j.SUB R7,R7,#1|
00000890  31 33 0d 04 74 16 41 44  44 20 52 34 2c 52 34 2c  |13..t.ADD R4,R4,|
000008a0  52 37 2c 41 53 4c 23 33  0d 04 7e 0d 43 4d 50 20  |R7,ASL#3..~.CMP |
000008b0  52 34 2c 23 30 0d 04 88  14 4c 44 52 4c 54 20 52  |R4,#0....LDRLT R|
000008c0  34 2c 6f 6c 64 63 6f 6c  25 0d 04 92 0c 42 4c 54  |4,oldcol%....BLT|
000008d0  20 6d 61 75 73 0d 04 9c  15 4d 4f 56 47 45 20 52  | maus....MOVGE R|
000008e0  34 2c 52 34 2c 41 53 52  23 38 0d 04 a6 12 80 20  |4,R4,ASR#8..... |
000008f0  52 34 2c 52 34 2c 23 25  31 31 31 31 0d 04 b0 14  |R4,R4,#%1111....|
00000900  53 54 52 4c 54 20 52 34  2c 6f 6c 64 63 6f 6c 25  |STRLT R4,oldcol%|
00000910  0d 04 ba 16 2e 6d 61 75  73 20 53 55 42 20 52 32  |.....maus SUB R2|
00000920  2c 52 32 2c 23 31 0d 04  c4 13 53 54 52 42 20 52  |,R2,#1....STRB R|
00000930  34 2c 5b 52 32 2c 23 30  5d 0d 04 ce 10 41 44 44  |4,[R2,#0]....ADD|
00000940  20 52 30 2c 52 30 2c 23  32 0d 04 d8 0f 43 4d 50  | R0,R0,#2....CMP|
00000950  20 52 30 2c 23 33 32 30  0d 04 e2 12 53 55 42 4c  | R0,#320....SUBL|
00000960  45 20 52 30 2c 52 30 2c  23 31 0d 04 ec 0e 42 4c  |E R0,R0,#1....BL|
00000970  45 20 78 6c 6f 6f 70 67  0d 04 f6 10 53 55 42 20  |E xloopg....SUB |
00000980  52 31 2c 52 31 2c 23 31  0d 05 00 0d 43 4d 50 20  |R1,R1,#1....CMP |
00000990  52 31 2c 23 31 0d 05 0a  0e 42 47 54 20 79 6c 6f  |R1,#1....BGT ylo|
000009a0  6f 70 67 0d 05 14 04 0d  05 1e 11 4d 4f 56 20 52  |opg........MOV R|
000009b0  30 2c 73 63 72 65 65 6e  0d 05 28 11 41 44 44 20  |0,screen..(.ADD |
000009c0  52 31 2c 52 30 2c 23 36  34 0d 05 32 16 41 44 44  |R1,R0,#64..2.ADD|
000009d0  20 52 32 2c 52 30 2c 23  38 31 39 32 30 2f 32 0d  | R2,R0,#81920/2.|
000009e0  05 3c 11 53 55 42 20 52  32 2c 52 32 2c 23 36 34  |.<.SUB R2,R2,#64|
000009f0  0d 05 46 1e 2e 6d 6f 76  65 6c 70 20 4c 44 4d 49  |..F..movelp LDMI|
00000a00  41 20 52 31 21 2c 7b 52  33 2d 52 31 30 7d 0d 05  |A R1!,{R3-R10}..|
00000a10  50 16 53 54 4d 49 41 20  52 30 21 2c 7b 52 33 2d  |P.STMIA R0!,{R3-|
00000a20  52 31 30 7d 0d 05 5a 0d  43 4d 50 20 52 31 2c 52  |R10}..Z.CMP R1,R|
00000a30  32 0d 05 64 0e 42 4c 54  20 6d 6f 76 65 6c 70 0d  |2..d.BLT movelp.|
00000a40  05 6e 14 4c 44 4d 46 44  20 28 73 70 29 21 2c 7b  |.n.LDMFD (sp)!,{|
00000a50  50 43 7d 0d 05 78 04 0d  05 82 20 2e 67 72 61 6e  |PC}..x.... .gran|
00000a60  69 74 65 32 20 53 54 4d  46 44 20 28 73 70 29 21  |ite2 STMFD (sp)!|
00000a70  2c 7b 6c 69 6e 6b 7d 0d  05 8c 14 4c 44 52 20 73  |,{link}....LDR s|
00000a80  63 72 65 65 6e 2c 73 63  72 6e 25 0d 05 96 0f 4d  |creen,scrn%....M|
00000a90  4f 56 20 52 35 2c 23 33  32 30 0d 05 a0 10 41 44  |OV R5,#320....AD|
00000aa0  44 20 52 35 2c 52 35 2c  23 31 0d 05 aa 0f 4d 4f  |D R5,R5,#1....MO|
00000ab0  56 20 52 31 2c 23 32 35  32 0d 05 b4 1c 2e 79 6c  |V R1,#252.....yl|
00000ac0  6f 6f 70 67 32 20 4d 4f  56 20 52 30 2c 23 33 32  |oopg2 MOV R0,#32|
00000ad0  30 2d 31 32 38 0d 05 be  1f 2e 78 6c 6f 6f 70 67  |0-128.....xloopg|
00000ae0  32 20 41 44 44 20 52 32  2c 52 30 2c 52 31 2c 4c  |2 ADD R2,R0,R1,L|
00000af0  53 4c 23 36 0d 05 c8 16  41 44 44 20 52 32 2c 52  |SL#6....ADD R2,R|
00000b00  32 2c 52 31 2c 4c 53 4c  23 38 0d 05 d2 14 41 44  |2,R1,LSL#8....AD|
00000b10  44 20 52 32 2c 52 32 2c  73 63 72 65 65 6e 0d 05  |D R2,R2,screen..|
00000b20  dc 10 53 55 42 20 52 32  2c 52 32 2c 23 34 0d 05  |..SUB R2,R2,#4..|
00000b30  e6 13 4c 44 52 42 20 52  34 2c 5b 52 32 2c 23 30  |..LDRB R4,[R2,#0|
00000b40  5d 0d 05 f0 17 4c 44 52  42 20 52 33 2c 5b 52 32  |]....LDRB R3,[R2|
00000b50  2c 23 33 32 30 2a 32 5d  0d 05 fa 10 41 44 44 20  |,#320*2]....ADD |
00000b60  52 34 2c 52 34 2c 52 33  0d 06 04 10 41 44 44 20  |R4,R4,R3....ADD |
00000b70  52 32 2c 52 32 2c 23 32  0d 06 0e 15 4c 44 52 42  |R2,R2,#2....LDRB|
00000b80  20 52 33 2c 5b 52 32 2c  23 33 32 30 5d 0d 06 18  | R3,[R2,#320]...|
00000b90  10 41 44 44 20 52 34 2c  52 34 2c 52 33 0d 06 22  |.ADD R4,R4,R3.."|
00000ba0  10 41 44 44 20 52 32 2c  52 32 2c 23 32 0d 06 2c  |.ADD R2,R2,#2..,|
00000bb0  17 4c 44 52 42 20 52 33  2c 5b 52 32 2c 23 33 32  |.LDRB R3,[R2,#32|
00000bc0  30 2a 32 5d 0d 06 36 10  41 44 44 20 52 34 2c 52  |0*2]..6.ADD R4,R|
00000bd0  34 2c 52 33 0d 06 40 15  4d 4f 56 20 52 34 2c 52  |4,R3..@.MOV R4,R|
00000be0  34 2c 4c 53 4c 23 38 2d  32 0d 06 4a 0a 42 4c 20  |4,LSL#8-2..J.BL |
00000bf0  72 6e 64 0d 06 54 12 53  55 42 20 52 37 2c 52 37  |rnd..T.SUB R7,R7|
00000c00  2c 23 31 31 33 0d 06 5e  16 41 44 44 20 52 34 2c  |,#113..^.ADD R4,|
00000c10  52 34 2c 52 37 2c 41 53  4c 23 33 0d 06 68 0d 43  |R4,R7,ASL#3..h.C|
00000c20  4d 50 20 52 34 2c 23 30  0d 06 72 14 4c 44 52 4c  |MP R4,#0..r.LDRL|
00000c30  54 20 52 34 2c 6f 6c 64  63 6f 6c 25 0d 06 7c 0d  |T R4,oldcol%..|.|
00000c40  42 4c 54 20 6d 61 75 73  32 0d 06 86 15 4d 4f 56  |BLT maus2....MOV|
00000c50  47 45 20 52 34 2c 52 34  2c 41 53 52 23 38 0d 06  |GE R4,R4,ASR#8..|
00000c60  90 12 80 20 52 34 2c 52  34 2c 23 25 31 31 31 31  |... R4,R4,#%1111|
00000c70  0d 06 9a 14 53 54 52 4c  54 20 52 34 2c 6f 6c 64  |....STRLT R4,old|
00000c80  63 6f 6c 25 0d 06 a4 17  2e 6d 61 75 73 32 20 53  |col%.....maus2 S|
00000c90  55 42 20 52 32 2c 52 32  2c 23 31 0d 06 ae 13 53  |UB R2,R2,#1....S|
00000ca0  54 52 42 20 52 34 2c 5b  52 32 2c 23 30 5d 0d 06  |TRB R4,[R2,#0]..|
00000cb0  b8 10 41 44 44 20 52 30  2c 52 30 2c 23 32 0d 06  |..ADD R0,R0,#2..|
00000cc0  c2 0d 43 4d 50 20 52 30  2c 52 35 0d 06 cc 12 53  |..CMP R0,R5....S|
00000cd0  55 42 4c 45 20 52 30 2c  52 30 2c 23 31 0d 06 d6  |UBLE R0,R0,#1...|
00000ce0  0f 42 4c 45 20 78 6c 6f  6f 70 67 32 0d 06 e0 10  |.BLE xloopg2....|
00000cf0  53 55 42 20 52 31 2c 52  31 2c 23 31 0d 06 ea 0d  |SUB R1,R1,#1....|
00000d00  43 4d 50 20 52 31 2c 23  31 0d 06 f4 0f 42 47 54  |CMP R1,#1....BGT|
00000d10  20 79 6c 6f 6f 70 67 32  0d 06 fe 04 0d 07 08 1c  | yloopg2........|
00000d20  2e 73 6d 75 64 67 65 20  4c 44 52 20 52 31 2c 6f  |.smudge LDR R1,o|
00000d30  74 68 65 72 73 63 72 6e  0d 07 12 11 4d 4f 56 20  |therscrn....MOV |
00000d40  52 30 2c 73 63 72 65 65  6e 0d 07 1c 10 41 44 44  |R0,screen....ADD|
00000d50  20 52 31 2c 52 31 2c 23  31 0d 07 26 12 41 44 44  | R1,R1,#1..&.ADD|
00000d60  20 52 30 2c 52 30 2c 23  33 32 30 0d 07 30 12 41  | R0,R0,#320..0.A|
00000d70  44 44 20 52 31 2c 52 31  2c 23 33 32 30 0d 07 3a  |DD R1,R1,#320..:|
00000d80  15 41 44 44 20 52 31 31  2c 52 30 2c 23 38 31 39  |.ADD R11,R0,#819|
00000d90  32 30 0d 07 44 12 53 55  42 20 52 31 31 2c 52 31  |20..D.SUB R11,R1|
00000da0  31 2c 23 31 0d 07 4e 16  53 55 42 20 52 31 31 2c  |1,#1..N.SUB R11,|
00000db0  52 31 31 2c 23 33 32 30  2a 32 0d 07 58 04 0d 07  |R11,#320*2..X...|
00000dc0  62 1d 2e 73 6d 75 64 67  65 6c 70 20 4c 44 52 42  |b..smudgelp LDRB|
00000dd0  20 52 32 2c 5b 52 30 2c  23 30 5d 0d 07 6c 13 4c  | R2,[R0,#0]..l.L|
00000de0  44 52 42 20 52 33 2c 5b  52 30 2c 23 31 5d 0d 07  |DRB R3,[R0,#1]..|
00000df0  76 13 4c 44 52 42 20 52  34 2c 5b 52 30 2c 23 32  |v.LDRB R4,[R0,#2|
00000e00  5d 0d 07 80 12 53 55 42  20 52 30 2c 52 30 2c 23  |]....SUB R0,R0,#|
00000e10  33 32 30 0d 07 8a 10 41  44 44 20 52 30 2c 52 30  |320....ADD R0,R0|
00000e20  2c 23 31 0d 07 94 15 4c  44 52 42 20 52 35 2c 5b  |,#1....LDRB R5,[|
00000e30  52 30 5d 2c 23 36 34 30  0d 07 9e 13 4c 44 52 42  |R0],#640....LDRB|
00000e40  20 52 36 2c 5b 52 30 2c  23 30 5d 0d 07 a8 12 53  | R6,[R0,#0]....S|
00000e50  55 42 20 52 30 2c 52 30  2c 23 33 32 30 0d 07 b2  |UB R0,R0,#320...|
00000e60  10 53 55 42 20 52 30 2c  52 30 2c 23 31 0d 07 bc  |.SUB R0,R0,#1...|
00000e70  10 41 44 44 20 52 33 2c  52 33 2c 52 32 0d 07 c6  |.ADD R3,R3,R2...|
00000e80  10 41 44 44 20 52 33 2c  52 33 2c 52 34 0d 07 d0  |.ADD R3,R3,R4...|
00000e90  10 41 44 44 20 52 33 2c  52 33 2c 52 35 0d 07 da  |.ADD R3,R3,R5...|
00000ea0  10 41 44 44 20 52 33 2c  52 33 2c 52 36 0d 07 e4  |.ADD R3,R3,R6...|
00000eb0  0e 4d 4f 56 20 52 37 2c  23 31 34 0d 07 ee 10 4d  |.MOV R7,#14....M|
00000ec0  55 4c 20 52 32 2c 52 33  2c 52 37 0d 07 f8 13 4d  |UL R2,R3,R7....M|
00000ed0  4f 56 20 52 32 2c 52 32  2c 4c 53 52 23 36 0d 08  |OV R2,R2,LSR#6..|
00000ee0  02 13 53 54 52 42 20 52  32 2c 5b 52 31 5d 2c 23  |..STRB R2,[R1],#|
00000ef0  31 0d 08 0c 10 41 44 44  20 52 30 2c 52 30 2c 23  |1....ADD R0,R0,#|
00000f00  31 0d 08 16 0e 43 4d 50  20 52 30 2c 52 31 31 0d  |1....CMP R0,R11.|
00000f10  08 20 10 42 4c 54 20 73  6d 75 64 67 65 6c 70 0d  |. .BLT smudgelp.|
00000f20  08 2a 04 0d 08 34 0d 2e  6e 6f 73 6d 75 64 67 65  |.*...4..nosmudge|
00000f30  0d 08 3e 14 4c 44 52 20  52 31 2c 6f 74 68 65 72  |..>.LDR R1,other|
00000f40  73 63 72 6e 0d 08 48 12  41 44 44 20 52 31 2c 52  |scrn..H.ADD R1,R|
00000f50  31 2c 23 33 32 30 0d 08  52 16 41 44 44 20 52 30  |1,#320..R.ADD R0|
00000f60  2c 73 63 72 65 65 6e 2c  23 33 32 30 0d 08 5c 15  |,screen,#320..\.|
00000f70  41 44 44 20 52 31 31 2c  52 30 2c 23 38 31 39 32  |ADD R11,R0,#8192|
00000f80  30 0d 08 66 14 53 55 42  20 52 31 31 2c 52 31 31  |0..f.SUB R11,R11|
00000f90  2c 23 36 34 30 0d 08 70  20 2e 63 6f 70 79 6c 6f  |,#640..p .copylo|
00000fa0  6f 70 67 20 4c 44 4d 49  41 20 52 31 21 2c 7b 52  |opg LDMIA R1!,{R|
00000fb0  32 2d 52 39 7d 0d 08 7a  15 53 54 4d 49 41 20 52  |2-R9}..z.STMIA R|
00000fc0  30 21 2c 7b 52 32 2d 52  39 7d 0d 08 84 0e 43 4d  |0!,{R2-R9}....CM|
00000fd0  50 20 52 30 2c 52 31 31  0d 08 8e 11 42 4c 54 20  |P R0,R11....BLT |
00000fe0  63 6f 70 79 6c 6f 6f 70  67 0d 08 98 12 4c 44 52  |copyloopg....LDR|
00000ff0  20 52 30 2c 63 6f 75 6e  74 65 72 0d 08 a2 0d 43  | R0,counter....C|
00001000  4d 50 20 52 30 2c 23 32  0d 08 ac 12 41 44 44 4c  |MP R0,#2....ADDL|
00001010  45 20 52 30 2c 52 30 2c  23 31 0d 08 b6 14 53 54  |E R0,R0,#1....ST|
00001020  52 4c 45 20 52 30 2c 63  6f 75 6e 74 65 72 0d 08  |RLE R0,counter..|
00001030  c0 0e 42 4c 45 20 73 6d  75 64 67 65 0d 08 ca 04  |..BLE smudge....|
00001040  0d 08 d4 12 4c 44 52 20  52 35 2c 63 6f 6c 64 61  |....LDR R5,colda|
00001050  74 61 0d 08 de 11 4d 4f  56 20 52 30 2c 73 63 72  |ta....MOV R0,scr|
00001060  65 65 6e 0d 08 e8 14 41  44 44 20 52 31 2c 52 30  |een....ADD R1,R0|
00001070  2c 23 38 31 39 32 30 0d  08 f2 1d 2e 63 68 61 6e  |,#81920.....chan|
00001080  67 65 6c 70 20 4c 44 52  42 20 52 32 2c 5b 52 30  |gelp LDRB R2,[R0|
00001090  2c 23 30 5d 0d 08 fc 13  4c 44 52 42 20 52 36 2c  |,#0]....LDRB R6,|
000010a0  5b 52 35 2c 52 32 5d 0d  09 06 13 53 54 52 42 20  |[R5,R2]....STRB |
000010b0  52 36 2c 5b 52 30 5d 2c  23 31 0d 09 10 0d 43 4d  |R6,[R0],#1....CM|
000010c0  50 20 52 30 2c 52 31 0d  09 1a 10 42 4c 54 20 63  |P R0,R1....BLT c|
000010d0  68 61 6e 67 65 6c 70 0d  09 24 1a 2e 66 69 6e 69  |hangelp..$..fini|
000010e0  20 4c 44 4d 46 44 20 28  73 70 29 21 2c 7b 50 43  | LDMFD (sp)!,{PC|
000010f0  7d 0d 09 2e 1c 2e 63 6f  6c 64 61 74 61 20 45 51  |}.....coldata EQ|
00001100  55 44 20 63 6f 64 65 32  2b 31 30 32 34 0d 09 38  |UD code2+1024..8|
00001110  13 2e 6f 6c 64 63 6f 6c  25 20 45 51 55 44 20 30  |..oldcol% EQUD 0|
00001120  0d 09 42 1a 2e 73 63 72  6e 25 20 20 20 45 51 55  |..B..scrn%   EQU|
00001130  44 20 20 73 63 72 65 65  6e 25 0d 09 4c 26 2e 6f  |D  screen%..L&.o|
00001140  74 68 65 72 73 63 72 6e  20 45 51 55 44 20 63 6f  |therscrn EQUD co|
00001150  64 65 2b 31 30 32 34 2a  31 36 2b 38 31 39 32 30  |de+1024*16+81920|
00001160  0d 09 56 13 2e 63 6f 75  6e 74 65 72 20 45 51 55  |..V..counter EQU|
00001170  44 20 31 0d 09 60 14 2e  72 6e 64 20 4c 44 52 20  |D 1..`..rnd LDR |
00001180  52 37 2c 73 65 65 64 0d  09 6a 0d 4c 44 52 20 52  |R7,seed..j.LDR R|
00001190  38 2c 63 31 0d 09 74 0d  4c 44 52 20 52 39 2c 63  |8,c1..t.LDR R9,c|
000011a0  32 0d 09 7e 13 4d 4c 41  20 52 37 2c 52 38 2c 52  |2..~.MLA R7,R8,R|
000011b0  37 2c 52 39 0d 09 88 14  4d 4c 41 20 52 31 30 2c  |7,R9....MLA R10,|
000011c0  52 38 2c 52 37 2c 52 39  0d 09 92 10 53 54 52 20  |R8,R7,R9....STR |
000011d0  52 31 30 2c 73 65 65 64  0d 09 9c 16 82 20 52 37  |R10,seed..... R7|
000011e0  2c 52 37 2c 52 31 30 2c  52 4f 52 23 31 36 0d 09  |,R7,R10,ROR#16..|
000011f0  a6 0f 4d 4f 56 20 52 38  2c 23 32 35 36 0d 09 b0  |..MOV R8,#256...|
00001200  10 53 55 42 20 52 38 2c  52 38 2c 23 31 0d 09 ba  |.SUB R8,R8,#1...|
00001210  0e 80 20 52 37 2c 52 37  2c 52 38 0d 09 c4 0e 4d  |.. R7,R7,R8....M|
00001220  4f 56 20 50 43 2c 52 31  34 0d 09 ce 14 2e 63 31  |OV PC,R14.....c1|
00001230  20 45 51 55 44 20 31 36  36 34 35 32 35 0d 09 d8  | EQUD 1664525...|
00001240  16 2e 63 32 20 45 51 55  44 20 39 30 37 36 33 33  |..c2 EQUD 907633|
00001250  33 39 33 0d 09 e2 10 2e  73 65 65 64 20 45 51 55  |393.....seed EQU|
00001260  44 20 91 0d 09 ec 0f 2e  72 6e 64 25 45 51 55 44  |D ......rnd%EQUD|
00001270  20 30 0d 09 f6 05 5d 0d  0a 00 05 ed 0d 0a 0a 04  | 0....].........|
00001280  0d 0a 14 0c d6 67 72 61  6e 69 74 65 0d 0a 1e 0c  |.....granite....|
00001290  e6 20 30 20 c8 9c 20 30  0d 0a 28 1d c8 93 c8 90  |. 0 .. 0..(.....|
000012a0  20 31 32 38 30 2d 36 34  2a 34 2c 30 2c 32 35 36  | 1280-64*4,0,256|
000012b0  2c 31 30 32 33 0d 0a 32  0e d6 20 67 72 61 6e 69  |,1023..2.. grani|
000012c0  74 65 32 0d 0a 3c 18 c8  93 c8 90 20 30 2c 31 30  |te2..<..... 0,10|
000012d0  32 34 2c 31 32 37 39 2c  2d 31 32 0d 0a 46 0d c8  |24,1279,-12..F..|
000012e0  92 20 30 2c 31 30 32 33  0d 0a 50 05 e1 0d 0a 5a  |. 0,1023..P....Z|
000012f0  04 0d 0a 64 0b dd f2 63  6f 6c 73 67 0d 0a 6e 14  |...d...colsg..n.|
00001300  64 61 74 61 25 3d 63 6f  64 65 32 2b 31 30 32 34  |data%=code2+1024|
00001310  0d 0a 78 0c e3 49 25 3d  30 b8 31 35 0d 0a 82 19  |..x..I%=0.15....|
00001320  64 61 74 61 25 3f 49 25  3d 43 4f 4c 25 28 43 53  |data%?I%=COL%(CS|
00001330  25 2c 49 25 29 0d 0a 8c  05 ed 0d 0a 96 05 e1 0d  |%,I%)...........|
00001340  0a a0 04 0d 0a aa 0b dd  f2 73 65 74 75 70 0d 0a  |.........setup..|
00001350  b4 09 f2 73 63 72 6e 0d  0a be 1a de 20 63 6f 64  |...scrn..... cod|
00001360  65 20 31 30 32 34 2a 31  36 2b 38 31 39 32 30 2a  |e 1024*16+81920*|
00001370  32 0d 0a c8 05 e1 0d 0a  d2 04 0d 0a dc 0a dd f2  |2...............|
00001380  63 6f 6c 73 0d 0a e6 14  de 20 52 28 37 29 2c 47  |cols..... R(7),G|
00001390  28 37 29 2c 42 28 37 29  0d 0a f0 0e e3 20 49 25  |(7),B(7)..... I%|
000013a0  3d 30 20 b8 20 36 0d 0a  fa 17 f3 20 52 28 49 25  |=0 . 6..... R(I%|
000013b0  29 2c 47 28 49 25 29 2c  42 28 49 25 29 0d 0b 04  |),G(I%),B(I%)...|
000013c0  05 ed 0d 0b 0e 04 0d 0b  18 10 de 20 43 4f 4c 25  |........... COL%|
000013d0  28 37 2c 31 35 29 0d 0b  22 0e e3 20 4a 25 3d 30  |(7,15)..".. J%=0|
000013e0  20 b8 20 37 0d 0b 2c 0f  e3 20 43 25 3d 30 20 b8  | . 7..,.. C%=0 .|
000013f0  20 31 35 0d 0b 36 11 f3  20 43 4f 4c 25 28 4a 25  | 15..6.. COL%(J%|
00001400  2c 43 25 29 0d 0b 40 07  ed 3a ed 0d 0b 4a 0d de  |,C%)..@..:...J..|
00001410  20 43 25 28 32 35 35 29  0d 0b 54 04 0d 0b 5e 0e  | C%(255)..T...^.|
00001420  de 20 63 6f 6c 73 20 32  35 36 0d 0b 68 04 0d 0b  |. cols 256..h...|
00001430  72 04 0d 0b 7c 05 e1 0d  0b 86 04 0d 0b 90 0a dd  |r...|...........|
00001440  f2 73 63 72 6e 0d 0b 9a  16 de 20 62 6c 6f 63 6b  |.scrn..... block|
00001450  25 20 31 35 2c 62 32 25  20 31 35 0d 0b a4 10 62  |% 15,b2% 15....b|
00001460  6c 6f 63 6b 25 21 30 3d  31 34 38 0d 0b ae 0e 62  |lock%!0=148....b|
00001470  6c 6f 63 6b 25 21 34 3d  37 0d 0b b8 0e 62 6c 6f  |lock%!4=7....blo|
00001480  63 6b 25 21 38 3d 36 0d  0b c2 10 62 6c 6f 63 6b  |ck%!8=6....block|
00001490  25 21 31 32 3d 2d 31 0d  0b cc 27 c8 99 20 22 4f  |%!12=-1...'.. "O|
000014a0  53 5f 52 65 61 64 56 64  75 56 61 72 69 61 62 6c  |S_ReadVduVariabl|
000014b0  65 73 22 2c 62 6c 6f 63  6b 25 2c 62 32 25 0d 0b  |es",block%,b2%..|
000014c0  d6 11 73 63 72 65 65 6e  25 3d 62 32 25 21 30 0d  |..screen%=b2%!0.|
000014d0  0b e0 05 e1 0d 0b ea 04  0d 0b f4 0f dc 20 31 2c  |............. 1,|
000014e0  30 2e 35 2c 30 2e 35 0d  0b fe 0d dc 20 31 2c 31  |0.5,0.5..... 1,1|
000014f0  2c 30 2e 35 0d 0c 08 0f  dc 20 30 2e 35 2c 31 2c  |,0.5..... 0.5,1,|
00001500  30 2e 35 0d 0c 12 0d dc  20 30 2e 35 2c 31 2c 31  |0.5..... 0.5,1,1|
00001510  0d 0c 1c 0f dc 20 30 2e  35 2c 30 2e 35 2c 31 0d  |..... 0.5,0.5,1.|
00001520  0c 26 0d dc 20 31 2c 30  2e 35 2c 31 0d 0c 30 0b  |.&.. 1,0.5,1..0.|
00001530  dc 20 31 2c 31 2c 31 0d  0c 3a 04 0d 0c 44 2d dc  |. 1,1,1..:...D-.|
00001540  20 30 2c 30 2c 31 2c 32  2c 34 2c 35 2c 36 2c 37  | 0,0,1,2,4,5,6,7|
00001550  2c 31 36 2c 31 37 2c 31  38 2c 31 39 2c 36 30 2c  |,16,17,18,19,60,|
00001560  36 31 2c 36 32 2c 36 33  0d 0c 4e 35 dc 20 30 2c  |61,62,63..N5. 0,|
00001570  30 2c 31 2c 32 2c 33 36  2c 33 37 2c 33 38 2c 33  |0,1,2,36,37,38,3|
00001580  39 2c 38 30 2c 38 31 2c  38 32 2c 38 33 2c 32 34  |9,80,81,82,83,24|
00001590  34 2c 32 34 35 2c 32 34  36 2c 32 34 37 0d 0c 58  |4,245,246,247..X|
000015a0  35 dc 20 30 2c 30 2c 31  2c 32 2c 33 32 2c 33 33  |5. 0,0,1,2,32,33|
000015b0  2c 33 34 2c 33 35 2c 37  36 2c 37 37 2c 37 38 2c  |,34,35,76,77,78,|
000015c0  37 39 2c 32 34 30 2c 32  34 31 2c 32 34 32 2c 32  |79,240,241,242,2|
000015d0  34 33 0d 0c 62 39 dc 20  30 2c 31 2c 32 2c 33 2c  |43..b9. 0,1,2,3,|
000015e0  34 30 2c 34 31 2c 34 32  2c 34 33 2c 31 39 36 2c  |40,41,42,43,196,|
000015f0  31 39 37 2c 31 39 38 2c  31 39 39 2c 32 34 38 2c  |197,198,199,248,|
00001600  32 34 39 2c 32 35 30 2c  32 35 31 0d 0c 6c 3a dc  |249,250,251..l:.|
00001610  20 30 2c 30 2c 31 2c 32  2c 20 38 2c 39 2c 31 30  | 0,0,1,2, 8,9,10|
00001620  2c 31 31 2c 20 31 36 34  2c 31 36 35 2c 31 36 36  |,11, 164,165,166|
00001630  2c 31 36 37 2c 20 32 31  36 2c 32 31 37 2c 32 31  |,167, 216,217,21|
00001640  38 2c 32 31 39 0d 0c 76  37 dc 20 30 2c 30 2c 31  |8,219..v7. 0,0,1|
00001650  2c 32 2c 38 2c 39 2c 31  30 2c 31 31 2c 31 33 32  |,2,8,9,10,11,132|
00001660  2c 31 33 33 2c 31 33 34  2c 31 33 35 2c 31 38 34  |,133,134,135,184|
00001670  2c 31 38 35 2c 31 38 36  2c 31 38 37 0d 0c 80 39  |,185,186,187...9|
00001680  dc 20 30 2c 31 2c 32 2c  33 2c 34 34 2c 34 35 2c  |. 0,1,2,3,44,45,|
00001690  34 36 2c 34 37 2c 32 30  38 2c 32 30 39 2c 32 31  |46,47,208,209,21|
000016a0  30 2c 32 31 31 2c 32 35  32 2c 32 35 33 2c 32 35  |0,211,252,253,25|
000016b0  34 2c 32 35 35 0d 0c 8a  39 dc 20 30 2c 31 2c 32  |4,255...9. 0,1,2|
000016c0  2c 33 2c 34 34 2c 34 35  2c 34 36 2c 34 37 2c 32  |,3,44,45,46,47,2|
000016d0  30 38 2c 32 30 39 2c 32  31 30 2c 32 31 31 2c 32  |08,209,210,211,2|
000016e0  35 32 2c 32 35 33 2c 32  35 34 2c 32 35 35 0d 0c  |52,253,254,255..|
000016f0  94 04 0d 0c 9e 09 dd f2  70 69 63 0d 0c a8 09 eb  |........pic.....|
00001700  31 33 3a 87 0d 0c b2 1d  f1 8a 31 34 2c 32 39 29  |13:.......14,29)|
00001710  3b 22 50 6c 65 61 73 65  20 77 61 69 74 2e 2e 2e  |;"Please wait...|
00001720  22 0d 0c bc 04 0d 0c c6  0e 41 25 3d 73 63 72 65  |"........A%=scre|
00001730  65 6e 25 0d 0c d0 0a 43  53 25 3d 2d 31 0d 0c da  |en%....CS%=-1...|
00001740  0a 44 43 53 25 3d 31 0d  0c e4 1b e3 20 59 59 25  |.DCS%=1..... YY%|
00001750  3d 30 20 b8 20 31 32 38  2a 37 2d 31 20 88 20 31  |=0 . 128*7-1 . 1|
00001760  32 38 0d 0c ee 0d 43 53  25 2b 3d 44 43 53 25 0d  |28....CS%+=DCS%.|
00001770  0c f8 13 e7 20 43 53 25  3d 34 20 44 43 53 25 3d  |.... CS%=4 DCS%=|
00001780  2d 31 0d 0d 02 1a e3 20  59 25 3d 59 59 25 20 b8  |-1..... Y%=YY% .|
00001790  20 59 59 25 2b 31 32 38  20 88 20 34 0d 0d 0c 04  | YY%+128 . 4....|
000017a0  0d 0d 16 0f e3 20 43 25  3d 30 20 b8 20 31 35 0d  |..... C%=0 . 15.|
000017b0  0d 20 2f 50 25 28 43 25  29 3d 31 36 2f 28 28 20  |. /P%(C%)=16/(( |
000017c0  28 31 36 2a 28 b5 28 59  25 2f 31 32 38 2a af 29  |(16*(.(Y%/128*.)|
000017d0  5e 32 29 20 2d 43 25 29  5e 34 29 2b 31 29 0d 0d  |^2) -C%)^4)+1)..|
000017e0  2a 05 ed 0d 0d 34 04 0d  0d 3e 08 54 25 3d 30 0d  |*....4...>.T%=0.|
000017f0  0d 48 08 43 25 3d 30 0d  0d 52 05 f5 0d 0d 5c 04  |.H.C%=0..R....\.|
00001800  0d 0d 66 0f c8 95 20 50  25 28 43 25 29 3e 30 0d  |..f... P%(C%)>0.|
00001810  0d 70 0d 50 25 28 43 25  29 2d 3d 31 0d 0d 7a 0d  |.p.P%(C%)-=1..z.|
00001820  54 25 28 54 25 29 3d 43  25 0d 0d 84 09 54 25 2b  |T%(T%)=C%....T%+|
00001830  3d 31 0d 0d 8e 05 ce 0d  0d 98 09 43 25 2b 3d 31  |=1.........C%+=1|
00001840  0d 0d a2 0b fd 20 43 25  3d 31 36 0d 0d ac 0b 4e  |..... C%=16....N|
00001850  25 3d 54 25 2d 31 0d 0d  b6 04 0d 0d c0 0f e3 20  |%=T%-1......... |
00001860  58 25 3d 30 20 b8 20 33  31 0d 0d ca 1a 43 25 3d  |X%=0 . 31....C%=|
00001870  43 4f 4c 25 28 43 53 25  2c 54 25 28 b3 28 4e 25  |COL%(CS%,T%(.(N%|
00001880  29 29 29 0d 0d d4 13 e7  20 43 25 3e 30 20 43 25  |)))..... C%>0 C%|
00001890  2d 3d b3 28 31 29 0d 0d  de 0a 3f 41 25 3d 43 25  |-=.(1)....?A%=C%|
000018a0  0d 0d e8 09 41 25 2b 3d  31 0d 0d f2 05 ed 0d 0d  |....A%+=1.......|
000018b0  fc 0a 41 25 2d 3d 33 32  0d 0e 06 0b 41 25 2b 3d  |..A%-=32....A%+=|
000018c0  33 32 30 0d 0e 10 05 ed  0d 0e 1a 05 ed 0d 0e 24  |320............$|
000018d0  04 0d 0e 2e 19 e3 20 58  58 25 3d 30 20 b8 20 39  |...... XX%=0 . 9|
000018e0  2a 33 32 2d 31 20 88 20  33 32 0d 0e 38 0e 41 25  |*32-1 . 32..8.A%|
000018f0  3d 73 63 72 65 65 6e 25  0d 0e 42 04 0d 0e 4c 10  |=screen%..B...L.|
00001900  e3 20 59 25 3d 30 20 b8  20 32 35 35 0d 0e 56 0e  |. Y%=0 . 255..V.|
00001910  e3 20 58 25 3d 30 20 b8  20 37 0d 0e 60 11 21 28  |. X%=0 . 7..`.!(|
00001920  41 25 2b 58 58 25 29 3d  21 41 25 0d 0e 6a 09 41  |A%+XX%)=!A%..j.A|
00001930  25 2b 3d 34 0d 0e 74 05  ed 0d 0e 7e 0a 41 25 2d  |%+=4..t....~.A%-|
00001940  3d 33 32 0d 0e 88 0b 41  25 2b 3d 33 32 30 0d 0e  |=32....A%+=320..|
00001950  92 05 ed 0d 0e 9c 04 0d  0e a6 05 ed 0d 0e b0 04  |................|
00001960  0d 0e ba 0e 58 58 25 3d  b3 28 32 29 2a 34 0d 0e  |....XX%=.(2)*4..|
00001970  c4 0e 59 59 25 3d b3 28  32 29 2a 34 0d 0e ce 0e  |..YY%=.(2)*4....|
00001980  44 41 3d af 2f b3 28 31  36 29 0d 0e d8 04 0d 0e  |DA=./.(16)......|
00001990  e2 13 e3 20 4a 25 3d 31  20 b8 20 33 2b b3 28 33  |... J%=1 . 3+.(3|
000019a0  29 0d 0e ec 07 41 3d 30  0d 0e f6 08 43 25 3d 30  |)....A=0....C%=0|
000019b0  0d 0f 00 17 e3 20 49 25  3d 30 20 b8 20 31 32 37  |..... I%=0 . 127|
000019c0  39 20 88 20 58 58 25 0d  0f 0a 24 c8 93 c8 90 20  |9 . XX%...$.... |
000019d0  49 25 2c 30 2c 58 58 25  2c 31 30 32 33 20 b8 20  |I%,0,XX%,1023 . |
000019e0  49 25 2c 58 58 25 2a b5  28 41 29 0d 0f 14 09 41  |I%,XX%*.(A)....A|
000019f0  2b 3d 44 41 0d 0f 1e 0f  e7 20 41 3e 32 2a af 20  |+=DA..... A>2*. |
00001a00  41 3d 30 0d 0f 28 05 ed  0d 0f 32 08 43 25 3d 30  |A=0..(....2.C%=0|
00001a10  0d 0f 3c 07 41 3d 30 0d  0f 46 17 e3 20 49 25 3d  |..<.A=0..F.. I%=|
00001a20  30 20 b8 20 31 30 32 33  20 88 20 59 59 25 0d 0f  |0 . 1023 . YY%..|
00001a30  50 24 c8 93 c8 90 20 30  2c 49 25 2c 31 32 37 39  |P$.... 0,I%,1279|
00001a40  2c 59 59 25 20 b8 20 59  59 25 2a b5 28 41 29 2c  |,YY% . YY%*.(A),|
00001a50  49 25 0d 0f 5a 09 41 2b  3d 44 41 0d 0f 64 0f e7  |I%..Z.A+=DA..d..|
00001a60  20 41 3e 32 2a af 20 41  3d 30 0d 0f 6e 05 ed 0d  | A>2*. A=0..n...|
00001a70  0f 78 04 0d 0f 82 1c c8  93 c8 90 20 30 2c 30 2c  |.x......... 0,0,|
00001a80  31 32 37 35 2c 31 30 32  33 20 b8 20 34 2c 30 0d  |1275,1023 . 4,0.|
00001a90  0f 8c 05 ed 0d 0f 96 04  0d 0f a0 0e 41 25 3d 73  |............A%=s|
00001aa0  63 72 65 65 6e 25 0d 0f  aa 10 e3 20 59 25 3d 30  |creen%..... Y%=0|
00001ab0  20 b8 20 32 35 35 0d 0f  b4 0f e3 20 58 25 3d 30  | . 255..... X%=0|
00001ac0  20 b8 20 37 39 0d 0f be  11 3f 41 25 3d 3f 28 41  | . 79....?A%=?(A|
00001ad0  25 2b 31 36 30 29 0d 0f  c8 09 41 25 2b 3d 31 0d  |%+160)....A%+=1.|
00001ae0  0f d2 05 ed 0d 0f dc 0a  41 25 2d 3d 38 30 0d 0f  |........A%-=80..|
00001af0  e6 0b 41 25 2b 3d 33 32  30 0d 0f f0 05 ed 0d 0f  |..A%+=320.......|
00001b00  fa 04 0d 10 04 18 e3 20  58 58 25 3d 38 30 20 b8  |....... XX%=80 .|
00001b10  20 33 2a 38 30 20 88 20  38 30 0d 10 0e 0e 41 25  | 3*80 . 80....A%|
00001b20  3d 73 63 72 65 65 6e 25  0d 10 18 04 0d 10 22 10  |=screen%......".|
00001b30  e3 20 59 25 3d 30 20 b8  20 32 35 35 0d 10 2c 0f  |. Y%=0 . 255..,.|
00001b40  e3 20 58 25 3d 30 20 b8  20 31 39 0d 10 36 11 21  |. X%=0 . 19..6.!|
00001b50  28 41 25 2b 58 58 25 29  3d 21 41 25 0d 10 40 09  |(A%+XX%)=!A%..@.|
00001b60  41 25 2b 3d 34 0d 10 4a  05 ed 0d 10 54 0a 41 25  |A%+=4..J....T.A%|
00001b70  2d 3d 38 30 0d 10 5e 0b  41 25 2b 3d 33 32 30 0d  |-=80..^.A%+=320.|
00001b80  10 68 05 ed 0d 10 72 04  0d 10 7c 05 ed 0d 10 86  |.h....r...|.....|
00001b90  05 e1 0d 10 90 04 0d 10  9a 0c dd f2 70 6c 61 73  |............plas|
00001ba0  6d 61 0d 10 a4 09 eb 31  33 3a 87 0d 10 ae 0f 43  |ma.....13:.....C|
00001bb0  53 25 3d a4 63 68 6f 6f  73 65 0d 10 b8 08 43 25  |S%=.choose....C%|
00001bc0  3d 30 0d 10 c2 10 e3 20  49 25 3d 30 20 b8 20 32  |=0..... I%=0 . 2|
00001bd0  35 35 0d 10 cc 25 c8 99  20 22 43 6f 6c 6f 75 72  |55...%.. "Colour|
00001be0  54 72 61 6e 73 5f 53 65  74 47 43 4f 4c 22 2c a4  |Trans_SetGCOL",.|
00001bf0  63 6f 6c 28 43 25 29 0d  10 d6 12 c8 93 c8 90 20  |col(C%)........ |
00001c00  30 2c 31 30 30 38 2c 31  36 0d 10 e0 13 43 25 28  |0,1008,16....C%(|
00001c10  49 25 29 3d 3f 73 63 72  65 65 6e 25 0d 10 ea 09  |I%)=?screen%....|
00001c20  43 25 2b 3d 31 0d 10 f4  05 ed 0d 10 fe 04 0d 11  |C%+=1...........|
00001c30  08 08 43 25 3d 30 0d 11  12 07 41 3d 30 0d 11 1c  |..C%=0....A=0...|
00001c40  14 e3 20 52 3d 38 32 30  20 b8 20 30 20 88 20 2d  |.. R=820 . 0 . -|
00001c50  34 0d 11 26 09 43 25 2b  3d 38 0d 11 30 12 e7 20  |4..&.C%+=8..0.. |
00001c60  43 25 3e 3d 32 35 36 20  43 25 3d 30 0d 11 3a 25  |C%>=256 C%=0..:%|
00001c70  c8 99 20 22 43 6f 6c 6f  75 72 54 72 61 6e 73 5f  |.. "ColourTrans_|
00001c80  53 65 74 47 43 4f 4c 22  2c a4 63 6f 6c 28 43 25  |SetGCOL",.col(C%|
00001c90  29 0d 11 44 12 c8 8f c8  90 20 36 34 30 2c 35 31  |)..D..... 640,51|
00001ca0  32 2c 52 0d 11 4e 05 ed  0d 11 58 04 0d 11 62 09  |2,R..N....X...b.|
00001cb0  58 58 25 3d 34 0d 11 6c  09 59 59 25 3d 34 0d 11  |XX%=4..l.YY%=4..|
00001cc0  76 08 41 25 3d 36 0d 11  80 0b 44 41 3d af 2f 31  |v.A%=6....DA=./1|
00001cd0  36 0d 11 8a 0e e3 20 4a  25 3d 31 20 b8 20 33 0d  |6..... J%=1 . 3.|
00001ce0  11 94 07 41 3d 30 0d 11  9e 08 43 25 3d 30 0d 11  |...A=0....C%=0..|
00001cf0  a8 17 e3 20 49 25 3d 30  20 b8 20 31 32 37 39 20  |... I%=0 . 1279 |
00001d00  88 20 58 58 25 0d 11 b2  23 c8 93 c8 90 20 49 25  |. XX%...#.... I%|
00001d10  2c 30 2c 58 58 25 2c 31  30 32 33 20 b8 20 49 25  |,0,XX%,1023 . I%|
00001d20  2c 41 25 2a b5 28 41 29  0d 11 bc 09 41 2b 3d 44  |,A%*.(A)....A+=D|
00001d30  41 0d 11 c6 0f e7 20 41  3e 32 2a af 20 41 3d 30  |A..... A>2*. A=0|
00001d40  0d 11 d0 05 ed 0d 11 da  08 43 25 3d 30 0d 11 e4  |.........C%=0...|
00001d50  07 41 3d 30 0d 11 ee 17  e3 20 49 25 3d 30 20 b8  |.A=0..... I%=0 .|
00001d60  20 31 30 32 33 20 88 20  59 59 25 0d 11 f8 23 c8  | 1023 . YY%...#.|
00001d70  93 c8 90 20 30 2c 49 25  2c 31 32 37 39 2c 59 59  |... 0,I%,1279,YY|
00001d80  25 20 b8 20 41 25 2a b5  28 41 29 2c 49 25 0d 12  |% . A%*.(A),I%..|
00001d90  02 09 41 2b 3d 44 41 0d  12 0c 0f e7 20 41 3e 32  |..A+=DA..... A>2|
00001da0  2a af 20 41 3d 30 0d 12  16 05 ed 0d 12 20 04 0d  |*. A=0....... ..|
00001db0  12 2a 1c c8 93 c8 90 20  30 2c 30 2c 31 32 37 35  |.*..... 0,0,1275|
00001dc0  2c 31 30 32 33 20 b8 20  34 2c 30 0d 12 34 05 ed  |,1023 . 4,0..4..|
00001dd0  0d 12 3e 10 e3 20 49 25  3d 30 20 b8 20 32 35 35  |..>.. I%=0 . 255|
00001de0  0d 12 48 25 e7 20 49 25  3c 32 35 35 20 4e 43 25  |..H%. I%<255 NC%|
00001df0  3d 43 25 28 49 25 2b 31  29 20 8b 20 4e 43 25 3d  |=C%(I%+1) . NC%=|
00001e00  43 25 28 30 29 0d 12 52  16 3f 28 63 6f 6c 73 2b  |C%(0)..R.?(cols+|
00001e10  43 25 28 49 25 29 29 3d  4e 43 25 0d 12 5c 05 ed  |C%(I%))=NC%..\..|
00001e20  0d 12 66 04 0d 12 70 05  e1 0d 12 7a 04 0d 12 84  |..f...p....z....|
00001e30  0d dd a4 63 6f 6c 28 6e  25 29 0d 12 8e 10 52 25  |...col(n%)....R%|
00001e40  3d 6e 25 2a 52 28 43 53  25 29 0d 12 98 10 47 25  |=n%*R(CS%)....G%|
00001e50  3d 6e 25 2a 47 28 43 53  25 29 0d 12 a2 10 42 25  |=n%*G(CS%)....B%|
00001e60  3d 6e 25 2a 42 28 43 53  25 29 0d 12 ac 1e 3d 28  |=n%*B(CS%)....=(|
00001e70  42 25 3c 3c 32 34 29 2b  28 47 25 3c 3c 31 36 29  |B%<<24)+(G%<<16)|
00001e80  2b 28 52 25 3c 3c 38 29  0d 12 b6 04 0d 12 c0 0f  |+(R%<<8)........|
00001e90  dd a4 64 6f 5f 69 74 28  6e 25 29 0d 12 ca 0a 72  |..do_it(n%)....r|
00001ea0  65 67 3d 6e 25 0d 12 d4  0d 5b 4f 50 54 20 70 61  |eg=n%....[OPT pa|
00001eb0  73 73 0d 12 de 15 4d 4f  56 20 52 37 2c 72 65 67  |ss....MOV R7,reg|
00001ec0  2c 4c 53 52 23 32 34 0d  12 e8 19 53 55 42 20 72  |,LSR#24....SUB r|
00001ed0  65 67 2c 72 65 67 2c 52  37 2c 4c 53 4c 23 32 34  |eg,reg,R7,LSL#24|
00001ee0  0d 12 f2 15 4d 4f 56 20  52 38 2c 72 65 67 2c 4c  |....MOV R8,reg,L|
00001ef0  53 52 23 31 36 0d 12 fc  19 53 55 42 20 72 65 67  |SR#16....SUB reg|
00001f00  2c 72 65 67 2c 52 38 2c  4c 53 4c 23 31 36 0d 13  |,reg,R8,LSL#16..|
00001f10  06 14 4d 4f 56 20 52 39  2c 72 65 67 2c 4c 53 52  |..MOV R9,reg,LSR|
00001f20  23 38 0d 13 10 18 53 55  42 20 72 65 67 2c 72 65  |#8....SUB reg,re|
00001f30  67 2c 52 39 2c 4c 53 4c  23 38 0d 13 1a 16 4c 44  |g,R9,LSL#8....LD|
00001f40  52 42 20 72 65 67 2c 5b  52 31 30 2c 72 65 67 5d  |RB reg,[R10,reg]|
00001f50  0d 13 24 14 4c 44 52 42  20 52 37 2c 5b 52 31 30  |..$.LDRB R7,[R10|
00001f60  2c 52 37 5d 0d 13 2e 14  4c 44 52 42 20 52 38 2c  |,R7]....LDRB R8,|
00001f70  5b 52 31 30 2c 52 38 5d  0d 13 38 14 4c 44 52 42  |[R10,R8]..8.LDRB|
00001f80  20 52 39 2c 5b 52 31 30  2c 52 39 5d 0d 13 42 18  | R9,[R10,R9]..B.|
00001f90  41 44 44 20 72 65 67 2c  72 65 67 2c 52 39 2c 4c  |ADD reg,reg,R9,L|
00001fa0  53 4c 23 38 0d 13 4c 19  41 44 44 20 72 65 67 2c  |SL#8..L.ADD reg,|
00001fb0  72 65 67 2c 52 38 2c 4c  53 4c 23 31 36 0d 13 56  |reg,R8,LSL#16..V|
00001fc0  19 41 44 44 20 72 65 67  2c 72 65 67 2c 52 37 2c  |.ADD reg,reg,R7,|
00001fd0  4c 53 4c 23 32 34 0d 13  60 05 5d 0d 13 6a 06 3d  |LSL#24..`.]..j.=|
00001fe0  31 0d 13 74 04 0d 13 7e  0b dd f2 61 73 73 36 36  |1..t...~...ass66|
00001ff0  0d 13 88 1c e3 20 70 61  73 73 3d 30 20 b8 20 32  |..... pass=0 . 2|
00002000  20 88 20 32 3a 50 25 3d  63 6f 64 65 0d 13 92 0d  | . 2:P%=code....|
00002010  5b 4f 50 54 20 70 61 73  73 0d 13 9c 10 2e 79 61  |[OPT pass.....ya|
00002020  73 73 20 45 51 55 44 20  30 0d 13 a6 22 2e 69 6e  |ss EQUD 0...".in|
00002030  69 74 20 20 20 20 20 20  20 53 54 4d 46 44 20 28  |it       STMFD (|
00002040  73 70 29 21 2c 7b 6c 69  6e 6b 7d 0d 13 b0 04 0d  |sp)!,{link}.....|
00002050  13 ba 1b 20 20 20 20 20  20 20 20 20 20 20 20 42  |...            B|
00002060  4c 20 76 61 72 73 72 65  61 64 0d 13 c4 18 20 20  |L varsread....  |
00002070  20 20 20 20 20 20 20 20  20 20 53 57 49 20 26 31  |          SWI &1|
00002080  30 43 0d 13 ce 04 0d 13  d8 14 41 44 44 20 52 35  |0C........ADD R5|
00002090  2c 73 63 72 65 65 6e 2c  23 78 0d 13 e2 14 41 44  |,screen,#x....AD|
000020a0  44 20 52 35 2c 52 35 2c  23 33 32 30 2a 79 0d 13  |D R5,R5,#320*y..|
000020b0  ec 0e 4c 44 52 20 52 34  2c 70 6f 73 0d 13 f6 12  |..LDR R4,pos....|
000020c0  4c 44 52 20 52 33 2c 70  6f 73 64 61 74 61 0d 14  |LDR R3,posdata..|
000020d0  00 04 0d 14 0a 0d 2e 6d  61 69 6e 6c 6f 6f 70 0d  |.......mainloop.|
000020e0  14 14 05 5d 0d 14 1e 0d  e7 20 66 61 73 74 25 20  |...]..... fast% |
000020f0  8c 0d 14 28 0d 5b 4f 50  54 20 70 61 73 73 0d 14  |...(.[OPT pass..|
00002100  32 0e 4d 4f 56 20 52 30  2c 23 31 39 0d 14 3c 11  |2.MOV R0,#19..<.|
00002110  53 57 49 20 22 4f 53 5f  42 79 74 65 22 0d 14 46  |SWI "OS_Byte"..F|
00002120  05 5d 0d 14 50 05 cd 0d  14 5a 04 0d 14 64 0d 5b  |.]..P....Z...d.[|
00002130  4f 50 54 20 70 61 73 73  0d 14 6e 10 2e 6b 61 6c  |OPT pass..n..kal|
00002140  69 73 6c 6f 77 65 72 25  0d 14 78 10 4d 4f 56 4e  |islower%..x.MOVN|
00002150  56 20 52 30 2c 23 31 39  0d 14 82 13 53 57 49 4e  |V R0,#19....SWIN|
00002160  56 20 22 4f 53 5f 42 79  74 65 22 0d 14 8c 04 0d  |V "OS_Byte".....|
00002170  14 96 15 4c 44 52 20 52  38 2c 73 70 72 69 74 65  |...LDR R8,sprite|
00002180  64 61 74 61 0d 14 a0 24  20 20 20 20 20 20 20 20  |data...$        |
00002190  20 20 20 20 41 44 44 20  52 34 2c 52 34 2c 23 33  |    ADD R4,R4,#3|
000021a0  32 30 2a 79 6d 6f 76 65  0d 14 aa 14 53 55 42 20  |20*ymove....SUB |
000021b0  52 34 2c 52 34 2c 23 78  6d 6f 76 65 0d 14 b4 1d  |R4,R4,#xmove....|
000021c0  20 20 20 20 20 20 20 20  20 20 20 20 43 4d 50 20  |            CMP |
000021d0  52 34 2c 23 38 31 39 32  30 0d 14 be 22 20 20 20  |R4,#81920..."   |
000021e0  20 20 20 20 20 20 20 20  20 53 55 42 47 45 20 52  |         SUBGE R|
000021f0  34 2c 52 34 2c 23 38 31  39 32 30 0d 14 c8 14 41  |4,R4,#81920....A|
00002200  44 44 20 52 37 2c 52 38  2c 23 38 31 39 32 30 0d  |DD R7,R8,#81920.|
00002210  14 d2 1c 20 20 20 20 20  20 20 20 20 20 20 20 41  |...            A|
00002220  44 44 20 52 38 2c 52 38  2c 52 34 0d 14 dc 10 53  |DD R8,R8,R4....S|
00002230  55 42 20 52 36 2c 52 37  2c 52 38 0d 14 e6 04 0d  |UB R6,R7,R8.....|
00002240  14 f0 1a 20 20 20 20 20  20 20 20 20 20 20 20 4d  |...            M|
00002250  4f 56 20 52 31 31 2c 52  33 0d 14 fa 18 53 54 4d  |OV R11,R3....STM|
00002260  46 44 20 28 73 70 29 21  2c 7b 73 63 72 65 65 6e  |FD (sp)!,{screen|
00002270  7d 0d 15 04 04 0d 15 0e  0e 4d 4f 56 20 52 31 32  |}........MOV R12|
00002280  2c 23 30 0d 15 18 04 0d  15 22 1f 2e 79 6c 6f 6f  |,#0......"..yloo|
00002290  70 20 20 20 20 20 20 4c  44 4d 49 41 20 52 31 31  |p      LDMIA R11|
000022a0  21 2c 7b 52 30 7d 0d 15  2c 04 0d 15 36 05 5d 0d  |!,{R0}..,...6.].|
000022b0  15 40 0f e7 20 6d 6f 64  65 34 39 25 20 8c 0d 15  |.@.. mode49% ...|
000022c0  4a 0d 5b 4f 50 54 20 70  61 73 73 0d 15 54 0e 43  |J.[OPT pass..T.C|
000022d0  4d 50 20 52 30 2c 52 31  32 0d 15 5e 14 41 44 44  |MP R0,R12..^.ADD|
000022e0  47 45 20 52 35 2c 52 35  2c 23 33 32 30 0d 15 68  |GE R5,R5,#320..h|
000022f0  15 41 44 44 47 45 20 52  31 32 2c 52 30 2c 23 33  |.ADDGE R12,R0,#3|
00002300  31 32 0d 15 72 05 5d 0d  15 7c 05 cd 0d 15 86 0d  |12..r.]..|......|
00002310  5b 4f 50 54 20 70 61 73  73 0d 15 90 04 0d 15 9a  |[OPT pass.......|
00002320  04 0d 15 a4 04 0d 15 ae  1b 20 20 20 20 20 20 20  |.........       |
00002330  20 20 20 20 20 43 4d 50  20 20 20 52 30 2c 23 30  |     CMP   R0,#0|
00002340  0d 15 b8 1e 20 20 20 20  20 20 20 20 20 20 20 20  |....            |
00002350  42 45 51 20 20 20 65 6e  64 67 6c 6f 62 65 0d 15  |BEQ   endglobe..|
00002360  c2 04 0d 15 cc 1e 20 20  20 20 20 20 20 20 20 20  |......          |
00002370  20 20 41 44 44 20 20 20  52 30 2c 52 30 2c 52 35  |  ADD   R0,R0,R5|
00002380  0d 15 d6 04 0d 15 e0 1f  2e 78 6c 6f 6f 70 32 20  |.........xloop2 |
00002390  20 20 20 20 4c 44 4d 49  41 20 52 31 31 21 2c 7b  |    LDMIA R11!,{|
000023a0  52 39 7d 0d 15 ea 04 0d  15 f4 23 20 20 20 20 20  |R9}.......#     |
000023b0  20 20 20 20 20 20 20 4d  4f 56 20 20 20 52 31 30  |       MOV   R10|
000023c0  2c 52 39 2c 4c 53 52 23  31 36 0d 15 fe 1c 20 20  |,R9,LSR#16....  |
000023d0  20 20 20 20 20 20 20 20  20 20 43 4d 50 20 20 20  |          CMP   |
000023e0  52 31 30 2c 23 30 0d 16  08 1b 20 20 20 20 20 20  |R10,#0....      |
000023f0  20 20 20 20 20 20 42 45  51 20 20 20 79 6c 6f 6f  |      BEQ   yloo|
00002400  70 0d 16 12 26 20 20 20  20 20 20 20 20 20 20 20  |p...&           |
00002410  20 53 55 42 20 20 20 52  39 2c 52 39 2c 52 31 30  | SUB   R9,R9,R10|
00002420  2c 4c 53 4c 23 31 36 0d  16 1c 04 0d 16 26 0e 43  |,LSL#16......&.C|
00002430  4d 50 20 52 31 30 2c 52  36 0d 16 30 18 53 55 42  |MP R10,R6..0.SUB|
00002440  47 45 20 52 31 30 2c 52  31 30 2c 23 38 31 39 32  |GE R10,R10,#8192|
00002450  30 0d 16 3a 21 20 20 20  20 20 20 20 20 20 20 20  |0..:!           |
00002460  20 4c 44 52 42 20 20 52  31 2c 5b 52 38 2c 52 31  | LDRB  R1,[R8,R1|
00002470  30 5d 0d 16 44 20 20 20  20 20 20 20 20 20 20 20  |0]..D           |
00002480  20 20 53 54 52 42 20 20  52 31 2c 5b 52 30 5d 2c  |  STRB  R1,[R0],|
00002490  23 31 0d 16 4e 04 0d 16  58 1b 20 20 20 20 20 20  |#1..N...X.      |
000024a0  20 20 20 20 20 20 43 4d  50 20 20 20 52 39 2c 23  |      CMP   R9,#|
000024b0  30 0d 16 62 04 0d 16 6c  1b 20 20 20 20 20 20 20  |0..b...l.       |
000024c0  20 20 20 20 20 42 45 51  20 20 20 79 6c 6f 6f 70  |     BEQ   yloop|
000024d0  0d 16 76 04 0d 16 80 1e  20 20 20 20 20 20 20 20  |..v.....        |
000024e0  20 20 20 20 43 4d 50 20  20 20 20 20 52 39 2c 52  |    CMP     R9,R|
000024f0  31 30 0d 16 8a 22 20 20  20 20 20 20 20 20 20 20  |10..."          |
00002500  20 20 53 54 52 45 51 42  20 20 52 31 2c 5b 52 30  |  STREQB  R1,[R0|
00002510  5d 2c 23 31 0d 16 94 1e  20 20 20 20 20 20 20 20  |],#1....        |
00002520  20 20 20 20 42 45 51 20  20 20 20 20 78 6c 6f 6f  |    BEQ     xloo|
00002530  70 32 0d 16 9e 04 0d 16  a8 0d 43 4d 50 20 52 39  |p2........CMP R9|
00002540  2c 52 36 0d 16 b2 16 53  55 42 47 45 20 52 39 2c  |,R6....SUBGE R9,|
00002550  52 39 2c 23 38 31 39 32  30 0d 16 bc 22 20 20 20  |R9,#81920..."   |
00002560  20 20 20 20 20 20 20 20  20 4c 44 52 42 20 20 20  |         LDRB   |
00002570  20 52 31 2c 5b 52 38 2c  52 39 5d 0d 16 c6 22 20  | R1,[R8,R9]..." |
00002580  20 20 20 20 20 20 20 20  20 20 20 53 54 52 42 20  |           STRB |
00002590  20 20 20 52 31 2c 5b 52  30 5d 2c 23 31 0d 16 d0  |   R1,[R0],#1...|
000025a0  04 0d 16 da 18 20 20 20  20 20 20 20 20 20 20 20  |.....           |
000025b0  20 42 20 78 6c 6f 6f 70  32 0d 16 e4 04 0d 16 ee  | B xloop2.......|
000025c0  0d 2e 65 6e 64 67 6c 6f  62 65 0d 16 f8 18 4c 44  |..endglobe....LD|
000025d0  4d 46 44 20 28 73 70 29  21 2c 7b 73 63 72 65 65  |MFD (sp)!,{scree|
000025e0  6e 7d 0d 17 02 04 0d 17  0c 05 5d 0d 17 16 0f e7  |n}........].....|
000025f0  20 6d 6f 64 65 34 39 25  20 8c 0d 17 20 0d 5b 4f  | mode49% ... .[O|
00002600  50 54 20 70 61 73 73 0d  17 2a 14 41 44 44 20 52  |PT pass..*.ADD R|
00002610  35 2c 73 63 72 65 65 6e  2c 23 78 0d 17 34 14 41  |5,screen,#x..4.A|
00002620  44 44 20 52 35 2c 52 35  2c 23 33 32 30 2a 79 0d  |DD R5,R5,#320*y.|
00002630  17 3e 04 0d 17 48 18 53  54 4d 46 44 20 28 73 70  |.>...H.STMFD (sp|
00002640  29 21 2c 7b 52 30 2d 52  31 32 7d 0d 17 52 04 0d  |)!,{R0-R12}..R..|
00002650  17 5c 11 4d 4f 56 20 52  30 2c 73 63 72 65 65 6e  |.\.MOV R0,screen|
00002660  0d 17 66 12 41 44 44 20  52 31 2c 52 30 2c 23 33  |..f.ADD R1,R0,#3|
00002670  32 30 0d 17 70 17 41 44  44 20 52 31 31 2c 52 30  |20..p.ADD R11,R0|
00002680  2c 23 38 31 39 32 30 2a  32 0d 17 7a 0c 2e 66 69  |,#81920*2..z..fi|
00002690  6c 6c 5f 6c 70 0d 17 84  13 41 44 44 20 52 31 30  |ll_lp....ADD R10|
000026a0  2c 52 30 2c 23 33 32 30  0d 17 8e 08 2e 78 6c 70  |,R0,#320.....xlp|
000026b0  0d 17 98 15 4c 44 4d 49  41 20 52 30 21 2c 7b 52  |....LDMIA R0!,{R|
000026c0  32 2d 52 39 7d 0d 17 a2  15 53 54 4d 49 41 20 52  |2-R9}....STMIA R|
000026d0  31 21 2c 7b 52 32 2d 52  39 7d 0d 17 ac 0e 43 4d  |1!,{R2-R9}....CM|
000026e0  50 20 52 30 2c 52 31 30  0d 17 b6 0b 42 4c 54 20  |P R0,R10....BLT |
000026f0  78 6c 70 0d 17 c0 04 0d  17 ca 12 41 44 44 20 52  |xlp........ADD R|
00002700  30 2c 52 30 2c 23 33 32  30 0d 17 d4 12 41 44 44  |0,R0,#320....ADD|
00002710  20 52 31 2c 52 31 2c 23  33 32 30 0d 17 de 0e 43  | R1,R1,#320....C|
00002720  4d 50 20 52 30 2c 52 31  31 0d 17 e8 0f 42 4c 54  |MP R0,R11....BLT|
00002730  20 66 69 6c 6c 5f 6c 70  0d 17 f2 04 0d 17 fc 18  | fill_lp........|
00002740  4c 44 4d 46 44 20 28 73  70 29 21 2c 7b 52 30 2d  |LDMFD (sp)!,{R0-|
00002750  52 31 32 7d 0d 18 06 05  5d 0d 18 10 04 0d 18 1a  |R12}....].......|
00002760  05 cd 0d 18 24 04 0d 18  2e 0d 5b 4f 50 54 20 70  |....$.....[OPT p|
00002770  61 73 73 0d 18 38 0e 2e  70 6c 61 73 6d 61 64 6f  |ass..8..plasmado|
00002780  25 0d 18 42 1a 53 54 4d  4e 56 46 44 20 28 73 70  |%..B.STMNVFD (sp|
00002790  29 21 2c 7b 52 30 2d 52  31 32 7d 0d 18 4c 0e 42  |)!,{R0-R12}..L.B|
000027a0  4c 4e 56 20 63 79 63 6c  65 0d 18 56 1a 4c 44 4d  |LNV cycle..V.LDM|
000027b0  4e 56 46 44 20 28 73 70  29 21 2c 7b 52 30 2d 52  |NVFD (sp)!,{R0-R|
000027c0  31 32 7d 0d 18 60 04 0d  18 6a 0f 4d 4f 56 20 52  |12}..`...j.MOV R|
000027d0  30 2c 23 31 32 39 0d 18  74 0e 4d 56 4e 20 52 31  |0,#129..t.MVN R1|
000027e0  2c 23 39 38 0d 18 7e 0f  4d 4f 56 20 52 32 2c 23  |,#98..~.MOV R2,#|
000027f0  32 35 35 0d 18 88 11 53  57 49 20 22 4f 53 5f 42  |255....SWI "OS_B|
00002800  79 74 65 22 0d 18 92 0f  43 4d 50 20 52 32 2c 23  |yte"....CMP R2,#|
00002810  32 35 35 0d 18 9c 16 4c  44 4d 45 51 46 44 20 28  |255....LDMEQFD (|
00002820  73 70 29 21 2c 7b 50 43  7d 0d 18 a6 28 20 20 20  |sp)!,{PC}...(   |
00002830  20 20 20 20 20 20 20 20  20 53 57 49 20 22 4f 53  |         SWI "OS|
00002840  5f 52 65 61 64 45 73 63  61 70 65 53 74 61 74 65  |_ReadEscapeState|
00002850  22 0d 18 b0 1c 20 20 20  20 20 20 20 20 20 20 20  |"....           |
00002860  20 42 43 43 20 6d 61 69  6e 6c 6f 6f 70 0d 18 ba  | BCC mainloop...|
00002870  04 0d 18 c4 20 2e 65 6e  64 20 20 20 20 20 20 20  |.... .end       |
00002880  20 4c 44 4d 46 44 20 28  73 70 29 21 2c 7b 50 43  | LDMFD (sp)!,{PC|
00002890  7d 0d 18 ce 04 0d 18 d8  0f 2e 67 72 61 62 73 70  |}.........grabsp|
000028a0  72 69 74 65 0d 18 e2 14  4c 44 52 20 52 30 2c 73  |rite....LDR R0,s|
000028b0  63 72 65 65 6e 61 64 64  0d 18 ec 15 41 44 44 20  |creenadd....ADD |
000028c0  52 31 31 2c 52 30 2c 23  38 31 39 32 30 0d 18 f6  |R11,R0,#81920...|
000028d0  15 4c 44 52 20 52 39 2c  73 70 72 69 74 65 64 61  |.LDR R9,spriteda|
000028e0  74 61 0d 19 00 0d 2e 67  72 61 62 6c 6f 6f 70 0d  |ta.....grabloop.|
000028f0  19 0a 15 4c 44 4d 49 41  20 52 30 21 2c 7b 52 31  |...LDMIA R0!,{R1|
00002900  2d 52 38 7d 0d 19 14 15  53 54 4d 49 41 20 52 39  |-R8}....STMIA R9|
00002910  21 2c 7b 52 31 2d 52 38  7d 0d 19 1e 0e 43 4d 50  |!,{R1-R8}....CMP|
00002920  20 52 30 2c 52 31 31 0d  19 28 10 42 4c 54 20 67  | R0,R11..(.BLT g|
00002930  72 61 62 6c 6f 6f 70 0d  19 32 0e 4d 4f 56 20 50  |rabloop..2.MOV P|
00002940  43 2c 52 31 34 0d 19 3c  04 0d 19 46 18 2e 63 6f  |C,R14..<...F..co|
00002950  6e 20 20 20 20 20 20 20  20 45 51 55 44 20 38 30  |n        EQUD 80|
00002960  30 0d 19 50 17 2e 70 6f  73 20 20 20 20 20 20 20  |0..P..pos       |
00002970  20 45 51 55 44 20 20 30  0d 19 5a 0a 2e 67 6c 6f  | EQUD  0..Z..glo|
00002980  62 65 0d 19 64 04 0d 19  6e 21 2e 70 6f 73 64 61  |be..d...n!.posda|
00002990  74 61 20 20 20 20 45 51  55 44 20 63 6f 64 65 2b  |ta    EQUD code+|
000029a0  31 30 32 34 2a 31 36 0d  19 78 22 2e 73 70 72 69  |1024*16..x".spri|
000029b0  74 65 64 61 74 61 20 45  51 55 44 20 70 6f 73 64  |tedata EQUD posd|
000029c0  61 74 61 2b 38 31 39 32  30 0d 19 82 25 2e 76 61  |ata+81920...%.va|
000029d0  72 73 72 65 61 64 20 20  20 4c 44 52 20 20 73 63  |rsread   LDR  sc|
000029e0  72 65 65 6e 2c 73 63 72  65 65 6e 61 64 64 0d 19  |reen,screenadd..|
000029f0  8c 1b 20 20 20 20 20 20  20 20 20 20 20 20 4d 4f  |..            MO|
00002a00  56 20 20 50 43 2c 52 31  34 0d 19 96 1c 2e 73 63  |V  PC,R14.....sc|
00002a10  72 65 65 6e 61 64 64 20  20 45 51 55 44 20 73 63  |reenadd  EQUD sc|
00002a20  72 65 65 6e 25 0d 19 a0  04 0d 19 aa 17 2e 63 6f  |reen%.........co|
00002a30  6c 64 61 74 61 33 20 45  51 55 44 20 63 6f 6c 73  |ldata3 EQUD cols|
00002a40  0d 19 b4 04 0d 19 be 0a  2e 63 79 63 6c 65 0d 19  |.........cycle..|
00002a50  c8 16 4c 44 52 20 52 31  32 2c 73 70 72 69 74 65  |..LDR R12,sprite|
00002a60  64 61 74 61 0d 19 d2 14  4c 44 52 20 52 31 30 2c  |data....LDR R10,|
00002a70  63 6f 6c 64 61 74 61 33  0d 19 dc 0e 2e 63 79 63  |coldata3.....cyc|
00002a80  6c 65 6c 6f 6f 70 0d 19  e6 0e 4d 4f 56 20 52 30  |leloop....MOV R0|
00002a90  2c 52 31 32 0d 19 f0 15  41 44 44 20 52 31 31 2c  |,R12....ADD R11,|
00002aa0  52 30 2c 23 38 31 39 32  30 0d 19 fa 16 53 55 42  |R0,#81920....SUB|
00002ab0  20 52 31 31 2c 52 31 31  2c 23 33 32 30 2d 38 0d  | R11,R11,#320-8.|
00002ac0  1a 04 04 0d 1a 0e 08 2e  63 79 63 0d 1a 18 20 4c  |........cyc... L|
00002ad0  44 4d 49 41 20 52 30 2c  7b 52 31 2c 52 32 2c 52  |DMIA R0,{R1,R2,R|
00002ae0  33 2c 52 34 2c 52 35 2c  52 36 7d 0d 1a 22 0d a4  |3,R4,R5,R6}.."..|
00002af0  64 6f 5f 69 74 28 31 29  0d 1a 2c 0d a4 64 6f 5f  |do_it(1)..,..do_|
00002b00  69 74 28 32 29 0d 1a 36  0d a4 64 6f 5f 69 74 28  |it(2)..6..do_it(|
00002b10  33 29 0d 1a 40 0d a4 64  6f 5f 69 74 28 34 29 0d  |3)..@..do_it(4).|
00002b20  1a 4a 0d a4 64 6f 5f 69  74 28 35 29 0d 1a 54 0d  |.J..do_it(5)..T.|
00002b30  a4 64 6f 5f 69 74 28 36  29 0d 1a 5e 21 53 54 4d  |.do_it(6)..^!STM|
00002b40  49 41 20 52 30 21 2c 7b  52 31 2c 52 32 2c 52 33  |IA R0!,{R1,R2,R3|
00002b50  2c 52 34 2c 52 35 2c 52  36 7d 0d 1a 68 04 0d 1a  |,R4,R5,R6}..h...|
00002b60  72 0e 43 4d 50 20 52 30  2c 52 31 31 0d 1a 7c 0b  |r.CMP R0,R11..|.|
00002b70  42 4c 54 20 63 79 63 0d  1a 86 04 0d 1a 90 14 4c  |BLT cyc........L|
00002b80  44 4d 49 41 20 52 30 2c  7b 52 31 2c 52 32 7d 0d  |DMIA R0,{R1,R2}.|
00002b90  1a 9a 0d a4 64 6f 5f 69  74 28 31 29 0d 1a a4 0d  |....do_it(1)....|
00002ba0  a4 64 6f 5f 69 74 28 32  29 0d 1a ae 15 53 54 4d  |.do_it(2)....STM|
00002bb0  49 41 20 52 30 21 2c 7b  52 31 2c 52 32 7d 0d 1a  |IA R0!,{R1,R2}..|
00002bc0  b8 04 0d 1a c2 0e 4d 4f  56 20 50 43 2c 52 31 34  |......MOV PC,R14|
00002bd0  0d 1a cc 05 5d 0d 1a d6  05 ed 0d 1a e0 05 e1 0d  |....]...........|
00002be0  1a ea 04 0d 1a f4 0c dd  a4 63 68 6f 6f 73 65 0d  |.........choose.|
00002bf0  1a fe 2d f1 8a 34 2c 32  29 3b 22 50 6c 65 61 73  |..-..4,2);"Pleas|
00002c00  65 20 63 6c 69 63 6b 20  6f 6e 20 61 20 63 6f 6c  |e click on a col|
00002c10  6f 75 72 20 73 63 68 65  6d 65 2e 22 0d 1b 08 07  |our scheme."....|
00002c20  c8 97 ee 0d 1b 12 06 f1  27 0d 1b 1c 18 41 25 3d  |........'....A%=|
00002c30  73 63 72 65 65 6e 25 2b  33 32 30 2a 33 32 2b 33  |screen%+320*32+3|
00002c40  32 0d 1b 26 0e e3 20 53  25 3d 30 20 b8 20 36 0d  |2..&.. S%=0 . 6.|
00002c50  1b 30 0f e3 20 43 25 3d  30 20 b8 20 31 35 0d 1b  |.0.. C%=0 . 15..|
00002c60  3a 13 43 57 25 3d 43 4f  4c 25 28 53 25 2c 43 25  |:.CW%=COL%(S%,C%|
00002c70  29 0d 1b 44 28 43 57 25  3d 43 57 25 2b 28 43 57  |)..D(CW%=CW%+(CW|
00002c80  25 3c 3c 38 29 2b 28 43  57 25 3c 3c 31 36 29 2b  |%<<8)+(CW%<<16)+|
00002c90  28 43 57 25 3c 3c 32 34  29 0d 1b 4e 04 0d 1b 58  |(CW%<<24)..N...X|
00002ca0  0f e3 20 59 25 3d 30 20  b8 20 31 35 0d 1b 62 0e  |.. Y%=0 . 15..b.|
00002cb0  e3 20 58 25 3d 30 20 b8  20 33 0d 1b 6c 0b 21 41  |. X%=0 . 3..l.!A|
00002cc0  25 3d 43 57 25 0d 1b 76  09 41 25 2b 3d 34 0d 1b  |%=CW%..v.A%+=4..|
00002cd0  80 05 ed 0d 1b 8a 0e 41  25 2b 3d 33 32 30 2d 31  |.......A%+=320-1|
00002ce0  36 0d 1b 94 05 ed 0d 1b  9e 04 0d 1b a8 0e 41 25  |6.............A%|
00002cf0  2d 3d 33 32 30 2a 31 36  0d 1b b2 0a 41 25 2b 3d  |-=320*16....A%+=|
00002d00  31 36 0d 1b bc 04 0d 1b  c6 05 ed 0d 1b d0 10 f1  |16..............|
00002d10  20 c3 20 53 25 3b 22 2e  22 27 27 0d 1b da 04 0d  | . S%;"."''.....|
00002d20  1b e4 0d 41 25 2d 3d 31  36 2a 31 36 0d 1b ee 0e  |...A%-=16*16....|
00002d30  41 25 2b 3d 33 32 30 2a  32 34 0d 1b f8 05 ed 0d  |A%+=320*24......|
00002d40  1c 02 04 0d 1c 0c 09 4f  53 25 3d 30 0d 1c 16 0a  |.......OS%=0....|
00002d50  e6 20 33 2c 36 33 0d 1c  20 1f c8 93 20 31 32 38  |. 3,63.. ... 128|
00002d60  2c 31 30 32 34 2d 31 32  38 2d 36 34 2c 36 34 2a  |,1024-128-64,64*|
00002d70  31 36 2c 36 34 0d 1c 2a  04 0d 1c 34 05 f5 0d 1c  |16,64..*...4....|
00002d80  3e 0c c8 97 20 58 2c 59  2c 5a 0d 1c 48 1a 53 25  |>... X,Y,Z..H.S%|
00002d90  3d 28 28 31 30 32 34 2d  59 29 2d 31 32 38 29 20  |=((1024-Y)-128) |
00002da0  81 20 39 36 0d 1c 52 1d  e7 20 53 25 3c 30 20 53  |. 96..R.. S%<0 S|
00002db0  25 3d 30 20 8b 20 e7 20  53 25 3e 36 20 53 25 3d  |%=0 . . S%>6 S%=|
00002dc0  36 0d 1c 5c 59 e7 20 53  25 3c 3e 4f 53 25 20 c8  |6..\Y. S%<>OS% .|
00002dd0  93 20 31 32 38 2c 31 30  32 34 2d 31 32 38 2d 36  |. 128,1024-128-6|
00002de0  34 2d 4f 53 25 2a 39 36  2c 36 34 2a 31 36 2c 36  |4-OS%*96,64*16,6|
00002df0  34 3a c8 93 20 31 32 38  2c 31 30 32 34 2d 31 32  |4:.. 128,1024-12|
00002e00  38 2d 36 34 2d 53 25 2a  39 36 2c 36 34 2a 31 36  |8-64-S%*96,64*16|
00002e10  2c 36 34 3a 4f 53 25 3d  53 25 0d 1c 66 09 fd 20  |,64:OS%=S%..f.. |
00002e20  5a 3e 30 0d 1c 70 07 3d  53 25 0d 1c 7a 04 0d 1c  |Z>0..p.=S%..z...|
00002e30  84 12 dd f2 73 70 28 4e  24 2c 78 25 2c 79 25 29  |....sp(N$,x%,y%)|
00002e40  0d 1c 8e 28 c8 99 22 4f  53 5f 53 70 72 69 74 65  |...(.."OS_Sprite|
00002e50  4f 70 22 2c 32 35 36 2b  33 34 2c 73 25 2c 4e 24  |Op",256+34,s%,N$|
00002e60  2c 78 25 2c 79 25 2c 38  0d 1c 98 05 e1 0d 1c a2  |,x%,y%,8........|
00002e70  04 0d 1c ac 13 dd f2 73  70 32 28 4e 24 2c 78 25  |.......sp2(N$,x%|
00002e80  2c 79 25 29 0d 1c b6 29  c8 99 22 4f 53 5f 53 70  |,y%)...).."OS_Sp|
00002e90  72 69 74 65 4f 70 22 2c  32 35 36 2b 33 34 2c 73  |riteOp",256+34,s|
00002ea0  62 25 2c 4e 24 2c 78 25  2c 79 25 2c 38 0d 1c c0  |b%,N$,x%,y%,8...|
00002eb0  05 e1 0d 1c ca 04 0d 1c  d4 0f dd f2 73 6c 6f 61  |............sloa|
00002ec0  64 28 53 24 29 0d 1c de  0f 46 49 4c 45 25 3d 8e  |d(S$)....FILE%=.|
00002ed0  28 53 24 29 0d 1c e8 14  53 49 5a 45 25 3d a2 23  |(S$)....SIZE%=.#|
00002ee0  46 49 4c 45 25 2b 36 34  0d 1c f2 0b d9 23 46 49  |FILE%+64.....#FI|
00002ef0  4c 45 25 0d 1c fc 0e de  20 41 25 20 53 49 5a 45  |LE%..... A% SIZE|
00002f00  25 0d 1d 06 0b 41 25 21  30 3d 53 25 0d 1d 10 1c  |%....A%!0=S%....|
00002f10  c8 99 22 4f 53 5f 53 70  72 69 74 65 4f 70 22 2c  |.."OS_SpriteOp",|
00002f20  32 35 36 2b 39 2c 41 25  0d 1d 1a 20 c8 99 22 4f  |256+9,A%... .."O|
00002f30  53 5f 53 70 72 69 74 65  4f 70 22 2c 32 35 36 2b  |S_SpriteOp",256+|
00002f40  31 30 2c 41 25 2c 53 24  0d 1d 24 09 73 25 3d 41  |10,A%,S$..$.s%=A|
00002f50  25 0d 1d 2e 05 e1 0d 1d  38 04 0d 1d 42 0c dd f2  |%.......8...B...|
00002f60  73 6c 6f 61 64 42 0d 1d  4c 1d 46 49 4c 45 25 3d  |sloadB..L.FILE%=|
00002f70  8e 28 22 3c 65 64 24 64  69 72 3e 2e 54 49 4c 45  |.("<ed$dir>.TILE|
00002f80  53 22 29 0d 1d 56 17 53  24 3d 22 3c 65 64 24 64  |S")..V.S$="<ed$d|
00002f90  69 72 3e 2e 54 49 4c 45  53 22 0d 1d 60 14 53 49  |ir>.TILES"..`.SI|
00002fa0  5a 45 25 3d a2 23 46 49  4c 45 25 2b 36 34 0d 1d  |ZE%=.#FILE%+64..|
00002fb0  6a 0b d9 23 46 49 4c 45  25 0d 1d 74 0e de 20 42  |j..#FILE%..t.. B|
00002fc0  25 20 53 49 5a 45 25 0d  1d 7e 0b 42 25 21 30 3d  |% SIZE%..~.B%!0=|
00002fd0  53 25 0d 1d 88 1c c8 99  22 4f 53 5f 53 70 72 69  |S%......"OS_Spri|
00002fe0  74 65 4f 70 22 2c 32 35  36 2b 39 2c 42 25 0d 1d  |teOp",256+9,B%..|
00002ff0  92 20 c8 99 22 4f 53 5f  53 70 72 69 74 65 4f 70  |. .."OS_SpriteOp|
00003000  22 2c 32 35 36 2b 31 30  2c 42 25 2c 53 24 0d 1d  |",256+10,B%,S$..|
00003010  9c 0a 73 62 25 3d 42 25  0d 1d a6 15 de 20 58 25  |..sb%=B%..... X%|
00003020  28 4e 54 25 29 2c 59 25  28 4e 54 25 29 0d 1d b0  |(NT%),Y%(NT%)...|
00003030  12 e3 20 49 25 3d 30 20  b8 20 4e 54 25 2d 31 0d  |.. I%=0 . NT%-1.|
00003040  1d ba 13 f3 20 58 25 28  49 25 29 2c 59 25 28 49  |.... X%(I%),Y%(I|
00003050  25 29 0d 1d c4 05 ed 0d  1d ce 05 e1 0d 1d d8 04  |%)..............|
00003060  0d 1d e2 15 dd f2 65 6e  61 62 6c 65 28 6e 25 2c  |......enable(n%,|
00003070  61 64 64 25 29 0d 1d ec  2a 62 69 6e 25 3d 25 31  |add%)...*bin%=%1|
00003080  31 31 30 31 31 31 31 31  31 31 31 31 31 31 31 31  |1101111111111111|
00003090  31 31 31 31 31 31 31 31  31 31 31 31 31 31 31 0d  |111111111111111.|
000030a0  1d f6 0f e3 20 4c 25 3d  31 20 b8 20 6e 25 0d 1e  |.... L%=1 . n%..|
000030b0  00 18 21 61 64 64 25 3d  28 21 61 64 64 25 29 20  |..!add%=(!add%) |
000030c0  80 20 62 69 6e 25 0d 1e  0a 0b 61 64 64 25 2b 3d  |. bin%....add%+=|
000030d0  34 0d 1e 14 05 ed 0d 1e  1e 05 e1 0d 1e 28 04 0d  |4............(..|
000030e0  1e 32 16 dd f2 64 69 73  61 62 6c 65 28 6e 25 2c  |.2...disable(n%,|
000030f0  61 64 64 25 29 0d 1e 3c  2a 62 69 6e 25 3d 25 30  |add%)..<*bin%=%0|
00003100  30 30 31 30 30 30 30 30  30 30 30 30 30 30 30 30  |0010000000000000|
00003110  30 30 30 30 30 30 30 30  30 30 30 30 30 30 30 0d  |000000000000000.|
00003120  1e 46 0f e3 20 4c 25 3d  31 20 b8 20 6e 25 0d 1e  |.F.. L%=1 . n%..|
00003130  50 18 21 61 64 64 25 3d  28 21 61 64 64 25 29 20  |P.!add%=(!add%) |
00003140  84 20 62 69 6e 25 0d 1e  5a 0b 61 64 64 25 2b 3d  |. bin%..Z.add%+=|
00003150  34 0d 1e 64 05 ed 0d 1e  6e 05 e1 0d 1e 78 04 0d  |4..d....n....x..|
00003160  1e 82 0b dd f2 74 69 6c  65 64 0d 1e 8c 08 2a 52  |.....tiled....*R|
00003170  41 4d 0d 1e 96 05 db 0d  1e a0 34 f1 27 27 22 20  |AM........4.''" |
00003180  20 20 50 6c 65 61 73 65  20 74 79 70 65 20 74 68  |  Please type th|
00003190  65 20 6e 61 6d 65 20 6f  66 20 74 68 65 20 73 70  |e name of the sp|
000031a0  72 69 74 65 20 66 69 6c  65 2e 22 0d 1e aa 08 e8  |rite file.".....|
000031b0  20 46 24 0d 1e b4 0e f2  73 6c 6f 61 64 28 46 24  | F$.....sload(F$|
000031c0  29 0d 1e be 35 f1 27 22  20 20 20 50 6c 65 61 73  |)...5.'"   Pleas|
000031d0  65 20 74 79 70 65 20 74  68 65 20 6e 61 6d 65 20  |e type the name |
000031e0  6f 66 20 74 68 65 20 73  70 72 69 74 65 20 69 74  |of the sprite it|
000031f0  73 65 6c 66 2e 22 0d 1e  c8 08 e8 20 4e 24 0d 1e  |self."..... N$..|
00003200  d2 2b f1 27 22 20 20 20  50 6c 65 61 73 65 20 69  |.+.'"   Please i|
00003210  6e 70 75 74 20 74 68 65  20 73 70 72 69 74 65 27  |nput the sprite'|
00003220  73 20 77 69 64 74 68 2e  22 0d 1e dc 08 e8 20 58  |s width."..... X|
00003230  25 0d 1e e6 2c f1 27 22  20 20 20 50 6c 65 61 73  |%...,.'"   Pleas|
00003240  65 20 69 6e 70 75 74 20  74 68 65 20 73 70 72 69  |e input the spri|
00003250  74 65 27 73 20 68 65 69  67 68 74 2e 22 0d 1e f0  |te's height."...|
00003260  08 e8 20 59 25 0d 1e fa  07 eb 31 33 0d 1f 04 05  |.. Y%.....13....|
00003270  87 0d 1f 0e 13 f2 74 69  6c 65 28 4e 24 2c 58 25  |......tile(N$,X%|
00003280  2c 59 25 29 0d 1f 18 05  e1 0d 1f 22 04 0d 1f 2c  |,Y%)......."...,|
00003290  0c dd f2 66 61 64 65 69  6e 0d 1f 36 26 e3 20 49  |...fadein..6&. I|
000032a0  25 3d 30 20 b8 20 32 35  35 20 88 20 38 3a fb 20  |%=0 . 255 . 8:. |
000032b0  31 2c 49 25 2c 49 25 2c  49 25 3a c8 96 3a ed 0d  |1,I%,I%,I%:..:..|
000032c0  1f 40 05 e1 0d 1f 4a 04  0d 1f 54 0d dd f2 66 61  |.@....J...T...fa|
000032d0  64 65 6f 75 74 0d 1f 5e  27 e3 20 49 25 3d 32 35  |deout..^'. I%=25|
000032e0  35 20 b8 20 30 20 88 20  2d 38 3a fb 20 31 2c 49  |5 . 0 . -8:. 1,I|
000032f0  25 2c 49 25 2c 49 25 3a  c8 96 3a ed 0d 1f 68 05  |%,I%,I%:..:...h.|
00003300  e1 0d 1f 72 04 0d 1f 7c  0c dd f2 62 74 69 6c 65  |...r...|...btile|
00003310  64 0d 1f 86 09 eb 31 33  3a 87 0d 1f 90 07 c8 97  |d.....13:.......|
00003320  ee 0d 1f 9a 2e f1 8a 36  2c 32 29 3b 22 50 6c 65  |.......6,2);"Ple|
00003330  61 73 65 20 63 6c 69 63  6b 20 6f 6e 20 61 20 74  |ase click on a t|
00003340  69 6c 69 6e 67 20 70 61  74 74 65 72 6e 2e 22 0d  |iling pattern.".|
00003350  1f a4 09 58 25 3d 36 34  0d 1f ae 10 59 25 3d 31  |...X%=64....Y%=1|
00003360  30 32 34 2d 36 34 2a 38  0d 1f b8 10 e3 20 54 25  |024-64*8..... T%|
00003370  3d 31 20 b8 20 4e 54 25  0d 1f c2 15 f2 73 70 32  |=1 . NT%.....sp2|
00003380  28 c3 28 54 25 29 2c 58  25 2c 59 25 29 0d 1f cc  |(.(T%),X%,Y%)...|
00003390  0c 58 25 2b 3d 34 38 2a  34 0d 1f d6 25 e7 20 58  |.X%+=48*4...%. X|
000033a0  25 3e 3d 28 31 32 37 39  2d 36 34 2d 34 38 29 20  |%>=(1279-64-48) |
000033b0  58 25 3d 36 34 3a 59 25  2d 3d 34 38 2a 34 0d 1f  |X%=64:Y%-=48*4..|
000033c0  e0 05 ed 0d 1f ea 04 0d  1f f4 0a e6 20 33 2c 36  |............ 3,6|
000033d0  33 0d 1f fe 04 0d 20 08  09 4e 25 3d 2d 31 0d 20  |3..... ..N%=-1. |
000033e0  12 05 f5 0d 20 1c 0e f5  20 c8 97 20 58 2c 59 2c  |.... ... .. X,Y,|
000033f0  5a 0d 20 26 11 59 3d 59  2b 36 34 2a 38 2d 34 38  |Z. &.Y=Y+64*8-48|
00003400  2a 34 0d 20 30 0c 59 3d  31 30 32 34 2d 59 0d 20  |*4. 0.Y=1024-Y. |
00003410  3a 0d 59 3d 59 20 81 20  31 39 32 0d 20 44 0a 58  |:.Y=Y . 192. D.X|
00003420  3d 58 2d 34 38 0d 20 4e  0d 58 3d 58 20 81 20 31  |=X-48. N.X=X . 1|
00003430  39 32 0d 20 58 17 58 25  3d 58 2a 31 39 32 2b 34  |92. X.X%=X*192+4|
00003440  38 2b 31 36 2b 34 38 2a  34 0d 20 62 1d 59 25 3d  |8+16+48*4. b.Y%=|
00003450  28 31 30 32 34 2d 59 2a  31 39 32 29 2d 36 34 2a  |(1024-Y*192)-64*|
00003460  38 2b 34 38 2a 34 0d 20  6c 0c 4e 25 3d 58 2b 59  |8+48*4. l.N%=X+Y|
00003470  2a 36 0d 20 76 04 0d 20  80 0e e7 20 4e 25 3c 4e  |*6. v.. ... N%<N|
00003480  54 25 20 8c 0d 20 8a 30  c8 93 20 58 25 2d 34 38  |T% .. .0.. X%-48|
00003490  2a 34 2c 59 25 2d 34 38  2a 34 2c 28 58 25 28 4e  |*4,Y%-48*4,(X%(N|
000034a0  25 29 2d 31 29 2a 34 2c  28 59 25 28 4e 25 29 2d  |%)-1)*4,(Y%(N%)-|
000034b0  31 29 2a 34 0d 20 94 06  c8 96 0d 20 9e 30 c8 93  |1)*4. ..... .0..|
000034c0  20 58 25 2d 34 38 2a 34  2c 59 25 2d 34 38 2a 34  | X%-48*4,Y%-48*4|
000034d0  2c 28 58 25 28 4e 25 29  2d 31 29 2a 34 2c 28 59  |,(X%(N%)-1)*4,(Y|
000034e0  25 28 4e 25 29 2d 31 29  2a 34 0d 20 a8 05 cd 0d  |%(N%)-1)*4. ....|
000034f0  20 b2 04 0d 20 bc 09 fd  20 5a 3e 30 0d 20 c6 2d  | ... ... Z>0. .-|
00003500  e7 20 58 3e 34 38 20 80  20 58 3c 28 31 32 37 39  |. X>48 . X<(1279|
00003510  2d 36 34 2d 34 38 29 20  80 20 59 3c 28 31 30 32  |-64-48) . Y<(102|
00003520  34 2d 36 34 2a 34 29 20  8c 0d 20 d0 04 0d 20 da  |4-64*4) .. ... .|
00003530  0c 4e 25 3d 58 2b 59 2a  36 0d 20 e4 05 cd 0d 20  |.N%=X+Y*6. .... |
00003540  ee 14 fd 20 4e 25 3e 2d  31 20 80 20 4e 25 3c 4e  |... N%>-1 . N%<N|
00003550  54 25 0d 20 f8 04 0d 21  02 21 f2 74 69 6c 65 62  |T%. ...!.!.tileb|
00003560  28 c3 28 4e 25 2b 31 29  2c 58 25 28 4e 25 29 2c  |(.(N%+1),X%(N%),|
00003570  59 25 28 4e 25 29 29 0d  21 0c 04 0d 21 16 07 c8  |Y%(N%)).!...!...|
00003580  97 87 0d 21 20 05 e1 0d  21 2a 04 0d 21 34 14 dd  |...! ...!*..!4..|
00003590  f2 74 69 6c 65 28 6e 24  2c 78 25 2c 79 25 29 0d  |.tile(n$,x%,y%).|
000035a0  21 3e 18 e3 20 49 25 3d  30 20 b8 20 31 32 37 39  |!>.. I%=0 . 1279|
000035b0  20 88 20 78 25 2a 34 0d  21 48 18 e3 20 4a 25 3d  | . x%*4.!H.. J%=|
000035c0  30 20 b8 20 31 30 32 33  20 88 20 79 25 2a 34 0d  |0 . 1023 . y%*4.|
000035d0  21 52 11 f2 73 70 28 6e  24 2c 49 25 2c 4a 25 29  |!R..sp(n$,I%,J%)|
000035e0  0d 21 5c 07 ed 3a ed 0d  21 66 05 e1 0d 21 70 15  |.!\..:..!f...!p.|
000035f0  dd f2 74 69 6c 65 62 28  6e 24 2c 78 25 2c 79 25  |..tileb(n$,x%,y%|
00003600  29 0d 21 7a 18 e3 20 49  25 3d 30 20 b8 20 31 32  |).!z.. I%=0 . 12|
00003610  37 39 20 88 20 78 25 2a  34 0d 21 84 18 e3 20 4a  |79 . x%*4.!... J|
00003620  25 3d 30 20 b8 20 31 30  32 33 20 88 20 79 25 2a  |%=0 . 1023 . y%*|
00003630  34 0d 21 8e 12 f2 73 70  32 28 6e 24 2c 49 25 2c  |4.!...sp2(n$,I%,|
00003640  4a 25 29 0d 21 98 07 ed  3a ed 0d 21 a2 05 e1 0d  |J%).!...:..!....|
00003650  21 ac 04 0d 21 b6 0b dc  20 32 34 2c 32 34 0d 21  |!...!... 24,24.!|
00003660  c0 0b dc 20 34 38 2c 34  38 0d 21 ca 0b dc 20 33  |... 48,48.!... 3|
00003670  32 2c 33 32 0d 21 d4 0b  dc 20 34 38 2c 34 38 0d  |2,32.!... 48,48.|
00003680  21 de 04 0d 21 e8 0b dc  20 34 38 2c 34 38 0d 21  |!...!... 48,48.!|
00003690  f2 0b dc 20 32 30 2c 32  30 0d 21 fc 0b dc 20 32  |... 20,20.!... 2|
000036a0  30 2c 32 30 0d 22 06 0b  dc 20 31 36 2c 31 36 0d  |0,20."... 16,16.|
000036b0  22 10 04 0d 22 1a 0b dc  20 34 38 2c 34 38 0d 22  |"..."... 48,48."|
000036c0  24 0b dc 20 34 38 2c 34  38 0d 22 2e 0b dc 20 34  |$.. 48,48."... 4|
000036d0  30 2c 34 30 0d 22 38 0b  dc 20 32 30 2c 32 30 0d  |0,40."8.. 20,20.|
000036e0  22 42 04 0d 22 4c 0b dc  20 33 32 2c 33 32 0d 22  |"B.."L.. 32,32."|
000036f0  56 0b dc 20 33 32 2c 34  36 0d 22 60 0b dc 20 34  |V.. 32,46."`.. 4|
00003700  30 2c 34 30 0d 22 6a 0b  dc 20 33 30 2c 33 30 0d  |0,40."j.. 30,30.|
00003710  ff                                                |.|
00003711