REM Acorn Invaders REM Packed by Make v1.41 15/5/08 On 11 Jun 2009 ONERRORPROCC:END MODE28:OFF:a$="Acorn Invaders. (c)2007-2009 DynaByte Software":PRINTa$:PRINTSTRING$(LEN(a$),"-"):PRINT:p$=".Resources.":b$=".":h$=b$+"Data.":q$=b$+"Screens.":i$=p$+"Graphics.":b$=p$+"Data.":u$=p$+"Sound." aa%=FALSE:PRINT"Checking files...":IFNOTFNj(i$+"Gfx0","Sprites")THENaa%=TRUE IFNOTFNj(i$+"Gfx1","Charset")THENaa%=TRUE IFNOTFNj(i$+"Gfx2","Numerics")THENaa%=TRUE IFNOTFNj(u$+"Intro","Music")THENaa%=TRUE IFNOTFNj(b$+"Creds","Credits")THENaa%=TRUE IFNOTFNj(b$+"Msg","Messages")THENaa%=TRUE IFNOTFNj(b$+"ImgLUT","Lookups")THENaa%=TRUE IFNOTFNj(b$+"SWIs","Lookups")THENaa%=TRUE IFNOTFNj(b$+"AshLUT","Lookups")THENaa%=TRUE IFaa%THENERROR255,"File Missing!!" PRINT:PRINT"Loading LibASH Resources.":ba%=FNs(b$+"AshLUT","TULA"):DIMg%(ba%),f$(ba%):H%=FNt(b$+"AshLUT","TULA",g%(),f$()):PROCD(H%):d%=FNg(76,0):PRINT"Loading Messages...";:ca%=FNs(b$+"Msg","SGSM"):DIMh%(ca%),g$(ca%) da%=FNt(b$+"Msg","SGSM",h%(),g$()):d%!68=da%:PRINTFNa(14):PRINT:PRINTFNa(12):PRINTFNa(8)+" "+FNa(2):d%!0=1:d%!4=-1:d%!40=FNx(0):IFd%!40=-1THENERROR255,FNa(109) PRINTFNa(15)+STR$(d%!40):d%!44=TRUE:d%!48=128:d%!52=5:d%!56=5:ea%=0:DIMa$(10),d%(10):DIMe%(10):PRINTFNa(8)+" "+FNa(22):b%=0:a%=4:e%=8:k%=12:R%=16:S%=20:A%=24:Y%=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:Z%=32:sa%=16:ta%=20:PRINTFNa(9)+" "+FNa(3):ua%=FNs(b$+"ImgLUT","TULI"):DIMi%(ua%),c$(ua%):da%=FNt(b$+"ImgLUT","TULI",i%(),c$()):PRINTFNa(26):PROCr(ua%,da%,c$()):PRINTFNa(14):PRINTFNa(9)+" "+FNa(13) va%=FNs(b$+"SWIs","TULS"):DIMj%(va%),d$(va%):da%=FNt(b$+"SWIs","TULS",j%(),d$()):PRINTFNa(26):PROCr(va%,da%,d$()):PRINTFNa(14):PRINTFNa(9)+" "+FNa(24)+" ";:IFFNr(h$+"Configs")=1THEN PROCE:PRINTFNa(18) ELSE:PRINTFNa(25) ENDIF PRINT:PRINTFNa(8)+" "+FNa(1)+" ";:wa%=0:SYSFNd(30)TOwa%:PRINTFNa(21)+" "+STR$(wa%/100):d%!4=FNC(u$+"Intro"):PRINT:PRINTFNa(17)+" "+FNa(16):SYSFNd(1),,FNd(2)TOxa%:PRINTFNa(9)+" "+FNa(4);:ya%=FNw(i$+"Gfx0"):PRINTFNa(14):PRINTFNa(9)+" "+FNa(5);:za%=FNw(i$+"Gfx1"):PRINTFNa(14) PRINTFNa(9)+" "+FNa(23);:Aa%=FNw(i$+"Gfx2"):PRINTFNa(14):Ba%=ya%:PRINT:PRINTFNa(9)+" "+FNa(6);:v%=OPENIN(b$+"Creds"):INPUT#v%,f$:IFf$<>"DERC"THEN CLOSE#v%:ERROR255,FNa(101):END ENDIF INPUT#v%,d%!60,da%,Ca%,Da%:d%!72=da%EORd%!60:Ca%=Ca%EORd%!60:Da%=Da%EORd%!60:DIMe$(d%!72),f%(d%!72):FORi%=1TOd%!72:INPUT#v%,f%(i%),e$(i%):NEXTi%:CLOSE#v%:T%=0:FORi%=1TOd%!72:T%+=LEN(e$(i%)):NEXTi%:Ea%=T%/d%!72:IFEa%<>Da%ORT%<>Ca%THEN ERROR255,FNa(113) ELSE:PRINTFNa(14) ENDIF PRINT:PRINTFNa(7):v$=h$+"HiTable":IFFNr(v$)<>1THEN IFNOTFNy(0,h$)THEN d%!44=FALSE:PRINTFNa(19)+" "+FNa(10)+" "+FNa(20) ELSE:PRINTFNa(19)+" "+FNa(11)+" "+FNa(20) ENDIF PROCF(d%!44) ELSE:IFNOTFNy(1,v$)THEN d%!44=FALSE:PRINTFNa(18)+" "+FNa(10)+" "+FNa(20) ELSE:PRINTFNa(18)+" "+FNa(11)+" "+FNa(20) ENDIF PROCG ENDIF PRINT:PRINTFNa(12):PROCe(150):h%=FNe(36):U%=FNe(24):V%=FNe(16):CLS:PROCs:h%!ra%=FNc(8,1):h%!Z%=FNc(8,2)+7:U%!e%=FNc(6,1):U%!k%=FNc(6,2):U%!sa%=h%!k%-50:U%!ta%=30:IFd%!0=1THEN SYSFNd(33),d%!4 ENDIF SYSFNd(36),d%!4,d%!48:WHILENOTFND:CLS:PROCH:ENDWHILE:CLS:V%!e%=220:V%!k%=40:PROCl(V%,h%):V%!a%-=3:PROCm(V%):PROCt(FNa(31),10):IFd%!44THENPROCI IFd%!0=1THEN SYSFNd(36),d%!4,-1TO,Fa%:FORi%=Fa%TO0STEP-2:SYSFNd(36),d%!4,i%:PROCe(4):NEXTi%:SYSFNd(35),d%!4:SYSFNd(32),d%!4:d%!4=-1 ENDIF PROCu:END DEFFND:LOCALi%,L%,M%,C%,K%,m%,_%,Ga%,Ha%:LOCALp%,W%,Ia%,Ja%,Ka%,La%,Ma%,Na%,Oa%:LOCALx%,y%,O%,Pa%,s$,a$:Pa%=44:L%=FNg(16,0):M%=FNg(16,0):C%=FNg(16,0):m%=FNg(16,0):_%=FNg(16,0):W%=FNg(16,0):p%=FNg(16,0):L%!e%=FNc(100,1):L%!k%=FNc(40,2) L%!b%=FNh(L%,h%):L%!a%=800:M%!e%=FNc(150,1):M%!k%=FNc(40,2):M%!b%=FNh(M%,h%):M%!a%=L%!a%-M%!k%:C%!e%=720:C%!k%=500:C%!b%=FNh(C%,h%):C%!a%=200:m%!e%=FNc(40,1):m%!k%=FNc(20,2):m%!b%=(C%!b%+C%!e%/2)-150:m%!a%=(C%!a%+C%!k%)-125 p%!e%=FNc(30,1):p%!k%=FNc(15,2):_%!e%=FNc(20,1):_%!k%=FNc(20,2):_%!b%=(C%!b%+C%!e%/2)-150:_%!b%+=FNh(_%,m%):Ga%=FNi(_%):Ha%=FNi(_%)::Ha%!a%=m%!a%-40-Ha%!k%:Ga%!a%=Ha%!a%-40-Ga%!k%:_%!a%=Ga%!a%-40-_%!k% W%!e%=FNc(20,1):W%!k%=FNc(20,2):W%!b%=(C%!b%+C%!e%/2)-120:Ia%=FNi(W%):Ja%=FNi(W%):Ka%=FNi(W%):Ka%!b%=C%!b%:Qa%=FNi(Ka%):Ma%=FNi(Ka%):La%=FNi(W%):La%!b%=C%!b%:La%!b%+=(C%!e%/2)+10:Na%=FNi(La%):Oa%=FNi(La%) :W%!a%=(C%!a%+C%!k%)-120:Ia%!a%=W%!a%-60:Ja%!a%=Ia%!a%-60:Ma%!a%=Ja%!a%-90:Qa%!a%=Ma%!a%-60:Ka%!a%=Qa%!a%-60:La%!a%=Ja%!a%-90:Na%!a%=La%!a%-60:Oa%!a%=Na%!a%-60:CLS:PROCf(U%!sa%):PROCf(U%!ta%):PROCj:FORi%=0-L%!e%TOL%!b%STEP5 WAIT:PROCa(FNb(100),i%,L%!a%):PROCe(1):NEXTi%:FORi%=h%!e%TOM%!b%STEP-5:WAIT:PROCa(FNb(101),i%,M%!a%):PROCe(1):NEXTi%:a$=FNa(32):K%=LEN(a$)*h%!ra%:y%=170:PROCc(FNm(K%,h%!e%),y%,a$,11,0):a$=FNa(33):K%=LEN(a$)*h%!ra%:y%-=h%!Z%:PROCc(FNm(K%,h%!e%),y%,a$,11,0) WHILENOTINKEY(-99)ANDNOTINKEY(-17)ANDNOTINKEY(-82):y%=C%!a%+C%!k%:FORi%=1TOd%!72:a$=FNl(e$(i%),d%!60):x%=FNk(a$):CASESGN(f%(i%))OF WHEN-1:y%-=(ABS(f%(i%))*h%!Z%) WHEN1:y%-=f%(i%) OTHERWISE:ERROR255,FNa(115)+" "+STR$(f%(i%)) ENDCASE PROCc(x%,y%,a$,0,0):NEXTi%:O%=FNu:IFO%=1THEN=TRUE IFO%=2THEN=FALSE PROCd(C%):a$=FNa(57)+" "+FNa(34):x%=FNk(a$):y%=C%!a%+C%!k%-20:PROCc(x%,y%,a$,0,0):a$=FNa(35):y%-=h%!Z%:x%=FNk(a$):PROCc(x%,y%,a$,0,0):x%=m%!b%+m%!e%+10:PROCa(FNb(11),m%!b%,m%!a%):a$=FNa(36)+" "+FNa(40):PROCc(x%,m%!a%+10,a$,0,0) PROCa(FNb(24),Ha%!b%,Ha%!a%):a$=FNa(37)+" "+FNa(40):PROCc(x%,Ha%!a%+12,a$,0,0):PROCa(FNb(22),Ga%!b%,Ga%!a%):a$=FNa(38)+" "+FNa(40):PROCc(x%,Ga%!a%+12,a$,0,0):PROCa(FNb(20),_%!b%,_%!a%):a$=FNa(39)+" "+FNa(40):PROCc(x%,_%!a%+12,a$,0,0) K%=p%!e%/h%!ra%+2:s$=FNa(66):a$=s$+STRING$(K%," ")+FNa(67):x%=FNk(a$):y%=_%!a%-(3*h%!Z%):PROCc(x%,y%,a$,0,0):p%!b%=x%+7+(LEN(s$)*h%!ra%):p%!a%=y%:PROCa(FNb(1),p%!b%,p%!a%):O%=FNu:IFO%=1THEN=TRUE IFO%=2THEN=FALSE PROCd(C%):a$=FNa(41):x%=FNk(a$):y%=C%!a%+C%!k%-20:PROCc(x%,y%,a$,0,0):x%=W%!b%+W%!e%+10:PROCa(FNb(102),W%!b%,W%!a%):a$=FNa(42)+" "+FNa(43):PROCc(x%,W%!a%+12,a$,0,0):PROCa(FNb(103),Ia%!b%,Ia%!a%):a$=FNa(42)+" "+FNa(44):PROCc(x%,Ia%!a%+12,a$,0,0) PROCa(FNb(104),Ja%!b%,Ja%!a%):PROCc(x%,Ja%!a%+12,FNa(45),0,0):x%=Ka%!b%+Ka%!e%+10:PROCa(FNb(105),Qa%!b%,Qa%!a%):a$=FNa(46)+" "+FNa(49):PROCc(x%,Qa%!a%+12,a$,0,0):PROCa(FNb(117),Ma%!b%,Ma%!a%):PROCc(x%,Ma%!a%+12,FNa(76),0,0) PROCa(FNb(107),Ka%!b%,Ka%!a%):a$=FNa(48)+" "+FNa(49):PROCc(x%,Ka%!a%+12,a$,0,0):x%=La%!b%+La%!e%+10:PROCa(FNb(106),La%!b%,La%!a%):a$=FNa(47)+" "+FNa(73):PROCc(x%,La%!a%+12,a$,0,0):PROCa(FNb(115),Na%!b%,Na%!a%):a$=FNa(47)+" "+FNa(77)+" ":a$+=FNa(74) PROCc(x%,Na%!a%+12,a$,0,0):PROCa(FNb(116),Oa%!b%,Oa%!a%):a$=FNa(47)+" "+FNa(77)+" ":a$+=FNa(75):PROCc(x%,Oa%!a%+12,a$,0,0):O%=FNu:IFO%=1THEN=TRUE IFO%=2THEN=FALSE PROCd(C%):a$=FNa(50):IFd%!Pa%THENa$=FNa(51) x%=FNk(a$):y%=C%!a%+C%!k%-20:PROCc(x%,y%,a$,0,0):a$=FNa(58)+" "+FNa(52):x%=FNk(a$):y%-=h%!Z%:PROCc(x%,y%,a$,0,0):y%=(C%!a%+C%!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,0) y%-=2*h%!Z%:FORi%=1TO10:IFi%<10THEN a$=" "+STR$(i%)+". " ELSE:a$=" "+STR$(i%)+". " ENDIF s$=FNl(a$(i%),d%!64):a$+=FNo(s$,8," ",FALSE):a$+=" .... ":a$+=FNz(STR$(d%(i%)),10):a$+=" ... "+FNz(STR$(e%(i%)),3):x%=FNk(a$):PROCc(x%,y%-(i%*(h%!Z%+5)),a$,0,0):NEXTi%:O%=FNu:IFO%=1THEN=TRUE IFO%=2THEN=FALSE PROCd(C%):ENDWHILE:ERROR255,FNa(102):=FALSE DEFFNu:LOCALt%,O%:t%=TIME+750:O%=FALSE:REPEAT:IFINKEY(-82)THENPROCv IFINKEY(-102)THENPROCw IFINKEY(-59)THENPROCk(4) IFINKEY(-60)THENPROCk(-4) UNTILTIME>=t%ORINKEY(-17)ORINKEY(-99):IFINKEY(-17)THENO%=1 IFINKEY(-99)THENO%=2 IFO%THEN PROCb(L%):PROCb(M%):PROCb(C%):PROCb(m%):PROCb(_%):PROCb(Ga%):PROCb(Ha%):PROCb(W%):PROCb(Ia%):PROCb(Ja%):PROCb(Ka%):PROCb(La%):PROCb(Qa%):PROCb(Ma%):PROCb(Na%):PROCb(Oa%):PROCb(p%) ENDIF =O% DEFFNk(a$):LOCALK%:K%=LEN(a$)*h%!ra%:=C%!b%+FNm(K%,C%!e%) DEFPROCH:LOCALp%,w%,m%,f%,B%:LOCALI%:LOCALc%(),a%():LOCALb%(),Ra%:LOCALSa%,Ta%,Ua%,Va%:LOCALWa%,Xa%,Ya%:LOCALZa%:LOCAL_a%,`a%,ab%,bb%,cb%:LOCALdb%,K%,a$,x%,y%,i%,j%:p%=FNe(32):w%=FNe(28):m%=FNe(48):f%=FNe(68):I%=FNe(16):B%=FNg(16,0) Sa%=0:Ta%=4:Ua%=8:Va%=12:Za%=16:eb%=12:Wa%=28:Ra%=56:_a%=ga%:`a%=ha%:ab%=ia%:bb%=la%:cb%=ma%:DIMc%(10,6),a%(10),b%(d%!Ra%):p%!e%=FNc(30,1):p%!k%=FNc(15,2):p%!b%=FNh(p%,h%):p%!a%=50:p%!S%=6:p%!R%=p%!S% I%!e%=FNc(20,1):I%!k%=FNc(20,2):m%!e%=FNc(40,1):m%!k%=FNc(20,2):m%!a%=U%!sa%-(10+m%!k%):m%!S%=5:m%!A%=FALSE:m%!ha%=1:w%!e%=FNc(5,1):w%!k%=FNc(20,2):w%!A%=FALSE:w%!S%=10:B%!Ua%=1:B%!Sa%=3:B%!Va%=FALSE d%!Za%=-1:d%!eb%=0:f%!_a%=FNc(20,1):f%!`a%=10:f%!ab%=6:f%!A%=TRUE:f%!cb%=4:SYSFNd(6)TOf%!na%:PROCJ:PROCK:PROCf(U%!sa%):PROCf(U%!ta%):PROCL(0,d%(1),B%!Sa%,B%!Ua%):PROCM:PROCx:PROCa(FNb(1),p%!b%,p%!a%):WHILEB%!Sa%>0:db%=FALSE:IFd%!Wa%=0THEN IFINKEY(-74)THENPROCN(p%!b%,p%!a%) IFINKEY(-98)THENPROCO:db%=TRUE IFINKEY(-67)THENPROCP:db%=TRUE IFINKEY(-17)THENPROCQ ENDIF IFINKEY(-102)THENPROCw IFINKEY(-82)THENPROCv IFINKEY(-56)THENPROCR IFINKEY(-59)THENPROCk(4) IFINKEY(-60)THENPROCk(-4) IFd%!Wa%=0THEN IFdb%THEN p%!b%+=p%!R%:PROCa(FNb(1),p%!b%,p%!a%) ENDIF ENDIF IFd%!Wa%=0THEN PROCS:PROCT:PROCU:PROCV:PROCW:PROCX ELSE:PROCY ENDIF WAIT:ENDWHILE:V%!e%=240:V%!k%=40:PROCl(V%,h%):V%!a%-=3:PROCd(V%):PROCm(V%):a$=FNa(49)+" "+FNa(53):PROCt(a$,11):PROCe(750):IFNOTB%!Va%THEN IFB%!Ta%>=d%(10)THEN PROCZ(B%) ENDIF ENDIF PROCb(p%):PROCb(f%):PROCb(m%):PROCb(w%):PROCb(B%):PROCb(I%):FORi%=1TO10:PROCb(a%(i%)):NEXTi%:FORi%=1TOd%!Ra%:PROCb(b%(i%)):NEXTi%:ENDPROC DEFPROCO:IFp%!b%<=0THEN p%!b%=0 ELSE:p%!R%=0-p%!S% ENDIF ENDPROC DEFPROCP:IFp%!b%>=h%!e%-p%!e%THEN p%!b%=h%!e%-p%!e% ELSE:p%!R%=0+p%!S% ENDIF ENDPROC DEFPROCN(x%,y%):IFNOTw%!A%THEN w%!A%=TRUE:w%!b%=x%+(p%!e%/2):w%!a%=y%+p%!k%:PROCg(4) ENDIF ENDPROC DEFPROCv:LOCALN%,fb%:N%=40:fb%=44:IFd%!fb%THEN REPEAT:UNTILNOTINKEY(-82):d%!N%=FNx(d%!N%):IFd%!N%=-1THENERROR255,FNa(109) OSCLI"ScreenSave "+q$+"Dump"+STR$(d%!N%) ENDIF ENDPROC DEFPROCQ:LOCALi%,gb%:gb%=52:FORi%=1TOd%!gb%:a%(i%)!A%=FALSE:NEXTi%:B%!Sa%=0:B%!Va%=TRUE:ENDPROC DEFPROCw:LOCALhb%,ib%:hb%=0:ib%=4:REPEAT:UNTILNOTINKEY(-102):d%!hb%+=1:IFd%!hb%>2THENd%!hb%=0 IFd%!hb%=1THEN SYSFNd(33),d%!ib% ELSE:SYSFNd(34),d%!ib% ENDIF PROCj:ENDPROC DEFPROCk(jb%):LOCALhb%,ib%,kb%,lb%,D%,Fa%,mb%:hb%=0:ib%=4:kb%=8:lb%=48:IFd%!hb%=1THEN SYSFNd(6)TOD%:IFD%-d%!kb%>=10THEN SYSFNd(36),d%!ib%,-1TO,Fa%:mb%=Fa%+jb%:IFmb%>=0ANDmb%<=128THEN SYSFNd(36),d%!ib%,mb%:d%!lb%=mb%:d%!kb%=D% ENDIF ENDIF ENDIF ENDPROC DEFPROCR:LOCALWa%,Xa%,a$:Wa%=28:Xa%=32:REPEATUNTILNOTINKEY(-56):a$=FNa(49)+" "+FNa(61):d%!Wa%=FNp(d%!Wa%):d%!Xa%=d%!Wa%:IFd%!Wa%=0THEN a$=STRING$(LEN(a$)," "):PROCn(a$) ENDIF ENDPROC DEFPROCS:IFw%!A%THEN IFw%!a%>=U%!sa%-w%!k%THEN w%!A%=FALSE:w%!a%-=2:PROCd(w%) ELSE:PROCa(FNb(5),w%!b%,w%!a%) ENDIF w%!a%+=w%!S% ENDIF ENDPROC DEFPROCT:LOCALnb%,ob%,pb%,D%,qb%,d$:nb%=fa%:ob%=ga%:pb%=ha%:IFNOTm%!A%THEN IFFNq(4)ANDFNq(5)THEN m%!A%=TRUE:m%!Y%=FALSE:m%!ob%=0:IFFNq(50)THEN m%!R%=0-m%!S%:m%!b%=h%!e% ELSE:m%!R%=0+m%!S%:m%!b%=0-m%!e% ENDIF ENDIF ELSE:IFm%!b%<=0-m%!e%ANDSGN(m%!R%)=-1THEN m%!nb%=FALSE:m%!A%=FALSE:ENDPROC ENDIF IFm%!b%>h%!e%ANDSGN(m%!R%)=1THEN m%!nb%=FALSE:m%!A%=FALSE:ENDPROC ENDIF IFNOTm%!Y%THEN IFFNn(w%,m%)THEN PROCd(w%):PROCa(FNb(12),m%!b%,m%!a%):SYSFNd(6)TOm%!nb%:m%!Y%=TRUE:w%!A%=FALSE:PROCh(500) ENDIF ELSE:IFFNn(w%,m%)THEN PROCd(w%):w%!A%=FALSE ENDIF ENDIF IFNOTm%!Y%THEN SYSFNd(6)TOD%:IFD%-m%!pb%>=40THEN m%!pb%=D%:m%!ob%=FNp(m%!ob%) ENDIF d$=FNb(10)+STR$(m%!ob%):PROCa(d$,m%!b%,m%!a%):m%!b%+=m%!R% ELSE:SYSFNd(6)TOD%:qb%=D%-m%!nb%:IFqb%>=300THEN m%!A%=FALSE:m%!ob%=1:PROCd(m%) ELSE:IFqb%>=250THEN PROCa(FNb(15),m%!b%,m%!a%) ELSE:IFqb%>=200THEN PROCa(FNb(14),m%!b%,m%!a%) ELSE:IFqb%>=100THEN PROCa(FNb(13),m%!b%,m%!a%) ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF ENDPROC DEFPROCU:LOCALrb%,z%,J%,Q%,sb%,tb%,ub%,vb%:LOCALP%,wb%,xb%,D%,yb%,zb%,Ab%:P%=fa%:wb%=ja%:xb%=ka%:yb%=na%:zb%=52:Ab%=56:SYSFNd(6)TOD%:IFD%-f%!yb%>=50THEN f%!yb%=D%:f%!P%=FNp(f%!P%) ENDIF rb%=f%!b%+f%!e%:vb%=0-((f%!wb%-1)*(I%!e%+f%!_a%)):IFrb%>=h%!e%THEN f%!R%=0-f%!S%:PROCy ENDIF IFf%!b%<=vb%THEN f%!R%=0+f%!S%:PROCy ENDIF vb%=f%!a%+((f%!bb%-1)*I%!k%):IFvb%<=p%!a%+p%!k%THEN PROC_:ENDPROC ENDIF IFFNn(w%,f%)THEN z%=I%!e%+f%!_a%:IF(w%!b%-f%!b%)MODz%<=I%!e%THEN J%=((w%!a%-f%!a%)DIVI%!k%)+1:Q%=((w%!b%-f%!b%)DIVz%)+1:IFSGN(c%(Q%,J%))=1THEN c%(Q%,J%)=-5:PROCd(w%):w%!A%=FALSE:f%!Y%+=1:PROCg(1):CASEJ%OF WHEN1,2:PROCh(50) WHEN3,4:PROCh(75) WHEN5,6:PROCh(100) ENDCASE ENDIF ENDIF ENDIF IFf%!Y%>=f%!`a%*f%!ab%THEN B%!Ua%+=1:PROCd(f%):PROCf(U%!ta%):PROCi(B%!Sa%):PROCo(B%!Ua%):PROCj:PROCa(FNb(1),p%!b%,p%!a%):PROC`:PROCx:PROCz:IFB%!Ua%>=5THENd%!zb%=7 IFB%!Ua%>=10THENd%!zb%=10 ENDIF sb%=TRUE:tb%=TRUE:FORJ%=1TOf%!ab%:IFc%(f%!xb%,J%)<>0THENsb%=FALSE IFc%(f%!wb%,J%)<>0THENtb%=FALSE NEXTJ%:ub%=TRUE:FORQ%=1TOf%!`a%:IFc%(Q%,f%!bb%)<>0THENub%=FALSE NEXTQ%:IFtb%THENf%!wb%+=1 IFsb%THEN f%!e%-=(I%!e%+f%!_a%):f%!xb%-=1 ENDIF IFub%THENf%!bb%+=1 f%!b%+=f%!R%:PROCp:ENDPROC DEFPROCV:LOCALi%,j%,D%,zb%,Ab%:zb%=52:Ab%=56:FORi%=1TOd%!zb%:IFNOTa%(i%)!A%THEN PROCaa(i%) ELSE:PROCba(i%):IFa%(i%)!a%<=U%!ta%+(U%!k%+5)THEN a%(i%)!A%=FALSE:PROCd(a%(i%)) ENDIF IFFNn(a%(i%),p%)ANDa%(i%)!A%THEN PROCca(i%) ENDIF FORj%=1TOd%!Ab%:IFFNn(a%(i%),b%(j%))THEN PROCA(j%,FALSE):PROCd(a%(i%)):a%(i%)!A%=FALSE ENDIF NEXTj%:IFFNn(w%,a%(i%))THEN PROCda(i%) ENDIF IFa%(i%)!Y%THEN PROCea(i%) ENDIF ENDIF NEXTi%:ENDPROC DEFPROCY:LOCALWa%,Xa%,Ya%,D%,a$:Wa%=28:Xa%=32:Ya%=36:SYSFNd(6)TOD%:IFD%-d%!Ya%>=50THEN d%!Xa%=FNp(d%!Xa%):d%!Ya%=D% ENDIF a$=FNa(49)+" "+FNa(61):IFd%!Xa%=0ORd%!Wa%=0THEN a$=STRING$(LEN(a$)," ") ENDIF PROCn(a$):ENDPROC DEFPROCX:LOCALZa%,Bb%,Cb%,D%,a$:Za%=16:Bb%=20:Cb%=24:IFd%!Za%>=0THEN SYSFNd(6)TOD%:a$=FNa(66)+" "+FNa(72):IFD%-d%!Cb%>=50THEN d%!Cb%=D%:d%!Bb%=FNp(d%!Bb%):IFd%!Bb%=1THENd%!Za%+=1 ENDIF IFd%!Bb%=0THEN a$=STRING$(LEN(a$)," ") ENDIF IFd%!Za%>5THEN a$=STRING$(LEN(a$)," "):d%!Za%=-1 ENDIF PROCn(a$) ENDIF ENDPROC DEFPROCW:LOCALi%,D%,gb%,yb%,q%:gb%=56:yb%=ga%:q%=FNe(16):FORi%=1TOd%!gb%:IFFNn(w%,b%(i%))THEN PROCd(w%):w%!A%=FALSE:PROCA(i%,TRUE) ENDIF IFb%(i%)!Y%THEN SYSFNd(6)TOD%:IFD%-b%(i%)!yb%>=5THEN q%!b%=b%(i%)!b%:q%!e%=b%(i%)!e%:q%!a%=b%(i%)!a%-5:q%!k%=b%(i%)!k%+10:PROCd(q%):PROCq(b%(i%)):b%(i%)!Y%=FALSE ENDIF ENDIF NEXTi%:PROCb(q%):ENDPROC DEFPROCF(Db%):LOCALi%,n$,Eb%:Eb%=64:d%!Eb%=RND(128)+127:FORi%=1TO10:IFi%MOD2=0THENn$=FNa(71)ELSEn$=FNa(70) a$(i%)=FNl(n$,d%!Eb%):d%(i%)=(11-i%)*1000:e%(i%)=0:NEXTi%:IFDb%THENPROCB ENDPROC DEFPROCG:LOCALi%,v%,Da%,Ca%,Ea%,T%,H%,g$:v%=OPENIN(h$+"HiTable"):INPUT#v%,g$:IFg$<>"xBATSH"THENCLOSE#v%:ERROR255,FNa(115) INPUT#v%,H%,Ca%,Da%:Ca%=Ca%EORH%:Da%=Da%EORH%:FORi%=1TO10:INPUT#v%,a$(i%),d%(i%),e%(i%):NEXTi%:CLOSE#v%:FORi%=1TO10:T%+=LEN(a$(i%)):NEXTi%:Ea%=T%/10:IFCa%<>T%ORDa%<>Ea%THENERROR255:FNa(113) d%!64=H%:ENDPROC DEFPROCB:LOCALi%,v%,T%,Ea%,Eb%:Eb%=64:PROCfa:FORi%=1TO10:T%+=LEN(a$(i%)):NEXTi%:Ea%=T%/10:T%=T%EORd%!Eb%:Ea%=Ea%EORd%!Eb%:v%=OPENOUT(h$+"HiTable"):PRINT#v%,"xBATSH",d%!Eb%,T%,Ea%:FORi%=1TO10:PRINT#v%,a$(i%),d%(i%),e%(i%):NEXTi%:CLOSE#v%:ENDPROC DEFPROCfa:LOCALi%,Eb%,Fb%,w$:Eb%=64:Fb%=RND(128)+127:FORi%=1TO10:w$=FNl(a$(i%),d%!Eb%):a$(i%)=FNl(w$,Fb%):NEXTi%:d%!Eb%=Fb%:ENDPROC DEFPROCZ(B%):LOCALM%,L%,Gb%,g%,i%,Hb%,K%,x%,y%,a$:LOCALPa%:L%=FNe(16):M%=FNe(16):Pa%=44:L%!e%=FNc(100,1):L%!k%=FNc(40,2):L%!b%=FNh(L%,h%):L%!a%=800:M%!e%=FNc(150,1):M%!k%=FNc(40,2):M%!b%=FNh(M%,h%):M%!a%=L%!a%-M%!k%:Hb%=0:FORi%=10TO1STEP-1 IFB%!Ta%>=d%(i%)THENHb%=i% NEXTi%:FORi%=9TOHb%STEP-1:a$(i%+1)=a$(i%):d%(i%+1)=d%(i%):e%(i%+1)=e%(i%):NEXTi%:d%(Hb%)=B%!Ta%:e%(Hb%)=B%!Ua%:CLS:PROCf(U%!sa%):PROCf(U%!ta%):PROCa(FNb(100),L%!b%,L%!a%):PROCa(FNb(101),M%!b%,M%!a%):a$=FNa(54)+" "+STR$(B%!Ta%) a$+=" "+FNa(55)+" "+STR$(Hb%)+FNE(Hb%):K%=LEN(a$)*h%!ra%:x%=FNm(K%,h%!e%):y%=M%!a%-170:PROCc(x%,y%,a$,0,0):PROCb(L%):PROCb(M%):V%!e%=165:V%!k%=40:PROCl(V%,h%):PROCm(V%):x%=V%!b%+20:y%=V%!a%+12:a$="":i%=1:Gb%=FALSE OSCLI"FX 21,0":REPEAT:g%=GET:CASEg%OF WHEN13:Gb%=TRUE WHEN8:i%-=1:a$=LEFT$(a$,i%-1) OTHERWISE:IFi%<9ANDFNF(g%)THENi%+=1:a$+=CHR$(g%) ENDCASE IFi%<1THENi%=1 PROCc(x%,y%,STRING$(8," "),0,0):IFa$<>""THENPROCc(x%,y%,a$,0,0) UNTILGb%:IFa$=""ORa$=" "THENa$=FNa(56) a$(Hb%)=FNl(a$,131):IFd%!Pa%THENPROCB ENDPROC DEFFNF(Ib%):=Ib%>=32ANDIb%<=126 DEFPROCL(Jb%,Kb%,l%,r%):LOCALx%,a$:a$=FNa(57)+" "+FNa(59):a$+=FNo(STR$(Jb%),10," ",TRUE):PROCc(0,h%!k%-h%!Z%,a$,0,0):a$=FNa(58)+" "+FNa(57):a$+=" "+FNa(59)+FNo(STR$(Kb%),10," ",TRUE):x%=h%!e%-LEN(a$)*h%!ra%:PROCc(x%,h%!k%-h%!Z%,a$,0,0) PROCi(l%):PROCo(r%):PROCj:ENDPROC DEFPROCi(N%):LOCALa$:PROCa(FNb(1),0,0):a$=" = "+STR$(N%):PROCc(p%!e%,0,a$,0,0):ENDPROC DEFPROCo(N%):LOCALx%,a$:a$=FNa(60)+" "+FNa(59):a$+=FNo(STR$(N%),3,"0",TRUE):x%=h%!e%-LEN(a$)*h%!ra%:PROCc(x%,0,a$,0,0):ENDPROC DEFPROCn(a$):LOCALx%,y%,K%:K%=LEN(a$)*h%!ra%:x%=FNm(K%,h%!e%):y%=h%!k%-h%!Z%:PROCc(x%,y%,a$,0,0):ENDPROC DEFPROCh(Lb%):LOCALeb%,Za%,x%,a$:eb%=12:Za%=16:B%!Ta%+=Lb%:a$=FNa(57)+" "+FNa(59):a$+=FNo(STR$(B%!Ta%),10," ",TRUE):PROCc(0,h%!k%-h%!Z%,a$,0,0):IFB%!Ta%-d%!eb%>=5000THEN B%!Sa%+=1:PROCi(B%!Sa%):d%!eb%=B%!Ta%:d%!Za%=0 ENDIF IFB%!Ta%>d%(1)THEN a$=FNa(58)+" "+FNa(57)+" ":a$+=FNa(59):a$+=FNo(STR$(B%!Ta%),10," ",TRUE):x%=h%!e%-LEN(a$)*h%!ra%:PROCc(x%,h%!k%-h%!Z%,a$,0,0) ENDIF ENDPROC DEFPROCj:LOCALMb%,Nb%,d$:Nb%=FNe(16):Mb%=0:Nb%!e%=FNc(20,1):Nb%!k%=FNc(10,2):Nb%!b%=FNh(Nb%,h%):Nb%!a%=0:IFd%!Mb%<0ORd%!Mb%>2THEN ERROR255,FNa(111)+" "+STR$(d%!Mb%) ENDIF d$=FNb(120+d%!Mb%):PROCa(d$,Nb%!b%,Nb%!a%):PROCb(Nb%):ENDPROC DEFPROCM:LOCALP%,wb%,xb%,bb%:P%=fa%:wb%=ja%:xb%=ka%:bb%=la%:PROCz:PROCp:ENDPROC DEFPROCz:LOCALJ%,Q%,s%:f%!b%=50:f%!a%=550:f%!P%=0:f%!Y%=0:f%!S%=3:f%!R%=f%!S%:f%!wb%=1:f%!xb%=f%!`a%:f%!bb%=1:s%=(f%!`a%*I%!e%)+((f%!`a%-1)*f%!_a%):f%!e%=s%:f%!k%=f%!ab%*I%!k%:FORQ%=1TOf%!`a%:FORJ%=1TOf%!ab% c%(Q%,J%)=((J%+1)/2)+(f%!P%*10):NEXTJ%:NEXTQ%:ENDPROC DEFPROCp:LOCALJ%,Q%,x%,y%,q%:q%=FNe(16):FORQ%=f%!wb%TOf%!xb%:x%=f%!b%+((Q%-1)*(I%!e%+f%!_a%)):FORJ%=f%!bb%TOf%!ab%:y%=f%!a%+((J%-1)*I%!k%):IFc%(Q%,J%)>0THEN c%(Q%,J%)=((J%+1)/2)+(f%!P%*10) ENDIF IFc%(Q%,J%)<>0THEN CASESGN(c%(Q%,J%))OF WHEN-1:PROCga(x%,y%,Q%,J%) WHEN1:PROCa(FNb(27)+STR$(c%(Q%,J%)),x%,y%) ENDCASE ELSE:q%!b%=x%:q%!a%=y%:q%!e%=I%!e%:q%!k%=I%!k%:PROCd(q%) ENDIF NEXTJ%:NEXTQ%:PROCb(q%):ENDPROC DEFPROCga(x%,y%,r%,c%):LOCALq%:c%(r%,c%)+=1:PROCa(FNb(26),x%,y%):IFc%(r%,c%)=0THEN q%=FNe(16):q%!b%=x%:q%!a%=y%:q%!e%=I%!e%:q%!k%=I%!k%:PROCd(q%):PROCb(q%) ENDIF ENDPROC DEFPROCy:LOCALq%,i%:q%=FNe(16):FORi%=1TO3:f%!a%-=I%!k%/3:PROCp:NEXTi%:q%!b%=f%!b%:q%!a%=f%!a%+f%!k%:q%!e%=f%!e%:q%!k%=I%!k%:PROCd(q%):PROCb(q%):ENDPROC DEFPROC_:LOCALX%,Ob%,D%,Pb%,Qb%,S%,i%,o$:S%=1:Rb%=24:X%=FNe(28):Ob%=FNe(28):PROCd(f%):PROCd(p%):IFw%!A%THEN PROCd(w%):w%!A%=FALSE ENDIF IFm%!A%THEN PROCd(m%):m%!A%=FALSE ENDIF PROCha:PROCia:p%!b%=FNh(p%,h%):X%!b%=0-I%!e%:X%!a%=p%!a%:X%!R%=S%:Ob%!b%=h%!e%:Ob%!a%=p%!a%:Ob%!R%=0-S%:B%!Sa%=0:PROCf(U%!ta%):PROCi(B%!Sa%):PROCo(B%!Ua%):PROCa(FNb(1),p%!b%,p%!a%):P%=0:Qb%=FALSE:REPEAT:X%!b%+=X%!R%:X%!Rb%=X%!b%+I%!e%:Ob%!b%+=Ob%!R% SYSFNd(6)TOD%:IFD%-Pb%>=50THENQb%=FNp(Qb%):Pb%=D% IFQb%THENo$=FNb(21)ELSEo$=FNb(20) PROCa(o$,X%!b%,X%!a%):PROCa(o$,Ob%!b%,Ob%!a%):PROCe(2):WAIT:UNTILX%!Rb%>=p%!b%:FORi%=1TO10:PROCa(FNb(20),X%!b%,X%!a%):PROCa(FNb(20),Ob%!b%,Ob%!a%):PROCe(20):PROCa(FNb(21),X%!b%,X%!a%):PROCa(FNb(21),Ob%!b%,Ob%!a%):PROCe(20):WAIT:NEXTi%:PROCg(2):FORi%=1TO3 PROCa(FNb(2)+STR$(i%),p%!b%,p%!a%):PROCe(20):WAIT:NEXTi%:PROCe(20):PROCd(p%):PROCb(X%):PROCb(Ob%):ENDPROC DEFPROCJ:LOCALi%,qb%,Pb%:qb%=ha%:Pb%=ia%:FORi%=1TO10:a%(i%)=FNg(48,0):a%(i%)!e%=FNc(5,1):a%(i%)!k%=FNc(20,2):SYSFNd(6)TOa%(i%)!qb%:SYSFNd(6)TOa%(i%)!Pb%:a%(i%)!A%=FALSE:NEXTi%:ENDPROC DEFPROCaa(o%):LOCALSb%,Tb%,Ub%,Vb%,x%,y%:LOCALP%,Wb%:P%=fa%:Wb%=ga%:Sb%=RND(10):Ub%=B%!Ua%+5:IFUb%>100THEN Ub%=100:IFB%!Ua%MOD10=0THENf%!cb%+=1 ENDIF IFFNq(Ub%)ANDFNq(f%!cb%)THEN IFc%(Sb%,f%!bb%)>0THEN x%=f%!b%+(Sb%-1)*(I%!e%+f%!_a%):y%=f%!a%+((f%!bb%-1)*I%!k%)-I%!k%:Tb%=(I%!e%/2)-(a%(o%)!e%/2):a%(o%)!b%=x%+Tb%:a%(o%)!a%=y%:a%(o%)!A%=TRUE:a%(o%)!Y%=FALSE:a%(o%)!Wb%=1:a%(o%)!P%=0:Vb%=4:IFFNq(25)THENa%(o%)!Wb%=2:Vb%=Vb%/2 a%(o%)!S%=Vb%:a%(o%)!R%=a%(o%)!S%:PROCg(3) ENDIF ENDIF ENDPROC DEFPROCba(o%):LOCALD%,P%,Pb%,Wb%,d$,r$:P%=fa%:Wb%=ga%:Pb%=ia%:SYSFNd(6)TOD%:IFD%-a%(o%)!Pb%>=40THEN a%(o%)!Pb%=D%:a%(o%)!P%+=1 ENDIF :IFa%(o%)!Wb%=1ANDa%(o%)!P%>1THEN a%(o%)!P%=0 ENDIF IFa%(o%)!Wb%=2ANDa%(o%)!P%>3THEN a%(o%)!P%=0 ENDIF r$=STR$(a%(o%)!P%):IFa%(o%)!Wb%=2ANDa%(o%)!P%=3THEN r$="1" ENDIF d$=FNb(30)+STR$(a%(o%)!Wb%)+r$:IFNOTa%(o%)!Y%THEN a%(o%)!a%-=a%(o%)!R%:PROCa(d$,a%(o%)!b%,a%(o%)!a%) ELSE:d$=FNb(30)+"3":PROCa(d$,a%(o%)!b%,a%(o%)!a%) ENDIF ENDPROC DEFPROCca(o%):LOCALi%:PROCg(2):FORi%=1TO3:PROCa(FNb(2)+STR$(i%),p%!b%,p%!a%):PROCe(20):WAIT:NEXTi%:PROCd(p%):IFw%!A%THEN PROCd(w%):w%!A%=FALSE ENDIF p%!b%=FNh(p%,h%):B%!Sa%-=1:PROCi(B%!Sa%):PROCd(a%(o%)):a%(o%)!A%=FALSE:PROCa(FNb(1),p%!b%,p%!a%):ENDPROC DEFPROCda(o%):LOCALWb%,qb%:Wb%=ga%:qb%=ha%:IFa%(o%)!Wb%=1THEN IFNOTa%(o%)!Y%THEN a%(o%)!Y%=TRUE:PROCh(5):d$=FNb(30)+"3":PROCa(d$,a%(o%)!b%,a%(o%)!a%):SYSFNd(6)TOa%(o%)!qb% ENDIF ENDIF PROCd(w%):w%!A%=FALSE:ENDPROC DEFPROCea(o%):LOCALqb%,D%:qb%=ha%:SYSFNd(6)TOD%:IFD%-a%(o%)!qb%>=40THEN PROCd(a%(o%)):a%(o%)!A%=FALSE ENDIF ENDPROC DEFPROCha:LOCALi%,Xb%:Xb%=52:FORi%=1TOd%!Xb%:IFa%(i%)!A%THEN PROCd(a%(i%)):a%(i%)!A%=FALSE ENDIF NEXTi%:ENDPROC DEFPROCK:LOCALi%,x%,Yb%,Zb%,N%:N%=d%!56:Zb%=fa%:Yb%=h%!e%/N%:x%=Yb%-150:FORi%=1TON%:b%(i%)=FNg(48,0):b%(i%)!e%=FNc(30,1):b%(i%)!k%=FNc(15,2):b%(i%)!b%=x%+((i%-1)*Yb%):b%(i%)!a%=p%!a%+100:b%(i%)!A%=TRUE:b%(i%)!Zb%=0:NEXTi%:ENDPROC DEFPROC`:LOCALi%,Zb%,N%:N%=d%!56:Zb%=fa%:FORi%=1TON%:b%(i%)!A%=TRUE:b%(i%)!Zb%=0:NEXTi%:ENDPROC DEFPROCx:LOCALi%,N%:N%=56:FORi%=1TOd%!N%:IFb%(i%)!A%THENPROCq(b%(i%)) NEXTi%:ENDPROC DEFPROCq(o%):LOCAL_b%,`b%,ac%,K%,Zb%,a$:Zb%=fa%:ac%=10-o%!Zb%:a$=STR$(ac%):K%=LEN(a$):_b%=o%!b%+FNm(K%,o%!e%):`b%=o%!a%+(o%!k%/2)-(h%!Z%/2):`b%+=7:IFK%=1THEN_b%-=7ELSE_b%-=15 PROCd(o%):PROCa(FNb(16),o%!b%,o%!a%):PROCc(_b%,`b%,a$,0,1):ENDPROC DEFPROCA(o%,bc%):LOCALy%,Zb%:Zb%=fa%:yb%=ga%:b%(o%)!Zb%+=1:IFb%(o%)!Zb%>=10THEN PROCd(b%(o%)):b%(o%)!A%=FALSE ELSE:PROCd(b%(o%)):y%=b%(o%)!a%:IFbc%THENb%(o%)!a%+=5ELSEb%(o%)!a%-=5 PROCq(b%(o%)):b%(o%)!Y%=TRUE:b%(o%)!a%=y%:SYSFNd(6)TOb%(o%)!yb% ENDIF ENDPROC DEFPROCia:LOCALi%,q%,N%:N%=d%!56:FORi%=1TON%:b%(i%)!A%=FALSE:NEXTi%:q%=FNe(16):q%!b%=0:q%!a%=b%(1)!b%:q%!e%=h%!e%:q%!k%=b%(1)!k%:PROCd(q%):PROCb(q%):ENDPROC DEFFNw(e$):LOCALG%,cc%,dc%,ec%,fc%,gc%,Mb%,i%,f$:G%=FNG(e$):ec%=FNg(G%,0):SYSFNd(3),16,e$,ec%,0:FORi%=0TO3:f$+=CHR$(ec%?i%):NEXTi%:IFf$="SQSH"THEN PRINT" "+FNa(27)+" ";:SYSFNd(7),1<<3,G%TOcc%,dc%:IFdc%=-1THENdc%=ec%!4 fc%=FNg(cc%,0):gc%=FNA(dc%+4):SYSFNd(7),1<<2,fc%,ec%+20,G%-20,gc%+4,dc%TOMb%:IFMb%<>0THENERROR255,FNa(114)+" "+STR$(Mb%) PROCb(fc%):PROCb(ec%) ELSE:gc%=FNA(G%+256):SYSxa%,256+10,gc%,e$ ENDIF SYSxa%,256+17,gc%:=gc% DEFFNA(G%):LOCALgc%:gc%=FNg(G%,0):gc%!0=G%:gc%!4=0:gc%!8=16:gc%!12=16:=gc% DEFPROCc(x%,y%,a$,hc%,ic%):LOCALi%,jc%:CASEic%OF WHEN0:Ba%=za% WHEN1:Ba%=Aa% OTHERWISE:ERROR255,FNa(112)+" "+STR$(ic%) ENDCASE jc%=h%!ra%:FORi%=1TOLEN(a$):PROCa(STR$(ASC(MID$(a$,i%,1))),x%+((i%-1)*jc%),y%):IFhc%>0THENPROCe(hc%) NEXTi%:Ba%=ya%:ENDPROC DEFPROCa(B$,x%,y%):LOCALkc%:SYSxa%,256+24,Ba%,B$TO,,kc%:SYSxa%,512+34,Ba%,kc%,x%,y%,0:ENDPROC DEFPROCd(F%):GCOL0,0TINT0:RECTANGLEFILLF%!b%,F%!a%,F%!e%,F%!k%:ENDPROC DEFFNm(lc%,h%):=(h%/2)-(lc%/2) DEFPROCt(a$,mc%):LOCALK%,y%:K%=LEN(a$)*h%!ra%:y%=(h%!k%/2)-(h%!Z%/2):PROCc(FNm(K%,h%!e%),y%,a$,mc%,0):ENDPROC DEFFNh(nc%,oc%):=(oc%!e%/2)-(nc%!e%/2) DEFPROCl(nc%,oc%):LOCALx%,y%:nc%!b%=(oc%!e%/2)-(nc%!e%/2):nc%!a%=(oc%!k%/2)-(nc%!k%/2):ENDPROC DEFPROCf(a%):LOCALi%,pc%:pc%=h%!e%/U%!e%:FORi%=1TOpc%+1:PROCa(FNb(108),(i%-1)*U%!e%,a%):NEXTi%:ENDPROC DEFPROCm(F%):LOCALx%,y%,qc%,rc%,sc%,tc%,i%:qc%=FNc(3,1):rc%=FNc(3,2):sc%=1:tc%=3:FORi%=1TOF%!e%:x%=F%!b%+((i%-1)*sc%):PROCa(FNb(113),x%,F%!a%):PROCa(FNb(113),x%,F%!a%+(F%!k%-(2*tc%))):NEXTi%:x%=F%!b%+(F%!e%-qc%):FORi%=1TOF%!k%-1 PROCa(FNb(114),F%!b%,F%!a%+((i%-1)*sc%)):PROCa(FNb(114),x%,F%!a%+((i%-1)*sc%)):NEXTi%:PROCa(FNb(111),F%!b%,F%!a%):PROCa(FNb(109),F%!b%,(F%!a%+F%!k%)-rc%):PROCa(FNb(112),F%!b%+(F%!e%-qc%),F%!a%):x%=(F%!b%+F%!e%)-qc%:y%=(F%!a%+F%!k%)-rc% PROCa(FNb(110),x%,y%):ENDPROC DEFFNs(e$,f$):LOCALv%,`%,uc%,H%,g$:v%=OPENIN(e$):INPUT#v%,g$:IFg$<>f$THENCLOSE#v%:ERROR255,"Bad Magic!" INPUT#v%,H%,uc%,uc%,`%:CLOSE#v%:=`%EORH% DEFFNt(e$,f$,RETURNk%(),RETURNh$()):LOCALv%,i%,`%,H%,Ca%,Da%,T%,Ea%,g$:T%=0:v%=OPENIN(e$):INPUT#v%,g$:IFg$<>f$THENCLOSE#v%:ERROR255,"Bad Magic!" INPUT#v%,H%,Ca%,Da%,`%:Ca%=Ca%EORH%:Da%=Da%EORH%:`%=`%EORH%:FORi%=1TO`%:INPUT#v%,k%(i%),h$(i%):NEXTi%:CLOSE#v%:FORi%=1TO`%:T%+=LEN(h$(i%)):NEXTi%:Ea%=T%/`%:IFT%<>Ca%OREa%<>Da%THEN ERROR255,"File Inconsistant with header!" ENDIF =H% DEFPROCr(vc%,H%,RETURNb$()):LOCALi%:FORi%=1TOvc%:b$(i%)=FNl(b$(i%),H%):NEXTi%:ENDPROC DEFFNa(wc%):LOCALH%:H%=d%!68:=FNv(wc%,ca%,h%(),g$(),H%,106) DEFFNb(wc%):=FNv(wc%,ua%,i%(),c$(),-1,107) DEFFNd(wc%):=FNv(wc%,va%,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%=117THEN 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%) DEFFNC(e$):LOCALv%:v%=0:SYSFNd(31),,e$TOv%:=v% DEFPROCg(Ac%):LOCALMb%,x$:Mb%=0:x$=FNa(110)+" "+STR$(Ac%):IFd%!Mb%>0THEN IFAc%<1ANDAc%>4THENERROR255,x$ OSCLI"SPlay_fire0"+STR$(Ac%)+"mhh" ENDIF ENDPROC DEFPROCs:LOCALq%:q%=FNe(20):q%!0=4:q%!4=5:q%!8=11:q%!12=12:q%!16=-1:SYSFNd(5),q%,q%:h%!oa%=q%!0:h%!pa%=q%!4:h%!e%=(q%!8)+1<h%!qa%THENPROCs CASEBc%OF WHEN1:Cc%=G%<>h%!oa% WHEN4:Cc%=G%>>h%!pa% OTHERWISE:ERROR255,FNa(103)+" "+STR$(Bc%) ENDCASE =Cc% DEFFNn(F%,Ec%):LOCALFc%,Gc%,Hc%,Ic%:Hc%=FALSE:Ic%=FALSE:IFF%!A%ANDEc%!A%THEN Fc%=Ec%!b%+Ec%!e%:Gc%=Ec%!a%+Ec%!k%:IFF%!b%>=Ec%!b%ANDF%!b%=Ec%!a%ANDF%!a%-1THEN SYS"TimPlayer_SongStop",d%!4:SYS"TimPlayer_SongUnload",d%!4 ENDIF PROCu:ENDPROC DEFFNj(C$,y$):LOCALl$,t$,O%,zc%:l$=STRING$(10," "):RIGHT$(l$,3)=" : ":LEFT$(l$,LEN(y$))=y$:O%=FNr(C$):t$="Missing!!":zc%=FALSE:IFO%=1THENt$="OK.":zc%=TRUE l$+=t$:PRINTl$:=zc% DEFFNx(`%):LOCALj$:j$="Dump"+STR$(`%):IFFNr(q$+j$)<>0THEN REPEAT:`%+=1:j$="Dump"+STR$(`%):UNTILFNr(q$+j$)=0ORLEN(j$)>10:IFLEN(j$)>10THEN`%=-1 ENDIF =`% DEFPROCE:LOCALv%,hb%,lb%,Jc%,jb%:hb%=0:lb%=48:v%=OPENIN(h$+"Configs"):INPUT#v%,Jc%,jb%:CLOSE#v%:IFJc%>=0ANDJc%<=2THENd%!hb%=Jc% IFjb%>=0ANDjb%<=128THENd%!lb%=jb% ENDPROC DEFPROCI:LOCALv%,hb%,lb%:hb%=0:lb%=48:v%=OPENOUT(h$+"Configs"):PRINT#v%,d%!hb%,d%!lb%:CLOSE#v%:ENDPROC DEFFNq(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 DEFFNp(n%):=n%EOR1 DEFFNE(n%):LOCALc$,u%:u%=VAL(RIGHT$(STR$(n%),1)):c$=FNa(65):IFu%>=1ANDu%<=3THENc$=FNa(u%+61) =c$ DEFFNo(a$,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$ DEFFNz(a$,Kc%):LOCALc$:c$=STRING$(Kc%," "):RIGHT$(c$,LEN(a$))=a$:=c$ DEFFNr(k$):LOCALzc%:SYS"XOS_File",17,k$TOzc%:=zc% DEFFNG(k$):LOCALG%:SYSFNd(3),17,k$TO,,,,G%:=G% DEFFNy(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% DEFPROCD(H%):LOCALQc%:Rc%=0:Sc%=0:xc%=H%:SYSFNf(210),-1,-1TOTc%:SYSFNf(211)TOUc%;Qc%:IFQc%AND1THENUc%=16384 PROCja(Uc%):ENDPROC DEFPROCu:IFRc%THEN SYSFNf(210),Rc%-32768,-1TOTc%:Rc%=0:Sc%=0 ENDIF ENDPROC DEFFNe(Vc%):LOCALE%,G%:G%=(Vc%+15)AND-4:E%=FNH(G%):IFE%ELSEERROR254,FNf(110) E%!0=&DEADDEAD:E%!4=Vc%:!(E%-8+(E%!-4))=&DEADDEAD:=E%+8 DEFFNg(Vc%,Lb%):LOCALE%:E%=FNe(Vc%):PROCka(E%,Lb%):=E% DEFPROCb(RETURNE%):CASEFNI(E%)OF WHEN1:ERROR254,FNf(111) WHEN2:ERROR254,FNf(112) WHEN3:ERROR254,FNf(113) ENDCASE E%-=8:Sc%-=E%!-4:SYSFNf(212),3,Rc%,E%:E%=0:ENDPROC DEFFNB(E%):LOCALq%:q%=E%-4:=q%!0 DEFPROCka(E%,Lb%):LOCALvb%,G%:G%=FNB(E%):FORvb%=0TOG%-4STEP4:E%!vb%=Lb%:NEXTvb%:ENDPROC DEFFNi(E%):LOCALWc%,vb%,G%:G%=FNB(E%):Wc%=FNe(G%):FORvb%=0TOG%-4STEP4:Wc%!vb%=E%!vb%:NEXTvb%:=Wc% DEFFNI(E%):LOCALKb%,Xc%:Kb%=FALSE:Xc%=FALSE:E%-=8:IFE%!0<>&DEADDEADTHENXc%=TRUE IF!(E%-8+(E%!-4))<>&DEADDEADTHENKb%=TRUE IFXc%ANDKb%THEN=3 IFKb%THEN=2 IFXc%THEN=1 =0 DEFPROCja(G%):IFRc%THENERROR254,FNf(114) G%=(G%+Uc%-1)ANDNOT(Uc%-1):Rc%=HIMEM:SYSFNf(210),Tc%+G%,-1TOTc%:G%=Tc%+32768-Rc%:IFG%<1THEN Rc%=0:ERROR254,FNf(115) ELSE:SYSFNf(212),0,Rc%,,G% ENDIF Sc%=0:ENDPROC DEFPROCla(Vc%):LOCALYc%:Yc%=Tc%:SYSFNf(210),Tc%+Vc%,-1TOTc%:Vc%=Tc%-Yc%:IFVc%THENSYSFNf(212),5,Rc%,,Vc%TO,,,Vc% ENDPROC DEFFNH(Vc%):LOCALE%,Qc%:SYSFNf(213),2,Rc%,,Vc%TO,,E%;Qc%:IFQc%AND1THEN PROCla((Vc%+Uc%)ANDNOT(Uc%-1)):SYSFNf(213),2,Rc%,,Vc%TO,,E%;Qc%:IFQc%AND1THEN=0 ENDIF Sc%+=E%!-4:=E%