REM Acorn Invaders REM Packed by Make v1.41 15/5/08 On 05 Jun 2009 ONERRORPROCD:END MODE28:OFF:a$="Acorn Invaders. (c)2007-2009 DynaByte Software":PRINTa$:PRINTSTRING$(LEN(a$),"-"):PRINT:p$=".Resources.":b$=".":h$=b$+"Data.":q$=b$+"Screens.":i$=p$+"Graphics.":b$=p$+"Data.":u$=p$+"Sound." aa%=FALSE:PRINT"Checking files...":IFNOTFNj(i$+"Gfx0","Sprites")THENaa%=TRUE IFNOTFNj(i$+"Gfx1","Charset")THENaa%=TRUE IFNOTFNj(i$+"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(h$+"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:Y%=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(i$+"Gfx0"):PRINTFNa(14):PRINTFNa(9)+" "+FNa(5);:xa%=FNt(i$+"Gfx1"):PRINTFNa(14) PRINTFNa(9)+" "+FNa(23);:ya%=FNt(i$+"Gfx2"):PRINTFNa(14):za%=wa%:PRINT:PRINTFNa(9)+" "+FNa(6);:v%=OPENIN(b$+"Creds"):INPUT#v%,f$:IFf$<>"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%:U%=0:FORi%=1TOea%:U%+=LEN(e$(i%)):NEXTi%:Ca%=U%/ea%:IFCa%<>Ba%ORU%<>Aa%THEN ERROR255,FNa(113) ELSE:PRINTFNa(14) ENDIF PRINT:PRINTFNa(7):v$=h$+"HiTable":IFFNq(v$)<>1THEN IFNOTFNw(0,h$)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%!Y%=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:WHILENOTFNB: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,Da%:FORi%=Da%TO0STEP-2:SYSFNc(36),d%!4,i%:PROCe(4):NEXTi%:SYSFNc(35),d%!4:SYSFNc(32),d%!4:d%!4=-1 ENDIF PROCv:END DEFFNB:LOCALi%,K%,L%,C%,J%,m%,Z%,Ea%,Fa%:LOCALp%,V%,Ga%,Ha%,Ia%,Ja%,Ka%,La%,Ma%:LOCALx%,y%,N%,Na%,s$,a$:Na%=44:K%=FNf(16,0):L%=FNf(16,0):C%=FNf(16,0):m%=FNf(16,0):Z%=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):Z%!e%=FNd(20,1):Z%!k%=FNd(20,2):Z%!b%=(C%!b%+C%!e%/2)-150:Z%!b%+=FNg(Z%,m%):Ea%=FNh(Z%):Fa%=FNh(Z%)::Fa%!a%=m%!a%-40-Fa%!k%:Ea%!a%=Fa%!a%-40-Ea%!k%:Z%!a%=Ea%!a%-40-Z%!k% V%!e%=FNd(20,1):V%!k%=FNd(20,2):V%!b%=(C%!b%+C%!e%/2)-120:Ga%=FNh(V%):Ha%=FNh(V%):Ia%=FNh(V%):Ia%!b%=C%!b%:Oa%=FNh(Ia%):Ka%=FNh(Ia%):Ja%=FNh(V%):Ja%!b%=C%!b%:Ja%!b%+=(C%!e%/2)+10:La%=FNh(Ja%):Ma%=FNh(Ja%) :V%!a%=(C%!a%+C%!k%)-120:Ga%!a%=V%!a%-60:Ha%!a%=Ga%!a%-60:Ka%!a%=Ha%!a%-90:Oa%!a%=Ka%!a%-60:Ia%!a%=Oa%!a%-60:Ja%!a%=Ha%!a%-90:La%!a%=Ja%!a%-60:Ma%!a%=La%!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%!Y%: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$):CASESGN(f%(i%))OF WHEN-1:y%-=(ABS(f%(i%))*h%!Y%) WHEN1:y%-=f%(i%) OTHERWISE:ERROR255,FNa(115)+" "+STR$(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%!Y%: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),Fa%!b%,Fa%!a%):a$=FNa(37)+" "+FNa(40):PROCc(x%,Fa%!a%+12,a$,0,0):PROCa(FNb(22),Ea%!b%,Ea%!a%):a$=FNa(38)+" "+FNa(40):PROCc(x%,Ea%!a%+12,a$,0,0):PROCa(FNb(20),Z%!b%,Z%!a%):a$=FNa(39)+" "+FNa(40):PROCc(x%,Z%!a%+12,a$,0,0) J%=p%!e%/h%!ra%+2:s$=FNa(66):a$=s$+STRING$(J%," ")+FNa(67):x%=FNi(a$):y%=Z%!a%-(3*h%!Y%):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),Ga%!b%,Ga%!a%):a$=FNa(42)+" "+FNa(44):PROCc(x%,Ga%!a%+12,a$,0,0) PROCa(FNb(104),Ha%!b%,Ha%!a%):PROCc(x%,Ha%!a%+12,FNa(45),0,0):x%=Ia%!b%+Ia%!e%+10:PROCa(FNb(105),Oa%!b%,Oa%!a%):a$=FNa(46)+" "+FNa(49):PROCc(x%,Oa%!a%+12,a$,0,0):PROCa(FNb(117),Ka%!b%,Ka%!a%):PROCc(x%,Ka%!a%+12,FNa(76),0,0) PROCa(FNb(107),Ia%!b%,Ia%!a%):a$=FNa(48)+" "+FNa(49):PROCc(x%,Ia%!a%+12,a$,0,0):x%=Ja%!b%+Ja%!e%+10:PROCa(FNb(106),Ja%!b%,Ja%!a%):a$=FNa(47)+" "+FNa(73):PROCc(x%,Ja%!a%+12,a$,0,0):PROCa(FNb(115),La%!b%,La%!a%):a$=FNa(47)+" "+FNa(77)+" ":a$+=FNa(74) PROCc(x%,La%!a%+12,a$,0,0):PROCa(FNb(116),Ma%!b%,Ma%!a%):a$=FNa(47)+" "+FNa(77)+" ":a$+=FNa(75):PROCc(x%,Ma%!a%+12,a$,0,0):N%=FNr:IFN%=1THEN=TRUE IFN%=2THEN=FALSE PROCd(C%):a$=FNa(50):IFd%!Na%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%!Y%: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%!Y%: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%!Y%+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(Z%):PROCb(Ea%):PROCb(Fa%):PROCb(V%):PROCb(Ga%):PROCb(Ha%):PROCb(Ia%):PROCb(Ja%):PROCb(Oa%):PROCb(Ka%):PROCb(La%):PROCb(Ma%):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%(),Pa%:LOCALQa%,Ra%,Sa%,Ta%:LOCALUa%,Va%,Wa%:LOCALXa%:LOCALYa%,Za%,_a%,`a%,ab%:LOCALbb%,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) Qa%=0:Ra%=4:Sa%=8:Ta%=12:Xa%=16:cb%=12:Ua%=28:Pa%=56:Ya%=ga%:Za%=ha%:_a%=ia%:`a%=la%:ab%=ma%:DIMc%(10,6),a%(10),b%(d%!Pa%):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%!Sa%=1:B%!Qa%=3:B%!Ta%=FALSE d%!Xa%=-1:d%!cb%=0:f%!Ya%=FNd(20,1):f%!Za%=10:f%!_a%=6:f%!A%=TRUE:f%!ab%=4:SYSFNc(6)TOf%!na%:PROCK:PROCL:PROCf(S%!sa%):PROCf(S%!ta%):PROCM(0,d%(1),B%!Qa%,B%!Sa%):PROCN:PROCy:PROCa(FNb(1),p%!b%,p%!a%):WHILEB%!Qa%>0:bb%=FALSE:IFd%!Ua%=0THEN IFINKEY(-74)THENPROCO(p%!b%,p%!a%) IFINKEY(-98)THENPROCP:bb%=TRUE IFINKEY(-67)THENPROCQ:bb%=TRUE IFINKEY(-17)THENPROCR ENDIF IFINKEY(-102)THENPROCx IFINKEY(-82)THENPROCw IFINKEY(-56)THENPROCS IFINKEY(-59)THENPROCk(4) IFINKEY(-60)THENPROCk(-4) IFd%!Ua%=0THEN IFbb%THEN p%!b%+=p%!Q%:PROCa(FNb(1),p%!b%,p%!a%) ENDIF ENDIF IFd%!Ua%=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%!Ta%THEN IFB%!Ra%>=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%!Pa%: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%,db%:M%=40:db%=44:IFd%!db%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%,eb%:eb%=52:FORi%=1TOd%!eb%:a%(i%)!A%=FALSE:NEXTi%:B%!Qa%=0:B%!Ta%=TRUE:ENDPROC DEFPROCx:LOCAL_%,fb%:_%=0:fb%=4:REPEAT:UNTILNOTINKEY(-102):d%!_%+=1:IFd%!_%>2THENd%!_%=0 IFd%!_%=1THEN SYSFNc(33),d%!fb% ELSE:SYSFNc(34),d%!fb% ENDIF PROCj:ENDPROC DEFPROCk(gb%):LOCAL_%,fb%,hb%,ib%,D%,Da%,jb%:_%=0:fb%=4:hb%=8:ib%=48:IFd%!_%=1THEN SYSFNc(6)TOD%:IFD%-d%!hb%>=10THEN SYSFNc(36),d%!fb%,-1TO,Da%:jb%=Da%+gb%:IFjb%>=0ANDjb%<=128THEN SYSFNc(36),d%!fb%,jb%:d%!ib%=jb%:d%!hb%=D% ENDIF ENDIF ENDIF ENDPROC DEFPROCS:LOCALUa%,Va%,a$:Ua%=28:Va%=32:REPEATUNTILNOTINKEY(-56):a$=FNa(49)+" "+FNa(61):d%!Ua%=FNo(d%!Ua%):d%!Va%=d%!Ua%:IFd%!Ua%=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:LOCALkb%,lb%,mb%,D%,`%,d$:kb%=fa%:lb%=ga%:mb%=ha%:IFNOTm%!A%THEN IFFNp(4)ANDFNp(5)THEN m%!A%=TRUE:m%!X%=FALSE:m%!lb%=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%!kb%=FALSE:m%!A%=FALSE:ENDPROC ENDIF IFm%!b%>h%!e%ANDSGN(m%!Q%)=1THEN m%!kb%=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%!kb%: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%!mb%>=40THEN m%!mb%=D%:m%!lb%=FNo(m%!lb%) ENDIF d$=FNb(10)+STR$(m%!lb%):PROCa(d$,m%!b%,m%!a%):m%!b%+=m%!Q% ELSE:SYSFNc(6)TOD%:`%=D%-m%!kb%:IF`%>=300THEN m%!A%=FALSE:m%!lb%=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:LOCALnb%,z%,I%,P%,ob%,pb%,qb%,rb%:LOCALO%,sb%,tb%,D%,ub%,vb%,wb%:O%=fa%:sb%=ja%:tb%=ka%:ub%=na%:vb%=52:wb%=56:SYSFNc(6)TOD%:IFD%-f%!ub%>=50THEN f%!ub%=D%:f%!O%=FNo(f%!O%) ENDIF nb%=f%!b%+f%!e%:rb%=0-((f%!sb%-1)*(H%!e%+f%!Ya%)):IFnb%>=h%!e%THEN f%!Q%=0-f%!R%:PROCz ENDIF IFf%!b%<=rb%THEN f%!Q%=0+f%!R%:PROCz ENDIF rb%=f%!a%+((f%!`a%-1)*H%!k%):IFrb%<=p%!a%+p%!k%THEN PROC`:ENDPROC ENDIF IFFNl(w%,f%)THEN z%=H%!e%+f%!Ya%: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%!Za%*f%!_a%THEN B%!Sa%+=1:PROCd(f%):PROCf(S%!ta%):PROCi(B%!Qa%):PROCp(B%!Sa%):PROCj:PROCa(FNb(1),p%!b%,p%!a%):PROCaa:PROCy:PROCA:IFB%!Sa%>=5THENd%!vb%=7 IFB%!Sa%>=10THENd%!vb%=10 ENDIF ob%=TRUE:pb%=TRUE:FORI%=1TOf%!_a%:IFc%(f%!tb%,I%)<>0THENob%=FALSE IFc%(f%!sb%,I%)<>0THENpb%=FALSE NEXTI%:qb%=TRUE:FORP%=1TOf%!Za%:IFc%(P%,f%!`a%)<>0THENqb%=FALSE NEXTP%:IFpb%THENf%!sb%+=1 IFob%THEN f%!e%-=(H%!e%+f%!Ya%):f%!tb%-=1 ENDIF IFqb%THENf%!`a%+=1 f%!b%+=f%!Q%:PROCq:ENDPROC DEFPROCW:LOCALi%,j%,D%,vb%,wb%:vb%=52:wb%=56:FORi%=1TOd%!vb%: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%!wb%: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:LOCALUa%,Va%,Wa%,D%,a$:Ua%=28:Va%=32:Wa%=36:SYSFNc(6)TOD%:IFD%-d%!Wa%>=50THEN d%!Va%=FNo(d%!Va%):d%!Wa%=D% ENDIF a$=FNa(49)+" "+FNa(61):IFd%!Va%=0ORd%!Ua%=0THEN a$=STRING$(LEN(a$)," ") ENDIF PROCo(a$):ENDPROC DEFPROCY:LOCALXa%,xb%,yb%,D%,a$:Xa%=16:xb%=20:yb%=24:IFd%!Xa%>=0THEN SYSFNc(6)TOD%:a$=FNa(66)+" "+FNa(72):IFD%-d%!yb%>=50THEN d%!yb%=D%:d%!xb%=FNo(d%!xb%):IFd%!xb%=1THENd%!Xa%+=1 ENDIF IFd%!xb%=0THEN a$=STRING$(LEN(a$)," ") ENDIF IFd%!Xa%>5THEN a$=STRING$(LEN(a$)," "):d%!Xa%=-1 ENDIF PROCo(a$) ENDIF ENDPROC DEFPROCX:LOCALi%,D%,eb%,ub%,q%:eb%=56:ub%=ga%:q%=FNe(16):FORi%=1TOd%!eb%:IFFNl(w%,b%(i%))THEN PROCd(w%):w%!A%=FALSE:PROCB(i%,TRUE) ENDIF IFb%(i%)!X%THEN SYSFNc(6)TOD%:IFD%-b%(i%)!ub%>=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(zb%):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%:IFzb%THENPROCC ENDPROC DEFPROCH:LOCALi%,v%,Ba%,Aa%,Ca%,U%,g$:v%=OPENIN(h$+"HiTable"):INPUT#v%,g$:IFg$<>"BATSH"THENCLOSE#v%:ERROR255,FNa(115) INPUT#v%,Aa%,Ba%:FORi%=1TO10:INPUT#v%,a$(i%),d%(i%),e%(i%):NEXTi%:CLOSE#v%:FORi%=1TO10:U%+=LEN(a$(i%)):NEXTi%:Ca%=U%/10:IFAa%<>U%ORBa%<>Ca%THENERROR255:FNa(113) ENDPROC DEFPROCC:LOCALi%,v%,U%,Ca%:FORi%=1TO10:U%+=LEN(a$(i%)):NEXTi%:Ca%=U%/10:v%=OPENOUT(h$+"HiTable"):PRINT#v%,"BATSH",U%,Ca%:FORi%=1TO10:PRINT#v%,a$(i%),d%(i%),e%(i%):NEXTi%:CLOSE#v%:ENDPROC DEFPROC_(B%):LOCALL%,K%,Ab%,g%,i%,Bb%,J%,x%,y%,a$:LOCALNa%:K%=FNe(16):L%=FNe(16):Na%=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%:Bb%=0:FORi%=10TO1STEP-1 IFB%!Ra%>=d%(i%)THENBb%=i% NEXTi%:FORi%=9TOBb%STEP-1:a$(i%+1)=a$(i%):d%(i%+1)=d%(i%):e%(i%+1)=e%(i%):NEXTi%:d%(Bb%)=B%!Ra%:e%(Bb%)=B%!Sa%: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%!Ra%) a$+=" "+FNa(55)+" "+STR$(Bb%)+FNC(Bb%):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:Ab%=FALSE OSCLI"FX 21,0":REPEAT:g%=GET:CASEg%OF WHEN13:Ab%=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) UNTILAb%:IFa$=""ORa$=" "THENa$=FNa(56) a$(Bb%)=FNm(a$,131):IFd%!Na%THENPROCC ENDPROC DEFFND(Cb%):=Cb%>=32ANDCb%<=126 DEFPROCM(Db%,Eb%,l%,r%):LOCALx%,a$:a$=FNa(57)+" "+FNa(59):a$+=FNn(STR$(Db%),10," ",TRUE):PROCc(0,h%!k%-h%!Y%,a$,0,0):a$=FNa(58)+" "+FNa(57):a$+=" "+FNa(59)+FNn(STR$(Eb%),10," ",TRUE):x%=h%!e%-LEN(a$)*h%!ra%:PROCc(x%,h%!k%-h%!Y%,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%!Y%:PROCc(x%,y%,a$,0,0):ENDPROC DEFPROCh(Fb%):LOCALcb%,Xa%,x%,a$:cb%=12:Xa%=16:B%!Ra%+=Fb%:a$=FNa(57)+" "+FNa(59):a$+=FNn(STR$(B%!Ra%),10," ",TRUE):PROCc(0,h%!k%-h%!Y%,a$,0,0):IFB%!Ra%-d%!cb%>=5000THEN B%!Qa%+=1:PROCi(B%!Qa%):d%!cb%=B%!Ra%:d%!Xa%=0 ENDIF IFB%!Ra%>d%(1)THEN a$=FNa(58)+" "+FNa(57)+" ":a$+=FNa(59):a$+=FNn(STR$(B%!Ra%),10," ",TRUE):x%=h%!e%-LEN(a$)*h%!ra%:PROCc(x%,h%!k%-h%!Y%,a$,0,0) ENDIF ENDPROC DEFPROCj:LOCALGb%,Hb%,d$:Hb%=FNe(16):Gb%=0:Hb%!e%=FNd(20,1):Hb%!k%=FNd(10,2):Hb%!b%=FNg(Hb%,h%):Hb%!a%=0:IFd%!Gb%<0ORd%!Gb%>2THEN ERROR255,FNa(111)+" "+STR$(d%!Gb%) ENDIF d$=FNb(120+d%!Gb%):PROCa(d$,Hb%!b%,Hb%!a%):PROCb(Hb%):ENDPROC DEFPROCN:LOCALO%,sb%,tb%,`a%:O%=fa%:sb%=ja%:tb%=ka%:`a%=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%!sb%=1:f%!tb%=f%!Za%:f%!`a%=1:s%=(f%!Za%*H%!e%)+((f%!Za%-1)*f%!Ya%):f%!e%=s%:f%!k%=f%!_a%*H%!k%:FORP%=1TOf%!Za%: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%!sb%TOf%!tb%:x%=f%!b%+((P%-1)*(H%!e%+f%!Ya%)):FORI%=f%!`a%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%,Ib%,D%,Jb%,Kb%,R%,i%,o$:R%=1:Lb%=24:W%=FNe(28):Ib%=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%:Ib%!b%=h%!e%:Ib%!a%=p%!a%:Ib%!Q%=0-R%:B%!Qa%=0:PROCf(S%!ta%):PROCi(B%!Qa%):PROCp(B%!Sa%):PROCa(FNb(1),p%!b%,p%!a%):O%=0:Kb%=FALSE:REPEAT:W%!b%+=W%!Q%:W%!Lb%=W%!b%+H%!e%:Ib%!b%+=Ib%!Q% SYSFNc(6)TOD%:IFD%-Jb%>=50THENKb%=FNo(Kb%):Jb%=D% IFKb%THENo$=FNb(21)ELSEo$=FNb(20) PROCa(o$,W%!b%,W%!a%):PROCa(o$,Ib%!b%,Ib%!a%):PROCe(2):WAIT:UNTILW%!Lb%>=p%!b%:FORi%=1TO10:PROCa(FNb(20),W%!b%,W%!a%):PROCa(FNb(20),Ib%!b%,Ib%!a%):PROCe(20):PROCa(FNb(21),W%!b%,W%!a%):PROCa(FNb(21),Ib%!b%,Ib%!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(Ib%):ENDPROC DEFPROCK:LOCALi%,`%,Jb%:`%=ha%:Jb%=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%)!Jb%:a%(i%)!A%=FALSE:NEXTi%:ENDPROC DEFPROCba(o%):LOCALMb%,Nb%,Ob%,Pb%,x%,y%:LOCALO%,Qb%:O%=fa%:Qb%=ga%:Mb%=RND(10):Ob%=B%!Sa%+5:IFOb%>100THEN Ob%=100:IFB%!Sa%MOD10=0THENf%!ab%+=1 ENDIF IFFNp(Ob%)ANDFNp(f%!ab%)THEN IFc%(Mb%,f%!`a%)>0THEN x%=f%!b%+(Mb%-1)*(H%!e%+f%!Ya%):y%=f%!a%+((f%!`a%-1)*H%!k%)-H%!k%:Nb%=(H%!e%/2)-(a%(o%)!e%/2):a%(o%)!b%=x%+Nb%:a%(o%)!a%=y%:a%(o%)!A%=TRUE:a%(o%)!X%=FALSE:a%(o%)!Qb%=1:a%(o%)!O%=0:Pb%=4:IFFNp(25)THENa%(o%)!Qb%=2:Pb%=Pb%/2 a%(o%)!R%=Pb%:a%(o%)!Q%=a%(o%)!R%:PROCg(3) ENDIF ENDIF ENDPROC DEFPROCca(o%):LOCALD%,O%,Jb%,Qb%,d$,r$:O%=fa%:Qb%=ga%:Jb%=ia%:SYSFNc(6)TOD%:IFD%-a%(o%)!Jb%>=40THEN a%(o%)!Jb%=D%:a%(o%)!O%+=1 ENDIF :IFa%(o%)!Qb%=1ANDa%(o%)!O%>1THEN a%(o%)!O%=0 ENDIF IFa%(o%)!Qb%=2ANDa%(o%)!O%>3THEN a%(o%)!O%=0 ENDIF r$=STR$(a%(o%)!O%):IFa%(o%)!Qb%=2ANDa%(o%)!O%=3THEN r$="1" ENDIF d$=FNb(30)+STR$(a%(o%)!Qb%)+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%!Qa%-=1:PROCi(B%!Qa%):PROCd(a%(o%)):a%(o%)!A%=FALSE:PROCa(FNb(1),p%!b%,p%!a%):ENDPROC DEFPROCea(o%):LOCALQb%,`%:Qb%=ga%:`%=ha%:IFa%(o%)!Qb%=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%,Rb%:Rb%=52:FORi%=1TOd%!Rb%:IFa%(i%)!A%THEN PROCd(a%(i%)):a%(i%)!A%=FALSE ENDIF NEXTi%:ENDPROC DEFPROCL:LOCALi%,x%,Sb%,Tb%,M%:M%=d%!56:Tb%=fa%:Sb%=h%!e%/M%:x%=Sb%-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)*Sb%):b%(i%)!a%=p%!a%+100:b%(i%)!A%=TRUE:b%(i%)!Tb%=0:NEXTi%:ENDPROC DEFPROCaa:LOCALi%,Tb%,M%:M%=d%!56:Tb%=fa%:FORi%=1TOM%:b%(i%)!A%=TRUE:b%(i%)!Tb%=0:NEXTi%:ENDPROC DEFPROCy:LOCALi%,M%:M%=56:FORi%=1TOd%!M%:IFb%(i%)!A%THENPROCr(b%(i%)) NEXTi%:ENDPROC DEFPROCr(o%):LOCALUb%,Vb%,Wb%,J%,Tb%,a$:Tb%=fa%:Wb%=10-o%!Tb%:a$=STR$(Wb%):J%=LEN(a$):Ub%=o%!b%+FNk(J%,o%!e%):Vb%=o%!a%+(o%!k%/2)-(h%!Y%/2):Vb%+=7:IFJ%=1THENUb%-=7ELSEUb%-=15 PROCd(o%):PROCa(FNb(16),o%!b%,o%!a%):PROCc(Ub%,Vb%,a$,0,1):ENDPROC DEFPROCB(o%,Xb%):LOCALy%,Tb%:Tb%=fa%:ub%=ga%:b%(o%)!Tb%+=1:IFb%(o%)!Tb%>=10THEN PROCd(b%(o%)):b%(o%)!A%=FALSE ELSE:PROCd(b%(o%)):y%=b%(o%)!a%:IFXb%THENb%(o%)!a%+=5ELSEb%(o%)!a%-=5 PROCr(b%(o%)):b%(o%)!X%=TRUE:b%(o%)!a%=y%:SYSFNc(6)TOb%(o%)!ub% 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%,Yb%,Zb%,_b%,`b%,ac%,Gb%,i%,f$:G%=FNE(e$):_b%=FNf(G%,0):SYSFNc(3),16,e$,_b%,0:FORi%=0TO3:f$+=CHR$(_b%?i%):NEXTi%:IFf$="SQSH"THEN PRINT" "+FNa(27)+" ";:SYSFNc(7),1<<3,G%TOYb%,Zb%:IFZb%=-1THENZb%=_b%!4 `b%=FNf(Yb%,0):ac%=FNy(Zb%+4):SYSFNc(7),1<<2,`b%,_b%+20,G%-20,ac%+4,Zb%TOGb%:IFGb%<>0THENERROR255,FNa(114)+" "+STR$(Gb%) PROCb(`b%):PROCb(_b%) ELSE:ac%=FNy(G%+256):SYSva%,256+10,ac%,e$ ENDIF SYSva%,256+17,ac%:=ac% DEFFNy(G%):LOCALac%:ac%=FNf(G%,0):ac%!0=G%:ac%!4=0:ac%!8=16:ac%!12=16:=ac% DEFPROCc(x%,y%,a$,bc%,cc%):LOCALi%,dc%:CASEcc%OF WHEN0:za%=xa% WHEN1:za%=ya% OTHERWISE:ERROR255,FNa(112)+" "+STR$(cc%) ENDCASE dc%=h%!ra%:FORi%=1TOLEN(a$):PROCa(STR$(ASC(MID$(a$,i%,1))),x%+((i%-1)*dc%),y%):IFbc%>0THENPROCe(bc%) NEXTi%:za%=wa%:ENDPROC DEFPROCa(A$,x%,y%):LOCALec%:SYSva%,256+24,za%,A$TO,,ec%:SYSva%,512+34,za%,ec%,x%,y%,0:ENDPROC DEFPROCd(F%):GCOL0,0TINT0:RECTANGLEFILLF%!b%,F%!a%,F%!e%,F%!k%:ENDPROC DEFFNk(fc%,h%):=(h%/2)-(fc%/2) DEFPROCu(a$,gc%):LOCALJ%,y%:J%=LEN(a$)*h%!ra%:y%=(h%!k%/2)-(h%!Y%/2):PROCc(FNk(J%,h%!e%),y%,a$,gc%,0):ENDPROC DEFFNg(hc%,ic%):=(ic%!e%/2)-(hc%!e%/2) DEFPROCm(hc%,ic%):LOCALx%,y%:hc%!b%=(ic%!e%/2)-(hc%!e%/2):hc%!a%=(ic%!k%/2)-(hc%!k%/2):ENDPROC DEFPROCf(a%):LOCALi%,jc%:jc%=h%!e%/S%!e%:FORi%=1TOjc%+1:PROCa(FNb(108),(i%-1)*S%!e%,a%):NEXTi%:ENDPROC DEFPROCn(F%):LOCALx%,y%,kc%,lc%,mc%,nc%,i%:kc%=FNd(3,1):lc%=FNd(3,2):mc%=1:nc%=3:FORi%=1TOF%!e%:x%=F%!b%+((i%-1)*mc%):PROCa(FNb(113),x%,F%!a%):PROCa(FNb(113),x%,F%!a%+(F%!k%-(2*nc%))):NEXTi%:x%=F%!b%+(F%!e%-kc%):FORi%=1TOF%!k%-1 PROCa(FNb(114),F%!b%,F%!a%+((i%-1)*mc%)):PROCa(FNb(114),x%,F%!a%+((i%-1)*mc%)):NEXTi%:PROCa(FNb(111),F%!b%,F%!a%):PROCa(FNb(109),F%!b%,(F%!a%+F%!k%)-lc%):PROCa(FNb(112),F%!b%+(F%!e%-kc%),F%!a%):x%=(F%!b%+F%!e%)-kc%:y%=(F%!a%+F%!k%)-lc% PROCa(FNb(110),x%,y%):ENDPROC DEFFNs(e$,f$):LOCALv%,oc%,pc%,g$:v%=OPENIN(e$):INPUT#v%,g$:IFg$<>f$THENCLOSE#v%:ERROR255,"Bad Magic!" INPUT#v%,pc%,pc%,oc%:CLOSE#v%:=oc% DEFPROCl(e$,f$,RETURNj%(),RETURNg$()):LOCALv%,i%,oc%,Aa%,Ba%,U%,Ca%,g$:U%=0:v%=OPENIN(e$):INPUT#v%,g$:IFg$<>f$THENCLOSE#v%:ERROR255,"Bad Magic!" INPUT#v%,Aa%,Ba%,oc%:FORi%=1TOoc%:INPUT#v%,j%(i%),g$(i%):NEXTi%:CLOSE#v%:FORi%=1TOoc%:U%+=LEN(g$(i%)):NEXTi%:Ca%=U%/oc%:IFU%<>Aa%ORCa%<>Ba%THEN ERROR255,"File Inconsistant with header!" ENDIF ENDPROC DEFPROCs(qc%,rc%,RETURNb$()):LOCALi%:FORi%=1TOqc%:b$(i%)=FNm(b$(i%),rc%):NEXTi%:ENDPROC DEFFNa(sc%):=FNu(sc%,ba%,g%(),f$(),131,106) DEFFNb(sc%):=FNu(sc%,ca%,h%(),c$(),-1,107) DEFFNc(sc%):=FNu(sc%,da%,i%(),d$(),-1,108) DEFFNu(sc%,qc%,k%(),b$(),rc%,tc%):LOCALi%,uc%,c$:uc%=0:FORi%=1TOqc%:IFk%(i%)=sc%THENuc%=i%:i%=qc% NEXTi%:IFuc%=0THEN IFsc%>=106ANDsc%<=108THEN ERROR255,"Missing message!!!" ELSE:ERROR255,FNa(tc%)+" "+STR$(sc%) ENDIF ENDIF IFrc%=-1THEN=b$(uc%) =FNm(b$(uc%),rc%) DEFFNA(e$):LOCALv%:v%=0:SYSFNc(31),,e$TOv%:=v% DEFPROCg(vc%):LOCALGb%,w$:Gb%=0:w$=FNa(110)+" "+STR$(vc%):IFd%!Gb%>0THEN IFvc%<1ANDvc%>4THENERROR255,w$ OSCLI"SPlay_fire0"+STR$(vc%)+"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 CASEwc%OF WHEN1:xc%=G%<>h%!oa% WHEN4:xc%=G%>>h%!pa% OTHERWISE:ERROR255,FNa(103)+" "+STR$(wc%) ENDCASE =xc% DEFFNl(F%,zc%):LOCALAc%,Bc%,Cc%,Dc%:Cc%=FALSE:Dc%=FALSE:IFF%!A%ANDzc%!A%THEN Ac%=zc%!b%+zc%!e%:Bc%=zc%!a%+zc%!k%:IFF%!b%>=zc%!b%ANDF%!b%=zc%!a%ANDF%!a%-1THEN SYS"TimPlayer_SongStop",d%!4:SYS"TimPlayer_SongUnload",d%!4 ENDIF PROCv:ENDPROC DEFFNj(B$,x$):LOCALl$,t$,N%,uc%:l$=STRING$(10," "):RIGHT$(l$,3)=" : ":LEFT$(l$,LEN(x$))=x$:N%=FNq(B$):t$="Missing!!":uc%=FALSE:IFN%=1THENt$="OK.":uc%=TRUE l$+=t$:PRINTl$:=uc% DEFFNv(oc%):LOCALj$:j$="Dump"+STR$(oc%):IFFNq(q$+j$)<>0THEN REPEAT:oc%+=1:j$="Dump"+STR$(oc%):UNTILFNq(q$+j$)=0ORLEN(j$)>10:IFLEN(j$)>10THENoc%=-1 ENDIF =oc% DEFPROCF:LOCALv%,_%,ib%,Ec%,gb%:_%=0:ib%=48:v%=OPENIN(h$+"Configs"):INPUT#v%,Ec%,gb%:CLOSE#v%:IFEc%>=0ANDEc%<=2THENd%!_%=Ec% IFgb%>=0ANDgb%<=128THENd%!ib%=gb% ENDPROC DEFPROCJ:LOCALv%,_%,ib%:_%=0:ib%=48:v%=OPENOUT(h$+"Configs"):PRINT#v%,d%!_%,d%!ib%:CLOSE#v%:ENDPROC DEFFNp(n%):=RND(100)<=n% DEFFNm(a$,rc%):LOCALi%,y$:FORi%=1TOLEN(a$):y$+=CHR$(ASC(MID$(a$,i%,1))EORrc%):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$,Fc%,z$,Gc%):LOCALHc%,c$:Hc%=Fc%-LEN(a$):IFHc%<=0THEN c$=LEFT$(a$,Fc%) ELSE:IFGc%THEN c$=STRING$(Fc%,z$):RIGHT$(c$,LEN(a$))=a$ ELSE:c$=a$+STRING$(Hc%,z$) ENDIF ENDIF =c$ DEFFNx(a$,Fc%):LOCALc$:c$=STRING$(Fc%," "):RIGHT$(c$,LEN(a$))=a$:=c$ DEFFNq(k$):LOCALuc%:SYS"XOS_File",17,k$TOuc%:=uc% DEFFNE(k$):LOCALG%:SYSFNc(3),17,k$TO,,,,G%:=G% DEFFNw(wc%,k$):LOCALv%,Ic%,Jc%,Kc%:Kc%=FALSE:CASEwc%OF WHEN0:v%=OPENUP(k$+"chkfile") WHEN1:v%=OPENUP(k$) OTHERWISE:ERROR255,FNa(104)+" "+STR$(wc%) ENDCASE IFv%<>0THEN SYSFNc(4),254,v%TOJc%;Ic%:IF(Ic%AND1)THENCLOSE#v%:ERROR255,FNa(105) IF((Jc%AND(1<<7))<>0)THENKc%=TRUE CLOSE#v% ENDIF =Kc% DEFPROCE:LOCALLc%:Mc%=0:Nc%=0:SYSFNc(10),-1,-1TOOc%:SYSFNc(11)TOPc%;Lc%:IFLc%AND1THENPc%=16384 PROCja(Pc%):ENDPROC DEFPROCv:IFMc%THEN SYSFNc(10),Mc%-32768,-1TOOc%:Mc%=0:Nc%=0 ENDIF ENDPROC DEFFNe(Qc%):LOCALE%,G%:G%=(Qc%+15)AND-4:E%=FNF(G%):IFE%ELSEERROR254,FNa(211) E%!0=&DEADDEAD:E%!4=Qc%:!(E%-8+(E%!-4))=&DEADDEAD:=E%+8 DEFFNf(Qc%,Fb%):LOCALE%:E%=FNe(Qc%):PROCka(E%,Fb%):=E% DEFPROCb(RETURNE%):CASEFNG(E%)OF WHEN1:ERROR254,FNa(212) WHEN2:ERROR254,FNa(213) WHEN3:ERROR254,FNa(217) ENDCASE E%-=8:Nc%-=E%!-4:SYSFNc(12),3,Mc%,E%:E%=0:ENDPROC DEFFNz(E%):LOCALq%:q%=E%-4:=q%!0 DEFPROCka(E%,Fb%):LOCALrb%,G%:G%=FNz(E%):FORrb%=0TOG%-4STEP4:E%!rb%=Fb%:NEXTrb%:ENDPROC DEFFNh(E%):LOCALRc%,rb%,G%:G%=FNz(E%):Rc%=FNe(G%):FORrb%=0TOG%-4STEP4:Rc%!rb%=E%!rb%:NEXTrb%:=Rc% DEFFNG(E%):LOCALEb%,Sc%:Eb%=FALSE:Sc%=FALSE:E%-=8:IFE%!0<>&DEADDEADTHENSc%=TRUE IF!(E%-8+(E%!-4))<>&DEADDEADTHENEb%=TRUE IFSc%ANDEb%THEN=3 IFEb%THEN=2 IFSc%THEN=1 =0 DEFPROCja(G%):IFMc%THENERROR254,FNa(215) G%=(G%+Pc%-1)ANDNOT(Pc%-1):Mc%=HIMEM:SYSFNc(10),Oc%+G%,-1TOOc%:G%=Oc%+32768-Mc%:IFG%<1THEN Mc%=0:ERROR254,FNa(216) ELSE:SYSFNc(12),0,Mc%,,G% ENDIF Nc%=0:ENDPROC DEFPROCla(Qc%):LOCALTc%:Tc%=Oc%:SYSFNc(10),Oc%+Qc%,-1TOOc%:Qc%=Oc%-Tc%:IFQc%THENSYSFNc(12),5,Mc%,,Qc%TO,,,Qc% ENDPROC DEFFNF(Qc%):LOCALE%,Lc%:SYSFNc(13),2,Mc%,,Qc%TO,,E%;Lc%:IFLc%AND1THEN PROCla((Qc%+Pc%)ANDNOT(Pc%-1)):SYSFNc(13),2,Mc%,,Qc%TO,,E%;Lc%:IFLc%AND1THEN=0 ENDIF Nc%+=E%!-4:=E%