Home » Archimedes archive » Acorn Computing » 1994 07 subscription disc.adf » 9407s » PD/!Daleks3/!RunImage
PD/!Daleks3/!RunImage
This website contains an archive of files for the Acorn Electron, BBC Micro, Acorn Archimedes, Commodore 16 and Commodore 64 computers, which Dominic Ford has rescued from his private collection of floppy disks and cassettes.
Some of these files were originally commercial releases in the 1980s and 1990s, but they are now widely available online. I assume that copyright over them is no longer being asserted. If you own the copyright and would like files to be removed, please contact me.
Tape/disk: | Home » Archimedes archive » Acorn Computing » 1994 07 subscription disc.adf » 9407s |
Filename: | PD/!Daleks3/!RunImage |
Read OK: | ✔ |
File size: | 13C60 bytes |
Load address: | 0000 |
Exec address: | 0000 |
File contents
1REM><In$Dir>.!RunImage 2REMProduced by BasCompress v1.30 (09 Sep 1992) 3Z%=0:yJ%=10:Bn%=1:ly=11:y_=24:DIMs%16:DIMKn%4:!Kn%=0:ONERRORPROCx 4PROCqJ(20,16):BJ%=FALSE:KJ%=-2:Xa%=TRUE:LJ%=FALSE:PROCS("<BasicV$Lib>.CAsm",6):PROCS("<BasicV$Lib>.Sprite_IO",6):PROCS("<BasicV_Assembler$Lib>.Misc",33):PROCS("<BasicV$Lib>.StickyWin",1):PROCS("<BasicV$Lib>.Template",3):Pi%=BJ%:IFBJ%THEN 5PROCHy("debug,imath,message,RelObj,stdio,stdlib,string,wimp") 6ELSE:PROCHy("imath,message,RelObj,stdio,stdlib,string,wimp") 7ENDIF:PROCsu(10000,FALSE,FALSE):LJ%=BJ%:PROCG(0):PROCS("<BasicV$Lib>.file_io",3):PROCS("<BasicV$Lib>.FileType",1):PROCS("<BasicV$Lib>.Heap",7):PROCS("<BasicV$Lib>.IntMath",4):PROCS("<BasicV$Lib>.ModeInfo",5):PROCS("<BasicV$Lib>.Wimp",28):`y%=FNey("<Daleks3$Dir>",-1,U_%):IFU_%>0THEN 8ERROR!`y%,"Daleks can't load its' message file: "+FNN(`y%+4) 9ENDIF:Ry%=TRUE:Tu%=TRUE:N$="9,10,&502,&400C0,&400C1":PROCEJ("Daleks3",3,40,3,10,1992):LJ%=BJ%:PROCW_:PROCYy:PROCd_:CALLMl:IFFNj(Wy%) 10PROC_(Wy%,`y,W$):SYS&dcb8c,Ru,Wy%,`y:ONERRORPROCx 11PROCJu:REPEAT:PROCh_:UNTILFALSE:END 12DEFPROCQ:IFBJ%THEN 13ERRORERR,REPORT$+" ["+STR$(ERL)+"]" 14ELSE:ERRORERR,REPORT$ 15ENDIF:PROCB:ENDPROC 16DEFPROCYu(Q%,X%,E%,I%):LOCALc%,f%,k%:SYS&400d2,Z%!z%,-1,,,1<<25:CASEZ%!q%OF 17WHEN_:Q%=(Q%-(Z%!ey%))DIV(Z%!Cy%):X%=((Z%!Ei%)-X%)DIV(Z%!vy%):c%=Q%-(Z%!t%):f%=X%-(Z%!Ay%):IF(ABS(c%)<2)AND(ABS(f%)<2)THEN 18PROCP:IFE%AND4THEN 19CASEc%OF 20WHEN-1:k%=2 21WHEN0:k%=0 22WHEN+1:k%=1 23ENDCASE:CASEf%OF 24WHEN-1:k%=k%OR8 25WHEN+1:k%=k%OR4 26ENDCASE:Z%!Ny%=k%:PROCV 27ELSE:PROCh 28ENDIF 29ELSE:IFE%AND1THEN 30PROCP:PROCu 31ENDIF 32ENDIF 33WHENo:IFE%AND1THEN 34PROCa 35ENDIF 36OTHERWISE:VDU7 37ENDCASE:ENDPROC 38DEFPROC`_(p%,I%):PROCP:CASEFNLy(CHR$(p%))OF 39WHEN"1","2","3","4","5","6","7","8","9":CASEZ%!q%OF 40WHEN_,Wy:LOCALQ%,X%,j%,c%,f%:c%=((p%-ASC("1"))MOD3)-1:f%=((p%-ASC("1"))DIV3)-1:CASEc%OF 41WHEN-1:Z%!Ny%=2 42WHEN0:Z%!Ny%=0 43WHEN+1:Z%!Ny%=1 44ENDCASE:CASEf%OF 45WHEN-1:Z%!Ny%+=4 46WHEN+1:Z%!Ny%+=8 47ENDCASE:Q%=Z%!t%+c%:X%=Z%!Ay%-f%:j%=(Q%>=0)AND(Q%<Z%!w%):IFj%AND(X%>=0)AND(X%<Z%!x%)THEN 48PROCV 49ENDIF 50OTHERWISE:VDU7 51ENDCASE 52WHEN"A":PROCIy:PROCBy 53WHEN"C":PROCK 54WHEN"D":PROCmy 55WHEN"G":PROCcy:PROCBy 56WHEN"H":PROCd 57WHEN"L":PROCKy 58WHEN"S":PROCh 59WHEN"T":PROCu 60WHEN" ":PROCa 61OTHERWISE:CASEp%OF 62WHEN3:PROCyy 63WHEN8:PROCty 64WHEN13:PROCZ_ 65WHEN16:PROCEy 66WHEN19:PROCry 67WHEN20:PROCA_ 68OTHERWISE:SYS&400dc,p% 69ENDCASE 70ENDCASE:ENDPROC 71DEFPROCIy:rJ%=(Z%!uJ%=0):Z%!uJ%=rJ%:CALLU_:ENDPROC 72DEFPROCcy:IFZ%!_y%THEN 73iy%=0 74ELSE:iy%=1 75ENDIF:PROCJy:Z%!_y%=iy%:PROCr:ENDPROC 76DEFPROCJy:IFZ%!_y%THEN 77PROCr:Z%!_y%=0 78ENDIF:ENDPROC 79DEFPROCr:CALLZi:ENDPROC 80DEFPROCKy:CASEZ%!q%OF 81WHEN_,Wy:Z%!Ku%=TRUE:Z%!Ny%=0:PROCV 82OTHERWISE:VDU7 83ENDCASE:ENDPROC 84DEFPROCZ_:CASEZ%!q%OF 85WHENfy:VDU7 86OTHERWISE:Au%=(Z%!T_%=0):Z%!T_%=Au% 87ENDCASE:ENDPROC 88DEFPROCu:CASEZ%!q%OF 89WHEN_,Wy:PROCl:PROCvy 90OTHERWISE:VDU7 91ENDCASE:ENDPROC 92DEFPROCvy:LOCALQ%,X%,Ca%:PROCI:PROCg:REPEAT:Q%=RND(Z%!w%)-1:X%=RND(Z%!x%)-1:Ca%=(Q%<>(Z%!t%))AND(X%<>(Z%!Ay%)):UNTILCa%AND(?FNL(Q%,X%)=0)AND(?FNK(Q%,X%)=0):Z%!t%=Q%:Z%!Ay%=X%:Z%!q%=R_:PROCw(Q%,X%,0):ENDPROC 93DEFPROCc_:PROCg:Z%!Ny%=0:IFZ%!`_%THEN 94PROCD("Centre",Z%) 95ENDIF:IFZ%!L_%THEN 96Z%!Vu%=GJ:IFZ%!T_%THEN 97PROCV 98ENDIF 99ELSE:PROCV 100ENDIF:ENDPROC 101DEFPROCh:CASEZ%!q%OF 102WHEN_,Wy:IFZ%!V_%>0THEN 103PROCl:PROCOy 104ENDIF 105OTHERWISE:VDU7 106ENDCASE:ENDPROC 107DEFPROCOy:PROCI:Z%!q%=_J:PROCw(Z%!t%,Z%!Ay%,1):ENDPROC 108DEFPROChJ:LOCALc%,f%,Q%,X%,M%,N%,E%:Z%!V_%-=1:PROCj_:Q%=Z%!t%:X%=Z%!Ay%:M%=Z%!w%:N%=Z%!x%:FORf%=-1TO+1:IF((X%+f%)>=0)AND((X%+f%)<N%)THEN 109E%=FNL(Q%,X%+f%):FORc%=-1TO+1:IF((Q%+c%)>=0)AND((Q%+c%)<M%)THEN 110IF(E%?c%)<>0THEN 111PROCBJ(Q%+c%,X%+f%) 112ENDIF 113ENDIF:NEXTc% 114ENDIF:NEXTf%:Z%!Ny%=0:IFZ%!L_%THEN 115IFZ%!T_%THEN 116PROCV 117ENDIF 118ELSE:PROCV 119ENDIF:ENDPROC 120DEFPROCK:IFFNiTHEN 121PROCH("Centre",Z%):PROCD("Centre",Z%) 122ENDIF:ENDPROC 123DEFFN_Null_Reason_Centre(Z%):=NOT(FNi) 124DEFFNi:LOCALU%,M%,N%,Q%,X%,YJ%,OJ%,Ty%,Iy%,al%,_%:U%=FNM(64):!U%=Z%!z%:SYS&400cb,,U%:M%=(U%!12)-(U%!4):N%=(U%!16)-(U%!8)-(E_%+4):YJ%=Z%!Cy%:OJ%=Z%!vy%:Q%=Z%!JJ%+(YJ%DIV2):X%=-Z%!ul%+(OJ%DIV2):Ty%=FNS(Q%-(M%DIV2),0):Ty%=FNP(Ty%,((Z%!w%*YJ%)-M%)):Iy%=FNP((N%DIV2)+X%,0) 125Iy%=FNS(Iy%,-((Z%!x%*OJ%)-N%)):Q%=NOT((1<<Sy%)-1):X%=NOT((1<<m%)-1):Ty%=(Ty%ANDQ%)-(U%!20):Iy%=(Iy%ANDX%)-(U%!24):al%=((ABS(Ty%)>=(1<<Sy%))OR(ABS(Iy%)>=(1<<m%))):IFal%THEN 126_%=Z%!fu%:U%!24+=SGN(Iy%)*FNS((ABS(Iy%)DIV_%)ANDX%,1<<m%):U%!20+=SGN(Ty%)*FNS((ABS(Ty%)DIV_%)ANDQ%,1<<Sy%):SYS&400c5,,U% 127ENDIF:PROCC(U%,64):=al% 128DEFPROCyy:xJ%=(Z%!NJ%=0):Z%!NJ%=xJ%:IFZ%!NJ%THEN 129PROCK 130ELSE:PROCH("Centre",Z%) 131ENDIF:ENDPROC 132DEFPROCry:jJ%=(Z%!DJ%=0):Z%!DJ%=jJ%:IFZ%!DJ%THEN 133PROCK 134ELSE:PROCH("Centre",Z%) 135ENDIF:ENDPROC 136DEFPROCA_:eJ%=(Z%!`_%=0):Z%!`_%=eJ%:IFZ%!`_%THEN 137PROCK 138ELSE:PROCH("Centre",Z%) 139ENDIF:ENDPROC 140DEFPROCEy:pJ%=(Z%!GJ%=0):Z%!GJ%=pJ%:IFZ%!GJ%THEN 141PROCdy 142ENDIF:ENDPROC 143DEFPROCdy:IFFNayTHEN 144PROCH("Centre",Z%):PROCD("Centre",Z%) 145ENDIF:ENDPROC 146DEFFNay:LOCALU%,Q%,X%,M%,N%,YJ%,OJ%:U%=FNM(64):!U%=Z%!z%:SYS&400cb,,U%:M%=(U%!12)-(U%!4):N%=(U%!16)-(U%!8)-(E_%+4):Q%=U%!4-U%!20:X%=U%!16-U%!24-E_%:YJ%=Z%!Cy%:OJ%=Z%!vy%:Q%+=Z%!JJ%+(YJ%DIV2):X%-=Z%!ul%+(OJ%DIV2):Q%=FNP(Q%-U%!4,U%!12-Q%) 147X%=FNP(X%-U%!8,U%!16-X%-E_%):PROCC(U%,64):=FNp(Q%,YJ%)ORFNp(X%,OJ%) 148DEFFNp(Q%,M%):=(Q%<=(M%*2.5)) 149DEFPROCj_:IF(Z%!V_%)THEN 150PROCZ(Z%!o%,J_,Z%!V_%) 151ELSE:PROC_(Z%!o%,J_,FNH("None")) 152ENDIF:ENDPROC 153DEFPROCUy:IF(Z%!uJ%)AND(Z%!h_%=FALSE)THEN 154CALLU_ 155ENDIF:ENDPROC 156DEFPROCl:IFZ%!h_%THEN 157CALLU_ 158ENDIF:ENDPROC 159DEFPROCV:IFFNkTHEN 160PROCl:Z%!q%=fy:CALLI_:IFZ%!T_%THEN 161PROCD("Move",Z%) 162ELSE:REPEAT:UNTILFN_Null_Reason_Move(Z%) 163ENDIF 164ENDIF:ENDPROC 165DEFFNk:LOCALF%,Q%,X%,Z$:Q%=Z%!t%:X%=Z%!Ay%:IF(?FNL(Q%,X%)<>0)OR(?FNK(Q%,X%)<>0)THEN 166Z%!Ku%=FALSE:Z%!q%=o:PROCz(2):IFZ%!Nl%=FALSETHEN 167Z$=FNN(Z%+Wu%):PROCxy(Z%,Z$,Z%!C_%,Z%!_J%) 168ENDIF:F%=FALSE:Z%!q%=o:?FNL(Q%,X%)=0:?FNK(Q%,X%)=0 169ELSE:F%=Z%!Jy%:F%=(F%!u%<>-1):IFNOT(F%)THEN 170PROCe(Z%):CALLXu:Z%!q%=Hy:PROCD("Highlight_At_Start",Z%) 171ELSE:IFZ%!q%<>HyTHEN 172Z%!q%=_ 173ENDIF 174ENDIF 175ENDIF:=F% 176DEFFN_Null_Reason_Move(A%):PROCG(A%):A%=USR(Zu):IFA%THEN 177IFFNkTHEN 178CASETRUEOF 179WHENZ%!Ku%:A%=FALSE:CALLI_ 180WHENZ%!L_%:PROCLy:A%=(Z%!q%<>_):IFA%=0THEN 181CALLI_ 182ENDIF 183OTHERWISE:PROCUy:IFZ%!NJ%THEN 184PROCK 185ELSE:IFZ%!GJ%THEN 186PROCdy 187ENDIF 188ENDIF 189ENDCASE 190ENDIF 191ENDIF:=A% 192DEFPROCBJ(Q%,X%):LOCALF%,Fy%,J%:PROCoy(Z%!Fu%,Q%,X%):F%=Z%!Jy%:WHILE(Q%<>F%!my%)OR(X%<>F%!gl%):F%+=n%:ENDWHILE:Fy%=F%+n%:WHILEFy%!u%<>-1:Fy%+=n%:ENDWHILE:Fy%-=n%:FORJ%=0TOn%-1STEP4:F%!J%=Fy%!J%:NEXTJ%:Fy%!u%=-1:?FNL(Q%,X%)=FALSE:ENDPROC 193DEFFNL(Q%,X%):=Z%!sy%+(Z%!w%*X%)+Q% 194DEFFNK(Q%,X%):=Z%!cy%+(Z%!w%*X%)+Q% 195DEFPROCoy(A%,B%,C%):CALLQl:ENDPROC 196DEFPROCg:PROCoy(Z%!Hl%,Z%!t%,Z%!Ay%):ENDPROC 197DEFPROCX_:LOCALU%:Du%=11:DIMGi%Du%+1:DIMMa%LEN (B$)+2+1:U%=FNM(512):U%!0=-1:U%!4=0:U%!8=-16:U%!12=FNS(68,(Du%-1)*8*2):U%!16=68+32-16:U%!20=&1700312b:U%!24=Gi%:$Gi%=FNH("IB0"):$Ma%="S!"+B$:U%!28=Ma%:U%!32=Du%:SYS&400c2,,U%TOZi%:PROCC(U%,512):ENDPROC 198DEFPROCT_:W$=v$:t_%=CJ:a_%=a_:m_%=TJ:X_%=eJ:Y_%=x_:f_%=xJ:e_%=w_:oy%=__:k_%=o_:EJ%=VJ:dy%=ci:B_%=Gu:rJ%=Fu:iy%=Sa:o_%=Kl:__%=vl:s%!0=Su:s%!4=ru:s%!8=hi:s%!12=fu:IJ%=f_:TJ%=RJ:tJ%=lJ:FJ%=c_:XJ%=WJ:PJ%=EJ:ll%=Oi:Au%=uJ:Su%=d_:xJ%=Pi:jJ%=Ri:eJ%=Bu:Zu%=Xl 199pJ%=Ll:aJ%=ll:ENDPROC 200DEFPROCYy:LOCALN%,G$,gJ%:PROCT_:N%=OPENIN("<Daleks3$Dir>.Choices"):IFN%THEN 201LOCALERROR:ONERRORLOCALRESTOREERROR:CLOSE#N%:ENDPROC 202INPUT#N%,W$:INPUT#N%,rJ%,iy%,o_%,__%:INPUT#N%,t_%,a_%,m_%:INPUT#N%,B_%:IFB_%>bTHENB_%=1 203INPUT#N%,X_%,Y_%:INPUT#N%,dy%:INPUT#N%,oy%,f_%,e_%:INPUT#N%,k_%,EJ%:INPUT#N%,s%!0,s%!4,s%!8,s%!12:INPUT#N%,IJ%,TJ%,tJ%,Zu%:INPUT#N%,FJ%,XJ%,PJ%,ll%:INPUT#N%,Su%,xJ%,Au%:INPUT#N%,jJ%,eJ%:IB#N%,pJ%,aJ%:RESTOREERROR:CLOSE#N% 204ENDIF:ENDPROC 205DEFPROCo_:LOCALN%:N%=OPENOUT("<Daleks3$Dir>.Choices"):IFN%THEN 206LOCALERROR:ONERRORLOCALRESTOREERROR:CLOSE#N%:PROCQ 207PRINT#N%,W$:PRINT#N%,rJ%,iy%,o_%,__%:PRINT#N%,t_%,a_%,m_%:PRINT#N%,B_%:PRINT#N%,X_%,Y_%:PRINT#N%,dy%:PRINT#N%,oy%,f_%,e_%:PRINT#N%,k_%,EJ%:PRINT#N%,s%!0,s%!4,s%!8,s%!12:PRINT#N%,IJ%,TJ%,tJ%,Zu%:PRINT#N%,FJ%,XJ%,PJ%,ll%:PRINT#N%,Su%,xJ%,Au%:PRINT#N%,jJ%,eJ%:PRINT#N%,pJ%,aJ%:RESTOREERROR:CLOSE#N% 208ENDIF:ENDPROC 209DEFPROCmy:CASEZ%!q%OF 210WHEN_,Wy:IFZ%!L_%THEN 211Z%!L_%=FALSE 212ELSE:IFFNa(23,FNH("Demo"))=1THEN 213Z%!Nl%=TRUE:Z%!L_%=TRUE:PROCP:PROCLy:PROCV 214ENDIF 215ENDIF 216OTHERWISE:VDU7 217ENDCASE:ENDPROC 218DEFPROCLy:CASEZ%!Vu%OF 219WHEN_l:PROCNy(FNMy) 220WHENGJ:PROCNy(FNBy) 221OTHERWISE:PROCNy(Z%!Vu%) 222ENDCASE:ENDPROC 223DEFFNMy:LOCALQ%,X%,K%,F%:K%=0:F%=Z%!Jy%:WHILEF%!u%<>-1:Q%+=F%!Sn%:X%+=F%!Mn%:K%+=1:F%+=n%:ENDWHILE:Q%=(Q%/K%)+0.5:X%=(X%/K%)+0.5:Q%=SGN(Q%-Z%!t%):X%=SGN(X%-Z%!Ay%):=C%(Q%+1,X%+1) 224DEFFNBy:LOCALQ%,X%,K%,D%,F%,Bl%,Gl%:D%=Z%!i_%:Q%=Z%!t%:X%=Z%!Ay%:K%=&7fffffff:WHILE!D%>=0:Bl%=!D%:Gl%=D%!4:F%=(Q%-Bl%)*(Q%-Bl%)+(X%-Gl%)*(X%-Gl%):IFF%<K%THEN 225Ty%=Bl%:Iy%=Gl%:K%=F% 226ENDIF:D%+=8:ENDWHILE:IFK%=&7fffffffTHEN 227Ty%=Z%!w%DIV2:Iy%=Z%!x%DIV2:K%=(Q%-Ty%)*(Q%-Ty%)+(X%-Iy%)*(X%-Iy%) 228ENDIF:IFK%<=2THEN 229F%=0:Z%!Vu%=F% 230ELSE:Q%=SGN(Ty%-Q%):X%=SGN(Iy%-X%):F%=C%(Q%+1,X%+1) 231ENDIF:=F% 232DEFPROCNy(k%):LOCALQ%,X%,J%,Fy%:Q%=Z%!t%:X%=Z%!Ay%:IFFNo(k%)THEN 233Fy%=TRUE:J%=1:WHILEJ%<9ANDFy%:IFFNo((k%+J%)MOD9)THEN 234J%+=1 235ELSE:Fy%=FALSE 236ENDIF:ENDWHILE:IFJ%>=9THEN 237IFZ%!V_%>0THEN 238PROCOy 239ELSE:PROCvy 240ENDIF 241ELSE:k%=(k%+J%)MOD9:Z%!Ny%=W%(k%) 242ENDIF 243ELSE:Z%!Ny%=W%(k%) 244ENDIF:ENDPROC 245DEFFNo(k%):LOCALc%,f%,Q%,X%,M%,N%,E%,y%:Q%=Z%!t%+J%(k%,0):X%=Z%!Ay%+J%(k%,1):M%=Z%!w%:N%=Z%!x%:y%=(X%>=0)AND(X%<N%)AND(Q%<M%)AND(Q%>=0):y%=y%AND(?FNK(Q%,X%)=0):IFy%THEN 246FORf%=-1TO+1:IF((X%+f%)>=0)AND((X%+f%)<N%)THEN 247E%=FNL(Q%,X%+f%):FORc%=-1TO+1:IF((Q%+c%)>=0)AND((Q%+c%)<M%)THEN 248IF(E%?c%)<>0THEN 249y%=FALSE:c%=+1:f%=+1 250ENDIF 251ENDIF:NEXTc% 252ENDIF:NEXTf% 253ENDIF:=(y%=0) 9181DEFFNv=16 9182DEFPROCqJ(hi%,na%)LOCALERROR:ONERRORLOCALRESTOREERROR:PROCA("%LibHandler: hard_initialise") 9183IFFNv<na%THEN 9184ERROR0,"LibHandler too old" 9185ENDIF:IFhi%<1THEN 9186ERROR1,"LibHandler: bad max librarys parameter" 9187ENDIF:Cl%=hi%:DIMM$(Cl%-1):DIMQ%(Cl%-1):_i%=0:DIMn_%256:Ml%=40:Py%=0:KJ%=12:Ka%=FALSE:DIMZ$(Ml%-1):nJ%=FALSE:LJ%=FALSE:ENDPROC 9188DEFPROCS(F$,ka%)LOCALUu%,J%,U$,s$:LOCALERROR:ONERRORLOCALRESTOREERROR:PROCA("%.LibHandler: load_library") 9189J%=0:Uu%=TRUE:U$=MID$(F$,1+INSTR(F$,".")):WHILEJ%<_i%ANDUu%:Uu%=(U$<>M$(J%)):IFUu%THEN 9190J%+=1 9191ENDIF:ENDWHILE:IFUu%THEN 9192IFJ%=Cl%THEN 9193ERROR0,"LibHandler: Too many librarys to load!" 9194ENDIF:M$(J%)=U$:s$="'"+F$+"' does not have a FN_":LOCALERROR:ONERRORLOCALRESTOREERROR:PROCA(s$+U$+"_version") 9195Q%(J%)=EVAL("FN_"+U$+"_version"):RESTOREERROR:_i%+=1:LOCALERROR:ONERRORLOCALRESTOREERROR:PROCA(s$+"_hard_initialise_"+U$) 9196IFEVAL("FN_hard_initialise_"+U$)THEN 9197ERROR1,"Library file '"+F$+"'s hard init'ion failed" 9198ENDIF:RESTOREERROR 9199ENDIF:IFka%>Q%(J%)THEN 9200ERROR1,"Library file '"+F$+"' too old" 9201ENDIF:ENDPROC 9202DEFPROCA(P$)IFnJ%THEN 9203IFLJ%THEN 9204ERRORERR,REPORT$+" ["+STR$ERL+"]." 9205ELSEERRORERR,REPORT$ 9206ENDIF 9207ELSEIFNOTKa%THEN 9208IFPy%=Ml%THEN 9209A(Ml%-1)="Errors too deep!!!!!":PROCx 9210ENDIF:IFRIGHT$(P$,2)=": "THEN 9211P$=LEFT$(P$,LEN(P$)-2) 9212ENDIF:IFLJ%THEN 9213Z$(Py%)=REPORT$ 9214ELSEIFPy%=0THEN 9215Z$(Py%)="Error `"+REPORT$+"' (line ":Z$(Py%)+=STR$(ERL)+") in ":Z$(Py%)+="`"+P$+"'" 9216ELSEZ$(Py%)="`"+P$+"'" 9217ENDIF 9218ENDIF:Py%+=1:ERRORERR,"" 9219ENDIF 9220ENDIF:ENDPROC 9221DEFPROCxLOCALM_%,m$:ONERROR:REPORT:PRINT"::"+STR$(ERL):END 9222IFnJ%THEN 9223IFLJ%THEN 9224PROCF(ERR,REPORT$+" ["+STR$(ERL)+"]."):PROCB:END 9225ELSEPROCF(ERR,REPORT$):IFERR=p_%THEN 9226PROCB:END 9227ENDIF 9228ENDIF 9229ELSEIFKJ%=-2THEN 9230IFPy%>0THEN 9231ERROREXTERR,Z$(0) 9232ELSEERROREXTERR,REPORT$ 9233ENDIF:END 9234ENDIF:IFKJ%=-3THEN 9235$n_%="TASK":SYS&400c0,200,!n_%,"LibHandler"+CHR$(0):IFPy%THEN 9236FORM_%=0TOPy%-1:IFM_%<(Py%-1)THEN 9237PROCAy(Z$(M_%)+" in") 9238ELSEPROCAy(Z$(M_%)) 9239ENDIF:NEXTM_% 9240ELSEPROCAy(REPORT$+" (line "+STR$(ERL)+")") 9241ENDIF:SYS&600dd:END 9242ENDIF:IFKJ%>=0THEN 9243MODEKJ% 9244ENDIF:PRINT"An error has occured...":PRINT:IFPy%THEN 9245FORM_%=0TOPy%-1:COLOUR((7-(M_%<<1))AND6)+1:PRINTZ$(M_%);:IFM_%<(Py%-1)THEN 9246PRINT" in "; 9247ENDIF:NEXTM_% 9248ELSEPRINTREPORT$;" (line ";STR$(ERL);")" 9249ENDIF:PRINT:COLOUR7:END 9250ENDIF:ENDPROC 9251DEFPROCAy(I$)LOCALmu%:mu%=20+(LEN(I$)+5)AND-4:!n_%=mu%:n_%!16=&804c0:$(n_%+20)=I$:n_%?(20+LEN(I$))=10:n_%?(21+LEN(I$))=0:SYS&600e7,17,n_%,0:ENDPROC 9252DEFFN_CAsm_version=10 9253DEFFN_hard_initialise_CAsmLOCALERROR:ONERRORLOCALRESTOREERROR:PROCA("%.CAsm: hard_initialise") 9254PROCS("<BasicV_Assembler$Lib>.Misc",27):SYS5,"RMEnsure CAssembler 0.03 RMLoad System:Modules.CAssembler":SYS5,"If ""<CAsm$Dir>""="""" Then Set CAsm$Dir <d>.Library.CAsm":CAsmLibrary_stdlib=1:CAsmLibrary_stdio=2:CAsmLibrary_string=3 9255DO=4:CAsmLibrary_imath=5:z`=6:LB=7:CAsmLibrary_wimp=8:aO=9:CAsmLibrary_message=10:u`=11:CAsmLibrary_debug=12:CAsmLibrary_RelObj=13:jn=14:lo=15:WO=16:wB=17:aa=18:g`=19:LO=20:mB=21:sO=22:D`=23:`o=24:nn=25 9256ro=26:B_=26:ya=0:ma=1:Fn=2:sa=3:K=4:h=5:Ti=6:Tl=7:Co=8:XJ=9:ny=10:V=11:E_=12:A=13:Z=14:Nk=15:Tu=&6d734143:uy%=0:ny%=13:A_=0:Py=0:X_=10*1024:ju=X_+(1*1024):Pi%=TRUE:Hl=FALSE:=0 9257DEFPROCHy(X$)LOCALD%,jy%,hy%,L%,O%,P%,V%,F$:LOCALERROR:ONERRORLOCALRESTOREERROR:SYS&400ec,`%,-1:PROCA("%.CAsm: ClaimCAsmLibrary") 9258`%=HIMEM-32768:SYS&400ec,`%+32768,-1TOL%:L%+=32768:O%=`%+32768:P%=0:V%=14:IFO%=L%THEN 9259ERROR1,"Not enough memory to start application" 9260ENDIF:IFuy%<>0THEN 9261ERROR1,"Only one call to ClaimCAsmLibrary allowed" 9262ENDIF:DIMYl%B_*8:DIMS$(B_):IFFNh_DEFAULT 9263WHILEX$<>"":F$=LEFT$(X$,INSTR(X$,",")-1):LOCALERROR:ONERRORLOCALRESTOREERROR:PROCA("Attempted to claim the non-existent library: `"+F$+"'!") 9264jy%=EVAL("CAsmLibrary_"+F$):RESTOREERROR:hy%=Yl%:D%=hy%+(uy%*8):WHILED%>hy%:IF!hy%=jy%THEN 9265hy%=D%+1 9266ELSEhy%+=8 9267ENDIF:ENDWHILE:IFhy%=D%THEN 9268IFuy%>=B_THEN 9269ERROR1,"Too many librarys have been claimed!" 9270ENDIF:!D%=jy%:S$(jy%)=F$:uy%+=1:O%=`%+32768:P%=0:IFFNJ("FNh_"+F$) 9271ENDIF:X$=MID$(X$,LEN(F$)+2):WHILEASC(X$)=ASC(" "):X$=MID$(X$,2):ENDWHILE:ENDWHILE:SYS&400ec,`%,-1:RESTOREERROR:ENDPROC 9272DEFPROCkyLOCALK%,D%,J%,y%:LOCALERROR:ONERRORLOCALRESTOREERROR:PROCA("%.CAsm: AssembleCAsmTables") 9273IFuy%=0THEN 9274IFFNh_DEFAULT 9275ENDIF:y%=Yl%:J%=uy%:IF(V%AND2)=0THEN 9276DIMD%uy%*4:SYS79,uy%,D%+&c0000000,3,,y%,8 9277ENDIF:[OPTV%:.JJ DCDTu:DCDEu:]:WHILEJ%>0:[OPTV%:DCD!y%:DCDy%!4:]:y%+=8:J%-=1:ENDWHILE:[OPTV%:DCD0:]:[OPTV%:ALIGN:.C_:]:D%=P%:IFFNjumpblock_DEFAULT 9278Eu=(P%-D%)>>2:J%=uy%:y%=Yl%:WHILEJ%>0:D%=P%:IFFNJ("FNjumpblock_"+S$(!y%)) 9279y%!4=(P%-D%)>>2:y%+=8:J%-=1:ENDWHILE:ENDPROC 9280DEFPROCNuLOCALC:LOCALERROR:ONERRORLOCALRESTOREERROR:PROCA("%.CAsm: AssembleCAsmBasic") 9281[OPTV%:ALIGN:.HJ:STMFD(A)!,{4-5,Z}:BL P%+(13<<2):.C DCDJJ-C:DCDC_-C:DCDA_-C:DCDPy:DCDX_:.xy:DCD0:DCD0:DCD0:DCD0:LDR A,xy:LDMFD(A)!,{ny,V,E_,Z} 9282MOVpc,Z:BIC 5,Z,#&fc000003:LDMIA5,{0-4}:ADD0,0,5:ADD1,1,5:ADD2,2,5:MOV5,#0:SWI &fcb80:STRvc0,xy+(1<<2):STRvc1,xy+(3<<2):LDMFD(A)!,{4-5,pc}:.G_:FNZ:MOV2,Z:MOV1,A:MOV0,ny:SWI &fcb81:MOVvc1,#0 9283STRvc1,xy+(3<<2):MOVpc,2:MOV13,12:]:A_=P%:PROCM:PROChy:Py=(Py+3)AND-4:P%+=Py-1:O%+=Py-1:[OPTV%:DCB0:]:ENDPROC 9284DEFPROCOJLOCALERROR:ONERRORLOCALRESTOREERROR:PROCA("%.CAsm: AssembleCAsmApplication") 9285IFP%<>32768THENERROR1,"Expect P% to be &8000" 9286[OPTV%:ADR4,jy:MOV5,#Ai:SWI &fcb80:FNl("vc",2,gO):Bvc cl:SWI 43:.jy:DCDJJ-jy:DCDC_-jy:DCDA_-jy:DCDPy:DCDX_:DCDju:]:ENDPROC 9287DEFFNZLOCALERROR:ONERRORLOCALRESTOREERROR:PROCA("%.CAsm: StartCAssemblerSession") 9288[OPTV%:STMFD(A)!,{ny,V,E_,Z}:MOV V,pc:FNl("",Z,xy):STR A,[Z],#4:LDMIA(Z)!,{ny,E_,A}:AND V,V,#&fc000003:ORR Z,Z,V:]:=0 9289DEFFNN(A%)LOCALM$:M$="":WHILE?A%:M$+=CHR$(?A%):A%+=1:ENDWHILE:=M$ 9290DEFFNxy(A%,B%)LOCALM$:M$="":WHILEB%>=0AND?A%:M$+=CHR$(?A%):A%+=1:B%-=1:ENDWHILE:=M$ 9291DEFPROCO(A%,M$)$A%=M$:A%?LEN(M$)=0:ENDPROC 9292DEFPROCM_(A%,M$,B%)IFLEN(M$)<=B%THEN 9293$A%=LEFT$(M$,B%-1):A%?(B%-1)=ASC(MID$(M$,B%,1)) 9294ELSE$A%=M$:A%?LEN(M$)=0 9295ENDIF:ENDPROC 9296DEFFNJ(f$)LOCALERROR:ONERRORLOCALRESTOREERROR:PROCnJ 9297=EVAL(f$) 9298DEFPROCnJIFPi%THEN 9299ERRORERR,REPORT$+" (evaluating `"+f$+"')" 9300ELSEERRORERR,REPORT$ 9301ENDIF:ENDPROC 9302DEFPROCsu(gu%,WJ%,ri%)LOCALERROR:ONERRORLOCALRESTOREERROR:PROCA("%.CAsm: assemble_CAsm") 9303PROCS("<BasicV$Lib>.Heap",8):PROCS("<BasicV$Lib>.Message",1):IFFNsy(gu%,WJ%,ri%,0) 9304CALLHJ:ONERRORCALLG_:PROCx 9305ENDPROC 9306DEFPROCMIFV%AND4THEN 9307SYS&606c4,(O%-yy%)*100DIVH% 9308ELSESYS&606c4,(P%-yy%)*100DIVH% 9309ENDIF:ENDPROC 9310DEFFNsy(gu%,WJ%,ri%,fJ%)LOCALL%,O%,P%,V%,Ai%,H%:LOCALO:LOCALgo,L_,VB,j_,to,DB:LOCALbl,c,Ba:LOCALERROR:ONERRORLOCALRESTOREERROR:PROCA("%.CAsm: assemble_CAsm_External") 9311IFfJ%=0THEN 9312PROCS("<BasicV$Lib>.Heap",8):PROCS("<BasicV$Lib>.Message",1) 9313ENDIF:DIMyy%gu%:O=A:go=1<<31:L_=1<<30:VB=1<<29:j_=1<<28:to=1<<27:DB=1<<26:bl=1<<17:c=256:Ba=c+bl:SYS&606c0:LOCALERROR:ONERRORLOCALRESTOREERROR:SYS&606c1:PROCA("hourglass") 9314H%=gu%:L%=yy%+gu%:IFWJ%<>0THENWJ%=4 9315FORV%=8+WJ%TO10+WJ%STEP2:IF(V%AND4)<>0THEN 9316O%=yy%:IFfJ%=1THEN 9317P%=32768 9318ELSEP%=0 9319ENDIF 9320ELSEO%=0:P%=yy% 9321ENDIF:CASEfJ%OF 9322WHEN1:PROCM:PROCOJ:PROCM:PROCk:PROCM:PROCky:A_=P%:PROCM:PROChy:Py=(Py+3)AND-4 9323WHEN0:PROCM:PROCk:PROCM:PROCQ_:PROCM:PROCgJ:PROCM:PROCky:PROCM:PROCNu 9324WHEN2:PROCM:PROCk 9325ENDCASE:IFV%AND4THENL%=O%ELSEL%=P% 9326IF(V%AND2)=0THEN 9327SYS&dcb93,0,yy%,L%-yy% 9328ENDIF:H%=L%-yy%:NEXTV%:SYS&606c1:IFWJ%THEN 9329IFfJ%=0THEN 9330HJ+=yy%:G_+=yy% 9331ENDIF 9332ENDIF:IFHlANDfJ%<>2THEN 9333IFWJ%THEN 9334H%=C_:IFfJ%THENH%-=32768 9335ELSEERROR1,"CAsmTablesInBSS TRUE without offset assembly?" 9336ENDIF 9337ENDIF:IFri%THEN 9338PRINT"Assembled to &";~H%;" = ";((H%*10+512)DIV1024)/10;"K":PRINT"Could assemble with ";gu%-H%;" less" 9339ENDIF:=H% 9340DEFFN_Sprite_IO_version=6 9341DEFFN_hard_initialise_Sprite_IOLOCALERROR:ONERRORLOCALRESTOREERROR:PROCA("%.Sprite_IO: hard_initialise_Sprite_IO") 9342PROCS("<BasicV$Lib>.ModeInfo",5):PROCS("<BasicV$Lib>.Heap",1):PROCS("<BasicV$Lib>.file_io",9):=0 9343DEFFNU(ai%)=(ai%AND1)<>0 9344DEFFNny(ay%,M%,N%,yi%,Jn%)SYS&dcb8e,3,ay%,M%,N%,yi%,Jn%TOM%:=M% 9345DEFPROCiJ(fa%,ja%,RETURNyi%,RETURNan%)LOCALA%,B%,C%:A%=fa%:B%=ja%<>0:C%=FALSE:A%=USR(Gl):yi%=!A%:an%=A%!4:ENDPROC 9346DEFPROCMuLOCALs:LOCALERROR:ONERRORLOCALRESTOREERROR:PROCA("%.Sprite_IO: assemble") 9347[OPTV%:ALIGN:.s DCD0:DCD0:.Gl:FNZ:STMFD(A)!,{1-12,Z}:BL kJ:ADRvc Z,s:STMvcIA Z,{0-1}:MOVvc0,Z:LDMFD(A)!,{1-12,pc}:]:ENDPROC 9348DEFFN_Misc_version=34 9349DEFFN_hard_initialise_MiscLOCALJ%,a%,K%:LOCALERROR:ONERRORLOCALRESTOREERROR:PROCA("%.Misc: hard_initialise_Misc") 9350IFFNv<12THENERROR1,"Needs newer %.LibHandler" 9351si%=13:t$=CHR$(si%):Oa%=10:r$=CHR$(Oa%):h$=t$+r$:cn=256:DIMU%(15,1):a%=255:K%=3:FORJ%=0TO15:U%(J%,0)=a%:U%(J%,1)=K%:a%=FNh(a%,2):K%=FNh(K%,2):NEXTJ%:b$="":Cn%=100:On%=&7fff00:ca%=TRUE:An%=0:DIMbu%16:=0 9352DEFFNl(J$,ZJ%,Wl%)LOCALNu%,fl%,Ti%,zl%,wl%:ly%=FNt(J$):IFV%AND2=0THEN 9353[OPTV%:DCD0:DCD0:] 9354ELSENu%=Wl%-P%-8:IFABS(Nu%)>65535THENERROR1,"adrl out of range" 9355Ti%=ABS(Nu%)AND255:fl%=ABS(Nu%)AND65280:IFNu%>=0THEN 9356zl%=ly%OR(&28f0000+(ZJ%<<12)+Ti%):wl%=ly%OR(&2800c00+(ZJ%<<16)+(ZJ%<<12)+(fl%>>8)) 9357ELSEzl%=ly%OR(&24f0000+(ZJ%<<12)+Ti%):wl%=ly%OR(&2400c00+(ZJ%<<16)+(ZJ%<<12)+(fl%>>8)) 9358ENDIF:[OPTV%:DCDzl%:DCDwl%:] 9359ENDIF:=0 9360DEFFNh(Q%,Cu%)LOCALERROR:ONERRORLOCALRESTOREERROR:PROCA("%.Misc: rol") 9361Cu%=Cu%MOD32:=(Q%<<Cu%)OR(((NOT((-1)>>>Cu%))ANDQ%)>>>(32-Cu%)) 9362DEFPROCsJ(V$)LOCALti%,bi%,wa%:LOCALERROR:ONERRORLOCALRESTOREERROR:PROCA("%.Misc: Define_Local_Variables(`"+V$+"')") 9363ti%=P%:bi%=O%:wa%=V%:IF(V%AND4)=0THEN 9364O%=P% 9365ENDIF:P%=0:V%=V%OR6:P%=EVAL("FN_Declare_Local_Variables_"+V$):P%=ti%:O%=bi%:V%=wa%:ENDPROC 9366DEFPROCm_(J$,K%)LOCALD%,ly%:LOCALERROR:ONERRORLOCALRESTOREERROR:PROCA("%.Misc: PROCcc") 9367ly%=FNt(J$):IFV%AND4THEND%=O%ELSED%=P% 9368FORJ%=1TOK%:D%-=4:!D%=((!D%)AND&fffffff)+ly%:NEXTJ%:ENDPROC 9369DEFFNt(J$)LOCALly%:LOCALERROR:ONERRORLOCALRESTOREERROR:PROCA("%.Misc: FNcc") 9370IFJ$=""ORJ$=" "THEN=14<<28 9371IFJ$="lo"THEN=3<<28 9372IFJ$="hs"THEN=2<<28 9373ly%=INSTR("eqnecsccmiplvsvchilsgeltgtlealnv",J$):IFly%MOD2THEN=((ly%-1)>>1)<<28 9374ERROR1,"Unrecognised condition code `"+J$+"'":=0 9375DEFFNyy(Q%,RETURNA%())LOCALERROR:ONERRORLOCALRESTOREERROR:PROCA("%.Misc: armimm") 9376SYS&dcb92,Q%,bu%TOQ%:A%(0)=!bu%:A%(1)=bu%!4:A%(2)=bu%!8:A%(3)=bu%!12:=Q% 9377DEFFNZy(J$,a%,K%,Q%,ei%)LOCALA%(),J%,b%:LOCALERROR:ONERRORLOCALRESTOREERROR:PROCA("%.Misc: SubtractImmediate") 9378DIMA%(4):J%=FNyy(ABS(Q%),A%()):b%=J%:IFQ%<0THEN 9379WHILEJ%>1:J%-=1:[OPTV%:ADD a%,K%,#A%(J%):]:K%=a%:ENDWHILE:[OPTV%:ADD a%,K%,#A%(0):] 9380ELSEWHILEJ%>1:J%-=1:[OPTV%:SUB a%,K%,#A%(J%):]:K%=a%:ENDWHILE:[OPTV%:SUB a%,K%,#A%(0):] 9381ENDIF:IFei%THEN 9382IFV%AND4THENa%=O%ELSEa%=P% 9383a%!-4+=1<<20 9384ENDIF:PROCm_(J$,b%):=0 9385DEFFNF(J$,ZJ%,Wl%)Wl%-=P%+8:IFWl%>=0THENERROR1,"invalid call to adrf(), label ahead" 9386=FNZy(J$,ZJ%,15,-Wl%,ei%) 9387DEFFNty(K%)P%+=K%:O%+=K%:=0 9388DEFFN_StickyWin_version=1 9389DEFFN_hard_initialise_StickyWinLOCALERROR:ONERRORLOCALRESTOREERROR:PROCA("%.StickyWin: hard_initialise") 9390l_=36:=0 9391DEFPROCZu(Zy%)Zy%!32=0:ENDPROC 9392DEFPROCny(Uy%,Zy%,ma%)!Zy%=Uy%:IFZy%!32=0THEN 9393SYS&400cb,,Zy% 9394ENDIF:Zy%!28=ma%:SYS&400c5,,Zy%:ENDPROC 9395DEFPROCn(Uy%,Zy%)IFUy%>0THEN 9396PROCCy(Uy%,Zy%):SYS&400c6,,Zy% 9397ENDIF:ENDPROC 9398DEFPROCCy(Uy%,Zy%)IFUy%>0THEN 9399!Zy%=Uy%:SYS&400cb,,Zy% 9400ENDIF:ENDPROC 9401DEFFN_Template_version=4 9402DEFFN_hard_initialise_TemplateLOCALXy%:LOCALERROR:ONERRORLOCALRESTOREERROR:PROCA("%.Template: hard_initialise") 9403Tu%=FALSE:=0 9404DEFPROCu_LOCALzy%,Xy%,R%,U%,Q$,Ol%:Q$=FNIy("<"+B$+"$Dir>.Sprites"):zy%=FNb(Q$):IFzy%>0THEN 9405PROCX(v%,zy%+16):v%!0=zy%+16:v%!4=0:v%!8=16:v%!12=16:SYS&2002e,522,v%,Q$TOXy%;R%:IFFNU(R%)THEN 9406PROCU("Reason","Sprites"):PROCo(Xy%):PROCL(4):PROCB 9407ENDIF 9408ELSEv%=0 9409ENDIF:PROCSJ("Templates"):IFTu%THEN 9410IFv%>0THEN 9411PROCq("ProgInfo",v%,"ProgInfo") 9412ELSEPROCq("ProgInfo",+1,"ProgInfo") 9413ENDIF:N_%=0 9414ELSEIFv%>0THEN 9415N_%=FNR("ProgInfo",Ol%,v%) 9416ELSEN_%=FNR("ProgInfo",Ol%,+1) 9417ENDIF 9418ENDIF:Ui%=FNR("Query",Ol%,+1):PROC__:ENDPROC 9419DEFPROCSJ(_$)LOCALji%,jy%,zy%,Xy%,R%,G%:LOCALNa%,Q$,UJ%,du%:Q$="<"+B$+"$Dir>."+_$:zy%=FNb(Q$):IFzy%<=0THEN 9420PROCU("Reason",_$):PROCU("Sys","Not found"):PROCL(4):PROCB 9421ENDIF:PROCX(jy%,zy%):PROCX(UJ%,zy%+m):du%=UJ%+AJ:Na%=UJ%+m:SYS&600d9,,Q$TOXy%;R%:IFFNU(R%)THEN 9422PROCU("Reason","Templates"):PROCo(Xy%):PROCL(4):SYS&600da:PROCB 9423ENDIF:LOCALERROR:ONERRORLOCALRESTOREERROR:PROCgu 9424R_%=0:REPEATdu%!0=ASC("*"):SYS&600db,,Na%,jy%,jy%+zy%,-1,du%,R_%TOXy%,,ji%,,,,R_%;R%:IFFNU(R%)THEN 9425PROCf(Xy%):SYS&600da:PROCB 9426ENDIF:IFR_%THEN 9427FORR%=0TO11:IFdu%?R%=13THENdu%?R%=0:R%=12 9428NEXTR%:UJ%!ou=ji%-jy%:UJ%!su=jy%:G%=FNr(UJ%):IFG%=0THEN 9429PROCL(16):SYS&600da:PROCB 9430ENDIF:G%!wy=!qu%:!qu%=G% 9431ENDIF:UNTILR_%=0:RESTOREERROR:SYS&400da:PROCW(UJ%):PROCW(jy%):ENDPROC 9432DEFPROCguSYS&600da:PROCA("Template"):ENDPROC 9433DEFFNR(C$,ta%,hu%)=FNNy(C$,ta%,hu%,"") 9434DEFFNNy(C$,ta%,hu%,P$)LOCALG%,qa%,N%:G%=FNX(C$):IFG%=0THEN 9435PROCB 9436ENDIF:qa%=G%+m:qa%!64=hu%:IFP$<>""THEN 9437N%=FNJ("FN"+P$) 9438ENDIF:IFFNO(G%,N%)THEN 9439PROCB 9440ENDIF:PROCs(G%):=N% 9441DEFPROCq(C$,hu%,P$)LOCALG%,M%:G%=FNX(C$):IFG%=0THEN 9442PROCB 9443ENDIF:M%=G%+m:M%!64=hu%:IFP$<>""THEN 9444M%=FNJ("FN"+P$+"("+STR$(M%)+")") 9445ENDIF:ENDPROC 9446DEFFNE(C$,hu%)LOCALG%,M%:G%=FNX(C$):IFG%=0THEN 9447PROCB 9448ENDIF:M%=G%+m:M%!64=hu%:=0 9449DEFFND(C$,RETURNUy%)LOCALG%,T%:T%=FALSE:IFUy%<=0THEN 9450G%=FNX(C$):IFG%THEN 9451T%=FNO(G%,Uy%):IFT%=FALSETHEN 9452PROCs(G%) 9453ENDIF 9454ELSET%=TRUE 9455ENDIF 9456ENDIF:=T% 9457DEFFNg(C$,c%,f%)LOCALG%:G%=FNX(C$):IFG%THEN 9458G%=FNcy(G%,c%,f%) 9459ENDIF:=G% 9460DEFFNqy(C$,c%,f%,Y$)LOCALG%:G%=FNX(C$):IFG%THEN 9461G%=FNhy(G%,c%,f%,Y$) 9462ENDIF:=G% 9463DEFFNVy(C$)LOCALG%,_$,Y%:G%=!qu%:Y%=FALSE:WHILEG%AND(NOTY%):Y%=(FNxy(G%+AJ,12)=C$):IFNOTY%THEN 9464G%=G%!wy 9465ENDIF:ENDWHILE:=G% 9466DEFFNX(C$)LOCALG%:G%=FNVy(C$):IFG%=0THEN 9467PROCU("Reason",C$):PROCL(3) 9468ENDIF:=G% 9469DEFFNO(G%,RETURNUy%)SYS&600c1,,G%+mTOUy%;G%:G%=FNU(G%):IFG%THEN 9470PROCf(Uy%):Uy%=0 9471ENDIF:=G% 9472DEFPROC`y(G%,RETURNUy%)G%=FNO(G%,Uy%):ENDPROC 9473DEFFNcy(G%,c%,f%)LOCALN%,M%,R%:N%=0:R%=G%!by:G%!by+=1:G%=FNr(G%):IFG%THEN 9474M%=G%+m:PROCDy(M%,R%,c%):PROCiy(M%+4,R%,f%):PROC`y(G%,N%):PROCs(G%):G%=N% 9475ENDIF:=G% 9476DEFFNhy(G%,c%,f%,Y$)LOCALN%,M%,R%:N%=0:R%=G%!by:G%!by+=1:G%=FNr(G%):IFG%THEN 9477M%=G%+m:PROCDy(M%,R%,c%):PROCiy(M%+4,R%,f%):IFM%!56AND(1<<8)THEN 9478PROCM_(M%!72,Y$,M%!80) 9479ELSEPROCM_(M%+72,Y$,12) 9480ENDIF:PROC`y(G%,N%):PROCs(G%):G%=N% 9481ENDIF:=G% 9482DEFPROCDy(M%,R%,F%)LOCALN%,_%:_%=Yu%<<Sy%:N%=M%!8-M%!0:IF_%<=N%THEN 9483M%!0=0 9484ELSE_%=_%-N%:IFF%<0THEN 9485F%=_%+(F%MOD_%) 9486ENDIF:M%!0=(M%!0+F%*R%)MOD_% 9487ENDIF:M%!8=M%!0+N%:ENDPROC 9488DEFPROCiy(M%,R%,F%)LOCALN%,_%:_%=(w_%<<m%)-96:N%=M%!8-M%!0+48:IF_%<=N%THEN 9489M%!8=(w_%<<m%)-N% 9490ELSE_%=_%-N%:IFF%<0THEN 9491F%=_%+(F%MOD_%) 9492ENDIF:M%!8=(w_%<<m%)-M%!8:M%!8=(w_%<<m%)-((M%!8+F%*R%)MOD_%) 9493ENDIF:M%!0=M%!8-N%:ENDPROC 9494DEFPROCs(G%)LOCALD%:D%=qu%:WHILE!D%<>0AND!D%<>G%:D%=!D%+wy:ENDWHILE:IF!D%=G%THEN 9495!D%=G%!wy:G%!wy=0:PROCW(G%) 9496ENDIF:ENDPROC 9497DEFFNvy(A%)=USR(Hi) 9498DEFFNr(A%)A%=FNvy(A%):IFA%=0THEN 9499PROCL(16) 9500ENDIF:=A% 9501DEFPROCy_IF(V%AND2)=0THENPROCsJ("Template") 9502[OPTV%:ALIGN:.Hi:FNZ:B pl:]:ENDPROC 9503DEFFN_Declare_Local_Variables_TemplateLOCALERROR:ONERRORLOCALRESTOREERROR:PROCA("@.Template") 9504DIMqu%4:!qu%=0:P%=0:[OPTV%:.wy DCD0:.by DCD0:.su DCD0:.ou DCD0:.AJ DCD0:DCD0:DCD0:.m:]:=0 9505DEFPROCYJ:LOCALd%,i%,S$:LOCALDATA:RESTORE+0:IFTu%THEN 9506d%=!(FNX("ProgInfo")+m+88+(16<<5)+20) 9507ELSE:d%=FNwy(N_%,16) 9508ENDIF:READS$:i%=ASC(S$):S$=MID$(S$,2):WHILES$<>"":?d%=ASC(S$)EORi%:S$=MID$(S$,2):d%+=1:ENDWHILE:?d%=0 9509DATA"҂��������",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, 9510ENDPROC 9511DEFPROCk:LOCALERROR:ONERRORLOCALRESTOREERROR:PROCA("@.Assembler") 9512IF(V%AND2)=0THEN 9513PROCrJ 9514ENDIF:[OPTV%:ALIGN:.u_ DCD0:.Nu LDR0,u_:MOVSpc,Z:.vu:]:P%+=s_%:O%+=s_%:[OPTV%:]:PROCM:PROCeJ:PROCM:PROCFJ:PROCM:PROCHJ:PROCM:PROCa_:PROCM:PROCNJ:PROCM:PROCZJ:PROCM:PROCV_:PROCM:PROCau:PROCM:PROCMJ:PROCM:PROClJ:PROCM:PROCxJ:PROCM:PROCRJ:PROCM:PROCqu:PROCM:PROCcJ:PROCM:PROCk_:PROCM:PROCMu:PROCM:PROCy_:ENDPROC 9515DEFPROChy:ENDPROC 9516DEFPROCZJ:[OPTV%:ALIGN:.xy%DCD0:.S_ DCD0:ALIGN:.r:LDR12,S_:MOVSpc,Z:.U`:STR0,S_:MOVSpc,Z:]:ENDPROC 9517DEFPROCa_:LOCALu,M,S,U,D,I,my,X,N,L:LOCALni,My,sy,Hk:LOCALh_,QJ:LOCALERROR:ONERRORLOCALRESTOREERROR:PROCA("Show_Movement") 9518u=2:M=3:S=4:U=6:D=7:I=8:my=9:X=10:N=U:L=Z:h_=384:QJ=352:[OPTV%:ALIGN:.Zu:FNZ:STMFD(A)!,{12,Z}:BL r:LDR0,[12,#Yy%]:ADD0,0,#16*c_%:STR0,[12,#Yy%]:BL tJ:LDR0,[12,#Yy%]:LDR1,[12,#Qy%]:CMP0,1:MVNeq0,#NOT(-1):MOVne0,#0:LDMFD(A)!,{12,pc}^:.tJ 9519STMFD(A)!,{4-9,Z}:SUB O,O,#h_:LDR my,[12,#Yy%]:LDR0,[12,#z%]:MOV1,#0:MOV2,#&f0000000:MOV3,#&70000000:MOV4,#0:STMIA O,{0,1-4}:MOV1,O:SWI &400c9:TEQ0,#0:Beq Fa:BL Qy:ADD D,12,#ey%:LDMIA D,{D,I}:LDR X,[12,#Jy%]:ADD M,12,#JJ%:LDMIA M,{M,S} 9520LDR U,[12,#Ny%]:TEQ U,#0:ADDne M,D,M:SUBne S,I,S:ADDne u,my,U,LSL#iJ%:LDMneIB u,{0,1,u}:ADDne M,M,0:ADDne S,S,1:MOVeq u,#0:MOV0,#34:ORR0,0,#512:LDR1,[12,#l%]:MOV5,#3:ADD U,O,#QJ:STMIA U,{0,1,M,S,u,X}:.ni:TEQ u,#0:SWIne 46:.sy:LDMIA X,{M,S,U,L} 9521CMN L,#1:Beq ql:ADD X,X,#n%:ADD M,D,M:SUB S,I,S:ADD u,my,U,LSL#iJ%:LDMIA u,{u,N,L}:ADD M,M,N:ADD S,S,L:SWI 46:B sy:.ql:MOV1,O:SWI &400ca:TEQ0,#0:ADDne U,O,#QJ:LDMneIA U,{0,1,M,S,u,X}:Bne ni:.Fa:LDR1,[12,#Qy%]:LDR0,[12,#Qu%]:ADD0,1,0,LSL#4+iJ% 9522TEQ0,my:Bne xl:LDR5,[12,#Jy%]:.C LDR0,[5,#u%]:CMN0,#1:Beq sl:ANDS0,0,#sJ%ORz_%:ADDeq5,5,#n%:Beq C:.To:LDR0,[12,#t%]:LDR1,[12,#Ay%]:LDR2,[12,#w%]:MLA 0,1,2,0:LDR1,[12,#sy%]:LDRB1,[1,0]:TEQ1,#0:LDReq1,[12,#cy%]:LDReqB1,[1,0]:TEQeq1,#0:Bne Si 9523LDR0,[12,#C_%]:ADD0,0,#10:BL s_:.Si:LDR0,[5,#u%]:AND0,0,#z_%ORsJ%:CMP0,#z_%:Bne ei:LDR0,[12,#Fu%]:ADD1,5,#my%:LDMIA1,{1-2}:BL zJ:MOV0,#z_%:.ei:CMP0,#z_%ORsJ%:Bne bJ:ADD1,5,#my%:LDMIA1,{1-2}:LDR0,[12,#ou%]:MVN3,#NOT(-1):STMIA0,{1-2,3}:ADD0,0,#8 9524STR0,[12,#ou%]:LDR0,[12,#ql%]:BL zJ:.bJ:MOV2,5:.`J ADD2,2,#n%:LDR3,[2,#u%]:CMN3,#1:Bne `J:SUB2,2,5:ADD1,5,#n%:MOV0,5:BL Yu:B C:.sl:BL O_:BL i_:.xl:ADD O,O,#h_:LDMFD(A)!,{4-9,pc}^:]:ENDPROC 9525DEFPROCNJ:LOCALM,S,U,e,By,w,f,X,N,L:LOCALg,Fy,Y,a,p:LOCALVk,sy,Di:M=1:S=2:U=3:w=4:f=5:e=6:X=7:By=8:Y=9:a=11:p=Z:g=Y:Fy=a:N=0:L=U:[OPTV%:ALIGN:.t_:FNZ:STMFD(A)!,{12,Z}:BL r:BL O_:LDMFD(A)!,{12,pc}^:ALIGN:.O_:STMFD(A)!,{4-9,Z}:LDR0,[12,#Qy%]:STR0,[12,#Yy%] 9526LDR X,[12,#Jy%]:ADD g,12,#Cy%:LDMIA g,{g,Fy}:ADD N,12,#vu%:LDMIA N,{N,L}:ADD w,12,#t%:LDMIA w,{w,f}:MLA M,w,g,N:MLA S,f,Fy,L:ADD Z,12,#JJ%:STMIA Z,{M,S}:.sy:LDR M,[X,#u%]:CMN M,#1:ADDne w,X,#my%:LDMneIA w,{w,f}:MLAne M,w,g,N:MLAne S,f,Fy,L 9527STMneIA X,{M,S}:ADDne X,X,#n%:Bne sy:LDMFD(A)!,{4-9,pc}^:ALIGN:.I_:FNZ:STMFD(A)!,{4-9,12,Z}:BL r:LDR e,[12,#sy%]:LDR By,[12,#w%]:LDR2,[12,#x%]:MUL 2,By,2:MOV1,#0:MOV0,e:BL ty:LDR X,[12,#Jy%]:ADD p,12,#t%:LDMIA p,{Y,a}:LDR U,[12,#Ny%]:TST U,#1 9528ADDne Y,Y,#1:TST U,#2:SUBne Y,Y,#1:TST U,#8:SUBne a,a,#1:TST U,#4:ADDne a,a,#1:STMIA p,{Y,a}:LDR p,[12,#cy%]:.sy:LDR M,[X,#u%]:CMN M,#1:Beq Ui:ADD M,X,#my%:LDMIA M,{w,f}:CMP Y,w:SUBlt w,w,#1:MOVlt U,#2:MOVeq U,#0:MOVgt U,#1:ADDgt w,w,#1:CMP a,f 9529SUBlt f,f,#1:ORRlt U,U,#8:ORRgt U,U,#4:ADDgt f,f,#1:STR U,[X,#Wi%]:STMIA M,{w,f}:MLA U,By,f,w:LDRB0,[e,U]:TEQ0,#0:Bne Il:LDRB0,[p,U]:EORS0,0,#255:Beq dl:STRB0,[e,U]:.C ADD X,X,#n%:B sy:.Il:MOV0,#0:STRB0,[e,U]:MOV0,#255:STRB0,[p,U]:LDR0,[X,#u%] 9530ORR0,0,#z_%:ORR0,0,#sJ%:STR0,[X,#u%]:LDR0,[12,#Jy%]:.Di:ADD M,0,#my%:LDMIA M,{M,S}:TEQ M,w:TEQeq S,f:ADDne0,0,#n%:Bne Di:LDR M,[0,#u%]:ORR M,M,#sJ%:STR M,[0,#u%]:B C:.dl:LDR M,[X,#u%]:ORR M,M,#z_%:STR M,[X,#u%]:B C:.Ui:LDMFD(A)!,{4-9,12,pc}^:]:ENDPROC 9531DEFPROClJ:[OPTV%:ALIGN:.Zi:FNZ:STMFD(A)!,{4-9,12,Z}:BL r:SUB A,A,#512:LDR0,[12,#z%]:MOV1,A:MOV2,#0:MOV3,#&f0000000:MOV4,#&70000000:MOV5,#0:STMIA1,{0,2-5}:SWI &400c9:BL Qy:.C TEQ0,#0:BLne m_:BLne wJ:MOVne1,A:SWIne &400ca:Bne C:ADD A,A,#512 9532LDMFD(A)!,{4-9,12,pc}^:]:ENDPROC 9533DEFPROCk_:[OPTV%:ALIGN:.Ql:.zJ:STMFD(A)!,{4-9,12,Z}:SUB A,A,#512:BL r:ADD3,12,#vu%:LDMIA3,{3,4}:ADD5,12,#Cy%:LDMIA5,{5,6}:MLA 3,1,5,3:MLA 4,2,6,4:MOV2,0:LDR7,[12,#z%]:ADD1,A,#2<<2:STR7,[1]:STR3,[1,#4]:ADD5,3,5:STR5,[1,#12]:BL py:RSB Z,4,#0:SUB Z,Z,0 9534STR Z,[1,#8]:ADD Z,Z,6:STR Z,[1,#16]:MOV5,#3:MOV0,#34:ORR0,0,#512:LDR Z,[12,#l%]:STMIA A,{0,Z}:SWI &400c9:BL Qy:ADD8,12,#ey%:LDMIA8,{8-9}:ADD3,8,3:SUB4,9,4:.C TEQ0,#0:LDMneIA A,{0-1}:SWIne 46:ADDne1,A,#2<<2:SWIne &400ca:Bne C:ADD A,A,#512 9535LDMFD(A)!,{4-9,12,pc}^:]:ENDPROC 9536DEFPROCcJ:LOCALFy,g,Y,a,d,n,N,L,By,p_:d=3:n=4:Y=6:a=7:g=8:Fy=9:By=10:p_=11:N=0:L=5:[OPTV%:ALIGN:.U_:STMFD(A)!,{Z,0-12}:SUB A,A,#512:BL r:LDR By,[12,#w%]:LDR p_,[12,#x%]:LDR0,[12,#h_%]:MVN0,0:STR0,[12,#h_%]:ADD Y,12,#t%:LDMIA Y,{Y,a}:ADD g,12,#Cy% 9537LDMIA g,{g,Fy}:ADD d,12,#JJ%:LDMIA d,{d,n}:RSB2,n,#0:BL py:SUB2,2,0:LDR0,[12,#z%]:MOV1,A:STR0,[1]:SUB0,d,g:STR0,[1,#4]:ADD0,d,g,LSL#1:STR0,[1,#12]:SUB0,2,Fy:STR0,[1,#8]:ADD0,2,Fy,LSL#1:STR0,[1,#16]:SWI &400c9:BL Qy:ADD1,12,#ey%:LDMIA1,{1,Z} 9538ADD d,1,d:SUB n,Z,n:.C TEQ0,#0:Beq ti:LDR1,[12,#l%]:FNQ(-1,+1,_l%):FNQ(0,+1,Ni%):FNQ(+1,+1,Li%):FNQ(-1,0,cl%):FNQ(+1,0,dl%):FNQ(-1,-1,Oi%):FNQ(0,-1,sl%):FNQ(+1,-1,Ii%):MOV1,A:SWI &400ca:B C:.ti:ADD A,A,#512:LDMFD(A)!,{pc,0-12}^:.au:STMFD(A)!,{d,n,Y,a,Z} 9539ADD Y,Y,N:SUB a,a,L:CMP Y,By:CMPlo a,p_:LDMhsFD(A)!,{d,n,Y,a,pc}^:MLA d,g,N,d:MLA n,Fy,L,n:MLA N,a,By,Y:LDR L,[12,#sy%]:LDRB L,[L,N]:TEQ L,#0:LDReq L,[12,#cy%]:LDReqB L,[L,N]:TEQeq L,#0:LDMneFD(A)!,{d,n,Y,a,pc}^:MOV0,#34:ORR0,0,#512:MOV5,#3:SWI 46 9540LDMFD(A)!,{d,n,Y,a,pc}^:]:ENDPROC 9541DEFFNQ(c%,f%,tu%):[OPTV%:FNY(N,c%):FNY(L,f%):LDR2,[12,#tu%]:BL au:]:=0 9542DEFFNG(c%,f%,tu%):[OPTV%:LDR2,[12,#tu%]:FNY(3,c%):FNY(4,f%):BL ri:]:=0 9543DEFFNY(y%,R%):IFR%<0THEN 9544[OPTV%:MVN y%,#NOT(R%):] 9545ELSE:[OPTV%:MOV y%,#R%:] 9546ENDIF:=0 9547DEFPROCMJ:[OPTV%:ALIGN:.H_ DCD0:.py LDR0,H_:MOVSpc,Z:.Qy:STMFD(A)!,{0-1,Z}:LDR0,[1,#4]:LDR Z,[1,#20]:SUB0,0,Z:LDR Z,[1,#16]:LDR1,[1,#24]:SUB1,Z,1:LDR Z,H_:SUB1,1,Z:ADD Z,12,#ey%:STMIA Z,{0-1}:LDMFD(A)!,{0-1,pc}^:.LJ:STMFD(A)!,{0,Z}:LDR0,[1,#4] 9548LDR Z,[1,#20]:SUB0,0,Z:STR0,[12,#ey%]:LDR0,[1,#16]:LDR Z,[1,#24]:SUB0,0,Z:STR0,[12,#Ei%]:LDMFD(A)!,{0,pc}^:]:ENDPROC 9549DEFPROCau:LOCALB,F,G,J,E,T,D,I:LOCALx,v,C:J=11:G=10:F=9:B=8:I=7:D=6:T=5:E=4:[OPTV%:.m_:STMFD(A)!,{Z}:MOV F,1:LDR E,[12,#Cy%]:LDR T,[12,#vy%]:ADD D,12,#ey%:LDMIA D,{D,I}:LDR0,[1,#28]:SUB0,0,D:MOV1,E:BL uy:MOV B,0:LDR0,[F,#36]:SUB0,0,#1:SUB0,0,D:MOV1,E:BL uy 9550MOV G,0:LDR0,[F,#32]:SUB0,0,#1:SUB0,I,0:MOV1,T:BL uy:MOV J,0:LDR0,[F,#40]:SUB0,I,0:MOV1,T:STMFD(A)!,{J}:BL uy:LDMFD(A)!,{J}:MOV F,0:LDR0,[12,#Yy%]:LDR1,[12,#Qy%]:TEQ0,1:LDMeqFD(A)!,{pc}^:SUBS B,B,#2:MOVlt B,#0:SUBS F,F,#2:MOVlt F,#0:ADD G,G,#2 9551LDR Z,[12,#w%]:CMP G,Z:SUBge G,Z,#1:ADD J,J,#2:LDR Z,[12,#x%]:CMP J,Z:SUBge J,Z,#1:LDMFD(A)!,{pc}^:ALIGN:.wJ:LDR1,[12,#_y%]:SUBS1,1,#1:MOVltSpc,Z:SWI c+18:SWI c+3:LDR0,[12,#Bi%]:SWI 0:LDR0,[12,#Kl%]:CMP0,#0:Blt el:SWI c+23:SWI c+17:SWI c+2:SWI 0 9552SWI c:SWI c:SWI c:SWI c:SWI c:SWI c:.el:ADDpc,pc,1,LSL#2:MOVSpc,Z:B vJ:B _u:B mi:B zi:B Za:.vJ:STMFD(A)!,{B,F,G,J,Z}:CMP B,#0:MOVle B,#1:SUBS G,G,B:LDMltFD(A)!,{B,F,G,J,pc}^:MLA B,E,B,D:LDR0,[12,#x%]:SUB0,0,#1:CMP J,0:SUBge J,0,#1:SUBS J,J,F 9553LDMltFD(A)!,{B,F,G,J,pc}^:MLA F,T,F,T:SUB F,I,F:.v MOV Z,B:MOV3,G:.x MOV0,#69:MOV1,Z:MOV2,F:SWI 69:ADD Z,Z,E:SUBS3,3,#1:Bge x:SUB F,F,T:SUBS J,J,#1:Bge v:LDMFD(A)!,{B,F,G,J,pc}^:._u:STMFD(A)!,{B,F,G,J,Z}:SUB G,G,B:MLA B,E,B,D:ADD B,B,E,ASR#1 9554SUB J,J,F:MUL F,T,F:ADD F,F,T,ASR#1:SUB F,I,F:.v MOV Z,B:MOV3,G:.x MOV0,#69:MOV1,Z:MOV2,F:SWI 69:ADD Z,Z,E:SUBS3,3,#1:Bge x:SUB F,F,T:SUBS J,J,#1:Bge v:LDMFD(A)!,{B,F,G,J,pc}^:.mi:STMFD(A)!,{B,F,G,J,Z}:SUB G,G,B:ADD G,G,#1:MLA B,E,B,D:SUB J,J,F 9555ADD J,J,#1:MUL F,T,F:SUB F,I,F:.v MOV Z,B:MOV3,G:.x MOV0,#69:MOV1,Z:MOV2,F:SWI 69:MOV0,#69:ADD1,Z,E,ASR#1:MOV2,F:SWI 69:MOV0,#69:MOV1,Z:ADD2,F,T,ASR#1:SWI 69:ADD Z,Z,E:SUBS3,3,#1:Bge x:SUB F,F,T:SUBS J,J,#1:Bge v:LDMFD(A)!,{B,F,G,J,pc}^:.zi 9556STMFD(A)!,{B,F,G,J,Z}:SUB G,G,B:ADD G,G,#1:MLA B,E,B,D:SUB J,J,F:MUL F,T,F:ADD J,J,#1:SUB F,I,F:.v MOV Z,B:MOV3,G:.x MOV0,#68:SUB1,Z,#t:SUB2,F,#t:SWI 69:MOV0,#5:ADD1,Z,#t:ADD2,F,#t:SWI 69:MOV0,#68:ADD1,Z,#t:SUB2,F,#t:SWI 69:MOV0,#5:SUB1,Z,#t 9557ADD2,F,#t:SWI 69:ADD Z,Z,E:SUBS3,3,#1:Bge x:SUB F,F,T:SUBS J,J,#1:Bge v:LDMFD(A)!,{B,F,G,J,pc}^:.Za:STMFD(A)!,{B,F,G,J,Z}:SUB G,G,B:ADD G,G,#1:MLA B,E,B,D:SUB J,J,F:MUL F,T,F:ADD J,J,#1:SUB F,I,F:.v MOV Z,B:MOV3,G:.x MOV0,#68:SUB1,Z,#t:MOV2,F:SWI 69 9558MOV0,#5:ADD1,Z,#t:MOV2,F:SWI 69:MOV0,#68:MOV1,Z:SUB2,F,#t:SWI 69:MOV0,#5:MOV1,Z:ADD2,F,#t:SWI 69:ADD Z,Z,E:SUBS3,3,#1:Bge x:SUB F,F,T:SUBS J,J,#1:Bge v:LDMFD(A)!,{B,F,G,J,pc}^:ALIGN:.il:LDR0,[12,#q%]:TEQ0,#Hy:TEQne0,#R_:MOVeqSpc,Z 9559STMFD(A)!,{D,I,E,T,Z}:ADD0,12,#JJ%:LDMIA0,{0-1}:ADD D,D,0:SUB I,I,1:LDR0,[12,#Yy%]:LDR1,[12,#Ny%]:ADD0,0,1,LSL#iJ%:ADD0,0,#W_%:LDMIA0,{0-1}:ADD D,D,0:ADD I,I,1:FNG(0,0,Hl%):LDR0,[12,#h_%]:TEQ0,#0:LDMeqFD(A)!,{D,I,E,T,pc}^:FNG(-1,+1,_l%):FNG(0,+1,Ni%) 9560FNG(+1,+1,Li%):FNG(-1,0,cl%):FNG(+1,0,dl%):FNG(-1,-1,Oi%):FNG(0,-1,sl%):FNG(+1,-1,Ii%):LDMFD(A)!,{D,I,E,T,pc}^:.ri:ADD0,12,#t%:LDMIA0,{0-1}:ADD0,0,3:SUB1,1,4:CMP0,B:CMPge G,0:CMPge1,F:CMPge J,1:MOVltSpc,Z:LDR5,[12,#w%]:MLA 5,1,5,0:LDR0,[12,#sy%] 9561LDRB0,[0,5]:TEQ0,#0:LDReq0,[12,#cy%]:LDReqB0,[0,5]:TEQeq0,#0:MOVneSpc,Z:ADD0,12,#Cy%:LDMIA0,{0-1}:MLA 3,0,3,D:MLA 4,1,4,I:MOV5,#3:LDR1,[12,#l%]:MOV0,#34:ORR0,0,#512:SWI 46:MOVSpc,Z:ALIGN:.yi:STMFD(A)!,{E,T,Z}:LDR Z,[12,#Jy%]:LDR2,[12,#Fu%] 9562LDR1,[12,#l%]:SUB Z,Z,#n%:.C ADD Z,Z,#n%:LDR0,[Z,#u%]:CMN0,#1:LDMeqFD(A)!,{E,T,pc}^:ADD3,Z,#my%:LDMIA3,{3-4}:CMP3,B:CMPge G,3:CMPge4,F:CMPge J,4:Blt C:LDMIA Z,{3-5}:ADD3,D,3:SUB4,I,4:LDR0,[12,#Yy%]:ADD0,0,5,LSL#iJ%:ADD0,0,#W_%:LDMIA0,{0,5}:ADD3,3,0 9563ADD4,4,5:MOV5,#3:MOV0,#34:ORR0,0,#512:SWI 46:B C:ALIGN:.gJ:STMFD(A)!,{E,T,D,I,12,Z}:ADD0,12,#vu%:LDMIA0,{0-1}:ADD D,D,0:SUB I,I,1:LDR2,[12,#ql%]:LDR1,[12,#l%]:MOV0,#34:ORR0,0,#512:LDR Z,[12,#i_%]:.C LDMIA(Z)!,{3,12}:CMP3,#0 9564LDMltFD(A)!,{E,T,D,I,12,pc}^:CMP3,B:CMPge G,3:CMPge12,F:CMPge J,12:Blt C:LDMIA A,{E,T}:MLA 3,E,3,D:MUL 4,T,12:SUB4,I,4:MOV5,#3:SWI 46:B C:]:ENDPROC 9565DEFPROCxJ:[OPTV%:ALIGN:.ui:FNZ:STMFD(A)!,{0-12,Z}:BL r:MOV0,#0:STR0,[12,#_J%]:MOV0,#0:BL s_:MOV0,#0:STR0,[12,#h_%]:LDR0,[12,#y_%]:LDR2,[12,#Q_%]:SUB0,0,2:STR0,[12,#V_%]:BL cu:LDMFD(A)!,{0-12,pc}^:ALIGN:.Xu:FNZ:.cu:STMFD(A)!,{12,Z}:BL r:BL `l:BL Mu:BL O_ 9566BL i_:LDR0,[12,#z%]:MOV1,#&f0000000:MOV2,#&f0000000:MOV3,#&70000000:MOV4,#&70000000:SWI &400d1:LDMFD(A)!,{12,pc}^:]:ENDPROC 9567DEFPROCRJ:[OPTV%:ALIGN:.`l:STMFD(A)!,{4-9,Z}:LDR3,[12,#_J%]:ADD3,3,#1:STR3,[12,#_J%]:MOV2,#Yi:LDR1,[12,#o%]:MOV0,#gy:SWI &dcb8c:LDR1,[12,#H_%]:LDR2,[12,#O_%]:SUB0,3,#1:MLA 0,1,0,2:LDR1,[12,#b_%]:CMP0,1:MOVgt0,1:MOV5,0:LDR4,[12,#g_%]:LDR0,[12,#w%] 9568LDR1,[12,#x%]:MUL 9,0,1:MOV0,4:MOV1,9:.C SUBS1,1,#1:STRhs1,[0],#4:Bhi C:LDR6,[12,#sy%]:MOV0,6:MOV1,#0:MOV2,9:BL ty:MOV7,9,LSR#1:.C BL OJ:MOV1,9:BL Ky:LDR0,[4,1,LSL#2]:LDR2,[4,7,LSL#2]:STR0,[4,7,LSL#2]:STR2,[4,1,LSL#2]:SUBS7,7,#1:Bhs C:LDR7,[12,#Jy%] 9569.C LDR0,[4],#4:MOV Z,#255:STRB Z,[6,0]:LDR1,[12,#w%]:BL Ky:STR1,[7,#my%]:STR0,[7,#gl%]:MOV0,#0:STR0,[7,#u%]:STR0,[7,#Wi%]:ADD7,7,#n%:SUBS5,5,#1:Bne C:MVN0,#NOT(-1):STR0,[7,#u%]:LDR0,[12,#cy%]:MOV1,#0:LDR2,[12,#w%]:LDR3,[12,#x%]:MUL 2,3,2:BL ty 9570LDR0,[12,#i_%]:MVN1,#0:STR1,[0]:STR0,[12,#ou%]:LDMFD(A)!,{4-9,pc}^:]:ENDPROC 9571DEFPROCqu:LOCALC:[OPTV%:ALIGN:.Mu:STMFD(A)!,{Z}:MOV0,#0:STR0,[12,#Ku%]:LDR0,[12,#V_%]:LDR1,[12,#Q_%]:ADD0,0,1:BL Sl:.C BL OJ:LDR1,[12,#w%]:LDR2,[12,#x%]:MUL 1,2,1:BL Ky:MOV0,1:LDR1,[12,#w%]:BL Ky:STR1,[12,#t%]:STR0,[12,#Ay%]:BL Ki:Bne C:LDMFD(A)!,{pc}^:ALIGN 9572.Ki:STMFD(A)!,{4-7,Z}:LDR6,[12,#w%]:LDR7,[12,#x%]:LDR3,[12,#sy%]:MVN4,#NOT(-1):.v MVN5,#NOT(-1):.x BL yl:LDMneFD(A)!,{4-7,pc}:ADD5,5,#1:TEQ5,#2:Bne x:ADD4,4,#1:TEQ4,5:Bne v:LDMFD(A)!,{4-7,pc}:ALIGN:.yl:ADD0,0,4:ADD1,1,5:CMP0,7:CMPlo1,6:MLAlo 2,0,6,1 9573SUB0,0,4:SUB1,1,5:ORRhsSpc,Z,#L_:LDRB2,[3,2]:TEQ2,#0:ORReqSpc,Z,#L_:BICSpc,Z,#L_:ALIGN:.Sl:STMFD(A)!,{Z}:CMP0,#0:MOVlt0,#0:LDR1,[12,#x_%]:CMP0,1:MOVgt0,1:STR0,[12,#V_%]:MOV3,0:LDR1,[12,#o%]:MOV2,#J_:MOV0,#gy:SWI &dcb8c:LDMFD(A)!,{pc}^:ALIGN 9574.hJ DCD&f423f:ALIGN:.s_:STMFD(A)!,{Z}:CMP0,#0:MOVlt0,#0:LDR1,hJ:CMP0,1:MOVhi0,1:STR0,[12,#C_%]:MOV3,0:LDR1,[12,#o%]:MOV2,#Fi:MOV0,#gy:SWI &dcb8c:LDMFD(A)!,{pc}^:]:ENDPROC 9575DEFPROCV_:[OPTV%:ALIGN:ALIGN:.Mi:FNZ:STMFD(A)!,{4-9,12,Z}:BL r:SUB A,A,#512:LDR0,[12,#z%]:MOV1,A:STR0,[1]:SWI &400c8:BL Qy:.C TEQ0,#0:Beq Fl:BL r:BL m_:BL il:BL gJ:BL yi:BL wJ:BL KJ:MOV1,A:SWI &400ca:B C:.Fl:ADD A,A,#512:LDMFD(A)!,{4-9,12,pc}^:]:ENDPROC 9576DEFPROCeJ:LOCALC,v,x:LOCALe,X,i,ry,Q,y,M,S,io,yy,hy,V_,p:M=0:S=1:Q=2:y=3:X=K:e=h:i=Ti:q=Tl:ry=Z:hy=3:io=V:yy=Z:V_=i:p=X:[OPTV%:.Lu EQUS"%d.%03d":DCB0:.MJFNty(32):ALIGN:.i_:LDR0,[12,#hJ%]:TEQ0,#0:MOVeqSpc,Z:STMFD(A)!,{4-9,Z}:LDR X,[12,#Jy%]:LDR e,[12,#Ou%] 9577LDR q,[12,#w%]:ADD q,q,#2:ADD q,q,#31:MOV q,q,LSR#5:MOV q,q,LSL#2:LDR2,[12,#x%]:ADD2,2,#2:MUL 2,q,2:MOV1,#0:MOV0,e:BL ty:MOV i,#7:.C LDR M,[X,#u%]:CMN M,#1:Beq Iu:ADD M,X,#my%:LDMIA M,{M,S}:ADD X,X,#n%:ADD M,M,#1:MLA S,q,S,e:BIC Q,M,#31 9578ADD S,S,Q,LSR#3:AND M,M,#31:CMP M,#30:Bhs ki:LDR Q,[S],#0:ORR Q,Q,i,LSLM:STR Q,[S],q:LDR Q,[S],#0:ORR Q,Q,i,LSLM:STR Q,[S],q:LDR Q,[S],#0:ORR Q,Q,i,LSLM:STR Q,[S],q:B C:.ki:MOVeq ry,#1:MOVhi ry,#3:LDMIA S,{Q,y}:ORR Q,Q,i,LSLM:ORR y,y,ry:STMIA S,{Q,y} 9579ADD S,S,q:LDMIA S,{Q,y}:ORR Q,Q,i,LSLM:ORR y,y,ry:STMIA S,{Q,y}:ADD S,S,q:LDMIA S,{Q,y}:ORR Q,Q,i,LSLM:ORR y,y,ry:STMIA S,{Q,y}:B C:.Iu:MOV i,#1:LDR p,[12,#i_%]:.C LDMIA(p)!,{M,S}:CMP M,#0:Blt Ii:ADD M,M,#1:ADD S,S,#1:MLA S,q,S,e:BIC Q,M,#31:AND M,M,#31 9580LDR Q,[S,Q,LSR#3]!:ORR Q,Q,i,LSLM:STR Q,[S],#-1:B C:.Ii:MOV hy,#0:LDR S,[12,#x%]:.v ADD e,e,q:LDR M,[12,#w%]:MOV V_,e:LDR Q,[V_],#4:MOV Q,Q,LSR#1:MOV yy,#31:.x MOVS Q,Q,LSR#1:ADDcs hy,hy,#1:SUBS M,M,#1:Ble Vl:SUBS yy,yy,#1:Bgt x:LDR Q,[V_],#4 9581MOV yy,#32:B x:.Vl:SUBS S,S,#1:Bgt v:LDR V,[12,#x%]:LDR Z,[12,#w%]:MUL 0,V,Z:MOV V,#1000:MUL 0,V,0:MOV1,hy:ADD0,0,1,LSR#1:BL Ky:MOV1,#1000:BL Ky:MOV3,1:MOV2,0:ADR1,Lu:ADR0,MJ:SWI &dcb8a:ADR3,MJ:LDR1,[12,#o%]:MOV2,#Y_:MOV0,#W_:SWI &dcb8c 9582LDMFD(A)!,{4-9,pc}^:]:ENDPROC 9583DEFPROC__:Z_%=FNE("GameP",v%):F_%=FNE("ViewP",v%):Wy%=FNR("EnterName",1,+1):ry%=FNR("Arrow",1,+1):P_%=FNE("Highlight",v%):S_%=FNE("Centre",v%):Oy%=FNE("Magnifier",v%):PROCq("Board",+1,"Board_Template"):PROCq("Status",v%,"Status_Template"):PROCq("HighScores",+1,""):PROCYJ 9584DIMwn%32:ENDPROC 9585DEFFNBoard_Template(M%):vl=M%?35:Kl=M%?34:=0 9586DEFFNStatus_Template(M%):Zl%=(M%!8)-(M%!0):E_%=(M%!12)-(M%!4):!H_=E_%+4:Dn%=M%!28:=0 9587DEFPROCDJ:D_%=FALSE:zJ%=&1040a31+0:dJ%=&1040a31+1:Hu%=&1040a31+2:kl%=0:ol%=0:ENDPROC 9588DEFPROCuy:Pa%=6:Ja%=1:MJ%=USR(oJ):D_%=zJ%:ENDPROC 9589DEFPROCgy:LOCALA%:`l%=Z%:A%=Z%:MJ%=USR(xu):D_%=dJ%:ENDPROC 9590DEFPROCS_:MJ%=USR(nl):D_%=Hu%:ENDPROC 9591DEFPROCFJ:LOCALgi,mJ,iJ,El,jJ,ii,gl,cJ,wl:LOCALERROR:ONERRORLOCALRESTOREERROR:PROCA("@.BasWimp: Menu") 9592[OPTV%:ALIGN:.Pl DCD0:DCD1:DCD2:DCD3:DCD4:DCD5:DCD6:DCD7:DCD8:.tu:FNZ:STMFD(A)!,{Z}:MOV V,#8:.C SUB A,A,#4:STR A,[A],#0:SUBS V,V,#1:Bgt C:BL hu:LDMFD(A)!,{1-8,Z}:ADRvc V,Pl:STMvcIA V,{0-8}:MOVvc0,V:BICvcSpc,Z,#j_:ORRSpc,Z,#j_:ALIGN:.Ml:FNZ 9593STMFD(A)!,{Z}:MOV0,#4096:BL wi:MOV0,#512:MOV1,#32:BL fJ:LDMFD(A)!,{pc}:ALIGN:.gi EQUS"[0,w>,<s>,s>,s>,dm>,>":DCB0:EQUS"[40,>,d>,>":DCB0:.mJ EQUS"[100,>,>,>,d>,m>,m>,dm>,w>":DCB0:EQUS"<t[120,w>,<td>,dsw>,>,>,>,s>,>,>,>":DCB0 9594EQUS"[140,w>,<t>,<t>,<t>,<t>":DCB0:EQUS"[160,<tm>,<t>,m>,w>,w>,d>,<t>":DCB0:EQUS"<t[180,>,>,>,>,>,>,m>":DCB0:EQUS"cb<t[500,>,>,>,>,>,>,>,>,>,>,>,>,>,>,>,>":DCB0:EQUS"cb<t[500,>,>,>,>,>,>,>,>,>,>,>,>,>,>,>,>":DCB0:.iJ EQUS"[1000,m>,m>":DCB0 9595.El EQUS"[1100":DCB0:.ii EQUS",<t ":DCB0:.cJ EQUS"M1101":DCB0:.jJ EQUS"[1200":DCB0:.gl EQUS", ":DCB0:.wl EQUS"M1201":DCB0:ALIGN:.oJ:FNZ:STMFD(A)!,{Z}:LDR1,Hy%:TEQ1,#0:MOVeq1,#1:MOVne1,#0:STMFD(A)!,{1}:FNF("",0,gi):BL z_:ADD A,A,#1<<2:LDMFD(A)!,{pc} 9596.xu:FNZ:STMFD(A)!,{Z}:SUB A,A,#12<<2:ADD1,0,#e%:LDR1,[1,#kJ%]:ADD1,1,#D_:LDR2,[0,#bJ%]:LDR3,[0,#NJ%]:LDR4,[0,#DJ%]:LDR5,[0,#`_%]:LDR6,[0,#GJ%]:LDR7,[0,#_y%]:MOV8,7:LDR9,[0,#RJ%]:LDR V,[0,#uJ%]:LDR Z,[0,#r_%]:STMIA A,{1-9,V,Z}:LDR Z,[0,#T_%] 9597STR Z,[A,#11<<2]:FNF("",0,mJ):BL z_:ADD A,A,#12<<2:LDMFD(A)!,{pc}:.Hy%DCD0:.Xu%DCD0:.My%DCD0:.nl:FNZ:STMFD(A)!,{K-XJ,Z}:BL du:FNF("",0,iJ):BL cy:MOVvc0,#0:BLvc T_:FNF("vc",0,El):BLvc cy:Bvs vy:LDR K,Hy%:ADD K,K,#4:LDR h,My%:.C STMFD(A)!,{K-h} 9598FNF("",0,ii):BL cy:LDRvc0,[K,#r%]:BLvc Ul:FNF("vc",0,cJ):LDMvcIA K,{1-8}:STMFD(A)!,{1-8}:BLvc e_:ADD A,A,#8<<2:LDMFD(A)!,{K-h}:Bvs vy:ADD K,K,#l_%:SUBS h,h,#1:Bne C:MOV0,#0:BL T_:FNF("vc",0,jJ):BLvc cy:Bvs vy:LDR K,Hy%:ADD K,K,#4:LDR h,My% 9599.C STMFD(A)!,{K-h}:FNF("",0,gl):BL cy:FNF("vc",0,wl):LDMvcIA K,{1-8}:STMFD(A)!,{1-8}:BLvc e_:ADD A,A,#8<<2:LDMFD(A)!,{K-h}:Bvs vy:ADD K,K,#l_%:SUBS h,h,#1:Bne C:MOV0,#0:BL T_:BLvc hl:.vy:LDMFD(A)!,{K-XJ,pc}:.bi:FNZ:STMFD(A)!,{4-8,Z} 9600LDMIA0,{0,3,4,5,6,7,V,Z}:STMFD(A)!,{0,3,4,5,6,7,V,Z}:MOV0,2:BL qu:ADD A,A,#8<<2:LDMFD(A)!,{4-8,pc}:]:ENDPROC 9601DEFPROCJJ:LOCALQ%,X%,VJ%,Dy%,Fy%:Q%=W%!24:X%=W%!28:VJ%=W%!32:Dy%=W%!36:Fy%=p_%:CASED_%OF 9602WHENzJ%:CASEVJ%OF 9603WHEN0:IFFND("ProgInfo",N_%)THEN 9604ELSE:SYS&400e8,,N_%,Q%,X% 9605ENDIF 9606OTHERWISE:PROCF(Fy%,"Unexpected MenuWarning Message") 9607ENDCASE 9608WHENdJ%:PROCG(`l%):CASEVJ%OF 9609WHENg_:CASEDy%OF 9610WHENfl:PROCmJ:SYS&400e8,,S_%,Q%,X% 9611OTHERWISE:PROCF(Fy%,"Unexpected MenuWarning Message") 9612ENDCASE 9613WHENsJ:CASEDy%OF 9614WHENqJ:PROCXJ:SYS&400e8,,P_%,Q%,X% 9615WHENNJ:PROCfu:SYS&400e8,,ry%,Q%,X% 9616OTHERWISE:PROCF(Fy%,"Unexpected MenuWarning Message") 9617ENDCASE 9618WHENQ_:CASEDy%OF 9619WHENdi:PROCn_:SYS&400e8,,Oy%,Q%,X% 9620WHENAa:PROCt_:SYS&400e8,,F_%,Q%,X% 9621OTHERWISE:PROCF(Fy%,"Unexpected MenuWarning Message") 9622ENDCASE 9623WHENYJ:PROC_u:SYS&400e8,,Z_%,Q%,X% 9624OTHERWISE:PROCF(Fy%,"Unexpected MenuWarning Message") 9625ENDCASE 9626OTHERWISE:PROCF(Fy%,"Unexpected MenuWarning Message") 9627ENDCASE:ENDPROC 9628DEFPROCv_:LOCALVJ%,U%,di%,ci%,mJ%,Dy%,A%,Bu%,`i%:LOCALjl%:U%=FNM(512):SYS&400cf,,U%:di%=U%!0:ci%=U%!4:kl%=di%:ol%=ci%:mJ%=U%!8:PROCC(U%,512):VJ%=!W%:Dy%=W%!4:Bu%=W%!8:jl%=W%!12:CASED_%OF 9629WHENzJ%:CASEVJ%OF 9630WHENpu:PROCbu 9631WHENVu:CASEDy%OF 9632WHENal:PROCo_ 9633WHENHu:PROCYy 9634WHENEi:PROCGu 9635ENDCASE 9636WHENNi:PROCRy 9637ENDCASE 9638WHENdJ%:PROCG(`l%):CASEVJ%OF 9639WHENol:PROCm(mJ%):PROCu 9640WHENzu:PROCm(mJ%):PROCh 9641WHENvi:PROCm(mJ%):PROCKy 9642WHENsJ:PROCLJ(Dy%) 9643WHENg_:CASEDy%OF 9644WHEN-1:PROCK 9645WHENZl:PROCyy 9646WHENnJ:PROCry 9647WHEN_i:PROCA_ 9648WHENuu:PROCEy 9649ENDCASE 9650WHENQ_:CASEDy%OF 9651WHEN`i:PROCIy 9652WHENXi:CASEBu%OF 9653WHEN-1:PROCcy 9654WHENmu:CASEjl%OF 9655WHEN-1 9656WHEN0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15:o_%=jl%:IFo_%<>Z%!RJ%THEN 9657`i%=Z%!_y%:PROCJy:Z%!RJ%=o_%:PROCqy:Z%!_y%=`i%:PROCr 9658ENDIF 9659ENDCASE 9660OTHERWISE:iy%=Bu%:IFiy%<>Z%!_y%THEN 9661PROCJy:Z%!_y%=iy%:PROCr 9662ENDIF 9663ENDCASE 9664WHENkl:CASEBu%OF 9665WHEN-1 9666WHEN0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15:__%=Bu%:IF__%<>Z%!r_%THEN 9667Z%!r_%=__%:Z%?`u%+=1:PROCVJ(Z%!z%,__%):PROCp 9668ENDIF 9669ENDCASE 9670WHENWu:PROCTu(Z%) 9671WHENiu:PROCZ_ 9672ENDCASE 9673WHENYJ:PROCa 9674WHENWi:PROCmy 9675ENDCASE 9676WHENHu%:CASEVJ%OF 9677WHENjl:PROCXu(Dy%) 9678WHENpi:PROCC_(Dy%) 9679ENDCASE 9680ENDCASE:IFmJ%=1THEN 9681PROCBy 9682ELSE:PROCP 9683ENDIF:ENDPROC 9684DEFPROCm(mJ%):IFmJ%<>1THEN 9685PROCP 9686ENDIF:ENDPROC 9687DEFPROCBy:LOCALj%:j%=TRUE:CASED_%OF 9688WHENzJ%:PROCuy 9689WHENdJ%:PROCgy 9690WHENHu%:PROCS_ 9691OTHERWISEj%=FALSE 9692ENDCASE:IFj%THEN 9693SYS&400d4,,MJ%,kl%,ol% 9694ENDIF:ENDPROC 9695DEFPROCP:SYS&400d4,,-1:D_%=FALSE:ENDPROC 9696DEFPROCs_:LOCALD%:D%=FNM(128):CASEFNI(!W%)OF 9697WHENA_%:!D%=Z%!o%:SYS&400cb,,D%:D%!28=W%!28:W%!28=!D%:SYS&400c5,,W%:SYS&400cb,,W%:PROCMy(D%,W%) 9698WHENty%:!D%=Z%!z%:SYS&400cb,,D%:PROCMy(W%,D%) 9699WHENFNV(!W%):PROCfJ(W%) 9700OTHERWISE:SYS&400c5,,W% 9701ENDCASE:PROCC(D%,128):ENDPROC 9702DEFPROCMy(D%,M%):LOCALj_%:D%!4=M%!4:D%!12=M%!12:D%!16=M%!16:D%!8=FNS(M%!8,D%!16-E_%):j_%=M%!12-M%!4:IFj_%<Zl%THEN 9703D%!20=Zl%-j_% 9704ELSE:D%!20=((Zl%-j_%)/2)ANDNOT((1<<Sy%)-1) 9705ENDIF:D%!24=0:SYS&400c5,,D%:M%!28=!D%:SYS&400c5,,M%:ENDPROC 9706DEFPROCPu:CASEFNI(!W%)OF 9707WHENA_%,ty%:PROCP_ 9708WHENFNV(!W%):PROCI_ 9709OTHERWISE:SYS&400c6,,W% 9710ENDCASE:ENDPROC 9711DEFPROCvJ:LOCALcJ%:LOCALERROR:ONERRORLOCALRESTOREERROR:SYS&606c1:PROCQ 9712SYS&606c0:CASEFNI(!W%)OF 9713WHENA_%:PROCLu 9714WHENry%:PROCHu 9715OTHERWISE:SYS&400c8,,W%TOcJ%:WHILEcJ%:SYS&81681,,W%:SYS&400ca,,W%TOcJ%:ENDWHILE 9716ENDCASE:SYS&606c1:ENDPROC 9717DEFPROCLu:IFZ%!l%<>0THEN 9718CALLMi 9719ELSE:SYS&400c8,,W%TOcJ%:WHILEcJ%:SYS&400e6,128+8:CLG:SYS&400ca,,W%TOcJ%:ENDWHILE 9720ENDIF:ENDPROC 9721DEFPROCHu:LOCALA%,B%:A%=Z%:B%=W%:CALLrl:ENDPROC 9722DEFPROCKJ:ENDPROC 9723DEFPROC`J:ENDPROC 9724DEFPROCx_:ENDPROC 9725DEFPROCIu:ENDPROC 9726DEFPROCGJ:ENDPROC 9727DEFPROCRy:LOCALvJ%:vJ%=(Z%=0):IFNOTvJ%THEN 9728vJ%=(Z%!C_%=0)OR(Z%!q%=o) 9729ENDIF:IFNOTvJ%THEN 9730vJ%=(FNa(3,FNC(5))=1) 9731ENDIF:IFvJ%THEN 9732PROCB 9733ENDIF:ENDPROC 9734DEFPROCN_:LOCALA$,I%:A$="":I%=W%!36:CASEFNYy(W%!32)OF 9735WHEN-2:IFI%=Zi%THEN 9736A$="IconBar" 9737ELSE:A$=FNn 9738ENDIF 9739WHENN_%:A$="ProgInfo" 9740WHENWy%:A$="EnterName" 9741WHENty%:A$="Status" 9742WHENA_%:A$="Board" 9743WHENZ_%:A$="GameP" 9744WHENF_%:A$="ViewP" 9745WHENP_%:A$="Highlight" 9746WHENry%:A$="Arrow" 9747WHENS_%:A$="Centre" 9748WHENOy%:A$="Magnifier" 9749WHENFNV(W%!32):A$="HighScore":IFI%>0THEN 9750I%=-1 9751ELSE:I%=I%MOD4 9752ENDIF 9753OTHERWISE:IF(ju%>218)AND(W%!36<>-1)THEN 9754A$=FNn 9755ENDIF 9756ENDCASE:IFA$<>""THEN 9757IFI%<0THENA$+=",_"ELSEA$+=","+STR$(I%) 9758PROCby("H"+A$,W%+20):IFW%?20THEN 9759W%!16=1283:W%!12=W%!8:A%=W%+20:WHILE?A%:A%+=1:ENDWHILE:W%!0=(A%-W%+4)AND-4:SYS&400e7,17,W%,W%!4 9760ENDIF 9761ENDIF:ENDPROC 9762DEFPROCr_:ENDPROC 9763DEFFNn:LOCALA$,M%:M%=W%+40:SYS&400f4,1,M%,W%!32,W%!36:CASED_%OF 9764WHENzJ%:A$="I" 9765WHENdJ%:A$="D" 9766WHENHu%:A$="H" 9767ENDCASE:IFA$<>""THEN 9768A$="M"+A$+STR$(!M%):WHILEM%!4<>-1:M%+=4:A$+="_,"+STR$(!M%):ENDWHILE 9769ENDIF:=A$ 9770DEFPROCwy:PROCIJ(-1):PROCTy:ENDPROC 9771DEFPROCWJ:PROCTy:ENDPROC 9772DEFPROCTy:pl%=FNS(1<<Sy%,1<<m%)*2:IFZ%<>0THEN 9773PROCp 9774ENDIF:ENDPROC 9775DEFPROCp:LOCALF%:PROCqy:F%=Z%+e%:F%!Tl%=pl%:Z%!Ri%=1<<Sy%:Z%!_a%=1<<m%:PROCGy:ENDPROC 9776DEFPROCqy:LOCALQ%,X%,Ia%,Ta%,D%:Q%=0:X%=0:SYS50,Q%,X%TO,,Ia%,Ta%:SYS&400e6,0+Z%!r_%:SYS69,69,Q%,X%:SYS&400e6,48+Z%!RJ%:SYS69,69,Q%,X%:SYS50,Q%,X%TO,,Z%!Bi%,Z%!Kl%:GCOL0,Ia%TINTTa%:SYS69,69,Q%,X%:IFFl%<8THENZ%!Kl%=-1 9777ENDPROC 9778DEFPROCB:PROCUu:END:ENDPROC 9779DEFPROCg_:LOCALI%,p%:I%=W%!4:p%=W%!24:CASEFNI(W%!0)OF 9780WHENWy%:PROCtJ(p%,I%) 9781WHENA_%:PROC`_(p%,I%) 9782WHENty%:PROCzJ(p%,I%) 9783WHENOy%:PROCKu(p%,I%) 9784OTHERWISE:SYS&400dc,p% 9785ENDCASE:ENDPROC 9786DEFPROCzJ(p%,I%):CASEp%OF 9787WHEN13:SYS&400d2,-1,-1:SYS&400d2,Z%!z%,-1,,,1<<25:W$=FNs(Z%!o%,ZJ):PROCO(Z%+Wu%,W$) 9788OTHERWISE:SYS&400dc,p% 9789ENDCASE:ENDPROC 9790DEFPROCb_:LOCALQ%,X%,E%,M%,I%:Q%=W%!0:X%=W%!4:E%=W%!8:M%=FNI(W%!12):I%=W%!16:CASEE%OF 9791WHEN2:CASEM%OF 9792WHEN-2:PROCuy:X%=96+(44*Pa%)+(24*Ja%):SYS&400d4,,MJ%,Q%-64,X% 9793WHENA_%,ty%:PROCgy:SYS&400d4,,MJ%,Q%-64,X% 9794WHENFNV(M%):PROCS_:SYS&400d4,,MJ%,Q%-64,X% 9795ENDCASE 9796WHEN1*16,4*16 9797OTHERWISE:ii%=(M%=Wy%):IFRy%ANDM%<>ty%THENSYS&81680,,W% 9798CASEM%OF 9799WHENA_%:PROCYu(Q%,X%,E%,I%) 9800WHENty%:PROCOu(Q%,X%,E%,I%) 9801WHEN-2:PROCB_(Q%,X%,E%,I%) 9802WHENZ_%:PROCRu(Q%,X%,E%,I%) 9803WHENF_%:PROCVu(Q%,X%,E%,I%) 9804WHENS_%:PROCp_(Q%,X%,E%,I%) 9805WHENP_%:PROCUJ(Q%,X%,E%,I%) 9806WHENOy%:PROCAJ(Q%,X%,E%,I%) 9807WHENUi%:PROCAu(Q%,X%,E%,I%) 9808WHENN_%:PROCD_(Q%,X%,E%,I%) 9809WHENWy%:PROCuJ(Q%,X%,E%,I%) 9810WHENry%:PROCpJ(Q%,X%,E%,I%) 9811WHENFNV(M%):PROCL_(E%) 9812ENDCASE:IFRy%ANDii%=0ANDM%<>ty%THENW%!8=0:SYS&81680,,W% 9813ENDCASE:ENDPROC 9814DEFPROCD_(Q%,X%,E%,I%):CASEI%OF 9815WHEN14,15:PROCF(Vy%,FNC(0)):IFE%<>1THEN 9816PROCP 9817ENDIF 9818ENDCASE:ENDPROC 9819DEFPROCB_(Q%,X%,E%,I%):CASETRUEOF 9820WHENWy%<>0:PROCF(Vy%,FNC(2)):PROCY(Wy%,-1) 9821WHEN!xy%=0:PROCb 9822WHENFN`:PROCY(Z%!z%,-1):PROCa 9823OTHERWISE:PROCG(!xy%):PROCfy 9824ENDCASE:ENDPROC 9825DEFPROCz(K%):$Gi%=LEFT$(FNH("IB"+STR$(K%)),Du%-1):PROCQu(-1,Zi%,0,0,0):ENDPROC 9826DEFPROCtJ(p%,I%):CASEp%OF 9827WHEN13:SYS&400d2,-1,-1:W%!8=1:W%!12=W%!0:W%!16=IJ:SYS&81680,,W%:W$=FNs(Wy%,`y):PROCb 9828OTHERWISE:SYS&400dc,p% 9829ENDCASE:ENDPROC 9830DEFPROCuJ(Q%,X%,E%,I%):CASEI%OF 9831WHENIJ:SYS&400d2,-1,-1:W$=FNs(Wy%,`y):PROCb 9832ENDCASE:ENDPROC 9833DEFPROCzu:LOCALM%:M%=Z_%:PROCZ(M%,Ly+1,eJ):PROCZ(M%,Uy+1,x_):PROCZ(M%,k+1,__):PROCZ(M%,Ay+1,w_):PROCZ(M%,Sy+1,xJ):PROCZ(M%,Jy+1,TJ):PROCZ(M%,Ny+1,CJ):PROCZ(M%,ay+1,a_):ENDPROC 9834DEFPROC_u:LOCALM%:IFFND("GameP",Z_%)THEN 9835ELSE:M%=Z_%:PROCZ(M%,Ly+1,Z%!w%):PROCZ(M%,Uy+1,Z%!x%):PROCZ(M%,k+1,Z%!b_%):PROCZ(M%,Ay+1,Z%!O_%):PROCZ(M%,Sy+1,Z%!H_%):PROCZ(M%,Jy+1,Z%!x_%):PROCZ(M%,Ny+1,Z%!y_%):PROCZ(M%,ay+1,Z%!Q_%) 9836ENDIF:ENDPROC 9837DEFPROCRu(Q%,X%,E%,I%):LOCALM%,a%,d%:M%=Z_%:CASEI%OF 9838WHENLy,Ly+2:PROCJ(M%,I%,E%,Ly,5,999):PROCj 9839WHENUy,Uy+2:PROCJ(M%,I%,E%,Uy,5,999):PROCj 9840WHENk,k+2:a%=FNA(M%,Ay+1):PROCJ(M%,I%,E%,k,a%,9999):PROCj 9841WHENAy,Ay+2:a%=FNA(M%,k+1):PROCJ(M%,I%,E%,Ay,2,a%) 9842WHENSy,Sy+2:a%=FNA(M%,k+1):PROCJ(M%,I%,E%,Sy,1,a%) 9843WHENJy,Jy+2:a%=FNA(M%,Ny+1):PROCJ(M%,I%,E%,Jy,a%,999) 9844WHENNy,Ny+2:a%=FNA(M%,Jy+1):PROCJ(M%,I%,E%,Ny,1,a%) 9845WHENay,ay+2:a%=FNA(M%,Jy+1):PROCJ(M%,I%,E%,ay,1,a%) 9846WHENRl:PROCzu 9847WHENVi:PROCl_:IFE%AND4THEN 9848PROCP 9849ENDIF 9850ENDCASE:ENDPROC 9851DEFPROCj:LOCALd%,E%,M%,R%:M%=Z_%:d%=FNA(M%,Ly+1):E%=FNA(M%,Uy+1):R%=FNP((d%*E%)DIV2,9999):IFFNA(M%,k+1)>R%THEN 9852PROCZ(M%,k+1,R%) 9853ENDIF:IFFNA(M%,Ay+1)>R%THEN 9854PROCZ(M%,Ay+1,R%) 9855ENDIF:IFFNA(M%,Sy+1)>R%THEN 9856PROCZ(M%,Sy+1,R%) 9857ENDIF:ENDPROC 9858DEFPROCl_:LOCALM%:M%=Z_%:X_%=FNA(M%,Ly+1):Y_%=FNA(M%,Uy+1):oy%=FNA(M%,k+1):e_%=FNA(M%,Ay+1):f_%=FNA(M%,Sy+1):m_%=FNA(M%,Jy+1):t_%=FNA(M%,Ny+1):a_%=FNA(M%,ay+1):PROCXy:ENDPROC 9859DEFPROCXy:LOCALXi%,j_%,Uy%,M%,N%:Xi%=TRUE:CASEFALSEOF 9860WHEN(X_%=Z%!w%) 9861WHEN(Y_%=Z%!x%) 9862WHEN(oy%=Z%!b_%) 9863WHEN(e_%=Z%!O_%) 9864WHEN(f_%=Z%!H_%) 9865WHEN(m_%=Z%!x_%) 9866WHEN(t_%=Z%!y_%) 9867WHEN(a_%=Z%!Q_%) 9868OTHERWISEXi%=FALSE 9869ENDCASE:IFXi%THEN 9870Z%!w%=X_%:Z%!x%=Y_%:Z%!b_%=oy%:Z%!O_%=e_%:Z%!H_%=f_%:Z%!x_%=m_%:Z%!y_%=t_%:Z%!Q_%=a_%:M%=Z%!w%:N%=Z%!x%:j_%=Z%!Cy%*M%:Uy%=Z%!vy%*N%+E_%:LOCALERROR:ONERRORLOCALRESTOREERROR:PROCbJ 9871PROCVy(Z%!z%,j_%,Uy%+4,TRUE):PROCpy(Z%!z%,FNc(Z%,"Board")):PROCW(Z%!sy%):PROCW(Z%!g_%):PROCW(Z%!Jy%):PROCX(Z%!sy%,M%*N%):PROCX(Z%!g_%,M%*N%<<2):PROCX(Z%!Jy%,(oy%+1)*n%):PROCX(Z%!Ou%,((M%+2+31)>>5)*4*(N%+2)):Z%!cy%=Z%!g_%:Z%!i_%=Z%!cy%+((M%*N%+3)AND-4):RESTOREERROR:PROCa 9872ENDIF:ENDPROC 9873DEFPROCbJ:PROCF(Vy%,FNC(6)):PROCc:PROCP:ENDPROC 9874DEFPROCyJ:LOCALM%:M%=F_%:PROCZ(M%,Ry+1,1):PROCT(M%,M_,TRUE):PROCT(M%,Z_,FALSE):PROCT(M%,oy,FALSE):PROCv(M%,j,TRUE):PROCZ(M%,j+1,1):PROCZ(M%,Ty+1,o_):PROCZ(M%,qy+1,VJ):ENDPROC 9875DEFPROCt_:LOCALM%,K%:IFFND("ViewP",F_%)THEN 9876ELSE:M%=F_%:PROCZ(M%,Ry+1,Z%!G_%):PROCT(M%,M_,Z%!qy%=0):PROCT(M%,Z_,Z%!qy%>0):PROCT(M%,oy,Z%!qy%<0):PROCv(M%,j,Z%!qy%<=0):CASETRUEOF 9877WHEN(Z%!qy%<0):K%=4 9878WHEN(Z%!qy%=0):K%=2 9879WHEN(Z%!qy%>0):K%=Z%!qy% 9880ENDCASE:PROCZ(M%,j+1,K%):PROCZ(M%,Ty+1,Z%!HJ%):PROCZ(M%,qy+1,Z%!CJ%) 9881ENDIF:ENDPROC 9882DEFPROCVu(Q%,X%,E%,I%):LOCALM%:M%=F_%:CASEI%OF 9883WHENRy,Ry+2:PROCJ(M%,I%,E%,Ry,1,b) 9884WHENM_,oy:PROCv(M%,j,TRUE) 9885WHENZ_:PROCv(M%,j,FALSE) 9886WHENj,j+2:PROCJ(M%,I%,E%,j,1,99) 9887WHENTy,Ty+2:PROCJ(M%,I%,E%,Ty,1,99) 9888WHENqy,qy+2:PROCJ(M%,I%,E%,qy,1,99) 9889WHENku:PROCyJ 9890WHENJl:CASEZ%!q%OF 9891WHEN_,o:PROCR_:IFE%AND4THEN 9892PROCP 9893ENDIF 9894OTHERWISE:VDU7 9895ENDCASE 9896ENDCASE:ENDPROC 9897DEFPROCR_:LOCALM%,j%:M%=F_%:B_%=FNA(M%,Ry+1):CASETRUEOF 9898WHENFN_(M%,oy):dy%=-1 9899WHENFN_(M%,Z_):dy%=FNA(M%,j+1) 9900WHENFN_(M%,M_):dy%=0 9901ENDCASE:k_%=FNA(M%,Ty+1):EJ%=FNA(M%,qy+1):j%=TRUE:CASEFALSEOF 9902WHEN(Z%!G_%=B_%) 9903WHEN(Z%!qy%=dy%) 9904WHEN(Z%!HJ%=k_%) 9905WHEN(Z%!CJ%=EJ%) 9906OTHERWISEj%=FALSE 9907ENDCASE:IFj%THEN 9908Z%!G_%=B_%:Z%!qy%=dy%:Z%!HJ%=k_%:Z%!CJ%=EJ%:Z%?`u%+=1:PROCGy:CALLt_:PROCFy(Z%!z%) 9909ENDIF:ENDPROC 9910DEFPROCf_:LOCALM%:M%=Oy%:PROCZ(M%,_y,1):PROCZ(M%,Iy,1):PROCZ(M%,Yy,1):PROCZ(M%,Xy,1):ENDPROC 9911DEFPROCn_:LOCALM%,_%:IFFND("Magnifier",Oy%)THEN 9912ELSE:M%=Oy%:_%=Z%+_u%:PROCZ(M%,_y,_%!0):PROCZ(M%,Yy,_%!8):PROCZ(M%,Iy,_%!4):PROCZ(M%,Xy,_%!12) 9913ENDIF:ENDPROC 9914DEFPROCAJ(Q%,X%,E%,I%):LOCALM%:M%=Oy%:CASEI%OF 9915WHEN_y-1,_y-2:PROC_y(M%,I%,E%,_y) 9916WHENYy+1,Yy+2:PROCly(M%,I%,E%,Yy) 9917WHENIy-1,Iy-2:PROC_y(M%,I%,E%,Iy) 9918WHENXy+1,Xy+2:PROCly(M%,I%,E%,Xy) 9919WHENBl:PROCf_ 9920WHEN`_:CASEZ%!q%OF 9921WHEN_,o:PROCsy:IFE%AND4THEN 9922PROCP 9923ENDIF 9924OTHERWISE:VDU7 9925ENDCASE 9926ENDCASE:ENDPROC 9927DEFPROCKu(p%,I%):CASEp%OF 9928WHEN13,398:IFp%=13ANDI%=XyTHEN 9929CASEZ%!q%OF 9930WHEN_,o:SYS&400d2,-1,-1:W%!8=1:W%!12=W%!0:W%!16=`_:SYS&81680,,W%:W%!8=0:LOCALERROR:ONERRORLOCALRESTOREERROR:SYS&81680,,W%:PROCQ 9931PROCsy:RESTOREERROR:SYS&81680,,W% 9932OTHERWISE:VDU7 9933ENDCASE 9934ELSE:PROCz_(Oy%,I%) 9935ENDIF 9936WHEN27:PROCP 9937WHEN399:PROCCJ(Oy%,I%) 9938OTHERWISE:SYS&400dc,p% 9939ENDCASE:ENDPROC 9940DEFPROCsy:LOCALM%,j%,_%:M%=Oy%:s%!0=FNA(M%,_y):s%!8=FNA(M%,Yy):s%!4=FNA(M%,Iy):s%!12=FNA(M%,Xy):_%=Z%+_u%:j%=TRUE:CASEFALSEOF 9941WHEN(_%!0=s%!0) 9942WHEN(_%!4=s%!4) 9943WHEN(_%!8=s%!8) 9944WHEN(_%!12=s%!12) 9945OTHERWISEj%=FALSE 9946ENDCASE:IFj%THEN 9947_%!0=s%!0:_%!4=s%!4:_%!8=s%!8:_%!12=s%!12:PROCGy:CALLt_:PROCFy(Z%!z%) 9948ENDIF:ENDPROC 9949DEFPROCp_(Q%,X%,E%,I%):LOCALM%:M%=S_%:CASEI%OF 9950WHENVy,Vy+2:PROCJ(M%,I%,E%,Vy,1,99) 9951WHENWl:PROCeu 9952WHENMa:PROCY_:IFE%AND4THEN 9953PROCP 9954ENDIF 9955ENDCASE:ENDPROC 9956DEFPROCeu:LOCALM%:M%=S_%:PROCZ(M%,Vy+1,d_):ENDPROC 9957DEFPROCmJ:LOCALM%:IFFND("Centre",S_%)THEN 9958ELSE:M%=S_%:PROCZ(M%,Vy+1,Z%!fu%) 9959ENDIF:ENDPROC 9960DEFPROCY_:LOCALM%:M%=S_%:Su%=FNA(M%,Vy+1):Z%!fu%=Su%:ENDPROC 9961DEFPROCb:LOCALQ%:IFWy%<>0THEN 9962PROCR(Wy%):Wy%=0 9963ENDIF:Q%=FNDy:IFZ%<>0THEN 9964PROCey(Z%!o%,ZJ,Z%+Wu%):Q%=FNj(Z%!z%):PROCWy 9965ELSE:PROCF(Gn%,FNC(1)) 9966ENDIF:ENDPROC 9967DEFPROCfy:LOCALU%,F%:F%=Z%+e%:F%!Ky%=0:PROCny(Z%!z%,Z%+nu%,-1):U%=FNM(512):!U%=Z%!z%:SYS&400cb,,U%:U%!256=Z%!o%:SYS&400cb,,U%+256:U%!(256+28)=-1:PROCMy(U%+256,U%):PROCC(U%,512):IFZ%!Yy%<>Z%!Qy%THEN 9968Z%!q%=fy:PROCD("Move",Z%) 9969ENDIF:IFZ%!q%=_THEN 9970PROCz(1):Z%!q%=Hy:PROCD("Highlight_At_Start",Z%) 9971ENDIF:PROCFy(Z%!z%):ENDPROC 9972DEFPROCP_:LOCALF%:PROCe(Z%):CASEZ%!q%OF 9973WHENo:PROCc:PROCz(3) 9974OTHERWISE:PROCn(Z%!z%,Z%+nu%):PROCBu(Z%!o%):IFZ%!C_%>0THEN 9975PROCz(4) 9976ELSE:PROCz(3) 9977ENDIF 9978ENDCASE:ENDPROC 9979DEFPROCa:IF(Z%!q%=o)OR(Z%!C_%=0)THEN 9980Z%!q%=_:PROCWy 9981ELSE:IFFNa(3,FNC(6))=1THEN 9982Z%!q%=_:PROCWy 9983ENDIF 9984ENDIF:ENDPROC 9985DEFPROCWy:PROCe(Z%):PROCCy(Z%!z%,Z%+nu%):Z%!C_%=0:Z%!_J%=0:Z%!Nl%=FALSE:Z%!L_%=FALSE:CALLui:PROCfy:ENDPROC 9986DEFPROCv(M%,J%,rl%):PROCZy(M%,J%,rl%):PROCZy(M%,J%+1,rl%):PROCZy(M%,J%+2,rl%):ENDPROC 9987DEFPROCJ(M%,I%,E%,K_%,Al%,Il%):PROCQy(M%,I%,E%,K_%+2,K_%,K_%+1,Al%,Il%):ENDPROC 9988DEFPROCly(M%,I%,E%,K_%):PROCQy(M%,I%,E%,K_%+1,K_%+2,K_%,1,99):ENDPROC 9989DEFPROC_y(M%,I%,E%,K_%):PROCQy(M%,I%,E%,K_%-2,K_%-1,K_%,1,99):ENDPROC 9990DEFPROCOu(Q%,X%,E%,I%):Z%!hJ%=(Z%!hJ%=0):aJ%=Z%!hJ%:IFaJ%THEN 9991PROC_(Z%!o%,Y_,FNH("On")) 9992ELSE:PROC_(Z%!o%,Y_,FNH("Off")) 9993ENDIF:ENDPROC 9994DEFPROCrJ:LOCALO%,P%,V%,L%,`%:LOCALERROR:ONERRORLOCALRESTOREERROR:PROCA("@.Document:Constants (start)") 9995_=0:Wy=1:fy=2:R_=3:_J=4:o=5:Du=6:Hy=7:_l=-1:GJ=-2:t=4:ZJ=0:Yi=2:J_=4:Y_=6:Fi=8:`y=6:IJ=3:k=3:Ay=7:Sy=11:Jy=17:Ny=21:ay=25:Ly=31:Uy=35:Rl=38:Vi=39:Ry=3:Ty=9:qy=13:M_=18:Z_=19:oy=20:j=21:ku=24:Jl=25:Gy=1:Dy=5:eu=8:Gi=9:Zy=1:`=5:l=9:Oy=13:nu=16:lu=17 9996q_=18:Vy=1:Wl=4:Ma=5:_y=3:Yy=5:Iy=11:Xy=13:Bl=16:`_=17:q`=0:pu=1:Q_=2:un=3:Vu=4:Ni=5:al=0:Hu=1:Ei=2:ol=0:zu=1:vi=2:Wi=3:sJ=4:g_=5:Q_=6:YJ=7:Xi=0:`i=1:kl=2:Aa=3:di=4:Wu=5:iu=6:qJ=0:Ou=1:NJ=2:D_=3:fl=0:Zl=1:nJ=2:_i=3:uu=4:mu=6:jl=0:pi=1:Dl=1:Cl=4:li=1 9997fi=2:ul=3:v$="Zappa":__=(40*23)DIV2:w_=7:xJ=10:TJ=1:CJ=1:a_=1:eJ=40:x_=23:Gu=2:o_=3:VJ=1:ci=-1:f_=30:RJ=10:WJ=18:c_=88:EJ=192:Oi=4:d_=9:Pi=FALSE:Ri=TRUE:Bu=TRUE:Ll=TRUE:Sa=1:Fu=TRUE:lJ=0:Xl=TRUE:Su=1:hi=1:ru=1:fu=1:uJ=TRUE:ll=TRUE:A_%=-101:ty%=-102:DIMJ%(8,1):DIMC%(2,2):DIMW%(8) 9998J%()=0,0,+1,0,+1,-1,0,-1,-1,-1,-1,0,-1,+1,0,+1,+1,+1:W%()=0,1,9,8,10,2,6,4,5:C%()=4,5,6,3,0,7,2,1,8:RESTOREERROR:LOCALERROR:ONERRORLOCALRESTOREERROR:SYS&400ec,`%,-1:PROCA("@.Document: Constants <real>") 9999`%=HIMEM-32768:SYS&400ec,`%+32768,-1TOL%:L%+=32768:O%=`%+32768:P%=0:V%=14:IFO%=L%THEN 10000ERROR1,"Not enough memory to start application" 10001ENDIF:P%=0:O%=`%+32768:[OPTV%:.Pl%DCD0:.tl%DCD0:.Ky%DCD0:.J_%DCD0:.nl%DCD0:.Da%DCD0:.kJ%DCD0:.ky%DCD0:.Tl%DCD0:.gy%DCD0:.u_%DCD0:.by%DCD0:.Rl%DCD0:.au%:]:P%=0:O%=`%+32768:[OPTV%:.Ya%DCD0:.Iu%DCD0:.Sl%DCD0:.li%DCD0:.W_%DCD0:.wJ%DCD0:DCD0:DCD0:.c_%:] 10002iJ%=5:P%=0:O%=`%+32768:[OPTV%:.w%DCD0:.x%DCD0:.O_%DCD0:.H_%DCD0:.b_%DCD0:.y_%DCD0:.Q_%DCD0:.x_%DCD0:.s_%:]:P%=0:O%=`%+32768:[OPTV%:.El%:]:P%+=24:[OPTV%:.iu%DCD0:.Mu%DCD0:ALIGN:.Mi%:]:P%=s_%:O%=`%+32768:[OPTV%:.r%DCD0:.`J%:]:P%+=l_:[OPTV% 10003.za%:]:P%+=Mi%*yJ%:[OPTV%:ALIGN:.l_%:]:P%=0:O%=`%+32768:[OPTV%:.Nn%DCD0:.Qn%DCD0:.Wi%DCD0:.u%DCD0:.my%DCD0:.gl%DCD0:.n%:]:sJ%=1<<0:z_%=1<<1:P%=s_%:O%=`%+32768:[OPTV%:.v_%DCD0:.q%DCD0:.G_%DCD0:.l%DCD0:.Qy%DCD0:.Yy%DCD0:.Ri%DCD0:._a%DCD0:.Cy%DCD0 10004.vy%DCD0:.vu%DCD0:.ui%DCD0:.ey%DCD0:.Ei%DCD0:.Vu%DCD0:._y%DCD0:.RJ%DCD0:.r_%DCD0:.Bi%DCD0:.Kl%DCD0:.uJ%DCD0:.h_%DCD0:.qy%DCD0:.Qu%DCD0:.HJ%DCD0:.CJ%DCD0:.g_%DCD0:.sy%DCD0:.cy%DCD0:.i_%DCD0:.ou%DCD0:.Jy%DCD0:.Ou%DCD0:.fu%DCD0:.NJ%DCD0:.DJ%DCD0 10005.`_%DCD0:.GJ%DCD0:.hJ%DCD0:.bJ%DCD0:.Ku%DCD0:.T_%DCD0:.L_%DCD0:.Nl%DCD0:.C_%DCD0:._J%DCD0:.V_%DCD0:.JJ%DCD0:.ul%DCD0:.Ny%DCD0:.t%DCD0:.Ay%DCD0:.zu%:]:P%+=16*2:[OPTV%:.e%:]:P%+=au%:[OPTV%:.z%DCD0:.o%DCD0:.su%DCD0:.Fu%DCD0:.Hl%DCD0:.ql%DCD0:.dl%DCD0 10006.Li%DCD0:.Ni%DCD0:._l%DCD0:.cl%DCD0:.Oi%DCD0:.sl%DCD0:.Ii%DCD0:._u%:]:P%+=16:[OPTV%:.`u%:]:P%+=256:[OPTV%:.Wu%:]:P%+=y_:[OPTV%:.nu%:]:P%+=l_:[OPTV%:.vl%:]:SYS&400ec,`%,-1:RESTOREERROR:ENDPROC 10007DEFFNDy:LOCALU_%,M%,N%,F%,oi%:SYS&606c0:LOCALERROR:ONERRORLOCALRESTOREERROR:PROCe_:PROCQ 10008U_%=TRUE:M%=X_%:N%=Y_%:IFNOT(FNB(Z%,vl%))THEN 10009FORJ%=0TO(vl%-1)STEP4:Z%!J%=0:NEXTJ%:oi%=FNu(dy%):CASETRUEOF 10010WHENFNB(Z%!sy%,M%*N%) 10011WHENFNB(Z%!g_%,M%*N%<<2) 10012WHENFNB(Z%!Jy%,(oy%+1)*n%) 10013WHENFNB(Z%!Qy%,oi%*16*c_%) 10014WHENFNB(Z%!Ou%,((M%+2+31)>>5)*4*(N%+2)) 10015OTHERWISE:Z%!cy%=Z%!g_%:Z%!i_%=Z%!cy%+((M%*N%+3)AND-4):Z%!w%=X_%:Z%!x%=Y_%:Z%!G_%=B_%:Z%!qy%=dy%:Z%!O_%=e_%:Z%!H_%=f_%:Z%!b_%=oy%:Z%!y_%=t_%:Z%!Q_%=a_%:Z%!x_%=m_%:Z%!_y%=iy%:Z%!uJ%=rJ%:Z%!HJ%=k_%:Z%!CJ%=EJ%:Z%!T_%=Au%:Z%!r_%=__%:Z%!RJ%=o_%:Z%!fu%=Su% 10016Z%!NJ%=xJ%:Z%!DJ%=jJ%:Z%!`_%=eJ%:Z%!GJ%=pJ%:Z%!hJ%=aJ%:Z%!bJ%=Zu%:F%=Z%+_u%:F%!0=s%!0:F%!4=s%!4:F%!8=s%!8:F%!12=s%!12:F%=Z%+e%:F%!kJ%=tJ%:F%!J_%=IJ%:F%!ky%=TJ%:F%!gy%=FJ%:F%!u_%=XJ%:F%!by%=PJ%:F%!Tl%=pl%:U%=FNM(128):!U%=ry%:U%!4=nu:SYS&400ce,,U% 10017F%=Z%+zu%:F%!0=U%!8:F%!4=U%!12:F%!8=U%!16:F%!12=U%!20:PROCC(U%,128):PROCO(Z%+Wu%,W$):F%=FNX("Board"):IFF%THEN 10018F%+=m:F%?34=Z%!RJ%:F%?35=Z%!r_%:Z%!z%=FNg("Board",+48,-48):Z%!o%=FNg("Status",+48,-48) 10019ENDIF:IF(Z%!z%=0)OR(Z%!o%=0)THEN 10020PROCF(Vy%,FNC(3)):U_%=TRUE 10021ELSE:Z%!C_%=0:Z%!Yy%=Z%!Qy%:Z%!v_%=!xy%:!xy%=Z%:PROCG(Z%):Z%!q%=_:PROCpy(Z%!z%,FNc(Z%,"Board")):PROCp:U_%=FALSE 10022ENDIF 10023ENDCASE 10024ENDIF:IFU_%AND(Z%<>0)THEN 10025PROCc 10026ENDIF:SYS&606c1:RESTOREERROR:=U_% 10027DEFPROCe_:SYS&606c1:PROCc:PROCQ:ENDPROC 10028DEFFNc(F%,a$):LOCALD%,A%,B%,C%:D%=FNM(512):PROCQJ(a$,D%):A%=F%:B%=D%:C%=D%+256:CALLbi:a$=FNN(D%+256):PROCC(D%,512):=a$ 10029DEFPROCc:LOCALD%:IFZ%<>0THEN 10030D%=xy%:WHILE!D%<>0AND!D%<>Z%:D%=!D%+v_%:ENDWHILE:IF!D%THEN 10031!D%=Z%!v_%:Z%!v_%=0 10032ENDIF:PROCe(Z%):PROCR(Z%!z%):PROCR(Z%!o%):PROCW(Z%!sy%):PROCW(Z%!g_%):PROCW(Z%!Jy%):PROCW(Z%!Qy%):PROCW(Z%!Ou%):PROCW(Z%):PROCG(0) 10033ENDIF:ENDPROC 10034DEFFNu(Jl%):LOCALT%,lu%,Pu%,M%,N%:M%=P%(Z%!G_%):N%=B%(Z%!G_%):lu%=FNS(M%,N%):Pu%=FNP(M%,N%):T%=FNXy(Jl%,Pu%,lu%):IF(Jl%>0)AND(Jl%<Pu%)THEN 10035T%=Jl% 10036ENDIF:=T% 10037DEFFNXy(La%,Pu%,lu%):LOCALT%:CASELa%OF 10038WHEN-1:T%=Pu% 10039WHEN0:T%=lu% 10040OTHERWISE:T%=FNP(FNS(La%,Pu%),lu%) 10041ENDCASE:=T% 10042DEFFNI(M%):LOCALY%,F%:F%=!xy%:Y%=TRUE:WHILEF%ANDY%:Y%=(M%<>F%!z%)AND(M%<>F%!o%):IFY%THENF%=F%!v_% 10043ENDWHILE:IFY%=0THEN 10044PROCG(F%):IFM%=Z%!z%THENM%=A_%ELSEM%=ty% 10045ENDIF:=M% 10046DEFFNYy(M%):LOCALY%,F%:F%=!xy%:Y%=TRUE:WHILEF%ANDY%:Y%=(M%<>F%!z%)AND(M%<>F%!o%):IFY%THENF%=F%!v_% 10047ENDWHILE:IFY%=0THEN 10048PROCG(F%):IFM%=Z%!z%THENM%=A_%ELSEM%=ty% 10049ENDIF:=M% 10050DEFPROCG(F%):Z%=F%:!S_=Z%:ENDPROC 10051DEFFN`:LOCALY%,F%:F%=!xy%:Y%=TRUE:WHILEF%ANDY%:Y%=(F%!q%<>o):IFY%THENF%=F%!v_% 10052ENDWHILE:IFY%=0THEN 10053PROCG(F%) 10054ENDIF:=(Y%=0) 10055DEFPROCe(F%):PROCH("Demo",F%):PROCH("Centre",F%):PROCH("Move",F%):PROCH("Highlight",F%):PROCH("Highlight_At_Start",F%):F%!h_%=FALSE:F%=F%+e%:F%!Ky%=0:ENDPROC 10056DEFFN_Null_Reason_Highlight_At_Start(A%):PROCG(A%):IFZ%!DJ%THEN 10057PROCD("Centre",Z%) 10058ENDIF:IFZ%!bJ%THEN 10059Z%!q%=Hy:PROCw(Z%!t%,Z%!Ay%,0) 10060ELSE:Z%!q%=_:PROCg:PROCUy 10061ENDIF:IFZ%!L_%THEN 10062PROCy("Highlight_At_Start",Z%):PROCV:A%=FALSE 10063ELSE:A%=TRUE 10064ENDIF:=A% 10065DEFPROCd:CASEZ%!q%OF 10066WHEN_,Wy:PROCI:Z%!q%=Wy:PROCw(Z%!t%,Z%!Ay%,0) 10067OTHERWISE:VDU7 10068ENDCASE:ENDPROC 10069DEFPROCw(Vi%,Hi%,Di%):LOCALF%,N%,Gy%,ky,ey:LOCALERROR:ONERRORLOCALRESTOREERROR:PROCA("Highlight_Board") 10070CASEDi%OF 10071WHEN0:N%=FNS(ABS(Z%!w%-Vi%),Vi%):Gy%=FNS(ABS(Z%!x%-Hi%),Hi%):ky=FNS(N%*Z%!Cy%,Gy%*Z%!vy%):ky=FNP(16383,ky):ey=FNP(Z%!Cy%,Z%!vy%)/4 10072OTHERWISE:ky=FNP(Z%!Cy%,Z%!vy%)/5:ey=FNS(Z%!Cy%,Z%!vy%)*SQR(2):ey=FNP(16383,ey) 10073ENDCASE:F%=Z%+e%:F%!Pl%=Vi%:F%!tl%=Hi%:F%!Ky%=F%!J_%+F%!ky%:F%!Da%=ey*(1<<16):F%!nl%=((ky-ey)/(F%!J_%))*(1<<16):PROCxu:IFZ%!T_%THEN 10074PROCD("Highlight",Z%) 10075ELSE:REPEAT:UNTILFN_Null_Reason_Highlight(Z%) 10076ENDIF:ENDPROC 10077DEFPROCxu:LOCALyu,rJ,oi,F%:F%=Z%+e%:yu=F%!gy%/256:rJ=F%!u_%/256:oi=F%!by%/256:F%!Rl%=0.5+256*(1+(2*(1-oi)/(rJ-yu))):ENDPROC 10078DEFFN_Null_Reason_Highlight(A%):PROCG(A%):A%=USR(qi):IFA%THEN 10079A%=Z%!q%:Z%!q%=_:CASEA%OF 10080WHENR_:PROCc_ 10081WHEN_J:PROChJ 10082WHENHy:PROCg:PROCUy 10083ENDCASE 10084ENDIF:=A% 10085DEFPROCI:IFZ%!q%=WyTHEN 10086CALLpJ:PROCy("Highlight",Z%):Z%!q%=_ 10087ENDIF:ENDPROC 10088DEFPROCLJ(Dy%):CASEDy%OF 10089WHEN-1:PROCd 10090WHENOu:PROCty 10091WHENqJ 10092WHENNJ 10093OTHERWISE:PROCI:IFDy%>=D_THEN 10094tJ%=Dy%-D_:Z%!(e%+kJ%)=tJ% 10095ENDIF:PROCd 10096ENDCASE:ENDPROC 10097DEFPROCty:Zu%=(Z%!bJ%=0):Z%!bJ%=Zu%:ENDPROC 10098DEFPROCHJ:LOCALM,S,R,W,P,s,H,z,N,L:LOCALDJ,Ey,r_:LOCALERROR:ONERRORLOCALRESTOREERROR:PROCA("Highlight") 10099M=4:S=5:R=6:W=7:P=8:s=3:H=9:z=12:N=2:L=s:DJ=0:Ey=au%:r_=Ey+4:[OPTV%:ALIGN:.qi:FNZ:STMFD(A)!,{4-9,12,Z}:SUB A,A,#256:BL r:LDR0,[12,#z%]:STR0,[A]:BL P_:STR0,[A,#4]:BL py:SUB1,1,0:SUB3,3,0:ADD0,A,#4:STMIB0,{1-3}:MOV1,A:SWI &400c9:BL Qy:ADD1,12,#ey% 10100LDMIA1,{1-2}:ADD M,M,1:ADD S,S,2:.C TEQ0,#0:ADDne0,12,#e%:LDRne P,[0,#Ky%]:BLne si:MOVne1,A:SWIne &400ca:Bne C:ADD1,12,#e%:LDR0,[1,#Ky%]:SUBS0,0,#1:MOVle0,#0:STR0,[1,#Ky%]:MVNle0,#NOT(-1):MOVgt0,#0:ADD A,A,#256:LDMFD(A)!,{4-9,12,pc}^:.P_:STMFD(A)!,{Z} 10101ADD11,12,#e%:ADD M,11,#Pl%:LDMIA M,{M,S}:ADD0,12,#Cy%:LDMIA0,{0-1}:MUL M,0,M:ADD M,M,0,LSR#1:MUL S,1,S:ADD S,S,1,LSR#1:RSB S,S,#0:ADD0,11,#Ky%:LDMIA0,{0-3}:CMP2,#0:Bgt Pu:LDR1,[11,#ky%]:SUBS0,0,1:MOVlt0,#0:MOV1,0:.Pu:CMP0,1:MOVgt0,1:MLA 0,2,0,3 10102LDR Z,[11,#Tl%]:ADD0,Z,0,LSR#16:ADD3,S,0:ADD2,M,0:SUB1,S,0:SUB0,M,0:LDMFD(A)!,{pc}^:.si:STMFD(A)!,{P,Z}:ADD0,12,#e%:LDR0,[0,#J_%]:CMP P,0:BLle N_:ADD0,12,#e%:LDR0,[0,#ky%]:SUBS P,P,0:BLgt N_:LDMFD(A)!,{P,pc}^:.N_:STMFD(A)!,{0-12,Z}:BL Nu:TEQ0,#2 10103EORne0,P,P,LSR#4:EORne0,0,0,LSR#3:ANDne0,0,#15:ADDne0,0,#3<<4:MOVeq0,#7OR(3<<4):SWI &400e6:ADD11,12,#e%:ADD R,11,#nl%:LDMIA R,{R,W,Z}:MLA W,R,P,W:MOV W,W,LSR#16:ADDpc,pc,Z,LSL#2:B My:B Li:B Bi:B Ji:B PJ:B Yl:B Ol:B Ci:.My LDMFD(A)!,{0-12,pc}^:.dyFNQy:.Li 10104MOV0,#68:MOV1,M:MOV2,S:SWI 69:MOV0,#145:MOV1,W:MOV2,#0:SWI 69:B My:.Bi:MOV0,#68:MOV1,M:MOV2,S:SWI 69:FNF("",s,dy):AND P,P,#16-1:ADD1,s,P,LSL#3:LDMIA1,{1-2}:MUL 1,W,1:ADD1,M,1,ASR#16:MUL 2,W,2:ADD2,S,2,ASR#16:MOV0,#68:SWI 69:ADD P,P,#13:AND P,P,#16-1 10105ADD1,s,P,LSL#3:LDMIA1,{1-2}:MUL 1,W,1:ADD1,M,1,ASR#16:MUL 2,W,2:ADD2,S,2,ASR#16:MOV0,#165:SWI 69:B My:.Ji:MOV0,#68:MOV1,M:MOV2,S:SWI 69:FNF("",s,dy):AND P,P,#16-1:ADD1,s,P,LSL#3:LDMIA1,{1-2}:MUL 1,W,1:ADD1,M,1,ASR#16:MUL 2,W,2:ADD2,S,2,ASR#16:MOV0,#68 10106SWI 69:ADD P,P,#3:AND P,P,#16-1:ADD1,s,P,LSL#3:LDMIA1,{1-2}:MUL 1,W,1:ADD1,M,1,ASR#16:MUL 2,W,2:ADD2,S,2,ASR#16:MOV0,#173:SWI 69:B My:.PJ:BL iy:ADD P,P,#16/4:BL iy:ADD P,P,#16/4:BL iy:ADD P,P,#16/4:BL iy:B My:.iy:FNF("",s,dy):AND P,P,#16:ADD H,s,P,LSL#3 10107LDMIA H,{H,z}:MUL 0,W,H:ADD M,0,M,LSL#16:MUL 0,W,z:ADD S,0,S,LSL#16:MOV0,H:BL aJ:MOV H,0:MOV0,z:BL aJ:MOV z,0:MOV0,#68:LDR N,[11,#gy%]:MOV N,N,ASR#1:RSB N,N,#0:MOV L,#0:BL zy:MOV0,#68:LDR N,[11,#gy%]:MOV N,N,ASR#1:RSB N,N,#0:LDR L,[11,#by%]:BL zy 10108MOV0,#117:LDR N,[11,#gy%]:MOV N,N,ASR#1:LDR L,[11,#by%]:BL zy:MOV0,#68:LDR N,[11,#u_%]:MOV N,N,ASR#1:RSB N,N,#0:LDR L,[11,#by%]:BL zy:MOV0,#68:LDR N,[11,#gy%]:MOV N,N,ASR#1:LDR L,[11,#by%]:BL zy:MOV0,#85:MOV N,#0:LDR L,[11,#Rl%]:BL zy:B My:.aJ 10109STMFD(A)!,{11,Z}:MOV1,R:MOV2,#1<<24:BL Al:LDMFD(A)!,{11,pc}^:.Yl:MOV0,#68:SUB1,M,W:SUB2,S,W:SWI 69:MOV0,#5:ADD1,M,W:SUB2,S,W:SWI 69:MOV0,#37:ADD1,M,W:ADD2,S,W:SWI 69:MOV0,#37:SUB1,M,W:ADD2,S,W:SWI 69:MOV0,#45:SUB1,M,W:SUB2,S,W:SWI 69:B My:.Ol 10110FNF("",s,dy):AND P,P,#16-1:ADD H,s,P,LSL#3:LDMIA H,{H,z}:MUL H,W,H:MUL z,W,z:MOV0,#68:ADD1,M,H,ASR#16:ADD2,S,z,ASR#16:SWI 69:MOV0,#5:ADD1,M,z,ASR#16:SUB2,S,H,ASR#16:SWI 69:MOV0,#37:SUB1,M,H,ASR#16:SUB2,S,z,ASR#16:SWI 69:MOV0,#37:SUB1,M,z,ASR#16 10111ADD2,S,H,ASR#16:SWI 69:MOV0,#45:ADD1,M,H,ASR#16:ADD2,S,z,ASR#16:SWI 69:B My:.Ci:FNF("",s,dy):MOV R,#6:MOV0,#68:.CAND P,P,#16-1:ADD H,s,P,LSL#3:LDMIA H,{H,z}:MUL H,W,H:MUL z,W,z:ADD1,M,H,ASR#16:ADD2,S,z,ASR#16:SWI 69:SUBS R,R,#1:ADDgt P,P,#1 10112SUBgt W,W,W,ASR#3:MOVgt0,#37:Bgt C:B My:.zy:MUL 1,H,N:RSB1,1,#0:MLA 1,z,L,1:ADD1,M,1:MOV1,1,ASR#16:MUL 2,H,L:MLA 2,z,N,2:SUB2,S,2:MOV2,2,ASR#16:SWI 69:MOVSpc,Z:DCB0:DCB0:DCB0:DCB24:.xi DCD0:DCD0:.rl:FNZ:STMFD(A)!,{4-9,12,Z}:SUB O,O,#r_:MOV12,0 10113STR1,[O,#Ey]:LDR0,[1]:STR0,[12,#su%]:ADD0,O,#DJ:ADD1,12,#e%:MOV2,#au%:BL BJ:LDR1,[O,#Ey]:SWI &400c8:TEQ0,#0:Beq ji:BL LJ:ADD M,12,#e%:MOV2,#`+1:BL K_:STR0,[M,#gy%]:MOV S,0:MOV2,#Zy+1:BL K_:STR0,[M,#u_%]:SUB S,0,S:MOV2,#l+1:BL K_:STR0,[M,#by%] 10114RSBS0,0,#256:ADDne0,0,0:MOVne1,S:ADDne0,0,1,LSR#1:BLne FJ:STR0,[M,#Rl%]:MOV0,#F_:LDR1,[12,#su%]:MOV2,#Oy+1:SWI &dcb8c:MOV P,0:BL k_:LDR1,[O,#Ey]:.C SWI &81681:STMFD(A)!,{4-7}:ADD4,1,#28:LDMIA4,{4-7}:ADD0,12,#zu%+16:LDMIA0,{0-3}:CMP0,4:MOVlt0,4 10115CMP1,5:MOVlt1,5:CMP2,6:MOVgt2,6:CMP3,7:MOVgt3,7:LDMFD(A)!,{4-7}:CMP0,2:CMPlt1,3:Bge ai:ADD V,V,#Ri%:LDMIA V,{V,Z}:SUB2,2,V:SUB3,3,Z:BIC0,0,#&ff000000:BIC0,0,#&ff0000:ORR0,0,1,LSL#16:BIC2,2,#&ff000000:BIC2,2,#&ff0000:ORR1,2,3,LSL#16:FNF("",2,xi) 10116STMIA2,{0-1}:SUB0,2,#1:MOV1,#9:SWI 70:LDR1,[O,#Ey]:BL n_:.ai:LDR1,[O,#Ey]:SWI &400ca:TEQ0,#0:Bne C:.ji:ADD0,12,#e%:ADD1,O,#DJ:MOV2,#au%:BL BJ:ADD O,O,#r_:LDMFD(A)!,{4-9,12,pc}^:.K_:MOV0,#F_:LDR1,[12,#su%]:SWI &dcb8c:MOV0,0,LSL#8:MOV1,#100 10117ADD0,0,1,LSR#1:B FJ:.k_:ADD W,12,#zu%:LDMIA(W)!,{0-3}:ADD M,12,#ey%:LDMIA M,{M,S}:ADD0,M,0:ADD1,S,1:ADD2,M,2:ADD3,S,3:STMIA W,{0-3}:SUB R,2,0:MOV R,R,LSL#16-1:MOV W,R,LSR#1:ADD M,0,2:MOV M,M,ASR#1:ADD S,1,3:MOV S,S,ASR#1:MOVSpc,Z:.n_ 10118STMFD(A)!,{0-12,Z}:MOV0,#128+0:SWI &400e6:SWI c+16:ADD11,12,#e%:B PJ:.tl:FNZ:STMFD(A)!,{0-12,Z}:SUB A,A,#256:BL r:ADD1,12,#zu%:LDMIA1,{1-4}:LDR0,[12,#su%]:STMIA A,{0-4}:MOV1,A:SWI &400c9:TEQ0,#0:Beq ml:BL LJ:BL k_:MOV1,A:.C BL n_:MOV1,A:SWI &400ca 10119TEQ0,#0:Bne C:.ml:ADD A,A,#256:LDMFD(A)!,{0-12,pc}^:.KJ:ADD1,12,#e%:LDR0,[1,#Ky%]:CMP0,#0:MOVleSpc,Z:STMFD(A)!,{0-12,Z}:BL P_:ADD0,12,#ey%:LDMIA0,{0-1}:ADD M,M,0:ADD S,S,1:ADD H,12,#e%:LDR W,[H,#Ky%]:LDR R,[H,#ky%]:SUB R,R,#1:.C SUBS P,W,R 10120LDRgt0,[H,#J_%]:ADDgt0,0,#1:CMPgt0,P:BLgt N_:SUBS R,R,#1:Bge C:LDMFD(A)!,{0-12,pc}^:.pJ:FNZ:STMFD(A)!,{4-9,12,Z}:SUB A,A,#256:BL r:LDR0,[12,#z%]:STR0,[A]:ADD W,12,#e%:LDR R,[W,#Ky%]:LDR0,[W,#ky%]:ADD0,0,R:ADD0,0,#1:STR0,[W,#Ky%]:BL P_:STR R,[W,#Ky%] 10121STR0,[A,#4]:BL py:SUB1,1,0:SUB3,3,0:ADD0,A,#4:STMIB0,{1-3}:MOV1,A:SWI &400c9:BL Qy:.C TEQ0,#0:BLne KJ:MOVne1,A:SWIne &400ca:Bne C:ADD A,A,#256:LDMFD(A)!,{4-9,12,pc}^:]:ENDPROC 10122DEFFNQy:LOCALR%,_%,N%,Gu%,ru%:R%=(COS(2*PI/16)*(1<<16))+0.5:_%=(SIN(2*PI/16)*(1<<16))+0.5:N%=((1/SQR(2))*(1<<16))+0.5:Gu%=1<<16:ru%=0:[OPTV%:DCDGu%:DCDru%:DCDR%:DCD_%:DCDN%:DCDN%:DCD_%:DCDR%:DCDru%:DCDGu%:DCD-_%:DCDR%:DCD-N%:DCDN%:DCD-R%:DCD_%:DCD-Gu%:DCDru% 10123DCD-R%:DCD-_%:DCD-N%:DCD-N%:DCD-_%:DCD-R%:DCDru%:DCD-Gu%:DCD_%:DCD-R%:DCDN%:DCD-N%:DCDR%:DCD-_%:]:=0 10124DEFPROCUJ(Q%,X%,E%,I%):LOCALM%,a%:M%=P_%:CASEI%OF 10125WHENGy,Gy+2:a%=FNA(M%,Dy+1):PROCJ(M%,I%,E%,Gy,a%,999) 10126WHENDy,Dy+2:a%=FNA(M%,Gy+1):PROCJ(M%,I%,E%,Dy,1,a%) 10127WHENeu:PROCDu 10128WHENGi:PROCdu:IFE%AND4THEN 10129PROCP 10130ENDIF 10131ENDCASE:ENDPROC 10132DEFPROCDu:LOCALM%:M%=P_%:PROCZ(M%,Gy+1,f_):PROCZ(M%,Dy+1,RJ):ENDPROC 10133DEFPROCXJ:LOCALM%,F%:IFFND("Highlight",P_%)THEN 10134ELSE:M%=P_%:F%=Z%+e%:PROCZ(M%,Gy+1,F%!J_%):PROCZ(M%,Dy+1,F%!ky%) 10135ENDIF:ENDPROC 10136DEFPROCdu:LOCALM%,F%,j%:M%=P_%:F%=Z%+e%:IJ%=FNA(M%,Gy+1):TJ%=FNA(M%,Dy+1):j%=TRUE:CASEFALSEOF 10137WHEN(F%!J_%=IJ%) 10138WHEN(F%!ky%=TJ%) 10139OTHERWISEj%=FALSE 10140ENDCASE:IFj%THEN 10141PROCI:F%!J_%=IJ%:F%!ky%=TJ% 10142ENDIF:PROCd:ENDPROC 10143DEFPROCpJ(Q%,X%,Eu%,I%):LOCALM%,a%,d%,E%,R%,mu%,j%:M%=ry%:d%=FNA(M%,`+1):E%=FNA(M%,Zy+1):R%=FNA(M%,l+1):zi%=FNA(M%,Oy+1):CASEI%OF 10144WHENZy,Zy+2:a%=FNS(d%+1,2*(100-R%)+d%):PROCJ(M%,I%,Eu%,Zy,a%,100) 10145WHEN`,`+2:a%=FNP(E%-1,2*(100-R%)+E%):PROCJ(M%,I%,Eu%,`,0,a%) 10146WHENl,l+2:a%=FNP(99,100-((E%-d%)DIV2)):mu%=FNS(d%,100-((E%-d%)DIV2)*d%):PROCJ(M%,I%,Eu%,l,mu%,a%) 10147WHENOy,Oy+2:PROCJ(M%,I%,Eu%,Oy,0,15) 10148WHENlu:PROCaJ 10149WHENq_:PROCTJ 10150ENDCASE:IF(Eu%=1)AND(I%=q_)THEN 10151PROCP 10152ELSE:j%=TRUE:CASEFALSEOF 10153WHEN(d%=FNA(M%,`+1)) 10154WHEN(E%=FNA(M%,Zy+1)) 10155WHEN(R%=FNA(M%,l+1)) 10156WHEN(zi%=FNA(M%,Oy+1)) 10157OTHERWISEj%=FALSE 10158ENDCASE:IFj%THEN 10159CALLtl 10160ENDIF 10161ENDIF:ENDPROC 10162DEFPROCaJ:PROCE(Zy,WJ):PROCE(`,c_):PROCE(l,EJ):ENDPROC 10163DEFPROCfu:LOCALF%:IFFND("Arrow",ry%)THEN 10164ELSE:F%=Z%+e%:PROCE(Zy,F%!gy%):PROCE(`,F%!u_%):PROCE(l,F%!by%) 10165ENDIF:ENDPROC 10166DEFPROCE(J%,Gy%):PROCZ(ry%,J%+1,(Gy%*100+50)>>8):ENDPROC 10167DEFPROCTJ:LOCALM%,F%,j%:M%=ry%:F%=Z%+e%:IFF%!kJ%=4THEN 10168PROCI 10169ENDIF:PROCPy(Zy,FJ%):PROCPy(`,XJ%):PROCPy(l,PJ%):j%=TRUE:CASEFALSEOF 10170WHEN(F%!gy%=FJ%) 10171WHEN(F%!u_%=XJ%) 10172WHEN(F%!by%=PJ%) 10173OTHERWISEj%=FALSE 10174ENDCASE:IFj%THEN 10175F%!gy%=FJ%:F%!u_%=XJ%:F%!by%=PJ%:IFF%!kJ%=4THEN 10176PROCI:PROCw(F%!Pl%,F%!tl%) 10177ENDIF 10178ENDIF:ENDPROC 10179DEFPROCPy(J%,RETURNGy%):Gy%=(FNA(ry%,J%+1)*256/100)+0.5:ENDPROC 10180DEFFNh_DEFAULT:LOCALERROR:ONERRORLOCALRESTOREERROR:PROCA("@.h.DEFAULT") 10181Vo=16:sn=1<<30:aB=0:vO=1:O`=2:Ia=3:oo=4:pO=5:yn=6:no=7:eo=8:ea=1<<0:Ai=1<<1:so=1<<2:=0 10182DEFFNjumpblock_DEFAULT:LOCALERROR:ONERRORLOCALRESTOREERROR:PROCA("@.h.DEFAULT") 10183[OPTV%ANDny%:.qo DCDTa:.Oa DCDNO:.mO DCDzo:.I` DCDmo:.IO DCDEO:.tB DCDJ`:.co DCDBB:.Cn DCDFo:.cl DCDfn:]:=0 10184DEFFNh_debug:LOCALERROR:ONERRORLOCALRESTOREERROR:PROCA("@.h.debug") 10185Ro=FALSE:=0 10186DEFFNjumpblock_debug:LOCALERROR:ONERRORLOCALRESTOREERROR:PROCA("@.h.debug") 10187[OPTV%ANDny%:.`` DCDP`:.Jn DCDkO:.Ya DCDeB:.d` DCDFk:.tO DCDkn:]:=0 10188DEFFNh_imath:LOCALERROR:ONERRORLOCALRESTOREERROR:PROCA("@.h.imath") 10189=0 10190DEFFNjumpblock_imath:LOCALERROR:ONERRORLOCALRESTOREERROR:PROCA("@.h.imath") 10191[OPTV%ANDny%:.Ky DCDyo:.FJ DCDYo:.dO DCDdB:.YB DCDta:.uy DCDOo:.uO DCDfB:.So DCDVa:.qa DCDHO:.xB DCDSk:.An DCDCB:.Ra DCDBO:.zB DCDZk:.Bn DCDZo:.gn DCDsB:.hB DCDWB:.rn DCDlO:.zO DCDla:.JB DCDxO:.h` DCDhO:.M` DCDTB:.r` DCDPn:.Al DCDGn:]:=0 10192DEFFNh_message:LOCALERROR:ONERRORLOCALRESTOREERROR:PROCA("@.h.message") 10193=0 10194DEFFNjumpblock_message:LOCALERROR:ONERRORLOCALRESTOREERROR:PROCA("@.h.message") 10195[OPTV%ANDny%:.Nl DCDmn:.f` DCDHn:.MB DCDwO:.E` DCDAk:.C` DCDuo:]:=0 10196DEFFNh_RelObj:LOCALERROR:ONERRORLOCALRESTOREERROR:PROCA("@.h.RelObj") 10197Y`=4<<2:=0 10198DEFFNjumpblock_RelObj:LOCALERROR:ONERRORLOCALRESTOREERROR:PROCA("@.h.RelObj") 10199[OPTV%ANDny%:.Wo DCD_a:.W` DCDF`:.o` DCDMo:.Jo DCDPa:.Q` DCDtn:.xo DCDZn:.OB DCDa`:.Wn DCDLk:.Rn DCDyB:.PB DCDen:.Xk DCDZB:.va DCDdo:]:=0 10200DEFFNh_stdio:LOCALERROR:ONERRORLOCALRESTOREERROR:PROCA("@.h.stdio") 10201JO=0:Dk=17:fa=34:=0 10202DEFFNjumpblock_stdio:LOCALERROR:ONERRORLOCALRESTOREERROR:PROCA("@.h.stdio") 10203[OPTV%ANDny%:.Pk DCDqn:.qu DCDX`:.`n DCDLa:.Da DCDnB:.n` DCDZO:.Wn%DCDEn%:.Ln%DCDba%:.Xn%DCDva%:.Ua DCDB`:.hu DCDS`:._O DCDLo:.GB DCDH`:.Ko DCDNo:]:=0 10204DEFFNh_stdlib:LOCALERROR:ONERRORLOCALRESTOREERROR:PROCA("@.h.stdlib") 10205=0 10206DEFFNjumpblock_stdlib:LOCALERROR:ONERRORLOCALRESTOREERROR:PROCA("@.h.stdlib") 10207[OPTV%ANDny%:.dJ DCDNn:.Cu DCDGa:.eO DCDSO:.zl DCDpo:.Eo DCDQO:.OJ DCDHB:.Qo DCDHa:.T` DCD_n:.da DCDjo:.w` DCDwn:.Io DCDXn:.c` DCDxn:.ho DCDA`:.oB DCDb`:.kB DCDVO:]:=0 10208DEFFNh_string:LOCALERROR:ONERRORLOCALRESTOREERROR:PROCA("@.h.string") 10209P%=0:[OPTV%:.N` DCB0:.Ao DCB0:.hn DCB0:.za DCB0:.G` DCB0:.ra DCB0:.t` DCB0:]:=0 10210DEFFNjumpblock_string:LOCALERROR:ONERRORLOCALRESTOREERROR:PROCA("@.h.string") 10211[OPTV%ANDny%:.on DCDMO:.wa DCDrB:.`O DCDy`:.bO DCDKO:.En DCDka:.BJ DCDFO:.Yu DCDm`:.ty DCDe`:.Tn DCDgB:.Do DCDx`:.ua DCD_o:.SB DCDj`:.XO DCDqO:.ao DCDv`:.bB DCDnO:.in DCDKB:.ia DCDk`:.AB DCDpa:.xa DCDln:.Xo DCDoa:.Qk DCDOn:.Mn DCDRB:.Uk DCDYn 10212.p` DCDko:.QB DCDcB:.lB DCDJk:.Dn DCDCO:.Xa DCDCk:.jB DCDSn:.K` DCDpB:.fO DCDvo:.EB DCDiO:.FB DCDrO:.s` DCDyO:.UB DCDUO:.ga DCDWa:._` DCDan:.Ln DCDMk:.Gk DCDUn:.bn DCDiB:.wo DCDRO:.jO DCDJa:]:=0 10213DEFFNh_wimp:LOCALERROR:ONERRORLOCALRESTOREERROR:PROCA("@.h.wimp") 10214Na=12:zn=0:P%=0:[OPTV%:.UJ DCB0:.F_ DCB0:.W_ DCB0:.gy DCB0:.Au DCB0:.b_ DCB0:.Ru DCB0:.Qu DCB0:.`u DCB0:.Bo DCB0:.TO DCB0:.wu DCB0:.PO DCB0:.vn DCB0:.YO DCB0:.AO DCB0:.OO DCB0:]:P%=0:[OPTV%:.Qa DCB0:.cO DCB0:.yJ DCB0:.gu DCB0:.Ca DCB0:.Ju DCB0 10215.bu DCB0:.Uu DCB0:.na DCB0:.Ku DCB0:.Ho DCB0:.`a DCB0:]:P%=0:[OPTV%:.ha DCB0:.Bk DCB0:.i` DCB0:.R` DCB0:.fo DCB0:]:=0 10216DEFFNjumpblock_wimp:LOCALERROR:ONERRORLOCALRESTOREERROR:PROCA("@.h.wimp") 10217[OPTV%ANDny%:.uB DCDVn:.Z` DCDQn:.pn DCDWk:.NB DCDKn:.z_ DCDca:.wi DCDba:.kJ DCDl`:.oO DCDL`:.pl DCD`B:.fJ DCDPo:.T_ DCDUo:.cy DCDEa:.ja DCDV`:.e_ DCD_B:.In DCDGO:.Ul DCDdn:.du DCDbo:.hl DCDKa:]:=0 10218DEFFN_file_io_version=9 10219DEFFN_hard_initialise_file_ioLOCALERROR:ONERRORLOCALRESTOREERROR:PROCA("%.file_io: hard_initialise_file_io") 10220PROCS("<BasicV$Lib>.CheckVars",2):PROCS("<BasicV$Lib>.string",6):el%=256+20:DIMJi%el%:DIMua%9:ua%?8=13:=0 10221DEFFNFy(T$)LOCALBa%:SYS8,5,T$TOBa%:=(Ba%=1) 10222DEFFNTy(T$)LOCALh%,Di%:SYS8,5,T$TODi%,,,,h%:IFDi%=0THENERROR1,"File not found ("+T$+")" 10223=h% 10224DEFPROC_J(T$,ga%)SYS8,255,T$,ga%:ENDPROC 10225DEFFN_y(g$,U$,RETURNR_%)LOCALmi%:LOCALERROR:ONERRORLOCALRESTOREERROR:PROCA("%.file_io: OS_GBPB_ReadEntry") 10226SYS&2000c,10,g$,Ji%,1,R_%,el%,U$TO,,,mi%,R_%:=mi% 10227DEFFNbyLOCALERROR:ONERRORLOCALRESTOREERROR:PROCA("%.file_io: file_object_load_address") 10228=!Ji% 10229DEFFNWyLOCALERROR:ONERRORLOCALRESTOREERROR:PROCA("%.file_io: file_object_name") 10230=FNN(Ji%+20) 10231DEFFNJyLOCALT%:LOCALERROR:ONERRORLOCALRESTOREERROR:PROCA("%.file_io: file_object_file_type") 10232T%=FNby:IF(T%AND-1048576)=-1048576THEN 10233T%=(T%AND&fff00)>>8 10234ELSET%=-1 10235ENDIF:=T% 10236DEFFN_FileType_version=1 10237DEFFN_hard_initialise_FileTypeLOCALERROR:ONERRORLOCALRESTOREERROR:PROCA("%.FileType: hard_initialise_FileType") 10238XB=4095:SJ=4093:qB=4091:Go=4089:=0 10239DEFFN_Heap_version=8 10240DEFFN_hard_initialise_HeapLOCALERROR:ONERRORLOCALRESTOREERROR:PROCA("%.Heap: hard_initialise_Heap") 10241=0 10242DEFFNRy(h%)LOCALT%:IFFNB(T%,h%)THEN 10243h%=!fy%:ERROR!h%,FNN(h%+4) 10244ENDIF:=T% 10245DEFFNB(RETURNQJ%,A%)QJ%=USR(ki%):IF!fy%THENQJ%=0 10246=!fy% 10247DEFPROCX(RETURNQJ%,h%)IFFNB(QJ%,h%)THEN 10248QJ%=!fy%:ERROR!QJ%,FNN(QJ%+4) 10249ENDIF:ENDPROC 10250DEFPROCW(RETURNA%)IFFNPy(A%)THEN 10251A%=!fy%:ERROR!A%,FNN(A%+4) 10252ENDIF:ENDPROC 10253DEFFNPy(RETURNA%)CALLQa%:A%=0:=!fy% 10254DEFPROC`(RETURNQJ%,h%)IFFNzy(QJ%,h%)THEN 10255h%=!fy%:ERROR!h%,FNN(h%+4) 10256ENDIF:ENDPROC 10257DEFFNzy(RETURNA%,B%)A%=USR(xa%):=!fy% 10258DEFPROCQ_LOCALERROR:ONERRORLOCALRESTOREERROR:PROCA("%.Heap: assembler") 10259[OPTV%:FNq(ki%,dJ):FNq(Qa%,Cu):FNq(xa%,zl):ALIGN:.fy%DCD0:]:ENDPROC 10260DEFFNq(RETURNpa%,ia%)[OPTV%:ALIGN:.pa%:FNZ:STMFD(A)!,{Z}:MOV Z,#0:STR Z,fy%:BL ia%:STRvs0,fy%:LDMFD(A)!,{pc}^:]:=0 10261DEFFN_IntMath_version=4 10262DEFFN_hard_initialise_IntMath=0 10263DEFFNS(d%,E%)IFd%>E%THEN=d% 10264=E% 10265DEFFNP(d%,E%)IFd%>E%THEN=E% 10266=d% 10267DEFFN_ModeInfo_version=5 10268DEFFN_hard_initialise_ModeInfo=0 10269DEFPROCIJ(ay%)SYS53,ay%,1TO,,il%:il%+=1:SYS53,ay%,2TO,,bl%:bl%+=1:SYS53,ay%,3TO,,ml%:ml%+=1:SYS53,ay%,4TO,,Sy%:SYS53,ay%,5TO,,m%:SYS53,ay%,6TO,,la%:SYS53,ay%,7TO,,_n%:SYS53,ay%,9TO,,Ga%:Fl%=1<<Ga%:SYS53,ay%,11TO,,Yu%:Yu%+=1:SYS53,ay%,12TO,,w_%:w_%+=1:oa%=Yu%DIVil% 10270ya%=w_%DIVbl%:Si%=(Yu%<<Sy%)-1:Fi%=(w_%<<m%)-1:ha%=32DIVFl%:ENDPROC 10271DEFFN_Wimp_version=28 10272DEFFN_hard_initialise_WimpLOCALXy%:LOCALERROR:ONERRORLOCALRESTOREERROR:PROCA("%.Wimp: hard_initialise_Wimp") 10273IFFNv<12THEN 10274ERROR1,"%.Wimp needs more recent version of the LibHandler" 10275ENDIF:SYS&400f2,0TOXy%:IFXy%=0THEN 10276ERROR0,"Application needs to be run from the desktop" 10277ENDIF:PROCS("<BasicV$Lib>.Heap",8):PROCS("<BasicV$Lib>.Message",3):PROCS("<BasicV$Lib>.Template",1):nJ%=FALSE:qJ%=3*1024:PROCX(eu%,qJ%):qJ%+=eu%:AJ%=eu%:PROCX(W%,512):y$="":e$="":wi%=0:B$="Application":H$="0.00 (01-Jan-1900)":d_%=-1:p_%=2400:Vy%=2401 10278Yn%=16*1024:Ry%=FALSE:N$="":=0 10279DEFFNIy(d$)LOCALd%,C%,S$:SYS&600f2,2TOd%;C%:IF(C%AND1)=0THEN 10280S$=CHR$?d%+CHR$d%?1:d%=OPENIN(d$+S$):IFd%THEN 10281CLOSE#d%:d$+=S$ 10282ENDIF 10283ENDIF:=d$ 10284DEFPROCBu(By%)IFBy%>0THENSYS&dcb8d,gu,By% 10285ENDPROC 10286DEFPROCR(RETURNBy%)IFBy%>0THEN 10287LOCALD%:D%=FNM(4):!D%=By%:SYS&400c3,,D%:PROCC(D%,4):By%=0 10288ENDIF:ENDPROC 10289DEFFNj(By%)SYS&dcb8d,yJ,By%,-1:=TRUE 10290DEFPROCpy(By%,Y$)SYS&dcb8d,Ju,By%,Y$,0,0:ENDPROC 10291DEFPROCVy(By%,Wa%,Sa%,qn%)IFqn%THEN 10292SYS&dcb8d,bu,By%,Wa%,Sa% 10293ELSELOCALU%:U%=FNM(16):!U%=0:U%!4=-Sa%ANDNOT((1<<m%)-1):U%!8=Wa%ANDNOT((1<<Sy%)-1):U%!12=0:SYS&400d7,By%,U%:PROCC(U%,16) 10294ENDIF:ENDPROC 10295DEFPROCVJ(RETURNM%,`a%)SYS&dcb8d,Ku,M%,`a%TOM%:ENDPROC 10296DEFPROCFy(By%)SYS&dcb8d,Uu,By%:ENDPROC 10297DEFPROCY(M%,zn%)LOCALD%:D%=FNM(128):!D%=M%:SYS&400cb,,D%:D%!28=zn%:SYS&400e7,2,D%,M%:PROCC(D%,128):ENDPROC 10298DEFPROCQu(By%,I%,vi%,Vn%,Tn%)LOCALU%:U%=FNM(16):U%!0=By%:U%!4=I%:U%!8=Vn%<<vi%:U%!12=Tn%<<vi%:SYS&400cd,,U%:PROCC(U%,16):ENDPROC 10299DEFFN_(By%,I%)SYS&dcb8c,`u,By%,I%TOI%:=I% 10300DEFPROCT(By%,I%,Za%)SYS&dcb8c,Qu,By%,I%,Za%:ENDPROC 10301DEFPROCZy(By%,I%,Za%)SYS&dcb8c,wu,By%,I%,Za%:ENDPROC 10302DEFPROCF_(M%,I%,Zn%,Al%,Il%)SYS&dcb8c,Au,M%,I%,Zn%,Al%,Il%:ENDPROC 10303DEFPROCQy(M%,I%,E%,sn%,Hn%,pi%,Al%,Il%)IF(I%=Hn%)EOR((E%AND4)=4)THEN 10304PROCF_(M%,pi%,+1,Al%,Il%) 10305ELSEPROCF_(M%,pi%,-1,Al%,Il%) 10306ENDIF:ENDPROC 10307DEFPROCz_(M%,J%)SYS&dcb8c,b_,M%,J%,+1:ENDPROC 10308DEFPROCCJ(M%,J%)SYS&dcb8c,b_,M%,J%,-1:ENDPROC 10309DEFPROCF(ni%,A$)LOCALU%:U%=FNM(300):U%!0=ni%:$(U%+4)=A$+CHR$(0):PROCf(U%):PROCC(U%,300):ENDPROC 10310DEFPROCN(A$)ERRORp_%,A$:ENDPROC 10311DEFPROCL(ni%)LOCALU%:U%=FNM(300):U%!0=Vy%:PROCby("LE"+STR$(ni%),U%+4):PROCf(U%):PROCC(U%,300):ENDPROC 10312DEFPROCf(In%)SYS&400df,In%,1,B$:ENDPROC 10313DEFFNa(ai%,A$)LOCALU%,T%:PROCP:U%=FNM(260):!U%=0:$(U%+4)=A$+CHR$(0):SYS&400df,U%,(16ORai%),FNw(0)TO,T%:PROCC(U%,260):=T% 10314DEFPROCPJLOCALU%:U%=FNM(256):U%?0=1:U%?1=0:U%?2=0:U%?3=0:U%?4=0:U%?5=Si%MOD256:U%?6=Si%DIV256:U%?7=Fi%MOD256:U%?8=Fi%DIV256:SYS7,21,U%:!U%=Ui%:SYS&400c6,,U%:PROCC(U%,256):ENDPROC 10315DEFPROCAu(Q%,X%,E%,I%)LOCALERROR:ONERRORLOCALRESTOREERROR:PROCA("%.Wimp: Mouse_Click_Query") 10316PROCPJ:Q%=FNJ("FN_Stop_Action_"+n$+"("+STR$(I%=0)+")"):ENDPROC 10317DEFFNAy(D%)LOCALc$:c$="":WHILE?D%>31:c$+=CHR$(?D%):D%+=1:ENDWHILE:=c$ 10318DEFFNKy(V$)WHILEINSTR(V$,"."):V$=MID$(V$,INSTR(V$,".")+1):ENDWHILE:=V$ 10319DEFPROC_(By%,I%,R$)SYS&dcb8c,W_,By%,I%,R$:ENDPROC 10320DEFPROCey(M%,J%,_%)SYS&dcb8c,W_,M%,J%,_%:ENDPROC 10321DEFPROCZ(M%,J%,K%)SYS&dcb8c,gy,M%,J%,K%:ENDPROC 10322DEFFNs(M%,J%)SYS&dcb8c,UJ,M%,J%TOM%:=FNAy(M%) 10323DEFFNwy(M%,J%)SYS&dcb8c,UJ,M%,J%TOM%:=M% 10324DEFFNA(M%,J%)SYS&dcb8c,F_,M%,J%TOM%:=M% 10325DEFFNb(T$)LOCALXy%,zy%,R%:SYS&20008,17,T$TOXy%,,,,zy%;R%:IFFNU(R%)THEN 10326PROCU("Reason",FNKy(T$)):PROCo(Xy%):PROCN(FNw(4)) 10327ENDIF:IFXy%<>1THEN 10328zy%=-1 10329ENDIF:=zy% 10330DEFFNM(h%)LOCALT%:IF(AJ%+h%)<qJ%THEN 10331T%=AJ%:AJ%+=h% 10332ELSEPROCN("Wimp Stack full") 10333ENDIF:=T% 10334DEFPROCJu:AJ%=eu%:ENDPROC 10335DEFPROCC(uu%,h%)IF(uu%<eu%)OR(uu%>qJ%)THEN 10336PROCN("Release_Stack: Invalid stack chunk") 10337ELSEIF(h%<0)OR((uu%+h%)>qJ%)THEN 10338PROCN("Release_Stack: Invalid chunk size") 10339ELSEAJ%-=h%:IFAJ%<>uu%THEN 10340PROCN("Release_Stack: Bad pop") 10341ENDIF 10342ENDIF 10343ENDIF:ENDPROC 10344DEFPROCEJ(G$,Gy%,Un%,xu%,Rn%,ra%)H$=STR$(Gy%)+"."+RIGHT$("0"+STR$(Un%),2):H$+=" ("+RIGHT$("0"+STR$(xu%),2)+"-":H$+=MID$("CBJanFebMarAprMayJunJulAugSepOctNovDec",Rn%*3,3):H$+="-"+RIGHT$("19"+STR$(ra%),4)+")":B$=G$ 10345PROCU("App",B$):SYS35,B$+"$Dir",W%,256,0,3TO,,xu%:W%?xu%=13:DIMfi%xu%+1:$fi%=$W%:IFN$<>""THEN 10346xu%=FALSE:wu%=W%:Gy%=INSTR(N$,","):WHILEGy%<>0:wu%!0=FNJ(LEFT$(N$,Gy%-1)):wu%+=4:N$=MID$(N$,Gy%+1):Gy%=INSTR(N$,","):ENDWHILE:wu%!0=FNJ(N$):wu%!4=0:SYS&400c0,300,&4b534154,G$,W%TOju%,d_% 10347ELSESYS&400c0,200,&4b534154,G$TOju%,d_% 10348ENDIF:ONERRORPROCkJ 10349SYS&606c0:IFju%<200THEN 10350ERRORp_%,FNw(5) 10351ENDIF:IFRy%THEN 10352SYS&81682,d_% 10353ENDIF:nJ%=TRUE:PROCu_:PROCDJ:nJ%=-2:PROCX_:PROCdJ:IFTu%=0THEN 10354PROC_(N_%,7,H$) 10355ENDIF:Pn%=-1:Ki%=-1:xl%=-1:pu%=-1:Ha%=FALSE:Aa%=-1:da%=-1:O$="":w$="":PROCwy:SYS&606c1:ENDPROC 10356DEFPROCkJSYS&606c1:IFBJ%THEN 10357PROCF(Vy%,REPORT$+" ["+STR$ERL+"]") 10358ELSEPROCF(Vy%,REPORT$) 10359ENDIF:PROCB:END:ENDPROC 10360DEFFNProgInfo(M%)PROCO(M%!(88+(7<<5)+20),H$):=0 10361DEFPROCh_LOCALQi%,aa%:aa%=TRUE:IFRy%THEN 10362wy%=wy%ANDNOT(49) 10363ENDIF:REPEATSYS&400c7,wy%,W%TOQi%:IFRy%THENSYS&81686,Qi%,,d_% 10364CASEQi%OF 10365WHEN0:PROCcu 10366WHEN1:PROCvJ 10367WHEN2:PROCs_ 10368WHEN3:PROCPu 10369WHEN4:PROCFu 10370WHEN5:PROCSu 10371WHEN6:PROCb_ 10372WHEN7:PROCw_ 10373WHEN8:PROCg_ 10374WHEN9:PROCv_ 10375WHEN10:PROCwJ 10376WHEN11:PROCoJ 10377WHEN12:PROCru 10378WHEN17:PROCzy 10379WHEN18:PROCE_ 10380WHEN19:PROCr_ 10381ENDCASE:UNTILNOT(aa%):ENDPROC 10382DEFPROCFuIFNOT(Ry%)THEN 10383PROCF(p_%,"Unexpected Pointer_Leaving_Window") 10384ENDIF:ENDPROC 10385DEFPROCSuIFNOT(Ry%)THEN 10386PROCF(p_%,"Unexpected Pointer_Entering_Window") 10387ENDIF:ENDPROC 10388DEFPROCwJPROCN("Unexpected Scroll_Request"):ENDPROC 10389DEFPROCoJPROCN("Unexpected Lose_Caret"):ENDPROC 10390DEFPROCruPROCN("Unexpected Gain_Caret"):ENDPROC 10391DEFPROCdJDIMA$(10):DIMM%(DIM(A$(),1)):D$="�":A$()=D$:M%()=-1:py%=0:wy%=6193:ENDPROC 10392DEFPROCD(L$,cu%)PROCvu(L$,cu%):ENDPROC 10393DEFPROCvu(L$,cu%)LOCALK%:py%+=1:IFpy%=1THEN 10394wy%=wy%AND(NOT(1)) 10395ELSEIFpy%=DIM(A$(),1)THEN 10396ERROR1,"Too many null reasons" 10397ENDIF 10398ENDIF:K%=0:WHILEA$(K%)<>D$:K%+=1:ENDWHILE:A$(K%)=L$:M%(K%)=cu%:ENDPROC 10399DEFPROCy(L$,cu%)LOCALK%:IFpy%=0THEN 10400PROCN("Bad release null reason code ("+L$+")") 10401ELSEpy%-=1:K%=DIM(A$(),1):REPEATK%-=1:IFK%<0THEN 10402PROCN("Bad release null reason code ("+L$+")") 10403ENDIF:UNTIL(A$(K%)=L$)AND(M%(K%)=cu%):A$(K%)=D$:IFpy%=0ANDNOT(Ry%)THEN 10404wy%=wy%OR1 10405ENDIF 10406ENDIF:ENDPROC 10407DEFPROCH(L$,cu%)LOCALK%,D%:IFL$=""THEN 10408IFNOT(Ry%)THEN 10409wy%=wy%OR1 10410ELSEwy%=wy%AND(NOT1) 10411ENDIF:py%=0:A$()=D$ 10412ELSED%=0:K%=DIM(A$(),1):WHILEK%>0:K%-=1:IFA$(K%)=L$AND((M%(K%)=cu%)OR(cu%=0))THEN 10413A$(K%)=D$:D%+=1 10414ENDIF:ENDWHILE:py%-=D% 10415ENDIF:ENDPROC 10416DEFPROCcuLOCALK%,K$,y%,yl%:LOCALERROR:ONERRORLOCALRESTOREERROR:PROCA("%.Wimp: Null_Reason_Code") 10417K%=DIM(A$(),1):WHILEK%>0:K%-=1:K$=A$(K%):IFK$<>D$THEN 10418y%=M%(K%):IFy%=-1THEN 10419yl%=FNJ("FN_Null_Reason_"+K$) 10420ELSEyl%=FNJ("FN_Null_Reason_"+K$+"("+STR$(y%)+")") 10421ENDIF:IFyl%AND(A$(K%)=K$)AND(M%(K%)=y%)THEN 10422A$(K%)=D$:py%-=1 10423ENDIF 10424ENDIF:ENDWHILE:ENDPROC 10425DEFFN_Null_Reason_IFNOT(Ry%)THEN 10426PROCN("Bad Null Reason (not expected)") 10427ENDIF:=0 10428DEFPROCw_LOCALQ%:LOCALERROR:ONERRORLOCALRESTOREERROR:PROCA("%.Wimp: User_Drag") 10429Q%=FNJ("FN_Dragged_"+e$):IFwi%<>(1*16)THEN 10430PROCP 10431ENDIF:SYS&400d0,,-1:e$="":ENDPROC 10432DEFPROCE_LOCALERROR:ONERRORLOCALRESTOREERROR:PROCA("%.Wimp: User_Message_Recorded") 10433PROCzy:ENDPROC 10434DEFPROCG_BPUT#W%!20,"Run "+$fi%:ENDPROC 10435DEFPROCzyLOCALERROR:ONERRORLOCALRESTOREERROR:PROCA("%.Wimp: User_Message") 10436CASEW%!16OF 10437WHEN0:PROCB 10438WHEN1:PROCKJ 10439WHEN2:PROC`J 10440WHEN3:PROCx_ 10441WHEN4:PROCIu 10442WHEN5:PROCGJ 10443WHEN6:PROCCu 10444WHEN7:PROCEu 10445WHEN8:PROCRy 10446WHEN9:PROCWJ 10447WHEN10:PROCG_ 10448WHEN1282:PROCN_ 10449WHEN&400c0:PROCJJ 10450WHEN&400c1:PROCwy 10451WHEN&400c5:PROCwu 10452ENDCASE:ENDPROC 10453DEFPROCwuENDPROC 10454DEFPROCEuLOCALERROR:ONERRORLOCALRESTOREERROR:PROCA("Message_RAM_Transmit: ") 10455IFW%!12<>pu%THEN 10456PROCF(Vy%,"Unexpected RAM_Transmit message") 10457ELSEVl%+=W%!24:IF(W%!24)=hl%THEN 10458PROCU_ 10459ELSEIFFNJ("FN_RAM_Load_Completed_"+O$+"("+STR$(Vl%)+")")THEN 10460PROCL(6) 10461ENDIF 10462ENDIF 10463ENDIF:ENDPROC 10464DEFPROCU_LOCALRAM_start%:IFFNJ("FN_RAM_Load_"+O$+"("+STR$(Vl%)+", "+STR$(hl%)+", RAM_start%)")THEN 10465IFVl%<>0THEN 10466PROCL(7) 10467ELSEIFFNJ("FN_RAM_Load_Failed_"+O$) 10468PROCK_ 10469ENDIF 10470ELSEW%!12=W%!8:W%!16=6:W%!20=RAM_start%:W%!24=hl%:SYS&400e7,18,W%,W%!4:pu%=W%!8 10471ENDIF:ENDPROC 10472DEFPROCK_LOCALBa%:SYS&20023,"Wimp$Scrap",0,-1,0,3TO,,sa%:IFsa%=0THEN 10473PROCL(8) 10474ELSE$(W%+44)="<Wimp$Scrap>"+CHR$(0):W%!36=-1:W%!16=2:W%!12=da%:W%!0=60:SYS&400e7,17,W%,Aa%:xl%=W%!8:pu%=xl%:Ha%=FALSE 10475ENDIF:ENDPROC 10476DEFPROCCuLOCALM,RAM_start%,RAM_length%:LOCALERROR:ONERRORLOCALRESTOREERROR:PROCA("Message_RAM_Fetch: ") 10477IFW%!12<>Ki%THEN 10478PROCL(9) 10479ELSEIFw$=""THEN 10480ELSEIFFNJ("FN_RAM_Save_"+w$+"("+STR$(Fa%)+", "+STR$(W%!24)+", RAM_start%, RAM_length%)")THEN 10481ELSEFa%+=RAM_length%:SYS&400f1,d_%,RAM_start%,W%!4,W%!20,RAM_length%:W%!12=W%!8:W%!16=7:W%!24=RAM_length%:SYS&400e7,17-(RAM_length%=(W%!24)),W%,W%!4:Ki%=W%!8 10482ENDIF 10483ENDIF 10484ENDIF:ENDPROC 10485DEFPROCUuONERRORPRINT"Error in error handler: ";REPORT$:END 10486IFRy%THENSYS&a1683,d_% 10487PROCtu:CALLG_:SYS&400dd,d_%,&4b534154:ENDPROC 10488DEFFNgy(u$):LOCALD%,R%:D%=FNM(256):SYS&20023,u$,D%,-256,0,0TO,,R%:PROCC(D%,256):=(R%<0) 10489DEFPROCL_(E%):LOCALF%:IFE%AND1THEN 10490F%=!Xu%:X_%=F%!w%:Y_%=F%!x%:oy%=F%!b_%:e_%=F%!O_%:f_%=F%!H_%:m_%=F%!x_%:t_%=F%!y_%:a_%=F%!Q_%:CASETRUEOF 10491WHENWy%<>0:PROCF(Vy%,FNC(2)) 10492WHEN!xy%=0:PROCb 10493WHENFN`:PROCY(Z%!z%,-1):PROCXy 10494OTHERWISE:PROCG(!xy%):PROCXy 10495ENDCASE 10496ENDIF:ENDPROC 10497DEFPROCXu(J%):LOCALG%:IFJ%>=0THEN 10498G%=FNW(J%+1):IFG%!r%THEN 10499PROCn(G%!r%,G%+`J%):PROCR(G%!r%):G%!r%=0 10500ELSE:PROCt(G%) 10501ENDIF 10502ENDIF:ENDPROC 10503DEFPROCC_(J%):LOCALG%,Yi%,b%:IFJ%>=0THEN 10504J%+=1:G%=FNW(J%):IFG%!r%THEN 10505PROCR(G%!r%) 10506ENDIF:!My%-=1:IF!My%=0THEN 10507PROCW(!Hy%):SYS5,"%Remove <Daleks3$Dir>.Scores":PROCP 10508ELSE:WHILEJ%<=!My%:J%+=1:Yi%=FNW(J%):FORb%=0TOl_%-1STEP4:G%!b%=Yi%!b%:NEXTb%:G%=Yi%:ENDWHILE:PROC`(!Hy%,G%-!Hy%):PROCjy 10509ENDIF 10510ENDIF:ENDPROC 10511DEFPROCfJ(M%):LOCALG%:SYS&400c5,,M%:G%=!Xu%:PROCCy(G%!r%,G%+`J%):ENDPROC 10512DEFPROCI_:LOCALG%:G%=!Xu%:PROCn(G%!r%,G%+`J%):PROCR(G%!r%):G%!r%=0:ENDPROC 10513DEFPROCGu:LOCALR_%:IFFNgy("Daleks$Dir")THEN 10514SYS&606c0:LOCALERROR:ONERRORLOCALRESTOREERROR:SYS&606c1:PROCQ 10515R_%=0:WHILEFN_y("<Daleks$Dir>","*",R_%):IFFNJy=SJTHEN 10516PROCWu(FNWy) 10517ENDIF:ENDWHILE:RESTOREERROR:SYS&606c1 10518ELSE:PROCF(Vy%,FNC(10)) 10519ENDIF:ENDPROC 10520DEFPROCWu(Q$):LOCALD%,hy%,y%,M%,N%,K%,J%,SJ%,gJ%,G$:D%=FNM(24):PROCO(D%,Q$):hy%=FNM(24):PROCO(hy%,"%dx%dHSC"):A%=D%:B%=hy%:A%=USR(tu):K%=!A%:M%=A%!4:N%=A%!8:PROCC(hy%,24):PROCC(D%,24):IFK%=2THEN 10521D%=vu:D%!w%=M%:D%!x%=N%:D%!O_%=7:D%!H_%=10:D%!b_%=M%*N%/2:D%!y_%=1:D%!Q_%=1:D%!x_%=1:N%=OPENIN("<Daleks$Dir>."+Q$):LOCALERROR:ONERRORLOCALRESTOREERROR:CLOSE#N%:PROCQ 10522FORJ%=1TO10:INPUT#N%,SJ%,G$:gJ%=(SJ%DIV10)-D%!O_%:gJ%=gJ%DIVD%!H_%:G$=LEFT$(G$,y_-1):PROCxy(D%,G$,SJ%,gJ%):NEXTJ%:RESTOREERROR:CLOSE#N% 10523ENDIF:ENDPROC 10524DEFPROCd_:LOCALh%,qi%,G%,J%,D%:SYS&606c0:LOCALERROR:ONERRORLOCALRESTOREERROR:SYS&606c1:PROCQ 10525!My%=0:!Hy%=0:IFFNFy("<Daleks3$Dir>.Scores")THEN 10526h%=FNTy("<Daleks3$Dir>.Scores"):IF((h%-4)MODl_%)<>0THEN 10527PROCN(FNC(4)) 10528ENDIF:!Hy%=FNRy(h%):D%=!Hy%:PROC_J("<Daleks3$Dir>.Scores",D%):SYS91,&c1040a31,D%+4,D%+h%,1TOqi%:IFqi%<>!D%THEN 10529PROCN(FNC(4)) 10530ENDIF:!My%=(h%-4)DIVl_%:FORJ%=1TO!My%:G%=FNW(J%):G%!r%=0:NEXTJ% 10531ENDIF:RESTOREERROR:SYS&606c1:ENDPROC 10532DEFFNV(M%):LOCALJ%,Y%,G%:J%=1:Y%=TRUE:WHILEJ%<=!My%ANDY%:G%=FNW(J%):Y%=(G%!r%<>M%):J%+=1:ENDWHILE:IFY%THEN 10533M%-=1 10534ELSE:!Xu%=G% 10535ENDIF:=M% 10536DEFPROCxy(F%,G$,SJ%,gJ%):LOCALG%,N%,J%,b%,i%,Ey%,Z$:SYS&606c0:LOCALERROR:ONERRORLOCALRESTOREERROR:SYS&606c1:PROCQ 10537G%=FNGy(F%):Ey%=1:N%=FNT(G%,Ey%):WHILEEy%<yJ%ANDSJ%<=N%!Mu%:Ey%+=1:N%=FNT(G%,Ey%):ENDWHILE:IFSJ%>N%!Mu%THEN 10538i%=yJ%:WHILEi%>Ey%:J%=FNT(G%,i%-1):Z$=FNN(J%+El%):PROCi(G%,i%,Z$,J%!iu%,J%!Mu%):PROCSy(G%,i%):i%-=1:ENDWHILE:PROCi(G%,Ey%,G$,gJ%,SJ%):PROCSy(G%,Ey%):PROCY(G%!r%,-1):PROCjy 10539ENDIF:RESTOREERROR:SYS&606c1:ENDPROC 10540DEFPROCbu:LOCALJ%,Y%,G%:J%=1:Y%=TRUE:WHILEJ%<!My%ANDY%:G%=FNW(J%):Y%=(G%!r%=0):J%+=1:ENDWHILE:IFY%THEN 10541G%=FNW(1):PROCt(G%) 10542ENDIF:PROCY(G%!r%,-1):ENDPROC 10543DEFPROCTu(F%):LOCALJ%,Y%,b%,G%:J%=1:Y%=TRUE:WHILEJ%<=!My%ANDY%:G%=FNW(J%):FORb%=0TOs_%-1STEP4:Y%=Y%AND(G%!b%=F%!b%):NEXTb%:Y%=(Y%=0):J%+=1:ENDWHILE:IFY%THEN 10544VDU7:G%=FNW(1) 10545ENDIF:IFG%!r%=0THEN 10546PROCt(G%) 10547ENDIF:PROCY(G%!r%,-1):ENDPROC 10548DEFPROCjy:LOCALh%,D%:Ai%=FNW(!My%+1):D%=!Hy%:SYS91,&c1040a31,D%+4,Ai%,1TO!D%:SYS&20008,10,"<Daleks3$Dir>.Scores",SJ,,D%,Ai%:ENDPROC 10549DEFFNGy(F%):LOCALY%,J%,b%,G%:Y%=TRUE:J%=1:WHILEJ%<=!My%ANDY%:G%=FNW(J%):FORb%=0TOs_%-1STEP4:Y%=Y%AND(F%!b%=G%!b%):NEXTb%:Y%=(Y%=0):IFY%THEN 10550J%+=1 10551ENDIF:ENDWHILE:IFY%THEN 10552!My%+=1:Y%=FNW(!My%+1)-!Hy%:PROC`(!Hy%,Y%):G%=FNW(!My%):G%!r%=0:PROCZu(G%+`J%):FORb%=0TOs_%-1STEP4:G%!b%=F%!b%:NEXTb%:FORJ%=1TOyJ%:PROCi(G%,J%,"Zappa",0,10):NEXTJ% 10553ENDIF:IFG%!r%=0THEN 10554PROCt(G%) 10555ENDIF:=G% 10556DEFPROCt(G%):LOCALJ%,_$:_$=FNc(G%,"HighScore"):G%!r%=FNqy("HighScores",+48,-48,_$):PROCny(G%!r%,G%+`J%,-1):FORJ%=1TOyJ%:PROCSy(G%,J%):NEXTJ%:ENDPROC 10557DEFPROCi(G%,Ey%,G$,gJ%,SJ%):LOCALN%:N%=FNT(G%,Ey%):PROCO(N%+El%,G$):N%!iu%=gJ%:N%!Mu%=SJ%:ENDPROC 10558DEFPROCSy(G%,Ey%):LOCALM%,J%,N%:M%=G%!r%:J%=FNfy(Ey%):N%=FNT(G%,Ey%):PROCey(M%,J%+li,N%+El%):PROCZ(M%,J%+fi,N%!iu%):PROCZ(M%,J%+ul,N%!Mu%):ENDPROC 10559DEFFNW(J%):=!Hy%+4+((J%-1)*l_%) 10560DEFFNfy(Ey%):=((Ey%-1)*Cl)+Dl 10561DEFFNT(G%,Ey%):=G%+za%+((Ey%-1)*Mi%) 10562DEFPROCW_:LOCALJ%:LOCALERROR:ONERRORLOCALRESTOREERROR:PROCO_ 10563SYS&606c0:b=FNdy:IFb<1THEN 10564PROCF(Vy%,FNC(7)):PROCB:END 10565ENDIF:DIMP%(b):DIMG%(b):DIMD%(b):DIMB%(b):DIMS%(b,ly):DIMN%(b):DIMF%(b):DIMX%(b):FORJ%=1TOb:PROCi_(J%):NEXTJ%:RESTOREERROR:SYS&606c1:ENDPROC 10566DEFPROCO_:SYS&606c1:PROCF(Vy%,FNC(8)):PROCB:END:ENDPROC 10567DEFFNdy:LOCALJ%:J%=1:WHILEFNOy(J%):J%+=1:ENDWHILE:=J%-1 10568DEFFNOy(J%):LOCALZ$,R%:LOCALDATA:RESTORE+0:READZ$:SYS&2002e,296,v%,FNd(J%)+Z$TO;R%:=NOTFNU(R%) 10569DEFFNd(J%):=CHR$(J%+ASC("A")-1)+"_" 10570DEFPROCi_(J%):LOCALb%,Z$,M%,N%,Ju%,D%,G%:LOCALDATA:RESTORE+0:READZ$:Z$=FNd(J%)+Z$:SYS46,280,v%,Z$TO,,S%(J%,1):D%=S%(J%,1):SYS46,552,v%,D%TO,,,M%,N%,,Ju%:X%(J%)=Ju%:P%(J%)=M%:B%(J%)=N%:PROCiJ(D%,TRUE,N%(J%),G%):SYS53,Ju%,4TO,,G%(J%):SYS53,Ju%,5TO,,D%(J%):SYS53,Ju%,9TO,,G%:F%(J%)=1<<(1<<G%) 10571FORb%=2TOly:READZ$:Z$=FNd(J%)+Z$:SYS46,280,v%,Z$TO,,S%(J%,b%):NEXTb%:ENDPROC 10572DEFPROCGy:LOCALCy,T%,Ll%,U%,Ly%,Lu%,M%,N%,ku%:LOCALZy%,q_%,xi%,ea%,xn%,Dl%,Y%,G%,J%,F%,j_%,Uy%:ku%=Z%!Yy%-Z%!Qy%:IFku%AND(Z%!q%=fy)THEN 10573PROCy("Move",Z%) 10574ENDIF:!u_=ml%:U%=FNM(272):LOCALERROR:ONERRORLOCALRESTOREERROR:PROCC(U%,272):PROCQ 10575Ly%=U%:Lu%=Ly%+16:Y%=Z%!G_%:G%=Z%+`u%:F%=Z%+_u%:Ly%!0=F%!0*(1<<Sy%):Ly%!4=F%!4*(1<<m%):Ly%!8=F%!8*(1<<G%(Y%)):Ly%!12=F%!12*(1<<D%(Y%)):M%=FNz(Ly%,P%(Y%)):N%=FNf(Ly%,B%(Y%)):SYS&40740,X%(Y%),N%(Y%),-1,-1,Lu%:IFZ%!l%THEN 10576SYS46,296,Z%!l%,"0"TO,,,Zy%,q_%,,Dl%:T%=(M%<>Zy%)OR(N%<>q_%):T%=T%ORFNx(Dl%,4):T%=T%ORFNx(Dl%,5):T%=T%ORFNx(Dl%,9):IFNOTT%THEN 10577FORJ%=0TOF%(Y%)-1:T%=T%OR(Lu%?J%<>G%?J%):NEXTJ% 10578ENDIF 10579ELSE:T%=TRUE 10580ENDIF:IFT%THEN 10581FORJ%=0TOF%(Y%)-1:G%?J%=Lu%?J%:NEXTJ%:PROCW(Z%!l%):Zy%=M%+FNz(Ly%,Z%!HJ%):q_%=N%+FNf(Ly%,Z%!CJ%):Z%!Cy%=Zy%<<Sy%:Z%!vy%=q_%<<m%:xi%=FNz(Ly%,Z%!HJ%):ea%=FNf(Ly%,Z%!CJ%):Z%!vu%=((xi%+1)DIV2)<<Sy%:Z%!ui%=(q_%-((ea%+1)DIV2))<<m%:Ea%=Z%!w%:Ra%=Z%!x%:j_%=(Zy%<<Sy%)*Ea% 10582Uy%=((q_%<<m%)*Ra%)+E_%:PROCVy(Z%!z%,j_%,Uy%+4,0):PROCH_(Zy%,q_%):Cy=ly+(2*Z%!Qu%):Cy=Cy*256/F%(Y%):Cy=Cy*FNny(MODE,Zy%,q_%,FALSE,FALSE):Ll%=FALSE:REPEAT:Cy=Cy*1.2:T%=FNB(Z%!l%,Cy):IFNOT(T%)THEN 10583g%=Z%!l%:g%!0=Cy:g%!4=0:g%!8=16:g%!12=16:Ll%=NOT(FNry):IFNOT(Ll%)THEN 10584PROCW(Z%!l%) 10585ENDIF 10586ENDIF:UNTILT%ORLl%:IFNOT(T%)THEN 10587g%!0=g%!12:PROC`(Z%!l%,g%!12) 10588ENDIF 10589ENDIF:RESTOREERROR:PROCC(U%,272):Z%!Yy%=Z%!Qy%+ku%:IFT%THEN 10590PROCF(Vy%,FNC(9)):Z%!q%=Du 10591ELSE:IFku%AND(Z%!z%<>0)THEN 10592PROCD("Move",Z%) 10593ENDIF 10594ENDIF:ENDPROC 10595DEFFNx(ay%,gi%):LOCALR%,a%:SYS53,MODE,gi%TO,,R%:SYS53,ay%,gi%TO,,a%:=R%<>a% 10596DEFPROCH_(M%,N%):LOCALF%,I_%,J%,oJ%,Q%,lJ%,X%:I_%=FNu(dy%):PROCW(Z%!Qy%):PROCX(Z%!Qy%,((I_%+1)*16*c_%)):oJ%=0:lJ%=0:FORJ%=0TOI_%:F%=Z%!Qy%+(J%*16*c_%):Q%=((J%*M%)DIVI_%)<<Sy%:X%=((J%*N%)DIVI_%)<<m%:PROCJ_(F%,oJ%,lJ%,Q%,X%):oJ%=Q%:lJ%=X%:NEXTJ%:Z%!Qu%=I_%:ENDPROC 10597DEFPROCJ_(F%,oJ%,lJ%,Q%,X%):LOCALJ%:FORJ%=0TO10:CASEJ%AND3OF 10598WHEN0:F%!Iu%=0:F%!W_%=0 10599WHEN1:F%!Iu%=oJ%:F%!W_%=Q% 10600WHEN2:F%!Iu%=-Q%:F%!W_%=-Q% 10601WHEN3:F%!Iu%=0:F%!W_%=0 10602ENDCASE:CASEJ%AND12OF 10603WHEN0:F%!Sl%=0:F%!wJ%=0 10604WHEN4:F%!Sl%=-X%:F%!wJ%=-X% 10605WHEN8:F%!Sl%=lJ%:F%!wJ%=X% 10606ENDCASE:F%+=c_%:NEXTJ%:ENDPROC 10607DEFFNry:LOCALT%,J%,i$,gi%,Xy%,Ql%,Ul%,Xl%,g%,G%:LOCALDATA:RESTORE+0:g%=Z%!l%:LOCALERROR:ONERRORLOCALRESTOREERROR:SYS&606c1:PROCQ 10608SYS&606c0:J%=0:REPEAT:SYS&606c4,(J%*100)DIV27:PROCay:SYS&2002e,271,g%,STR$(J%),0,M%,N%,MODETO;T%:T%=FNU(T%):IFNOT(T%)THEN 10609G%=S%(Z%!G_%,J%+1):SYS46,316,g%,STR$(J%),0TOXy%,Ql%,Ul%,Xl%:SYS&400e6,128+Z%!r_%:SYS46,562,v%,G%,0,0,,Ly%:SYS46,564,v%,G%,0,0,11,Ly%,Lu%:SYS46,Xy%,Ql%,Ul%,Xl%:SYS46,280,g%,STR$(J%)TO,,G%:Z%!(Fu%+(J%<<2))=G%:J%+=1 10610ENDIF:UNTILT%OR(J%=ly):IFXa%THEN 10611IFNOT(T%)THEN 10612T%=FNy(Z%!Fu%,Ya%) 10613ENDIF:IFNOT(T%)THEN 10614T%=FNy(Z%!Hl%,li%) 10615ENDIF 10616ENDIF:IFT%THEN 10617PROCW(Z%!l%) 10618ENDIF:RESTOREERROR:SYS&606c1:=T% 10619DATA "dalek", "man", "pyre", "right" 10620DATA "upright", "up", "upleft", "left" 10621DATA "downleft", "down", "downright" 10622DEFFNy(Ru%,Va%):LOCALk%,Q%,X%,T%,F%,I_%,Ua%,Y%,Fy%,oJ%,lJ%:LOCALZ%():LOCALDATA:RESTORE+0:T%=FALSE:Ua%=J%:DIMZ%(15,3):Z%()=-1:REPEAT:READk%:F%=Z%!Qy%+(k%*c_%):I_%=Z%!Qu%:F%!Va%=Ru%:REPEAT:oJ%=F%!W_%:lJ%=F%!wJ%:F%+=16*c_%:Q%=F%!W_%:X%=F%!wJ%:Y%=((Q%>0)AND(X%<0))OR((Q%<0)AND(X%>0)):Q%=ABS(Q%-oJ%)>>Sy% 10623X%=ABS(X%-lJ%)>>m%:T%=FNUy(Q%,X%,F%!Va%,Y%):I_%-=1:UNTILT%OR(I_%=0):UNTILT%OR(k%=0) 10624DATA %0001, %1001, %1000, %1010, %0010, %0110, %0100, %0101, %0000 10625=T% 10626DEFFNUy(Q%,X%,RETURNtu%,Ci%):LOCALT%,i%,Xy%,Ql%,Ul%,Xl%,E$,g%:g%=Z%!l%:T%=TRUE:i%=0:WHILE(i%+Ua%)<J%ANDT%:T%=(Z%(i%,0)<>Q%)OR(Z%(i%,1)<>X%):T%=T%OR(Z%(i%,2)<>Ci%):i%+=1:ENDWHILE:IFNOT(T%)THEN 10627tu%=Z%(i%-1,3) 10628ELSE:E$=STR$(J%):PROCay:IF(Q%=0)AND(X%=0)THEN 10629SYS&2002e,271,g%,E$,,,,MODETO;T% 10630ELSE:SYS&2002e,271,g%,E$,,M%+Q%,N%+X%,MODETO;T% 10631ENDIF:T%=FNU(T%):IFNOT(T%)THEN 10632Z%(i%,0)=Q%:Z%(i%,1)=X%:Z%(i%,2)=Ci%:IF(Q%<>0)OR(X%<>0)THEN 10633Q%=Q%<<Sy%:X%=X%<<m%:SYS46,316,g%,E$,0TOXy%,Ql%,Ul%,Xl%:IFCi%THEN 10634SYS46,546,g%,Ru%,0,X%,3:SYS46,546,g%,Ru%,Q%,0,3 10635ELSE:SYS46,546,g%,Ru%,0,0,3:SYS46,546,g%,Ru%,Q%,X%,3 10636ENDIF:SYS46,Xy%,Ql%,Ul%,Xl% 10637ENDIF:SYS46,280,g%,E$TO,,tu%:Z%(i%,3)=tu%:J%+=1:SYS&606c4,(J%*100)DIV27 10638ENDIF 10639ENDIF:=T% 10640DEFFNf(S%,M):=(M*S%!4)DIVS%!12 10641DEFFNz(S%,M):=(M*S%!0)DIVS%!8 10642DEFPROCay:IFFl%>4THEN 10643GCOL0,0TINT0:GCOL128,0TINT0 10644ELSE:GCOL0,0:GCOL128,0 10645ENDIF:ENDPROC 10646DEFFN_Message_version=4 10647DEFFN_hard_initialise_MessageLOCALERROR:ONERRORLOCALRESTOREERROR:PROCA("%.Message: hard_initialise_Message") 10648vB=31:SYS5,"RMEnsure CAssembler 0.01 RMLoad System:Modules.CAssembler":DIMQi 256:=0 10649DEFFNey(j$,Fn%,RETURNU_%)LOCALA%:SYS&fcb83,j$+".Messages.",Fn%,0TOA%,U_%:IFU_%=0THENCALLv_ 10650=A% 10651DEFFNSy(N%,x$,I$)LOCALGy%:SYS&fcb85,x$,I$,N%TOGy%;N%:=Gy%AND((N%AND2)=2) 10652DEFFNEy(N%)LOCALGy%:SYS&fcb86,N%TOGy%;N%:=Gy%AND((N%AND2)=2) 10653DEFFNe(N%,x$)LOCALGy%:SYS&fcb84,x$,Qi,256,N%,0TOGy%,N%:?N%=13:=$Qi 10654DEFPROCjJ(N%,x$,I$)N%=FNSy(N%,x$,I$):ENDPROC 10655DEFPROCq_(N%)N%=FNEy(N%):ENDPROC 10656DEFFNC(K%)=FNe(`y%,"E"+STR$(K%)) 10657DEFFNH(z$)=FNe(`y%,z$) 10658DEFPROCU(z$,a$)PROCjJ(`y%,z$,a$):ENDPROC 10659DEFPROCby(z$,B%)SYS&dcb84,z$,B%,256,`y%,0:ENDPROC 10660DEFPROCQJ(z$,B%)SYS&dcb84,z$,B%,256,`y%,2:ENDPROC 10661DEFPROCtuPROCq_(`y%):ENDPROC 10662DEFPROCo(E%)IFE%<=0THEN 10663PROCU("Sys",""):PROCU("SysN","") 10664ELSEPROCU("Sys",FNAy(E%+4)):PROCU("SysN",STR$~(!E%)) 10665ENDIF:ENDPROC 10666DEFFNw(K%)=FNe(`y%,"LE"+STR$(K%)) 10667DEFPROCgJLOCALERROR:ONERRORLOCALRESTOREERROR:PROCA("%.Message: assemble") 10668[OPTV%:ALIGN:.v_:FNZ:B Nl:]:IFV%AND4THENv_+=yy% 10669ENDPROC 10670DEFFN_CheckVars_version=3 10671DEFFN_hard_initialise_CheckVars=0 10672DEFFN_string_version=6 10673DEFFN_hard_initialise_stringLOCALERROR:ONERRORLOCALRESTOREERROR:PROCA("%.string: hard_initialise_string") 10674PROCS("<BasicV$Lib>.ctype",1):=0 10675DEFFNLy(R$)LOCALq$,yu%,J%,R%:yu%=LEN(R$):q$="":WHILEyu%>0:R%=ASC(R$):IFFNm(R%)THEN 10676q$+=CHR$(FNCy(R%)) 10677ELSEq$+=CHR$(R%) 10678ENDIF:yu%-=1:R$=RIGHT$(R$,yu%):ENDWHILE:=q$ 10679DEFFN_ctype_version=1 10680DEFFN_hard_initialise_ctype=0 10681DEFFNHy(R%)=R%-ASC("a")+ASC("A") 10682DEFFNm(R%)=R%>=ASC("a")ANDR%<=ASC("z") 10683DEFFNCy(R%)LOCALT%:IFFNm(R%)THEN 10684T%=FNHy(R%) 10685ELSET%=R% 10686ENDIF:=T%
�><In$Dir>.!RunImage 0�Produced by BasCompress v1.30 (09 Sep 1992) 9Z%=0:yJ%=10:Bn%=1:ly=11:y_=24:�s%16:�Kn%4:!Kn%=0:��x ��qJ(20,16):BJ%=�:KJ%=-2:Xa%=�:LJ%=�:�S("<BasicV$Lib>.CAsm",6):�S("<BasicV$Lib>.Sprite_IO",6):�S("<BasicV_Assembler$Lib>.Misc",33):�S("<BasicV$Lib>.StickyWin",1):�S("<BasicV$Lib>.Template",3):Pi%=BJ%:�BJ%� >�Hy("debug,imath,message,RelObj,stdio,stdlib,string,wimp") :�:�Hy("imath,message,RelObj,stdio,stdlib,string,wimp") ��:�su(10000,�,�):LJ%=BJ%:�G(0):�S("<BasicV$Lib>.file_io",3):�S("<BasicV$Lib>.FileType",1):�S("<BasicV$Lib>.Heap",7):�S("<BasicV$Lib>.IntMath",4):�S("<BasicV$Lib>.ModeInfo",5):�S("<BasicV$Lib>.Wimp",28):`y%=�ey("<Daleks3$Dir>",-1,U_%):�U_%>0� ;�!`y%,"Daleks can't load its' message file: "+�N(`y%+4) m�:Ry%=�:Tu%=�:N$="9,10,&502,&400C0,&400C1":�EJ("Daleks3",3,40,3,10,1992):LJ%=BJ%:�W_:�Yy:�d_:�Ml:�j(Wy%) )�_(Wy%,`y,W$):ș&dcb8c,Ru,Wy%,`y:��x �Ju:�:�h_:��:� ��Q:�BJ%� ��,�$+" ["+�(�)+"]" �:��,�$ �:�B:� B��Yu(Q%,X%,E%,I%):�c%,f%,k%:ș&400d2,Z%!z%,-1,,,1<<25:ȎZ%!q%� m�_:Q%=(Q%-(Z%!ey%))�(Z%!Cy%):X%=((Z%!Ei%)-X%)�(Z%!vy%):c%=Q%-(Z%!t%):f%=X%-(Z%!Ay%):�(�(c%)<2)�(�(f%)<2)� �P:�E%�4� Ȏc%� �-1:k%=2 �0:k%=0 �+1:k%=1 �:Ȏf%� �-1:k%=k%�8 �+1:k%=k%�4 �:Z%!Ny%=k%:�V �:�h � �:�E%�1� �P:�u � � ! �o:�E%�1� "�a #� $:�7 %�:� & ��`_(p%,I%):�P:Ȏ�Ly(�(p%))� '1�"1","2","3","4","5","6","7","8","9":ȎZ%!q%� (I�_,Wy:�Q%,X%,j%,c%,f%:c%=((p%-�("1"))�3)-1:f%=((p%-�("1"))�3)-1:Ȏc%� )�-1:Z%!Ny%=2 *�0:Z%!Ny%=0 +�+1:Z%!Ny%=1 ,�:Ȏf%� -�-1:Z%!Ny%+=4 .�+1:Z%!Ny%+=8 /L�:Q%=Z%!t%+c%:X%=Z%!Ay%-f%:j%=(Q%>=0)�(Q%<Z%!w%):�j%�(X%>=0)�(X%<Z%!x%)� 0�V 1� 2:�7 3� 4�"A":�Iy:�By 5�"C":�K 6�"D":�my 7�"G":�cy:�By 8�"H":�d 9�"L":�Ky :�"S":�h ;�"T":�u <�" ":�a =:Ȏp%� > �3:�yy ? �8:�ty @�13:�Z_ A�16:�Ey B�19:�ry C�20:�A_ D:ș&400dc,p% E� F�:� G(��Iy:rJ%=(Z%!uJ%=0):Z%!uJ%=rJ%:�U_:� H��cy:�Z%!_y%� I iy%=0 J�:iy%=1 K�:�Jy:Z%!_y%=iy%:�r:� L��Jy:�Z%!_y%� M�r:Z%!_y%=0 N�:� O ��r:�Zi:� P��Ky:ȎZ%!q%� Q�_,Wy:Z%!Ku%=�:Z%!Ny%=0:�V R:�7 S�:� T��Z_:ȎZ%!q%� U �fy:�7 V:Au%=(Z%!T_%=0):Z%!T_%=Au% W�:� X��u:ȎZ%!q%� Y�_,Wy:�l:�vy Z:�7 [�:� \���vy:�Q%,X%,Ca%:�I:�g:�:Q%=�(Z%!w%)-1:X%=�(Z%!x%)-1:Ca%=(Q%<>(Z%!t%))�(X%<>(Z%!Ay%)):�Ca%�(?�L(Q%,X%)=0)�(?�K(Q%,X%)=0):Z%!t%=Q%:Z%!Ay%=X%:Z%!q%=R_:�w(Q%,X%,0):� ]��c_:�g:Z%!Ny%=0:�Z%!`_%� ^�D("Centre",Z%) _�:�Z%!L_%� `Z%!Vu%=GJ:�Z%!T_%� a�V b� c�:�V d�:� e��h:ȎZ%!q%� f�_,Wy:�Z%!V_%>0� g �l:�Oy h� i:�7 j�:� k)��Oy:�I:Z%!q%=_J:�w(Z%!t%,Z%!Ay%,1):� lw��hJ:�c%,f%,Q%,X%,M%,N%,E%:Z%!V_%-=1:�j_:Q%=Z%!t%:X%=Z%!Ay%:M%=Z%!w%:N%=Z%!x%:�f%=-1�+1:�((X%+f%)>=0)�((X%+f%)<N%)� m9E%=�L(Q%,X%+f%):�c%=-1�+1:�((Q%+c%)>=0)�((Q%+c%)<M%)� n�(E%?c%)<>0� o�BJ(Q%+c%,X%+f%) p� q �:�c% r�:�f%:Z%!Ny%=0:�Z%!L_%� s�Z%!T_%� t�V u� v�:�V w�:� x��K:�i� y#�H("Centre",Z%):�D("Centre",Z%) z�:� {$ݤ_Null_Reason_Centre(Z%):=�(�i) |�ݤi:�U%,M%,N%,Q%,X%,YJ%,OJ%,Ty%,Iy%,al%,_%:U%=�M(64):!U%=Z%!z%:ș&400cb,,U%:M%=(U%!12)-(U%!4):N%=(U%!16)-(U%!8)-(E_%+4):YJ%=Z%!Cy%:OJ%=Z%!vy%:Q%=Z%!JJ%+(YJ%�2):X%=-Z%!ul%+(OJ%�2):Ty%=�S(Q%-(M%�2),0):Ty%=�P(Ty%,((Z%!w%*YJ%)-M%)):Iy%=�P((N%�2)+X%,0) }�Iy%=�S(Iy%,-((Z%!x%*OJ%)-N%)):Q%=�((1<<Sy%)-1):X%=�((1<<m%)-1):Ty%=(Ty%�Q%)-(U%!20):Iy%=(Iy%�X%)-(U%!24):al%=((�(Ty%)>=(1<<Sy%))�(�(Iy%)>=(1<<m%))):�al%� ~i_%=Z%!fu%:U%!24+=�(Iy%)*�S((�(Iy%)�_%)�X%,1<<m%):U%!20+=�(Ty%)*�S((�(Ty%)�_%)�Q%,1<<Sy%):ș&400c5,,U% �:�C(U%,64):=al% �+��yy:xJ%=(Z%!NJ%=0):Z%!NJ%=xJ%:�Z%!NJ%� ��K ��:�H("Centre",Z%) ��:� �+��ry:jJ%=(Z%!DJ%=0):Z%!DJ%=jJ%:�Z%!DJ%� ��K ��:�H("Centre",Z%) ��:� �+��A_:eJ%=(Z%!`_%=0):Z%!`_%=eJ%:�Z%!`_%� ��K ��:�H("Centre",Z%) ��:� �+��Ey:pJ%=(Z%!GJ%=0):Z%!GJ%=pJ%:�Z%!GJ%� ��dy ��:� ���dy:�ay� �#�H("Centre",Z%):�D("Centre",Z%) ��:� ��ݤay:�U%,Q%,X%,M%,N%,YJ%,OJ%:U%=�M(64):!U%=Z%!z%:ș&400cb,,U%:M%=(U%!12)-(U%!4):N%=(U%!16)-(U%!8)-(E_%+4):Q%=U%!4-U%!20:X%=U%!16-U%!24-E_%:YJ%=Z%!Cy%:OJ%=Z%!vy%:Q%+=Z%!JJ%+(YJ%�2):X%-=Z%!ul%+(OJ%�2):Q%=�P(Q%-U%!4,U%!12-Q%) �@X%=�P(X%-U%!8,U%!16-X%-E_%):�C(U%,64):=�p(Q%,YJ%)��p(X%,OJ%) �ݤp(Q%,M%):=(Q%<=(M%*2.5)) ���j_:�(Z%!V_%)� ��Z(Z%!o%,J_,Z%!V_%) ��:�_(Z%!o%,J_,�H("None")) ��:� ���Uy:�(Z%!uJ%)�(Z%!h_%=�)� ��U_ ��:� ���l:�Z%!h_%� ��U_ ��:� ���V:�k� ��l:Z%!q%=fy:�I_:�Z%!T_%� ��D("Move",Z%) ��:�:��_Null_Reason_Move(Z%) �� ��:� �Iݤk:�F%,Q%,X%,Z$:Q%=Z%!t%:X%=Z%!Ay%:�(?�L(Q%,X%)<>0)�(?�K(Q%,X%)<>0)� �%Z%!Ku%=�:Z%!q%=o:�z(2):�Z%!Nl%=�� �*Z$=�N(Z%+Wu%):�xy(Z%,Z$,Z%!C_%,Z%!_J%) �,�:F%=�:Z%!q%=o:?�L(Q%,X%)=0:?�K(Q%,X%)=0 �&�:F%=Z%!Jy%:F%=(F%!u%<>-1):�(F%)� �3�e(Z%):�Xu:Z%!q%=Hy:�D("Highlight_At_Start",Z%) ��:�Z%!q%<>Hy� �Z%!q%=_ �� �� � �:=F% �0ݤ_Null_Reason_Move(A%):�G(A%):A%=�(Zu):�A%� ��k� �Ȏ�� ��Z%!Ku%:A%=�:�I_ �$�Z%!L_%:�Ly:A%=(Z%!q%<>_):�A%=0� ��I_ �� �:�Uy:�Z%!NJ%� ��K ��:�Z%!GJ%� ��dy �� �� �� �� � �:=A% ����BJ(Q%,X%):�F%,Fy%,J%:�oy(Z%!Fu%,Q%,X%):F%=Z%!Jy%:ȕ(Q%<>F%!my%)�(X%<>F%!gl%):F%+=n%:�:Fy%=F%+n%:ȕFy%!u%<>-1:Fy%+=n%:�:Fy%-=n%:�J%=0�n%-1�4:F%!J%=Fy%!J%:�J%:Fy%!u%=-1:?�L(Q%,X%)=�:� �$ݤL(Q%,X%):=Z%!sy%+(Z%!w%*X%)+Q% �$ݤK(Q%,X%):=Z%!cy%+(Z%!w%*X%)+Q% ���oy(A%,B%,C%):�Ql:� �"��g:�oy(Z%!Hl%,Z%!t%,Z%!Ay%):� ����X_:�U%:Du%=11:�Gi%Du%+1:�Ma%� (B$)+2+1:U%=�M(512):U%!0=-1:U%!4=0:U%!8=-16:U%!12=�S(68,(Du%-1)*8*2):U%!16=68+32-16:U%!20=&1700312b:U%!24=Gi%:$Gi%=�H("IB0"):$Ma%="S!"+B$:U%!28=Ma%:U%!32=Du%:ș&400c2,,U%�Zi%:�C(U%,512):� ���T_:W$=v$:t_%=CJ:a_%=a_:m_%=TJ:X_%=eJ:Y_%=x_:f_%=xJ:e_%=w_:oy%=__:k_%=o_:EJ%=VJ:dy%=ci:B_%=Gu:rJ%=Fu:iy%=Sa:o_%=Kl:__%=vl:s%!0=Su:s%!4=ru:s%!8=hi:s%!12=fu:IJ%=f_:TJ%=RJ:tJ%=lJ:FJ%=c_:XJ%=WJ:PJ%=EJ:ll%=Oi:Au%=uJ:Su%=d_:xJ%=Pi:jJ%=Ri:eJ%=Bu:Zu%=Xl �pJ%=Ll:aJ%=ll:� �:��Yy:�N%,G$,gJ%:�T_:N%=�("<Daleks3$Dir>.Choices"):�N%� ��:��:�#N%:� �G�#N%,W$:�#N%,rJ%,iy%,o_%,__%:�#N%,t_%,a_%,m_%:�#N%,B_%:�B_%>b�B_%=1 ˯�#N%,X_%,Y_%:�#N%,dy%:�#N%,oy%,f_%,e_%:�#N%,k_%,EJ%:�#N%,s%!0,s%!4,s%!8,s%!12:�#N%,IJ%,TJ%,tJ%,Zu%:�#N%,FJ%,XJ%,PJ%,ll%:�#N%,Su%,xJ%,Au%:�#N%,jJ%,eJ%:IB#N%,pJ%,aJ%:��:�#N% ��:� �/��o_:�N%:N%=�("<Daleks3$Dir>.Choices"):�N%� ��:��:�#N%:�Q ���#N%,W$:�#N%,rJ%,iy%,o_%,__%:�#N%,t_%,a_%,m_%:�#N%,B_%:�#N%,X_%,Y_%:�#N%,dy%:�#N%,oy%,f_%,e_%:�#N%,k_%,EJ%:�#N%,s%!0,s%!4,s%!8,s%!12:�#N%,IJ%,TJ%,tJ%,Zu%:�#N%,FJ%,XJ%,PJ%,ll%:�#N%,Su%,xJ%,Au%:�#N%,jJ%,eJ%:�#N%,pJ%,aJ%:��:�#N% ��:� ���my:ȎZ%!q%� ��_,Wy:�Z%!L_%� �Z%!L_%=� ��:�a(23,�H("Demo"))=1� �Z%!Nl%=�:Z%!L_%=�:�P:�Ly:�V �� �� �:�7 ��:� ���Ly:ȎZ%!Vu%� ��_l:�Ny(�My) ��GJ:�Ny(�By) �:�Ny(Z%!Vu%) ��:� ߡݤMy:�Q%,X%,K%,F%:K%=0:F%=Z%!Jy%:ȕF%!u%<>-1:Q%+=F%!Sn%:X%+=F%!Mn%:K%+=1:F%+=n%:�:Q%=(Q%/K%)+0.5:X%=(X%/K%)+0.5:Q%=�(Q%-Z%!t%):X%=�(X%-Z%!Ay%):=C%(Q%+1,X%+1) �ݤBy:�Q%,X%,K%,D%,F%,Bl%,Gl%:D%=Z%!i_%:Q%=Z%!t%:X%=Z%!Ay%:K%=&7fffffff:ȕ!D%>=0:Bl%=!D%:Gl%=D%!4:F%=(Q%-Bl%)*(Q%-Bl%)+(X%-Gl%)*(X%-Gl%):�F%<K%� �Ty%=Bl%:Iy%=Gl%:K%=F% ��:D%+=8:�:�K%=&7fffffff� �BTy%=Z%!w%�2:Iy%=Z%!x%�2:K%=(Q%-Ty%)*(Q%-Ty%)+(X%-Iy%)*(X%-Iy%) � �:�K%<=2� �F%=0:Z%!Vu%=F% �0�:Q%=�(Ty%-Q%):X%=�(Iy%-X%):F%=C%(Q%+1,X%+1) � �:=F% �6��Ny(k%):�Q%,X%,J%,Fy%:Q%=Z%!t%:X%=Z%!Ay%:�o(k%)� �)Fy%=�:J%=1:ȕJ%<9�Fy%:�o((k%+J%)�9)� � J%+=1 ��:Fy%=� ��:�:�J%>=9� ��Z%!V_%>0� ��Oy � �:�vy �� � �:k%=(k%+J%)�9:Z%!Ny%=W%(k%) �� ��:Z%!Ny%=W%(k%) ��:� ��ݤo(k%):�c%,f%,Q%,X%,M%,N%,E%,y%:Q%=Z%!t%+J%(k%,0):X%=Z%!Ay%+J%(k%,1):M%=Z%!w%:N%=Z%!x%:y%=(X%>=0)�(X%<N%)�(Q%<M%)�(Q%>=0):y%=y%�(?�K(Q%,X%)=0):�y%� �)�f%=-1�+1:�((X%+f%)>=0)�((X%+f%)<N%)� �9E%=�L(Q%,X%+f%):�c%=-1�+1:�((Q%+c%)>=0)�((Q%+c%)<M%)� ��(E%?c%)<>0� �y%=�:c%=+1:f%=+1 �� � �:�c% � �:�f% � �:=(y%=0) #� ݤv=16 #�<��qJ(hi%,na%)�:��:�A("%LibHandler: hard_initialise") #��v<na%� #��0,"LibHandler too old" #� �:�hi%<1� #�/�1,"LibHandler: bad max librarys parameter" #�d�:Cl%=hi%:�M$(Cl%-1):�Q%(Cl%-1):_i%=0:�n_%256:Ml%=40:Py%=0:KJ%=12:Ka%=�:�Z$(Ml%-1):nJ%=�:LJ%=�:� #�F��S(F$,ka%)�Uu%,J%,U$,s$:�:��:�A("%.LibHandler: load_library") #�EJ%=0:Uu%=�:U$=�F$,1+�F$,".")):ȕJ%<_i%�Uu%:Uu%=(U$<>M$(J%)):�Uu%� #� J%+=1 #� �:�:�Uu%� #��J%=Cl%� #�/�0,"LibHandler: Too many librarys to load!" #�O�:M$(J%)=U$:s$="'"+F$+"' does not have a FN_":�:��:�A(s$+U$+"_version") #�RQ%(J%)=�("FN_"+U$+"_version"):��:_i%+=1:�:��:�A(s$+"_hard_initialise_"+U$) #�!�("FN_hard_initialise_"+U$)� #�4�1,"Library file '"+F$+"'s hard init'ion failed" #��:�� #��:�ka%>Q%(J%)� #�&�1,"Library file '"+F$+"' too old" #��:� #���A(P$)�nJ%� #� �LJ%� #���,�$+" ["+Þ+"]." #� ̅�,�$ #�� #���Ka%� #� �Py%=Ml%� #�&A(Ml%-1)="Errors too deep!!!!!":�x #��:��P$,2)=": "� #�P$=�P$,�(P$)-2) #��:�LJ%� #�Z$(Py%)=�$ #���Py%=0� #�MZ$(Py%)="Error `"+�$+"' (line ":Z$(Py%)+=�(�)+") in ":Z$(Py%)+="`"+P$+"'" $ �Z$(Py%)="`"+P$+"'" $� $�:Py%+=1:��,"" $� $�:� $ ��x�M_%,m$:�:�:�"::"+�(�):� $ �nJ%� $ �LJ%� $ �F(�,�$+" ["+�(�)+"]."):�B:� $ ��F(�,�$):�=p_%� $ �B:� $� $� $ ��KJ%=-2� $�Py%>0� $ ���,Z$(0) $̅��,�$ $�:� $�:�KJ%=-3� $9$n_%="TASK":ș&400c0,200,!n_%,"LibHandler"+�(0):�Py%� $�M_%=0�Py%-1:�M_%<(Py%-1)� $�Ay(Z$(M_%)+" in") $��Ay(Z$(M_%)) $ �:�M_% $��Ay(�$+" (line "+�(�)+")") $�:ș&600dd:� $�:�KJ%>=0� $�KJ% $(�:�"An error has occured...":�:�Py%� $<�M_%=0�Py%-1:�((7-(M_%<<1))�6)+1:�Z$(M_%);:�M_%<(Py%-1)� $�" in "; $ �:�M_% $ ��$;" (line ";�(�);")" $!�:�:�7:� $"�:� $#��Ay(I$)�mu%:mu%=20+(�(I$)+5)�-4:!n_%=mu%:n_%!16=&804c0:$(n_%+20)=I$:n_%?(20+�(I$))=10:n_%?(21+�(I$))=0:ș&600e7,17,n_%,0:� $$ݤ_CAsm_version=10 $%Aݤ_hard_initialise_CAsm�:��:�A("%.CAsm: hard_initialise") $&��S("<BasicV_Assembler$Lib>.Misc",27):ș5,"RMEnsure CAssembler 0.03 RMLoad System:Modules.CAssembler":ș5,"If ""<CAsm$Dir>""="""" Then Set CAsm$Dir <d>.Library.CAsm":CAsmLibrary_stdlib=1:CAsmLibrary_stdio=2:CAsmLibrary_string=3 $'�DO=4:CAsmLibrary_imath=5:z`=6:LB=7:CAsmLibrary_wimp=8:aO=9:CAsmLibrary_message=10:u`=11:CAsmLibrary_debug=12:CAsmLibrary_RelObj=13:jn=14:lo=15:WO=16:wB=17:aa=18:g`=19:LO=20:mB=21:sO=22:D`=23:`o=24:nn=25 $(�ro=26:B_=26:ya=0:ma=1:Fn=2:sa=3:K=4:h=5:Ti=6:Tl=7:Co=8:XJ=9:ny=10:V=11:E_=12:A=13:Z=14:Nk=15:Tu=&6d734143:uy%=0:ny%=13:A_=0:Py=0:X_=10*1024:ju=X_+(1*1024):Pi%=�:Hl=�:=0 $)]��Hy(X$)�D%,jy%,hy%,L%,O%,P%,V%,F$:�:��:ș&400ec,`%,-1:�A("%.CAsm: ClaimCAsmLibrary") $*O`%=�-32768:ș&400ec,`%+32768,-1�L%:L%+=32768:O%=`%+32768:P%=0:V%=14:�O%=L%� $+/�1,"Not enough memory to start application" $,�:�uy%<>0� $-2�1,"Only one call to ClaimCAsmLibrary allowed" $."�:�Yl%B_*8:�S$(B_):�h_DEFAULT $/eȕX$<>"":F$=�X$,�X$,",")-1):�:��:�A("Attempted to claim the non-existent library: `"+F$+"'!") $0Jjy%=�("CAsmLibrary_"+F$):��:hy%=Yl%:D%=hy%+(uy%*8):ȕD%>hy%:�!hy%=jy%� $1hy%=D%+1 $2�hy%+=8 $3�:�:�hy%=D%� $4 �uy%>=B_� $5-�1,"Too many librarys have been claimed!" $6?�:!D%=jy%:S$(jy%)=F$:uy%+=1:O%=`%+32768:P%=0:�J("FNh_"+F$) $7F�:X$=�X$,�(F$)+2):ȕ�(X$)=�(" "):X$=�X$,2):�:�:ș&400ec,`%,-1:��:� $8>��ky�K%,D%,J%,y%:�:��:�A("%.CAsm: AssembleCAsmTables") $9�uy%=0� $:�h_DEFAULT $;�:y%=Yl%:J%=uy%:�(V%�2)=0� $<*�D%uy%*4:ș79,uy%,D%+&c0000000,3,,y%,8 $=��:[OPTV%:.JJ DCDTu:DCDEu:]:ȕJ%>0:[OPTV%:DCD!y%:DCDy%!4:]:y%+=8:J%-=1:�:[OPTV%:DCD0:]:[OPTV%:ALIGN:.C_:]:D%=P%:�jumpblock_DEFAULT $>HEu=(P%-D%)>>2:J%=uy%:y%=Yl%:ȕJ%>0:D%=P%:�J("FNjumpblock_"+S$(!y%)) $?#y%!4=(P%-D%)>>2:y%+=8:J%-=1:�:� $@3��Nu�C:�:��:�A("%.CAsm: AssembleCAsmBasic") $A�[OPTV%:ALIGN:.HJ:STMFD(A)!,{4-5,Z}:BL P%+(13<<2):.C DCDJJ-C:DCDC_-C:DCDA_-C:DCDPy:DCDX_:.xy:DCD0:DCD0:DCD0:DCD0:LDR A,xy:LDMFD(A)!,{ny,V,E_,Z} $B�MOVpc,Z:BIC 5,Z,#&fc000003:LDMIA5,{0-4}:ADD0,0,5:ADD1,1,5:ADD2,2,5:MOV5,#0:SWI &fcb80:STRvc0,xy+(1<<2):STRvc1,xy+(3<<2):LDMFD(A)!,{4-5,pc}:.G_:�Z:MOV2,Z:MOV1,A:MOV0,ny:SWI &fcb81:MOVvc1,#0 $CcSTRvc1,xy+(3<<2):MOVpc,2:MOV13,12:]:A_=P%:�M:�hy:Py=(Py+3)�-4:P%+=Py-1:O%+=Py-1:[OPTV%:DCB0:]:� $D6��OJ�:��:�A("%.CAsm: AssembleCAsmApplication") $E)�P%<>32768��1,"Expect P% to be &8000" $Fw[OPTV%:ADR4,jy:MOV5,#Ai:SWI &fcb80:�l("vc",2,gO):Bvc cl:SWI 43:.jy:DCDJJ-jy:DCDC_-jy:DCDA_-jy:DCDPy:DCDX_:DCDju:]:� $G4ݤZ�:��:�A("%.CAsm: StartCAssemblerSession") $Hu[OPTV%:STMFD(A)!,{ny,V,E_,Z}:MOV V,pc:�l("",Z,xy):STR A,[Z],#4:LDMIA(Z)!,{ny,E_,A}:� V,V,#&fc000003:�R Z,Z,V:]:=0 $I1ݤN(A%)�M$:M$="":ȕ?A%:M$+=�(?A%):A%+=1:�:=M$ $JAݤxy(A%,B%)�M$:M$="":ȕB%>=0�?A%:M$+=�(?A%):A%+=1:B%-=1:�:=M$ $K!��O(A%,M$)$A%=M$:A%?�(M$)=0:� $L��M_(A%,M$,B%)�(M$)<=B%� $M($A%=�M$,B%-1):A%?(B%-1)=�(�M$,B%,1)) $N�$A%=M$:A%?�(M$)=0 $O�:� $PݤJ(f$)�:��:�nJ $Q =�(f$) $R ��nJ�Pi%� $S"��,�$+" (evaluating `"+f$+"')" $T ̅�,�$ $U�:� $V9��su(gu%,WJ%,ri%)�:��:�A("%.CAsm: assemble_CAsm") $WN�S("<BasicV$Lib>.Heap",8):�S("<BasicV$Lib>.Message",1):�sy(gu%,WJ%,ri%,0) $X�HJ:��G_:�x $Y� $Z ��M�V%�4� $[ș&606c4,(O%-yy%)*100�H% $\�ș&606c4,(P%-yy%)*100�H% $]�:� $^yݤsy(gu%,WJ%,ri%,fJ%)�L%,O%,P%,V%,Ai%,H%:�O:�go,L_,VB,j_,to,DB:�bl,c,Ba:�:��:�A("%.CAsm: assemble_CAsm_External") $_�fJ%=0� $`:�S("<BasicV$Lib>.Heap",8):�S("<BasicV$Lib>.Message",1) $a��:�yy%gu%:O=A:go=1<<31:L_=1<<30:VB=1<<29:j_=1<<28:to=1<<27:DB=1<<26:bl=1<<17:c=256:Ba=c+bl:ș&606c0:�:��:ș&606c1:�A("hourglass") $b#H%=gu%:L%=yy%+gu%:�WJ%<>0�WJ%=4 $c"�V%=8+WJ%�10+WJ%�2:�(V%�4)<>0� $dO%=yy%:�fJ%=1� $eP%=32768 $f �P%=0 $g� $h�O%=0:P%=yy% $i�:ȎfJ%� $j4�1:�M:�OJ:�M:�k:�M:�ky:A_=P%:�M:�hy:Py=(Py+3)�-4 $k(�0:�M:�k:�M:�Q_:�M:�gJ:�M:�ky:�M:�Nu $l�2:�M:�k $m�:�V%�4�L%=O%�L%=P% $n�(V%�2)=0� $oș&dcb93,0,yy%,L%-yy% $p"�:H%=L%-yy%:�V%:ș&606c1:�WJ%� $q�fJ%=0� $rHJ+=yy%:G_+=yy% $s� $t�:�Hl�fJ%<>2� $u �WJ%� $vH%=C_:�fJ%�H%-=32768 $w7̅1,"CAsmTablesInBSS TRUE without offset assembly?" $x� $y�:�ri%� $z`�"Assembled to &";~H%;" = ";((H%*10+512)�1024)/10;"K":�"Could assemble with ";gu%-H%;" less" ${ �:=H% $|ݤ_Sprite_IO_version=6 $}Uݤ_hard_initialise_Sprite_IO�:��:�A("%.Sprite_IO: hard_initialise_Sprite_IO") $~[�S("<BasicV$Lib>.ModeInfo",5):�S("<BasicV$Lib>.Heap",1):�S("<BasicV$Lib>.file_io",9):=0 $ݤU(ai%)=(ai%�1)<>0 $�>ݤny(ay%,M%,N%,yi%,Jn%)ș&dcb8e,3,ay%,M%,N%,yi%,Jn%�M%:=M% $�V��iJ(fa%,ja%,�yi%,�an%)�A%,B%,C%:A%=fa%:B%=ja%<>0:C%=�:A%=�(Gl):yi%=!A%:an%=A%!4:� $�/��Mu�s:�:��:�A("%.Sprite_IO: assemble") $�x[OPTV%:ALIGN:.s DCD0:DCD0:.Gl:�Z:STMFD(A)!,{1-12,Z}:BL kJ:ADRvc Z,s:STMvcIA Z,{0-1}:MOVvc0,Z:LDMFD(A)!,{1-12,pc}:]:� $�ݤ_Misc_version=34 $�Pݤ_hard_initialise_Misc�J%,a%,K%:�:��:�A("%.Misc: hard_initialise_Misc") $�(�v<12��1,"Needs newer %.LibHandler" $��si%=13:t$=�(si%):Oa%=10:r$=�(Oa%):h$=t$+r$:cn=256:�U%(15,1):a%=255:K%=3:�J%=0�15:U%(J%,0)=a%:U%(J%,1)=K%:a%=�h(a%,2):K%=�h(K%,2):�J%:b$="":Cn%=100:On%=&7fff00:ca%=�:An%=0:�bu%16:=0 $�;ݤl(J$,ZJ%,Wl%)�Nu%,fl%,Ti%,zl%,wl%:ly%=�t(J$):�V%�2=0� $�[OPTV%:DCD0:DCD0:] $�6�Nu%=Wl%-P%-8:�(Nu%)>65535��1,"adrl out of range" $�,Ti%=�(Nu%)�255:fl%=�(Nu%)�65280:�Nu%>=0� $�Tzl%=ly%�(&28f0000+(ZJ%<<12)+Ti%):wl%=ly%�(&2800c00+(ZJ%<<16)+(ZJ%<<12)+(fl%>>8)) $�U�zl%=ly%�(&24f0000+(ZJ%<<12)+Ti%):wl%=ly%�(&2400c00+(ZJ%<<16)+(ZJ%<<12)+(fl%>>8)) $��:[OPTV%:DCDzl%:DCDwl%:] $��:=0 $�)ݤh(Q%,Cu%)�:��:�A("%.Misc: rol") $�;Cu%=Cu%�32:=(Q%<<Cu%)�(((�((-1)>>>Cu%))�Q%)>>>(32-Cu%)) $�P��sJ(V$)�ti%,bi%,wa%:�:��:�A("%.Misc: Define_Local_Variables(`"+V$+"')") $�#ti%=P%:bi%=O%:wa%=V%:�(V%�4)=0� $� O%=P% $�P�:P%=0:V%=V%�6:P%=�("FN_Declare_Local_Variables_"+V$):P%=ti%:O%=bi%:V%=wa%:� $�4��m_(J$,K%)�D%,ly%:�:��:�A("%.Misc: PROCcc") $� ly%=�t(J$):�V%�4�D%=O%�D%=P% $�1�J%=1�K%:D%-=4:!D%=((!D%)�&fffffff)+ly%:�J%:� $�+ݤt(J$)�ly%:�:��:�A("%.Misc: FNcc") $��J$=""�J$=" "�=14<<28 $��J$="lo"�=3<<28 $��J$="hs"�=2<<28 $�Hly%=�"eqnecsccmiplvsvchilsgeltgtlealnv",J$):�ly%�2�=((ly%-1)>>1)<<28 $�0�1,"Unrecognised condition code `"+J$+"'":=0 $�/ݤyy(Q%,�A%())�:��:�A("%.Misc: armimm") $�Jș&dcb92,Q%,bu%�Q%:A%(0)=!bu%:A%(1)=bu%!4:A%(2)=bu%!8:A%(3)=bu%!12:=Q% $�MݤZy(J$,a%,K%,Q%,ei%)�A%(),J%,b%:�:��:�A("%.Misc: SubtractImmediate") $�*�A%(4):J%=�yy(�(Q%),A%()):b%=J%:�Q%<0� $�MȕJ%>1:J%-=1:[OPTV%:ADD a%,K%,#A%(J%):]:K%=a%:�:[OPTV%:ADD a%,K%,#A%(0):] $�N�ȕJ%>1:J%-=1:[OPTV%:SUB a%,K%,#A%(J%):]:K%=a%:�:[OPTV%:SUB a%,K%,#A%(0):] $��:�ei%� $��V%�4�a%=O%�a%=P% $�a%!-4+=1<<20 $��:�m_(J$,b%):=0 $�MݤF(J$,ZJ%,Wl%)Wl%-=P%+8:�Wl%>=0��1,"invalid call to adrf(), label ahead" $�=�Zy(J$,ZJ%,15,-Wl%,ei%) $�ݤty(K%)P%+=K%:O%+=K%:=0 $�ݤ_StickyWin_version=1 $�Kݤ_hard_initialise_StickyWin�:��:�A("%.StickyWin: hard_initialise") $�l_=36:=0 $���Zu(Zy%)Zy%!32=0:� $�(��ny(Uy%,Zy%,ma%)!Zy%=Uy%:�Zy%!32=0� $�ș&400cb,,Zy% $� �:Zy%!28=ma%:ș&400c5,,Zy%:� $���n(Uy%,Zy%)�Uy%>0� $��Cy(Uy%,Zy%):ș&400c6,,Zy% $��:� $���Cy(Uy%,Zy%)�Uy%>0� $�!Zy%=Uy%:ș&400cb,,Zy% $��:� $�ݤ_Template_version=4 $�Nݤ_hard_initialise_Template�Xy%:�:��:�A("%.Template: hard_initialise") $�Tu%=�:=0 $�O��u_�zy%,Xy%,R%,U%,Q$,Ol%:Q$=�Iy("<"+B$+"$Dir>.Sprites"):zy%=�b(Q$):�zy%>0� $�X�X(v%,zy%+16):v%!0=zy%+16:v%!4=0:v%!8=16:v%!12=16:ș&2002e,522,v%,Q$�Xy%;R%:�U(R%)� $�+�U("Reason","Sprites"):�o(Xy%):�L(4):�B $�� $� �v%=0 $��:�SJ("Templates"):�Tu%� $� �v%>0� $� �q("ProgInfo",v%,"ProgInfo") $�!��q("ProgInfo",+1,"ProgInfo") $��:N_%=0 $���v%>0� $�N_%=�R("ProgInfo",Ol%,v%) $��N_%=�R("ProgInfo",Ol%,+1) $�� $�"�:Ui%=�R("Query",Ol%,+1):�__:� $�\��SJ(_$)�ji%,jy%,zy%,Xy%,R%,G%:�Na%,Q$,UJ%,du%:Q$="<"+B$+"$Dir>."+_$:zy%=�b(Q$):�zy%<=0� $�2�U("Reason",_$):�U("Sys","Not found"):�L(4):�B $�Q�:�X(jy%,zy%):�X(UJ%,zy%+m):du%=UJ%+AJ:Na%=UJ%+m:ș&600d9,,Q$�Xy%;R%:�U(R%)� $�6�U("Reason","Templates"):�o(Xy%):�L(4):ș&600da:�B $��:�:��:�gu $�XR_%=0:�du%!0=�("*"):ș&600db,,Na%,jy%,jy%+zy%,-1,du%,R_%�Xy%,,ji%,,,,R_%;R%:�U(R%)� $��f(Xy%):ș&600da:�B $��:�R_%� $�&�R%=0�11:�du%?R%=13�du%?R%=0:R%=12 $�3�R%:UJ%!ou=ji%-jy%:UJ%!su=jy%:G%=�r(UJ%):�G%=0� $��L(16):ș&600da:�B $��:G%!wy=!qu%:!qu%=G% $�*�:�R_%=0:��:ș&400da:�W(UJ%):�W(jy%):� $�!��guș&600da:�A("Template"):� $�&ݤR(C$,ta%,hu%)=�Ny(C$,ta%,hu%,"") $�2ݤNy(C$,ta%,hu%,P$)�G%,qa%,N%:G%=�X(C$):�G%=0� $��B $�"�:qa%=G%+m:qa%!64=hu%:�P$<>""� $�N%=�J("FN"+P$) $��:�O(G%,N%)� $��B $��:�s(G%):=N% $�)��q(C$,hu%,P$)�G%,M%:G%=�X(C$):�G%=0� $��B $� �:M%=G%+m:M%!64=hu%:�P$<>""� $� M%=�J("FN"+P$+"("+�(M%)+")") $��:� $�&ݤE(C$,hu%)�G%,M%:G%=�X(C$):�G%=0� $��B $��:M%=G%+m:M%!64=hu%:=0 $�$ݤD(C$,�Uy%)�G%,T%:T%=�:�Uy%<=0� $�G%=�X(C$):�G%� $�T%=�O(G%,Uy%):�T%=�� $� �s(G%) $�� $� �T%=� $�� $� �:=T% $�#ݤg(C$,c%,f%)�G%:G%=�X(C$):�G%� $�G%=�cy(G%,c%,f%) $� �:=G% $�'ݤqy(C$,c%,f%,Y$)�G%:G%=�X(C$):�G%� $�G%=�hy(G%,c%,f%,Y$) $� �:=G% $�IݤVy(C$)�G%,_$,Y%:G%=!qu%:Y%=�:ȕG%�(�Y%):Y%=(�xy(G%+AJ,12)=C$):�Y%� $�G%=G%!wy $��:�:=G% $� ݤX(C$)�G%:G%=�Vy(C$):�G%=0� $��U("Reason",C$):�L(3) $� �:=G% $�4ݤO(G%,�Uy%)ș&600c1,,G%+m�Uy%;G%:G%=�U(G%):�G%� $��f(Uy%):Uy%=0 $� �:=G% % ��`y(G%,�Uy%)G%=�O(G%,Uy%):� %Aݤcy(G%,c%,f%)�N%,M%,R%:N%=0:R%=G%!by:G%!by+=1:G%=�r(G%):�G%� %AM%=G%+m:�Dy(M%,R%,c%):�iy(M%+4,R%,f%):�`y(G%,N%):�s(G%):G%=N% % �:=G% %Dݤhy(G%,c%,f%,Y$)�N%,M%,R%:N%=0:R%=G%!by:G%!by+=1:G%=�r(G%):�G%� %8M%=G%+m:�Dy(M%,R%,c%):�iy(M%+4,R%,f%):�M%!56�(1<<8)� %�M_(M%!72,Y$,M%!80) %��M_(M%+72,Y$,12) %�:�`y(G%,N%):�s(G%):G%=N% % �:=G% % :��Dy(M%,R%,F%)�N%,_%:_%=Yu%<<Sy%:N%=M%!8-M%!0:�_%<=N%� % M%!0=0 %�_%=_%-N%:�F%<0� % F%=_%+(F%�_%) %�:M%!0=(M%!0+F%*R%)�_% %�:M%!8=M%!0+N%:� %A��iy(M%,R%,F%)�N%,_%:_%=(w_%<<m%)-96:N%=M%!8-M%!0+48:�_%<=N%� %M%!8=(w_%<<m%)-N% %�_%=_%-N%:�F%<0� %F%=_%+(F%�_%) %:�:M%!8=(w_%<<m%)-M%!8:M%!8=(w_%<<m%)-((M%!8+F%*R%)�_%) %�:M%!0=M%!8-N%:� %;��s(G%)�D%:D%=qu%:ȕ!D%<>0�!D%<>G%:D%=!D%+wy:�:�!D%=G%� %!D%=G%!wy:G%!wy=0:�W(G%) %�:� %ݤvy(A%)=�(Hi) %ݤr(A%)A%=�vy(A%):�A%=0� % �L(16) % �:=A% %!��y_�(V%�2)=0��sJ("Template") % [OPTV%:ALIGN:.Hi:�Z:B pl:]:� %@ݤ_Declare_Local_Variables_Template�:��:�A("@.Template") % [�qu%4:!qu%=0:P%=0:[OPTV%:.wy DCD0:.by DCD0:.su DCD0:.ou DCD0:.AJ DCD0:DCD0:DCD0:.m:]:=0 %!��YJ:�d%,i%,S$:��:�+0:�Tu%� %"(d%=!(�X("ProgInfo")+m+88+(16<<5)+20) %#�:d%=�wy(N_%,16) %$J�:�S$:i%=�(S$):S$=�S$,2):ȕS$<>"":?d%=�(S$)�i%:S$=�S$,2):d%+=1:�:?d%=0 %%8�"҂��������",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, %&� %'"��k:�:��:�A("@.Assembler") %(�(V%�2)=0� %)�rJ %*��:[OPTV%:ALIGN:.u_ DCD0:.Nu LDR0,u_:MOVSpc,Z:.vu:]:P%+=s_%:O%+=s_%:[OPTV%:]:�M:�eJ:�M:�FJ:�M:�HJ:�M:�a_:�M:�NJ:�M:�ZJ:�M:�V_:�M:�au:�M:�MJ:�M:�lJ:�M:�xJ:�M:�RJ:�M:�qu:�M:�cJ:�M:�k_:�M:�Mu:�M:�y_:� %+ ��hy:� %,[��ZJ:[OPTV%:ALIGN:.xy%DCD0:.S_ DCD0:ALIGN:.r:LDR12,S_:MOVSpc,Z:.U`:STR0,S_:MOVSpc,Z:]:� %-O��a_:�u,M,S,U,D,I,my,X,N,L:�ni,My,sy,Hk:�h_,QJ:�:��:�A("Show_Movement") %.�u=2:M=3:S=4:U=6:D=7:I=8:my=9:X=10:N=U:L=Z:h_=384:QJ=352:[OPTV%:ALIGN:.Zu:�Z:STMFD(A)!,{12,Z}:BL r:LDR0,[12,#Yy%]:ADD0,0,#16*c_%:STR0,[12,#Yy%]:BL tJ:LDR0,[12,#Yy%]:LDR1,[12,#Qy%]:CMP0,1:MVNeq0,#�(-1):MOVne0,#0:LDMFD(A)!,{12,pc}^:.tJ %/�STMFD(A)!,{4-9,Z}:SUB O,O,#h_:LDR my,[12,#Yy%]:LDR0,[12,#z%]:MOV1,#0:MOV2,#&f0000000:MOV3,#&70000000:MOV4,#0:STMIA O,{0,1-4}:MOV1,O:SWI &400c9:TEQ0,#0:Beq Fa:BL Qy:ADD D,12,#ey%:LDMIA D,{D,I}:LDR X,[12,#Jy%]:ADD M,12,#JJ%:LDMIA M,{M,S} %0�LDR U,[12,#Ny%]:TEQ U,#0:ADDne M,D,M:SUBne S,I,S:ADDne u,my,U,LSL#iJ%:LDMneIB u,{0,1,u}:ADDne M,M,0:ADDne S,S,1:MOVeq u,#0:MOV0,#34:�R0,0,#512:LDR1,[12,#l%]:MOV5,#3:ADD U,O,#QJ:STMIA U,{0,1,M,S,u,X}:.ni:TEQ u,#0:SWIne 46:.sy:LDMIA X,{M,S,U,L} %1�CMN L,#1:Beq ql:ADD X,X,#n%:ADD M,D,M:SUB S,I,S:ADD u,my,U,LSL#iJ%:LDMIA u,{u,N,L}:ADD M,M,N:ADD S,S,L:SWI 46:B sy:.ql:MOV1,O:SWI &400ca:TEQ0,#0:ADDne U,O,#QJ:LDMneIA U,{0,1,M,S,u,X}:Bne ni:.Fa:LDR1,[12,#Qy%]:LDR0,[12,#Qu%]:ADD0,1,0,LSL#4+iJ% %2�TEQ0,my:Bne xl:LDR5,[12,#Jy%]:.C LDR0,[5,#u%]:CMN0,#1:Beq sl:�S0,0,#sJ%�z_%:ADDeq5,5,#n%:Beq C:.To:LDR0,[12,#t%]:LDR1,[12,#Ay%]:LDR2,[12,#w%]:MLA 0,1,2,0:LDR1,[12,#sy%]:LDRB1,[1,0]:TEQ1,#0:LDReq1,[12,#cy%]:LDReqB1,[1,0]:TEQeq1,#0:Bne Si %3�LDR0,[12,#C_%]:ADD0,0,#10:BL s_:.Si:LDR0,[5,#u%]:�0,0,#z_%�sJ%:CMP0,#z_%:Bne ei:LDR0,[12,#Fu%]:ADD1,5,#my%:LDMIA1,{1-2}:BL zJ:MOV0,#z_%:.ei:CMP0,#z_%�sJ%:Bne bJ:ADD1,5,#my%:LDMIA1,{1-2}:LDR0,[12,#ou%]:MVN3,#�(-1):STMIA0,{1-2,3}:ADD0,0,#8 %4�STR0,[12,#ou%]:LDR0,[12,#ql%]:BL zJ:.bJ:MOV2,5:.`J ADD2,2,#n%:LDR3,[2,#u%]:CMN3,#1:Bne `J:SUB2,2,5:ADD1,5,#n%:MOV0,5:BL Yu:B C:.sl:BL O_:BL i_:.xl:ADD O,O,#h_:LDMFD(A)!,{4-9,pc}^:]:� %5���NJ:�M,S,U,e,By,w,f,X,N,L:�g,Fy,Y,a,p:�Vk,sy,Di:M=1:S=2:U=3:w=4:f=5:e=6:X=7:By=8:Y=9:a=11:p=Z:g=Y:Fy=a:N=0:L=U:[OPTV%:ALIGN:.t_:�Z:STMFD(A)!,{12,Z}:BL r:BL O_:LDMFD(A)!,{12,pc}^:ALIGN:.O_:STMFD(A)!,{4-9,Z}:LDR0,[12,#Qy%]:STR0,[12,#Yy%] %6�LDR X,[12,#Jy%]:ADD g,12,#Cy%:LDMIA g,{g,Fy}:ADD N,12,#vu%:LDMIA N,{N,L}:ADD w,12,#t%:LDMIA w,{w,f}:MLA M,w,g,N:MLA S,f,Fy,L:ADD Z,12,#JJ%:STMIA Z,{M,S}:.sy:LDR M,[X,#u%]:CMN M,#1:ADDne w,X,#my%:LDMneIA w,{w,f}:MLAne M,w,g,N:MLAne S,f,Fy,L %7�STMneIA X,{M,S}:ADDne X,X,#n%:Bne sy:LDMFD(A)!,{4-9,pc}^:ALIGN:.I_:�Z:STMFD(A)!,{4-9,12,Z}:BL r:LDR e,[12,#sy%]:LDR By,[12,#w%]:LDR2,[12,#x%]:MUL 2,By,2:MOV1,#0:MOV0,e:BL ty:LDR X,[12,#Jy%]:ADD p,12,#t%:LDMIA p,{Y,a}:LDR U,[12,#Ny%]:TST U,#1 %8�ADDne Y,Y,#1:TST U,#2:SUBne Y,Y,#1:TST U,#8:SUBne a,a,#1:TST U,#4:ADDne a,a,#1:STMIA p,{Y,a}:LDR p,[12,#cy%]:.sy:LDR M,[X,#u%]:CMN M,#1:Beq Ui:ADD M,X,#my%:LDMIA M,{w,f}:CMP Y,w:SUBlt w,w,#1:MOVlt U,#2:MOVeq U,#0:MOVgt U,#1:ADDgt w,w,#1:CMP a,f %9�SUBlt f,f,#1:�Rlt U,U,#8:�Rgt U,U,#4:ADDgt f,f,#1:STR U,[X,#Wi%]:STMIA M,{w,f}:MLA U,By,f,w:LDRB0,[e,U]:TEQ0,#0:Bne Il:LDRB0,[p,U]:�S0,0,#255:Beq dl:STRB0,[e,U]:.C ADD X,X,#n%:B sy:.Il:MOV0,#0:STRB0,[e,U]:MOV0,#255:STRB0,[p,U]:LDR0,[X,#u%] %:��R0,0,#z_%:�R0,0,#sJ%:STR0,[X,#u%]:LDR0,[12,#Jy%]:.Di:ADD M,0,#my%:LDMIA M,{M,S}:TEQ M,w:TEQeq S,f:ADDne0,0,#n%:Bne Di:LDR M,[0,#u%]:�R M,M,#sJ%:STR M,[0,#u%]:B C:.dl:LDR M,[X,#u%]:�R M,M,#z_%:STR M,[X,#u%]:B C:.Ui:LDMFD(A)!,{4-9,12,pc}^:]:� %;���lJ:[OPTV%:ALIGN:.Zi:�Z:STMFD(A)!,{4-9,12,Z}:BL r:SUB A,A,#512:LDR0,[12,#z%]:MOV1,A:MOV2,#0:MOV3,#&f0000000:MOV4,#&70000000:MOV5,#0:STMIA1,{0,2-5}:SWI &400c9:BL Qy:.C TEQ0,#0:BLne m_:BLne wJ:MOVne1,A:SWIne &400ca:Bne C:ADD A,A,#512 %<LDMFD(A)!,{4-9,12,pc}^:]:� %=���k_:[OPTV%:ALIGN:.Ql:.zJ:STMFD(A)!,{4-9,12,Z}:SUB A,A,#512:BL r:ADD3,12,#vu%:LDMIA3,{3,4}:ADD5,12,#Cy%:LDMIA5,{5,6}:MLA 3,1,5,3:MLA 4,2,6,4:MOV2,0:LDR7,[12,#z%]:ADD1,A,#2<<2:STR7,[1]:STR3,[1,#4]:ADD5,3,5:STR5,[1,#12]:BL py:RSB Z,4,#0:SUB Z,Z,0 %>�STR Z,[1,#8]:ADD Z,Z,6:STR Z,[1,#16]:MOV5,#3:MOV0,#34:�R0,0,#512:LDR Z,[12,#l%]:STMIA A,{0,Z}:SWI &400c9:BL Qy:ADD8,12,#ey%:LDMIA8,{8-9}:ADD3,8,3:SUB4,9,4:.C TEQ0,#0:LDMneIA A,{0-1}:SWIne 46:ADDne1,A,#2<<2:SWIne &400ca:Bne C:ADD A,A,#512 %?LDMFD(A)!,{4-9,12,pc}^:]:� %@���cJ:�Fy,g,Y,a,d,n,N,L,By,p_:d=3:n=4:Y=6:a=7:g=8:Fy=9:By=10:p_=11:N=0:L=5:[OPTV%:ALIGN:.U_:STMFD(A)!,{Z,0-12}:SUB A,A,#512:BL r:LDR By,[12,#w%]:LDR p_,[12,#x%]:LDR0,[12,#h_%]:MVN0,0:STR0,[12,#h_%]:ADD Y,12,#t%:LDMIA Y,{Y,a}:ADD g,12,#Cy% %A�LDMIA g,{g,Fy}:ADD d,12,#JJ%:LDMIA d,{d,n}:RSB2,n,#0:BL py:SUB2,2,0:LDR0,[12,#z%]:MOV1,A:STR0,[1]:SUB0,d,g:STR0,[1,#4]:ADD0,d,g,LSL#1:STR0,[1,#12]:SUB0,2,Fy:STR0,[1,#8]:ADD0,2,Fy,LSL#1:STR0,[1,#16]:SWI &400c9:BL Qy:ADD1,12,#ey%:LDMIA1,{1,Z} %B�ADD d,1,d:SUB n,Z,n:.C TEQ0,#0:Beq ti:LDR1,[12,#l%]:�Q(-1,+1,_l%):�Q(0,+1,Ni%):�Q(+1,+1,Li%):�Q(-1,0,cl%):�Q(+1,0,dl%):�Q(-1,-1,Oi%):�Q(0,-1,sl%):�Q(+1,-1,Ii%):MOV1,A:SWI &400ca:B C:.ti:ADD A,A,#512:LDMFD(A)!,{pc,0-12}^:.au:STMFD(A)!,{d,n,Y,a,Z} %C�ADD Y,Y,N:SUB a,a,L:CMP Y,By:CMPlo a,p_:LDMhsFD(A)!,{d,n,Y,a,pc}^:MLA d,g,N,d:MLA n,Fy,L,n:MLA N,a,By,Y:LDR L,[12,#sy%]:LDRB L,[L,N]:TEQ L,#0:LDReq L,[12,#cy%]:LDReqB L,[L,N]:TEQeq L,#0:LDMneFD(A)!,{d,n,Y,a,pc}^:MOV0,#34:�R0,0,#512:MOV5,#3:SWI 46 %DLDMFD(A)!,{d,n,Y,a,pc}^:]:� %EEݤQ(c%,f%,tu%):[OPTV%:�Y(N,c%):�Y(L,f%):LDR2,[12,#tu%]:BL au:]:=0 %FEݤG(c%,f%,tu%):[OPTV%:LDR2,[12,#tu%]:�Y(3,c%):�Y(4,f%):BL ri:]:=0 %GݤY(y%,R%):�R%<0� %H[OPTV%:MVN y%,#�(R%):] %I�:[OPTV%:MOV y%,#R%:] %J�:=0 %K���MJ:[OPTV%:ALIGN:.H_ DCD0:.py LDR0,H_:MOVSpc,Z:.Qy:STMFD(A)!,{0-1,Z}:LDR0,[1,#4]:LDR Z,[1,#20]:SUB0,0,Z:LDR Z,[1,#16]:LDR1,[1,#24]:SUB1,Z,1:LDR Z,H_:SUB1,1,Z:ADD Z,12,#ey%:STMIA Z,{0-1}:LDMFD(A)!,{0-1,pc}^:.LJ:STMFD(A)!,{0,Z}:LDR0,[1,#4] %LrLDR Z,[1,#20]:SUB0,0,Z:STR0,[12,#ey%]:LDR0,[1,#16]:LDR Z,[1,#24]:SUB0,0,Z:STR0,[12,#Ei%]:LDMFD(A)!,{0,pc}^:]:� %M���au:�B,F,G,J,E,T,D,I:�x,v,C:J=11:G=10:F=9:B=8:I=7:D=6:T=5:E=4:[OPTV%:.m_:STMFD(A)!,{Z}:MOV F,1:LDR E,[12,#Cy%]:LDR T,[12,#vy%]:ADD D,12,#ey%:LDMIA D,{D,I}:LDR0,[1,#28]:SUB0,0,D:MOV1,E:BL uy:MOV B,0:LDR0,[F,#36]:SUB0,0,#1:SUB0,0,D:MOV1,E:BL uy %N�MOV G,0:LDR0,[F,#32]:SUB0,0,#1:SUB0,I,0:MOV1,T:BL uy:MOV J,0:LDR0,[F,#40]:SUB0,I,0:MOV1,T:STMFD(A)!,{J}:BL uy:LDMFD(A)!,{J}:MOV F,0:LDR0,[12,#Yy%]:LDR1,[12,#Qy%]:TEQ0,1:LDMeqFD(A)!,{pc}^:SUBS B,B,#2:MOVlt B,#0:SUBS F,F,#2:MOVlt F,#0:ADD G,G,#2 %O�LDR Z,[12,#w%]:CMP G,Z:SUBge G,Z,#1:ADD J,J,#2:LDR Z,[12,#x%]:CMP J,Z:SUBge J,Z,#1:LDMFD(A)!,{pc}^:ALIGN:.wJ:LDR1,[12,#_y%]:SUBS1,1,#1:MOVltSpc,Z:SWI c+18:SWI c+3:LDR0,[12,#Bi%]:SWI 0:LDR0,[12,#Kl%]:CMP0,#0:Blt el:SWI c+23:SWI c+17:SWI c+2:SWI 0 %P�SWI c:SWI c:SWI c:SWI c:SWI c:SWI c:.el:ADDpc,pc,1,LSL#2:MOVSpc,Z:B vJ:B _u:B mi:B zi:B Za:.vJ:STMFD(A)!,{B,F,G,J,Z}:CMP B,#0:MOVle B,#1:SUBS G,G,B:LDMltFD(A)!,{B,F,G,J,pc}^:MLA B,E,B,D:LDR0,[12,#x%]:SUB0,0,#1:CMP J,0:SUBge J,0,#1:SUBS J,J,F %Q�LDMltFD(A)!,{B,F,G,J,pc}^:MLA F,T,F,T:SUB F,I,F:.v MOV Z,B:MOV3,G:.x MOV0,#69:MOV1,Z:MOV2,F:SWI 69:ADD Z,Z,E:SUBS3,3,#1:Bge x:SUB F,F,T:SUBS J,J,#1:Bge v:LDMFD(A)!,{B,F,G,J,pc}^:._u:STMFD(A)!,{B,F,G,J,Z}:SUB G,G,B:MLA B,E,B,D:ADD B,B,E,ASR#1 %R�SUB J,J,F:MUL F,T,F:ADD F,F,T,ASR#1:SUB F,I,F:.v MOV Z,B:MOV3,G:.x MOV0,#69:MOV1,Z:MOV2,F:SWI 69:ADD Z,Z,E:SUBS3,3,#1:Bge x:SUB F,F,T:SUBS J,J,#1:Bge v:LDMFD(A)!,{B,F,G,J,pc}^:.mi:STMFD(A)!,{B,F,G,J,Z}:SUB G,G,B:ADD G,G,#1:MLA B,E,B,D:SUB J,J,F %S�ADD J,J,#1:MUL F,T,F:SUB F,I,F:.v MOV Z,B:MOV3,G:.x MOV0,#69:MOV1,Z:MOV2,F:SWI 69:MOV0,#69:ADD1,Z,E,ASR#1:MOV2,F:SWI 69:MOV0,#69:MOV1,Z:ADD2,F,T,ASR#1:SWI 69:ADD Z,Z,E:SUBS3,3,#1:Bge x:SUB F,F,T:SUBS J,J,#1:Bge v:LDMFD(A)!,{B,F,G,J,pc}^:.zi %T�STMFD(A)!,{B,F,G,J,Z}:SUB G,G,B:ADD G,G,#1:MLA B,E,B,D:SUB J,J,F:MUL F,T,F:ADD J,J,#1:SUB F,I,F:.v MOV Z,B:MOV3,G:.x MOV0,#68:SUB1,Z,#t:SUB2,F,#t:SWI 69:MOV0,#5:ADD1,Z,#t:ADD2,F,#t:SWI 69:MOV0,#68:ADD1,Z,#t:SUB2,F,#t:SWI 69:MOV0,#5:SUB1,Z,#t %U�ADD2,F,#t:SWI 69:ADD Z,Z,E:SUBS3,3,#1:Bge x:SUB F,F,T:SUBS J,J,#1:Bge v:LDMFD(A)!,{B,F,G,J,pc}^:.Za:STMFD(A)!,{B,F,G,J,Z}:SUB G,G,B:ADD G,G,#1:MLA B,E,B,D:SUB J,J,F:MUL F,T,F:ADD J,J,#1:SUB F,I,F:.v MOV Z,B:MOV3,G:.x MOV0,#68:SUB1,Z,#t:MOV2,F:SWI 69 %V�MOV0,#5:ADD1,Z,#t:MOV2,F:SWI 69:MOV0,#68:MOV1,Z:SUB2,F,#t:SWI 69:MOV0,#5:MOV1,Z:ADD2,F,#t:SWI 69:ADD Z,Z,E:SUBS3,3,#1:Bge x:SUB F,F,T:SUBS J,J,#1:Bge v:LDMFD(A)!,{B,F,G,J,pc}^:ALIGN:.il:LDR0,[12,#q%]:TEQ0,#Hy:TEQne0,#R_:MOVeqSpc,Z %W�STMFD(A)!,{D,I,E,T,Z}:ADD0,12,#JJ%:LDMIA0,{0-1}:ADD D,D,0:SUB I,I,1:LDR0,[12,#Yy%]:LDR1,[12,#Ny%]:ADD0,0,1,LSL#iJ%:ADD0,0,#W_%:LDMIA0,{0-1}:ADD D,D,0:ADD I,I,1:�G(0,0,Hl%):LDR0,[12,#h_%]:TEQ0,#0:LDMeqFD(A)!,{D,I,E,T,pc}^:�G(-1,+1,_l%):�G(0,+1,Ni%) %X�G(+1,+1,Li%):�G(-1,0,cl%):�G(+1,0,dl%):�G(-1,-1,Oi%):�G(0,-1,sl%):�G(+1,-1,Ii%):LDMFD(A)!,{D,I,E,T,pc}^:.ri:ADD0,12,#t%:LDMIA0,{0-1}:ADD0,0,3:SUB1,1,4:CMP0,B:CMPge G,0:CMPge1,F:CMPge J,1:MOVltSpc,Z:LDR5,[12,#w%]:MLA 5,1,5,0:LDR0,[12,#sy%] %Y�LDRB0,[0,5]:TEQ0,#0:LDReq0,[12,#cy%]:LDReqB0,[0,5]:TEQeq0,#0:MOVneSpc,Z:ADD0,12,#Cy%:LDMIA0,{0-1}:MLA 3,0,3,D:MLA 4,1,4,I:MOV5,#3:LDR1,[12,#l%]:MOV0,#34:�R0,0,#512:SWI 46:MOVSpc,Z:ALIGN:.yi:STMFD(A)!,{E,T,Z}:LDR Z,[12,#Jy%]:LDR2,[12,#Fu%] %Z�LDR1,[12,#l%]:SUB Z,Z,#n%:.C ADD Z,Z,#n%:LDR0,[Z,#u%]:CMN0,#1:LDMeqFD(A)!,{E,T,pc}^:ADD3,Z,#my%:LDMIA3,{3-4}:CMP3,B:CMPge G,3:CMPge4,F:CMPge J,4:Blt C:LDMIA Z,{3-5}:ADD3,D,3:SUB4,I,4:LDR0,[12,#Yy%]:ADD0,0,5,LSL#iJ%:ADD0,0,#W_%:LDMIA0,{0,5}:ADD3,3,0 %[�ADD4,4,5:MOV5,#3:MOV0,#34:�R0,0,#512:SWI 46:B C:ALIGN:.gJ:STMFD(A)!,{E,T,D,I,12,Z}:ADD0,12,#vu%:LDMIA0,{0-1}:ADD D,D,0:SUB I,I,1:LDR2,[12,#ql%]:LDR1,[12,#l%]:MOV0,#34:�R0,0,#512:LDR Z,[12,#i_%]:.C LDMIA(Z)!,{3,12}:CMP3,#0 %\�LDMltFD(A)!,{E,T,D,I,12,pc}^:CMP3,B:CMPge G,3:CMPge12,F:CMPge J,12:Blt C:LDMIA A,{E,T}:MLA 3,E,3,D:MUL 4,T,12:SUB4,I,4:MOV5,#3:SWI 46:B C:]:� %]���xJ:[OPTV%:ALIGN:.ui:�Z:STMFD(A)!,{0-12,Z}:BL r:MOV0,#0:STR0,[12,#_J%]:MOV0,#0:BL s_:MOV0,#0:STR0,[12,#h_%]:LDR0,[12,#y_%]:LDR2,[12,#Q_%]:SUB0,0,2:STR0,[12,#V_%]:BL cu:LDMFD(A)!,{0-12,pc}^:ALIGN:.Xu:�Z:.cu:STMFD(A)!,{12,Z}:BL r:BL `l:BL Mu:BL O_ %^yBL i_:LDR0,[12,#z%]:MOV1,#&f0000000:MOV2,#&f0000000:MOV3,#&70000000:MOV4,#&70000000:SWI &400d1:LDMFD(A)!,{12,pc}^:]:� %_���RJ:[OPTV%:ALIGN:.`l:STMFD(A)!,{4-9,Z}:LDR3,[12,#_J%]:ADD3,3,#1:STR3,[12,#_J%]:MOV2,#Yi:LDR1,[12,#o%]:MOV0,#gy:SWI &dcb8c:LDR1,[12,#H_%]:LDR2,[12,#O_%]:SUB0,3,#1:MLA 0,1,0,2:LDR1,[12,#b_%]:CMP0,1:MOVgt0,1:MOV5,0:LDR4,[12,#g_%]:LDR0,[12,#w%] %`�LDR1,[12,#x%]:MUL 9,0,1:MOV0,4:MOV1,9:.C SUBS1,1,#1:STRhs1,[0],#4:Bhi C:LDR6,[12,#sy%]:MOV0,6:MOV1,#0:MOV2,9:BL ty:MOV7,9,LSR#1:.C BL OJ:MOV1,9:BL Ky:LDR0,[4,1,LSL#2]:LDR2,[4,7,LSL#2]:STR0,[4,7,LSL#2]:STR2,[4,1,LSL#2]:SUBS7,7,#1:Bhs C:LDR7,[12,#Jy%] %a�.C LDR0,[4],#4:MOV Z,#255:STRB Z,[6,0]:LDR1,[12,#w%]:BL Ky:STR1,[7,#my%]:STR0,[7,#gl%]:MOV0,#0:STR0,[7,#u%]:STR0,[7,#Wi%]:ADD7,7,#n%:SUBS5,5,#1:Bne C:MVN0,#�(-1):STR0,[7,#u%]:LDR0,[12,#cy%]:MOV1,#0:LDR2,[12,#w%]:LDR3,[12,#x%]:MUL 2,3,2:BL ty %bJLDR0,[12,#i_%]:MVN1,#0:STR1,[0]:STR0,[12,#ou%]:LDMFD(A)!,{4-9,pc}^:]:� %c���qu:�C:[OPTV%:ALIGN:.Mu:STMFD(A)!,{Z}:MOV0,#0:STR0,[12,#Ku%]:LDR0,[12,#V_%]:LDR1,[12,#Q_%]:ADD0,0,1:BL Sl:.C BL OJ:LDR1,[12,#w%]:LDR2,[12,#x%]:MUL 1,2,1:BL Ky:MOV0,1:LDR1,[12,#w%]:BL Ky:STR1,[12,#t%]:STR0,[12,#Ay%]:BL Ki:Bne C:LDMFD(A)!,{pc}^:ALIGN %d�.Ki:STMFD(A)!,{4-7,Z}:LDR6,[12,#w%]:LDR7,[12,#x%]:LDR3,[12,#sy%]:MVN4,#�(-1):.v MVN5,#�(-1):.x BL yl:LDMneFD(A)!,{4-7,pc}:ADD5,5,#1:TEQ5,#2:Bne x:ADD4,4,#1:TEQ4,5:Bne v:LDMFD(A)!,{4-7,pc}:ALIGN:.yl:ADD0,0,4:ADD1,1,5:CMP0,7:CMPlo1,6:MLAlo 2,0,6,1 %e�SUB0,0,4:SUB1,1,5:�RhsSpc,Z,#L_:LDRB2,[3,2]:TEQ2,#0:�ReqSpc,Z,#L_:BICSpc,Z,#L_:ALIGN:.Sl:STMFD(A)!,{Z}:CMP0,#0:MOVlt0,#0:LDR1,[12,#x_%]:CMP0,1:MOVgt0,1:STR0,[12,#V_%]:MOV3,0:LDR1,[12,#o%]:MOV2,#J_:MOV0,#gy:SWI &dcb8c:LDMFD(A)!,{pc}^:ALIGN %f�.hJ DCD&f423f:ALIGN:.s_:STMFD(A)!,{Z}:CMP0,#0:MOVlt0,#0:LDR1,hJ:CMP0,1:MOVhi0,1:STR0,[12,#C_%]:MOV3,0:LDR1,[12,#o%]:MOV2,#Fi:MOV0,#gy:SWI &dcb8c:LDMFD(A)!,{pc}^:]:� %g���V_:[OPTV%:ALIGN:ALIGN:.Mi:�Z:STMFD(A)!,{4-9,12,Z}:BL r:SUB A,A,#512:LDR0,[12,#z%]:MOV1,A:STR0,[1]:SWI &400c8:BL Qy:.C TEQ0,#0:Beq Fl:BL r:BL m_:BL il:BL gJ:BL yi:BL wJ:BL KJ:MOV1,A:SWI &400ca:B C:.Fl:ADD A,A,#512:LDMFD(A)!,{4-9,12,pc}^:]:� %h���eJ:�C,v,x:�e,X,i,ry,Q,y,M,S,io,yy,hy,V_,p:M=0:S=1:Q=2:y=3:X=K:e=h:i=Ti:q=Tl:ry=Z:hy=3:io=V:yy=Z:V_=i:p=X:[OPTV%:.Lu EQUS"%d.%03d":DCB0:.MJ�ty(32):ALIGN:.i_:LDR0,[12,#hJ%]:TEQ0,#0:MOVeqSpc,Z:STMFD(A)!,{4-9,Z}:LDR X,[12,#Jy%]:LDR e,[12,#Ou%] %i�LDR q,[12,#w%]:ADD q,q,#2:ADD q,q,#31:MOV q,q,LSR#5:MOV q,q,LSL#2:LDR2,[12,#x%]:ADD2,2,#2:MUL 2,q,2:MOV1,#0:MOV0,e:BL ty:MOV i,#7:.C LDR M,[X,#u%]:CMN M,#1:Beq Iu:ADD M,X,#my%:LDMIA M,{M,S}:ADD X,X,#n%:ADD M,M,#1:MLA S,q,S,e:BIC Q,M,#31 %j�ADD S,S,Q,LSR#3:� M,M,#31:CMP M,#30:Bhs ki:LDR Q,[S],#0:�R Q,Q,i,LSLM:STR Q,[S],q:LDR Q,[S],#0:�R Q,Q,i,LSLM:STR Q,[S],q:LDR Q,[S],#0:�R Q,Q,i,LSLM:STR Q,[S],q:B C:.ki:MOVeq ry,#1:MOVhi ry,#3:LDMIA S,{Q,y}:�R Q,Q,i,LSLM:�R y,y,ry:STMIA S,{Q,y} %k�ADD S,S,q:LDMIA S,{Q,y}:�R Q,Q,i,LSLM:�R y,y,ry:STMIA S,{Q,y}:ADD S,S,q:LDMIA S,{Q,y}:�R Q,Q,i,LSLM:�R y,y,ry:STMIA S,{Q,y}:B C:.Iu:MOV i,#1:LDR p,[12,#i_%]:.C LDMIA(p)!,{M,S}:CMP M,#0:Blt Ii:ADD M,M,#1:ADD S,S,#1:MLA S,q,S,e:BIC Q,M,#31:� M,M,#31 %l�LDR Q,[S,Q,LSR#3]!:�R Q,Q,i,LSLM:STR Q,[S],#-1:B C:.Ii:MOV hy,#0:LDR S,[12,#x%]:.v ADD e,e,q:LDR M,[12,#w%]:MOV V_,e:LDR Q,[V_],#4:MOV Q,Q,LSR#1:MOV yy,#31:.x MOVS Q,Q,LSR#1:ADDcs hy,hy,#1:SUBS M,M,#1:Ble Vl:SUBS yy,yy,#1:Bgt x:LDR Q,[V_],#4 %m�MOV yy,#32:B x:.Vl:SUBS S,S,#1:Bgt v:LDR V,[12,#x%]:LDR Z,[12,#w%]:MUL 0,V,Z:MOV V,#1000:MUL 0,V,0:MOV1,hy:ADD0,0,1,LSR#1:BL Ky:MOV1,#1000:BL Ky:MOV3,1:MOV2,0:ADR1,Lu:ADR0,MJ:SWI &dcb8a:ADR3,MJ:LDR1,[12,#o%]:MOV2,#Y_:MOV0,#W_:SWI &dcb8c %nLDMFD(A)!,{4-9,pc}^:]:� %o���__:Z_%=�E("GameP",v%):F_%=�E("ViewP",v%):Wy%=�R("EnterName",1,+1):ry%=�R("Arrow",1,+1):P_%=�E("Highlight",v%):S_%=�E("Centre",v%):Oy%=�E("Magnifier",v%):�q("Board",+1,"Board_Template"):�q("Status",v%,"Status_Template"):�q("HighScores",+1,""):�YJ %p�wn%32:� %q-ݤBoard_Template(M%):vl=M%?35:Kl=M%?34:=0 %rUݤStatus_Template(M%):Zl%=(M%!8)-(M%!0):E_%=(M%!12)-(M%!4):!H_=E_%+4:Dn%=M%!28:=0 %sI��DJ:D_%=�:zJ%=&1040a31+0:dJ%=&1040a31+1:Hu%=&1040a31+2:kl%=0:ol%=0:� %t(��uy:Pa%=6:Ja%=1:MJ%=�(oJ):D_%=zJ%:� %u-��gy:�A%:`l%=Z%:A%=Z%:MJ%=�(xu):D_%=dJ%:� %v��S_:MJ%=�(nl):D_%=Hu%:� %wC��FJ:�gi,mJ,iJ,El,jJ,ii,gl,cJ,wl:�:��:�A("@.BasWimp: Menu") %x�[OPTV%:ALIGN:.Pl DCD0:DCD1:DCD2:DCD3:DCD4:DCD5:DCD6:DCD7:DCD8:.tu:�Z:STMFD(A)!,{Z}:MOV V,#8:.C SUB A,A,#4:STR A,[A],#0:SUBS V,V,#1:Bgt C:BL hu:LDMFD(A)!,{1-8,Z}:ADRvc V,Pl:STMvcIA V,{0-8}:MOVvc0,V:BICvcSpc,Z,#j_:�RSpc,Z,#j_:ALIGN:.Ml:�Z %y�STMFD(A)!,{Z}:MOV0,#4096:BL wi:MOV0,#512:MOV1,#32:BL fJ:LDMFD(A)!,{pc}:ALIGN:.gi EQUS"[0,w>,<s>,s>,s>,dm>,>":DCB0:EQUS"[40,>,d>,>":DCB0:.mJ EQUS"[100,>,>,>,d>,m>,m>,dm>,w>":DCB0:EQUS"<t[120,w>,<td>,dsw>,>,>,>,s>,>,>,>":DCB0 %z�EQUS"[140,w>,<t>,<t>,<t>,<t>":DCB0:EQUS"[160,<tm>,<t>,m>,w>,w>,d>,<t>":DCB0:EQUS"<t[180,>,>,>,>,>,>,m>":DCB0:EQUS"cb<t[500,>,>,>,>,>,>,>,>,>,>,>,>,>,>,>,>":DCB0:EQUS"cb<t[500,>,>,>,>,>,>,>,>,>,>,>,>,>,>,>,>":DCB0:.iJ EQUS"[1000,m>,m>":DCB0 %{�.El EQUS"[1100":DCB0:.ii EQUS",<t ":DCB0:.cJ EQUS"M1101":DCB0:.jJ EQUS"[1200":DCB0:.gl EQUS", ":DCB0:.wl EQUS"M1201":DCB0:ALIGN:.oJ:�Z:STMFD(A)!,{Z}:LDR1,Hy%:TEQ1,#0:MOVeq1,#1:MOVne1,#0:STMFD(A)!,{1}:�F("",0,gi):BL z_:ADD A,A,#1<<2:LDMFD(A)!,{pc} %|�.xu:�Z:STMFD(A)!,{Z}:SUB A,A,#12<<2:ADD1,0,#e%:LDR1,[1,#kJ%]:ADD1,1,#D_:LDR2,[0,#bJ%]:LDR3,[0,#NJ%]:LDR4,[0,#DJ%]:LDR5,[0,#`_%]:LDR6,[0,#GJ%]:LDR7,[0,#_y%]:MOV8,7:LDR9,[0,#RJ%]:LDR V,[0,#uJ%]:LDR Z,[0,#r_%]:STMIA A,{1-9,V,Z}:LDR Z,[0,#T_%] %}�STR Z,[A,#11<<2]:�F("",0,mJ):BL z_:ADD A,A,#12<<2:LDMFD(A)!,{pc}:.Hy%DCD0:.Xu%DCD0:.My%DCD0:.nl:�Z:STMFD(A)!,{K-XJ,Z}:BL du:�F("",0,iJ):BL cy:MOVvc0,#0:BLvc T_:�F("vc",0,El):BLvc cy:Bvs vy:LDR K,Hy%:ADD K,K,#4:LDR h,My%:.C STMFD(A)!,{K-h} %~�F("",0,ii):BL cy:LDRvc0,[K,#r%]:BLvc Ul:�F("vc",0,cJ):LDMvcIA K,{1-8}:STMFD(A)!,{1-8}:BLvc e_:ADD A,A,#8<<2:LDMFD(A)!,{K-h}:Bvs vy:ADD K,K,#l_%:SUBS h,h,#1:Bne C:MOV0,#0:BL T_:�F("vc",0,jJ):BLvc cy:Bvs vy:LDR K,Hy%:ADD K,K,#4:LDR h,My% %�.C STMFD(A)!,{K-h}:�F("",0,gl):BL cy:�F("vc",0,wl):LDMvcIA K,{1-8}:STMFD(A)!,{1-8}:BLvc e_:ADD A,A,#8<<2:LDMFD(A)!,{K-h}:Bvs vy:ADD K,K,#l_%:SUBS h,h,#1:Bne C:MOV0,#0:BL T_:BLvc hl:.vy:LDMFD(A)!,{K-XJ,pc}:.bi:�Z:STMFD(A)!,{4-8,Z} %�jLDMIA0,{0,3,4,5,6,7,V,Z}:STMFD(A)!,{0,3,4,5,6,7,V,Z}:MOV0,2:BL qu:ADD A,A,#8<<2:LDMFD(A)!,{4-8,pc}:]:� %�P��JJ:�Q%,X%,VJ%,Dy%,Fy%:Q%=W%!24:X%=W%!28:VJ%=W%!32:Dy%=W%!36:Fy%=p_%:ȎD_%� %��zJ%:ȎVJ%� %��0:�D("ProgInfo",N_%)� %��:ș&400e8,,N_%,Q%,X% %�� %�.:�F(Fy%,"Unexpected MenuWarning Message") %�� %��dJ%:�G(`l%):ȎVJ%� %��g_:ȎDy%� %��fl:�mJ:ș&400e8,,S_%,Q%,X% %�.:�F(Fy%,"Unexpected MenuWarning Message") %�� %��sJ:ȎDy%� %��qJ:�XJ:ș&400e8,,P_%,Q%,X% %��NJ:�fu:ș&400e8,,ry%,Q%,X% %�.:�F(Fy%,"Unexpected MenuWarning Message") %�� %��Q_:ȎDy%� %��di:�n_:ș&400e8,,Oy%,Q%,X% %��Aa:�t_:ș&400e8,,F_%,Q%,X% %�.:�F(Fy%,"Unexpected MenuWarning Message") %�� %��YJ:�_u:ș&400e8,,Z_%,Q%,X% %�.:�F(Fy%,"Unexpected MenuWarning Message") %�� %�.:�F(Fy%,"Unexpected MenuWarning Message") %��:� %����v_:�VJ%,U%,di%,ci%,mJ%,Dy%,A%,Bu%,`i%:�jl%:U%=�M(512):ș&400cf,,U%:di%=U%!0:ci%=U%!4:kl%=di%:ol%=ci%:mJ%=U%!8:�C(U%,512):VJ%=!W%:Dy%=W%!4:Bu%=W%!8:jl%=W%!12:ȎD_%� %��zJ%:ȎVJ%� %��pu:�bu %��Vu:ȎDy%� %��al:�o_ %��Hu:�Yy %��Ei:�Gu %�� %��Ni:�Ry %�� %��dJ%:�G(`l%):ȎVJ%� %��ol:�m(mJ%):�u %��zu:�m(mJ%):�h %��vi:�m(mJ%):�Ky %��sJ:�LJ(Dy%) %��g_:ȎDy%� %� �-1:�K %��Zl:�yy %��nJ:�ry %��_i:�A_ %��uu:�Ey %�� %��Q_:ȎDy%� %��`i:�Iy %��Xi:ȎBu%� %��-1:�cy %��mu:Ȏjl%� %��-1 %�@�0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15:o_%=jl%:�o_%<>Z%!RJ%� %�/`i%=Z%!_y%:�Jy:Z%!RJ%=o_%:�qy:Z%!_y%=`i%:�r %�� %�� %�:iy%=Bu%:�iy%<>Z%!_y%� %��Jy:Z%!_y%=iy%:�r %�� %�� %��kl:ȎBu%� %��-1 %�@�0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15:__%=Bu%:�__%<>Z%!r_%� %�*Z%!r_%=__%:Z%?`u%+=1:�VJ(Z%!z%,__%):�p %�� %�� %��Wu:�Tu(Z%) %��iu:�Z_ %�� %� �YJ:�a %��Wi:�my %�� %��Hu%:ȎVJ%� %��jl:�Xu(Dy%) %��pi:�C_(Dy%) %�� %� �:�mJ%=1� %��By %��:�P %��:� %���m(mJ%):�mJ%<>1� %��P %��:� %���By:�j%:j%=�:ȎD_%� %��zJ%:�uy %��dJ%:�gy %��Hu%:�S_ %� j%=� %� �:�j%� %�ș&400d4,,MJ%,kl%,ol% %��:� %���P:ș&400d4,,-1:D_%=�:� %�"��s_:�D%:D%=�M(128):Ȏ�I(!W%)� %�Z�A_%:!D%=Z%!o%:ș&400cb,,D%:D%!28=W%!28:W%!28=!D%:ș&400c5,,W%:ș&400cb,,W%:�My(D%,W%) %�*�ty%:!D%=Z%!z%:ș&400cb,,D%:�My(W%,D%) %�ɤV(!W%):�fJ(W%) %�:ș&400c5,,W% %��:�C(D%,128):� %�g��My(D%,M%):�j_%:D%!4=M%!4:D%!12=M%!12:D%!16=M%!16:D%!8=�S(M%!8,D%!16-E_%):j_%=M%!12-M%!4:�j_%<Zl%� %�D%!20=Zl%-j_% %�'�:D%!20=((Zl%-j_%)/2)��((1<<Sy%)-1) %�3�:D%!24=0:ș&400c5,,D%:M%!28=!D%:ș&400c5,,M%:� %���Pu:Ȏ�I(!W%)� %��A_%,ty%:�P_ %�ɤV(!W%):�I_ %�:ș&400c6,,W% %��:� %�"��vJ:�cJ%:�:��:ș&606c1:�Q %�ș&606c0:Ȏ�I(!W%)� %��A_%:�Lu %��ry%:�Hu %�<:ș&400c8,,W%�cJ%:ȕcJ%:ș&81681,,W%:ș&400ca,,W%�cJ%:� %��:ș&606c1:� %���Lu:�Z%!l%<>0� %��Mi %�@�:ș&400c8,,W%�cJ%:ȕcJ%:ș&400e6,128+8:�:ș&400ca,,W%�cJ%:� %��:� %�!��Hu:�A%,B%:A%=Z%:B%=W%:�rl:� %� ��KJ:� %� ��`J:� %� ��x_:� %� ��Iu:� %� ��GJ:� %���Ry:�vJ%:vJ%=(Z%=0):�vJ%� &