Home » Archimedes archive » Archimedes World » AW-1993-11.adf » AWNov93 » !AWNov93/Goodies/Enigma/!Enigma/Enigma

!AWNov93/Goodies/Enigma/!Enigma/Enigma

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 » Archimedes World » AW-1993-11.adf » AWNov93
Filename: !AWNov93/Goodies/Enigma/!Enigma/Enigma
Read OK:
File size: 713D bytes
Load address: 0000
Exec address: 0000
File contents
   10REM >Enigma
   20REM by Pete Goodliffe
   30REM LEN TRAX Software 1992
   40REM for Archimedes World
   50REM Hello everybody
   60REM P.S. This message will self distruct in 10 seconds
   70:
   80REM Set Escape status
   90SYS"OS_Byte",&E5,0TO,E%:SYS"OS_Byte",&E5,1
  100:
  110REM Flashy star variables
  120F%=224:G%=16
  130:
  140REM Error handling
  150ONERRORPROCnastyerror:END
  160:
  170REM Loading the sprites
  180DIMsprites%34290,blck%11,code%1199:$blck%="Sprites":!sprites%=34288:sprites%!8=16:SYS"OS_SpriteOp",&A+256,sprites%,blck%
  190:
  200REM Loading the scroll-text
  210X%=OPENIN("ScrollText"):len=EXT#X%+9:DIM J% len:FORN=0TOlen-1:IFN<9J%?N=0ELSEJ%?N=BGET#X%:IFJ%?N=32J%?N=0
  220NEXT:CLOSE#X%
  230:
  240REM Loading the hi-scores
  250DIM highscores%&B4:OSCLI"Load HighScores "+STR$~highscores%
  260P%=FALSE
  270:
  280DIM osword%&10,pointdat%&48
  290VOICES 2
  300:
  310MODE13:OFF:VDU23,0,10,0|5,23,17,7,6,4;8;0;
  320PROCmousearrow:*fX 15
  330PROCfindthelevels
  340:
  350REM Initialise variables
  360cx%=0:cy%=0:title$=STRING$(40," "):time%=0:word$=STRING$(10," "):anagram$=STRING$(10," "):anx%=0:any%=0
  370xd%=0:yd%=0:sx%=0:sy%=0:b%=0:bl%=0
  380:
  390REM The start of a MASSIVE loop
  400REPEAT
  410:
  420N=0:N%=0:S%=0:PROCmenuscreen:*fX 15
  430:
  440REM Menu Loop
  450level%=1:start%=FALSE:REPEATREPEAT
  460PROCtext:MOUSEx%,y%,b%:T%=TIME:REPEAT
  470IFINKEY-114:PROCsound_off
  480IFINKEY-115:PROCsound_on
  490UNTILTIME>T%+5:UNTILb%=4
  500:
  510IFFNmr(133,400,333,550)start%=TRUE
  520IFFNmr(405,400,605,550)PROCend:END
  530IFFNmr(673,400,873,550)level%=FNlevel:GCOL80,0:IFlevel%>1start%=TRUE
  540IFFNmr(945,400,1145,550)PROCscores:PROCmenuscreen
  550UNTILstart%:MOUSEOFF:VDU4,26:OFF
  560:
  570REM Initaialise game
  580score%=0:live%=3:dead%=FALSE
  590:
  600REM Draw game screen
  610GCOL0TINT0:RECTANGLEFILL0,0,1279,1023
  620FORM=0TO8:FORN=0TO19:PROCs(N*80,898-128*M,"block"):NEXT:NEXT
  630PROCs(64,148,"bar")
  640GCOL0TINT0:RECTANGLEFILL0,64,1279,36:GCOL63TINT0:MOVE0,60:DRAW1279,60:MOVE0,104:DRAW1279,104
  650COLOUR128+6TINT128:COLOUR63TINT192:PRINTTAB(3,22)"00000000":PROClives:PROCfunkytextX("0",240,654):MOUSEON
  660a%=0
  670:
  680REPEAT
  690:
  700REM Load and draw level
  710PROCmousedisc:PROCload:PROCsmoothwave:PROCdraw:PROCtitle:PROClevel:VDU4:OFF:PROClft:PROCtime:PROCmousearrow
  720:
  730REM And now, play the game!
  740pause%=0:N=FNgame:IFN=FALSE dead%=TRUE ELSElevel%=level%+1:IFlevel%<=l%PROCnewlevel
  750IFdead%ANDpause%<>2dead%=FNdiedadeath
  760:
  770UNTILlevel%=l%+1ORdead%
  780:
  790IFlevel%=l%+1PROCcleverdick
  800PROChighscore
  810:
  820UNTILFALSE
  830:
  840:
  850REM The main game loop
  860DEFFNgame:*fX15
  870REPEAT:T%=TIME:REPEAT
  880MOUSEx%,y%,b%:IFb%<>0ANDFNmr(400,150,1200,950)PROCmove
  890FORsy%=0TO19:FORsx%=0TO19:PROCscan:NEXT:NEXT
  900IFINKEY-99pause%=FNpause:IFpause%<>0time%=1:T%=TIME-300
  910UNTILTIME>T%+300ORblock%=0ANDa%=0:time%=time%-1:PROCtime
  920UNTILtime%=0ORblock%=0ANDa%=0ORpause%=2
  930IFFNwon:=TRUE ELSE=FALSE
  940:
  950REM Moving on, lads...
  960DEFFNwon:IFblock%=0ANDpause%=0ANDa%=0ANDFNwater_noleaks:=TRUE ELSE=FALSE
  970DEFFNpause:PROCvduseven:PROCmousewaiting
  980PROCs(64,148,"bar"):GCOL6TINT128:RECTANGLEFILL96,180,256,600:PROCfunkytextX("PAUSED",120,700):PROCframe(108,338,228,300,2):VDU5,23,17,7,6,6;8;0;:PROCbt("Select",154,600):VDU23,17,7,6,4;8;0;:PROCbt("1) Continue",140,500):PROCbt("2) Suicide",140,452):PROCbt("3) Execute",140,404)
  990VDU4:OFF:*fX15
 1000REPEATM=INKEY(0):PROCscrollaround:UNTILM>48ANDM<52:PROCs(64,148,"bar"):PROClives:PROClevel:PROClft:PROCtime:PRINTTAB(3,22)"0000000":PROCscore:PROCmousearrow
 1010IFM=51PROClaugh
 1020=M-49
 1030DEFFNdiedadeath:live%=live%-1:PROClives:PROCmousewaiting:IFlive%>0PROCfunkytextX("OH DEAR",674,700):PROCfunkytextX("LOOKS LIKE YOU WILL",458,600):PROCfunkytextX("HAVE TO PRACTICE",512,536):PROCfunkytextX("THAT ONE",656,472):PROClaugh
 1040IFlive%=0:PROCfunkytextX("GAME OVER",638,600):OSCLI"ChannelVoice 1 Laugh":SOUND1,383,&500,0
 1050*fX 15
 1060REPEATMOUSEx%,y%,b%:PROCscrollaround:UNTILNOT(b%=0):REPEATMOUSEx%,y%,b%:PROCscrollaround:UNTILb%=0
 1070PROCmousearrow:IFlive%=0=TRUE ELSE=FALSE
 1080:
 1090:
 1100REM Screen scan and update procedures
 1110DEFPROCscan
 1120b%=code%?(FNpos(sx%,sy%)+1):IFb%=0ENDPROC
 1130bl%=code%?FNpos(sx%,sy%)
 1140IF(b%AND1)=1AND(bl%>0ANDbl%<40ORbl%=42ORbl%=50)PROCchosedir
 1150REM Insert want to move horizontal here
 1160IFb%=64 :PROClift_wanttomoveH
 1170IFb%=128:PROClift_wanttomoveV
 1180ENDPROC
 1190:
 1200DEFPROCchosedir
 1210b%=b%DIV2:CASEb%AND3OF
 1220WHEN0:PROCshift(0,1)
 1230WHEN1:PROCshift(0,-1)
 1240WHEN2:PROCshift(-1,0)
 1250WHEN3:PROCshift(1,0)
 1260ENDCASE:ENDPROC
 1270:
 1280DEFPROCshift(xd%,yd%)
 1290b%=(b%DIV4)AND7:IFb%<>6b%=b%+2:code%?(FNpos(sx%,sy%)+1)=(code%?(FNpos(sx%,sy%)+1)AND199)+b%*8:PROCredraw:ENDPROC
 1300code%?(FNpos(sx%,sy%)+1)=0:b%=8:PROCredraw
 1310IFbl%=1PROCupdatelift:ENDPROC
 1320IFbl%=50PROCupdateacid(sx%,sy%):ENDPROC
 1330PROCblocksabove(sx%-xd%,sy%):IFFNgravityisdue(sx%,sy%)PROCgravity(sx%,sy%):PROCblocksabove(sx%,sy%):ENDPROC
 1340IFsx%=cx%ANDsy%<=cy%:IFFNcrusher(sy%)
 1350IFFNnasties(sx%,sy%)ENDPROC
 1360IFFNdooberies(sx%,sy%-1,sx%,sy%)ENDPROC
 1370IFFNmatch(sx%,sy%)PROClft
 1380IFblock%=0ANDa%=2:IFFNanagram_cleverdick:a%=0
 1390ENDPROC
 1400:
 1410REM Lift moving hori/verti procedures
 1420DEFPROCupdatelift
 1430x%=sx%:y%=sy%
 1440IFyd%=0PROClift_hor ELSE PROClift_ver
 1450ENDPROC
 1460:
 1470REM Lift moving
 1480DEFPROClift_ver
 1490b%=code%?(FNpos(x%,y%)+2):IFb%>0 code%?FNpos(x%,y%+1)=0
 1500yd%=FNturnaround_ver
 1510IFb%>0:bl%=b%:PROClift_blockmove
 1520IFyd%=1:PROClift_up
 1530IFyd%=-1PROClift_down
 1540IFyd%=0PROClift_setwtmV
 1550IFyd%=-1ANDcode%?(FNpos(x%,y%-1)+2)>0PROCblocksabove(x%,y%+1) ELSE PROCblocksabove(x%,y%)
 1560ENDPROC
 1570:
 1580DEFPROClift_hor
 1590b%=code%?(FNpos(x%,y%)+2):IFb%>0PROCsprite(400+(40*x%)-(4*xd%),188+(40*y%),0):PROCsprite(400+(40*x%),188+(40*y%),b%):bl%=b%:PROClift_blockmove
 1600IFb%>0 code%?FNpos(x%,y%+1)=b%:code%?(FNpos(x%,y%)+2)=0
 1610xd%=FNturnaround_hor
 1620IFxd%=1:PROClift_right
 1630IFxd%=-1:PROClift_left
 1640IFxd%=0PROClift_setwtmH
 1650ENDPROC
 1660:
 1670REM To turn blocks around
 1680DEFFNturnaround_ver
 1690IFyd%=1ANDFNlift_aboveblock:=1 ELSE yd%=-1
 1700IFyd%=-1ANDcode%?FNpos(x%,y%-1)=0 =-1
 1710IFFNlift_aboveblock:=1 ELSE =0
 1720:
 1730DEFFNturnaround_hor
 1740IFxd%=1ANDcode%?FNpos(x%+1,y%)=0 =1 ELSE xd%=-1
 1750IFxd%=-1ANDcode%?FNpos(x%-1,y%)=0 =-1
 1760IFcode%?FNpos(x%+1,y%)=0 =1 ELSE =0
 1770:
 1780REM Move a block off a moving lift
 1790DEFPROClift_blockmove:LOCALx%,y%:B%=b%:MOUSEx%,y%,b%:IFNOTFNmr(400+(40*sx%),188+(40*sy%),440+(40*sx%),228+(40*sy%))ORb%=0b%=B%:ENDPROC
 1800IFb%=4ANDcode%?FNpos(sx%-1,sy%+1)=0:code%?FNpos(sx%,sy%+1)=code%?(FNpos(sx%,sy%)+2):code%?(FNpos(sx%,sy%)+2)=0:b%=0:PROCleft(sx%,sy%+1):ENDPROC
 1810IFb%=1ANDcode%?FNpos(sx%+1,sy%+1)=0:code%?FNpos(sx%,sy%+1)=code%?(FNpos(sx%,sy%)+2):code%?(FNpos(sx%,sy%)+2)=0:b%=0:PROCright(sx%,sy%+1):ENDPROC
 1820b%=B%:ENDPROC
 1830:
 1840REM Lifts that want to move
 1850DEFPROClift_wanttomoveV:x%=sx%:y%=sy%
 1860b%=code%?FNpos(x%,y%+1):IFb%>2ANDb%<40ANDcode%?(FNpos(x%,y%+1)+1)=0 code%?(FNpos(x%,y%)+2)=b%
 1870b%=code%?(FNpos(x%,y%)+2)
 1880IFFNlift_aboveblock PROClift_up:ENDPROC
 1890IFcode%?FNpos(x%,y%-1)=0 PROClift_down:ENDPROC
 1900code%?(FNpos(x%,y%)+2)=0:ENDPROC
 1910:
 1920DEFPROClift_wanttomoveH:x%=sx%:y%=sy%
 1930IFcode%?FNpos(x%-1,y%)>0ANDcode%?FNpos(x%+1,y%)>0ENDPROC
 1940IFcode%?FNpos(x%+1,y%)=0 PROClift_right:ENDPROC
 1950PROClift_left:ENDPROC
 1960:
 1970DEFPROClift_setwtmV
 1980IFcode%?(FNpos(x%,y%)+2)>0 code%?FNpos(x%,y%+1)=code%?(FNpos(x%,y%)+2):code%?(FNpos(x%,y%)+2)=0:PROCsprite(400+(40*x%),188+(40*y%),code%?FNpos(x%,y%+1))
 1990code%?(FNpos(x%,y%)+1)=128:ENDPROC
 2000:
 2010DEFPROClift_setwtmH
 2020IFcode%?(FNpos(x%,y%)+2)>0 code%?FNpos(x%,y%+1)=code%?(FNpos(x%,y%)+2):code%?(FNpos(x%,y%)+2)=0:PROCsprite(400+(40*x%),188+(40*y%),code%?FNpos(x%,y%+1))
 2030code%?(FNpos(x%,y%)+1)=64:ENDPROC
 2040:
 2050DEFFNlift_aboveblock:IFcode%?(FNpos(x%,y%)+2)=0ANDcode%?FNpos(x%,y%+1)=0 =TRUE
 2060IFcode%?(FNpos(x%,y%)+2)>0ANDcode%?FNpos(x%,y%+2)=0=TRUE
 2070=FALSE
 2080:
 2090REM Actually moving the bleeders
 2100DEFPROClift_up:IFb%>0code%?FNpos(x%,y%+2)=63
 2110code%?FNpos(x%,y%+1)=code%?FNpos(x%,y%):code%?(FNpos(x%,y%+1)+2)=b%:code%?(FNpos(x%,y%+1)+1)=1:code%?FNpos(x%,y%)=0:code%?(FNpos(x%,y%)+1)=0:X%=400+(40*x%):Y%=148+(40*y%):PROCsprite(X%,Y%,0):PROCsprite(X%,Y%+8,1)
 2120IFb%>0 PROCsprite(X%,Y%+48,b%)
 2130ENDPROC
 2140:
 2150DEFPROClift_down:code%?FNpos(x%,y%-1)=code%?FNpos(x%,y%):code%?(FNpos(x%,y%-1)+2)=b%:code%?(FNpos(x%,y%-1)+1)=3:code%?(FNpos(x%,y%)+1)=0:IFb%>0code%?FNpos(x%,y%)=63 ELSE code%?FNpos(x%,y%)=0
 2160X%=400+(40*x%):Y%=148+(40*y%):PROCsprite(X%,Y%,0):PROCsprite(X%,Y%-8,1):IFcode%?(FNpos(x%,y%-1)+2)>0 PROCsprite(X%,Y%+44,0):PROCsprite(X%,Y%+32,code%?(FNpos(x%,y%-1)+2))
 2170ENDPROC
 2180:
 2190DEFPROClift_right:IFFNblock(x%,y%+1)ANDcode%?FNpos(x%+1,y%+1)=0:code%?(FNpos(x%,y%)+2)=code%?FNpos(x%,y%+1):b%=code%?FNpos(x%,y%+1):code%?FNpos(x%,y%+1)=0:code%?FNpos(x%+1,y%+1)=63 ELSE b%=0
 2200code%?FNpos(x%+1,y%)=code%?FNpos(x%,y%):code%?(FNpos(x%+1,y%)+2)=b%:code%?(FNpos(x%+1,y%)+1)=7:code%?FNpos(x%,y%)=0:code%?(FNpos(x%,y%)+1)=0:X%=400+(40*x%):Y%=148+(40*y%):PROCsprite(X%,Y%,0):PROCsprite(X%+8,Y%,1)
 2210IFb%>0 PROCsprite(X%-4,Y%+40,0):PROCsprite(X%+8,Y%+40,b%):PROCblocksabove(x%,y%+1) ELSEPROCblocksabove(x%,y%)
 2220ENDPROC
 2230:
 2240DEFPROClift_left:IFFNblock(x%,y%+1)ANDcode%?FNpos(x%-1,y%+1)=0code%?(FNpos(x%,y%)+2)=code%?FNpos(x%,y%+1):b%=code%?FNpos(x%,y%+1):code%?FNpos(x%,y%+1)=0:code%?FNpos(x%-1,y%+1)=63 ELSE b%=0
 2250code%?FNpos(x%-1,y%)=code%?FNpos(x%,y%):code%?(FNpos(x%-1,y%)+2)=b%:code%?(FNpos(x%-1,y%)+1)=5:code%?FNpos(x%,y%)=0:code%?(FNpos(x%,y%)+1)=0:X%=400+(40*x%):Y%=148+(40*y%):PROCsprite(X%,Y%,0):PROCsprite(X%-8,Y%,1)
 2260IFb%>0 PROCsprite(X%+4,Y%+40,0):PROCsprite(X%-8,Y%+40,b%):PROCblocksabove(x%,y%+1) ELSEPROCblocksabove(x%,y%)
 2270ENDPROC
 2280:
 2290REM Some usefull functions and procedures
 2300DEFPROCblocksabove(x%,y%):LOCALN,b%:N=1:REPEATb%=code%?FNpos(x%,y%+N):IFb%>2ANDb%<40ANDcode%?(FNpos(x%,y%+N)+1)=0ANDFNgravityisdue(x%,y%+N)PROCgravity(x%,y%+N)
 2310N=N+1:UNTILNOT(b%>2ANDb%<40):ENDPROC
 2320:
 2330DEFPROCgravity(x%,y%):LOCALbl%:bl%=code%?FNpos(x%,y%):code%?FNpos(x%,y%-1)=bl%:code%?(FNpos(x%,y%-1)+1)=3:IFbl%<>13code%?FNpos(x%,y%)=0:x%=400+(x%*40):y%=148+(y%*40):PROCsprite(x%,y%,0):PROCsprite(x%,y%-8,bl%):ENDPROC
 2340code%?FNpos(x%,y%)=40:x%=400+(x%*40):y%=148+(y%*40):PROCsprite(x%,y%,40):PROCsprite(x%,y%-8,13):ENDPROC
 2350DEFFNgravityisdue(x%,y%):IFcode%?FNpos(x%,y%-1)=0ANDFNblock(x%,y%):=TRUE
 2360IFcode%?FNpos(x%,y%)=13ANDcode%?FNpos(x%,y%-1)=40=TRUE
 2370=FALSE
 2380:
 2390REM The match maker
 2400DEFFNmatch(x%,y%):bl%=code%?FNpos(x%,y%)AND63:IFbl%<3ORbl%>12=FALSE
 2410IFNOT(FNba ORFNbb ORFNbl ORFNbr):=FALSE
 2420code%?FNpos(x%,y%)=0:PROCsprite(400+(x%*40),148+(y%*40),0):block%=block%-1:PROCbell
 2430IFFNba PROCma:block%=block%-1:score%=score%+10
 2440IFFNbb PROCmb:block%=block%-1:score%=score%+10
 2450IFFNbl PROCml:block%=block%-1:score%=score%+10
 2460IFFNbr PROCmr:block%=block%-1:score%=score%+10
 2470IFa%>0PROCanagram_newletter
 2480PROCblocksabove(x%,y%):PROClft:PROCscore:=TRUE
 2490DEFFNba:IFFNnomovematch(x%,y%+1):=TRUE ELSE=FALSE
 2500DEFFNbb:IFFNnomovematch(x%,y%-1):=TRUE ELSE=FALSE
 2510DEFFNbl:IFFNnomovematch(x%-1,y%):=TRUE ELSE=FALSE
 2520DEFFNbr:IFFNnomovematch(x%+1,y%):=TRUE ELSE=FALSE
 2530DEFPROCma:PROCbyebye(x%,y%+1):ENDPROC
 2540DEFPROCmb:PROCbyebye(x%,y%-1):ENDPROC
 2550DEFPROCml:PROCbyebye(x%-1,y%):ENDPROC
 2560DEFPROCmr:PROCbyebye(x%+1,y%):ENDPROC
 2570DEFFNnomovematch(x%,y%):IF(code%?FNpos(x%,y%)AND63)=bl%ANDcode%?(FNpos(x%,y%)+1)=0=TRUE ELSE=FALSE
 2580DEFPROCbyebye(x%,y%):code%?FNpos(x%,y%)=0:code%?(FNpos(x%,y%)+1)=0:code%?(FNpos(x%,y%)+2)=0:PROCsprite(400+(x%*40),148+(y%*40),0):PROCblocksabove(x%,y%):IFcode%?FNpos(x%,y%-1)=40PROCwater_sink(x%,y%-1)
 2590ENDPROC
 2600:
 2610REM Those class in a glass special blocks...
 2620:
 2630REM Boo hiss
 2640DEFFNnasties(x%,y%)
 2650b%=code%?FNpos(x%,y%-1)
 2660IFb%=49PROCspikes:=TRUE
 2670IFb%=52PROCblackhole:=TRUE
 2680=FALSE
 2690:
 2700DEFPROCspikes:code%?FNpos(x%,y%)=0:PROCsprite(400+(x%*40),148+(y%*40),0):PROClaugh:PROCblocksabove(x%,y%+1):ENDPROC
 2710:
 2720DEFPROCblackhole:code%?FNpos(x%,y%)=0:PROCsprite(400+(x%*40),148+(y%*40),0):PROCblackping:PROCblocksabove(x%,y%+1):ENDPROC
 2730:
 2740DEFFNcrusher(sy%)
 2750VDU24,400+(cx%*40);0;436+(cx%*40);184+(cy%*40);:M=cy%+1
 2760REPEAT:M=M-1:b%=code%?FNpos(cx%,M):IFb%=0PROCcrusherdown(M)
 2770UNTILb%<>0:IFb%<3ORb%>39PROCcrusherup:=FALSE
 2780PROCcrusherdown(M)
 2790code%?FNpos(cx%,M)=0:PROClaugh:M=M-1:PROCcrusherup:IFM=sy%=TRUE ELSE =FALSE
 2800:
 2810DEFPROCcrusherdown(y%):y%=188+(y%*40):FORN=0TO20:PROCsprite(400+(cx%*40),y%-(N*2),51):T%=TIME:REPEATUNTILTIME>T%:NEXT:ENDPROC
 2820DEFPROCcrusherup:LOCALy%:y%=188+(cy%*40):FORN=(cy%-M)*20TO0STEP-1:PROCsprite(400+(cx%*40),y%-(N*2),51):T%=TIME:REPEATUNTILTIME>T%:NEXT:VDU26:ENDPROC
 2830:
 2840REM Acid drips...
 2850DEFPROCupdateacid(x%,y%)
 2860IFFNblock(x%,y%-1):PROCacid_dissolve:PROCacid_up:ENDPROC
 2870IFFNgravityisdue(x%,y%):PROCgravity(x%,y%) ELSE PROCacid_up
 2880ENDPROC
 2890:
 2900DEFPROCacid_dissolve:code%?FNpos(x%,y%-1)=0:PROCsprite(400+(x%*40),108+(y%*40),0):PROCacidhiss:ENDPROC
 2910:
 2920DEFPROCacid_up:N=y%+1:code%?FNpos(x%,y%)=0:PROCsprite(400+(x%*40),148+(y%*40),0):M=FALSE:REPEATN=N+1:IFcode%?FNpos(x%,N)<>0M=TRUE:IFcode%?FNpos(x%,N-1)=0code%?FNpos(x%,N-1)=50:IFFNgravityisdue(x%,N-1)PROCgravity(x%,N-1)
 2930UNTILM ORN=19:ENDPROC
 2940:
 2950REM Wee plonk
 2960DEFFNdooberies(sx%,sy%,x%,y%):LOCALb%
 2970b%=code%?FNpos(sx%,sy%)
 2980IFb%=43PROCthrower_right:=TRUE
 2990IFb%=44PROCthrower_left:=TRUE
 3000IFb%=45PROCwarp:=TRUE
 3010IFb%=46PROCright(x%,y%):=TRUE
 3020IFb%=47PROCleft(x%,y%):=TRUE
 3030IFb%=48PROCtransmat(sx%,sy%,x%-sx%,y%-sy%):=TRUE
 3040=FALSE
 3050:
 3060REM Throwers
 3070DEFPROCthrower_right:IFcode%?FNpos(sx%+1,sy%+1)<>0PROCthrower_match:ENDPROC
 3080b%=code%?FNpos(x%,y%):code%?FNpos(x%,y%)=0:PROCsprite(400+(40*x%),148+(40*y%),0):PROCblocksabove(x%,y%):code%?FNpos(sx%+1,sy%+1)=b%:PROCsprite(440+(40*sx%),188+(40*sy%),b%)
 3090X%=FALSE:M=code%?(FNpos(sx%,sy%)+1)-1:N=1:REPEATIFcode%?FNpos(sx%+N+1,sy%+N+1)=0:N=N+1:code%?FNpos(sx%+N-1,sy%+N-1)=0:PROCsprite(360+(40*(sx%+N)),108+(40*(sy%+N)),0):code%?FNpos(sx%+N,sy%+N)=b%:PROCsprite(400+(40*(sx%+N)),148+(40*(sy%+N)),b%):M=M-1 ELSE X%=TRUE
 3100IFM=0X%=TRUE
 3110UNTILX%
 3120bl%=b%:IFFNgravityisdue(sx%+N,sy%+N)PROCgravity(sx%+N,sy%+N):ENDPROC
 3130IFFNdooberies(sx%+N,sy%+N-1,sx%+N,sy%+N):ENDPROC
 3140IFFNnasties(sx%+N,sy%+N):ENDPROC
 3150IFFNmatch(sx%+N,sy%+N)
 3160ENDPROC
 3170:
 3180DEFPROCthrower_left:IFcode%?FNpos(sx%-1,sy%+1)<>0PROCthrower_match:ENDPROC
 3190b%=code%?FNpos(x%,y%):code%?FNpos(x%,y%)=0:PROCsprite(400+(40*x%),148+(40*y%),0):PROCblocksabove(x%,y%):code%?FNpos(sx%-1,sy%+1)=b%:PROCsprite(360+(40*sx%),188+(40*sy%),b%)
 3200X%=FALSE:M=code%?(FNpos(sx%,sy%)+1)-1:N=1:REPEATIFcode%?FNpos(sx%-N-1,sy%+N+1)=0:N=N+1:code%?FNpos(sx%-N+1,sy%+N-1)=0:PROCsprite(440+(40*(sx%-N)),108+(40*(sy%+N)),0):code%?FNpos(sx%-N,sy%+N)=b%:PROCsprite(400+(40*(sx%-N)),148+(40*(sy%+N)),b%):M=M-1 ELSE X%=TRUE
 3210IFM=0X%=TRUE
 3220UNTILX%
 3230bl%=b%:IFFNgravityisdue(sx%-N,sy%+N)PROCgravity(sx%-N,sy%+N):ENDPROC
 3240IFFNdooberies(sx%-N,sy%+N-1,sx%-N,sy%+N):ENDPROC
 3250IFFNnasties(sx%-N,sy%+N):ENDPROC
 3260IFFNmatch(sx%-N,sy%+N)
 3270ENDPROC
 3280:
 3290DEFPROCthrower_match
 3300IFFNmatch(x%,y%)
 3310ENDPROC
 3320:
 3330REM Into a warp, lovies
 3340DEFPROCwarp:X%=code%?(FNpos(sx%,sy%)+1):Y%=code%?(FNpos(sx%,sy%)+2):IFcode%?FNpos(X%,Y%)<>0PROCwarp_match:ENDPROC
 3350b%=code%?FNpos(x%,y%):code%?FNpos(x%,y%)=0:PROCsprite(400+(40*x%),148+(40*y%),0):PROCblocksabove(x%,y%):code%?FNpos(X%,Y%)=b%:PROCsprite(400+(40*X%),148+(40*Y%),b%)
 3360bl%=b%:IFFNgravityisdue(X%,Y%)PROCgravity(X%,Y%):ENDPROC
 3370IFFNdooberies(X%,Y%-1,X%,Y%):ENDPROC
 3380IFFNnasties(sx%+N-1,sy%+N-1):ENDPROC
 3390IFFNmatch(X%,Y%):ENDPROC
 3400ENDPROC
 3410:
 3420DEFPROCwarp_match
 3430IFFNmatch(x%,y%)
 3440ENDPROC
 3450:
 3460REM Those good ol'transmats
 3470DEFPROCtransmat(x%,y%,xd%,yd%)
 3480N=x%:M=y%:REPEATN=N+1:IFN=20N=0:M=M-1:IFM=-1M=19
 3490UNTILcode%?FNpos(N,M)=48:N=N-xd%:M=M-yd%
 3500IFcode%?FNpos(N,M)<>0:PROCtransmat_match:ENDPROC
 3510x%=x%+xd%:y%=y%+yd%:bl%=code%?FNpos(x%,y%):code%?FNpos(N,M)=bl%:code%?FNpos(x%,y%)=0:PROCsprite(400+(40*x%),148+(40*y%),0):PROCblocksabove(x%,y%):PROCsprite(400+(40*N),148+(40*M),code%?FNpos(N,M)):PROCtransping
 3520IFFNgravityisdue(N,M)PROCgravity(N,M):ENDPROC
 3530IFFNdooberies(N,M-1,N,M):ENDPROC
 3540IFFNnasties(N,M):ENDPROC
 3550IFFNmatch(N,M)
 3560ENDPROC
 3570:
 3580DEFPROCtransmat_match
 3590IFFNmatch(x%,y%)
 3600ENDPROC
 3610:
 3620REM Move a sprite
 3630DEFPROCredraw:IFbl%<>13PROCsprite(400+(40*sx%)-(xd%*4*(9-b%)),148+(40*sy%)-(yd%*4*(9-b%)),0):PROCsprite(400+(40*sx%)-(xd%*4*(8-b%)),148+(40*sy%)-(yd%*4*(8-b%)),bl%):ELSEPROCsprite(400+(40*sx%)-(xd%*4*(10-b%)),148+(40*sy%)-(yd%*4*(10-b%)),40)
 3640PROCsprite(400+(40*sx%)-(xd%*4*(8-b%)),148+(40*sy%)-(yd%*4*(8-b%)),bl%)
 3650IFbl%=1ANDcode%?(FNpos(sx%,sy%)+2)>0 PROCsprite(400+(40*sx%)-(xd%*4*(9-b%)),188+(40*sy%)-(yd%*4*(9-b%)),0):PROCsprite(400+(40*sx%)-(xd%*4*(8-b%)),188+(40*sy%)-(yd%*4*(8-b%)),code%?(FNpos(sx%,sy%)+2))
 3660ENDPROC
 3670:
 3680:
 3690REM Block movement procedures
 3700DEFPROCmove:x%=(x%-400)DIV40:y%=(y%-150)DIV40:bl%=code%?FNpos(x%,y%)
 3710IFbl%=42PROCballoon_move
 3720IFb%=4ANDFNblock(x%,y%)PROCleft(x%,y%):ENDPROC
 3730IFb%=1ANDFNblock(x%,y%)PROCright(x%,y%)
 3740ENDPROC
 3750:
 3760DEFPROCleft(x%,y%)
 3770b%=code%?FNpos(x%-1,y%):IFb%<>0ANDb%<>40ANDNOT(b%>42ANDb%<46ORb%=48)ORcode%?(FNpos(x%,y%)+1)<>0b%=FNmatch(x%,y%):ENDPROC
 3780IFbl%<>13:IFFNdooberies(x%-1,y%,x%,y%):ENDPROC
 3790PROCcymbalping
 3800IFbl%<>13code%?FNpos(x%,y%)=0ELSEcode%?FNpos(x%,y%)=40
 3810code%?FNpos(x%-1,y%)=bl%:code%?(FNpos(x%-1,y%)+1)=5:code%?(FNpos(x%-1,y%)+2)=code%?(FNpos(x%,y%)+2):x%=400+(x%*40):y%=148+(y%*40)
 3820IFbl%<>13PROCsprite(x%,y%,0)ELSEPROCsprite(x%,y%,40)
 3830PROCsprite(x%-8,y%,bl%):ENDPROC
 3840:
 3850DEFPROCright(x%,y%)
 3860b%=code%?FNpos(x%+1,y%):IFb%<>0ANDb%<>40ANDNOT(b%>42ANDb%<46ORb%=48)ORcode%?(FNpos(x%,y%)+1)<>0b%=FNmatch(x%,y%):ENDPROC
 3870IFbl%<>13:IFFNdooberies(x%+1,y%,x%,y%):ENDPROC
 3880PROCcymbalping
 3890IFbl%<>13code%?FNpos(x%,y%)=0ELSEcode%?FNpos(x%,y%)=40
 3900code%?FNpos(x%+1,y%)=bl%:code%?(FNpos(x%+1,y%)+1)=7:code%?(FNpos(x%+1,y%)+2)=code%?(FNpos(x%,y%)+2):x%=400+(x%*40):y%=148+(y%*40)
 3910IFbl%<>13PROCsprite(x%,y%,0)ELSEPROCsprite(x%,y%,40)
 3920PROCsprite(x%+8,y%,bl%):ENDPROC
 3930:
 3940REM Its anagram time
 3950DEFPROCanagram_newletter:IFan%=LENword$:ENDPROC
 3960an%=an%+1:PROCanagram_newpos:PROCsprite(400+(40*X%),148+(Y%*40),code%?FNpos(X%,Y%)):IFan%=LENword$a%=2:PROCanagram_dropyerblocks
 3970ENDPROC
 3980:
 3990DEFPROCanagram_newpos:X%=0:Y%=0:N=an%:REPEATb%=code%?FNpos(X%,Y%):IFb%>13ANDb%<40N=N-1
 4000IFN<>0:X%=X%+1:IFX%=20X%=0:Y%=Y%+1
 4010UNTILY%=20ORN=0:IFY%=20Y%=0: REM Major catastrophe
 4020ENDPROC
 4030:
 4040DEFPROCanagram_dropyerblocks:PROCvduseven:FORN=0TO19:FORM=0TO19:b%=code%?FNpos(N,M):IFb%>13ANDb%<40ANDFNgravityisdue(N,M):PROCgravity(N,M)
 4050NEXT:NEXT:ENDPROC
 4060:
 4070DEFFNanagram_cleverdick:x%=anx%:y%=any%:N=TRUE:M=1:REPEATb%=code%?FNpos(x%,y%)-14:IFb%<>ASCMID$(word$,M)-65:N=FALSE
 4080x%=x%+1:M=M+1:UNTILM=an%+1:=N
 4090:
 4100REM My beautiful red balloon...
 4110DEFPROCballoon_move
 4120IFb%=4PROCballoon_left(x%,y%)
 4130IFb%=1PROCballoon_right(x%,y%)
 4140ENDPROC
 4150:
 4160DEFPROCballoon_right(x%,y%)
 4170PROCright(x%,y%):IFFNblock(x%,y%+1)bl%=code%?FNpos(x%,y%+1):PROCright(x%,y%+1)
 4180ENDPROC
 4190:
 4200DEFPROCballoon_left(x%,y%)
 4210PROCleft(x%,y%):IFFNblock(x%,y%+1)bl%=code%?FNpos(x%,y%+1):PROCleft(x%,y%+1)
 4220ENDPROC
 4230:
 4240REM A watery grave...
 4250DEFPROCwater_sink(x%,y%)
 4260code%?FNpos(x%,y%)=13:PROCsprite(400+(x%*40),148+(y%*40),13):PROCsunkgurgle:IFFNgravityisdue(x%,y%)PROCgravity(x%,y%)
 4270ENDPROC
 4280:
 4290DEFFNwater_noleaks
 4300b%=TRUE:FORx%=0TO19:FORy%=0TO19:IFcode%?FNpos(x%,y%)=41ANDcode%?FNpos(x%,y%+1)=40b%=FALSE
 4310NEXT:NEXT:IFb%:=TRUE
 4320REM Eek, call a plumber...
 4330IFpause%<>2PROCfullgurgle:PROCfunkytextX("UNPLUGGED LEAK",548,348)
 4340=FALSE
 4350:
 4360REM Helpful routines
 4370DEFFNpos(x%,y%):=((y%*20)+x%)*3
 4380DEFFNblock(x%,y%):LOCALb%:b%=code%?FNpos(x%,y%):IF(b%<3ORb%>39)ANDb%<>50=FALSE
 4390IFb%>13ANDb%<40ANDa%=1=FALSE
 4400IFcode%?(FNpos(x%,y%)+1)<>0=FALSE
 4410=TRUE
 4420:
 4430:
 4440REM Minions (usecd at start of a level, i.e. load, draw)
 4450DEFPROCload:VDU24,400;150;1279;1023;:FORM=0TO12:FORN=5TO15:PROCs(N*80,898-128*M,"block"):NEXT:NEXT:VDU26,23,17,7,6,4;8;0;5:GCOL0TINT0:RECTANGLEFILL0,64,1279,32:GCOL60TINT128:MOVE584,96:PRINT"Loading":VDU4,28,12,10,38,5:OFF
 4460block%=0:X%=OPENIN("level"+STR$level%+".level"):FORM=0TO19:FORN=0TO19:code%?FNpos(N,M)=BGET#X%:code%?(FNpos(N,M)+1)=BGET#X%:code%?(FNpos(N,M)+2)=BGET#X%:IF(code%?FNpos(N,M)AND63)>2AND(code%?FNpos(N,M)AND63)<13block%=block%+1
 4470NEXT:NEXT:cx%=BGET#X%:cy%=BGET#X%:CLOSE#X%:VDU26:OFF
 4480X%=OPENIN("level"+STR$level%+".info"):title$="":FORN=1TO40:s$=CHR$BGET#X%:IFs$<>"@"title$=title$+s$
 4490NEXT:time%=BGET#X%:word$="":FORN=1TO10:s$=CHR$BGET#X%:IFs$<>"@"word$=word$+s$
 4500NEXT:anx%=BGET#X%:any%=BGET#X%:an%=0:sx%=0:sy%=0:CLOSE#X%:ENDPROC
 4510:
 4520DEFPROCdraw:a%=0:FORN=0TO19:FORM=0TO19:b%=code%?FNpos(N,M):IFb%<>63ANDNOT(b%>13ANDb%<40)PROCsprite(400+(N*40),148+(M*40),b%)
 4530IFb%>13ANDb%<40PROCsprite(400+(N*40),148+(M*40),2):a%=1
 4540IFcode%?FNpos(N,M)=50ANDFNgravityisdue(N,M)PROCgravity(N,M)
 4550NEXT:NEXT:ENDPROC
 4560:
 4570DEFPROCnewlevel:PROChallelujah:PROCmousewaiting
 4580L%=level%-1:PROCframe(500,402,680,300,2):VDU5,23,17,7,6,4;8;0;:PROCnltxt("Congratulations!",680)                          :PROCnltxt("Level "+STR$L%+" completed",600):PROCnltxt("Bonus: 100 x "+STR$L%,560):score%=score%+(100*L%):VDU4:PROCscore:VDU5
 4590PROCnltxt("Your password for level "+STR$(L%+1)+" is:",500):VDU4,28,12,10,38,5:OFF
 4600X%=OPENIN"info":PTR#X%=1+(9*(L%-1)):s$="":FORM=1TO9:s$=s$+CHR$(BGET#X%+1):NEXT:CLOSE#X%:VDU26,5,23,17,7,6,6;8;0;:PROCbt(s$,732,460)
 4610REPEATMOUSEx%,y%,b%:UNTILb%=0:REPEATMOUSEx%,y%,b%:PROCscrollaround:UNTILNOT(b%=0):PROCmousearrow:ENDPROC
 4620:
 4630DEFPROCnltxt(s$,y%):PROCbt(s$,840-(LENs$*8),y%):ENDPROC
 4640:
 4650REM Update score panel procedures
 4660DEFPROCtitle:VDU5,23,17,7,6,8;8;0;:GCOL0TINT0:RECTANGLEFILL0,64,1279,32:GCOL63TINT192:MOVE640-(LENtitle$*16),96:PRINTtitle$:ENDPROC
 4670DEFPROClives:GCOL6TINT128:RECTANGLEFILL228,730,120,40:IFlive%=0ENDPROC
 4680FORN=1TOlive%:PROCsprite(228+(3-live%)*40+(N-1)*40,730,1):NEXT:ENDPROC
 4690:
 4700DEFPROClevel:GCOL6TINT128:RECTANGLEFILL224,654,124,44:PROCfunkytextX(STR$level%,240,654):ENDPROC
 4710:
 4720DEFPROClft:PRINTTAB(8,13)"   "TAB(8,13);block%:ENDPROC
 4730:
 4740DEFPROCtime:PRINTTAB(7,16)"   "TAB(7,16);time%:ENDPROC
 4750:
 4760DEFPROCscore:PRINTTAB(11-LENSTR$score%,22);score%:ENDPROC
 4770:
 4780REM High score table
 4790DEFPROCscores:LOCALN:VDU26,17,128:GCOL0TINT0:RECTANGLEFILL0,0,1279,1023:MOUSEOFF:PROCscores_display(255)
 4800GCOL0TINT0::OFF:N=0:REPEAT
 4810PROCwipe(540,908+80*SIN(N-0.2)):PROCs(540,908+80*SINN,"e"):PROCwipe(576,908+80*SINN):PROCs(576,908+80*SIN(N+0.2),"n"):PROCwipe(612,908+80*SIN(N+0.2)):PROCs(612,908+80*SIN(N+0.4),"i")
 4820PROCwipe(648,908+80*SIN(N+0.4)):PROCs(648,908+80*SIN(N+0.6),"g"):PROCwipe(684,908+80*SIN(N+0.6)):PROCs(684,908+80*SIN(N+0.8),"m"):PROCwipe(720,908+80*SIN(N+0.8)):PROCs(720,908+80*SIN(N+1),"a")
 4830T%=TIME:N=N+0.2:IFN=2
 4840REPEATUNTILTIME>T%+5:MOUSEx%,y%,b%:UNTILb%=4:MOUSEON:ENDPROC
 4850:
 4860DEFPROChighscore:VDU5:PROCgetastring(10,8):IFscore%<EVAL($blck%):ENDPROC
 4870M=0:REPEAT PROCgetastring(10+M*18,8):M=M+1:UNTILscore%<EVAL($blck%) OR M=10:M=M-2
 4880IFM<>0FORN=0TOM-1:FORx%=0TO17:highscores%?(N*18+x%)=highscores%?((N+1)*18+x%):NEXT:NEXT
 4890PROCscores_display(M)
 4900y%=168+(M*48):PROCfunkytextX(STRING$(8-LENSTR$score%,"0")+STR$score%,700,y%)
 4910VDU23,17,7,6,9;16;0;:GCOL2TINT64:MOVE300,y%+48:PRINT"----------":*fX 15
 4920N=0:REPEATREPEATx%=GET:UNTILx%>64ANDx%<91ORx%=32ORx%=127ORx%=13:IFN<>10ANDx%<>127ANDx%<>13GCOL2TINT0:RECTANGLEFILL300+N*36,y%,36,40:blck%?N=x%:N=N+1:IFx%<>32PROCs(264+N*36,y%,CHR$x%)
 4930IFx%=127ANDN>0N=N-1:GCOL2TINT0:RECTANGLEFILL300+N*36,y%,36,40:GCOL2TINT64:MOVE300+N*36,y%+48:PRINT"-"
 4940UNTILx%=13:IFN<>10FORN=N TO9:blck%?N=32:NEXT
 4950FORN=0TO9:highscores%?(M*18+N)=blck%?N:NEXT:$blck%=STRING$(8-LENSTR$score%,"0")+STR$score%:FORN=0TO7:highscores%?(M*18+10+N)=blck%?N:NEXT
 4960P%=TRUE:PROCscores:ENDPROC
 4970:
 4980DEFPROCscores_display(M):GCOL0TINT0:RECTANGLEFILL0,0,1279,1023:PROCframe(260,118,760,700,2):PROCframe(400,698,480,80,2):PROCfunkytext("HIGH SCORES",720)
 4990FORy%=9TO0STEP-1:IFy%<>M:PROCgetastring(y%*18,10):PROCfunkytextX($blck%,300,168+(y%*48)):PROCgetastring(10+y%*18,8):PROCfunkytextX($blck%,700,168+(y%*48))
 5000NEXT:ENDPROC
 5010:
 5020DEFPROCgetastring(x%,y%):LOCALN:x%=x%+highscores%:FORN=0TOy%-1:blck%?N=x%?N:NEXT:blck%?y%=13:ENDPROC
 5030:
 5040REM Password
 5050DEFFNlevel:VDU26,5:GCOL0TINT0:RECTANGLEFILL0,0,1279,1023:MOUSEOFF:PROCframe(300,218,680,500,2):PROCframe(400,602,480,80,2):PROCfunkytext("PASSWORD",624):VDU23,17,7,6,4;8;0;:PROCbt("Enter level password",480,500):VDU23,17,7,6,9;16;0;:GCOL2TINT64:MOVE478,348:PRINT"---------":*fX 15
 5060s$="":N=0:REPEATREPEATM=GET:UNTILM>64ANDM<91ORM=127ORM=13:IFN<>9ANDM<>127ANDM<>13GCOL2TINT0:RECTANGLEFILL474+N*36,300,36,40:PROCs(478+N*36,300,CHR$M):s$=s$+CHR$M:N=N+1
 5070IFM=127ANDN>0N=N-1:s$=LEFT$(s$,LENs$-1):GCOL2TINT0:RECTANGLEFILL474+N*36,300,36,40:GCOL2TINT64:MOVE478+N*36,348:PRINT"-"
 5080UNTILM=13:IFLENs$<>9PROCmenuscreen:=1
 5090X%=OPENIN"info":PTR#X%=1:N=1:REPEATN=N+1:a$="":FORM=1TO9:a$=a$+CHR$(BGET#X%+1):NEXT
 5100UNTILs$=a$ORN=l%:CLOSE#0:IFs$<>a$:PROCmenuscreen:=1
 5110level%=N:PROCframe(300,218,680,500,2):PROCfunkytext("PASSWORD OK",624):PROCfunkytext("ENTRY TO LEVEL",450):PROCfunkytext(STR$(level%),350):*fX 15
 5120REPEATMOUSEx%,y%,b%:UNTILb%=4:=level%
 5130:
 5140REM Mainly menu routines and pretty picture stuff
 5150DEFPROCframe(x%,y%,xl%,yl%,c%):GCOL0TINT0:RECTANGLEFILLx%-4,y%-4,xl%+8,yl%+8:GCOLc%TINT64:RECTANGLEFILLx%,y%,xl%,yl%:GCOLc%TINT192:MOVEx%,y%:MOVEx%+10,y%+10:PLOT&55,x%,y%+yl%:PLOT&55,x%+xl%-20,y%+yl%-20:PLOT&55,x%+xl%,y%+yl%:GCOLc%TINT0:RECTANGLEFILLx%+10,y%+10,xl%-20,yl%-20
 5160GCOL0TINT0:RECTANGLEFILLx%,y%+yl%-16,4,16:RECTANGLEFILLx%,y%+yl%-4,16,4:RECTANGLEFILLx%+xl%-16,y%,16,4:RECTANGLEFILLx%+xl%-4,y%,4,16:GCOL11TINT0:MOVEx%,y%+yl%-12:PLOT1,0,12:GCOL31TINT0:PLOT1,12,0:MOVEx%+xl%-12,y%:PLOT1,12,0:GCOL11TINT0:PLOT1,0,12:ENDPROC
 5170:
 5180DEFPROCbutton(x%,y%,c%):GCOL0TINT0:RECTANGLEFILLx%-4,y%-4,208,158:GCOLc%TINT64:MOVEx%+200,y%:MOVEx%,y%:PLOT&55,x%+200,y%+150:GCOLc%TINT192:PLOT&55,x%,y%+150:GCOLc%TINT0:RECTANGLEFILLx%+10,y%+10,180,130
 5190GCOL0TINT0:RECTANGLEFILLx%,y%+134,4,16:RECTANGLEFILLx%,y%+146,16,4:RECTANGLEFILLx%+184,y%,16,4:RECTANGLEFILLx%+196,y%,4,16:GCOL11TINT0:MOVEx%,y%+138:PLOT1,0,12:GCOL31TINT0:PLOT1,12,0:MOVEx%+188,y%:PLOT1,12,0:GCOL11TINT0:PLOT1,0,12:ENDPROC
 5200:
 5210DEFPROCsprite(x%,y%,s%):SYS"OS_SpriteOp",&22+512,sprites%,16+sprites%+(164*(s%AND63)),x%,y%,0:IFs%>127PROCs(x%,y%,"static")
 5220ENDPROC
 5230DEFPROCs(x%,y%,$blck%):SYS"OS_SpriteOp",&22+256,sprites%,blck%,x%,y%,&08:ENDPROC
 5240DEFPROCcentretext(a$,y%):MOVE640-LENa$*16,y%:PRINTa$:ENDPROC
 5250DEFPROCfunkytext(a$,y%):x%=640-(LENa$*36)DIV2:GCOL8,0:FORN=1TOLENa$:IFASCMID$(a$,N)>64ANDASCMID$(a$,N)<91 PROCs(x%,y%,MID$(a$,N,1)) ELSE IFASCMID$(a$,N)<>32PROCs(x%,y%,"n"+MID$(a$,N,1))
 5260x%=x%+36:NEXT:ENDPROC
 5270DEFPROCfunkytextX(a$,x%,y%):GCOL8,0:FORN=1TOLENa$:IFASCMID$(a$,N)>64ANDASCMID$(a$,N)<91 PROCs(x%,y%,MID$(a$,N,1)) ELSE IFASCMID$(a$,N)<>32PROCs(x%,y%,"n"+MID$(a$,N,1))
 5280DEFPROCbt(s$,x%,y%):GCOL0TINT0:MOVEx%,y%+4:PRINTs$:MOVEx%,y%-4:PRINTs$:MOVEx%-4,y%:PRINTs$:MOVEx%+4,y%:PRINTs$:GCOL11TINT0:MOVEx%,y%:PRINTs$:ENDPROC
 5290x%=x%+36:NEXT:ENDPROC
 5300DEFFNmr(x1%,y1%,x2%,y2%):IFx%>x1%ANDx%<x2%ANDy%>y1%ANDy%<y2%=TRUE ELSE =FALSE
 5310:
 5320REM Draw the menu and scroll the mega-text
 5330DEFPROCmenuscreen:GCOL0TINT0:RECTANGLEFILL0,0,1279,1023:VDU5,23,2,25,0,25,0,25,0,25,0,23,3,0,25,0,25,0,25,0,25,23,4,25,0,25,0,25,0,25,0,23,5,0,25,0,25,0,25,0,25:VDU26:GCOL0,0:RECTANGLEFILL24,24,1228,975:GCOL80,0:RECTANGLEFILL28,28,1222,967
 5340GCOL8,0:PROCs(540,850,"e"):PROCs(576,850,"n"):PROCs(608,850,"i"):PROCs(640,850,"g"):PROCs(676,850,"m"):PROCs(712,850,"a")
 5350VDU23,17,7,6,8;4;0;:GCOL48TINT192:PROCcentretext("by",700):PROCcentretext("Pete Goodliffe",670):GCOL15TINT0:PROCcentretext("Trax Software",610):PROCcentretext("1992",580):GCOL12TINT0:PROCcentretext("Please select choice",350):VDU23,17,7,6,8;8;0;
 5360PROCbutton(133,400,2):PROCbutton(405,400,4):PROCbutton(673,400,17):PROCbutton(945,400,32):VDU23,17,7,6,4;8;0;:PROCbt("Start",195,490):PROCbt("Exit",475,490):PROCbt("New Level",705,490):PROCbt("Scores",999,490):GCOL80,0:MOUSEON:ENDPROC
 5370:
 5380DEFPROCtext:LOCALM:VDU24,32;0;1247;350;
 5390M=N%:FORZ=0TO10:x%=Z*128-S%+16:PROCwipe(x%,150+100*SIN(x%/380+N-0.2)):x%=Z*128-S%:IFJ%?M>0PROCs(x%,150+100*SIN(x%/380+N),CHR$J%?M)
 5400M=M+1:IFM=len M=0
 5410NEXT:S%=S%+16:IFS%=128S%=0:N%=N%+1:IFN%=len N%=0
 5420N=N+0.2:IFN=2N=0
 5430ENDPROC
 5440DEFPROCwipe(x%,y%):RECTANGLEFILLx%,y%,40,40:ENDPROC
 5450:
 5460REM Who's a clever boy then?
 5470DEFPROCcleverdick:PROChallelujah:T%=TIME:REPEATUNTILTIME>T%+200:PROCsmoothwave:T%=TIME:REPEATUNTILTIME>T%+300
 5480GCOL0TINT0:RECTANGLEFILL0,0,1279,1023:PROCmousedisc:MOUSEON129:POINTTO608,348
 5490VDU24,200;448;1080;848;:OSCLI"ScreenLoad spr"
 5500VDU5,26,23,17,7,6,8;6;0;:GCOL127TINT192:PROCcentretext("Congratulations!",948)
 5510VDU23,17,7,6,8;4;0;:GCOL127TINT0:PROCcentretext("You have completed",220)
 5520X%=OPENIN"stuff":VDU23,17,7,6,8;6;0;
 5530GCOL11TINT128:$code%=GET$#X%:PROCcentretext($code%,180)
 5540GCOL11TINT64:$code%=GET$#X%:PROCcentretext($code%,140)
 5550GCOL11TINT0:$code%=GET$#X%:PROCcentretext($code%,100)
 5560CLOSE#X%:*fX 15
 5570PROCmousewaiting:MOUSEON129:POINTTO608,348:PROCyoulittlebeauty:REPEATPROCscrollaround:MOUSEx%,y%,b%:UNTILb%=4:MOUSEOFF
 5580GCOL0TINT0:RECTANGLEFILL0,0,1279,300:RECTANGLEFILL0,900,1279,100
 5590FORN=0TO200STEP8:MOVE0,648+N:PLOT1,1279,0:MOVE0,648-N:PLOT1,1279,0:T%=TIME:REPEATUNTILTIME>T%+2:NEXT
 5600FORN=4TO204STEP8:MOVE0,648+N:PLOT1,1279,0:MOVE0,648-N:PLOT1,1279,0:T%=TIME:REPEATUNTILTIME>T%+2:NEXT
 5610PROCmousearrow:ENDPROC
 5620:
 5630REM Sound stuff
 5640DEFPROCsmoothwave:OSCLI"ChannelVoice 1 SmoothWave":SOUND1,383,&1800,0:ENDPROC
 5650DEFPROCcymbalping:OSCLI"ChannelVoice 2 Cymbal":SOUND2,383,&4000,0:ENDPROC
 5660DEFPROCbell:OSCLI"ChannelVoice 1 Cymbal":SOUND1,383,256,0:ENDPROC
 5670DEFPROChallelujah:OSCLI"ChannelVoice 2 Hallelujah":SOUND2,383,&1600,0:ENDPROC
 5680DEFPROClaugh:OSCLI"ChannelVoice 1 Laugh":SOUND1,383,&1800,0:ENDPROC
 5690DEFPROCacidhiss:OSCLI"ChannelVoice 1 Laugh":SOUND1,383,&1800,0:ENDPROC
 5700DEFPROCfullgurgle:OSCLI"ChannelVoice 2 Gurgle":SOUND2,383,&1300,0:ENDPROC
 5710DEFPROCsunkgurgle:OSCLI"ChannelVoice 1 Gurgle":SOUND1,383,&2000,0:ENDPROC
 5720DEFPROCvduseven:OSCLI"ChannelVoice 1 vduseven":SOUND1,383,&1500,0:ENDPROC
 5730DEFPROCtransping:OSCLI"ChannelVoice 1 vduseven":SOUND1,383,&3300,0:ENDPROC
 5740DEFPROCblackping:OSCLI"ChannelVoice 1 BlackHole":SOUND1,383,&1800,0:ENDPROC
 5750DEFPROCyoulittlebeauty:OSCLI"ChannelVoice 1 RuthyBabes":SOUND1,383,&1500,0:ENDPROC
 5760DEFPROCsound_off:OSCLI"Speaker Off":REPEATPROCtext:T%=TIME:REPEATUNTILTIME>T%+5:UNTILNOTINKEY-114:ENDPROC
 5770DEFPROCsound_on:OSCLI"Speaker On":OSCLI"ChannelVoice 1 vduseven":SOUND1,350,&1500,0:REPEATPROCtext:T%=TIME:REPEATUNTILTIME>T%+5:UNTILNOTINKEY-115:ENDPROC
 5780REM These sound samples are all copyright TRAX Software
 5790:
 5800REM The lovely mouse pointer
 5810DEFPROCmousearrow:MOUSE OFF:RESTORE5920:PROCmouseset:MOUSECOLOUR1,0,0,0:MOUSECOLOUR2,255,255,255:MOUSEON:ENDPROC
 5820DEFPROCmousedisc:MOUSEOFF:RESTORE6110:PROCmouseset:MOUSECOLOUR2,0,0,255:MOUSECOLOUR3,112,112,112:MOUSEON:ENDPROC
 5830DEFPROCmousewaiting:MOUSEOFF:RESTORE6300:PROCmouseset:MOUSECOLOUR2,96,96,96:MOUSEON:ENDPROC
 5840:
 5850DEFPROCmouseset:?osword%=0:osword%?1=1:osword%?2=4:osword%?3=18:osword%?4=0:osword%?5=0:osword%!6=pointdat%:FORA%=0 TO 71:pointdat%?A%=0:NEXT
 5860FORY%=0 TO 17:READ A$:FORX%=0 TO 15:D%=VALMID$(A$,X%+1,1):?(pointdat%+(X%>>2)+(Y%<<2))+=D%<<((X%AND3)<<1):NEXT:NEXT
 5870SYS"OS_Word",21,osword%:ENDPROC
 5880:
 5890DEFPROCscrollaround:F%=F%+G%:IFF%=0ORF%=240G%=-G%
 5900MOUSECOLOUR2,F%,F%,F%:T%=TIME:REPEATUNTILTIME>T%+1:ENDPROC
 5910:
 5920DATA 1100000000000000
 5930DATA 1210000000000000
 5940DATA 1221000000000000
 5950DATA 1222100000000000
 5960DATA 1222210000000000
 5970DATA 1222221000000000
 5980DATA 1222222100000000
 5990DATA 1222222210000000
 6000DATA 1222211110000000
 6010DATA 1221221000000000
 6020DATA 1211221000000000
 6030DATA 1100122100000000
 6040DATA 0000122100000000
 6050DATA 0000011100000000
 6060DATA 0000000000000000
 6070DATA 0000000000000000
 6080DATA 0000000000000000
 6090DATA 0000000000000000
 6100:
 6110DATA 0111111111111000
 6120DATA 1222213333121100
 6130DATA 1222213333122100
 6140DATA 1222211111122100
 6150DATA 1222222222222100
 6160DATA 1222222222222100
 6170DATA 1211111111112100
 6180DATA 1213333333312100
 6190DATA 1213333333312100
 6200DATA 1213222222312100
 6210DATA 1213333333312100
 6220DATA 1213222222312100
 6230DATA 1213333333312100
 6240DATA 0111111111111000
 6250DATA 0000000000000000
 6260DATA 0000000000000000
 6270DATA 0000000000000000
 6280DATA 0000000000000000
 6290:
 6300DATA 0000000000000000
 6310DATA 0000001111000000
 6320DATA 0000012222100000
 6330DATA 0000012222100000
 6340DATA 0011001221001100
 6350DATA 0122100110012210
 6360DATA 0122210000122210
 6370DATA 0122210000122210
 6380DATA 0122100110012210
 6390DATA 0011001221001100
 6400DATA 0000012222100000
 6410DATA 0000012222100000
 6420DATA 0000001111000000
 6430DATA 0000000000000000
 6440DATA 0000000000000000
 6450DATA 0000000000000000
 6460DATA 0000000000000000
 6470DATA 0000000000000000
 6480:
 6490REM Finding the good old levels
 6500REM  (just in case they're on a different disc)
 6510DEFPROCfindthelevels:LOCAL ERROR
 6520PROCframe(200,302,879,400,2):PROCbt("Please enter levels disc",448,600):PROCbt("and click on icon",504,550):PROCsprite(620,400,1):REPEATMOUSEx%,y%,b%:UNTILb%=4ANDFNmr(620,400,660,440):PROCmousedisc:PROCvduseven
 6530REPEAT:ONERROR LOCAL PROCnodisc:X%=0
 6540OSCLI"Dismount":X%=OPENIN"<EnigmaLevels$Dir>.levels.info":IFX%=0PROCnodisc:X%=0
 6550UNTILX%<>0:l%=BGET#X%:CLOSE#X%:OSCLI"Dir <EnigmaLevels$Dir>.levels":MOUSEOFF
 6560*fX 15
 6570X%=OPENIN"stuff":VDU23,17,7,6,8;6;0;
 6580GCOL11TINT128:$code%=GET$#X%:PROCcentretext($code%,180)
 6590GCOL11TINT64:$code%=GET$#X%:PROCcentretext($code%,140)
 6600GCOL11TINT0:$code%=GET$#X%:PROCcentretext($code%,100)
 6610CLOSE#X%:PROCmousewaiting:MOUSEON129:POINTTO608,444:REPEATPROCscrollaround:MOUSEx%,y%,b%:UNTILNOT(b%=0):PROCmousearrow:ENDPROC
 6620:
 6630REM Errors
 6640DEFPROCnodisc:PROCmousewaiting:PROCframe(200,302,879,400,2):PROCbt("Disc error",560,600):PROCbt("Please insert the levels disc",408,500):PROCbt("and press space",520,450):REPEATPROCscrollaround:UNTILINKEY-99:PROCmousedisc:ENDPROC
 6650:
 6660DEFPROCnastyerror:PROCmousewaiting:VDU26,5,23,17,7,6,4;8;0;:PROCframe(200,302,879,400,2):PROCframe(400,558,476,64,2):PROCbt("Nasty unexpected error",464,600):PROCbt("Sorry, but I have to say Bye Bye",384,500):PROCbt("Press space",552,450):REPEATPROCscrollaround:UNTILINKEY-99:ENDPROC
 6670:
 6680REM Goodbye and good ridance
 6690DEFPROCend:MODE12:IFP%PROCsavescores
 6700SYS"OS_Byte",&E5,E%:OSCLI"ChannelVoice 1 Gurgle":OSCLI"ChannelVoice 2 vduseven":SOUND1,383,&900,0:SOUND2,383,&500,0:PRINT"Bye bye..."'':T%=TIME:REPEATUNTILTIME>T%+300
 6710OSCLI"RMKill Cymbal":OSCLI"RMKill Gurgle":OSCLI"RMKill Hallelujah":OSCLI"RMKill Laugh":OSCLI"RMKill Smoothwave":OSCLI"RMKill vduseven":OSCLI"RMKill BlackHole":OSCLI"RMKill RuthyBabes"
 6720OSCLI"Dismount":ENDPROC
 6730:
 6740DEFPROCsavescores:OSCLI"Save <Enigma$Dir>.HighScores "+STR$~highscores%+" +B4":CLS:ENDPROC
 6750:
 6760REM If you have any comments
 6770REM (praise, scorn, love-letters,
 6780REM monetary donations (I'm being serious) )
 6790REM please send them to:
 6800:
 6810REM Pete Goodliffe
 6820REM TRAX Software
 6830REM 58 Dunkeld Avenue
 6840REM Filton
 6850REM Bristol BS12 7RQ


� >Enigma
� by Pete Goodliffe
� � TRAX Software 1992
(� for Archimedes World
2� Hello everybody
<8� P.S. This message will self distruct in 10 seconds
F:
P� Set Escape status
Z+ș"OS_Byte",&E5,0�,E%:ș"OS_Byte",&E5,1
d:
n� Flashy star variables
xF%=224:G%=16
�:
�� Error handling
���nastyerror:�
�:
�� Loading the sprites
�y�sprites%34290,blck%11,code%1199:$blck%="Sprites":!sprites%=34288:sprites%!8=16:ș"OS_SpriteOp",&A+256,sprites%,blck%
�:
�� Loading the scroll-text
�YX%=�("ScrollText"):len=�#X%+9:� J% len:�N=0�len-1:�N<9J%?N=0�J%?N=�#X%:�J%?N=32J%?N=0
�
�:�#X%
�:
�� Loading the hi-scores
�6� highscores%&B4:�"Load HighScores "+�~highscores%
P%=�
:
� osword%&10,pointdat%&48
"Ƞ 2
,:
6'�13:�:�23,0,10,0|5,23,17,7,6,4;8;0;
@�mousearrow:*fX 15
J�findthelevels
T:
^� Initialise variables
hVcx%=0:cy%=0:title$=�40," "):time%=0:word$=�10," "):anagram$=�10," "):anx%=0:any%=0
r&xd%=0:yd%=0:sx%=0:sy%=0:b%=0:bl%=0
|:
�!� The start of a MASSIVE loop
��
�:
�$N=0:N%=0:S%=0:�menuscreen:*fX 15
�:
�� Menu Loop
�level%=1:start%=�:��
��text:ȗx%,y%,b%:T%=�:�
��-114:�sound_off
��-115:�sound_on
���>T%+5:�b%=4
�:
�!�mr(133,400,333,550)start%=�
�mr(405,400,605,550)�end:�
>�mr(673,400,873,550)level%=�level:�80,0:�level%>1start%=�
-�mr(945,400,1145,550)�scores:�menuscreen
&�start%:ȗ�:�4,26:�
0:
:� Initaialise game
Dscore%=0:live%=3:dead%=�
N:
X� Draw game screen
b�0Ȝ0:ȓȐ0,0,1279,1023
l1�M=0�8:�N=0�19:�s(N*80,898-128*M,"block"):�:�
v�s(64,148,"bar")
�A�0Ȝ0:ȓȐ0,64,1279,36:�63Ȝ0:�0,60:�1279,60:�0,104:�1279,104
�N�128+6Ȝ128:�63Ȝ192:�3,22)"00000000":�lives:�funkytextX("0",240,654):ȗ�
�a%=0
�:
��
�:
�� Load and draw level
�P�mousedisc:�load:�smoothwave:�draw:�title:�level:�4:�:�lft:�time:�mousearrow
�:
�� And now, play the game!
�Gpause%=0:N=�game:�N=� dead%=� �level%=level%+1:�level%<=l%�newlevel
�%�dead%�pause%<>2dead%=�diedadeath
�:
�level%=l%+1�dead%
:
�level%=l%+1�cleverdick
 �highscore
*:
4��
>:
H:
R� The main game loop
\ݤgame:*fX15
f�:T%=�:�
p0ȗx%,y%,b%:�b%<>0��mr(400,150,1200,950)�move
z!�sy%=0�19:�sx%=0�19:�scan:�:�
�1�-99pause%=�pause:�pause%<>0time%=1:T%=�-300
�/��>T%+300�block%=0�a%=0:time%=time%-1:�time
�#�time%=0�block%=0�a%=0�pause%=2
��won:=� �=�
�:
�� Moving on, lads...
�7ݤwon:�block%=0�pause%=0�a%=0��water_noleaks:=� �=�
�#ݤpause:�vduseven:�mousewaiting
���s(64,148,"bar"):�6Ȝ128:ȓȐ96,180,256,600:�funkytextX("PAUSED",120,700):�frame(108,338,228,300,2):�5,23,17,7,6,6;8;0;:�bt("Select",154,600):�23,17,7,6,4;8;0;:�bt("1) Continue",140,500):�bt("2) Suicide",140,452):�bt("3) Execute",140,404)
��4:�:*fX15
�r�M=�(0):�scrollaround:�M>48�M<52:�s(64,148,"bar"):�lives:�level:�lft:�time:�3,22)"0000000":�score:�mousearrow
��M=51�laugh
�	=M-49
�ݤdiedadeath:live%=live%-1:�lives:�mousewaiting:�live%>0�funkytextX("OH DEAR",674,700):�funkytextX("LOOKS LIKE YOU WILL",458,600):�funkytextX("HAVE TO PRACTICE",512,536):�funkytextX("THAT ONE",656,472):�laugh
S�live%=0:�funkytextX("GAME OVER",638,600):�"ChannelVoice 1 Laugh":�1,383,&500,0

*fX 15
$F�ȗx%,y%,b%:�scrollaround:��(b%=0):�ȗx%,y%,b%:�scrollaround:�b%=0
.�mousearrow:�live%=0=� �=�
8:
B:
L'� Screen scan and update procedures
V
��scan
`%b%=code%?(�pos(sx%,sy%)+1):�b%=0�
jbl%=code%?�pos(sx%,sy%)
t3�(b%�1)=1�(bl%>0�bl%<40�bl%=42�bl%=50)�chosedir
~)� Insert want to move horizontal here
��b%=64 :�lift_wanttomoveH
��b%=128:�lift_wanttomoveV
��
�:
���chosedir
�b%=b%�2:Ȏb%�3�
��0:�shift(0,1)
��1:�shift(0,-1)
��2:�shift(-1,0)
��3:�shift(1,0)
��:�
�:
��shift(xd%,yd%)

bb%=(b%�4)�7:�b%<>6b%=b%+2:code%?(�pos(sx%,sy%)+1)=(code%?(�pos(sx%,sy%)+1)�199)+b%*8:�redraw:�
*code%?(�pos(sx%,sy%)+1)=0:b%=8:�redraw
�bl%=1�updatelift:�
(!�bl%=50�updateacid(sx%,sy%):�
2^�blocksabove(sx%-xd%,sy%):�gravityisdue(sx%,sy%)�gravity(sx%,sy%):�blocksabove(sx%,sy%):�
<$�sx%=cx%�sy%<=cy%:�crusher(sy%)
F�nasties(sx%,sy%)�
P#�dooberies(sx%,sy%-1,sx%,sy%)�
Z�match(sx%,sy%)�lft
d,�block%=0�a%=2:�anagram_cleverdick:a%=0
n�
x:
�'� Lift moving hori/verti procedures
���updatelift
�x%=sx%:y%=sy%
��yd%=0�lift_hor � �lift_ver
��
�:
�� Lift moving
���lift_ver
�8b%=code%?(�pos(x%,y%)+2):�b%>0 code%?�pos(x%,y%+1)=0
�yd%=�turnaround_ver
� �b%>0:bl%=b%:�lift_blockmove
��yd%=1:�lift_up
��yd%=-1�lift_down
�yd%=0�lift_setwtmV
P�yd%=-1�code%?(�pos(x%,y%-1)+2)>0�blocksabove(x%,y%+1) � �blocksabove(x%,y%)
�
":
,��lift_hor
6�b%=code%?(�pos(x%,y%)+2):�b%>0�sprite(400+(40*x%)-(4*xd%),188+(40*y%),0):�sprite(400+(40*x%),188+(40*y%),b%):bl%=b%:�lift_blockmove
@8�b%>0 code%?�pos(x%,y%+1)=b%:code%?(�pos(x%,y%)+2)=0
Jxd%=�turnaround_hor
T�xd%=1:�lift_right
^�xd%=-1:�lift_left
h�xd%=0�lift_setwtmH
r�
|:
�� To turn blocks around
�ݤturnaround_ver
�'�yd%=1��lift_aboveblock:=1 � yd%=-1
�%�yd%=-1�code%?�pos(x%,y%-1)=0 =-1
��lift_aboveblock:=1 � =0
�:
�ݤturnaround_hor
�,�xd%=1�code%?�pos(x%+1,y%)=0 =1 � xd%=-1
�%�xd%=-1�code%?�pos(x%-1,y%)=0 =-1
�"�code%?�pos(x%+1,y%)=0 =1 � =0
�:
�$� Move a block off a moving lift
�s��lift_blockmove:�x%,y%:B%=b%:ȗx%,y%,b%:笤mr(400+(40*sx%),188+(40*sy%),440+(40*sx%),228+(40*sy%))�b%=0b%=B%:�
��b%=4�code%?�pos(sx%-1,sy%+1)=0:code%?�pos(sx%,sy%+1)=code%?(�pos(sx%,sy%)+2):code%?(�pos(sx%,sy%)+2)=0:b%=0:�left(sx%,sy%+1):�
��b%=1�code%?�pos(sx%+1,sy%+1)=0:code%?�pos(sx%,sy%+1)=code%?(�pos(sx%,sy%)+2):code%?(�pos(sx%,sy%)+2)=0:b%=0:�right(sx%,sy%+1):�
b%=B%:�
&:
0� Lifts that want to move
:$��lift_wanttomoveV:x%=sx%:y%=sy%
DYb%=code%?�pos(x%,y%+1):�b%>2�b%<40�code%?(�pos(x%,y%+1)+1)=0 code%?(�pos(x%,y%)+2)=b%
Nb%=code%?(�pos(x%,y%)+2)
X �lift_aboveblock �lift_up:�
b'�code%?�pos(x%,y%-1)=0 �lift_down:�
lcode%?(�pos(x%,y%)+2)=0:�
v:
�$��lift_wanttomoveH:x%=sx%:y%=sy%
�1�code%?�pos(x%-1,y%)>0�code%?�pos(x%+1,y%)>0�
�(�code%?�pos(x%+1,y%)=0 �lift_right:�
��lift_left:�
�:
���lift_setwtmV
���code%?(�pos(x%,y%)+2)>0 code%?�pos(x%,y%+1)=code%?(�pos(x%,y%)+2):code%?(�pos(x%,y%)+2)=0:�sprite(400+(40*x%),188+(40*y%),code%?�pos(x%,y%+1))
�code%?(�pos(x%,y%)+1)=128:�
�:
���lift_setwtmH
��code%?(�pos(x%,y%)+2)>0 code%?�pos(x%,y%+1)=code%?(�pos(x%,y%)+2):code%?(�pos(x%,y%)+2)=0:�sprite(400+(40*x%),188+(40*y%),code%?�pos(x%,y%+1))
�code%?(�pos(x%,y%)+1)=64:�
�:
Gݤlift_aboveblock:�code%?(�pos(x%,y%)+2)=0�code%?�pos(x%,y%+1)=0 =�
4�code%?(�pos(x%,y%)+2)>0�code%?�pos(x%,y%+2)=0=�
=�
 :
*"� Actually moving the bleeders
4)��lift_up:�b%>0code%?�pos(x%,y%+2)=63
>�code%?�pos(x%,y%+1)=code%?�pos(x%,y%):code%?(�pos(x%,y%+1)+2)=b%:code%?(�pos(x%,y%+1)+1)=1:code%?�pos(x%,y%)=0:code%?(�pos(x%,y%)+1)=0:X%=400+(40*x%):Y%=148+(40*y%):�sprite(X%,Y%,0):�sprite(X%,Y%+8,1)
H�b%>0 �sprite(X%,Y%+48,b%)
R�
\:
f���lift_down:code%?�pos(x%,y%-1)=code%?�pos(x%,y%):code%?(�pos(x%,y%-1)+2)=b%:code%?(�pos(x%,y%-1)+1)=3:code%?(�pos(x%,y%)+1)=0:�b%>0code%?�pos(x%,y%)=63 � code%?�pos(x%,y%)=0
p�X%=400+(40*x%):Y%=148+(40*y%):�sprite(X%,Y%,0):�sprite(X%,Y%-8,1):�code%?(�pos(x%,y%-1)+2)>0 �sprite(X%,Y%+44,0):�sprite(X%,Y%+32,code%?(�pos(x%,y%-1)+2))
z�
�:
����lift_right:�block(x%,y%+1)�code%?�pos(x%+1,y%+1)=0:code%?(�pos(x%,y%)+2)=code%?�pos(x%,y%+1):b%=code%?�pos(x%,y%+1):code%?�pos(x%,y%+1)=0:code%?�pos(x%+1,y%+1)=63 � b%=0
��code%?�pos(x%+1,y%)=code%?�pos(x%,y%):code%?(�pos(x%+1,y%)+2)=b%:code%?(�pos(x%+1,y%)+1)=7:code%?�pos(x%,y%)=0:code%?(�pos(x%,y%)+1)=0:X%=400+(40*x%):Y%=148+(40*y%):�sprite(X%,Y%,0):�sprite(X%+8,Y%,1)
�a�b%>0 �sprite(X%-4,Y%+40,0):�sprite(X%+8,Y%+40,b%):�blocksabove(x%,y%+1) ��blocksabove(x%,y%)
��
�:
����lift_left:�block(x%,y%+1)�code%?�pos(x%-1,y%+1)=0code%?(�pos(x%,y%)+2)=code%?�pos(x%,y%+1):b%=code%?�pos(x%,y%+1):code%?�pos(x%,y%+1)=0:code%?�pos(x%-1,y%+1)=63 � b%=0
��code%?�pos(x%-1,y%)=code%?�pos(x%,y%):code%?(�pos(x%-1,y%)+2)=b%:code%?(�pos(x%-1,y%)+1)=5:code%?�pos(x%,y%)=0:code%?(�pos(x%,y%)+1)=0:X%=400+(40*x%):Y%=148+(40*y%):�sprite(X%,Y%,0):�sprite(X%-8,Y%,1)
�a�b%>0 �sprite(X%+4,Y%+40,0):�sprite(X%-8,Y%+40,b%):�blocksabove(x%,y%+1) ��blocksabove(x%,y%)
��
�:
�+� Some usefull functions and procedures
����blocksabove(x%,y%):�N,b%:N=1:�b%=code%?�pos(x%,y%+N):�b%>2�b%<40�code%?(�pos(x%,y%+N)+1)=0��gravityisdue(x%,y%+N)�gravity(x%,y%+N)
	N=N+1:��(b%>2�b%<40):�
	:
	���gravity(x%,y%):�bl%:bl%=code%?�pos(x%,y%):code%?�pos(x%,y%-1)=bl%:code%?(�pos(x%,y%-1)+1)=3:�bl%<>13code%?�pos(x%,y%)=0:x%=400+(x%*40):y%=148+(y%*40):�sprite(x%,y%,0):�sprite(x%,y%-8,bl%):�
	$^code%?�pos(x%,y%)=40:x%=400+(x%*40):y%=148+(y%*40):�sprite(x%,y%,40):�sprite(x%,y%-8,13):�
	.Aݤgravityisdue(x%,y%):�code%?�pos(x%,y%-1)=0��block(x%,y%):=�
	82�code%?�pos(x%,y%)=13�code%?�pos(x%,y%-1)=40=�
	B=�
	L:
	V� The match maker
	`;ݤmatch(x%,y%):bl%=code%?�pos(x%,y%)�63:�bl%<3�bl%>12=�
	j�(�ba ��bb ��bl ��br):=�
	tPcode%?�pos(x%,y%)=0:�sprite(400+(x%*40),148+(y%*40),0):block%=block%-1:�bell
	~-�ba �ma:block%=block%-1:score%=score%+10
	�-�bb �mb:block%=block%-1:score%=score%+10
	�-�bl �ml:block%=block%-1:score%=score%+10
	�-�br �mr:block%=block%-1:score%=score%+10
	��a%>0�anagram_newletter
	�&�blocksabove(x%,y%):�lft:�score:=�
	�&ݤba:�nomovematch(x%,y%+1):=� �=�
	�&ݤbb:�nomovematch(x%,y%-1):=� �=�
	�&ݤbl:�nomovematch(x%-1,y%):=� �=�
	�&ݤbr:�nomovematch(x%+1,y%):=� �=�
	���ma:�byebye(x%,y%+1):�
	���mb:�byebye(x%,y%-1):�
	���ml:�byebye(x%-1,y%):�
��mr:�byebye(x%+1,y%):�

Rݤnomovematch(x%,y%):�(code%?�pos(x%,y%)�63)=bl%�code%?(�pos(x%,y%)+1)=0=� �=�
���byebye(x%,y%):code%?�pos(x%,y%)=0:code%?(�pos(x%,y%)+1)=0:code%?(�pos(x%,y%)+2)=0:�sprite(400+(x%*40),148+(y%*40),0):�blocksabove(x%,y%):�code%?�pos(x%,y%-1)=40�water_sink(x%,y%-1)
�
(:
2.� Those class in a glass special blocks...
<:
F� Boo hiss
Pݤnasties(x%,y%)
Zb%=code%?�pos(x%,y%-1)
d�b%=49�spikes:=�
n�b%=52�blackhole:=�
x=�
�:
�b��spikes:code%?�pos(x%,y%)=0:�sprite(400+(x%*40),148+(y%*40),0):�laugh:�blocksabove(x%,y%+1):�
�:
�i��blackhole:code%?�pos(x%,y%)=0:�sprite(400+(x%*40),148+(y%*40),0):�blackping:�blocksabove(x%,y%+1):�
�:
�ݤcrusher(sy%)
�9�24,400+(cx%*40);0;436+(cx%*40);184+(cy%*40);:M=cy%+1
�5�:M=M-1:b%=code%?�pos(cx%,M):�b%=0�crusherdown(M)
�#�b%<>0:�b%<3�b%>39�crusherup:=�
��crusherdown(M)
�=code%?�pos(cx%,M)=0:�laugh:M=M-1:�crusherup:�M=sy%=� � =�
�:
�^��crusherdown(y%):y%=188+(y%*40):�N=0�20:�sprite(400+(cx%*40),y%-(N*2),51):T%=�:���>T%:�:�
l��crusherup:�y%:y%=188+(cy%*40):�N=(cy%-M)*20�0�-1:�sprite(400+(cx%*40),y%-(N*2),51):T%=�:���>T%:�:�26:�
:
� Acid drips...
"��updateacid(x%,y%)
,.�block(x%,y%-1):�acid_dissolve:�acid_up:�
64�gravityisdue(x%,y%):�gravity(x%,y%) � �acid_up
@�
J:
TX��acid_dissolve:code%?�pos(x%,y%-1)=0:�sprite(400+(x%*40),108+(y%*40),0):�acidhiss:�
^:
h���acid_up:N=y%+1:code%?�pos(x%,y%)=0:�sprite(400+(x%*40),148+(y%*40),0):M=�:�N=N+1:�code%?�pos(x%,N)<>0M=�:�code%?�pos(x%,N-1)=0code%?�pos(x%,N-1)=50:�gravityisdue(x%,N-1)�gravity(x%,N-1)
r�M �N=19:�
|:
�� Wee plonk
�"ݤdooberies(sx%,sy%,x%,y%):�b%
�b%=code%?�pos(sx%,sy%)
��b%=43�thrower_right:=�
��b%=44�thrower_left:=�
��b%=45�warp:=�
��b%=46�right(x%,y%):=�
��b%=47�left(x%,y%):=�
�-�b%=48�transmat(sx%,sy%,x%-sx%,y%-sy%):=�
�=�
�:
�� Throwers
�?��thrower_right:�code%?�pos(sx%+1,sy%+1)<>0�thrower_match:�
�b%=code%?�pos(x%,y%):code%?�pos(x%,y%)=0:�sprite(400+(40*x%),148+(40*y%),0):�blocksabove(x%,y%):code%?�pos(sx%+1,sy%+1)=b%:�sprite(440+(40*sx%),188+(40*sy%),b%)
�X%=�:M=code%?(�pos(sx%,sy%)+1)-1:N=1:��code%?�pos(sx%+N+1,sy%+N+1)=0:N=N+1:code%?�pos(sx%+N-1,sy%+N-1)=0:�sprite(360+(40*(sx%+N)),108+(40*(sy%+N)),0):code%?�pos(sx%+N,sy%+N)=b%:�sprite(400+(40*(sx%+N)),148+(40*(sy%+N)),b%):M=M-1 � X%=�
�M=0X%=�
&�X%
0=bl%=b%:�gravityisdue(sx%+N,sy%+N)�gravity(sx%+N,sy%+N):�
:,�dooberies(sx%+N,sy%+N-1,sx%+N,sy%+N):�
D�nasties(sx%+N,sy%+N):�
N�match(sx%+N,sy%+N)
X�
b:
l>��thrower_left:�code%?�pos(sx%-1,sy%+1)<>0�thrower_match:�
v�b%=code%?�pos(x%,y%):code%?�pos(x%,y%)=0:�sprite(400+(40*x%),148+(40*y%),0):�blocksabove(x%,y%):code%?�pos(sx%-1,sy%+1)=b%:�sprite(360+(40*sx%),188+(40*sy%),b%)
��X%=�:M=code%?(�pos(sx%,sy%)+1)-1:N=1:��code%?�pos(sx%-N-1,sy%+N+1)=0:N=N+1:code%?�pos(sx%-N+1,sy%+N-1)=0:�sprite(440+(40*(sx%-N)),108+(40*(sy%+N)),0):code%?�pos(sx%-N,sy%+N)=b%:�sprite(400+(40*(sx%-N)),148+(40*(sy%+N)),b%):M=M-1 � X%=�
��M=0X%=�
��X%
�=bl%=b%:�gravityisdue(sx%-N,sy%+N)�gravity(sx%-N,sy%+N):�
�,�dooberies(sx%-N,sy%+N-1,sx%-N,sy%+N):�
��nasties(sx%-N,sy%+N):�
��match(sx%-N,sy%+N)
��
�:
���thrower_match
��match(x%,y%)
��
�:

� Into a warp, lovies

c��warp:X%=code%?(�pos(sx%,sy%)+1):Y%=code%?(�pos(sx%,sy%)+2):�code%?�pos(X%,Y%)<>0�warp_match:�

�b%=code%?�pos(x%,y%):code%?�pos(x%,y%)=0:�sprite(400+(40*x%),148+(40*y%),0):�blocksabove(x%,y%):code%?�pos(X%,Y%)=b%:�sprite(400+(40*X%),148+(40*Y%),b%)

 1bl%=b%:�gravityisdue(X%,Y%)�gravity(X%,Y%):�

* �dooberies(X%,Y%-1,X%,Y%):�

4 �nasties(sx%+N-1,sy%+N-1):�

>�match(X%,Y%):�

H�

R:

\��warp_match

f�match(x%,y%)

p�

z:

�� Those good ol'transmats

���transmat(x%,y%,xd%,yd%)

�-N=x%:M=y%:�N=N+1:�N=20N=0:M=M-1:�M=-1M=19

�'�code%?�pos(N,M)=48:N=N-xd%:M=M-yd%

�)�code%?�pos(N,M)<>0:�transmat_match:�

��x%=x%+xd%:y%=y%+yd%:bl%=code%?�pos(x%,y%):code%?�pos(N,M)=bl%:code%?�pos(x%,y%)=0:�sprite(400+(40*x%),148+(40*y%),0):�blocksabove(x%,y%):�sprite(400+(40*N),148+(40*M),code%?�pos(N,M)):�transping

�&�gravityisdue(N,M)�gravity(N,M):�

��dooberies(N,M-1,N,M):�

��nasties(N,M):�

��match(N,M)

��

�:

���transmat_match
�match(x%,y%)
�
:
$� Move a sprite
.���redraw:�bl%<>13�sprite(400+(40*sx%)-(xd%*4*(9-b%)),148+(40*sy%)-(yd%*4*(9-b%)),0):�sprite(400+(40*sx%)-(xd%*4*(8-b%)),148+(40*sy%)-(yd%*4*(8-b%)),bl%):��sprite(400+(40*sx%)-(xd%*4*(10-b%)),148+(40*sy%)-(yd%*4*(10-b%)),40)
8H�sprite(400+(40*sx%)-(xd%*4*(8-b%)),148+(40*sy%)-(yd%*4*(8-b%)),bl%)
B��bl%=1�code%?(�pos(sx%,sy%)+2)>0 �sprite(400+(40*sx%)-(xd%*4*(9-b%)),188+(40*sy%)-(yd%*4*(9-b%)),0):�sprite(400+(40*sx%)-(xd%*4*(8-b%)),188+(40*sy%)-(yd%*4*(8-b%)),code%?(�pos(sx%,sy%)+2))
L�
V:
`:
j� Block movement procedures
t>��move:x%=(x%-400)�40:y%=(y%-150)�40:bl%=code%?�pos(x%,y%)
~�bl%=42�balloon_move
�%�b%=4��block(x%,y%)�left(x%,y%):�
�$�b%=1��block(x%,y%)�right(x%,y%)
��
�:
���left(x%,y%)
�hb%=code%?�pos(x%-1,y%):�b%<>0�b%<>40��(b%>42�b%<46�b%=48)�code%?(�pos(x%,y%)+1)<>0b%=�match(x%,y%):�
�)�bl%<>13:�dooberies(x%-1,y%,x%,y%):�
��cymbalping
�4�bl%<>13code%?�pos(x%,y%)=0�code%?�pos(x%,y%)=40
�code%?�pos(x%-1,y%)=bl%:code%?(�pos(x%-1,y%)+1)=5:code%?(�pos(x%-1,y%)+2)=code%?(�pos(x%,y%)+2):x%=400+(x%*40):y%=148+(y%*40)
�.�bl%<>13�sprite(x%,y%,0)��sprite(x%,y%,40)
��sprite(x%-8,y%,bl%):�
:

��right(x%,y%)
hb%=code%?�pos(x%+1,y%):�b%<>0�b%<>40��(b%>42�b%<46�b%=48)�code%?(�pos(x%,y%)+1)<>0b%=�match(x%,y%):�
)�bl%<>13:�dooberies(x%+1,y%,x%,y%):�
(�cymbalping
24�bl%<>13code%?�pos(x%,y%)=0�code%?�pos(x%,y%)=40
<�code%?�pos(x%+1,y%)=bl%:code%?(�pos(x%+1,y%)+1)=7:code%?(�pos(x%+1,y%)+2)=code%?(�pos(x%,y%)+2):x%=400+(x%*40):y%=148+(y%*40)
F.�bl%<>13�sprite(x%,y%,0)��sprite(x%,y%,40)
P�sprite(x%+8,y%,bl%):�
Z:
d� Its anagram time
n%��anagram_newletter:�an%=�word$:�
xwan%=an%+1:�anagram_newpos:�sprite(400+(40*X%),148+(Y%*40),code%?�pos(X%,Y%)):�an%=�word$a%=2:�anagram_dropyerblocks
��
�:
�L��anagram_newpos:X%=0:Y%=0:N=an%:�b%=code%?�pos(X%,Y%):�b%>13�b%<40N=N-1
�$�N<>0:X%=X%+1:�X%=20X%=0:Y%=Y%+1
�.�Y%=20�N=0:�Y%=20Y%=0: � Major catastrophe
��
�:
�v��anagram_dropyerblocks:�vduseven:�N=0�19:�M=0�19:b%=code%?�pos(N,M):�b%>13�b%<40��gravityisdue(N,M):�gravity(N,M)
�	�:�:�
�:
�`ݤanagram_cleverdick:x%=anx%:y%=any%:N=�:M=1:�b%=code%?�pos(x%,y%)-14:�b%<>��word$,M)-65:N=�
�x%=x%+1:M=M+1:�M=an%+1:=N
�:
!� My beautiful red balloon...
��balloon_move
�b%=4�balloon_left(x%,y%)
"�b%=1�balloon_right(x%,y%)
,�
6:
@��balloon_right(x%,y%)
JI�right(x%,y%):�block(x%,y%+1)bl%=code%?�pos(x%,y%+1):�right(x%,y%+1)
T�
^:
h��balloon_left(x%,y%)
rG�left(x%,y%):�block(x%,y%+1)bl%=code%?�pos(x%,y%+1):�left(x%,y%+1)
|�
�:
�� A watery grave...
���water_sink(x%,y%)
�mcode%?�pos(x%,y%)=13:�sprite(400+(x%*40),148+(y%*40),13):�sunkgurgle:�gravityisdue(x%,y%)�gravity(x%,y%)
��
�:
�ݤwater_noleaks
�Kb%=�:�x%=0�19:�y%=0�19:�code%?�pos(x%,y%)=41�code%?�pos(x%,y%+1)=40b%=�
��:�:�b%:=�
�� Eek, call a plumber...
�?�pause%<>2�fullgurgle:�funkytextX("UNPLUGGED LEAK",548,348)
�=�
�:
� Helpful routines
 ݤpos(x%,y%):=((y%*20)+x%)*3
Bݤblock(x%,y%):�b%:b%=code%?�pos(x%,y%):�(b%<3�b%>39)�b%<>50=�
&�b%>13�b%<40�a%=1=�
0�code%?(�pos(x%,y%)+1)<>0=�
:=�
D:
N:
X:� Minions (usecd at start of a level, i.e. load, draw)
b���load:�24,400;150;1279;1023;:�M=0�12:�N=5�15:�s(N*80,898-128*M,"block"):�:�:�26,23,17,7,6,4;8;0;5:�0Ȝ0:ȓȐ0,64,1279,32:�60Ȝ128:�584,96:�"Loading":�4,28,12,10,38,5:�
l�block%=0:X%=�("level"+�level%+".level"):�M=0�19:�N=0�19:code%?�pos(N,M)=�#X%:code%?(�pos(N,M)+1)=�#X%:code%?(�pos(N,M)+2)=�#X%:�(code%?�pos(N,M)�63)>2�(code%?�pos(N,M)�63)<13block%=block%+1
v$�:�:cx%=�#X%:cy%=�#X%:�#X%:�26:�
�UX%=�("level"+�level%+".info"):title$="":�N=1�40:s$=��#X%:�s$<>"@"title$=title$+s$
�A�:time%=�#X%:word$="":�N=1�10:s$=��#X%:�s$<>"@"word$=word$+s$
�2�:anx%=�#X%:any%=�#X%:an%=0:sx%=0:sy%=0:�#X%:�
�:
�j��draw:a%=0:�N=0�19:�M=0�19:b%=code%?�pos(N,M):�b%<>63��(b%>13�b%<40)�sprite(400+(N*40),148+(M*40),b%)
�5�b%>13�b%<40�sprite(400+(N*40),148+(M*40),2):a%=1
�7�code%?�pos(N,M)=50��gravityisdue(N,M)�gravity(N,M)
�	�:�:�
�:
�(��newlevel:�hallelujah:�mousewaiting
��L%=level%-1:�frame(500,402,680,300,2):�5,23,17,7,6,4;8;0;:�nltxt("Congratulations!",680)                          :�nltxt("Level "+�L%+" completed",600):�nltxt("Bonus: 100 x "+�L%,560):score%=score%+(100*L%):�4:�score:�5
�L�nltxt("Your password for level "+�(L%+1)+" is:",500):�4,28,12,10,38,5:�
�kX%=�"info":�#X%=1+(9*(L%-1)):s$="":�M=1�9:s$=s$+�(�#X%+1):�:�#X%:�26,5,23,17,7,6,6;8;0;:�bt(s$,732,460)
F�ȗx%,y%,b%:�b%=0:�ȗx%,y%,b%:�scrollaround:��(b%=0):�mousearrow:�
:
+��nltxt(s$,y%):�bt(s$,840-(�s$*8),y%):�
 :
*#� Update score panel procedures
4^��title:�5,23,17,7,6,8;8;0;:�0Ȝ0:ȓȐ0,64,1279,32:�63Ȝ192:�640-(�title$*16),96:�title$:�
>0��lives:�6Ȝ128:ȓȐ228,730,120,40:�live%=0�
H;�N=1�live%:�sprite(228+(3-live%)*40+(N-1)*40,730,1):�:�
R:
\E��level:�6Ȝ128:ȓȐ224,654,124,44:�funkytextX(�level%,240,654):�
f:
p%��lft:�8,13)"   "�8,13);block%:�
z:
�%��time:�7,16)"   "�7,16);time%:�
�:
�&��score:�11-��score%,22);score%:�
�:
�� High score table
�K��scores:�N:�26,17,128:�0Ȝ0:ȓȐ0,0,1279,1023:ȗ�:�scores_display(255)
��0Ȝ0::�:N=0:�
ʜ�wipe(540,908+80*�(N-0.2)):�s(540,908+80*�N,"e"):�wipe(576,908+80*�N):�s(576,908+80*�(N+0.2),"n"):�wipe(612,908+80*�(N+0.2)):�s(612,908+80*�(N+0.4),"i")
Ԧ�wipe(648,908+80*�(N+0.4)):�s(648,908+80*�(N+0.6),"g"):�wipe(684,908+80*�(N+0.6)):�s(684,908+80*�(N+0.8),"m"):�wipe(720,908+80*�(N+0.8)):�s(720,908+80*�(N+1),"a")
�T%=�:N=N+0.2:�N=2
�#���>T%+5:ȗx%,y%,b%:�b%=4:ȗ�:�
�:
�8��highscore:�5:�getastring(10,8):�score%<�($blck%):�
EM=0:� �getastring(10+M*18,8):M=M+1:�score%<�($blck%) � M=10:M=M-2
N�M<>0�N=0�M-1:�x%=0�17:highscores%?(N*18+x%)=highscores%?((N+1)*18+x%):�:�
�scores_display(M)
$>y%=168+(M*48):�funkytextX(�8-��score%,"0")+�score%,700,y%)
.=�23,17,7,6,9;16;0;:�2Ȝ64:�300,y%+48:�"----------":*fX 15
8�N=0:��x%=�:�x%>64�x%<91�x%=32�x%=127�x%=13:�N<>10�x%<>127�x%<>13�2Ȝ0:ȓȐ300+N*36,y%,36,40:blck%?N=x%:N=N+1:�x%<>32�s(264+N*36,y%,�x%)
BL�x%=127�N>0N=N-1:�2Ȝ0:ȓȐ300+N*36,y%,36,40:�2Ȝ64:�300+N*36,y%+48:�"-"
L%�x%=13:�N<>10�N=N �9:blck%?N=32:�
Vr�N=0�9:highscores%?(M*18+N)=blck%?N:�:$blck%=�8-��score%,"0")+�score%:�N=0�7:highscores%?(M*18+10+N)=blck%?N:�
`P%=�:�scores:�
j:
t���scores_display(M):�0Ȝ0:ȓȐ0,0,1279,1023:�frame(260,118,760,700,2):�frame(400,698,480,80,2):�funkytext("HIGH SCORES",720)
~��y%=9�0�-1:�y%<>M:�getastring(y%*18,10):�funkytextX($blck%,300,168+(y%*48)):�getastring(10+y%*18,8):�funkytextX($blck%,700,168+(y%*48))
��:�
�:
�S��getastring(x%,y%):�N:x%=x%+highscores%:�N=0�y%-1:blck%?N=x%?N:�:blck%?y%=13:�
�:
�� Password
��ݤlevel:�26,5:�0Ȝ0:ȓȐ0,0,1279,1023:ȗ�:�frame(300,218,680,500,2):�frame(400,602,480,80,2):�funkytext("PASSWORD",624):�23,17,7,6,4;8;0;:�bt("Enter level password",480,500):�23,17,7,6,9;16;0;:�2Ȝ64:�478,348:�"---------":*fX 15
�{s$="":N=0:��M=�:�M>64�M<91�M=127�M=13:�N<>9�M<>127�M<>13�2Ȝ0:ȓȐ474+N*36,300,36,40:�s(478+N*36,300,�M):s$=s$+�M:N=N+1
�X�M=127�N>0N=N-1:s$=�s$,�s$-1):�2Ȝ0:ȓȐ474+N*36,300,36,40:�2Ȝ64:�478+N*36,348:�"-"
��M=13:�s$<>9�menuscreen:=1
�?X%=�"info":�#X%=1:N=1:�N=N+1:a$="":�M=1�9:a$=a$+�(�#X%+1):�
�*�s$=a$�N=l%:�#0:�s$<>a$:�menuscreen:=1
��level%=N:�frame(300,218,680,500,2):�funkytext("PASSWORD OK",624):�funkytext("ENTRY TO LEVEL",450):�funkytext(�(level%),350):*fX 15
�ȗx%,y%,b%:�b%=4:=level%

:
3� Mainly menu routines and pretty picture stuff
���frame(x%,y%,xl%,yl%,c%):�0Ȝ0:ȓȐx%-4,y%-4,xl%+8,yl%+8:�c%Ȝ64:ȓȐx%,y%,xl%,yl%:�c%Ȝ192:�x%,y%:�x%+10,y%+10:�&55,x%,y%+yl%:�&55,x%+xl%-20,y%+yl%-20:�&55,x%+xl%,y%+yl%:�c%Ȝ0:ȓȐx%+10,y%+10,xl%-20,yl%-20
(��0Ȝ0:ȓȐx%,y%+yl%-16,4,16:ȓȐx%,y%+yl%-4,16,4:ȓȐx%+xl%-16,y%,16,4:ȓȐx%+xl%-4,y%,4,16:�11Ȝ0:�x%,y%+yl%-12:�1,0,12:�31Ȝ0:�1,12,0:�x%+xl%-12,y%:�1,12,0:�11Ȝ0:�1,0,12:�
2:
<���button(x%,y%,c%):�0Ȝ0:ȓȐx%-4,y%-4,208,158:�c%Ȝ64:�x%+200,y%:�x%,y%:�&55,x%+200,y%+150:�c%Ȝ192:�&55,x%,y%+150:�c%Ȝ0:ȓȐx%+10,y%+10,180,130
F��0Ȝ0:ȓȐx%,y%+134,4,16:ȓȐx%,y%+146,16,4:ȓȐx%+184,y%,16,4:ȓȐx%+196,y%,4,16:�11Ȝ0:�x%,y%+138:�1,0,12:�31Ȝ0:�1,12,0:�x%+188,y%:�1,12,0:�11Ȝ0:�1,0,12:�
P:
Zs��sprite(x%,y%,s%):ș"OS_SpriteOp",&22+512,sprites%,16+sprites%+(164*(s%�63)),x%,y%,0:�s%>127�s(x%,y%,"static")
d�
nH��s(x%,y%,$blck%):ș"OS_SpriteOp",&22+256,sprites%,blck%,x%,y%,&08:�
x,��centretext(a$,y%):�640-�a$*16,y%:�a$:�
����funkytext(a$,y%):x%=640-(�a$*36)�2:�8,0:�N=1��a$:�a$,N)>64���a$,N)<91 �s(x%,y%,�a$,N,1)) � �a$,N)<>32�s(x%,y%,"n"+�a$,N,1))
�x%=x%+36:�:�
�w��funkytextX(a$,x%,y%):�8,0:�N=1��a$:�a$,N)>64���a$,N)<91 �s(x%,y%,�a$,N,1)) � �a$,N)<>32�s(x%,y%,"n"+�a$,N,1))
�`��bt(s$,x%,y%):�0Ȝ0:�x%,y%+4:�s$:�x%,y%-4:�s$:�x%-4,y%:�s$:�x%+4,y%:�s$:�11Ȝ0:�x%,y%:�s$:�
�x%=x%+36:�:�
�=ݤmr(x1%,y1%,x2%,y2%):�x%>x1%�x%<x2%�y%>y1%�y%<y2%=� � =�
�:
�,� Draw the menu and scroll the mega-text
����menuscreen:�0Ȝ0:ȓȐ0,0,1279,1023:�5,23,2,25,0,25,0,25,0,25,0,23,3,0,25,0,25,0,25,0,25,23,4,25,0,25,0,25,0,25,0,23,5,0,25,0,25,0,25,0,25:�26:�0,0:ȓȐ24,24,1228,975:�80,0:ȓȐ28,28,1222,967
�h�8,0:�s(540,850,"e"):�s(576,850,"n"):�s(608,850,"i"):�s(640,850,"g"):�s(676,850,"m"):�s(712,850,"a")
���23,17,7,6,8;4;0;:�48Ȝ192:�centretext("by",700):�centretext("Pete Goodliffe",670):�15Ȝ0:�centretext("Trax Software",610):�centretext("1992",580):�12Ȝ0:�centretext("Please select choice",350):�23,17,7,6,8;8;0;
���button(133,400,2):�button(405,400,4):�button(673,400,17):�button(945,400,32):�23,17,7,6,4;8;0;:�bt("Start",195,490):�bt("Exit",475,490):�bt("New Level",705,490):�bt("Scores",999,490):�80,0:ȗ�:�
�:
 ��text:�M:�24,32;0;1247;350;
uM=N%:�Z=0�10:x%=Z*128-S%+16:�wipe(x%,150+100*�(x%/380+N-0.2)):x%=Z*128-S%:�J%?M>0�s(x%,150+100*�(x%/380+N),�J%?M)
M=M+1:�M=len M=0
"/�:S%=S%+16:�S%=128S%=0:N%=N%+1:�N%=len N%=0
,N=N+0.2:�N=2N=0
6�
@#��wipe(x%,y%):ȓȐx%,y%,40,40:�
J:
T� Who's a clever boy then?
^H��cleverdick:�hallelujah:T%=�:���>T%+200:�smoothwave:T%=�:���>T%+300
h8�0Ȝ0:ȓȐ0,0,1279,1023:�mousedisc:ȗ�129:Ȓ�608,348
r+�24,200;448;1080;848;:�"ScreenLoad spr"
|H�5,26,23,17,7,6,8;6;0;:�127Ȝ192:�centretext("Congratulations!",948)
�C�23,17,7,6,8;4;0;:�127Ȝ0:�centretext("You have completed",220)
�!X%=�"stuff":�23,17,7,6,8;6;0;
�0�11Ȝ128:$code%=�#X%:�centretext($code%,180)
�/�11Ȝ64:$code%=�#X%:�centretext($code%,140)
�.�11Ȝ0:$code%=�#X%:�centretext($code%,100)
��#X%:*fX 15
�X�mousewaiting:ȗ�129:Ȓ�608,348:�youlittlebeauty:��scrollaround:ȗx%,y%,b%:�b%=4:ȗ�
�-�0Ȝ0:ȓȐ0,0,1279,300:ȓȐ0,900,1279,100
�D�N=0�200�8:�0,648+N:�1,1279,0:�0,648-N:�1,1279,0:T%=�:���>T%+2:�
�D�N=4�204�8:�0,648+N:�1,1279,0:�0,648-N:�1,1279,0:T%=�:���>T%+2:�
��mousearrow:�
�:
�� Sound stuff
>��smoothwave:�"ChannelVoice 1 SmoothWave":�1,383,&1800,0:�
:��cymbalping:�"ChannelVoice 2 Cymbal":�2,383,&4000,0:�
2��bell:�"ChannelVoice 1 Cymbal":�1,383,256,0:�
&>��hallelujah:�"ChannelVoice 2 Hallelujah":�2,383,&1600,0:�
04��laugh:�"ChannelVoice 1 Laugh":�1,383,&1800,0:�
:7��acidhiss:�"ChannelVoice 1 Laugh":�1,383,&1800,0:�
D:��fullgurgle:�"ChannelVoice 2 Gurgle":�2,383,&1300,0:�
N:��sunkgurgle:�"ChannelVoice 1 Gurgle":�1,383,&2000,0:�
X:��vduseven:�"ChannelVoice 1 vduseven":�1,383,&1500,0:�
b;��transping:�"ChannelVoice 1 vduseven":�1,383,&3300,0:�
l<��blackping:�"ChannelVoice 1 BlackHole":�1,383,&1800,0:�
vC��youlittlebeauty:�"ChannelVoice 1 RuthyBabes":�1,383,&1500,0:�
�=��sound_off:�"Speaker Off":��text:T%=�:���>T%+5:���-114:�
�e��sound_on:�"Speaker On":�"ChannelVoice 1 vduseven":�1,350,&1500,0:��text:T%=�:���>T%+5:���-115:�
�9� These sound samples are all copyright TRAX Software
�:
�� The lovely mouse pointer
�G��mousearrow:ȗ �:��T`W:�mouseset:ȗ�1,0,0,0:ȗ�2,255,255,255:ȗ�:�
�G��mousedisc:ȗ�:��d^W:�mouseset:ȗ�2,0,0,255:ȗ�3,112,112,112:ȗ�:�
�:��mousewaiting:ȗ�:��t\X:�mouseset:ȗ�2,96,96,96:ȗ�:�
�:
چ��mouseset:?osword%=0:osword%?1=1:osword%?2=4:osword%?3=18:osword%?4=0:osword%?5=0:osword%!6=pointdat%:�A%=0 � 71:pointdat%?A%=0:�
�`�Y%=0 � 17:� A$:�X%=0 � 15:D%=��A$,X%+1,1):?(pointdat%+(X%>>2)+(Y%<<2))+=D%<<((X%�3)<<1):�:�
�ș"OS_Word",21,osword%:�
�:
.��scrollaround:F%=F%+G%:�F%=0�F%=240G%=-G%
!ȗ�2,F%,F%,F%:T%=�:���>T%+1:�
:
 � 1100000000000000
*� 1210000000000000
4� 1221000000000000
>� 1222100000000000
H� 1222210000000000
R� 1222221000000000
\� 1222222100000000
f� 1222222210000000
p� 1222211110000000
z� 1221221000000000
�� 1211221000000000
�� 1100122100000000
�� 0000122100000000
�� 0000011100000000
�� 0000000000000000
�� 0000000000000000
�� 0000000000000000
�� 0000000000000000
�:
�� 0111111111111000
�� 1222213333121100
�� 1222213333122100
�� 1222211111122100
� 1222222222222100
� 1222222222222100
� 1211111111112100
$� 1213333333312100
.� 1213333333312100
8� 1213222222312100
B� 1213333333312100
L� 1213222222312100
V� 1213333333312100
`� 0111111111111000
j� 0000000000000000
t� 0000000000000000
~� 0000000000000000
�� 0000000000000000
�:
�� 0000000000000000
�� 0000001111000000
�� 0000012222100000
�� 0000012222100000
�� 0011001221001100
�� 0122100110012210
�� 0122210000122210
�� 0122210000122210
�� 0122100110012210
�� 0011001221001100
� 0000012222100000

� 0000012222100000
� 0000001111000000
� 0000000000000000
(� 0000000000000000
2� 0000000000000000
<� 0000000000000000
F� 0000000000000000
P:
Z!� Finding the good old levels
d1�  (just in case they're on a different disc)
n��findthelevels:� �
x��frame(200,302,879,400,2):�bt("Please enter levels disc",448,600):�bt("and click on icon",504,550):�sprite(620,400,1):�ȗx%,y%,b%:�b%=4��mr(620,400,660,440):�mousedisc:�vduseven
��:� � �nodisc:X%=0
�F�"Dismount":X%=�"<EnigmaLevels$Dir>.levels.info":�X%=0�nodisc:X%=0
�<�X%<>0:l%=�#X%:�#X%:�"Dir <EnigmaLevels$Dir>.levels":ȗ�
�
*fX 15
�!X%=�"stuff":�23,17,7,6,8;6;0;
�0�11Ȝ128:$code%=�#X%:�centretext($code%,180)
�/�11Ȝ64:$code%=�#X%:�centretext($code%,140)
�.�11Ȝ0:$code%=�#X%:�centretext($code%,100)
�Y�#X%:�mousewaiting:ȗ�129:Ȓ�608,444:��scrollaround:ȗx%,y%,b%:��(b%=0):�mousearrow:�
�:
�� Errors
���nodisc:�mousewaiting:�frame(200,302,879,400,2):�bt("Disc error",560,600):�bt("Please insert the levels disc",408,500):�bt("and press space",520,450):��scrollaround:��-99:�mousedisc:�
�:
���nastyerror:�mousewaiting:�26,5,23,17,7,6,4;8;0;:�frame(200,302,879,400,2):�frame(400,558,476,64,2):�bt("Nasty unexpected error",464,600):�bt("Sorry, but I have to say Bye Bye",384,500):�bt("Press space",552,450):��scrollaround:��-99:�
:
� Goodbye and good ridance
"��end:�12:�P%�savescores
,�ș"OS_Byte",&E5,E%:�"ChannelVoice 1 Gurgle":�"ChannelVoice 2 vduseven":�1,383,&900,0:�2,383,&500,0:�"Bye bye..."'':T%=�:���>T%+300
6��"RMKill Cymbal":�"RMKill Gurgle":�"RMKill Hallelujah":�"RMKill Laugh":�"RMKill Smoothwave":�"RMKill vduseven":�"RMKill BlackHole":�"RMKill RuthyBabes"
@�"Dismount":�
J:
TJ��savescores:�"Save <Enigma$Dir>.HighScores "+�~highscores%+" +B4":�:�
^:
h� If you have any comments
r#� (praise, scorn, love-letters,
|.� monetary donations (I'm being serious) )
�� please send them to:
�:
�� Pete Goodliffe
�� TRAX Software
�� 58 Dunkeld Avenue
�� Filton
�� Bristol BS12 7RQ
�
00000000  0d 00 0a 0d f4 20 3e 45  6e 69 67 6d 61 0d 00 14  |..... >Enigma...|
00000010  17 f4 20 62 79 20 50 65  74 65 20 47 6f 6f 64 6c  |.. by Pete Goodl|
00000020  69 66 66 65 0d 00 1e 1a  f4 20 a9 20 54 52 41 58  |iffe..... . TRAX|
00000030  20 53 6f 66 74 77 61 72  65 20 31 39 39 32 0d 00  | Software 1992..|
00000040  28 1a f4 20 66 6f 72 20  41 72 63 68 69 6d 65 64  |(.. for Archimed|
00000050  65 73 20 57 6f 72 6c 64  0d 00 32 15 f4 20 48 65  |es World..2.. He|
00000060  6c 6c 6f 20 65 76 65 72  79 62 6f 64 79 0d 00 3c  |llo everybody..<|
00000070  38 f4 20 50 2e 53 2e 20  54 68 69 73 20 6d 65 73  |8. P.S. This mes|
00000080  73 61 67 65 20 77 69 6c  6c 20 73 65 6c 66 20 64  |sage will self d|
00000090  69 73 74 72 75 63 74 20  69 6e 20 31 30 20 73 65  |istruct in 10 se|
000000a0  63 6f 6e 64 73 0d 00 46  05 3a 0d 00 50 17 f4 20  |conds..F.:..P.. |
000000b0  53 65 74 20 45 73 63 61  70 65 20 73 74 61 74 75  |Set Escape statu|
000000c0  73 0d 00 5a 2b c8 99 22  4f 53 5f 42 79 74 65 22  |s..Z+.."OS_Byte"|
000000d0  2c 26 45 35 2c 30 b8 2c  45 25 3a c8 99 22 4f 53  |,&E5,0.,E%:.."OS|
000000e0  5f 42 79 74 65 22 2c 26  45 35 2c 31 0d 00 64 05  |_Byte",&E5,1..d.|
000000f0  3a 0d 00 6e 1b f4 20 46  6c 61 73 68 79 20 73 74  |:..n.. Flashy st|
00000100  61 72 20 76 61 72 69 61  62 6c 65 73 0d 00 78 10  |ar variables..x.|
00000110  46 25 3d 32 32 34 3a 47  25 3d 31 36 0d 00 82 05  |F%=224:G%=16....|
00000120  3a 0d 00 8c 14 f4 20 45  72 72 6f 72 20 68 61 6e  |:..... Error han|
00000130  64 6c 69 6e 67 0d 00 96  13 ee 85 f2 6e 61 73 74  |dling.......nast|
00000140  79 65 72 72 6f 72 3a e0  0d 00 a0 05 3a 0d 00 aa  |yerror:.....:...|
00000150  19 f4 20 4c 6f 61 64 69  6e 67 20 74 68 65 20 73  |.. Loading the s|
00000160  70 72 69 74 65 73 0d 00  b4 79 de 73 70 72 69 74  |prites...y.sprit|
00000170  65 73 25 33 34 32 39 30  2c 62 6c 63 6b 25 31 31  |es%34290,blck%11|
00000180  2c 63 6f 64 65 25 31 31  39 39 3a 24 62 6c 63 6b  |,code%1199:$blck|
00000190  25 3d 22 53 70 72 69 74  65 73 22 3a 21 73 70 72  |%="Sprites":!spr|
000001a0  69 74 65 73 25 3d 33 34  32 38 38 3a 73 70 72 69  |ites%=34288:spri|
000001b0  74 65 73 25 21 38 3d 31  36 3a c8 99 22 4f 53 5f  |tes%!8=16:.."OS_|
000001c0  53 70 72 69 74 65 4f 70  22 2c 26 41 2b 32 35 36  |SpriteOp",&A+256|
000001d0  2c 73 70 72 69 74 65 73  25 2c 62 6c 63 6b 25 0d  |,sprites%,blck%.|
000001e0  00 be 05 3a 0d 00 c8 1d  f4 20 4c 6f 61 64 69 6e  |...:..... Loadin|
000001f0  67 20 74 68 65 20 73 63  72 6f 6c 6c 2d 74 65 78  |g the scroll-tex|
00000200  74 0d 00 d2 59 58 25 3d  8e 28 22 53 63 72 6f 6c  |t...YX%=.("Scrol|
00000210  6c 54 65 78 74 22 29 3a  6c 65 6e 3d a2 23 58 25  |lText"):len=.#X%|
00000220  2b 39 3a de 20 4a 25 20  6c 65 6e 3a e3 4e 3d 30  |+9:. J% len:.N=0|
00000230  b8 6c 65 6e 2d 31 3a e7  4e 3c 39 4a 25 3f 4e 3d  |.len-1:.N<9J%?N=|
00000240  30 8b 4a 25 3f 4e 3d 9a  23 58 25 3a e7 4a 25 3f  |0.J%?N=.#X%:.J%?|
00000250  4e 3d 33 32 4a 25 3f 4e  3d 30 0d 00 dc 0a ed 3a  |N=32J%?N=0.....:|
00000260  d9 23 58 25 0d 00 e6 05  3a 0d 00 f0 1b f4 20 4c  |.#X%....:..... L|
00000270  6f 61 64 69 6e 67 20 74  68 65 20 68 69 2d 73 63  |oading the hi-sc|
00000280  6f 72 65 73 0d 00 fa 36  de 20 68 69 67 68 73 63  |ores...6. highsc|
00000290  6f 72 65 73 25 26 42 34  3a ff 22 4c 6f 61 64 20  |ores%&B4:."Load |
000002a0  48 69 67 68 53 63 6f 72  65 73 20 22 2b c3 7e 68  |HighScores "+.~h|
000002b0  69 67 68 73 63 6f 72 65  73 25 0d 01 04 08 50 25  |ighscores%....P%|
000002c0  3d a3 0d 01 0e 05 3a 0d  01 18 1d de 20 6f 73 77  |=.....:..... osw|
000002d0  6f 72 64 25 26 31 30 2c  70 6f 69 6e 74 64 61 74  |ord%&10,pointdat|
000002e0  25 26 34 38 0d 01 22 08  c8 a0 20 32 0d 01 2c 05  |%&48.."... 2..,.|
000002f0  3a 0d 01 36 27 eb 31 33  3a 87 3a ef 32 33 2c 30  |:..6'.13:.:.23,0|
00000300  2c 31 30 2c 30 7c 35 2c  32 33 2c 31 37 2c 37 2c  |,10,0|5,23,17,7,|
00000310  36 2c 34 3b 38 3b 30 3b  0d 01 40 16 f2 6d 6f 75  |6,4;8;0;..@..mou|
00000320  73 65 61 72 72 6f 77 3a  2a 66 58 20 31 35 0d 01  |searrow:*fX 15..|
00000330  4a 12 f2 66 69 6e 64 74  68 65 6c 65 76 65 6c 73  |J..findthelevels|
00000340  0d 01 54 05 3a 0d 01 5e  1a f4 20 49 6e 69 74 69  |..T.:..^.. Initi|
00000350  61 6c 69 73 65 20 76 61  72 69 61 62 6c 65 73 0d  |alise variables.|
00000360  01 68 56 63 78 25 3d 30  3a 63 79 25 3d 30 3a 74  |.hVcx%=0:cy%=0:t|
00000370  69 74 6c 65 24 3d c4 34  30 2c 22 20 22 29 3a 74  |itle$=.40," "):t|
00000380  69 6d 65 25 3d 30 3a 77  6f 72 64 24 3d c4 31 30  |ime%=0:word$=.10|
00000390  2c 22 20 22 29 3a 61 6e  61 67 72 61 6d 24 3d c4  |," "):anagram$=.|
000003a0  31 30 2c 22 20 22 29 3a  61 6e 78 25 3d 30 3a 61  |10," "):anx%=0:a|
000003b0  6e 79 25 3d 30 0d 01 72  26 78 64 25 3d 30 3a 79  |ny%=0..r&xd%=0:y|
000003c0  64 25 3d 30 3a 73 78 25  3d 30 3a 73 79 25 3d 30  |d%=0:sx%=0:sy%=0|
000003d0  3a 62 25 3d 30 3a 62 6c  25 3d 30 0d 01 7c 05 3a  |:b%=0:bl%=0..|.:|
000003e0  0d 01 86 21 f4 20 54 68  65 20 73 74 61 72 74 20  |...!. The start |
000003f0  6f 66 20 61 20 4d 41 53  53 49 56 45 20 6c 6f 6f  |of a MASSIVE loo|
00000400  70 0d 01 90 05 f5 0d 01  9a 05 3a 0d 01 a4 24 4e  |p.........:...$N|
00000410  3d 30 3a 4e 25 3d 30 3a  53 25 3d 30 3a f2 6d 65  |=0:N%=0:S%=0:.me|
00000420  6e 75 73 63 72 65 65 6e  3a 2a 66 58 20 31 35 0d  |nuscreen:*fX 15.|
00000430  01 ae 05 3a 0d 01 b8 0f  f4 20 4d 65 6e 75 20 4c  |...:..... Menu L|
00000440  6f 6f 70 0d 01 c2 18 6c  65 76 65 6c 25 3d 31 3a  |oop....level%=1:|
00000450  73 74 61 72 74 25 3d a3  3a f5 f5 0d 01 cc 1b f2  |start%=.:.......|
00000460  74 65 78 74 3a c8 97 78  25 2c 79 25 2c 62 25 3a  |text:..x%,y%,b%:|
00000470  54 25 3d 91 3a f5 0d 01  d6 15 e7 a6 2d 31 31 34  |T%=.:.......-114|
00000480  3a f2 73 6f 75 6e 64 5f  6f 66 66 0d 01 e0 14 e7  |:.sound_off.....|
00000490  a6 2d 31 31 35 3a f2 73  6f 75 6e 64 5f 6f 6e 0d  |.-115:.sound_on.|
000004a0  01 ea 11 fd 91 3e 54 25  2b 35 3a fd 62 25 3d 34  |.....>T%+5:.b%=4|
000004b0  0d 01 f4 05 3a 0d 01 fe  21 e7 a4 6d 72 28 31 33  |....:...!..mr(13|
000004c0  33 2c 34 30 30 2c 33 33  33 2c 35 35 30 29 73 74  |3,400,333,550)st|
000004d0  61 72 74 25 3d b9 0d 02  08 1f e7 a4 6d 72 28 34  |art%=.......mr(4|
000004e0  30 35 2c 34 30 30 2c 36  30 35 2c 35 35 30 29 f2  |05,400,605,550).|
000004f0  65 6e 64 3a e0 0d 02 12  3e e7 a4 6d 72 28 36 37  |end:....>..mr(67|
00000500  33 2c 34 30 30 2c 38 37  33 2c 35 35 30 29 6c 65  |3,400,873,550)le|
00000510  76 65 6c 25 3d a4 6c 65  76 65 6c 3a e6 38 30 2c  |vel%=.level:.80,|
00000520  30 3a e7 6c 65 76 65 6c  25 3e 31 73 74 61 72 74  |0:.level%>1start|
00000530  25 3d b9 0d 02 1c 2d e7  a4 6d 72 28 39 34 35 2c  |%=....-..mr(945,|
00000540  34 30 30 2c 31 31 34 35  2c 35 35 30 29 f2 73 63  |400,1145,550).sc|
00000550  6f 72 65 73 3a f2 6d 65  6e 75 73 63 72 65 65 6e  |ores:.menuscreen|
00000560  0d 02 26 17 fd 73 74 61  72 74 25 3a c8 97 87 3a  |..&..start%:...:|
00000570  ef 34 2c 32 36 3a 87 0d  02 30 05 3a 0d 02 3a 16  |.4,26:...0.:..:.|
00000580  f4 20 49 6e 69 74 61 69  61 6c 69 73 65 20 67 61  |. Initaialise ga|
00000590  6d 65 0d 02 44 1c 73 63  6f 72 65 25 3d 30 3a 6c  |me..D.score%=0:l|
000005a0  69 76 65 25 3d 33 3a 64  65 61 64 25 3d a3 0d 02  |ive%=3:dead%=...|
000005b0  4e 05 3a 0d 02 58 16 f4  20 44 72 61 77 20 67 61  |N.:..X.. Draw ga|
000005c0  6d 65 20 73 63 72 65 65  6e 0d 02 62 1b e6 30 c8  |me screen..b..0.|
000005d0  9c 30 3a c8 93 c8 90 30  2c 30 2c 31 32 37 39 2c  |.0:....0,0,1279,|
000005e0  31 30 32 33 0d 02 6c 31  e3 4d 3d 30 b8 38 3a e3  |1023..l1.M=0.8:.|
000005f0  4e 3d 30 b8 31 39 3a f2  73 28 4e 2a 38 30 2c 38  |N=0.19:.s(N*80,8|
00000600  39 38 2d 31 32 38 2a 4d  2c 22 62 6c 6f 63 6b 22  |98-128*M,"block"|
00000610  29 3a ed 3a ed 0d 02 76  14 f2 73 28 36 34 2c 31  |):.:...v..s(64,1|
00000620  34 38 2c 22 62 61 72 22  29 0d 02 80 41 e6 30 c8  |48,"bar")...A.0.|
00000630  9c 30 3a c8 93 c8 90 30  2c 36 34 2c 31 32 37 39  |.0:....0,64,1279|
00000640  2c 33 36 3a e6 36 33 c8  9c 30 3a ec 30 2c 36 30  |,36:.63..0:.0,60|
00000650  3a df 31 32 37 39 2c 36  30 3a ec 30 2c 31 30 34  |:.1279,60:.0,104|
00000660  3a df 31 32 37 39 2c 31  30 34 0d 02 8a 4e fb 31  |:.1279,104...N.1|
00000670  32 38 2b 36 c8 9c 31 32  38 3a fb 36 33 c8 9c 31  |28+6..128:.63..1|
00000680  39 32 3a f1 8a 33 2c 32  32 29 22 30 30 30 30 30  |92:..3,22)"00000|
00000690  30 30 30 22 3a f2 6c 69  76 65 73 3a f2 66 75 6e  |000":.lives:.fun|
000006a0  6b 79 74 65 78 74 58 28  22 30 22 2c 32 34 30 2c  |kytextX("0",240,|
000006b0  36 35 34 29 3a c8 97 ee  0d 02 94 08 61 25 3d 30  |654):.......a%=0|
000006c0  0d 02 9e 05 3a 0d 02 a8  05 f5 0d 02 b2 05 3a 0d  |....:.........:.|
000006d0  02 bc 19 f4 20 4c 6f 61  64 20 61 6e 64 20 64 72  |.... Load and dr|
000006e0  61 77 20 6c 65 76 65 6c  0d 02 c6 50 f2 6d 6f 75  |aw level...P.mou|
000006f0  73 65 64 69 73 63 3a f2  6c 6f 61 64 3a f2 73 6d  |sedisc:.load:.sm|
00000700  6f 6f 74 68 77 61 76 65  3a f2 64 72 61 77 3a f2  |oothwave:.draw:.|
00000710  74 69 74 6c 65 3a f2 6c  65 76 65 6c 3a ef 34 3a  |title:.level:.4:|
00000720  87 3a f2 6c 66 74 3a f2  74 69 6d 65 3a f2 6d 6f  |.:.lft:.time:.mo|
00000730  75 73 65 61 72 72 6f 77  0d 02 d0 05 3a 0d 02 da  |usearrow....:...|
00000740  1d f4 20 41 6e 64 20 6e  6f 77 2c 20 70 6c 61 79  |.. And now, play|
00000750  20 74 68 65 20 67 61 6d  65 21 0d 02 e4 47 70 61  | the game!...Gpa|
00000760  75 73 65 25 3d 30 3a 4e  3d a4 67 61 6d 65 3a e7  |use%=0:N=.game:.|
00000770  4e 3d a3 20 64 65 61 64  25 3d b9 20 8b 6c 65 76  |N=. dead%=. .lev|
00000780  65 6c 25 3d 6c 65 76 65  6c 25 2b 31 3a e7 6c 65  |el%=level%+1:.le|
00000790  76 65 6c 25 3c 3d 6c 25  f2 6e 65 77 6c 65 76 65  |vel%<=l%.newleve|
000007a0  6c 0d 02 ee 25 e7 64 65  61 64 25 80 70 61 75 73  |l...%.dead%.paus|
000007b0  65 25 3c 3e 32 64 65 61  64 25 3d a4 64 69 65 64  |e%<>2dead%=.died|
000007c0  61 64 65 61 74 68 0d 02  f8 05 3a 0d 03 02 16 fd  |adeath....:.....|
000007d0  6c 65 76 65 6c 25 3d 6c  25 2b 31 84 64 65 61 64  |level%=l%+1.dead|
000007e0  25 0d 03 0c 05 3a 0d 03  16 1b e7 6c 65 76 65 6c  |%....:.....level|
000007f0  25 3d 6c 25 2b 31 f2 63  6c 65 76 65 72 64 69 63  |%=l%+1.cleverdic|
00000800  6b 0d 03 20 0e f2 68 69  67 68 73 63 6f 72 65 0d  |k.. ..highscore.|
00000810  03 2a 05 3a 0d 03 34 06  fd a3 0d 03 3e 05 3a 0d  |.*.:..4.....>.:.|
00000820  03 48 05 3a 0d 03 52 18  f4 20 54 68 65 20 6d 61  |.H.:..R.. The ma|
00000830  69 6e 20 67 61 6d 65 20  6c 6f 6f 70 0d 03 5c 10  |in game loop..\.|
00000840  dd a4 67 61 6d 65 3a 2a  66 58 31 35 0d 03 66 0c  |..game:*fX15..f.|
00000850  f5 3a 54 25 3d 91 3a f5  0d 03 70 30 c8 97 78 25  |.:T%=.:...p0..x%|
00000860  2c 79 25 2c 62 25 3a e7  62 25 3c 3e 30 80 a4 6d  |,y%,b%:.b%<>0..m|
00000870  72 28 34 30 30 2c 31 35  30 2c 31 32 30 30 2c 39  |r(400,150,1200,9|
00000880  35 30 29 f2 6d 6f 76 65  0d 03 7a 21 e3 73 79 25  |50).move..z!.sy%|
00000890  3d 30 b8 31 39 3a e3 73  78 25 3d 30 b8 31 39 3a  |=0.19:.sx%=0.19:|
000008a0  f2 73 63 61 6e 3a ed 3a  ed 0d 03 84 31 e7 a6 2d  |.scan:.:....1..-|
000008b0  39 39 70 61 75 73 65 25  3d a4 70 61 75 73 65 3a  |99pause%=.pause:|
000008c0  e7 70 61 75 73 65 25 3c  3e 30 74 69 6d 65 25 3d  |.pause%<>0time%=|
000008d0  31 3a 54 25 3d 91 2d 33  30 30 0d 03 8e 2f fd 91  |1:T%=.-300.../..|
000008e0  3e 54 25 2b 33 30 30 84  62 6c 6f 63 6b 25 3d 30  |>T%+300.block%=0|
000008f0  80 61 25 3d 30 3a 74 69  6d 65 25 3d 74 69 6d 65  |.a%=0:time%=time|
00000900  25 2d 31 3a f2 74 69 6d  65 0d 03 98 23 fd 74 69  |%-1:.time...#.ti|
00000910  6d 65 25 3d 30 84 62 6c  6f 63 6b 25 3d 30 80 61  |me%=0.block%=0.a|
00000920  25 3d 30 84 70 61 75 73  65 25 3d 32 0d 03 a2 10  |%=0.pause%=2....|
00000930  e7 a4 77 6f 6e 3a 3d b9  20 8b 3d a3 0d 03 ac 05  |..won:=. .=.....|
00000940  3a 0d 03 b6 18 f4 20 4d  6f 76 69 6e 67 20 6f 6e  |:..... Moving on|
00000950  2c 20 6c 61 64 73 2e 2e  2e 0d 03 c0 37 dd a4 77  |, lads......7..w|
00000960  6f 6e 3a e7 62 6c 6f 63  6b 25 3d 30 80 70 61 75  |on:.block%=0.pau|
00000970  73 65 25 3d 30 80 61 25  3d 30 80 a4 77 61 74 65  |se%=0.a%=0..wate|
00000980  72 5f 6e 6f 6c 65 61 6b  73 3a 3d b9 20 8b 3d a3  |r_noleaks:=. .=.|
00000990  0d 03 ca 23 dd a4 70 61  75 73 65 3a f2 76 64 75  |...#..pause:.vdu|
000009a0  73 65 76 65 6e 3a f2 6d  6f 75 73 65 77 61 69 74  |seven:.mousewait|
000009b0  69 6e 67 0d 03 d4 f2 f2  73 28 36 34 2c 31 34 38  |ing.....s(64,148|
000009c0  2c 22 62 61 72 22 29 3a  e6 36 c8 9c 31 32 38 3a  |,"bar"):.6..128:|
000009d0  c8 93 c8 90 39 36 2c 31  38 30 2c 32 35 36 2c 36  |....96,180,256,6|
000009e0  30 30 3a f2 66 75 6e 6b  79 74 65 78 74 58 28 22  |00:.funkytextX("|
000009f0  50 41 55 53 45 44 22 2c  31 32 30 2c 37 30 30 29  |PAUSED",120,700)|
00000a00  3a f2 66 72 61 6d 65 28  31 30 38 2c 33 33 38 2c  |:.frame(108,338,|
00000a10  32 32 38 2c 33 30 30 2c  32 29 3a ef 35 2c 32 33  |228,300,2):.5,23|
00000a20  2c 31 37 2c 37 2c 36 2c  36 3b 38 3b 30 3b 3a f2  |,17,7,6,6;8;0;:.|
00000a30  62 74 28 22 53 65 6c 65  63 74 22 2c 31 35 34 2c  |bt("Select",154,|
00000a40  36 30 30 29 3a ef 32 33  2c 31 37 2c 37 2c 36 2c  |600):.23,17,7,6,|
00000a50  34 3b 38 3b 30 3b 3a f2  62 74 28 22 31 29 20 43  |4;8;0;:.bt("1) C|
00000a60  6f 6e 74 69 6e 75 65 22  2c 31 34 30 2c 35 30 30  |ontinue",140,500|
00000a70  29 3a f2 62 74 28 22 32  29 20 53 75 69 63 69 64  |):.bt("2) Suicid|
00000a80  65 22 2c 31 34 30 2c 34  35 32 29 3a f2 62 74 28  |e",140,452):.bt(|
00000a90  22 33 29 20 45 78 65 63  75 74 65 22 2c 31 34 30  |"3) Execute",140|
00000aa0  2c 34 30 34 29 0d 03 de  0e ef 34 3a 87 3a 2a 66  |,404).....4:.:*f|
00000ab0  58 31 35 0d 03 e8 72 f5  4d 3d a6 28 30 29 3a f2  |X15...r.M=.(0):.|
00000ac0  73 63 72 6f 6c 6c 61 72  6f 75 6e 64 3a fd 4d 3e  |scrollaround:.M>|
00000ad0  34 38 80 4d 3c 35 32 3a  f2 73 28 36 34 2c 31 34  |48.M<52:.s(64,14|
00000ae0  38 2c 22 62 61 72 22 29  3a f2 6c 69 76 65 73 3a  |8,"bar"):.lives:|
00000af0  f2 6c 65 76 65 6c 3a f2  6c 66 74 3a f2 74 69 6d  |.level:.lft:.tim|
00000b00  65 3a f1 8a 33 2c 32 32  29 22 30 30 30 30 30 30  |e:..3,22)"000000|
00000b10  30 22 3a f2 73 63 6f 72  65 3a f2 6d 6f 75 73 65  |0":.score:.mouse|
00000b20  61 72 72 6f 77 0d 03 f2  0f e7 4d 3d 35 31 f2 6c  |arrow.....M=51.l|
00000b30  61 75 67 68 0d 03 fc 09  3d 4d 2d 34 39 0d 04 06  |augh....=M-49...|
00000b40  d4 dd a4 64 69 65 64 61  64 65 61 74 68 3a 6c 69  |...diedadeath:li|
00000b50  76 65 25 3d 6c 69 76 65  25 2d 31 3a f2 6c 69 76  |ve%=live%-1:.liv|
00000b60  65 73 3a f2 6d 6f 75 73  65 77 61 69 74 69 6e 67  |es:.mousewaiting|
00000b70  3a e7 6c 69 76 65 25 3e  30 f2 66 75 6e 6b 79 74  |:.live%>0.funkyt|
00000b80  65 78 74 58 28 22 4f 48  20 44 45 41 52 22 2c 36  |extX("OH DEAR",6|
00000b90  37 34 2c 37 30 30 29 3a  f2 66 75 6e 6b 79 74 65  |74,700):.funkyte|
00000ba0  78 74 58 28 22 4c 4f 4f  4b 53 20 4c 49 4b 45 20  |xtX("LOOKS LIKE |
00000bb0  59 4f 55 20 57 49 4c 4c  22 2c 34 35 38 2c 36 30  |YOU WILL",458,60|
00000bc0  30 29 3a f2 66 75 6e 6b  79 74 65 78 74 58 28 22  |0):.funkytextX("|
00000bd0  48 41 56 45 20 54 4f 20  50 52 41 43 54 49 43 45  |HAVE TO PRACTICE|
00000be0  22 2c 35 31 32 2c 35 33  36 29 3a f2 66 75 6e 6b  |",512,536):.funk|
00000bf0  79 74 65 78 74 58 28 22  54 48 41 54 20 4f 4e 45  |ytextX("THAT ONE|
00000c00  22 2c 36 35 36 2c 34 37  32 29 3a f2 6c 61 75 67  |",656,472):.laug|
00000c10  68 0d 04 10 53 e7 6c 69  76 65 25 3d 30 3a f2 66  |h...S.live%=0:.f|
00000c20  75 6e 6b 79 74 65 78 74  58 28 22 47 41 4d 45 20  |unkytextX("GAME |
00000c30  4f 56 45 52 22 2c 36 33  38 2c 36 30 30 29 3a ff  |OVER",638,600):.|
00000c40  22 43 68 61 6e 6e 65 6c  56 6f 69 63 65 20 31 20  |"ChannelVoice 1 |
00000c50  4c 61 75 67 68 22 3a d4  31 2c 33 38 33 2c 26 35  |Laugh":.1,383,&5|
00000c60  30 30 2c 30 0d 04 1a 0a  2a 66 58 20 31 35 0d 04  |00,0....*fX 15..|
00000c70  24 46 f5 c8 97 78 25 2c  79 25 2c 62 25 3a f2 73  |$F...x%,y%,b%:.s|
00000c80  63 72 6f 6c 6c 61 72 6f  75 6e 64 3a fd ac 28 62  |crollaround:..(b|
00000c90  25 3d 30 29 3a f5 c8 97  78 25 2c 79 25 2c 62 25  |%=0):...x%,y%,b%|
00000ca0  3a f2 73 63 72 6f 6c 6c  61 72 6f 75 6e 64 3a fd  |:.scrollaround:.|
00000cb0  62 25 3d 30 0d 04 2e 1e  f2 6d 6f 75 73 65 61 72  |b%=0.....mousear|
00000cc0  72 6f 77 3a e7 6c 69 76  65 25 3d 30 3d b9 20 8b  |row:.live%=0=. .|
00000cd0  3d a3 0d 04 38 05 3a 0d  04 42 05 3a 0d 04 4c 27  |=...8.:..B.:..L'|
00000ce0  f4 20 53 63 72 65 65 6e  20 73 63 61 6e 20 61 6e  |. Screen scan an|
00000cf0  64 20 75 70 64 61 74 65  20 70 72 6f 63 65 64 75  |d update procedu|
00000d00  72 65 73 0d 04 56 0a dd  f2 73 63 61 6e 0d 04 60  |res..V...scan..`|
00000d10  25 62 25 3d 63 6f 64 65  25 3f 28 a4 70 6f 73 28  |%b%=code%?(.pos(|
00000d20  73 78 25 2c 73 79 25 29  2b 31 29 3a e7 62 25 3d  |sx%,sy%)+1):.b%=|
00000d30  30 e1 0d 04 6a 1b 62 6c  25 3d 63 6f 64 65 25 3f  |0...j.bl%=code%?|
00000d40  a4 70 6f 73 28 73 78 25  2c 73 79 25 29 0d 04 74  |.pos(sx%,sy%)..t|
00000d50  33 e7 28 62 25 80 31 29  3d 31 80 28 62 6c 25 3e  |3.(b%.1)=1.(bl%>|
00000d60  30 80 62 6c 25 3c 34 30  84 62 6c 25 3d 34 32 84  |0.bl%<40.bl%=42.|
00000d70  62 6c 25 3d 35 30 29 f2  63 68 6f 73 65 64 69 72  |bl%=50).chosedir|
00000d80  0d 04 7e 29 f4 20 49 6e  73 65 72 74 20 77 61 6e  |..~). Insert wan|
00000d90  74 20 74 6f 20 6d 6f 76  65 20 68 6f 72 69 7a 6f  |t to move horizo|
00000da0  6e 74 61 6c 20 68 65 72  65 0d 04 88 1d e7 62 25  |ntal here.....b%|
00000db0  3d 36 34 20 3a f2 6c 69  66 74 5f 77 61 6e 74 74  |=64 :.lift_wantt|
00000dc0  6f 6d 6f 76 65 48 0d 04  92 1d e7 62 25 3d 31 32  |omoveH.....b%=12|
00000dd0  38 3a f2 6c 69 66 74 5f  77 61 6e 74 74 6f 6d 6f  |8:.lift_wanttomo|
00000de0  76 65 56 0d 04 9c 05 e1  0d 04 a6 05 3a 0d 04 b0  |veV.........:...|
00000df0  0e dd f2 63 68 6f 73 65  64 69 72 0d 04 ba 13 62  |...chosedir....b|
00000e00  25 3d 62 25 81 32 3a c8  8e 62 25 80 33 ca 0d 04  |%=b%.2:..b%.3...|
00000e10  c4 12 c9 30 3a f2 73 68  69 66 74 28 30 2c 31 29  |...0:.shift(0,1)|
00000e20  0d 04 ce 13 c9 31 3a f2  73 68 69 66 74 28 30 2c  |.....1:.shift(0,|
00000e30  2d 31 29 0d 04 d8 13 c9  32 3a f2 73 68 69 66 74  |-1).....2:.shift|
00000e40  28 2d 31 2c 30 29 0d 04  e2 12 c9 33 3a f2 73 68  |(-1,0).....3:.sh|
00000e50  69 66 74 28 31 2c 30 29  0d 04 ec 07 cb 3a e1 0d  |ift(1,0).....:..|
00000e60  04 f6 05 3a 0d 05 00 14  dd f2 73 68 69 66 74 28  |...:......shift(|
00000e70  78 64 25 2c 79 64 25 29  0d 05 0a 62 62 25 3d 28  |xd%,yd%)...bb%=(|
00000e80  62 25 81 34 29 80 37 3a  e7 62 25 3c 3e 36 62 25  |b%.4).7:.b%<>6b%|
00000e90  3d 62 25 2b 32 3a 63 6f  64 65 25 3f 28 a4 70 6f  |=b%+2:code%?(.po|
00000ea0  73 28 73 78 25 2c 73 79  25 29 2b 31 29 3d 28 63  |s(sx%,sy%)+1)=(c|
00000eb0  6f 64 65 25 3f 28 a4 70  6f 73 28 73 78 25 2c 73  |ode%?(.pos(sx%,s|
00000ec0  79 25 29 2b 31 29 80 31  39 39 29 2b 62 25 2a 38  |y%)+1).199)+b%*8|
00000ed0  3a f2 72 65 64 72 61 77  3a e1 0d 05 14 2a 63 6f  |:.redraw:....*co|
00000ee0  64 65 25 3f 28 a4 70 6f  73 28 73 78 25 2c 73 79  |de%?(.pos(sx%,sy|
00000ef0  25 29 2b 31 29 3d 30 3a  62 25 3d 38 3a f2 72 65  |%)+1)=0:b%=8:.re|
00000f00  64 72 61 77 0d 05 1e 17  e7 62 6c 25 3d 31 f2 75  |draw.....bl%=1.u|
00000f10  70 64 61 74 65 6c 69 66  74 3a e1 0d 05 28 21 e7  |pdatelift:...(!.|
00000f20  62 6c 25 3d 35 30 f2 75  70 64 61 74 65 61 63 69  |bl%=50.updateaci|
00000f30  64 28 73 78 25 2c 73 79  25 29 3a e1 0d 05 32 5e  |d(sx%,sy%):...2^|
00000f40  f2 62 6c 6f 63 6b 73 61  62 6f 76 65 28 73 78 25  |.blocksabove(sx%|
00000f50  2d 78 64 25 2c 73 79 25  29 3a e7 a4 67 72 61 76  |-xd%,sy%):..grav|
00000f60  69 74 79 69 73 64 75 65  28 73 78 25 2c 73 79 25  |ityisdue(sx%,sy%|
00000f70  29 f2 67 72 61 76 69 74  79 28 73 78 25 2c 73 79  |).gravity(sx%,sy|
00000f80  25 29 3a f2 62 6c 6f 63  6b 73 61 62 6f 76 65 28  |%):.blocksabove(|
00000f90  73 78 25 2c 73 79 25 29  3a e1 0d 05 3c 24 e7 73  |sx%,sy%):...<$.s|
00000fa0  78 25 3d 63 78 25 80 73  79 25 3c 3d 63 79 25 3a  |x%=cx%.sy%<=cy%:|
00000fb0  e7 a4 63 72 75 73 68 65  72 28 73 79 25 29 0d 05  |..crusher(sy%)..|
00000fc0  46 17 e7 a4 6e 61 73 74  69 65 73 28 73 78 25 2c  |F...nasties(sx%,|
00000fd0  73 79 25 29 e1 0d 05 50  23 e7 a4 64 6f 6f 62 65  |sy%)...P#..doobe|
00000fe0  72 69 65 73 28 73 78 25  2c 73 79 25 2d 31 2c 73  |ries(sx%,sy%-1,s|
00000ff0  78 25 2c 73 79 25 29 e1  0d 05 5a 18 e7 a4 6d 61  |x%,sy%)...Z...ma|
00001000  74 63 68 28 73 78 25 2c  73 79 25 29 f2 6c 66 74  |tch(sx%,sy%).lft|
00001010  0d 05 64 2c e7 62 6c 6f  63 6b 25 3d 30 80 61 25  |..d,.block%=0.a%|
00001020  3d 32 3a e7 a4 61 6e 61  67 72 61 6d 5f 63 6c 65  |=2:..anagram_cle|
00001030  76 65 72 64 69 63 6b 3a  61 25 3d 30 0d 05 6e 05  |verdick:a%=0..n.|
00001040  e1 0d 05 78 05 3a 0d 05  82 27 f4 20 4c 69 66 74  |...x.:...'. Lift|
00001050  20 6d 6f 76 69 6e 67 20  68 6f 72 69 2f 76 65 72  | moving hori/ver|
00001060  74 69 20 70 72 6f 63 65  64 75 72 65 73 0d 05 8c  |ti procedures...|
00001070  10 dd f2 75 70 64 61 74  65 6c 69 66 74 0d 05 96  |...updatelift...|
00001080  11 78 25 3d 73 78 25 3a  79 25 3d 73 79 25 0d 05  |.x%=sx%:y%=sy%..|
00001090  a0 1f e7 79 64 25 3d 30  f2 6c 69 66 74 5f 68 6f  |...yd%=0.lift_ho|
000010a0  72 20 8b 20 f2 6c 69 66  74 5f 76 65 72 0d 05 aa  |r . .lift_ver...|
000010b0  05 e1 0d 05 b4 05 3a 0d  05 be 11 f4 20 4c 69 66  |......:..... Lif|
000010c0  74 20 6d 6f 76 69 6e 67  0d 05 c8 0e dd f2 6c 69  |t moving......li|
000010d0  66 74 5f 76 65 72 0d 05  d2 38 62 25 3d 63 6f 64  |ft_ver...8b%=cod|
000010e0  65 25 3f 28 a4 70 6f 73  28 78 25 2c 79 25 29 2b  |e%?(.pos(x%,y%)+|
000010f0  32 29 3a e7 62 25 3e 30  20 63 6f 64 65 25 3f a4  |2):.b%>0 code%?.|
00001100  70 6f 73 28 78 25 2c 79  25 2b 31 29 3d 30 0d 05  |pos(x%,y%+1)=0..|
00001110  dc 17 79 64 25 3d a4 74  75 72 6e 61 72 6f 75 6e  |..yd%=.turnaroun|
00001120  64 5f 76 65 72 0d 05 e6  20 e7 62 25 3e 30 3a 62  |d_ver... .b%>0:b|
00001130  6c 25 3d 62 25 3a f2 6c  69 66 74 5f 62 6c 6f 63  |l%=b%:.lift_bloc|
00001140  6b 6d 6f 76 65 0d 05 f0  13 e7 79 64 25 3d 31 3a  |kmove.....yd%=1:|
00001150  f2 6c 69 66 74 5f 75 70  0d 05 fa 15 e7 79 64 25  |.lift_up.....yd%|
00001160  3d 2d 31 f2 6c 69 66 74  5f 64 6f 77 6e 0d 06 04  |=-1.lift_down...|
00001170  17 e7 79 64 25 3d 30 f2  6c 69 66 74 5f 73 65 74  |..yd%=0.lift_set|
00001180  77 74 6d 56 0d 06 0e 50  e7 79 64 25 3d 2d 31 80  |wtmV...P.yd%=-1.|
00001190  63 6f 64 65 25 3f 28 a4  70 6f 73 28 78 25 2c 79  |code%?(.pos(x%,y|
000011a0  25 2d 31 29 2b 32 29 3e  30 f2 62 6c 6f 63 6b 73  |%-1)+2)>0.blocks|
000011b0  61 62 6f 76 65 28 78 25  2c 79 25 2b 31 29 20 8b  |above(x%,y%+1) .|
000011c0  20 f2 62 6c 6f 63 6b 73  61 62 6f 76 65 28 78 25  | .blocksabove(x%|
000011d0  2c 79 25 29 0d 06 18 05  e1 0d 06 22 05 3a 0d 06  |,y%).......".:..|
000011e0  2c 0e dd f2 6c 69 66 74  5f 68 6f 72 0d 06 36 87  |,...lift_hor..6.|
000011f0  62 25 3d 63 6f 64 65 25  3f 28 a4 70 6f 73 28 78  |b%=code%?(.pos(x|
00001200  25 2c 79 25 29 2b 32 29  3a e7 62 25 3e 30 f2 73  |%,y%)+2):.b%>0.s|
00001210  70 72 69 74 65 28 34 30  30 2b 28 34 30 2a 78 25  |prite(400+(40*x%|
00001220  29 2d 28 34 2a 78 64 25  29 2c 31 38 38 2b 28 34  |)-(4*xd%),188+(4|
00001230  30 2a 79 25 29 2c 30 29  3a f2 73 70 72 69 74 65  |0*y%),0):.sprite|
00001240  28 34 30 30 2b 28 34 30  2a 78 25 29 2c 31 38 38  |(400+(40*x%),188|
00001250  2b 28 34 30 2a 79 25 29  2c 62 25 29 3a 62 6c 25  |+(40*y%),b%):bl%|
00001260  3d 62 25 3a f2 6c 69 66  74 5f 62 6c 6f 63 6b 6d  |=b%:.lift_blockm|
00001270  6f 76 65 0d 06 40 38 e7  62 25 3e 30 20 63 6f 64  |ove..@8.b%>0 cod|
00001280  65 25 3f a4 70 6f 73 28  78 25 2c 79 25 2b 31 29  |e%?.pos(x%,y%+1)|
00001290  3d 62 25 3a 63 6f 64 65  25 3f 28 a4 70 6f 73 28  |=b%:code%?(.pos(|
000012a0  78 25 2c 79 25 29 2b 32  29 3d 30 0d 06 4a 17 78  |x%,y%)+2)=0..J.x|
000012b0  64 25 3d a4 74 75 72 6e  61 72 6f 75 6e 64 5f 68  |d%=.turnaround_h|
000012c0  6f 72 0d 06 54 16 e7 78  64 25 3d 31 3a f2 6c 69  |or..T..xd%=1:.li|
000012d0  66 74 5f 72 69 67 68 74  0d 06 5e 16 e7 78 64 25  |ft_right..^..xd%|
000012e0  3d 2d 31 3a f2 6c 69 66  74 5f 6c 65 66 74 0d 06  |=-1:.lift_left..|
000012f0  68 17 e7 78 64 25 3d 30  f2 6c 69 66 74 5f 73 65  |h..xd%=0.lift_se|
00001300  74 77 74 6d 48 0d 06 72  05 e1 0d 06 7c 05 3a 0d  |twtmH..r....|.:.|
00001310  06 86 1b f4 20 54 6f 20  74 75 72 6e 20 62 6c 6f  |.... To turn blo|
00001320  63 6b 73 20 61 72 6f 75  6e 64 0d 06 90 14 dd a4  |cks around......|
00001330  74 75 72 6e 61 72 6f 75  6e 64 5f 76 65 72 0d 06  |turnaround_ver..|
00001340  9a 27 e7 79 64 25 3d 31  80 a4 6c 69 66 74 5f 61  |.'.yd%=1..lift_a|
00001350  62 6f 76 65 62 6c 6f 63  6b 3a 3d 31 20 8b 20 79  |boveblock:=1 . y|
00001360  64 25 3d 2d 31 0d 06 a4  25 e7 79 64 25 3d 2d 31  |d%=-1...%.yd%=-1|
00001370  80 63 6f 64 65 25 3f a4  70 6f 73 28 78 25 2c 79  |.code%?.pos(x%,y|
00001380  25 2d 31 29 3d 30 20 3d  2d 31 0d 06 ae 1d e7 a4  |%-1)=0 =-1......|
00001390  6c 69 66 74 5f 61 62 6f  76 65 62 6c 6f 63 6b 3a  |lift_aboveblock:|
000013a0  3d 31 20 8b 20 3d 30 0d  06 b8 05 3a 0d 06 c2 14  |=1 . =0....:....|
000013b0  dd a4 74 75 72 6e 61 72  6f 75 6e 64 5f 68 6f 72  |..turnaround_hor|
000013c0  0d 06 cc 2c e7 78 64 25  3d 31 80 63 6f 64 65 25  |...,.xd%=1.code%|
000013d0  3f a4 70 6f 73 28 78 25  2b 31 2c 79 25 29 3d 30  |?.pos(x%+1,y%)=0|
000013e0  20 3d 31 20 8b 20 78 64  25 3d 2d 31 0d 06 d6 25  | =1 . xd%=-1...%|
000013f0  e7 78 64 25 3d 2d 31 80  63 6f 64 65 25 3f a4 70  |.xd%=-1.code%?.p|
00001400  6f 73 28 78 25 2d 31 2c  79 25 29 3d 30 20 3d 2d  |os(x%-1,y%)=0 =-|
00001410  31 0d 06 e0 22 e7 63 6f  64 65 25 3f a4 70 6f 73  |1...".code%?.pos|
00001420  28 78 25 2b 31 2c 79 25  29 3d 30 20 3d 31 20 8b  |(x%+1,y%)=0 =1 .|
00001430  20 3d 30 0d 06 ea 05 3a  0d 06 f4 24 f4 20 4d 6f  | =0....:...$. Mo|
00001440  76 65 20 61 20 62 6c 6f  63 6b 20 6f 66 66 20 61  |ve a block off a|
00001450  20 6d 6f 76 69 6e 67 20  6c 69 66 74 0d 06 fe 73  | moving lift...s|
00001460  dd f2 6c 69 66 74 5f 62  6c 6f 63 6b 6d 6f 76 65  |..lift_blockmove|
00001470  3a ea 78 25 2c 79 25 3a  42 25 3d 62 25 3a c8 97  |:.x%,y%:B%=b%:..|
00001480  78 25 2c 79 25 2c 62 25  3a e7 ac a4 6d 72 28 34  |x%,y%,b%:...mr(4|
00001490  30 30 2b 28 34 30 2a 73  78 25 29 2c 31 38 38 2b  |00+(40*sx%),188+|
000014a0  28 34 30 2a 73 79 25 29  2c 34 34 30 2b 28 34 30  |(40*sy%),440+(40|
000014b0  2a 73 78 25 29 2c 32 32  38 2b 28 34 30 2a 73 79  |*sx%),228+(40*sy|
000014c0  25 29 29 84 62 25 3d 30  62 25 3d 42 25 3a e1 0d  |%)).b%=0b%=B%:..|
000014d0  07 08 83 e7 62 25 3d 34  80 63 6f 64 65 25 3f a4  |....b%=4.code%?.|
000014e0  70 6f 73 28 73 78 25 2d  31 2c 73 79 25 2b 31 29  |pos(sx%-1,sy%+1)|
000014f0  3d 30 3a 63 6f 64 65 25  3f a4 70 6f 73 28 73 78  |=0:code%?.pos(sx|
00001500  25 2c 73 79 25 2b 31 29  3d 63 6f 64 65 25 3f 28  |%,sy%+1)=code%?(|
00001510  a4 70 6f 73 28 73 78 25  2c 73 79 25 29 2b 32 29  |.pos(sx%,sy%)+2)|
00001520  3a 63 6f 64 65 25 3f 28  a4 70 6f 73 28 73 78 25  |:code%?(.pos(sx%|
00001530  2c 73 79 25 29 2b 32 29  3d 30 3a 62 25 3d 30 3a  |,sy%)+2)=0:b%=0:|
00001540  f2 6c 65 66 74 28 73 78  25 2c 73 79 25 2b 31 29  |.left(sx%,sy%+1)|
00001550  3a e1 0d 07 12 84 e7 62  25 3d 31 80 63 6f 64 65  |:......b%=1.code|
00001560  25 3f a4 70 6f 73 28 73  78 25 2b 31 2c 73 79 25  |%?.pos(sx%+1,sy%|
00001570  2b 31 29 3d 30 3a 63 6f  64 65 25 3f a4 70 6f 73  |+1)=0:code%?.pos|
00001580  28 73 78 25 2c 73 79 25  2b 31 29 3d 63 6f 64 65  |(sx%,sy%+1)=code|
00001590  25 3f 28 a4 70 6f 73 28  73 78 25 2c 73 79 25 29  |%?(.pos(sx%,sy%)|
000015a0  2b 32 29 3a 63 6f 64 65  25 3f 28 a4 70 6f 73 28  |+2):code%?(.pos(|
000015b0  73 78 25 2c 73 79 25 29  2b 32 29 3d 30 3a 62 25  |sx%,sy%)+2)=0:b%|
000015c0  3d 30 3a f2 72 69 67 68  74 28 73 78 25 2c 73 79  |=0:.right(sx%,sy|
000015d0  25 2b 31 29 3a e1 0d 07  1c 0b 62 25 3d 42 25 3a  |%+1):.....b%=B%:|
000015e0  e1 0d 07 26 05 3a 0d 07  30 1d f4 20 4c 69 66 74  |...&.:..0.. Lift|
000015f0  73 20 74 68 61 74 20 77  61 6e 74 20 74 6f 20 6d  |s that want to m|
00001600  6f 76 65 0d 07 3a 24 dd  f2 6c 69 66 74 5f 77 61  |ove..:$..lift_wa|
00001610  6e 74 74 6f 6d 6f 76 65  56 3a 78 25 3d 73 78 25  |nttomoveV:x%=sx%|
00001620  3a 79 25 3d 73 79 25 0d  07 44 59 62 25 3d 63 6f  |:y%=sy%..DYb%=co|
00001630  64 65 25 3f a4 70 6f 73  28 78 25 2c 79 25 2b 31  |de%?.pos(x%,y%+1|
00001640  29 3a e7 62 25 3e 32 80  62 25 3c 34 30 80 63 6f  |):.b%>2.b%<40.co|
00001650  64 65 25 3f 28 a4 70 6f  73 28 78 25 2c 79 25 2b  |de%?(.pos(x%,y%+|
00001660  31 29 2b 31 29 3d 30 20  63 6f 64 65 25 3f 28 a4  |1)+1)=0 code%?(.|
00001670  70 6f 73 28 78 25 2c 79  25 29 2b 32 29 3d 62 25  |pos(x%,y%)+2)=b%|
00001680  0d 07 4e 1c 62 25 3d 63  6f 64 65 25 3f 28 a4 70  |..N.b%=code%?(.p|
00001690  6f 73 28 78 25 2c 79 25  29 2b 32 29 0d 07 58 20  |os(x%,y%)+2)..X |
000016a0  e7 a4 6c 69 66 74 5f 61  62 6f 76 65 62 6c 6f 63  |..lift_abovebloc|
000016b0  6b 20 f2 6c 69 66 74 5f  75 70 3a e1 0d 07 62 27  |k .lift_up:...b'|
000016c0  e7 63 6f 64 65 25 3f a4  70 6f 73 28 78 25 2c 79  |.code%?.pos(x%,y|
000016d0  25 2d 31 29 3d 30 20 f2  6c 69 66 74 5f 64 6f 77  |%-1)=0 .lift_dow|
000016e0  6e 3a e1 0d 07 6c 1d 63  6f 64 65 25 3f 28 a4 70  |n:...l.code%?(.p|
000016f0  6f 73 28 78 25 2c 79 25  29 2b 32 29 3d 30 3a e1  |os(x%,y%)+2)=0:.|
00001700  0d 07 76 05 3a 0d 07 80  24 dd f2 6c 69 66 74 5f  |..v.:...$..lift_|
00001710  77 61 6e 74 74 6f 6d 6f  76 65 48 3a 78 25 3d 73  |wanttomoveH:x%=s|
00001720  78 25 3a 79 25 3d 73 79  25 0d 07 8a 31 e7 63 6f  |x%:y%=sy%...1.co|
00001730  64 65 25 3f a4 70 6f 73  28 78 25 2d 31 2c 79 25  |de%?.pos(x%-1,y%|
00001740  29 3e 30 80 63 6f 64 65  25 3f a4 70 6f 73 28 78  |)>0.code%?.pos(x|
00001750  25 2b 31 2c 79 25 29 3e  30 e1 0d 07 94 28 e7 63  |%+1,y%)>0....(.c|
00001760  6f 64 65 25 3f a4 70 6f  73 28 78 25 2b 31 2c 79  |ode%?.pos(x%+1,y|
00001770  25 29 3d 30 20 f2 6c 69  66 74 5f 72 69 67 68 74  |%)=0 .lift_right|
00001780  3a e1 0d 07 9e 10 f2 6c  69 66 74 5f 6c 65 66 74  |:......lift_left|
00001790  3a e1 0d 07 a8 05 3a 0d  07 b2 12 dd f2 6c 69 66  |:.....:......lif|
000017a0  74 5f 73 65 74 77 74 6d  56 0d 07 bc 93 e7 63 6f  |t_setwtmV.....co|
000017b0  64 65 25 3f 28 a4 70 6f  73 28 78 25 2c 79 25 29  |de%?(.pos(x%,y%)|
000017c0  2b 32 29 3e 30 20 63 6f  64 65 25 3f a4 70 6f 73  |+2)>0 code%?.pos|
000017d0  28 78 25 2c 79 25 2b 31  29 3d 63 6f 64 65 25 3f  |(x%,y%+1)=code%?|
000017e0  28 a4 70 6f 73 28 78 25  2c 79 25 29 2b 32 29 3a  |(.pos(x%,y%)+2):|
000017f0  63 6f 64 65 25 3f 28 a4  70 6f 73 28 78 25 2c 79  |code%?(.pos(x%,y|
00001800  25 29 2b 32 29 3d 30 3a  f2 73 70 72 69 74 65 28  |%)+2)=0:.sprite(|
00001810  34 30 30 2b 28 34 30 2a  78 25 29 2c 31 38 38 2b  |400+(40*x%),188+|
00001820  28 34 30 2a 79 25 29 2c  63 6f 64 65 25 3f a4 70  |(40*y%),code%?.p|
00001830  6f 73 28 78 25 2c 79 25  2b 31 29 29 0d 07 c6 1f  |os(x%,y%+1))....|
00001840  63 6f 64 65 25 3f 28 a4  70 6f 73 28 78 25 2c 79  |code%?(.pos(x%,y|
00001850  25 29 2b 31 29 3d 31 32  38 3a e1 0d 07 d0 05 3a  |%)+1)=128:.....:|
00001860  0d 07 da 12 dd f2 6c 69  66 74 5f 73 65 74 77 74  |......lift_setwt|
00001870  6d 48 0d 07 e4 93 e7 63  6f 64 65 25 3f 28 a4 70  |mH.....code%?(.p|
00001880  6f 73 28 78 25 2c 79 25  29 2b 32 29 3e 30 20 63  |os(x%,y%)+2)>0 c|
00001890  6f 64 65 25 3f a4 70 6f  73 28 78 25 2c 79 25 2b  |ode%?.pos(x%,y%+|
000018a0  31 29 3d 63 6f 64 65 25  3f 28 a4 70 6f 73 28 78  |1)=code%?(.pos(x|
000018b0  25 2c 79 25 29 2b 32 29  3a 63 6f 64 65 25 3f 28  |%,y%)+2):code%?(|
000018c0  a4 70 6f 73 28 78 25 2c  79 25 29 2b 32 29 3d 30  |.pos(x%,y%)+2)=0|
000018d0  3a f2 73 70 72 69 74 65  28 34 30 30 2b 28 34 30  |:.sprite(400+(40|
000018e0  2a 78 25 29 2c 31 38 38  2b 28 34 30 2a 79 25 29  |*x%),188+(40*y%)|
000018f0  2c 63 6f 64 65 25 3f a4  70 6f 73 28 78 25 2c 79  |,code%?.pos(x%,y|
00001900  25 2b 31 29 29 0d 07 ee  1e 63 6f 64 65 25 3f 28  |%+1))....code%?(|
00001910  a4 70 6f 73 28 78 25 2c  79 25 29 2b 31 29 3d 36  |.pos(x%,y%)+1)=6|
00001920  34 3a e1 0d 07 f8 05 3a  0d 08 02 47 dd a4 6c 69  |4:.....:...G..li|
00001930  66 74 5f 61 62 6f 76 65  62 6c 6f 63 6b 3a e7 63  |ft_aboveblock:.c|
00001940  6f 64 65 25 3f 28 a4 70  6f 73 28 78 25 2c 79 25  |ode%?(.pos(x%,y%|
00001950  29 2b 32 29 3d 30 80 63  6f 64 65 25 3f a4 70 6f  |)+2)=0.code%?.po|
00001960  73 28 78 25 2c 79 25 2b  31 29 3d 30 20 3d b9 0d  |s(x%,y%+1)=0 =..|
00001970  08 0c 34 e7 63 6f 64 65  25 3f 28 a4 70 6f 73 28  |..4.code%?(.pos(|
00001980  78 25 2c 79 25 29 2b 32  29 3e 30 80 63 6f 64 65  |x%,y%)+2)>0.code|
00001990  25 3f a4 70 6f 73 28 78  25 2c 79 25 2b 32 29 3d  |%?.pos(x%,y%+2)=|
000019a0  30 3d b9 0d 08 16 06 3d  a3 0d 08 20 05 3a 0d 08  |0=.....=... .:..|
000019b0  2a 22 f4 20 41 63 74 75  61 6c 6c 79 20 6d 6f 76  |*". Actually mov|
000019c0  69 6e 67 20 74 68 65 20  62 6c 65 65 64 65 72 73  |ing the bleeders|
000019d0  0d 08 34 29 dd f2 6c 69  66 74 5f 75 70 3a e7 62  |..4)..lift_up:.b|
000019e0  25 3e 30 63 6f 64 65 25  3f a4 70 6f 73 28 78 25  |%>0code%?.pos(x%|
000019f0  2c 79 25 2b 32 29 3d 36  33 0d 08 3e cc 63 6f 64  |,y%+2)=63..>.cod|
00001a00  65 25 3f a4 70 6f 73 28  78 25 2c 79 25 2b 31 29  |e%?.pos(x%,y%+1)|
00001a10  3d 63 6f 64 65 25 3f a4  70 6f 73 28 78 25 2c 79  |=code%?.pos(x%,y|
00001a20  25 29 3a 63 6f 64 65 25  3f 28 a4 70 6f 73 28 78  |%):code%?(.pos(x|
00001a30  25 2c 79 25 2b 31 29 2b  32 29 3d 62 25 3a 63 6f  |%,y%+1)+2)=b%:co|
00001a40  64 65 25 3f 28 a4 70 6f  73 28 78 25 2c 79 25 2b  |de%?(.pos(x%,y%+|
00001a50  31 29 2b 31 29 3d 31 3a  63 6f 64 65 25 3f a4 70  |1)+1)=1:code%?.p|
00001a60  6f 73 28 78 25 2c 79 25  29 3d 30 3a 63 6f 64 65  |os(x%,y%)=0:code|
00001a70  25 3f 28 a4 70 6f 73 28  78 25 2c 79 25 29 2b 31  |%?(.pos(x%,y%)+1|
00001a80  29 3d 30 3a 58 25 3d 34  30 30 2b 28 34 30 2a 78  |)=0:X%=400+(40*x|
00001a90  25 29 3a 59 25 3d 31 34  38 2b 28 34 30 2a 79 25  |%):Y%=148+(40*y%|
00001aa0  29 3a f2 73 70 72 69 74  65 28 58 25 2c 59 25 2c  |):.sprite(X%,Y%,|
00001ab0  30 29 3a f2 73 70 72 69  74 65 28 58 25 2c 59 25  |0):.sprite(X%,Y%|
00001ac0  2b 38 2c 31 29 0d 08 48  1e e7 62 25 3e 30 20 f2  |+8,1)..H..b%>0 .|
00001ad0  73 70 72 69 74 65 28 58  25 2c 59 25 2b 34 38 2c  |sprite(X%,Y%+48,|
00001ae0  62 25 29 0d 08 52 05 e1  0d 08 5c 05 3a 0d 08 66  |b%)..R....\.:..f|
00001af0  b2 dd f2 6c 69 66 74 5f  64 6f 77 6e 3a 63 6f 64  |...lift_down:cod|
00001b00  65 25 3f a4 70 6f 73 28  78 25 2c 79 25 2d 31 29  |e%?.pos(x%,y%-1)|
00001b10  3d 63 6f 64 65 25 3f a4  70 6f 73 28 78 25 2c 79  |=code%?.pos(x%,y|
00001b20  25 29 3a 63 6f 64 65 25  3f 28 a4 70 6f 73 28 78  |%):code%?(.pos(x|
00001b30  25 2c 79 25 2d 31 29 2b  32 29 3d 62 25 3a 63 6f  |%,y%-1)+2)=b%:co|
00001b40  64 65 25 3f 28 a4 70 6f  73 28 78 25 2c 79 25 2d  |de%?(.pos(x%,y%-|
00001b50  31 29 2b 31 29 3d 33 3a  63 6f 64 65 25 3f 28 a4  |1)+1)=3:code%?(.|
00001b60  70 6f 73 28 78 25 2c 79  25 29 2b 31 29 3d 30 3a  |pos(x%,y%)+1)=0:|
00001b70  e7 62 25 3e 30 63 6f 64  65 25 3f a4 70 6f 73 28  |.b%>0code%?.pos(|
00001b80  78 25 2c 79 25 29 3d 36  33 20 8b 20 63 6f 64 65  |x%,y%)=63 . code|
00001b90  25 3f a4 70 6f 73 28 78  25 2c 79 25 29 3d 30 0d  |%?.pos(x%,y%)=0.|
00001ba0  08 70 9e 58 25 3d 34 30  30 2b 28 34 30 2a 78 25  |.p.X%=400+(40*x%|
00001bb0  29 3a 59 25 3d 31 34 38  2b 28 34 30 2a 79 25 29  |):Y%=148+(40*y%)|
00001bc0  3a f2 73 70 72 69 74 65  28 58 25 2c 59 25 2c 30  |:.sprite(X%,Y%,0|
00001bd0  29 3a f2 73 70 72 69 74  65 28 58 25 2c 59 25 2d  |):.sprite(X%,Y%-|
00001be0  38 2c 31 29 3a e7 63 6f  64 65 25 3f 28 a4 70 6f  |8,1):.code%?(.po|
00001bf0  73 28 78 25 2c 79 25 2d  31 29 2b 32 29 3e 30 20  |s(x%,y%-1)+2)>0 |
00001c00  f2 73 70 72 69 74 65 28  58 25 2c 59 25 2b 34 34  |.sprite(X%,Y%+44|
00001c10  2c 30 29 3a f2 73 70 72  69 74 65 28 58 25 2c 59  |,0):.sprite(X%,Y|
00001c20  25 2b 33 32 2c 63 6f 64  65 25 3f 28 a4 70 6f 73  |%+32,code%?(.pos|
00001c30  28 78 25 2c 79 25 2d 31  29 2b 32 29 29 0d 08 7a  |(x%,y%-1)+2))..z|
00001c40  05 e1 0d 08 84 05 3a 0d  08 8e b0 dd f2 6c 69 66  |......:......lif|
00001c50  74 5f 72 69 67 68 74 3a  e7 a4 62 6c 6f 63 6b 28  |t_right:..block(|
00001c60  78 25 2c 79 25 2b 31 29  80 63 6f 64 65 25 3f a4  |x%,y%+1).code%?.|
00001c70  70 6f 73 28 78 25 2b 31  2c 79 25 2b 31 29 3d 30  |pos(x%+1,y%+1)=0|
00001c80  3a 63 6f 64 65 25 3f 28  a4 70 6f 73 28 78 25 2c  |:code%?(.pos(x%,|
00001c90  79 25 29 2b 32 29 3d 63  6f 64 65 25 3f a4 70 6f  |y%)+2)=code%?.po|
00001ca0  73 28 78 25 2c 79 25 2b  31 29 3a 62 25 3d 63 6f  |s(x%,y%+1):b%=co|
00001cb0  64 65 25 3f a4 70 6f 73  28 78 25 2c 79 25 2b 31  |de%?.pos(x%,y%+1|
00001cc0  29 3a 63 6f 64 65 25 3f  a4 70 6f 73 28 78 25 2c  |):code%?.pos(x%,|
00001cd0  79 25 2b 31 29 3d 30 3a  63 6f 64 65 25 3f a4 70  |y%+1)=0:code%?.p|
00001ce0  6f 73 28 78 25 2b 31 2c  79 25 2b 31 29 3d 36 33  |os(x%+1,y%+1)=63|
00001cf0  20 8b 20 62 25 3d 30 0d  08 98 cc 63 6f 64 65 25  | . b%=0....code%|
00001d00  3f a4 70 6f 73 28 78 25  2b 31 2c 79 25 29 3d 63  |?.pos(x%+1,y%)=c|
00001d10  6f 64 65 25 3f a4 70 6f  73 28 78 25 2c 79 25 29  |ode%?.pos(x%,y%)|
00001d20  3a 63 6f 64 65 25 3f 28  a4 70 6f 73 28 78 25 2b  |:code%?(.pos(x%+|
00001d30  31 2c 79 25 29 2b 32 29  3d 62 25 3a 63 6f 64 65  |1,y%)+2)=b%:code|
00001d40  25 3f 28 a4 70 6f 73 28  78 25 2b 31 2c 79 25 29  |%?(.pos(x%+1,y%)|
00001d50  2b 31 29 3d 37 3a 63 6f  64 65 25 3f a4 70 6f 73  |+1)=7:code%?.pos|
00001d60  28 78 25 2c 79 25 29 3d  30 3a 63 6f 64 65 25 3f  |(x%,y%)=0:code%?|
00001d70  28 a4 70 6f 73 28 78 25  2c 79 25 29 2b 31 29 3d  |(.pos(x%,y%)+1)=|
00001d80  30 3a 58 25 3d 34 30 30  2b 28 34 30 2a 78 25 29  |0:X%=400+(40*x%)|
00001d90  3a 59 25 3d 31 34 38 2b  28 34 30 2a 79 25 29 3a  |:Y%=148+(40*y%):|
00001da0  f2 73 70 72 69 74 65 28  58 25 2c 59 25 2c 30 29  |.sprite(X%,Y%,0)|
00001db0  3a f2 73 70 72 69 74 65  28 58 25 2b 38 2c 59 25  |:.sprite(X%+8,Y%|
00001dc0  2c 31 29 0d 08 a2 61 e7  62 25 3e 30 20 f2 73 70  |,1)...a.b%>0 .sp|
00001dd0  72 69 74 65 28 58 25 2d  34 2c 59 25 2b 34 30 2c  |rite(X%-4,Y%+40,|
00001de0  30 29 3a f2 73 70 72 69  74 65 28 58 25 2b 38 2c  |0):.sprite(X%+8,|
00001df0  59 25 2b 34 30 2c 62 25  29 3a f2 62 6c 6f 63 6b  |Y%+40,b%):.block|
00001e00  73 61 62 6f 76 65 28 78  25 2c 79 25 2b 31 29 20  |sabove(x%,y%+1) |
00001e10  8b f2 62 6c 6f 63 6b 73  61 62 6f 76 65 28 78 25  |..blocksabove(x%|
00001e20  2c 79 25 29 0d 08 ac 05  e1 0d 08 b6 05 3a 0d 08  |,y%).........:..|
00001e30  c0 ae dd f2 6c 69 66 74  5f 6c 65 66 74 3a e7 a4  |....lift_left:..|
00001e40  62 6c 6f 63 6b 28 78 25  2c 79 25 2b 31 29 80 63  |block(x%,y%+1).c|
00001e50  6f 64 65 25 3f a4 70 6f  73 28 78 25 2d 31 2c 79  |ode%?.pos(x%-1,y|
00001e60  25 2b 31 29 3d 30 63 6f  64 65 25 3f 28 a4 70 6f  |%+1)=0code%?(.po|
00001e70  73 28 78 25 2c 79 25 29  2b 32 29 3d 63 6f 64 65  |s(x%,y%)+2)=code|
00001e80  25 3f a4 70 6f 73 28 78  25 2c 79 25 2b 31 29 3a  |%?.pos(x%,y%+1):|
00001e90  62 25 3d 63 6f 64 65 25  3f a4 70 6f 73 28 78 25  |b%=code%?.pos(x%|
00001ea0  2c 79 25 2b 31 29 3a 63  6f 64 65 25 3f a4 70 6f  |,y%+1):code%?.po|
00001eb0  73 28 78 25 2c 79 25 2b  31 29 3d 30 3a 63 6f 64  |s(x%,y%+1)=0:cod|
00001ec0  65 25 3f a4 70 6f 73 28  78 25 2d 31 2c 79 25 2b  |e%?.pos(x%-1,y%+|
00001ed0  31 29 3d 36 33 20 8b 20  62 25 3d 30 0d 08 ca cc  |1)=63 . b%=0....|
00001ee0  63 6f 64 65 25 3f a4 70  6f 73 28 78 25 2d 31 2c  |code%?.pos(x%-1,|
00001ef0  79 25 29 3d 63 6f 64 65  25 3f a4 70 6f 73 28 78  |y%)=code%?.pos(x|
00001f00  25 2c 79 25 29 3a 63 6f  64 65 25 3f 28 a4 70 6f  |%,y%):code%?(.po|
00001f10  73 28 78 25 2d 31 2c 79  25 29 2b 32 29 3d 62 25  |s(x%-1,y%)+2)=b%|
00001f20  3a 63 6f 64 65 25 3f 28  a4 70 6f 73 28 78 25 2d  |:code%?(.pos(x%-|
00001f30  31 2c 79 25 29 2b 31 29  3d 35 3a 63 6f 64 65 25  |1,y%)+1)=5:code%|
00001f40  3f a4 70 6f 73 28 78 25  2c 79 25 29 3d 30 3a 63  |?.pos(x%,y%)=0:c|
00001f50  6f 64 65 25 3f 28 a4 70  6f 73 28 78 25 2c 79 25  |ode%?(.pos(x%,y%|
00001f60  29 2b 31 29 3d 30 3a 58  25 3d 34 30 30 2b 28 34  |)+1)=0:X%=400+(4|
00001f70  30 2a 78 25 29 3a 59 25  3d 31 34 38 2b 28 34 30  |0*x%):Y%=148+(40|
00001f80  2a 79 25 29 3a f2 73 70  72 69 74 65 28 58 25 2c  |*y%):.sprite(X%,|
00001f90  59 25 2c 30 29 3a f2 73  70 72 69 74 65 28 58 25  |Y%,0):.sprite(X%|
00001fa0  2d 38 2c 59 25 2c 31 29  0d 08 d4 61 e7 62 25 3e  |-8,Y%,1)...a.b%>|
00001fb0  30 20 f2 73 70 72 69 74  65 28 58 25 2b 34 2c 59  |0 .sprite(X%+4,Y|
00001fc0  25 2b 34 30 2c 30 29 3a  f2 73 70 72 69 74 65 28  |%+40,0):.sprite(|
00001fd0  58 25 2d 38 2c 59 25 2b  34 30 2c 62 25 29 3a f2  |X%-8,Y%+40,b%):.|
00001fe0  62 6c 6f 63 6b 73 61 62  6f 76 65 28 78 25 2c 79  |blocksabove(x%,y|
00001ff0  25 2b 31 29 20 8b f2 62  6c 6f 63 6b 73 61 62 6f  |%+1) ..blocksabo|
00002000  76 65 28 78 25 2c 79 25  29 0d 08 de 05 e1 0d 08  |ve(x%,y%).......|
00002010  e8 05 3a 0d 08 f2 2b f4  20 53 6f 6d 65 20 75 73  |..:...+. Some us|
00002020  65 66 75 6c 6c 20 66 75  6e 63 74 69 6f 6e 73 20  |efull functions |
00002030  61 6e 64 20 70 72 6f 63  65 64 75 72 65 73 0d 08  |and procedures..|
00002040  fc 88 dd f2 62 6c 6f 63  6b 73 61 62 6f 76 65 28  |....blocksabove(|
00002050  78 25 2c 79 25 29 3a ea  4e 2c 62 25 3a 4e 3d 31  |x%,y%):.N,b%:N=1|
00002060  3a f5 62 25 3d 63 6f 64  65 25 3f a4 70 6f 73 28  |:.b%=code%?.pos(|
00002070  78 25 2c 79 25 2b 4e 29  3a e7 62 25 3e 32 80 62  |x%,y%+N):.b%>2.b|
00002080  25 3c 34 30 80 63 6f 64  65 25 3f 28 a4 70 6f 73  |%<40.code%?(.pos|
00002090  28 78 25 2c 79 25 2b 4e  29 2b 31 29 3d 30 80 a4  |(x%,y%+N)+1)=0..|
000020a0  67 72 61 76 69 74 79 69  73 64 75 65 28 78 25 2c  |gravityisdue(x%,|
000020b0  79 25 2b 4e 29 f2 67 72  61 76 69 74 79 28 78 25  |y%+N).gravity(x%|
000020c0  2c 79 25 2b 4e 29 0d 09  06 1a 4e 3d 4e 2b 31 3a  |,y%+N)....N=N+1:|
000020d0  fd ac 28 62 25 3e 32 80  62 25 3c 34 30 29 3a e1  |..(b%>2.b%<40):.|
000020e0  0d 09 10 05 3a 0d 09 1a  c3 dd f2 67 72 61 76 69  |....:......gravi|
000020f0  74 79 28 78 25 2c 79 25  29 3a ea 62 6c 25 3a 62  |ty(x%,y%):.bl%:b|
00002100  6c 25 3d 63 6f 64 65 25  3f a4 70 6f 73 28 78 25  |l%=code%?.pos(x%|
00002110  2c 79 25 29 3a 63 6f 64  65 25 3f a4 70 6f 73 28  |,y%):code%?.pos(|
00002120  78 25 2c 79 25 2d 31 29  3d 62 6c 25 3a 63 6f 64  |x%,y%-1)=bl%:cod|
00002130  65 25 3f 28 a4 70 6f 73  28 78 25 2c 79 25 2d 31  |e%?(.pos(x%,y%-1|
00002140  29 2b 31 29 3d 33 3a e7  62 6c 25 3c 3e 31 33 63  |)+1)=3:.bl%<>13c|
00002150  6f 64 65 25 3f a4 70 6f  73 28 78 25 2c 79 25 29  |ode%?.pos(x%,y%)|
00002160  3d 30 3a 78 25 3d 34 30  30 2b 28 78 25 2a 34 30  |=0:x%=400+(x%*40|
00002170  29 3a 79 25 3d 31 34 38  2b 28 79 25 2a 34 30 29  |):y%=148+(y%*40)|
00002180  3a f2 73 70 72 69 74 65  28 78 25 2c 79 25 2c 30  |:.sprite(x%,y%,0|
00002190  29 3a f2 73 70 72 69 74  65 28 78 25 2c 79 25 2d  |):.sprite(x%,y%-|
000021a0  38 2c 62 6c 25 29 3a e1  0d 09 24 5e 63 6f 64 65  |8,bl%):...$^code|
000021b0  25 3f a4 70 6f 73 28 78  25 2c 79 25 29 3d 34 30  |%?.pos(x%,y%)=40|
000021c0  3a 78 25 3d 34 30 30 2b  28 78 25 2a 34 30 29 3a  |:x%=400+(x%*40):|
000021d0  79 25 3d 31 34 38 2b 28  79 25 2a 34 30 29 3a f2  |y%=148+(y%*40):.|
000021e0  73 70 72 69 74 65 28 78  25 2c 79 25 2c 34 30 29  |sprite(x%,y%,40)|
000021f0  3a f2 73 70 72 69 74 65  28 78 25 2c 79 25 2d 38  |:.sprite(x%,y%-8|
00002200  2c 31 33 29 3a e1 0d 09  2e 41 dd a4 67 72 61 76  |,13):....A..grav|
00002210  69 74 79 69 73 64 75 65  28 78 25 2c 79 25 29 3a  |ityisdue(x%,y%):|
00002220  e7 63 6f 64 65 25 3f a4  70 6f 73 28 78 25 2c 79  |.code%?.pos(x%,y|
00002230  25 2d 31 29 3d 30 80 a4  62 6c 6f 63 6b 28 78 25  |%-1)=0..block(x%|
00002240  2c 79 25 29 3a 3d b9 0d  09 38 32 e7 63 6f 64 65  |,y%):=...82.code|
00002250  25 3f a4 70 6f 73 28 78  25 2c 79 25 29 3d 31 33  |%?.pos(x%,y%)=13|
00002260  80 63 6f 64 65 25 3f a4  70 6f 73 28 78 25 2c 79  |.code%?.pos(x%,y|
00002270  25 2d 31 29 3d 34 30 3d  b9 0d 09 42 06 3d a3 0d  |%-1)=40=...B.=..|
00002280  09 4c 05 3a 0d 09 56 15  f4 20 54 68 65 20 6d 61  |.L.:..V.. The ma|
00002290  74 63 68 20 6d 61 6b 65  72 0d 09 60 3b dd a4 6d  |tch maker..`;..m|
000022a0  61 74 63 68 28 78 25 2c  79 25 29 3a 62 6c 25 3d  |atch(x%,y%):bl%=|
000022b0  63 6f 64 65 25 3f a4 70  6f 73 28 78 25 2c 79 25  |code%?.pos(x%,y%|
000022c0  29 80 36 33 3a e7 62 6c  25 3c 33 84 62 6c 25 3e  |).63:.bl%<3.bl%>|
000022d0  31 32 3d a3 0d 09 6a 1d  e7 ac 28 a4 62 61 20 84  |12=...j...(.ba .|
000022e0  a4 62 62 20 84 a4 62 6c  20 84 a4 62 72 29 3a 3d  |.bb ..bl ..br):=|
000022f0  a3 0d 09 74 50 63 6f 64  65 25 3f a4 70 6f 73 28  |...tPcode%?.pos(|
00002300  78 25 2c 79 25 29 3d 30  3a f2 73 70 72 69 74 65  |x%,y%)=0:.sprite|
00002310  28 34 30 30 2b 28 78 25  2a 34 30 29 2c 31 34 38  |(400+(x%*40),148|
00002320  2b 28 79 25 2a 34 30 29  2c 30 29 3a 62 6c 6f 63  |+(y%*40),0):bloc|
00002330  6b 25 3d 62 6c 6f 63 6b  25 2d 31 3a f2 62 65 6c  |k%=block%-1:.bel|
00002340  6c 0d 09 7e 2d e7 a4 62  61 20 f2 6d 61 3a 62 6c  |l..~-..ba .ma:bl|
00002350  6f 63 6b 25 3d 62 6c 6f  63 6b 25 2d 31 3a 73 63  |ock%=block%-1:sc|
00002360  6f 72 65 25 3d 73 63 6f  72 65 25 2b 31 30 0d 09  |ore%=score%+10..|
00002370  88 2d e7 a4 62 62 20 f2  6d 62 3a 62 6c 6f 63 6b  |.-..bb .mb:block|
00002380  25 3d 62 6c 6f 63 6b 25  2d 31 3a 73 63 6f 72 65  |%=block%-1:score|
00002390  25 3d 73 63 6f 72 65 25  2b 31 30 0d 09 92 2d e7  |%=score%+10...-.|
000023a0  a4 62 6c 20 f2 6d 6c 3a  62 6c 6f 63 6b 25 3d 62  |.bl .ml:block%=b|
000023b0  6c 6f 63 6b 25 2d 31 3a  73 63 6f 72 65 25 3d 73  |lock%-1:score%=s|
000023c0  63 6f 72 65 25 2b 31 30  0d 09 9c 2d e7 a4 62 72  |core%+10...-..br|
000023d0  20 f2 6d 72 3a 62 6c 6f  63 6b 25 3d 62 6c 6f 63  | .mr:block%=bloc|
000023e0  6b 25 2d 31 3a 73 63 6f  72 65 25 3d 73 63 6f 72  |k%-1:score%=scor|
000023f0  65 25 2b 31 30 0d 09 a6  1b e7 61 25 3e 30 f2 61  |e%+10.....a%>0.a|
00002400  6e 61 67 72 61 6d 5f 6e  65 77 6c 65 74 74 65 72  |nagram_newletter|
00002410  0d 09 b0 26 f2 62 6c 6f  63 6b 73 61 62 6f 76 65  |...&.blocksabove|
00002420  28 78 25 2c 79 25 29 3a  f2 6c 66 74 3a f2 73 63  |(x%,y%):.lft:.sc|
00002430  6f 72 65 3a 3d b9 0d 09  ba 26 dd a4 62 61 3a e7  |ore:=....&..ba:.|
00002440  a4 6e 6f 6d 6f 76 65 6d  61 74 63 68 28 78 25 2c  |.nomovematch(x%,|
00002450  79 25 2b 31 29 3a 3d b9  20 8b 3d a3 0d 09 c4 26  |y%+1):=. .=....&|
00002460  dd a4 62 62 3a e7 a4 6e  6f 6d 6f 76 65 6d 61 74  |..bb:..nomovemat|
00002470  63 68 28 78 25 2c 79 25  2d 31 29 3a 3d b9 20 8b  |ch(x%,y%-1):=. .|
00002480  3d a3 0d 09 ce 26 dd a4  62 6c 3a e7 a4 6e 6f 6d  |=....&..bl:..nom|
00002490  6f 76 65 6d 61 74 63 68  28 78 25 2d 31 2c 79 25  |ovematch(x%-1,y%|
000024a0  29 3a 3d b9 20 8b 3d a3  0d 09 d8 26 dd a4 62 72  |):=. .=....&..br|
000024b0  3a e7 a4 6e 6f 6d 6f 76  65 6d 61 74 63 68 28 78  |:..nomovematch(x|
000024c0  25 2b 31 2c 79 25 29 3a  3d b9 20 8b 3d a3 0d 09  |%+1,y%):=. .=...|
000024d0  e2 1b dd f2 6d 61 3a f2  62 79 65 62 79 65 28 78  |....ma:.byebye(x|
000024e0  25 2c 79 25 2b 31 29 3a  e1 0d 09 ec 1b dd f2 6d  |%,y%+1):.......m|
000024f0  62 3a f2 62 79 65 62 79  65 28 78 25 2c 79 25 2d  |b:.byebye(x%,y%-|
00002500  31 29 3a e1 0d 09 f6 1b  dd f2 6d 6c 3a f2 62 79  |1):.......ml:.by|
00002510  65 62 79 65 28 78 25 2d  31 2c 79 25 29 3a e1 0d  |ebye(x%-1,y%):..|
00002520  0a 00 1b dd f2 6d 72 3a  f2 62 79 65 62 79 65 28  |.....mr:.byebye(|
00002530  78 25 2b 31 2c 79 25 29  3a e1 0d 0a 0a 52 dd a4  |x%+1,y%):....R..|
00002540  6e 6f 6d 6f 76 65 6d 61  74 63 68 28 78 25 2c 79  |nomovematch(x%,y|
00002550  25 29 3a e7 28 63 6f 64  65 25 3f a4 70 6f 73 28  |%):.(code%?.pos(|
00002560  78 25 2c 79 25 29 80 36  33 29 3d 62 6c 25 80 63  |x%,y%).63)=bl%.c|
00002570  6f 64 65 25 3f 28 a4 70  6f 73 28 78 25 2c 79 25  |ode%?(.pos(x%,y%|
00002580  29 2b 31 29 3d 30 3d b9  20 8b 3d a3 0d 0a 14 ba  |)+1)=0=. .=.....|
00002590  dd f2 62 79 65 62 79 65  28 78 25 2c 79 25 29 3a  |..byebye(x%,y%):|
000025a0  63 6f 64 65 25 3f a4 70  6f 73 28 78 25 2c 79 25  |code%?.pos(x%,y%|
000025b0  29 3d 30 3a 63 6f 64 65  25 3f 28 a4 70 6f 73 28  |)=0:code%?(.pos(|
000025c0  78 25 2c 79 25 29 2b 31  29 3d 30 3a 63 6f 64 65  |x%,y%)+1)=0:code|
000025d0  25 3f 28 a4 70 6f 73 28  78 25 2c 79 25 29 2b 32  |%?(.pos(x%,y%)+2|
000025e0  29 3d 30 3a f2 73 70 72  69 74 65 28 34 30 30 2b  |)=0:.sprite(400+|
000025f0  28 78 25 2a 34 30 29 2c  31 34 38 2b 28 79 25 2a  |(x%*40),148+(y%*|
00002600  34 30 29 2c 30 29 3a f2  62 6c 6f 63 6b 73 61 62  |40),0):.blocksab|
00002610  6f 76 65 28 78 25 2c 79  25 29 3a e7 63 6f 64 65  |ove(x%,y%):.code|
00002620  25 3f a4 70 6f 73 28 78  25 2c 79 25 2d 31 29 3d  |%?.pos(x%,y%-1)=|
00002630  34 30 f2 77 61 74 65 72  5f 73 69 6e 6b 28 78 25  |40.water_sink(x%|
00002640  2c 79 25 2d 31 29 0d 0a  1e 05 e1 0d 0a 28 05 3a  |,y%-1).......(.:|
00002650  0d 0a 32 2e f4 20 54 68  6f 73 65 20 63 6c 61 73  |..2.. Those clas|
00002660  73 20 69 6e 20 61 20 67  6c 61 73 73 20 73 70 65  |s in a glass spe|
00002670  63 69 61 6c 20 62 6c 6f  63 6b 73 2e 2e 2e 0d 0a  |cial blocks.....|
00002680  3c 05 3a 0d 0a 46 0e f4  20 42 6f 6f 20 68 69 73  |<.:..F.. Boo his|
00002690  73 0d 0a 50 14 dd a4 6e  61 73 74 69 65 73 28 78  |s..P...nasties(x|
000026a0  25 2c 79 25 29 0d 0a 5a  1a 62 25 3d 63 6f 64 65  |%,y%)..Z.b%=code|
000026b0  25 3f a4 70 6f 73 28 78  25 2c 79 25 2d 31 29 0d  |%?.pos(x%,y%-1).|
000026c0  0a 64 14 e7 62 25 3d 34  39 f2 73 70 69 6b 65 73  |.d..b%=49.spikes|
000026d0  3a 3d b9 0d 0a 6e 17 e7  62 25 3d 35 32 f2 62 6c  |:=...n..b%=52.bl|
000026e0  61 63 6b 68 6f 6c 65 3a  3d b9 0d 0a 78 06 3d a3  |ackhole:=...x.=.|
000026f0  0d 0a 82 05 3a 0d 0a 8c  62 dd f2 73 70 69 6b 65  |....:...b..spike|
00002700  73 3a 63 6f 64 65 25 3f  a4 70 6f 73 28 78 25 2c  |s:code%?.pos(x%,|
00002710  79 25 29 3d 30 3a f2 73  70 72 69 74 65 28 34 30  |y%)=0:.sprite(40|
00002720  30 2b 28 78 25 2a 34 30  29 2c 31 34 38 2b 28 79  |0+(x%*40),148+(y|
00002730  25 2a 34 30 29 2c 30 29  3a f2 6c 61 75 67 68 3a  |%*40),0):.laugh:|
00002740  f2 62 6c 6f 63 6b 73 61  62 6f 76 65 28 78 25 2c  |.blocksabove(x%,|
00002750  79 25 2b 31 29 3a e1 0d  0a 96 05 3a 0d 0a a0 69  |y%+1):.....:...i|
00002760  dd f2 62 6c 61 63 6b 68  6f 6c 65 3a 63 6f 64 65  |..blackhole:code|
00002770  25 3f a4 70 6f 73 28 78  25 2c 79 25 29 3d 30 3a  |%?.pos(x%,y%)=0:|
00002780  f2 73 70 72 69 74 65 28  34 30 30 2b 28 78 25 2a  |.sprite(400+(x%*|
00002790  34 30 29 2c 31 34 38 2b  28 79 25 2a 34 30 29 2c  |40),148+(y%*40),|
000027a0  30 29 3a f2 62 6c 61 63  6b 70 69 6e 67 3a f2 62  |0):.blackping:.b|
000027b0  6c 6f 63 6b 73 61 62 6f  76 65 28 78 25 2c 79 25  |locksabove(x%,y%|
000027c0  2b 31 29 3a e1 0d 0a aa  05 3a 0d 0a b4 12 dd a4  |+1):.....:......|
000027d0  63 72 75 73 68 65 72 28  73 79 25 29 0d 0a be 39  |crusher(sy%)...9|
000027e0  ef 32 34 2c 34 30 30 2b  28 63 78 25 2a 34 30 29  |.24,400+(cx%*40)|
000027f0  3b 30 3b 34 33 36 2b 28  63 78 25 2a 34 30 29 3b  |;0;436+(cx%*40);|
00002800  31 38 34 2b 28 63 79 25  2a 34 30 29 3b 3a 4d 3d  |184+(cy%*40);:M=|
00002810  63 79 25 2b 31 0d 0a c8  35 f5 3a 4d 3d 4d 2d 31  |cy%+1...5.:M=M-1|
00002820  3a 62 25 3d 63 6f 64 65  25 3f a4 70 6f 73 28 63  |:b%=code%?.pos(c|
00002830  78 25 2c 4d 29 3a e7 62  25 3d 30 f2 63 72 75 73  |x%,M):.b%=0.crus|
00002840  68 65 72 64 6f 77 6e 28  4d 29 0d 0a d2 23 fd 62  |herdown(M)...#.b|
00002850  25 3c 3e 30 3a e7 62 25  3c 33 84 62 25 3e 33 39  |%<>0:.b%<3.b%>39|
00002860  f2 63 72 75 73 68 65 72  75 70 3a 3d a3 0d 0a dc  |.crusherup:=....|
00002870  13 f2 63 72 75 73 68 65  72 64 6f 77 6e 28 4d 29  |..crusherdown(M)|
00002880  0d 0a e6 3d 63 6f 64 65  25 3f a4 70 6f 73 28 63  |...=code%?.pos(c|
00002890  78 25 2c 4d 29 3d 30 3a  f2 6c 61 75 67 68 3a 4d  |x%,M)=0:.laugh:M|
000028a0  3d 4d 2d 31 3a f2 63 72  75 73 68 65 72 75 70 3a  |=M-1:.crusherup:|
000028b0  e7 4d 3d 73 79 25 3d b9  20 8b 20 3d a3 0d 0a f0  |.M=sy%=. . =....|
000028c0  05 3a 0d 0a fa 5e dd f2  63 72 75 73 68 65 72 64  |.:...^..crusherd|
000028d0  6f 77 6e 28 79 25 29 3a  79 25 3d 31 38 38 2b 28  |own(y%):y%=188+(|
000028e0  79 25 2a 34 30 29 3a e3  4e 3d 30 b8 32 30 3a f2  |y%*40):.N=0.20:.|
000028f0  73 70 72 69 74 65 28 34  30 30 2b 28 63 78 25 2a  |sprite(400+(cx%*|
00002900  34 30 29 2c 79 25 2d 28  4e 2a 32 29 2c 35 31 29  |40),y%-(N*2),51)|
00002910  3a 54 25 3d 91 3a f5 fd  91 3e 54 25 3a ed 3a e1  |:T%=.:...>T%:.:.|
00002920  0d 0b 04 6c dd f2 63 72  75 73 68 65 72 75 70 3a  |...l..crusherup:|
00002930  ea 79 25 3a 79 25 3d 31  38 38 2b 28 63 79 25 2a  |.y%:y%=188+(cy%*|
00002940  34 30 29 3a e3 4e 3d 28  63 79 25 2d 4d 29 2a 32  |40):.N=(cy%-M)*2|
00002950  30 b8 30 88 2d 31 3a f2  73 70 72 69 74 65 28 34  |0.0.-1:.sprite(4|
00002960  30 30 2b 28 63 78 25 2a  34 30 29 2c 79 25 2d 28  |00+(cx%*40),y%-(|
00002970  4e 2a 32 29 2c 35 31 29  3a 54 25 3d 91 3a f5 fd  |N*2),51):T%=.:..|
00002980  91 3e 54 25 3a ed 3a ef  32 36 3a e1 0d 0b 0e 05  |.>T%:.:.26:.....|
00002990  3a 0d 0b 18 13 f4 20 41  63 69 64 20 64 72 69 70  |:..... Acid drip|
000029a0  73 2e 2e 2e 0d 0b 22 17  dd f2 75 70 64 61 74 65  |s....."...update|
000029b0  61 63 69 64 28 78 25 2c  79 25 29 0d 0b 2c 2e e7  |acid(x%,y%)..,..|
000029c0  a4 62 6c 6f 63 6b 28 78  25 2c 79 25 2d 31 29 3a  |.block(x%,y%-1):|
000029d0  f2 61 63 69 64 5f 64 69  73 73 6f 6c 76 65 3a f2  |.acid_dissolve:.|
000029e0  61 63 69 64 5f 75 70 3a  e1 0d 0b 36 34 e7 a4 67  |acid_up:...64..g|
000029f0  72 61 76 69 74 79 69 73  64 75 65 28 78 25 2c 79  |ravityisdue(x%,y|
00002a00  25 29 3a f2 67 72 61 76  69 74 79 28 78 25 2c 79  |%):.gravity(x%,y|
00002a10  25 29 20 8b 20 f2 61 63  69 64 5f 75 70 0d 0b 40  |%) . .acid_up..@|
00002a20  05 e1 0d 0b 4a 05 3a 0d  0b 54 58 dd f2 61 63 69  |....J.:..TX..aci|
00002a30  64 5f 64 69 73 73 6f 6c  76 65 3a 63 6f 64 65 25  |d_dissolve:code%|
00002a40  3f a4 70 6f 73 28 78 25  2c 79 25 2d 31 29 3d 30  |?.pos(x%,y%-1)=0|
00002a50  3a f2 73 70 72 69 74 65  28 34 30 30 2b 28 78 25  |:.sprite(400+(x%|
00002a60  2a 34 30 29 2c 31 30 38  2b 28 79 25 2a 34 30 29  |*40),108+(y%*40)|
00002a70  2c 30 29 3a f2 61 63 69  64 68 69 73 73 3a e1 0d  |,0):.acidhiss:..|
00002a80  0b 5e 05 3a 0d 0b 68 c0  dd f2 61 63 69 64 5f 75  |.^.:..h...acid_u|
00002a90  70 3a 4e 3d 79 25 2b 31  3a 63 6f 64 65 25 3f a4  |p:N=y%+1:code%?.|
00002aa0  70 6f 73 28 78 25 2c 79  25 29 3d 30 3a f2 73 70  |pos(x%,y%)=0:.sp|
00002ab0  72 69 74 65 28 34 30 30  2b 28 78 25 2a 34 30 29  |rite(400+(x%*40)|
00002ac0  2c 31 34 38 2b 28 79 25  2a 34 30 29 2c 30 29 3a  |,148+(y%*40),0):|
00002ad0  4d 3d a3 3a f5 4e 3d 4e  2b 31 3a e7 63 6f 64 65  |M=.:.N=N+1:.code|
00002ae0  25 3f a4 70 6f 73 28 78  25 2c 4e 29 3c 3e 30 4d  |%?.pos(x%,N)<>0M|
00002af0  3d b9 3a e7 63 6f 64 65  25 3f a4 70 6f 73 28 78  |=.:.code%?.pos(x|
00002b00  25 2c 4e 2d 31 29 3d 30  63 6f 64 65 25 3f a4 70  |%,N-1)=0code%?.p|
00002b10  6f 73 28 78 25 2c 4e 2d  31 29 3d 35 30 3a e7 a4  |os(x%,N-1)=50:..|
00002b20  67 72 61 76 69 74 79 69  73 64 75 65 28 78 25 2c  |gravityisdue(x%,|
00002b30  4e 2d 31 29 f2 67 72 61  76 69 74 79 28 78 25 2c  |N-1).gravity(x%,|
00002b40  4e 2d 31 29 0d 0b 72 0e  fd 4d 20 84 4e 3d 31 39  |N-1)..r..M .N=19|
00002b50  3a e1 0d 0b 7c 05 3a 0d  0b 86 0f f4 20 57 65 65  |:...|.:..... Wee|
00002b60  20 70 6c 6f 6e 6b 0d 0b  90 22 dd a4 64 6f 6f 62  | plonk..."..doob|
00002b70  65 72 69 65 73 28 73 78  25 2c 73 79 25 2c 78 25  |eries(sx%,sy%,x%|
00002b80  2c 79 25 29 3a ea 62 25  0d 0b 9a 1a 62 25 3d 63  |,y%):.b%....b%=c|
00002b90  6f 64 65 25 3f a4 70 6f  73 28 73 78 25 2c 73 79  |ode%?.pos(sx%,sy|
00002ba0  25 29 0d 0b a4 1b e7 62  25 3d 34 33 f2 74 68 72  |%).....b%=43.thr|
00002bb0  6f 77 65 72 5f 72 69 67  68 74 3a 3d b9 0d 0b ae  |ower_right:=....|
00002bc0  1a e7 62 25 3d 34 34 f2  74 68 72 6f 77 65 72 5f  |..b%=44.thrower_|
00002bd0  6c 65 66 74 3a 3d b9 0d  0b b8 12 e7 62 25 3d 34  |left:=......b%=4|
00002be0  35 f2 77 61 72 70 3a 3d  b9 0d 0b c2 1a e7 62 25  |5.warp:=......b%|
00002bf0  3d 34 36 f2 72 69 67 68  74 28 78 25 2c 79 25 29  |=46.right(x%,y%)|
00002c00  3a 3d b9 0d 0b cc 19 e7  62 25 3d 34 37 f2 6c 65  |:=......b%=47.le|
00002c10  66 74 28 78 25 2c 79 25  29 3a 3d b9 0d 0b d6 2d  |ft(x%,y%):=....-|
00002c20  e7 62 25 3d 34 38 f2 74  72 61 6e 73 6d 61 74 28  |.b%=48.transmat(|
00002c30  73 78 25 2c 73 79 25 2c  78 25 2d 73 78 25 2c 79  |sx%,sy%,x%-sx%,y|
00002c40  25 2d 73 79 25 29 3a 3d  b9 0d 0b e0 06 3d a3 0d  |%-sy%):=.....=..|
00002c50  0b ea 05 3a 0d 0b f4 0e  f4 20 54 68 72 6f 77 65  |...:..... Throwe|
00002c60  72 73 0d 0b fe 3f dd f2  74 68 72 6f 77 65 72 5f  |rs...?..thrower_|
00002c70  72 69 67 68 74 3a e7 63  6f 64 65 25 3f a4 70 6f  |right:.code%?.po|
00002c80  73 28 73 78 25 2b 31 2c  73 79 25 2b 31 29 3c 3e  |s(sx%+1,sy%+1)<>|
00002c90  30 f2 74 68 72 6f 77 65  72 5f 6d 61 74 63 68 3a  |0.thrower_match:|
00002ca0  e1 0d 0c 08 a4 62 25 3d  63 6f 64 65 25 3f a4 70  |.....b%=code%?.p|
00002cb0  6f 73 28 78 25 2c 79 25  29 3a 63 6f 64 65 25 3f  |os(x%,y%):code%?|
00002cc0  a4 70 6f 73 28 78 25 2c  79 25 29 3d 30 3a f2 73  |.pos(x%,y%)=0:.s|
00002cd0  70 72 69 74 65 28 34 30  30 2b 28 34 30 2a 78 25  |prite(400+(40*x%|
00002ce0  29 2c 31 34 38 2b 28 34  30 2a 79 25 29 2c 30 29  |),148+(40*y%),0)|
00002cf0  3a f2 62 6c 6f 63 6b 73  61 62 6f 76 65 28 78 25  |:.blocksabove(x%|
00002d00  2c 79 25 29 3a 63 6f 64  65 25 3f a4 70 6f 73 28  |,y%):code%?.pos(|
00002d10  73 78 25 2b 31 2c 73 79  25 2b 31 29 3d 62 25 3a  |sx%+1,sy%+1)=b%:|
00002d20  f2 73 70 72 69 74 65 28  34 34 30 2b 28 34 30 2a  |.sprite(440+(40*|
00002d30  73 78 25 29 2c 31 38 38  2b 28 34 30 2a 73 79 25  |sx%),188+(40*sy%|
00002d40  29 2c 62 25 29 0d 0c 12  ef 58 25 3d a3 3a 4d 3d  |),b%)....X%=.:M=|
00002d50  63 6f 64 65 25 3f 28 a4  70 6f 73 28 73 78 25 2c  |code%?(.pos(sx%,|
00002d60  73 79 25 29 2b 31 29 2d  31 3a 4e 3d 31 3a f5 e7  |sy%)+1)-1:N=1:..|
00002d70  63 6f 64 65 25 3f a4 70  6f 73 28 73 78 25 2b 4e  |code%?.pos(sx%+N|
00002d80  2b 31 2c 73 79 25 2b 4e  2b 31 29 3d 30 3a 4e 3d  |+1,sy%+N+1)=0:N=|
00002d90  4e 2b 31 3a 63 6f 64 65  25 3f a4 70 6f 73 28 73  |N+1:code%?.pos(s|
00002da0  78 25 2b 4e 2d 31 2c 73  79 25 2b 4e 2d 31 29 3d  |x%+N-1,sy%+N-1)=|
00002db0  30 3a f2 73 70 72 69 74  65 28 33 36 30 2b 28 34  |0:.sprite(360+(4|
00002dc0  30 2a 28 73 78 25 2b 4e  29 29 2c 31 30 38 2b 28  |0*(sx%+N)),108+(|
00002dd0  34 30 2a 28 73 79 25 2b  4e 29 29 2c 30 29 3a 63  |40*(sy%+N)),0):c|
00002de0  6f 64 65 25 3f a4 70 6f  73 28 73 78 25 2b 4e 2c  |ode%?.pos(sx%+N,|
00002df0  73 79 25 2b 4e 29 3d 62  25 3a f2 73 70 72 69 74  |sy%+N)=b%:.sprit|
00002e00  65 28 34 30 30 2b 28 34  30 2a 28 73 78 25 2b 4e  |e(400+(40*(sx%+N|
00002e10  29 29 2c 31 34 38 2b 28  34 30 2a 28 73 79 25 2b  |)),148+(40*(sy%+|
00002e20  4e 29 29 2c 62 25 29 3a  4d 3d 4d 2d 31 20 8b 20  |N)),b%):M=M-1 . |
00002e30  58 25 3d b9 0d 0c 1c 0c  e7 4d 3d 30 58 25 3d b9  |X%=......M=0X%=.|
00002e40  0d 0c 26 07 fd 58 25 0d  0c 30 3d 62 6c 25 3d 62  |..&..X%..0=bl%=b|
00002e50  25 3a e7 a4 67 72 61 76  69 74 79 69 73 64 75 65  |%:..gravityisdue|
00002e60  28 73 78 25 2b 4e 2c 73  79 25 2b 4e 29 f2 67 72  |(sx%+N,sy%+N).gr|
00002e70  61 76 69 74 79 28 73 78  25 2b 4e 2c 73 79 25 2b  |avity(sx%+N,sy%+|
00002e80  4e 29 3a e1 0d 0c 3a 2c  e7 a4 64 6f 6f 62 65 72  |N):...:,..doober|
00002e90  69 65 73 28 73 78 25 2b  4e 2c 73 79 25 2b 4e 2d  |ies(sx%+N,sy%+N-|
00002ea0  31 2c 73 78 25 2b 4e 2c  73 79 25 2b 4e 29 3a e1  |1,sx%+N,sy%+N):.|
00002eb0  0d 0c 44 1c e7 a4 6e 61  73 74 69 65 73 28 73 78  |..D...nasties(sx|
00002ec0  25 2b 4e 2c 73 79 25 2b  4e 29 3a e1 0d 0c 4e 18  |%+N,sy%+N):...N.|
00002ed0  e7 a4 6d 61 74 63 68 28  73 78 25 2b 4e 2c 73 79  |..match(sx%+N,sy|
00002ee0  25 2b 4e 29 0d 0c 58 05  e1 0d 0c 62 05 3a 0d 0c  |%+N)..X....b.:..|
00002ef0  6c 3e dd f2 74 68 72 6f  77 65 72 5f 6c 65 66 74  |l>..thrower_left|
00002f00  3a e7 63 6f 64 65 25 3f  a4 70 6f 73 28 73 78 25  |:.code%?.pos(sx%|
00002f10  2d 31 2c 73 79 25 2b 31  29 3c 3e 30 f2 74 68 72  |-1,sy%+1)<>0.thr|
00002f20  6f 77 65 72 5f 6d 61 74  63 68 3a e1 0d 0c 76 a4  |ower_match:...v.|
00002f30  62 25 3d 63 6f 64 65 25  3f a4 70 6f 73 28 78 25  |b%=code%?.pos(x%|
00002f40  2c 79 25 29 3a 63 6f 64  65 25 3f a4 70 6f 73 28  |,y%):code%?.pos(|
00002f50  78 25 2c 79 25 29 3d 30  3a f2 73 70 72 69 74 65  |x%,y%)=0:.sprite|
00002f60  28 34 30 30 2b 28 34 30  2a 78 25 29 2c 31 34 38  |(400+(40*x%),148|
00002f70  2b 28 34 30 2a 79 25 29  2c 30 29 3a f2 62 6c 6f  |+(40*y%),0):.blo|
00002f80  63 6b 73 61 62 6f 76 65  28 78 25 2c 79 25 29 3a  |cksabove(x%,y%):|
00002f90  63 6f 64 65 25 3f a4 70  6f 73 28 73 78 25 2d 31  |code%?.pos(sx%-1|
00002fa0  2c 73 79 25 2b 31 29 3d  62 25 3a f2 73 70 72 69  |,sy%+1)=b%:.spri|
00002fb0  74 65 28 33 36 30 2b 28  34 30 2a 73 78 25 29 2c  |te(360+(40*sx%),|
00002fc0  31 38 38 2b 28 34 30 2a  73 79 25 29 2c 62 25 29  |188+(40*sy%),b%)|
00002fd0  0d 0c 80 ef 58 25 3d a3  3a 4d 3d 63 6f 64 65 25  |....X%=.:M=code%|
00002fe0  3f 28 a4 70 6f 73 28 73  78 25 2c 73 79 25 29 2b  |?(.pos(sx%,sy%)+|
00002ff0  31 29 2d 31 3a 4e 3d 31  3a f5 e7 63 6f 64 65 25  |1)-1:N=1:..code%|
00003000  3f a4 70 6f 73 28 73 78  25 2d 4e 2d 31 2c 73 79  |?.pos(sx%-N-1,sy|
00003010  25 2b 4e 2b 31 29 3d 30  3a 4e 3d 4e 2b 31 3a 63  |%+N+1)=0:N=N+1:c|
00003020  6f 64 65 25 3f a4 70 6f  73 28 73 78 25 2d 4e 2b  |ode%?.pos(sx%-N+|
00003030  31 2c 73 79 25 2b 4e 2d  31 29 3d 30 3a f2 73 70  |1,sy%+N-1)=0:.sp|
00003040  72 69 74 65 28 34 34 30  2b 28 34 30 2a 28 73 78  |rite(440+(40*(sx|
00003050  25 2d 4e 29 29 2c 31 30  38 2b 28 34 30 2a 28 73  |%-N)),108+(40*(s|
00003060  79 25 2b 4e 29 29 2c 30  29 3a 63 6f 64 65 25 3f  |y%+N)),0):code%?|
00003070  a4 70 6f 73 28 73 78 25  2d 4e 2c 73 79 25 2b 4e  |.pos(sx%-N,sy%+N|
00003080  29 3d 62 25 3a f2 73 70  72 69 74 65 28 34 30 30  |)=b%:.sprite(400|
00003090  2b 28 34 30 2a 28 73 78  25 2d 4e 29 29 2c 31 34  |+(40*(sx%-N)),14|
000030a0  38 2b 28 34 30 2a 28 73  79 25 2b 4e 29 29 2c 62  |8+(40*(sy%+N)),b|
000030b0  25 29 3a 4d 3d 4d 2d 31  20 8b 20 58 25 3d b9 0d  |%):M=M-1 . X%=..|
000030c0  0c 8a 0c e7 4d 3d 30 58  25 3d b9 0d 0c 94 07 fd  |....M=0X%=......|
000030d0  58 25 0d 0c 9e 3d 62 6c  25 3d 62 25 3a e7 a4 67  |X%...=bl%=b%:..g|
000030e0  72 61 76 69 74 79 69 73  64 75 65 28 73 78 25 2d  |ravityisdue(sx%-|
000030f0  4e 2c 73 79 25 2b 4e 29  f2 67 72 61 76 69 74 79  |N,sy%+N).gravity|
00003100  28 73 78 25 2d 4e 2c 73  79 25 2b 4e 29 3a e1 0d  |(sx%-N,sy%+N):..|
00003110  0c a8 2c e7 a4 64 6f 6f  62 65 72 69 65 73 28 73  |..,..dooberies(s|
00003120  78 25 2d 4e 2c 73 79 25  2b 4e 2d 31 2c 73 78 25  |x%-N,sy%+N-1,sx%|
00003130  2d 4e 2c 73 79 25 2b 4e  29 3a e1 0d 0c b2 1c e7  |-N,sy%+N):......|
00003140  a4 6e 61 73 74 69 65 73  28 73 78 25 2d 4e 2c 73  |.nasties(sx%-N,s|
00003150  79 25 2b 4e 29 3a e1 0d  0c bc 18 e7 a4 6d 61 74  |y%+N):.......mat|
00003160  63 68 28 73 78 25 2d 4e  2c 73 79 25 2b 4e 29 0d  |ch(sx%-N,sy%+N).|
00003170  0c c6 05 e1 0d 0c d0 05  3a 0d 0c da 13 dd f2 74  |........:......t|
00003180  68 72 6f 77 65 72 5f 6d  61 74 63 68 0d 0c e4 12  |hrower_match....|
00003190  e7 a4 6d 61 74 63 68 28  78 25 2c 79 25 29 0d 0c  |..match(x%,y%)..|
000031a0  ee 05 e1 0d 0c f8 05 3a  0d 0d 02 19 f4 20 49 6e  |.......:..... In|
000031b0  74 6f 20 61 20 77 61 72  70 2c 20 6c 6f 76 69 65  |to a warp, lovie|
000031c0  73 0d 0d 0c 63 dd f2 77  61 72 70 3a 58 25 3d 63  |s...c..warp:X%=c|
000031d0  6f 64 65 25 3f 28 a4 70  6f 73 28 73 78 25 2c 73  |ode%?(.pos(sx%,s|
000031e0  79 25 29 2b 31 29 3a 59  25 3d 63 6f 64 65 25 3f  |y%)+1):Y%=code%?|
000031f0  28 a4 70 6f 73 28 73 78  25 2c 73 79 25 29 2b 32  |(.pos(sx%,sy%)+2|
00003200  29 3a e7 63 6f 64 65 25  3f a4 70 6f 73 28 58 25  |):.code%?.pos(X%|
00003210  2c 59 25 29 3c 3e 30 f2  77 61 72 70 5f 6d 61 74  |,Y%)<>0.warp_mat|
00003220  63 68 3a e1 0d 0d 16 9c  62 25 3d 63 6f 64 65 25  |ch:.....b%=code%|
00003230  3f a4 70 6f 73 28 78 25  2c 79 25 29 3a 63 6f 64  |?.pos(x%,y%):cod|
00003240  65 25 3f a4 70 6f 73 28  78 25 2c 79 25 29 3d 30  |e%?.pos(x%,y%)=0|
00003250  3a f2 73 70 72 69 74 65  28 34 30 30 2b 28 34 30  |:.sprite(400+(40|
00003260  2a 78 25 29 2c 31 34 38  2b 28 34 30 2a 79 25 29  |*x%),148+(40*y%)|
00003270  2c 30 29 3a f2 62 6c 6f  63 6b 73 61 62 6f 76 65  |,0):.blocksabove|
00003280  28 78 25 2c 79 25 29 3a  63 6f 64 65 25 3f a4 70  |(x%,y%):code%?.p|
00003290  6f 73 28 58 25 2c 59 25  29 3d 62 25 3a f2 73 70  |os(X%,Y%)=b%:.sp|
000032a0  72 69 74 65 28 34 30 30  2b 28 34 30 2a 58 25 29  |rite(400+(40*X%)|
000032b0  2c 31 34 38 2b 28 34 30  2a 59 25 29 2c 62 25 29  |,148+(40*Y%),b%)|
000032c0  0d 0d 20 31 62 6c 25 3d  62 25 3a e7 a4 67 72 61  |.. 1bl%=b%:..gra|
000032d0  76 69 74 79 69 73 64 75  65 28 58 25 2c 59 25 29  |vityisdue(X%,Y%)|
000032e0  f2 67 72 61 76 69 74 79  28 58 25 2c 59 25 29 3a  |.gravity(X%,Y%):|
000032f0  e1 0d 0d 2a 20 e7 a4 64  6f 6f 62 65 72 69 65 73  |...* ..dooberies|
00003300  28 58 25 2c 59 25 2d 31  2c 58 25 2c 59 25 29 3a  |(X%,Y%-1,X%,Y%):|
00003310  e1 0d 0d 34 20 e7 a4 6e  61 73 74 69 65 73 28 73  |...4 ..nasties(s|
00003320  78 25 2b 4e 2d 31 2c 73  79 25 2b 4e 2d 31 29 3a  |x%+N-1,sy%+N-1):|
00003330  e1 0d 0d 3e 14 e7 a4 6d  61 74 63 68 28 58 25 2c  |...>...match(X%,|
00003340  59 25 29 3a e1 0d 0d 48  05 e1 0d 0d 52 05 3a 0d  |Y%):...H....R.:.|
00003350  0d 5c 10 dd f2 77 61 72  70 5f 6d 61 74 63 68 0d  |.\...warp_match.|
00003360  0d 66 12 e7 a4 6d 61 74  63 68 28 78 25 2c 79 25  |.f...match(x%,y%|
00003370  29 0d 0d 70 05 e1 0d 0d  7a 05 3a 0d 0d 84 1d f4  |)..p....z.:.....|
00003380  20 54 68 6f 73 65 20 67  6f 6f 64 20 6f 6c 27 74  | Those good ol't|
00003390  72 61 6e 73 6d 61 74 73  0d 0d 8e 1d dd f2 74 72  |ransmats......tr|
000033a0  61 6e 73 6d 61 74 28 78  25 2c 79 25 2c 78 64 25  |ansmat(x%,y%,xd%|
000033b0  2c 79 64 25 29 0d 0d 98  2d 4e 3d 78 25 3a 4d 3d  |,yd%)...-N=x%:M=|
000033c0  79 25 3a f5 4e 3d 4e 2b  31 3a e7 4e 3d 32 30 4e  |y%:.N=N+1:.N=20N|
000033d0  3d 30 3a 4d 3d 4d 2d 31  3a e7 4d 3d 2d 31 4d 3d  |=0:M=M-1:.M=-1M=|
000033e0  31 39 0d 0d a2 27 fd 63  6f 64 65 25 3f a4 70 6f  |19...'.code%?.po|
000033f0  73 28 4e 2c 4d 29 3d 34  38 3a 4e 3d 4e 2d 78 64  |s(N,M)=48:N=N-xd|
00003400  25 3a 4d 3d 4d 2d 79 64  25 0d 0d ac 29 e7 63 6f  |%:M=M-yd%...).co|
00003410  64 65 25 3f a4 70 6f 73  28 4e 2c 4d 29 3c 3e 30  |de%?.pos(N,M)<>0|
00003420  3a f2 74 72 61 6e 73 6d  61 74 5f 6d 61 74 63 68  |:.transmat_match|
00003430  3a e1 0d 0d b6 c6 78 25  3d 78 25 2b 78 64 25 3a  |:.....x%=x%+xd%:|
00003440  79 25 3d 79 25 2b 79 64  25 3a 62 6c 25 3d 63 6f  |y%=y%+yd%:bl%=co|
00003450  64 65 25 3f a4 70 6f 73  28 78 25 2c 79 25 29 3a  |de%?.pos(x%,y%):|
00003460  63 6f 64 65 25 3f a4 70  6f 73 28 4e 2c 4d 29 3d  |code%?.pos(N,M)=|
00003470  62 6c 25 3a 63 6f 64 65  25 3f a4 70 6f 73 28 78  |bl%:code%?.pos(x|
00003480  25 2c 79 25 29 3d 30 3a  f2 73 70 72 69 74 65 28  |%,y%)=0:.sprite(|
00003490  34 30 30 2b 28 34 30 2a  78 25 29 2c 31 34 38 2b  |400+(40*x%),148+|
000034a0  28 34 30 2a 79 25 29 2c  30 29 3a f2 62 6c 6f 63  |(40*y%),0):.bloc|
000034b0  6b 73 61 62 6f 76 65 28  78 25 2c 79 25 29 3a f2  |ksabove(x%,y%):.|
000034c0  73 70 72 69 74 65 28 34  30 30 2b 28 34 30 2a 4e  |sprite(400+(40*N|
000034d0  29 2c 31 34 38 2b 28 34  30 2a 4d 29 2c 63 6f 64  |),148+(40*M),cod|
000034e0  65 25 3f a4 70 6f 73 28  4e 2c 4d 29 29 3a f2 74  |e%?.pos(N,M)):.t|
000034f0  72 61 6e 73 70 69 6e 67  0d 0d c0 26 e7 a4 67 72  |ransping...&..gr|
00003500  61 76 69 74 79 69 73 64  75 65 28 4e 2c 4d 29 f2  |avityisdue(N,M).|
00003510  67 72 61 76 69 74 79 28  4e 2c 4d 29 3a e1 0d 0d  |gravity(N,M):...|
00003520  ca 1c e7 a4 64 6f 6f 62  65 72 69 65 73 28 4e 2c  |....dooberies(N,|
00003530  4d 2d 31 2c 4e 2c 4d 29  3a e1 0d 0d d4 14 e7 a4  |M-1,N,M):.......|
00003540  6e 61 73 74 69 65 73 28  4e 2c 4d 29 3a e1 0d 0d  |nasties(N,M):...|
00003550  de 10 e7 a4 6d 61 74 63  68 28 4e 2c 4d 29 0d 0d  |....match(N,M)..|
00003560  e8 05 e1 0d 0d f2 05 3a  0d 0d fc 14 dd f2 74 72  |.......:......tr|
00003570  61 6e 73 6d 61 74 5f 6d  61 74 63 68 0d 0e 06 12  |ansmat_match....|
00003580  e7 a4 6d 61 74 63 68 28  78 25 2c 79 25 29 0d 0e  |..match(x%,y%)..|
00003590  10 05 e1 0d 0e 1a 05 3a  0d 0e 24 13 f4 20 4d 6f  |.......:..$.. Mo|
000035a0  76 65 20 61 20 73 70 72  69 74 65 0d 0e 2e e3 dd  |ve a sprite.....|
000035b0  f2 72 65 64 72 61 77 3a  e7 62 6c 25 3c 3e 31 33  |.redraw:.bl%<>13|
000035c0  f2 73 70 72 69 74 65 28  34 30 30 2b 28 34 30 2a  |.sprite(400+(40*|
000035d0  73 78 25 29 2d 28 78 64  25 2a 34 2a 28 39 2d 62  |sx%)-(xd%*4*(9-b|
000035e0  25 29 29 2c 31 34 38 2b  28 34 30 2a 73 79 25 29  |%)),148+(40*sy%)|
000035f0  2d 28 79 64 25 2a 34 2a  28 39 2d 62 25 29 29 2c  |-(yd%*4*(9-b%)),|
00003600  30 29 3a f2 73 70 72 69  74 65 28 34 30 30 2b 28  |0):.sprite(400+(|
00003610  34 30 2a 73 78 25 29 2d  28 78 64 25 2a 34 2a 28  |40*sx%)-(xd%*4*(|
00003620  38 2d 62 25 29 29 2c 31  34 38 2b 28 34 30 2a 73  |8-b%)),148+(40*s|
00003630  79 25 29 2d 28 79 64 25  2a 34 2a 28 38 2d 62 25  |y%)-(yd%*4*(8-b%|
00003640  29 29 2c 62 6c 25 29 3a  8b f2 73 70 72 69 74 65  |)),bl%):..sprite|
00003650  28 34 30 30 2b 28 34 30  2a 73 78 25 29 2d 28 78  |(400+(40*sx%)-(x|
00003660  64 25 2a 34 2a 28 31 30  2d 62 25 29 29 2c 31 34  |d%*4*(10-b%)),14|
00003670  38 2b 28 34 30 2a 73 79  25 29 2d 28 79 64 25 2a  |8+(40*sy%)-(yd%*|
00003680  34 2a 28 31 30 2d 62 25  29 29 2c 34 30 29 0d 0e  |4*(10-b%)),40)..|
00003690  38 48 f2 73 70 72 69 74  65 28 34 30 30 2b 28 34  |8H.sprite(400+(4|
000036a0  30 2a 73 78 25 29 2d 28  78 64 25 2a 34 2a 28 38  |0*sx%)-(xd%*4*(8|
000036b0  2d 62 25 29 29 2c 31 34  38 2b 28 34 30 2a 73 79  |-b%)),148+(40*sy|
000036c0  25 29 2d 28 79 64 25 2a  34 2a 28 38 2d 62 25 29  |%)-(yd%*4*(8-b%)|
000036d0  29 2c 62 6c 25 29 0d 0e  42 c0 e7 62 6c 25 3d 31  |),bl%)..B..bl%=1|
000036e0  80 63 6f 64 65 25 3f 28  a4 70 6f 73 28 73 78 25  |.code%?(.pos(sx%|
000036f0  2c 73 79 25 29 2b 32 29  3e 30 20 f2 73 70 72 69  |,sy%)+2)>0 .spri|
00003700  74 65 28 34 30 30 2b 28  34 30 2a 73 78 25 29 2d  |te(400+(40*sx%)-|
00003710  28 78 64 25 2a 34 2a 28  39 2d 62 25 29 29 2c 31  |(xd%*4*(9-b%)),1|
00003720  38 38 2b 28 34 30 2a 73  79 25 29 2d 28 79 64 25  |88+(40*sy%)-(yd%|
00003730  2a 34 2a 28 39 2d 62 25  29 29 2c 30 29 3a f2 73  |*4*(9-b%)),0):.s|
00003740  70 72 69 74 65 28 34 30  30 2b 28 34 30 2a 73 78  |prite(400+(40*sx|
00003750  25 29 2d 28 78 64 25 2a  34 2a 28 38 2d 62 25 29  |%)-(xd%*4*(8-b%)|
00003760  29 2c 31 38 38 2b 28 34  30 2a 73 79 25 29 2d 28  |),188+(40*sy%)-(|
00003770  79 64 25 2a 34 2a 28 38  2d 62 25 29 29 2c 63 6f  |yd%*4*(8-b%)),co|
00003780  64 65 25 3f 28 a4 70 6f  73 28 73 78 25 2c 73 79  |de%?(.pos(sx%,sy|
00003790  25 29 2b 32 29 29 0d 0e  4c 05 e1 0d 0e 56 05 3a  |%)+2))..L....V.:|
000037a0  0d 0e 60 05 3a 0d 0e 6a  1f f4 20 42 6c 6f 63 6b  |..`.:..j.. Block|
000037b0  20 6d 6f 76 65 6d 65 6e  74 20 70 72 6f 63 65 64  | movement proced|
000037c0  75 72 65 73 0d 0e 74 3e  dd f2 6d 6f 76 65 3a 78  |ures..t>..move:x|
000037d0  25 3d 28 78 25 2d 34 30  30 29 81 34 30 3a 79 25  |%=(x%-400).40:y%|
000037e0  3d 28 79 25 2d 31 35 30  29 81 34 30 3a 62 6c 25  |=(y%-150).40:bl%|
000037f0  3d 63 6f 64 65 25 3f a4  70 6f 73 28 78 25 2c 79  |=code%?.pos(x%,y|
00003800  25 29 0d 0e 7e 18 e7 62  6c 25 3d 34 32 f2 62 61  |%)..~..bl%=42.ba|
00003810  6c 6c 6f 6f 6e 5f 6d 6f  76 65 0d 0e 88 25 e7 62  |lloon_move...%.b|
00003820  25 3d 34 80 a4 62 6c 6f  63 6b 28 78 25 2c 79 25  |%=4..block(x%,y%|
00003830  29 f2 6c 65 66 74 28 78  25 2c 79 25 29 3a e1 0d  |).left(x%,y%):..|
00003840  0e 92 24 e7 62 25 3d 31  80 a4 62 6c 6f 63 6b 28  |..$.b%=1..block(|
00003850  78 25 2c 79 25 29 f2 72  69 67 68 74 28 78 25 2c  |x%,y%).right(x%,|
00003860  79 25 29 0d 0e 9c 05 e1  0d 0e a6 05 3a 0d 0e b0  |y%).........:...|
00003870  11 dd f2 6c 65 66 74 28  78 25 2c 79 25 29 0d 0e  |...left(x%,y%)..|
00003880  ba 68 62 25 3d 63 6f 64  65 25 3f a4 70 6f 73 28  |.hb%=code%?.pos(|
00003890  78 25 2d 31 2c 79 25 29  3a e7 62 25 3c 3e 30 80  |x%-1,y%):.b%<>0.|
000038a0  62 25 3c 3e 34 30 80 ac  28 62 25 3e 34 32 80 62  |b%<>40..(b%>42.b|
000038b0  25 3c 34 36 84 62 25 3d  34 38 29 84 63 6f 64 65  |%<46.b%=48).code|
000038c0  25 3f 28 a4 70 6f 73 28  78 25 2c 79 25 29 2b 31  |%?(.pos(x%,y%)+1|
000038d0  29 3c 3e 30 62 25 3d a4  6d 61 74 63 68 28 78 25  |)<>0b%=.match(x%|
000038e0  2c 79 25 29 3a e1 0d 0e  c4 29 e7 62 6c 25 3c 3e  |,y%):....).bl%<>|
000038f0  31 33 3a e7 a4 64 6f 6f  62 65 72 69 65 73 28 78  |13:..dooberies(x|
00003900  25 2d 31 2c 79 25 2c 78  25 2c 79 25 29 3a e1 0d  |%-1,y%,x%,y%):..|
00003910  0e ce 0f f2 63 79 6d 62  61 6c 70 69 6e 67 0d 0e  |....cymbalping..|
00003920  d8 34 e7 62 6c 25 3c 3e  31 33 63 6f 64 65 25 3f  |.4.bl%<>13code%?|
00003930  a4 70 6f 73 28 78 25 2c  79 25 29 3d 30 8b 63 6f  |.pos(x%,y%)=0.co|
00003940  64 65 25 3f a4 70 6f 73  28 78 25 2c 79 25 29 3d  |de%?.pos(x%,y%)=|
00003950  34 30 0d 0e e2 81 63 6f  64 65 25 3f a4 70 6f 73  |40....code%?.pos|
00003960  28 78 25 2d 31 2c 79 25  29 3d 62 6c 25 3a 63 6f  |(x%-1,y%)=bl%:co|
00003970  64 65 25 3f 28 a4 70 6f  73 28 78 25 2d 31 2c 79  |de%?(.pos(x%-1,y|
00003980  25 29 2b 31 29 3d 35 3a  63 6f 64 65 25 3f 28 a4  |%)+1)=5:code%?(.|
00003990  70 6f 73 28 78 25 2d 31  2c 79 25 29 2b 32 29 3d  |pos(x%-1,y%)+2)=|
000039a0  63 6f 64 65 25 3f 28 a4  70 6f 73 28 78 25 2c 79  |code%?(.pos(x%,y|
000039b0  25 29 2b 32 29 3a 78 25  3d 34 30 30 2b 28 78 25  |%)+2):x%=400+(x%|
000039c0  2a 34 30 29 3a 79 25 3d  31 34 38 2b 28 79 25 2a  |*40):y%=148+(y%*|
000039d0  34 30 29 0d 0e ec 2e e7  62 6c 25 3c 3e 31 33 f2  |40).....bl%<>13.|
000039e0  73 70 72 69 74 65 28 78  25 2c 79 25 2c 30 29 8b  |sprite(x%,y%,0).|
000039f0  f2 73 70 72 69 74 65 28  78 25 2c 79 25 2c 34 30  |.sprite(x%,y%,40|
00003a00  29 0d 0e f6 1a f2 73 70  72 69 74 65 28 78 25 2d  |).....sprite(x%-|
00003a10  38 2c 79 25 2c 62 6c 25  29 3a e1 0d 0f 00 05 3a  |8,y%,bl%):.....:|
00003a20  0d 0f 0a 12 dd f2 72 69  67 68 74 28 78 25 2c 79  |......right(x%,y|
00003a30  25 29 0d 0f 14 68 62 25  3d 63 6f 64 65 25 3f a4  |%)...hb%=code%?.|
00003a40  70 6f 73 28 78 25 2b 31  2c 79 25 29 3a e7 62 25  |pos(x%+1,y%):.b%|
00003a50  3c 3e 30 80 62 25 3c 3e  34 30 80 ac 28 62 25 3e  |<>0.b%<>40..(b%>|
00003a60  34 32 80 62 25 3c 34 36  84 62 25 3d 34 38 29 84  |42.b%<46.b%=48).|
00003a70  63 6f 64 65 25 3f 28 a4  70 6f 73 28 78 25 2c 79  |code%?(.pos(x%,y|
00003a80  25 29 2b 31 29 3c 3e 30  62 25 3d a4 6d 61 74 63  |%)+1)<>0b%=.matc|
00003a90  68 28 78 25 2c 79 25 29  3a e1 0d 0f 1e 29 e7 62  |h(x%,y%):....).b|
00003aa0  6c 25 3c 3e 31 33 3a e7  a4 64 6f 6f 62 65 72 69  |l%<>13:..dooberi|
00003ab0  65 73 28 78 25 2b 31 2c  79 25 2c 78 25 2c 79 25  |es(x%+1,y%,x%,y%|
00003ac0  29 3a e1 0d 0f 28 0f f2  63 79 6d 62 61 6c 70 69  |):...(..cymbalpi|
00003ad0  6e 67 0d 0f 32 34 e7 62  6c 25 3c 3e 31 33 63 6f  |ng..24.bl%<>13co|
00003ae0  64 65 25 3f a4 70 6f 73  28 78 25 2c 79 25 29 3d  |de%?.pos(x%,y%)=|
00003af0  30 8b 63 6f 64 65 25 3f  a4 70 6f 73 28 78 25 2c  |0.code%?.pos(x%,|
00003b00  79 25 29 3d 34 30 0d 0f  3c 81 63 6f 64 65 25 3f  |y%)=40..<.code%?|
00003b10  a4 70 6f 73 28 78 25 2b  31 2c 79 25 29 3d 62 6c  |.pos(x%+1,y%)=bl|
00003b20  25 3a 63 6f 64 65 25 3f  28 a4 70 6f 73 28 78 25  |%:code%?(.pos(x%|
00003b30  2b 31 2c 79 25 29 2b 31  29 3d 37 3a 63 6f 64 65  |+1,y%)+1)=7:code|
00003b40  25 3f 28 a4 70 6f 73 28  78 25 2b 31 2c 79 25 29  |%?(.pos(x%+1,y%)|
00003b50  2b 32 29 3d 63 6f 64 65  25 3f 28 a4 70 6f 73 28  |+2)=code%?(.pos(|
00003b60  78 25 2c 79 25 29 2b 32  29 3a 78 25 3d 34 30 30  |x%,y%)+2):x%=400|
00003b70  2b 28 78 25 2a 34 30 29  3a 79 25 3d 31 34 38 2b  |+(x%*40):y%=148+|
00003b80  28 79 25 2a 34 30 29 0d  0f 46 2e e7 62 6c 25 3c  |(y%*40)..F..bl%<|
00003b90  3e 31 33 f2 73 70 72 69  74 65 28 78 25 2c 79 25  |>13.sprite(x%,y%|
00003ba0  2c 30 29 8b f2 73 70 72  69 74 65 28 78 25 2c 79  |,0)..sprite(x%,y|
00003bb0  25 2c 34 30 29 0d 0f 50  1a f2 73 70 72 69 74 65  |%,40)..P..sprite|
00003bc0  28 78 25 2b 38 2c 79 25  2c 62 6c 25 29 3a e1 0d  |(x%+8,y%,bl%):..|
00003bd0  0f 5a 05 3a 0d 0f 64 16  f4 20 49 74 73 20 61 6e  |.Z.:..d.. Its an|
00003be0  61 67 72 61 6d 20 74 69  6d 65 0d 0f 6e 25 dd f2  |agram time..n%..|
00003bf0  61 6e 61 67 72 61 6d 5f  6e 65 77 6c 65 74 74 65  |anagram_newlette|
00003c00  72 3a e7 61 6e 25 3d a9  77 6f 72 64 24 3a e1 0d  |r:.an%=.word$:..|
00003c10  0f 78 77 61 6e 25 3d 61  6e 25 2b 31 3a f2 61 6e  |.xwan%=an%+1:.an|
00003c20  61 67 72 61 6d 5f 6e 65  77 70 6f 73 3a f2 73 70  |agram_newpos:.sp|
00003c30  72 69 74 65 28 34 30 30  2b 28 34 30 2a 58 25 29  |rite(400+(40*X%)|
00003c40  2c 31 34 38 2b 28 59 25  2a 34 30 29 2c 63 6f 64  |,148+(Y%*40),cod|
00003c50  65 25 3f a4 70 6f 73 28  58 25 2c 59 25 29 29 3a  |e%?.pos(X%,Y%)):|
00003c60  e7 61 6e 25 3d a9 77 6f  72 64 24 61 25 3d 32 3a  |.an%=.word$a%=2:|
00003c70  f2 61 6e 61 67 72 61 6d  5f 64 72 6f 70 79 65 72  |.anagram_dropyer|
00003c80  62 6c 6f 63 6b 73 0d 0f  82 05 e1 0d 0f 8c 05 3a  |blocks.........:|
00003c90  0d 0f 96 4c dd f2 61 6e  61 67 72 61 6d 5f 6e 65  |...L..anagram_ne|
00003ca0  77 70 6f 73 3a 58 25 3d  30 3a 59 25 3d 30 3a 4e  |wpos:X%=0:Y%=0:N|
00003cb0  3d 61 6e 25 3a f5 62 25  3d 63 6f 64 65 25 3f a4  |=an%:.b%=code%?.|
00003cc0  70 6f 73 28 58 25 2c 59  25 29 3a e7 62 25 3e 31  |pos(X%,Y%):.b%>1|
00003cd0  33 80 62 25 3c 34 30 4e  3d 4e 2d 31 0d 0f a0 24  |3.b%<40N=N-1...$|
00003ce0  e7 4e 3c 3e 30 3a 58 25  3d 58 25 2b 31 3a e7 58  |.N<>0:X%=X%+1:.X|
00003cf0  25 3d 32 30 58 25 3d 30  3a 59 25 3d 59 25 2b 31  |%=20X%=0:Y%=Y%+1|
00003d00  0d 0f aa 2e fd 59 25 3d  32 30 84 4e 3d 30 3a e7  |.....Y%=20.N=0:.|
00003d10  59 25 3d 32 30 59 25 3d  30 3a 20 f4 20 4d 61 6a  |Y%=20Y%=0: . Maj|
00003d20  6f 72 20 63 61 74 61 73  74 72 6f 70 68 65 0d 0f  |or catastrophe..|
00003d30  b4 05 e1 0d 0f be 05 3a  0d 0f c8 76 dd f2 61 6e  |.......:...v..an|
00003d40  61 67 72 61 6d 5f 64 72  6f 70 79 65 72 62 6c 6f  |agram_dropyerblo|
00003d50  63 6b 73 3a f2 76 64 75  73 65 76 65 6e 3a e3 4e  |cks:.vduseven:.N|
00003d60  3d 30 b8 31 39 3a e3 4d  3d 30 b8 31 39 3a 62 25  |=0.19:.M=0.19:b%|
00003d70  3d 63 6f 64 65 25 3f a4  70 6f 73 28 4e 2c 4d 29  |=code%?.pos(N,M)|
00003d80  3a e7 62 25 3e 31 33 80  62 25 3c 34 30 80 a4 67  |:.b%>13.b%<40..g|
00003d90  72 61 76 69 74 79 69 73  64 75 65 28 4e 2c 4d 29  |ravityisdue(N,M)|
00003da0  3a f2 67 72 61 76 69 74  79 28 4e 2c 4d 29 0d 0f  |:.gravity(N,M)..|
00003db0  d2 09 ed 3a ed 3a e1 0d  0f dc 05 3a 0d 0f e6 60  |...:.:.....:...`|
00003dc0  dd a4 61 6e 61 67 72 61  6d 5f 63 6c 65 76 65 72  |..anagram_clever|
00003dd0  64 69 63 6b 3a 78 25 3d  61 6e 78 25 3a 79 25 3d  |dick:x%=anx%:y%=|
00003de0  61 6e 79 25 3a 4e 3d b9  3a 4d 3d 31 3a f5 62 25  |any%:N=.:M=1:.b%|
00003df0  3d 63 6f 64 65 25 3f a4  70 6f 73 28 78 25 2c 79  |=code%?.pos(x%,y|
00003e00  25 29 2d 31 34 3a e7 62  25 3c 3e 97 c1 77 6f 72  |%)-14:.b%<>..wor|
00003e10  64 24 2c 4d 29 2d 36 35  3a 4e 3d a3 0d 0f f0 1d  |d$,M)-65:N=.....|
00003e20  78 25 3d 78 25 2b 31 3a  4d 3d 4d 2b 31 3a fd 4d  |x%=x%+1:M=M+1:.M|
00003e30  3d 61 6e 25 2b 31 3a 3d  4e 0d 0f fa 05 3a 0d 10  |=an%+1:=N....:..|
00003e40  04 21 f4 20 4d 79 20 62  65 61 75 74 69 66 75 6c  |.!. My beautiful|
00003e50  20 72 65 64 20 62 61 6c  6c 6f 6f 6e 2e 2e 2e 0d  | red balloon....|
00003e60  10 0e 12 dd f2 62 61 6c  6c 6f 6f 6e 5f 6d 6f 76  |.....balloon_mov|
00003e70  65 0d 10 18 1d e7 62 25  3d 34 f2 62 61 6c 6c 6f  |e.....b%=4.ballo|
00003e80  6f 6e 5f 6c 65 66 74 28  78 25 2c 79 25 29 0d 10  |on_left(x%,y%)..|
00003e90  22 1e e7 62 25 3d 31 f2  62 61 6c 6c 6f 6f 6e 5f  |"..b%=1.balloon_|
00003ea0  72 69 67 68 74 28 78 25  2c 79 25 29 0d 10 2c 05  |right(x%,y%)..,.|
00003eb0  e1 0d 10 36 05 3a 0d 10  40 1a dd f2 62 61 6c 6c  |...6.:..@...ball|
00003ec0  6f 6f 6e 5f 72 69 67 68  74 28 78 25 2c 79 25 29  |oon_right(x%,y%)|
00003ed0  0d 10 4a 49 f2 72 69 67  68 74 28 78 25 2c 79 25  |..JI.right(x%,y%|
00003ee0  29 3a e7 a4 62 6c 6f 63  6b 28 78 25 2c 79 25 2b  |):..block(x%,y%+|
00003ef0  31 29 62 6c 25 3d 63 6f  64 65 25 3f a4 70 6f 73  |1)bl%=code%?.pos|
00003f00  28 78 25 2c 79 25 2b 31  29 3a f2 72 69 67 68 74  |(x%,y%+1):.right|
00003f10  28 78 25 2c 79 25 2b 31  29 0d 10 54 05 e1 0d 10  |(x%,y%+1)..T....|
00003f20  5e 05 3a 0d 10 68 19 dd  f2 62 61 6c 6c 6f 6f 6e  |^.:..h...balloon|
00003f30  5f 6c 65 66 74 28 78 25  2c 79 25 29 0d 10 72 47  |_left(x%,y%)..rG|
00003f40  f2 6c 65 66 74 28 78 25  2c 79 25 29 3a e7 a4 62  |.left(x%,y%):..b|
00003f50  6c 6f 63 6b 28 78 25 2c  79 25 2b 31 29 62 6c 25  |lock(x%,y%+1)bl%|
00003f60  3d 63 6f 64 65 25 3f a4  70 6f 73 28 78 25 2c 79  |=code%?.pos(x%,y|
00003f70  25 2b 31 29 3a f2 6c 65  66 74 28 78 25 2c 79 25  |%+1):.left(x%,y%|
00003f80  2b 31 29 0d 10 7c 05 e1  0d 10 86 05 3a 0d 10 90  |+1)..|......:...|
00003f90  17 f4 20 41 20 77 61 74  65 72 79 20 67 72 61 76  |.. A watery grav|
00003fa0  65 2e 2e 2e 0d 10 9a 17  dd f2 77 61 74 65 72 5f  |e.........water_|
00003fb0  73 69 6e 6b 28 78 25 2c  79 25 29 0d 10 a4 6d 63  |sink(x%,y%)...mc|
00003fc0  6f 64 65 25 3f a4 70 6f  73 28 78 25 2c 79 25 29  |ode%?.pos(x%,y%)|
00003fd0  3d 31 33 3a f2 73 70 72  69 74 65 28 34 30 30 2b  |=13:.sprite(400+|
00003fe0  28 78 25 2a 34 30 29 2c  31 34 38 2b 28 79 25 2a  |(x%*40),148+(y%*|
00003ff0  34 30 29 2c 31 33 29 3a  f2 73 75 6e 6b 67 75 72  |40),13):.sunkgur|
00004000  67 6c 65 3a e7 a4 67 72  61 76 69 74 79 69 73 64  |gle:..gravityisd|
00004010  75 65 28 78 25 2c 79 25  29 f2 67 72 61 76 69 74  |ue(x%,y%).gravit|
00004020  79 28 78 25 2c 79 25 29  0d 10 ae 05 e1 0d 10 b8  |y(x%,y%)........|
00004030  05 3a 0d 10 c2 13 dd a4  77 61 74 65 72 5f 6e 6f  |.:......water_no|
00004040  6c 65 61 6b 73 0d 10 cc  4b 62 25 3d b9 3a e3 78  |leaks...Kb%=.:.x|
00004050  25 3d 30 b8 31 39 3a e3  79 25 3d 30 b8 31 39 3a  |%=0.19:.y%=0.19:|
00004060  e7 63 6f 64 65 25 3f a4  70 6f 73 28 78 25 2c 79  |.code%?.pos(x%,y|
00004070  25 29 3d 34 31 80 63 6f  64 65 25 3f a4 70 6f 73  |%)=41.code%?.pos|
00004080  28 78 25 2c 79 25 2b 31  29 3d 34 30 62 25 3d a3  |(x%,y%+1)=40b%=.|
00004090  0d 10 d6 0e ed 3a ed 3a  e7 62 25 3a 3d b9 0d 10  |.....:.:.b%:=...|
000040a0  e0 1c f4 20 45 65 6b 2c  20 63 61 6c 6c 20 61 20  |... Eek, call a |
000040b0  70 6c 75 6d 62 65 72 2e  2e 2e 0d 10 ea 3f e7 70  |plumber......?.p|
000040c0  61 75 73 65 25 3c 3e 32  f2 66 75 6c 6c 67 75 72  |ause%<>2.fullgur|
000040d0  67 6c 65 3a f2 66 75 6e  6b 79 74 65 78 74 58 28  |gle:.funkytextX(|
000040e0  22 55 4e 50 4c 55 47 47  45 44 20 4c 45 41 4b 22  |"UNPLUGGED LEAK"|
000040f0  2c 35 34 38 2c 33 34 38  29 0d 10 f4 06 3d a3 0d  |,548,348)....=..|
00004100  10 fe 05 3a 0d 11 08 16  f4 20 48 65 6c 70 66 75  |...:..... Helpfu|
00004110  6c 20 72 6f 75 74 69 6e  65 73 0d 11 12 20 dd a4  |l routines... ..|
00004120  70 6f 73 28 78 25 2c 79  25 29 3a 3d 28 28 79 25  |pos(x%,y%):=((y%|
00004130  2a 32 30 29 2b 78 25 29  2a 33 0d 11 1c 42 dd a4  |*20)+x%)*3...B..|
00004140  62 6c 6f 63 6b 28 78 25  2c 79 25 29 3a ea 62 25  |block(x%,y%):.b%|
00004150  3a 62 25 3d 63 6f 64 65  25 3f a4 70 6f 73 28 78  |:b%=code%?.pos(x|
00004160  25 2c 79 25 29 3a e7 28  62 25 3c 33 84 62 25 3e  |%,y%):.(b%<3.b%>|
00004170  33 39 29 80 62 25 3c 3e  35 30 3d a3 0d 11 26 17  |39).b%<>50=...&.|
00004180  e7 62 25 3e 31 33 80 62  25 3c 34 30 80 61 25 3d  |.b%>13.b%<40.a%=|
00004190  31 3d a3 0d 11 30 1f e7  63 6f 64 65 25 3f 28 a4  |1=...0..code%?(.|
000041a0  70 6f 73 28 78 25 2c 79  25 29 2b 31 29 3c 3e 30  |pos(x%,y%)+1)<>0|
000041b0  3d a3 0d 11 3a 06 3d b9  0d 11 44 05 3a 0d 11 4e  |=...:.=...D.:..N|
000041c0  05 3a 0d 11 58 3a f4 20  4d 69 6e 69 6f 6e 73 20  |.:..X:. Minions |
000041d0  28 75 73 65 63 64 20 61  74 20 73 74 61 72 74 20  |(usecd at start |
000041e0  6f 66 20 61 20 6c 65 76  65 6c 2c 20 69 2e 65 2e  |of a level, i.e.|
000041f0  20 6c 6f 61 64 2c 20 64  72 61 77 29 0d 11 62 ac  | load, draw)..b.|
00004200  dd f2 6c 6f 61 64 3a ef  32 34 2c 34 30 30 3b 31  |..load:.24,400;1|
00004210  35 30 3b 31 32 37 39 3b  31 30 32 33 3b 3a e3 4d  |50;1279;1023;:.M|
00004220  3d 30 b8 31 32 3a e3 4e  3d 35 b8 31 35 3a f2 73  |=0.12:.N=5.15:.s|
00004230  28 4e 2a 38 30 2c 38 39  38 2d 31 32 38 2a 4d 2c  |(N*80,898-128*M,|
00004240  22 62 6c 6f 63 6b 22 29  3a ed 3a ed 3a ef 32 36  |"block"):.:.:.26|
00004250  2c 32 33 2c 31 37 2c 37  2c 36 2c 34 3b 38 3b 30  |,23,17,7,6,4;8;0|
00004260  3b 35 3a e6 30 c8 9c 30  3a c8 93 c8 90 30 2c 36  |;5:.0..0:....0,6|
00004270  34 2c 31 32 37 39 2c 33  32 3a e6 36 30 c8 9c 31  |4,1279,32:.60..1|
00004280  32 38 3a ec 35 38 34 2c  39 36 3a f1 22 4c 6f 61  |28:.584,96:."Loa|
00004290  64 69 6e 67 22 3a ef 34  2c 32 38 2c 31 32 2c 31  |ding":.4,28,12,1|
000042a0  30 2c 33 38 2c 35 3a 87  0d 11 6c c1 62 6c 6f 63  |0,38,5:...l.bloc|
000042b0  6b 25 3d 30 3a 58 25 3d  8e 28 22 6c 65 76 65 6c  |k%=0:X%=.("level|
000042c0  22 2b c3 6c 65 76 65 6c  25 2b 22 2e 6c 65 76 65  |"+.level%+".leve|
000042d0  6c 22 29 3a e3 4d 3d 30  b8 31 39 3a e3 4e 3d 30  |l"):.M=0.19:.N=0|
000042e0  b8 31 39 3a 63 6f 64 65  25 3f a4 70 6f 73 28 4e  |.19:code%?.pos(N|
000042f0  2c 4d 29 3d 9a 23 58 25  3a 63 6f 64 65 25 3f 28  |,M)=.#X%:code%?(|
00004300  a4 70 6f 73 28 4e 2c 4d  29 2b 31 29 3d 9a 23 58  |.pos(N,M)+1)=.#X|
00004310  25 3a 63 6f 64 65 25 3f  28 a4 70 6f 73 28 4e 2c  |%:code%?(.pos(N,|
00004320  4d 29 2b 32 29 3d 9a 23  58 25 3a e7 28 63 6f 64  |M)+2)=.#X%:.(cod|
00004330  65 25 3f a4 70 6f 73 28  4e 2c 4d 29 80 36 33 29  |e%?.pos(N,M).63)|
00004340  3e 32 80 28 63 6f 64 65  25 3f a4 70 6f 73 28 4e  |>2.(code%?.pos(N|
00004350  2c 4d 29 80 36 33 29 3c  31 33 62 6c 6f 63 6b 25  |,M).63)<13block%|
00004360  3d 62 6c 6f 63 6b 25 2b  31 0d 11 76 24 ed 3a ed  |=block%+1..v$.:.|
00004370  3a 63 78 25 3d 9a 23 58  25 3a 63 79 25 3d 9a 23  |:cx%=.#X%:cy%=.#|
00004380  58 25 3a d9 23 58 25 3a  ef 32 36 3a 87 0d 11 80  |X%:.#X%:.26:....|
00004390  55 58 25 3d 8e 28 22 6c  65 76 65 6c 22 2b c3 6c  |UX%=.("level"+.l|
000043a0  65 76 65 6c 25 2b 22 2e  69 6e 66 6f 22 29 3a 74  |evel%+".info"):t|
000043b0  69 74 6c 65 24 3d 22 22  3a e3 4e 3d 31 b8 34 30  |itle$="":.N=1.40|
000043c0  3a 73 24 3d bd 9a 23 58  25 3a e7 73 24 3c 3e 22  |:s$=..#X%:.s$<>"|
000043d0  40 22 74 69 74 6c 65 24  3d 74 69 74 6c 65 24 2b  |@"title$=title$+|
000043e0  73 24 0d 11 8a 41 ed 3a  74 69 6d 65 25 3d 9a 23  |s$...A.:time%=.#|
000043f0  58 25 3a 77 6f 72 64 24  3d 22 22 3a e3 4e 3d 31  |X%:word$="":.N=1|
00004400  b8 31 30 3a 73 24 3d bd  9a 23 58 25 3a e7 73 24  |.10:s$=..#X%:.s$|
00004410  3c 3e 22 40 22 77 6f 72  64 24 3d 77 6f 72 64 24  |<>"@"word$=word$|
00004420  2b 73 24 0d 11 94 32 ed  3a 61 6e 78 25 3d 9a 23  |+s$...2.:anx%=.#|
00004430  58 25 3a 61 6e 79 25 3d  9a 23 58 25 3a 61 6e 25  |X%:any%=.#X%:an%|
00004440  3d 30 3a 73 78 25 3d 30  3a 73 79 25 3d 30 3a d9  |=0:sx%=0:sy%=0:.|
00004450  23 58 25 3a e1 0d 11 9e  05 3a 0d 11 a8 6a dd f2  |#X%:.....:...j..|
00004460  64 72 61 77 3a 61 25 3d  30 3a e3 4e 3d 30 b8 31  |draw:a%=0:.N=0.1|
00004470  39 3a e3 4d 3d 30 b8 31  39 3a 62 25 3d 63 6f 64  |9:.M=0.19:b%=cod|
00004480  65 25 3f a4 70 6f 73 28  4e 2c 4d 29 3a e7 62 25  |e%?.pos(N,M):.b%|
00004490  3c 3e 36 33 80 ac 28 62  25 3e 31 33 80 62 25 3c  |<>63..(b%>13.b%<|
000044a0  34 30 29 f2 73 70 72 69  74 65 28 34 30 30 2b 28  |40).sprite(400+(|
000044b0  4e 2a 34 30 29 2c 31 34  38 2b 28 4d 2a 34 30 29  |N*40),148+(M*40)|
000044c0  2c 62 25 29 0d 11 b2 35  e7 62 25 3e 31 33 80 62  |,b%)...5.b%>13.b|
000044d0  25 3c 34 30 f2 73 70 72  69 74 65 28 34 30 30 2b  |%<40.sprite(400+|
000044e0  28 4e 2a 34 30 29 2c 31  34 38 2b 28 4d 2a 34 30  |(N*40),148+(M*40|
000044f0  29 2c 32 29 3a 61 25 3d  31 0d 11 bc 37 e7 63 6f  |),2):a%=1...7.co|
00004500  64 65 25 3f a4 70 6f 73  28 4e 2c 4d 29 3d 35 30  |de%?.pos(N,M)=50|
00004510  80 a4 67 72 61 76 69 74  79 69 73 64 75 65 28 4e  |..gravityisdue(N|
00004520  2c 4d 29 f2 67 72 61 76  69 74 79 28 4e 2c 4d 29  |,M).gravity(N,M)|
00004530  0d 11 c6 09 ed 3a ed 3a  e1 0d 11 d0 05 3a 0d 11  |.....:.:.....:..|
00004540  da 28 dd f2 6e 65 77 6c  65 76 65 6c 3a f2 68 61  |.(..newlevel:.ha|
00004550  6c 6c 65 6c 75 6a 61 68  3a f2 6d 6f 75 73 65 77  |llelujah:.mousew|
00004560  61 69 74 69 6e 67 0d 11  e4 e0 4c 25 3d 6c 65 76  |aiting....L%=lev|
00004570  65 6c 25 2d 31 3a f2 66  72 61 6d 65 28 35 30 30  |el%-1:.frame(500|
00004580  2c 34 30 32 2c 36 38 30  2c 33 30 30 2c 32 29 3a  |,402,680,300,2):|
00004590  ef 35 2c 32 33 2c 31 37  2c 37 2c 36 2c 34 3b 38  |.5,23,17,7,6,4;8|
000045a0  3b 30 3b 3a f2 6e 6c 74  78 74 28 22 43 6f 6e 67  |;0;:.nltxt("Cong|
000045b0  72 61 74 75 6c 61 74 69  6f 6e 73 21 22 2c 36 38  |ratulations!",68|
000045c0  30 29 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |0)              |
000045d0  20 20 20 20 20 20 20 20  20 20 20 20 3a f2 6e 6c  |            :.nl|
000045e0  74 78 74 28 22 4c 65 76  65 6c 20 22 2b c3 4c 25  |txt("Level "+.L%|
000045f0  2b 22 20 63 6f 6d 70 6c  65 74 65 64 22 2c 36 30  |+" completed",60|
00004600  30 29 3a f2 6e 6c 74 78  74 28 22 42 6f 6e 75 73  |0):.nltxt("Bonus|
00004610  3a 20 31 30 30 20 78 20  22 2b c3 4c 25 2c 35 36  |: 100 x "+.L%,56|
00004620  30 29 3a 73 63 6f 72 65  25 3d 73 63 6f 72 65 25  |0):score%=score%|
00004630  2b 28 31 30 30 2a 4c 25  29 3a ef 34 3a f2 73 63  |+(100*L%):.4:.sc|
00004640  6f 72 65 3a ef 35 0d 11  ee 4c f2 6e 6c 74 78 74  |ore:.5...L.nltxt|
00004650  28 22 59 6f 75 72 20 70  61 73 73 77 6f 72 64 20  |("Your password |
00004660  66 6f 72 20 6c 65 76 65  6c 20 22 2b c3 28 4c 25  |for level "+.(L%|
00004670  2b 31 29 2b 22 20 69 73  3a 22 2c 35 30 30 29 3a  |+1)+" is:",500):|
00004680  ef 34 2c 32 38 2c 31 32  2c 31 30 2c 33 38 2c 35  |.4,28,12,10,38,5|
00004690  3a 87 0d 11 f8 6b 58 25  3d 8e 22 69 6e 66 6f 22  |:....kX%=."info"|
000046a0  3a cf 23 58 25 3d 31 2b  28 39 2a 28 4c 25 2d 31  |:.#X%=1+(9*(L%-1|
000046b0  29 29 3a 73 24 3d 22 22  3a e3 4d 3d 31 b8 39 3a  |)):s$="":.M=1.9:|
000046c0  73 24 3d 73 24 2b bd 28  9a 23 58 25 2b 31 29 3a  |s$=s$+.(.#X%+1):|
000046d0  ed 3a d9 23 58 25 3a ef  32 36 2c 35 2c 32 33 2c  |.:.#X%:.26,5,23,|
000046e0  31 37 2c 37 2c 36 2c 36  3b 38 3b 30 3b 3a f2 62  |17,7,6,6;8;0;:.b|
000046f0  74 28 73 24 2c 37 33 32  2c 34 36 30 29 0d 12 02  |t(s$,732,460)...|
00004700  46 f5 c8 97 78 25 2c 79  25 2c 62 25 3a fd 62 25  |F...x%,y%,b%:.b%|
00004710  3d 30 3a f5 c8 97 78 25  2c 79 25 2c 62 25 3a f2  |=0:...x%,y%,b%:.|
00004720  73 63 72 6f 6c 6c 61 72  6f 75 6e 64 3a fd ac 28  |scrollaround:..(|
00004730  62 25 3d 30 29 3a f2 6d  6f 75 73 65 61 72 72 6f  |b%=0):.mousearro|
00004740  77 3a e1 0d 12 0c 05 3a  0d 12 16 2b dd f2 6e 6c  |w:.....:...+..nl|
00004750  74 78 74 28 73 24 2c 79  25 29 3a f2 62 74 28 73  |txt(s$,y%):.bt(s|
00004760  24 2c 38 34 30 2d 28 a9  73 24 2a 38 29 2c 79 25  |$,840-(.s$*8),y%|
00004770  29 3a e1 0d 12 20 05 3a  0d 12 2a 23 f4 20 55 70  |):... .:..*#. Up|
00004780  64 61 74 65 20 73 63 6f  72 65 20 70 61 6e 65 6c  |date score panel|
00004790  20 70 72 6f 63 65 64 75  72 65 73 0d 12 34 5e dd  | procedures..4^.|
000047a0  f2 74 69 74 6c 65 3a ef  35 2c 32 33 2c 31 37 2c  |.title:.5,23,17,|
000047b0  37 2c 36 2c 38 3b 38 3b  30 3b 3a e6 30 c8 9c 30  |7,6,8;8;0;:.0..0|
000047c0  3a c8 93 c8 90 30 2c 36  34 2c 31 32 37 39 2c 33  |:....0,64,1279,3|
000047d0  32 3a e6 36 33 c8 9c 31  39 32 3a ec 36 34 30 2d  |2:.63..192:.640-|
000047e0  28 a9 74 69 74 6c 65 24  2a 31 36 29 2c 39 36 3a  |(.title$*16),96:|
000047f0  f1 74 69 74 6c 65 24 3a  e1 0d 12 3e 30 dd f2 6c  |.title$:...>0..l|
00004800  69 76 65 73 3a e6 36 c8  9c 31 32 38 3a c8 93 c8  |ives:.6..128:...|
00004810  90 32 32 38 2c 37 33 30  2c 31 32 30 2c 34 30 3a  |.228,730,120,40:|
00004820  e7 6c 69 76 65 25 3d 30  e1 0d 12 48 3b e3 4e 3d  |.live%=0...H;.N=|
00004830  31 b8 6c 69 76 65 25 3a  f2 73 70 72 69 74 65 28  |1.live%:.sprite(|
00004840  32 32 38 2b 28 33 2d 6c  69 76 65 25 29 2a 34 30  |228+(3-live%)*40|
00004850  2b 28 4e 2d 31 29 2a 34  30 2c 37 33 30 2c 31 29  |+(N-1)*40,730,1)|
00004860  3a ed 3a e1 0d 12 52 05  3a 0d 12 5c 45 dd f2 6c  |:.:...R.:..\E..l|
00004870  65 76 65 6c 3a e6 36 c8  9c 31 32 38 3a c8 93 c8  |evel:.6..128:...|
00004880  90 32 32 34 2c 36 35 34  2c 31 32 34 2c 34 34 3a  |.224,654,124,44:|
00004890  f2 66 75 6e 6b 79 74 65  78 74 58 28 c3 6c 65 76  |.funkytextX(.lev|
000048a0  65 6c 25 2c 32 34 30 2c  36 35 34 29 3a e1 0d 12  |el%,240,654):...|
000048b0  66 05 3a 0d 12 70 25 dd  f2 6c 66 74 3a f1 8a 38  |f.:..p%..lft:..8|
000048c0  2c 31 33 29 22 20 20 20  22 8a 38 2c 31 33 29 3b  |,13)"   ".8,13);|
000048d0  62 6c 6f 63 6b 25 3a e1  0d 12 7a 05 3a 0d 12 84  |block%:...z.:...|
000048e0  25 dd f2 74 69 6d 65 3a  f1 8a 37 2c 31 36 29 22  |%..time:..7,16)"|
000048f0  20 20 20 22 8a 37 2c 31  36 29 3b 74 69 6d 65 25  |   ".7,16);time%|
00004900  3a e1 0d 12 8e 05 3a 0d  12 98 26 dd f2 73 63 6f  |:.....:...&..sco|
00004910  72 65 3a f1 8a 31 31 2d  a9 c3 73 63 6f 72 65 25  |re:..11-..score%|
00004920  2c 32 32 29 3b 73 63 6f  72 65 25 3a e1 0d 12 a2  |,22);score%:....|
00004930  05 3a 0d 12 ac 16 f4 20  48 69 67 68 20 73 63 6f  |.:..... High sco|
00004940  72 65 20 74 61 62 6c 65  0d 12 b6 4b dd f2 73 63  |re table...K..sc|
00004950  6f 72 65 73 3a ea 4e 3a  ef 32 36 2c 31 37 2c 31  |ores:.N:.26,17,1|
00004960  32 38 3a e6 30 c8 9c 30  3a c8 93 c8 90 30 2c 30  |28:.0..0:....0,0|
00004970  2c 31 32 37 39 2c 31 30  32 33 3a c8 97 87 3a f2  |,1279,1023:...:.|
00004980  73 63 6f 72 65 73 5f 64  69 73 70 6c 61 79 28 32  |scores_display(2|
00004990  35 35 29 0d 12 c0 12 e6  30 c8 9c 30 3a 3a 87 3a  |55).....0..0::.:|
000049a0  4e 3d 30 3a f5 0d 12 ca  9c f2 77 69 70 65 28 35  |N=0:......wipe(5|
000049b0  34 30 2c 39 30 38 2b 38  30 2a b5 28 4e 2d 30 2e  |40,908+80*.(N-0.|
000049c0  32 29 29 3a f2 73 28 35  34 30 2c 39 30 38 2b 38  |2)):.s(540,908+8|
000049d0  30 2a b5 4e 2c 22 65 22  29 3a f2 77 69 70 65 28  |0*.N,"e"):.wipe(|
000049e0  35 37 36 2c 39 30 38 2b  38 30 2a b5 4e 29 3a f2  |576,908+80*.N):.|
000049f0  73 28 35 37 36 2c 39 30  38 2b 38 30 2a b5 28 4e  |s(576,908+80*.(N|
00004a00  2b 30 2e 32 29 2c 22 6e  22 29 3a f2 77 69 70 65  |+0.2),"n"):.wipe|
00004a10  28 36 31 32 2c 39 30 38  2b 38 30 2a b5 28 4e 2b  |(612,908+80*.(N+|
00004a20  30 2e 32 29 29 3a f2 73  28 36 31 32 2c 39 30 38  |0.2)):.s(612,908|
00004a30  2b 38 30 2a b5 28 4e 2b  30 2e 34 29 2c 22 69 22  |+80*.(N+0.4),"i"|
00004a40  29 0d 12 d4 a6 f2 77 69  70 65 28 36 34 38 2c 39  |).....wipe(648,9|
00004a50  30 38 2b 38 30 2a b5 28  4e 2b 30 2e 34 29 29 3a  |08+80*.(N+0.4)):|
00004a60  f2 73 28 36 34 38 2c 39  30 38 2b 38 30 2a b5 28  |.s(648,908+80*.(|
00004a70  4e 2b 30 2e 36 29 2c 22  67 22 29 3a f2 77 69 70  |N+0.6),"g"):.wip|
00004a80  65 28 36 38 34 2c 39 30  38 2b 38 30 2a b5 28 4e  |e(684,908+80*.(N|
00004a90  2b 30 2e 36 29 29 3a f2  73 28 36 38 34 2c 39 30  |+0.6)):.s(684,90|
00004aa0  38 2b 38 30 2a b5 28 4e  2b 30 2e 38 29 2c 22 6d  |8+80*.(N+0.8),"m|
00004ab0  22 29 3a f2 77 69 70 65  28 37 32 30 2c 39 30 38  |"):.wipe(720,908|
00004ac0  2b 38 30 2a b5 28 4e 2b  30 2e 38 29 29 3a f2 73  |+80*.(N+0.8)):.s|
00004ad0  28 37 32 30 2c 39 30 38  2b 38 30 2a b5 28 4e 2b  |(720,908+80*.(N+|
00004ae0  31 29 2c 22 61 22 29 0d  12 de 15 54 25 3d 91 3a  |1),"a")....T%=.:|
00004af0  4e 3d 4e 2b 30 2e 32 3a  e7 4e 3d 32 0d 12 e8 23  |N=N+0.2:.N=2...#|
00004b00  f5 fd 91 3e 54 25 2b 35  3a c8 97 78 25 2c 79 25  |...>T%+5:..x%,y%|
00004b10  2c 62 25 3a fd 62 25 3d  34 3a c8 97 ee 3a e1 0d  |,b%:.b%=4:...:..|
00004b20  12 f2 05 3a 0d 12 fc 38  dd f2 68 69 67 68 73 63  |...:...8..highsc|
00004b30  6f 72 65 3a ef 35 3a f2  67 65 74 61 73 74 72 69  |ore:.5:.getastri|
00004b40  6e 67 28 31 30 2c 38 29  3a e7 73 63 6f 72 65 25  |ng(10,8):.score%|
00004b50  3c a0 28 24 62 6c 63 6b  25 29 3a e1 0d 13 06 45  |<.($blck%):....E|
00004b60  4d 3d 30 3a f5 20 f2 67  65 74 61 73 74 72 69 6e  |M=0:. .getastrin|
00004b70  67 28 31 30 2b 4d 2a 31  38 2c 38 29 3a 4d 3d 4d  |g(10+M*18,8):M=M|
00004b80  2b 31 3a fd 73 63 6f 72  65 25 3c a0 28 24 62 6c  |+1:.score%<.($bl|
00004b90  63 6b 25 29 20 84 20 4d  3d 31 30 3a 4d 3d 4d 2d  |ck%) . M=10:M=M-|
00004ba0  32 0d 13 10 4e e7 4d 3c  3e 30 e3 4e 3d 30 b8 4d  |2...N.M<>0.N=0.M|
00004bb0  2d 31 3a e3 78 25 3d 30  b8 31 37 3a 68 69 67 68  |-1:.x%=0.17:high|
00004bc0  73 63 6f 72 65 73 25 3f  28 4e 2a 31 38 2b 78 25  |scores%?(N*18+x%|
00004bd0  29 3d 68 69 67 68 73 63  6f 72 65 73 25 3f 28 28  |)=highscores%?((|
00004be0  4e 2b 31 29 2a 31 38 2b  78 25 29 3a ed 3a ed 0d  |N+1)*18+x%):.:..|
00004bf0  13 1a 16 f2 73 63 6f 72  65 73 5f 64 69 73 70 6c  |....scores_displ|
00004c00  61 79 28 4d 29 0d 13 24  3e 79 25 3d 31 36 38 2b  |ay(M)..$>y%=168+|
00004c10  28 4d 2a 34 38 29 3a f2  66 75 6e 6b 79 74 65 78  |(M*48):.funkytex|
00004c20  74 58 28 c4 38 2d a9 c3  73 63 6f 72 65 25 2c 22  |tX(.8-..score%,"|
00004c30  30 22 29 2b c3 73 63 6f  72 65 25 2c 37 30 30 2c  |0")+.score%,700,|
00004c40  79 25 29 0d 13 2e 3d ef  32 33 2c 31 37 2c 37 2c  |y%)...=.23,17,7,|
00004c50  36 2c 39 3b 31 36 3b 30  3b 3a e6 32 c8 9c 36 34  |6,9;16;0;:.2..64|
00004c60  3a ec 33 30 30 2c 79 25  2b 34 38 3a f1 22 2d 2d  |:.300,y%+48:."--|
00004c70  2d 2d 2d 2d 2d 2d 2d 2d  22 3a 2a 66 58 20 31 35  |--------":*fX 15|
00004c80  0d 13 38 8b 4e 3d 30 3a  f5 f5 78 25 3d a5 3a fd  |..8.N=0:..x%=.:.|
00004c90  78 25 3e 36 34 80 78 25  3c 39 31 84 78 25 3d 33  |x%>64.x%<91.x%=3|
00004ca0  32 84 78 25 3d 31 32 37  84 78 25 3d 31 33 3a e7  |2.x%=127.x%=13:.|
00004cb0  4e 3c 3e 31 30 80 78 25  3c 3e 31 32 37 80 78 25  |N<>10.x%<>127.x%|
00004cc0  3c 3e 31 33 e6 32 c8 9c  30 3a c8 93 c8 90 33 30  |<>13.2..0:....30|
00004cd0  30 2b 4e 2a 33 36 2c 79  25 2c 33 36 2c 34 30 3a  |0+N*36,y%,36,40:|
00004ce0  62 6c 63 6b 25 3f 4e 3d  78 25 3a 4e 3d 4e 2b 31  |blck%?N=x%:N=N+1|
00004cf0  3a e7 78 25 3c 3e 33 32  f2 73 28 32 36 34 2b 4e  |:.x%<>32.s(264+N|
00004d00  2a 33 36 2c 79 25 2c bd  78 25 29 0d 13 42 4c e7  |*36,y%,.x%)..BL.|
00004d10  78 25 3d 31 32 37 80 4e  3e 30 4e 3d 4e 2d 31 3a  |x%=127.N>0N=N-1:|
00004d20  e6 32 c8 9c 30 3a c8 93  c8 90 33 30 30 2b 4e 2a  |.2..0:....300+N*|
00004d30  33 36 2c 79 25 2c 33 36  2c 34 30 3a e6 32 c8 9c  |36,y%,36,40:.2..|
00004d40  36 34 3a ec 33 30 30 2b  4e 2a 33 36 2c 79 25 2b  |64:.300+N*36,y%+|
00004d50  34 38 3a f1 22 2d 22 0d  13 4c 25 fd 78 25 3d 31  |48:."-"..L%.x%=1|
00004d60  33 3a e7 4e 3c 3e 31 30  e3 4e 3d 4e 20 b8 39 3a  |3:.N<>10.N=N .9:|
00004d70  62 6c 63 6b 25 3f 4e 3d  33 32 3a ed 0d 13 56 72  |blck%?N=32:...Vr|
00004d80  e3 4e 3d 30 b8 39 3a 68  69 67 68 73 63 6f 72 65  |.N=0.9:highscore|
00004d90  73 25 3f 28 4d 2a 31 38  2b 4e 29 3d 62 6c 63 6b  |s%?(M*18+N)=blck|
00004da0  25 3f 4e 3a ed 3a 24 62  6c 63 6b 25 3d c4 38 2d  |%?N:.:$blck%=.8-|
00004db0  a9 c3 73 63 6f 72 65 25  2c 22 30 22 29 2b c3 73  |..score%,"0")+.s|
00004dc0  63 6f 72 65 25 3a e3 4e  3d 30 b8 37 3a 68 69 67  |core%:.N=0.7:hig|
00004dd0  68 73 63 6f 72 65 73 25  3f 28 4d 2a 31 38 2b 31  |hscores%?(M*18+1|
00004de0  30 2b 4e 29 3d 62 6c 63  6b 25 3f 4e 3a ed 0d 13  |0+N)=blck%?N:...|
00004df0  60 12 50 25 3d b9 3a f2  73 63 6f 72 65 73 3a e1  |`.P%=.:.scores:.|
00004e00  0d 13 6a 05 3a 0d 13 74  80 dd f2 73 63 6f 72 65  |..j.:..t...score|
00004e10  73 5f 64 69 73 70 6c 61  79 28 4d 29 3a e6 30 c8  |s_display(M):.0.|
00004e20  9c 30 3a c8 93 c8 90 30  2c 30 2c 31 32 37 39 2c  |.0:....0,0,1279,|
00004e30  31 30 32 33 3a f2 66 72  61 6d 65 28 32 36 30 2c  |1023:.frame(260,|
00004e40  31 31 38 2c 37 36 30 2c  37 30 30 2c 32 29 3a f2  |118,760,700,2):.|
00004e50  66 72 61 6d 65 28 34 30  30 2c 36 39 38 2c 34 38  |frame(400,698,48|
00004e60  30 2c 38 30 2c 32 29 3a  f2 66 75 6e 6b 79 74 65  |0,80,2):.funkyte|
00004e70  78 74 28 22 48 49 47 48  20 53 43 4f 52 45 53 22  |xt("HIGH SCORES"|
00004e80  2c 37 32 30 29 0d 13 7e  8b e3 79 25 3d 39 b8 30  |,720)..~..y%=9.0|
00004e90  88 2d 31 3a e7 79 25 3c  3e 4d 3a f2 67 65 74 61  |.-1:.y%<>M:.geta|
00004ea0  73 74 72 69 6e 67 28 79  25 2a 31 38 2c 31 30 29  |string(y%*18,10)|
00004eb0  3a f2 66 75 6e 6b 79 74  65 78 74 58 28 24 62 6c  |:.funkytextX($bl|
00004ec0  63 6b 25 2c 33 30 30 2c  31 36 38 2b 28 79 25 2a  |ck%,300,168+(y%*|
00004ed0  34 38 29 29 3a f2 67 65  74 61 73 74 72 69 6e 67  |48)):.getastring|
00004ee0  28 31 30 2b 79 25 2a 31  38 2c 38 29 3a f2 66 75  |(10+y%*18,8):.fu|
00004ef0  6e 6b 79 74 65 78 74 58  28 24 62 6c 63 6b 25 2c  |nkytextX($blck%,|
00004f00  37 30 30 2c 31 36 38 2b  28 79 25 2a 34 38 29 29  |700,168+(y%*48))|
00004f10  0d 13 88 07 ed 3a e1 0d  13 92 05 3a 0d 13 9c 53  |.....:.....:...S|
00004f20  dd f2 67 65 74 61 73 74  72 69 6e 67 28 78 25 2c  |..getastring(x%,|
00004f30  79 25 29 3a ea 4e 3a 78  25 3d 78 25 2b 68 69 67  |y%):.N:x%=x%+hig|
00004f40  68 73 63 6f 72 65 73 25  3a e3 4e 3d 30 b8 79 25  |hscores%:.N=0.y%|
00004f50  2d 31 3a 62 6c 63 6b 25  3f 4e 3d 78 25 3f 4e 3a  |-1:blck%?N=x%?N:|
00004f60  ed 3a 62 6c 63 6b 25 3f  79 25 3d 31 33 3a e1 0d  |.:blck%?y%=13:..|
00004f70  13 a6 05 3a 0d 13 b0 0e  f4 20 50 61 73 73 77 6f  |...:..... Passwo|
00004f80  72 64 0d 13 ba e8 dd a4  6c 65 76 65 6c 3a ef 32  |rd......level:.2|
00004f90  36 2c 35 3a e6 30 c8 9c  30 3a c8 93 c8 90 30 2c  |6,5:.0..0:....0,|
00004fa0  30 2c 31 32 37 39 2c 31  30 32 33 3a c8 97 87 3a  |0,1279,1023:...:|
00004fb0  f2 66 72 61 6d 65 28 33  30 30 2c 32 31 38 2c 36  |.frame(300,218,6|
00004fc0  38 30 2c 35 30 30 2c 32  29 3a f2 66 72 61 6d 65  |80,500,2):.frame|
00004fd0  28 34 30 30 2c 36 30 32  2c 34 38 30 2c 38 30 2c  |(400,602,480,80,|
00004fe0  32 29 3a f2 66 75 6e 6b  79 74 65 78 74 28 22 50  |2):.funkytext("P|
00004ff0  41 53 53 57 4f 52 44 22  2c 36 32 34 29 3a ef 32  |ASSWORD",624):.2|
00005000  33 2c 31 37 2c 37 2c 36  2c 34 3b 38 3b 30 3b 3a  |3,17,7,6,4;8;0;:|
00005010  f2 62 74 28 22 45 6e 74  65 72 20 6c 65 76 65 6c  |.bt("Enter level|
00005020  20 70 61 73 73 77 6f 72  64 22 2c 34 38 30 2c 35  | password",480,5|
00005030  30 30 29 3a ef 32 33 2c  31 37 2c 37 2c 36 2c 39  |00):.23,17,7,6,9|
00005040  3b 31 36 3b 30 3b 3a e6  32 c8 9c 36 34 3a ec 34  |;16;0;:.2..64:.4|
00005050  37 38 2c 33 34 38 3a f1  22 2d 2d 2d 2d 2d 2d 2d  |78,348:."-------|
00005060  2d 2d 22 3a 2a 66 58 20  31 35 0d 13 c4 7b 73 24  |--":*fX 15...{s$|
00005070  3d 22 22 3a 4e 3d 30 3a  f5 f5 4d 3d a5 3a fd 4d  |="":N=0:..M=.:.M|
00005080  3e 36 34 80 4d 3c 39 31  84 4d 3d 31 32 37 84 4d  |>64.M<91.M=127.M|
00005090  3d 31 33 3a e7 4e 3c 3e  39 80 4d 3c 3e 31 32 37  |=13:.N<>9.M<>127|
000050a0  80 4d 3c 3e 31 33 e6 32  c8 9c 30 3a c8 93 c8 90  |.M<>13.2..0:....|
000050b0  34 37 34 2b 4e 2a 33 36  2c 33 30 30 2c 33 36 2c  |474+N*36,300,36,|
000050c0  34 30 3a f2 73 28 34 37  38 2b 4e 2a 33 36 2c 33  |40:.s(478+N*36,3|
000050d0  30 30 2c bd 4d 29 3a 73  24 3d 73 24 2b bd 4d 3a  |00,.M):s$=s$+.M:|
000050e0  4e 3d 4e 2b 31 0d 13 ce  58 e7 4d 3d 31 32 37 80  |N=N+1...X.M=127.|
000050f0  4e 3e 30 4e 3d 4e 2d 31  3a 73 24 3d c0 73 24 2c  |N>0N=N-1:s$=.s$,|
00005100  a9 73 24 2d 31 29 3a e6  32 c8 9c 30 3a c8 93 c8  |.s$-1):.2..0:...|
00005110  90 34 37 34 2b 4e 2a 33  36 2c 33 30 30 2c 33 36  |.474+N*36,300,36|
00005120  2c 34 30 3a e6 32 c8 9c  36 34 3a ec 34 37 38 2b  |,40:.2..64:.478+|
00005130  4e 2a 33 36 2c 33 34 38  3a f1 22 2d 22 0d 13 d8  |N*36,348:."-"...|
00005140  1f fd 4d 3d 31 33 3a e7  a9 73 24 3c 3e 39 f2 6d  |..M=13:..s$<>9.m|
00005150  65 6e 75 73 63 72 65 65  6e 3a 3d 31 0d 13 e2 3f  |enuscreen:=1...?|
00005160  58 25 3d 8e 22 69 6e 66  6f 22 3a cf 23 58 25 3d  |X%=."info":.#X%=|
00005170  31 3a 4e 3d 31 3a f5 4e  3d 4e 2b 31 3a 61 24 3d  |1:N=1:.N=N+1:a$=|
00005180  22 22 3a e3 4d 3d 31 b8  39 3a 61 24 3d 61 24 2b  |"":.M=1.9:a$=a$+|
00005190  bd 28 9a 23 58 25 2b 31  29 3a ed 0d 13 ec 2a fd  |.(.#X%+1):....*.|
000051a0  73 24 3d 61 24 84 4e 3d  6c 25 3a d9 23 30 3a e7  |s$=a$.N=l%:.#0:.|
000051b0  73 24 3c 3e 61 24 3a f2  6d 65 6e 75 73 63 72 65  |s$<>a$:.menuscre|
000051c0  65 6e 3a 3d 31 0d 13 f6  86 6c 65 76 65 6c 25 3d  |en:=1....level%=|
000051d0  4e 3a f2 66 72 61 6d 65  28 33 30 30 2c 32 31 38  |N:.frame(300,218|
000051e0  2c 36 38 30 2c 35 30 30  2c 32 29 3a f2 66 75 6e  |,680,500,2):.fun|
000051f0  6b 79 74 65 78 74 28 22  50 41 53 53 57 4f 52 44  |kytext("PASSWORD|
00005200  20 4f 4b 22 2c 36 32 34  29 3a f2 66 75 6e 6b 79  | OK",624):.funky|
00005210  74 65 78 74 28 22 45 4e  54 52 59 20 54 4f 20 4c  |text("ENTRY TO L|
00005220  45 56 45 4c 22 2c 34 35  30 29 3a f2 66 75 6e 6b  |EVEL",450):.funk|
00005230  79 74 65 78 74 28 c3 28  6c 65 76 65 6c 25 29 2c  |ytext(.(level%),|
00005240  33 35 30 29 3a 2a 66 58  20 31 35 0d 14 00 1d f5  |350):*fX 15.....|
00005250  c8 97 78 25 2c 79 25 2c  62 25 3a fd 62 25 3d 34  |..x%,y%,b%:.b%=4|
00005260  3a 3d 6c 65 76 65 6c 25  0d 14 0a 05 3a 0d 14 14  |:=level%....:...|
00005270  33 f4 20 4d 61 69 6e 6c  79 20 6d 65 6e 75 20 72  |3. Mainly menu r|
00005280  6f 75 74 69 6e 65 73 20  61 6e 64 20 70 72 65 74  |outines and pret|
00005290  74 79 20 70 69 63 74 75  72 65 20 73 74 75 66 66  |ty picture stuff|
000052a0  0d 14 1e d4 dd f2 66 72  61 6d 65 28 78 25 2c 79  |......frame(x%,y|
000052b0  25 2c 78 6c 25 2c 79 6c  25 2c 63 25 29 3a e6 30  |%,xl%,yl%,c%):.0|
000052c0  c8 9c 30 3a c8 93 c8 90  78 25 2d 34 2c 79 25 2d  |..0:....x%-4,y%-|
000052d0  34 2c 78 6c 25 2b 38 2c  79 6c 25 2b 38 3a e6 63  |4,xl%+8,yl%+8:.c|
000052e0  25 c8 9c 36 34 3a c8 93  c8 90 78 25 2c 79 25 2c  |%..64:....x%,y%,|
000052f0  78 6c 25 2c 79 6c 25 3a  e6 63 25 c8 9c 31 39 32  |xl%,yl%:.c%..192|
00005300  3a ec 78 25 2c 79 25 3a  ec 78 25 2b 31 30 2c 79  |:.x%,y%:.x%+10,y|
00005310  25 2b 31 30 3a f0 26 35  35 2c 78 25 2c 79 25 2b  |%+10:.&55,x%,y%+|
00005320  79 6c 25 3a f0 26 35 35  2c 78 25 2b 78 6c 25 2d  |yl%:.&55,x%+xl%-|
00005330  32 30 2c 79 25 2b 79 6c  25 2d 32 30 3a f0 26 35  |20,y%+yl%-20:.&5|
00005340  35 2c 78 25 2b 78 6c 25  2c 79 25 2b 79 6c 25 3a  |5,x%+xl%,y%+yl%:|
00005350  e6 63 25 c8 9c 30 3a c8  93 c8 90 78 25 2b 31 30  |.c%..0:....x%+10|
00005360  2c 79 25 2b 31 30 2c 78  6c 25 2d 32 30 2c 79 6c  |,y%+10,xl%-20,yl|
00005370  25 2d 32 30 0d 14 28 b2  e6 30 c8 9c 30 3a c8 93  |%-20..(..0..0:..|
00005380  c8 90 78 25 2c 79 25 2b  79 6c 25 2d 31 36 2c 34  |..x%,y%+yl%-16,4|
00005390  2c 31 36 3a c8 93 c8 90  78 25 2c 79 25 2b 79 6c  |,16:....x%,y%+yl|
000053a0  25 2d 34 2c 31 36 2c 34  3a c8 93 c8 90 78 25 2b  |%-4,16,4:....x%+|
000053b0  78 6c 25 2d 31 36 2c 79  25 2c 31 36 2c 34 3a c8  |xl%-16,y%,16,4:.|
000053c0  93 c8 90 78 25 2b 78 6c  25 2d 34 2c 79 25 2c 34  |...x%+xl%-4,y%,4|
000053d0  2c 31 36 3a e6 31 31 c8  9c 30 3a ec 78 25 2c 79  |,16:.11..0:.x%,y|
000053e0  25 2b 79 6c 25 2d 31 32  3a f0 31 2c 30 2c 31 32  |%+yl%-12:.1,0,12|
000053f0  3a e6 33 31 c8 9c 30 3a  f0 31 2c 31 32 2c 30 3a  |:.31..0:.1,12,0:|
00005400  ec 78 25 2b 78 6c 25 2d  31 32 2c 79 25 3a f0 31  |.x%+xl%-12,y%:.1|
00005410  2c 31 32 2c 30 3a e6 31  31 c8 9c 30 3a f0 31 2c  |,12,0:.11..0:.1,|
00005420  30 2c 31 32 3a e1 0d 14  32 05 3a 0d 14 3c 96 dd  |0,12:...2.:..<..|
00005430  f2 62 75 74 74 6f 6e 28  78 25 2c 79 25 2c 63 25  |.button(x%,y%,c%|
00005440  29 3a e6 30 c8 9c 30 3a  c8 93 c8 90 78 25 2d 34  |):.0..0:....x%-4|
00005450  2c 79 25 2d 34 2c 32 30  38 2c 31 35 38 3a e6 63  |,y%-4,208,158:.c|
00005460  25 c8 9c 36 34 3a ec 78  25 2b 32 30 30 2c 79 25  |%..64:.x%+200,y%|
00005470  3a ec 78 25 2c 79 25 3a  f0 26 35 35 2c 78 25 2b  |:.x%,y%:.&55,x%+|
00005480  32 30 30 2c 79 25 2b 31  35 30 3a e6 63 25 c8 9c  |200,y%+150:.c%..|
00005490  31 39 32 3a f0 26 35 35  2c 78 25 2c 79 25 2b 31  |192:.&55,x%,y%+1|
000054a0  35 30 3a e6 63 25 c8 9c  30 3a c8 93 c8 90 78 25  |50:.c%..0:....x%|
000054b0  2b 31 30 2c 79 25 2b 31  30 2c 31 38 30 2c 31 33  |+10,y%+10,180,13|
000054c0  30 0d 14 46 a2 e6 30 c8  9c 30 3a c8 93 c8 90 78  |0..F..0..0:....x|
000054d0  25 2c 79 25 2b 31 33 34  2c 34 2c 31 36 3a c8 93  |%,y%+134,4,16:..|
000054e0  c8 90 78 25 2c 79 25 2b  31 34 36 2c 31 36 2c 34  |..x%,y%+146,16,4|
000054f0  3a c8 93 c8 90 78 25 2b  31 38 34 2c 79 25 2c 31  |:....x%+184,y%,1|
00005500  36 2c 34 3a c8 93 c8 90  78 25 2b 31 39 36 2c 79  |6,4:....x%+196,y|
00005510  25 2c 34 2c 31 36 3a e6  31 31 c8 9c 30 3a ec 78  |%,4,16:.11..0:.x|
00005520  25 2c 79 25 2b 31 33 38  3a f0 31 2c 30 2c 31 32  |%,y%+138:.1,0,12|
00005530  3a e6 33 31 c8 9c 30 3a  f0 31 2c 31 32 2c 30 3a  |:.31..0:.1,12,0:|
00005540  ec 78 25 2b 31 38 38 2c  79 25 3a f0 31 2c 31 32  |.x%+188,y%:.1,12|
00005550  2c 30 3a e6 31 31 c8 9c  30 3a f0 31 2c 30 2c 31  |,0:.11..0:.1,0,1|
00005560  32 3a e1 0d 14 50 05 3a  0d 14 5a 73 dd f2 73 70  |2:...P.:..Zs..sp|
00005570  72 69 74 65 28 78 25 2c  79 25 2c 73 25 29 3a c8  |rite(x%,y%,s%):.|
00005580  99 22 4f 53 5f 53 70 72  69 74 65 4f 70 22 2c 26  |."OS_SpriteOp",&|
00005590  32 32 2b 35 31 32 2c 73  70 72 69 74 65 73 25 2c  |22+512,sprites%,|
000055a0  31 36 2b 73 70 72 69 74  65 73 25 2b 28 31 36 34  |16+sprites%+(164|
000055b0  2a 28 73 25 80 36 33 29  29 2c 78 25 2c 79 25 2c  |*(s%.63)),x%,y%,|
000055c0  30 3a e7 73 25 3e 31 32  37 f2 73 28 78 25 2c 79  |0:.s%>127.s(x%,y|
000055d0  25 2c 22 73 74 61 74 69  63 22 29 0d 14 64 05 e1  |%,"static")..d..|
000055e0  0d 14 6e 48 dd f2 73 28  78 25 2c 79 25 2c 24 62  |..nH..s(x%,y%,$b|
000055f0  6c 63 6b 25 29 3a c8 99  22 4f 53 5f 53 70 72 69  |lck%):.."OS_Spri|
00005600  74 65 4f 70 22 2c 26 32  32 2b 32 35 36 2c 73 70  |teOp",&22+256,sp|
00005610  72 69 74 65 73 25 2c 62  6c 63 6b 25 2c 78 25 2c  |rites%,blck%,x%,|
00005620  79 25 2c 26 30 38 3a e1  0d 14 78 2c dd f2 63 65  |y%,&08:...x,..ce|
00005630  6e 74 72 65 74 65 78 74  28 61 24 2c 79 25 29 3a  |ntretext(a$,y%):|
00005640  ec 36 34 30 2d a9 61 24  2a 31 36 2c 79 25 3a f1  |.640-.a$*16,y%:.|
00005650  61 24 3a e1 0d 14 82 85  dd f2 66 75 6e 6b 79 74  |a$:.......funkyt|
00005660  65 78 74 28 61 24 2c 79  25 29 3a 78 25 3d 36 34  |ext(a$,y%):x%=64|
00005670  30 2d 28 a9 61 24 2a 33  36 29 81 32 3a e6 38 2c  |0-(.a$*36).2:.8,|
00005680  30 3a e3 4e 3d 31 b8 a9  61 24 3a e7 97 c1 61 24  |0:.N=1..a$:...a$|
00005690  2c 4e 29 3e 36 34 80 97  c1 61 24 2c 4e 29 3c 39  |,N)>64...a$,N)<9|
000056a0  31 20 f2 73 28 78 25 2c  79 25 2c c1 61 24 2c 4e  |1 .s(x%,y%,.a$,N|
000056b0  2c 31 29 29 20 8b 20 e7  97 c1 61 24 2c 4e 29 3c  |,1)) . ...a$,N)<|
000056c0  3e 33 32 f2 73 28 78 25  2c 79 25 2c 22 6e 22 2b  |>32.s(x%,y%,"n"+|
000056d0  c1 61 24 2c 4e 2c 31 29  29 0d 14 8c 10 78 25 3d  |.a$,N,1))....x%=|
000056e0  78 25 2b 33 36 3a ed 3a  e1 0d 14 96 77 dd f2 66  |x%+36:.:....w..f|
000056f0  75 6e 6b 79 74 65 78 74  58 28 61 24 2c 78 25 2c  |unkytextX(a$,x%,|
00005700  79 25 29 3a e6 38 2c 30  3a e3 4e 3d 31 b8 a9 61  |y%):.8,0:.N=1..a|
00005710  24 3a e7 97 c1 61 24 2c  4e 29 3e 36 34 80 97 c1  |$:...a$,N)>64...|
00005720  61 24 2c 4e 29 3c 39 31  20 f2 73 28 78 25 2c 79  |a$,N)<91 .s(x%,y|
00005730  25 2c c1 61 24 2c 4e 2c  31 29 29 20 8b 20 e7 97  |%,.a$,N,1)) . ..|
00005740  c1 61 24 2c 4e 29 3c 3e  33 32 f2 73 28 78 25 2c  |.a$,N)<>32.s(x%,|
00005750  79 25 2c 22 6e 22 2b c1  61 24 2c 4e 2c 31 29 29  |y%,"n"+.a$,N,1))|
00005760  0d 14 a0 60 dd f2 62 74  28 73 24 2c 78 25 2c 79  |...`..bt(s$,x%,y|
00005770  25 29 3a e6 30 c8 9c 30  3a ec 78 25 2c 79 25 2b  |%):.0..0:.x%,y%+|
00005780  34 3a f1 73 24 3a ec 78  25 2c 79 25 2d 34 3a f1  |4:.s$:.x%,y%-4:.|
00005790  73 24 3a ec 78 25 2d 34  2c 79 25 3a f1 73 24 3a  |s$:.x%-4,y%:.s$:|
000057a0  ec 78 25 2b 34 2c 79 25  3a f1 73 24 3a e6 31 31  |.x%+4,y%:.s$:.11|
000057b0  c8 9c 30 3a ec 78 25 2c  79 25 3a f1 73 24 3a e1  |..0:.x%,y%:.s$:.|
000057c0  0d 14 aa 10 78 25 3d 78  25 2b 33 36 3a ed 3a e1  |....x%=x%+36:.:.|
000057d0  0d 14 b4 3d dd a4 6d 72  28 78 31 25 2c 79 31 25  |...=..mr(x1%,y1%|
000057e0  2c 78 32 25 2c 79 32 25  29 3a e7 78 25 3e 78 31  |,x2%,y2%):.x%>x1|
000057f0  25 80 78 25 3c 78 32 25  80 79 25 3e 79 31 25 80  |%.x%<x2%.y%>y1%.|
00005800  79 25 3c 79 32 25 3d b9  20 8b 20 3d a3 0d 14 be  |y%<y2%=. . =....|
00005810  05 3a 0d 14 c8 2c f4 20  44 72 61 77 20 74 68 65  |.:...,. Draw the|
00005820  20 6d 65 6e 75 20 61 6e  64 20 73 63 72 6f 6c 6c  | menu and scroll|
00005830  20 74 68 65 20 6d 65 67  61 2d 74 65 78 74 0d 14  | the mega-text..|
00005840  d2 c4 dd f2 6d 65 6e 75  73 63 72 65 65 6e 3a e6  |....menuscreen:.|
00005850  30 c8 9c 30 3a c8 93 c8  90 30 2c 30 2c 31 32 37  |0..0:....0,0,127|
00005860  39 2c 31 30 32 33 3a ef  35 2c 32 33 2c 32 2c 32  |9,1023:.5,23,2,2|
00005870  35 2c 30 2c 32 35 2c 30  2c 32 35 2c 30 2c 32 35  |5,0,25,0,25,0,25|
00005880  2c 30 2c 32 33 2c 33 2c  30 2c 32 35 2c 30 2c 32  |,0,23,3,0,25,0,2|
00005890  35 2c 30 2c 32 35 2c 30  2c 32 35 2c 32 33 2c 34  |5,0,25,0,25,23,4|
000058a0  2c 32 35 2c 30 2c 32 35  2c 30 2c 32 35 2c 30 2c  |,25,0,25,0,25,0,|
000058b0  32 35 2c 30 2c 32 33 2c  35 2c 30 2c 32 35 2c 30  |25,0,23,5,0,25,0|
000058c0  2c 32 35 2c 30 2c 32 35  2c 30 2c 32 35 3a ef 32  |,25,0,25,0,25:.2|
000058d0  36 3a e6 30 2c 30 3a c8  93 c8 90 32 34 2c 32 34  |6:.0,0:....24,24|
000058e0  2c 31 32 32 38 2c 39 37  35 3a e6 38 30 2c 30 3a  |,1228,975:.80,0:|
000058f0  c8 93 c8 90 32 38 2c 32  38 2c 31 32 32 32 2c 39  |....28,28,1222,9|
00005900  36 37 0d 14 dc 68 e6 38  2c 30 3a f2 73 28 35 34  |67...h.8,0:.s(54|
00005910  30 2c 38 35 30 2c 22 65  22 29 3a f2 73 28 35 37  |0,850,"e"):.s(57|
00005920  36 2c 38 35 30 2c 22 6e  22 29 3a f2 73 28 36 30  |6,850,"n"):.s(60|
00005930  38 2c 38 35 30 2c 22 69  22 29 3a f2 73 28 36 34  |8,850,"i"):.s(64|
00005940  30 2c 38 35 30 2c 22 67  22 29 3a f2 73 28 36 37  |0,850,"g"):.s(67|
00005950  36 2c 38 35 30 2c 22 6d  22 29 3a f2 73 28 37 31  |6,850,"m"):.s(71|
00005960  32 2c 38 35 30 2c 22 61  22 29 0d 14 e6 d7 ef 32  |2,850,"a").....2|
00005970  33 2c 31 37 2c 37 2c 36  2c 38 3b 34 3b 30 3b 3a  |3,17,7,6,8;4;0;:|
00005980  e6 34 38 c8 9c 31 39 32  3a f2 63 65 6e 74 72 65  |.48..192:.centre|
00005990  74 65 78 74 28 22 62 79  22 2c 37 30 30 29 3a f2  |text("by",700):.|
000059a0  63 65 6e 74 72 65 74 65  78 74 28 22 50 65 74 65  |centretext("Pete|
000059b0  20 47 6f 6f 64 6c 69 66  66 65 22 2c 36 37 30 29  | Goodliffe",670)|
000059c0  3a e6 31 35 c8 9c 30 3a  f2 63 65 6e 74 72 65 74  |:.15..0:.centret|
000059d0  65 78 74 28 22 54 72 61  78 20 53 6f 66 74 77 61  |ext("Trax Softwa|
000059e0  72 65 22 2c 36 31 30 29  3a f2 63 65 6e 74 72 65  |re",610):.centre|
000059f0  74 65 78 74 28 22 31 39  39 32 22 2c 35 38 30 29  |text("1992",580)|
00005a00  3a e6 31 32 c8 9c 30 3a  f2 63 65 6e 74 72 65 74  |:.12..0:.centret|
00005a10  65 78 74 28 22 50 6c 65  61 73 65 20 73 65 6c 65  |ext("Please sele|
00005a20  63 74 20 63 68 6f 69 63  65 22 2c 33 35 30 29 3a  |ct choice",350):|
00005a30  ef 32 33 2c 31 37 2c 37  2c 36 2c 38 3b 38 3b 30  |.23,17,7,6,8;8;0|
00005a40  3b 0d 14 f0 c7 f2 62 75  74 74 6f 6e 28 31 33 33  |;.....button(133|
00005a50  2c 34 30 30 2c 32 29 3a  f2 62 75 74 74 6f 6e 28  |,400,2):.button(|
00005a60  34 30 35 2c 34 30 30 2c  34 29 3a f2 62 75 74 74  |405,400,4):.butt|
00005a70  6f 6e 28 36 37 33 2c 34  30 30 2c 31 37 29 3a f2  |on(673,400,17):.|
00005a80  62 75 74 74 6f 6e 28 39  34 35 2c 34 30 30 2c 33  |button(945,400,3|
00005a90  32 29 3a ef 32 33 2c 31  37 2c 37 2c 36 2c 34 3b  |2):.23,17,7,6,4;|
00005aa0  38 3b 30 3b 3a f2 62 74  28 22 53 74 61 72 74 22  |8;0;:.bt("Start"|
00005ab0  2c 31 39 35 2c 34 39 30  29 3a f2 62 74 28 22 45  |,195,490):.bt("E|
00005ac0  78 69 74 22 2c 34 37 35  2c 34 39 30 29 3a f2 62  |xit",475,490):.b|
00005ad0  74 28 22 4e 65 77 20 4c  65 76 65 6c 22 2c 37 30  |t("New Level",70|
00005ae0  35 2c 34 39 30 29 3a f2  62 74 28 22 53 63 6f 72  |5,490):.bt("Scor|
00005af0  65 73 22 2c 39 39 39 2c  34 39 30 29 3a e6 38 30  |es",999,490):.80|
00005b00  2c 30 3a c8 97 ee 3a e1  0d 14 fa 05 3a 0d 15 04  |,0:...:.....:...|
00005b10  20 dd f2 74 65 78 74 3a  ea 4d 3a ef 32 34 2c 33  | ..text:.M:.24,3|
00005b20  32 3b 30 3b 31 32 34 37  3b 33 35 30 3b 0d 15 0e  |2;0;1247;350;...|
00005b30  75 4d 3d 4e 25 3a e3 5a  3d 30 b8 31 30 3a 78 25  |uM=N%:.Z=0.10:x%|
00005b40  3d 5a 2a 31 32 38 2d 53  25 2b 31 36 3a f2 77 69  |=Z*128-S%+16:.wi|
00005b50  70 65 28 78 25 2c 31 35  30 2b 31 30 30 2a b5 28  |pe(x%,150+100*.(|
00005b60  78 25 2f 33 38 30 2b 4e  2d 30 2e 32 29 29 3a 78  |x%/380+N-0.2)):x|
00005b70  25 3d 5a 2a 31 32 38 2d  53 25 3a e7 4a 25 3f 4d  |%=Z*128-S%:.J%?M|
00005b80  3e 30 f2 73 28 78 25 2c  31 35 30 2b 31 30 30 2a  |>0.s(x%,150+100*|
00005b90  b5 28 78 25 2f 33 38 30  2b 4e 29 2c bd 4a 25 3f  |.(x%/380+N),.J%?|
00005ba0  4d 29 0d 15 18 14 4d 3d  4d 2b 31 3a e7 4d 3d 6c  |M)....M=M+1:.M=l|
00005bb0  65 6e 20 4d 3d 30 0d 15  22 2f ed 3a 53 25 3d 53  |en M=0.."/.:S%=S|
00005bc0  25 2b 31 36 3a e7 53 25  3d 31 32 38 53 25 3d 30  |%+16:.S%=128S%=0|
00005bd0  3a 4e 25 3d 4e 25 2b 31  3a e7 4e 25 3d 6c 65 6e  |:N%=N%+1:.N%=len|
00005be0  20 4e 25 3d 30 0d 15 2c  13 4e 3d 4e 2b 30 2e 32  | N%=0..,.N=N+0.2|
00005bf0  3a e7 4e 3d 32 4e 3d 30  0d 15 36 05 e1 0d 15 40  |:.N=2N=0..6....@|
00005c00  23 dd f2 77 69 70 65 28  78 25 2c 79 25 29 3a c8  |#..wipe(x%,y%):.|
00005c10  93 c8 90 78 25 2c 79 25  2c 34 30 2c 34 30 3a e1  |...x%,y%,40,40:.|
00005c20  0d 15 4a 05 3a 0d 15 54  1e f4 20 57 68 6f 27 73  |..J.:..T.. Who's|
00005c30  20 61 20 63 6c 65 76 65  72 20 62 6f 79 20 74 68  | a clever boy th|
00005c40  65 6e 3f 0d 15 5e 48 dd  f2 63 6c 65 76 65 72 64  |en?..^H..cleverd|
00005c50  69 63 6b 3a f2 68 61 6c  6c 65 6c 75 6a 61 68 3a  |ick:.hallelujah:|
00005c60  54 25 3d 91 3a f5 fd 91  3e 54 25 2b 32 30 30 3a  |T%=.:...>T%+200:|
00005c70  f2 73 6d 6f 6f 74 68 77  61 76 65 3a 54 25 3d 91  |.smoothwave:T%=.|
00005c80  3a f5 fd 91 3e 54 25 2b  33 30 30 0d 15 68 38 e6  |:...>T%+300..h8.|
00005c90  30 c8 9c 30 3a c8 93 c8  90 30 2c 30 2c 31 32 37  |0..0:....0,0,127|
00005ca0  39 2c 31 30 32 33 3a f2  6d 6f 75 73 65 64 69 73  |9,1023:.mousedis|
00005cb0  63 3a c8 97 ee 31 32 39  3a c8 92 b8 36 30 38 2c  |c:...129:...608,|
00005cc0  33 34 38 0d 15 72 2b ef  32 34 2c 32 30 30 3b 34  |348..r+.24,200;4|
00005cd0  34 38 3b 31 30 38 30 3b  38 34 38 3b 3a ff 22 53  |48;1080;848;:."S|
00005ce0  63 72 65 65 6e 4c 6f 61  64 20 73 70 72 22 0d 15  |creenLoad spr"..|
00005cf0  7c 48 ef 35 2c 32 36 2c  32 33 2c 31 37 2c 37 2c  ||H.5,26,23,17,7,|
00005d00  36 2c 38 3b 36 3b 30 3b  3a e6 31 32 37 c8 9c 31  |6,8;6;0;:.127..1|
00005d10  39 32 3a f2 63 65 6e 74  72 65 74 65 78 74 28 22  |92:.centretext("|
00005d20  43 6f 6e 67 72 61 74 75  6c 61 74 69 6f 6e 73 21  |Congratulations!|
00005d30  22 2c 39 34 38 29 0d 15  86 43 ef 32 33 2c 31 37  |",948)...C.23,17|
00005d40  2c 37 2c 36 2c 38 3b 34  3b 30 3b 3a e6 31 32 37  |,7,6,8;4;0;:.127|
00005d50  c8 9c 30 3a f2 63 65 6e  74 72 65 74 65 78 74 28  |..0:.centretext(|
00005d60  22 59 6f 75 20 68 61 76  65 20 63 6f 6d 70 6c 65  |"You have comple|
00005d70  74 65 64 22 2c 32 32 30  29 0d 15 90 21 58 25 3d  |ted",220)...!X%=|
00005d80  8e 22 73 74 75 66 66 22  3a ef 32 33 2c 31 37 2c  |."stuff":.23,17,|
00005d90  37 2c 36 2c 38 3b 36 3b  30 3b 0d 15 9a 30 e6 31  |7,6,8;6;0;...0.1|
00005da0  31 c8 9c 31 32 38 3a 24  63 6f 64 65 25 3d be 23  |1..128:$code%=.#|
00005db0  58 25 3a f2 63 65 6e 74  72 65 74 65 78 74 28 24  |X%:.centretext($|
00005dc0  63 6f 64 65 25 2c 31 38  30 29 0d 15 a4 2f e6 31  |code%,180).../.1|
00005dd0  31 c8 9c 36 34 3a 24 63  6f 64 65 25 3d be 23 58  |1..64:$code%=.#X|
00005de0  25 3a f2 63 65 6e 74 72  65 74 65 78 74 28 24 63  |%:.centretext($c|
00005df0  6f 64 65 25 2c 31 34 30  29 0d 15 ae 2e e6 31 31  |ode%,140).....11|
00005e00  c8 9c 30 3a 24 63 6f 64  65 25 3d be 23 58 25 3a  |..0:$code%=.#X%:|
00005e10  f2 63 65 6e 74 72 65 74  65 78 74 28 24 63 6f 64  |.centretext($cod|
00005e20  65 25 2c 31 30 30 29 0d  15 b8 0f d9 23 58 25 3a  |e%,100).....#X%:|
00005e30  2a 66 58 20 31 35 0d 15  c2 58 f2 6d 6f 75 73 65  |*fX 15...X.mouse|
00005e40  77 61 69 74 69 6e 67 3a  c8 97 ee 31 32 39 3a c8  |waiting:...129:.|
00005e50  92 b8 36 30 38 2c 33 34  38 3a f2 79 6f 75 6c 69  |..608,348:.youli|
00005e60  74 74 6c 65 62 65 61 75  74 79 3a f5 f2 73 63 72  |ttlebeauty:..scr|
00005e70  6f 6c 6c 61 72 6f 75 6e  64 3a c8 97 78 25 2c 79  |ollaround:..x%,y|
00005e80  25 2c 62 25 3a fd 62 25  3d 34 3a c8 97 87 0d 15  |%,b%:.b%=4:.....|
00005e90  cc 2d e6 30 c8 9c 30 3a  c8 93 c8 90 30 2c 30 2c  |.-.0..0:....0,0,|
00005ea0  31 32 37 39 2c 33 30 30  3a c8 93 c8 90 30 2c 39  |1279,300:....0,9|
00005eb0  30 30 2c 31 32 37 39 2c  31 30 30 0d 15 d6 44 e3  |00,1279,100...D.|
00005ec0  4e 3d 30 b8 32 30 30 88  38 3a ec 30 2c 36 34 38  |N=0.200.8:.0,648|
00005ed0  2b 4e 3a f0 31 2c 31 32  37 39 2c 30 3a ec 30 2c  |+N:.1,1279,0:.0,|
00005ee0  36 34 38 2d 4e 3a f0 31  2c 31 32 37 39 2c 30 3a  |648-N:.1,1279,0:|
00005ef0  54 25 3d 91 3a f5 fd 91  3e 54 25 2b 32 3a ed 0d  |T%=.:...>T%+2:..|
00005f00  15 e0 44 e3 4e 3d 34 b8  32 30 34 88 38 3a ec 30  |..D.N=4.204.8:.0|
00005f10  2c 36 34 38 2b 4e 3a f0  31 2c 31 32 37 39 2c 30  |,648+N:.1,1279,0|
00005f20  3a ec 30 2c 36 34 38 2d  4e 3a f0 31 2c 31 32 37  |:.0,648-N:.1,127|
00005f30  39 2c 30 3a 54 25 3d 91  3a f5 fd 91 3e 54 25 2b  |9,0:T%=.:...>T%+|
00005f40  32 3a ed 0d 15 ea 11 f2  6d 6f 75 73 65 61 72 72  |2:......mousearr|
00005f50  6f 77 3a e1 0d 15 f4 05  3a 0d 15 fe 11 f4 20 53  |ow:.....:..... S|
00005f60  6f 75 6e 64 20 73 74 75  66 66 0d 16 08 3e dd f2  |ound stuff...>..|
00005f70  73 6d 6f 6f 74 68 77 61  76 65 3a ff 22 43 68 61  |smoothwave:."Cha|
00005f80  6e 6e 65 6c 56 6f 69 63  65 20 31 20 53 6d 6f 6f  |nnelVoice 1 Smoo|
00005f90  74 68 57 61 76 65 22 3a  d4 31 2c 33 38 33 2c 26  |thWave":.1,383,&|
00005fa0  31 38 30 30 2c 30 3a e1  0d 16 12 3a dd f2 63 79  |1800,0:....:..cy|
00005fb0  6d 62 61 6c 70 69 6e 67  3a ff 22 43 68 61 6e 6e  |mbalping:."Chann|
00005fc0  65 6c 56 6f 69 63 65 20  32 20 43 79 6d 62 61 6c  |elVoice 2 Cymbal|
00005fd0  22 3a d4 32 2c 33 38 33  2c 26 34 30 30 30 2c 30  |":.2,383,&4000,0|
00005fe0  3a e1 0d 16 1c 32 dd f2  62 65 6c 6c 3a ff 22 43  |:....2..bell:."C|
00005ff0  68 61 6e 6e 65 6c 56 6f  69 63 65 20 31 20 43 79  |hannelVoice 1 Cy|
00006000  6d 62 61 6c 22 3a d4 31  2c 33 38 33 2c 32 35 36  |mbal":.1,383,256|
00006010  2c 30 3a e1 0d 16 26 3e  dd f2 68 61 6c 6c 65 6c  |,0:...&>..hallel|
00006020  75 6a 61 68 3a ff 22 43  68 61 6e 6e 65 6c 56 6f  |ujah:."ChannelVo|
00006030  69 63 65 20 32 20 48 61  6c 6c 65 6c 75 6a 61 68  |ice 2 Hallelujah|
00006040  22 3a d4 32 2c 33 38 33  2c 26 31 36 30 30 2c 30  |":.2,383,&1600,0|
00006050  3a e1 0d 16 30 34 dd f2  6c 61 75 67 68 3a ff 22  |:...04..laugh:."|
00006060  43 68 61 6e 6e 65 6c 56  6f 69 63 65 20 31 20 4c  |ChannelVoice 1 L|
00006070  61 75 67 68 22 3a d4 31  2c 33 38 33 2c 26 31 38  |augh":.1,383,&18|
00006080  30 30 2c 30 3a e1 0d 16  3a 37 dd f2 61 63 69 64  |00,0:...:7..acid|
00006090  68 69 73 73 3a ff 22 43  68 61 6e 6e 65 6c 56 6f  |hiss:."ChannelVo|
000060a0  69 63 65 20 31 20 4c 61  75 67 68 22 3a d4 31 2c  |ice 1 Laugh":.1,|
000060b0  33 38 33 2c 26 31 38 30  30 2c 30 3a e1 0d 16 44  |383,&1800,0:...D|
000060c0  3a dd f2 66 75 6c 6c 67  75 72 67 6c 65 3a ff 22  |:..fullgurgle:."|
000060d0  43 68 61 6e 6e 65 6c 56  6f 69 63 65 20 32 20 47  |ChannelVoice 2 G|
000060e0  75 72 67 6c 65 22 3a d4  32 2c 33 38 33 2c 26 31  |urgle":.2,383,&1|
000060f0  33 30 30 2c 30 3a e1 0d  16 4e 3a dd f2 73 75 6e  |300,0:...N:..sun|
00006100  6b 67 75 72 67 6c 65 3a  ff 22 43 68 61 6e 6e 65  |kgurgle:."Channe|
00006110  6c 56 6f 69 63 65 20 31  20 47 75 72 67 6c 65 22  |lVoice 1 Gurgle"|
00006120  3a d4 31 2c 33 38 33 2c  26 32 30 30 30 2c 30 3a  |:.1,383,&2000,0:|
00006130  e1 0d 16 58 3a dd f2 76  64 75 73 65 76 65 6e 3a  |...X:..vduseven:|
00006140  ff 22 43 68 61 6e 6e 65  6c 56 6f 69 63 65 20 31  |."ChannelVoice 1|
00006150  20 76 64 75 73 65 76 65  6e 22 3a d4 31 2c 33 38  | vduseven":.1,38|
00006160  33 2c 26 31 35 30 30 2c  30 3a e1 0d 16 62 3b dd  |3,&1500,0:...b;.|
00006170  f2 74 72 61 6e 73 70 69  6e 67 3a ff 22 43 68 61  |.transping:."Cha|
00006180  6e 6e 65 6c 56 6f 69 63  65 20 31 20 76 64 75 73  |nnelVoice 1 vdus|
00006190  65 76 65 6e 22 3a d4 31  2c 33 38 33 2c 26 33 33  |even":.1,383,&33|
000061a0  30 30 2c 30 3a e1 0d 16  6c 3c dd f2 62 6c 61 63  |00,0:...l<..blac|
000061b0  6b 70 69 6e 67 3a ff 22  43 68 61 6e 6e 65 6c 56  |kping:."ChannelV|
000061c0  6f 69 63 65 20 31 20 42  6c 61 63 6b 48 6f 6c 65  |oice 1 BlackHole|
000061d0  22 3a d4 31 2c 33 38 33  2c 26 31 38 30 30 2c 30  |":.1,383,&1800,0|
000061e0  3a e1 0d 16 76 43 dd f2  79 6f 75 6c 69 74 74 6c  |:...vC..youlittl|
000061f0  65 62 65 61 75 74 79 3a  ff 22 43 68 61 6e 6e 65  |ebeauty:."Channe|
00006200  6c 56 6f 69 63 65 20 31  20 52 75 74 68 79 42 61  |lVoice 1 RuthyBa|
00006210  62 65 73 22 3a d4 31 2c  33 38 33 2c 26 31 35 30  |bes":.1,383,&150|
00006220  30 2c 30 3a e1 0d 16 80  3d dd f2 73 6f 75 6e 64  |0,0:....=..sound|
00006230  5f 6f 66 66 3a ff 22 53  70 65 61 6b 65 72 20 4f  |_off:."Speaker O|
00006240  66 66 22 3a f5 f2 74 65  78 74 3a 54 25 3d 91 3a  |ff":..text:T%=.:|
00006250  f5 fd 91 3e 54 25 2b 35  3a fd ac a6 2d 31 31 34  |...>T%+5:...-114|
00006260  3a e1 0d 16 8a 65 dd f2  73 6f 75 6e 64 5f 6f 6e  |:....e..sound_on|
00006270  3a ff 22 53 70 65 61 6b  65 72 20 4f 6e 22 3a ff  |:."Speaker On":.|
00006280  22 43 68 61 6e 6e 65 6c  56 6f 69 63 65 20 31 20  |"ChannelVoice 1 |
00006290  76 64 75 73 65 76 65 6e  22 3a d4 31 2c 33 35 30  |vduseven":.1,350|
000062a0  2c 26 31 35 30 30 2c 30  3a f5 f2 74 65 78 74 3a  |,&1500,0:..text:|
000062b0  54 25 3d 91 3a f5 fd 91  3e 54 25 2b 35 3a fd ac  |T%=.:...>T%+5:..|
000062c0  a6 2d 31 31 35 3a e1 0d  16 94 39 f4 20 54 68 65  |.-115:....9. The|
000062d0  73 65 20 73 6f 75 6e 64  20 73 61 6d 70 6c 65 73  |se sound samples|
000062e0  20 61 72 65 20 61 6c 6c  20 63 6f 70 79 72 69 67  | are all copyrig|
000062f0  68 74 20 54 52 41 58 20  53 6f 66 74 77 61 72 65  |ht TRAX Software|
00006300  0d 16 9e 05 3a 0d 16 a8  1e f4 20 54 68 65 20 6c  |....:..... The l|
00006310  6f 76 65 6c 79 20 6d 6f  75 73 65 20 70 6f 69 6e  |ovely mouse poin|
00006320  74 65 72 0d 16 b2 47 dd  f2 6d 6f 75 73 65 61 72  |ter...G..mousear|
00006330  72 6f 77 3a c8 97 20 87  3a f7 8d 54 60 57 3a f2  |row:.. .:..T`W:.|
00006340  6d 6f 75 73 65 73 65 74  3a c8 97 fb 31 2c 30 2c  |mouseset:...1,0,|
00006350  30 2c 30 3a c8 97 fb 32  2c 32 35 35 2c 32 35 35  |0,0:...2,255,255|
00006360  2c 32 35 35 3a c8 97 ee  3a e1 0d 16 bc 47 dd f2  |,255:...:....G..|
00006370  6d 6f 75 73 65 64 69 73  63 3a c8 97 87 3a f7 8d  |mousedisc:...:..|
00006380  64 5e 57 3a f2 6d 6f 75  73 65 73 65 74 3a c8 97  |d^W:.mouseset:..|
00006390  fb 32 2c 30 2c 30 2c 32  35 35 3a c8 97 fb 33 2c  |.2,0,0,255:...3,|
000063a0  31 31 32 2c 31 31 32 2c  31 31 32 3a c8 97 ee 3a  |112,112,112:...:|
000063b0  e1 0d 16 c6 3a dd f2 6d  6f 75 73 65 77 61 69 74  |....:..mousewait|
000063c0  69 6e 67 3a c8 97 87 3a  f7 8d 74 5c 58 3a f2 6d  |ing:...:..t\X:.m|
000063d0  6f 75 73 65 73 65 74 3a  c8 97 fb 32 2c 39 36 2c  |ouseset:...2,96,|
000063e0  39 36 2c 39 36 3a c8 97  ee 3a e1 0d 16 d0 05 3a  |96,96:...:.....:|
000063f0  0d 16 da 86 dd f2 6d 6f  75 73 65 73 65 74 3a 3f  |......mouseset:?|
00006400  6f 73 77 6f 72 64 25 3d  30 3a 6f 73 77 6f 72 64  |osword%=0:osword|
00006410  25 3f 31 3d 31 3a 6f 73  77 6f 72 64 25 3f 32 3d  |%?1=1:osword%?2=|
00006420  34 3a 6f 73 77 6f 72 64  25 3f 33 3d 31 38 3a 6f  |4:osword%?3=18:o|
00006430  73 77 6f 72 64 25 3f 34  3d 30 3a 6f 73 77 6f 72  |sword%?4=0:oswor|
00006440  64 25 3f 35 3d 30 3a 6f  73 77 6f 72 64 25 21 36  |d%?5=0:osword%!6|
00006450  3d 70 6f 69 6e 74 64 61  74 25 3a e3 41 25 3d 30  |=pointdat%:.A%=0|
00006460  20 b8 20 37 31 3a 70 6f  69 6e 74 64 61 74 25 3f  | . 71:pointdat%?|
00006470  41 25 3d 30 3a ed 0d 16  e4 60 e3 59 25 3d 30 20  |A%=0:....`.Y%=0 |
00006480  b8 20 31 37 3a f3 20 41  24 3a e3 58 25 3d 30 20  |. 17:. A$:.X%=0 |
00006490  b8 20 31 35 3a 44 25 3d  bb c1 41 24 2c 58 25 2b  |. 15:D%=..A$,X%+|
000064a0  31 2c 31 29 3a 3f 28 70  6f 69 6e 74 64 61 74 25  |1,1):?(pointdat%|
000064b0  2b 28 58 25 3e 3e 32 29  2b 28 59 25 3c 3c 32 29  |+(X%>>2)+(Y%<<2)|
000064c0  29 2b 3d 44 25 3c 3c 28  28 58 25 80 33 29 3c 3c  |)+=D%<<((X%.3)<<|
000064d0  31 29 3a ed 3a ed 0d 16  ee 1c c8 99 22 4f 53 5f  |1):.:......."OS_|
000064e0  57 6f 72 64 22 2c 32 31  2c 6f 73 77 6f 72 64 25  |Word",21,osword%|
000064f0  3a e1 0d 16 f8 05 3a 0d  17 02 2e dd f2 73 63 72  |:.....:......scr|
00006500  6f 6c 6c 61 72 6f 75 6e  64 3a 46 25 3d 46 25 2b  |ollaround:F%=F%+|
00006510  47 25 3a e7 46 25 3d 30  84 46 25 3d 32 34 30 47  |G%:.F%=0.F%=240G|
00006520  25 3d 2d 47 25 0d 17 0c  21 c8 97 fb 32 2c 46 25  |%=-G%...!...2,F%|
00006530  2c 46 25 2c 46 25 3a 54  25 3d 91 3a f5 fd 91 3e  |,F%,F%:T%=.:...>|
00006540  54 25 2b 31 3a e1 0d 17  16 05 3a 0d 17 20 16 dc  |T%+1:.....:.. ..|
00006550  20 31 31 30 30 30 30 30  30 30 30 30 30 30 30 30  | 110000000000000|
00006560  30 0d 17 2a 16 dc 20 31  32 31 30 30 30 30 30 30  |0..*.. 121000000|
00006570  30 30 30 30 30 30 30 0d  17 34 16 dc 20 31 32 32  |0000000..4.. 122|
00006580  31 30 30 30 30 30 30 30  30 30 30 30 30 0d 17 3e  |1000000000000..>|
00006590  16 dc 20 31 32 32 32 31  30 30 30 30 30 30 30 30  |.. 1222100000000|
000065a0  30 30 30 0d 17 48 16 dc  20 31 32 32 32 32 31 30  |000..H.. 1222210|
000065b0  30 30 30 30 30 30 30 30  30 0d 17 52 16 dc 20 31  |000000000..R.. 1|
000065c0  32 32 32 32 32 31 30 30  30 30 30 30 30 30 30 0d  |222221000000000.|
000065d0  17 5c 16 dc 20 31 32 32  32 32 32 32 31 30 30 30  |.\.. 12222221000|
000065e0  30 30 30 30 30 0d 17 66  16 dc 20 31 32 32 32 32  |00000..f.. 12222|
000065f0  32 32 32 31 30 30 30 30  30 30 30 0d 17 70 16 dc  |22210000000..p..|
00006600  20 31 32 32 32 32 31 31  31 31 30 30 30 30 30 30  | 122221111000000|
00006610  30 0d 17 7a 16 dc 20 31  32 32 31 32 32 31 30 30  |0..z.. 122122100|
00006620  30 30 30 30 30 30 30 0d  17 84 16 dc 20 31 32 31  |0000000..... 121|
00006630  31 32 32 31 30 30 30 30  30 30 30 30 30 0d 17 8e  |1221000000000...|
00006640  16 dc 20 31 31 30 30 31  32 32 31 30 30 30 30 30  |.. 1100122100000|
00006650  30 30 30 0d 17 98 16 dc  20 30 30 30 30 31 32 32  |000..... 0000122|
00006660  31 30 30 30 30 30 30 30  30 0d 17 a2 16 dc 20 30  |100000000..... 0|
00006670  30 30 30 30 31 31 31 30  30 30 30 30 30 30 30 0d  |000011100000000.|
00006680  17 ac 16 dc 20 30 30 30  30 30 30 30 30 30 30 30  |.... 00000000000|
00006690  30 30 30 30 30 0d 17 b6  16 dc 20 30 30 30 30 30  |00000..... 00000|
000066a0  30 30 30 30 30 30 30 30  30 30 30 0d 17 c0 16 dc  |00000000000.....|
000066b0  20 30 30 30 30 30 30 30  30 30 30 30 30 30 30 30  | 000000000000000|
000066c0  30 0d 17 ca 16 dc 20 30  30 30 30 30 30 30 30 30  |0..... 000000000|
000066d0  30 30 30 30 30 30 30 0d  17 d4 05 3a 0d 17 de 16  |0000000....:....|
000066e0  dc 20 30 31 31 31 31 31  31 31 31 31 31 31 31 30  |. 01111111111110|
000066f0  30 30 0d 17 e8 16 dc 20  31 32 32 32 32 31 33 33  |00..... 12222133|
00006700  33 33 31 32 31 31 30 30  0d 17 f2 16 dc 20 31 32  |33121100..... 12|
00006710  32 32 32 31 33 33 33 33  31 32 32 31 30 30 0d 17  |22213333122100..|
00006720  fc 16 dc 20 31 32 32 32  32 31 31 31 31 31 31 32  |... 122221111112|
00006730  32 31 30 30 0d 18 06 16  dc 20 31 32 32 32 32 32  |2100..... 122222|
00006740  32 32 32 32 32 32 32 31  30 30 0d 18 10 16 dc 20  |2222222100..... |
00006750  31 32 32 32 32 32 32 32  32 32 32 32 32 31 30 30  |1222222222222100|
00006760  0d 18 1a 16 dc 20 31 32  31 31 31 31 31 31 31 31  |..... 1211111111|
00006770  31 31 32 31 30 30 0d 18  24 16 dc 20 31 32 31 33  |112100..$.. 1213|
00006780  33 33 33 33 33 33 33 31  32 31 30 30 0d 18 2e 16  |333333312100....|
00006790  dc 20 31 32 31 33 33 33  33 33 33 33 33 31 32 31  |. 12133333333121|
000067a0  30 30 0d 18 38 16 dc 20  31 32 31 33 32 32 32 32  |00..8.. 12132222|
000067b0  32 32 33 31 32 31 30 30  0d 18 42 16 dc 20 31 32  |22312100..B.. 12|
000067c0  31 33 33 33 33 33 33 33  33 31 32 31 30 30 0d 18  |13333333312100..|
000067d0  4c 16 dc 20 31 32 31 33  32 32 32 32 32 32 33 31  |L.. 121322222231|
000067e0  32 31 30 30 0d 18 56 16  dc 20 31 32 31 33 33 33  |2100..V.. 121333|
000067f0  33 33 33 33 33 31 32 31  30 30 0d 18 60 16 dc 20  |3333312100..`.. |
00006800  30 31 31 31 31 31 31 31  31 31 31 31 31 30 30 30  |0111111111111000|
00006810  0d 18 6a 16 dc 20 30 30  30 30 30 30 30 30 30 30  |..j.. 0000000000|
00006820  30 30 30 30 30 30 0d 18  74 16 dc 20 30 30 30 30  |000000..t.. 0000|
00006830  30 30 30 30 30 30 30 30  30 30 30 30 0d 18 7e 16  |000000000000..~.|
00006840  dc 20 30 30 30 30 30 30  30 30 30 30 30 30 30 30  |. 00000000000000|
00006850  30 30 0d 18 88 16 dc 20  30 30 30 30 30 30 30 30  |00..... 00000000|
00006860  30 30 30 30 30 30 30 30  0d 18 92 05 3a 0d 18 9c  |00000000....:...|
00006870  16 dc 20 30 30 30 30 30  30 30 30 30 30 30 30 30  |.. 0000000000000|
00006880  30 30 30 0d 18 a6 16 dc  20 30 30 30 30 30 30 31  |000..... 0000001|
00006890  31 31 31 30 30 30 30 30  30 0d 18 b0 16 dc 20 30  |111000000..... 0|
000068a0  30 30 30 30 31 32 32 32  32 31 30 30 30 30 30 0d  |000012222100000.|
000068b0  18 ba 16 dc 20 30 30 30  30 30 31 32 32 32 32 31  |.... 00000122221|
000068c0  30 30 30 30 30 0d 18 c4  16 dc 20 30 30 31 31 30  |00000..... 00110|
000068d0  30 31 32 32 31 30 30 31  31 30 30 0d 18 ce 16 dc  |01221001100.....|
000068e0  20 30 31 32 32 31 30 30  31 31 30 30 31 32 32 31  | 012210011001221|
000068f0  30 0d 18 d8 16 dc 20 30  31 32 32 32 31 30 30 30  |0..... 012221000|
00006900  30 31 32 32 32 31 30 0d  18 e2 16 dc 20 30 31 32  |0122210..... 012|
00006910  32 32 31 30 30 30 30 31  32 32 32 31 30 0d 18 ec  |2210000122210...|
00006920  16 dc 20 30 31 32 32 31  30 30 31 31 30 30 31 32  |.. 0122100110012|
00006930  32 31 30 0d 18 f6 16 dc  20 30 30 31 31 30 30 31  |210..... 0011001|
00006940  32 32 31 30 30 31 31 30  30 0d 19 00 16 dc 20 30  |221001100..... 0|
00006950  30 30 30 30 31 32 32 32  32 31 30 30 30 30 30 0d  |000012222100000.|
00006960  19 0a 16 dc 20 30 30 30  30 30 31 32 32 32 32 31  |.... 00000122221|
00006970  30 30 30 30 30 0d 19 14  16 dc 20 30 30 30 30 30  |00000..... 00000|
00006980  30 31 31 31 31 30 30 30  30 30 30 0d 19 1e 16 dc  |01111000000.....|
00006990  20 30 30 30 30 30 30 30  30 30 30 30 30 30 30 30  | 000000000000000|
000069a0  30 0d 19 28 16 dc 20 30  30 30 30 30 30 30 30 30  |0..(.. 000000000|
000069b0  30 30 30 30 30 30 30 0d  19 32 16 dc 20 30 30 30  |0000000..2.. 000|
000069c0  30 30 30 30 30 30 30 30  30 30 30 30 30 0d 19 3c  |0000000000000..<|
000069d0  16 dc 20 30 30 30 30 30  30 30 30 30 30 30 30 30  |.. 0000000000000|
000069e0  30 30 30 0d 19 46 16 dc  20 30 30 30 30 30 30 30  |000..F.. 0000000|
000069f0  30 30 30 30 30 30 30 30  30 0d 19 50 05 3a 0d 19  |000000000..P.:..|
00006a00  5a 21 f4 20 46 69 6e 64  69 6e 67 20 74 68 65 20  |Z!. Finding the |
00006a10  67 6f 6f 64 20 6f 6c 64  20 6c 65 76 65 6c 73 0d  |good old levels.|
00006a20  19 64 31 f4 20 20 28 6a  75 73 74 20 69 6e 20 63  |.d1.  (just in c|
00006a30  61 73 65 20 74 68 65 79  27 72 65 20 6f 6e 20 61  |ase they're on a|
00006a40  20 64 69 66 66 65 72 65  6e 74 20 64 69 73 63 29  | different disc)|
00006a50  0d 19 6e 17 dd f2 66 69  6e 64 74 68 65 6c 65 76  |..n...findthelev|
00006a60  65 6c 73 3a ea 20 85 0d  19 78 b5 f2 66 72 61 6d  |els:. ...x..fram|
00006a70  65 28 32 30 30 2c 33 30  32 2c 38 37 39 2c 34 30  |e(200,302,879,40|
00006a80  30 2c 32 29 3a f2 62 74  28 22 50 6c 65 61 73 65  |0,2):.bt("Please|
00006a90  20 65 6e 74 65 72 20 6c  65 76 65 6c 73 20 64 69  | enter levels di|
00006aa0  73 63 22 2c 34 34 38 2c  36 30 30 29 3a f2 62 74  |sc",448,600):.bt|
00006ab0  28 22 61 6e 64 20 63 6c  69 63 6b 20 6f 6e 20 69  |("and click on i|
00006ac0  63 6f 6e 22 2c 35 30 34  2c 35 35 30 29 3a f2 73  |con",504,550):.s|
00006ad0  70 72 69 74 65 28 36 32  30 2c 34 30 30 2c 31 29  |prite(620,400,1)|
00006ae0  3a f5 c8 97 78 25 2c 79  25 2c 62 25 3a fd 62 25  |:...x%,y%,b%:.b%|
00006af0  3d 34 80 a4 6d 72 28 36  32 30 2c 34 30 30 2c 36  |=4..mr(620,400,6|
00006b00  36 30 2c 34 34 30 29 3a  f2 6d 6f 75 73 65 64 69  |60,440):.mousedi|
00006b10  73 63 3a f2 76 64 75 73  65 76 65 6e 0d 19 82 17  |sc:.vduseven....|
00006b20  f5 3a ee 85 20 ea 20 f2  6e 6f 64 69 73 63 3a 58  |.:.. . .nodisc:X|
00006b30  25 3d 30 0d 19 8c 46 ff  22 44 69 73 6d 6f 75 6e  |%=0...F."Dismoun|
00006b40  74 22 3a 58 25 3d 8e 22  3c 45 6e 69 67 6d 61 4c  |t":X%=."<EnigmaL|
00006b50  65 76 65 6c 73 24 44 69  72 3e 2e 6c 65 76 65 6c  |evels$Dir>.level|
00006b60  73 2e 69 6e 66 6f 22 3a  e7 58 25 3d 30 f2 6e 6f  |s.info":.X%=0.no|
00006b70  64 69 73 63 3a 58 25 3d  30 0d 19 96 3c fd 58 25  |disc:X%=0...<.X%|
00006b80  3c 3e 30 3a 6c 25 3d 9a  23 58 25 3a d9 23 58 25  |<>0:l%=.#X%:.#X%|
00006b90  3a ff 22 44 69 72 20 3c  45 6e 69 67 6d 61 4c 65  |:."Dir <EnigmaLe|
00006ba0  76 65 6c 73 24 44 69 72  3e 2e 6c 65 76 65 6c 73  |vels$Dir>.levels|
00006bb0  22 3a c8 97 87 0d 19 a0  0a 2a 66 58 20 31 35 0d  |":.......*fX 15.|
00006bc0  19 aa 21 58 25 3d 8e 22  73 74 75 66 66 22 3a ef  |..!X%=."stuff":.|
00006bd0  32 33 2c 31 37 2c 37 2c  36 2c 38 3b 36 3b 30 3b  |23,17,7,6,8;6;0;|
00006be0  0d 19 b4 30 e6 31 31 c8  9c 31 32 38 3a 24 63 6f  |...0.11..128:$co|
00006bf0  64 65 25 3d be 23 58 25  3a f2 63 65 6e 74 72 65  |de%=.#X%:.centre|
00006c00  74 65 78 74 28 24 63 6f  64 65 25 2c 31 38 30 29  |text($code%,180)|
00006c10  0d 19 be 2f e6 31 31 c8  9c 36 34 3a 24 63 6f 64  |.../.11..64:$cod|
00006c20  65 25 3d be 23 58 25 3a  f2 63 65 6e 74 72 65 74  |e%=.#X%:.centret|
00006c30  65 78 74 28 24 63 6f 64  65 25 2c 31 34 30 29 0d  |ext($code%,140).|
00006c40  19 c8 2e e6 31 31 c8 9c  30 3a 24 63 6f 64 65 25  |....11..0:$code%|
00006c50  3d be 23 58 25 3a f2 63  65 6e 74 72 65 74 65 78  |=.#X%:.centretex|
00006c60  74 28 24 63 6f 64 65 25  2c 31 30 30 29 0d 19 d2  |t($code%,100)...|
00006c70  59 d9 23 58 25 3a f2 6d  6f 75 73 65 77 61 69 74  |Y.#X%:.mousewait|
00006c80  69 6e 67 3a c8 97 ee 31  32 39 3a c8 92 b8 36 30  |ing:...129:...60|
00006c90  38 2c 34 34 34 3a f5 f2  73 63 72 6f 6c 6c 61 72  |8,444:..scrollar|
00006ca0  6f 75 6e 64 3a c8 97 78  25 2c 79 25 2c 62 25 3a  |ound:..x%,y%,b%:|
00006cb0  fd ac 28 62 25 3d 30 29  3a f2 6d 6f 75 73 65 61  |..(b%=0):.mousea|
00006cc0  72 72 6f 77 3a e1 0d 19  dc 05 3a 0d 19 e6 0c f4  |rrow:.....:.....|
00006cd0  20 45 72 72 6f 72 73 0d  19 f0 bc dd f2 6e 6f 64  | Errors......nod|
00006ce0  69 73 63 3a f2 6d 6f 75  73 65 77 61 69 74 69 6e  |isc:.mousewaitin|
00006cf0  67 3a f2 66 72 61 6d 65  28 32 30 30 2c 33 30 32  |g:.frame(200,302|
00006d00  2c 38 37 39 2c 34 30 30  2c 32 29 3a f2 62 74 28  |,879,400,2):.bt(|
00006d10  22 44 69 73 63 20 65 72  72 6f 72 22 2c 35 36 30  |"Disc error",560|
00006d20  2c 36 30 30 29 3a f2 62  74 28 22 50 6c 65 61 73  |,600):.bt("Pleas|
00006d30  65 20 69 6e 73 65 72 74  20 74 68 65 20 6c 65 76  |e insert the lev|
00006d40  65 6c 73 20 64 69 73 63  22 2c 34 30 38 2c 35 30  |els disc",408,50|
00006d50  30 29 3a f2 62 74 28 22  61 6e 64 20 70 72 65 73  |0):.bt("and pres|
00006d60  73 20 73 70 61 63 65 22  2c 35 32 30 2c 34 35 30  |s space",520,450|
00006d70  29 3a f5 f2 73 63 72 6f  6c 6c 61 72 6f 75 6e 64  |):..scrollaround|
00006d80  3a fd a6 2d 39 39 3a f2  6d 6f 75 73 65 64 69 73  |:..-99:.mousedis|
00006d90  63 3a e1 0d 19 fa 05 3a  0d 1a 04 f0 dd f2 6e 61  |c:.....:......na|
00006da0  73 74 79 65 72 72 6f 72  3a f2 6d 6f 75 73 65 77  |styerror:.mousew|
00006db0  61 69 74 69 6e 67 3a ef  32 36 2c 35 2c 32 33 2c  |aiting:.26,5,23,|
00006dc0  31 37 2c 37 2c 36 2c 34  3b 38 3b 30 3b 3a f2 66  |17,7,6,4;8;0;:.f|
00006dd0  72 61 6d 65 28 32 30 30  2c 33 30 32 2c 38 37 39  |rame(200,302,879|
00006de0  2c 34 30 30 2c 32 29 3a  f2 66 72 61 6d 65 28 34  |,400,2):.frame(4|
00006df0  30 30 2c 35 35 38 2c 34  37 36 2c 36 34 2c 32 29  |00,558,476,64,2)|
00006e00  3a f2 62 74 28 22 4e 61  73 74 79 20 75 6e 65 78  |:.bt("Nasty unex|
00006e10  70 65 63 74 65 64 20 65  72 72 6f 72 22 2c 34 36  |pected error",46|
00006e20  34 2c 36 30 30 29 3a f2  62 74 28 22 53 6f 72 72  |4,600):.bt("Sorr|
00006e30  79 2c 20 62 75 74 20 49  20 68 61 76 65 20 74 6f  |y, but I have to|
00006e40  20 73 61 79 20 42 79 65  20 42 79 65 22 2c 33 38  | say Bye Bye",38|
00006e50  34 2c 35 30 30 29 3a f2  62 74 28 22 50 72 65 73  |4,500):.bt("Pres|
00006e60  73 20 73 70 61 63 65 22  2c 35 35 32 2c 34 35 30  |s space",552,450|
00006e70  29 3a f5 f2 73 63 72 6f  6c 6c 61 72 6f 75 6e 64  |):..scrollaround|
00006e80  3a fd a6 2d 39 39 3a e1  0d 1a 0e 05 3a 0d 1a 18  |:..-99:.....:...|
00006e90  1e f4 20 47 6f 6f 64 62  79 65 20 61 6e 64 20 67  |.. Goodbye and g|
00006ea0  6f 6f 64 20 72 69 64 61  6e 63 65 0d 1a 22 1c dd  |ood ridance.."..|
00006eb0  f2 65 6e 64 3a eb 31 32  3a e7 50 25 f2 73 61 76  |.end:.12:.P%.sav|
00006ec0  65 73 63 6f 72 65 73 0d  1a 2c 86 c8 99 22 4f 53  |escores..,..."OS|
00006ed0  5f 42 79 74 65 22 2c 26  45 35 2c 45 25 3a ff 22  |_Byte",&E5,E%:."|
00006ee0  43 68 61 6e 6e 65 6c 56  6f 69 63 65 20 31 20 47  |ChannelVoice 1 G|
00006ef0  75 72 67 6c 65 22 3a ff  22 43 68 61 6e 6e 65 6c  |urgle":."Channel|
00006f00  56 6f 69 63 65 20 32 20  76 64 75 73 65 76 65 6e  |Voice 2 vduseven|
00006f10  22 3a d4 31 2c 33 38 33  2c 26 39 30 30 2c 30 3a  |":.1,383,&900,0:|
00006f20  d4 32 2c 33 38 33 2c 26  35 30 30 2c 30 3a f1 22  |.2,383,&500,0:."|
00006f30  42 79 65 20 62 79 65 2e  2e 2e 22 27 27 3a 54 25  |Bye bye..."'':T%|
00006f40  3d 91 3a f5 fd 91 3e 54  25 2b 33 30 30 0d 1a 36  |=.:...>T%+300..6|
00006f50  9b ff 22 52 4d 4b 69 6c  6c 20 43 79 6d 62 61 6c  |.."RMKill Cymbal|
00006f60  22 3a ff 22 52 4d 4b 69  6c 6c 20 47 75 72 67 6c  |":."RMKill Gurgl|
00006f70  65 22 3a ff 22 52 4d 4b  69 6c 6c 20 48 61 6c 6c  |e":."RMKill Hall|
00006f80  65 6c 75 6a 61 68 22 3a  ff 22 52 4d 4b 69 6c 6c  |elujah":."RMKill|
00006f90  20 4c 61 75 67 68 22 3a  ff 22 52 4d 4b 69 6c 6c  | Laugh":."RMKill|
00006fa0  20 53 6d 6f 6f 74 68 77  61 76 65 22 3a ff 22 52  | Smoothwave":."R|
00006fb0  4d 4b 69 6c 6c 20 76 64  75 73 65 76 65 6e 22 3a  |MKill vduseven":|
00006fc0  ff 22 52 4d 4b 69 6c 6c  20 42 6c 61 63 6b 48 6f  |."RMKill BlackHo|
00006fd0  6c 65 22 3a ff 22 52 4d  4b 69 6c 6c 20 52 75 74  |le":."RMKill Rut|
00006fe0  68 79 42 61 62 65 73 22  0d 1a 40 11 ff 22 44 69  |hyBabes"..@.."Di|
00006ff0  73 6d 6f 75 6e 74 22 3a  e1 0d 1a 4a 05 3a 0d 1a  |smount":...J.:..|
00007000  54 4a dd f2 73 61 76 65  73 63 6f 72 65 73 3a ff  |TJ..savescores:.|
00007010  22 53 61 76 65 20 3c 45  6e 69 67 6d 61 24 44 69  |"Save <Enigma$Di|
00007020  72 3e 2e 48 69 67 68 53  63 6f 72 65 73 20 22 2b  |r>.HighScores "+|
00007030  c3 7e 68 69 67 68 73 63  6f 72 65 73 25 2b 22 20  |.~highscores%+" |
00007040  2b 42 34 22 3a db 3a e1  0d 1a 5e 05 3a 0d 1a 68  |+B4":.:...^.:..h|
00007050  1e f4 20 49 66 20 79 6f  75 20 68 61 76 65 20 61  |.. If you have a|
00007060  6e 79 20 63 6f 6d 6d 65  6e 74 73 0d 1a 72 23 f4  |ny comments..r#.|
00007070  20 28 70 72 61 69 73 65  2c 20 73 63 6f 72 6e 2c  | (praise, scorn,|
00007080  20 6c 6f 76 65 2d 6c 65  74 74 65 72 73 2c 0d 1a  | love-letters,..|
00007090  7c 2e f4 20 6d 6f 6e 65  74 61 72 79 20 64 6f 6e  ||.. monetary don|
000070a0  61 74 69 6f 6e 73 20 28  49 27 6d 20 62 65 69 6e  |ations (I'm bein|
000070b0  67 20 73 65 72 69 6f 75  73 29 20 29 0d 1a 86 1a  |g serious) )....|
000070c0  f4 20 70 6c 65 61 73 65  20 73 65 6e 64 20 74 68  |. please send th|
000070d0  65 6d 20 74 6f 3a 0d 1a  90 05 3a 0d 1a 9a 14 f4  |em to:....:.....|
000070e0  20 50 65 74 65 20 47 6f  6f 64 6c 69 66 66 65 0d  | Pete Goodliffe.|
000070f0  1a a4 13 f4 20 54 52 41  58 20 53 6f 66 74 77 61  |.... TRAX Softwa|
00007100  72 65 0d 1a ae 17 f4 20  35 38 20 44 75 6e 6b 65  |re..... 58 Dunke|
00007110  6c 64 20 41 76 65 6e 75  65 0d 1a b8 0c f4 20 46  |ld Avenue..... F|
00007120  69 6c 74 6f 6e 0d 1a c2  16 f4 20 42 72 69 73 74  |ilton..... Brist|
00007130  6f 6c 20 42 53 31 32 20  37 52 51 0d ff           |ol BS12 7RQ..|
0000713d