REM Acorn Invaders REM Packed by Make v1.41 15/5/08 On 17 Jul 2008 ONERRORPROCz:END MODE28:OFF:a$="Acorn Invaders. (c)2008 DynaByte Software":PRINTa$:PRINTSTRING$(LEN(a$),"-"):PRINT:k$=".Resources.":l$=k$+"Graphics.":b$=k$+"Data.":r$=k$+"Sound.":aa%=FALSE:PRINT"Checking files...":IFNOTFNj(l$+"Gfx0","Sprites")THENaa%=TRUE IFNOTFNj(l$+"Gfx1","Charset")THENaa%=TRUE IFNOTFNj(r$+"Intro","Music")THENaa%=TRUE IFNOTFNj(b$+"Creds","Credits")THENaa%=TRUE IFNOTFNj(b$+"Msg","Messages")THENaa%=TRUE IFNOTFNj(b$+"ImgLUT","Lookups")THENaa%=TRUE IFNOTFNj(b$+"SWIs","Lookups")THENaa%=TRUE IFaa%THENERROR255,"File Missing!!" PRINT:PRINT"Loading Messages...";:ba%=FNs(b$+"Msg","SGSM"):DIMf%(ba%),b$(ba%):PROCk(b$+"Msg","SGSM",f%(),b$()):PRINTFNa(14):PRINTFNa(9)+" "+FNa(3);:ca%=FNs(b$+"ImgLUT","TULI"):DIMg%(ca%),c$(ca%):PROCk(b$+"ImgLUT","TULI",g%(),c$()):PRINTFNa(14) PRINTFNa(9)+" "+FNa(13);:da%=FNs(b$+"SWIs","TULS"):DIMh%(da%),d$(da%):PROCk(b$+"SWIs","TULS",h%(),d$()):PRINTFNa(14):PRINT:PRINTFNa(12):PRINTFNa(8)+" "+FNa(2):PROCA:p%=FNf(FNe(48),0):E%=FNf(FNe(16),0):E%!0=1:E%!4=-1:E%!12=128 p%!40=FNv(0):IFp%!40=-1THENERROR255,FNa(109) PRINTFNa(15)+STR$(p%!40):aa%=FALSE:p%!44=TRUE:ea%=0:DIMa$(10),c%(10):DIMd%(10):PRINTFNa(8)+" "+FNa(22):b%=0:a%=4:e%=8:k%=12:N%=16:O%=20:B%=24:fa%=28:ga%=32:ha%=36:ia%=40:ja%=44:ka%=48:la%=52:ma%=56:na%=60:oa%=64 pa%=16:qa%=20:ra%=24:X%=28:V%=32:sa%=16:ta%=20:PRINT:PRINTFNa(8)+" "+FNa(1)+" ";:ua%=0:SYSFNc(30)TOua%:PRINTFNa(21)+" "+STR$(ua%/100):E%!4=FNA(r$+"Intro"):PRINT:PRINTFNa(17)+" "+FNa(16):SYSFNc(1),,FNc(2)TOva%:PRINTFNa(9)+" "+FNa(4);:wa%=FNw(l$+"Gfx0"):PRINTFNa(14) PRINTFNa(9)+" "+FNa(5);:xa%=FNw(l$+"Gfx1"):PRINTFNa(14):ya%=wa%:PRINT:PRINTFNa(9)+" "+FNa(6);:S%=OPENIN(b$+"Creds"):INPUT#S%,i$:IFi$<>"DERC"THEN CLOSE#S%:ERROR255,FNa(101):END ENDIF INPUT#S%,ea%:DIMe$(ea%),e%(ea%):FORi%=1TOea%:INPUT#S%,e%(i%),e$(i%):NEXTi%:CLOSE#S%:PRINTFNa(14):PRINT:PRINTFNa(7):t$=b$+"HiTable":IFFNq(t$)<>1THEN IFNOTFNx(0,k$)THEN p%!44=FALSE:PRINTFNa(19)+" "+FNa(10)+" "+FNa(20) ELSE:PRINTFNa(19)+" "+FNa(11)+" "+FNa(20) ENDIF PROCB(p%!44) ELSE:IFNOTFNx(1,t$)THEN p%!44=FALSE:PRINTFNa(18)+" "+FNa(10)+" "+FNa(20) ELSE:PRINTFNa(18)+" "+FNa(11)+" "+FNa(20) ENDIF PROCC ENDIF PRINT:PRINTFNa(12):PROCe(150):f%=FNe(36):R%=FNe(24):L%=FNe(16):CLS:PROCp:f%!X%=FNd(8,1):f%!V%=FNd(8,2)+7:R%!e%=FNd(6,1):R%!k%=FNd(6,2):R%!sa%=f%!k%-50:R%!ta%=30:SYSFNc(33),E%!4:SYSFNc(36),E%!4,E%!12:WHILENOTFNB:CLS:PROCD:ENDWHILE CLS:L%!e%=220:L%!k%=40:L%=FNt(L%,f%):L%!a%-=3:PROCl(L%):PROCq(FNa(31),10):IFE%!0=1THEN FORi%=E%!12TO0STEP-2:SYSFNc(36),E%!4,i%:PROCe(4):NEXTi%:SYSFNc(35),E%!4:SYSFNc(32),E%!4:E%!4=-1 ENDIF PROCr:END DEFFNB:LOCALi%,I%,J%,v%,P%,h%,W%,za%,Aa%:LOCALm%,T%,Ba%,Ca%,Da%,Y%,Ea%,Fa%,Ga%:LOCALx%,y%,K%,Ha%,s$,a$:Ha%=44:I%=FNf(FNe(16),0):J%=FNf(FNe(16),0):v%=FNf(FNe(16),0):h%=FNf(FNe(16),0):W%=FNf(FNe(16),0):T%=FNf(FNe(16),0):m%=FNf(FNe(16),0) I%!e%=FNd(100,1):I%!k%=FNd(40,2):I%!b%=FNh(I%,f%):I%!a%=800:J%!e%=FNd(150,1):J%!k%=FNd(40,2):J%!b%=FNh(J%,f%):J%!a%=I%!a%-J%!k%:v%!e%=720:v%!k%=500:v%!b%=FNh(v%,f%):v%!a%=200:h%!e%=FNd(40,1):h%!k%=FNd(20,2) h%!b%=(v%!b%+v%!e%/2)-150:h%!a%=(v%!a%+v%!k%)-125:m%!e%=FNd(30,1):m%!k%=FNd(15,2):W%!e%=FNd(20,1):W%!k%=FNd(20,2):W%!b%=(v%!b%+v%!e%/2)-150:W%!b%+=FNh(W%,h%):za%=FNg(W%):Aa%=FNg(W%)::Aa%!a%=h%!a%-40-Aa%!k%:za%!a%=Aa%!a%-40-za%!k% W%!a%=za%!a%-40-W%!k%:T%!e%=FNd(20,1):T%!k%=FNd(20,2):T%!b%=(v%!b%+v%!e%/2)-120:Ba%=FNg(T%):Ca%=FNg(T%):Da%=FNg(T%):Da%!b%=v%!b%:Ia%=FNg(Da%):Ea%=FNg(Da%):Y%=FNg(T%):Y%!b%=v%!b%:Y%!b%+=(v%!e%/2)+10 Fa%=FNg(Y%):Ga%=FNg(Y%)::T%!a%=(v%!a%+v%!k%)-120:Ba%!a%=T%!a%-60:Ca%!a%=Ba%!a%-60:Ea%!a%=Ca%!a%-90:Ia%!a%=Ea%!a%-60:Da%!a%=Ia%!a%-60:Y%!a%=Ca%!a%-90:Fa%!a%=Y%!a%-60:Ga%!a%=Fa%!a%-60:CLS:PROCf(R%!sa%):PROCf(R%!ta%) FORi%=0-I%!e%TOI%!b%STEP5:WAIT:PROCa(FNb(100),i%,I%!a%):PROCe(1):NEXTi%:FORi%=f%!e%TOJ%!b%STEP-5:WAIT:PROCa(FNb(101),i%,J%!a%):PROCe(1):NEXTi%:a$=FNa(32):P%=LEN(a$)*f%!X%:y%=170:PROCb(FNk(P%,f%!e%),y%,a$,11):a$=FNa(33):P%=LEN(a$)*f%!X%:y%-=f%!V% PROCb(FNk(P%,f%!e%),y%,a$,11):WHILENOTINKEY(-99)ANDNOTINKEY(-17)ANDNOTINKEY(-82):y%=v%!a%+v%!k%:FORi%=1TOea%:a$=FNo(e$(i%)):x%=FNi(a$):CASEe%(i%)OF WHEN-1:y%-=f%!V% WHEN-2:y%-=(2*f%!V%) OTHERWISE:y%-=e%(i%) ENDCASE PROCb(x%,y%,a$,0):NEXTi%:K%=FNr:IFK%=1THEN=TRUE IFK%=2THEN=FALSE PROCd(v%):a$=FNa(57)+" "+FNa(34):x%=FNi(a$):y%=v%!a%+v%!k%-20:PROCb(x%,y%,a$,0):a$=FNa(35):y%-=f%!V%:x%=FNi(a$):PROCb(x%,y%,a$,0):x%=h%!b%+h%!e%+10:PROCa(FNb(11),h%!b%,h%!a%):a$=FNa(36)+" "+FNa(40):PROCb(x%,h%!a%+10,a$,0) PROCa(FNb(24),Aa%!b%,Aa%!a%):a$=FNa(37)+" "+FNa(40):PROCb(x%,Aa%!a%+12,a$,0):PROCa(FNb(22),za%!b%,za%!a%):a$=FNa(38)+" "+FNa(40):PROCb(x%,za%!a%+12,a$,0):PROCa(FNb(20),W%!b%,W%!a%):a$=FNa(39)+" "+FNa(40):PROCb(x%,W%!a%+12,a$,0) P%=m%!e%/f%!X%+2:s$=FNa(66):a$=s$+STRING$(P%," ")+FNa(67):x%=FNi(a$):y%=W%!a%-(3*f%!V%):PROCb(x%,y%,a$,0):m%!b%=x%+7+(LEN(s$)*f%!X%):m%!a%=y%:PROCa(FNb(1),m%!b%,m%!a%):K%=FNr:IFK%=1THEN=TRUE IFK%=2THEN=FALSE PROCd(v%):a$=FNa(41):x%=FNi(a$):y%=v%!a%+v%!k%-20:PROCb(x%,y%,a$,0):x%=T%!b%+T%!e%+10:PROCa(FNb(102),T%!b%,T%!a%):a$=FNa(42)+" "+FNa(43):PROCb(x%,T%!a%+12,a$,0):PROCa(FNb(103),Ba%!b%,Ba%!a%):a$=FNa(42)+" "+FNa(44):PROCb(x%,Ba%!a%+12,a$,0) PROCa(FNb(104),Ca%!b%,Ca%!a%):PROCb(x%,Ca%!a%+12,FNa(45),0):x%=Da%!b%+Da%!e%+10:PROCa(FNb(105),Ia%!b%,Ia%!a%):a$=FNa(46)+" "+FNa(49):PROCb(x%,Ia%!a%+12,a$,0):PROCa(FNb(117),Ea%!b%,Ea%!a%):PROCb(x%,Ea%!a%+12,FNa(76),0) PROCa(FNb(107),Da%!b%,Da%!a%):a$=FNa(48)+" "+FNa(49):PROCb(x%,Da%!a%+12,a$,0):x%=Y%!b%+Y%!e%+10:PROCa(FNb(106),Y%!b%,Y%!a%):a$=FNa(47)+" "+FNa(73):PROCb(x%,Y%!a%+12,a$,0):PROCa(FNb(115),Fa%!b%,Fa%!a%):a$=FNa(47)+" "+FNa(77)+" ":a$+=FNa(74) PROCb(x%,Fa%!a%+12,a$,0):PROCa(FNb(116),Ga%!b%,Ga%!a%):a$=FNa(47)+" "+FNa(77)+" ":a$+=FNa(75):PROCb(x%,Ga%!a%+12,a$,0):K%=FNr:IFK%=1THEN=TRUE IFK%=2THEN=FALSE PROCd(v%):a$=FNa(50):IFp%!Ha%THENa$=FNa(51) x%=FNi(a$):y%=v%!a%+v%!k%-20:PROCb(x%,y%,a$,0):a$=FNa(58)+" "+FNa(52):x%=FNi(a$):y%-=f%!V%:PROCb(x%,y%,a$,0):y%=(v%!a%+v%!k%)-100:a$=" "+FNa(68)+" "+FNa(69):a$+=STRING$(12," ")+FNa(57)+".":a$+=STRING$(3," ")+FNa(60)+".":x%=FNi(a$):PROCb(x%,y%,a$,0):y%-=2*f%!V% FORi%=1TO10:IFi%<10THEN a$=" "+STR$(i%)+". " ELSE:a$=" "+STR$(i%)+". " ENDIF s$=FNo(a$(i%)):a$+=FNl(s$,8," ",FALSE):a$+=" .... ":a$+=FNy(STR$(c%(i%)),10):a$+=" ... "+FNy(STR$(d%(i%)),3):x%=FNi(a$):PROCb(x%,y%-(i%*(f%!V%+5)),a$,0):NEXTi%:K%=FNr:IFK%=1THEN=TRUE IFK%=2THEN=FALSE PROCd(v%):ENDWHILE:ERROR255,FNa(102):=FALSE DEFFNr:LOCALt%,K%:t%=TIME+750:K%=FALSE:REPEAT:IFINKEY(-82)THENPROCs IFINKEY(-102)THENPROCt IFINKEY(-59)THENPROCj(2) IFINKEY(-60)THENPROCj(-2) UNTILTIME>=t%ORINKEY(-17)ORINKEY(-99):IFINKEY(-17)THENK%=1 IFINKEY(-99)THENK%=2 IFK%THEN PROCc(I%):PROCc(J%):PROCc(v%):PROCc(h%):PROCc(W%):PROCc(za%):PROCc(Aa%):PROCc(T%):PROCc(Ba%):PROCc(Ca%):PROCc(Da%):PROCc(Y%):PROCc(Ia%):PROCc(Ea%):PROCc(Fa%):PROCc(Ga%):PROCc(m%) ENDIF =K% DEFFNi(a$):LOCALP%:P%=LEN(a$)*f%!X%:=v%!b%+FNk(P%,v%!e%) DEFPROCD:LOCALm%,q%,h%,d%,w%:LOCALG%:LOCALb%(),a%():LOCALJa%,Ka%,La%,Ma%:LOCALZ%,Na%,Oa%:LOCALPa%:LOCALQa%,Ra%,Sa%,Ta%,Ua%:LOCALVa%,P%,a$,x%,y%,i%,j%:m%=FNe(32):q%=FNe(28):h%=FNe(48):d%=FNe(68):G%=FNe(16):w%=FNf(FNe(16),0):DIMb%(10,6),a%(7) Ja%=0:Ka%=4:La%=8:Ma%=12:Pa%=16:Z%=28:Qa%=ha%:Ra%=ia%:Sa%=ja%:Ta%=ma%:Ua%=na%:m%!e%=FNd(30,1):m%!k%=FNd(15,2):m%!b%=FNh(m%,f%):m%!a%=50:m%!O%=6:m%!N%=m%!O%:G%!e%=FNd(20,1):G%!k%=FNd(20,2) h%!e%=FNd(40,1):h%!k%=FNd(20,2):h%!a%=R%!sa%-(10+h%!k%):h%!O%=5:h%!B%=FALSE:h%!ia%=1:q%!e%=FNd(5,1):q%!k%=FNd(20,2):q%!B%=FALSE:q%!O%=10:w%!La%=1:w%!Ja%=3:w%!Ma%=FALSE:p%!Pa%=-1:d%!Qa%=FNd(20,1):d%!Ra%=10:d%!Sa%=6:d%!B%=TRUE:d%!Ua%=4 SYSFNc(6)TOd%!oa%:FORi%=1TO7:a%(i%)=FNe(48):PROCu(a%(i%),0):a%(i%)!e%=FNd(5,1):a%(i%)!k%=FNd(20,2):SYSFNc(6)TOa%(i%)!ia%:SYSFNc(6)TOa%(i%)!ja%:NEXTi%:PROCf(R%!sa%):PROCf(R%!ta%):PROCE(0,c%(1),w%!Ja%,w%!La%):PROCF:PROCa(FNb(1),m%!b%,m%!a%) WHILEw%!Ja%>0:Va%=FALSE:IFp%!Z%=0THEN IFINKEY(-74)THENPROCG(m%!b%,m%!a%) IFINKEY(-98)THENPROCH:Va%=TRUE IFINKEY(-67)THENPROCI:Va%=TRUE IFINKEY(-17)THENPROCJ IFINKEY(-35)THENPROCv ENDIF IFINKEY(-102)THENPROCt IFINKEY(-82)THENPROCs IFINKEY(-56)THENPROCK IFINKEY(-59)THENPROCj(2) IFINKEY(-60)THENPROCj(-2) IFp%!Z%=0THEN IFVa%THEN m%!b%+=m%!N%:PROCa(FNb(1),m%!b%,m%!a%) ENDIF ENDIF IFp%!Z%=0THEN PROCL:PROCM:PROCN:PROCO:PROCP ELSE:PROCQ ENDIF WAIT:ENDWHILE:L%!e%=240:L%!k%=40:L%=FNt(L%,f%):L%!a%-=3:PROCd(L%):PROCl(L%):a$=FNa(49)+" "+FNa(53):PROCq(a$,11):PROCe(750):IFNOTw%!Ma%THEN IFw%!Ka%>=c%(10)THEN PROCR(w%) ENDIF ENDIF PROCc(m%):PROCc(d%):PROCc(h%):PROCc(q%):PROCc(w%):PROCc(G%):FORi%=1TO7:PROCc(a%(i%)):NEXTi%:ENDPROC DEFPROCH:IFm%!b%<=0THEN m%!b%=0 ELSE:m%!N%=0-m%!O% ENDIF ENDPROC DEFPROCI:IFm%!b%>=f%!e%-m%!e%THEN m%!b%=f%!e%-m%!e% ELSE:m%!N%=0+m%!O% ENDIF ENDPROC DEFPROCG(x%,y%):IFNOTq%!B%THEN q%!B%=TRUE:q%!b%=x%+(m%!e%/2):q%!a%=y%+m%!k%:PROCg(4) ENDIF ENDPROC DEFPROCs:LOCALWa%,u$:Wa%=40:REPEAT:UNTILNOTINKEY(-82):p%!Wa%=FNv(p%!Wa%):IFp%!Wa%=-1THENERROR255,FNa(109) u$=".Screens.Dump"+STR$(p%!Wa%):OSCLI"ScreenSave "+u$:ENDPROC DEFPROCJ:LOCALi%:FORi%=1TO7:a%(i%)!B%=FALSE:NEXTi%:w%!Ja%=0:w%!Ma%=TRUE:ENDPROC DEFPROCt:LOCALXa%,Ya%:Xa%=0:Ya%=4:REPEAT:UNTILNOTINKEY(-102):E%!Xa%+=1:IFE%!Xa%>2THENE%!Xa%=0 IFE%!Xa%=1THEN SYSFNc(33),E%!Ya% ELSE:SYSFNc(34),E%!Ya% ENDIF ENDPROC DEFPROCj(Za%):LOCALXa%,Ya%,_a%,`a%,C%,ab%:Xa%=0:Ya%=4:_a%=8:`a%=12:IFE%!Xa%=1THEN SYSFNc(6)TOC%:IFC%-E%!_a%>=10THEN ab%=E%!`a%+Za%:IFab%>=0ANDab%<=128THEN E%!`a%=ab%:SYSFNc(36),E%!Ya%,E%!`a%:E%!_a%=C% ENDIF ENDIF ENDIF ENDPROC DEFPROCK:LOCALZ%,Na%,a$:Z%=28:Na%=32:REPEATUNTILNOTINKEY(-56):a$=FNa(49)+" "+FNa(61):p%!Z%=FNm(p%!Z%):p%!Na%=p%!Z%:IFp%!Z%=0THEN a$=STRING$(LEN(a$)," "):PROCm(a$) ENDIF ENDPROC DEFPROCL:IFq%!B%THEN IFq%!a%>=R%!sa%-q%!k%THEN q%!B%=FALSE:q%!a%-=2:PROCd(q%) ELSE:PROCa(FNb(5),q%!b%,q%!a%) ENDIF q%!a%+=q%!O% ENDIF ENDPROC DEFPROCM:LOCALbb%,cb%,db%,C%,eb%,d$:bb%=ga%:cb%=ha%:db%=ia%:IFNOTh%!B%THEN IFFNn(4)ANDFNn(5)THEN h%!B%=TRUE:h%!fa%=FALSE:h%!cb%=0:IFFNn(50)THEN h%!N%=0-h%!O%:h%!b%=f%!e% ELSE:h%!N%=0+h%!O%:h%!b%=0-h%!e% ENDIF ENDIF ELSE:IFh%!b%<=0-h%!e%ANDSGN(h%!N%)=-1THEN h%!bb%=FALSE:h%!B%=FALSE:ENDPROC ENDIF IFh%!b%>f%!e%ANDSGN(h%!N%)=1THEN h%!bb%=FALSE:h%!B%=FALSE:ENDPROC ENDIF IFNOTh%!fa%THEN IFFNp(q%,h%)THEN PROCd(q%):PROCa(FNb(12),h%!b%,h%!a%):SYSFNc(6)TOh%!bb%:h%!fa%=TRUE:q%!B%=FALSE:PROCh(500) ENDIF ELSE:IFFNp(q%,h%)THEN PROCd(q%):q%!B%=FALSE ENDIF ENDIF IFNOTh%!fa%THEN SYSFNc(6)TOC%:IFC%-h%!db%>=40THEN h%!db%=C%:h%!cb%=FNm(h%!cb%) ENDIF d$=FNb(10)+STR$(h%!cb%):PROCa(d$,h%!b%,h%!a%):h%!b%+=h%!N% ELSE:SYSFNc(6)TOC%:eb%=C%-h%!bb%:IFeb%>=300THEN h%!B%=FALSE:h%!cb%=1:PROCd(h%) ELSE:IFeb%>=250THEN PROCa(FNb(15),h%!b%,h%!a%) ELSE:IFeb%>=200THEN PROCa(FNb(14),h%!b%,h%!a%) ELSE:IFeb%>=100THEN PROCa(FNb(13),h%!b%,h%!a%) ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF ENDPROC DEFPROCN:LOCALfb%,z%,H%,M%,gb%,hb%,ib%,_%:LOCALQ%,jb%,kb%,C%,lb%:Q%=ga%:jb%=ka%:kb%=la%:lb%=oa%:SYSFNc(6)TOC%:IFC%-d%!lb%>=50THEN d%!lb%=C%:d%!Q%=FNm(d%!Q%) ENDIF fb%=d%!b%+d%!e%:_%=0-((d%!jb%-1)*(G%!e%+d%!Qa%)):IFfb%>=f%!e%THEN d%!N%=0-d%!O%:PROCw ENDIF IFd%!b%<=_%THEN d%!N%=0+d%!O%:PROCw ENDIF _%=d%!a%+((d%!Ta%-1)*G%!k%):IF_%<=m%!a%+m%!k%THEN PROCv:ENDPROC ENDIF IFFNp(q%,d%)THEN z%=G%!e%+d%!Qa%:IF(q%!b%-d%!b%)MODz%<=G%!e%THEN H%=((q%!a%-d%!a%)DIVG%!k%)+1:M%=((q%!b%-d%!b%)DIVz%)+1:IFSGN(b%(M%,H%))=1THEN b%(M%,H%)=-5:PROCd(q%):q%!B%=FALSE:d%!fa%+=1:PROCg(1):CASEH%OF WHEN1,2:PROCh(50) WHEN3,4:PROCh(75) WHEN5,6:PROCh(100) ENDCASE ENDIF ENDIF ENDIF IFd%!fa%>=d%!Ra%*d%!Sa%THEN w%!La%+=1:PROCd(d%):PROCf(R%!ta%):PROCi(w%!Ja%):PROCn(w%!La%):PROCa(FNb(1),m%!b%,m%!a%):PROCx ENDIF gb%=TRUE:hb%=TRUE:FORH%=1TOd%!Sa%:IFb%(d%!kb%,H%)<>0THENgb%=FALSE IFb%(d%!jb%,H%)<>0THENhb%=FALSE NEXTH%:ib%=TRUE:FORM%=1TOd%!Ra%:IFb%(M%,d%!Ta%)<>0THENib%=FALSE NEXTM%:IFhb%THENd%!jb%+=1 IFgb%THEN d%!e%-=(G%!e%+d%!Qa%):d%!kb%-=1 ENDIF IFib%THENd%!Ta%+=1 d%!b%+=d%!N%:PROCo:ENDPROC DEFPROCO:LOCALQ%,mb%,eb%,nb%,i%,j%,x%,y%:LOCALob%,pb%,d$,p$,qb%,C%:Q%=ga%:mb%=ha%:eb%=ia%:rb%=ja%:FORi%=1TO7:IFNOTa%(i%)!B%THEN ob%=RND(10):pb%=w%!La%+5:IFpb%>100THEN pb%=100:IFw%!La%MOD10=0THENd%!Ua%+=1 ENDIF IFFNn(pb%)ANDFNn(d%!Ua%)THEN IFb%(ob%,d%!Ta%)>0THEN x%=d%!b%+(ob%-1)*(G%!e%+d%!Qa%):y%=d%!a%+((d%!Ta%-1)*G%!k%)-G%!k%:qb%=(G%!e%/2)-(a%(i%)!e%/2):a%(i%)!b%=x%+qb%:a%(i%)!a%=y%:a%(i%)!B%=TRUE:a%(i%)!fa%=FALSE:a%(i%)!mb%=1:a%(i%)!Q%=0:nb%=4:IFFNn(25)THENa%(i%)!mb%=2:nb%=nb%/2 a%(i%)!O%=nb%:a%(i%)!N%=a%(i%)!O%:PROCg(3) ENDIF ENDIF ELSE:SYSFNc(6)TOC%:IFC%-a%(i%)!rb%>=40THEN a%(i%)!rb%=C%:a%(i%)!Q%+=1 ENDIF IFa%(i%)!mb%=1ANDa%(i%)!Q%>1THEN a%(i%)!Q%=0 ENDIF IFa%(i%)!mb%=2ANDa%(i%)!Q%>3THEN a%(i%)!Q%=0 ENDIF p$=STR$(a%(i%)!Q%):IFa%(i%)!mb%=2ANDa%(i%)!Q%=3THENp$="1" d$=FNb(30)+STR$(a%(i%)!mb%)+p$:IFNOTa%(i%)!fa%THEN a%(i%)!a%-=a%(i%)!N%:PROCa(d$,a%(i%)!b%,a%(i%)!a%) ELSE:d$=FNb(30)+"3":PROCa(d$,a%(i%)!b%,a%(i%)!a%) ENDIF IFa%(i%)!a%<=R%!ta%+(R%!k%+5)THEN a%(i%)!B%=FALSE:PROCd(a%(i%)) ENDIF IFFNp(a%(i%),m%)ANDa%(i%)!B%THEN PROCg(2):FORj%=1TO3:PROCa(FNb(2)+STR$(j%),m%!b%,m%!a%):PROCe(20):WAIT:NEXTj%:PROCd(m%):IFq%!B%THEN PROCd(q%):q%!B%=FALSE ENDIF m%!b%=FNh(m%,f%):w%!Ja%-=1:PROCi(w%!Ja%):PROCd(a%(i%)):a%(i%)!B%=FALSE:PROCa(FNb(1),m%!b%,m%!a%) ENDIF IFFNp(q%,a%(i%))THEN IFa%(i%)!mb%=1THEN IFNOTa%(i%)!fa%THEN a%(i%)!fa%=TRUE:PROCh(5):d$=FNb(30)+"3":PROCa(d$,a%(i%)!b%,a%(i%)!a%):SYSFNc(6)TOa%(i%)!eb% ENDIF ENDIF PROCd(q%):q%!B%=FALSE ENDIF IFa%(i%)!fa%THEN SYSFNc(6)TOC%:IFC%-a%(i%)!eb%>=40THEN PROCd(a%(i%)):a%(i%)!B%=FALSE ENDIF ENDIF ENDIF NEXTi%:ENDPROC DEFPROCQ:LOCALZ%,Na%,Oa%,C%,a$:Z%=28:Na%=32:Oa%=36:SYSFNc(6)TOC%:IFC%-p%!Oa%>=50THEN p%!Na%=FNm(p%!Na%):p%!Oa%=C% ENDIF a$=FNa(49)+" "+FNa(61):IFp%!Na%=0ORp%!Z%=0THEN a$=STRING$(LEN(a$)," ") ENDIF PROCm(a$):ENDPROC DEFPROCP:LOCALPa%,sb%,tb%,C%,a$:Pa%=16:sb%=20:tb%=24:IFp%!Pa%>=0THEN SYSFNc(6)TOC%:a$=FNa(66)+" "+FNa(72):IFC%-p%!tb%>=50THEN p%!tb%=C%:p%!sb%=FNm(p%!sb%):IFp%!sb%=1THENp%!Pa%+=1 ENDIF IFp%!sb%=0THEN a$=STRING$(LEN(a$)," ") ENDIF IFp%!Pa%>5THEN a$=STRING$(LEN(a$)," "):p%!Pa%=-1 ENDIF PROCm(a$) ENDIF ENDPROC DEFPROCB(ub%):LOCALi%,n$:FORi%=1TO10:IFi%MOD2=0THENn$=FNa(71)ELSEn$=FNa(70) a$(i%)=FNo(n$):c%(i%)=(11-i%)*1000:d%(i%)=0:NEXTi%:IFub%THENPROCy ENDPROC DEFPROCC:LOCALi%,vb%:vb%=OPENIN(b$+"HiTable"):FORi%=1TO10:INPUT#vb%,a$(i%),c%(i%):INPUT#vb%,d%(i%):NEXTi%:CLOSE#vb%:ENDPROC DEFPROCy:LOCALi%,vb%:vb%=OPENOUT(b$+"HiTable"):FORi%=1TO10:PRINT#vb%,a$(i%),c%(i%):PRINT#vb%,d%(i%):NEXTi%:CLOSE#vb%:ENDPROC DEFPROCR(w%):LOCALJ%,I%,wb%,g%,i%,xb%,P%,x%,y%,a$:LOCALHa%:I%=FNe(16):J%=FNe(16):Ha%=44:I%!e%=FNd(100,1):I%!k%=FNd(40,2):I%!b%=FNh(I%,f%):I%!a%=800:J%!e%=FNd(150,1):J%!k%=FNd(40,2):J%!b%=FNh(J%,f%):J%!a%=I%!a%-J%!k%:xb%=0:FORi%=10TO1STEP-1 IFw%!Ka%>=c%(i%)THENxb%=i% NEXTi%:FORi%=9TOxb%STEP-1:a$(i%+1)=a$(i%):c%(i%+1)=c%(i%):d%(i%+1)=d%(i%):NEXTi%:c%(xb%)=w%!Ka%:d%(xb%)=w%!La%:CLS:PROCf(R%!sa%):PROCf(R%!ta%):PROCa(FNb(100),I%!b%,I%!a%):PROCa(FNb(101),J%!b%,J%!a%):a$=FNa(54)+" "+STR$(w%!Ka%) a$+=" "+FNa(55)+" "+STR$(xb%)+FNC(xb%):P%=LEN(a$)*f%!X%:x%=FNk(P%,f%!e%):y%=J%!a%-170:PROCb(x%,y%,a$,0):PROCc(I%):PROCc(J%):L%!e%=165:L%!k%=40:L%=FNt(L%,f%):PROCl(L%):x%=L%!b%+20:y%=L%!a%+12:a$="":i%=1:wb%=FALSE OSCLI"FX 21,0":REPEAT:g%=GET:CASEg%OF WHEN13:wb%=TRUE WHEN8:i%-=1:a$=LEFT$(a$,i%-1) OTHERWISE:IFi%<9ANDFND(g%)THENi%+=1:a$+=CHR$(g%) ENDCASE IFi%<1THENi%=1 PROCb(x%,y%,STRING$(8," "),0):IFa$=""THEN PROCb(x%,y%," ",0) ELSE:PROCb(x%,y%,a$,0) ENDIF UNTILwb%:IFa$=""ORa$=" "THENa$=FNa(56) a$(xb%)=FNo(a$):IFp%!Ha%THENPROCy ENDPROC DEFFND(yb%):LOCALzb%:zb%=FALSE:IFyb%>=32ANDyb%<=126THENzb%=TRUE =zb% DEFPROCE(Ab%,Bb%,l%,r%):LOCALx%,a$:a$=FNa(57)+" "+FNa(59):a$+=FNl(STR$(Ab%),10," ",TRUE):PROCb(0,f%!k%-f%!V%,a$,0):a$=FNa(58)+" "+FNa(57):a$+=" "+FNa(59)+FNl(STR$(Bb%),10," ",TRUE):x%=f%!e%-LEN(a$)*f%!X%:PROCb(x%,f%!k%-f%!V%,a$,0):PROCi(l%):PROCn(r%):ENDPROC DEFPROCi(Wa%):LOCALa$:PROCa(FNb(1),0,0):a$=" = "+STR$(Wa%):PROCb(m%!e%,0,a$,0):ENDPROC DEFPROCn(Wa%):LOCALx%,a$:a$=FNa(60)+" "+FNa(59):a$+=FNl(STR$(Wa%),3,"0",TRUE):x%=f%!e%-LEN(a$)*f%!X%:PROCb(x%,0,a$,0):ENDPROC DEFPROCm(a$):LOCALx%,y%,P%:P%=LEN(a$)*f%!X%:x%=FNk(P%,f%!e%):y%=f%!k%-f%!V%:PROCb(x%,y%,a$,0):ENDPROC DEFPROCh(Cb%):LOCALDb%,Pa%,x%,a$:Db%=12:Pa%=16:w%!Ka%+=Cb%:a$=FNa(57)+" "+FNa(59):a$+=FNl(STR$(w%!Ka%),10," ",TRUE):PROCb(0,f%!k%-f%!V%,a$,0):IFw%!Ka%-p%!Db%>=5000THEN w%!Ja%+=1:PROCi(w%!Ja%):p%!Db%=w%!Ka%:p%!Pa%=0 ENDIF IFw%!Ka%>c%(1)THEN a$=FNa(58)+" "+FNa(57)+" ":a$+=FNa(59):a$+=FNl(STR$(w%!Ka%),10," ",TRUE):x%=f%!e%-LEN(a$)*f%!X%:PROCb(x%,f%!k%-f%!V%,a$,0) ENDIF ENDPROC DEFPROCF:LOCALQ%,jb%,kb%,Ta%:Q%=ga%:jb%=ka%:kb%=la%:Ta%=ma%:PROCx:PROCo:ENDPROC DEFPROCx:LOCALH%,M%,s%:d%!b%=50:d%!a%=550:d%!Q%=0:d%!fa%=0:d%!O%=3:d%!N%=d%!O%:d%!jb%=1:d%!kb%=d%!Ra%:d%!Ta%=1:s%=(d%!Ra%*G%!e%)+((d%!Ra%-1)*d%!Qa%):d%!e%=s%:d%!k%=d%!Sa%*G%!k%:FORM%=1TOd%!Ra%:FORH%=1TOd%!Sa% b%(M%,H%)=((H%+1)/2)+(d%!Q%*10):NEXTH%:NEXTM%:ENDPROC DEFPROCo:LOCALH%,M%,x%,y%,o%:o%=FNe(16):FORM%=d%!jb%TOd%!kb%:x%=d%!b%+((M%-1)*(G%!e%+d%!Qa%)):FORH%=d%!Ta%TOd%!Sa%:y%=d%!a%+((H%-1)*G%!k%):IFb%(M%,H%)>0THEN b%(M%,H%)=((H%+1)/2)+(d%!Q%*10) ENDIF IFb%(M%,H%)<>0THEN CASESGN(b%(M%,H%))OF WHEN-1:PROCS(x%,y%,M%,H%) WHEN1:PROCa(FNb(27)+STR$(b%(M%,H%)),x%,y%) ENDCASE ELSE:o%!b%=x%:o%!a%=y%:o%!e%=G%!e%:o%!k%=G%!k%:PROCd(o%) ENDIF NEXTH%:NEXTM%:PROCc(o%):ENDPROC DEFPROCS(x%,y%,r%,c%):LOCALo%:b%(r%,c%)+=1:PROCa(FNb(26),x%,y%):IFb%(r%,c%)=0THEN o%=FNe(16):o%!b%=x%:o%!a%=y%:o%!e%=G%!e%:o%!k%=G%!k%:PROCd(o%):PROCc(o%) ENDIF ENDPROC DEFPROCw:LOCALo%,i%:o%=FNe(16):FORi%=1TO3:d%!a%-=G%!k%/3:PROCo:NEXTi%:o%!b%=d%!b%:o%!a%=d%!a%+d%!k%:o%!e%=d%!e%:o%!k%=G%!k%:PROCd(o%):PROCc(o%):ENDPROC DEFPROCv:LOCALU%,`%,C%,rb%,Eb%,O%,i%,o$:O%=1:Fb%=24:U%=FNe(28):`%=FNe(28):PROCd(d%):PROCd(m%):IFq%!B%THEN PROCd(q%):q%!B%=FALSE ENDIF IFh%!B%THEN PROCd(h%):h%!B%=FALSE ENDIF FORi%=1TO7:IFa%(i%)!B%THEN PROCd(a%(i%)):a%(i%)!B%=FALSE ENDIF NEXTi%:m%!b%=FNh(m%,f%):U%!b%=0-G%!e%:U%!a%=m%!a%:U%!N%=O%:`%!b%=f%!e%:`%!a%=m%!a%:`%!N%=0-O%:w%!Ja%=0:PROCf(R%!ta%):PROCi(w%!Ja%):PROCn(w%!La%):PROCa(FNb(1),m%!b%,m%!a%):Q%=0:Eb%=FALSE:REPEAT:U%!b%+=U%!N%:U%!Fb%=U%!b%+G%!e%:`%!b%+=`%!N% SYSFNc(6)TOC%:IFC%-rb%>=50THENEb%=FNm(Eb%):rb%=C% IFEb%THENo$=FNb(21)ELSEo$=FNb(20) PROCa(o$,U%!b%,U%!a%):PROCa(o$,`%!b%,`%!a%):PROCe(2):WAIT:UNTILU%!Fb%>=m%!b%:FORi%=1TO10:PROCa(FNb(20),U%!b%,U%!a%):PROCa(FNb(20),`%!b%,`%!a%):PROCe(20):PROCa(FNb(21),U%!b%,U%!a%):PROCa(FNb(21),`%!b%,`%!a%):PROCe(20):WAIT:NEXTi%:PROCg(2):FORi%=1TO3 PROCa(FNb(2)+STR$(i%),m%!b%,m%!a%):PROCe(20):WAIT:NEXTi%:PROCe(20):PROCd(m%):PROCc(U%):PROCc(`%):ENDPROC DEFFNw(e$):LOCALGb%,F%:F%=FNE(e$)+256:Gb%=FNe(F%):!Gb%=F%:Gb%!4=0:Gb%!8=16:Gb%!12=16:SYSva%,256+10,Gb%,e$:SYSva%,256+17,Gb%:=Gb% DEFPROCb(x%,y%,a$,Hb%):LOCALi%,Ib%:ya%=xa%:Ib%=f%!X%:FORi%=1TOLEN(a$):PROCa(STR$(ASC(MID$(a$,i%,1))),x%+((i%-1)*Ib%),y%):IFHb%>0THENPROCe(Hb%) NEXTi%:ya%=wa%:ENDPROC DEFPROCa(z$,x%,y%):LOCALJb%:SYSva%,256+24,ya%,z$TO,,Jb%:SYSva%,512+34,ya%,Jb%,x%,y%,0:ENDPROC DEFPROCd(A%):GCOL0,0TINT0:RECTANGLEFILLA%!b%,A%!a%,A%!e%,A%!k%:ENDPROC DEFFNk(Kb%,f%):=(f%/2)-(Kb%/2) DEFPROCq(a$,Lb%):LOCALP%,y%:P%=LEN(a$)*f%!X%:y%=(f%!k%/2)-(f%!V%/2):PROCb(FNk(P%,f%!e%),y%,a$,Lb%):ENDPROC DEFFNh(Mb%,Nb%):=(Nb%!e%/2)-(Mb%!e%/2) DEFFNt(Mb%,Nb%):LOCALx%,y%:Mb%!b%=(Nb%!e%/2)-(Mb%!e%/2):Mb%!a%=(Nb%!k%/2)-(Mb%!k%/2):=Mb% DEFPROCf(a%):LOCALi%,Ob%:Ob%=f%!e%/R%!e%:FORi%=1TOOb%+1:PROCa(FNb(108),(i%-1)*R%!e%,a%):NEXTi%:ENDPROC DEFPROCl(A%):LOCALx%,y%,Pb%,Qb%,Rb%,Sb%,i%:Pb%=FNd(3,1):Qb%=FNd(3,2):Rb%=1:Sb%=3:FORi%=1TOA%!e%:x%=A%!b%+((i%-1)*Rb%):PROCa(FNb(113),x%,A%!a%):PROCa(FNb(113),x%,A%!a%+(A%!k%-(2*Sb%))):NEXTi%:x%=A%!b%+(A%!e%-Pb%):FORi%=1TOA%!k%-1 PROCa(FNb(114),A%!b%,A%!a%+((i%-1)*Rb%)):PROCa(FNb(114),x%,A%!a%+((i%-1)*Rb%)):NEXTi%:PROCa(FNb(111),A%!b%,A%!a%):PROCa(FNb(109),A%!b%,(A%!a%+A%!k%)-Qb%):PROCa(FNb(112),A%!b%+(A%!e%-Pb%),A%!a%):x%=(A%!b%+A%!e%)-Pb%:y%=(A%!a%+A%!k%)-Qb% PROCa(FNb(110),x%,y%):ENDPROC DEFFNs(e$,i$):LOCALTb%,Ub%,j$:Tb%=OPENIN(e$):INPUT#Tb%,j$:IFj$<>i$THENCLOSE#Tb%:ERROR255,"Bad Magic!" INPUT#Tb%,Ub%:CLOSE#Tb%:=Ub% DEFPROCk(e$,i$,RETURNi%(),RETURNf$()):LOCALTb%,i%,Ub%,j$:Tb%=OPENIN(e$):INPUT#Tb%,j$:IFj$<>i$THENCLOSE#Tb%:ERROR255,"Bad Magic!" INPUT#Tb%,Ub%:FORi%=1TOUb%:INPUT#Tb%,i%(i%),f$(i%):NEXTi%:CLOSE#Tb%:ENDPROC DEFFNa(Vb%):=FNu(Vb%,ba%,f%(),b$(),106) DEFFNb(Vb%):=FNu(Vb%,ca%,g%(),c$(),107) DEFFNc(Vb%):=FNu(Vb%,da%,h%(),d$(),108) DEFFNu(Vb%,Wb%,j%(),g$(),Xb%):LOCALi%,Yb%:Yb%=0:FORi%=1TOWb%:IFj%(i%)=Vb%THENYb%=i%:i%=Wb% NEXTi%:IFYb%=0THENERROR255,FNa(Xb%)+" "+STR$(Vb%) =FNo(g$(Yb%)) DEFFNA(e$):LOCALS%:S%=0:SYSFNc(31),,e$TOS%:=S% DEFPROCg(Zb%):LOCAL_b%,v$:_b%=0:v$=FNa(110)+" "+STR$(Zb%):IFE%!_b%>0THEN IFZb%<1ANDZb%>4THENERROR255,v$ OSCLI"SPlay_fire0"+STR$(Zb%)+"mhh" ENDIF ENDPROC DEFPROCp:LOCALo%:o%=FNe(20):o%!0=4:o%!4=5:o%!8=11:o%!12=12:o%!16=-1:SYSFNc(5),o%,o%:f%!pa%=o%!0:f%!qa%=o%!4:f%!e%=(o%!8)+1<f%!ra%THENPROCp CASE`b%OF WHEN1:ac%=F%<>f%!pa% WHEN4:ac%=F%>>f%!qa% OTHERWISE:ERROR255,FNa(103)+" "+STR$(`b%) ENDCASE =ac% DEFFNp(A%,cc%):LOCALdc%,ec%,fc%,gc%:fc%=FALSE:gc%=FALSE:IFA%!B%ANDcc%!B%THEN dc%=cc%!b%+cc%!e%:ec%=cc%!a%+cc%!k%:IFA%!b%>=cc%!b%ANDA%!b%=cc%!a%ANDA%!a%-1THEN SYS"TimPlayer_SongStop",,E%!4:SYS"TimPlayer_SongUnload",,E%!4 ENDIF PROCr:ENDPROC DEFFNj(A$,w$):LOCALf$,K%,Yb%:Yb%=FALSE:f$=STRING$(10," "):RIGHT$(f$,3)=" : ":LEFT$(f$,LEN(w$))=w$:K%=FNq(A$):IFK%=1THEN f$+="OK.":Yb%=TRUE ELSE:f$+="Missing!!" ENDIF PRINTf$:=Yb% DEFFNv(Ub%):LOCALg$,q$:q$=".Screens.":g$="Dump"+STR$(Ub%):IFFNq(q$+g$)<>0THEN REPEAT:Ub%+=1:g$="Dump"+STR$(Ub%):UNTILFNq(q$+g$)=0ORLEN(g$)>10:IFLEN(g$)>10THENUb%=-1 ENDIF =Ub% DEFFNn(n%):LOCALhc%:hc%=RND(100):=hc%<=n% DEFFNo(a$):LOCALi%,x$:FORi%=1TOLEN(a$):x$+=CHR$(ASC(MID$(a$,i%,1))EOR131):NEXTi%:=x$ DEFPROCe(n%):LOCALt%:t%=TIME+n%:REPEAT:UNTILTIME>=t%:ENDPROC DEFFNm(n%):=n%EOR1 DEFFNC(n%):LOCALc$,u%:u%=VAL(RIGHT$(STR$(n%),1)):c$=FNa(65):IFu%>=1ANDu%<=3THENc$=FNa(u%+61) =c$ DEFFNl(a$,ic%,y$,jc%):LOCALkc%,c$:kc%=ic%-LEN(a$):IFkc%<=0THEN c$=LEFT$(a$,ic%) ELSE:IFjc%THEN c$=STRING$(ic%,y$):RIGHT$(c$,LEN(a$))=a$ ELSE:c$=a$+STRING$(kc%,y$) ENDIF ENDIF =c$ DEFFNy(a$,ic%):LOCALc$:c$=STRING$(ic%," "):RIGHT$(c$,LEN(a$))=a$:=c$ DEFFNq(h$):LOCALYb%:SYS"XOS_File",17,h$TOYb%:=Yb% DEFFNE(h$):LOCALF%:SYSFNc(3),5,h$TO,,,,F%:=F% DEFFNx(`b%,h$):LOCALS%,lc%,mc%,nc%:nc%=FALSE:CASE`b%OF WHEN0:S%=OPENUP(h$+"chkfile") WHEN1:S%=OPENUP(h$) OTHERWISE:ERROR255,FNa(104)+" "+STR$(`b%) ENDCASE IFS%<>0THEN SYSFNc(4),254,S%TOmc%;lc%:IF(lc%AND1)THENCLOSE#S%:ERROR255,FNa(105) IF((mc%AND(1<<7))<>0)THENnc%=TRUE CLOSE#S% ENDIF =nc% DEFPROCA:LOCALoc%:pc%=0:qc%=0:SYSFNc(10),-1,-1TOrc%:SYSFNc(11)TOsc%;oc%:IFoc%AND1THENsc%=16384 PROCT(sc%):ENDPROC DEFPROCr:IFpc%THEN SYSFNc(10),pc%-32768,-1TOrc%:pc%=0:qc%=0 ENDIF ENDPROC DEFFNe(tc%):LOCALD%,F%:F%=(tc%+15)AND-4:D%=FNF(F%):IFD%ELSEERROR254,FNa(211) D%!0=&DEADDEAD:D%!4=tc%:!(D%-8+(D%!-4))=&DEADDEAD:=D%+8 DEFPROCc(RETURND%):D%-=8:IFD%!0<>&DEADDEADTHENERROR254,FNa(212) IF!(D%-8+(D%!-4))<>&DEADDEADTHEN ERROR254,FNa(213) ENDIF qc%-=D%!-4:SYSFNc(12),3,pc%,D%:D%=0:ENDPROC DEFFNz(D%):LOCALo%:o%=D%-4:=o%!0 DEFFNf(D%,Cb%):PROCu(D%,Cb%):=D% DEFPROCu(D%,Cb%):LOCAL_%,F%:F%=FNz(D%):FOR_%=0TOF%-4STEP4:D%!_%=Cb%:NEXT_%:ENDPROC DEFFNg(D%):LOCALuc%,_%,F%:F%=FNz(D%):uc%=FNe(F%):FOR_%=0TOF%-4STEP4:uc%!_%=D%!_%:NEXT_%:=uc% DEFPROCT(F%):IFpc%THENERROR254,FNa(215) F%=(F%+sc%-1)ANDNOT(sc%-1):pc%=HIMEM:SYSFNc(10),rc%+F%,-1TOrc%:F%=rc%+32768-pc%:IFF%<1THEN pc%=0:ERROR254,FNa(216) ELSE:SYSFNc(12),0,pc%,,F% ENDIF qc%=0:ENDPROC DEFPROCU(tc%):LOCALvc%:vc%=rc%:SYSFNc(10),rc%+tc%,-1TOrc%:tc%=rc%-vc%:IFtc%THENSYSFNc(12),5,pc%,,tc%TO,,,tc% ENDPROC DEFFNF(tc%):LOCALD%,oc%:SYSFNc(13),2,pc%,,tc%TO,,D%;oc%:IFoc%AND1THEN PROCU((tc%+sc%)ANDNOT(sc%-1)):SYSFNc(13),2,pc%,,tc%TO,,D%;oc%:IFoc%AND1THEN=0 ENDIF qc%+=D%!-4:=D%