REM Acorn Invaders REM Packed by Make v1.41 15/5/08 On 22 May 2009 ONERRORPROCD: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):PROCs(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):PROCs(da%,132,d$()):PRINTFNa(14):PRINT:PRINTFNa(12):PRINTFNa(8)+" "+FNa(2) PROCE:d%=FNf(60,0):d%!0=1:d%!4=-1:d%!40=FNv(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 PROCF: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:Q%=16:R%=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=FNz(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 IFNOTFNw(0,f$)THEN d%!44=FALSE:PRINTFNa(19)+" "+FNa(10)+" "+FNa(20) ELSE:PRINTFNa(19)+" "+FNa(11)+" "+FNa(20) ENDIF PROCG(d%!44) ELSE:IFNOTFNw(1,v$)THEN d%!44=FALSE:PRINTFNa(18)+" "+FNa(10)+" "+FNa(20) ELSE:PRINTFNa(18)+" "+FNa(11)+" "+FNa(20) ENDIF PROCH ENDIF PRINT:PRINTFNa(12):PROCe(150):h%=FNe(36):S%=FNe(24):T%=FNe(16):CLS:PROCt:h%!ra%=FNd(8,1):h%!U%=FNd(8,2)+7:S%!e%=FNd(6,1):S%!k%=FNd(6,2):S%!sa%=h%!k%-50:S%!ta%=30:IFd%!0=1THEN SYSFNc(33),d%!4 ENDIF SYSFNc(36),d%!4,d%!48:WHILENOTFNA:CLS:PROCI:ENDWHILE:CLS:T%!e%=220:T%!k%=40:PROCm(T%,h%):T%!a%-=3:PROCn(T%):PROCu(FNa(31),10):IFd%!44THENPROCJ 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 PROCv:END DEFFNA: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(S%!sa%):PROCf(S%!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$+=FNx(STR$(d%(i%)),10):a$+=" ... "+FNx(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)THENPROCw IFINKEY(-102)THENPROCx 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%) DEFPROCI: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%!R%=6:p%!Q%=p%!R% H%!e%=FNd(20,1):H%!k%=FNd(20,2):m%!e%=FNd(40,1):m%!k%=FNd(20,2):m%!a%=S%!sa%-(10+m%!k%):m%!R%=5:m%!A%=FALSE:m%!ha%=1:w%!e%=FNd(5,1):w%!k%=FNd(20,2):w%!A%=FALSE:w%!R%=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%:PROCK:PROCL:PROCf(S%!sa%):PROCf(S%!ta%):PROCM(0,d%(1),B%!Ra%,B%!Ta%):PROCN:PROCy:PROCa(FNb(1),p%!b%,p%!a%):WHILEB%!Ra%>0:cb%=FALSE:IFd%!Va%=0THEN IFINKEY(-74)THENPROCO(p%!b%,p%!a%) IFINKEY(-98)THENPROCP:cb%=TRUE IFINKEY(-67)THENPROCQ:cb%=TRUE IFINKEY(-17)THENPROCR ENDIF IFINKEY(-102)THENPROCx IFINKEY(-82)THENPROCw IFINKEY(-56)THENPROCS IFINKEY(-59)THENPROCk(4) IFINKEY(-60)THENPROCk(-4) IFd%!Va%=0THEN IFcb%THEN p%!b%+=p%!Q%:PROCa(FNb(1),p%!b%,p%!a%) ENDIF ENDIF IFd%!Va%=0THEN PROCT:PROCU:PROCV:PROCW:PROCX:PROCY ELSE:PROCZ ENDIF WAIT:ENDWHILE:T%!e%=240:T%!k%=40:PROCm(T%,h%):T%!a%-=3:PROCd(T%):PROCn(T%):a$=FNa(49)+" "+FNa(53):PROCu(a$,11):PROCe(750):IFNOTB%!Ua%THEN IFB%!Sa%>=d%(10)THEN PROC_(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 DEFPROCP:IFp%!b%<=0THEN p%!b%=0 ELSE:p%!Q%=0-p%!R% ENDIF ENDPROC DEFPROCQ:IFp%!b%>=h%!e%-p%!e%THEN p%!b%=h%!e%-p%!e% ELSE:p%!Q%=0+p%!R% ENDIF ENDPROC DEFPROCO(x%,y%):IFNOTw%!A%THEN w%!A%=TRUE:w%!b%=x%+(p%!e%/2):w%!a%=y%+p%!k%:PROCg(4) ENDIF ENDPROC DEFPROCw:LOCALM%,eb%:M%=40:eb%=44:IFd%!eb%THEN REPEAT:UNTILNOTINKEY(-82):d%!M%=FNv(d%!M%):IFd%!M%=-1THENERROR255,FNa(109) OSCLI"ScreenSave "+q$+"Dump"+STR$(d%!M%) ENDIF ENDPROC DEFPROCR:LOCALi%,fb%:fb%=52:FORi%=1TOd%!fb%:a%(i%)!A%=FALSE:NEXTi%:B%!Ra%=0:B%!Ua%=TRUE:ENDPROC DEFPROCx: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 DEFPROCS: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$)," "):PROCo(a$) ENDIF ENDPROC DEFPROCT:IFw%!A%THEN IFw%!a%>=S%!sa%-w%!k%THEN w%!A%=FALSE:w%!a%-=2:PROCd(w%) ELSE:PROCa(FNb(5),w%!b%,w%!a%) ENDIF w%!a%+=w%!R% ENDIF ENDPROC DEFPROCU: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%!Q%=0-m%!R%:m%!b%=h%!e% ELSE:m%!Q%=0+m%!R%:m%!b%=0-m%!e% ENDIF ENDIF ELSE:IFm%!b%<=0-m%!e%ANDSGN(m%!Q%)=-1THEN m%!lb%=FALSE:m%!A%=FALSE:ENDPROC ENDIF IFm%!b%>h%!e%ANDSGN(m%!Q%)=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%!Q% 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 DEFPROCV:LOCALob%,z%,I%,P%,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%!Q%=0-f%!R%:PROCz ENDIF IFf%!b%<=sb%THEN f%!Q%=0+f%!R%:PROCz 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:P%=((w%!b%-f%!b%)DIVz%)+1:IFSGN(c%(P%,I%))=1THEN c%(P%,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(S%!ta%):PROCi(B%!Ra%):PROCp(B%!Ta%):PROCj:PROCa(FNb(1),p%!b%,p%!a%):PROCaa:PROCy:PROCA: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:FORP%=1TOf%!_a%:IFc%(P%,f%!ab%)<>0THENrb%=FALSE NEXTP%:IFqb%THENf%!tb%+=1 IFpb%THEN f%!e%-=(H%!e%+f%!Za%):f%!ub%-=1 ENDIF IFrb%THENf%!ab%+=1 f%!b%+=f%!Q%:PROCq:ENDPROC DEFPROCW:LOCALi%,j%,D%,wb%,xb%:wb%=52:xb%=56:FORi%=1TOd%!wb%:IFNOTa%(i%)!A%THEN PROCba(i%) ELSE:PROCca(i%):IFa%(i%)!a%<=S%!ta%+(S%!k%+5)THEN a%(i%)!A%=FALSE:PROCd(a%(i%)) ENDIF IFFNl(a%(i%),p%)ANDa%(i%)!A%THEN PROCda(i%) ENDIF FORj%=1TOd%!xb%:IFFNl(a%(i%),b%(j%))THEN PROCB(j%,FALSE):PROCd(a%(i%)):a%(i%)!A%=FALSE ENDIF NEXTj%:IFFNl(w%,a%(i%))THEN PROCea(i%) ENDIF IFa%(i%)!X%THEN PROCfa(i%) ENDIF ENDIF NEXTi%:ENDPROC DEFPROCZ: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 PROCo(a$):ENDPROC DEFPROCY: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 PROCo(a$) ENDIF ENDPROC DEFPROCX: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:PROCB(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%):PROCr(b%(i%)):b%(i%)!X%=FALSE ENDIF ENDIF NEXTi%:PROCb(q%):ENDPROC DEFPROCG(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%THENPROCC ENDPROC DEFPROCH:LOCALi%,v%:v%=OPENIN(f$+"HiTable"):FORi%=1TO10:INPUT#v%,a$(i%),d%(i%),e%(i%):NEXTi%:CLOSE#v%:ENDPROC DEFPROCC:LOCALi%,v%:v%=OPENOUT(f$+"HiTable"):FORi%=1TO10:PRINT#v%,a$(i%),d%(i%),e%(i%):NEXTi%:CLOSE#v%:ENDPROC DEFPROC_(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(S%!sa%):PROCf(S%!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%)+FNB(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%):T%!e%=165:T%!k%=40:PROCm(T%,h%):PROCn(T%):x%=T%!b%+20:y%=T%!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%<9ANDFNC(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%THENPROCC ENDPROC DEFFNC(Db%):=Db%>=32ANDDb%<=126 DEFPROCM(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%):PROCp(r%):PROCj:ENDPROC DEFPROCi(M%):LOCALa$:PROCa(FNb(1),0,0):a$=" = "+STR$(M%):PROCc(p%!e%,0,a$,0,0):ENDPROC DEFPROCp(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 DEFPROCo(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 DEFPROCN:LOCALO%,tb%,ub%,ab%:O%=fa%:tb%=ja%:ub%=ka%:ab%=la%:PROCA:PROCq:ENDPROC DEFPROCA:LOCALI%,P%,s%:f%!b%=50:f%!a%=550:f%!O%=0:f%!X%=0:f%!R%=3:f%!Q%=f%!R%: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%:FORP%=1TOf%!_a%:FORI%=1TOf%!`a% c%(P%,I%)=((I%+1)/2)+(f%!O%*10):NEXTI%:NEXTP%:ENDPROC DEFPROCq:LOCALI%,P%,x%,y%,q%:q%=FNe(16):FORP%=f%!tb%TOf%!ub%:x%=f%!b%+((P%-1)*(H%!e%+f%!Za%)):FORI%=f%!ab%TOf%!`a%:y%=f%!a%+((I%-1)*H%!k%):IFc%(P%,I%)>0THEN c%(P%,I%)=((I%+1)/2)+(f%!O%*10) ENDIF IFc%(P%,I%)<>0THEN CASESGN(c%(P%,I%))OF WHEN-1:PROCga(x%,y%,P%,I%) WHEN1:PROCa(FNb(27)+STR$(c%(P%,I%)),x%,y%) ENDCASE ELSE:q%!b%=x%:q%!a%=y%:q%!e%=H%!e%:q%!k%=H%!k%:PROCd(q%) ENDIF NEXTI%:NEXTP%:PROCb(q%):ENDPROC DEFPROCga(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 DEFPROCz:LOCALq%,i%:q%=FNe(16):FORi%=1TO3:f%!a%-=H%!k%/3:PROCq: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%,R%,i%,o$:R%=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 PROCha:PROCia:p%!b%=FNg(p%,h%):W%!b%=0-H%!e%:W%!a%=p%!a%:W%!Q%=R%:Jb%!b%=h%!e%:Jb%!a%=p%!a%:Jb%!Q%=0-R%:B%!Ra%=0:PROCf(S%!ta%):PROCi(B%!Ra%):PROCp(B%!Ta%):PROCa(FNb(1),p%!b%,p%!a%):O%=0:Lb%=FALSE:REPEAT:W%!b%+=W%!Q%:W%!Mb%=W%!b%+H%!e%:Jb%!b%+=Jb%!Q% 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 DEFPROCK: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 DEFPROCba(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%)!R%=Qb%:a%(o%)!Q%=a%(o%)!R%:PROCg(3) ENDIF ENDIF ENDPROC DEFPROCca(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%)!Q%:PROCa(d$,a%(o%)!b%,a%(o%)!a%) ELSE:d$=FNb(30)+"3":PROCa(d$,a%(o%)!b%,a%(o%)!a%) ENDIF ENDPROC DEFPROCda(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 DEFPROCea(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 DEFPROCfa(o%):LOCAL_%,D%:_%=ha%:SYSFNc(6)TOD%:IFD%-a%(o%)!_%>=40THEN PROCd(a%(o%)):a%(o%)!A%=FALSE ENDIF ENDPROC DEFPROCha:LOCALi%,Sb%:Sb%=52:FORi%=1TOd%!Sb%:IFa%(i%)!A%THEN PROCd(a%(i%)):a%(i%)!A%=FALSE ENDIF NEXTi%:ENDPROC DEFPROCL: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 DEFPROCaa:LOCALi%,Ub%,M%:M%=d%!56:Ub%=fa%:FORi%=1TOM%:b%(i%)!A%=TRUE:b%(i%)!Ub%=0:NEXTi%:ENDPROC DEFPROCy:LOCALi%,M%:M%=56:FORi%=1TOd%!M%:IFb%(i%)!A%THENPROCr(b%(i%)) NEXTi%:ENDPROC DEFPROCr(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 DEFPROCB(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 PROCr(b%(o%)):b%(o%)!X%=TRUE:b%(o%)!a%=y%:SYSFNc(6)TOb%(o%)!vb% ENDIF ENDPROC DEFPROCia: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%=FND(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) DEFPROCu(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) DEFPROCm(ic%,jc%):LOCALx%,y%:ic%!b%=(jc%!e%/2)-(ic%!e%/2):ic%!a%=(jc%!k%/2)-(ic%!k%/2):ENDPROC DEFPROCf(a%):LOCALi%,kc%:kc%=h%!e%/S%!e%:FORi%=1TOkc%+1:PROCa(FNb(108),(i%-1)*S%!e%,a%):NEXTi%:ENDPROC DEFPROCn(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 DEFPROCs(rc%,sc%,RETURNb$()):LOCALi%:FORi%=1TOrc%:b$(i%)=FNm(b$(i%),sc%):NEXTi%:ENDPROC DEFFNa(tc%):=FNu(tc%,ba%,g%(),f$(),131,106) DEFFNb(tc%):=FNu(tc%,ca%,h%(),c$(),-1,107) DEFFNc(tc%):=FNu(tc%,da%,i%(),d$(),-1,108) DEFFNu(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%) DEFFNz(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 DEFPROCt: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%THENPROCt 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 PROCv: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% DEFFNv(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% DEFPROCF: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 DEFPROCJ: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 DEFFNB(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$ DEFFNx(a$,Gc%):LOCALc$:c$=STRING$(Gc%," "):RIGHT$(c$,LEN(a$))=a$:=c$ DEFFNq(i$):LOCALvc%:SYS"XOS_File",17,i$TOvc%:=vc% DEFFND(i$):LOCALG%:SYSFNc(3),17,i$TO,,,,G%:=G% DEFFNw(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% DEFPROCE:LOCALMc%:Nc%=0:Oc%=0:SYSFNc(10),-1,-1TOPc%:SYSFNc(11)TOQc%;Mc%:IFMc%AND1THENQc%=16384 PROCja(Qc%):ENDPROC DEFPROCv:IFNc%THEN SYSFNc(10),Nc%-32768,-1TOPc%:Nc%=0:Oc%=0 ENDIF ENDPROC DEFFNe(`%):LOCALE%,G%:G%=(`%+15)AND-4:E%=FNE(G%):IFE%ELSEERROR254,FNa(211) E%!0=&DEADDEAD:E%!4=`%:!(E%-8+(E%!-4))=&DEADDEAD:=E%+8 DEFFNf(`%,Gb%):LOCALE%:E%=FNe(`%):PROCka(E%,Gb%):=E% DEFPROCb(RETURNE%):CASEFNF(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 DEFFNy(E%):LOCALq%:q%=E%-4:=q%!0 DEFPROCka(E%,Gb%):LOCALsb%,G%:G%=FNy(E%):FORsb%=0TOG%-4STEP4:E%!sb%=Gb%:NEXTsb%:ENDPROC DEFFNh(E%):LOCALRc%,sb%,G%:G%=FNy(E%):Rc%=FNe(G%):FORsb%=0TOG%-4STEP4:Rc%!sb%=E%!sb%:NEXTsb%:=Rc% DEFFNF(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 DEFPROCja(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 DEFPROCla(`%):LOCALTc%:Tc%=Pc%:SYSFNc(10),Pc%+`%,-1TOPc%:`%=Pc%-Tc%:IF`%THENSYSFNc(12),5,Nc%,,`%TO,,,`% ENDPROC DEFFNE(`%):LOCALE%,Mc%:SYSFNc(13),2,Nc%,,`%TO,,E%;Mc%:IFMc%AND1THEN PROCla((`%+Qc%)ANDNOT(Qc%-1)):SYSFNc(13),2,Nc%,,`%TO,,E%;Mc%:IFMc%AND1THEN=0 ENDIF Oc%+=E%!-4:=E%