REM Acorn Invaders REM Packed by Make v1.41 15/5/08 On 19 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(96,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:a%!92=FALSE:ea%=0:DIMa$(10),d%(10):DIMe%(10):PRINTFNa(8)+" "+FNa(22):d%=0:b%=4:e%=8:k%=12:R%=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):a%!92=TRUE 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%:LOCALo%,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):o%=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:o%!e%=FNc(30,1):o%!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%=o%!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%):o%!d%=x%+7+(LEN(s$)*h%!ra%):o%!b%=y%:PROCa(FNb(1),o%!d%,o%!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(o%) ENDIF =P% DEFFNk(a$):LOCALL%:L%=LEN(a$)*h%!ra%:=E%!d%+FNm(L%,E%!e%) DEFPROCI:LOCALo%,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%:o%=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%):o%!e%=FNc(30,1):o%!k%=FNc(15,2):o%!d%=FNh(o%,h%):o%!b%=50:o%!T%=6:o%!R%=o%!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),o%!d%,o%!b%):WHILEC%!Oa%>0:IFa%!Sa%=0THEN IFINKEY(-74)THENPROCO(o%!d%,o%!b%) IFINKEY(-98)THENPROCP IFINKEY(-67)THENPROCQ IFINKEY(-17)THENPROCR ENDIF IFINKEY(-102)THENPROCx IFINKEY(-82)THENPROCw IFINKEY(-56)THENPROCS IFINKEY(-59)THENPROCl(4) IFINKEY(-60)THENPROCl(-4) 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(o%):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:IFo%!d%<=0THEN o%!d%=0 ELSE:o%!R%=0-o%!T%:o%!d%+=o%!R%:PROCa(FNb(1),o%!d%,o%!b%) ENDIF ENDPROC DEFPROCQ:IFo%!d%>=h%!e%-o%!e%THEN o%!d%=h%!e%-o%!e% ELSE:o%!R%=0+o%!T%:o%!d%+=o%!R%:PROCa(FNb(1),o%!d%,o%!b%) ENDIF ENDPROC DEFPROCO(x%,y%):IFNOTA%!B%THEN A%!B%=TRUE:A%!d%=x%+(o%!e%/2):A%!b%=y%+o%!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%,fb%:db%=0:eb%=4:fb%=92:REPEAT:UNTILNOTINKEY(-102):a%!db%+=1:IFa%!db%>2THENa%!db%=0 IFa%!db%=1THEN SYSFNd(33),a%!eb% ELSE:SYSFNd(34),a%!eb% ENDIF a%!fb%=TRUE:PROCk:ENDPROC DEFPROCl(gb%):LOCALdb%,eb%,hb%,ib%,F%,Ba%,jb%,fb%:db%=0:eb%=4:hb%=8:ib%=48:fb%=92:IFa%!db%=1THEN SYSFNd(6)TOF%:IFF%-a%!hb%>=10THEN SYSFNd(36),a%!eb%,-1TO,Ba%:jb%=Ba%+gb%:IFjb%>=0ANDjb%<=128THEN SYSFNd(36),a%!eb%,jb%:a%!ib%=jb%:a%!hb%=F%:a%!fb%=TRUE 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:LOCALkb%,lb%,mb%,F%,nb%,d$:kb%=fa%:lb%=ga%:mb%=ha%:IFNOTm%!B%THEN IFFNq(4)ANDFNq(5)THEN m%!B%=TRUE:m%!Z%=FALSE:m%!lb%=0:IFFNq(50)THEN m%!R%=0-m%!T%:m%!d%=h%!e% ELSE:m%!R%=0+m%!T%:m%!d%=0-m%!e% ENDIF ENDIF ELSE:IFm%!d%<=0-m%!e%ANDSGN(m%!R%)=-1THEN m%!kb%=FALSE:m%!B%=FALSE:ENDPROC ENDIF IFm%!d%>h%!e%ANDSGN(m%!R%)=1THEN m%!kb%=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%!kb%: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%!mb%>=40THEN m%!mb%=F%:m%!lb%=FNp(m%!lb%) ENDIF d$=FNb(10)+STR$(m%!lb%):PROCa(d$,m%!d%,m%!b%):m%!d%+=m%!R% ELSE:SYSFNd(6)TOF%:nb%=F%-m%!kb%:IFnb%>=300THEN m%!B%=FALSE:m%!lb%=1:PROCd(m%) ELSE:IFnb%>=250THEN PROCa(FNb(15),m%!d%,m%!b%) ELSE:IFnb%>=200THEN PROCa(FNb(14),m%!d%,m%!b%) ELSE:IFnb%>=100THEN PROCa(FNb(13),m%!d%,m%!b%) ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF ENDPROC DEFPROCV:LOCALob%,z%,K%,S%,pb%,qb%,rb%,sb%:LOCALQ%,tb%,ub%,F%,vb%,wb%,xb%:Q%=fa%:tb%=ja%:ub%=ka%:vb%=na%:wb%=52:xb%=56:SYSFNd(6)TOF%:IFF%-f%!vb%>=50THEN f%!vb%=F%:f%!Q%=FNp(f%!Q%) ENDIF ob%=f%!d%+f%!e%:sb%=0-((f%!tb%-1)*(J%!e%+f%!Wa%)):IFob%>=h%!e%THEN f%!R%=0-f%!T%:PROCz ENDIF IFf%!d%<=sb%THEN f%!R%=0+f%!T%:PROCz ENDIF sb%=f%!b%+((f%!Za%-1)*J%!k%):IFsb%<=o%!b%+o%!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:S%=((A%!d%-f%!d%)DIVz%)+1:IFSGN(c%(S%,K%))=1THEN c%(S%,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),o%!d%,o%!b%):PROCaa:PROCy:PROCA:IFC%!Qa%>=5THENa%!wb%=7 IFC%!Qa%>=10THENa%!wb%=10 ENDIF pb%=TRUE:qb%=TRUE:FORK%=1TOf%!Ya%:IFc%(f%!ub%,K%)<>0THENpb%=FALSE IFc%(f%!tb%,K%)<>0THENqb%=FALSE NEXTK%:rb%=TRUE:FORS%=1TOf%!Xa%:IFc%(S%,f%!Za%)<>0THENrb%=FALSE NEXTS%:IFqb%THENf%!tb%+=1 IFpb%THEN f%!e%-=(J%!e%+f%!Wa%):f%!ub%-=1 ENDIF IFrb%THENf%!Za%+=1 f%!d%+=f%!R%:PROCq:ENDPROC DEFPROCW:LOCALi%,j%,F%,wb%,xb%:wb%=52:xb%=56:FORi%=1TOa%!wb%: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%),o%)ANDa%(i%)!B%THEN PROCda(i%) ENDIF FORj%=1TOa%!xb%: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%,yb%,zb%,F%,a$:Va%=16:yb%=20:zb%=24:IFa%!Va%>=0THEN SYSFNd(6)TOF%:a$=FNa(66)+" "+FNa(72):IFF%-a%!zb%>=50THEN a%!zb%=F%:a%!yb%=FNp(a%!yb%):IFa%!yb%=1THENa%!Va%+=1 ENDIF IFa%!yb%=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%,vb%,v%:cb%=56:vb%=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%)!vb%>=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(Ab%):LOCALi%,n$,Bb%:Bb%=64:a%!Bb%=RND(128)+127:FORi%=1TO10:IFi%MOD2=0THENn$=FNa(71)ELSEn$=FNa(70) a$(i%)=FNl(n$,a%!Bb%):d%(i%)=(11-i%)*1000:e%(i%)=0:NEXTi%:IFAb%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%,Bb%,Cb%,w$:Bb%=64:Cb%=RND(128)+127:FORi%=1TO10:w$=FNl(a$(i%),a%!Bb%):a$(i%)=FNl(w$,Cb%):NEXTi%:a%!Bb%=Cb%:FORi%=1TO10:U%+=LEN(a$(i%)):NEXTi%:Aa%=U%/10:U%=U%EORa%!Bb%:Aa%=Aa%EORa%!Bb%:w%=OPENOUT(h$+"HiTable"):PRINT#w%,"xBATSH",a%!Bb%,U%,Aa%:FORi%=1TO10 PRINT#w%,a$(i%),d%(i%),e%(i%):NEXTi%:CLOSE#w%:ENDPROC DEFPROC_(C%):LOCALN%,M%,Db%,g%,i%,Eb%,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% Eb%=0:FORi%=10TO1STEP-1:IFC%!Pa%>=d%(i%)THENEb%=i% NEXTi%:FORi%=9TOEb%STEP-1:a$(i%+1)=a$(i%):d%(i%+1)=d%(i%):e%(i%+1)=e%(i%):NEXTi%:d%(Eb%)=C%!Pa%:e%(Eb%)=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$(Eb%)+FNE(Eb%):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:Db%=FALSE OSCLI"FX 21,0":REPEAT:g%=GET:CASEg%OF WHEN13:Db%=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%) UNTILDb%:IFa$=""ORa$=" "THENa$=FNa(56) a$(Eb%)=FNl(a$,131):IFa%!La%THENPROCC ENDPROC DEFFNF(Fb%):=Fb%>=32ANDFb%<=126 DEFPROCM(Gb%,Hb%,l%,r%):LOCALx%,q%,a$:q%=80:a$=FNa(57)+" "+FNa(59):a$+=FNo(STR$(Gb%),10," ",TRUE):PROCc(0,h%!k%-h%!_%,a$,0,a%!q%):a$=FNa(58)+" "+FNa(57):a$+=" "+FNa(59)+FNo(STR$(Hb%),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(o%!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(Ib%):LOCALab%,Va%,q%,x%,a$:ab%=12:Va%=16:q%=80:C%!Pa%+=Ib%: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:LOCALJb%,Kb%,d$:Kb%=FNe(16):Jb%=0:Kb%!e%=FNc(20,1):Kb%!k%=FNc(10,2):Kb%!d%=FNh(Kb%,h%):Kb%!b%=0:IFa%!Jb%<0ORa%!Jb%>2THEN ERROR255,FNa(111)+" "+STR$(a%!Jb%) ENDIF d$=FNb(120+a%!Jb%):PROCa(d$,Kb%!d%,Kb%!b%):PROCb(Kb%):ENDPROC DEFPROCN:LOCALQ%,tb%,ub%,Za%:Q%=fa%:tb%=ja%:ub%=ka%:Za%=la%:PROCA:PROCq:ENDPROC DEFPROCA:LOCALK%,S%,s%:f%!d%=50:f%!b%=550:f%!Q%=0:f%!Z%=0:f%!T%=3:f%!R%=f%!T%:f%!tb%=1:f%!ub%=f%!Xa%:f%!Za%=1:s%=(f%!Xa%*J%!e%)+((f%!Xa%-1)*f%!Wa%):f%!e%=s%:f%!k%=f%!Ya%*J%!k%:FORS%=1TOf%!Xa%:FORK%=1TOf%!Ya% c%(S%,K%)=((K%+1)/2)+(f%!Q%*10):NEXTK%:NEXTS%:ENDPROC DEFPROCq:LOCALK%,S%,x%,y%,v%:v%=FNe(16):FORS%=f%!tb%TOf%!ub%:x%=f%!d%+((S%-1)*(J%!e%+f%!Wa%)):FORK%=f%!Za%TOf%!Ya%:y%=f%!b%+((K%-1)*J%!k%):IFc%(S%,K%)>0THEN c%(S%,K%)=((K%+1)/2)+(f%!Q%*10) ENDIF IFc%(S%,K%)<>0THEN CASESGN(c%(S%,K%))OF WHEN-1:PROCga(x%,y%,S%,K%) WHEN1:PROCa(FNb(27)+STR$(c%(S%,K%)),x%,y%) ENDCASE ELSE:v%!d%=x%:v%!b%=y%:v%!e%=J%!e%:v%!k%=J%!k%:PROCd(v%) ENDIF NEXTK%:NEXTS%:PROCb(v%):ENDPROC DEFPROCga(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%,Lb%,F%,Mb%,Nb%,T%,i%,o$:T%=1:Ob%=24:Y%=FNe(28):Lb%=FNe(28):PROCd(f%):PROCd(o%):IFA%!B%THEN PROCd(A%):A%!B%=FALSE ENDIF IFm%!B%THEN PROCd(m%):m%!B%=FALSE ENDIF PROCha:PROCia:o%!d%=FNh(o%,h%):Y%!d%=0-J%!e%:Y%!b%=o%!b%:Y%!R%=T%:Lb%!d%=h%!e%:Lb%!b%=o%!b%:Lb%!R%=0-T%:C%!Oa%=0:PROCg(V%!ta%):PROCj(C%!Oa%):PROCp(C%!Qa%):PROCa(FNb(1),o%!d%,o%!b%):Q%=0:Nb%=FALSE:REPEAT:Y%!d%+=Y%!R%:Y%!Ob%=Y%!d%+J%!e%:Lb%!d%+=Lb%!R% SYSFNd(6)TOF%:IFF%-Mb%>=50THENNb%=FNp(Nb%):Mb%=F% IFNb%THENo$=FNb(21)ELSEo$=FNb(20) PROCa(o$,Y%!d%,Y%!b%):PROCa(o$,Lb%!d%,Lb%!b%):PROCe(2):WAIT:UNTILY%!Ob%>=o%!d%:FORi%=1TO10:PROCa(FNb(20),Y%!d%,Y%!b%):PROCa(FNb(20),Lb%!d%,Lb%!b%):PROCe(20):PROCa(FNb(21),Y%!d%,Y%!b%):PROCa(FNb(21),Lb%!d%,Lb%!b%):PROCe(20):WAIT:NEXTi%:PROCh(2):FORi%=1TO3 PROCa(FNb(2)+STR$(i%),o%!d%,o%!b%):PROCe(20):WAIT:NEXTi%:PROCe(20):PROCd(o%):PROCb(Y%):PROCb(Lb%):ENDPROC DEFPROCK:LOCALi%,nb%,Mb%:nb%=ha%:Mb%=ia%:FORi%=1TO10:a%(i%)=FNg(48,0):a%(i%)!e%=FNc(5,1):a%(i%)!k%=FNc(20,2):SYSFNd(6)TOa%(i%)!nb%:SYSFNd(6)TOa%(i%)!Mb%:a%(i%)!B%=FALSE:NEXTi%:ENDPROC DEFPROCba(p%):LOCALPb%,Qb%,Rb%,Sb%,x%,y%:LOCALQ%,Tb%:Q%=fa%:Tb%=ga%:Pb%=RND(10):Rb%=C%!Qa%+5:IFRb%>100THEN Rb%=100:IFC%!Qa%MOD10=0THENf%!_a%+=1 ENDIF IFFNq(Rb%)ANDFNq(f%!_a%)THEN IFc%(Pb%,f%!Za%)>0THEN x%=f%!d%+(Pb%-1)*(J%!e%+f%!Wa%):y%=f%!b%+((f%!Za%-1)*J%!k%)-J%!k%:Qb%=(J%!e%/2)-(a%(p%)!e%/2):a%(p%)!d%=x%+Qb%:a%(p%)!b%=y%:a%(p%)!B%=TRUE:a%(p%)!Z%=FALSE:a%(p%)!Tb%=1:a%(p%)!Q%=0:Sb%=4:IFFNq(25)THENa%(p%)!Tb%=2:Sb%=Sb%/2 a%(p%)!T%=Sb%:a%(p%)!R%=a%(p%)!T%:PROCh(3) ENDIF ENDIF ENDPROC DEFPROCca(p%):LOCALF%,Q%,Mb%,Tb%,d$,r$:Q%=fa%:Tb%=ga%:Mb%=ia%:SYSFNd(6)TOF%:IFF%-a%(p%)!Mb%>=40THEN a%(p%)!Mb%=F%:a%(p%)!Q%+=1 ENDIF :IFa%(p%)!Tb%=1ANDa%(p%)!Q%>1THEN a%(p%)!Q%=0 ENDIF IFa%(p%)!Tb%=2ANDa%(p%)!Q%>3THEN a%(p%)!Q%=0 ENDIF r$=STR$(a%(p%)!Q%):IFa%(p%)!Tb%=2ANDa%(p%)!Q%=3THEN r$="1" ENDIF d$=FNb(30)+STR$(a%(p%)!Tb%)+r$:IFNOTa%(p%)!Z%THEN a%(p%)!b%-=a%(p%)!R%:PROCa(d$,a%(p%)!d%,a%(p%)!b%) ELSE:d$=FNb(30)+"3":PROCa(d$,a%(p%)!d%,a%(p%)!b%) ENDIF ENDPROC DEFPROCda(p%):LOCALi%:PROCh(2):FORi%=1TO3:PROCa(FNb(2)+STR$(i%),o%!d%,o%!b%):PROCe(20):WAIT:NEXTi%:PROCd(o%):IFA%!B%THEN PROCd(A%):A%!B%=FALSE ENDIF o%!d%=FNh(o%,h%):C%!Oa%-=1:PROCj(C%!Oa%):PROCd(a%(p%)):a%(p%)!B%=FALSE:PROCa(FNb(1),o%!d%,o%!b%):ENDPROC DEFPROCea(p%):LOCALTb%,nb%:Tb%=ga%:nb%=ha%:IFa%(p%)!Tb%=1THEN IFNOTa%(p%)!Z%THEN a%(p%)!Z%=TRUE:PROCi(5):d$=FNb(30)+"3":PROCa(d$,a%(p%)!d%,a%(p%)!b%):SYSFNd(6)TOa%(p%)!nb% ENDIF ENDIF PROCd(A%):A%!B%=FALSE:ENDPROC DEFPROCfa(p%):LOCALnb%,F%:nb%=ha%:SYSFNd(6)TOF%:IFF%-a%(p%)!nb%>=40THEN PROCd(a%(p%)):a%(p%)!B%=FALSE ENDIF ENDPROC DEFPROCha:LOCALi%,Ub%:Ub%=52:FORi%=1TOa%!Ub%:IFa%(i%)!B%THEN PROCd(a%(i%)):a%(i%)!B%=FALSE ENDIF NEXTi%:ENDPROC DEFPROCL:LOCALi%,x%,Vb%,Wb%,O%:O%=a%!56:Wb%=fa%:Vb%=h%!e%/O%:x%=Vb%-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)*Vb%):b%(i%)!b%=o%!b%+100:b%(i%)!B%=TRUE:b%(i%)!Wb%=0:NEXTi%:ENDPROC DEFPROCaa:LOCALi%,Wb%,O%:O%=a%!56:Wb%=fa%:FORi%=1TOO%:b%(i%)!B%=TRUE:b%(i%)!Wb%=0:NEXTi%:ENDPROC DEFPROCy:LOCALi%,O%:O%=56:FORi%=1TOa%!O%:IFb%(i%)!B%THENPROCr(b%(i%)) NEXTi%:ENDPROC DEFPROCr(p%):LOCALXb%,Yb%,Zb%,L%,Wb%,q%,a$:Wb%=fa%:q%=84:Zb%=10-p%!Wb%:a$=STR$(Zb%):L%=LEN(a$):Xb%=p%!d%+FNm(L%,p%!e%):Yb%=p%!b%+(p%!k%/2)-(h%!_%/2):Yb%+=7:IFL%=1THENXb%-=7ELSEXb%-=15 PROCd(p%):PROCa(FNb(16),p%!d%,p%!b%):PROCc(Xb%,Yb%,a$,0,a%!q%):ENDPROC DEFPROCB(p%,_b%):LOCALy%,Wb%:Wb%=fa%:vb%=ga%:b%(p%)!Wb%+=1:IFb%(p%)!Wb%>=10THEN PROCd(b%(p%)):b%(p%)!B%=FALSE ELSE:PROCd(b%(p%)):y%=b%(p%)!b%:IF_b%THENb%(p%)!b%+=5ELSEb%(p%)!b%-=5 PROCr(b%(p%)):b%(p%)!Z%=TRUE:b%(p%)!b%=y%:SYSFNd(6)TOb%(p%)!vb% ENDIF ENDPROC DEFPROCia: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%,ac%,bc%,cc%,dc%,Jb%,i%,f$:H%=FNG(e$):bc%=FNg(H%,0):PROCf(bc%,208,0):SYSFNd(3),16,e$,bc%,0:FORi%=0TO3:f$+=CHR$(bc%?i%):NEXTi%:IFf$="SQSH"THEN PRINTFNa(27)+"...":SYSFNd(7),1<<3,H%TO`b%,ac%:IFac%=-1THENac%=bc%!4 cc%=FNg(`b%,0):PROCf(cc%,207,0):dc%=FNB(ac%+4):SYSFNd(7),1<<2,cc%,bc%+20,H%-20,dc%+4,ac%TOJb%:IFJb%<>0THENERROR255,FNa(114)+" "+STR$(Jb%) PROCf(cc%,0,1):PROCf(bc%,0,1):PROCb(cc%):PROCb(bc%) ELSE:dc%=FNB(H%+256):SYSxa%,256+10,dc%,e$ ENDIF SYSxa%,256+17,dc%:=dc% DEFFNB(H%):LOCALdc%:dc%=FNg(H%,0):dc%!0=H%:dc%!4=0:dc%!8=16:dc%!12=16:=dc% DEFPROCc(x%,y%,a$,ec%,fc%):LOCALi%,gc%,q%,hc%:q%=88:hc%=76:IFfc%<>a%!80ANDfc%<>a%!84THEN ERROR255,FNa(112) ENDIF a%!q%=fc%:gc%=h%!ra%:FORi%=1TOLEN(a$):PROCa(STR$(ASC(MID$(a$,i%,1))),x%+((i%-1)*gc%),y%):IFec%>0THENPROCe(ec%) NEXTi%:a%!q%=a%!hc%:ENDPROC DEFPROCa(B$,x%,y%):LOCALic%,q%:q%=88:SYSxa%,256+24,a%!q%,B$TO,,ic%:SYSxa%,512+34,a%!q%,ic%,x%,y%,0:ENDPROC DEFPROCd(G%):GCOL0,0TINT0:RECTANGLEFILLG%!d%,G%!b%,G%!e%,G%!k%:ENDPROC DEFFNm(jc%,h%):=(h%/2)-(jc%/2) DEFPROCu(a$,kc%):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$,kc%,a%!q%):ENDPROC DEFFNh(lc%,mc%):=(mc%!e%/2)-(lc%!e%/2) DEFPROCm(lc%,mc%):LOCALx%,y%:lc%!d%=(mc%!e%/2)-(lc%!e%/2):lc%!b%=(mc%!k%/2)-(lc%!k%/2):ENDPROC DEFPROCg(b%):LOCALi%,nc%:nc%=h%!e%/V%!e%:FORi%=1TOnc%+1:PROCa(FNb(108),(i%-1)*V%!e%,b%):NEXTi%:ENDPROC DEFPROCn(G%):LOCALx%,y%,oc%,pc%,qc%,rc%,i%:oc%=FNc(3,1):pc%=FNc(3,2):qc%=1:rc%=3:FORi%=1TOG%!e%:x%=G%!d%+((i%-1)*qc%):PROCa(FNb(113),x%,G%!b%):PROCa(FNb(113),x%,G%!b%+(G%!k%-(2*rc%))):NEXTi%:x%=G%!d%+(G%!e%-oc%):FORi%=1TOG%!k%-1 PROCa(FNb(114),G%!d%,G%!b%+((i%-1)*qc%)):PROCa(FNb(114),x%,G%!b%+((i%-1)*qc%)):NEXTi%:PROCa(FNb(111),G%!d%,G%!b%):PROCa(FNb(109),G%!d%,(G%!b%+G%!k%)-pc%):PROCa(FNb(112),G%!d%+(G%!e%-oc%),G%!b%):x%=(G%!d%+G%!e%)-oc%:y%=(G%!b%+G%!k%)-pc% PROCa(FNb(110),x%,y%):ENDPROC DEFFNs(e$,f$):LOCALw%,sc%,tc%,I%,g$:w%=OPENIN(e$):INPUT#w%,g$:IFg$<>f$THENCLOSE#w%:ERROR255,"Bad Magic!" INPUT#w%,I%,tc%,tc%,sc%:CLOSE#w%:=sc%EORI% DEFFNt(e$,f$,RETURNk%(),RETURNh$()):LOCALw%,i%,sc%,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%,sc%:ya%=ya%EORI%:za%=za%EORI%:sc%=sc%EORI%:FORi%=1TOsc%:INPUT#w%,k%(i%),h$(i%):NEXTi%:CLOSE#w%:FORi%=1TOsc%:U%+=LEN(h$(i%)):NEXTi%:Aa%=U%/sc%:IFU%<>ya%ORAa%<>za%THEN ERROR255,"File Inconsistant with header!" ENDIF =I% DEFPROCs(uc%,I%,RETURNb$()):LOCALi%:FORi%=1TOuc%:b$(i%)=FNl(b$(i%),I%):NEXTi%:ENDPROC DEFFNa(vc%):LOCALI%:I%=a%!68:=FNv(vc%,ca%,h%(),g$(),I%,106) DEFFNb(vc%):=FNv(vc%,ua%,i%(),c$(),-1,107) DEFFNd(vc%):=FNv(vc%,va%,j%(),d$(),-1,108) DEFFNf(vc%):=FNv(vc%,ba%,g%(),f$(),wc%,109) DEFFNv(vc%,uc%,l%(),b$(),I%,xc%):LOCALi%,yc%:yc%=0:FORi%=1TOuc%:IFl%(i%)=vc%THENyc%=i%:i%=uc% NEXTi%:IFyc%=0THEN IFvc%>=106ANDvc%<=108THEN ERROR255,"Missing message!!!" ELSE:IFxc%=109THEN ERROR255,"Can't find LibASH resource : "+STR$(vc%) ELSE:ERROR255,FNa(xc%)+" "+STR$(vc%) ENDIF ENDIF ENDIF IFI%=-1THEN=b$(yc%) =FNl(b$(yc%),I%) DEFFNC(e$):LOCALw%:w%=0:SYSFNd(31),,e$TOw%:=w% DEFPROCh(zc%):LOCALJb%,x$:Jb%=0:x$=FNa(110)+" "+STR$(zc%):IFa%!Jb%>0THEN IFzc%<1ANDzc%>4THENERROR255,x$ OSCLI"SPlay_fire0"+STR$(zc%)+"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 CASEAc%OF WHEN1:Bc%=H%<>h%!oa% WHEN4:Bc%=H%>>h%!pa% OTHERWISE:ERROR255,FNa(103)+" "+STR$(Ac%) ENDCASE =Bc% DEFFNn(G%,Dc%):LOCALEc%,Fc%,Gc%,Hc%:Gc%=FALSE:Hc%=FALSE:IFG%!B%ANDDc%!B%THEN Ec%=Dc%!d%+Dc%!e%:Fc%=Dc%!b%+Dc%!k%:IFG%!d%>=Dc%!d%ANDG%!d%=Dc%!b%ANDG%!b%-1THEN SYS"TimPlayer_SongStop",a%!4:SYS"TimPlayer_SongUnload",a%!4 ENDIF PROCv:ENDPROC DEFFNj(C$,y$):LOCALl$,t$,P%,yc%:l$=STRING$(10," "):RIGHT$(l$,3)=" : ":LEFT$(l$,LEN(y$))=y$:P%=FNr(C$):t$="Missing!!":yc%=FALSE:IFP%=1THENt$="OK.":yc%=TRUE l$+=t$:PRINTl$:=yc% DEFFNy(sc%):LOCALj$:j$="Dump"+STR$(sc%):IFFNr(q$+j$)<>0THEN REPEAT:sc%+=1:j$="Dump"+STR$(sc%):UNTILFNr(q$+j$)=0ORLEN(j$)>10:IFLEN(j$)>10THENsc%=-1 ENDIF =sc% DEFPROCf(D%,vc%,Ac%):LOCALa$:IFAc%=0THENa$=FNa(200)ELSEa$=FNa(209) a$+=" &":PRINTa$;~FNx(D%);:PRINT" "+FNa(201)+" &";~D%;:IFAc%=0THEN a$=" "+FNa(202)+" "+FNa(vc%) ELSE:a$="." ENDIF PRINTa$:ENDPROC DEFPROCF:LOCALw%,db%,ib%,Ic%,gb%,fb%:db%=0:ib%=48:fb%=92:w%=OPENIN(h$+"Configs"):INPUT#w%,Ic%,gb%:CLOSE#w%:IFIc%>=0ANDIc%<=2THENa%!db%=Ic% IFgb%>=0ANDgb%<=128THENa%!ib%=gb% a%!fb%=FALSE:ENDPROC DEFPROCJ:LOCALw%,db%,ib%,fb%:db%=0:ib%=48:fb%=92:IFa%!fb%THEN w%=OPENOUT(h$+"Configs"):PRINT#w%,a%!db%,a%!ib%:CLOSE#w% ENDIF 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$,Jc%,A$,Kc%):LOCALLc%,c$:Lc%=Jc%-LEN(a$):IFLc%<=0THEN c$=LEFT$(a$,Jc%) ELSE:IFKc%THEN c$=STRING$(Jc%,A$):RIGHT$(c$,LEN(a$))=a$ ELSE:c$=a$+STRING$(Lc%,A$) ENDIF ENDIF =c$ DEFFNA(a$,Jc%):LOCALc$:c$=STRING$(Jc%," "):RIGHT$(c$,LEN(a$))=a$:=c$ DEFFNr(k$):LOCALyc%:SYS"XOS_File",17,k$TOyc%:=yc% DEFFNG(k$):LOCALH%:SYSFNd(3),17,k$TO,,,,H%:=H% DEFFNz(Ac%,k$):LOCALw%,Mc%,Nc%,Oc%:Oc%=FALSE:CASEAc%OF WHEN0:w%=OPENUP(k$+"chkfile") WHEN1:w%=OPENUP(k$) OTHERWISE:ERROR255,FNa(104)+" "+STR$(Ac%) ENDCASE IFw%<>0THEN SYSFNd(4),254,w%TONc%;Mc%:IF(Mc%AND1)THENCLOSE#w%:ERROR255,FNa(105) IF((Nc%AND(1<<7))<>0)THENOc%=TRUE CLOSE#w% ENDIF =Oc% DEFPROCE(I%):LOCALPc%:Qc%=0:Rc%=0:wc%=I%:SYSFNf(210),-1,-1TOSc%:SYSFNf(211)TOTc%;Pc%:IFPc%AND1THENTc%=16384 PROCja(Tc%):ENDPROC DEFPROCv:IFQc%THEN SYSFNf(210),Qc%-32768,-1TOSc%:Qc%=0:Rc%=0 ENDIF ENDPROC DEFFNe(Uc%):LOCALD%,H%:H%=(Uc%+15)AND-4:D%=FNH(H%):IFD%ELSEERROR254,FNf(110) D%!0=&DEADDEAD:D%!4=Uc%:!(D%-8+(D%!-4))=&DEADDEAD:=D%+8 DEFFNg(Uc%,Ib%):LOCALD%:D%=FNe(Uc%):PROCka(D%,Ib%):=D% DEFPROCb(RETURND%):CASEFNI(D%)OF WHEN1:ERROR254,FNf(111) WHEN2:ERROR254,FNf(112) WHEN3:ERROR254,FNf(113) ENDCASE D%-=8:Rc%-=D%!-4:SYSFNf(212),3,Qc%,D%:D%=0:ENDPROC DEFFNx(D%):LOCALv%:v%=D%-4:=v%!0 DEFPROCka(D%,Ib%):LOCALsb%,H%:H%=FNx(D%):FORsb%=0TOH%-4STEP4:D%!sb%=Ib%:NEXTsb%:ENDPROC DEFFNi(D%):LOCALVc%,sb%,H%:H%=FNx(D%):Vc%=FNe(H%):FORsb%=0TOH%-4STEP4:Vc%!sb%=D%!sb%:NEXTsb%:=Vc% DEFFNI(D%):LOCALHb%,Wc%:Hb%=FALSE:Wc%=FALSE:D%-=8:IFD%!0<>&DEADDEADTHENWc%=TRUE IF!(D%-8+(D%!-4))<>&DEADDEADTHENHb%=TRUE IFWc%ANDHb%THEN=3 IFHb%THEN=2 IFWc%THEN=1 =0 DEFPROCja(H%):IFQc%THENERROR254,FNf(114) H%=(H%+Tc%-1)ANDNOT(Tc%-1):Qc%=HIMEM:SYSFNf(210),Sc%+H%,-1TOSc%:H%=Sc%+32768-Qc%:IFH%<1THEN Qc%=0:ERROR254,FNf(115) ELSE:SYSFNf(212),0,Qc%,,H% ENDIF Rc%=0:ENDPROC DEFPROCla(Uc%):LOCALXc%:Xc%=Sc%:SYSFNf(210),Sc%+Uc%,-1TOSc%:Uc%=Sc%-Xc%:IFUc%THENSYSFNf(212),5,Qc%,,Uc%TO,,,Uc% ENDPROC DEFFNH(Uc%):LOCALD%,Pc%:SYSFNf(213),2,Qc%,,Uc%TO,,D%;Pc%:IFPc%AND1THEN PROCla((Uc%+Tc%)ANDNOT(Tc%-1)):SYSFNf(213),2,Qc%,,Uc%TO,,D%;Pc%:IFPc%AND1THEN=0 ENDIF Rc%+=D%!-4:=D%