REM Acorn Invaders REM Packed by Make v1.41 15/5/08 On 08 Aug 2008 ONERRORPROCy: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):PROCz:k%=FNf(52,0):k%!0=1:k%!4=-1:k%!40=FNv(0):IFk%!40=-1THENERROR255,FNa(109) PRINTFNa(15)+STR$(k%!40):aa%=FALSE:k%!44=TRUE:ea%=0:DIMa$(10),c%(10):DIMd%(10):PRINTFNa(8)+" "+FNa(22):b%=0:a%=4:e%=8:m%=12:N%=16:O%=20:C%=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:U%=32:sa%=16:ta%=20:PRINT:PRINTFNa(8)+" "+FNa(1)+" ";:ua%=0:SYSFNc(30)TOua%:PRINTFNa(21)+" "+STR$(ua%/100):k%!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);:G%=OPENIN(b$+"Creds"):INPUT#G%,i$:IFi$<>"DERC"THEN CLOSE#G%:ERROR255,FNa(101):END ENDIF INPUT#G%,ea%:DIMe$(ea%),e%(ea%):FORi%=1TOea%:INPUT#G%,e%(i%),e$(i%):NEXTi%:CLOSE#G%:PRINTFNa(14):PRINT:PRINTFNa(7):t$=b$+"HiTable":IFFNq(t$)<>1THEN IFNOTFNx(0,k$)THEN k%!44=FALSE:PRINTFNa(19)+" "+FNa(10)+" "+FNa(20) ELSE:PRINTFNa(19)+" "+FNa(11)+" "+FNa(20) ENDIF PROCA(k%!44) ELSE:IFNOTFNx(1,t$)THEN k%!44=FALSE:PRINTFNa(18)+" "+FNa(10)+" "+FNa(20) ELSE:PRINTFNa(18)+" "+FNa(11)+" "+FNa(20) ENDIF PROCB ENDIF PRINT:PRINTFNa(12):PROCe(150):f%=FNe(36):R%=FNe(24):L%=FNe(16):CLS:PROCq:f%!X%=FNd(8,1):f%!U%=FNd(8,2)+7:R%!e%=FNd(6,1):R%!m%=FNd(6,2):R%!sa%=f%!m%-50:R%!ta%=30:SYSFNc(33),k%!4:SYSFNc(36),k%!4,128:WHILENOTFNB:CLS:PROCC:ENDWHILE CLS:L%!e%=220:L%!m%=40:L%=FNt(L%,f%):L%!a%-=3:PROCl(L%):PROCr(FNa(31),10):IFk%!0=1THEN SYSFNc(36),k%!4,-1TO,za%:FORi%=za%TO0STEP-2:SYSFNc(36),k%!4,i%:PROCe(4):NEXTi%:SYSFNc(35),k%!4:SYSFNc(32),k%!4:k%!4=-1 ENDIF PROCs:END DEFFNB:LOCALi%,I%,J%,w%,P%,h%,V%,Aa%,Ba%:LOCALo%,S%,Ca%,Da%,Ea%,Y%,Fa%,Ga%,Ha%:LOCALx%,y%,K%,Ia%,s$,a$:Ia%=44:I%=FNf(16,0):J%=FNf(16,0):w%=FNf(16,0):h%=FNf(16,0):V%=FNf(16,0):S%=FNf(16,0):o%=FNf(16,0):I%!e%=FNd(100,1):I%!m%=FNd(40,2) I%!b%=FNg(I%,f%):I%!a%=800:J%!e%=FNd(150,1):J%!m%=FNd(40,2):J%!b%=FNg(J%,f%):J%!a%=I%!a%-J%!m%:w%!e%=720:w%!m%=500:w%!b%=FNg(w%,f%):w%!a%=200:h%!e%=FNd(40,1):h%!m%=FNd(20,2):h%!b%=(w%!b%+w%!e%/2)-150:h%!a%=(w%!a%+w%!m%)-125 o%!e%=FNd(30,1):o%!m%=FNd(15,2):V%!e%=FNd(20,1):V%!m%=FNd(20,2):V%!b%=(w%!b%+w%!e%/2)-150:V%!b%+=FNg(V%,h%):Aa%=FNh(V%):Ba%=FNh(V%)::Ba%!a%=h%!a%-40-Ba%!m%:Aa%!a%=Ba%!a%-40-Aa%!m%:V%!a%=Aa%!a%-40-V%!m% S%!e%=FNd(20,1):S%!m%=FNd(20,2):S%!b%=(w%!b%+w%!e%/2)-120:Ca%=FNh(S%):Da%=FNh(S%):Ea%=FNh(S%):Ea%!b%=w%!b%:Ja%=FNh(Ea%):Fa%=FNh(Ea%):Y%=FNh(S%):Y%!b%=w%!b%:Y%!b%+=(w%!e%/2)+10:Ga%=FNh(Y%):Ha%=FNh(Y%) :S%!a%=(w%!a%+w%!m%)-120:Ca%!a%=S%!a%-60:Da%!a%=Ca%!a%-60:Fa%!a%=Da%!a%-90:Ja%!a%=Fa%!a%-60:Ea%!a%=Ja%!a%-60:Y%!a%=Da%!a%-90:Ga%!a%=Y%!a%-60:Ha%!a%=Ga%!a%-60:CLS:PROCf(R%!sa%):PROCf(R%!ta%):PROCm: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%!U%:PROCb(FNk(P%,f%!e%),y%,a$,11) WHILENOTINKEY(-99)ANDNOTINKEY(-17)ANDNOTINKEY(-82):y%=w%!a%+w%!m%:FORi%=1TOea%:a$=FNo(e$(i%)):x%=FNi(a$):CASEe%(i%)OF WHEN-1:y%-=f%!U% WHEN-2:y%-=(2*f%!U%) OTHERWISE:y%-=e%(i%) ENDCASE PROCb(x%,y%,a$,0):NEXTi%:K%=FNr:IFK%=1THEN=TRUE IFK%=2THEN=FALSE PROCd(w%):a$=FNa(57)+" "+FNa(34):x%=FNi(a$):y%=w%!a%+w%!m%-20:PROCb(x%,y%,a$,0):a$=FNa(35):y%-=f%!U%: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),Ba%!b%,Ba%!a%):a$=FNa(37)+" "+FNa(40):PROCb(x%,Ba%!a%+12,a$,0):PROCa(FNb(22),Aa%!b%,Aa%!a%):a$=FNa(38)+" "+FNa(40):PROCb(x%,Aa%!a%+12,a$,0):PROCa(FNb(20),V%!b%,V%!a%):a$=FNa(39)+" "+FNa(40):PROCb(x%,V%!a%+12,a$,0) P%=o%!e%/f%!X%+2:s$=FNa(66):a$=s$+STRING$(P%," ")+FNa(67):x%=FNi(a$):y%=V%!a%-(3*f%!U%):PROCb(x%,y%,a$,0):o%!b%=x%+7+(LEN(s$)*f%!X%):o%!a%=y%:PROCa(FNb(1),o%!b%,o%!a%):K%=FNr:IFK%=1THEN=TRUE IFK%=2THEN=FALSE PROCd(w%):a$=FNa(41):x%=FNi(a$):y%=w%!a%+w%!m%-20:PROCb(x%,y%,a$,0):x%=S%!b%+S%!e%+10:PROCa(FNb(102),S%!b%,S%!a%):a$=FNa(42)+" "+FNa(43):PROCb(x%,S%!a%+12,a$,0):PROCa(FNb(103),Ca%!b%,Ca%!a%):a$=FNa(42)+" "+FNa(44):PROCb(x%,Ca%!a%+12,a$,0) PROCa(FNb(104),Da%!b%,Da%!a%):PROCb(x%,Da%!a%+12,FNa(45),0):x%=Ea%!b%+Ea%!e%+10:PROCa(FNb(105),Ja%!b%,Ja%!a%):a$=FNa(46)+" "+FNa(49):PROCb(x%,Ja%!a%+12,a$,0):PROCa(FNb(117),Fa%!b%,Fa%!a%):PROCb(x%,Fa%!a%+12,FNa(76),0) PROCa(FNb(107),Ea%!b%,Ea%!a%):a$=FNa(48)+" "+FNa(49):PROCb(x%,Ea%!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),Ga%!b%,Ga%!a%):a$=FNa(47)+" "+FNa(77)+" ":a$+=FNa(74) PROCb(x%,Ga%!a%+12,a$,0):PROCa(FNb(116),Ha%!b%,Ha%!a%):a$=FNa(47)+" "+FNa(77)+" ":a$+=FNa(75):PROCb(x%,Ha%!a%+12,a$,0):K%=FNr:IFK%=1THEN=TRUE IFK%=2THEN=FALSE PROCd(w%):a$=FNa(50):IFk%!Ia%THENa$=FNa(51) x%=FNi(a$):y%=w%!a%+w%!m%-20:PROCb(x%,y%,a$,0):a$=FNa(58)+" "+FNa(52):x%=FNi(a$):y%-=f%!U%:PROCb(x%,y%,a$,0):y%=(w%!a%+w%!m%)-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%!U% 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%!U%+5)),a$,0):NEXTi%:K%=FNr:IFK%=1THEN=TRUE IFK%=2THEN=FALSE PROCd(w%):ENDWHILE:ERROR255,FNa(102):=FALSE DEFFNr:LOCALt%,K%:t%=TIME+750:K%=FALSE:REPEAT:IFINKEY(-82)THENPROCt IFINKEY(-102)THENPROCu IFINKEY(-59)THENPROCj(4) IFINKEY(-60)THENPROCj(-4) UNTILTIME>=t%ORINKEY(-17)ORINKEY(-99):IFINKEY(-17)THENK%=1 IFINKEY(-99)THENK%=2 IFK%THEN PROCc(I%):PROCc(J%):PROCc(w%):PROCc(h%):PROCc(V%):PROCc(Aa%):PROCc(Ba%):PROCc(S%):PROCc(Ca%):PROCc(Da%):PROCc(Ea%):PROCc(Y%):PROCc(Ja%):PROCc(Fa%):PROCc(Ga%):PROCc(Ha%):PROCc(o%) ENDIF =K% DEFFNi(a$):LOCALP%:P%=LEN(a$)*f%!X%:=w%!b%+FNk(P%,w%!e%) DEFPROCC:LOCALo%,q%,h%,d%,A%:LOCALF%:LOCALb%(),a%():LOCALKa%,La%,Ma%,Na%:LOCALZ%,Oa%,Pa%:LOCALQa%:LOCALRa%,Sa%,Ta%,Ua%,Va%:LOCALWa%,P%,a$,x%,y%,i%,j%:o%=FNe(32):q%=FNe(28):h%=FNe(48):d%=FNe(68):F%=FNe(16):A%=FNf(16,0):DIMb%(10,6),a%(7) Ka%=0:La%=4:Ma%=8:Na%=12:Qa%=16:Z%=28:Ra%=ha%:Sa%=ia%:Ta%=ja%:Ua%=ma%:Va%=na%:o%!e%=FNd(30,1):o%!m%=FNd(15,2):o%!b%=FNg(o%,f%):o%!a%=50:o%!O%=6:o%!N%=o%!O%:F%!e%=FNd(20,1):F%!m%=FNd(20,2) h%!e%=FNd(40,1):h%!m%=FNd(20,2):h%!a%=R%!sa%-(10+h%!m%):h%!O%=5:h%!C%=FALSE:h%!ia%=1:q%!e%=FNd(5,1):q%!m%=FNd(20,2):q%!C%=FALSE:q%!O%=10:A%!Ma%=1:A%!Ka%=3:A%!Na%=FALSE:k%!Qa%=-1:d%!Ra%=FNd(20,1):d%!Sa%=10:d%!Ta%=6:d%!C%=TRUE:d%!Va%=4 SYSFNc(6)TOd%!oa%:FORi%=1TO7:a%(i%)=FNf(48,0):a%(i%)!e%=FNd(5,1):a%(i%)!m%=FNd(20,2):SYSFNc(6)TOa%(i%)!ia%:SYSFNc(6)TOa%(i%)!ja%:NEXTi%:PROCf(R%!sa%):PROCf(R%!ta%):PROCD(0,c%(1),A%!Ka%,A%!Ma%):PROCE:PROCa(FNb(1),o%!b%,o%!a%) WHILEA%!Ka%>0:Wa%=FALSE:IFk%!Z%=0THEN IFINKEY(-74)THENPROCF(o%!b%,o%!a%) IFINKEY(-98)THENPROCG:Wa%=TRUE IFINKEY(-67)THENPROCH:Wa%=TRUE IFINKEY(-17)THENPROCI ENDIF IFINKEY(-102)THENPROCu IFINKEY(-82)THENPROCt IFINKEY(-56)THENPROCJ IFINKEY(-59)THENPROCj(4) IFINKEY(-60)THENPROCj(-4) IFk%!Z%=0THEN IFWa%THEN o%!b%+=o%!N%:PROCa(FNb(1),o%!b%,o%!a%) ENDIF ENDIF IFk%!Z%=0THEN PROCK:PROCL:PROCM:PROCN:PROCO ELSE:PROCP ENDIF WAIT:ENDWHILE:L%!e%=240:L%!m%=40:L%=FNt(L%,f%):L%!a%-=3:PROCd(L%):PROCl(L%):a$=FNa(49)+" "+FNa(53):PROCr(a$,11):PROCe(750):IFNOTA%!Na%THEN IFA%!La%>=c%(10)THEN PROCQ(A%) ENDIF ENDIF PROCc(o%):PROCc(d%):PROCc(h%):PROCc(q%):PROCc(A%):PROCc(F%):FORi%=1TO7:PROCc(a%(i%)):NEXTi%:ENDPROC DEFPROCG:IFo%!b%<=0THEN o%!b%=0 ELSE:o%!N%=0-o%!O% ENDIF ENDPROC DEFPROCH:IFo%!b%>=f%!e%-o%!e%THEN o%!b%=f%!e%-o%!e% ELSE:o%!N%=0+o%!O% ENDIF ENDPROC DEFPROCF(x%,y%):IFNOTq%!C%THEN q%!C%=TRUE:q%!b%=x%+(o%!e%/2):q%!a%=y%+o%!m%:PROCg(4) ENDIF ENDPROC DEFPROCt:LOCALXa%,Ya%,u$:Xa%=40:Ya%=44:IFk%!Ya%THEN REPEAT:UNTILNOTINKEY(-82):k%!Xa%=FNv(k%!Xa%):IFk%!Xa%=-1THENERROR255,FNa(109) u$=".Screens.Dump"+STR$(k%!Xa%):OSCLI"ScreenSave "+u$ ENDIF ENDPROC DEFPROCI:LOCALi%:FORi%=1TO7:a%(i%)!C%=FALSE:NEXTi%:A%!Ka%=0:A%!Na%=TRUE:ENDPROC DEFPROCu:LOCALZa%,_a%:Za%=0:_a%=4:REPEAT:UNTILNOTINKEY(-102):k%!Za%+=1:IFk%!Za%>2THENk%!Za%=0 IFk%!Za%=1THEN SYSFNc(33),k%!_a% ELSE:SYSFNc(34),k%!_a% ENDIF PROCm:ENDPROC DEFPROCj(`a%):LOCALZa%,_a%,ab%,D%,za%,bb%:Za%=0:_a%=4:ab%=8:IFk%!Za%=1THEN SYSFNc(6)TOD%:IFD%-k%!ab%>=10THEN SYSFNc(36),k%!_a%,-1TO,za%:bb%=za%+`a%:IFbb%>=0ANDbb%<=128THEN SYSFNc(36),k%!_a%,bb%:k%!ab%=D% ENDIF ENDIF ENDIF ENDPROC DEFPROCJ:LOCALZ%,Oa%,a$:Z%=28:Oa%=32:REPEATUNTILNOTINKEY(-56):a$=FNa(49)+" "+FNa(61):k%!Z%=FNm(k%!Z%):k%!Oa%=k%!Z%:IFk%!Z%=0THEN a$=STRING$(LEN(a$)," "):PROCn(a$) ENDIF ENDPROC DEFPROCK:IFq%!C%THEN IFq%!a%>=R%!sa%-q%!m%THEN q%!C%=FALSE:q%!a%-=2:PROCd(q%) ELSE:PROCa(FNb(5),q%!b%,q%!a%) ENDIF q%!a%+=q%!O% ENDIF ENDPROC DEFPROCL:LOCALcb%,db%,eb%,D%,fb%,d$:cb%=ga%:db%=ha%:eb%=ia%:IFNOTh%!C%THEN IFFNn(4)ANDFNn(5)THEN h%!C%=TRUE:h%!fa%=FALSE:h%!db%=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%!cb%=FALSE:h%!C%=FALSE:ENDPROC ENDIF IFh%!b%>f%!e%ANDSGN(h%!N%)=1THEN h%!cb%=FALSE:h%!C%=FALSE:ENDPROC ENDIF IFNOTh%!fa%THEN IFFNp(q%,h%)THEN PROCd(q%):PROCa(FNb(12),h%!b%,h%!a%):SYSFNc(6)TOh%!cb%:h%!fa%=TRUE:q%!C%=FALSE:PROCh(500) ENDIF ELSE:IFFNp(q%,h%)THEN PROCd(q%):q%!C%=FALSE ENDIF ENDIF IFNOTh%!fa%THEN SYSFNc(6)TOD%:IFD%-h%!eb%>=40THEN h%!eb%=D%:h%!db%=FNm(h%!db%) ENDIF d$=FNb(10)+STR$(h%!db%):PROCa(d$,h%!b%,h%!a%):h%!b%+=h%!N% ELSE:SYSFNc(6)TOD%:fb%=D%-h%!cb%:IFfb%>=300THEN h%!C%=FALSE:h%!db%=1:PROCd(h%) ELSE:IFfb%>=250THEN PROCa(FNb(15),h%!b%,h%!a%) ELSE:IFfb%>=200THEN PROCa(FNb(14),h%!b%,h%!a%) ELSE:IFfb%>=100THEN PROCa(FNb(13),h%!b%,h%!a%) ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF ENDPROC DEFPROCM:LOCALgb%,z%,H%,M%,hb%,ib%,jb%,_%:LOCALQ%,kb%,lb%,D%,mb%:Q%=ga%:kb%=ka%:lb%=la%:mb%=oa%:SYSFNc(6)TOD%:IFD%-d%!mb%>=50THEN d%!mb%=D%:d%!Q%=FNm(d%!Q%) ENDIF gb%=d%!b%+d%!e%:_%=0-((d%!kb%-1)*(F%!e%+d%!Ra%)):IFgb%>=f%!e%THEN d%!N%=0-d%!O%:PROCv ENDIF IFd%!b%<=_%THEN d%!N%=0+d%!O%:PROCv ENDIF _%=d%!a%+((d%!Ua%-1)*F%!m%):IF_%<=o%!a%+o%!m%THEN PROCR:ENDPROC ENDIF IFFNp(q%,d%)THEN z%=F%!e%+d%!Ra%:IF(q%!b%-d%!b%)MODz%<=F%!e%THEN H%=((q%!a%-d%!a%)DIVF%!m%)+1:M%=((q%!b%-d%!b%)DIVz%)+1:IFSGN(b%(M%,H%))=1THEN b%(M%,H%)=-5:PROCd(q%):q%!C%=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%!Sa%*d%!Ta%THEN A%!Ma%+=1:PROCd(d%):PROCf(R%!ta%):PROCi(A%!Ka%):PROCo(A%!Ma%):PROCa(FNb(1),o%!b%,o%!a%):PROCw ENDIF hb%=TRUE:ib%=TRUE:FORH%=1TOd%!Ta%:IFb%(d%!lb%,H%)<>0THENhb%=FALSE IFb%(d%!kb%,H%)<>0THENib%=FALSE NEXTH%:jb%=TRUE:FORM%=1TOd%!Sa%:IFb%(M%,d%!Ua%)<>0THENjb%=FALSE NEXTM%:IFib%THENd%!kb%+=1 IFhb%THEN d%!e%-=(F%!e%+d%!Ra%):d%!lb%-=1 ENDIF IFjb%THENd%!Ua%+=1 d%!b%+=d%!N%:PROCp:ENDPROC DEFPROCN:LOCALQ%,nb%,fb%,ob%,i%,j%,x%,y%:LOCALpb%,qb%,d$,p$,rb%,D%:Q%=ga%:nb%=ha%:fb%=ia%:sb%=ja%:FORi%=1TO7:IFNOTa%(i%)!C%THEN pb%=RND(10):qb%=A%!Ma%+5:IFqb%>100THEN qb%=100:IFA%!Ma%MOD10=0THENd%!Va%+=1 ENDIF IFFNn(qb%)ANDFNn(d%!Va%)THEN IFb%(pb%,d%!Ua%)>0THEN x%=d%!b%+(pb%-1)*(F%!e%+d%!Ra%):y%=d%!a%+((d%!Ua%-1)*F%!m%)-F%!m%:rb%=(F%!e%/2)-(a%(i%)!e%/2):a%(i%)!b%=x%+rb%:a%(i%)!a%=y%:a%(i%)!C%=TRUE:a%(i%)!fa%=FALSE:a%(i%)!nb%=1:a%(i%)!Q%=0:ob%=4:IFFNn(25)THENa%(i%)!nb%=2:ob%=ob%/2 a%(i%)!O%=ob%:a%(i%)!N%=a%(i%)!O%:PROCg(3) ENDIF ENDIF ELSE:SYSFNc(6)TOD%:IFD%-a%(i%)!sb%>=40THEN a%(i%)!sb%=D%:a%(i%)!Q%+=1 ENDIF IFa%(i%)!nb%=1ANDa%(i%)!Q%>1THEN a%(i%)!Q%=0 ENDIF IFa%(i%)!nb%=2ANDa%(i%)!Q%>3THEN a%(i%)!Q%=0 ENDIF p$=STR$(a%(i%)!Q%):IFa%(i%)!nb%=2ANDa%(i%)!Q%=3THENp$="1" d$=FNb(30)+STR$(a%(i%)!nb%)+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%!m%+5)THEN a%(i%)!C%=FALSE:PROCd(a%(i%)) ENDIF IFFNp(a%(i%),o%)ANDa%(i%)!C%THEN PROCg(2):FORj%=1TO3:PROCa(FNb(2)+STR$(j%),o%!b%,o%!a%):PROCe(20):WAIT:NEXTj%:PROCd(o%):IFq%!C%THEN PROCd(q%):q%!C%=FALSE ENDIF o%!b%=FNg(o%,f%):A%!Ka%-=1:PROCi(A%!Ka%):PROCd(a%(i%)):a%(i%)!C%=FALSE:PROCa(FNb(1),o%!b%,o%!a%) ENDIF IFFNp(q%,a%(i%))THEN IFa%(i%)!nb%=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%)!fb% ENDIF ENDIF PROCd(q%):q%!C%=FALSE ENDIF IFa%(i%)!fa%THEN SYSFNc(6)TOD%:IFD%-a%(i%)!fb%>=40THEN PROCd(a%(i%)):a%(i%)!C%=FALSE ENDIF ENDIF ENDIF NEXTi%:ENDPROC DEFPROCP:LOCALZ%,Oa%,Pa%,D%,a$:Z%=28:Oa%=32:Pa%=36:SYSFNc(6)TOD%:IFD%-k%!Pa%>=50THEN k%!Oa%=FNm(k%!Oa%):k%!Pa%=D% ENDIF a$=FNa(49)+" "+FNa(61):IFk%!Oa%=0ORk%!Z%=0THEN a$=STRING$(LEN(a$)," ") ENDIF PROCn(a$):ENDPROC DEFPROCO:LOCALQa%,tb%,ub%,D%,a$:Qa%=16:tb%=20:ub%=24:IFk%!Qa%>=0THEN SYSFNc(6)TOD%:a$=FNa(66)+" "+FNa(72):IFD%-k%!ub%>=50THEN k%!ub%=D%:k%!tb%=FNm(k%!tb%):IFk%!tb%=1THENk%!Qa%+=1 ENDIF IFk%!tb%=0THEN a$=STRING$(LEN(a$)," ") ENDIF IFk%!Qa%>5THEN a$=STRING$(LEN(a$)," "):k%!Qa%=-1 ENDIF PROCn(a$) ENDIF ENDPROC DEFPROCA(vb%):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%:IFvb%THENPROCx ENDPROC DEFPROCB:LOCALi%,G%:G%=OPENIN(b$+"HiTable"):FORi%=1TO10:INPUT#G%,a$(i%),c%(i%),d%(i%):NEXTi%:CLOSE#G%:ENDPROC DEFPROCx:LOCALi%,G%:G%=OPENOUT(b$+"HiTable"):FORi%=1TO10:PRINT#G%,a$(i%),c%(i%),d%(i%):NEXTi%:CLOSE#G%:ENDPROC DEFPROCQ(A%):LOCALJ%,I%,wb%,g%,i%,xb%,P%,x%,y%,a$:LOCALIa%:I%=FNe(16):J%=FNe(16):Ia%=44:I%!e%=FNd(100,1):I%!m%=FNd(40,2):I%!b%=FNg(I%,f%):I%!a%=800:J%!e%=FNd(150,1):J%!m%=FNd(40,2):J%!b%=FNg(J%,f%):J%!a%=I%!a%-J%!m%:xb%=0:FORi%=10TO1STEP-1 IFA%!La%>=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%)=A%!La%:d%(xb%)=A%!Ma%: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$(A%!La%) 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%!m%=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$<>""THENPROCb(x%,y%,a$,0) UNTILwb%:IFa$=""ORa$=" "THENa$=FNa(56) a$(xb%)=FNo(a$):IFk%!Ia%THENPROCx ENDPROC DEFFND(yb%):LOCALzb%:zb%=FALSE:IFyb%>=32ANDyb%<=126THENzb%=TRUE =zb% DEFPROCD(Ab%,Bb%,l%,r%):LOCALx%,a$:a$=FNa(57)+" "+FNa(59):a$+=FNl(STR$(Ab%),10," ",TRUE):PROCb(0,f%!m%-f%!U%,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%!m%-f%!U%,a$,0):PROCi(l%):PROCo(r%):PROCm:ENDPROC DEFPROCi(Xa%):LOCALa$:PROCa(FNb(1),0,0):a$=" = "+STR$(Xa%):PROCb(o%!e%,0,a$,0):ENDPROC DEFPROCo(Xa%):LOCALx%,a$:a$=FNa(60)+" "+FNa(59):a$+=FNl(STR$(Xa%),3,"0",TRUE):x%=f%!e%-LEN(a$)*f%!X%:PROCb(x%,0,a$,0):ENDPROC DEFPROCn(a$):LOCALx%,y%,P%:P%=LEN(a$)*f%!X%:x%=FNk(P%,f%!e%):y%=f%!m%-f%!U%:PROCb(x%,y%,a$,0):ENDPROC DEFPROCh(Cb%):LOCALDb%,Qa%,x%,a$:Db%=12:Qa%=16:A%!La%+=Cb%:a$=FNa(57)+" "+FNa(59):a$+=FNl(STR$(A%!La%),10," ",TRUE):PROCb(0,f%!m%-f%!U%,a$,0):IFA%!La%-k%!Db%>=5000THEN A%!Ka%+=1:PROCi(A%!Ka%):k%!Db%=A%!La%:k%!Qa%=0 ENDIF IFA%!La%>c%(1)THEN a$=FNa(58)+" "+FNa(57)+" ":a$+=FNa(59):a$+=FNl(STR$(A%!La%),10," ",TRUE):x%=f%!e%-LEN(a$)*f%!X%:PROCb(x%,f%!m%-f%!U%,a$,0) ENDIF ENDPROC DEFPROCm:LOCALEb%,Fb%,d$:Fb%=FNe(16):Eb%=0:Fb%!e%=FNd(20,1):Fb%!m%=FNd(10,2):Fb%!b%=FNg(Fb%,f%):Fb%!a%=0:IFk%!Eb%<0ORk%!Eb%>2THEN ERROR255,FNa(111)+" "+STR$(k%!Eb%) ENDIF d$=FNb(120+k%!Eb%):PROCa(d$,Fb%!b%,Fb%!a%):PROCc(Fb%):ENDPROC DEFPROCE:LOCALQ%,kb%,lb%,Ua%:Q%=ga%:kb%=ka%:lb%=la%:Ua%=ma%:PROCw:PROCp:ENDPROC DEFPROCw:LOCALH%,M%,s%:d%!b%=50:d%!a%=550:d%!Q%=0:d%!fa%=0:d%!O%=3:d%!N%=d%!O%:d%!kb%=1:d%!lb%=d%!Sa%:d%!Ua%=1:s%=(d%!Sa%*F%!e%)+((d%!Sa%-1)*d%!Ra%):d%!e%=s%:d%!m%=d%!Ta%*F%!m%:FORM%=1TOd%!Sa%:FORH%=1TOd%!Ta% b%(M%,H%)=((H%+1)/2)+(d%!Q%*10):NEXTH%:NEXTM%:ENDPROC DEFPROCp:LOCALH%,M%,x%,y%,p%:p%=FNe(16):FORM%=d%!kb%TOd%!lb%:x%=d%!b%+((M%-1)*(F%!e%+d%!Ra%)):FORH%=d%!Ua%TOd%!Ta%:y%=d%!a%+((H%-1)*F%!m%):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:p%!b%=x%:p%!a%=y%:p%!e%=F%!e%:p%!m%=F%!m%:PROCd(p%) ENDIF NEXTH%:NEXTM%:PROCc(p%):ENDPROC DEFPROCS(x%,y%,r%,c%):LOCALp%:b%(r%,c%)+=1:PROCa(FNb(26),x%,y%):IFb%(r%,c%)=0THEN p%=FNe(16):p%!b%=x%:p%!a%=y%:p%!e%=F%!e%:p%!m%=F%!m%:PROCd(p%):PROCc(p%) ENDIF ENDPROC DEFPROCv:LOCALp%,i%:p%=FNe(16):FORi%=1TO3:d%!a%-=F%!m%/3:PROCp:NEXTi%:p%!b%=d%!b%:p%!a%=d%!a%+d%!m%:p%!e%=d%!e%:p%!m%=F%!m%:PROCd(p%):PROCc(p%):ENDPROC DEFPROCR:LOCALT%,`%,D%,sb%,Gb%,O%,i%,o$:O%=1:Hb%=24:T%=FNe(28):`%=FNe(28):PROCd(d%):PROCd(o%):IFq%!C%THEN PROCd(q%):q%!C%=FALSE ENDIF IFh%!C%THEN PROCd(h%):h%!C%=FALSE ENDIF FORi%=1TO7:IFa%(i%)!C%THEN PROCd(a%(i%)):a%(i%)!C%=FALSE ENDIF NEXTi%:o%!b%=FNg(o%,f%):T%!b%=0-F%!e%:T%!a%=o%!a%:T%!N%=O%:`%!b%=f%!e%:`%!a%=o%!a%:`%!N%=0-O%:A%!Ka%=0:PROCf(R%!ta%):PROCi(A%!Ka%):PROCo(A%!Ma%):PROCa(FNb(1),o%!b%,o%!a%):Q%=0:Gb%=FALSE:REPEAT:T%!b%+=T%!N%:T%!Hb%=T%!b%+F%!e%:`%!b%+=`%!N% SYSFNc(6)TOD%:IFD%-sb%>=50THENGb%=FNm(Gb%):sb%=D% IFGb%THENo$=FNb(21)ELSEo$=FNb(20) PROCa(o$,T%!b%,T%!a%):PROCa(o$,`%!b%,`%!a%):PROCe(2):WAIT:UNTILT%!Hb%>=o%!b%:FORi%=1TO10:PROCa(FNb(20),T%!b%,T%!a%):PROCa(FNb(20),`%!b%,`%!a%):PROCe(20):PROCa(FNb(21),T%!b%,T%!a%):PROCa(FNb(21),`%!b%,`%!a%):PROCe(20):WAIT:NEXTi%:PROCg(2):FORi%=1TO3 PROCa(FNb(2)+STR$(i%),o%!b%,o%!a%):PROCe(20):WAIT:NEXTi%:PROCe(20):PROCd(o%):PROCc(T%):PROCc(`%):ENDPROC DEFFNw(e$):LOCALIb%,E%:E%=FNE(e$)+256:Ib%=FNe(E%):!Ib%=E%:Ib%!4=0:Ib%!8=16:Ib%!12=16:SYSva%,256+10,Ib%,e$:SYSva%,256+17,Ib%:=Ib% DEFPROCb(x%,y%,a$,Jb%):LOCALi%,Kb%:ya%=xa%:Kb%=f%!X%:FORi%=1TOLEN(a$):PROCa(STR$(ASC(MID$(a$,i%,1))),x%+((i%-1)*Kb%),y%):IFJb%>0THENPROCe(Jb%) NEXTi%:ya%=wa%:ENDPROC DEFPROCa(z$,x%,y%):LOCALLb%:SYSva%,256+24,ya%,z$TO,,Lb%:SYSva%,512+34,ya%,Lb%,x%,y%,0:ENDPROC DEFPROCd(B%):GCOL0,0TINT0:RECTANGLEFILLB%!b%,B%!a%,B%!e%,B%!m%:ENDPROC DEFFNk(Mb%,f%):=(f%/2)-(Mb%/2) DEFPROCr(a$,Nb%):LOCALP%,y%:P%=LEN(a$)*f%!X%:y%=(f%!m%/2)-(f%!U%/2):PROCb(FNk(P%,f%!e%),y%,a$,Nb%):ENDPROC DEFFNg(Ob%,Pb%):=(Pb%!e%/2)-(Ob%!e%/2) DEFFNt(Ob%,Pb%):LOCALx%,y%:Ob%!b%=(Pb%!e%/2)-(Ob%!e%/2):Ob%!a%=(Pb%!m%/2)-(Ob%!m%/2):=Ob% DEFPROCf(a%):LOCALi%,Qb%:Qb%=f%!e%/R%!e%:FORi%=1TOQb%+1:PROCa(FNb(108),(i%-1)*R%!e%,a%):NEXTi%:ENDPROC DEFPROCl(B%):LOCALx%,y%,Rb%,Sb%,Tb%,Ub%,i%:Rb%=FNd(3,1):Sb%=FNd(3,2):Tb%=1:Ub%=3:FORi%=1TOB%!e%:x%=B%!b%+((i%-1)*Tb%):PROCa(FNb(113),x%,B%!a%):PROCa(FNb(113),x%,B%!a%+(B%!m%-(2*Ub%))):NEXTi%:x%=B%!b%+(B%!e%-Rb%):FORi%=1TOB%!m%-1 PROCa(FNb(114),B%!b%,B%!a%+((i%-1)*Tb%)):PROCa(FNb(114),x%,B%!a%+((i%-1)*Tb%)):NEXTi%:PROCa(FNb(111),B%!b%,B%!a%):PROCa(FNb(109),B%!b%,(B%!a%+B%!m%)-Sb%):PROCa(FNb(112),B%!b%+(B%!e%-Rb%),B%!a%):x%=(B%!b%+B%!e%)-Rb%:y%=(B%!a%+B%!m%)-Sb% PROCa(FNb(110),x%,y%):ENDPROC DEFFNs(e$,i$):LOCALVb%,Wb%,j$:Vb%=OPENIN(e$):INPUT#Vb%,j$:IFj$<>i$THENCLOSE#Vb%:ERROR255,"Bad Magic!" INPUT#Vb%,Wb%:CLOSE#Vb%:=Wb% DEFPROCk(e$,i$,RETURNi%(),RETURNf$()):LOCALVb%,i%,Wb%,j$:Vb%=OPENIN(e$):INPUT#Vb%,j$:IFj$<>i$THENCLOSE#Vb%:ERROR255,"Bad Magic!" INPUT#Vb%,Wb%:FORi%=1TOWb%:INPUT#Vb%,i%(i%),f$(i%):NEXTi%:CLOSE#Vb%:ENDPROC DEFFNa(Xb%):=FNu(Xb%,ba%,f%(),b$(),106) DEFFNb(Xb%):=FNu(Xb%,ca%,g%(),c$(),107) DEFFNc(Xb%):=FNu(Xb%,da%,h%(),d$(),108) DEFFNu(Xb%,Yb%,j%(),g$(),Zb%):LOCALi%,_b%:_b%=0:FORi%=1TOYb%:IFj%(i%)=Xb%THEN_b%=i%:i%=Yb% NEXTi%:IF_b%=0THEN IFXb%>=106ANDXb%<=108THEN ERROR255,"Missing message!!!" ELSE:ERROR255,FNa(Zb%)+" "+STR$(Xb%) ENDIF ENDIF =FNo(g$(_b%)) DEFFNA(e$):LOCALG%:G%=0:SYSFNc(31),,e$TOG%:=G% DEFPROCg(`b%):LOCALEb%,v$:Eb%=0:v$=FNa(110)+" "+STR$(`b%):IFk%!Eb%>0THEN IF`b%<1AND`b%>4THENERROR255,v$ OSCLI"SPlay_fire0"+STR$(`b%)+"mhh" ENDIF ENDPROC DEFPROCq:LOCALp%:p%=FNe(20):p%!0=4:p%!4=5:p%!8=11:p%!12=12:p%!16=-1:SYSFNc(5),p%,p%:f%!pa%=p%!0:f%!qa%=p%!4:f%!e%=(p%!8)+1<f%!ra%THENPROCq CASEac%OF WHEN1:bc%=E%<>f%!pa% WHEN4:bc%=E%>>f%!qa% OTHERWISE:ERROR255,FNa(103)+" "+STR$(ac%) ENDCASE =bc% DEFFNp(B%,dc%):LOCALec%,fc%,gc%,hc%:gc%=FALSE:hc%=FALSE:IFB%!C%ANDdc%!C%THEN ec%=dc%!b%+dc%!e%:fc%=dc%!a%+dc%!m%:IFB%!b%>=dc%!b%ANDB%!b%=dc%!a%ANDB%!a%-1THEN SYS"TimPlayer_SongStop",k%!4:SYS"TimPlayer_SongUnload",k%!4 ENDIF PROCs:ENDPROC DEFFNj(A$,w$):LOCALf$,K%,_b%:_b%=FALSE:f$=STRING$(10," "):RIGHT$(f$,3)=" : ":LEFT$(f$,LEN(w$))=w$:K%=FNq(A$):IFK%=1THEN f$+="OK.":_b%=TRUE ELSE:f$+="Missing!!" ENDIF PRINTf$:=_b% DEFFNv(Wb%):LOCALg$,q$:q$=".Screens.":g$="Dump"+STR$(Wb%):IFFNq(q$+g$)<>0THEN REPEAT:Wb%+=1:g$="Dump"+STR$(Wb%):UNTILFNq(q$+g$)=0ORLEN(g$)>10:IFLEN(g$)>10THENWb%=-1 ENDIF =Wb% DEFFNn(n%):LOCALic%:ic%=RND(100):=ic%<=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$,jc%,y$,kc%):LOCALlc%,c$:lc%=jc%-LEN(a$):IFlc%<=0THEN c$=LEFT$(a$,jc%) ELSE:IFkc%THEN c$=STRING$(jc%,y$):RIGHT$(c$,LEN(a$))=a$ ELSE:c$=a$+STRING$(lc%,y$) ENDIF ENDIF =c$ DEFFNy(a$,jc%):LOCALc$:c$=STRING$(jc%," "):RIGHT$(c$,LEN(a$))=a$:=c$ DEFFNq(h$):LOCAL_b%:SYS"XOS_File",17,h$TO_b%:=_b% DEFFNE(h$):LOCALE%:SYSFNc(3),5,h$TO,,,,E%:=E% DEFFNx(ac%,h$):LOCALG%,mc%,nc%,oc%:oc%=FALSE:CASEac%OF WHEN0:G%=OPENUP(h$+"chkfile") WHEN1:G%=OPENUP(h$) OTHERWISE:ERROR255,FNa(104)+" "+STR$(ac%) ENDCASE IFG%<>0THEN SYSFNc(4),254,G%TOnc%;mc%:IF(mc%AND1)THENCLOSE#G%:ERROR255,FNa(105) IF((nc%AND(1<<7))<>0)THENoc%=TRUE CLOSE#G% ENDIF =oc% DEFPROCz:LOCALpc%:qc%=0:rc%=0:SYSFNc(10),-1,-1TOsc%:SYSFNc(11)TOtc%;pc%:IFpc%AND1THENtc%=16384 PROCT(tc%):ENDPROC DEFPROCs:IFqc%THEN SYSFNc(10),qc%-32768,-1TOsc%:qc%=0:rc%=0 ENDIF ENDPROC DEFFNe(W%):LOCALv%,E%:E%=(W%+15)AND-4:v%=FNF(E%):IFv%ELSEERROR254,FNa(211) v%!0=&DEADDEAD:v%!4=W%:!(v%-8+(v%!-4))=&DEADDEAD:=v%+8 DEFFNf(W%,Cb%):LOCALv%:v%=FNe(W%):PROCU(v%,Cb%):=v% DEFPROCc(RETURNv%):IFFNG(v%)THENERROR254,FNa(212) IFFNH(v%)THENERROR254,FNa(213) v%-=8:rc%-=v%!-4:SYSFNc(12),3,qc%,v%:v%=0:ENDPROC DEFFNz(v%):LOCALp%:p%=v%-4:=p%!0 DEFPROCU(v%,Cb%):LOCAL_%,E%:E%=FNz(v%):FOR_%=0TOE%-4STEP4:v%!_%=Cb%:NEXT_%:ENDPROC DEFFNh(v%):LOCALuc%,_%,E%:E%=FNz(v%):uc%=FNe(E%):FOR_%=0TOE%-4STEP4:uc%!_%=v%!_%:NEXT_%:=uc% DEFFNG(v%):v%-=8:IFv%!0<>&DEADDEADTHEN=TRUE =FALSE DEFFNH(v%):v%-=8:IF!(v%-8+(v%!-4))<>&DEADDEADTHEN=TRUE =FALSE DEFPROCT(E%):IFqc%THENERROR254,FNa(215) E%=(E%+tc%-1)ANDNOT(tc%-1):qc%=HIMEM:SYSFNc(10),sc%+E%,-1TOsc%:E%=sc%+32768-qc%:IFE%<1THEN qc%=0:ERROR254,FNa(216) ELSE:SYSFNc(12),0,qc%,,E% ENDIF rc%=0:ENDPROC DEFPROCV(W%):LOCALvc%:vc%=sc%:SYSFNc(10),sc%+W%,-1TOsc%:W%=sc%-vc%:IFW%THENSYSFNc(12),5,qc%,,W%TO,,,W% ENDPROC DEFFNF(W%):LOCALv%,pc%:SYSFNc(13),2,qc%,,W%TO,,v%;pc%:IFpc%AND1THEN PROCV((W%+tc%)ANDNOT(tc%-1)):SYSFNc(13),2,qc%,,W%TO,,v%;pc%:IFpc%AND1THEN=0 ENDIF rc%+=v%!-4:=v%