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%�
&