REM Acorn Invaders REM Packed by Make v1.41 15/05/08 On 15 Jan 2010 ONERRORPROCE:END MODE28:OFF:a$="Acorn Invaders. (c)2007-2010 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","ALUT"):DIMg%(ba%),f$(ba%):H%=FNt(b$+"AshLUT","ALUT",g%(),f$()):PROCF(H%):a%=FNg(108,0):PRINT"Loading Messages...";:ca%=FNs(b$+"Msg","MSGS"):DIMh%(ca%),g$(ca%) da%=FNt(b$+"Msg","MSGS",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:a%!100=FALSE:a%!104=FALSE:DIMa$(10),d%(10):DIMe%(10):PRINTFNa(8)+" "+FNa(22):d%=0:b%=4:e%=8:h%=12:P%=16:S%=20:A%=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:`%=32:ra%=16:sa%=20:PRINTFNa(9)+" "+FNa(3):ta%=FNs(b$+"ImgLUT","ILUT"):DIMi%(ta%),c$(ta%):da%=FNt(b$+"ImgLUT","ILUT",i%(),c$()):PRINTFNa(26):PROCs(ta%,da%,c$()):PRINTFNa(14):PRINT PRINTFNa(9)+" "+FNa(13):ua%=FNs(b$+"SWIs","SLUT"):DIMj%(ua%),d$(ua%):da%=FNt(b$+"SWIs","SLUT",j%(),d$()):PRINTFNa(26):PROCs(ua%,da%,d$()):PRINTFNa(14):PRINT:PRINTFNa(9)+" "+FNa(24)+" ";:IFFNr(h$+"Configs")=1THEN PROCG:PRINTFNa(18) ELSE:PRINTFNa(25):a%!92=TRUE ENDIF PRINT:PRINTFNa(8)+" "+FNa(1)+" ";:va%=0:SYSFNd(30)TOva%:PRINTFNa(21)+" "+STR$(va%/100):a%!4=FNE(u$+"Intro"):PRINT:PRINTFNa(17)+" "+FNa(16):SYSFNd(1),,FNd(2)TOwa%: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);:PROCH: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 PROCI(a%!44) ELSE:IFNOTFNz(1,v$)THEN a%!44=FALSE:PRINTFNa(18)+" "+FNa(10)+" "+FNa(20) ELSE:PRINTFNa(18)+" "+FNa(11)+" "+FNa(20) ENDIF PROCJ ENDIF PRINT:PRINTFNa(12):PROCe(150):k%=FNe(36):T%=FNe(24):W%=FNe(16):CLS:PROCt:k%!qa%=FNc(8,1):k%!`%=FNc(8,2)+7:T%!e%=FNc(6,1):T%!h%=FNc(6,2):T%!ra%=k%!h%-50:T%!sa%=30:IFa%!0=1THEN SYSFNd(33),a%!4 ENDIF FORi%=0TOa%!48STEPa%!96:SYSFNd(36),a%!4,i%:NEXTi%:WHILENOTFNF:CLS:PROCK:ENDWHILE:CLS:W%!e%=220:W%!h%=40:PROCm(W%,k%):W%!b%-=3:PROCn(W%):PROCu(FNa(31),10):IFa%!44THENPROCL IFa%!0=1THEN SYSFNd(36),a%!4,-1TO,xa%:FORi%=xa%TO0STEP0-a%!96:SYSFNd(36),a%!4,i%:PROCe(4):NEXTi%:SYSFNd(35),a%!4:SYSFNd(32),a%!4:a%!4=-1 ENDIF PROCb(W%):PROCb(T%):PROCb(k%):FORi%=76TO84STEP4:PROCb(a%!i%):NEXTi%:PROCb(a%):PROCv:END DEFFNF:LOCALi%,M%,N%,E%,L%,m%,ya%,za%,Aa%:LOCALo%,X%,Ba%,Ca%,Da%,Ea%,Fa%,Ga%,Ha%:LOCALx%,y%,J%,Ia%,q%,Ja%,s$,a$:Ia%=44:q%=80:Ja%=100:M%=FNg(16,0):N%=FNg(16,0):E%=FNg(16,0):m%=FNg(16,0):ya%=FNg(16,0):X%=FNg(16,0):o%=FNg(16,0) M%!e%=FNc(100,1):M%!h%=FNc(40,2):M%!d%=FNh(M%,k%):M%!b%=800:N%!e%=FNc(150,1):N%!h%=FNc(40,2):N%!d%=FNh(N%,k%):N%!b%=M%!b%-N%!h%:E%!e%=720:E%!h%=500:E%!d%=FNh(E%,k%):E%!b%=200:m%!e%=FNc(40,1):m%!h%=FNc(20,2) m%!d%=(E%!d%+E%!e%/2)-150:m%!b%=(E%!b%+E%!h%)-125:o%!e%=FNc(30,1):o%!h%=FNc(15,2):ya%!e%=FNc(20,1):ya%!h%=FNc(20,2):ya%!d%=(E%!d%+E%!e%/2)-150:ya%!d%+=FNh(ya%,m%):za%=FNi(ya%):Aa%=FNi(ya%) :Aa%!b%=m%!b%-40-Aa%!h%:za%!b%=Aa%!b%-40-za%!h%:ya%!b%=za%!b%-40-ya%!h%:X%!e%=FNc(20,1):X%!h%=FNc(20,2):X%!d%=(E%!d%+E%!e%/2)-120:Ba%=FNi(X%):Ca%=FNi(X%):Da%=FNi(X%):Da%!d%=E%!d%:Ka%=FNi(Da%):Fa%=FNi(Da%):Ea%=FNi(X%) Ea%!d%=E%!d%:Ea%!d%+=(E%!e%/2)+10:Ga%=FNi(Ea%):Ha%=FNi(Ea%)::X%!b%=(E%!b%+E%!h%)-120:Ba%!b%=X%!b%-60:Ca%!b%=Ba%!b%-60:Fa%!b%=Ca%!b%-90:Ka%!b%=Fa%!b%-60:Da%!b%=Ka%!b%-60:Ea%!b%=Ca%!b%-90:Ga%!b%=Ea%!b%-60:Ha%!b%=Ga%!b%-60 CLS:PROCg(T%!ra%):PROCg(T%!sa%):PROCk:FORi%=0-M%!e%TOM%!d%STEP5:WAIT:PROCa(FNb(100),i%,M%!b%):PROCe(1):NEXTi%:FORi%=k%!e%TON%!d%STEP-5:WAIT:PROCa(FNb(101),i%,N%!b%):PROCe(1):NEXTi%:a$=FNa(32):L%=LEN(a$)*k%!qa%:y%=170 PROCc(FNm(L%,k%!e%),y%,a$,11,a%!q%):a$=FNa(33):L%=LEN(a$)*k%!qa%:y%-=k%!`%:PROCc(FNm(L%,k%!e%),y%,a$,11,a%!q%):WHILENOTINKEY(-99)ANDNOTINKEY(-17)ANDNOTINKEY(-82):IFa%!Ja%THEN a%!Ja%=FALSE:J%=FNA:IFJ%=1THEN=TRUE IFJ%=2THEN=FALSE PROCd(E%) ENDIF y%=E%!b%+E%!h%:FORi%=1TOa%!72:a$=FNl(e$(i%),a%!60):x%=FNk(a$):CASESGN(f%(i%))OF WHEN-1:y%-=(ABS(f%(i%))*k%!`%) WHEN1:y%-=f%(i%) OTHERWISE:ERROR255,FNa(115)+" "+STR$(f%(i%)) ENDCASE PROCc(x%,y%,a$,0,a%!q%):NEXTi%:J%=FNu:IFJ%=1THEN=TRUE IFJ%=2THEN=FALSE PROCd(E%):a$=FNa(57)+" "+FNa(34):x%=FNk(a$):y%=E%!b%+E%!h%-20:PROCc(x%,y%,a$,0,a%!q%):a$=FNa(35):y%-=k%!`%: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),Aa%!d%,Aa%!b%):a$=FNa(37)+" "+FNa(40):PROCc(x%,Aa%!b%+12,a$,0,a%!q%):PROCa(FNb(22),za%!d%,za%!b%):a$=FNa(38)+" "+FNa(40):PROCc(x%,za%!b%+12,a$,0,a%!q%):PROCa(FNb(20),ya%!d%,ya%!b%) a$=FNa(39)+" "+FNa(40):PROCc(x%,ya%!b%+12,a$,0,a%!q%):L%=o%!e%/k%!qa%+2:s$=FNa(66):a$=s$+STRING$(L%," ")+FNa(67):x%=FNk(a$):y%=ya%!b%-(3*k%!`%):PROCc(x%,y%,a$,0,a%!q%):o%!d%=x%+7+(LEN(s$)*k%!qa%):o%!b%=y%:PROCa(FNb(1),o%!d%,o%!b%) J%=FNu:IFJ%=1THEN=TRUE IFJ%=2THEN=FALSE PROCd(E%):a$=FNa(41):x%=FNk(a$):y%=E%!b%+E%!h%-20:PROCc(x%,y%,a$,0,a%!q%):x%=X%!d%+X%!e%+10:PROCa(FNb(102),X%!d%,X%!b%):a$=FNa(42)+" "+FNa(43):PROCc(x%,X%!b%+12,a$,0,a%!q%):PROCa(FNb(103),Ba%!d%,Ba%!b%):a$=FNa(42)+" "+FNa(44) PROCc(x%,Ba%!b%+12,a$,0,a%!q%):PROCa(FNb(104),Ca%!d%,Ca%!b%):PROCc(x%,Ca%!b%+12,FNa(45),0,a%!q%):x%=Da%!d%+Da%!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),Fa%!d%,Fa%!b%) PROCc(x%,Fa%!b%+12,FNa(76),0,a%!q%):PROCa(FNb(107),Da%!d%,Da%!b%):a$=FNa(48)+" "+FNa(49):PROCc(x%,Da%!b%+12,a$,0,a%!q%):x%=Ea%!d%+Ea%!e%+10:PROCa(FNb(106),Ea%!d%,Ea%!b%):a$=FNa(47)+" "+FNa(73):PROCc(x%,Ea%!b%+12,a$,0,a%!q%) PROCa(FNb(115),Ga%!d%,Ga%!b%):a$=FNa(47)+" "+FNa(77)+" ":a$+=FNa(74):PROCc(x%,Ga%!b%+12,a$,0,a%!q%):PROCa(FNb(116),Ha%!d%,Ha%!b%):a$=FNa(47)+" "+FNa(77)+" ":a$+=FNa(75):PROCc(x%,Ha%!b%+12,a$,0,a%!q%):J%=FNu:IFJ%=1THEN=TRUE IFJ%=2THEN=FALSE PROCd(E%):J%=FNA:IFJ%=1THEN=TRUE IFJ%=2THEN=FALSE PROCd(E%):ENDWHILE:ERROR255,FNa(102):=FALSE DEFFNA:LOCALJ%,x%,y%,i%,q%,a$:q%=80:a$=FNa(50):IFa%!Ia%THENa$=FNa(51) x%=FNk(a$):y%=E%!b%+E%!h%-20:PROCc(x%,y%,a$,0,a%!q%):a$=FNa(58)+" "+FNa(52):x%=FNk(a$):y%-=k%!`%:PROCc(x%,y%,a$,0,a%!q%):y%=(E%!b%+E%!h%)-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*k%!`%: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$+=FNB(STR$(d%(i%)),10):a$+=" ... "+FNB(STR$(e%(i%)),3):x%=FNk(a$):PROCc(x%,y%-(i%*(k%!`%+5)),a$,0,a%!q%):NEXTi%:=FNu DEFFNu:LOCALt%,J%:t%=TIME+750:J%=FALSE:REPEAT:IFINKEY(-82)THENPROCw IFINKEY(-102)THENPROCx IFINKEY(-59)THENPROCl(4) IFINKEY(-60)THENPROCl(-4) UNTILTIME>=t%ORINKEY(-17)ORINKEY(-99):IFINKEY(-17)THENJ%=1 IFINKEY(-99)THENJ%=2 IFJ%THEN PROCb(M%):PROCb(N%):PROCb(E%):PROCb(m%):PROCb(ya%):PROCb(za%):PROCb(Aa%):PROCb(X%):PROCb(Ba%):PROCb(Ca%):PROCb(Da%):PROCb(Ea%):PROCb(Ka%):PROCb(Fa%):PROCb(Ga%):PROCb(Ha%):PROCb(o%) ENDIF =J% DEFFNk(a$):LOCALL%:L%=LEN(a$)*k%!qa%:=E%!d%+FNm(L%,E%!e%) DEFPROCK:LOCALo%,w%,m%,f%,B%:LOCALI%:LOCALc%(),a%():LOCALb%(),La%,Ma%:LOCALY%,Na%,Oa%,Pa%:LOCALQa%,Ra%,Sa%:LOCALTa%:LOCALUa%,Va%,Wa%,Xa%,Ya%:LOCALZa%,L%,a$,x%,y%,i%,j%:o%=FNe(32):w%=FNe(28):m%=FNe(48):f%=FNe(68):I%=FNe(16):Ma%=FNe(16):B%=FNg(16,0) Y%=0:Na%=4:Oa%=8:Pa%=12:Ta%=16:_a%=12:Qa%=28:La%=56:Ua%=fa%:Va%=ga%:Wa%=ha%:Xa%=ka%:Ya%=la%:DIMc%(10,6),a%(10),b%(a%!La%):o%!e%=FNc(30,1):o%!h%=FNc(15,2):o%!d%=FNh(o%,k%):o%!b%=50:o%!S%=6:o%!P%=o%!S% I%!e%=FNc(20,1):I%!h%=FNc(20,2):m%!e%=FNc(40,1):m%!h%=FNc(20,2):m%!b%=T%!ra%-(10+m%!h%):m%!S%=5:m%!A%=FALSE:m%!ga%=1:w%!e%=FNc(5,1):w%!h%=FNc(20,2):w%!A%=FALSE:w%!S%=10:B%!Oa%=1:B%!Y%=3:B%!Pa%=FALSE a%!Ta%=-1:a%!_a%=0:f%!Ua%=FNc(20,1):f%!Va%=10:f%!Wa%=6:f%!A%=TRUE:f%!Ya%=4:SYSFNd(6)TOf%!ma%:PROCM:PROCN:PROCg(T%!ra%):PROCg(T%!sa%):PROCO(0,d%(1),B%!Y%,B%!Oa%):PROCP:PROCy:PROCa(FNb(1),o%!d%,o%!b%):WHILEB%!Y%>0:IFa%!Qa%=0THEN IFINKEY(-74)THENPROCQ(o%!d%,o%!b%) IFINKEY(-98)THENPROCR IFINKEY(-67)THENPROCS IFINKEY(-17)THENPROCT ENDIF IFINKEY(-102)THENPROCx IFINKEY(-82)THENPROCw IFINKEY(-56)THENPROCU IFINKEY(-59)THENPROCl(4) IFINKEY(-60)THENPROCl(-4) IFa%!Qa%=0THEN PROCV:PROCW:PROCX:PROCY:PROCZ:PROC_ ELSE:PROC` ENDIF WAIT:ENDWHILE:W%!e%=240:W%!h%=40:PROCm(W%,k%):W%!b%-=3:PROCd(W%):PROCn(W%):a$=FNa(49)+" "+FNa(53):PROCu(a$,11):PROCe(750):IFNOTB%!Pa%THEN IFB%!Na%>=d%(10)THEN PROCaa(B%) ENDIF ENDIF PROCb(o%):PROCb(f%):PROCb(m%):PROCb(w%):PROCb(B%):PROCb(I%):PROCb(Ma%):FORi%=1TO10:PROCb(a%(i%)):NEXTi%:FORi%=1TOa%!La%:PROCb(b%(i%)):NEXTi%:ENDPROC DEFPROCR:IFo%!d%<=0THEN o%!d%=0 ELSE:o%!P%=0-o%!S%:o%!d%+=o%!P%:PROCa(FNb(1),o%!d%,o%!b%) ENDIF ENDPROC DEFPROCS:IFo%!d%>=k%!e%-o%!e%THEN o%!d%=k%!e%-o%!e% ELSE:o%!P%=0+o%!S%:o%!d%+=o%!P%:PROCa(FNb(1),o%!d%,o%!b%) ENDIF ENDPROC DEFPROCQ(x%,y%):IFNOTw%!A%THEN w%!A%=TRUE:w%!d%=x%+(o%!e%/2):w%!b%=y%+o%!h%:PROCj(4) ENDIF ENDPROC DEFPROCw:LOCAL`a%,ab%:`a%=40:ab%=44:IFa%!ab%THEN REPEAT:UNTILNOTINKEY(-82):a%!`a%=FNy(a%!`a%):IFa%!`a%=-1THENERROR255,FNa(109) OSCLI"ScreenSave "+q$+"Dump"+STR$(a%!`a%) ENDIF ENDPROC DEFPROCT:LOCALi%,bb%:bb%=52:FORi%=1TOa%!bb%:a%(i%)!A%=FALSE:NEXTi%:B%!Y%=0:B%!Pa%=TRUE:ENDPROC DEFPROCx:LOCALcb%,db%,eb%:cb%=0:db%=4:eb%=92:REPEAT:UNTILNOTINKEY(-102):a%!cb%+=1:IFa%!cb%>2THENa%!cb%=0 IFa%!cb%=1THEN SYSFNd(33),a%!db% ELSE:SYSFNd(34),a%!db% ENDIF a%!eb%=TRUE:PROCk:ENDPROC DEFPROCl(fb%):LOCALcb%,db%,gb%,hb%,F%,xa%,ib%,eb%:cb%=0:db%=4:gb%=8:hb%=48:eb%=92:IFa%!cb%=1THEN SYSFNd(6)TOF%:IFF%-a%!gb%>=10THEN SYSFNd(36),a%!db%,-1TO,xa%:ib%=xa%+fb%:IFib%>=0ANDib%<=128THEN SYSFNd(36),a%!db%,ib%:a%!hb%=ib%:a%!gb%=F%:a%!eb%=TRUE ENDIF ENDIF ENDIF ENDPROC DEFPROCU:LOCALQa%,Ra%,a$:Qa%=28:Ra%=32:REPEATUNTILNOTINKEY(-56):a$=FNa(49)+" "+FNa(61):a%!Qa%=FNq(a%!Qa%):a%!Ra%=a%!Qa%:IFa%!Qa%=0THEN a$=STRING$(LEN(a$)," "):PROCo(a$) ENDIF ENDPROC DEFPROCV:IFw%!A%THEN IFw%!b%>=T%!ra%-w%!h%THEN w%!A%=FALSE:w%!b%-=2:PROCd(w%) ELSE:PROCa(FNb(5),w%!d%,w%!b%) ENDIF w%!b%+=w%!S% ENDIF ENDPROC DEFPROCW:LOCALjb%,kb%,lb%,F%,mb%,Oa%,nb%,d$:LOCAL_a%,Ta%,Na%,Y%:jb%=ea%:kb%=fa%:lb%=ga%:Oa%=8:Ta%=16:Y%=0:Na%=4:nb%=104:IFNOTm%!A%THEN IFFNn(4)ANDFNn(5)THEN m%!A%=TRUE:m%!_%=FALSE:m%!kb%=0:IFFNn(50)THEN m%!P%=0-m%!S%:m%!d%=k%!e% ELSE:m%!P%=0+m%!S%:m%!d%=0-m%!e% ENDIF ENDIF ELSE:IFm%!d%<=0-m%!e%ANDSGN(m%!P%)=-1THEN m%!jb%=FALSE:m%!A%=FALSE:ENDPROC ENDIF IFm%!d%>k%!e%ANDSGN(m%!P%)=1THEN m%!jb%=FALSE:m%!A%=FALSE:ENDPROC ENDIF IFNOTm%!_%THEN IFFNo(w%,m%)THEN PROCd(w%):PROCa(FNb(12),m%!d%,m%!b%):SYSFNd(6)TOm%!jb%:m%!_%=TRUE:w%!A%=FALSE:IFa%!nb%THEN PROCh(250) ELSE:IFB%!Oa%>=5ANDFNn(10)THEN B%!Y%+=1:PROCi(B%!Y%):a%!Ta%=0 ELSE:PROCh(500) ENDIF ENDIF ENDIF ELSE:IFFNo(w%,m%)THENPROCd(w%):w%!A%=FALSE ENDIF IFNOTm%!_%THEN SYSFNd(6)TOF%:IFF%-m%!lb%>=40THEN m%!lb%=F%:m%!kb%=FNq(m%!kb%) ENDIF d$=FNb(10)+STR$(m%!kb%):PROCa(d$,m%!d%,m%!b%):m%!d%+=m%!P% ELSE:SYSFNd(6)TOF%:mb%=F%-m%!jb%:IFmb%>=300THEN m%!A%=FALSE:m%!kb%=1:PROCd(m%) ELSE:IFmb%>=250THEN PROCa(FNb(15),m%!d%,m%!b%) ELSE:IFmb%>=200THEN PROCa(FNb(14),m%!d%,m%!b%) ELSE:IFmb%>=100THEN PROCa(FNb(13),m%!d%,m%!b%) ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF ENDPROC DEFPROCX:LOCALob%,z%,K%,Q%,pb%,qb%,rb%,sb%,tb%:LOCALO%,ub%,vb%,F%,wb%,xb%,R%:LOCALXa%,nb%:O%=ea%:ub%=ia%:vb%=ja%:wb%=ma%:Xa%=ka%:xb%=52:R%=56:nb%=104:SYSFNd(6)TOF%:IFF%-f%!wb%>=50THENf%!wb%=F%:f%!O%=FNq(f%!O%) ob%=f%!d%+f%!e%:sb%=0-((f%!ub%-1)*(I%!e%+f%!Ua%)):IFob%>=k%!e%THENf%!P%=0-f%!S%:PROCz IFf%!d%<=sb%THENf%!P%=0+f%!S%:PROCz IFf%!b%+((f%!Xa%-1)*I%!h%)<=Ma%!b%+Ma%!h%THEN PROCA:a%!nb%=TRUE ENDIF sb%=f%!b%+((f%!Xa%-1)*I%!h%):IFsb%<=o%!b%+o%!h%THENPROCba:ENDPROC IFFNo(w%,f%)THEN z%=I%!e%+f%!Ua%:IF(w%!d%-f%!d%)MODz%<=I%!e%THEN K%=((w%!b%-f%!b%)DIVI%!h%)+1:Q%=((w%!d%-f%!d%)DIVz%)+1:IFSGN(c%(Q%,K%))=1THEN c%(Q%,K%)=-5:PROCd(w%):w%!A%=FALSE:f%!_%+=1:PROCj(1):tb%=1:IFa%!nb%THENtb%=2 CASEK%OF WHEN1,2:PROCh(INT(50/tb%)) WHEN3,4:PROCh(INT(75/tb%)) WHEN5,6:PROCh(INT(100/tb%)) ENDCASE ENDIF ENDIF ENDIF IFf%!_%>=f%!Va%*f%!Wa%THEN B%!Oa%+=1:PROCd(f%):PROCg(T%!sa%):PROCi(B%!Y%):PROCp(B%!Oa%):PROCk:PROCa(FNb(1),o%!d%,o%!b%):PROCca:PROCy:PROCB:IFB%!Oa%>=5THENa%!xb%=7 IFB%!Oa%>=10THENa%!xb%=10 ENDIF pb%=TRUE:qb%=TRUE:FORK%=1TOf%!Wa%:IFc%(f%!vb%,K%)<>0THENpb%=FALSE IFc%(f%!ub%,K%)<>0THENqb%=FALSE NEXTK%:rb%=TRUE:FORQ%=1TOf%!Va%:IFc%(Q%,f%!Xa%)<>0THENrb%=FALSE NEXTQ%:IFqb%THENf%!ub%+=1 IFpb%THENf%!e%-=(I%!e%+f%!Ua%):f%!vb%-=1 IFrb%THENf%!Xa%+=1 f%!d%+=f%!P%:PROCq:ENDPROC DEFPROCY:LOCALi%,j%,F%,xb%,R%:xb%=52:R%=56:FORi%=1TOa%!xb%:IFNOTa%(i%)!A%THEN PROCda(i%) ELSE:PROCea(i%):IFa%(i%)!b%<=T%!sa%+(T%!h%+5)THEN a%(i%)!A%=FALSE:PROCd(a%(i%)) ENDIF IFFNo(a%(i%),o%)ANDa%(i%)!A%THEN PROCfa(i%) ENDIF FORj%=1TOa%!R%:IFFNo(a%(i%),b%(j%))THEN PROCC(j%,FALSE):PROCd(a%(i%)):a%(i%)!A%=FALSE ENDIF NEXTj%:IFFNo(w%,a%(i%))THEN PROCga(i%) ENDIF IFa%(i%)!_%THEN PROCha(i%) ENDIF ENDIF NEXTi%:ENDPROC DEFPROC`:LOCALQa%,Ra%,Sa%,F%,a$:Qa%=28:Ra%=32:Sa%=36:SYSFNd(6)TOF%:IFF%-a%!Sa%>=50THEN a%!Ra%=FNq(a%!Ra%):a%!Sa%=F% ENDIF a$=FNa(49)+" "+FNa(61):IFa%!Ra%=0ORa%!Qa%=0THEN a$=STRING$(LEN(a$)," ") ENDIF PROCo(a$):ENDPROC DEFPROC_:LOCALTa%,yb%,zb%,F%,a$:Ta%=16:yb%=20:zb%=24:IFa%!Ta%>=0THEN SYSFNd(6)TOF%:a$=FNa(66)+" "+FNa(72):IFF%-a%!zb%>=50THEN a%!zb%=F%:a%!yb%=FNq(a%!yb%):IFa%!yb%=1THENa%!Ta%+=1 ENDIF IFa%!yb%=0THEN a$=STRING$(LEN(a$)," ") ENDIF IFa%!Ta%>5THEN a$=STRING$(LEN(a$)," "):a%!Ta%=-1 ENDIF PROCo(a$) ENDIF ENDPROC DEFPROCZ:LOCALi%,F%,R%,wb%,s%:R%=56:wb%=fa%:s%=FNe(16):FORi%=1TOa%!R%:IFFNo(w%,b%(i%))THEN PROCd(w%):w%!A%=FALSE:PROCC(i%,TRUE) ENDIF IFb%(i%)!_%THEN SYSFNd(6)TOF%:IFF%-b%(i%)!wb%>=5THEN s%!d%=b%(i%)!d%:s%!e%=b%(i%)!e%:s%!b%=b%(i%)!b%-5:s%!h%=b%(i%)!h%+10:PROCd(s%):PROCr(b%(i%)):b%(i%)!_%=FALSE ENDIF ENDIF NEXTi%:PROCb(s%):ENDPROC DEFPROCI(Ab%):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%:IFAb%THENPROCD ENDPROC DEFPROCJ:LOCALi%,v%,Bb%,Cb%,Db%,V%,H%,e$:v%=OPENIN(h$+"HiTable"):INPUT#v%,e$:IFe$<>"xBATSH"THENCLOSE#v%:ERROR255,FNa(115) INPUT#v%,H%,Cb%,Bb%:Cb%=Cb%EORH%:Bb%=Bb%EORH%:FORi%=1TO10:INPUT#v%,a$(i%),d%(i%),e%(i%):NEXTi%:CLOSE#v%:FORi%=1TO10:V%+=LEN(a$(i%)):NEXTi%:Db%=V%/10:IFCb%<>V%ORBb%<>Db%THENERROR255:FNa(113) a%!64=H%:ENDPROC DEFPROCD:LOCALi%,v%,V%,Db%,U%,Eb%,w$:U%=64:Eb%=RND(128)+127:FORi%=1TO10:w$=FNl(a$(i%),a%!U%):a$(i%)=FNl(w$,Eb%):NEXTi%:a%!U%=Eb%:FORi%=1TO10:V%+=LEN(a$(i%)):NEXTi%:Db%=V%/10:V%=V%EORa%!U%:Db%=Db%EORa%!U%:v%=OPENOUT(h$+"HiTable"):PRINT#v%,"xBATSH",a%!U%,V%,Db%:FORi%=1TO10 PRINT#v%,a$(i%),d%(i%),e%(i%):NEXTi%:CLOSE#v%:ENDPROC DEFPROCaa(B%):LOCALN%,M%,Fb%,g%,i%,Gb%,L%,x%,y%,a$:LOCALIa%,q%,U%,Ja%:M%=FNe(16):N%=FNe(16):Ia%=44:q%=80:U%=64:Ja%=100:M%!e%=FNc(100,1):M%!h%=FNc(40,2):M%!d%=FNh(M%,k%):M%!b%=800:N%!e%=FNc(150,1):N%!h%=FNc(40,2):N%!d%=FNh(N%,k%) N%!b%=M%!b%-N%!h%:Gb%=0:FORi%=10TO1STEP-1:IFB%!Na%>=d%(i%)THENGb%=i% NEXTi%:FORi%=9TOGb%STEP-1:a$(i%+1)=a$(i%):d%(i%+1)=d%(i%):e%(i%+1)=e%(i%):NEXTi%:d%(Gb%)=B%!Na%:e%(Gb%)=B%!Oa%:CLS:PROCg(T%!ra%):PROCg(T%!sa%):PROCa(FNb(100),M%!d%,M%!b%):PROCa(FNb(101),N%!d%,N%!b%):a$=FNa(54)+" "+STR$(B%!Na%) a$+=" "+FNa(55)+" "+STR$(Gb%)+FNG(Gb%):L%=LEN(a$)*k%!qa%:x%=FNm(L%,k%!e%):y%=N%!b%-170:PROCc(x%,y%,a$,0,a%!q%):PROCb(M%):PROCb(N%):W%!e%=165:W%!h%=40:PROCm(W%,k%):PROCn(W%):x%=W%!d%+20:y%=W%!b%+12:a$="":i%=1:Fb%=FALSE OSCLI"FX 21,0":REPEAT:g%=GET:CASEg%OF WHEN13:Fb%=TRUE WHEN8:i%-=1:a$=LEFT$(a$,i%-1) OTHERWISE:IFi%<9ANDFNH(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%) UNTILFb%:IFa$=""ORa$=" "THENa$=FNa(56) a$(Gb%)=FNl(a$,a%!U%):a%!Ja%=TRUE:IFa%!Ia%THENPROCD ENDPROC DEFFNH(Hb%):=Hb%>=32ANDHb%<=126 DEFPROCO(Ib%,Jb%,l%,r%):LOCALx%,q%,a$:q%=80:a$=FNa(57)+" "+FNa(59):a$+=FNp(STR$(Ib%),10," ",TRUE):PROCc(0,k%!h%-k%!`%,a$,0,a%!q%):a$=FNa(58)+" "+FNa(57):a$+=" "+FNa(59)+FNp(STR$(Jb%),10," ",TRUE):x%=k%!e%-LEN(a$)*k%!qa% PROCc(x%,k%!h%-k%!`%,a$,0,a%!q%):PROCi(l%):PROCp(r%):PROCk:ENDPROC DEFPROCi(`a%):LOCALq%,a$:q%=80:PROCa(FNb(1),0,0):a$=" = "+STR$(`a%):PROCc(o%!e%,0,a$,0,a%!q%):ENDPROC DEFPROCp(`a%):LOCALx%,q%,a$:q%=80:a$=FNa(60)+" "+FNa(59):a$+=FNp(STR$(`a%),3,"0",TRUE):x%=k%!e%-LEN(a$)*k%!qa%:PROCc(x%,0,a$,0,a%!q%):ENDPROC DEFPROCo(a$):LOCALx%,y%,L%,q%:q%=80:L%=LEN(a$)*k%!qa%:x%=FNm(L%,k%!e%):y%=k%!h%-k%!`%:PROCc(x%,y%,a$,0,a%!q%):ENDPROC DEFPROCh(Kb%):LOCAL_a%,Ta%,q%,x%,a$:_a%=12:Ta%=16:q%=80:B%!Na%+=Kb%:a$=FNa(57)+" "+FNa(59):a$+=FNp(STR$(B%!Na%),10," ",TRUE):PROCc(0,k%!h%-k%!`%,a$,0,a%!q%):IFB%!Na%-a%!_a%>=5000THEN B%!Y%+=1:PROCi(B%!Y%):a%!_a%=B%!Na%:a%!Ta%=0 ENDIF IFB%!Na%>d%(1)THEN a$=FNa(58)+" "+FNa(57)+" ":a$+=FNa(59):a$+=FNp(STR$(B%!Na%),10," ",TRUE):x%=k%!e%-LEN(a$)*k%!qa%:PROCc(x%,k%!h%-k%!`%,a$,0,a%!q%) ENDIF ENDPROC DEFPROCk:LOCALLb%,Mb%,d$:Mb%=FNe(16):Lb%=0:Mb%!e%=FNc(20,1):Mb%!h%=FNc(10,2):Mb%!d%=FNh(Mb%,k%):Mb%!b%=0:IFa%!Lb%<0ORa%!Lb%>2THEN ERROR255,FNa(111)+" "+STR$(a%!Lb%) ENDIF d$=FNb(120+a%!Lb%):PROCa(d$,Mb%!d%,Mb%!b%):PROCb(Mb%):ENDPROC DEFPROCP:LOCALO%,ub%,vb%,Xa%:O%=ea%:ub%=ia%:vb%=ja%:Xa%=ka%:PROCB:PROCq:ENDPROC DEFPROCB:LOCALK%,Q%,nb%:nb%=104:f%!d%=50:f%!b%=550:f%!O%=0:f%!_%=0:f%!S%=3:f%!P%=f%!S%:f%!ub%=1:f%!vb%=f%!Va%:f%!Xa%=1:f%!e%=(f%!Va%*I%!e%)+((f%!Va%-1)*f%!Ua%):f%!h%=f%!Wa%*I%!h%:FORQ%=1TOf%!Va%:FORK%=1TOf%!Wa% c%(Q%,K%)=((K%+1)/2)+(f%!O%*10):NEXTK%:NEXTQ%:a%!nb%=FALSE:ENDPROC DEFPROCq:LOCALK%,Q%,x%,y%,s%:s%=FNe(16):FORQ%=f%!ub%TOf%!vb%:x%=f%!d%+((Q%-1)*(I%!e%+f%!Ua%)):FORK%=f%!Xa%TOf%!Wa%:y%=f%!b%+((K%-1)*I%!h%):IFc%(Q%,K%)>0THEN c%(Q%,K%)=((K%+1)/2)+(f%!O%*10) ENDIF IFc%(Q%,K%)<>0THEN CASESGN(c%(Q%,K%))OF WHEN-1:PROCia(x%,y%,Q%,K%) WHEN1:PROCa(FNb(27)+STR$(c%(Q%,K%)),x%,y%) ENDCASE ELSE:s%!d%=x%:s%!b%=y%:s%!e%=I%!e%:s%!h%=I%!h%:PROCd(s%) ENDIF NEXTK%:NEXTQ%:PROCb(s%):ENDPROC DEFPROCia(x%,y%,r%,c%):LOCALs%:c%(r%,c%)+=1:PROCa(FNb(26),x%,y%):IFc%(r%,c%)=0THEN s%=FNe(16):s%!d%=x%:s%!b%=y%:s%!e%=I%!e%:s%!h%=I%!h%:PROCd(s%):PROCb(s%) ENDIF ENDPROC DEFPROCz:LOCALs%,i%:s%=FNe(16):FORi%=1TO3:f%!b%-=I%!h%/3:PROCq:NEXTi%:s%!d%=f%!d%:s%!b%=f%!b%+f%!h%:s%!e%=f%!e%:s%!h%=I%!h%:PROCd(s%):PROCb(s%):ENDPROC DEFPROCba:LOCALZ%,Nb%,F%,Ob%,Pb%,S%,i%,o$:S%=1:Qb%=24:Z%=FNe(28):Nb%=FNe(28):PROCd(f%):PROCd(o%):IFw%!A%THENPROCd(w%):w%!A%=FALSE IFm%!A%THENPROCd(m%):m%!A%=FALSE PROCja:PROCA:o%!d%=FNh(o%,k%):Z%!d%=0-I%!e%:Z%!b%=o%!b%:Z%!P%=S%:Nb%!d%=k%!e%:Nb%!b%=o%!b%:Nb%!P%=0-S%:B%!Y%=0:PROCg(T%!sa%):PROCi(B%!Y%):PROCp(B%!Oa%):PROCa(FNb(1),o%!d%,o%!b%):O%=0:Pb%=FALSE:REPEAT:Z%!d%+=Z%!P%:Z%!Qb%=Z%!d%+I%!e%:Nb%!d%+=Nb%!P% SYSFNd(6)TOF%:IFF%-Ob%>=50THENPb%=FNq(Pb%):Ob%=F% IFPb%THENo$=FNb(21)ELSEo$=FNb(20) PROCa(o$,Z%!d%,Z%!b%):PROCa(o$,Nb%!d%,Nb%!b%):PROCe(2):WAIT:UNTILZ%!Qb%>=o%!d%:FORi%=1TO10:PROCa(FNb(20),Z%!d%,Z%!b%):PROCa(FNb(20),Nb%!d%,Nb%!b%):PROCe(20):PROCa(FNb(21),Z%!d%,Z%!b%):PROCa(FNb(21),Nb%!d%,Nb%!b%):PROCe(20):WAIT:NEXTi%:PROCj(2):FORi%=1TO3 PROCa(FNb(2)+STR$(i%),o%!d%,o%!b%):PROCe(20):WAIT:NEXTi%:PROCe(20):PROCd(o%):PROCb(Z%):PROCb(Nb%):ENDPROC DEFPROCM:LOCALi%,mb%,Ob%:mb%=ga%:Ob%=ha%:FORi%=1TO10:a%(i%)=FNg(48,0):a%(i%)!e%=FNc(5,1):a%(i%)!h%=FNc(20,2):SYSFNd(6)TOa%(i%)!mb%:SYSFNd(6)TOa%(i%)!Ob%:a%(i%)!A%=FALSE:NEXTi%:ENDPROC DEFPROCda(p%):LOCALRb%,Sb%,Tb%,Ub%,x%,y%:LOCALO%,Vb%:O%=ea%:Vb%=fa%:Rb%=RND(10):Tb%=B%!Oa%+5:IFTb%>100THEN Tb%=100:IFB%!Oa%MOD10=0THENf%!Ya%+=1 ENDIF IFFNn(Tb%)ANDFNn(f%!Ya%)THEN IFc%(Rb%,f%!Xa%)>0THEN x%=f%!d%+(Rb%-1)*(I%!e%+f%!Ua%):y%=f%!b%+((f%!Xa%-1)*I%!h%)-I%!h%:Sb%=(I%!e%/2)-(a%(p%)!e%/2):a%(p%)!d%=x%+Sb%:a%(p%)!b%=y%:a%(p%)!A%=TRUE:a%(p%)!_%=FALSE:a%(p%)!Vb%=1:a%(p%)!O%=0:Ub%=4:IFFNn(25)THENa%(p%)!Vb%=2:Ub%=Ub%/2 a%(p%)!S%=Ub%:a%(p%)!P%=a%(p%)!S%:PROCj(3) ENDIF ENDIF ENDPROC DEFPROCea(p%):LOCALF%,O%,Ob%,Vb%,d$,r$:O%=ea%:Vb%=fa%:Ob%=ha%:SYSFNd(6)TOF%:IFF%-a%(p%)!Ob%>=40THEN a%(p%)!Ob%=F%:a%(p%)!O%+=1 ENDIF :IFa%(p%)!Vb%=1ANDa%(p%)!O%>1THEN a%(p%)!O%=0 ENDIF IFa%(p%)!Vb%=2ANDa%(p%)!O%>3THEN a%(p%)!O%=0 ENDIF r$=STR$(a%(p%)!O%):IFa%(p%)!Vb%=2ANDa%(p%)!O%=3THEN r$="1" ENDIF d$=FNb(30)+STR$(a%(p%)!Vb%)+r$:IFNOTa%(p%)!_%THEN a%(p%)!b%-=a%(p%)!P%:PROCa(d$,a%(p%)!d%,a%(p%)!b%) ELSE:d$=FNb(30)+"3":PROCa(d$,a%(p%)!d%,a%(p%)!b%) ENDIF ENDPROC DEFPROCfa(p%):LOCALi%:PROCj(2):FORi%=1TO3:PROCa(FNb(2)+STR$(i%),o%!d%,o%!b%):PROCe(20):WAIT:NEXTi%:PROCd(o%):IFw%!A%THEN PROCd(w%):w%!A%=FALSE ENDIF o%!d%=FNh(o%,k%):B%!Y%-=1:PROCi(B%!Y%):PROCd(a%(p%)):a%(p%)!A%=FALSE:PROCa(FNb(1),o%!d%,o%!b%):ENDPROC DEFPROCga(p%):LOCALVb%,mb%:Vb%=fa%:mb%=ga%:IFa%(p%)!Vb%=1THEN IFNOTa%(p%)!_%THEN a%(p%)!_%=TRUE:PROCh(5):d$=FNb(30)+"3":PROCa(d$,a%(p%)!d%,a%(p%)!b%):SYSFNd(6)TOa%(p%)!mb% ENDIF ENDIF PROCd(w%):w%!A%=FALSE:ENDPROC DEFPROCha(p%):LOCALmb%,F%:mb%=ga%:SYSFNd(6)TOF%:IFF%-a%(p%)!mb%>=40THEN PROCd(a%(p%)):a%(p%)!A%=FALSE ENDIF ENDPROC DEFPROCja:LOCALi%,xb%:xb%=52:FORi%=1TOa%!xb%:IFa%(i%)!A%THEN PROCd(a%(i%)):a%(i%)!A%=FALSE ENDIF NEXTi%:ENDPROC DEFPROCN:LOCALi%,x%,Wb%,Xb%,R%:Xb%=ea%:R%=56:Ma%!d%=0:Ma%!b%=0:Ma%!e%=FNc(30,1):Ma%!h%=FNc(15,2):Wb%=k%!e%/a%!R%:x%=Wb%-150:FORi%=1TOa%!R%:b%(i%)=FNg(48,0):b%(i%)!e%=Ma%!e%:b%(i%)!h%=Ma%!h%:b%(i%)!d%=x%+((i%-1)*Wb%) b%(i%)!b%=o%!b%+100:b%(i%)!A%=TRUE:b%(i%)!Xb%=0:NEXTi%:Ma%!d%=b%(1)!d%:Ma%!b%=b%(1)!b%:ENDPROC DEFPROCca:LOCALi%,Xb%,R%:Xb%=ea%:R%=56:FORi%=1TOa%!R%:b%(i%)!A%=TRUE:b%(i%)!Xb%=0:NEXTi%:ENDPROC DEFPROCy:LOCALi%,R%:R%=56:FORi%=1TOa%!R%:IFb%(i%)!A%THENPROCr(b%(i%)) NEXTi%:ENDPROC DEFPROCr(p%):LOCALYb%,Zb%,_b%,L%,Xb%,q%,a$:Xb%=ea%:q%=84:_b%=10-p%!Xb%:a$=STR$(_b%):L%=LEN(a$):Yb%=p%!d%+FNm(L%,p%!e%):Zb%=p%!b%+(p%!h%/2)-(k%!`%/2):Zb%+=7:IFL%=1THENYb%-=7ELSEYb%-=15 PROCd(p%):PROCa(FNb(16),p%!d%,p%!b%):PROCc(Yb%,Zb%,a$,0,a%!q%):ENDPROC DEFPROCC(p%,`b%):LOCALy%,Xb%:Xb%=ea%:wb%=fa%:b%(p%)!Xb%+=1:IFb%(p%)!Xb%>=10THEN PROCd(b%(p%)):b%(p%)!A%=FALSE ELSE:PROCd(b%(p%)):y%=b%(p%)!b%:IF`b%THENb%(p%)!b%+=5ELSEb%(p%)!b%-=5 PROCr(b%(p%)):b%(p%)!_%=TRUE:b%(p%)!b%=y%:SYSFNd(6)TOb%(p%)!wb% ENDIF ENDPROC DEFPROCA:LOCALi%,s%,R%:R%=56:s%=FNe(16):FORi%=1TOa%!R%:IFb%(i%)!A%THEN b%(i%)!A%=FALSE:s%!d%=b%(i%)!d%:s%!b%=b%(i%)!b%:s%!e%=Ma%!e%:s%!h%=Ma%!h%:PROCd(s%) ENDIF NEXTi%:PROCb(s%):ENDPROC DEFFNw(f$):LOCALC%,ac%,bc%,cc%,dc%,ec%,Lb%,i%,g$:C%=FNI(f$):cc%=FNg(C%,0):PROCf(cc%,208,0):SYSFNd(3),16,f$,cc%,0:FORi%=0TO3:g$+=CHR$(cc%?i%):NEXTi%:IFg$="SQSH"THEN PRINTFNa(27)+"...":SYSFNd(7),1<<3,C%TOac%,bc%:IFbc%=-1THENbc%=cc%!4 dc%=FNg(ac%,0):PROCf(dc%,207,0):ec%=FNC(bc%+4):SYSFNd(7),1<<2,dc%,cc%+20,C%-20,ec%+4,bc%TOLb%:IFLb%<>0THENERROR255,FNa(114)+" "+STR$(Lb%) PROCf(dc%,0,1):PROCf(cc%,0,1):PROCb(dc%):PROCb(cc%) ELSE:ec%=FNC(C%+256):SYSwa%,256+10,ec%,f$ ENDIF SYSwa%,256+17,ec%:=ec% DEFFNC(C%):LOCALec%:ec%=FNg(C%,0):ec%!0=C%:ec%!4=0:ec%!8=16:ec%!12=16:=ec% DEFPROCc(x%,y%,a$,fc%,gc%):LOCALi%,hc%,q%,ic%:q%=88:ic%=76:IFgc%<>a%!80ANDgc%<>a%!84THEN ERROR255,FNa(112) ENDIF a%!q%=gc%:hc%=k%!qa%:FORi%=1TOLEN(a$):PROCa(STR$(ASC(MID$(a$,i%,1))),x%+((i%-1)*hc%),y%):IFfc%>0THENPROCe(fc%) NEXTi%:a%!q%=a%!ic%:ENDPROC DEFPROCa(B$,x%,y%):LOCALjc%,q%:q%=88:SYSwa%,256+24,a%!q%,B$TO,,jc%:SYSwa%,512+34,a%!q%,jc%,x%,y%,0:ENDPROC DEFPROCd(G%):GCOL0,0TINT0:RECTANGLEFILLG%!d%,G%!b%,G%!e%,G%!h%:ENDPROC DEFFNm(kc%,k%):=(k%/2)-(kc%/2) DEFPROCu(a$,lc%):LOCALL%,x%,y%,q%:q%=80:L%=LEN(a$)*k%!qa%:x%=FNm(L%,k%!e%):y%=(k%!h%/2)-(k%!`%/2):PROCc(x%,y%,a$,lc%,a%!q%):ENDPROC DEFFNh(mc%,nc%):=(nc%!e%/2)-(mc%!e%/2) DEFPROCm(mc%,nc%):LOCALx%,y%:mc%!d%=(nc%!e%/2)-(mc%!e%/2):mc%!b%=(nc%!h%/2)-(mc%!h%/2):ENDPROC DEFPROCg(b%):LOCALi%,oc%:oc%=k%!e%/T%!e%:FORi%=1TOoc%+1:PROCa(FNb(108),(i%-1)*T%!e%,b%):NEXTi%:ENDPROC DEFPROCn(G%):LOCALx%,y%,pc%,qc%,rc%,sc%,i%:pc%=FNc(3,1):qc%=FNc(3,2):rc%=1:sc%=3:FORi%=1TOG%!e%:x%=G%!d%+((i%-1)*rc%):PROCa(FNb(113),x%,G%!b%):PROCa(FNb(113),x%,G%!b%+(G%!h%-(2*sc%))):NEXTi%:x%=G%!d%+(G%!e%-pc%):FORi%=1TOG%!h%-1 PROCa(FNb(114),G%!d%,G%!b%+((i%-1)*rc%)):PROCa(FNb(114),x%,G%!b%+((i%-1)*rc%)):NEXTi%:PROCa(FNb(111),G%!d%,G%!b%):PROCa(FNb(109),G%!d%,(G%!b%+G%!h%)-qc%):PROCa(FNb(112),G%!d%+(G%!e%-pc%),G%!b%):x%=(G%!d%+G%!e%)-pc%:y%=(G%!b%+G%!h%)-qc% PROCa(FNb(110),x%,y%):ENDPROC DEFFNs(f$,g$):LOCALv%,tc%,uc%,H%,e$:v%=OPENIN(f$):INPUT#v%,e$:e$=FND(e$):IFe$<>g$THENCLOSE#v%:ERROR255,"Bad Magic!" INPUT#v%,H%,uc%,uc%,tc%:CLOSE#v%:=tc%EORH% DEFFNt(f$,g$,RETURNk%(),RETURNh$()):LOCALv%,i%,tc%,H%,Cb%,Bb%,V%,Db%,e$:V%=0:v%=OPENIN(f$):INPUT#v%,e$:e$=FND(e$):IFe$<>g$THENCLOSE#v%:ERROR255,"Bad Magic!" INPUT#v%,H%,Cb%,Bb%,tc%:Cb%=Cb%EORH%:Bb%=Bb%EORH%:tc%=tc%EORH%:FORi%=1TOtc%:INPUT#v%,k%(i%),h$(i%):NEXTi%:CLOSE#v%:FORi%=1TOtc%:V%+=LEN(h$(i%)):NEXTi%:Db%=V%/tc%:IFV%<>Cb%ORDb%<>Bb%THEN ERROR255,"File Inconsistant with header!" ENDIF =H% DEFFND(C$):LOCALi%,c$:FORi%=LEN(a$)TO1STEP-1:c$+=MID$(C$,i%,1):NEXTi%:=c$ DEFPROCs(vc%,H%,RETURNb$()):LOCALi%:FORi%=1TOvc%:b$(i%)=FNl(b$(i%),H%):NEXTi%:ENDPROC DEFFNa(wc%):LOCALH%:H%=a%!68:=FNv(wc%,ca%,h%(),g$(),H%,106) DEFFNb(wc%):=FNv(wc%,ta%,i%(),c$(),-1,107) DEFFNd(wc%):=FNv(wc%,ua%,j%(),d$(),-1,108) DEFFNf(wc%):=FNv(wc%,ba%,g%(),f$(),xc%,109) DEFFNv(wc%,vc%,l%(),b$(),H%,yc%):LOCALi%,zc%:zc%=0:FORi%=1TOvc%:IFl%(i%)=wc%THENzc%=i%:i%=vc% NEXTi%:IFzc%=0THEN IFwc%>=106ANDwc%<=108THEN ERROR255,"Missing message!!!" ELSE:IFyc%=109THEN ERROR255,"Can't find LibASH resource : "+STR$(wc%) ELSE:ERROR255,FNa(yc%)+" "+STR$(wc%) ENDIF ENDIF ENDIF IFH%=-1THEN=b$(zc%) =FNl(b$(zc%),H%) DEFFNE(f$):LOCALv%:v%=0:SYSFNd(31),,f$TOv%:=v% DEFPROCj(Ac%):LOCALLb%,x$:Lb%=0:x$=FNa(110)+" "+STR$(Ac%):IFa%!Lb%>0THEN IFAc%<1ANDAc%>4THENERROR255,x$ OSCLI"SPlay_fire0"+STR$(Ac%)+"mhh" ENDIF ENDPROC DEFPROCt:LOCALs%:s%=FNe(20):s%!0=4:s%!4=5:s%!8=11:s%!12=12:s%!16=-1:SYSFNd(5),s%,s%:k%!na%=s%!0:k%!oa%=s%!4:k%!e%=(s%!8)+1<k%!pa%THENPROCt CASEBc%OF WHEN1:Cc%=C%<>k%!na% WHEN4:Cc%=C%>>k%!oa% OTHERWISE:ERROR255,FNa(103)+" "+STR$(Bc%) ENDCASE =Cc% DEFFNo(G%,Ec%):LOCALFc%,Gc%,Hc%,Ic%:Hc%=FALSE:Ic%=FALSE:IFG%!A%ANDEc%!A%THEN Fc%=Ec%!d%+Ec%!e%:Gc%=Ec%!b%+Ec%!h%:IFG%!d%>=Ec%!d%ANDG%!d%=Ec%!b%ANDG%!b%-1THEN SYS"TimPlayer_SongStop",a%!4:SYS"TimPlayer_SongUnload",a%!4 ENDIF PROCv:ENDPROC DEFFNj(D$,y$):LOCALl$,t$,J%,zc%:l$=STRING$(10," "):RIGHT$(l$,3)=" : ":LEFT$(l$,LEN(y$))=y$:J%=FNr(D$):t$="Missing!!":zc%=FALSE:IFJ%=1THENt$="OK.":zc%=TRUE l$+=t$:PRINTl$:=zc% DEFPROCG:LOCALv%,cb%,hb%,Jc%,fb%,eb%:cb%=0:hb%=48:eb%=92:v%=OPENIN(h$+"Configs"):INPUT#v%,Jc%,fb%:CLOSE#v%:IFJc%>=0ANDJc%<=2THENa%!cb%=Jc% IFfb%>=0ANDfb%<=128THENa%!hb%=fb% a%!eb%=FALSE:ENDPROC DEFPROCL:LOCALv%,cb%,hb%,eb%:cb%=0:hb%=48:eb%=92:IFa%!eb%THEN v%=OPENOUT(h$+"Configs"):PRINT#v%,a%!cb%,a%!hb%:CLOSE#v% ENDIF ENDPROC DEFFNy(tc%):LOCALj$:j$="Dump"+STR$(tc%):IFFNr(q$+j$)<>0THEN REPEAT:tc%+=1:j$="Dump"+STR$(tc%):UNTILFNr(q$+j$)=0ORLEN(j$)>10:IFLEN(j$)>10THENtc%=-1 ENDIF =tc% DEFPROCf(D%,wc%,Bc%):LOCALa$:IFBc%=0THENa$=FNa(200)ELSEa$=FNa(209) a$+=" &":PRINTa$;~FNx(D%);:PRINT" "+FNa(201)+" &";~D%;:IFBc%=0THEN a$=" "+FNa(202)+" "+FNa(wc%) ELSE:a$="." ENDIF PRINTa$:ENDPROC DEFPROCH:LOCALv%,V%,Db%,Cb%,Bb%,i%,da%,g$:LOCALU%,C%:U%=60:C%=72:v%=OPENIN(b$+"Creds"):INPUT#v%,g$:IFg$<>"DERC"THEN CLOSE#v%:ERROR255,FNa(101):END ENDIF INPUT#v%,a%!U%,da%,Cb%,Bb%:a%!C%=da%EORa%!U%:Cb%=Cb%EORa%!U%:Bb%=Bb%EORa%!U%:DIMe$(a%!C%),f%(a%!C%):FORi%=1TOa%!C%:INPUT#v%,f%(i%),e$(i%):NEXTi%:CLOSE#v%:V%=0:FORi%=1TOa%!C%:V%+=LEN(e$(i%)):NEXTi%:Db%=V%/a%!C%:IFDb%<>Bb%ORV%<>Cb%THENERROR255,FNa(113) ENDPROC DEFFNn(n%):=RND(100)<=n% DEFFNl(a$,H%):LOCALi%,z$:FORi%=1TOLEN(a$):z$+=CHR$(ASC(MID$(a$,i%,1))EORH%):NEXTi%:=z$ DEFPROCe(n%):LOCALt%:t%=TIME+n%:REPEAT:UNTILTIME>=t%:ENDPROC DEFFNq(n%):=n%EOR1 DEFFNG(n%):LOCALc$,u%:u%=VAL(RIGHT$(STR$(n%),1)):c$=FNa(65):IFu%>=1ANDu%<=3THENc$=FNa(u%+61) =c$ DEFFNp(a$,Kc%,A$,Lc%):LOCALMc%,c$:Mc%=Kc%-LEN(a$):IFMc%<=0THEN c$=LEFT$(a$,Kc%) ELSE:IFLc%THEN c$=STRING$(Kc%,A$):RIGHT$(c$,LEN(a$))=a$ ELSE:c$=a$+STRING$(Mc%,A$) ENDIF ENDIF =c$ DEFFNB(a$,Kc%):LOCALc$:c$=STRING$(Kc%," "):RIGHT$(c$,LEN(a$))=a$:=c$ DEFFNr(k$):LOCALzc%:SYS"XOS_File",17,k$TOzc%:=zc% DEFFNI(k$):LOCALC%:SYSFNd(3),17,k$TO,,,,C%:=C% DEFFNz(Bc%,k$):LOCALv%,Nc%,Oc%,Pc%:Pc%=FALSE:CASEBc%OF WHEN0:v%=OPENUP(k$+"chkfile") WHEN1:v%=OPENUP(k$) OTHERWISE:ERROR255,FNa(104)+" "+STR$(Bc%) ENDCASE IFv%<>0THEN SYSFNd(4),254,v%TOOc%;Nc%:IF(Nc%AND1)THENCLOSE#v%:ERROR255,FNa(105) IF((Oc%AND(1<<7))<>0)THENPc%=TRUE CLOSE#v% ENDIF =Pc% DEFPROCF(H%):LOCALQc%:Rc%=0:Sc%=0:xc%=H%:SYSFNf(210),-1,-1TOTc%:SYSFNf(211)TOUc%;Qc%:IFQc%AND1THENUc%=16384 PROCka(Uc%):ENDPROC DEFPROCv:IFRc%THEN SYSFNf(210),Rc%-32768,-1TOTc%:Rc%=0:Sc%=0 ENDIF ENDPROC DEFFNe(Vc%):LOCALD%,C%:C%=(Vc%+15)AND-4:D%=FNJ(C%):IFD%ELSEERROR254,FNf(110) D%!0=&DEADDEAD:D%!4=Vc%:!(D%-8+(D%!-4))=&DEADDEAD:=D%+8 DEFFNg(Vc%,Kb%):LOCALD%:D%=FNe(Vc%):PROCla(D%,Kb%):=D% DEFPROCb(RETURND%):CASEFNK(D%)OF WHEN1:ERROR254,FNf(111) WHEN2:ERROR254,FNf(112) WHEN3:ERROR254,FNf(113) ENDCASE D%-=8:Sc%-=D%!-4:SYSFNf(212),3,Rc%,D%:D%=0:ENDPROC DEFFNx(D%):LOCALs%:s%=D%-4:=s%!0 DEFPROCla(D%,Kb%):LOCALsb%,C%:C%=FNx(D%):FORsb%=0TOC%-4STEP4:D%!sb%=Kb%:NEXTsb%:ENDPROC DEFFNi(D%):LOCALWc%,sb%,C%:C%=FNx(D%):Wc%=FNe(C%):FORsb%=0TOC%-4STEP4:Wc%!sb%=D%!sb%:NEXTsb%:=Wc% DEFFNK(D%):LOCALJb%,Xc%:Jb%=FALSE:Xc%=FALSE:D%-=8:IFD%!0<>&DEADDEADTHENXc%=TRUE IF!(D%-8+(D%!-4))<>&DEADDEADTHENJb%=TRUE IFXc%ANDJb%THEN=3 IFJb%THEN=2 IFXc%THEN=1 =0 DEFPROCka(C%):IFRc%THENERROR254,FNf(114) C%=(C%+Uc%-1)ANDNOT(Uc%-1):Rc%=HIMEM:SYSFNf(210),Tc%+C%,-1TOTc%:C%=Tc%+32768-Rc%:IFC%<1THEN Rc%=0:ERROR254,FNf(115) ELSE:SYSFNf(212),0,Rc%,,C% ENDIF Sc%=0:ENDPROC DEFPROCma(Vc%):LOCALYc%:Yc%=Tc%:SYSFNf(210),Tc%+Vc%,-1TOTc%:Vc%=Tc%-Yc%:IFVc%THENSYSFNf(212),5,Rc%,,Vc%TO,,,Vc% ENDPROC DEFFNJ(Vc%):LOCALD%,Qc%:SYSFNf(213),2,Rc%,,Vc%TO,,D%;Qc%:IFQc%AND1THEN PROCma((Vc%+Uc%)ANDNOT(Uc%-1)):SYSFNf(213),2,Rc%,,Vc%TO,,D%;Qc%:IFQc%AND1THEN=0 ENDIF Sc%+=D%!-4:=D%