REM Acorn Invaders REM Packed by Make v1.41 15/5/08 On 10 Aug 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(100,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:a%!96=2:DIMa$(10),d%(10):DIMe%(10):PRINTFNa(8)+" "+FNa(22):d%=0:b%=4:e%=8:k%=12:R%=16:T%=20:B%=24:`%=28:ea%=32:fa%=36:ga%=40:ha%=44:ia%=48:ja%=52:ka%=56:la%=60:ma%=64 na%=16:oa%=20:pa%=24:qa%=28:ra%=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);:PROCG:PRINTFNa(14):PRINT: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 PROCH(a%!44) ELSE:IFNOTFNz(1,v$)THEN a%!44=FALSE:PRINTFNa(18)+" "+FNa(10)+" "+FNa(20) ELSE:PRINTFNa(18)+" "+FNa(11)+" "+FNa(20) ENDIF PROCI ENDIF PRINT:PRINTFNa(12):PROCe(150):h%=FNe(36):W%=FNe(24):X%=FNe(16):CLS:PROCt:h%!qa%=FNc(8,1):h%!ra%=FNc(8,2)+7:W%!e%=FNc(6,1):W%!k%=FNc(6,2):W%!sa%=h%!k%-50:W%!ta%=30:IFa%!0=1THEN SYSFNd(33),a%!4 ENDIF FORi%=0TOa%!48STEPa%!96:SYSFNd(36),a%!4,i%:NEXTi%:WHILENOTFND:CLS:PROCJ:ENDWHILE:CLS:X%!e%=220:X%!k%=40:PROCm(X%,h%):X%!b%-=3:PROCn(X%):PROCu(FNa(31),10):IFa%!44THENPROCK IFa%!0=1THEN SYSFNd(36),a%!4,-1TO,ya%:FORi%=ya%TO0STEP0-a%!96: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%,F%,L%,m%,za%,Aa%,Ba%:LOCALo%,Y%,Ca%,Da%,Ea%,Fa%,Ga%,Ha%,Ia%:LOCALx%,y%,P%,Ja%,q%,s$,a$:Ja%=44:q%=80:M%=FNg(16,0):N%=FNg(16,0):F%=FNg(16,0):m%=FNg(16,0):za%=FNg(16,0):Y%=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%:F%!e%=720:F%!k%=500:F%!d%=FNh(F%,h%):F%!b%=200:m%!e%=FNc(40,1):m%!k%=FNc(20,2) m%!d%=(F%!d%+F%!e%/2)-150:m%!b%=(F%!b%+F%!k%)-125:o%!e%=FNc(30,1):o%!k%=FNc(15,2):za%!e%=FNc(20,1):za%!k%=FNc(20,2):za%!d%=(F%!d%+F%!e%/2)-150:za%!d%+=FNh(za%,m%):Aa%=FNi(za%):Ba%=FNi(za%) :Ba%!b%=m%!b%-40-Ba%!k%:Aa%!b%=Ba%!b%-40-Aa%!k%:za%!b%=Aa%!b%-40-za%!k%:Y%!e%=FNc(20,1):Y%!k%=FNc(20,2):Y%!d%=(F%!d%+F%!e%/2)-120:Ca%=FNi(Y%):Da%=FNi(Y%):Ea%=FNi(Y%):Ea%!d%=F%!d%:Ka%=FNi(Ea%):Ga%=FNi(Ea%):Fa%=FNi(Y%) Fa%!d%=F%!d%:Fa%!d%+=(F%!e%/2)+10:Ha%=FNi(Fa%):Ia%=FNi(Fa%)::Y%!b%=(F%!b%+F%!k%)-120:Ca%!b%=Y%!b%-60:Da%!b%=Ca%!b%-60:Ga%!b%=Da%!b%-90:Ka%!b%=Ga%!b%-60:Ea%!b%=Ka%!b%-60:Fa%!b%=Da%!b%-90:Ha%!b%=Fa%!b%-60:Ia%!b%=Ha%!b%-60 CLS:PROCg(W%!sa%):PROCg(W%!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%!qa%:y%=170 PROCc(FNm(L%,h%!e%),y%,a$,11,a%!q%):a$=FNa(33):L%=LEN(a$)*h%!qa%:y%-=h%!ra%:PROCc(FNm(L%,h%!e%),y%,a$,11,a%!q%):WHILENOTINKEY(-99)ANDNOTINKEY(-17)ANDNOTINKEY(-82):y%=F%!b%+F%!k%:FORi%=1TOa%!72:a$=FNl(e$(i%),a%!60):x%=FNk(a$):CASESGN(f%(i%))OF WHEN-1:y%-=(ABS(f%(i%))*h%!ra%) 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(F%):a$=FNa(57)+" "+FNa(34):x%=FNk(a$):y%=F%!b%+F%!k%-20:PROCc(x%,y%,a$,0,a%!q%):a$=FNa(35):y%-=h%!ra%: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),Ba%!d%,Ba%!b%):a$=FNa(37)+" "+FNa(40):PROCc(x%,Ba%!b%+12,a$,0,a%!q%):PROCa(FNb(22),Aa%!d%,Aa%!b%):a$=FNa(38)+" "+FNa(40):PROCc(x%,Aa%!b%+12,a$,0,a%!q%):PROCa(FNb(20),za%!d%,za%!b%) a$=FNa(39)+" "+FNa(40):PROCc(x%,za%!b%+12,a$,0,a%!q%):L%=o%!e%/h%!qa%+2:s$=FNa(66):a$=s$+STRING$(L%," ")+FNa(67):x%=FNk(a$):y%=za%!b%-(3*h%!ra%):PROCc(x%,y%,a$,0,a%!q%):o%!d%=x%+7+(LEN(s$)*h%!qa%):o%!b%=y%:PROCa(FNb(1),o%!d%,o%!b%) P%=FNu:IFP%=1THEN=TRUE IFP%=2THEN=FALSE PROCd(F%):a$=FNa(41):x%=FNk(a$):y%=F%!b%+F%!k%-20:PROCc(x%,y%,a$,0,a%!q%):x%=Y%!d%+Y%!e%+10:PROCa(FNb(102),Y%!d%,Y%!b%):a$=FNa(42)+" "+FNa(43):PROCc(x%,Y%!b%+12,a$,0,a%!q%):PROCa(FNb(103),Ca%!d%,Ca%!b%):a$=FNa(42)+" "+FNa(44) PROCc(x%,Ca%!b%+12,a$,0,a%!q%):PROCa(FNb(104),Da%!d%,Da%!b%):PROCc(x%,Da%!b%+12,FNa(45),0,a%!q%):x%=Ea%!d%+Ea%!e%+10:PROCa(FNb(105),Ka%!d%,Ka%!b%):a$=FNa(46)+" "+FNa(49):PROCc(x%,Ka%!b%+12,a$,0,a%!q%):PROCa(FNb(117),Ga%!d%,Ga%!b%) PROCc(x%,Ga%!b%+12,FNa(76),0,a%!q%):PROCa(FNb(107),Ea%!d%,Ea%!b%):a$=FNa(48)+" "+FNa(49):PROCc(x%,Ea%!b%+12,a$,0,a%!q%):x%=Fa%!d%+Fa%!e%+10:PROCa(FNb(106),Fa%!d%,Fa%!b%):a$=FNa(47)+" "+FNa(73):PROCc(x%,Fa%!b%+12,a$,0,a%!q%) PROCa(FNb(115),Ha%!d%,Ha%!b%):a$=FNa(47)+" "+FNa(77)+" ":a$+=FNa(74):PROCc(x%,Ha%!b%+12,a$,0,a%!q%):PROCa(FNb(116),Ia%!d%,Ia%!b%):a$=FNa(47)+" "+FNa(77)+" ":a$+=FNa(75):PROCc(x%,Ia%!b%+12,a$,0,a%!q%):P%=FNu:IFP%=1THEN=TRUE IFP%=2THEN=FALSE PROCd(F%):a$=FNa(50):IFa%!Ja%THENa$=FNa(51) x%=FNk(a$):y%=F%!b%+F%!k%-20:PROCc(x%,y%,a$,0,a%!q%):a$=FNa(58)+" "+FNa(52):x%=FNk(a$):y%-=h%!ra%:PROCc(x%,y%,a$,0,a%!q%):y%=(F%!b%+F%!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%!ra%:FORi%=1TO10:IFi%<10THEN a$=" "+STR$(i%)+". " ELSE:a$=" "+STR$(i%)+". " ENDIF s$=FNl(a$(i%),a%!64):a$+=FNp(s$,8," ",FALSE):a$+=" .... ":a$+=FNA(STR$(d%(i%)),10):a$+=" ... "+FNA(STR$(e%(i%)),3):x%=FNk(a$):PROCc(x%,y%-(i%*(h%!ra%+5)),a$,0,a%!q%):NEXTi%:P%=FNu:IFP%=1THEN=TRUE IFP%=2THEN=FALSE PROCd(F%):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(F%):PROCb(m%):PROCb(za%):PROCb(Aa%):PROCb(Ba%):PROCb(Y%):PROCb(Ca%):PROCb(Da%):PROCb(Ea%):PROCb(Fa%):PROCb(Ka%):PROCb(Ga%):PROCb(Ha%):PROCb(Ia%):PROCb(o%) ENDIF =P% DEFFNk(a$):LOCALL%:L%=LEN(a$)*h%!qa%:=F%!d%+FNm(L%,F%!e%) DEFPROCJ:LOCALo%,A%,m%,f%,C%:LOCALJ%:LOCALc%(),a%():LOCALb%(),La%:LOCALZ%,Ma%,Na%,Oa%:LOCALPa%,Qa%,Ra%:LOCALSa%:LOCALTa%,Ua%,Va%,Wa%,Xa%:LOCALYa%,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) Z%=0:Ma%=4:Na%=8:Oa%=12:Sa%=16:Za%=12:Pa%=28:La%=56:Ta%=fa%:Ua%=ga%:Va%=ha%:Wa%=ka%:Xa%=la%:DIMc%(10,6),a%(10),b%(a%!La%):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%=W%!sa%-(10+m%!k%):m%!T%=5:m%!B%=FALSE:m%!ga%=1:A%!e%=FNc(5,1):A%!k%=FNc(20,2):A%!B%=FALSE:A%!T%=10:C%!Na%=1:C%!Z%=3:C%!Oa%=FALSE a%!Sa%=-1:a%!Za%=0:f%!Ta%=FNc(20,1):f%!Ua%=10:f%!Va%=6:f%!B%=TRUE:f%!Xa%=4:SYSFNd(6)TOf%!ma%:PROCL:PROCM:PROCg(W%!sa%):PROCg(W%!ta%):PROCN(0,d%(1),C%!Z%,C%!Na%):PROCO:PROCy:PROCa(FNb(1),o%!d%,o%!b%):WHILEC%!Z%>0:IFa%!Pa%=0THEN IFINKEY(-74)THENPROCP(o%!d%,o%!b%) IFINKEY(-98)THENPROCQ IFINKEY(-67)THENPROCR IFINKEY(-17)THENPROCS ENDIF IFINKEY(-102)THENPROCx IFINKEY(-82)THENPROCw IFINKEY(-56)THENPROCT IFINKEY(-59)THENPROCl(4) IFINKEY(-60)THENPROCl(-4) IFa%!Pa%=0THEN PROCU:PROCV:PROCW:PROCX:PROCY:PROCZ ELSE:PROC_ ENDIF WAIT:ENDWHILE:X%!e%=240:X%!k%=40:PROCm(X%,h%):X%!b%-=3:PROCd(X%):PROCn(X%):a$=FNa(49)+" "+FNa(53):PROCu(a$,11):PROCe(750):IFNOTC%!Oa%THEN IFC%!Ma%>=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%!La%:PROCb(b%(i%)):NEXTi%:ENDPROC DEFPROCQ: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 DEFPROCR: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 DEFPROCP(x%,y%):IFNOTA%!B%THEN A%!B%=TRUE:A%!d%=x%+(o%!e%/2):A%!b%=y%+o%!k%:PROCi(4) ENDIF ENDPROC DEFPROCw:LOCALO%,_a%:O%=40:_a%=44:IFa%!_a%THEN REPEAT:UNTILNOTINKEY(-82):a%!O%=FNy(a%!O%):IFa%!O%=-1THENERROR255,FNa(109) OSCLI"ScreenSave "+q$+"Dump"+STR$(a%!O%) ENDIF ENDPROC DEFPROCS:LOCALi%,`a%:`a%=52:FORi%=1TOa%!`a%:a%(i%)!B%=FALSE:NEXTi%:C%!Z%=0:C%!Oa%=TRUE:ENDPROC DEFPROCx:LOCALab%,bb%,cb%:ab%=0:bb%=4:cb%=92:REPEAT:UNTILNOTINKEY(-102):a%!ab%+=1:IFa%!ab%>2THENa%!ab%=0 IFa%!ab%=1THEN SYSFNd(33),a%!bb% ELSE:SYSFNd(34),a%!bb% ENDIF a%!cb%=TRUE:PROCk:ENDPROC DEFPROCl(db%):LOCALab%,bb%,eb%,fb%,G%,ya%,gb%,cb%:ab%=0:bb%=4:eb%=8:fb%=48:cb%=92:IFa%!ab%=1THEN SYSFNd(6)TOG%:IFG%-a%!eb%>=10THEN SYSFNd(36),a%!bb%,-1TO,ya%:gb%=ya%+db%:IFgb%>=0ANDgb%<=128THEN SYSFNd(36),a%!bb%,gb%:a%!fb%=gb%:a%!eb%=G%:a%!cb%=TRUE ENDIF ENDIF ENDIF ENDPROC DEFPROCT:LOCALPa%,Qa%,a$:Pa%=28:Qa%=32:REPEATUNTILNOTINKEY(-56):a$=FNa(49)+" "+FNa(61):a%!Pa%=FNq(a%!Pa%):a%!Qa%=a%!Pa%:IFa%!Pa%=0THEN a$=STRING$(LEN(a$)," "):PROCo(a$) ENDIF ENDPROC DEFPROCU:IFA%!B%THEN IFA%!b%>=W%!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 DEFPROCV:LOCALhb%,ib%,jb%,G%,kb%,Na%,d$:LOCALZa%,Sa%,Ma%,Z%:hb%=ea%:ib%=fa%:jb%=ga%:Na%=8:Sa%=16:Z%=0:Ma%=4:IFNOTm%!B%THEN IFFNn(4)ANDFNn(5)THEN m%!B%=TRUE:m%!`%=FALSE:m%!ib%=0:IFFNn(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%!hb%=FALSE:m%!B%=FALSE:ENDPROC ENDIF IFm%!d%>h%!e%ANDSGN(m%!R%)=1THEN m%!hb%=FALSE:m%!B%=FALSE:ENDPROC ENDIF IFNOTm%!`%THEN IFFNo(A%,m%)THEN PROCd(A%):PROCa(FNb(12),m%!d%,m%!b%):SYSFNd(6)TOm%!hb%:m%!`%=TRUE:A%!B%=FALSE:IFC%!Na%>=5ANDFNn(10)THEN C%!Z%+=1:PROCh(C%!Z%):a%!Sa%=0 ELSE:PROCj(500) ENDIF ENDIF ELSE:IFFNo(A%,m%)THEN PROCd(A%):A%!B%=FALSE ENDIF ENDIF IFNOTm%!`%THEN SYSFNd(6)TOG%:IFG%-m%!jb%>=40THEN m%!jb%=G%:m%!ib%=FNq(m%!ib%) ENDIF d$=FNb(10)+STR$(m%!ib%):PROCa(d$,m%!d%,m%!b%):m%!d%+=m%!R% ELSE:SYSFNd(6)TOG%:kb%=G%-m%!hb%:IFkb%>=300THEN m%!B%=FALSE:m%!ib%=1:PROCd(m%) ELSE:IFkb%>=250THEN PROCa(FNb(15),m%!d%,m%!b%) ELSE:IFkb%>=200THEN PROCa(FNb(14),m%!d%,m%!b%) ELSE:IFkb%>=100THEN PROCa(FNb(13),m%!d%,m%!b%) ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF ENDPROC DEFPROCW:LOCALlb%,z%,K%,S%,mb%,nb%,ob%,pb%:LOCALQ%,qb%,rb%,G%,sb%,tb%,ub%:Q%=ea%:qb%=ia%:rb%=ja%:sb%=ma%:tb%=52:ub%=56:SYSFNd(6)TOG%:IFG%-f%!sb%>=50THEN f%!sb%=G%:f%!Q%=FNq(f%!Q%) ENDIF lb%=f%!d%+f%!e%:pb%=0-((f%!qb%-1)*(J%!e%+f%!Ta%)):IFlb%>=h%!e%THEN f%!R%=0-f%!T%:PROCz ENDIF IFf%!d%<=pb%THEN f%!R%=0+f%!T%:PROCz ENDIF pb%=f%!b%+((f%!Wa%-1)*J%!k%):IFpb%<=o%!b%+o%!k%THEN PROCaa:ENDPROC ENDIF IFFNo(A%,f%)THEN z%=J%!e%+f%!Ta%: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%!`%+=1:PROCi(1):CASEK%OF WHEN1,2:PROCj(50) WHEN3,4:PROCj(75) WHEN5,6:PROCj(100) ENDCASE ENDIF ENDIF ENDIF IFf%!`%>=f%!Ua%*f%!Va%THEN C%!Na%+=1:PROCd(f%):PROCg(W%!ta%):PROCh(C%!Z%):PROCp(C%!Na%):PROCk:PROCa(FNb(1),o%!d%,o%!b%):PROCba:PROCy:PROCA:IFC%!Na%>=5THENa%!tb%=7 IFC%!Na%>=10THENa%!tb%=10 ENDIF mb%=TRUE:nb%=TRUE:FORK%=1TOf%!Va%:IFc%(f%!rb%,K%)<>0THENmb%=FALSE IFc%(f%!qb%,K%)<>0THENnb%=FALSE NEXTK%:ob%=TRUE:FORS%=1TOf%!Ua%:IFc%(S%,f%!Wa%)<>0THENob%=FALSE NEXTS%:IFnb%THENf%!qb%+=1 IFmb%THEN f%!e%-=(J%!e%+f%!Ta%):f%!rb%-=1 ENDIF IFob%THENf%!Wa%+=1 f%!d%+=f%!R%:PROCq:ENDPROC DEFPROCX:LOCALi%,j%,G%,tb%,ub%:tb%=52:ub%=56:FORi%=1TOa%!tb%:IFNOTa%(i%)!B%THEN PROCca(i%) ELSE:PROCda(i%):IFa%(i%)!b%<=W%!ta%+(W%!k%+5)THEN a%(i%)!B%=FALSE:PROCd(a%(i%)) ENDIF IFFNo(a%(i%),o%)ANDa%(i%)!B%THEN PROCea(i%) ENDIF FORj%=1TOa%!ub%:IFFNo(a%(i%),b%(j%))THEN PROCB(j%,FALSE):PROCd(a%(i%)):a%(i%)!B%=FALSE ENDIF NEXTj%:IFFNo(A%,a%(i%))THEN PROCfa(i%) ENDIF IFa%(i%)!`%THEN PROCga(i%) ENDIF ENDIF NEXTi%:ENDPROC DEFPROC_:LOCALPa%,Qa%,Ra%,G%,a$:Pa%=28:Qa%=32:Ra%=36:SYSFNd(6)TOG%:IFG%-a%!Ra%>=50THEN a%!Qa%=FNq(a%!Qa%):a%!Ra%=G% ENDIF a$=FNa(49)+" "+FNa(61):IFa%!Qa%=0ORa%!Pa%=0THEN a$=STRING$(LEN(a$)," ") ENDIF PROCo(a$):ENDPROC DEFPROCZ:LOCALSa%,vb%,wb%,G%,a$:Sa%=16:vb%=20:wb%=24:IFa%!Sa%>=0THEN SYSFNd(6)TOG%:a$=FNa(66)+" "+FNa(72):IFG%-a%!wb%>=50THEN a%!wb%=G%:a%!vb%=FNq(a%!vb%):IFa%!vb%=1THENa%!Sa%+=1 ENDIF IFa%!vb%=0THEN a$=STRING$(LEN(a$)," ") ENDIF IFa%!Sa%>5THEN a$=STRING$(LEN(a$)," "):a%!Sa%=-1 ENDIF PROCo(a$) ENDIF ENDPROC DEFPROCY:LOCALi%,G%,`a%,sb%,v%:`a%=56:sb%=fa%:v%=FNe(16):FORi%=1TOa%!`a%:IFFNo(A%,b%(i%))THEN PROCd(A%):A%!B%=FALSE:PROCB(i%,TRUE) ENDIF IFb%(i%)!`%THEN SYSFNd(6)TOG%:IFG%-b%(i%)!sb%>=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%)!`%=FALSE ENDIF ENDIF NEXTi%:PROCb(v%):ENDPROC DEFPROCH(xb%):LOCALi%,n$,U%:U%=64:a%!U%=RND(128)+127:FORi%=1TO10:IFi%MOD2=0THENn$=FNa(71)ELSEn$=FNa(70) a$(i%)=FNl(n$,a%!U%):d%(i%)=(11-i%)*1000:e%(i%)=0:NEXTi%:IFxb%THENPROCC ENDPROC DEFPROCI:LOCALi%,w%,yb%,zb%,Ab%,V%,I%,g$:w%=OPENIN(h$+"HiTable"):INPUT#w%,g$:IFg$<>"xBATSH"THENCLOSE#w%:ERROR255,FNa(115) INPUT#w%,I%,zb%,yb%:zb%=zb%EORI%:yb%=yb%EORI%:FORi%=1TO10:INPUT#w%,a$(i%),d%(i%),e%(i%):NEXTi%:CLOSE#w%:FORi%=1TO10:V%+=LEN(a$(i%)):NEXTi%:Ab%=V%/10:IFzb%<>V%ORyb%<>Ab%THENERROR255:FNa(113) a%!64=I%:ENDPROC DEFPROCC:LOCALi%,w%,V%,Ab%,U%,Bb%,w$:U%=64:Bb%=RND(128)+127:FORi%=1TO10:w$=FNl(a$(i%),a%!U%):a$(i%)=FNl(w$,Bb%):NEXTi%:a%!U%=Bb%:FORi%=1TO10:V%+=LEN(a$(i%)):NEXTi%:Ab%=V%/10:V%=V%EORa%!U%:Ab%=Ab%EORa%!U%:w%=OPENOUT(h$+"HiTable"):PRINT#w%,"xBATSH",a%!U%,V%,Ab%:FORi%=1TO10 PRINT#w%,a$(i%),d%(i%),e%(i%):NEXTi%:CLOSE#w%:ENDPROC DEFPROC`(C%):LOCALN%,M%,Cb%,g%,i%,Db%,L%,x%,y%,a$:LOCALJa%,q%,U%:M%=FNe(16):N%=FNe(16):Ja%=44:q%=80:U%=64: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%!Ma%>=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%!Ma%:e%(Db%)=C%!Na%:CLS:PROCg(W%!sa%):PROCg(W%!ta%):PROCa(FNb(100),M%!d%,M%!b%):PROCa(FNb(101),N%!d%,N%!b%):a$=FNa(54)+" "+STR$(C%!Ma%) a$+=" "+FNa(55)+" "+STR$(Db%)+FNE(Db%):L%=LEN(a$)*h%!qa%:x%=FNm(L%,h%!e%):y%=N%!b%-170:PROCc(x%,y%,a$,0,a%!q%):PROCb(M%):PROCb(N%):X%!e%=165:X%!k%=40:PROCm(X%,h%):PROCn(X%):x%=X%!d%+20:y%=X%!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,a%!q%):IFa$<>""THENPROCc(x%,y%,a$,0,a%!q%) UNTILCb%:IFa$=""ORa$=" "THENa$=FNa(56) a$(Db%)=FNl(a$,a%!U%):IFa%!Ja%THENPROCC ENDPROC DEFFNF(Eb%):=Eb%>=32ANDEb%<=126 DEFPROCN(Fb%,Gb%,l%,r%):LOCALx%,q%,a$:q%=80:a$=FNa(57)+" "+FNa(59):a$+=FNp(STR$(Fb%),10," ",TRUE):PROCc(0,h%!k%-h%!ra%,a$,0,a%!q%):a$=FNa(58)+" "+FNa(57):a$+=" "+FNa(59)+FNp(STR$(Gb%),10," ",TRUE):x%=h%!e%-LEN(a$)*h%!qa% PROCc(x%,h%!k%-h%!ra%,a$,0,a%!q%):PROCh(l%):PROCp(r%):PROCk:ENDPROC DEFPROCh(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$+=FNp(STR$(O%),3,"0",TRUE):x%=h%!e%-LEN(a$)*h%!qa%:PROCc(x%,0,a$,0,a%!q%):ENDPROC DEFPROCo(a$):LOCALx%,y%,L%,q%:q%=80:L%=LEN(a$)*h%!qa%:x%=FNm(L%,h%!e%):y%=h%!k%-h%!ra%:PROCc(x%,y%,a$,0,a%!q%):ENDPROC DEFPROCj(Hb%):LOCALZa%,Sa%,q%,x%,a$:Za%=12:Sa%=16:q%=80:C%!Ma%+=Hb%:a$=FNa(57)+" "+FNa(59):a$+=FNp(STR$(C%!Ma%),10," ",TRUE):PROCc(0,h%!k%-h%!ra%,a$,0,a%!q%):IFC%!Ma%-a%!Za%>=5000THEN C%!Z%+=1:PROCh(C%!Z%):a%!Za%=C%!Ma%:a%!Sa%=0 ENDIF IFC%!Ma%>d%(1)THEN a$=FNa(58)+" "+FNa(57)+" ":a$+=FNa(59):a$+=FNp(STR$(C%!Ma%),10," ",TRUE):x%=h%!e%-LEN(a$)*h%!qa%:PROCc(x%,h%!k%-h%!ra%,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 DEFPROCO:LOCALQ%,qb%,rb%,Wa%:Q%=ea%:qb%=ia%:rb%=ja%:Wa%=ka%:PROCA:PROCq:ENDPROC DEFPROCA:LOCALK%,S%,s%:f%!d%=50:f%!b%=550:f%!Q%=0:f%!`%=0:f%!T%=3:f%!R%=f%!T%:f%!qb%=1:f%!rb%=f%!Ua%:f%!Wa%=1:s%=(f%!Ua%*J%!e%)+((f%!Ua%-1)*f%!Ta%):f%!e%=s%:f%!k%=f%!Va%*J%!k%:FORS%=1TOf%!Ua%:FORK%=1TOf%!Va% c%(S%,K%)=((K%+1)/2)+(f%!Q%*10):NEXTK%:NEXTS%:ENDPROC DEFPROCq:LOCALK%,S%,x%,y%,v%:v%=FNe(16):FORS%=f%!qb%TOf%!rb%:x%=f%!d%+((S%-1)*(J%!e%+f%!Ta%)):FORK%=f%!Wa%TOf%!Va%: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:PROCha(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 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 DEFPROCaa:LOCAL_%,Kb%,G%,Lb%,Mb%,T%,i%,o$:T%=1:Nb%=24:_%=FNe(28):Kb%=FNe(28):PROCd(f%):PROCd(o%):IFA%!B%THEN PROCd(A%):A%!B%=FALSE ENDIF IFm%!B%THEN PROCd(m%):m%!B%=FALSE ENDIF PROCia:PROCja:o%!d%=FNh(o%,h%):_%!d%=0-J%!e%:_%!b%=o%!b%:_%!R%=T%:Kb%!d%=h%!e%:Kb%!b%=o%!b%:Kb%!R%=0-T%:C%!Z%=0:PROCg(W%!ta%):PROCh(C%!Z%):PROCp(C%!Na%):PROCa(FNb(1),o%!d%,o%!b%):Q%=0:Mb%=FALSE:REPEAT:_%!d%+=_%!R%:_%!Nb%=_%!d%+J%!e%:Kb%!d%+=Kb%!R% SYSFNd(6)TOG%:IFG%-Lb%>=50THENMb%=FNq(Mb%):Lb%=G% IFMb%THENo$=FNb(21)ELSEo$=FNb(20) PROCa(o$,_%!d%,_%!b%):PROCa(o$,Kb%!d%,Kb%!b%):PROCe(2):WAIT:UNTIL_%!Nb%>=o%!d%:FORi%=1TO10:PROCa(FNb(20),_%!d%,_%!b%):PROCa(FNb(20),Kb%!d%,Kb%!b%):PROCe(20):PROCa(FNb(21),_%!d%,_%!b%):PROCa(FNb(21),Kb%!d%,Kb%!b%):PROCe(20):WAIT:NEXTi%:PROCi(2):FORi%=1TO3 PROCa(FNb(2)+STR$(i%),o%!d%,o%!b%):PROCe(20):WAIT:NEXTi%:PROCe(20):PROCd(o%):PROCb(_%):PROCb(Kb%):ENDPROC DEFPROCL:LOCALi%,kb%,Lb%:kb%=ga%:Lb%=ha%:FORi%=1TO10:a%(i%)=FNg(48,0):a%(i%)!e%=FNc(5,1):a%(i%)!k%=FNc(20,2):SYSFNd(6)TOa%(i%)!kb%:SYSFNd(6)TOa%(i%)!Lb%:a%(i%)!B%=FALSE:NEXTi%:ENDPROC DEFPROCca(p%):LOCALOb%,Pb%,Qb%,Rb%,x%,y%:LOCALQ%,Sb%:Q%=ea%:Sb%=fa%:Ob%=RND(10):Qb%=C%!Na%+5:IFQb%>100THEN Qb%=100:IFC%!Na%MOD10=0THENf%!Xa%+=1 ENDIF IFFNn(Qb%)ANDFNn(f%!Xa%)THEN IFc%(Ob%,f%!Wa%)>0THEN x%=f%!d%+(Ob%-1)*(J%!e%+f%!Ta%):y%=f%!b%+((f%!Wa%-1)*J%!k%)-J%!k%:Pb%=(J%!e%/2)-(a%(p%)!e%/2):a%(p%)!d%=x%+Pb%:a%(p%)!b%=y%:a%(p%)!B%=TRUE:a%(p%)!`%=FALSE:a%(p%)!Sb%=1:a%(p%)!Q%=0:Rb%=4:IFFNn(25)THENa%(p%)!Sb%=2:Rb%=Rb%/2 a%(p%)!T%=Rb%:a%(p%)!R%=a%(p%)!T%:PROCi(3) ENDIF ENDIF ENDPROC DEFPROCda(p%):LOCALG%,Q%,Lb%,Sb%,d$,r$:Q%=ea%:Sb%=fa%:Lb%=ha%:SYSFNd(6)TOG%:IFG%-a%(p%)!Lb%>=40THEN a%(p%)!Lb%=G%:a%(p%)!Q%+=1 ENDIF :IFa%(p%)!Sb%=1ANDa%(p%)!Q%>1THEN a%(p%)!Q%=0 ENDIF IFa%(p%)!Sb%=2ANDa%(p%)!Q%>3THEN a%(p%)!Q%=0 ENDIF r$=STR$(a%(p%)!Q%):IFa%(p%)!Sb%=2ANDa%(p%)!Q%=3THEN r$="1" ENDIF d$=FNb(30)+STR$(a%(p%)!Sb%)+r$:IFNOTa%(p%)!`%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 DEFPROCea(p%):LOCALi%:PROCi(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%!Z%-=1:PROCh(C%!Z%):PROCd(a%(p%)):a%(p%)!B%=FALSE:PROCa(FNb(1),o%!d%,o%!b%):ENDPROC DEFPROCfa(p%):LOCALSb%,kb%:Sb%=fa%:kb%=ga%:IFa%(p%)!Sb%=1THEN IFNOTa%(p%)!`%THEN a%(p%)!`%=TRUE:PROCj(5):d$=FNb(30)+"3":PROCa(d$,a%(p%)!d%,a%(p%)!b%):SYSFNd(6)TOa%(p%)!kb% ENDIF ENDIF PROCd(A%):A%!B%=FALSE:ENDPROC DEFPROCga(p%):LOCALkb%,G%:kb%=ga%:SYSFNd(6)TOG%:IFG%-a%(p%)!kb%>=40THEN PROCd(a%(p%)):a%(p%)!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 DEFPROCM:LOCALi%,x%,Ub%,Vb%,O%:O%=a%!56:Vb%=ea%: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%=o%!b%+100:b%(i%)!B%=TRUE:b%(i%)!Vb%=0:NEXTi%:ENDPROC DEFPROCba:LOCALi%,Vb%,O%:O%=a%!56:Vb%=ea%: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(p%):LOCALWb%,Xb%,Yb%,L%,Vb%,q%,a$:Vb%=ea%:q%=84:Yb%=10-p%!Vb%:a$=STR$(Yb%):L%=LEN(a$):Wb%=p%!d%+FNm(L%,p%!e%):Xb%=p%!b%+(p%!k%/2)-(h%!ra%/2):Xb%+=7:IFL%=1THENWb%-=7ELSEWb%-=15 PROCd(p%):PROCa(FNb(16),p%!d%,p%!b%):PROCc(Wb%,Xb%,a$,0,a%!q%):ENDPROC DEFPROCB(p%,Zb%):LOCALy%,Vb%:Vb%=ea%:sb%=fa%:b%(p%)!Vb%+=1:IFb%(p%)!Vb%>=10THEN PROCd(b%(p%)):b%(p%)!B%=FALSE ELSE:PROCd(b%(p%)):y%=b%(p%)!b%:IFZb%THENb%(p%)!b%+=5ELSEb%(p%)!b%-=5 PROCr(b%(p%)):b%(p%)!`%=TRUE:b%(p%)!b%=y%:SYSFNd(6)TOb%(p%)!sb% 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$):LOCALD%,_b%,`b%,ac%,bc%,cc%,Ib%,i%,f$:D%=FNG(e$):ac%=FNg(D%,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,D%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,D%-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(D%+256):SYSxa%,256+10,cc%,e$ ENDIF SYSxa%,256+17,cc%:=cc% DEFFNB(D%):LOCALcc%:cc%=FNg(D%,0):cc%!0=D%: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%!qa%: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(H%):GCOL0,0TINT0:RECTANGLEFILLH%!d%,H%!b%,H%!e%,H%!k%:ENDPROC DEFFNm(ic%,h%):=(h%/2)-(ic%/2) DEFPROCu(a$,jc%):LOCALL%,x%,y%,q%:q%=80:L%=LEN(a$)*h%!qa%:x%=FNm(L%,h%!e%):y%=(h%!k%/2)-(h%!ra%/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%/W%!e%:FORi%=1TOmc%+1:PROCa(FNb(108),(i%-1)*W%!e%,b%):NEXTi%:ENDPROC DEFPROCn(H%):LOCALx%,y%,nc%,oc%,pc%,qc%,i%:nc%=FNc(3,1):oc%=FNc(3,2):pc%=1:qc%=3:FORi%=1TOH%!e%:x%=H%!d%+((i%-1)*pc%):PROCa(FNb(113),x%,H%!b%):PROCa(FNb(113),x%,H%!b%+(H%!k%-(2*qc%))):NEXTi%:x%=H%!d%+(H%!e%-nc%):FORi%=1TOH%!k%-1 PROCa(FNb(114),H%!d%,H%!b%+((i%-1)*pc%)):PROCa(FNb(114),x%,H%!b%+((i%-1)*pc%)):NEXTi%:PROCa(FNb(111),H%!d%,H%!b%):PROCa(FNb(109),H%!d%,(H%!b%+H%!k%)-oc%):PROCa(FNb(112),H%!d%+(H%!e%-nc%),H%!b%):x%=(H%!d%+H%!e%)-nc%:y%=(H%!b%+H%!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%,zb%,yb%,V%,Ab%,g$:V%=0:w%=OPENIN(e$):INPUT#w%,g$:IFg$<>f$THENCLOSE#w%:ERROR255,"Bad Magic!" INPUT#w%,I%,zb%,yb%,rc%:zb%=zb%EORI%:yb%=yb%EORI%:rc%=rc%EORI%:FORi%=1TOrc%:INPUT#w%,k%(i%),h$(i%):NEXTi%:CLOSE#w%:FORi%=1TOrc%:V%+=LEN(h$(i%)):NEXTi%:Ab%=V%/rc%:IFV%<>zb%ORAb%<>yb%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% DEFPROCi(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%!na%=v%!0:h%!oa%=v%!4:h%!e%=(v%!8)+1<h%!pa%THENPROCt CASEzc%OF WHEN1:Ac%=D%<>h%!na% WHEN4:Ac%=D%>>h%!oa% OTHERWISE:ERROR255,FNa(103)+" "+STR$(zc%) ENDCASE =Ac% DEFFNo(H%,Cc%):LOCALDc%,Ec%,Fc%,Gc%:Fc%=FALSE:Gc%=FALSE:IFH%!B%ANDCc%!B%THEN Dc%=Cc%!d%+Cc%!e%:Ec%=Cc%!b%+Cc%!k%:IFH%!d%>=Cc%!d%ANDH%!d%=Cc%!b%ANDH%!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% DEFPROCF:LOCALw%,ab%,fb%,Hc%,db%,cb%:ab%=0:fb%=48:cb%=92:w%=OPENIN(h$+"Configs"):INPUT#w%,Hc%,db%:CLOSE#w%:IFHc%>=0ANDHc%<=2THENa%!ab%=Hc% IFdb%>=0ANDdb%<=128THENa%!fb%=db% a%!cb%=FALSE:ENDPROC DEFPROCK:LOCALw%,ab%,fb%,cb%:ab%=0:fb%=48:cb%=92:IFa%!cb%THEN w%=OPENOUT(h$+"Configs"):PRINT#w%,a%!ab%,a%!fb%:CLOSE#w% ENDIF ENDPROC 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(E%,uc%,zc%):LOCALa$:IFzc%=0THENa$=FNa(200)ELSEa$=FNa(209) a$+=" &":PRINTa$;~FNx(E%);:PRINT" "+FNa(201)+" &";~E%;:IFzc%=0THEN a$=" "+FNa(202)+" "+FNa(uc%) ELSE:a$="." ENDIF PRINTa$:ENDPROC DEFPROCG:LOCALw%,V%,Ab%,zb%,yb%,i%,da%,f$:LOCALU%,D%:U%=60:D%=72:w%=OPENIN(b$+"Creds"):INPUT#w%,f$:IFf$<>"DERC"THEN CLOSE#w%:ERROR255,FNa(101):END ENDIF INPUT#w%,a%!U%,da%,zb%,yb%:a%!D%=da%EORa%!U%:zb%=zb%EORa%!U%:yb%=yb%EORa%!U%:DIMe$(a%!D%),f%(a%!D%):FORi%=1TOa%!D%:INPUT#w%,f%(i%),e$(i%):NEXTi%:CLOSE#w%:V%=0:FORi%=1TOa%!D%:V%+=LEN(e$(i%)):NEXTi%:Ab%=V%/a%!D%:IFAb%<>yb%ORV%<>zb%THENERROR255,FNa(113) ENDPROC DEFFNn(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 DEFFNq(n%):=n%EOR1 DEFFNE(n%):LOCALc$,u%:u%=VAL(RIGHT$(STR$(n%),1)):c$=FNa(65):IFu%>=1ANDu%<=3THENc$=FNa(u%+61) =c$ DEFFNp(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$):LOCALD%:SYSFNd(3),17,k$TO,,,,D%:=D% 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%):LOCALE%,D%:D%=(Tc%+15)AND-4:E%=FNH(D%):IFE%ELSEERROR254,FNf(110) E%!0=&DEADDEAD:E%!4=Tc%:!(E%-8+(E%!-4))=&DEADDEAD:=E%+8 DEFFNg(Tc%,Hb%):LOCALE%:E%=FNe(Tc%):PROCla(E%,Hb%):=E% DEFPROCb(RETURNE%):CASEFNI(E%)OF WHEN1:ERROR254,FNf(111) WHEN2:ERROR254,FNf(112) WHEN3:ERROR254,FNf(113) ENDCASE E%-=8:Qc%-=E%!-4:SYSFNf(212),3,Pc%,E%:E%=0:ENDPROC DEFFNx(E%):LOCALv%:v%=E%-4:=v%!0 DEFPROCla(E%,Hb%):LOCALpb%,D%:D%=FNx(E%):FORpb%=0TOD%-4STEP4:E%!pb%=Hb%:NEXTpb%:ENDPROC DEFFNi(E%):LOCALUc%,pb%,D%:D%=FNx(E%):Uc%=FNe(D%):FORpb%=0TOD%-4STEP4:Uc%!pb%=E%!pb%:NEXTpb%:=Uc% DEFFNI(E%):LOCALGb%,Vc%:Gb%=FALSE:Vc%=FALSE:E%-=8:IFE%!0<>&DEADDEADTHENVc%=TRUE IF!(E%-8+(E%!-4))<>&DEADDEADTHENGb%=TRUE IFVc%ANDGb%THEN=3 IFGb%THEN=2 IFVc%THEN=1 =0 DEFPROCka(D%):IFPc%THENERROR254,FNf(114) D%=(D%+Sc%-1)ANDNOT(Sc%-1):Pc%=HIMEM:SYSFNf(210),Rc%+D%,-1TORc%:D%=Rc%+32768-Pc%:IFD%<1THEN Pc%=0:ERROR254,FNf(115) ELSE:SYSFNf(212),0,Pc%,,D% 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%):LOCALE%,Oc%:SYSFNf(213),2,Pc%,,Tc%TO,,E%;Oc%:IFOc%AND1THEN PROCma((Tc%+Sc%)ANDNOT(Sc%-1)):SYSFNf(213),2,Pc%,,Tc%TO,,E%;Oc%:IFOc%AND1THEN=0 ENDIF Qc%+=E%!-4:=E%