REM Acorn Invaders REM Packed by Make v1.41 15/05/08 On 12 Jun 2010 aa%=FALSE:ONERRORPROCH:END MODE28:OFF:a$="Acorn Invaders. (c)2007-2010 DynaByte Software":PRINTa$:PRINTSTRING$(LEN(a$),"-"):PRINT:o$=".Resources.":d$=".":h$=d$+"Data.":p$=d$+"Screens.":i$=o$+"Graphics.":d$=o$+"Data.":k$=o$+"Sound." ba%=FALSE:PRINT"Checking files...":IFNOTFNi(i$+"Gfx0","Sprites")THENba%=TRUE IFNOTFNi(i$+"Gfx1","Charset")THENba%=TRUE IFNOTFNi(i$+"Gfx2","Numerics")THENba%=TRUE IFNOTFNi(k$+"Intro","Music")THENba%=TRUE IFNOTFNi(k$+"Teckno","Music")THENba%=TRUE IFNOTFNi(d$+"Creds","Credits")THENba%=TRUE IFNOTFNi(d$+"Msg","Messages")THENba%=TRUE IFNOTFNi(d$+"ImgLUT","Lookups")THENba%=TRUE IFNOTFNi(d$+"SWIs","Lookups")THENba%=TRUE IFNOTFNi(d$+"AshLUT","Lookups")THENba%=TRUE IFba%THENERROR255,"File Missing!!" PRINT:PRINT"Loading LibASH Resources.":ca%=FNt(d$+"AshLUT","ALUT"):DIMg%(ca%),f$(ca%):w%=FNu(d$+"AshLUT","ALUT",g%(),f$()):PROCI(w%):a%=FNf(112,0):o%=FNf(28,0):PRINT"Loading Messages...";:da%=FNt(d$+"Msg","MSGS"):DIMh%(da%),g$(da%) w%=FNu(d$+"Msg","MSGS",h%(),g$()):a%!68=w%:PRINTFNa(14):PRINT:PRINTFNa(12):PRINTFNa(8)+" "+FNa(2):PROCf(a%,206,0):PROCf(o%,210,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%!52=5:a%!56=5:a%!92=FALSE:a%!100=FALSE:a%!104=FALSE:a%!108=1:o%!0=1:o%!4=0:o%!8=-1:o%!12=-1:o%!16=-1:o%!20=128:o%!24=2:DIMa$(10),d%(10):DIMe%(10):PRINTFNa(8)+" "+FNa(22):d%=0:b%=4:e%=8:k%=12 R%=16:U%=20:D%=24:ea%=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:sa%=32:ta%=16:ua%=20:PRINTFNa(9)+" "+FNa(3):va%=FNt(d$+"ImgLUT","ILUT"):DIMi%(va%),c$(va%) w%=FNu(d$+"ImgLUT","ILUT",i%(),c$()):PRINTFNa(26):PROCt(va%,w%,c$()):PRINTFNa(14):PRINT:PRINTFNa(9)+" "+FNa(13):wa%=FNt(d$+"SWIs","SLUT"):DIMj%(wa%),d$(wa%):w%=FNu(d$+"SWIs","SLUT",j%(),d$()):PRINTFNa(26):PROCt(wa%,w%,d$()):PRINTFNa(14):PRINT PRINTFNa(9)+" "+FNa(24)+" ";:IFFNs(h$+"Configs")=1THEN PROCJ:PRINTFNa(18) ELSE:PRINTFNa(25):a%!92=TRUE ENDIF PRINT:PRINTFNa(8)+" "+FNa(1)+" ";:xa%=0:SYSFNc(30)TOxa%:PRINTFNa(21)+" "+STR$(xa%/100):o%!8=FNz(k$+"Intro"):o%!12=FNz(k$+"Teckno"):PRINTFNa(14):PRINT:PRINT:PRINTFNa(17)+" "+FNa(16):SYSFNc(1),,FNc(2)TOya%:PRINTFNa(9)+" "+FNa(4):a%!76=FNx(i$+"Gfx0"):PROCf(a%!76,203,0):PRINTFNa(14):PRINT PRINTFNa(9)+" "+FNa(5):a%!80=FNx(i$+"Gfx1"):PROCf(a%!80,204,0):PRINTFNa(14):PRINT:PRINTFNa(9)+" "+FNa(23):a%!84=FNx(i$+"Gfx2"):PROCf(a%!84,205,0):PRINTFNa(14):PRINT:a%!88=a%!76:PRINT:PRINTFNa(9)+" "+FNa(6);:PROCK:PRINTFNa(14):PRINT:PRINT:PRINTFNa(7) b$=h$+"HiTable":IFFNs(b$)<>1THEN IFNOTFNA(0,h$)THEN a%!44=FALSE:PRINTFNa(19)+" "+FNa(10)+" "+FNa(20) ELSE:PRINTFNa(19)+" "+FNa(11)+" "+FNa(20) ENDIF PROCL(a%!44) ELSE:IFNOTFNA(1,b$)THEN a%!44=FALSE:PRINTFNa(18)+" "+FNa(10)+" "+FNa(20) ELSE:PRINTFNa(18)+" "+FNa(11)+" "+FNa(20) ENDIF PROCM ENDIF PRINT:PRINTFNa(12):PROCe(150):m%=FNe(36):V%=FNe(24):Y%=FNe(16):CLS:PROCu:m%!ra%=FNd(8,1):m%!sa%=FNd(8,2)+7:V%!e%=FNd(6,1):V%!k%=FNd(6,2):V%!ta%=m%!k%-50:V%!ua%=30:o%!16=o%!8:IFo%!0=1THENPROCN(0) WHILENOTFNH:CLS:PROCO:ENDWHILE:CLS:Y%!e%=220:Y%!k%=40:PROCn(Y%,m%):Y%!b%-=3:PROCo(Y%):PROCv(FNa(31),10):IFa%!44THENPROCP PROCQ(4):SYSFNc(32),o%!8:SYSFNc(32),o%!12:o%!8=-1:o%!12=-1:o%!16=-1:SYSFNc(8),"FX 21,0":PROCb(Y%):PROCb(V%):PROCb(m%):FORi%=76TO84STEP4:PROCb(a%!i%):NEXTi%:PROCb(a%):PROCb(o%):PROCw:END DEFFNH:LOCALi%,O%,P%,G%,N%,p%,za%,Aa%,Ba%:LOCALq%:LOCAL`%,Ca%,Da%,Ea%,Fa%,Ga%,Ha%,Ia%:LOCALJa%,Ka%:LOCALx%,y%,L%,La%,v%,Ma%,s$,a$:La%=44:v%=80:Ma%=100:O%=FNf(16,0):P%=FNf(16,0):G%=FNf(16,0):p%=FNf(16,0):za%=FNf(16,0):`%=FNf(16,0):q%=FNf(16,0) O%!e%=FNd(100,1):O%!k%=FNd(40,2):O%!d%=FNj(O%,m%):O%!b%=800:P%!e%=FNd(150,1):P%!k%=FNd(40,2):P%!d%=FNj(P%,m%):P%!b%=O%!b%-P%!k%:G%!e%=720:G%!k%=500:G%!d%=FNj(G%,m%):G%!b%=200:p%!e%=FNd(40,1):p%!k%=FNd(20,2) p%!d%=(G%!d%+G%!e%/2)-150:p%!b%=(G%!b%+G%!k%)-125:q%!e%=FNd(30,1):q%!k%=FNd(15,2):za%!e%=FNd(20,1):za%!k%=FNd(20,2):za%!d%=(G%!d%+G%!e%/2)-150:za%!d%+=FNj(za%,p%):Aa%=FNh(za%):Ba%=FNh(za%) :Ba%!b%=p%!b%-40-Ba%!k%:Aa%!b%=Ba%!b%-40-Aa%!k%:za%!b%=Aa%!b%-40-za%!k%:`%!e%=FNd(20,1):`%!k%=FNd(20,2):`%!d%=(G%!d%+G%!e%/2)-120:Ca%=FNh(`%):Da%=FNh(`%):Ea%=FNh(`%):Ea%!d%=G%!d%:Na%=FNh(Ea%):Ga%=FNh(Ea%) Fa%=FNh(`%):Ja%=FNh(Ea%):Fa%!d%=G%!d%:Fa%!d%+=(G%!e%/2)+10:Ha%=FNh(Fa%):Ia%=FNh(Fa%):Ka%=FNh(Fa%)::`%!b%=(G%!b%+G%!k%)-90:Ca%!b%=`%!b%-60:Da%!b%=Ca%!b%-60:Ga%!b%=Da%!b%-90:Na%!b%=Ga%!b%-60:Ea%!b%=Na%!b%-60:Fa%!b%=Da%!b%-90 Ha%!b%=Fa%!b%-60:Ia%!b%=Ha%!b%-60:Ja%!b%=Ea%!b%-60:Ka%!b%=Ia%!b%-60:CLS:PROCg(V%!ta%):PROCg(V%!ua%):PROCk:FORi%=0-O%!e%TOO%!d%STEP5:WAIT:PROCa(FNb(100),i%,O%!b%):PROCe(1):NEXTi%:FORi%=m%!e%TOP%!d%STEP-5:WAIT:PROCa(FNb(101),i%,P%!b%):PROCe(1):NEXTi% a$=FNa(32):N%=LEN(a$)*m%!ra%:y%=170:PROCc(FNm(N%,m%!e%),y%,a$,11,a%!v%):a$=FNa(33):N%=LEN(a$)*m%!ra%:y%-=m%!sa%:PROCc(FNm(N%,m%!e%),y%,a$,11,a%!v%):WHILENOTINKEY(-99)ANDNOTINKEY(-17)ANDNOTINKEY(-82):IFa%!Ma%THEN a%!Ma%=FALSE:L%=FNB:IFL%=1THEN=TRUE IFL%=2THEN=FALSE PROCd(G%) ENDIF y%=G%!b%+G%!k%:FORi%=1TOa%!72:a$=FNl(e$(i%),a%!60):x%=FNk(a$):CASESGN(f%(i%))OF WHEN-1:y%-=(ABS(f%(i%))*m%!sa%) WHEN1:y%-=f%(i%) OTHERWISE:ERROR255,FNa(115)+" "+STR$(f%(i%)) ENDCASE PROCc(x%,y%,a$,0,a%!v%):NEXTi%:L%=FNv:IFL%=1THEN=TRUE IFL%=2THEN=FALSE PROCd(G%):a$=FNa(57)+" "+FNa(34):x%=FNk(a$):y%=G%!b%+G%!k%-20:PROCc(x%,y%,a$,0,a%!v%):a$=FNa(35):y%-=m%!sa%:x%=FNk(a$):PROCc(x%,y%,a$,0,a%!v%):x%=p%!d%+p%!e%+10:PROCa(FNb(11),p%!d%,p%!b%):a$=FNa(36)+" "+FNa(40) PROCc(x%,p%!b%+10,a$,0,a%!v%):PROCa(FNb(24),Ba%!d%,Ba%!b%):a$=FNa(37)+" "+FNa(40):PROCc(x%,Ba%!b%+12,a$,0,a%!v%):PROCa(FNb(22),Aa%!d%,Aa%!b%):a$=FNa(38)+" "+FNa(40):PROCc(x%,Aa%!b%+12,a$,0,a%!v%):PROCa(FNb(20),za%!d%,za%!b%) a$=FNa(39)+" "+FNa(40):PROCc(x%,za%!b%+12,a$,0,a%!v%):N%=q%!e%/m%!ra%+2:s$=FNa(66):a$=s$+STRING$(N%," ")+FNa(67):x%=FNk(a$):y%=za%!b%-(3*m%!sa%):PROCc(x%,y%,a$,0,a%!v%):q%!d%=x%+7+(LEN(s$)*m%!ra%):q%!b%=y%:PROCa(FNb(1),q%!d%,q%!b%) L%=FNv:IFL%=1THEN=TRUE IFL%=2THEN=FALSE PROCd(G%):a$=FNa(41):x%=FNk(a$):y%=G%!b%+G%!k%-20:PROCc(x%,y%,a$,0,a%!v%):x%=`%!d%+`%!e%+10:PROCa(FNb(102),`%!d%,`%!b%):a$=FNa(42)+" "+FNa(43):PROCc(x%,`%!b%+12,a$,0,a%!v%):PROCa(FNb(103),Ca%!d%,Ca%!b%):a$=FNa(42)+" "+FNa(44) PROCc(x%,Ca%!b%+12,a$,0,a%!v%):PROCa(FNb(104),Da%!d%,Da%!b%):PROCc(x%,Da%!b%+12,FNa(45),0,a%!v%):x%=Ea%!d%+Ea%!e%+10:PROCa(FNb(105),Na%!d%,Na%!b%):a$=FNa(46)+" "+FNa(49):PROCc(x%,Na%!b%+12,a$,0,a%!v%):PROCa(FNb(117),Ga%!d%,Ga%!b%) PROCc(x%,Ga%!b%+12,FNa(76),0,a%!v%):PROCa(FNb(107),Ea%!d%,Ea%!b%):a$=FNa(48)+" "+FNa(49):PROCc(x%,Ea%!b%+12,a$,0,a%!v%):PROCa(FNb(118),Ja%!d%,Ja%!b%):a$=FNa(78)+" "+FNa(75):PROCc(x%,Ja%!b%+12,a$,0,a%!v%):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%!v%):PROCa(FNb(115),Ha%!d%,Ha%!b%):a$=FNa(47)+" "+FNa(77)+" ":a$+=FNa(74):PROCc(x%,Ha%!b%+12,a$,0,a%!v%):PROCa(FNb(116),Ia%!d%,Ia%!b%):a$=FNa(47)+" "+FNa(77)+" ":a$+=FNa(75) PROCc(x%,Ia%!b%+12,a$,0,a%!v%):PROCa(FNb(119),Ka%!d%,Ka%!b%):a$=FNa(78)+" "+FNa(74):PROCc(x%,Ka%!b%+12,a$,0,a%!v%):L%=FNv:IFL%=1THEN=TRUE IFL%=2THEN=FALSE PROCd(G%):L%=FNB:IFL%=1THEN=TRUE IFL%=2THEN=FALSE PROCd(G%):ENDWHILE:ERROR255,FNa(102):=FALSE DEFFNB:LOCALL%,x%,y%,i%,v%,a$:v%=80:a$=FNa(50):IFa%!La%THENa$=FNa(51) x%=FNk(a$):y%=G%!b%+G%!k%-20:PROCc(x%,y%,a$,0,a%!v%):a$=FNa(58)+" "+FNa(52):x%=FNk(a$):y%-=m%!sa%:PROCc(x%,y%,a$,0,a%!v%):y%=(G%!b%+G%!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%!v%):y%-=2*m%!sa%: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$+=FNC(STR$(d%(i%)),10):a$+=" ... "+FNC(STR$(e%(i%)),3):x%=FNk(a$):PROCc(x%,y%-(i%*(m%!sa%+5)),a$,0,a%!v%):NEXTi%:=FNv DEFFNv:LOCALt%,L%:t%=TIME+750:L%=FALSE:REPEAT:IFINKEY(-82)THENPROCx IFINKEY(-102)THENPROCy IFINKEY(-59)THENPROCl(4) IFINKEY(-60)THENPROCl(-4) IFINKEY(-103)THENPROCm(0) IFINKEY(-104)THENPROCm(1) UNTILTIME>=t%ORINKEY(-17)ORINKEY(-99):IFINKEY(-17)THENL%=1 IFINKEY(-99)THENL%=2 IFL%THEN PROCb(O%):PROCb(P%):PROCb(G%):PROCb(p%):PROCb(za%):PROCb(Aa%):PROCb(Ba%):PROCb(`%):PROCb(Ca%):PROCb(Da%):PROCb(Ea%):PROCb(Fa%):PROCb(Na%):PROCb(Ga%):PROCb(Ha%):PROCb(Ia%):PROCb(q%):PROCb(Ja%):PROCb(Ka%) ENDIF =L% DEFFNk(a$):LOCALN%:N%=LEN(a$)*m%!ra%:=G%!d%+FNm(N%,G%!e%) DEFPROCO:LOCALq%,C%,p%,h%,E%:LOCALK%:LOCALc%(),a%():LOCALb%(),Oa%,Pa%:LOCALQa%,Ra%,Sa%,Ta%:LOCALUa%,Va%,Wa%:LOCALXa%:LOCALYa%:LOCALZa%,_a%,`a%,ab%,bb%:LOCALN%,a$,x%,y%,i%,j%:q%=FNe(32):C%=FNe(28):p%=FNe(48):h%=FNe(68):K%=FNe(16):Pa%=FNe(16):E%=FNf(16,0) Qa%=0:Ra%=4:Sa%=8:Ta%=12:Xa%=16:cb%=12:Ua%=28:Oa%=56:Za%=ga%:_a%=ha%:`a%=ia%:ab%=la%:bb%=ma%:DIMc%(10,6),a%(10),b%(a%!Oa%):q%!e%=FNd(30,1):q%!k%=FNd(15,2):q%!d%=FNj(q%,m%):q%!b%=50:q%!U%=6:q%!R%=q%!U% K%!e%=FNd(20,1):K%!k%=FNd(20,2):p%!e%=FNd(40,1):p%!k%=FNd(20,2):p%!b%=V%!ta%-(10+p%!k%):p%!U%=5:p%!D%=FALSE:p%!ha%=1:C%!e%=FNd(5,1):C%!k%=FNd(20,2):C%!D%=FALSE:C%!U%=10:E%!Sa%=1:E%!Qa%=3:E%!Ta%=FALSE a%!Xa%=-1:a%!cb%=0:h%!Za%=FNd(20,1):h%!_a%=10:h%!`a%=6:h%!D%=TRUE:h%!bb%=4:SYSFNc(6)TOh%!na%:PROCR:PROCS:PROCg(V%!ta%):PROCg(V%!ua%):PROCT(0,d%(1),E%!Qa%,E%!Sa%):PROCU:PROCz:PROCa(FNb(1),q%!d%,q%!b%):SYSFNc(8),"VSkip "+STR$(a%!Ya%) WHILEE%!Qa%>0:IFa%!Ua%=0THEN IFINKEY(-74)THENPROCV(q%!d%,q%!b%) IFINKEY(-98)THENPROCW IFINKEY(-67)THENPROCX IFINKEY(-17)THENPROCY ENDIF IFINKEY(-102)THENPROCy IFINKEY(-82)THENPROCx IFINKEY(-56)THENPROCZ IFINKEY(-59)THENPROCl(4) IFINKEY(-60)THENPROCl(-4) IFINKEY(-103)THENPROCm(0) IFINKEY(-104)THENPROCm(1) IFa%!Ua%=0THEN PROC_:PROC`:PROCaa:PROCba:PROCca:PROCda ELSE:PROCea ENDIF WAIT:ENDWHILE:Y%!e%=240:Y%!k%=40:PROCn(Y%,m%):Y%!b%-=3:PROCd(Y%):PROCo(Y%):a$=FNa(49)+" "+FNa(53):PROCv(a$,11):PROCe(750):IFNOTE%!Ta%THEN IFE%!Ra%>=d%(10)THEN PROCfa(E%) ENDIF ENDIF PROCb(q%):PROCb(h%):PROCb(p%):PROCb(C%):PROCb(E%):PROCb(K%):PROCb(Pa%):FORi%=1TO10:PROCb(a%(i%)):NEXTi%:FORi%=1TOa%!Oa%:PROCb(b%(i%)):NEXTi%:SYSFNc(8),"VSkip 1":ENDPROC DEFPROCW:IFq%!d%<=0THEN q%!d%=0 ELSE:q%!R%=0-q%!U%:q%!d%+=q%!R%:PROCa(FNb(1),q%!d%,q%!b%) ENDIF ENDPROC DEFPROCX:IFq%!d%>=m%!e%-q%!e%THEN q%!d%=m%!e%-q%!e% ELSE:q%!R%=0+q%!U%:q%!d%+=q%!R%:PROCa(FNb(1),q%!d%,q%!b%) ENDIF ENDPROC DEFPROCV(x%,y%):IFNOTC%!D%THEN C%!D%=TRUE:C%!d%=x%+(q%!e%/2):C%!b%=y%+q%!k%:PROCj(4) ENDIF ENDPROC DEFPROCx:LOCALdb%,eb%:db%=40:eb%=44:IFa%!eb%THEN REPEAT:UNTILNOTINKEY(-82):a%!db%=FNy(a%!db%):IFa%!db%=-1THENERROR255,FNa(109) SYSFNc(8),"ScreenSave "+p$+"Dump"+STR$(a%!db%) ENDIF ENDPROC DEFPROCY:LOCALi%,fb%:fb%=52:FORi%=1TOa%!fb%:a%(i%)!D%=FALSE:NEXTi%:E%!Qa%=0:E%!Ta%=TRUE:ENDPROC DEFPROCy:LOCALJ%,_%,gb%:J%=0:_%=16:gb%=92:REPEAT:UNTILNOTINKEY(-102):o%!J%+=1:IFo%!J%>2THENo%!J%=0 IFo%!J%=1THEN SYSFNc(33),o%!_% ELSE:SYSFNc(34),o%!_% ENDIF a%!gb%=TRUE:PROCk:ENDPROC DEFPROCl(hb%):LOCALJ%,_%,ib%,Z%,H%,jb%,kb%,gb%:J%=0:ib%=4:Z%=20:_%=16:gb%=92:IFo%!J%=1THEN SYSFNc(6)TOH%:IFH%-o%!ib%>=10THEN SYSFNc(36),o%!_%,-1TO,jb%:kb%=jb%+hb%:IFkb%>=0ANDkb%<=128THEN SYSFNc(36),o%!_%,kb%:o%!Z%=kb%:o%!ib%=H%:a%!gb%=TRUE ENDIF ENDIF ENDIF ENDPROC DEFPROCm(lb%):LOCALYa%,gb%:Ya%=108:gb%=92:IFlb%=0THEN REPEAT:UNTILNOTINKEY(-103):IFa%!Ya%<64THENa%!Ya%+=1 ELSE:REPEAT:UNTILNOTINKEY(-104):IFa%!Ya%>1THENa%!Ya%-=1 ENDIF SYSFNc(8),"VSkip "+STR$(a%!Ya%):a%!gb%=TRUE:ENDPROC DEFPROCZ:LOCALUa%,Va%,a$:Ua%=28:Va%=32:REPEATUNTILNOTINKEY(-56):a$=FNa(49)+" "+FNa(61):a%!Ua%=FNq(a%!Ua%):a%!Va%=a%!Ua%:IFa%!Ua%=0THEN a$=STRING$(LEN(a$)," "):PROCp(a$) ENDIF ENDPROC DEFPROC_:IFC%!D%THEN IFC%!b%>=V%!ta%-C%!k%THEN C%!D%=FALSE:C%!b%-=2:PROCd(C%) ELSE:PROCa(FNb(5),C%!d%,C%!b%) ENDIF C%!b%+=C%!U% ENDIF ENDPROC DEFPROC`:LOCALmb%,nb%,ob%,H%,pb%,Sa%,qb%,e$:LOCALcb%,Xa%,Ra%,Qa%:mb%=fa%:nb%=ga%:ob%=ha%:Sa%=8:Xa%=16:Qa%=0:Ra%=4:qb%=104:IFNOTp%!D%THEN IFFNn(4)ANDFNn(5)THEN p%!D%=TRUE:p%!ea%=FALSE:p%!nb%=0:IFFNn(50)THEN p%!R%=0-p%!U%:p%!d%=m%!e% ELSE:p%!R%=0+p%!U%:p%!d%=0-p%!e% ENDIF ENDIF ELSE:IFp%!d%<=0-p%!e%ANDSGN(p%!R%)=-1THEN p%!mb%=FALSE:p%!D%=FALSE:ENDPROC ENDIF IFp%!d%>m%!e%ANDSGN(p%!R%)=1THEN p%!mb%=FALSE:p%!D%=FALSE:ENDPROC ENDIF IFNOTp%!ea%THEN IFFNo(C%,p%)THEN PROCd(C%):PROCa(FNb(12),p%!d%,p%!b%):SYSFNc(6)TOp%!mb%:p%!ea%=TRUE:C%!D%=FALSE:IFa%!qb%THEN PROCh(250) ELSE:IFE%!Sa%>=5ANDFNn(10)THEN E%!Qa%+=1:PROCi(E%!Qa%):a%!Xa%=0 ELSE:PROCh(500) ENDIF ENDIF ENDIF ELSE:IFFNo(C%,p%)THENPROCd(C%):C%!D%=FALSE ENDIF IFNOTp%!ea%THEN SYSFNc(6)TOH%:IFH%-p%!ob%>=40THEN p%!ob%=H%:p%!nb%=FNq(p%!nb%) ENDIF e$=FNb(10)+STR$(p%!nb%):PROCa(e$,p%!d%,p%!b%):p%!d%+=p%!R% ELSE:SYSFNc(6)TOH%:pb%=H%-p%!mb%:IFpb%>=300THEN p%!D%=FALSE:p%!nb%=1:PROCd(p%) ELSE:IFpb%>=250THEN PROCa(FNb(15),p%!d%,p%!b%) ELSE:IFpb%>=200THEN PROCa(FNb(14),p%!d%,p%!b%) ELSE:IFpb%>=100THEN PROCa(FNb(13),p%!d%,p%!b%) ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF ENDPROC DEFPROCaa:LOCALrb%,z%,M%,S%,sb%,tb%,ub%,vb%,wb%:LOCALQ%,xb%,yb%,H%,zb%,Ab%,T%:LOCALab%,qb%:Q%=fa%:xb%=ja%:yb%=ka%:zb%=na%:ab%=la%:Ab%=52:T%=56:qb%=104:SYSFNc(6)TOH%:IFH%-h%!zb%>=50THENh%!zb%=H%:h%!Q%=FNq(h%!Q%) rb%=h%!d%+h%!e%:vb%=0-((h%!xb%-1)*(K%!e%+h%!Za%)):IFrb%>=m%!e%THENh%!R%=0-h%!U%:PROCA IFh%!d%<=vb%THENh%!R%=0+h%!U%:PROCA IFh%!b%+((h%!ab%-1)*K%!k%)<=Pa%!b%+Pa%!k%THEN PROCB:a%!qb%=TRUE ENDIF vb%=h%!b%+((h%!ab%-1)*K%!k%):IFvb%<=q%!b%+q%!k%THENPROCga:ENDPROC IFFNo(C%,h%)THEN z%=K%!e%+h%!Za%:IF(C%!d%-h%!d%)MODz%<=K%!e%THEN M%=((C%!b%-h%!b%)DIVK%!k%)+1:S%=((C%!d%-h%!d%)DIVz%)+1:IFSGN(c%(S%,M%))=1THEN c%(S%,M%)=-5:PROCd(C%):C%!D%=FALSE:h%!ea%+=1:PROCj(1):wb%=1:IFa%!qb%THENwb%=2 CASEM%OF WHEN1,2:PROCh(INT(50/wb%)) WHEN3,4:PROCh(INT(75/wb%)) WHEN5,6:PROCh(INT(100/wb%)) ENDCASE ENDIF ENDIF ENDIF IFh%!ea%>=h%!_a%*h%!`a%THEN E%!Sa%+=1:PROCd(h%):PROCg(V%!ua%):PROCi(E%!Qa%):PROCq(E%!Sa%):PROCk:PROCa(FNb(1),q%!d%,q%!b%):PROCha:PROCz:PROCC:IFE%!Sa%>=5THENa%!Ab%=7 IFE%!Sa%>=10THENa%!Ab%=10 ENDIF sb%=TRUE:tb%=TRUE:FORM%=1TOh%!`a%:IFc%(h%!yb%,M%)<>0THENsb%=FALSE IFc%(h%!xb%,M%)<>0THENtb%=FALSE NEXTM%:ub%=TRUE:FORS%=1TOh%!_a%:IFc%(S%,h%!ab%)<>0THENub%=FALSE NEXTS%:IFtb%THENh%!xb%+=1 IFsb%THENh%!e%-=(K%!e%+h%!Za%):h%!yb%-=1 IFub%THENh%!ab%+=1 h%!d%+=h%!R%:PROCr:ENDPROC DEFPROCba:LOCALi%,j%,H%,Ab%,T%:Ab%=52:T%=56:FORi%=1TOa%!Ab%:IFNOTa%(i%)!D%THEN PROCia(i%) ELSE:PROCja(i%):IFa%(i%)!b%<=V%!ua%+(V%!k%+5)THEN a%(i%)!D%=FALSE:PROCd(a%(i%)) ENDIF IFFNo(a%(i%),q%)ANDa%(i%)!D%THEN PROCka(i%) ENDIF FORj%=1TOa%!T%:IFFNo(a%(i%),b%(j%))THEN PROCD(j%,FALSE):PROCd(a%(i%)):a%(i%)!D%=FALSE ENDIF NEXTj%:IFFNo(C%,a%(i%))THEN PROCla(i%) ENDIF IFa%(i%)!ea%THEN PROCma(i%) ENDIF ENDIF NEXTi%:ENDPROC DEFPROCea:LOCALUa%,Va%,Wa%,H%,a$:Ua%=28:Va%=32:Wa%=36:SYSFNc(6)TOH%:IFH%-a%!Wa%>=50THEN a%!Va%=FNq(a%!Va%):a%!Wa%=H% ENDIF a$=FNa(49)+" "+FNa(61):IFa%!Va%=0ORa%!Ua%=0THEN a$=STRING$(LEN(a$)," ") ENDIF PROCp(a$):ENDPROC DEFPROCda:LOCALXa%,Bb%,Cb%,H%,a$:Xa%=16:Bb%=20:Cb%=24:IFa%!Xa%>=0THEN SYSFNc(6)TOH%:a$=FNa(66)+" "+FNa(72):IFH%-a%!Cb%>=50THEN a%!Cb%=H%:a%!Bb%=FNq(a%!Bb%):IFa%!Bb%=1THENa%!Xa%+=1 ENDIF IFa%!Bb%=0THEN a$=STRING$(LEN(a$)," ") ENDIF IFa%!Xa%>5THEN a$=STRING$(LEN(a$)," "):a%!Xa%=-1 ENDIF PROCp(a$) ENDIF ENDPROC DEFPROCca:LOCALi%,H%,T%,zb%,f%:T%=56:zb%=ga%:f%=FNe(16):FORi%=1TOa%!T%:IFFNo(C%,b%(i%))THEN PROCd(C%):C%!D%=FALSE:PROCD(i%,TRUE) ENDIF IFb%(i%)!ea%THEN SYSFNc(6)TOH%:IFH%-b%(i%)!zb%>=5THEN f%!d%=b%(i%)!d%:f%!e%=b%(i%)!e%:f%!b%=b%(i%)!b%-5:f%!k%=b%(i%)!k%+10:PROCd(f%):PROCs(b%(i%)):b%(i%)!ea%=FALSE ENDIF ENDIF NEXTi%:PROCb(f%):ENDPROC DEFPROCL(Db%):LOCALi%,n$,w%:w%=64:a%!w%=RND(128)+127:FORi%=1TO10:IFi%MOD2=0THENn$=FNa(71)ELSEn$=FNa(70) a$(i%)=FNl(n$,a%!w%):d%(i%)=(11-i%)*1000:e%(i%)=0:NEXTi%:IFDb%THENPROCE ENDPROC DEFPROCM:LOCALi%,A%,Eb%,Fb%,Gb%,W%,w%,f$:A%=OPENIN(h$+"HiTable"):INPUT#A%,f$:IFf$<>"xBATSH"THENCLOSE#A%:ERROR255,FNa(115) INPUT#A%,w%,Fb%,Eb%:Fb%=Fb%EORw%:Eb%=Eb%EORw%:FORi%=1TO10:INPUT#A%,a$(i%),d%(i%),e%(i%):NEXTi%:CLOSE#A%:FORi%=1TO10:W%+=LEN(a$(i%)):NEXTi%:Gb%=W%/10:IFFb%<>W%OREb%<>Gb%THENERROR255:FNa(113) a%!64=w%:ENDPROC DEFPROCE:LOCALi%,A%,W%,Gb%,w%,Hb%,r$:w%=64:Hb%=RND(128)+127:FORi%=1TO10:r$=FNl(a$(i%),a%!w%):a$(i%)=FNl(r$,Hb%):NEXTi%:a%!w%=Hb%:FORi%=1TO10:W%+=LEN(a$(i%)):NEXTi%:Gb%=W%/10:W%=W%EORa%!w%:Gb%=Gb%EORa%!w%:A%=OPENOUT(h$+"HiTable"):PRINT#A%,"xBATSH",a%!w%,W%,Gb%:FORi%=1TO10 PRINT#A%,a$(i%),d%(i%),e%(i%):NEXTi%:CLOSE#A%:ENDPROC DEFPROCfa(E%):LOCALP%,O%,Ib%,g%,i%,Jb%,N%,x%,y%,a$:LOCALLa%,v%,w%,Ma%:O%=FNe(16):P%=FNe(16):La%=44:v%=80:w%=64:Ma%=100:O%!e%=FNd(100,1):O%!k%=FNd(40,2):O%!d%=FNj(O%,m%):O%!b%=800:P%!e%=FNd(150,1):P%!k%=FNd(40,2):P%!d%=FNj(P%,m%) P%!b%=O%!b%-P%!k%:Jb%=0:FORi%=10TO1STEP-1:IFE%!Ra%>=d%(i%)THENJb%=i% NEXTi%:FORi%=9TOJb%STEP-1:a$(i%+1)=a$(i%):d%(i%+1)=d%(i%):e%(i%+1)=e%(i%):NEXTi%:d%(Jb%)=E%!Ra%:e%(Jb%)=E%!Sa%:PROCF(4):CLS:PROCg(V%!ta%):PROCg(V%!ua%):PROCa(FNb(100),O%!d%,O%!b%):PROCa(FNb(101),P%!d%,P%!b%):a$=FNa(54)+" "+STR$(E%!Ra%) a$+=" "+FNa(55)+" "+STR$(Jb%)+FNI(Jb%):N%=LEN(a$)*m%!ra%:x%=FNm(N%,m%!e%):y%=P%!b%-170:PROCc(x%,y%,a$,0,a%!v%):PROCb(O%):PROCb(P%):Y%!e%=165:Y%!k%=40:PROCn(Y%,m%):PROCo(Y%):x%=Y%!d%+20:y%=Y%!b%+12:a$="":i%=1:Ib%=FALSE SYSFNc(8),"FX 21,0":REPEAT:g%=GET:CASEg%OF WHEN13:Ib%=TRUE WHEN8:i%-=1:a$=LEFT$(a$,i%-1) OTHERWISE:IFi%<9ANDFNJ(g%)THENi%+=1:a$+=CHR$(g%) ENDCASE IFi%<1THENi%=1 PROCc(x%,y%,STRING$(8," "),0,a%!v%):IFa$<>""THENPROCc(x%,y%,a$,0,a%!v%) UNTILIb%:IFa$=""ORa$=" "THENa$=FNa(56) a$(Jb%)=FNl(a$,a%!w%):a%!Ma%=TRUE:IFa%!La%THENPROCE PROCF(4):ENDPROC DEFFNJ(Kb%):=Kb%>=32ANDKb%<=126 DEFPROCT(Lb%,Mb%,l%,r%):LOCALx%,v%,a$:v%=80:a$=FNa(57)+" "+FNa(59):a$+=FNp(STR$(Lb%),10," ",TRUE):PROCc(0,m%!k%-m%!sa%,a$,0,a%!v%):a$=FNa(58)+" "+FNa(57):a$+=" "+FNa(59)+FNp(STR$(Mb%),10," ",TRUE):x%=m%!e%-LEN(a$)*m%!ra% PROCc(x%,m%!k%-m%!sa%,a$,0,a%!v%):PROCi(l%):PROCq(r%):PROCk:ENDPROC DEFPROCi(db%):LOCALv%,a$:v%=80:PROCa(FNb(1),0,0):a$=" = "+STR$(db%):PROCc(q%!e%,0,a$,0,a%!v%):ENDPROC DEFPROCq(db%):LOCALx%,v%,a$:v%=80:a$=FNa(60)+" "+FNa(59):a$+=FNp(STR$(db%),3,"0",TRUE):x%=m%!e%-LEN(a$)*m%!ra%:PROCc(x%,0,a$,0,a%!v%):ENDPROC DEFPROCp(a$):LOCALx%,y%,N%,v%:v%=80:N%=LEN(a$)*m%!ra%:x%=FNm(N%,m%!e%):y%=m%!k%-m%!sa%:PROCc(x%,y%,a$,0,a%!v%):ENDPROC DEFPROCh(Nb%):LOCALcb%,Xa%,v%,x%,a$:cb%=12:Xa%=16:v%=80:E%!Ra%+=Nb%:a$=FNa(57)+" "+FNa(59):a$+=FNp(STR$(E%!Ra%),10," ",TRUE):PROCc(0,m%!k%-m%!sa%,a$,0,a%!v%):IFE%!Ra%-a%!cb%>=5000THEN E%!Qa%+=1:PROCi(E%!Qa%):a%!cb%=E%!Ra%:a%!Xa%=0 ENDIF IFE%!Ra%>d%(1)THEN a$=FNa(58)+" "+FNa(57)+" ":a$+=FNa(59):a$+=FNp(STR$(E%!Ra%),10," ",TRUE):x%=m%!e%-LEN(a$)*m%!ra%:PROCc(x%,m%!k%-m%!sa%,a$,0,a%!v%) ENDIF ENDPROC DEFPROCk:LOCALJ%,f%,e$:f%=FNe(16):J%=0:f%!e%=FNd(20,1):f%!k%=FNd(10,2):f%!d%=FNj(f%,m%):f%!b%=0:IFo%!J%<0ORo%!J%>2THEN ERROR255,FNa(111)+" "+STR$(o%!J%) ENDIF e$=FNb(120+o%!J%):PROCa(e$,f%!d%,f%!b%):PROCb(f%):ENDPROC DEFPROCU:LOCALQ%,xb%,yb%,ab%:Q%=fa%:xb%=ja%:yb%=ka%:ab%=la%:PROCC:PROCr:ENDPROC DEFPROCC:LOCALM%,S%,qb%:qb%=104:h%!d%=50:h%!b%=550:h%!Q%=0:h%!ea%=0:h%!U%=3:h%!R%=h%!U%:h%!xb%=1:h%!yb%=h%!_a%:h%!ab%=1:h%!e%=(h%!_a%*K%!e%)+((h%!_a%-1)*h%!Za%):h%!k%=h%!`a%*K%!k%:FORS%=1TOh%!_a%:FORM%=1TOh%!`a% c%(S%,M%)=((M%+1)/2)+(h%!Q%*10):NEXTM%:NEXTS%:a%!qb%=FALSE:ENDPROC DEFPROCr:LOCALM%,S%,x%,y%,f%:f%=FNe(16):FORS%=h%!xb%TOh%!yb%:x%=h%!d%+((S%-1)*(K%!e%+h%!Za%)):FORM%=h%!ab%TOh%!`a%:y%=h%!b%+((M%-1)*K%!k%):IFc%(S%,M%)>0THEN c%(S%,M%)=((M%+1)/2)+(h%!Q%*10) ENDIF IFc%(S%,M%)<>0THEN CASESGN(c%(S%,M%))OF WHEN-1:PROCna(x%,y%,S%,M%) WHEN1:PROCa(FNb(27)+STR$(c%(S%,M%)),x%,y%) ENDCASE ELSE:f%!d%=x%:f%!b%=y%:f%!e%=K%!e%:f%!k%=K%!k%:PROCd(f%) ENDIF NEXTM%:NEXTS%:PROCb(f%):ENDPROC DEFPROCna(x%,y%,r%,c%):LOCALf%:c%(r%,c%)+=1:PROCa(FNb(26),x%,y%):IFc%(r%,c%)=0THEN f%=FNe(16):f%!d%=x%:f%!b%=y%:f%!e%=K%!e%:f%!k%=K%!k%:PROCd(f%):PROCb(f%) ENDIF ENDPROC DEFPROCA:LOCALf%,i%:f%=FNe(16):FORi%=1TO3:h%!b%-=K%!k%/3:PROCr:NEXTi%:f%!d%=h%!d%:f%!b%=h%!b%+h%!k%:f%!e%=h%!e%:f%!k%=K%!k%:PROCd(f%):PROCb(f%):ENDPROC DEFPROCga:LOCALOb%,Pb%,H%,Qb%,Rb%,U%,i%,l$:U%=1:Sb%=24:Ob%=FNe(28):Pb%=FNe(28):PROCd(h%):PROCd(q%):IFC%!D%THENPROCd(C%):C%!D%=FALSE IFp%!D%THENPROCd(p%):p%!D%=FALSE PROCoa:PROCB:q%!d%=FNj(q%,m%):Ob%!d%=0-K%!e%:Ob%!b%=q%!b%:Ob%!R%=U%:Pb%!d%=m%!e%:Pb%!b%=q%!b%:Pb%!R%=0-U%:E%!Qa%=0:PROCg(V%!ua%):PROCi(E%!Qa%):PROCq(E%!Sa%):PROCa(FNb(1),q%!d%,q%!b%):Q%=0:Rb%=FALSE:REPEAT:Ob%!d%+=Ob%!R%:Ob%!Sb%=Ob%!d%+K%!e% Pb%!d%+=Pb%!R%:SYSFNc(6)TOH%:IFH%-Qb%>=50THENRb%=FNq(Rb%):Qb%=H% IFRb%THENl$=FNb(21)ELSEl$=FNb(20) PROCa(l$,Ob%!d%,Ob%!b%):PROCa(l$,Pb%!d%,Pb%!b%):PROCe(2):WAIT:UNTILOb%!Sb%>=q%!d%:FORi%=1TO10:PROCa(FNb(20),Ob%!d%,Ob%!b%):PROCa(FNb(20),Pb%!d%,Pb%!b%):PROCe(20):PROCa(FNb(21),Ob%!d%,Ob%!b%):PROCa(FNb(21),Pb%!d%,Pb%!b%):PROCe(20):WAIT:NEXTi%:PROCj(2):FORi%=1TO3 PROCa(FNb(2)+STR$(i%),q%!d%,q%!b%):PROCe(20):WAIT:NEXTi%:PROCe(20):PROCd(q%):PROCb(Ob%):PROCb(Pb%):ENDPROC DEFPROCR:LOCALi%,pb%,Qb%:pb%=ha%:Qb%=ia%:FORi%=1TO10:a%(i%)=FNf(48,0):a%(i%)!e%=FNd(5,1):a%(i%)!k%=FNd(20,2):SYSFNc(6)TOa%(i%)!pb%:SYSFNc(6)TOa%(i%)!Qb%:a%(i%)!D%=FALSE:NEXTi%:ENDPROC DEFPROCia(s%):LOCALTb%,Ub%,Vb%,Wb%,x%,y%:LOCALQ%,Xb%:Q%=fa%:Xb%=ga%:Tb%=RND(10):Vb%=E%!Sa%+5:IFVb%>100THEN Vb%=100:IFE%!Sa%MOD10=0THENh%!bb%+=1 ENDIF IFFNn(Vb%)ANDFNn(h%!bb%)THEN IFc%(Tb%,h%!ab%)>0THEN x%=h%!d%+(Tb%-1)*(K%!e%+h%!Za%):y%=h%!b%+((h%!ab%-1)*K%!k%)-K%!k%:Ub%=(K%!e%/2)-(a%(s%)!e%/2):a%(s%)!d%=x%+Ub%:a%(s%)!b%=y%:a%(s%)!D%=TRUE:a%(s%)!ea%=FALSE:a%(s%)!Xb%=1:a%(s%)!Q%=0:Wb%=4:IFFNn(25)THENa%(s%)!Xb%=2:Wb%=Wb%/2 a%(s%)!U%=Wb%:a%(s%)!R%=a%(s%)!U%:PROCj(3) ENDIF ENDIF ENDPROC DEFPROCja(s%):LOCALH%,Q%,Qb%,Xb%,e$,q$:Q%=fa%:Xb%=ga%:Qb%=ia%:SYSFNc(6)TOH%:IFH%-a%(s%)!Qb%>=40THEN a%(s%)!Qb%=H%:a%(s%)!Q%+=1 ENDIF :IFa%(s%)!Xb%=1ANDa%(s%)!Q%>1THEN a%(s%)!Q%=0 ENDIF IFa%(s%)!Xb%=2ANDa%(s%)!Q%>3THEN a%(s%)!Q%=0 ENDIF q$=STR$(a%(s%)!Q%):IFa%(s%)!Xb%=2ANDa%(s%)!Q%=3THEN q$="1" ENDIF e$=FNb(30)+STR$(a%(s%)!Xb%)+q$:IFNOTa%(s%)!ea%THEN a%(s%)!b%-=a%(s%)!R%:PROCa(e$,a%(s%)!d%,a%(s%)!b%) ELSE:e$=FNb(30)+"3":PROCa(e$,a%(s%)!d%,a%(s%)!b%) ENDIF ENDPROC DEFPROCka(s%):LOCALi%:PROCj(2):FORi%=1TO3:PROCa(FNb(2)+STR$(i%),q%!d%,q%!b%):PROCe(20):WAIT:NEXTi%:PROCd(q%):IFC%!D%THEN PROCd(C%):C%!D%=FALSE ENDIF q%!d%=FNj(q%,m%):E%!Qa%-=1:PROCi(E%!Qa%):PROCd(a%(s%)):a%(s%)!D%=FALSE:PROCa(FNb(1),q%!d%,q%!b%):ENDPROC DEFPROCla(s%):LOCALXb%,pb%:Xb%=ga%:pb%=ha%:IFa%(s%)!Xb%=1THEN IFNOTa%(s%)!ea%THEN a%(s%)!ea%=TRUE:PROCh(5):e$=FNb(30)+"3":PROCa(e$,a%(s%)!d%,a%(s%)!b%):SYSFNc(6)TOa%(s%)!pb% ENDIF ENDIF PROCd(C%):C%!D%=FALSE:ENDPROC DEFPROCma(s%):LOCALpb%,H%:pb%=ha%:SYSFNc(6)TOH%:IFH%-a%(s%)!pb%>=40THEN PROCd(a%(s%)):a%(s%)!D%=FALSE ENDIF ENDPROC DEFPROCoa:LOCALi%,Ab%:Ab%=52:FORi%=1TOa%!Ab%:IFa%(i%)!D%THEN PROCd(a%(i%)):a%(i%)!D%=FALSE ENDIF NEXTi%:ENDPROC DEFPROCS:LOCALi%,x%,Yb%,Zb%,T%:Zb%=fa%:T%=56:Pa%!d%=0:Pa%!b%=0:Pa%!e%=FNd(30,1):Pa%!k%=FNd(15,2):Yb%=m%!e%/a%!T%:x%=Yb%-150:FORi%=1TOa%!T%:b%(i%)=FNf(48,0):b%(i%)!e%=Pa%!e%:b%(i%)!k%=Pa%!k%:b%(i%)!d%=x%+((i%-1)*Yb%) b%(i%)!b%=q%!b%+100:b%(i%)!D%=TRUE:b%(i%)!Zb%=0:NEXTi%:Pa%!d%=b%(1)!d%:Pa%!b%=b%(1)!b%:ENDPROC DEFPROCha:LOCALi%,Zb%,T%:Zb%=fa%:T%=56:FORi%=1TOa%!T%:b%(i%)!D%=TRUE:b%(i%)!Zb%=0:NEXTi%:ENDPROC DEFPROCz:LOCALi%,T%:T%=56:FORi%=1TOa%!T%:IFb%(i%)!D%THENPROCs(b%(i%)) NEXTi%:ENDPROC DEFPROCs(s%):LOCAL_b%,`b%,ac%,N%,Zb%,v%,a$:Zb%=fa%:v%=84:ac%=10-s%!Zb%:a$=STR$(ac%):N%=LEN(a$):_b%=s%!d%+FNm(N%,s%!e%):`b%=s%!b%+(s%!k%/2)-(m%!sa%/2):`b%+=7:IFN%=1THEN_b%-=7ELSE_b%-=15 PROCd(s%):PROCa(FNb(16),s%!d%,s%!b%):PROCc(_b%,`b%,a$,0,a%!v%):ENDPROC DEFPROCD(s%,lb%):LOCALy%,Zb%:Zb%=fa%:zb%=ga%:b%(s%)!Zb%+=1:IFb%(s%)!Zb%>=10THEN PROCd(b%(s%)):b%(s%)!D%=FALSE ELSE:PROCd(b%(s%)):y%=b%(s%)!b%:IFlb%THENb%(s%)!b%+=5ELSEb%(s%)!b%-=5 PROCs(b%(s%)):b%(s%)!ea%=TRUE:b%(s%)!b%=y%:SYSFNc(6)TOb%(s%)!zb% ENDIF ENDPROC DEFPROCB:LOCALi%,f%,T%:T%=56:f%=FNe(16):FORi%=1TOa%!T%:IFb%(i%)!D%THEN b%(i%)!D%=FALSE:f%!d%=b%(i%)!d%:f%!b%=b%(i%)!b%:f%!e%=Pa%!e%:f%!k%=Pa%!k%:PROCd(f%) ENDIF NEXTi%:PROCb(f%):ENDPROC DEFFNx(b$):LOCALB%,bc%,f%,X%:B%=FND(b$):f%=FNf(B%,0):PROCf(f%,208,0):SYSFNc(3),16,b$,f%,0:bc%=FNE(f%):IFbc%>0THEN X%=FNF(bc%+4):PROCG(f%,X%+4) ELSE:X%=FNF(B%+256):SYSya%,256+10,X%,b$ ENDIF SYSya%,256+17,X%:=X% DEFFNF(B%):LOCALX%:X%=FNf(B%,0):X%!0=B%:X%!4=0:X%!8=16:X%!12=16:=X% DEFPROCc(x%,y%,a$,cc%,dc%):LOCALi%,ec%,v%,fc%:v%=88:fc%=76:IFdc%<>a%!80ANDdc%<>a%!84THEN ERROR255,FNa(112) ENDIF a%!v%=dc%:ec%=m%!ra%:FORi%=1TOLEN(a$):PROCa(STR$(ASC(MID$(a$,i%,1))),x%+((i%-1)*ec%),y%):IFcc%>0THENPROCe(cc%) NEXTi%:a%!v%=a%!fc%:ENDPROC DEFPROCa(w$,x%,y%):LOCALgc%,v%:v%=88:SYSya%,256+24,a%!v%,w$TO,,gc%:SYSya%,512+34,a%!v%,gc%,x%,y%,0:ENDPROC DEFPROCd(F%):GCOL0,0TINT0:RECTANGLEFILLF%!d%,F%!b%,F%!e%,F%!k%:ENDPROC DEFFNm(hc%,m%):=(m%/2)-(hc%/2) DEFPROCv(a$,cc%):LOCALN%,x%,y%,v%:v%=80:N%=LEN(a$)*m%!ra%:x%=FNm(N%,m%!e%):y%=(m%!k%/2)-(m%!sa%/2):PROCc(x%,y%,a$,cc%,a%!v%):ENDPROC DEFFNj(F%,ic%):=(ic%!e%/2)-(F%!e%/2) DEFPROCn(F%,ic%):F%!d%=(ic%!e%/2)-(F%!e%/2):F%!b%=(ic%!k%/2)-(F%!k%/2):ENDPROC DEFPROCg(b%):LOCALi%,jc%:jc%=m%!e%/V%!e%:FORi%=1TOjc%+1:PROCa(FNb(108),(i%-1)*V%!e%,b%):NEXTi%:ENDPROC DEFPROCo(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%!d%+((i%-1)*mc%):PROCa(FNb(113),x%,F%!b%):PROCa(FNb(113),x%,F%!b%+(F%!k%-(2*nc%))):NEXTi%:x%=F%!d%+(F%!e%-kc%):FORi%=1TOF%!k%-1 PROCa(FNb(114),F%!d%,F%!b%+((i%-1)*mc%)):PROCa(FNb(114),x%,F%!b%+((i%-1)*mc%)):NEXTi%:PROCa(FNb(111),F%!d%,F%!b%):PROCa(FNb(109),F%!d%,(F%!b%+F%!k%)-lc%):PROCa(FNb(112),F%!d%+(F%!e%-kc%),F%!b%):x%=(F%!d%+F%!e%)-kc%:y%=(F%!b%+F%!k%)-lc% PROCa(FNb(110),x%,y%):ENDPROC DEFFNt(b$,g$):LOCALA%,oc%,pc%,w%,f$:A%=OPENIN(b$):INPUT#A%,f$:f$=FNG(f$):IFf$<>g$THENCLOSE#A%:ERROR255,"Bad Magic!" INPUT#A%,w%,pc%,pc%,oc%:CLOSE#A%:=oc%EORw% DEFFNu(b$,g$,RETURNk%(),RETURNh$()):LOCALA%,i%,oc%,w%,Fb%,Eb%,W%,Gb%,f$:W%=0:A%=OPENIN(b$):INPUT#A%,f$:f$=FNG(f$):IFf$<>g$THENCLOSE#A%:ERROR255,"Bad Magic!" INPUT#A%,w%,Fb%,Eb%,oc%:Fb%=Fb%EORw%:Eb%=Eb%EORw%:oc%=oc%EORw%:FORi%=1TOoc%:INPUT#A%,k%(i%),h$(i%):NEXTi%:CLOSE#A%:FORi%=1TOoc%:W%+=LEN(h$(i%)):NEXTi%:Gb%=W%/oc%:IFW%<>Fb%ORGb%<>Eb%THEN ERROR255,"File Inconsistant with header!" ENDIF =w% DEFFNG(a$):LOCALi%,c$:FORi%=LEN(a$)TO1STEP-1:c$+=MID$(a$,i%,1):NEXTi%:=c$ DEFPROCt(qc%,w%,RETURNb$()):LOCALi%:FORi%=1TOqc%:b$(i%)=FNl(b$(i%),w%):NEXTi%:ENDPROC DEFFNa(rc%):LOCALw%:w%=a%!68:=FNw(rc%,da%,h%(),g$(),w%,106) DEFFNb(rc%):=FNw(rc%,va%,i%(),c$(),-1,107) DEFFNc(rc%):=FNw(rc%,wa%,j%(),d$(),-1,108) DEFFNg(rc%):=FNw(rc%,ca%,g%(),f$(),sc%,109) DEFFNw(rc%,qc%,l%(),b$(),w%,tc%):LOCALi%,uc%:uc%=0:FORi%=1TOqc%:IFl%(i%)=rc%THENuc%=i%:i%=qc% NEXTi%:IFuc%=0THEN IFrc%>=106ANDrc%<=108THEN ERROR255,"Missing message!!!" ELSE:IFtc%=109THEN ERROR255,"Can't find LibASH resource : "+STR$(rc%) ELSE:ERROR255,FNa(tc%)+" "+STR$(rc%) ENDIF ENDIF ENDIF IFw%=-1THEN=b$(uc%) =FNl(b$(uc%),w%) DEFFNz(b$):LOCALB%,bc%,f%,X%,A%:B%=FND(b$):f%=FNf(B%,0):IFaa%THENPROCf(f%,208,0) SYSFNc(3),16,b$,f%,0:bc%=FNE(f%):IFbc%>0THEN X%=FNf(bc%,0):PROCG(f%,X%):SYSFNc(31),,0,X%,bc%TOA%:PROCf(X%,0,1):PROCb(X%) ELSE:SYSFNc(31),,0,f%,B%TOA%:PROCf(f%,0,1):PROCb(f%) ENDIF =A% DEFPROCF(cc%):LOCALi%,j%,J%,vc%,_%,wc%,Z%,xc%:J%=0:_%=8:wc%=12:vc%=16:Z%=20:xc%=24:IFo%!J%=1THEN IFo%!vc%=o%!_%THEN SYSFNc(36),o%!wc%,0:SYSFNc(33),o%!wc% ELSE:SYSFNc(36),o%!_%,0:SYSFNc(33),o%!_% ENDIF FORi%=0TOo%!Z%STEPo%!xc%:j%=o%!Z%-i%:IFo%!vc%=o%!_%THEN SYSFNc(36),o%!wc%,i%:SYSFNc(36),o%!_%,j% ELSE:SYSFNc(36),o%!_%,i%:SYSFNc(36),o%!wc%,j% ENDIF PROCe(cc%):NEXTi%:SYSFNc(35),o%!vc%:IFo%!vc%=o%!_%THEN o%!vc%=o%!wc% ELSE:o%!vc%=o%!_% ENDIF ENDIF ENDPROC DEFPROCN(cc%):LOCALi%,J%,vc%,Z%,xc%:J%=0:vc%=16:Z%=20:xc%=24:SYSFNc(36),o%!vc%,0:SYSFNc(33),o%!vc%:FORi%=0TOo%!Z%STEPo%!xc%:SYSFNc(36),o%!vc%,i%:IFcc%>0THENPROCe(cc%) NEXTi%:ENDPROC DEFPROCQ(cc%):LOCALi%,J%,vc%,Z%,xc%:J%=0:vc%=16:Z%=20:xc%=24:IFo%!J%=1THEN FORi%=o%!Z%TO0STEP0-o%!xc%:SYSFNc(36),o%!vc%,i%:IFcc%>0THENPROCe(cc%) NEXTi%:SYSFNc(34),o%!vc% ENDIF ENDPROC DEFPROCj(yc%):LOCALJ%,t$:J%=0:t$=FNa(110)+" "+STR$(yc%):IFo%!J%>0THEN IFyc%<1ANDyc%>4THENERROR255,t$ SYSFNc(8),"SPlay_fire0"+STR$(yc%)+"mhh" ENDIF ENDPROC DEFPROCu:LOCALf%:f%=FNe(20):f%!0=4:f%!4=5:f%!8=11:f%!12=12:f%!16=-1:SYSFNc(5),f%,f%:m%!oa%=f%!0:m%!pa%=f%!4:m%!e%=(f%!8)+1<m%!qa%THENPROCu CASEzc%OF WHEN1:Ac%=B%<>m%!oa% WHEN4:Ac%=B%>>m%!pa% OTHERWISE:ERROR255,FNa(103)+" "+STR$(zc%) ENDCASE =Ac% DEFFNo(F%,Cc%):LOCALDc%,Ec%,Fc%,Gc%:Fc%=FALSE:Gc%=FALSE:IFF%!D%ANDCc%!D%THEN Dc%=Cc%!d%+Cc%!e%:Ec%=Cc%!b%+Cc%!k%:IFF%!d%>=Cc%!d%ANDF%!d%=Cc%!b%ANDF%!b%-1THEN SYS"TimPlayer_SongStop",o%!i%:SYS"TimPlayer_SongUnload",o%!i% ENDIF NEXTi%:PROCw:ENDPROC DEFFNi(b$,u$):LOCALa$,s$,L%,uc%:a$=STRING$(10," "):RIGHT$(a$,3)=" : ":LEFT$(a$,LEN(u$))=u$:L%=FNs(b$):s$="Missing!!":uc%=FALSE:IFL%=1THENs$="OK.":uc%=TRUE a$+=s$:PRINTa$:=uc% DEFPROCJ:LOCALA%,J%,Z%,Nb%,hb%,gb%,Ya%,Hc%:J%=0:Z%=20:Ya%=108:gb%=92:A%=OPENIN(h$+"Configs"):INPUT#A%,Nb%,hb%,Hc%:CLOSE#A%:IFNb%>=0ANDNb%<=2THENo%!J%=Nb% IFhb%>=0ANDhb%<=128THENo%!Z%=hb% IFHc%>=1ANDHc%<=64THENa%!Ya%=Hc% a%!gb%=FALSE:ENDPROC DEFPROCP:LOCALA%,J%,Z%,gb%,Ya%:J%=0:Z%=20:Ya%=108:gb%=92:IFa%!gb%THEN A%=OPENOUT(h$+"Configs"):PRINT#A%,o%!J%,o%!Z%:PRINT#A%,a%!Ya%:CLOSE#A% ENDIF ENDPROC DEFFNE(Ic%):LOCALB%,Jc%,bc%,i%,g$:B%=FNr(Ic%):PROCf(Ic%,208,0):FORi%=0TO3:g$+=CHR$(Ic%?i%):NEXTi%:IFg$<>"SQSH"THEN=0 PRINTFNa(27)+"...":SYSFNc(7),1<<3,B%TOJc%,bc%:IFbc%=-1THENbc%=Ic%!4 =bc% DEFPROCG(Ic%,Kc%):LOCALB%,Lc%,Jc%,bc%:B%=FNr(Ic%):bc%=FNr(Kc%):SYSFNc(7),1<<3,B%TOJc%:Lc%=FNf(Jc%,0):PROCf(Lc%,207,0):SYSFNc(7),1<<2,Lc%,Ic%+20,B%-20,Kc%,bc%TOMc%:IFMc%<>0THENERROR255,FNa(114)+" "+STR$(Mc%) PROCf(Lc%,0,1):PROCf(Ic%,0,1):PROCb(Lc%):PROCb(Ic%):ENDPROC DEFFNy(oc%):LOCALj$:j$="Dump"+STR$(oc%):IFFNs(p$+j$)<>0THEN REPEAT:oc%+=1:j$="Dump"+STR$(oc%):UNTILFNs(p$+j$)=0ORLEN(j$)>10:IFLEN(j$)>10THENoc%=-1 ENDIF =oc% DEFPROCf(f%,rc%,zc%):LOCALa$:IFaa%THEN IFzc%=0THENa$=FNa(200)ELSEa$=FNa(209) a$+=" &":PRINTa$;~FNr(f%);:PRINT" "+FNa(201)+" &";~f%;:IFzc%=0THEN a$=" "+FNa(202)+" "+FNa(rc%) ELSE:a$="." ENDIF PRINTa$ ENDIF ENDPROC DEFPROCK:LOCALA%,W%,Gb%,Fb%,Eb%,i%,Nc%,g$:LOCALw%,B%:w%=60:B%=72:A%=OPENIN(d$+"Creds"):INPUT#A%,g$:IFg$<>"DERC"THEN CLOSE#A%:ERROR255,FNa(101):END ENDIF INPUT#A%,a%!w%,Nc%,Fb%,Eb%:a%!B%=Nc%EORa%!w%:Fb%=Fb%EORa%!w%:Eb%=Eb%EORa%!w%:DIMe$(a%!B%),f%(a%!B%):FORi%=1TOa%!B%:INPUT#A%,f%(i%),e$(i%):NEXTi%:CLOSE#A%:W%=0:FORi%=1TOa%!B%:W%+=LEN(e$(i%)):NEXTi%:Gb%=W%/a%!B%:IFGb%<>Eb%ORW%<>Fb%THENERROR255,FNa(113) ENDPROC DEFFNn(n%):=RND(100)<=n% DEFFNl(a$,w%):LOCALi%,c$:FORi%=1TOLEN(a$):c$+=CHR$(ASC(MID$(a$,i%,1))EORw%):NEXTi%:=c$ DEFPROCe(n%):LOCALt%:t%=TIME+n%:REPEAT:UNTILTIME>=t%:ENDPROC DEFFNq(n%):=n%EOR1 DEFFNI(n%):LOCALc$,u%:u%=VAL(RIGHT$(STR$(n%),1)):c$=FNa(65):IFu%>=1ANDu%<=3THENc$=FNa(u%+61) =c$ DEFFNp(a$,l%,v$,Oc%):LOCALPc%,c$:Pc%=l%-LEN(a$):IFPc%<=0THEN c$=LEFT$(a$,l%) ELSE:IFOc%THEN c$=STRING$(l%,v$):RIGHT$(c$,LEN(a$))=a$ ELSE:c$=a$+STRING$(Pc%,v$) ENDIF ENDIF =c$ DEFFNC(a$,l%):LOCALc$:c$=STRING$(l%," "):RIGHT$(c$,LEN(a$))=a$:=c$ DEFFNs(b$):LOCALuc%:SYS"XOS_File",17,b$TOuc%:=uc% DEFFND(b$):LOCALB%:SYSFNc(3),17,b$TO,,,,B%:=B% DEFFNA(zc%,b$):LOCALA%,Qc%,Rc%,Sc%:Sc%=FALSE:CASEzc%OF WHEN0:A%=OPENUP(b$+"chkfile") WHEN1:A%=OPENUP(b$) OTHERWISE:ERROR255,FNa(104)+" "+STR$(zc%) ENDCASE IFA%<>0THEN SYSFNc(4),254,A%TORc%;Qc%:IF(Qc%AND1)THENCLOSE#A%:ERROR255,FNa(105) IF((Rc%AND(1<<7))<>0)THENSc%=TRUE CLOSE#A% ENDIF =Sc% DEFPROCI(w%):LOCALMc%:Tc%=0:Uc%=0:sc%=w%:SYSFNg(210),-1,-1TOVc%:SYSFNg(211)TOWc%;Mc%:IFMc%AND1THENWc%=16384 PROCpa(Wc%):ENDPROC DEFPROCw:IFTc%THEN SYSFNg(210),Tc%-32768,-1TOVc%:Tc%=0:Uc%=0 ENDIF ENDPROC DEFFNe(Xc%):LOCALI%,B%:B%=(Xc%+15)AND-4:I%=FNK(B%):IFI%ELSEERROR254,FNg(110) I%!0=&DEADDEAD:I%!4=Xc%:!(I%-8+(I%!-4))=&DEADDEAD:=I%+8 DEFFNf(Xc%,Nb%):LOCALI%:I%=FNe(Xc%):PROCqa(I%,Nb%):=I% DEFPROCb(RETURNI%):CASEFNL(I%)OF WHEN1:ERROR254,FNg(111) WHEN2:ERROR254,FNg(112) WHEN3:ERROR254,FNg(113) ENDCASE I%-=8:Uc%-=I%!-4:SYSFNg(212),3,Tc%,I%:I%=0:ENDPROC DEFFNr(I%):LOCALf%:f%=I%-4:=f%!0 DEFPROCqa(I%,Nb%):LOCALvb%,B%:B%=FNr(I%):FORvb%=0TOB%-4STEP4:I%!vb%=Nb%:NEXTvb%:ENDPROC DEFFNh(I%):LOCALf%,vb%,B%:B%=FNr(I%):f%=FNe(B%):FORvb%=0TOB%-4STEP4:f%!vb%=I%!vb%:NEXTvb%:=f% DEFFNL(I%):LOCALMb%,Yc%:Mb%=FALSE:Yc%=FALSE:I%-=8:IFI%!0<>&DEADDEADTHENYc%=TRUE IF!(I%-8+(I%!-4))<>&DEADDEADTHENMb%=TRUE IFYc%ANDMb%THEN=3 IFMb%THEN=2 IFYc%THEN=1 =0 DEFPROCpa(B%):IFTc%THENERROR254,FNg(114) B%=(B%+Wc%-1)ANDNOT(Wc%-1):Tc%=HIMEM:SYSFNg(210),Vc%+B%,-1TOVc%:B%=Vc%+32768-Tc%:IFB%<1THEN Tc%=0:ERROR254,FNg(115) ELSE:SYSFNg(212),0,Tc%,,B% ENDIF Uc%=0:ENDPROC DEFPROCra(Xc%):LOCALZc%:Zc%=Vc%:SYSFNg(210),Vc%+Xc%,-1TOVc%:Xc%=Vc%-Zc%:IFXc%THENSYSFNg(212),5,Tc%,,Xc%TO,,,Xc% ENDPROC DEFFNK(Xc%):LOCALI%,Mc%:SYSFNg(213),2,Tc%,,Xc%TO,,I%;Mc%:IFMc%AND1THEN PROCra((Xc%+Wc%)ANDNOT(Wc%-1)):SYSFNg(213),2,Tc%,,Xc%TO,,I%;Mc%:IFMc%AND1THEN=0 ENDIF Uc%+=I%!-4:=I%