REM Acorn Invaders REM Packed by Make v1.41 15/05/08 On 25 Jun 2010 aa%=FALSE:ONERRORPROCJ:END MODE28:OFF:a$="Acorn Invaders. (c)2007-2010 DynaByte Software":PRINTa$:PRINTSTRING$(LEN(a$),"-"):PRINT:p$=".Resources.":d$=".":h$=d$+"Data.":q$=d$+"Screens.":i$=p$+"Graphics.":d$=p$+"Data.":l$=p$+"Sound." ba%=FALSE:PRINT"Checking files...":IFNOTFNh(i$+"Gfx0","Sprites")THENba%=TRUE IFNOTFNh(i$+"Gfx1","Charset")THENba%=TRUE IFNOTFNh(i$+"Gfx2","Numerics")THENba%=TRUE IFNOTFNh(l$+"Intro","Music")THENba%=TRUE IFNOTFNh(l$+"Teckno","Music")THENba%=TRUE IFNOTFNh(d$+"Creds","Credits")THENba%=TRUE IFNOTFNh(d$+"Msg","Messages")THENba%=TRUE IFNOTFNh(d$+"ImgLUT","Lookups")THENba%=TRUE IFNOTFNh(d$+"SWIs","Lookups")THENba%=TRUE IFNOTFNh(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$()):PROCK(w%):a%=FNe(112,0):m%=FNe(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):PROCg(a%,206,0):PROCg(m%,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:m%!0=1:m%!4=0:m%!8=-1:m%!12=-1:m%!16=-1:m%!20=128:m%!24=2:DIMa$(10),d%(10):DIMe%(10):PRINTFNa(8)+" "+FNa(22):d%=0:b%=4:h%=8:v%=12 Q%=16:V%=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):PROCu(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):PROCu(wa%,w%,d$()):PRINTFNa(14):PRINT PRINTFNa(9)+" "+FNa(24)+" ";:IFFNl(h$+"Configs",1)=1THEN PROCL:PRINTFNa(18) ELSE:PRINTFNa(25):a%!92=TRUE ENDIF PRINT:PRINTFNa(8)+" "+FNa(1)+" ";:xa%=0:SYSFNc(30)TOxa%:PRINTFNa(21)+" "+STR$(xa%/100):m%!8=FNz(l$+"Intro"):m%!12=FNz(l$+"Teckno"):PRINTFNa(14):PRINT:PRINT:PRINTFNa(17)+" "+FNa(16):SYSFNc(1),,FNc(2)TOya%:PRINTFNa(9)+" "+FNa(4):a%!76=FNx(i$+"Gfx0"):PROCg(a%!76,203,0):PRINTFNa(14):PRINT PRINTFNa(9)+" "+FNa(5):a%!80=FNx(i$+"Gfx1"):PROCg(a%!80,204,0):PRINTFNa(14):PRINT:PRINTFNa(9)+" "+FNa(23):a%!84=FNx(i$+"Gfx2"):PROCg(a%!84,205,0):PRINTFNa(14):PRINT:a%!88=a%!76:PRINT:PRINTFNa(9)+" "+FNa(6);:PROCM:PRINTFNa(14):PRINT:PRINT:PRINTFNa(7) b$=h$+"HiTable":IFFNl(b$,1)<>1THEN IFNOTFNA(0,h$)THEN a%!44=FALSE:PRINTFNa(19)+" "+FNa(10)+" "+FNa(20) ELSE:PRINTFNa(19)+" "+FNa(11)+" "+FNa(20) ENDIF PROCN(a%!44) ELSE:IFNOTFNA(1,b$)THEN a%!44=FALSE:PRINTFNa(18)+" "+FNa(10)+" "+FNa(20) ELSE:PRINTFNa(18)+" "+FNa(11)+" "+FNa(20) ENDIF PROCO ENDIF PRINT:PRINTFNa(12):PROCf(150):k%=FNd(36):Z%=FNd(24):_%=FNd(16):CLS:PROCv:k%!ra%=FNm(8,1):k%!sa%=FNm(8,2)+7:PROCe(FNb(108),Z%):Z%!ta%=k%!v%-50:Z%!ua%=30:m%!16=m%!8:IFm%!0=1THENPROCP(0) WHILENOTFNH:CLS:PROCQ:ENDWHILE:CLS:_%!h%=220:_%!v%=40:PROCo(_%,k%):_%!b%-=3:PROCp(_%):PROCw(FNa(31),10):IFa%!44THENPROCR PROCS(4):PROCx:SYSFNc(8),"FX 21,0":PROCb(_%):PROCb(Z%):PROCb(k%):FORi%=76TO84STEP4:PROCb(a%!i%):NEXTi%:PROCb(a%):PROCb(m%):PROCy:END DEFFNH:LOCALR%,S%,G%,N%,o%,za%,Aa%,Ba%,s%:LOCALCa%,Da%,Ea%,Fa%,Ga%,Ha%,Ia%,Ja%,Ka%,La%:LOCALMa%,p%,Na%:LOCALi%,x%,y%,L%,s$,a$:Ma%=44:p%=80:Na%=100:R%=FNe(16,0):S%=FNe(16,0):G%=FNe(16,0):o%=FNe(16,0):za%=FNe(16,0):Ca%=FNe(16,0):s%=FNe(16,0) PROCe(FNb(100),R%):R%!d%=FNi(R%,k%):R%!b%=800:PROCe(FNb(101),S%):S%!d%=FNi(S%,k%):S%!b%=R%!b%-S%!v%:G%!h%=720:G%!v%=500:G%!d%=FNi(G%,k%):G%!b%=200:PROCe(FNb(11),o%):o%!d%=(G%!d%+G%!h%/2)-150:o%!b%=(G%!b%+G%!v%)-125 PROCe(FNb(1),s%):PROCe(FNb(20),za%):za%!d%=(G%!d%+G%!h%/2)-150:za%!d%+=FNi(za%,o%):Aa%=FNg(za%):Ba%=FNg(za%)::Ba%!b%=o%!b%-40-Ba%!v%:Aa%!b%=Ba%!b%-40-Aa%!v%:za%!b%=Aa%!b%-40-za%!v%:PROCe(FNb(102),Ca%):Ca%!d%=(G%!d%+G%!h%/2)-120 Da%=FNg(Ca%):Ea%=FNg(Ca%):Fa%=FNg(Ca%):Fa%!d%=G%!d%:Oa%=FNg(Fa%):Ha%=FNg(Fa%):Ga%=FNg(Ca%):Ka%=FNg(Fa%):Ga%!d%=G%!d%:Ga%!d%+=(G%!h%/2)+10:Ia%=FNg(Ga%):Ja%=FNg(Ga%):La%=FNg(Ga%):Ca%!b%=(G%!b%+G%!v%)-90 Da%!b%=Ca%!b%-60:Ea%!b%=Da%!b%-60:Ha%!b%=Ea%!b%-90:Oa%!b%=Ha%!b%-60:Fa%!b%=Oa%!b%-60:Ga%!b%=Ea%!b%-90:Ia%!b%=Ga%!b%-60:Ja%!b%=Ia%!b%-60:Ka%!b%=Fa%!b%-60:La%!b%=Ja%!b%-60:CLS:PROCh(Z%!ta%):PROCh(Z%!ua%):PROCl:FORi%=0-R%!h%TOR%!d%STEP5 WAIT:PROCa(FNb(100),i%,R%!b%):PROCf(1):NEXTi%:FORi%=k%!h%TOS%!d%STEP-5:WAIT:PROCa(FNb(101),i%,S%!b%):PROCf(1):NEXTi%:a$=FNa(32):N%=LEN(a$)*k%!ra%:y%=170:PROCc(FNn(N%,k%!h%),y%,a$,11,a%!p%):a$=FNa(33):N%=LEN(a$)*k%!ra%:y%-=k%!sa% PROCc(FNn(N%,k%!h%),y%,a$,11,a%!p%):WHILENOTINKEY(-99)ANDNOTINKEY(-17)ANDNOTINKEY(-82):IFa%!Na%THEN a%!Na%=FALSE:L%=FNB:IFL%=1THEN=TRUE IFL%=2THEN=FALSE PROCd(G%) ENDIF y%=G%!b%+G%!v%:FORi%=1TOa%!72:a$=FNk(e$(i%),a%!60):x%=FNj(a$):CASESGN(f%(i%))OF WHEN-1:y%-=(ABS(f%(i%))*k%!sa%) WHEN1:y%-=f%(i%) OTHERWISE:ERROR255,FNa(115)+" "+STR$(f%(i%)) ENDCASE PROCc(x%,y%,a$,0,a%!p%):NEXTi%:L%=FNv:IFL%=1THEN=TRUE IFL%=2THEN=FALSE PROCd(G%):a$=FNa(57)+" "+FNa(34):x%=FNj(a$):y%=G%!b%+G%!v%-20:PROCc(x%,y%,a$,0,a%!p%):a$=FNa(35):y%-=k%!sa%:x%=FNj(a$):PROCc(x%,y%,a$,0,a%!p%):x%=o%!d%+o%!h%+10:PROCa(FNb(11),o%!d%,o%!b%):a$=FNa(36)+" "+FNa(40) PROCc(x%,o%!b%+10,a$,0,a%!p%):PROCa(FNb(24),Ba%!d%,Ba%!b%):a$=FNa(37)+" "+FNa(40):PROCc(x%,Ba%!b%+12,a$,0,a%!p%):PROCa(FNb(22),Aa%!d%,Aa%!b%):a$=FNa(38)+" "+FNa(40):PROCc(x%,Aa%!b%+12,a$,0,a%!p%):PROCa(FNb(20),za%!d%,za%!b%) a$=FNa(39)+" "+FNa(40):PROCc(x%,za%!b%+12,a$,0,a%!p%):N%=s%!h%/k%!ra%+2:s$=FNa(66):a$=s$+STRING$(N%," ")+FNa(67):x%=FNj(a$):y%=za%!b%-(3*k%!sa%):PROCc(x%,y%,a$,0,a%!p%):s%!d%=x%+7+(LEN(s$)*k%!ra%):s%!b%=y%:PROCa(FNb(1),s%!d%,s%!b%) L%=FNv:IFL%=1THEN=TRUE IFL%=2THEN=FALSE PROCd(G%):a$=FNa(41):x%=FNj(a$):y%=G%!b%+G%!v%-20:PROCc(x%,y%,a$,0,a%!p%):x%=Ca%!d%+Ca%!h%+10:PROCa(FNb(102),Ca%!d%,Ca%!b%):a$=FNa(42)+" "+FNa(43):PROCc(x%,Ca%!b%+12,a$,0,a%!p%):PROCa(FNb(103),Da%!d%,Da%!b%):a$=FNa(42)+" "+FNa(44) PROCc(x%,Da%!b%+12,a$,0,a%!p%):PROCa(FNb(104),Ea%!d%,Ea%!b%):PROCc(x%,Ea%!b%+12,FNa(45),0,a%!p%):x%=Fa%!d%+Fa%!h%+10:PROCa(FNb(105),Oa%!d%,Oa%!b%):a$=FNa(46)+" "+FNa(49):PROCc(x%,Oa%!b%+12,a$,0,a%!p%) PROCa(FNb(117),Ha%!d%,Ha%!b%):PROCc(x%,Ha%!b%+12,FNa(76),0,a%!p%):PROCa(FNb(107),Fa%!d%,Fa%!b%):a$=FNa(48)+" "+FNa(49):PROCc(x%,Fa%!b%+12,a$,0,a%!p%):PROCa(FNb(118),Ka%!d%,Ka%!b%):a$=FNa(78)+" "+FNa(75) PROCc(x%,Ka%!b%+12,a$,0,a%!p%):x%=Ga%!d%+Ga%!h%+10:PROCa(FNb(106),Ga%!d%,Ga%!b%):a$=FNa(47)+" "+FNa(73):PROCc(x%,Ga%!b%+12,a$,0,a%!p%):PROCa(FNb(115),Ia%!d%,Ia%!b%):a$=FNa(47)+" "+FNa(77)+" ":a$+=FNa(74) PROCc(x%,Ia%!b%+12,a$,0,a%!p%):PROCa(FNb(116),Ja%!d%,Ja%!b%):a$=FNa(47)+" "+FNa(77)+" ":a$+=FNa(75):PROCc(x%,Ja%!b%+12,a$,0,a%!p%):PROCa(FNb(119),La%!d%,La%!b%):a$=FNa(78)+" "+FNa(74):PROCc(x%,La%!b%+12,a$,0,a%!p%) 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%,p%,a$:p%=80:a$=FNa(50):IFa%!Ma%THENa$=FNa(51) x%=FNj(a$):y%=G%!b%+G%!v%-20:PROCc(x%,y%,a$,0,a%!p%):a$=FNa(58)+" "+FNa(52):x%=FNj(a$):y%-=k%!sa%:PROCc(x%,y%,a$,0,a%!p%):y%=(G%!b%+G%!v%)-100:a$=" "+FNa(68)+" "+FNa(69):a$+=STRING$(12," ")+FNa(57)+".":a$+=STRING$(3," ")+FNa(60)+".":x%=FNj(a$) PROCc(x%,y%,a$,0,a%!p%):y%-=2*k%!sa%:FORi%=1TO10:IFi%<10THEN a$=" "+STR$(i%)+". " ELSE:a$=" "+STR$(i%)+". " ENDIF s$=FNk(a$(i%),a%!64):a$+=FNq(s$,8," ",FALSE):a$+=" .... ":a$+=FNC(STR$(d%(i%)),10):a$+=" ... "+FNC(STR$(e%(i%)),3):x%=FNj(a$):PROCc(x%,y%-(i%*(k%!sa%+5)),a$,0,a%!p%):NEXTi%:=FNv DEFFNv:LOCALt%,L%:t%=TIME+750:L%=FALSE:REPEAT:IFINKEY(-82)THENPROCz IFINKEY(-102)THENPROCA IFINKEY(-59)THENPROCm(4) IFINKEY(-60)THENPROCm(-4) IFINKEY(-103)THENPROCn(0) IFINKEY(-104)THENPROCn(1) UNTILTIME>=t%ORINKEY(-17)ORINKEY(-99):IFINKEY(-17)THENL%=1 IFINKEY(-99)THENL%=2 IFL%THEN PROCb(R%):PROCb(S%):PROCb(G%):PROCb(o%):PROCb(za%):PROCb(Aa%):PROCb(Ba%):PROCb(Ca%):PROCb(Da%):PROCb(Ea%):PROCb(Fa%):PROCb(Ga%):PROCb(Oa%):PROCb(Ha%):PROCb(Ia%):PROCb(Ja%):PROCb(s%):PROCb(Ka%):PROCb(La%) ENDIF =L% DEFFNj(a$):LOCALN%:N%=LEN(a$)*k%!ra%:=G%!d%+FNn(N%,G%!h%) DEFPROCQ:LOCALs%,C%,o%,f%,E%:LOCALK%:LOCALc%(),a%():LOCALb%(),Pa%,Qa%:LOCALRa%,Sa%,Ta%,Ua%:LOCALVa%,Wa%,Xa%:LOCALYa%:LOCALZa%:LOCAL_a%,`a%,ab%,bb%,cb%:LOCALN%,a$,x%,y%,i%,j%:s%=FNd(32):C%=FNd(28):o%=FNd(48):f%=FNd(68):K%=FNd(16):Qa%=FNd(16):E%=FNe(16,0) Ra%=0:Sa%=4:Ta%=8:Ua%=12:Ya%=16:db%=12:Va%=28:Pa%=56:_a%=ga%:`a%=ha%:ab%=ia%:bb%=la%:cb%=ma%:DIMc%(10,6),a%(10),b%(a%!Pa%):PROCe(FNb(1),s%):s%!d%=FNi(s%,k%):s%!b%=50:s%!V%=6:s%!Q%=s%!V% PROCe(FNb(20),K%):PROCe(FNb(11),o%):o%!b%=Z%!ta%-(10+o%!v%):o%!V%=5:o%!D%=FALSE:o%!ha%=1:PROCe(FNb(5),C%):C%!D%=FALSE:C%!V%=10:E%!Ta%=1:E%!Ra%=3:E%!Ua%=FALSE:a%!Ya%=-1:a%!db%=0:f%!_a%=FNm(20,1):f%!`a%=10:f%!ab%=6:f%!D%=TRUE:f%!cb%=4 SYSFNc(6)TOf%!na%:PROCT:PROCU:PROCh(Z%!ta%):PROCh(Z%!ua%):PROCV(0,d%(1),E%!Ra%,E%!Ta%):PROCW:PROCB:PROCa(FNb(1),s%!d%,s%!b%):SYSFNc(8),"VSkip "+STR$(a%!Za%):WHILEE%!Ra%>0:IFa%!Va%=0THEN IFINKEY(-74)THENPROCX(s%!d%,s%!b%) IFINKEY(-98)THENPROCY IFINKEY(-67)THENPROCZ IFINKEY(-17)THENPROC_ ENDIF IFINKEY(-102)THENPROCA IFINKEY(-82)THENPROCz IFINKEY(-56)THENPROC` IFINKEY(-59)THENPROCm(4) IFINKEY(-60)THENPROCm(-4) IFINKEY(-103)THENPROCn(0) IFINKEY(-104)THENPROCn(1) IFa%!Va%=0THEN PROCaa:PROCba:PROCca:PROCda:PROCea:PROCfa ELSE:PROCga ENDIF WAIT:ENDWHILE:_%!h%=240:_%!v%=40:PROCo(_%,k%):_%!b%-=3:PROCd(_%):PROCp(_%):a$=FNa(49)+" "+FNa(53):PROCw(a$,11):PROCf(750):IFNOTE%!Ua%THEN IFE%!Sa%>=d%(10)THEN PROCha(E%) ENDIF ENDIF PROCb(s%):PROCb(f%):PROCb(o%):PROCb(C%):PROCb(E%):PROCb(K%):PROCb(Qa%):FORi%=1TO10:PROCb(a%(i%)):NEXTi%:FORi%=1TOa%!Pa%:PROCb(b%(i%)):NEXTi%:SYSFNc(8),"VSkip 1":ENDPROC DEFPROCY:IFs%!d%<=0THEN s%!d%=0 ELSE:s%!Q%=0-s%!V%:s%!d%+=s%!Q%:PROCa(FNb(1),s%!d%,s%!b%) ENDIF ENDPROC DEFPROCZ:IFs%!d%>=k%!h%-s%!h%THEN s%!d%=k%!h%-s%!h% ELSE:s%!Q%=0+s%!V%:s%!d%+=s%!Q%:PROCa(FNb(1),s%!d%,s%!b%) ENDIF ENDPROC DEFPROCX(x%,y%):IFNOTC%!D%THEN C%!D%=TRUE:C%!d%=x%+(s%!h%/2):C%!b%=y%+s%!v%:PROCk(4) ENDIF ENDPROC DEFPROCz:LOCALeb%,fb%:eb%=40:fb%=44:IFa%!fb%THEN REPEAT:UNTILNOTINKEY(-82):a%!eb%=FNy(a%!eb%):IFa%!eb%=-1THENERROR255,FNa(109) SYSFNc(8),"ScreenSave "+q$+"Dump"+STR$(a%!eb%) ENDIF ENDPROC DEFPROC_:LOCALi%,gb%:gb%=52:FORi%=1TOa%!gb%:a%(i%)!D%=FALSE:NEXTi%:E%!Ra%=0:E%!Ua%=TRUE:ENDPROC DEFPROCA:LOCALJ%,O%,hb%:J%=0:O%=16:hb%=92:REPEAT:UNTILNOTINKEY(-102):m%!J%+=1:IFm%!J%>2THENm%!J%=0 IFm%!J%=1THEN SYSFNc(33),m%!O% ELSE:SYSFNc(34),m%!O% ENDIF a%!hb%=TRUE:PROCl:ENDPROC DEFPROCm(ib%):LOCALJ%,O%,jb%,`%,H%,kb%,lb%,hb%:J%=0:jb%=4:`%=20:O%=16:hb%=92:IFm%!J%=1THEN SYSFNc(6)TOH%:IFH%-m%!jb%>=10THEN SYSFNc(36),m%!O%,-1TO,kb%:lb%=kb%+ib%:IFlb%>=0ANDlb%<=128THEN SYSFNc(36),m%!O%,lb%:m%!`%=lb%:m%!jb%=H%:a%!hb%=TRUE ENDIF ENDIF ENDIF ENDPROC DEFPROCn(mb%):LOCALZa%,hb%:Za%=108:hb%=92:IFmb%=0THEN REPEAT:UNTILNOTINKEY(-103):IFa%!Za%<64THENa%!Za%+=1 ELSE:REPEAT:UNTILNOTINKEY(-104):IFa%!Za%>1THENa%!Za%-=1 ENDIF SYSFNc(8),"VSkip "+STR$(a%!Za%):a%!hb%=TRUE:ENDPROC DEFPROC`:LOCALVa%,Wa%,a$:Va%=28:Wa%=32:REPEATUNTILNOTINKEY(-56):a$=FNa(49)+" "+FNa(61):a%!Va%=FNr(a%!Va%):a%!Wa%=a%!Va%:IFa%!Va%=0THEN a$=STRING$(LEN(a$)," "):PROCq(a$) ENDIF ENDPROC DEFPROCaa:IFC%!D%THEN IFC%!b%>=Z%!ta%-C%!v%THEN C%!D%=FALSE:C%!b%-=2:PROCd(C%) ELSE:PROCa(FNb(5),C%!d%,C%!b%) ENDIF C%!b%+=C%!V% ENDIF ENDPROC DEFPROCba:LOCALnb%,ob%,pb%,H%,qb%,Ta%,rb%,e$:LOCALdb%,Ya%,Sa%,Ra%:nb%=fa%:ob%=ga%:pb%=ha%:Ta%=8:Ya%=16:Ra%=0:Sa%=4:rb%=104:IFNOTo%!D%THEN IFFNo(4)ANDFNo(5)THEN o%!D%=TRUE:o%!ea%=FALSE:o%!ob%=0:IFFNo(50)THEN o%!Q%=0-o%!V%:o%!d%=k%!h% ELSE:o%!Q%=0+o%!V%:o%!d%=0-o%!h% ENDIF ENDIF ELSE:IFo%!d%<=0-o%!h%ANDSGN(o%!Q%)=-1THEN o%!nb%=FALSE:o%!D%=FALSE:ENDPROC ENDIF IFo%!d%>k%!h%ANDSGN(o%!Q%)=1THEN o%!nb%=FALSE:o%!D%=FALSE:ENDPROC ENDIF IFNOTo%!ea%THEN IFFNp(C%,o%)THEN PROCd(C%):PROCa(FNb(12),o%!d%,o%!b%):SYSFNc(6)TOo%!nb%:o%!ea%=TRUE:C%!D%=FALSE:IFa%!rb%THEN PROCi(250) ELSE:IFE%!Ta%>=5ANDFNo(10)THEN E%!Ra%+=1:PROCj(E%!Ra%):a%!Ya%=0 ELSE:PROCi(500) ENDIF ENDIF ENDIF ELSE:IFFNp(C%,o%)THENPROCd(C%):C%!D%=FALSE ENDIF IFNOTo%!ea%THEN SYSFNc(6)TOH%:IFH%-o%!pb%>=40THEN o%!pb%=H%:o%!ob%=FNr(o%!ob%) ENDIF e$=FNb(10)+STR$(o%!ob%):PROCa(e$,o%!d%,o%!b%):o%!d%+=o%!Q% ELSE:SYSFNc(6)TOH%:qb%=H%-o%!nb%:IFqb%>=300THEN o%!D%=FALSE:o%!ob%=1:PROCd(o%) ELSE:IFqb%>=250THEN PROCa(FNb(15),o%!d%,o%!b%) ELSE:IFqb%>=200THEN PROCa(FNb(14),o%!d%,o%!b%) ELSE:IFqb%>=100THEN PROCa(FNb(13),o%!d%,o%!b%) ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF ENDPROC DEFPROCca:LOCALsb%,z%,M%,T%,tb%,ub%,vb%,wb%,xb%:LOCALP%,yb%,zb%,H%,Ab%,Bb%,U%:LOCALbb%,rb%:P%=fa%:yb%=ja%:zb%=ka%:Ab%=na%:bb%=la%:Bb%=52:U%=56:rb%=104:SYSFNc(6)TOH%:IFH%-f%!Ab%>=50THENf%!Ab%=H%:f%!P%=FNr(f%!P%) sb%=f%!d%+f%!h%:wb%=0-((f%!yb%-1)*(K%!h%+f%!_a%)):IFsb%>=k%!h%THENf%!Q%=0-f%!V%:PROCC IFf%!d%<=wb%THENf%!Q%=0+f%!V%:PROCC IFf%!b%+((f%!bb%-1)*K%!v%)<=Qa%!b%+Qa%!v%THEN PROCD:a%!rb%=TRUE ENDIF wb%=f%!b%+((f%!bb%-1)*K%!v%):IFwb%<=s%!b%+s%!v%THENPROCia:ENDPROC IFFNp(C%,f%)THEN z%=K%!h%+f%!_a%:IF(C%!d%-f%!d%)MODz%<=K%!h%THEN M%=((C%!b%-f%!b%)DIVK%!v%)+1:T%=((C%!d%-f%!d%)DIVz%)+1:IFSGN(c%(T%,M%))=1THEN c%(T%,M%)=-5:PROCd(C%):C%!D%=FALSE:f%!ea%+=1:PROCk(1):xb%=1:IFa%!rb%THENxb%=2 CASEM%OF WHEN1,2:PROCi(INT(50/xb%)) WHEN3,4:PROCi(INT(75/xb%)) WHEN5,6:PROCi(INT(100/xb%)) ENDCASE ENDIF ENDIF ENDIF IFf%!ea%>=f%!`a%*f%!ab%THEN E%!Ta%+=1:PROCd(f%):PROCh(Z%!ua%):PROCj(E%!Ra%):PROCr(E%!Ta%):PROCl:PROCa(FNb(1),s%!d%,s%!b%):PROCja:PROCB:PROCE:IFE%!Ta%>=5THENa%!Bb%=7 IFE%!Ta%>=10THENa%!Bb%=10 ENDIF tb%=TRUE:ub%=TRUE:FORM%=1TOf%!ab%:IFc%(f%!zb%,M%)<>0THENtb%=FALSE IFc%(f%!yb%,M%)<>0THENub%=FALSE NEXTM%:vb%=TRUE:FORT%=1TOf%!`a%:IFc%(T%,f%!bb%)<>0THENvb%=FALSE NEXTT%:IFub%THENf%!yb%+=1 IFtb%THENf%!h%-=(K%!h%+f%!_a%):f%!zb%-=1 IFvb%THENf%!bb%+=1 f%!d%+=f%!Q%:PROCs:ENDPROC DEFPROCda:LOCALi%,j%,H%,Bb%,U%:Bb%=52:U%=56:FORi%=1TOa%!Bb%:IFNOTa%(i%)!D%THEN PROCka(i%) ELSE:PROCla(i%):IFa%(i%)!b%<=Z%!ua%+(Z%!v%+5)THEN a%(i%)!D%=FALSE:PROCd(a%(i%)) ENDIF IFFNp(a%(i%),s%)ANDa%(i%)!D%THEN PROCma(i%) ENDIF FORj%=1TOa%!U%:IFFNp(a%(i%),b%(j%))THEN PROCF(j%,FALSE):PROCd(a%(i%)):a%(i%)!D%=FALSE ENDIF NEXTj%:IFFNp(C%,a%(i%))THEN PROCna(i%) ENDIF IFa%(i%)!ea%THEN PROCoa(i%) ENDIF ENDIF NEXTi%:ENDPROC DEFPROCga:LOCALVa%,Wa%,Xa%,H%,a$:Va%=28:Wa%=32:Xa%=36:SYSFNc(6)TOH%:IFH%-a%!Xa%>=50THEN a%!Wa%=FNr(a%!Wa%):a%!Xa%=H% ENDIF a$=FNa(49)+" "+FNa(61):IFa%!Wa%=0ORa%!Va%=0THEN a$=STRING$(LEN(a$)," ") ENDIF PROCq(a$):ENDPROC DEFPROCfa:LOCALYa%,Cb%,Db%,H%,a$:Ya%=16:Cb%=20:Db%=24:IFa%!Ya%>=0THEN SYSFNc(6)TOH%:a$=FNa(66)+" "+FNa(72):IFH%-a%!Db%>=50THEN a%!Db%=H%:a%!Cb%=FNr(a%!Cb%):IFa%!Cb%=1THENa%!Ya%+=1 ENDIF IFa%!Cb%=0THEN a$=STRING$(LEN(a$)," ") ENDIF IFa%!Ya%>5THEN a$=STRING$(LEN(a$)," "):a%!Ya%=-1 ENDIF PROCq(a$) ENDIF ENDPROC DEFPROCea:LOCALi%,H%,U%,Ab%,e%:U%=56:Ab%=ga%:e%=FNd(16):FORi%=1TOa%!U%:IFFNp(C%,b%(i%))THEN PROCd(C%):C%!D%=FALSE:PROCF(i%,TRUE) ENDIF IFb%(i%)!ea%THEN SYSFNc(6)TOH%:IFH%-b%(i%)!Ab%>=5THEN e%!d%=b%(i%)!d%:e%!h%=b%(i%)!h%:e%!b%=b%(i%)!b%-5:e%!v%=b%(i%)!v%+10:PROCd(e%):PROCt(b%(i%)):b%(i%)!ea%=FALSE ENDIF ENDIF NEXTi%:PROCb(e%):ENDPROC DEFPROCN(Eb%):LOCALi%,n$,w%:w%=64:a%!w%=RND(128)+127:FORi%=1TO10:IFi%MOD2=0THENn$=FNa(71)ELSEn$=FNa(70) a$(i%)=FNk(n$,a%!w%):d%(i%)=(11-i%)*1000:e%(i%)=0:NEXTi%:IFEb%THENPROCG ENDPROC DEFPROCO:LOCALi%,A%,Fb%,Gb%,Hb%,W%,w%,f$:A%=OPENIN(h$+"HiTable"):INPUT#A%,f$:IFf$<>"xBATSH"THENCLOSE#A%:ERROR255,FNa(115) INPUT#A%,w%,Gb%,Fb%:Gb%=Gb%EORw%:Fb%=Fb%EORw%:FORi%=1TO10:INPUT#A%,a$(i%),d%(i%),e%(i%):NEXTi%:CLOSE#A%:FORi%=1TO10:W%+=LEN(a$(i%)):NEXTi%:Hb%=W%/10:IFGb%<>W%ORFb%<>Hb%THENERROR255:FNa(113) a%!64=w%:ENDPROC DEFPROCG:LOCALi%,A%,W%,Hb%,w%,Ib%,t$:w%=64:Ib%=RND(128)+127:FORi%=1TO10:t$=FNk(a$(i%),a%!w%):a$(i%)=FNk(t$,Ib%):NEXTi%:a%!w%=Ib%:FORi%=1TO10:W%+=LEN(a$(i%)):NEXTi%:Hb%=W%/10:W%=W%EORa%!w%:Hb%=Hb%EORa%!w%:A%=OPENOUT(h$+"HiTable"):PRINT#A%,"xBATSH",a%!w%,W%,Hb%:FORi%=1TO10 PRINT#A%,a$(i%),d%(i%),e%(i%):NEXTi%:CLOSE#A%:ENDPROC DEFPROCha(E%):LOCALS%,R%,Jb%,g%,i%,Kb%,N%,x%,y%,a$:LOCALMa%,p%,w%,Na%:R%=FNd(16):S%=FNd(16):Ma%=44:p%=80:w%=64:Na%=100:PROCe(FNb(100),R%):R%!d%=FNi(R%,k%):R%!b%=800:PROCe(FNb(101),S%):S%!d%=FNi(S%,k%):S%!b%=R%!b%-S%!v%:Kb%=0:FORi%=10TO1STEP-1 IFE%!Sa%>=d%(i%)THENKb%=i% NEXTi%:FORi%=9TOKb%STEP-1:a$(i%+1)=a$(i%):d%(i%+1)=d%(i%):e%(i%+1)=e%(i%):NEXTi%:d%(Kb%)=E%!Sa%:e%(Kb%)=E%!Ta%:PROCH(4):CLS:PROCh(Z%!ta%):PROCh(Z%!ua%):PROCa(FNb(100),R%!d%,R%!b%):PROCa(FNb(101),S%!d%,S%!b%):a$=FNa(54)+" "+STR$(E%!Sa%) a$+=" "+FNa(55)+" "+STR$(Kb%)+FNI(Kb%):N%=LEN(a$)*k%!ra%:x%=FNn(N%,k%!h%):y%=S%!b%-170:PROCc(x%,y%,a$,0,a%!p%):PROCb(R%):PROCb(S%):_%!h%=165:_%!v%=40:PROCo(_%,k%):PROCp(_%):x%=_%!d%+20:y%=_%!b%+12:a$="":i%=1:Jb%=FALSE SYSFNc(8),"FX 21,0":REPEAT:g%=GET:CASEg%OF WHEN13:Jb%=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%!p%):IFa$<>""THENPROCc(x%,y%,a$,0,a%!p%) UNTILJb%:IFa$=""ORa$=" "THENa$=FNa(56) a$(Kb%)=FNk(a$,a%!w%):a%!Na%=TRUE:IFa%!Ma%THENPROCG PROCH(4):ENDPROC DEFFNJ(Lb%):=Lb%>=32ANDLb%<=126 DEFPROCV(Mb%,Nb%,l%,r%):LOCALx%,p%,a$:p%=80:a$=FNa(57)+" "+FNa(59):a$+=FNq(STR$(Mb%),10," ",TRUE):PROCc(0,k%!v%-k%!sa%,a$,0,a%!p%):a$=FNa(58)+" "+FNa(57):a$+=" "+FNa(59)+FNq(STR$(Nb%),10," ",TRUE):x%=k%!h%-LEN(a$)*k%!ra% PROCc(x%,k%!v%-k%!sa%,a$,0,a%!p%):PROCj(l%):PROCr(r%):PROCl:ENDPROC DEFPROCj(eb%):LOCALp%,a$:p%=80:PROCa(FNb(1),0,0):a$=" = "+STR$(eb%):PROCc(s%!h%,0,a$,0,a%!p%):ENDPROC DEFPROCr(eb%):LOCALx%,p%,a$:p%=80:a$=FNa(60)+" "+FNa(59):a$+=FNq(STR$(eb%),3,"0",TRUE):x%=k%!h%-LEN(a$)*k%!ra%:PROCc(x%,0,a$,0,a%!p%):ENDPROC DEFPROCq(a$):LOCALx%,y%,N%,p%:p%=80:N%=LEN(a$)*k%!ra%:x%=FNn(N%,k%!h%):y%=k%!v%-k%!sa%:PROCc(x%,y%,a$,0,a%!p%):ENDPROC DEFPROCi(Ob%):LOCALdb%,Ya%,p%,x%,a$:db%=12:Ya%=16:p%=80:E%!Sa%+=Ob%:a$=FNa(57)+" "+FNa(59):a$+=FNq(STR$(E%!Sa%),10," ",TRUE):PROCc(0,k%!v%-k%!sa%,a$,0,a%!p%):IFE%!Sa%-a%!db%>=5000THEN E%!Ra%+=1:PROCj(E%!Ra%):a%!db%=E%!Sa%:a%!Ya%=0 ENDIF IFE%!Sa%>d%(1)THEN a$=FNa(58)+" "+FNa(57)+" ":a$+=FNa(59):a$+=FNq(STR$(E%!Sa%),10," ",TRUE):x%=k%!h%-LEN(a$)*k%!ra%:PROCc(x%,k%!v%-k%!sa%,a$,0,a%!p%) ENDIF ENDPROC DEFPROCl:LOCALJ%,e%,e$:e%=FNd(16):J%=0:PROCe(FNb(120),e%):e%!d%=FNi(e%,k%):e%!b%=0:IFm%!J%<0ORm%!J%>2THEN ERROR255,FNa(111)+" "+STR$(m%!J%) ENDIF e$=FNb(120+m%!J%):PROCa(e$,e%!d%,e%!b%):PROCb(e%):ENDPROC DEFPROCW:LOCALP%,yb%,zb%,bb%:P%=fa%:yb%=ja%:zb%=ka%:bb%=la%:PROCE:PROCs:ENDPROC DEFPROCE:LOCALM%,T%,rb%:rb%=104:f%!d%=50:f%!b%=550:f%!P%=0:f%!ea%=0:f%!V%=3:f%!Q%=f%!V%:f%!yb%=1:f%!zb%=f%!`a%:f%!bb%=1:f%!h%=(f%!`a%*K%!h%)+((f%!`a%-1)*f%!_a%):f%!v%=f%!ab%*K%!v%:FORT%=1TOf%!`a%:FORM%=1TOf%!ab% c%(T%,M%)=((M%+1)/2)+(f%!P%*10):NEXTM%:NEXTT%:a%!rb%=FALSE:ENDPROC DEFPROCs:LOCALM%,T%,x%,y%,e%:e%=FNd(16):FORT%=f%!yb%TOf%!zb%:x%=f%!d%+((T%-1)*(K%!h%+f%!_a%)):FORM%=f%!bb%TOf%!ab%:y%=f%!b%+((M%-1)*K%!v%):IFc%(T%,M%)>0THEN c%(T%,M%)=((M%+1)/2)+(f%!P%*10) ENDIF IFc%(T%,M%)<>0THEN CASESGN(c%(T%,M%))OF WHEN-1:PROCpa(x%,y%,T%,M%) WHEN1:PROCa(FNb(27)+STR$(c%(T%,M%)),x%,y%) ENDCASE ELSE:e%!d%=x%:e%!b%=y%:e%!h%=K%!h%:e%!v%=K%!v%:PROCd(e%) ENDIF NEXTM%:NEXTT%:PROCb(e%):ENDPROC DEFPROCpa(x%,y%,r%,c%):LOCALe%:c%(r%,c%)+=1:PROCa(FNb(26),x%,y%):IFc%(r%,c%)=0THEN e%=FNd(16):e%!d%=x%:e%!b%=y%:e%!h%=K%!h%:e%!v%=K%!v%:PROCd(e%):PROCb(e%) ENDIF ENDPROC DEFPROCC:LOCALe%,i%:e%=FNd(16):FORi%=1TO3:f%!b%-=K%!v%/3:PROCs:NEXTi%:e%!d%=f%!d%:e%!b%=f%!b%+f%!v%:e%!h%=f%!h%:e%!v%=K%!v%:PROCd(e%):PROCb(e%):ENDPROC DEFPROCia:LOCALPb%,Qb%,H%,Rb%,Sb%,V%,i%,o$:V%=1:Tb%=24:Pb%=FNd(28):Qb%=FNd(28):PROCd(f%):PROCd(s%):IFC%!D%THENPROCd(C%):C%!D%=FALSE IFo%!D%THENPROCd(o%):o%!D%=FALSE PROCqa:PROCD:s%!d%=FNi(s%,k%):Pb%!d%=0-K%!h%:Pb%!b%=s%!b%:Pb%!Q%=V%:Qb%!d%=k%!h%:Qb%!b%=s%!b%:Qb%!Q%=0-V%:E%!Ra%=0:PROCh(Z%!ua%):PROCj(E%!Ra%):PROCr(E%!Ta%):PROCa(FNb(1),s%!d%,s%!b%):P%=0:Sb%=FALSE:REPEAT:Pb%!d%+=Pb%!Q%:Pb%!Tb%=Pb%!d%+K%!h% Qb%!d%+=Qb%!Q%:SYSFNc(6)TOH%:IFH%-Rb%>=50THENSb%=FNr(Sb%):Rb%=H% IFSb%THENo$=FNb(21)ELSEo$=FNb(20) PROCa(o$,Pb%!d%,Pb%!b%):PROCa(o$,Qb%!d%,Qb%!b%):PROCf(2):WAIT:UNTILPb%!Tb%>=s%!d%:FORi%=1TO10:PROCa(FNb(20),Pb%!d%,Pb%!b%):PROCa(FNb(20),Qb%!d%,Qb%!b%):PROCf(20):PROCa(FNb(21),Pb%!d%,Pb%!b%):PROCa(FNb(21),Qb%!d%,Qb%!b%):PROCf(20):WAIT:NEXTi%:PROCk(2):FORi%=1TO3 PROCa(FNb(2)+STR$(i%),s%!d%,s%!b%):PROCf(20):WAIT:NEXTi%:PROCf(20):PROCd(s%):PROCb(Pb%):PROCb(Qb%):ENDPROC DEFPROCT:LOCALi%,qb%,Rb%:qb%=ha%:Rb%=ia%:FORi%=1TO10:a%(i%)=FNe(48,0):PROCe(FNb(31),a%(i%)):SYSFNc(6)TOa%(i%)!qb%:SYSFNc(6)TOa%(i%)!Rb%:a%(i%)!D%=FALSE:NEXTi%:ENDPROC DEFPROCka(q%):LOCALUb%,Vb%,Wb%,Xb%,x%,y%:LOCALP%,Yb%:P%=fa%:Yb%=ga%:Ub%=RND(10):Wb%=E%!Ta%+5:IFWb%>100THEN Wb%=100:IFE%!Ta%MOD10=0THENf%!cb%+=1 ENDIF IFFNo(Wb%)ANDFNo(f%!cb%)THEN IFc%(Ub%,f%!bb%)>0THEN x%=f%!d%+(Ub%-1)*(K%!h%+f%!_a%):y%=f%!b%+((f%!bb%-1)*K%!v%)-K%!v%:Vb%=(K%!h%/2)-(a%(q%)!h%/2):a%(q%)!d%=x%+Vb%:a%(q%)!b%=y%:a%(q%)!D%=TRUE:a%(q%)!ea%=FALSE:a%(q%)!Yb%=1:a%(q%)!P%=0:Xb%=4:IFFNo(25)THENa%(q%)!Yb%=2:Xb%=Xb%/2 a%(q%)!V%=Xb%:a%(q%)!Q%=a%(q%)!V%:PROCk(3) ENDIF ENDIF ENDPROC DEFPROCla(q%):LOCALH%,P%,Rb%,Yb%,e$,r$:P%=fa%:Yb%=ga%:Rb%=ia%:SYSFNc(6)TOH%:IFH%-a%(q%)!Rb%>=40THEN a%(q%)!Rb%=H%:a%(q%)!P%+=1 ENDIF :IFa%(q%)!Yb%=1ANDa%(q%)!P%>1THEN a%(q%)!P%=0 ENDIF IFa%(q%)!Yb%=2ANDa%(q%)!P%>3THEN a%(q%)!P%=0 ENDIF r$=STR$(a%(q%)!P%):IFa%(q%)!Yb%=2ANDa%(q%)!P%=3THEN r$="1" ENDIF e$=FNb(30)+STR$(a%(q%)!Yb%)+r$:IFNOTa%(q%)!ea%THEN a%(q%)!b%-=a%(q%)!Q%:PROCa(e$,a%(q%)!d%,a%(q%)!b%) ELSE:e$=FNb(30)+"3":PROCa(e$,a%(q%)!d%,a%(q%)!b%) ENDIF ENDPROC DEFPROCma(q%):LOCALi%:PROCk(2):FORi%=1TO3:PROCa(FNb(2)+STR$(i%),s%!d%,s%!b%):PROCf(20):WAIT:NEXTi%:PROCd(s%):IFC%!D%THEN PROCd(C%):C%!D%=FALSE ENDIF s%!d%=FNi(s%,k%):E%!Ra%-=1:PROCj(E%!Ra%):PROCd(a%(q%)):a%(q%)!D%=FALSE:PROCa(FNb(1),s%!d%,s%!b%):ENDPROC DEFPROCna(q%):LOCALYb%,qb%:Yb%=ga%:qb%=ha%:IFa%(q%)!Yb%=1THEN IFNOTa%(q%)!ea%THEN a%(q%)!ea%=TRUE:PROCi(5):e$=FNb(30)+"3":PROCa(e$,a%(q%)!d%,a%(q%)!b%):SYSFNc(6)TOa%(q%)!qb% ENDIF ENDIF PROCd(C%):C%!D%=FALSE:ENDPROC DEFPROCoa(q%):LOCALqb%,H%:qb%=ha%:SYSFNc(6)TOH%:IFH%-a%(q%)!qb%>=40THEN PROCd(a%(q%)):a%(q%)!D%=FALSE ENDIF ENDPROC DEFPROCqa:LOCALi%,Bb%:Bb%=52:FORi%=1TOa%!Bb%:IFa%(i%)!D%THEN PROCd(a%(i%)):a%(i%)!D%=FALSE ENDIF NEXTi%:ENDPROC DEFPROCU:LOCALi%,x%,Zb%,_b%,U%:_b%=fa%:U%=56:Qa%!d%=0:Qa%!b%=0:PROCe(FNb(16),Qa%):Zb%=k%!h%/a%!U%:x%=Zb%-150:FORi%=1TOa%!U%:b%(i%)=FNe(48,0):b%(i%)!h%=Qa%!h%:b%(i%)!v%=Qa%!v%:b%(i%)!d%=x%+((i%-1)*Zb%) b%(i%)!b%=s%!b%+100:b%(i%)!D%=TRUE:b%(i%)!_b%=0:NEXTi%:Qa%!d%=b%(1)!d%:Qa%!b%=b%(1)!b%:ENDPROC DEFPROCja:LOCALi%,_b%,U%:_b%=fa%:U%=56:FORi%=1TOa%!U%:b%(i%)!D%=TRUE:b%(i%)!_b%=0:NEXTi%:ENDPROC DEFPROCB:LOCALi%,U%:U%=56:FORi%=1TOa%!U%:IFb%(i%)!D%THENPROCt(b%(i%)) NEXTi%:ENDPROC DEFPROCt(q%):LOCAL`b%,ac%,bc%,N%,_b%,p%,a$:_b%=fa%:p%=84:bc%=10-q%!_b%:a$=STR$(bc%):N%=LEN(a$):`b%=q%!d%+FNn(N%,q%!h%):ac%=q%!b%+(q%!v%/2)-(k%!sa%/2):ac%+=7:IFN%=1THEN`b%-=7ELSE`b%-=15 PROCd(q%):PROCa(FNb(16),q%!d%,q%!b%):PROCc(`b%,ac%,a$,0,a%!p%):ENDPROC DEFPROCF(q%,mb%):LOCALy%,_b%:_b%=fa%:Ab%=ga%:b%(q%)!_b%+=1:IFb%(q%)!_b%>=10THEN PROCd(b%(q%)):b%(q%)!D%=FALSE ELSE:PROCd(b%(q%)):y%=b%(q%)!b%:IFmb%THENb%(q%)!b%+=5ELSEb%(q%)!b%-=5 PROCt(b%(q%)):b%(q%)!ea%=TRUE:b%(q%)!b%=y%:SYSFNc(6)TOb%(q%)!Ab% ENDIF ENDPROC DEFPROCD:LOCALi%,e%,U%:U%=56:e%=FNd(16):FORi%=1TOa%!U%:IFb%(i%)!D%THEN b%(i%)!D%=FALSE:e%!d%=b%(i%)!d%:e%!b%=b%(i%)!b%:e%!h%=Qa%!h%:e%!v%=Qa%!v%:PROCd(e%) ENDIF NEXTi%:PROCb(e%):ENDPROC DEFFNx(b$):LOCALB%,cc%,e%,X%:B%=FNl(b$,2):e%=FNe(B%,0):PROCg(e%,208,0):SYSFNc(3),16,b$,e%,0:cc%=FND(e%):IFcc%>0THEN X%=FNE(cc%+4):PROCI(e%,X%+4) ELSE:X%=FNE(B%+256):SYSya%,256+10,X%,b$ ENDIF SYSya%,256+17,X%:=X% DEFFNE(B%):LOCALX%:X%=FNe(B%,0):X%!0=B%:X%!4=0:X%!8=16:X%!12=16:=X% DEFFNF(k$):LOCALdc%,p%:p%=88:SYSya%,256+24,a%!p%,k$TO,,dc%:=dc% DEFPROCe(k$,e%):LOCALdc%,x%,y%,p%:p%=88:dc%=FNF(k$):SYSya%,512+40,a%!p%,dc%TO,,,x%,y%:e%!h%=FNm(x%,1):e%!v%=FNm(y%,2):ENDPROC DEFPROCa(k$,x%,y%):LOCALdc%,p%:p%=88:dc%=FNF(k$):SYSya%,512+34,a%!p%,dc%,x%,y%,0:ENDPROC DEFPROCc(x%,y%,a$,ec%,fc%):LOCALi%,gc%,p%,hc%:p%=88:hc%=76:IFfc%<>a%!80ANDfc%<>a%!84THEN ERROR255,FNa(112) ENDIF a%!p%=fc%:gc%=k%!ra%:FORi%=1TOLEN(a$):PROCa(STR$(ASC(MID$(a$,i%,1))),x%+((i%-1)*gc%),y%):IFec%>0THENPROCf(ec%) NEXTi%:a%!p%=a%!hc%:ENDPROC DEFPROCd(F%):GCOL0,0TINT0:RECTANGLEFILLF%!d%,F%!b%,F%!h%,F%!v%:ENDPROC DEFFNm(B%,ic%):LOCALjc%,kc%:kc%=MODE:IFkc%<>k%!qa%THENPROCv CASEic%OF WHEN1:jc%=B%<>k%!oa% WHEN4:jc%=B%>>k%!pa% OTHERWISE:ERROR255,FNa(103)+" "+STR$(ic%) ENDCASE =jc% DEFFNn(lc%,k%):=(k%/2)-(lc%/2) DEFPROCw(a$,ec%):LOCALN%,x%,y%,p%:p%=80:N%=LEN(a$)*k%!ra%:x%=FNn(N%,k%!h%):y%=(k%!v%/2)-(k%!sa%/2):PROCc(x%,y%,a$,ec%,a%!p%):ENDPROC DEFFNi(F%,mc%):=(mc%!h%/2)-(F%!h%/2) DEFPROCo(F%,mc%):F%!d%=(mc%!h%/2)-(F%!h%/2):F%!b%=(mc%!v%/2)-(F%!v%/2):ENDPROC DEFPROCh(b%):LOCALi%,nc%:nc%=k%!h%/Z%!h%:FORi%=1TOnc%+1:PROCa(FNb(108),(i%-1)*Z%!h%,b%):NEXTi%:ENDPROC DEFPROCp(F%):LOCALx%,y%,oc%,pc%,qc%,rc%,i%:oc%=FNm(3,1):pc%=FNm(3,2):qc%=1:rc%=3:FORi%=1TOF%!h%:x%=F%!d%+((i%-1)*qc%):PROCa(FNb(113),x%,F%!b%):PROCa(FNb(113),x%,F%!b%+(F%!v%-(2*rc%))):NEXTi%:x%=F%!d%+(F%!h%-oc%):FORi%=1TOF%!v%-1 PROCa(FNb(114),F%!d%,F%!b%+((i%-1)*qc%)):PROCa(FNb(114),x%,F%!b%+((i%-1)*qc%)):NEXTi%:PROCa(FNb(111),F%!d%,F%!b%):PROCa(FNb(109),F%!d%,(F%!b%+F%!v%)-pc%):PROCa(FNb(112),F%!d%+(F%!h%-oc%),F%!b%):x%=(F%!d%+F%!h%)-oc%:y%=(F%!b%+F%!v%)-pc% PROCa(FNb(110),x%,y%):ENDPROC DEFFNt(b$,g$):LOCALA%,sc%,tc%,w%,f$:A%=OPENIN(b$):INPUT#A%,f$:f$=FNG(f$):IFf$<>g$THENCLOSE#A%:ERROR255,"Bad Magic!" INPUT#A%,w%,tc%,tc%,sc%:CLOSE#A%:=sc%EORw% DEFFNu(b$,g$,RETURNk%(),RETURNh$()):LOCALA%,i%,sc%,w%,Gb%,Fb%,W%,Hb%,f$:W%=0:A%=OPENIN(b$):INPUT#A%,f$:f$=FNG(f$):IFf$<>g$THENCLOSE#A%:ERROR255,"Bad Magic!" INPUT#A%,w%,Gb%,Fb%,sc%:Gb%=Gb%EORw%:Fb%=Fb%EORw%:sc%=sc%EORw%:FORi%=1TOsc%:INPUT#A%,k%(i%),h$(i%):NEXTi%:CLOSE#A%:FORi%=1TOsc%:W%+=LEN(h$(i%)):NEXTi%:Hb%=W%/sc%:IFW%<>Gb%ORHb%<>Fb%THEN ERROR255,"File Inconsistant with header!" ENDIF =w% DEFFNG(a$):LOCALi%,c$:FORi%=LEN(a$)TO1STEP-1:c$+=MID$(a$,i%,1):NEXTi%:=c$ DEFPROCu(uc%,w%,RETURNb$()):LOCALi%:FORi%=1TOuc%:b$(i%)=FNk(b$(i%),w%):NEXTi%:ENDPROC DEFFNa(vc%):LOCALw%:w%=a%!68:=FNw(vc%,da%,h%(),g$(),w%,106) DEFFNb(vc%):=FNw(vc%,va%,i%(),c$(),-1,107) DEFFNc(vc%):=FNw(vc%,wa%,j%(),d$(),-1,108) DEFFNf(vc%):=FNw(vc%,ca%,g%(),f$(),wc%,109) DEFFNw(vc%,uc%,l%(),b$(),w%,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 IFw%=-1THEN=b$(yc%) =FNk(b$(yc%),w%) DEFFNz(b$):LOCALB%,cc%,e%,X%,A%:B%=FNl(b$,2):e%=FNe(B%,0):IFaa%THENPROCg(e%,208,0) SYSFNc(3),16,b$,e%,0:cc%=FND(e%):IFcc%>0THEN X%=FNe(cc%,0):PROCI(e%,X%):SYSFNc(31),,0,X%,cc%TOA%:PROCg(X%,0,1):PROCb(X%) ELSE:SYSFNc(31),,0,e%,B%TOA%:PROCg(e%,0,1):PROCb(e%) ENDIF =A% DEFPROCH(ec%):LOCALi%,j%,J%,Y%,O%,zc%,`%,Ac%:J%=0:O%=8:zc%=12:Y%=16:`%=20:Ac%=24:IFm%!J%=1THEN IFm%!Y%=m%!O%THEN SYSFNc(36),m%!zc%,0:SYSFNc(33),m%!zc% ELSE:SYSFNc(36),m%!O%,0:SYSFNc(33),m%!O% ENDIF FORi%=0TOm%!`%STEPm%!Ac%:j%=m%!`%-i%:IFm%!Y%=m%!O%THEN SYSFNc(36),m%!zc%,i%:SYSFNc(36),m%!O%,j% ELSE:SYSFNc(36),m%!O%,i%:SYSFNc(36),m%!zc%,j% ENDIF PROCf(ec%):NEXTi%:SYSFNc(35),m%!Y%:IFm%!Y%=m%!O%THEN m%!Y%=m%!zc% ELSE:m%!Y%=m%!O% ENDIF ENDIF ENDPROC DEFPROCP(ec%):LOCALi%,J%,Y%,`%,Ac%:J%=0:Y%=16:`%=20:Ac%=24:SYSFNc(36),m%!Y%,0:SYSFNc(33),m%!Y%:FORi%=0TOm%!`%STEPm%!Ac%:SYSFNc(36),m%!Y%,i%:IFec%>0THENPROCf(ec%) NEXTi%:ENDPROC DEFPROCS(ec%):LOCALi%,J%,Y%,`%,Ac%:J%=0:Y%=16:`%=20:Ac%=24:IFm%!J%=1THEN FORi%=m%!`%TO0STEP0-m%!Ac%:SYSFNc(36),m%!Y%,i%:IFec%>0THENPROCf(ec%) NEXTi%:SYSFNc(34),m%!Y% ENDIF ENDPROC DEFPROCx:LOCALO%,zc%,Y%:O%=8:zc%=12:Y%=16:IFm%!O%<>-1THENSYSFNc(32),m%!O% IFm%!zc%<>-1THENSYSFNc(32),m%!zc% m%!O%=-1:m%!zc%=-1:m%!Y%=-1:SYSFNc(38),-1:ENDPROC DEFPROCk(Bc%):LOCALJ%,u$:J%=0:u$=FNa(110)+" "+STR$(Bc%):IFm%!J%>0THEN IFBc%<1ANDBc%>4THENERROR255,u$ SYSFNc(8),"SPlay_fire0"+STR$(Bc%)+"mhh" ENDIF ENDPROC DEFPROCv:LOCALe%:e%=FNd(20):e%!0=4:e%!4=5:e%!8=11:e%!12=12:e%!16=-1:SYSFNc(5),e%,e%:k%!oa%=e%!0:k%!pa%=e%!4:k%!h%=(e%!8)+1<=Cc%!d%ANDF%!d%=Cc%!b%ANDF%!b%=0ANDOb%<=2THENm%!J%=Ob% IFib%>=0ANDib%<=128THENm%!`%=ib% IFHc%>=1ANDHc%<=64THENa%!Za%=Hc% a%!hb%=FALSE:ENDPROC DEFPROCR:LOCALA%,J%,`%,hb%,Za%:J%=0:`%=20:Za%=108:hb%=92:IFa%!hb%THEN A%=OPENOUT(h$+"Configs"):PRINT#A%,m%!J%,m%!`%:PRINT#A%,a%!Za%:CLOSE#A% ENDIF ENDPROC DEFFND(Ic%):LOCALB%,Jc%,cc%,i%,g$:B%=FNs(Ic%):PROCg(Ic%,208,0):FORi%=0TO3:g$+=CHR$(Ic%?i%):NEXTi%:IFg$<>"SQSH"THEN=0 PRINTFNa(27)+"...":SYSFNc(7),1<<3,B%TOJc%,cc%:IFcc%=-1THENcc%=Ic%!4 =cc% DEFPROCI(Ic%,Kc%):LOCALB%,Lc%,Jc%,cc%:B%=FNs(Ic%):cc%=FNs(Kc%):SYSFNc(7),1<<3,B%TOJc%:Lc%=FNe(Jc%,0):PROCg(Lc%,207,0):SYSFNc(7),1<<2,Lc%,Ic%+20,B%-20,Kc%,cc%TOMc%:IFMc%<>0THENERROR255,FNa(114)+" "+STR$(Mc%) PROCg(Lc%,0,1):PROCg(Ic%,0,1):PROCb(Lc%):PROCb(Ic%):ENDPROC DEFFNy(sc%):LOCALj$:j$="Dump"+STR$(sc%):IFFNl(q$+j$,1)<>0THEN REPEAT:sc%+=1:j$="Dump"+STR$(sc%):UNTILFNl(q$+j$,1)=0ORLEN(j$)>10:IFLEN(j$)>10THENsc%=-1 ENDIF =sc% DEFPROCg(e%,vc%,ic%):LOCALa$:IFaa%THEN IFic%=0THENa$=FNa(200)ELSEa$=FNa(209) a$+=" &":PRINTa$;~FNs(e%);:PRINT" "+FNa(201)+" &";~e%;:IFic%=0THEN a$=" "+FNa(202)+" "+FNa(vc%) ELSE:a$="." ENDIF PRINTa$ ENDIF ENDPROC DEFPROCM:LOCALA%,W%,Hb%,Gb%,Fb%,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%,Gb%,Fb%:a%!B%=Nc%EORa%!w%:Gb%=Gb%EORa%!w%:Fb%=Fb%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%:Hb%=W%/a%!B%:IFHb%<>Fb%ORW%<>Gb%THENERROR255,FNa(113) ENDPROC DEFFNo(n%):=RND(100)<=n% DEFFNk(a$,w%):LOCALi%,c$:FORi%=1TOLEN(a$):c$+=CHR$(ASC(MID$(a$,i%,1))EORw%):NEXTi%:=c$ DEFPROCf(n%):LOCALt%:t%=TIME+n%:REPEAT:UNTILTIME>=t%:ENDPROC DEFFNr(n%):=n%EOR1 DEFFNI(n%):LOCALc$,u%:u%=VAL(RIGHT$(STR$(n%),1)):c$=FNa(65):IFu%>=1ANDu%<=3THENc$=FNa(u%+61) =c$ DEFFNq(a$,l%,w$,Oc%):LOCALPc%,c$:Pc%=l%-LEN(a$):IFPc%<=0THEN c$=LEFT$(a$,l%) ELSE:IFOc%THEN c$=STRING$(l%,w$):RIGHT$(c$,LEN(a$))=a$ ELSE:c$=a$+STRING$(Pc%,w$) ENDIF ENDIF =c$ DEFFNC(a$,l%):LOCALc$:c$=STRING$(l%," "):RIGHT$(c$,LEN(a$))=a$:=c$ DEFFNl(b$,ic%):LOCALyc%,B%:SYS"XOS_File",17,b$TOyc%,,,,B%:IFic%=1THEN=yc% =B% DEFFNA(ic%,b$):LOCALA%,Qc%,Rc%,Sc%:Sc%=FALSE:CASEic%OF WHEN0:A%=OPENUP(b$+"chkfile") WHEN1:A%=OPENUP(b$) OTHERWISE:ERROR255,FNa(104)+" "+STR$(ic%) 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% DEFPROCK(w%):LOCALMc%:Tc%=0:Uc%=0:wc%=w%:SYSFNf(210),-1,-1TOVc%:SYSFNf(211)TOWc%;Mc%:IFMc%AND1THENWc%=16384 PROCra(Wc%):ENDPROC DEFPROCy:IFTc%THEN SYSFNf(210),Tc%-32768,-1TOVc%:Tc%=0:Uc%=0 ENDIF ENDPROC DEFFNd(Xc%):LOCALI%,B%:B%=(Xc%+15)AND-4:I%=FNK(B%):IFI%ELSEERROR254,FNf(110) I%!0=&DEADDEAD:I%!4=Xc%:!(I%-8+(I%!-4))=&DEADDEAD:=I%+8 DEFFNe(Xc%,Ob%):LOCALI%:I%=FNd(Xc%):PROCsa(I%,Ob%):=I% DEFPROCb(RETURNI%):CASEFNL(I%)OF WHEN1:ERROR254,FNf(111) WHEN2:ERROR254,FNf(112) WHEN3:ERROR254,FNf(113) ENDCASE I%-=8:Uc%-=I%!-4:SYSFNf(212),3,Tc%,I%:I%=0:ENDPROC DEFFNs(I%):LOCALe%:e%=I%-4:=e%!0 DEFPROCsa(I%,Ob%):LOCALwb%,B%:B%=FNs(I%):FORwb%=0TOB%-4STEP4:I%!wb%=Ob%:NEXTwb%:ENDPROC DEFFNg(I%):LOCALe%,wb%,B%:B%=FNs(I%):e%=FNd(B%):FORwb%=0TOB%-4STEP4:e%!wb%=I%!wb%:NEXTwb%:=e% DEFFNL(I%):LOCALNb%,Yc%:Nb%=FALSE:Yc%=FALSE:I%-=8:IFI%!0<>&DEADDEADTHENYc%=TRUE IF!(I%-8+(I%!-4))<>&DEADDEADTHENNb%=TRUE IFYc%ANDNb%THEN=3 IFNb%THEN=2 IFYc%THEN=1 =0 DEFPROCra(B%):IFTc%THENERROR254,FNf(114) B%=(B%+Wc%-1)ANDNOT(Wc%-1):Tc%=HIMEM:SYSFNf(210),Vc%+B%,-1TOVc%:B%=Vc%+32768-Tc%:IFB%<1THEN Tc%=0:ERROR254,FNf(115) ELSE:SYSFNf(212),0,Tc%,,B% ENDIF Uc%=0:ENDPROC DEFPROCta(Xc%):LOCALZc%:Zc%=Vc%:SYSFNf(210),Vc%+Xc%,-1TOVc%:Xc%=Vc%-Zc%:IFXc%THENSYSFNf(212),5,Tc%,,Xc%TO,,,Xc% ENDPROC DEFFNK(Xc%):LOCALI%,Mc%:SYSFNf(213),2,Tc%,,Xc%TO,,I%;Mc%:IFMc%AND1THEN PROCta((Xc%+Wc%)ANDNOT(Wc%-1)):SYSFNf(213),2,Tc%,,Xc%TO,,I%;Mc%:IFMc%AND1THEN=0 ENDIF Uc%+=I%!-4:=I%