REM Acorn Invaders REM Packed by Make v1.41 15/5/08 On 13 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 IFNOTFNj(b$+"AshLUT","Lookups")THENaa%=TRUE IFaa%THENERROR255,"File Missing!!" PRINT:PRINT"Loading LibASH Resources.":ba%=FNs(b$+"AshLUT","TULA"):DIMg%(ba%),f$(ba%):I%=FNt(b$+"AshLUT","TULA",g%(),f$()):PROCE(I%):a%=FNg(92,0):PRINT"Loading Messages...";:ca%=FNs(b$+"Msg","SGSM"):DIMh%(ca%),g$(ca%) da%=FNt(b$+"Msg","SGSM",h%(),g$()):a%!68=da%:PRINTFNa(14):PRINT:PRINTFNa(12):PRINTFNa(8)+" "+FNa(2):PROCf(a%,206,0):a%!0=1:a%!4=-1:a%!40=FNy(0):IFa%!40=-1THENERROR255,FNa(109) PRINTFNa(15)+STR$(a%!40):a%!44=TRUE:a%!48=128:a%!52=5:a%!56=5:ea%=0:DIMa$(10),d%(10):DIMe%(10):PRINTFNa(8)+" "+FNa(22):d%=0:b%=4:e%=8:k%=12:S%=16:T%=20:B%=24:Z%=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:_%=32:sa%=16:ta%=20:PRINTFNa(9)+" "+FNa(3):ua%=FNs(b$+"ImgLUT","TULI"):DIMi%(ua%),c$(ua%):da%=FNt(b$+"ImgLUT","TULI",i%(),c$()):PRINTFNa(26):PROCs(ua%,da%,c$()):PRINTFNa(14):PRINT:PRINTFNa(9)+" "+FNa(13) va%=FNs(b$+"SWIs","TULS"):DIMj%(va%),d$(va%):da%=FNt(b$+"SWIs","TULS",j%(),d$()):PRINTFNa(26):PROCs(va%,da%,d$()):PRINTFNa(14):PRINT:PRINTFNa(9)+" "+FNa(24)+" ";:IFFNr(h$+"Configs")=1THEN PROCF:PRINTFNa(18) ELSE:PRINTFNa(25) ENDIF PRINT:PRINTFNa(8)+" "+FNa(1)+" ";:wa%=0:SYSFNd(30)TOwa%:PRINTFNa(21)+" "+STR$(wa%/100):a%!4=FNC(u$+"Intro"):PRINT:PRINTFNa(17)+" "+FNa(16):SYSFNd(1),,FNd(2)TOxa%:PRINTFNa(9)+" "+FNa(4):a%!76=FNw(i$+"Gfx0"):PROCf(a%!76,203,0):PRINTFNa(14):PRINT:PRINTFNa(9)+" "+FNa(5) a%!80=FNw(i$+"Gfx1"):PROCf(a%!80,204,0):PRINTFNa(14):PRINT:PRINTFNa(9)+" "+FNa(23):a%!84=FNw(i$+"Gfx2"):PROCf(a%!84,205,0):PRINTFNa(14):PRINT:a%!88=a%!76:PRINT:PRINTFNa(9)+" "+FNa(6);:w%=OPENIN(b$+"Creds"):INPUT#w%,f$:IFf$<>"DERC"THEN CLOSE#w%:ERROR255,FNa(101):END ENDIF INPUT#w%,a%!60,da%,ya%,za%:a%!72=da%EORa%!60:ya%=ya%EORa%!60:za%=za%EORa%!60:DIMe$(a%!72),f%(a%!72):FORi%=1TOa%!72:INPUT#w%,f%(i%),e$(i%):NEXTi%:CLOSE#w%:U%=0:FORi%=1TOa%!72:U%+=LEN(e$(i%)):NEXTi%:Aa%=U%/a%!72:IFAa%<>za%ORU%<>ya%THEN ERROR255,FNa(113) ELSE:PRINTFNa(14):PRINT ENDIF PRINT:PRINTFNa(7):v$=h$+"HiTable":IFFNr(v$)<>1THEN IFNOTFNz(0,h$)THEN a%!44=FALSE:PRINTFNa(19)+" "+FNa(10)+" "+FNa(20) ELSE:PRINTFNa(19)+" "+FNa(11)+" "+FNa(20) ENDIF PROCG(a%!44) ELSE:IFNOTFNz(1,v$)THEN a%!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):V%=FNe(24):W%=FNe(16):CLS:PROCt:h%!ra%=FNc(8,1):h%!_%=FNc(8,2)+7:V%!e%=FNc(6,1):V%!k%=FNc(6,2):V%!sa%=h%!k%-50:V%!ta%=30:IFa%!0=1THEN SYSFNd(33),a%!4 ENDIF SYSFNd(36),a%!4,a%!48:WHILENOTFND:CLS:PROCI:ENDWHILE:CLS:W%!e%=220:W%!k%=40:PROCm(W%,h%):W%!b%-=3:PROCn(W%):PROCu(FNa(31),10):IFa%!44THENPROCJ IFa%!0=1THEN SYSFNd(36),a%!4,-1TO,Ba%:FORi%=Ba%TO0STEP-2:SYSFNd(36),a%!4,i%:PROCe(4):NEXTi%:SYSFNd(35),a%!4:SYSFNd(32),a%!4:a%!4=-1 ENDIF PROCv:END DEFFND:LOCALi%,M%,N%,E%,L%,m%,`%,Ca%,Da%:LOCALp%,X%,Ea%,Fa%,Ga%,Ha%,Ia%,Ja%,Ka%:LOCALx%,y%,P%,La%,q%,s$,a$:La%=44:q%=80:M%=FNg(16,0):N%=FNg(16,0):E%=FNg(16,0):m%=FNg(16,0):`%=FNg(16,0):X%=FNg(16,0):p%=FNg(16,0) M%!e%=FNc(100,1):M%!k%=FNc(40,2):M%!d%=FNh(M%,h%):M%!b%=800:N%!e%=FNc(150,1):N%!k%=FNc(40,2):N%!d%=FNh(N%,h%):N%!b%=M%!b%-N%!k%:E%!e%=720:E%!k%=500:E%!d%=FNh(E%,h%):E%!b%=200:m%!e%=FNc(40,1):m%!k%=FNc(20,2) m%!d%=(E%!d%+E%!e%/2)-150:m%!b%=(E%!b%+E%!k%)-125:p%!e%=FNc(30,1):p%!k%=FNc(15,2):`%!e%=FNc(20,1):`%!k%=FNc(20,2):`%!d%=(E%!d%+E%!e%/2)-150:`%!d%+=FNh(`%,m%):Ca%=FNi(`%):Da%=FNi(`%)::Da%!b%=m%!b%-40-Da%!k%:Ca%!b%=Da%!b%-40-Ca%!k% `%!b%=Ca%!b%-40-`%!k%:X%!e%=FNc(20,1):X%!k%=FNc(20,2):X%!d%=(E%!d%+E%!e%/2)-120:Ea%=FNi(X%):Fa%=FNi(X%):Ga%=FNi(X%):Ga%!d%=E%!d%:Ma%=FNi(Ga%):Ia%=FNi(Ga%):Ha%=FNi(X%):Ha%!d%=E%!d%:Ha%!d%+=(E%!e%/2)+10 Ja%=FNi(Ha%):Ka%=FNi(Ha%)::X%!b%=(E%!b%+E%!k%)-120:Ea%!b%=X%!b%-60:Fa%!b%=Ea%!b%-60:Ia%!b%=Fa%!b%-90:Ma%!b%=Ia%!b%-60:Ga%!b%=Ma%!b%-60:Ha%!b%=Fa%!b%-90:Ja%!b%=Ha%!b%-60:Ka%!b%=Ja%!b%-60 CLS:PROCg(V%!sa%):PROCg(V%!ta%):PROCk:FORi%=0-M%!e%TOM%!d%STEP5:WAIT:PROCa(FNb(100),i%,M%!b%):PROCe(1):NEXTi%:FORi%=h%!e%TON%!d%STEP-5:WAIT:PROCa(FNb(101),i%,N%!b%):PROCe(1):NEXTi%:a$=FNa(32):L%=LEN(a$)*h%!ra%:y%=170 PROCc(FNm(L%,h%!e%),y%,a$,11,a%!q%):a$=FNa(33):L%=LEN(a$)*h%!ra%:y%-=h%!_%:PROCc(FNm(L%,h%!e%),y%,a$,11,a%!q%):WHILENOTINKEY(-99)ANDNOTINKEY(-17)ANDNOTINKEY(-82):y%=E%!b%+E%!k%:FORi%=1TOa%!72:a$=FNl(e$(i%),a%!60):x%=FNk(a$):CASESGN(f%(i%))OF WHEN-1:y%-=(ABS(f%(i%))*h%!_%) WHEN1:y%-=f%(i%) OTHERWISE:ERROR255,FNa(115)+" "+STR$(f%(i%)) ENDCASE PROCc(x%,y%,a$,0,a%!q%):NEXTi%:P%=FNu:IFP%=1THEN=TRUE IFP%=2THEN=FALSE PROCd(E%):a$=FNa(57)+" "+FNa(34):x%=FNk(a$):y%=E%!b%+E%!k%-20:PROCc(x%,y%,a$,0,a%!q%):a$=FNa(35):y%-=h%!_%:x%=FNk(a$):PROCc(x%,y%,a$,0,a%!q%):x%=m%!d%+m%!e%+10:PROCa(FNb(11),m%!d%,m%!b%):a$=FNa(36)+" "+FNa(40) PROCc(x%,m%!b%+10,a$,0,a%!q%):PROCa(FNb(24),Da%!d%,Da%!b%):a$=FNa(37)+" "+FNa(40):PROCc(x%,Da%!b%+12,a$,0,a%!q%):PROCa(FNb(22),Ca%!d%,Ca%!b%):a$=FNa(38)+" "+FNa(40):PROCc(x%,Ca%!b%+12,a$,0,a%!q%):PROCa(FNb(20),`%!d%,`%!b%) a$=FNa(39)+" "+FNa(40):PROCc(x%,`%!b%+12,a$,0,a%!q%):L%=p%!e%/h%!ra%+2:s$=FNa(66):a$=s$+STRING$(L%," ")+FNa(67):x%=FNk(a$):y%=`%!b%-(3*h%!_%):PROCc(x%,y%,a$,0,a%!q%):p%!d%=x%+7+(LEN(s$)*h%!ra%):p%!b%=y%:PROCa(FNb(1),p%!d%,p%!b%) P%=FNu:IFP%=1THEN=TRUE IFP%=2THEN=FALSE PROCd(E%):a$=FNa(41):x%=FNk(a$):y%=E%!b%+E%!k%-20:PROCc(x%,y%,a$,0,a%!q%):x%=X%!d%+X%!e%+10:PROCa(FNb(102),X%!d%,X%!b%):a$=FNa(42)+" "+FNa(43):PROCc(x%,X%!b%+12,a$,0,a%!q%):PROCa(FNb(103),Ea%!d%,Ea%!b%):a$=FNa(42)+" "+FNa(44) PROCc(x%,Ea%!b%+12,a$,0,a%!q%):PROCa(FNb(104),Fa%!d%,Fa%!b%):PROCc(x%,Fa%!b%+12,FNa(45),0,a%!q%):x%=Ga%!d%+Ga%!e%+10:PROCa(FNb(105),Ma%!d%,Ma%!b%):a$=FNa(46)+" "+FNa(49):PROCc(x%,Ma%!b%+12,a$,0,a%!q%):PROCa(FNb(117),Ia%!d%,Ia%!b%) PROCc(x%,Ia%!b%+12,FNa(76),0,a%!q%):PROCa(FNb(107),Ga%!d%,Ga%!b%):a$=FNa(48)+" "+FNa(49):PROCc(x%,Ga%!b%+12,a$,0,a%!q%):x%=Ha%!d%+Ha%!e%+10:PROCa(FNb(106),Ha%!d%,Ha%!b%):a$=FNa(47)+" "+FNa(73):PROCc(x%,Ha%!b%+12,a$,0,a%!q%) PROCa(FNb(115),Ja%!d%,Ja%!b%):a$=FNa(47)+" "+FNa(77)+" ":a$+=FNa(74):PROCc(x%,Ja%!b%+12,a$,0,a%!q%):PROCa(FNb(116),Ka%!d%,Ka%!b%):a$=FNa(47)+" "+FNa(77)+" ":a$+=FNa(75):PROCc(x%,Ka%!b%+12,a$,0,a%!q%):P%=FNu:IFP%=1THEN=TRUE IFP%=2THEN=FALSE PROCd(E%):a$=FNa(50):IFa%!La%THENa$=FNa(51) x%=FNk(a$):y%=E%!b%+E%!k%-20:PROCc(x%,y%,a$,0,a%!q%):a$=FNa(58)+" "+FNa(52):x%=FNk(a$):y%-=h%!_%:PROCc(x%,y%,a$,0,a%!q%):y%=(E%!b%+E%!k%)-100:a$=" "+FNa(68)+" "+FNa(69):a$+=STRING$(12," ")+FNa(57)+".":a$+=STRING$(3," ")+FNa(60)+".":x%=FNk(a$) PROCc(x%,y%,a$,0,a%!q%):y%-=2*h%!_%:FORi%=1TO10:IFi%<10THEN a$=" "+STR$(i%)+". " ELSE:a$=" "+STR$(i%)+". " ENDIF s$=FNl(a$(i%),a%!64):a$+=FNo(s$,8," ",FALSE):a$+=" .... ":a$+=FNA(STR$(d%(i%)),10):a$+=" ... "+FNA(STR$(e%(i%)),3):x%=FNk(a$):PROCc(x%,y%-(i%*(h%!_%+5)),a$,0,a%!q%):NEXTi%:P%=FNu:IFP%=1THEN=TRUE IFP%=2THEN=FALSE PROCd(E%):ENDWHILE:ERROR255,FNa(102):=FALSE DEFFNu:LOCALt%,P%:t%=TIME+750:P%=FALSE:REPEAT:IFINKEY(-82)THENPROCw IFINKEY(-102)THENPROCx IFINKEY(-59)THENPROCl(4) IFINKEY(-60)THENPROCl(-4) UNTILTIME>=t%ORINKEY(-17)ORINKEY(-99):IFINKEY(-17)THENP%=1 IFINKEY(-99)THENP%=2 IFP%THEN PROCb(M%):PROCb(N%):PROCb(E%):PROCb(m%):PROCb(`%):PROCb(Ca%):PROCb(Da%):PROCb(X%):PROCb(Ea%):PROCb(Fa%):PROCb(Ga%):PROCb(Ha%):PROCb(Ma%):PROCb(Ia%):PROCb(Ja%):PROCb(Ka%):PROCb(p%) ENDIF =P% DEFFNk(a$):LOCALL%:L%=LEN(a$)*h%!ra%:=E%!d%+FNm(L%,E%!e%) DEFPROCI:LOCALp%,A%,m%,f%,C%:LOCALJ%:LOCALc%(),a%():LOCALb%(),Na%:LOCALOa%,Pa%,Qa%,Ra%:LOCALSa%,Ta%,Ua%:LOCALVa%:LOCALWa%,Xa%,Ya%,Za%,_a%:LOCAL`a%,L%,a$,x%,y%,i%,j%:p%=FNe(32):A%=FNe(28):m%=FNe(48):f%=FNe(68):J%=FNe(16):C%=FNg(16,0) Oa%=0:Pa%=4:Qa%=8:Ra%=12:Va%=16:ab%=12:Sa%=28:Na%=56:Wa%=ga%:Xa%=ha%:Ya%=ia%:Za%=la%:_a%=ma%:DIMc%(10,6),a%(10),b%(a%!Na%):p%!e%=FNc(30,1):p%!k%=FNc(15,2):p%!d%=FNh(p%,h%):p%!b%=50:p%!T%=6:p%!S%=p%!T% J%!e%=FNc(20,1):J%!k%=FNc(20,2):m%!e%=FNc(40,1):m%!k%=FNc(20,2):m%!b%=V%!sa%-(10+m%!k%):m%!T%=5:m%!B%=FALSE:m%!ha%=1:A%!e%=FNc(5,1):A%!k%=FNc(20,2):A%!B%=FALSE:A%!T%=10:C%!Qa%=1:C%!Oa%=3:C%!Ra%=FALSE a%!Va%=-1:a%!ab%=0:f%!Wa%=FNc(20,1):f%!Xa%=10:f%!Ya%=6:f%!B%=TRUE:f%!_a%=4:SYSFNd(6)TOf%!na%:PROCK:PROCL:PROCg(V%!sa%):PROCg(V%!ta%):PROCM(0,d%(1),C%!Oa%,C%!Qa%):PROCN:PROCy:PROCa(FNb(1),p%!d%,p%!b%):WHILEC%!Oa%>0:`a%=FALSE:IFa%!Sa%=0THEN IFINKEY(-74)THENPROCO(p%!d%,p%!b%) IFINKEY(-98)THENPROCP:`a%=TRUE IFINKEY(-67)THENPROCQ:`a%=TRUE IFINKEY(-17)THENPROCR ENDIF IFINKEY(-102)THENPROCx IFINKEY(-82)THENPROCw IFINKEY(-56)THENPROCS IFINKEY(-59)THENPROCl(4) IFINKEY(-60)THENPROCl(-4) IFa%!Sa%=0THEN IF`a%THEN p%!d%+=p%!S%:PROCa(FNb(1),p%!d%,p%!b%) ENDIF ENDIF IFa%!Sa%=0THEN PROCT:PROCU:PROCV:PROCW:PROCX:PROCY ELSE:PROCZ ENDIF WAIT:ENDWHILE:W%!e%=240:W%!k%=40:PROCm(W%,h%):W%!b%-=3:PROCd(W%):PROCn(W%):a$=FNa(49)+" "+FNa(53):PROCu(a$,11):PROCe(750):IFNOTC%!Ra%THEN IFC%!Pa%>=d%(10)THEN PROC_(C%) ENDIF ENDIF PROCb(p%):PROCb(f%):PROCb(m%):PROCb(A%):PROCb(C%):PROCb(J%):FORi%=1TO10:PROCb(a%(i%)):NEXTi%:FORi%=1TOa%!Na%:PROCb(b%(i%)):NEXTi%:ENDPROC DEFPROCP:IFp%!d%<=0THEN p%!d%=0 ELSE:p%!S%=0-p%!T% ENDIF ENDPROC DEFPROCQ:IFp%!d%>=h%!e%-p%!e%THEN p%!d%=h%!e%-p%!e% ELSE:p%!S%=0+p%!T% ENDIF ENDPROC DEFPROCO(x%,y%):IFNOTA%!B%THEN A%!B%=TRUE:A%!d%=x%+(p%!e%/2):A%!b%=y%+p%!k%:PROCh(4) ENDIF ENDPROC DEFPROCw:LOCALO%,bb%:O%=40:bb%=44:IFa%!bb%THEN REPEAT:UNTILNOTINKEY(-82):a%!O%=FNy(a%!O%):IFa%!O%=-1THENERROR255,FNa(109) OSCLI"ScreenSave "+q$+"Dump"+STR$(a%!O%) ENDIF ENDPROC DEFPROCR:LOCALi%,cb%:cb%=52:FORi%=1TOa%!cb%:a%(i%)!B%=FALSE:NEXTi%:C%!Oa%=0:C%!Ra%=TRUE:ENDPROC DEFPROCx:LOCALdb%,eb%:db%=0:eb%=4:REPEAT:UNTILNOTINKEY(-102):a%!db%+=1:IFa%!db%>2THENa%!db%=0 IFa%!db%=1THEN SYSFNd(33),a%!eb% ELSE:SYSFNd(34),a%!eb% ENDIF PROCk:ENDPROC DEFPROCl(fb%):LOCALdb%,eb%,gb%,hb%,F%,Ba%,ib%:db%=0:eb%=4:gb%=8:hb%=48:IFa%!db%=1THEN SYSFNd(6)TOF%:IFF%-a%!gb%>=10THEN SYSFNd(36),a%!eb%,-1TO,Ba%:ib%=Ba%+fb%:IFib%>=0ANDib%<=128THEN SYSFNd(36),a%!eb%,ib%:a%!hb%=ib%:a%!gb%=F% ENDIF ENDIF ENDIF ENDPROC DEFPROCS:LOCALSa%,Ta%,a$:Sa%=28:Ta%=32:REPEATUNTILNOTINKEY(-56):a$=FNa(49)+" "+FNa(61):a%!Sa%=FNp(a%!Sa%):a%!Ta%=a%!Sa%:IFa%!Sa%=0THEN a$=STRING$(LEN(a$)," "):PROCo(a$) ENDIF ENDPROC DEFPROCT:IFA%!B%THEN IFA%!b%>=V%!sa%-A%!k%THEN A%!B%=FALSE:A%!b%-=2:PROCd(A%) ELSE:PROCa(FNb(5),A%!d%,A%!b%) ENDIF A%!b%+=A%!T% ENDIF ENDPROC DEFPROCU:LOCALjb%,kb%,lb%,F%,mb%,d$:jb%=fa%:kb%=ga%:lb%=ha%:IFNOTm%!B%THEN IFFNq(4)ANDFNq(5)THEN m%!B%=TRUE:m%!Z%=FALSE:m%!kb%=0:IFFNq(50)THEN m%!S%=0-m%!T%:m%!d%=h%!e% ELSE:m%!S%=0+m%!T%:m%!d%=0-m%!e% ENDIF ENDIF ELSE:IFm%!d%<=0-m%!e%ANDSGN(m%!S%)=-1THEN m%!jb%=FALSE:m%!B%=FALSE:ENDPROC ENDIF IFm%!d%>h%!e%ANDSGN(m%!S%)=1THEN m%!jb%=FALSE:m%!B%=FALSE:ENDPROC ENDIF IFNOTm%!Z%THEN IFFNn(A%,m%)THEN PROCd(A%):PROCa(FNb(12),m%!d%,m%!b%):SYSFNd(6)TOm%!jb%:m%!Z%=TRUE:A%!B%=FALSE:PROCi(500) ENDIF ELSE:IFFNn(A%,m%)THEN PROCd(A%):A%!B%=FALSE ENDIF ENDIF IFNOTm%!Z%THEN SYSFNd(6)TOF%:IFF%-m%!lb%>=40THEN m%!lb%=F%:m%!kb%=FNp(m%!kb%) ENDIF d$=FNb(10)+STR$(m%!kb%):PROCa(d$,m%!d%,m%!b%):m%!d%+=m%!S% ELSE:SYSFNd(6)TOF%:mb%=F%-m%!jb%:IFmb%>=300THEN m%!B%=FALSE:m%!kb%=1:PROCd(m%) ELSE:IFmb%>=250THEN PROCa(FNb(15),m%!d%,m%!b%) ELSE:IFmb%>=200THEN PROCa(FNb(14),m%!d%,m%!b%) ELSE:IFmb%>=100THEN PROCa(FNb(13),m%!d%,m%!b%) ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF ENDPROC DEFPROCV:LOCALnb%,z%,K%,R%,ob%,pb%,qb%,rb%:LOCALQ%,sb%,tb%,F%,ub%,vb%,wb%:Q%=fa%:sb%=ja%:tb%=ka%:ub%=na%:vb%=52:wb%=56:SYSFNd(6)TOF%:IFF%-f%!ub%>=50THEN f%!ub%=F%:f%!Q%=FNp(f%!Q%) ENDIF nb%=f%!d%+f%!e%:rb%=0-((f%!sb%-1)*(J%!e%+f%!Wa%)):IFnb%>=h%!e%THEN f%!S%=0-f%!T%:PROCz ENDIF IFf%!d%<=rb%THEN f%!S%=0+f%!T%:PROCz ENDIF rb%=f%!b%+((f%!Za%-1)*J%!k%):IFrb%<=p%!b%+p%!k%THEN PROC`:ENDPROC ENDIF IFFNn(A%,f%)THEN z%=J%!e%+f%!Wa%:IF(A%!d%-f%!d%)MODz%<=J%!e%THEN K%=((A%!b%-f%!b%)DIVJ%!k%)+1:R%=((A%!d%-f%!d%)DIVz%)+1:IFSGN(c%(R%,K%))=1THEN c%(R%,K%)=-5:PROCd(A%):A%!B%=FALSE:f%!Z%+=1:PROCh(1):CASEK%OF WHEN1,2:PROCi(50) WHEN3,4:PROCi(75) WHEN5,6:PROCi(100) ENDCASE ENDIF ENDIF ENDIF IFf%!Z%>=f%!Xa%*f%!Ya%THEN C%!Qa%+=1:PROCd(f%):PROCg(V%!ta%):PROCj(C%!Oa%):PROCp(C%!Qa%):PROCk:PROCa(FNb(1),p%!d%,p%!b%):PROCaa:PROCy:PROCA:IFC%!Qa%>=5THENa%!vb%=7 IFC%!Qa%>=10THENa%!vb%=10 ENDIF ob%=TRUE:pb%=TRUE:FORK%=1TOf%!Ya%:IFc%(f%!tb%,K%)<>0THENob%=FALSE IFc%(f%!sb%,K%)<>0THENpb%=FALSE NEXTK%:qb%=TRUE:FORR%=1TOf%!Xa%:IFc%(R%,f%!Za%)<>0THENqb%=FALSE NEXTR%:IFpb%THENf%!sb%+=1 IFob%THEN f%!e%-=(J%!e%+f%!Wa%):f%!tb%-=1 ENDIF IFqb%THENf%!Za%+=1 f%!d%+=f%!S%:PROCq:ENDPROC DEFPROCW:LOCALi%,j%,F%,vb%,wb%:vb%=52:wb%=56:FORi%=1TOa%!vb%:IFNOTa%(i%)!B%THEN PROCba(i%) ELSE:PROCca(i%):IFa%(i%)!b%<=V%!ta%+(V%!k%+5)THEN a%(i%)!B%=FALSE:PROCd(a%(i%)) ENDIF IFFNn(a%(i%),p%)ANDa%(i%)!B%THEN PROCda(i%) ENDIF FORj%=1TOa%!wb%:IFFNn(a%(i%),b%(j%))THEN PROCB(j%,FALSE):PROCd(a%(i%)):a%(i%)!B%=FALSE ENDIF NEXTj%:IFFNn(A%,a%(i%))THEN PROCea(i%) ENDIF IFa%(i%)!Z%THEN PROCfa(i%) ENDIF ENDIF NEXTi%:ENDPROC DEFPROCZ:LOCALSa%,Ta%,Ua%,F%,a$:Sa%=28:Ta%=32:Ua%=36:SYSFNd(6)TOF%:IFF%-a%!Ua%>=50THEN a%!Ta%=FNp(a%!Ta%):a%!Ua%=F% ENDIF a$=FNa(49)+" "+FNa(61):IFa%!Ta%=0ORa%!Sa%=0THEN a$=STRING$(LEN(a$)," ") ENDIF PROCo(a$):ENDPROC DEFPROCY:LOCALVa%,xb%,yb%,F%,a$:Va%=16:xb%=20:yb%=24:IFa%!Va%>=0THEN SYSFNd(6)TOF%:a$=FNa(66)+" "+FNa(72):IFF%-a%!yb%>=50THEN a%!yb%=F%:a%!xb%=FNp(a%!xb%):IFa%!xb%=1THENa%!Va%+=1 ENDIF IFa%!xb%=0THEN a$=STRING$(LEN(a$)," ") ENDIF IFa%!Va%>5THEN a$=STRING$(LEN(a$)," "):a%!Va%=-1 ENDIF PROCo(a$) ENDIF ENDPROC DEFPROCX:LOCALi%,F%,cb%,ub%,v%:cb%=56:ub%=ga%:v%=FNe(16):FORi%=1TOa%!cb%:IFFNn(A%,b%(i%))THEN PROCd(A%):A%!B%=FALSE:PROCB(i%,TRUE) ENDIF IFb%(i%)!Z%THEN SYSFNd(6)TOF%:IFF%-b%(i%)!ub%>=5THEN v%!d%=b%(i%)!d%:v%!e%=b%(i%)!e%:v%!b%=b%(i%)!b%-5:v%!k%=b%(i%)!k%+10:PROCd(v%):PROCr(b%(i%)):b%(i%)!Z%=FALSE ENDIF ENDIF NEXTi%:PROCb(v%):ENDPROC DEFPROCG(zb%):LOCALi%,n$,Ab%:Ab%=64:a%!Ab%=RND(128)+127:FORi%=1TO10:IFi%MOD2=0THENn$=FNa(71)ELSEn$=FNa(70) a$(i%)=FNl(n$,a%!Ab%):d%(i%)=(11-i%)*1000:e%(i%)=0:NEXTi%:IFzb%THENPROCC ENDPROC DEFPROCH:LOCALi%,w%,za%,ya%,Aa%,U%,I%,g$:w%=OPENIN(h$+"HiTable"):INPUT#w%,g$:IFg$<>"xBATSH"THENCLOSE#w%:ERROR255,FNa(115) INPUT#w%,I%,ya%,za%:ya%=ya%EORI%:za%=za%EORI%:FORi%=1TO10:INPUT#w%,a$(i%),d%(i%),e%(i%):NEXTi%:CLOSE#w%:FORi%=1TO10:U%+=LEN(a$(i%)):NEXTi%:Aa%=U%/10:IFya%<>U%ORza%<>Aa%THENERROR255:FNa(113) a%!64=I%:ENDPROC DEFPROCC:LOCALi%,w%,U%,Aa%,Ab%:Ab%=64:PROCga:FORi%=1TO10:U%+=LEN(a$(i%)):NEXTi%:Aa%=U%/10:U%=U%EORa%!Ab%:Aa%=Aa%EORa%!Ab%:w%=OPENOUT(h$+"HiTable"):PRINT#w%,"xBATSH",a%!Ab%,U%,Aa%:FORi%=1TO10:PRINT#w%,a$(i%),d%(i%),e%(i%):NEXTi%:CLOSE#w%:ENDPROC DEFPROCga:LOCALi%,Ab%,Bb%,w$:Ab%=64:Bb%=RND(128)+127:FORi%=1TO10:w$=FNl(a$(i%),a%!Ab%):a$(i%)=FNl(w$,Bb%):NEXTi%:a%!Ab%=Bb%:ENDPROC DEFPROC_(C%):LOCALN%,M%,Cb%,g%,i%,Db%,L%,x%,y%,a$:LOCALLa%,q%:M%=FNe(16):N%=FNe(16):La%=44:q%=80:M%!e%=FNc(100,1):M%!k%=FNc(40,2):M%!d%=FNh(M%,h%):M%!b%=800:N%!e%=FNc(150,1):N%!k%=FNc(40,2):N%!d%=FNh(N%,h%):N%!b%=M%!b%-N%!k% Db%=0:FORi%=10TO1STEP-1:IFC%!Pa%>=d%(i%)THENDb%=i% NEXTi%:FORi%=9TODb%STEP-1:a$(i%+1)=a$(i%):d%(i%+1)=d%(i%):e%(i%+1)=e%(i%):NEXTi%:d%(Db%)=C%!Pa%:e%(Db%)=C%!Qa%:CLS:PROCg(V%!sa%):PROCg(V%!ta%):PROCa(FNb(100),M%!d%,M%!b%):PROCa(FNb(101),N%!d%,N%!b%):a$=FNa(54)+" "+STR$(C%!Pa%) a$+=" "+FNa(55)+" "+STR$(Db%)+FNE(Db%):L%=LEN(a$)*h%!ra%:x%=FNm(L%,h%!e%):y%=N%!b%-170:PROCc(x%,y%,a$,0,a%!q%):PROCb(M%):PROCb(N%):W%!e%=165:W%!k%=40:PROCm(W%,h%):PROCn(W%):x%=W%!d%+20:y%=W%!b%+12:a$="":i%=1:Cb%=FALSE OSCLI"FX 21,0":REPEAT:g%=GET:CASEg%OF WHEN13:Cb%=TRUE WHEN8:i%-=1:a$=LEFT$(a$,i%-1) OTHERWISE:IFi%<9ANDFNF(g%)THENi%+=1:a$+=CHR$(g%) ENDCASE IFi%<1THENi%=1 PROCc(x%,y%,STRING$(8," "),0,0):IFa$<>""THENPROCc(x%,y%,a$,0,a%!q%) UNTILCb%:IFa$=""ORa$=" "THENa$=FNa(56) a$(Db%)=FNl(a$,131):IFa%!La%THENPROCC ENDPROC DEFFNF(Eb%):=Eb%>=32ANDEb%<=126 DEFPROCM(Fb%,Gb%,l%,r%):LOCALx%,q%,a$:q%=80:a$=FNa(57)+" "+FNa(59):a$+=FNo(STR$(Fb%),10," ",TRUE):PROCc(0,h%!k%-h%!_%,a$,0,a%!q%):a$=FNa(58)+" "+FNa(57):a$+=" "+FNa(59)+FNo(STR$(Gb%),10," ",TRUE):x%=h%!e%-LEN(a$)*h%!ra% PROCc(x%,h%!k%-h%!_%,a$,0,a%!q%):PROCj(l%):PROCp(r%):PROCk:ENDPROC DEFPROCj(O%):LOCALq%,a$:q%=80:PROCa(FNb(1),0,0):a$=" = "+STR$(O%):PROCc(p%!e%,0,a$,0,a%!q%):ENDPROC DEFPROCp(O%):LOCALx%,q%,a$:q%=80:a$=FNa(60)+" "+FNa(59):a$+=FNo(STR$(O%),3,"0",TRUE):x%=h%!e%-LEN(a$)*h%!ra%:PROCc(x%,0,a$,0,a%!q%):ENDPROC DEFPROCo(a$):LOCALx%,y%,L%,q%:q%=80:L%=LEN(a$)*h%!ra%:x%=FNm(L%,h%!e%):y%=h%!k%-h%!_%:PROCc(x%,y%,a$,0,a%!q%):ENDPROC DEFPROCi(Hb%):LOCALab%,Va%,q%,x%,a$:ab%=12:Va%=16:q%=80:C%!Pa%+=Hb%:a$=FNa(57)+" "+FNa(59):a$+=FNo(STR$(C%!Pa%),10," ",TRUE):PROCc(0,h%!k%-h%!_%,a$,0,a%!q%):IFC%!Pa%-a%!ab%>=5000THEN C%!Oa%+=1:PROCj(C%!Oa%):a%!ab%=C%!Pa%:a%!Va%=0 ENDIF IFC%!Pa%>d%(1)THEN a$=FNa(58)+" "+FNa(57)+" ":a$+=FNa(59):a$+=FNo(STR$(C%!Pa%),10," ",TRUE):x%=h%!e%-LEN(a$)*h%!ra%:PROCc(x%,h%!k%-h%!_%,a$,0,a%!q%) ENDIF ENDPROC DEFPROCk:LOCALIb%,Jb%,d$:Jb%=FNe(16):Ib%=0:Jb%!e%=FNc(20,1):Jb%!k%=FNc(10,2):Jb%!d%=FNh(Jb%,h%):Jb%!b%=0:IFa%!Ib%<0ORa%!Ib%>2THEN ERROR255,FNa(111)+" "+STR$(a%!Ib%) ENDIF d$=FNb(120+a%!Ib%):PROCa(d$,Jb%!d%,Jb%!b%):PROCb(Jb%):ENDPROC DEFPROCN:LOCALQ%,sb%,tb%,Za%:Q%=fa%:sb%=ja%:tb%=ka%:Za%=la%:PROCA:PROCq:ENDPROC DEFPROCA:LOCALK%,R%,s%:f%!d%=50:f%!b%=550:f%!Q%=0:f%!Z%=0:f%!T%=3:f%!S%=f%!T%:f%!sb%=1:f%!tb%=f%!Xa%:f%!Za%=1:s%=(f%!Xa%*J%!e%)+((f%!Xa%-1)*f%!Wa%):f%!e%=s%:f%!k%=f%!Ya%*J%!k%:FORR%=1TOf%!Xa%:FORK%=1TOf%!Ya% c%(R%,K%)=((K%+1)/2)+(f%!Q%*10):NEXTK%:NEXTR%:ENDPROC DEFPROCq:LOCALK%,R%,x%,y%,v%:v%=FNe(16):FORR%=f%!sb%TOf%!tb%:x%=f%!d%+((R%-1)*(J%!e%+f%!Wa%)):FORK%=f%!Za%TOf%!Ya%:y%=f%!b%+((K%-1)*J%!k%):IFc%(R%,K%)>0THEN c%(R%,K%)=((K%+1)/2)+(f%!Q%*10) ENDIF IFc%(R%,K%)<>0THEN CASESGN(c%(R%,K%))OF WHEN-1:PROCha(x%,y%,R%,K%) WHEN1:PROCa(FNb(27)+STR$(c%(R%,K%)),x%,y%) ENDCASE ELSE:v%!d%=x%:v%!b%=y%:v%!e%=J%!e%:v%!k%=J%!k%:PROCd(v%) ENDIF NEXTK%:NEXTR%:PROCb(v%):ENDPROC DEFPROCha(x%,y%,r%,c%):LOCALv%:c%(r%,c%)+=1:PROCa(FNb(26),x%,y%):IFc%(r%,c%)=0THEN v%=FNe(16):v%!d%=x%:v%!b%=y%:v%!e%=J%!e%:v%!k%=J%!k%:PROCd(v%):PROCb(v%) ENDIF ENDPROC DEFPROCz:LOCALv%,i%:v%=FNe(16):FORi%=1TO3:f%!b%-=J%!k%/3:PROCq:NEXTi%:v%!d%=f%!d%:v%!b%=f%!b%+f%!k%:v%!e%=f%!e%:v%!k%=J%!k%:PROCd(v%):PROCb(v%):ENDPROC DEFPROC`:LOCALY%,Kb%,F%,Lb%,Mb%,T%,i%,o$:T%=1:Nb%=24:Y%=FNe(28):Kb%=FNe(28):PROCd(f%):PROCd(p%):IFA%!B%THEN PROCd(A%):A%!B%=FALSE ENDIF IFm%!B%THEN PROCd(m%):m%!B%=FALSE ENDIF PROCia:PROCja:p%!d%=FNh(p%,h%):Y%!d%=0-J%!e%:Y%!b%=p%!b%:Y%!S%=T%:Kb%!d%=h%!e%:Kb%!b%=p%!b%:Kb%!S%=0-T%:C%!Oa%=0:PROCg(V%!ta%):PROCj(C%!Oa%):PROCp(C%!Qa%):PROCa(FNb(1),p%!d%,p%!b%):Q%=0:Mb%=FALSE:REPEAT:Y%!d%+=Y%!S%:Y%!Nb%=Y%!d%+J%!e%:Kb%!d%+=Kb%!S% SYSFNd(6)TOF%:IFF%-Lb%>=50THENMb%=FNp(Mb%):Lb%=F% IFMb%THENo$=FNb(21)ELSEo$=FNb(20) PROCa(o$,Y%!d%,Y%!b%):PROCa(o$,Kb%!d%,Kb%!b%):PROCe(2):WAIT:UNTILY%!Nb%>=p%!d%:FORi%=1TO10:PROCa(FNb(20),Y%!d%,Y%!b%):PROCa(FNb(20),Kb%!d%,Kb%!b%):PROCe(20):PROCa(FNb(21),Y%!d%,Y%!b%):PROCa(FNb(21),Kb%!d%,Kb%!b%):PROCe(20):WAIT:NEXTi%:PROCh(2):FORi%=1TO3 PROCa(FNb(2)+STR$(i%),p%!d%,p%!b%):PROCe(20):WAIT:NEXTi%:PROCe(20):PROCd(p%):PROCb(Y%):PROCb(Kb%):ENDPROC DEFPROCK:LOCALi%,mb%,Lb%:mb%=ha%:Lb%=ia%:FORi%=1TO10:a%(i%)=FNg(48,0):a%(i%)!e%=FNc(5,1):a%(i%)!k%=FNc(20,2):SYSFNd(6)TOa%(i%)!mb%:SYSFNd(6)TOa%(i%)!Lb%:a%(i%)!B%=FALSE:NEXTi%:ENDPROC DEFPROCba(o%):LOCALOb%,Pb%,Qb%,Rb%,x%,y%:LOCALQ%,Sb%:Q%=fa%:Sb%=ga%:Ob%=RND(10):Qb%=C%!Qa%+5:IFQb%>100THEN Qb%=100:IFC%!Qa%MOD10=0THENf%!_a%+=1 ENDIF IFFNq(Qb%)ANDFNq(f%!_a%)THEN IFc%(Ob%,f%!Za%)>0THEN x%=f%!d%+(Ob%-1)*(J%!e%+f%!Wa%):y%=f%!b%+((f%!Za%-1)*J%!k%)-J%!k%:Pb%=(J%!e%/2)-(a%(o%)!e%/2):a%(o%)!d%=x%+Pb%:a%(o%)!b%=y%:a%(o%)!B%=TRUE:a%(o%)!Z%=FALSE:a%(o%)!Sb%=1:a%(o%)!Q%=0:Rb%=4:IFFNq(25)THENa%(o%)!Sb%=2:Rb%=Rb%/2 a%(o%)!T%=Rb%:a%(o%)!S%=a%(o%)!T%:PROCh(3) ENDIF ENDIF ENDPROC DEFPROCca(o%):LOCALF%,Q%,Lb%,Sb%,d$,r$:Q%=fa%:Sb%=ga%:Lb%=ia%:SYSFNd(6)TOF%:IFF%-a%(o%)!Lb%>=40THEN a%(o%)!Lb%=F%:a%(o%)!Q%+=1 ENDIF :IFa%(o%)!Sb%=1ANDa%(o%)!Q%>1THEN a%(o%)!Q%=0 ENDIF IFa%(o%)!Sb%=2ANDa%(o%)!Q%>3THEN a%(o%)!Q%=0 ENDIF r$=STR$(a%(o%)!Q%):IFa%(o%)!Sb%=2ANDa%(o%)!Q%=3THEN r$="1" ENDIF d$=FNb(30)+STR$(a%(o%)!Sb%)+r$:IFNOTa%(o%)!Z%THEN a%(o%)!b%-=a%(o%)!S%:PROCa(d$,a%(o%)!d%,a%(o%)!b%) ELSE:d$=FNb(30)+"3":PROCa(d$,a%(o%)!d%,a%(o%)!b%) ENDIF ENDPROC DEFPROCda(o%):LOCALi%:PROCh(2):FORi%=1TO3:PROCa(FNb(2)+STR$(i%),p%!d%,p%!b%):PROCe(20):WAIT:NEXTi%:PROCd(p%):IFA%!B%THEN PROCd(A%):A%!B%=FALSE ENDIF p%!d%=FNh(p%,h%):C%!Oa%-=1:PROCj(C%!Oa%):PROCd(a%(o%)):a%(o%)!B%=FALSE:PROCa(FNb(1),p%!d%,p%!b%):ENDPROC DEFPROCea(o%):LOCALSb%,mb%:Sb%=ga%:mb%=ha%:IFa%(o%)!Sb%=1THEN IFNOTa%(o%)!Z%THEN a%(o%)!Z%=TRUE:PROCi(5):d$=FNb(30)+"3":PROCa(d$,a%(o%)!d%,a%(o%)!b%):SYSFNd(6)TOa%(o%)!mb% ENDIF ENDIF PROCd(A%):A%!B%=FALSE:ENDPROC DEFPROCfa(o%):LOCALmb%,F%:mb%=ha%:SYSFNd(6)TOF%:IFF%-a%(o%)!mb%>=40THEN PROCd(a%(o%)):a%(o%)!B%=FALSE ENDIF ENDPROC DEFPROCia:LOCALi%,Tb%:Tb%=52:FORi%=1TOa%!Tb%:IFa%(i%)!B%THEN PROCd(a%(i%)):a%(i%)!B%=FALSE ENDIF NEXTi%:ENDPROC DEFPROCL:LOCALi%,x%,Ub%,Vb%,O%:O%=a%!56:Vb%=fa%:Ub%=h%!e%/O%:x%=Ub%-150:FORi%=1TOO%:b%(i%)=FNg(48,0):b%(i%)!e%=FNc(30,1):b%(i%)!k%=FNc(15,2):b%(i%)!d%=x%+((i%-1)*Ub%):b%(i%)!b%=p%!b%+100:b%(i%)!B%=TRUE:b%(i%)!Vb%=0:NEXTi%:ENDPROC DEFPROCaa:LOCALi%,Vb%,O%:O%=a%!56:Vb%=fa%:FORi%=1TOO%:b%(i%)!B%=TRUE:b%(i%)!Vb%=0:NEXTi%:ENDPROC DEFPROCy:LOCALi%,O%:O%=56:FORi%=1TOa%!O%:IFb%(i%)!B%THENPROCr(b%(i%)) NEXTi%:ENDPROC DEFPROCr(o%):LOCALWb%,Xb%,Yb%,L%,Vb%,q%,a$:Vb%=fa%:q%=84:Yb%=10-o%!Vb%:a$=STR$(Yb%):L%=LEN(a$):Wb%=o%!d%+FNm(L%,o%!e%):Xb%=o%!b%+(o%!k%/2)-(h%!_%/2):Xb%+=7:IFL%=1THENWb%-=7ELSEWb%-=15 PROCd(o%):PROCa(FNb(16),o%!d%,o%!b%):PROCc(Wb%,Xb%,a$,0,a%!q%):ENDPROC DEFPROCB(o%,Zb%):LOCALy%,Vb%:Vb%=fa%:ub%=ga%:b%(o%)!Vb%+=1:IFb%(o%)!Vb%>=10THEN PROCd(b%(o%)):b%(o%)!B%=FALSE ELSE:PROCd(b%(o%)):y%=b%(o%)!b%:IFZb%THENb%(o%)!b%+=5ELSEb%(o%)!b%-=5 PROCr(b%(o%)):b%(o%)!Z%=TRUE:b%(o%)!b%=y%:SYSFNd(6)TOb%(o%)!ub% ENDIF ENDPROC DEFPROCja:LOCALi%,v%,O%:O%=a%!56:FORi%=1TOO%:b%(i%)!B%=FALSE:NEXTi%:v%=FNe(16):v%!d%=0:v%!b%=b%(1)!d%:v%!e%=h%!e%:v%!k%=b%(1)!k%:PROCd(v%):PROCb(v%):ENDPROC DEFFNw(e$):LOCALH%,_b%,`b%,ac%,bc%,cc%,Ib%,i%,f$:H%=FNG(e$):ac%=FNg(H%,0):PROCf(ac%,208,0):SYSFNd(3),16,e$,ac%,0:FORi%=0TO3:f$+=CHR$(ac%?i%):NEXTi%:IFf$="SQSH"THEN PRINTFNa(27)+"...":SYSFNd(7),1<<3,H%TO_b%,`b%:IF`b%=-1THEN`b%=ac%!4 bc%=FNg(_b%,0):PROCf(bc%,207,0):cc%=FNB(`b%+4):SYSFNd(7),1<<2,bc%,ac%+20,H%-20,cc%+4,`b%TOIb%:IFIb%<>0THENERROR255,FNa(114)+" "+STR$(Ib%) PROCf(bc%,0,1):PROCf(ac%,0,1):PROCb(bc%):PROCb(ac%) ELSE:cc%=FNB(H%+256):SYSxa%,256+10,cc%,e$ ENDIF SYSxa%,256+17,cc%:=cc% DEFFNB(H%):LOCALcc%:cc%=FNg(H%,0):cc%!0=H%:cc%!4=0:cc%!8=16:cc%!12=16:=cc% DEFPROCc(x%,y%,a$,dc%,ec%):LOCALi%,fc%,q%,gc%:q%=88:gc%=76:IFec%<>a%!80ANDec%<>a%!84THEN ERROR255,FNa(112) ENDIF a%!q%=ec%:fc%=h%!ra%:FORi%=1TOLEN(a$):PROCa(STR$(ASC(MID$(a$,i%,1))),x%+((i%-1)*fc%),y%):IFdc%>0THENPROCe(dc%) NEXTi%:a%!q%=a%!gc%:ENDPROC DEFPROCa(B$,x%,y%):LOCALhc%,q%:q%=88:SYSxa%,256+24,a%!q%,B$TO,,hc%:SYSxa%,512+34,a%!q%,hc%,x%,y%,0:ENDPROC DEFPROCd(G%):GCOL0,0TINT0:RECTANGLEFILLG%!d%,G%!b%,G%!e%,G%!k%:ENDPROC DEFFNm(ic%,h%):=(h%/2)-(ic%/2) DEFPROCu(a$,jc%):LOCALL%,x%,y%,q%:q%=80:L%=LEN(a$)*h%!ra%:x%=FNm(L%,h%!e%):y%=(h%!k%/2)-(h%!_%/2):PROCc(x%,y%,a$,jc%,a%!q%):ENDPROC DEFFNh(kc%,lc%):=(lc%!e%/2)-(kc%!e%/2) DEFPROCm(kc%,lc%):LOCALx%,y%:kc%!d%=(lc%!e%/2)-(kc%!e%/2):kc%!b%=(lc%!k%/2)-(kc%!k%/2):ENDPROC DEFPROCg(b%):LOCALi%,mc%:mc%=h%!e%/V%!e%:FORi%=1TOmc%+1:PROCa(FNb(108),(i%-1)*V%!e%,b%):NEXTi%:ENDPROC DEFPROCn(G%):LOCALx%,y%,nc%,oc%,pc%,qc%,i%:nc%=FNc(3,1):oc%=FNc(3,2):pc%=1:qc%=3:FORi%=1TOG%!e%:x%=G%!d%+((i%-1)*pc%):PROCa(FNb(113),x%,G%!b%):PROCa(FNb(113),x%,G%!b%+(G%!k%-(2*qc%))):NEXTi%:x%=G%!d%+(G%!e%-nc%):FORi%=1TOG%!k%-1 PROCa(FNb(114),G%!d%,G%!b%+((i%-1)*pc%)):PROCa(FNb(114),x%,G%!b%+((i%-1)*pc%)):NEXTi%:PROCa(FNb(111),G%!d%,G%!b%):PROCa(FNb(109),G%!d%,(G%!b%+G%!k%)-oc%):PROCa(FNb(112),G%!d%+(G%!e%-nc%),G%!b%):x%=(G%!d%+G%!e%)-nc%:y%=(G%!b%+G%!k%)-oc% PROCa(FNb(110),x%,y%):ENDPROC DEFFNs(e$,f$):LOCALw%,rc%,sc%,I%,g$:w%=OPENIN(e$):INPUT#w%,g$:IFg$<>f$THENCLOSE#w%:ERROR255,"Bad Magic!" INPUT#w%,I%,sc%,sc%,rc%:CLOSE#w%:=rc%EORI% DEFFNt(e$,f$,RETURNk%(),RETURNh$()):LOCALw%,i%,rc%,I%,ya%,za%,U%,Aa%,g$:U%=0:w%=OPENIN(e$):INPUT#w%,g$:IFg$<>f$THENCLOSE#w%:ERROR255,"Bad Magic!" INPUT#w%,I%,ya%,za%,rc%:ya%=ya%EORI%:za%=za%EORI%:rc%=rc%EORI%:FORi%=1TOrc%:INPUT#w%,k%(i%),h$(i%):NEXTi%:CLOSE#w%:FORi%=1TOrc%:U%+=LEN(h$(i%)):NEXTi%:Aa%=U%/rc%:IFU%<>ya%ORAa%<>za%THEN ERROR255,"File Inconsistant with header!" ENDIF =I% DEFPROCs(tc%,I%,RETURNb$()):LOCALi%:FORi%=1TOtc%:b$(i%)=FNl(b$(i%),I%):NEXTi%:ENDPROC DEFFNa(uc%):LOCALI%:I%=a%!68:=FNv(uc%,ca%,h%(),g$(),I%,106) DEFFNb(uc%):=FNv(uc%,ua%,i%(),c$(),-1,107) DEFFNd(uc%):=FNv(uc%,va%,j%(),d$(),-1,108) DEFFNf(uc%):=FNv(uc%,ba%,g%(),f$(),vc%,109) DEFFNv(uc%,tc%,l%(),b$(),I%,wc%):LOCALi%,xc%:xc%=0:FORi%=1TOtc%:IFl%(i%)=uc%THENxc%=i%:i%=tc% NEXTi%:IFxc%=0THEN IFuc%>=106ANDuc%<=108THEN ERROR255,"Missing message!!!" ELSE:IFwc%=109THEN ERROR255,"Can't find LibASH resource : "+STR$(uc%) ELSE:ERROR255,FNa(wc%)+" "+STR$(uc%) ENDIF ENDIF ENDIF IFI%=-1THEN=b$(xc%) =FNl(b$(xc%),I%) DEFFNC(e$):LOCALw%:w%=0:SYSFNd(31),,e$TOw%:=w% DEFPROCh(yc%):LOCALIb%,x$:Ib%=0:x$=FNa(110)+" "+STR$(yc%):IFa%!Ib%>0THEN IFyc%<1ANDyc%>4THENERROR255,x$ OSCLI"SPlay_fire0"+STR$(yc%)+"mhh" ENDIF ENDPROC DEFPROCt:LOCALv%:v%=FNe(20):v%!0=4:v%!4=5:v%!8=11:v%!12=12:v%!16=-1:SYSFNd(5),v%,v%:h%!oa%=v%!0:h%!pa%=v%!4:h%!e%=(v%!8)+1<h%!qa%THENPROCt CASEzc%OF WHEN1:Ac%=H%<>h%!oa% WHEN4:Ac%=H%>>h%!pa% OTHERWISE:ERROR255,FNa(103)+" "+STR$(zc%) ENDCASE =Ac% DEFFNn(G%,Cc%):LOCALDc%,Ec%,Fc%,Gc%:Fc%=FALSE:Gc%=FALSE:IFG%!B%ANDCc%!B%THEN Dc%=Cc%!d%+Cc%!e%:Ec%=Cc%!b%+Cc%!k%:IFG%!d%>=Cc%!d%ANDG%!d%=Cc%!b%ANDG%!b%-1THEN SYS"TimPlayer_SongStop",a%!4:SYS"TimPlayer_SongUnload",a%!4 ENDIF PROCv:ENDPROC DEFFNj(C$,y$):LOCALl$,t$,P%,xc%:l$=STRING$(10," "):RIGHT$(l$,3)=" : ":LEFT$(l$,LEN(y$))=y$:P%=FNr(C$):t$="Missing!!":xc%=FALSE:IFP%=1THENt$="OK.":xc%=TRUE l$+=t$:PRINTl$:=xc% DEFFNy(rc%):LOCALj$:j$="Dump"+STR$(rc%):IFFNr(q$+j$)<>0THEN REPEAT:rc%+=1:j$="Dump"+STR$(rc%):UNTILFNr(q$+j$)=0ORLEN(j$)>10:IFLEN(j$)>10THENrc%=-1 ENDIF =rc% DEFPROCf(D%,uc%,zc%):LOCALa$:IFzc%=0THENa$=FNa(200)ELSEa$=FNa(209) a$+=" &":PRINTa$;~FNx(D%);:PRINT" "+FNa(201)+" &";~D%;:IFzc%=0THEN a$=" "+FNa(202)+" "+FNa(uc%) ELSE:a$="." ENDIF PRINTa$:ENDPROC DEFPROCF:LOCALw%,db%,hb%,Hc%,fb%:db%=0:hb%=48:w%=OPENIN(h$+"Configs"):INPUT#w%,Hc%,fb%:CLOSE#w%:IFHc%>=0ANDHc%<=2THENa%!db%=Hc% IFfb%>=0ANDfb%<=128THENa%!hb%=fb% ENDPROC DEFPROCJ:LOCALw%,db%,hb%:db%=0:hb%=48:w%=OPENOUT(h$+"Configs"):PRINT#w%,a%!db%,a%!hb%:CLOSE#w%:ENDPROC DEFFNq(n%):=RND(100)<=n% DEFFNl(a$,I%):LOCALi%,z$:FORi%=1TOLEN(a$):z$+=CHR$(ASC(MID$(a$,i%,1))EORI%):NEXTi%:=z$ DEFPROCe(n%):LOCALt%:t%=TIME+n%:REPEAT:UNTILTIME>=t%:ENDPROC DEFFNp(n%):=n%EOR1 DEFFNE(n%):LOCALc$,u%:u%=VAL(RIGHT$(STR$(n%),1)):c$=FNa(65):IFu%>=1ANDu%<=3THENc$=FNa(u%+61) =c$ DEFFNo(a$,Ic%,A$,Jc%):LOCALKc%,c$:Kc%=Ic%-LEN(a$):IFKc%<=0THEN c$=LEFT$(a$,Ic%) ELSE:IFJc%THEN c$=STRING$(Ic%,A$):RIGHT$(c$,LEN(a$))=a$ ELSE:c$=a$+STRING$(Kc%,A$) ENDIF ENDIF =c$ DEFFNA(a$,Ic%):LOCALc$:c$=STRING$(Ic%," "):RIGHT$(c$,LEN(a$))=a$:=c$ DEFFNr(k$):LOCALxc%:SYS"XOS_File",17,k$TOxc%:=xc% DEFFNG(k$):LOCALH%:SYSFNd(3),17,k$TO,,,,H%:=H% DEFFNz(zc%,k$):LOCALw%,Lc%,Mc%,Nc%:Nc%=FALSE:CASEzc%OF WHEN0:w%=OPENUP(k$+"chkfile") WHEN1:w%=OPENUP(k$) OTHERWISE:ERROR255,FNa(104)+" "+STR$(zc%) ENDCASE IFw%<>0THEN SYSFNd(4),254,w%TOMc%;Lc%:IF(Lc%AND1)THENCLOSE#w%:ERROR255,FNa(105) IF((Mc%AND(1<<7))<>0)THENNc%=TRUE CLOSE#w% ENDIF =Nc% DEFPROCE(I%):LOCALOc%:Pc%=0:Qc%=0:vc%=I%:SYSFNf(210),-1,-1TORc%:SYSFNf(211)TOSc%;Oc%:IFOc%AND1THENSc%=16384 PROCka(Sc%):ENDPROC DEFPROCv:IFPc%THEN SYSFNf(210),Pc%-32768,-1TORc%:Pc%=0:Qc%=0 ENDIF ENDPROC DEFFNe(Tc%):LOCALD%,H%:H%=(Tc%+15)AND-4:D%=FNH(H%):IFD%ELSEERROR254,FNf(110) D%!0=&DEADDEAD:D%!4=Tc%:!(D%-8+(D%!-4))=&DEADDEAD:=D%+8 DEFFNg(Tc%,Hb%):LOCALD%:D%=FNe(Tc%):PROCla(D%,Hb%):=D% DEFPROCb(RETURND%):CASEFNI(D%)OF WHEN1:ERROR254,FNf(111) WHEN2:ERROR254,FNf(112) WHEN3:ERROR254,FNf(113) ENDCASE D%-=8:Qc%-=D%!-4:SYSFNf(212),3,Pc%,D%:D%=0:ENDPROC DEFFNx(D%):LOCALv%:v%=D%-4:=v%!0 DEFPROCla(D%,Hb%):LOCALrb%,H%:H%=FNx(D%):FORrb%=0TOH%-4STEP4:D%!rb%=Hb%:NEXTrb%:ENDPROC DEFFNi(D%):LOCALUc%,rb%,H%:H%=FNx(D%):Uc%=FNe(H%):FORrb%=0TOH%-4STEP4:Uc%!rb%=D%!rb%:NEXTrb%:=Uc% DEFFNI(D%):LOCALGb%,Vc%:Gb%=FALSE:Vc%=FALSE:D%-=8:IFD%!0<>&DEADDEADTHENVc%=TRUE IF!(D%-8+(D%!-4))<>&DEADDEADTHENGb%=TRUE IFVc%ANDGb%THEN=3 IFGb%THEN=2 IFVc%THEN=1 =0 DEFPROCka(H%):IFPc%THENERROR254,FNf(114) H%=(H%+Sc%-1)ANDNOT(Sc%-1):Pc%=HIMEM:SYSFNf(210),Rc%+H%,-1TORc%:H%=Rc%+32768-Pc%:IFH%<1THEN Pc%=0:ERROR254,FNf(115) ELSE:SYSFNf(212),0,Pc%,,H% ENDIF Qc%=0:ENDPROC DEFPROCma(Tc%):LOCALWc%:Wc%=Rc%:SYSFNf(210),Rc%+Tc%,-1TORc%:Tc%=Rc%-Wc%:IFTc%THENSYSFNf(212),5,Pc%,,Tc%TO,,,Tc% ENDPROC DEFFNH(Tc%):LOCALD%,Oc%:SYSFNf(213),2,Pc%,,Tc%TO,,D%;Oc%:IFOc%AND1THEN PROCma((Tc%+Sc%)ANDNOT(Sc%-1)):SYSFNf(213),2,Pc%,,Tc%TO,,D%;Oc%:IFOc%AND1THEN=0 ENDIF Qc%+=D%!-4:=D%