REM Acorn Invaders REM Packed by Make v1.41 15/5/08 On 09 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 IFaa%THENERROR255,"File Missing!!" PRINT:PRINT"Loading Messages...";:ba%=FNs(b$+"Msg","SGSM"):DIMg%(ba%),f$(ba%):ca%=FNt(b$+"Msg","SGSM",g%(),f$()):PRINTFNa(14):PRINTFNa(9)+" "+FNa(3):da%=FNs(b$+"ImgLUT","TULI"):DIMh%(da%),c$(da%):k%=FNt(b$+"ImgLUT","TULI",h%(),c$()) PRINTFNa(26):PROCr(da%,k%,c$()):PRINTFNa(14):PRINTFNa(9)+" "+FNa(13):ea%=FNs(b$+"SWIs","TULS"):DIMi%(ea%),d$(ea%):k%=FNt(b$+"SWIs","TULS",i%(),d$()):PRINTFNa(26):PROCr(ea%,k%,d$()):PRINTFNa(14):PRINT:PRINTFNa(12):PRINTFNa(8)+" "+FNa(2) PROCD:d%=FNf(68,0):d%!0=1:d%!4=-1:d%!40=FNw(0):IFd%!40=-1THENERROR255,FNa(109) PRINTFNa(15)+STR$(d%!40):d%!44=TRUE:d%!48=128:d%!52=5:d%!56=5:PRINTFNa(9)+" "+FNa(24)+" ";:IFFNq(h$+"Configs")=1THEN PROCE:PRINTFNa(18) ELSE:PRINTFNa(25) ENDIF fa%=0:DIMa$(10),d%(10):DIMe%(10):PRINTFNa(8)+" "+FNa(22):b%=0:a%=4:e%=8:m%=12:R%=16:S%=20:B%=24:Y%=28:ga%=32:ha%=36:ia%=40:ja%=44:ka%=48:la%=52:ma%=56:na%=60:oa%=64:pa%=16:qa%=20:ra%=24:sa%=28:Z%=32 ta%=16:ua%=20:PRINT:PRINTFNa(8)+" "+FNa(1)+" ";:va%=0:SYSFNc(30)TOva%:PRINTFNa(21)+" "+STR$(va%/100):d%!4=FNB(u$+"Intro"):PRINT:PRINTFNa(17)+" "+FNa(16):SYSFNc(1),,FNc(2)TOwa%:PRINTFNa(9)+" "+FNa(4);:xa%=FNu(i$+"Gfx0"):PRINTFNa(14):PRINTFNa(9)+" "+FNa(5);:ya%=FNu(i$+"Gfx1"):PRINTFNa(14) PRINTFNa(9)+" "+FNa(23);:za%=FNu(i$+"Gfx2"):PRINTFNa(14):Aa%=xa%:PRINT:PRINTFNa(9)+" "+FNa(6);:w%=OPENIN(b$+"Creds"):INPUT#w%,f$:IFf$<>"DERC"THEN CLOSE#w%:ERROR255,FNa(101):END ENDIF INPUT#w%,d%!60,fa%,Ba%,Ca%:DIMe$(fa%),f%(fa%):FORi%=1TOfa%:INPUT#w%,f%(i%),e$(i%):NEXTi%:CLOSE#w%:V%=0:FORi%=1TOfa%:V%+=LEN(e$(i%)):NEXTi%:Da%=V%/fa%:IFDa%<>Ca%ORV%<>Ba%THEN ERROR255,FNa(113) ELSE:PRINTFNa(14) ENDIF PRINT:PRINTFNa(7):v$=h$+"HiTable":IFFNq(v$)<>1THEN IFNOTFNx(0,h$)THEN d%!44=FALSE:PRINTFNa(19)+" "+FNa(10)+" "+FNa(20) ELSE:PRINTFNa(19)+" "+FNa(11)+" "+FNa(20) ENDIF PROCF(d%!44) ELSE:IFNOTFNx(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):T%=FNe(24):U%=FNe(16):CLS:PROCs:h%!sa%=FNd(8,1):h%!Z%=FNd(8,2)+7:T%!e%=FNd(6,1):T%!m%=FNd(6,2):T%!ta%=h%!m%-50:T%!ua%=30:IFd%!0=1THEN SYSFNc(33),d%!4 ENDIF SYSFNc(36),d%!4,d%!48:WHILENOTFNC:CLS:PROCH:ENDWHILE:CLS:U%!e%=220:U%!m%=40:PROCl(U%,h%):U%!a%-=3:PROCm(U%):PROCt(FNa(31),10):IFd%!44THENPROCI IFd%!0=1THEN SYSFNc(36),d%!4,-1TO,Ea%:FORi%=Ea%TO0STEP-2:SYSFNc(36),d%!4,i%:PROCe(4):NEXTi%:SYSFNc(35),d%!4:SYSFNc(32),d%!4:d%!4=-1 ENDIF PROCu:END DEFFNC:LOCALi%,L%,M%,D%,K%,o%,_%,Fa%,Ga%:LOCALq%,W%,Ha%,Ia%,Ja%,Ka%,La%,Ma%,Na%:LOCALx%,y%,O%,Oa%,s$,a$:Oa%=44:L%=FNf(16,0):M%=FNf(16,0):D%=FNf(16,0):o%=FNf(16,0):_%=FNf(16,0):W%=FNf(16,0):q%=FNf(16,0):L%!e%=FNd(100,1):L%!m%=FNd(40,2) L%!b%=FNg(L%,h%):L%!a%=800:M%!e%=FNd(150,1):M%!m%=FNd(40,2):M%!b%=FNg(M%,h%):M%!a%=L%!a%-M%!m%:D%!e%=720:D%!m%=500:D%!b%=FNg(D%,h%):D%!a%=200:o%!e%=FNd(40,1):o%!m%=FNd(20,2):o%!b%=(D%!b%+D%!e%/2)-150:o%!a%=(D%!a%+D%!m%)-125 q%!e%=FNd(30,1):q%!m%=FNd(15,2):_%!e%=FNd(20,1):_%!m%=FNd(20,2):_%!b%=(D%!b%+D%!e%/2)-150:_%!b%+=FNg(_%,o%):Fa%=FNh(_%):Ga%=FNh(_%)::Ga%!a%=o%!a%-40-Ga%!m%:Fa%!a%=Ga%!a%-40-Fa%!m%:_%!a%=Fa%!a%-40-_%!m% W%!e%=FNd(20,1):W%!m%=FNd(20,2):W%!b%=(D%!b%+D%!e%/2)-120:Ha%=FNh(W%):Ia%=FNh(W%):Ja%=FNh(W%):Ja%!b%=D%!b%:Pa%=FNh(Ja%):La%=FNh(Ja%):Ka%=FNh(W%):Ka%!b%=D%!b%:Ka%!b%+=(D%!e%/2)+10:Ma%=FNh(Ka%):Na%=FNh(Ka%) :W%!a%=(D%!a%+D%!m%)-120:Ha%!a%=W%!a%-60:Ia%!a%=Ha%!a%-60:La%!a%=Ia%!a%-90:Pa%!a%=La%!a%-60:Ja%!a%=Pa%!a%-60:Ka%!a%=Ia%!a%-90:Ma%!a%=Ka%!a%-60:Na%!a%=Ma%!a%-60:CLS:PROCf(T%!ta%):PROCf(T%!ua%):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%!sa%:y%=170:PROCc(FNl(K%,h%!e%),y%,a$,11,0):a$=FNa(33):K%=LEN(a$)*h%!sa%:y%-=h%!Z%:PROCc(FNl(K%,h%!e%),y%,a$,11,0) WHILENOTINKEY(-99)ANDNOTINKEY(-17)ANDNOTINKEY(-82):y%=D%!a%+D%!m%:FORi%=1TOfa%:a$=FNk(e$(i%),d%!60):x%=FNi(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%=FNr:IFO%=1THEN=TRUE IFO%=2THEN=FALSE PROCd(D%):a$=FNa(57)+" "+FNa(34):x%=FNi(a$):y%=D%!a%+D%!m%-20:PROCc(x%,y%,a$,0,0):a$=FNa(35):y%-=h%!Z%:x%=FNi(a$):PROCc(x%,y%,a$,0,0):x%=o%!b%+o%!e%+10:PROCa(FNb(11),o%!b%,o%!a%):a$=FNa(36)+" "+FNa(40):PROCc(x%,o%!a%+10,a$,0,0) PROCa(FNb(24),Ga%!b%,Ga%!a%):a$=FNa(37)+" "+FNa(40):PROCc(x%,Ga%!a%+12,a$,0,0):PROCa(FNb(22),Fa%!b%,Fa%!a%):a$=FNa(38)+" "+FNa(40):PROCc(x%,Fa%!a%+12,a$,0,0):PROCa(FNb(20),_%!b%,_%!a%):a$=FNa(39)+" "+FNa(40):PROCc(x%,_%!a%+12,a$,0,0) K%=q%!e%/h%!sa%+2:s$=FNa(66):a$=s$+STRING$(K%," ")+FNa(67):x%=FNi(a$):y%=_%!a%-(3*h%!Z%):PROCc(x%,y%,a$,0,0):q%!b%=x%+7+(LEN(s$)*h%!sa%):q%!a%=y%:PROCa(FNb(1),q%!b%,q%!a%):O%=FNr:IFO%=1THEN=TRUE IFO%=2THEN=FALSE PROCd(D%):a$=FNa(41):x%=FNi(a$):y%=D%!a%+D%!m%-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),Ha%!b%,Ha%!a%):a$=FNa(42)+" "+FNa(44):PROCc(x%,Ha%!a%+12,a$,0,0) PROCa(FNb(104),Ia%!b%,Ia%!a%):PROCc(x%,Ia%!a%+12,FNa(45),0,0):x%=Ja%!b%+Ja%!e%+10:PROCa(FNb(105),Pa%!b%,Pa%!a%):a$=FNa(46)+" "+FNa(49):PROCc(x%,Pa%!a%+12,a$,0,0):PROCa(FNb(117),La%!b%,La%!a%):PROCc(x%,La%!a%+12,FNa(76),0,0) PROCa(FNb(107),Ja%!b%,Ja%!a%):a$=FNa(48)+" "+FNa(49):PROCc(x%,Ja%!a%+12,a$,0,0):x%=Ka%!b%+Ka%!e%+10:PROCa(FNb(106),Ka%!b%,Ka%!a%):a$=FNa(47)+" "+FNa(73):PROCc(x%,Ka%!a%+12,a$,0,0):PROCa(FNb(115),Ma%!b%,Ma%!a%):a$=FNa(47)+" "+FNa(77)+" ":a$+=FNa(74) PROCc(x%,Ma%!a%+12,a$,0,0):PROCa(FNb(116),Na%!b%,Na%!a%):a$=FNa(47)+" "+FNa(77)+" ":a$+=FNa(75):PROCc(x%,Na%!a%+12,a$,0,0):O%=FNr:IFO%=1THEN=TRUE IFO%=2THEN=FALSE PROCd(D%):a$=FNa(50):IFd%!Oa%THENa$=FNa(51) x%=FNi(a$):y%=D%!a%+D%!m%-20:PROCc(x%,y%,a$,0,0):a$=FNa(58)+" "+FNa(52):x%=FNi(a$):y%-=h%!Z%:PROCc(x%,y%,a$,0,0):y%=(D%!a%+D%!m%)-100:a$=" "+FNa(68)+" "+FNa(69):a$+=STRING$(12," ")+FNa(57)+".":a$+=STRING$(3," ")+FNa(60)+".":x%=FNi(a$):PROCc(x%,y%,a$,0,0) y%-=2*h%!Z%:FORi%=1TO10:IFi%<10THEN a$=" "+STR$(i%)+". " ELSE:a$=" "+STR$(i%)+". " ENDIF s$=FNk(a$(i%),d%!64):a$+=FNn(s$,8," ",FALSE):a$+=" .... ":a$+=FNy(STR$(d%(i%)),10):a$+=" ... "+FNy(STR$(e%(i%)),3):x%=FNi(a$):PROCc(x%,y%-(i%*(h%!Z%+5)),a$,0,0):NEXTi%:O%=FNr:IFO%=1THEN=TRUE IFO%=2THEN=FALSE PROCd(D%):ENDWHILE:ERROR255,FNa(102):=FALSE DEFFNr: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(D%):PROCb(o%):PROCb(_%):PROCb(Fa%):PROCb(Ga%):PROCb(W%):PROCb(Ha%):PROCb(Ia%):PROCb(Ja%):PROCb(Ka%):PROCb(Pa%):PROCb(La%):PROCb(Ma%):PROCb(Na%):PROCb(q%) ENDIF =O% DEFFNi(a$):LOCALK%:K%=LEN(a$)*h%!sa%:=D%!b%+FNl(K%,D%!e%) DEFPROCH:LOCALq%,A%,o%,f%,C%:LOCALI%:LOCALc%(),a%():LOCALb%(),Qa%:LOCALRa%,Sa%,Ta%,Ua%:LOCALVa%,Wa%,Xa%:LOCALYa%:LOCALZa%,_a%,`a%,ab%,bb%:LOCALcb%,K%,a$,x%,y%,i%,j%:q%=FNe(32):A%=FNe(28):o%=FNe(48):f%=FNe(68):I%=FNe(16):C%=FNf(16,0) Ra%=0:Sa%=4:Ta%=8:Ua%=12:Ya%=16:db%=12:Va%=28:Qa%=56:Za%=ha%:_a%=ia%:`a%=ja%:ab%=ma%:bb%=na%:DIMc%(10,6),a%(10),b%(d%!Qa%):q%!e%=FNd(30,1):q%!m%=FNd(15,2):q%!b%=FNg(q%,h%):q%!a%=50:q%!S%=6:q%!R%=q%!S% I%!e%=FNd(20,1):I%!m%=FNd(20,2):o%!e%=FNd(40,1):o%!m%=FNd(20,2):o%!a%=T%!ta%-(10+o%!m%):o%!S%=5:o%!B%=FALSE:o%!ia%=1:A%!e%=FNd(5,1):A%!m%=FNd(20,2):A%!B%=FALSE:A%!S%=10:C%!Ta%=1:C%!Ra%=3:C%!Ua%=FALSE d%!Ya%=-1:d%!db%=0:f%!Za%=FNd(20,1):f%!_a%=10:f%!`a%=6:f%!B%=TRUE:f%!bb%=4:SYSFNc(6)TOf%!oa%:PROCJ:PROCK:PROCf(T%!ta%):PROCf(T%!ua%):PROCL(0,d%(1),C%!Ra%,C%!Ta%):PROCM:PROCx:PROCa(FNb(1),q%!b%,q%!a%):WHILEC%!Ra%>0:cb%=FALSE:IFd%!Va%=0THEN IFINKEY(-74)THENPROCN(q%!b%,q%!a%) IFINKEY(-98)THENPROCO:cb%=TRUE IFINKEY(-67)THENPROCP:cb%=TRUE IFINKEY(-17)THENPROCQ ENDIF IFINKEY(-102)THENPROCw IFINKEY(-82)THENPROCv IFINKEY(-56)THENPROCR IFINKEY(-59)THENPROCk(4) IFINKEY(-60)THENPROCk(-4) IFd%!Va%=0THEN IFcb%THEN q%!b%+=q%!R%:PROCa(FNb(1),q%!b%,q%!a%) ENDIF ENDIF IFd%!Va%=0THEN PROCS:PROCT:PROCU:PROCV:PROCW:PROCX ELSE:PROCY ENDIF WAIT:ENDWHILE:U%!e%=240:U%!m%=40:PROCl(U%,h%):U%!a%-=3:PROCd(U%):PROCm(U%):a$=FNa(49)+" "+FNa(53):PROCt(a$,11):PROCe(750):IFNOTC%!Ua%THEN IFC%!Sa%>=d%(10)THEN PROCZ(C%) ENDIF ENDIF PROCb(q%):PROCb(f%):PROCb(o%):PROCb(A%):PROCb(C%):PROCb(I%):FORi%=1TO10:PROCb(a%(i%)):NEXTi%:FORi%=1TOd%!Qa%:PROCb(b%(i%)):NEXTi%:ENDPROC DEFPROCO:IFq%!b%<=0THEN q%!b%=0 ELSE:q%!R%=0-q%!S% ENDIF ENDPROC DEFPROCP:IFq%!b%>=h%!e%-q%!e%THEN q%!b%=h%!e%-q%!e% ELSE:q%!R%=0+q%!S% ENDIF ENDPROC DEFPROCN(x%,y%):IFNOTA%!B%THEN A%!B%=TRUE:A%!b%=x%+(q%!e%/2):A%!a%=y%+q%!m%:PROCg(4) ENDIF ENDPROC DEFPROCv:LOCALN%,eb%:N%=40:eb%=44:IFd%!eb%THEN REPEAT:UNTILNOTINKEY(-82):d%!N%=FNw(d%!N%):IFd%!N%=-1THENERROR255,FNa(109) OSCLI"ScreenSave "+q$+"Dump"+STR$(d%!N%) ENDIF ENDPROC DEFPROCQ:LOCALi%,fb%:fb%=52:FORi%=1TOd%!fb%:a%(i%)!B%=FALSE:NEXTi%:C%!Ra%=0:C%!Ua%=TRUE:ENDPROC DEFPROCw:LOCAL`%,gb%:`%=0:gb%=4:REPEAT:UNTILNOTINKEY(-102):d%!`%+=1:IFd%!`%>2THENd%!`%=0 IFd%!`%=1THEN SYSFNc(33),d%!gb% ELSE:SYSFNc(34),d%!gb% ENDIF PROCj:ENDPROC DEFPROCk(hb%):LOCAL`%,gb%,ib%,jb%,E%,Ea%,kb%:`%=0:gb%=4:ib%=8:jb%=48:IFd%!`%=1THEN SYSFNc(6)TOE%:IFE%-d%!ib%>=10THEN SYSFNc(36),d%!gb%,-1TO,Ea%:kb%=Ea%+hb%:IFkb%>=0ANDkb%<=128THEN SYSFNc(36),d%!gb%,kb%:d%!jb%=kb%:d%!ib%=E% ENDIF ENDIF ENDIF ENDPROC DEFPROCR:LOCALVa%,Wa%,a$:Va%=28:Wa%=32:REPEATUNTILNOTINKEY(-56):a$=FNa(49)+" "+FNa(61):d%!Va%=FNo(d%!Va%):d%!Wa%=d%!Va%:IFd%!Va%=0THEN a$=STRING$(LEN(a$)," "):PROCn(a$) ENDIF ENDPROC DEFPROCS:IFA%!B%THEN IFA%!a%>=T%!ta%-A%!m%THEN A%!B%=FALSE:A%!a%-=2:PROCd(A%) ELSE:PROCa(FNb(5),A%!b%,A%!a%) ENDIF A%!a%+=A%!S% ENDIF ENDPROC DEFPROCT:LOCALlb%,mb%,nb%,E%,ob%,d$:lb%=ga%:mb%=ha%:nb%=ia%:IFNOTo%!B%THEN IFFNp(4)ANDFNp(5)THEN o%!B%=TRUE:o%!Y%=FALSE:o%!mb%=0:IFFNp(50)THEN o%!R%=0-o%!S%:o%!b%=h%!e% ELSE:o%!R%=0+o%!S%:o%!b%=0-o%!e% ENDIF ENDIF ELSE:IFo%!b%<=0-o%!e%ANDSGN(o%!R%)=-1THEN o%!lb%=FALSE:o%!B%=FALSE:ENDPROC ENDIF IFo%!b%>h%!e%ANDSGN(o%!R%)=1THEN o%!lb%=FALSE:o%!B%=FALSE:ENDPROC ENDIF IFNOTo%!Y%THEN IFFNm(A%,o%)THEN PROCd(A%):PROCa(FNb(12),o%!b%,o%!a%):SYSFNc(6)TOo%!lb%:o%!Y%=TRUE:A%!B%=FALSE:PROCh(500) ENDIF ELSE:IFFNm(A%,o%)THEN PROCd(A%):A%!B%=FALSE ENDIF ENDIF IFNOTo%!Y%THEN SYSFNc(6)TOE%:IFE%-o%!nb%>=40THEN o%!nb%=E%:o%!mb%=FNo(o%!mb%) ENDIF d$=FNb(10)+STR$(o%!mb%):PROCa(d$,o%!b%,o%!a%):o%!b%+=o%!R% ELSE:SYSFNc(6)TOE%:ob%=E%-o%!lb%:IFob%>=300THEN o%!B%=FALSE:o%!mb%=1:PROCd(o%) ELSE:IFob%>=250THEN PROCa(FNb(15),o%!b%,o%!a%) ELSE:IFob%>=200THEN PROCa(FNb(14),o%!b%,o%!a%) ELSE:IFob%>=100THEN PROCa(FNb(13),o%!b%,o%!a%) ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF ENDPROC DEFPROCU:LOCALpb%,z%,J%,Q%,qb%,rb%,sb%,tb%:LOCALP%,ub%,vb%,E%,wb%,xb%,yb%:P%=ga%:ub%=ka%:vb%=la%:wb%=oa%:xb%=52:yb%=56:SYSFNc(6)TOE%:IFE%-f%!wb%>=50THEN f%!wb%=E%:f%!P%=FNo(f%!P%) ENDIF pb%=f%!b%+f%!e%:tb%=0-((f%!ub%-1)*(I%!e%+f%!Za%)):IFpb%>=h%!e%THEN f%!R%=0-f%!S%:PROCy ENDIF IFf%!b%<=tb%THEN f%!R%=0+f%!S%:PROCy ENDIF tb%=f%!a%+((f%!ab%-1)*I%!m%):IFtb%<=q%!a%+q%!m%THEN PROC_:ENDPROC ENDIF IFFNm(A%,f%)THEN z%=I%!e%+f%!Za%:IF(A%!b%-f%!b%)MODz%<=I%!e%THEN J%=((A%!a%-f%!a%)DIVI%!m%)+1:Q%=((A%!b%-f%!b%)DIVz%)+1:IFSGN(c%(Q%,J%))=1THEN c%(Q%,J%)=-5:PROCd(A%):A%!B%=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%!`a%THEN C%!Ta%+=1:PROCd(f%):PROCf(T%!ua%):PROCi(C%!Ra%):PROCo(C%!Ta%):PROCj:PROCa(FNb(1),q%!b%,q%!a%):PROC`:PROCx:PROCz:IFC%!Ta%>=5THENd%!xb%=7 IFC%!Ta%>=10THENd%!xb%=10 ENDIF qb%=TRUE:rb%=TRUE:FORJ%=1TOf%!`a%:IFc%(f%!vb%,J%)<>0THENqb%=FALSE IFc%(f%!ub%,J%)<>0THENrb%=FALSE NEXTJ%:sb%=TRUE:FORQ%=1TOf%!_a%:IFc%(Q%,f%!ab%)<>0THENsb%=FALSE NEXTQ%:IFrb%THENf%!ub%+=1 IFqb%THEN f%!e%-=(I%!e%+f%!Za%):f%!vb%-=1 ENDIF IFsb%THENf%!ab%+=1 f%!b%+=f%!R%:PROCp:ENDPROC DEFPROCV:LOCALi%,j%,E%,xb%,yb%:xb%=52:yb%=56:FORi%=1TOd%!xb%:IFNOTa%(i%)!B%THEN PROCaa(i%) ELSE:PROCba(i%):IFa%(i%)!a%<=T%!ua%+(T%!m%+5)THEN a%(i%)!B%=FALSE:PROCd(a%(i%)) ENDIF IFFNm(a%(i%),q%)ANDa%(i%)!B%THEN PROCca(i%) ENDIF FORj%=1TOd%!yb%:IFFNm(a%(i%),b%(j%))THEN PROCA(j%,FALSE):PROCd(a%(i%)):a%(i%)!B%=FALSE ENDIF NEXTj%:IFFNm(A%,a%(i%))THEN PROCda(i%) ENDIF IFa%(i%)!Y%THEN PROCea(i%) ENDIF ENDIF NEXTi%:ENDPROC DEFPROCY:LOCALVa%,Wa%,Xa%,E%,a$:Va%=28:Wa%=32:Xa%=36:SYSFNc(6)TOE%:IFE%-d%!Xa%>=50THEN d%!Wa%=FNo(d%!Wa%):d%!Xa%=E% ENDIF a$=FNa(49)+" "+FNa(61):IFd%!Wa%=0ORd%!Va%=0THEN a$=STRING$(LEN(a$)," ") ENDIF PROCn(a$):ENDPROC DEFPROCX:LOCALYa%,zb%,Ab%,E%,a$:Ya%=16:zb%=20:Ab%=24:IFd%!Ya%>=0THEN SYSFNc(6)TOE%:a$=FNa(66)+" "+FNa(72):IFE%-d%!Ab%>=50THEN d%!Ab%=E%:d%!zb%=FNo(d%!zb%):IFd%!zb%=1THENd%!Ya%+=1 ENDIF IFd%!zb%=0THEN a$=STRING$(LEN(a$)," ") ENDIF IFd%!Ya%>5THEN a$=STRING$(LEN(a$)," "):d%!Ya%=-1 ENDIF PROCn(a$) ENDIF ENDPROC DEFPROCW:LOCALi%,E%,fb%,wb%,v%:fb%=56:wb%=ha%:v%=FNe(16):FORi%=1TOd%!fb%:IFFNm(A%,b%(i%))THEN PROCd(A%):A%!B%=FALSE:PROCA(i%,TRUE) ENDIF IFb%(i%)!Y%THEN SYSFNc(6)TOE%:IFE%-b%(i%)!wb%>=5THEN v%!b%=b%(i%)!b%:v%!e%=b%(i%)!e%:v%!a%=b%(i%)!a%-5:v%!m%=b%(i%)!m%+10:PROCd(v%):PROCq(b%(i%)):b%(i%)!Y%=FALSE ENDIF ENDIF NEXTi%:PROCb(v%):ENDPROC DEFPROCF(Bb%):LOCALi%,n$,Cb%:Cb%=64:d%!Cb%=RND(128)+127:FORi%=1TO10:IFi%MOD2=0THENn$=FNa(71)ELSEn$=FNa(70) a$(i%)=FNk(n$,d%!Cb%):d%(i%)=(11-i%)*1000:e%(i%)=0:NEXTi%:IFBb%THENPROCB ENDPROC DEFPROCG:LOCALi%,w%,Ca%,Ba%,Da%,V%,g$:w%=OPENIN(h$+"HiTable"):INPUT#w%,g$:IFg$<>"BATSH"THENCLOSE#w%:ERROR255,FNa(115) INPUT#w%,d%!64,Ba%,Ca%:FORi%=1TO10:INPUT#w%,a$(i%),d%(i%),e%(i%):NEXTi%:CLOSE#w%:FORi%=1TO10:V%+=LEN(a$(i%)):NEXTi%:Da%=V%/10:IFBa%<>V%ORCa%<>Da%THENERROR255:FNa(113) ENDPROC DEFPROCB:LOCALi%,w%,V%,Da%,Cb%:Cb%=64:PROCfa:FORi%=1TO10:V%+=LEN(a$(i%)):NEXTi%:Da%=V%/10:w%=OPENOUT(h$+"HiTable"):PRINT#w%,"BATSH",d%!Cb%,V%,Da%:FORi%=1TO10:PRINT#w%,a$(i%),d%(i%),e%(i%):NEXTi%:CLOSE#w%:ENDPROC DEFPROCfa:LOCALi%,Cb%,Db%,w$:Cb%=64:Db%=RND(128)+127:FORi%=1TO10:w$=FNk(a$(i%),d%!Cb%):a$(i%)=FNk(w$,Db%):NEXTi%:d%!Cb%=Db%:ENDPROC DEFPROCZ(C%):LOCALM%,L%,Eb%,g%,i%,Fb%,K%,x%,y%,a$:LOCALOa%:L%=FNe(16):M%=FNe(16):Oa%=44:L%!e%=FNd(100,1):L%!m%=FNd(40,2):L%!b%=FNg(L%,h%):L%!a%=800:M%!e%=FNd(150,1):M%!m%=FNd(40,2):M%!b%=FNg(M%,h%):M%!a%=L%!a%-M%!m%:Fb%=0:FORi%=10TO1STEP-1 IFC%!Sa%>=d%(i%)THENFb%=i% NEXTi%:FORi%=9TOFb%STEP-1:a$(i%+1)=a$(i%):d%(i%+1)=d%(i%):e%(i%+1)=e%(i%):NEXTi%:d%(Fb%)=C%!Sa%:e%(Fb%)=C%!Ta%:CLS:PROCf(T%!ta%):PROCf(T%!ua%):PROCa(FNb(100),L%!b%,L%!a%):PROCa(FNb(101),M%!b%,M%!a%):a$=FNa(54)+" "+STR$(C%!Sa%) a$+=" "+FNa(55)+" "+STR$(Fb%)+FND(Fb%):K%=LEN(a$)*h%!sa%:x%=FNl(K%,h%!e%):y%=M%!a%-170:PROCc(x%,y%,a$,0,0):PROCb(L%):PROCb(M%):U%!e%=165:U%!m%=40:PROCl(U%,h%):PROCm(U%):x%=U%!b%+20:y%=U%!a%+12:a$="":i%=1:Eb%=FALSE OSCLI"FX 21,0":REPEAT:g%=GET:CASEg%OF WHEN13:Eb%=TRUE WHEN8:i%-=1:a$=LEFT$(a$,i%-1) OTHERWISE:IFi%<9ANDFNE(g%)THENi%+=1:a$+=CHR$(g%) ENDCASE IFi%<1THENi%=1 PROCc(x%,y%,STRING$(8," "),0,0):IFa$<>""THENPROCc(x%,y%,a$,0,0) UNTILEb%:IFa$=""ORa$=" "THENa$=FNa(56) a$(Fb%)=FNk(a$,131):IFd%!Oa%THENPROCB ENDPROC DEFFNE(Gb%):=Gb%>=32ANDGb%<=126 DEFPROCL(Hb%,Ib%,l%,r%):LOCALx%,a$:a$=FNa(57)+" "+FNa(59):a$+=FNn(STR$(Hb%),10," ",TRUE):PROCc(0,h%!m%-h%!Z%,a$,0,0):a$=FNa(58)+" "+FNa(57):a$+=" "+FNa(59)+FNn(STR$(Ib%),10," ",TRUE):x%=h%!e%-LEN(a$)*h%!sa%:PROCc(x%,h%!m%-h%!Z%,a$,0,0) PROCi(l%):PROCo(r%):PROCj:ENDPROC DEFPROCi(N%):LOCALa$:PROCa(FNb(1),0,0):a$=" = "+STR$(N%):PROCc(q%!e%,0,a$,0,0):ENDPROC DEFPROCo(N%):LOCALx%,a$:a$=FNa(60)+" "+FNa(59):a$+=FNn(STR$(N%),3,"0",TRUE):x%=h%!e%-LEN(a$)*h%!sa%:PROCc(x%,0,a$,0,0):ENDPROC DEFPROCn(a$):LOCALx%,y%,K%:K%=LEN(a$)*h%!sa%:x%=FNl(K%,h%!e%):y%=h%!m%-h%!Z%:PROCc(x%,y%,a$,0,0):ENDPROC DEFPROCh(Jb%):LOCALdb%,Ya%,x%,a$:db%=12:Ya%=16:C%!Sa%+=Jb%:a$=FNa(57)+" "+FNa(59):a$+=FNn(STR$(C%!Sa%),10," ",TRUE):PROCc(0,h%!m%-h%!Z%,a$,0,0):IFC%!Sa%-d%!db%>=5000THEN C%!Ra%+=1:PROCi(C%!Ra%):d%!db%=C%!Sa%:d%!Ya%=0 ENDIF IFC%!Sa%>d%(1)THEN a$=FNa(58)+" "+FNa(57)+" ":a$+=FNa(59):a$+=FNn(STR$(C%!Sa%),10," ",TRUE):x%=h%!e%-LEN(a$)*h%!sa%:PROCc(x%,h%!m%-h%!Z%,a$,0,0) ENDIF ENDPROC DEFPROCj:LOCALKb%,Lb%,d$:Lb%=FNe(16):Kb%=0:Lb%!e%=FNd(20,1):Lb%!m%=FNd(10,2):Lb%!b%=FNg(Lb%,h%):Lb%!a%=0:IFd%!Kb%<0ORd%!Kb%>2THEN ERROR255,FNa(111)+" "+STR$(d%!Kb%) ENDIF d$=FNb(120+d%!Kb%):PROCa(d$,Lb%!b%,Lb%!a%):PROCb(Lb%):ENDPROC DEFPROCM:LOCALP%,ub%,vb%,ab%:P%=ga%:ub%=ka%:vb%=la%:ab%=ma%: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%!ub%=1:f%!vb%=f%!_a%:f%!ab%=1:s%=(f%!_a%*I%!e%)+((f%!_a%-1)*f%!Za%):f%!e%=s%:f%!m%=f%!`a%*I%!m%:FORQ%=1TOf%!_a%:FORJ%=1TOf%!`a% c%(Q%,J%)=((J%+1)/2)+(f%!P%*10):NEXTJ%:NEXTQ%:ENDPROC DEFPROCp:LOCALJ%,Q%,x%,y%,v%:v%=FNe(16):FORQ%=f%!ub%TOf%!vb%:x%=f%!b%+((Q%-1)*(I%!e%+f%!Za%)):FORJ%=f%!ab%TOf%!`a%:y%=f%!a%+((J%-1)*I%!m%):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:v%!b%=x%:v%!a%=y%:v%!e%=I%!e%:v%!m%=I%!m%:PROCd(v%) ENDIF NEXTJ%:NEXTQ%:PROCb(v%):ENDPROC DEFPROCga(x%,y%,r%,c%):LOCALv%:c%(r%,c%)+=1:PROCa(FNb(26),x%,y%):IFc%(r%,c%)=0THEN v%=FNe(16):v%!b%=x%:v%!a%=y%:v%!e%=I%!e%:v%!m%=I%!m%:PROCd(v%):PROCb(v%) ENDIF ENDPROC DEFPROCy:LOCALv%,i%:v%=FNe(16):FORi%=1TO3:f%!a%-=I%!m%/3:PROCp:NEXTi%:v%!b%=f%!b%:v%!a%=f%!a%+f%!m%:v%!e%=f%!e%:v%!m%=I%!m%:PROCd(v%):PROCb(v%):ENDPROC DEFPROC_:LOCALX%,Mb%,E%,Nb%,Ob%,S%,i%,o$:S%=1:Pb%=24:X%=FNe(28):Mb%=FNe(28):PROCd(f%):PROCd(q%):IFA%!B%THEN PROCd(A%):A%!B%=FALSE ENDIF IFo%!B%THEN PROCd(o%):o%!B%=FALSE ENDIF PROCha:PROCia:q%!b%=FNg(q%,h%):X%!b%=0-I%!e%:X%!a%=q%!a%:X%!R%=S%:Mb%!b%=h%!e%:Mb%!a%=q%!a%:Mb%!R%=0-S%:C%!Ra%=0:PROCf(T%!ua%):PROCi(C%!Ra%):PROCo(C%!Ta%):PROCa(FNb(1),q%!b%,q%!a%):P%=0:Ob%=FALSE:REPEAT:X%!b%+=X%!R%:X%!Pb%=X%!b%+I%!e%:Mb%!b%+=Mb%!R% SYSFNc(6)TOE%:IFE%-Nb%>=50THENOb%=FNo(Ob%):Nb%=E% IFOb%THENo$=FNb(21)ELSEo$=FNb(20) PROCa(o$,X%!b%,X%!a%):PROCa(o$,Mb%!b%,Mb%!a%):PROCe(2):WAIT:UNTILX%!Pb%>=q%!b%:FORi%=1TO10:PROCa(FNb(20),X%!b%,X%!a%):PROCa(FNb(20),Mb%!b%,Mb%!a%):PROCe(20):PROCa(FNb(21),X%!b%,X%!a%):PROCa(FNb(21),Mb%!b%,Mb%!a%):PROCe(20):WAIT:NEXTi%:PROCg(2):FORi%=1TO3 PROCa(FNb(2)+STR$(i%),q%!b%,q%!a%):PROCe(20):WAIT:NEXTi%:PROCe(20):PROCd(q%):PROCb(X%):PROCb(Mb%):ENDPROC DEFPROCJ:LOCALi%,ob%,Nb%:ob%=ia%:Nb%=ja%:FORi%=1TO10:a%(i%)=FNf(48,0):a%(i%)!e%=FNd(5,1):a%(i%)!m%=FNd(20,2):SYSFNc(6)TOa%(i%)!ob%:SYSFNc(6)TOa%(i%)!Nb%:a%(i%)!B%=FALSE:NEXTi%:ENDPROC DEFPROCaa(p%):LOCALQb%,Rb%,Sb%,Tb%,x%,y%:LOCALP%,Ub%:P%=ga%:Ub%=ha%:Qb%=RND(10):Sb%=C%!Ta%+5:IFSb%>100THEN Sb%=100:IFC%!Ta%MOD10=0THENf%!bb%+=1 ENDIF IFFNp(Sb%)ANDFNp(f%!bb%)THEN IFc%(Qb%,f%!ab%)>0THEN x%=f%!b%+(Qb%-1)*(I%!e%+f%!Za%):y%=f%!a%+((f%!ab%-1)*I%!m%)-I%!m%:Rb%=(I%!e%/2)-(a%(p%)!e%/2):a%(p%)!b%=x%+Rb%:a%(p%)!a%=y%:a%(p%)!B%=TRUE:a%(p%)!Y%=FALSE:a%(p%)!Ub%=1:a%(p%)!P%=0:Tb%=4:IFFNp(25)THENa%(p%)!Ub%=2:Tb%=Tb%/2 a%(p%)!S%=Tb%:a%(p%)!R%=a%(p%)!S%:PROCg(3) ENDIF ENDIF ENDPROC DEFPROCba(p%):LOCALE%,P%,Nb%,Ub%,d$,r$:P%=ga%:Ub%=ha%:Nb%=ja%:SYSFNc(6)TOE%:IFE%-a%(p%)!Nb%>=40THEN a%(p%)!Nb%=E%:a%(p%)!P%+=1 ENDIF :IFa%(p%)!Ub%=1ANDa%(p%)!P%>1THEN a%(p%)!P%=0 ENDIF IFa%(p%)!Ub%=2ANDa%(p%)!P%>3THEN a%(p%)!P%=0 ENDIF r$=STR$(a%(p%)!P%):IFa%(p%)!Ub%=2ANDa%(p%)!P%=3THEN r$="1" ENDIF d$=FNb(30)+STR$(a%(p%)!Ub%)+r$:IFNOTa%(p%)!Y%THEN a%(p%)!a%-=a%(p%)!R%:PROCa(d$,a%(p%)!b%,a%(p%)!a%) ELSE:d$=FNb(30)+"3":PROCa(d$,a%(p%)!b%,a%(p%)!a%) ENDIF ENDPROC DEFPROCca(p%):LOCALi%:PROCg(2):FORi%=1TO3:PROCa(FNb(2)+STR$(i%),q%!b%,q%!a%):PROCe(20):WAIT:NEXTi%:PROCd(q%):IFA%!B%THEN PROCd(A%):A%!B%=FALSE ENDIF q%!b%=FNg(q%,h%):C%!Ra%-=1:PROCi(C%!Ra%):PROCd(a%(p%)):a%(p%)!B%=FALSE:PROCa(FNb(1),q%!b%,q%!a%):ENDPROC DEFPROCda(p%):LOCALUb%,ob%:Ub%=ha%:ob%=ia%:IFa%(p%)!Ub%=1THEN IFNOTa%(p%)!Y%THEN a%(p%)!Y%=TRUE:PROCh(5):d$=FNb(30)+"3":PROCa(d$,a%(p%)!b%,a%(p%)!a%):SYSFNc(6)TOa%(p%)!ob% ENDIF ENDIF PROCd(A%):A%!B%=FALSE:ENDPROC DEFPROCea(p%):LOCALob%,E%:ob%=ia%:SYSFNc(6)TOE%:IFE%-a%(p%)!ob%>=40THEN PROCd(a%(p%)):a%(p%)!B%=FALSE ENDIF ENDPROC DEFPROCha:LOCALi%,Vb%:Vb%=52:FORi%=1TOd%!Vb%:IFa%(i%)!B%THEN PROCd(a%(i%)):a%(i%)!B%=FALSE ENDIF NEXTi%:ENDPROC DEFPROCK:LOCALi%,x%,Wb%,Xb%,N%:N%=d%!56:Xb%=ga%:Wb%=h%!e%/N%:x%=Wb%-150:FORi%=1TON%:b%(i%)=FNf(48,0):b%(i%)!e%=FNd(30,1):b%(i%)!m%=FNd(15,2):b%(i%)!b%=x%+((i%-1)*Wb%):b%(i%)!a%=q%!a%+100:b%(i%)!B%=TRUE:b%(i%)!Xb%=0:NEXTi%:ENDPROC DEFPROC`:LOCALi%,Xb%,N%:N%=d%!56:Xb%=ga%:FORi%=1TON%:b%(i%)!B%=TRUE:b%(i%)!Xb%=0:NEXTi%:ENDPROC DEFPROCx:LOCALi%,N%:N%=56:FORi%=1TOd%!N%:IFb%(i%)!B%THENPROCq(b%(i%)) NEXTi%:ENDPROC DEFPROCq(p%):LOCALYb%,Zb%,_b%,K%,Xb%,a$:Xb%=ga%:_b%=10-p%!Xb%:a$=STR$(_b%):K%=LEN(a$):Yb%=p%!b%+FNl(K%,p%!e%):Zb%=p%!a%+(p%!m%/2)-(h%!Z%/2):Zb%+=7:IFK%=1THENYb%-=7ELSEYb%-=15 PROCd(p%):PROCa(FNb(16),p%!b%,p%!a%):PROCc(Yb%,Zb%,a$,0,1):ENDPROC DEFPROCA(p%,`b%):LOCALy%,Xb%:Xb%=ga%:wb%=ha%:b%(p%)!Xb%+=1:IFb%(p%)!Xb%>=10THEN PROCd(b%(p%)):b%(p%)!B%=FALSE ELSE:PROCd(b%(p%)):y%=b%(p%)!a%:IF`b%THENb%(p%)!a%+=5ELSEb%(p%)!a%-=5 PROCq(b%(p%)):b%(p%)!Y%=TRUE:b%(p%)!a%=y%:SYSFNc(6)TOb%(p%)!wb% ENDIF ENDPROC DEFPROCia:LOCALi%,v%,N%:N%=d%!56:FORi%=1TON%:b%(i%)!B%=FALSE:NEXTi%:v%=FNe(16):v%!b%=0:v%!a%=b%(1)!b%:v%!e%=h%!e%:v%!m%=b%(1)!m%:PROCd(v%):PROCb(v%):ENDPROC DEFFNu(e$):LOCALH%,ac%,bc%,cc%,dc%,ec%,Kb%,i%,f$:H%=FNF(e$):cc%=FNf(H%,0):SYSFNc(3),16,e$,cc%,0:FORi%=0TO3:f$+=CHR$(cc%?i%):NEXTi%:IFf$="SQSH"THEN PRINT" "+FNa(27)+" ";:SYSFNc(7),1<<3,H%TOac%,bc%:IFbc%=-1THENbc%=cc%!4 dc%=FNf(ac%,0):ec%=FNz(bc%+4):SYSFNc(7),1<<2,dc%,cc%+20,H%-20,ec%+4,bc%TOKb%:IFKb%<>0THENERROR255,FNa(114)+" "+STR$(Kb%) PROCb(dc%):PROCb(cc%) ELSE:ec%=FNz(H%+256):SYSwa%,256+10,ec%,e$ ENDIF SYSwa%,256+17,ec%:=ec% DEFFNz(H%):LOCALec%:ec%=FNf(H%,0):ec%!0=H%:ec%!4=0:ec%!8=16:ec%!12=16:=ec% DEFPROCc(x%,y%,a$,fc%,gc%):LOCALi%,hc%:CASEgc%OF WHEN0:Aa%=ya% WHEN1:Aa%=za% OTHERWISE:ERROR255,FNa(112)+" "+STR$(gc%) ENDCASE hc%=h%!sa%:FORi%=1TOLEN(a$):PROCa(STR$(ASC(MID$(a$,i%,1))),x%+((i%-1)*hc%),y%):IFfc%>0THENPROCe(fc%) NEXTi%:Aa%=xa%:ENDPROC DEFPROCa(B$,x%,y%):LOCALic%:SYSwa%,256+24,Aa%,B$TO,,ic%:SYSwa%,512+34,Aa%,ic%,x%,y%,0:ENDPROC DEFPROCd(G%):GCOL0,0TINT0:RECTANGLEFILLG%!b%,G%!a%,G%!e%,G%!m%:ENDPROC DEFFNl(jc%,h%):=(h%/2)-(jc%/2) DEFPROCt(a$,kc%):LOCALK%,y%:K%=LEN(a$)*h%!sa%:y%=(h%!m%/2)-(h%!Z%/2):PROCc(FNl(K%,h%!e%),y%,a$,kc%,0):ENDPROC DEFFNg(lc%,mc%):=(mc%!e%/2)-(lc%!e%/2) DEFPROCl(lc%,mc%):LOCALx%,y%:lc%!b%=(mc%!e%/2)-(lc%!e%/2):lc%!a%=(mc%!m%/2)-(lc%!m%/2):ENDPROC DEFPROCf(a%):LOCALi%,nc%:nc%=h%!e%/T%!e%:FORi%=1TOnc%+1:PROCa(FNb(108),(i%-1)*T%!e%,a%):NEXTi%:ENDPROC DEFPROCm(G%):LOCALx%,y%,oc%,pc%,qc%,rc%,i%:oc%=FNd(3,1):pc%=FNd(3,2):qc%=1:rc%=3:FORi%=1TOG%!e%:x%=G%!b%+((i%-1)*qc%):PROCa(FNb(113),x%,G%!a%):PROCa(FNb(113),x%,G%!a%+(G%!m%-(2*rc%))):NEXTi%:x%=G%!b%+(G%!e%-oc%):FORi%=1TOG%!m%-1 PROCa(FNb(114),G%!b%,G%!a%+((i%-1)*qc%)):PROCa(FNb(114),x%,G%!a%+((i%-1)*qc%)):NEXTi%:PROCa(FNb(111),G%!b%,G%!a%):PROCa(FNb(109),G%!b%,(G%!a%+G%!m%)-pc%):PROCa(FNb(112),G%!b%+(G%!e%-oc%),G%!a%):x%=(G%!b%+G%!e%)-oc%:y%=(G%!a%+G%!m%)-pc% PROCa(FNb(110),x%,y%):ENDPROC DEFFNs(e$,f$):LOCALw%,sc%,tc%,g$:w%=OPENIN(e$):INPUT#w%,g$:IFg$<>f$THENCLOSE#w%:ERROR255,"Bad Magic!" INPUT#w%,tc%,tc%,tc%,sc%:CLOSE#w%:=sc% DEFFNt(e$,f$,RETURNj%(),RETURNg$()):LOCALw%,i%,sc%,uc%,Ba%,Ca%,V%,Da%,g$:V%=0:w%=OPENIN(e$):INPUT#w%,g$:IFg$<>f$THENCLOSE#w%:ERROR255,"Bad Magic!" INPUT#w%,uc%,Ba%,Ca%,sc%:FORi%=1TOsc%:INPUT#w%,j%(i%),g$(i%):NEXTi%:CLOSE#w%:FORi%=1TOsc%:V%+=LEN(g$(i%)):NEXTi%:Da%=V%/sc%:IFV%<>Ba%ORDa%<>Ca%THEN ERROR255,"File Inconsistant with header!" ENDIF =uc% DEFPROCr(vc%,uc%,RETURNb$()):LOCALi%:FORi%=1TOvc%:b$(i%)=FNk(b$(i%),uc%):NEXTi%:ENDPROC DEFFNa(wc%):=FNv(wc%,ba%,g%(),f$(),ca%,106) DEFFNb(wc%):=FNv(wc%,da%,h%(),c$(),-1,107) DEFFNc(wc%):=FNv(wc%,ea%,i%(),d$(),-1,108) DEFFNv(wc%,vc%,k%(),b$(),uc%,xc%):LOCALi%,yc%,c$:yc%=0:FORi%=1TOvc%:IFk%(i%)=wc%THENyc%=i%:i%=vc% NEXTi%:IFyc%=0THEN IFwc%>=106ANDwc%<=108THEN ERROR255,"Missing message!!!" ELSE:ERROR255,FNa(xc%)+" "+STR$(wc%) ENDIF ENDIF IFuc%=-1THEN=b$(yc%) =FNk(b$(yc%),uc%) DEFFNB(e$):LOCALw%:w%=0:SYSFNc(31),,e$TOw%:=w% DEFPROCg(zc%):LOCALKb%,x$:Kb%=0:x$=FNa(110)+" "+STR$(zc%):IFd%!Kb%>0THEN IFzc%<1ANDzc%>4THENERROR255,x$ OSCLI"SPlay_fire0"+STR$(zc%)+"mhh" ENDIF ENDPROC DEFPROCs:LOCALv%:v%=FNe(20):v%!0=4:v%!4=5:v%!8=11:v%!12=12:v%!16=-1:SYSFNc(5),v%,v%:h%!pa%=v%!0:h%!qa%=v%!4:h%!e%=(v%!8)+1<h%!ra%THENPROCs CASEAc%OF WHEN1:Bc%=H%<>h%!pa% WHEN4:Bc%=H%>>h%!qa% OTHERWISE:ERROR255,FNa(103)+" "+STR$(Ac%) ENDCASE =Bc% DEFFNm(G%,Dc%):LOCALEc%,Fc%,Gc%,Hc%:Gc%=FALSE:Hc%=FALSE:IFG%!B%ANDDc%!B%THEN Ec%=Dc%!b%+Dc%!e%:Fc%=Dc%!a%+Dc%!m%:IFG%!b%>=Dc%!b%ANDG%!b%=Dc%!a%ANDG%!a%-1THEN SYS"TimPlayer_SongStop",d%!4:SYS"TimPlayer_SongUnload",d%!4 ENDIF PROCu:ENDPROC DEFFNj(C$,y$):LOCALl$,t$,O%,yc%:l$=STRING$(10," "):RIGHT$(l$,3)=" : ":LEFT$(l$,LEN(y$))=y$:O%=FNq(C$):t$="Missing!!":yc%=FALSE:IFO%=1THENt$="OK.":yc%=TRUE l$+=t$:PRINTl$:=yc% DEFFNw(sc%):LOCALj$:j$="Dump"+STR$(sc%):IFFNq(q$+j$)<>0THEN REPEAT:sc%+=1:j$="Dump"+STR$(sc%):UNTILFNq(q$+j$)=0ORLEN(j$)>10:IFLEN(j$)>10THENsc%=-1 ENDIF =sc% DEFPROCE:LOCALw%,`%,jb%,Ic%,hb%:`%=0:jb%=48:w%=OPENIN(h$+"Configs"):INPUT#w%,Ic%,hb%:CLOSE#w%:IFIc%>=0ANDIc%<=2THENd%!`%=Ic% IFhb%>=0ANDhb%<=128THENd%!jb%=hb% ENDPROC DEFPROCI:LOCALw%,`%,jb%:`%=0:jb%=48:w%=OPENOUT(h$+"Configs"):PRINT#w%,d%!`%,d%!jb%:CLOSE#w%:ENDPROC DEFFNp(n%):=RND(100)<=n% DEFFNk(a$,uc%):LOCALi%,z$:FORi%=1TOLEN(a$):z$+=CHR$(ASC(MID$(a$,i%,1))EORuc%):NEXTi%:=z$ DEFPROCe(n%):LOCALt%:t%=TIME+n%:REPEAT:UNTILTIME>=t%:ENDPROC DEFFNo(n%):=n%EOR1 DEFFND(n%):LOCALc$,u%:u%=VAL(RIGHT$(STR$(n%),1)):c$=FNa(65):IFu%>=1ANDu%<=3THENc$=FNa(u%+61) =c$ DEFFNn(a$,Jc%,A$,Kc%):LOCALLc%,c$:Lc%=Jc%-LEN(a$):IFLc%<=0THEN c$=LEFT$(a$,Jc%) ELSE:IFKc%THEN c$=STRING$(Jc%,A$):RIGHT$(c$,LEN(a$))=a$ ELSE:c$=a$+STRING$(Lc%,A$) ENDIF ENDIF =c$ DEFFNy(a$,Jc%):LOCALc$:c$=STRING$(Jc%," "):RIGHT$(c$,LEN(a$))=a$:=c$ DEFFNq(k$):LOCALyc%:SYS"XOS_File",17,k$TOyc%:=yc% DEFFNF(k$):LOCALH%:SYSFNc(3),17,k$TO,,,,H%:=H% DEFFNx(Ac%,k$):LOCALw%,Mc%,Nc%,Oc%:Oc%=FALSE:CASEAc%OF WHEN0:w%=OPENUP(k$+"chkfile") WHEN1:w%=OPENUP(k$) OTHERWISE:ERROR255,FNa(104)+" "+STR$(Ac%) ENDCASE IFw%<>0THEN SYSFNc(4),254,w%TONc%;Mc%:IF(Mc%AND1)THENCLOSE#w%:ERROR255,FNa(105) IF((Nc%AND(1<<7))<>0)THENOc%=TRUE CLOSE#w% ENDIF =Oc% DEFPROCD:LOCALPc%:Qc%=0:Rc%=0:SYSFNc(10),-1,-1TOSc%:SYSFNc(11)TOTc%;Pc%:IFPc%AND1THENTc%=16384 PROCja(Tc%):ENDPROC DEFPROCu:IFQc%THEN SYSFNc(10),Qc%-32768,-1TOSc%:Qc%=0:Rc%=0 ENDIF ENDPROC DEFFNe(Uc%):LOCALF%,H%:H%=(Uc%+15)AND-4:F%=FNG(H%):IFF%ELSEERROR254,FNa(211) F%!0=&DEADDEAD:F%!4=Uc%:!(F%-8+(F%!-4))=&DEADDEAD:=F%+8 DEFFNf(Uc%,Jb%):LOCALF%:F%=FNe(Uc%):PROCka(F%,Jb%):=F% DEFPROCb(RETURNF%):CASEFNH(F%)OF WHEN1:ERROR254,FNa(212) WHEN2:ERROR254,FNa(213) WHEN3:ERROR254,FNa(217) ENDCASE F%-=8:Rc%-=F%!-4:SYSFNc(12),3,Qc%,F%:F%=0:ENDPROC DEFFNA(F%):LOCALv%:v%=F%-4:=v%!0 DEFPROCka(F%,Jb%):LOCALtb%,H%:H%=FNA(F%):FORtb%=0TOH%-4STEP4:F%!tb%=Jb%:NEXTtb%:ENDPROC DEFFNh(F%):LOCALVc%,tb%,H%:H%=FNA(F%):Vc%=FNe(H%):FORtb%=0TOH%-4STEP4:Vc%!tb%=F%!tb%:NEXTtb%:=Vc% DEFFNH(F%):LOCALIb%,Wc%:Ib%=FALSE:Wc%=FALSE:F%-=8:IFF%!0<>&DEADDEADTHENWc%=TRUE IF!(F%-8+(F%!-4))<>&DEADDEADTHENIb%=TRUE IFWc%ANDIb%THEN=3 IFIb%THEN=2 IFWc%THEN=1 =0 DEFPROCja(H%):IFQc%THENERROR254,FNa(215) H%=(H%+Tc%-1)ANDNOT(Tc%-1):Qc%=HIMEM:SYSFNc(10),Sc%+H%,-1TOSc%:H%=Sc%+32768-Qc%:IFH%<1THEN Qc%=0:ERROR254,FNa(216) ELSE:SYSFNc(12),0,Qc%,,H% ENDIF Rc%=0:ENDPROC DEFPROCla(Uc%):LOCALXc%:Xc%=Sc%:SYSFNc(10),Sc%+Uc%,-1TOSc%:Uc%=Sc%-Xc%:IFUc%THENSYSFNc(12),5,Qc%,,Uc%TO,,,Uc% ENDPROC DEFFNG(Uc%):LOCALF%,Pc%:SYSFNc(13),2,Qc%,,Uc%TO,,F%;Pc%:IFPc%AND1THEN PROCla((Uc%+Tc%)ANDNOT(Tc%-1)):SYSFNc(13),2,Qc%,,Uc%TO,,F%;Pc%:IFPc%AND1THEN=0 ENDIF Rc%+=F%!-4:=F%