REM Acorn Invaders REM Packed by Make v1.41 15/5/08 On 20 May 2009 ONERRORPROCC:END MODE28:OFF:a$="Acorn Invaders. (c)2007-2009 DynaByte Software":PRINTa$:PRINTSTRING$(LEN(a$),"-"):PRINT:p$=".Resources.":b$=".":f$=b$+"Data.":q$=b$+"Screens.":g$=p$+"Graphics.":b$=p$+"Data.":u$=p$+"Sound." aa%=FALSE:PRINT"Checking files...":IFNOTFNj(g$+"Gfx0","Sprites")THENaa%=TRUE IFNOTFNj(g$+"Gfx1","Charset")THENaa%=TRUE IFNOTFNj(g$+"Gfx2","Numerics")THENaa%=TRUE IFNOTFNj(u$+"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%),f$(ba%):PROCl(b$+"Msg","SGSM",g%(),f$()):PRINTFNa(14):PRINTFNa(9)+" "+FNa(3):ca%=FNs(b$+"ImgLUT","TULI"):DIMh%(ca%),c$(ca%):PROCl(b$+"ImgLUT","TULI",h%(),c$()) PRINTFNa(26):PROCr(ca%,132,c$()):PRINTFNa(14):PRINTFNa(9)+" "+FNa(13):da%=FNs(b$+"SWIs","TULS"):DIMi%(da%),d$(da%):PROCl(b$+"SWIs","TULS",i%(),d$()):PRINTFNa(26):PROCr(da%,132,d$()):PRINTFNa(14):PRINT:PRINTFNa(12):PRINTFNa(8)+" "+FNa(2) PROCD:d%=FNf(60,0):d%!0=1:d%!4=-1:d%!40=FNw(0):IFd%!40=-1THENERROR255,FNa(109) PRINTFNa(15)+STR$(d%!40):d%!44=TRUE:d%!48=128:d%!52=5:d%!56=5:PRINTFNa(9)+" "+FNa(24)+" ";:IFFNq(f$+"Configs")=1THEN PROCE:PRINTFNa(18) ELSE:PRINTFNa(25) ENDIF ea%=0:DIMa$(10),d%(10):DIMe%(10):PRINTFNa(8)+" "+FNa(22):b%=0:a%=4:e%=8:k%=12:R%=16:S%=20:A%=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:ra%=28:U%=32 sa%=16:ta%=20:PRINT:PRINTFNa(8)+" "+FNa(1)+" ";:ua%=0:SYSFNc(30)TOua%:PRINTFNa(21)+" "+STR$(ua%/100):d%!4=FNA(u$+"Intro"):PRINT:PRINTFNa(17)+" "+FNa(16):SYSFNc(1),,FNc(2)TOva%:PRINTFNa(9)+" "+FNa(4);:wa%=FNt(g$+"Gfx0"):PRINTFNa(14):PRINTFNa(9)+" "+FNa(5);:xa%=FNt(g$+"Gfx1"):PRINTFNa(14) PRINTFNa(9)+" "+FNa(23);:ya%=FNt(g$+"Gfx2"):PRINTFNa(14):za%=wa%:PRINT:PRINTFNa(9)+" "+FNa(6);:v%=OPENIN(b$+"Creds"):INPUT#v%,j$:IFj$<>"DERC"THEN CLOSE#v%:ERROR255,FNa(101):END ENDIF INPUT#v%,ea%,Aa%,Ba%:DIMe$(ea%),f%(ea%):FORi%=1TOea%:INPUT#v%,f%(i%),e$(i%):NEXTi%:CLOSE#v%:Ca%=0:FORi%=1TOea%:Ca%+=LEN(e$(i%)):NEXTi%:Da%=Ca%/ea%:IFDa%<>Ba%ORCa%<>Aa%THEN ERROR255,FNa(113) ELSE:PRINTFNa(14) ENDIF PRINT:PRINTFNa(7):v$=f$+"HiTable":IFFNq(v$)<>1THEN IFNOTFNx(0,f$)THEN d%!44=FALSE:PRINTFNa(19)+" "+FNa(10)+" "+FNa(20) ELSE:PRINTFNa(19)+" "+FNa(11)+" "+FNa(20) ENDIF PROCF(d%!44) ELSE:IFNOTFNx(1,v$)THEN d%!44=FALSE:PRINTFNa(18)+" "+FNa(10)+" "+FNa(20) ELSE:PRINTFNa(18)+" "+FNa(11)+" "+FNa(20) ENDIF PROCG ENDIF PRINT:PRINTFNa(12):PROCe(150):h%=FNe(36):T%=FNe(24):P%=FNe(16):CLS:PROCs:h%!ra%=FNd(8,1):h%!U%=FNd(8,2)+7:T%!e%=FNd(6,1):T%!k%=FNd(6,2):T%!sa%=h%!k%-50:T%!ta%=30:IFd%!0=1THEN SYSFNc(33),d%!4 ENDIF SYSFNc(36),d%!4,d%!48:WHILENOTFNB:CLS:PROCH:ENDWHILE:CLS:P%!e%=220:P%!k%=40:P%=FNu(P%,h%):P%!a%-=3:PROCm(P%):PROCt(FNa(31),10):IFd%!44THENPROCI IFd%!0=1THEN SYSFNc(36),d%!4,-1TO,Ea%:FORi%=Ea%TO0STEP-2:SYSFNc(36),d%!4,i%:PROCe(4):NEXTi%:SYSFNc(35),d%!4:SYSFNc(32),d%!4:d%!4=-1 ENDIF PROCu:END DEFFNB:LOCALi%,K%,L%,C%,J%,m%,Y%,Fa%,Ga%:LOCALp%,V%,Ha%,Ia%,Ja%,Ka%,La%,Ma%,Na%:LOCALx%,y%,N%,Oa%,s$,a$:Oa%=44:K%=FNf(16,0):L%=FNf(16,0):C%=FNf(16,0):m%=FNf(16,0):Y%=FNf(16,0):V%=FNf(16,0):p%=FNf(16,0):K%!e%=FNd(100,1):K%!k%=FNd(40,2) K%!b%=FNg(K%,h%):K%!a%=800:L%!e%=FNd(150,1):L%!k%=FNd(40,2):L%!b%=FNg(L%,h%):L%!a%=K%!a%-L%!k%:C%!e%=720:C%!k%=500:C%!b%=FNg(C%,h%):C%!a%=200:m%!e%=FNd(40,1):m%!k%=FNd(20,2):m%!b%=(C%!b%+C%!e%/2)-150:m%!a%=(C%!a%+C%!k%)-125 p%!e%=FNd(30,1):p%!k%=FNd(15,2):Y%!e%=FNd(20,1):Y%!k%=FNd(20,2):Y%!b%=(C%!b%+C%!e%/2)-150:Y%!b%+=FNg(Y%,m%):Fa%=FNh(Y%):Ga%=FNh(Y%)::Ga%!a%=m%!a%-40-Ga%!k%:Fa%!a%=Ga%!a%-40-Fa%!k%:Y%!a%=Fa%!a%-40-Y%!k% V%!e%=FNd(20,1):V%!k%=FNd(20,2):V%!b%=(C%!b%+C%!e%/2)-120:Ha%=FNh(V%):Ia%=FNh(V%):Ja%=FNh(V%):Ja%!b%=C%!b%:Pa%=FNh(Ja%):La%=FNh(Ja%):Ka%=FNh(V%):Ka%!b%=C%!b%:Ka%!b%+=(C%!e%/2)+10:Ma%=FNh(Ka%):Na%=FNh(Ka%) :V%!a%=(C%!a%+C%!k%)-120:Ha%!a%=V%!a%-60:Ia%!a%=Ha%!a%-60:La%!a%=Ia%!a%-90:Pa%!a%=La%!a%-60:Ja%!a%=Pa%!a%-60:Ka%!a%=Ia%!a%-90:Ma%!a%=Ka%!a%-60:Na%!a%=Ma%!a%-60:CLS:PROCf(T%!sa%):PROCf(T%!ta%):PROCj:FORi%=0-K%!e%TOK%!b%STEP5 WAIT:PROCa(FNb(100),i%,K%!a%):PROCe(1):NEXTi%:FORi%=h%!e%TOL%!b%STEP-5:WAIT:PROCa(FNb(101),i%,L%!a%):PROCe(1):NEXTi%:a$=FNa(32):J%=LEN(a$)*h%!ra%:y%=170:PROCc(FNk(J%,h%!e%),y%,a$,11,0):a$=FNa(33):J%=LEN(a$)*h%!ra%:y%-=h%!U%:PROCc(FNk(J%,h%!e%),y%,a$,11,0) WHILENOTINKEY(-99)ANDNOTINKEY(-17)ANDNOTINKEY(-82):y%=C%!a%+C%!k%:FORi%=1TOea%:a$=FNm(e$(i%),131):x%=FNi(a$):CASEf%(i%)OF WHEN-1:y%-=h%!U% WHEN-2:y%-=(2*h%!U%) OTHERWISE:y%-=f%(i%) ENDCASE PROCc(x%,y%,a$,0,0):NEXTi%:N%=FNr:IFN%=1THEN=TRUE IFN%=2THEN=FALSE PROCd(C%):a$=FNa(57)+" "+FNa(34):x%=FNi(a$):y%=C%!a%+C%!k%-20:PROCc(x%,y%,a$,0,0):a$=FNa(35):y%-=h%!U%:x%=FNi(a$):PROCc(x%,y%,a$,0,0):x%=m%!b%+m%!e%+10:PROCa(FNb(11),m%!b%,m%!a%):a$=FNa(36)+" "+FNa(40):PROCc(x%,m%!a%+10,a$,0,0) PROCa(FNb(24),Ga%!b%,Ga%!a%):a$=FNa(37)+" "+FNa(40):PROCc(x%,Ga%!a%+12,a$,0,0):PROCa(FNb(22),Fa%!b%,Fa%!a%):a$=FNa(38)+" "+FNa(40):PROCc(x%,Fa%!a%+12,a$,0,0):PROCa(FNb(20),Y%!b%,Y%!a%):a$=FNa(39)+" "+FNa(40):PROCc(x%,Y%!a%+12,a$,0,0) J%=p%!e%/h%!ra%+2:s$=FNa(66):a$=s$+STRING$(J%," ")+FNa(67):x%=FNi(a$):y%=Y%!a%-(3*h%!U%):PROCc(x%,y%,a$,0,0):p%!b%=x%+7+(LEN(s$)*h%!ra%):p%!a%=y%:PROCa(FNb(1),p%!b%,p%!a%):N%=FNr:IFN%=1THEN=TRUE IFN%=2THEN=FALSE PROCd(C%):a$=FNa(41):x%=FNi(a$):y%=C%!a%+C%!k%-20:PROCc(x%,y%,a$,0,0):x%=V%!b%+V%!e%+10:PROCa(FNb(102),V%!b%,V%!a%):a$=FNa(42)+" "+FNa(43):PROCc(x%,V%!a%+12,a$,0,0):PROCa(FNb(103),Ha%!b%,Ha%!a%):a$=FNa(42)+" "+FNa(44):PROCc(x%,Ha%!a%+12,a$,0,0) PROCa(FNb(104),Ia%!b%,Ia%!a%):PROCc(x%,Ia%!a%+12,FNa(45),0,0):x%=Ja%!b%+Ja%!e%+10:PROCa(FNb(105),Pa%!b%,Pa%!a%):a$=FNa(46)+" "+FNa(49):PROCc(x%,Pa%!a%+12,a$,0,0):PROCa(FNb(117),La%!b%,La%!a%):PROCc(x%,La%!a%+12,FNa(76),0,0) PROCa(FNb(107),Ja%!b%,Ja%!a%):a$=FNa(48)+" "+FNa(49):PROCc(x%,Ja%!a%+12,a$,0,0):x%=Ka%!b%+Ka%!e%+10:PROCa(FNb(106),Ka%!b%,Ka%!a%):a$=FNa(47)+" "+FNa(73):PROCc(x%,Ka%!a%+12,a$,0,0):PROCa(FNb(115),Ma%!b%,Ma%!a%):a$=FNa(47)+" "+FNa(77)+" ":a$+=FNa(74) PROCc(x%,Ma%!a%+12,a$,0,0):PROCa(FNb(116),Na%!b%,Na%!a%):a$=FNa(47)+" "+FNa(77)+" ":a$+=FNa(75):PROCc(x%,Na%!a%+12,a$,0,0):N%=FNr:IFN%=1THEN=TRUE IFN%=2THEN=FALSE PROCd(C%):a$=FNa(50):IFd%!Oa%THENa$=FNa(51) x%=FNi(a$):y%=C%!a%+C%!k%-20:PROCc(x%,y%,a$,0,0):a$=FNa(58)+" "+FNa(52):x%=FNi(a$):y%-=h%!U%:PROCc(x%,y%,a$,0,0):y%=(C%!a%+C%!k%)-100:a$=" "+FNa(68)+" "+FNa(69):a$+=STRING$(12," ")+FNa(57)+".":a$+=STRING$(3," ")+FNa(60)+".":x%=FNi(a$):PROCc(x%,y%,a$,0,0) y%-=2*h%!U%:FORi%=1TO10:IFi%<10THEN a$=" "+STR$(i%)+". " ELSE:a$=" "+STR$(i%)+". " ENDIF s$=FNm(a$(i%),131):a$+=FNn(s$,8," ",FALSE):a$+=" .... ":a$+=FNy(STR$(d%(i%)),10):a$+=" ... "+FNy(STR$(e%(i%)),3):x%=FNi(a$):PROCc(x%,y%-(i%*(h%!U%+5)),a$,0,0):NEXTi%:N%=FNr:IFN%=1THEN=TRUE IFN%=2THEN=FALSE PROCd(C%):ENDWHILE:ERROR255,FNa(102):=FALSE DEFFNr:LOCALt%,N%:t%=TIME+750:N%=FALSE:REPEAT:IFINKEY(-82)THENPROCv IFINKEY(-102)THENPROCw IFINKEY(-59)THENPROCk(4) IFINKEY(-60)THENPROCk(-4) UNTILTIME>=t%ORINKEY(-17)ORINKEY(-99):IFINKEY(-17)THENN%=1 IFINKEY(-99)THENN%=2 IFN%THEN PROCb(K%):PROCb(L%):PROCb(C%):PROCb(m%):PROCb(Y%):PROCb(Fa%):PROCb(Ga%):PROCb(V%):PROCb(Ha%):PROCb(Ia%):PROCb(Ja%):PROCb(Ka%):PROCb(Pa%):PROCb(La%):PROCb(Ma%):PROCb(Na%):PROCb(p%) ENDIF =N% DEFFNi(a$):LOCALJ%:J%=LEN(a$)*h%!ra%:=C%!b%+FNk(J%,C%!e%) DEFPROCH:LOCALp%,w%,m%,f%,B%:LOCALH%:LOCALc%(),a%():LOCALb%(),Qa%:LOCALRa%,Sa%,Ta%,Ua%:LOCALVa%,Wa%,Xa%:LOCALYa%:LOCALZa%,_a%,`a%,ab%,bb%:LOCALcb%,J%,a$,x%,y%,i%,j%:p%=FNe(32):w%=FNe(28):m%=FNe(48):f%=FNe(68):H%=FNe(16):B%=FNf(16,0) Ra%=0:Sa%=4:Ta%=8:Ua%=12:Ya%=16:db%=12:Va%=28:Qa%=56:Za%=ga%:_a%=ha%:`a%=ia%:ab%=la%:bb%=ma%:DIMc%(10,6),a%(10),b%(d%!Qa%):p%!e%=FNd(30,1):p%!k%=FNd(15,2):p%!b%=FNg(p%,h%):p%!a%=50:p%!S%=6:p%!R%=p%!S% H%!e%=FNd(20,1):H%!k%=FNd(20,2):m%!e%=FNd(40,1):m%!k%=FNd(20,2):m%!a%=T%!sa%-(10+m%!k%):m%!S%=5:m%!A%=FALSE:m%!ha%=1:w%!e%=FNd(5,1):w%!k%=FNd(20,2):w%!A%=FALSE:w%!S%=10:B%!Ta%=1:B%!Ra%=3:B%!Ua%=FALSE d%!Ya%=-1:d%!db%=0:f%!Za%=FNd(20,1):f%!_a%=10:f%!`a%=6:f%!A%=TRUE:f%!bb%=4:SYSFNc(6)TOf%!na%:PROCJ:PROCK:PROCf(T%!sa%):PROCf(T%!ta%):PROCL(0,d%(1),B%!Ra%,B%!Ta%):PROCM:PROCx:PROCa(FNb(1),p%!b%,p%!a%):WHILEB%!Ra%>0:cb%=FALSE:IFd%!Va%=0THEN IFINKEY(-74)THENPROCN(p%!b%,p%!a%) IFINKEY(-98)THENPROCO:cb%=TRUE IFINKEY(-67)THENPROCP:cb%=TRUE IFINKEY(-17)THENPROCQ ENDIF IFINKEY(-102)THENPROCw IFINKEY(-82)THENPROCv IFINKEY(-56)THENPROCR IFINKEY(-59)THENPROCk(4) IFINKEY(-60)THENPROCk(-4) IFd%!Va%=0THEN IFcb%THEN p%!b%+=p%!R%:PROCa(FNb(1),p%!b%,p%!a%) ENDIF ENDIF IFd%!Va%=0THEN PROCS:PROCT:PROCU:PROCV:PROCW:PROCX ELSE:PROCY ENDIF WAIT:ENDWHILE:P%!e%=240:P%!k%=40:P%=FNu(P%,h%):P%!a%-=3:PROCd(P%):PROCm(P%):a$=FNa(49)+" "+FNa(53):PROCt(a$,11):PROCe(750):IFNOTB%!Ua%THEN IFB%!Sa%>=d%(10)THEN PROCZ(B%) ENDIF ENDIF PROCb(p%):PROCb(f%):PROCb(m%):PROCb(w%):PROCb(B%):PROCb(H%):FORi%=1TO10:PROCb(a%(i%)):NEXTi%:FORi%=1TOd%!Qa%:PROCb(b%(i%)):NEXTi%:ENDPROC DEFPROCO:IFp%!b%<=0THEN p%!b%=0 ELSE:p%!R%=0-p%!S% ENDIF ENDPROC DEFPROCP:IFp%!b%>=h%!e%-p%!e%THEN p%!b%=h%!e%-p%!e% ELSE:p%!R%=0+p%!S% ENDIF ENDPROC DEFPROCN(x%,y%):IFNOTw%!A%THEN w%!A%=TRUE:w%!b%=x%+(p%!e%/2):w%!a%=y%+p%!k%:PROCg(4) ENDIF ENDPROC DEFPROCv:LOCALM%,eb%:M%=40:eb%=44:IFd%!eb%THEN REPEAT:UNTILNOTINKEY(-82):d%!M%=FNw(d%!M%):IFd%!M%=-1THENERROR255,FNa(109) OSCLI"ScreenSave "+q$+"Dump"+STR$(d%!M%) ENDIF ENDPROC DEFPROCQ:LOCALi%,fb%:fb%=52:FORi%=1TOd%!fb%:a%(i%)!A%=FALSE:NEXTi%:B%!Ra%=0:B%!Ua%=TRUE:ENDPROC DEFPROCw:LOCALZ%,gb%:Z%=0:gb%=4:REPEAT:UNTILNOTINKEY(-102):d%!Z%+=1:IFd%!Z%>2THENd%!Z%=0 IFd%!Z%=1THEN SYSFNc(33),d%!gb% ELSE:SYSFNc(34),d%!gb% ENDIF PROCj:ENDPROC DEFPROCk(hb%):LOCALZ%,gb%,ib%,jb%,D%,Ea%,kb%:Z%=0:gb%=4:ib%=8:jb%=48:IFd%!Z%=1THEN SYSFNc(6)TOD%:IFD%-d%!ib%>=10THEN SYSFNc(36),d%!gb%,-1TO,Ea%:kb%=Ea%+hb%:IFkb%>=0ANDkb%<=128THEN SYSFNc(36),d%!gb%,kb%:d%!jb%=kb%:d%!ib%=D% ENDIF ENDIF ENDIF ENDPROC DEFPROCR:LOCALVa%,Wa%,a$:Va%=28:Wa%=32:REPEATUNTILNOTINKEY(-56):a$=FNa(49)+" "+FNa(61):d%!Va%=FNo(d%!Va%):d%!Wa%=d%!Va%:IFd%!Va%=0THEN a$=STRING$(LEN(a$)," "):PROCn(a$) ENDIF ENDPROC DEFPROCS:IFw%!A%THEN IFw%!a%>=T%!sa%-w%!k%THEN w%!A%=FALSE:w%!a%-=2:PROCd(w%) ELSE:PROCa(FNb(5),w%!b%,w%!a%) ENDIF w%!a%+=w%!S% ENDIF ENDPROC DEFPROCT:LOCALlb%,mb%,nb%,D%,_%,d$:lb%=fa%:mb%=ga%:nb%=ha%:IFNOTm%!A%THEN IFFNp(4)ANDFNp(5)THEN m%!A%=TRUE:m%!X%=FALSE:m%!mb%=0:IFFNp(50)THEN m%!R%=0-m%!S%:m%!b%=h%!e% ELSE:m%!R%=0+m%!S%:m%!b%=0-m%!e% ENDIF ENDIF ELSE:IFm%!b%<=0-m%!e%ANDSGN(m%!R%)=-1THEN m%!lb%=FALSE:m%!A%=FALSE:ENDPROC ENDIF IFm%!b%>h%!e%ANDSGN(m%!R%)=1THEN m%!lb%=FALSE:m%!A%=FALSE:ENDPROC ENDIF IFNOTm%!X%THEN IFFNl(w%,m%)THEN PROCd(w%):PROCa(FNb(12),m%!b%,m%!a%):SYSFNc(6)TOm%!lb%:m%!X%=TRUE:w%!A%=FALSE:PROCh(500) ENDIF ELSE:IFFNl(w%,m%)THEN PROCd(w%):w%!A%=FALSE ENDIF ENDIF IFNOTm%!X%THEN SYSFNc(6)TOD%:IFD%-m%!nb%>=40THEN m%!nb%=D%:m%!mb%=FNo(m%!mb%) ENDIF d$=FNb(10)+STR$(m%!mb%):PROCa(d$,m%!b%,m%!a%):m%!b%+=m%!R% ELSE:SYSFNc(6)TOD%:_%=D%-m%!lb%:IF_%>=300THEN m%!A%=FALSE:m%!mb%=1:PROCd(m%) ELSE:IF_%>=250THEN PROCa(FNb(15),m%!b%,m%!a%) ELSE:IF_%>=200THEN PROCa(FNb(14),m%!b%,m%!a%) ELSE:IF_%>=100THEN PROCa(FNb(13),m%!b%,m%!a%) ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF ENDPROC DEFPROCU:LOCALob%,z%,I%,Q%,pb%,qb%,rb%,sb%:LOCALO%,tb%,ub%,D%,vb%,wb%,xb%:O%=fa%:tb%=ja%:ub%=ka%:vb%=na%:wb%=52:xb%=56:SYSFNc(6)TOD%:IFD%-f%!vb%>=50THEN f%!vb%=D%:f%!O%=FNo(f%!O%) ENDIF ob%=f%!b%+f%!e%:sb%=0-((f%!tb%-1)*(H%!e%+f%!Za%)):IFob%>=h%!e%THEN f%!R%=0-f%!S%:PROCy ENDIF IFf%!b%<=sb%THEN f%!R%=0+f%!S%:PROCy ENDIF sb%=f%!a%+((f%!ab%-1)*H%!k%):IFsb%<=p%!a%+p%!k%THEN PROC_:ENDPROC ENDIF IFFNl(w%,f%)THEN z%=H%!e%+f%!Za%:IF(w%!b%-f%!b%)MODz%<=H%!e%THEN I%=((w%!a%-f%!a%)DIVH%!k%)+1:Q%=((w%!b%-f%!b%)DIVz%)+1:IFSGN(c%(Q%,I%))=1THEN c%(Q%,I%)=-5:PROCd(w%):w%!A%=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%!_a%*f%!`a%THEN B%!Ta%+=1:PROCd(f%):PROCf(T%!ta%):PROCi(B%!Ra%):PROCo(B%!Ta%):PROCj:PROCa(FNb(1),p%!b%,p%!a%):PROC`:PROCx:PROCz:IFB%!Ta%>=5THENd%!wb%=7 IFB%!Ta%>=10THENd%!wb%=10 ENDIF pb%=TRUE:qb%=TRUE:FORI%=1TOf%!`a%:IFc%(f%!ub%,I%)<>0THENpb%=FALSE IFc%(f%!tb%,I%)<>0THENqb%=FALSE NEXTI%:rb%=TRUE:FORQ%=1TOf%!_a%:IFc%(Q%,f%!ab%)<>0THENrb%=FALSE NEXTQ%:IFqb%THENf%!tb%+=1 IFpb%THEN f%!e%-=(H%!e%+f%!Za%):f%!ub%-=1 ENDIF IFrb%THENf%!ab%+=1 f%!b%+=f%!R%:PROCp:ENDPROC DEFPROCV:LOCALi%,j%,D%,wb%,xb%:wb%=52:xb%=56:FORi%=1TOd%!wb%:IFNOTa%(i%)!A%THEN PROCaa(i%) ELSE:PROCba(i%):IFa%(i%)!a%<=T%!ta%+(T%!k%+5)THEN a%(i%)!A%=FALSE:PROCd(a%(i%)) ENDIF IFFNl(a%(i%),p%)ANDa%(i%)!A%THEN PROCca(i%) ENDIF FORj%=1TOd%!xb%:IFFNl(a%(i%),b%(j%))THEN PROCA(j%,FALSE):PROCd(a%(i%)):a%(i%)!A%=FALSE ENDIF NEXTj%:IFFNl(w%,a%(i%))THEN PROCda(i%) ENDIF IFa%(i%)!X%THEN PROCea(i%) ENDIF ENDIF NEXTi%:ENDPROC DEFPROCY:LOCALVa%,Wa%,Xa%,D%,a$:Va%=28:Wa%=32:Xa%=36:SYSFNc(6)TOD%:IFD%-d%!Xa%>=50THEN d%!Wa%=FNo(d%!Wa%):d%!Xa%=D% ENDIF a$=FNa(49)+" "+FNa(61):IFd%!Wa%=0ORd%!Va%=0THEN a$=STRING$(LEN(a$)," ") ENDIF PROCn(a$):ENDPROC DEFPROCX:LOCALYa%,yb%,zb%,D%,a$:Ya%=16:yb%=20:zb%=24:IFd%!Ya%>=0THEN SYSFNc(6)TOD%:a$=FNa(66)+" "+FNa(72):IFD%-d%!zb%>=50THEN d%!zb%=D%:d%!yb%=FNo(d%!yb%):IFd%!yb%=1THENd%!Ya%+=1 ENDIF IFd%!yb%=0THEN a$=STRING$(LEN(a$)," ") ENDIF IFd%!Ya%>5THEN a$=STRING$(LEN(a$)," "):d%!Ya%=-1 ENDIF PROCn(a$) ENDIF ENDPROC DEFPROCW:LOCALi%,D%,fb%,vb%,q%:fb%=56:vb%=ga%:q%=FNe(16):FORi%=1TOd%!fb%:IFFNl(w%,b%(i%))THEN PROCd(w%):w%!A%=FALSE:PROCA(i%,TRUE) ENDIF IFb%(i%)!X%THEN SYSFNc(6)TOD%:IFD%-b%(i%)!vb%>=5THEN q%!b%=b%(i%)!b%:q%!e%=b%(i%)!e%:q%!a%=b%(i%)!a%-5:q%!k%=b%(i%)!k%+10:PROCd(q%):PROCq(b%(i%)):b%(i%)!X%=FALSE ENDIF ENDIF NEXTi%:PROCb(q%):ENDPROC DEFPROCF(Ab%):LOCALi%,n$:FORi%=1TO10:IFi%MOD2=0THENn$=FNa(71)ELSEn$=FNa(70) a$(i%)=FNm(n$,131):d%(i%)=(11-i%)*1000:e%(i%)=0:NEXTi%:IFAb%THENPROCB ENDPROC DEFPROCG:LOCALi%,v%:v%=OPENIN(f$+"HiTable"):FORi%=1TO10:INPUT#v%,a$(i%),d%(i%),e%(i%):NEXTi%:CLOSE#v%:ENDPROC DEFPROCB:LOCALi%,v%:v%=OPENOUT(f$+"HiTable"):FORi%=1TO10:PRINT#v%,a$(i%),d%(i%),e%(i%):NEXTi%:CLOSE#v%:ENDPROC DEFPROCZ(B%):LOCALL%,K%,Bb%,g%,i%,Cb%,J%,x%,y%,a$:LOCALOa%:K%=FNe(16):L%=FNe(16):Oa%=44:K%!e%=FNd(100,1):K%!k%=FNd(40,2):K%!b%=FNg(K%,h%):K%!a%=800:L%!e%=FNd(150,1):L%!k%=FNd(40,2):L%!b%=FNg(L%,h%):L%!a%=K%!a%-L%!k%:Cb%=0:FORi%=10TO1STEP-1 IFB%!Sa%>=d%(i%)THENCb%=i% NEXTi%:FORi%=9TOCb%STEP-1:a$(i%+1)=a$(i%):d%(i%+1)=d%(i%):e%(i%+1)=e%(i%):NEXTi%:d%(Cb%)=B%!Sa%:e%(Cb%)=B%!Ta%:CLS:PROCf(T%!sa%):PROCf(T%!ta%):PROCa(FNb(100),K%!b%,K%!a%):PROCa(FNb(101),L%!b%,L%!a%):a$=FNa(54)+" "+STR$(B%!Sa%) a$+=" "+FNa(55)+" "+STR$(Cb%)+FNC(Cb%):J%=LEN(a$)*h%!ra%:x%=FNk(J%,h%!e%):y%=L%!a%-170:PROCc(x%,y%,a$,0,0):PROCb(K%):PROCb(L%):P%!e%=165:P%!k%=40:P%=FNu(P%,h%):PROCm(P%):x%=P%!b%+20:y%=P%!a%+12:a$="":i%=1:Bb%=FALSE OSCLI"FX 21,0":REPEAT:g%=GET:CASEg%OF WHEN13:Bb%=TRUE WHEN8:i%-=1:a$=LEFT$(a$,i%-1) OTHERWISE:IFi%<9ANDFND(g%)THENi%+=1:a$+=CHR$(g%) ENDCASE IFi%<1THENi%=1 PROCc(x%,y%,STRING$(8," "),0,0):IFa$<>""THENPROCc(x%,y%,a$,0,0) UNTILBb%:IFa$=""ORa$=" "THENa$=FNa(56) a$(Cb%)=FNm(a$,131):IFd%!Oa%THENPROCB ENDPROC DEFFND(Db%):=Db%>=32ANDDb%<=126 DEFPROCL(Eb%,Fb%,l%,r%):LOCALx%,a$:a$=FNa(57)+" "+FNa(59):a$+=FNn(STR$(Eb%),10," ",TRUE):PROCc(0,h%!k%-h%!U%,a$,0,0):a$=FNa(58)+" "+FNa(57):a$+=" "+FNa(59)+FNn(STR$(Fb%),10," ",TRUE):x%=h%!e%-LEN(a$)*h%!ra%:PROCc(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%):PROCc(p%!e%,0,a$,0,0):ENDPROC DEFPROCo(M%):LOCALx%,a$:a$=FNa(60)+" "+FNa(59):a$+=FNn(STR$(M%),3,"0",TRUE):x%=h%!e%-LEN(a$)*h%!ra%:PROCc(x%,0,a$,0,0):ENDPROC DEFPROCn(a$):LOCALx%,y%,J%:J%=LEN(a$)*h%!ra%:x%=FNk(J%,h%!e%):y%=h%!k%-h%!U%:PROCc(x%,y%,a$,0,0):ENDPROC DEFPROCh(Gb%):LOCALdb%,Ya%,x%,a$:db%=12:Ya%=16:B%!Sa%+=Gb%:a$=FNa(57)+" "+FNa(59):a$+=FNn(STR$(B%!Sa%),10," ",TRUE):PROCc(0,h%!k%-h%!U%,a$,0,0):IFB%!Sa%-d%!db%>=5000THEN B%!Ra%+=1:PROCi(B%!Ra%):d%!db%=B%!Sa%:d%!Ya%=0 ENDIF IFB%!Sa%>d%(1)THEN a$=FNa(58)+" "+FNa(57)+" ":a$+=FNa(59):a$+=FNn(STR$(B%!Sa%),10," ",TRUE):x%=h%!e%-LEN(a$)*h%!ra%:PROCc(x%,h%!k%-h%!U%,a$,0,0) ENDIF ENDPROC DEFPROCj:LOCALHb%,Ib%,d$:Ib%=FNe(16):Hb%=0:Ib%!e%=FNd(20,1):Ib%!k%=FNd(10,2):Ib%!b%=FNg(Ib%,h%):Ib%!a%=0:IFd%!Hb%<0ORd%!Hb%>2THEN ERROR255,FNa(111)+" "+STR$(d%!Hb%) ENDIF d$=FNb(120+d%!Hb%):PROCa(d$,Ib%!b%,Ib%!a%):PROCb(Ib%):ENDPROC DEFPROCM:LOCALO%,tb%,ub%,ab%:O%=fa%:tb%=ja%:ub%=ka%:ab%=la%:PROCz:PROCp:ENDPROC DEFPROCz:LOCALI%,Q%,s%:f%!b%=50:f%!a%=550:f%!O%=0:f%!X%=0:f%!S%=3:f%!R%=f%!S%:f%!tb%=1:f%!ub%=f%!_a%:f%!ab%=1:s%=(f%!_a%*H%!e%)+((f%!_a%-1)*f%!Za%):f%!e%=s%:f%!k%=f%!`a%*H%!k%:FORQ%=1TOf%!_a%:FORI%=1TOf%!`a% c%(Q%,I%)=((I%+1)/2)+(f%!O%*10):NEXTI%:NEXTQ%:ENDPROC DEFPROCp:LOCALI%,Q%,x%,y%,q%:q%=FNe(16):FORQ%=f%!tb%TOf%!ub%:x%=f%!b%+((Q%-1)*(H%!e%+f%!Za%)):FORI%=f%!ab%TOf%!`a%:y%=f%!a%+((I%-1)*H%!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:PROCfa(x%,y%,Q%,I%) WHEN1:PROCa(FNb(27)+STR$(c%(Q%,I%)),x%,y%) ENDCASE ELSE:q%!b%=x%:q%!a%=y%:q%!e%=H%!e%:q%!k%=H%!k%:PROCd(q%) ENDIF NEXTI%:NEXTQ%:PROCb(q%):ENDPROC DEFPROCfa(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%!e%=H%!e%:q%!k%=H%!k%:PROCd(q%):PROCb(q%) ENDIF ENDPROC DEFPROCy:LOCALq%,i%:q%=FNe(16):FORi%=1TO3:f%!a%-=H%!k%/3:PROCp:NEXTi%:q%!b%=f%!b%:q%!a%=f%!a%+f%!k%:q%!e%=f%!e%:q%!k%=H%!k%:PROCd(q%):PROCb(q%):ENDPROC DEFPROC_:LOCALW%,Jb%,D%,Kb%,Lb%,S%,i%,o$:S%=1:Mb%=24:W%=FNe(28):Jb%=FNe(28):PROCd(f%):PROCd(p%):IFw%!A%THEN PROCd(w%):w%!A%=FALSE ENDIF IFm%!A%THEN PROCd(m%):m%!A%=FALSE ENDIF PROCga:PROCha:p%!b%=FNg(p%,h%):W%!b%=0-H%!e%:W%!a%=p%!a%:W%!R%=S%:Jb%!b%=h%!e%:Jb%!a%=p%!a%:Jb%!R%=0-S%:B%!Ra%=0:PROCf(T%!ta%):PROCi(B%!Ra%):PROCo(B%!Ta%):PROCa(FNb(1),p%!b%,p%!a%):O%=0:Lb%=FALSE:REPEAT:W%!b%+=W%!R%:W%!Mb%=W%!b%+H%!e%:Jb%!b%+=Jb%!R% SYSFNc(6)TOD%:IFD%-Kb%>=50THENLb%=FNo(Lb%):Kb%=D% IFLb%THENo$=FNb(21)ELSEo$=FNb(20) PROCa(o$,W%!b%,W%!a%):PROCa(o$,Jb%!b%,Jb%!a%):PROCe(2):WAIT:UNTILW%!Mb%>=p%!b%:FORi%=1TO10:PROCa(FNb(20),W%!b%,W%!a%):PROCa(FNb(20),Jb%!b%,Jb%!a%):PROCe(20):PROCa(FNb(21),W%!b%,W%!a%):PROCa(FNb(21),Jb%!b%,Jb%!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%):PROCb(W%):PROCb(Jb%):ENDPROC DEFPROCJ:LOCALi%,_%,Kb%:_%=ha%:Kb%=ia%:FORi%=1TO10:a%(i%)=FNf(48,0):a%(i%)!e%=FNd(5,1):a%(i%)!k%=FNd(20,2):SYSFNc(6)TOa%(i%)!_%:SYSFNc(6)TOa%(i%)!Kb%:a%(i%)!A%=FALSE:NEXTi%:ENDPROC DEFPROCaa(o%):LOCALNb%,Ob%,Pb%,Qb%,x%,y%:LOCALO%,Rb%:O%=fa%:Rb%=ga%:Nb%=RND(10):Pb%=B%!Ta%+5:IFPb%>100THEN Pb%=100:IFB%!Ta%MOD10=0THENf%!bb%+=1 ENDIF IFFNp(Pb%)ANDFNp(f%!bb%)THEN IFc%(Nb%,f%!ab%)>0THEN x%=f%!b%+(Nb%-1)*(H%!e%+f%!Za%):y%=f%!a%+((f%!ab%-1)*H%!k%)-H%!k%:Ob%=(H%!e%/2)-(a%(o%)!e%/2):a%(o%)!b%=x%+Ob%:a%(o%)!a%=y%:a%(o%)!A%=TRUE:a%(o%)!X%=FALSE:a%(o%)!Rb%=1:a%(o%)!O%=0:Qb%=4:IFFNp(25)THENa%(o%)!Rb%=2:Qb%=Qb%/2 a%(o%)!S%=Qb%:a%(o%)!R%=a%(o%)!S%:PROCg(3) ENDIF ENDIF ENDPROC DEFPROCba(o%):LOCALD%,O%,Kb%,Rb%,d$,r$:O%=fa%:Rb%=ga%:Kb%=ia%:SYSFNc(6)TOD%:IFD%-a%(o%)!Kb%>=40THEN a%(o%)!Kb%=D%:a%(o%)!O%+=1 ENDIF :IFa%(o%)!Rb%=1ANDa%(o%)!O%>1THEN a%(o%)!O%=0 ENDIF IFa%(o%)!Rb%=2ANDa%(o%)!O%>3THEN a%(o%)!O%=0 ENDIF r$=STR$(a%(o%)!O%):IFa%(o%)!Rb%=2ANDa%(o%)!O%=3THEN r$="1" ENDIF d$=FNb(30)+STR$(a%(o%)!Rb%)+r$: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 DEFPROCca(o%):LOCALi%:PROCg(2):FORi%=1TO3:PROCa(FNb(2)+STR$(i%),p%!b%,p%!a%):PROCe(20):WAIT:NEXTi%:PROCd(p%):IFw%!A%THEN PROCd(w%):w%!A%=FALSE ENDIF p%!b%=FNg(p%,h%):B%!Ra%-=1:PROCi(B%!Ra%):PROCd(a%(o%)):a%(o%)!A%=FALSE:PROCa(FNb(1),p%!b%,p%!a%):ENDPROC DEFPROCda(o%):LOCALRb%,_%:Rb%=ga%:_%=ha%:IFa%(o%)!Rb%=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%)!_% ENDIF ENDIF PROCd(w%):w%!A%=FALSE:ENDPROC DEFPROCea(o%):LOCAL_%,D%:_%=ha%:SYSFNc(6)TOD%:IFD%-a%(o%)!_%>=40THEN PROCd(a%(o%)):a%(o%)!A%=FALSE ENDIF ENDPROC DEFPROCga:LOCALi%,Sb%:Sb%=52:FORi%=1TOd%!Sb%:IFa%(i%)!A%THEN PROCd(a%(i%)):a%(i%)!A%=FALSE ENDIF NEXTi%:ENDPROC DEFPROCK:LOCALi%,x%,Tb%,Ub%,M%:M%=d%!56:Ub%=fa%:Tb%=h%!e%/M%:x%=Tb%-150:FORi%=1TOM%:b%(i%)=FNf(48,0):b%(i%)!e%=FNd(30,1):b%(i%)!k%=FNd(15,2):b%(i%)!b%=x%+((i%-1)*Tb%):b%(i%)!a%=p%!a%+100:b%(i%)!A%=TRUE:b%(i%)!Ub%=0:NEXTi%:ENDPROC DEFPROC`:LOCALi%,Ub%,M%:M%=d%!56:Ub%=fa%:FORi%=1TOM%:b%(i%)!A%=TRUE:b%(i%)!Ub%=0:NEXTi%:ENDPROC DEFPROCx:LOCALi%,M%:M%=56:FORi%=1TOd%!M%:IFb%(i%)!A%THENPROCq(b%(i%)) NEXTi%:ENDPROC DEFPROCq(o%):LOCALVb%,Wb%,Xb%,J%,Ub%,a$:Ub%=fa%:Xb%=10-o%!Ub%:a$=STR$(Xb%):J%=LEN(a$):Vb%=o%!b%+FNk(J%,o%!e%):Wb%=o%!a%+(o%!k%/2)-(h%!U%/2):Wb%+=7:IFJ%=1THENVb%-=7ELSEVb%-=15 PROCd(o%):PROCa(FNb(16),o%!b%,o%!a%):PROCc(Vb%,Wb%,a$,0,1):ENDPROC DEFPROCA(o%,Yb%):LOCALy%,Ub%:Ub%=fa%:vb%=ga%:b%(o%)!Ub%+=1:IFb%(o%)!Ub%>=10THEN PROCd(b%(o%)):b%(o%)!A%=FALSE ELSE:PROCd(b%(o%)):y%=b%(o%)!a%:IFYb%THENb%(o%)!a%+=5ELSEb%(o%)!a%-=5 PROCq(b%(o%)):b%(o%)!X%=TRUE:b%(o%)!a%=y%:SYSFNc(6)TOb%(o%)!vb% ENDIF ENDPROC DEFPROCha:LOCALi%,q%,M%:M%=d%!56:FORi%=1TOM%:b%(i%)!A%=FALSE:NEXTi%:q%=FNe(16):q%!b%=0:q%!a%=b%(1)!b%:q%!e%=h%!e%:q%!k%=b%(1)!k%:PROCd(q%):PROCb(q%):ENDPROC DEFFNt(e$):LOCALG%,Zb%,_b%,`b%,ac%,bc%,Hb%:G%=FNE(e$):`b%=FNf(G%,0):SYSFNc(3),16,e$,`b%,0:SYSFNc(7),1<<3,G%TOZb%,_b%:IF_b%=-1THEN_b%=`b%!4 ac%=FNf(Zb%,0):bc%=FNf(_b%+4,0):bc%!0=_b%+4:bc%!4=0:bc%!8=16:bc%!12=16:SYSFNc(7),1<<2,ac%,`b%+20,G%-20,bc%+4,_b%TOHb%:IFHb%<>0THENERROR255,FNa(114)+" "+STR$(Hb%) SYSva%,256+17,bc%:PROCb(ac%):PROCb(`b%):=bc% DEFPROCc(x%,y%,a$,cc%,dc%):LOCALi%,ec%:CASEdc%OF WHEN0:za%=xa% WHEN1:za%=ya% OTHERWISE:ERROR255,FNa(112)+" "+STR$(dc%) ENDCASE ec%=h%!ra%:FORi%=1TOLEN(a$):PROCa(STR$(ASC(MID$(a$,i%,1))),x%+((i%-1)*ec%),y%):IFcc%>0THENPROCe(cc%) NEXTi%:za%=wa%:ENDPROC DEFPROCa(A$,x%,y%):LOCALfc%:SYSva%,256+24,za%,A$TO,,fc%:SYSva%,512+34,za%,fc%,x%,y%,0:ENDPROC DEFPROCd(F%):GCOL0,0TINT0:RECTANGLEFILLF%!b%,F%!a%,F%!e%,F%!k%:ENDPROC DEFFNk(gc%,h%):=(h%/2)-(gc%/2) DEFPROCt(a$,hc%):LOCALJ%,y%:J%=LEN(a$)*h%!ra%:y%=(h%!k%/2)-(h%!U%/2):PROCc(FNk(J%,h%!e%),y%,a$,hc%,0):ENDPROC DEFFNg(ic%,jc%):=(jc%!e%/2)-(ic%!e%/2) DEFFNu(ic%,jc%):LOCALx%,y%:ic%!b%=(jc%!e%/2)-(ic%!e%/2):ic%!a%=(jc%!k%/2)-(ic%!k%/2):=ic% DEFPROCf(a%):LOCALi%,kc%:kc%=h%!e%/T%!e%:FORi%=1TOkc%+1:PROCa(FNb(108),(i%-1)*T%!e%,a%):NEXTi%:ENDPROC DEFPROCm(F%):LOCALx%,y%,lc%,mc%,nc%,oc%,i%:lc%=FNd(3,1):mc%=FNd(3,2):nc%=1:oc%=3:FORi%=1TOF%!e%:x%=F%!b%+((i%-1)*nc%):PROCa(FNb(113),x%,F%!a%):PROCa(FNb(113),x%,F%!a%+(F%!k%-(2*oc%))):NEXTi%:x%=F%!b%+(F%!e%-lc%):FORi%=1TOF%!k%-1 PROCa(FNb(114),F%!b%,F%!a%+((i%-1)*nc%)):PROCa(FNb(114),x%,F%!a%+((i%-1)*nc%)):NEXTi%:PROCa(FNb(111),F%!b%,F%!a%):PROCa(FNb(109),F%!b%,(F%!a%+F%!k%)-mc%):PROCa(FNb(112),F%!b%+(F%!e%-lc%),F%!a%):x%=(F%!b%+F%!e%)-lc%:y%=(F%!a%+F%!k%)-mc% PROCa(FNb(110),x%,y%):ENDPROC DEFFNs(e$,j$):LOCALv%,pc%,qc%,k$:v%=OPENIN(e$):INPUT#v%,k$:IFk$<>j$THENCLOSE#v%:ERROR255,"Bad Magic!" INPUT#v%,qc%,qc%,pc%:CLOSE#v%:=pc% DEFPROCl(e$,j$,RETURNj%(),RETURNg$()):LOCALv%,i%,pc%,Aa%,Ba%,Ca%,Da%,k$:Ca%=0:v%=OPENIN(e$):INPUT#v%,k$:IFk$<>j$THENCLOSE#v%:ERROR255,"Bad Magic!" INPUT#v%,Aa%,Ba%,pc%:FORi%=1TOpc%:INPUT#v%,j%(i%),g$(i%):NEXTi%:CLOSE#v%:FORi%=1TOpc%:Ca%+=LEN(g$(i%)):NEXTi%:Da%=Ca%/pc%:IFCa%<>Aa%ORDa%<>Ba%THEN ERROR255,"File Inconsistant with header!" ENDIF ENDPROC DEFPROCr(rc%,sc%,RETURNb$()):LOCALi%:FORi%=1TOrc%:b$(i%)=FNm(b$(i%),sc%):NEXTi%:ENDPROC DEFFNa(tc%):=FNv(tc%,ba%,g%(),f$(),131,106) DEFFNb(tc%):=FNv(tc%,ca%,h%(),c$(),-1,107) DEFFNc(tc%):=FNv(tc%,da%,i%(),d$(),-1,108) DEFFNv(tc%,rc%,k%(),b$(),sc%,uc%):LOCALi%,vc%,c$:vc%=0:FORi%=1TOrc%:IFk%(i%)=tc%THENvc%=i%:i%=rc% NEXTi%:IFvc%=0THEN IFtc%>=106ANDtc%<=108THEN ERROR255,"Missing message!!!" ELSE:ERROR255,FNa(uc%)+" "+STR$(tc%) ENDIF ENDIF IFsc%=-1THEN=b$(vc%) =FNm(b$(vc%),sc%) DEFFNA(e$):LOCALv%:v%=0:SYSFNc(31),,e$TOv%:=v% DEFPROCg(wc%):LOCALHb%,w$:Hb%=0:w$=FNa(110)+" "+STR$(wc%):IFd%!Hb%>0THEN IFwc%<1ANDwc%>4THENERROR255,w$ OSCLI"SPlay_fire0"+STR$(wc%)+"mhh" ENDIF ENDPROC DEFPROCs: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%!e%=(q%!8)+1<h%!qa%THENPROCs CASExc%OF WHEN1:yc%=G%<>h%!oa% WHEN4:yc%=G%>>h%!pa% OTHERWISE:ERROR255,FNa(103)+" "+STR$(xc%) ENDCASE =yc% DEFFNl(F%,Ac%):LOCALBc%,Cc%,Dc%,Ec%:Dc%=FALSE:Ec%=FALSE:IFF%!A%ANDAc%!A%THEN Bc%=Ac%!b%+Ac%!e%:Cc%=Ac%!a%+Ac%!k%:IFF%!b%>=Ac%!b%ANDF%!b%=Ac%!a%ANDF%!a%-1THEN SYS"TimPlayer_SongStop",d%!4:SYS"TimPlayer_SongUnload",d%!4 ENDIF PROCu:ENDPROC DEFFNj(B$,x$):LOCALl$,t$,N%,vc%:l$=STRING$(10," "):RIGHT$(l$,3)=" : ":LEFT$(l$,LEN(x$))=x$:N%=FNq(B$):t$="Missing!!":vc%=FALSE:IFN%=1THENt$="OK.":vc%=TRUE l$+=t$:PRINTl$:=vc% DEFFNw(pc%):LOCALh$:h$="Dump"+STR$(pc%):IFFNq(q$+h$)<>0THEN REPEAT:pc%+=1:h$="Dump"+STR$(pc%):UNTILFNq(q$+h$)=0ORLEN(h$)>10:IFLEN(h$)>10THENpc%=-1 ENDIF =pc% DEFPROCE:LOCALv%,Z%,jb%,Fc%,hb%:Z%=0:jb%=48:v%=OPENIN(f$+"Configs"):INPUT#v%,Fc%,hb%:CLOSE#v%:IFFc%>=0ANDFc%<=2THENd%!Z%=Fc% IFhb%>=0ANDhb%<=128THENd%!jb%=hb% ENDPROC DEFPROCI:LOCALv%,Z%,jb%:Z%=0:jb%=48:v%=OPENOUT(f$+"Configs"):PRINT#v%,d%!Z%,d%!jb%:CLOSE#v%:ENDPROC DEFFNp(n%):=RND(100)<=n% DEFFNm(a$,sc%):LOCALi%,y$:FORi%=1TOLEN(a$):y$+=CHR$(ASC(MID$(a$,i%,1))EORsc%):NEXTi%:=y$ DEFPROCe(n%):LOCALt%:t%=TIME+n%:REPEAT:UNTILTIME>=t%:ENDPROC DEFFNo(n%):=n%EOR1 DEFFNC(n%):LOCALc$,u%:u%=VAL(RIGHT$(STR$(n%),1)):c$=FNa(65):IFu%>=1ANDu%<=3THENc$=FNa(u%+61) =c$ DEFFNn(a$,Gc%,z$,Hc%):LOCALIc%,c$:Ic%=Gc%-LEN(a$):IFIc%<=0THEN c$=LEFT$(a$,Gc%) ELSE:IFHc%THEN c$=STRING$(Gc%,z$):RIGHT$(c$,LEN(a$))=a$ ELSE:c$=a$+STRING$(Ic%,z$) ENDIF ENDIF =c$ DEFFNy(a$,Gc%):LOCALc$:c$=STRING$(Gc%," "):RIGHT$(c$,LEN(a$))=a$:=c$ DEFFNq(i$):LOCALvc%:SYS"XOS_File",17,i$TOvc%:=vc% DEFFNE(i$):LOCALG%:SYSFNc(3),17,i$TO,,,,G%:=G% DEFFNx(xc%,i$):LOCALv%,Jc%,Kc%,Lc%:Lc%=FALSE:CASExc%OF WHEN0:v%=OPENUP(i$+"chkfile") WHEN1:v%=OPENUP(i$) OTHERWISE:ERROR255,FNa(104)+" "+STR$(xc%) ENDCASE IFv%<>0THEN SYSFNc(4),254,v%TOKc%;Jc%:IF(Jc%AND1)THENCLOSE#v%:ERROR255,FNa(105) IF((Kc%AND(1<<7))<>0)THENLc%=TRUE CLOSE#v% ENDIF =Lc% DEFPROCD:LOCALMc%:Nc%=0:Oc%=0:SYSFNc(10),-1,-1TOPc%:SYSFNc(11)TOQc%;Mc%:IFMc%AND1THENQc%=16384 PROCia(Qc%):ENDPROC DEFPROCu:IFNc%THEN SYSFNc(10),Nc%-32768,-1TOPc%:Nc%=0:Oc%=0 ENDIF ENDPROC DEFFNe(`%):LOCALE%,G%:G%=(`%+15)AND-4:E%=FNF(G%):IFE%ELSEERROR254,FNa(211) E%!0=&DEADDEAD:E%!4=`%:!(E%-8+(E%!-4))=&DEADDEAD:=E%+8 DEFFNf(`%,Gb%):LOCALE%:E%=FNe(`%):PROCja(E%,Gb%):=E% DEFPROCb(RETURNE%):CASEFNG(E%)OF WHEN1:ERROR254,FNa(212) WHEN2:ERROR254,FNa(213) WHEN3:ERROR254,FNa(217) ENDCASE E%-=8:Oc%-=E%!-4:SYSFNc(12),3,Nc%,E%:E%=0:ENDPROC DEFFNz(E%):LOCALq%:q%=E%-4:=q%!0 DEFPROCja(E%,Gb%):LOCALsb%,G%:G%=FNz(E%):FORsb%=0TOG%-4STEP4:E%!sb%=Gb%:NEXTsb%:ENDPROC DEFFNh(E%):LOCALRc%,sb%,G%:G%=FNz(E%):Rc%=FNe(G%):FORsb%=0TOG%-4STEP4:Rc%!sb%=E%!sb%:NEXTsb%:=Rc% DEFFNG(E%):LOCALFb%,Sc%:Fb%=FALSE:Sc%=FALSE:E%-=8:IFE%!0<>&DEADDEADTHENSc%=TRUE IF!(E%-8+(E%!-4))<>&DEADDEADTHENFb%=TRUE IFSc%ANDFb%THEN=3 IFFb%THEN=2 IFSc%THEN=1 =0 DEFPROCia(G%):IFNc%THENERROR254,FNa(215) G%=(G%+Qc%-1)ANDNOT(Qc%-1):Nc%=HIMEM:SYSFNc(10),Pc%+G%,-1TOPc%:G%=Pc%+32768-Nc%:IFG%<1THEN Nc%=0:ERROR254,FNa(216) ELSE:SYSFNc(12),0,Nc%,,G% ENDIF Oc%=0:ENDPROC DEFPROCka(`%):LOCALTc%:Tc%=Pc%:SYSFNc(10),Pc%+`%,-1TOPc%:`%=Pc%-Tc%:IF`%THENSYSFNc(12),5,Nc%,,`%TO,,,`% ENDPROC DEFFNF(`%):LOCALE%,Mc%:SYSFNc(13),2,Nc%,,`%TO,,E%;Mc%:IFMc%AND1THEN PROCka((`%+Qc%)ANDNOT(Qc%-1)):SYSFNc(13),2,Nc%,,`%TO,,E%;Mc%:IFMc%AND1THEN=0 ENDIF Oc%+=E%!-4:=E%