REM Acorn Invaders REM Packed by Make v1.41 15/5/08 On 26 Sep 2008 ONERRORPROCB:END MODE28:OFF:a$="Acorn Invaders. (c)2008 DynaByte Software":PRINTa$:PRINTSTRING$(LEN(a$),"-"):PRINT:l$=".Resources.":f$=l$+"Graphics.":b$=l$+"Data.":r$=l$+"Sound.":aa%=FALSE:PRINT"Checking files...":IFNOTFNj(f$+"Gfx0","Sprites")THENaa%=TRUE IFNOTFNj(f$+"Gfx1","Charset")THENaa%=TRUE IFNOTFNj(f$+"Gfx2","Numerics")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"):DIMg%(ba%),b$(ba%):PROCl(b$+"Msg","SGSM",g%(),b$()):PRINTFNa(14):PRINTFNa(9)+" "+FNa(3);:ca%=FNs(b$+"ImgLUT","TULI"):DIMh%(ca%),c$(ca%):PROCl(b$+"ImgLUT","TULI",h%(),c$()):PRINTFNa(14) PRINTFNa(9)+" "+FNa(13);:da%=FNs(b$+"SWIs","TULS"):DIMi%(da%),d$(da%):PROCl(b$+"SWIs","TULS",i%(),d$()):PRINTFNa(14):PRINT:PRINTFNa(12):PRINTFNa(8)+" "+FNa(2):PROCC:e%=FNf(60,0):e%!0=1:e%!4=-1:e%!40=FNw(0):IFe%!40=-1THENERROR255,FNa(109) PRINTFNa(15)+STR$(e%!40):aa%=FALSE:e%!44=TRUE:e%!52=5:e%!56=5:ea%=0:DIMa$(10),d%(10):DIMe%(10):PRINTFNa(8)+" "+FNa(22):b%=0:a%=4:d%=8:k%=12:R%=16:S%=20:w%=24:X%=28:fa%=32:ga%=36:ha%=40:ia%=44:ja%=48:ka%=52:la%=56:ma%=60:na%=64 oa%=16:pa%=20:qa%=24:`%=28:U%=32:ra%=16:sa%=20:PRINT:PRINTFNa(8)+" "+FNa(1)+" ";:ta%=0:SYSFNc(30)TOta%:PRINTFNa(21)+" "+STR$(ta%/100):e%!4=FNA(r$+"Intro"):PRINT:PRINTFNa(17)+" "+FNa(16):SYSFNc(1),,FNc(2)TOua%:PRINTFNa(9)+" "+FNa(4);:va%=FNt(f$+"Gfx0"):PRINTFNa(14) PRINTFNa(9)+" "+FNa(5);:wa%=FNt(f$+"Gfx1"):PRINTFNa(14):PRINTFNa(9)+" "+FNa(23);:xa%=FNt(f$+"Gfx2"):PRINTFNa(14):ya%=va%:PRINT:PRINTFNa(9)+" "+FNa(6);:H%=OPENIN(b$+"Creds"):INPUT#H%,j$:IFj$<>"DERC"THEN CLOSE#H%:ERROR255,FNa(101):END ENDIF INPUT#H%,ea%:DIMe$(ea%),f%(ea%):FORi%=1TOea%:INPUT#H%,f%(i%),e$(i%):NEXTi%:CLOSE#H%:PRINTFNa(14):PRINT:PRINTFNa(7):t$=b$+"HiTable":IFFNq(t$)<>1THEN IFNOTFNx(0,l$)THEN e%!44=FALSE:PRINTFNa(19)+" "+FNa(10)+" "+FNa(20) ELSE:PRINTFNa(19)+" "+FNa(11)+" "+FNa(20) ENDIF PROCD(e%!44) ELSE:IFNOTFNx(1,t$)THEN e%!44=FALSE:PRINTFNa(18)+" "+FNa(10)+" "+FNa(20) ELSE:PRINTFNa(18)+" "+FNa(11)+" "+FNa(20) ENDIF PROCE ENDIF PRINT:PRINTFNa(12):PROCe(150):h%=FNe(36):T%=FNe(24):P%=FNe(16):CLS:PROCr:h%!`%=FNd(8,1):h%!U%=FNd(8,2)+7:T%!d%=FNd(6,1):T%!k%=FNd(6,2):T%!ra%=h%!k%-50:T%!sa%=30:SYSFNc(33),e%!4:SYSFNc(36),e%!4,128:WHILENOTFNB:CLS:PROCF:ENDWHILE CLS:P%!d%=220:P%!k%=40:P%=FNu(P%,h%):P%!a%-=3:PROCm(P%):PROCs(FNa(31),10):IFe%!0=1THEN SYSFNc(36),e%!4,-1TO,za%:FORi%=za%TO0STEP-2:SYSFNc(36),e%!4,i%:PROCe(4):NEXTi%:SYSFNc(35),e%!4:SYSFNc(32),e%!4:e%!4=-1 ENDIF PROCt:END DEFFNB:LOCALi%,K%,L%,B%,J%,m%,Y%,Aa%,Ba%:LOCALp%,V%,Ca%,Da%,Ea%,Fa%,Ga%,Ha%,Ia%:LOCALx%,y%,N%,Ja%,s$,a$:Ja%=44:K%=FNf(16,0):L%=FNf(16,0):B%=FNf(16,0):m%=FNf(16,0):Y%=FNf(16,0):V%=FNf(16,0):p%=FNf(16,0):K%!d%=FNd(100,1):K%!k%=FNd(40,2) K%!b%=FNg(K%,h%):K%!a%=800:L%!d%=FNd(150,1):L%!k%=FNd(40,2):L%!b%=FNg(L%,h%):L%!a%=K%!a%-L%!k%:B%!d%=720:B%!k%=500:B%!b%=FNg(B%,h%):B%!a%=200:m%!d%=FNd(40,1):m%!k%=FNd(20,2):m%!b%=(B%!b%+B%!d%/2)-150:m%!a%=(B%!a%+B%!k%)-125 p%!d%=FNd(30,1):p%!k%=FNd(15,2):Y%!d%=FNd(20,1):Y%!k%=FNd(20,2):Y%!b%=(B%!b%+B%!d%/2)-150:Y%!b%+=FNg(Y%,m%):Aa%=FNh(Y%):Ba%=FNh(Y%)::Ba%!a%=m%!a%-40-Ba%!k%:Aa%!a%=Ba%!a%-40-Aa%!k%:Y%!a%=Aa%!a%-40-Y%!k% V%!d%=FNd(20,1):V%!k%=FNd(20,2):V%!b%=(B%!b%+B%!d%/2)-120:Ca%=FNh(V%):Da%=FNh(V%):Ea%=FNh(V%):Ea%!b%=B%!b%:Ka%=FNh(Ea%):Ga%=FNh(Ea%):Fa%=FNh(V%):Fa%!b%=B%!b%:Fa%!b%+=(B%!d%/2)+10:Ha%=FNh(Fa%):Ia%=FNh(Fa%) :V%!a%=(B%!a%+B%!k%)-120:Ca%!a%=V%!a%-60:Da%!a%=Ca%!a%-60:Ga%!a%=Da%!a%-90:Ka%!a%=Ga%!a%-60:Ea%!a%=Ka%!a%-60:Fa%!a%=Da%!a%-90:Ha%!a%=Fa%!a%-60:Ia%!a%=Ha%!a%-60:CLS:PROCf(T%!ra%):PROCf(T%!sa%):PROCj:FORi%=0-K%!d%TOK%!b%STEP5 WAIT:PROCa(FNb(100),i%,K%!a%):PROCe(1):NEXTi%:FORi%=h%!d%TOL%!b%STEP-5:WAIT:PROCa(FNb(101),i%,L%!a%):PROCe(1):NEXTi%:a$=FNa(32):J%=LEN(a$)*h%!`%:y%=170:PROCb(FNk(J%,h%!d%),y%,a$,11,0):a$=FNa(33):J%=LEN(a$)*h%!`%:y%-=h%!U%:PROCb(FNk(J%,h%!d%),y%,a$,11,0) WHILENOTINKEY(-99)ANDNOTINKEY(-17)ANDNOTINKEY(-82):y%=B%!a%+B%!k%:FORi%=1TOea%:a$=FNp(e$(i%)):x%=FNi(a$):CASEf%(i%)OF WHEN-1:y%-=h%!U% WHEN-2:y%-=(2*h%!U%) OTHERWISE:y%-=f%(i%) ENDCASE PROCb(x%,y%,a$,0,0):NEXTi%:N%=FNr:IFN%=1THEN=TRUE IFN%=2THEN=FALSE PROCd(B%):a$=FNa(57)+" "+FNa(34):x%=FNi(a$):y%=B%!a%+B%!k%-20:PROCb(x%,y%,a$,0,0):a$=FNa(35):y%-=h%!U%:x%=FNi(a$):PROCb(x%,y%,a$,0,0):x%=m%!b%+m%!d%+10:PROCa(FNb(11),m%!b%,m%!a%):a$=FNa(36)+" "+FNa(40):PROCb(x%,m%!a%+10,a$,0,0) PROCa(FNb(24),Ba%!b%,Ba%!a%):a$=FNa(37)+" "+FNa(40):PROCb(x%,Ba%!a%+12,a$,0,0):PROCa(FNb(22),Aa%!b%,Aa%!a%):a$=FNa(38)+" "+FNa(40):PROCb(x%,Aa%!a%+12,a$,0,0):PROCa(FNb(20),Y%!b%,Y%!a%):a$=FNa(39)+" "+FNa(40):PROCb(x%,Y%!a%+12,a$,0,0) J%=p%!d%/h%!`%+2:s$=FNa(66):a$=s$+STRING$(J%," ")+FNa(67):x%=FNi(a$):y%=Y%!a%-(3*h%!U%):PROCb(x%,y%,a$,0,0):p%!b%=x%+7+(LEN(s$)*h%!`%):p%!a%=y%:PROCa(FNb(1),p%!b%,p%!a%):N%=FNr:IFN%=1THEN=TRUE IFN%=2THEN=FALSE PROCd(B%):a$=FNa(41):x%=FNi(a$):y%=B%!a%+B%!k%-20:PROCb(x%,y%,a$,0,0):x%=V%!b%+V%!d%+10:PROCa(FNb(102),V%!b%,V%!a%):a$=FNa(42)+" "+FNa(43):PROCb(x%,V%!a%+12,a$,0,0):PROCa(FNb(103),Ca%!b%,Ca%!a%):a$=FNa(42)+" "+FNa(44):PROCb(x%,Ca%!a%+12,a$,0,0) PROCa(FNb(104),Da%!b%,Da%!a%):PROCb(x%,Da%!a%+12,FNa(45),0,0):x%=Ea%!b%+Ea%!d%+10:PROCa(FNb(105),Ka%!b%,Ka%!a%):a$=FNa(46)+" "+FNa(49):PROCb(x%,Ka%!a%+12,a$,0,0):PROCa(FNb(117),Ga%!b%,Ga%!a%):PROCb(x%,Ga%!a%+12,FNa(76),0,0) PROCa(FNb(107),Ea%!b%,Ea%!a%):a$=FNa(48)+" "+FNa(49):PROCb(x%,Ea%!a%+12,a$,0,0):x%=Fa%!b%+Fa%!d%+10:PROCa(FNb(106),Fa%!b%,Fa%!a%):a$=FNa(47)+" "+FNa(73):PROCb(x%,Fa%!a%+12,a$,0,0):PROCa(FNb(115),Ha%!b%,Ha%!a%):a$=FNa(47)+" "+FNa(77)+" ":a$+=FNa(74) PROCb(x%,Ha%!a%+12,a$,0,0):PROCa(FNb(116),Ia%!b%,Ia%!a%):a$=FNa(47)+" "+FNa(77)+" ":a$+=FNa(75):PROCb(x%,Ia%!a%+12,a$,0,0):N%=FNr:IFN%=1THEN=TRUE IFN%=2THEN=FALSE PROCd(B%):a$=FNa(50):IFe%!Ja%THENa$=FNa(51) x%=FNi(a$):y%=B%!a%+B%!k%-20:PROCb(x%,y%,a$,0,0):a$=FNa(58)+" "+FNa(52):x%=FNi(a$):y%-=h%!U%:PROCb(x%,y%,a$,0,0):y%=(B%!a%+B%!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,0) y%-=2*h%!U%:FORi%=1TO10:IFi%<10THEN a$=" "+STR$(i%)+". " ELSE:a$=" "+STR$(i%)+". " ENDIF s$=FNp(a$(i%)):a$+=FNm(s$,8," ",FALSE):a$+=" .... ":a$+=FNy(STR$(d%(i%)),10):a$+=" ... "+FNy(STR$(e%(i%)),3):x%=FNi(a$):PROCb(x%,y%-(i%*(h%!U%+5)),a$,0,0):NEXTi%:N%=FNr:IFN%=1THEN=TRUE IFN%=2THEN=FALSE PROCd(B%):ENDWHILE:ERROR255,FNa(102):=FALSE DEFFNr:LOCALt%,N%:t%=TIME+750:N%=FALSE:REPEAT:IFINKEY(-82)THENPROCu IFINKEY(-102)THENPROCv IFINKEY(-59)THENPROCk(4) IFINKEY(-60)THENPROCk(-4) UNTILTIME>=t%ORINKEY(-17)ORINKEY(-99):IFINKEY(-17)THENN%=1 IFINKEY(-99)THENN%=2 IFN%THEN PROCc(K%):PROCc(L%):PROCc(B%):PROCc(m%):PROCc(Y%):PROCc(Aa%):PROCc(Ba%):PROCc(V%):PROCc(Ca%):PROCc(Da%):PROCc(Ea%):PROCc(Fa%):PROCc(Ka%):PROCc(Ga%):PROCc(Ha%):PROCc(Ia%):PROCc(p%) ENDIF =N% DEFFNi(a$):LOCALJ%:J%=LEN(a$)*h%!`%:=B%!b%+FNk(J%,B%!d%) DEFPROCF:LOCALp%,v%,m%,f%,A%:LOCALG%:LOCALc%(),a%():LOCALb%(),La%:LOCALMa%,Na%,Oa%,Pa%:LOCALQa%,Ra%,Sa%:LOCALTa%:LOCALUa%,Va%,Wa%,Xa%,Ya%:LOCALZa%,J%,a$,x%,y%,i%,j%:p%=FNe(32):v%=FNe(28):m%=FNe(48):f%=FNe(68):G%=FNe(16):A%=FNf(16,0) Ma%=0:Na%=4:Oa%=8:Pa%=12:Ta%=16:Qa%=28:La%=56:Ua%=ga%:Va%=ha%:Wa%=ia%:Xa%=la%:Ya%=ma%:DIMc%(10,6),a%(10),b%(e%!La%):p%!d%=FNd(30,1):p%!k%=FNd(15,2):p%!b%=FNg(p%,h%):p%!a%=50:p%!S%=6:p%!R%=p%!S% G%!d%=FNd(20,1):G%!k%=FNd(20,2):m%!d%=FNd(40,1):m%!k%=FNd(20,2):m%!a%=T%!ra%-(10+m%!k%):m%!S%=5:m%!w%=FALSE:m%!ha%=1:v%!d%=FNd(5,1):v%!k%=FNd(20,2):v%!w%=FALSE:v%!S%=10:A%!Oa%=1:A%!Ma%=3:A%!Pa%=FALSE e%!Ta%=-1:f%!Ua%=FNd(20,1):f%!Va%=10:f%!Wa%=6:f%!w%=TRUE:f%!Ya%=4:SYSFNc(6)TOf%!na%:PROCG:PROCH:PROCf(T%!ra%):PROCf(T%!sa%):PROCI(0,d%(1),A%!Ma%,A%!Oa%):PROCJ:PROCw:PROCa(FNb(1),p%!b%,p%!a%):WHILEA%!Ma%>0:Za%=FALSE:IFe%!Qa%=0THEN IFINKEY(-74)THENPROCK(p%!b%,p%!a%) IFINKEY(-98)THENPROCL:Za%=TRUE IFINKEY(-67)THENPROCM:Za%=TRUE IFINKEY(-17)THENPROCN ENDIF IFINKEY(-102)THENPROCv IFINKEY(-82)THENPROCu IFINKEY(-56)THENPROCO IFINKEY(-59)THENPROCk(4) IFINKEY(-60)THENPROCk(-4) IFe%!Qa%=0THEN IFZa%THEN p%!b%+=p%!R%:PROCa(FNb(1),p%!b%,p%!a%) ENDIF ENDIF IFe%!Qa%=0THEN PROCP:PROCQ:PROCR:PROCS:PROCT:PROCU ELSE:PROCV ENDIF WAIT:ENDWHILE:P%!d%=240:P%!k%=40:P%=FNu(P%,h%):P%!a%-=3:PROCd(P%):PROCm(P%):a$=FNa(49)+" "+FNa(53):PROCs(a$,11):PROCe(750):IFNOTA%!Pa%THEN IFA%!Na%>=d%(10)THEN PROCW(A%) ENDIF ENDIF PROCc(p%):PROCc(f%):PROCc(m%):PROCc(v%):PROCc(A%):PROCc(G%):FORi%=1TO10:PROCc(a%(i%)):NEXTi%:FORi%=1TOe%!La%:PROCc(b%(i%)):NEXTi%:ENDPROC DEFPROCL:IFp%!b%<=0THEN p%!b%=0 ELSE:p%!R%=0-p%!S% ENDIF ENDPROC DEFPROCM:IFp%!b%>=h%!d%-p%!d%THEN p%!b%=h%!d%-p%!d% ELSE:p%!R%=0+p%!S% ENDIF ENDPROC DEFPROCK(x%,y%):IFNOTv%!w%THEN v%!w%=TRUE:v%!b%=x%+(p%!d%/2):v%!a%=y%+p%!k%:PROCg(4) ENDIF ENDPROC DEFPROCu:LOCALM%,_a%,u$:M%=40:_a%=44:IFe%!_a%THEN REPEAT:UNTILNOTINKEY(-82):e%!M%=FNw(e%!M%):IFe%!M%=-1THENERROR255,FNa(109) u$=".Screens.Dump"+STR$(e%!M%):OSCLI"ScreenSave "+u$ ENDIF ENDPROC DEFPROCN:LOCALi%:FORi%=1TO7:a%(i%)!w%=FALSE:NEXTi%:A%!Ma%=0:A%!Pa%=TRUE:ENDPROC DEFPROCv:LOCAL`a%,ab%:`a%=0:ab%=4:REPEAT:UNTILNOTINKEY(-102):e%!`a%+=1:IFe%!`a%>2THENe%!`a%=0 IFe%!`a%=1THEN SYSFNc(33),e%!ab% ELSE:SYSFNc(34),e%!ab% ENDIF PROCj:ENDPROC DEFPROCk(bb%):LOCAL`a%,ab%,cb%,C%,za%,db%:`a%=0:ab%=4:cb%=8:IFe%!`a%=1THEN SYSFNc(6)TOC%:IFC%-e%!cb%>=10THEN SYSFNc(36),e%!ab%,-1TO,za%:db%=za%+bb%:IFdb%>=0ANDdb%<=128THEN SYSFNc(36),e%!ab%,db%:e%!cb%=C% ENDIF ENDIF ENDIF ENDPROC DEFPROCO:LOCALQa%,Ra%,a$:Qa%=28:Ra%=32:REPEATUNTILNOTINKEY(-56):a$=FNa(49)+" "+FNa(61):e%!Qa%=FNn(e%!Qa%):e%!Ra%=e%!Qa%:IFe%!Qa%=0THEN a$=STRING$(LEN(a$)," "):PROCn(a$) ENDIF ENDPROC DEFPROCP:IFv%!w%THEN IFv%!a%>=T%!ra%-v%!k%THEN v%!w%=FALSE:v%!a%-=2:PROCd(v%) ELSE:PROCa(FNb(5),v%!b%,v%!a%) ENDIF v%!a%+=v%!S% ENDIF ENDPROC DEFPROCQ:LOCALeb%,fb%,gb%,C%,Z%,d$:eb%=fa%:fb%=ga%:gb%=ha%:IFNOTm%!w%THEN IFFNo(4)ANDFNo(5)THEN m%!w%=TRUE:m%!X%=FALSE:m%!fb%=0:IFFNo(50)THEN m%!R%=0-m%!S%:m%!b%=h%!d% ELSE:m%!R%=0+m%!S%:m%!b%=0-m%!d% ENDIF ENDIF ELSE:IFm%!b%<=0-m%!d%ANDSGN(m%!R%)=-1THEN m%!eb%=FALSE:m%!w%=FALSE:ENDPROC ENDIF IFm%!b%>h%!d%ANDSGN(m%!R%)=1THEN m%!eb%=FALSE:m%!w%=FALSE:ENDPROC ENDIF IFNOTm%!X%THEN IFFNl(v%,m%)THEN PROCd(v%):PROCa(FNb(12),m%!b%,m%!a%):SYSFNc(6)TOm%!eb%:m%!X%=TRUE:v%!w%=FALSE:PROCh(500) ENDIF ELSE:IFFNl(v%,m%)THEN PROCd(v%):v%!w%=FALSE ENDIF ENDIF IFNOTm%!X%THEN SYSFNc(6)TOC%:IFC%-m%!gb%>=40THEN m%!gb%=C%:m%!fb%=FNn(m%!fb%) ENDIF d$=FNb(10)+STR$(m%!fb%):PROCa(d$,m%!b%,m%!a%):m%!b%+=m%!R% ELSE:SYSFNc(6)TOC%:Z%=C%-m%!eb%:IFZ%>=300THEN m%!w%=FALSE:m%!fb%=1:PROCd(m%) ELSE:IFZ%>=250THEN PROCa(FNb(15),m%!b%,m%!a%) ELSE:IFZ%>=200THEN PROCa(FNb(14),m%!b%,m%!a%) ELSE:IFZ%>=100THEN PROCa(FNb(13),m%!b%,m%!a%) ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF ENDPROC DEFPROCR:LOCALhb%,z%,I%,Q%,ib%,jb%,kb%,lb%:LOCALO%,mb%,nb%,C%,ob%,pb%,qb%:O%=fa%:mb%=ja%:nb%=ka%:ob%=na%:pb%=52:qb%=56:SYSFNc(6)TOC%:IFC%-f%!ob%>=50THEN f%!ob%=C%:f%!O%=FNn(f%!O%) ENDIF hb%=f%!b%+f%!d%:lb%=0-((f%!mb%-1)*(G%!d%+f%!Ua%)):IFhb%>=h%!d%THEN f%!R%=0-f%!S%:PROCx ENDIF IFf%!b%<=lb%THEN f%!R%=0+f%!S%:PROCx ENDIF lb%=f%!a%+((f%!Xa%-1)*G%!k%):IFlb%<=p%!a%+p%!k%THEN PROCX:ENDPROC ENDIF IFFNl(v%,f%)THEN z%=G%!d%+f%!Ua%:IF(v%!b%-f%!b%)MODz%<=G%!d%THEN I%=((v%!a%-f%!a%)DIVG%!k%)+1:Q%=((v%!b%-f%!b%)DIVz%)+1:IFSGN(c%(Q%,I%))=1THEN c%(Q%,I%)=-5:PROCd(v%):v%!w%=FALSE:f%!X%+=1:PROCg(1):CASEI%OF WHEN1,2:PROCh(50) WHEN3,4:PROCh(75) WHEN5,6:PROCh(100) ENDCASE ENDIF ENDIF ENDIF IFf%!X%>=f%!Va%*f%!Wa%THEN A%!Oa%+=1:PROCd(f%):PROCf(T%!sa%):PROCi(A%!Ma%):PROCo(A%!Oa%):PROCj:PROCa(FNb(1),p%!b%,p%!a%):PROCY:PROCw:PROCy:IFA%!Oa%>5THENe%!pb%=7 IFA%!Oa%>10THENe%!pb%=10 ENDIF ib%=TRUE:jb%=TRUE:FORI%=1TOf%!Wa%:IFc%(f%!nb%,I%)<>0THENib%=FALSE IFc%(f%!mb%,I%)<>0THENjb%=FALSE NEXTI%:kb%=TRUE:FORQ%=1TOf%!Va%:IFc%(Q%,f%!Xa%)<>0THENkb%=FALSE NEXTQ%:IFjb%THENf%!mb%+=1 IFib%THEN f%!d%-=(G%!d%+f%!Ua%):f%!nb%-=1 ENDIF IFkb%THENf%!Xa%+=1 f%!b%+=f%!R%:PROCp:ENDPROC DEFPROCS:LOCALi%,j%,C%,pb%,qb%:pb%=52:qb%=56:FORi%=1TOe%!pb%:IFNOTa%(i%)!w%THEN PROCZ(i%) ELSE:PROC_(i%):IFa%(i%)!a%<=T%!sa%+(T%!k%+5)THEN a%(i%)!w%=FALSE:PROCd(a%(i%)) ENDIF IFFNl(a%(i%),p%)ANDa%(i%)!w%THEN PROC`(i%) ENDIF FORj%=1TOe%!qb%:IFFNl(a%(i%),b%(j%))THEN PROCz(j%,FALSE):PROCd(a%(i%)):a%(i%)!w%=FALSE ENDIF NEXTj%:IFFNl(v%,a%(i%))THEN PROCaa(i%) ENDIF IFa%(i%)!X%THEN PROCba(i%) ENDIF ENDIF NEXTi%:ENDPROC DEFPROCV:LOCALQa%,Ra%,Sa%,C%,a$:Qa%=28:Ra%=32:Sa%=36:SYSFNc(6)TOC%:IFC%-e%!Sa%>=50THEN e%!Ra%=FNn(e%!Ra%):e%!Sa%=C% ENDIF a$=FNa(49)+" "+FNa(61):IFe%!Ra%=0ORe%!Qa%=0THEN a$=STRING$(LEN(a$)," ") ENDIF PROCn(a$):ENDPROC DEFPROCU:LOCALTa%,rb%,sb%,C%,a$:Ta%=16:rb%=20:sb%=24:IFe%!Ta%>=0THEN SYSFNc(6)TOC%:a$=FNa(66)+" "+FNa(72):IFC%-e%!sb%>=50THEN e%!sb%=C%:e%!rb%=FNn(e%!rb%):IFe%!rb%=1THENe%!Ta%+=1 ENDIF IFe%!rb%=0THEN a$=STRING$(LEN(a$)," ") ENDIF IFe%!Ta%>5THEN a$=STRING$(LEN(a$)," "):e%!Ta%=-1 ENDIF PROCn(a$) ENDIF ENDPROC DEFPROCT:LOCALi%,C%,tb%,ob%,q%:tb%=56:ob%=ga%:q%=FNe(16):FORi%=1TOe%!tb%:IFFNl(v%,b%(i%))THEN PROCd(v%):v%!w%=FALSE:PROCz(i%,TRUE) ENDIF IFb%(i%)!X%THEN SYSFNc(6)TOC%:IFC%-b%(i%)!ob%>=5THEN q%!b%=b%(i%)!b%:q%!d%=b%(i%)!d%:q%!a%=b%(i%)!a%-5:q%!k%=b%(i%)!k%+10:PROCd(q%):PROCq(b%(i%)):b%(i%)!X%=FALSE ENDIF ENDIF NEXTi%:PROCc(q%):ENDPROC DEFPROCD(ub%):LOCALi%,n$:FORi%=1TO10:IFi%MOD2=0THENn$=FNa(71)ELSEn$=FNa(70) a$(i%)=FNp(n$):d%(i%)=(11-i%)*1000:e%(i%)=0:NEXTi%:IFub%THENPROCA ENDPROC DEFPROCE:LOCALi%,H%:H%=OPENIN(b$+"HiTable"):FORi%=1TO10:INPUT#H%,a$(i%),d%(i%),e%(i%):NEXTi%:CLOSE#H%:ENDPROC DEFPROCA:LOCALi%,H%:H%=OPENOUT(b$+"HiTable"):FORi%=1TO10:PRINT#H%,a$(i%),d%(i%),e%(i%):NEXTi%:CLOSE#H%:ENDPROC DEFPROCW(A%):LOCALL%,K%,vb%,g%,i%,wb%,J%,x%,y%,a$:LOCALJa%:K%=FNe(16):L%=FNe(16):Ja%=44:K%!d%=FNd(100,1):K%!k%=FNd(40,2):K%!b%=FNg(K%,h%):K%!a%=800:L%!d%=FNd(150,1):L%!k%=FNd(40,2):L%!b%=FNg(L%,h%):L%!a%=K%!a%-L%!k%:wb%=0:FORi%=10TO1STEP-1 IFA%!Na%>=d%(i%)THENwb%=i% NEXTi%:FORi%=9TOwb%STEP-1:a$(i%+1)=a$(i%):d%(i%+1)=d%(i%):e%(i%+1)=e%(i%):NEXTi%:d%(wb%)=A%!Na%:e%(wb%)=A%!Oa%:CLS:PROCf(T%!ra%):PROCf(T%!sa%):PROCa(FNb(100),K%!b%,K%!a%):PROCa(FNb(101),L%!b%,L%!a%):a$=FNa(54)+" "+STR$(A%!Na%) a$+=" "+FNa(55)+" "+STR$(wb%)+FNC(wb%):J%=LEN(a$)*h%!`%:x%=FNk(J%,h%!d%):y%=L%!a%-170:PROCb(x%,y%,a$,0,0):PROCc(K%):PROCc(L%):P%!d%=165:P%!k%=40:P%=FNu(P%,h%):PROCm(P%):x%=P%!b%+20:y%=P%!a%+12:a$="":i%=1:vb%=FALSE OSCLI"FX 21,0":REPEAT:g%=GET:CASEg%OF WHEN13:vb%=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,0):IFa$<>""THENPROCb(x%,y%,a$,0,0) UNTILvb%:IFa$=""ORa$=" "THENa$=FNa(56) a$(wb%)=FNp(a$):IFe%!Ja%THENPROCA ENDPROC DEFFND(xb%):LOCALyb%:yb%=FALSE:IFxb%>=32ANDxb%<=126THENyb%=TRUE =yb% DEFPROCI(zb%,Ab%,l%,r%):LOCALx%,a$:a$=FNa(57)+" "+FNa(59):a$+=FNm(STR$(zb%),10," ",TRUE):PROCb(0,h%!k%-h%!U%,a$,0,0):a$=FNa(58)+" "+FNa(57):a$+=" "+FNa(59)+FNm(STR$(Ab%),10," ",TRUE):x%=h%!d%-LEN(a$)*h%!`%:PROCb(x%,h%!k%-h%!U%,a$,0,0) PROCi(l%):PROCo(r%):PROCj:ENDPROC DEFPROCi(M%):LOCALa$:PROCa(FNb(1),0,0):a$=" = "+STR$(M%):PROCb(p%!d%,0,a$,0,0):ENDPROC DEFPROCo(M%):LOCALx%,a$:a$=FNa(60)+" "+FNa(59):a$+=FNm(STR$(M%),3,"0",TRUE):x%=h%!d%-LEN(a$)*h%!`%:PROCb(x%,0,a$,0,0):ENDPROC DEFPROCn(a$):LOCALx%,y%,J%:J%=LEN(a$)*h%!`%:x%=FNk(J%,h%!d%):y%=h%!k%-h%!U%:PROCb(x%,y%,a$,0,0):ENDPROC DEFPROCh(Bb%):LOCALCb%,Ta%,x%,a$:Cb%=12:Ta%=16:A%!Na%+=Bb%:a$=FNa(57)+" "+FNa(59):a$+=FNm(STR$(A%!Na%),10," ",TRUE):PROCb(0,h%!k%-h%!U%,a$,0,0):IFA%!Na%-e%!Cb%>=5000THEN A%!Ma%+=1:PROCi(A%!Ma%):e%!Cb%=A%!Na%:e%!Ta%=0 ENDIF IFA%!Na%>d%(1)THEN a$=FNa(58)+" "+FNa(57)+" ":a$+=FNa(59):a$+=FNm(STR$(A%!Na%),10," ",TRUE):x%=h%!d%-LEN(a$)*h%!`%:PROCb(x%,h%!k%-h%!U%,a$,0,0) ENDIF ENDPROC DEFPROCj:LOCALDb%,Eb%,d$:Eb%=FNe(16):Db%=0:Eb%!d%=FNd(20,1):Eb%!k%=FNd(10,2):Eb%!b%=FNg(Eb%,h%):Eb%!a%=0:IFe%!Db%<0ORe%!Db%>2THEN ERROR255,FNa(111)+" "+STR$(e%!Db%) ENDIF d$=FNb(120+e%!Db%):PROCa(d$,Eb%!b%,Eb%!a%):PROCc(Eb%):ENDPROC DEFPROCJ:LOCALO%,mb%,nb%,Xa%:O%=fa%:mb%=ja%:nb%=ka%:Xa%=la%:PROCy:PROCp:ENDPROC DEFPROCy:LOCALI%,Q%,s%:f%!b%=50:f%!a%=550:f%!O%=0:f%!X%=0:f%!S%=3:f%!R%=f%!S%:f%!mb%=1:f%!nb%=f%!Va%:f%!Xa%=1:s%=(f%!Va%*G%!d%)+((f%!Va%-1)*f%!Ua%):f%!d%=s%:f%!k%=f%!Wa%*G%!k%:FORQ%=1TOf%!Va%:FORI%=1TOf%!Wa% c%(Q%,I%)=((I%+1)/2)+(f%!O%*10):NEXTI%:NEXTQ%:ENDPROC DEFPROCp:LOCALI%,Q%,x%,y%,q%:q%=FNe(16):FORQ%=f%!mb%TOf%!nb%:x%=f%!b%+((Q%-1)*(G%!d%+f%!Ua%)):FORI%=f%!Xa%TOf%!Wa%:y%=f%!a%+((I%-1)*G%!k%):IFc%(Q%,I%)>0THEN c%(Q%,I%)=((I%+1)/2)+(f%!O%*10) ENDIF IFc%(Q%,I%)<>0THEN CASESGN(c%(Q%,I%))OF WHEN-1:PROCca(x%,y%,Q%,I%) WHEN1:PROCa(FNb(27)+STR$(c%(Q%,I%)),x%,y%) ENDCASE ELSE:q%!b%=x%:q%!a%=y%:q%!d%=G%!d%:q%!k%=G%!k%:PROCd(q%) ENDIF NEXTI%:NEXTQ%:PROCc(q%):ENDPROC DEFPROCca(x%,y%,r%,c%):LOCALq%:c%(r%,c%)+=1:PROCa(FNb(26),x%,y%):IFc%(r%,c%)=0THEN q%=FNe(16):q%!b%=x%:q%!a%=y%:q%!d%=G%!d%:q%!k%=G%!k%:PROCd(q%):PROCc(q%) ENDIF ENDPROC DEFPROCx:LOCALq%,i%:q%=FNe(16):FORi%=1TO3:f%!a%-=G%!k%/3:PROCp:NEXTi%:q%!b%=f%!b%:q%!a%=f%!a%+f%!k%:q%!d%=f%!d%:q%!k%=G%!k%:PROCd(q%):PROCc(q%):ENDPROC DEFPROCX:LOCALW%,Fb%,C%,Gb%,Hb%,S%,i%,o$:S%=1:Ib%=24:W%=FNe(28):Fb%=FNe(28):PROCd(f%):PROCd(p%):IFv%!w%THEN PROCd(v%):v%!w%=FALSE ENDIF IFm%!w%THEN PROCd(m%):m%!w%=FALSE ENDIF PROCda:PROCea:p%!b%=FNg(p%,h%):W%!b%=0-G%!d%:W%!a%=p%!a%:W%!R%=S%:Fb%!b%=h%!d%:Fb%!a%=p%!a%:Fb%!R%=0-S%:A%!Ma%=0:PROCf(T%!sa%):PROCi(A%!Ma%):PROCo(A%!Oa%):PROCa(FNb(1),p%!b%,p%!a%):O%=0:Hb%=FALSE:REPEAT:W%!b%+=W%!R%:W%!Ib%=W%!b%+G%!d%:Fb%!b%+=Fb%!R% SYSFNc(6)TOC%:IFC%-Gb%>=50THENHb%=FNn(Hb%):Gb%=C% IFHb%THENo$=FNb(21)ELSEo$=FNb(20) PROCa(o$,W%!b%,W%!a%):PROCa(o$,Fb%!b%,Fb%!a%):PROCe(2):WAIT:UNTILW%!Ib%>=p%!b%:FORi%=1TO10:PROCa(FNb(20),W%!b%,W%!a%):PROCa(FNb(20),Fb%!b%,Fb%!a%):PROCe(20):PROCa(FNb(21),W%!b%,W%!a%):PROCa(FNb(21),Fb%!b%,Fb%!a%):PROCe(20):WAIT:NEXTi%:PROCg(2):FORi%=1TO3 PROCa(FNb(2)+STR$(i%),p%!b%,p%!a%):PROCe(20):WAIT:NEXTi%:PROCe(20):PROCd(p%):PROCc(W%):PROCc(Fb%):ENDPROC DEFPROCG:LOCALi%,Z%,Gb%:Z%=ha%:Gb%=ia%:FORi%=1TO10:a%(i%)=FNf(48,0):a%(i%)!d%=FNd(5,1):a%(i%)!k%=FNd(20,2):SYSFNc(6)TOa%(i%)!Z%:SYSFNc(6)TOa%(i%)!Gb%:a%(i%)!w%=FALSE:NEXTi%:ENDPROC DEFPROCZ(o%):LOCALJb%,Kb%,Lb%,Mb%,x%,y%:LOCALO%,Nb%:O%=fa%:Nb%=ga%:Jb%=RND(10):Lb%=A%!Oa%+5:IFLb%>100THEN Lb%=100:IFA%!Oa%MOD10=0THENf%!Ya%+=1 ENDIF IFFNo(Lb%)ANDFNo(f%!Ya%)THEN IFc%(Jb%,f%!Xa%)>0THEN x%=f%!b%+(Jb%-1)*(G%!d%+f%!Ua%):y%=f%!a%+((f%!Xa%-1)*G%!k%)-G%!k%:Kb%=(G%!d%/2)-(a%(o%)!d%/2):a%(o%)!b%=x%+Kb%:a%(o%)!a%=y%:a%(o%)!w%=TRUE:a%(o%)!X%=FALSE:a%(o%)!Nb%=1:a%(o%)!O%=0:Mb%=4:IFFNo(25)THENa%(o%)!Nb%=2:Mb%=Mb%/2 a%(o%)!S%=Mb%:a%(o%)!R%=a%(o%)!S%:PROCg(3) ENDIF ENDIF ENDPROC DEFPROC_(o%):LOCALC%,O%,Gb%,Nb%,d$,p$:O%=fa%:Nb%=ga%:Gb%=ia%:SYSFNc(6)TOC%:IFC%-a%(o%)!Gb%>=40THEN a%(o%)!Gb%=C%:a%(o%)!O%+=1 ENDIF :IFa%(o%)!Nb%=1ANDa%(o%)!O%>1THEN a%(i%)!O%=0 ENDIF IFa%(o%)!Nb%=2ANDa%(o%)!O%>3THEN a%(o%)!O%=0 ENDIF p$=STR$(a%(o%)!O%):IFa%(o%)!Nb%=2ANDa%(o%)!O%=3THEN p$="1" ENDIF d$=FNb(30)+STR$(a%(o%)!Nb%)+p$:IFNOTa%(o%)!X%THEN a%(o%)!a%-=a%(o%)!R%:PROCa(d$,a%(o%)!b%,a%(o%)!a%) ELSE:d$=FNb(30)+"3":PROCa(d$,a%(o%)!b%,a%(o%)!a%) ENDIF ENDPROC DEFPROC`(o%):LOCALi%:PROCg(2):FORi%=1TO3:PROCa(FNb(2)+STR$(i%),p%!b%,p%!a%):PROCe(20):WAIT:NEXTi%:PROCd(p%):IFv%!w%THEN PROCd(v%):v%!w%=FALSE ENDIF p%!b%=FNg(p%,h%):A%!Ma%-=1:PROCi(A%!Ma%):PROCd(a%(o%)):a%(o%)!w%=FALSE:PROCa(FNb(1),p%!b%,p%!a%):ENDPROC DEFPROCaa(o%):LOCALNb%,Z%:Nb%=ga%:Z%=ha%:IFa%(o%)!Nb%=1THEN IFNOTa%(o%)!X%THEN a%(o%)!X%=TRUE:PROCh(5):d$=FNb(30)+"3":PROCa(d$,a%(o%)!b%,a%(o%)!a%):SYSFNc(6)TOa%(o%)!Z% ENDIF ENDIF PROCd(v%):v%!w%=FALSE:ENDPROC DEFPROCba(o%):LOCALZ%,C%:Z%=ha%:SYSFNc(6)TOC%:IFC%-a%(o%)!Z%>=40THEN PROCd(a%(o%)):a%(o%)!w%=FALSE ENDIF ENDPROC DEFPROCda:LOCALi%,Ob%:Ob%=52:FORi%=1TOe%!Ob%:IFa%(i%)!w%THEN PROCd(a%(i%)):a%(i%)!w%=FALSE ENDIF NEXTi%:ENDPROC DEFPROCH:LOCALi%,x%,Pb%,Qb%,M%:M%=e%!56:Qb%=fa%:Pb%=h%!d%/M%:x%=Pb%-150:FORi%=1TOM%:b%(i%)=FNf(48,0):b%(i%)!d%=FNd(30,1):b%(i%)!k%=FNd(15,2):b%(i%)!b%=x%+((i%-1)*Pb%):b%(i%)!a%=p%!a%+100:b%(i%)!w%=TRUE:b%(i%)!Qb%=0:NEXTi%:ENDPROC DEFPROCY:LOCALi%,Qb%,M%:M%=e%!56:Qb%=fa%:FORi%=1TOM%:b%(i%)!w%=TRUE:b%(i%)!Qb%=0:NEXTi%:ENDPROC DEFPROCw:LOCALi%,M%:M%=56:FORi%=1TOe%!M%:IFb%(i%)!w%THENPROCq(b%(i%)) NEXTi%:ENDPROC DEFPROCq(o%):LOCALRb%,Sb%,Tb%,J%,Qb%,a$:Qb%=fa%:Tb%=10-o%!Qb%:a$=STR$(Tb%):J%=LEN(a$):Rb%=o%!b%+FNk(J%,o%!d%):Sb%=o%!a%+(o%!k%/2)-(h%!U%/2):Sb%+=7:IFJ%=1THENRb%-=7ELSERb%-=15 PROCd(o%):PROCa(FNb(16),o%!b%,o%!a%):PROCb(Rb%,Sb%,a$,0,1):ENDPROC DEFPROCz(o%,Ub%):LOCALy%,Qb%:Qb%=fa%:ob%=ga%:b%(o%)!Qb%+=1:IFb%(o%)!Qb%>=10THEN PROCd(b%(o%)):b%(o%)!w%=FALSE ELSE:PROCd(b%(o%)):y%=b%(o%)!a%:IFUb%THENb%(o%)!a%+=5ELSEb%(o%)!a%-=5 PROCq(b%(o%)):b%(o%)!X%=TRUE:b%(o%)!a%=y%:SYSFNc(6)TOb%(o%)!ob% ENDIF ENDPROC DEFPROCea:LOCALi%,q%,M%:M%=e%!56:FORi%=1TOM%:b%(i%)!w%=FALSE:NEXTi%:q%=FNe(16):q%!b%=0:q%!a%=b%(1)!b%:q%!d%=h%!d%:q%!k%=b%(1)!k%:PROCd(q%):PROCc(q%):ENDPROC DEFFNt(e$):LOCALVb%,F%:F%=FNE(e$)+256:Vb%=FNe(F%):!Vb%=F%:Vb%!4=0:Vb%!8=16:Vb%!12=16:SYSua%,256+10,Vb%,e$:SYSua%,256+17,Vb%:=Vb% DEFPROCb(x%,y%,a$,Wb%,Xb%):LOCALi%,Yb%:CASEXb%OF WHEN0:ya%=wa% WHEN1:ya%=xa% OTHERWISE:ERROR255,FNa(112)+" "+STR$(Xb%) ENDCASE Yb%=h%!`%:FORi%=1TOLEN(a$):PROCa(STR$(ASC(MID$(a$,i%,1))),x%+((i%-1)*Yb%),y%):IFWb%>0THENPROCe(Wb%) NEXTi%:ya%=va%:ENDPROC DEFPROCa(z$,x%,y%):LOCALZb%:SYSua%,256+24,ya%,z$TO,,Zb%:SYSua%,512+34,ya%,Zb%,x%,y%,0:ENDPROC DEFPROCd(E%):GCOL0,0TINT0:RECTANGLEFILLE%!b%,E%!a%,E%!d%,E%!k%:ENDPROC DEFFNk(_b%,h%):=(h%/2)-(_b%/2) DEFPROCs(a$,`b%):LOCALJ%,y%:J%=LEN(a$)*h%!`%:y%=(h%!k%/2)-(h%!U%/2):PROCb(FNk(J%,h%!d%),y%,a$,`b%,0):ENDPROC DEFFNg(ac%,bc%):=(bc%!d%/2)-(ac%!d%/2) DEFFNu(ac%,bc%):LOCALx%,y%:ac%!b%=(bc%!d%/2)-(ac%!d%/2):ac%!a%=(bc%!k%/2)-(ac%!k%/2):=ac% DEFPROCf(a%):LOCALi%,cc%:cc%=h%!d%/T%!d%:FORi%=1TOcc%+1:PROCa(FNb(108),(i%-1)*T%!d%,a%):NEXTi%:ENDPROC DEFPROCm(E%):LOCALx%,y%,dc%,ec%,fc%,gc%,i%:dc%=FNd(3,1):ec%=FNd(3,2):fc%=1:gc%=3:FORi%=1TOE%!d%:x%=E%!b%+((i%-1)*fc%):PROCa(FNb(113),x%,E%!a%):PROCa(FNb(113),x%,E%!a%+(E%!k%-(2*gc%))):NEXTi%:x%=E%!b%+(E%!d%-dc%):FORi%=1TOE%!k%-1 PROCa(FNb(114),E%!b%,E%!a%+((i%-1)*fc%)):PROCa(FNb(114),x%,E%!a%+((i%-1)*fc%)):NEXTi%:PROCa(FNb(111),E%!b%,E%!a%):PROCa(FNb(109),E%!b%,(E%!a%+E%!k%)-ec%):PROCa(FNb(112),E%!b%+(E%!d%-dc%),E%!a%):x%=(E%!b%+E%!d%)-dc%:y%=(E%!a%+E%!k%)-ec% PROCa(FNb(110),x%,y%):ENDPROC DEFFNs(e$,j$):LOCALhc%,ic%,k$:hc%=OPENIN(e$):INPUT#hc%,k$:IFk$<>j$THENCLOSE#hc%:ERROR255,"Bad Magic!" INPUT#hc%,ic%:CLOSE#hc%:=ic% DEFPROCl(e$,j$,RETURNj%(),RETURNf$()):LOCALhc%,i%,ic%,k$:hc%=OPENIN(e$):INPUT#hc%,k$:IFk$<>j$THENCLOSE#hc%:ERROR255,"Bad Magic!" INPUT#hc%,ic%:FORi%=1TOic%:INPUT#hc%,j%(i%),f$(i%):NEXTi%:CLOSE#hc%:ENDPROC DEFFNa(jc%):=FNv(jc%,ba%,g%(),b$(),106) DEFFNb(jc%):=FNv(jc%,ca%,h%(),c$(),107) DEFFNc(jc%):=FNv(jc%,da%,i%(),d$(),108) DEFFNv(jc%,kc%,k%(),g$(),lc%):LOCALi%,mc%:mc%=0:FORi%=1TOkc%:IFk%(i%)=jc%THENmc%=i%:i%=kc% NEXTi%:IFmc%=0THEN IFjc%>=106ANDjc%<=108THEN ERROR255,"Missing message!!!" ELSE:ERROR255,FNa(lc%)+" "+STR$(jc%) ENDIF ENDIF =FNp(g$(mc%)) DEFFNA(e$):LOCALH%:H%=0:SYSFNc(31),,e$TOH%:=H% DEFPROCg(nc%):LOCALDb%,v$:Db%=0:v$=FNa(110)+" "+STR$(nc%):IFe%!Db%>0THEN IFnc%<1ANDnc%>4THENERROR255,v$ OSCLI"SPlay_fire0"+STR$(nc%)+"mhh" ENDIF ENDPROC DEFPROCr:LOCALq%:q%=FNe(20):q%!0=4:q%!4=5:q%!8=11:q%!12=12:q%!16=-1:SYSFNc(5),q%,q%:h%!oa%=q%!0:h%!pa%=q%!4:h%!d%=(q%!8)+1<h%!qa%THENPROCr CASEoc%OF WHEN1:pc%=F%<>h%!oa% WHEN4:pc%=F%>>h%!pa% OTHERWISE:ERROR255,FNa(103)+" "+STR$(oc%) ENDCASE =pc% DEFFNl(E%,rc%):LOCALsc%,tc%,uc%,vc%:uc%=FALSE:vc%=FALSE:IFE%!w%ANDrc%!w%THEN sc%=rc%!b%+rc%!d%:tc%=rc%!a%+rc%!k%:IFE%!b%>=rc%!b%ANDE%!b%=rc%!a%ANDE%!a%-1THEN SYS"TimPlayer_SongStop",e%!4:SYS"TimPlayer_SongUnload",e%!4 ENDIF PROCt:ENDPROC DEFFNj(A$,w$):LOCALg$,N%,mc%:mc%=FALSE:g$=STRING$(10," "):RIGHT$(g$,3)=" : ":LEFT$(g$,LEN(w$))=w$:N%=FNq(A$):IFN%=1THEN g$+="OK.":mc%=TRUE ELSE:g$+="Missing!!" ENDIF PRINTg$:=mc% DEFFNw(ic%):LOCALh$,q$:q$=".Screens.":h$="Dump"+STR$(ic%):IFFNq(q$+h$)<>0THEN REPEAT:ic%+=1:h$="Dump"+STR$(ic%):UNTILFNq(q$+h$)=0ORLEN(h$)>10:IFLEN(h$)>10THENic%=-1 ENDIF =ic% DEFFNo(n%):LOCALwc%:wc%=RND(100):=wc%<=n% DEFFNp(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 DEFFNn(n%):=n%EOR1 DEFFNC(n%):LOCALc$,u%:u%=VAL(RIGHT$(STR$(n%),1)):c$=FNa(65):IFu%>=1ANDu%<=3THENc$=FNa(u%+61) =c$ DEFFNm(a$,xc%,y$,yc%):LOCALzc%,c$:zc%=xc%-LEN(a$):IFzc%<=0THEN c$=LEFT$(a$,xc%) ELSE:IFyc%THEN c$=STRING$(xc%,y$):RIGHT$(c$,LEN(a$))=a$ ELSE:c$=a$+STRING$(zc%,y$) ENDIF ENDIF =c$ DEFFNy(a$,xc%):LOCALc$:c$=STRING$(xc%," "):RIGHT$(c$,LEN(a$))=a$:=c$ DEFFNq(i$):LOCALmc%:SYS"XOS_File",17,i$TOmc%:=mc% DEFFNE(i$):LOCALF%:SYSFNc(3),5,i$TO,,,,F%:=F% DEFFNx(oc%,i$):LOCALH%,Ac%,Bc%,Cc%:Cc%=FALSE:CASEoc%OF WHEN0:H%=OPENUP(i$+"chkfile") WHEN1:H%=OPENUP(i$) OTHERWISE:ERROR255,FNa(104)+" "+STR$(oc%) ENDCASE IFH%<>0THEN SYSFNc(4),254,H%TOBc%;Ac%:IF(Ac%AND1)THENCLOSE#H%:ERROR255,FNa(105) IF((Bc%AND(1<<7))<>0)THENCc%=TRUE CLOSE#H% ENDIF =Cc% DEFPROCC:LOCALDc%:Ec%=0:Fc%=0:SYSFNc(10),-1,-1TOGc%:SYSFNc(11)TOHc%;Dc%:IFDc%AND1THENHc%=16384 PROCfa(Hc%):ENDPROC DEFPROCt:IFEc%THEN SYSFNc(10),Ec%-32768,-1TOGc%:Ec%=0:Fc%=0 ENDIF ENDPROC DEFFNe(_%):LOCALD%,F%:F%=(_%+15)AND-4:D%=FNF(F%):IFD%ELSEERROR254,FNa(211) D%!0=&DEADDEAD:D%!4=_%:!(D%-8+(D%!-4))=&DEADDEAD:=D%+8 DEFFNf(_%,Bb%):LOCALD%:D%=FNe(_%):PROCga(D%,Bb%):=D% DEFPROCc(RETURND%):CASEFNG(D%)OF WHEN1:ERROR254,FNa(212) WHEN2:ERROR254,FNa(213) WHEN3:ERROR254,FNa(217) ENDCASE D%-=8:Fc%-=D%!-4:SYS"OS_Heap",3,Ec%,D%:D%=0:ENDPROC DEFFNz(D%):LOCALq%:q%=D%-4:=q%!0 DEFPROCga(D%,Bb%):LOCALlb%,F%:F%=FNz(D%):FORlb%=0TOF%-4STEP4:D%!lb%=Bb%:NEXTlb%:ENDPROC DEFFNh(D%):LOCALIc%,lb%,F%:F%=FNz(D%):Ic%=FNe(F%):FORlb%=0TOF%-4STEP4:Ic%!lb%=D%!lb%:NEXTlb%:=Ic% DEFFNG(D%):LOCALAb%,Jc%:Ab%=FALSE:Jc%=FALSE:D%-=8:IFD%!0<>&DEADDEADTHENJc%=TRUE IF!(D%-8+(D%!-4))<>&DEADDEADTHENAb%=TRUE IFJc%ANDAb%THEN=3 IFAb%THEN=2 IFJc%THEN=1 =0 DEFPROCfa(F%):IFEc%THENERROR254,FNa(215) F%=(F%+Hc%-1)ANDNOT(Hc%-1):Ec%=HIMEM:SYSFNc(10),Gc%+F%,-1TOGc%:F%=Gc%+32768-Ec%:IFF%<1THEN Ec%=0:ERROR254,FNa(216) ELSE:SYSFNc(12),0,Ec%,,F% ENDIF Fc%=0:ENDPROC DEFPROCha(_%):LOCALKc%:Kc%=Gc%:SYSFNc(10),Gc%+_%,-1TOGc%:_%=Gc%-Kc%:IF_%THENSYSFNc(12),5,Ec%,,_%TO,,,_% ENDPROC DEFFNF(_%):LOCALD%,Dc%:SYSFNc(13),2,Ec%,,_%TO,,D%;Dc%:IFDc%AND1THEN PROCha((_%+Hc%)ANDNOT(Hc%-1)):SYSFNc(13),2,Ec%,,_%TO,,D%;Dc%:IFDc%AND1THEN=0 ENDIF Fc%+=D%!-4:=D%