REM Acorn Invaders REM Packed by Make v1.41b 30/5/08 On 02 Jun 2008 ONERRORPROCv:END MODE28:OFF:a$="Acorn Invaders. (c)2008 DynaByte Software":PRINTa$:PRINTSTRING$(LEN(a$),"-"):PRINT:_%=FALSE:b$=".Resources.":PRINT"Checking files...":IFNOTFNj(b$+"Gfx0","Sprites")THEN_%=TRUE IFNOTFNj(b$+"Gfx1","Charset")THEN_%=TRUE IFNOTFNj(b$+"Intro","Music")THEN_%=TRUE IFNOTFNj(b$+"Creds","Credits")THEN_%=TRUE IFNOTFNj(b$+"Msg","Messages")THEN_%=TRUE IFNOTFNj(b$+"ImgLUT","Lookups")THEN_%=TRUE IFNOTFNj(b$+"SWIs","Lookups")THEN_%=TRUE IF_%THENERROR255,"File Missing!!" PRINT:PRINT"Loading Messages...";:aa%=FNr(b$+"Msg","SGSM"):DIMf%(aa%),b$(aa%):PROCi(b$+"Msg","SGSM",f%(),b$()):PRINTFNa(14):PRINTFNa(3);:ba%=FNr(b$+"ImgLUT","SGSM"):DIMg%(ba%),c$(ba%):PROCi(b$+"ImgLUT","SGSM",g%(),c$()):PRINTFNa(14) PRINTFNa(13);:ca%=FNr(b$+"SWIs","SGSM"):DIMh%(ca%),d$(ca%):PROCi(b$+"SWIs","SGSM",h%(),d$()):PRINTFNa(14):PRINTFNa(1):OSCLI"PlayVolume 0":OSCLI"Playmod "+b$+"Intro":OSCLI"PlayPause":_%=FALSE:da%=0:ea%=1:fa%=TRUE:ga%=0:DIMa$(10),c%(10):DIMd%(10):PRINTFNa(2) PROCw:SYSFNe(1),,FNe(2)TOha%:PRINTFNa(4);:ia%=FNu(b$+"Gfx0"):PRINTFNa(14):PRINTFNa(5);:ja%=FNu(b$+"Gfx1"):PRINTFNa(14):ka%=ia%:PRINTFNa(6);:la%=OPENIN(b$+"Creds"):INPUT#la%,g$:IFg$<>"DERC"THEN CLOSE#la%:ERROR255,FNa(101):END ENDIF INPUT#la%,ga%:DIMe$(ga%),e%(ga%):FORi%=1TOga%:INPUT#la%,e%(i%),e$(i%):NEXTi%:CLOSE#la%:PRINTFNa(14):PRINTFNa(7);:l$=b$+"HiTable":IFFNv(l$)<>1THEN IFNOTFNw(0,b$)THEN fa%=FALSE:PRINTFNa(8) ELSE:PRINTFNa(9) ENDIF PROCx(fa%) ELSE:IFNOTFNw(1,l$)THEN fa%=FALSE:PRINTFNa(10) ELSE:PRINTFNa(11) ENDIF PROCy ENDIF PRINTFNa(12):PROCe(150):b%=0:a%=4:f%=8:k%=12:M%=16:N%=20:q%=24:ma%=28:E%=32:na%=36:oa%=40:pa%=44:qa%=48:ra%=52:sa%=56:ta%=60:ua%=64:va%=68:wa%=16:xa%=20:ya%=24:V%=28:T%=32:za%=16:Aa%=20:h%=FNd(36):P%=FNd(24):K%=FNd(16) CLS:PROCm:h%!V%=FNc(8,1):h%!T%=FNc(8,2)+7:P%!f%=FNc(6,1):P%!k%=FNc(6,2):P%!za%=h%!k%-50:P%!Aa%=30:OSCLI"PlayVolume 127":OSCLI"PlayStart":REPEAT:CLS:_%=FNz:IFNOT_%THENCLS:PROCz UNTIL_%:CLS:K%!f%=220:K%!k%=40:K%=FNs(K%,h%):K%!a%-=3:PROCj(K%):PROCn(FNa(31),10):IFea%=1THEN FORi%=127TO1STEP-2:OSCLI"PlayVolume "+STR$(i%):PROCe(4):NEXTi%:OSCLI"PlayStop":OSCLI"PlayVolume 127" ENDIF PROCo:END DEFFNz:LOCALi%,H%,I%,B%,O%,d%,U%,Ba%,m%:LOCALCa%,Q%,Da%,Ea%,Fa%,Ga%,x%,y%,J%,s$,a$:H%=FNh(FNd(16),0):I%=FNh(FNd(16),0):B%=FNh(FNd(16),0):d%=FNh(FNd(16),0):U%=FNh(FNd(16),0):Q%=FNh(FNd(16),0):m%=FNh(FNd(16),0) H%!f%=FNc(100,1):H%!k%=FNc(40,2):H%!b%=FNf(H%,h%):H%!a%=800:I%!f%=FNc(150,1):I%!k%=FNc(40,2):I%!b%=FNf(I%,h%):I%!a%=H%!a%-I%!k%:B%!f%=640:B%!k%=500:B%!b%=FNf(B%,h%):B%!a%=200:d%!f%=FNc(40,1):d%!k%=FNc(20,2):d%!b%=B%!b%+150 d%!a%=(B%!a%+B%!k%)-125:m%!f%=FNc(30,1):m%!k%=FNc(15,2):U%!f%=FNc(20,1):U%!k%=FNc(20,2):U%!b%=B%!b%+150+FNf(U%,d%):Ba%=FNi(U%):Ca%=FNi(U%)::Ca%!a%=d%!a%-40-Ca%!k%:Ba%!a%=Ca%!a%-40-Ba%!k%:U%!a%=Ba%!a%-40-U%!k% Q%!f%=FNc(20,1):Q%!k%=FNc(20,2):Q%!b%=B%!b%+150+FNf(Q%,d%):Da%=FNi(Q%):Ea%=FNi(Q%):Ga%=FNi(Q%):Fa%=FNi(Q%):Ha%=FNi(Q%)::Q%!a%=(B%!a%+B%!k%)-120:Da%!a%=Q%!a%-60:Ea%!a%=Da%!a%-60:Ga%!a%=Ea%!a%-90:Ha%!a%=Ga%!a%-60:Fa%!a%=Ha%!a%-60 PROCf(P%!za%):PROCf(P%!Aa%):FORi%=0-H%!f%TOH%!b%STEP5:WAIT:PROCa(FNb(100),i%,H%!a%):PROCe(1):NEXTi%:FORi%=h%!f%TOI%!b%STEP-5:WAIT:PROCa(FNb(101),i%,I%!a%):PROCe(1):NEXTi%:a$=FNa(32):O%=LEN(a$)*h%!V%:y%=170:PROCb(FNk(O%,h%!f%),y%,a$,11):a$=FNa(33) O%=LEN(a$)*h%!V%:y%-=h%!T%:PROCb(FNk(O%,h%!f%),y%,a$,11):WHILENOTINKEY(-99)ANDNOTINKEY(-17)ANDNOTINKEY(-82):y%=B%!a%+B%!k%:FORi%=1TOga%:a$=FNo(e$(i%)):x%=FNg(a$):CASEe%(i%)OF WHEN-1:y%-=h%!T% WHEN-2:y%-=(2*h%!T%) OTHERWISE:y%-=e%(i%) ENDCASE PROCb(x%,y%,a$,0):NEXTi%:J%=FNq:IFJ%=1THEN=TRUE IFJ%=2THEN=FALSE PROCd(B%):a$=FNa(57)+" "+FNa(34):x%=FNg(a$):y%=B%!a%+B%!k%-20:PROCb(x%,y%,a$,0):a$=FNa(35):y%-=h%!T%:x%=FNg(a$):PROCb(x%,y%,a$,0):x%=d%!b%+d%!f%+10:PROCa(FNb(11),d%!b%,d%!a%):a$=FNa(36)+" "+FNa(40):PROCb(x%,d%!a%+10,a$,0) PROCa(FNb(24),Ca%!b%,Ca%!a%):a$=FNa(37)+" "+FNa(40):PROCb(x%,Ca%!a%+12,a$,0):PROCa(FNb(22),Ba%!b%,Ba%!a%):a$=FNa(38)+" "+FNa(40):PROCb(x%,Ba%!a%+12,a$,0):PROCa(FNb(20),U%!b%,U%!a%):a$=FNa(39)+" "+FNa(40):PROCb(x%,U%!a%+12,a$,0) O%=m%!f%/h%!V%+2:s$=FNa(66):a$=s$+STRING$(O%," ")+FNa(67):x%=FNg(a$):y%=U%!a%-(3*h%!T%):PROCb(x%,y%,a$,0):m%!b%=x%+7+(LEN(s$)*h%!V%):m%!a%=y%:PROCa(FNb(1),m%!b%,m%!a%):J%=FNq:IFJ%=1THEN=TRUE IFJ%=2THEN=FALSE PROCd(B%):a$=FNa(41):x%=FNg(a$):y%=B%!a%+B%!k%-20:PROCb(x%,y%,a$,0):x%=Q%!b%+Q%!f%+10:PROCa(FNb(102),Q%!b%,Q%!a%):a$=FNa(42)+" "+FNa(43):PROCb(x%,Q%!a%+12,a$,0):PROCa(FNb(103),Da%!b%,Da%!a%):a$=FNa(42)+" "+FNa(44):PROCb(x%,Da%!a%+12,a$,0) PROCa(FNb(104),Ea%!b%,Ea%!a%):PROCb(x%,Ea%!a%+12,FNa(45),0):PROCa(FNb(105),Ha%!b%,Ha%!a%):a$=FNa(46)+" "+FNa(49):PROCb(x%,Ha%!a%+12,a$,0):PROCa(FNb(106),Ga%!b%,Ga%!a%):PROCb(x%,Ga%!a%+12,FNa(47),0):PROCa(FNb(107),Fa%!b%,Fa%!a%) a$=FNa(48)+" "+FNa(49):PROCb(x%,Fa%!a%+12,a$,0):J%=FNq:IFJ%=1THEN=TRUE IFJ%=2THEN=FALSE PROCd(B%):a$=FNa(50):IFfa%THENa$=FNa(51) x%=FNg(a$):y%=B%!a%+B%!k%-20:PROCb(x%,y%,a$,0):a$=FNa(58)+" "+FNa(52):x%=FNg(a$):y%-=h%!T%:PROCb(x%,y%,a$,0):y%=(B%!a%+B%!k%)-100:a$=" "+FNa(68)+" "+FNa(69):a$+=STRING$(12," ")+FNa(57)+".":a$+=STRING$(3," ")+FNa(60)+".":x%=FNg(a$):PROCb(x%,y%,a$,0):y%-=2*h%!T% FORi%=1TO10:IFi%<10THEN a$=" "+STR$(i%)+". " ELSE:a$=" "+STR$(i%)+". " ENDIF s$=FNo(a$(i%)):a$+=FNl(s$,8," ",FALSE):a$+=" .... ":a$+=FNx(STR$(c%(i%)),10):a$+=" ... "+FNx(STR$(d%(i%)),3):x%=FNg(a$):PROCb(x%,y%-(i%*(h%!T%+5)),a$,0):NEXTi%:J%=FNq:IFJ%=1THEN=TRUE IFJ%=2THEN=FALSE PROCd(B%):ENDWHILE:ERROR255,FNa(102):=FALSE DEFFNq:LOCALt%,J%:t%=TIME+750:J%=FALSE:REPEAT:IFINKEY(-82)THENPROCp IFINKEY(-102)THENPROCq UNTILTIME>=t%ORINKEY(-17)ORINKEY(-99):IFINKEY(-17)THENJ%=1 IFINKEY(-99)THENJ%=2 IFJ%THEN PROCc(H%):PROCc(I%):PROCc(B%):PROCc(d%):PROCc(U%):PROCc(Ba%):PROCc(Ca%):PROCc(Q%):PROCc(Da%):PROCc(Ea%):PROCc(Fa%):PROCc(Ga%):PROCc(Ha%):PROCc(m%) ENDIF =J% DEFFNg(a$):LOCALO%:O%=LEN(a$)*h%!V%:=B%!b%+FNk(O%,B%!f%) DEFPROCz:LOCALm%,p%,d%,e%,o%:LOCALD%:LOCALb%(),a%():LOCALW%,X%,Ia%,Ja%:LOCALKa%,La%,Ma%:LOCALNa%,Oa%,Pa%,Qa%,Ra%:LOCALSa%,O%,a$,x%,y%,i%,j%:m%=FNd(32):p%=FNd(40):d%=FNd(48):e%=FNd(68):D%=FNd(16):o%=FNd(36):DIMb%(10,6),a%(7) W%=0:X%=4:Ia%=8:Ja%=12:Ka%=16:La%=20:Ma%=24:Na%=oa%:Oa%=pa%:Pa%=qa%:Qa%=ta%:Ra%=ua%:m%!f%=FNc(30,1):m%!k%=FNc(15,2):m%!b%=FNf(m%,h%):m%!a%=50:m%!N%=6:m%!M%=m%!N%:D%!f%=FNc(20,1):D%!k%=FNc(20,2) d%!f%=FNc(40,1):d%!k%=FNc(20,2):d%!a%=P%!za%-(10+d%!k%):d%!N%=5:d%!q%=FALSE:d%!pa%=1:p%!f%=FNc(5,1):p%!k%=FNc(20,2):p%!q%=FALSE:p%!N%=10:o%!Ia%=1:o%!X%=0:o%!W%=3:o%!Ja%=FALSE:o%!Ka%=0:o%!E%=0:o%!Ma%=o%!X% e%!Na%=FNc(20,1):e%!Oa%=10:e%!Pa%=6:e%!q%=TRUE:e%!Ra%=4:FORi%=1TO7:a%(i%)=FNd(44):a%(i%)=FNh(a%(i%),0):a%(i%)!f%=FNc(5,1):a%(i%)!k%=FNc(20,2):NEXTi%:PROCf(P%!za%):PROCf(P%!Aa%):PROCA(0,c%(1),o%!W%,o%!Ia%) PROCB:PROCa(FNb(1),m%!b%,m%!a%):REPEAT:Sa%=FALSE:IFo%!Ka%=0THEN IFINKEY(-74)THENPROCC(m%!b%,m%!a%) IFINKEY(-98)THENPROCD:Sa%=TRUE IFINKEY(-67)THENPROCE:Sa%=TRUE IFINKEY(-17)THENPROCF ENDIF IFINKEY(-102)THENPROCq IFINKEY(-82)THENPROCp IFINKEY(-56)THENPROCG IFo%!Ka%=0 IFSa%THEN m%!b%+=m%!M%:PROCa(FNb(1),m%!b%,m%!a%) ENDIF ENDIF IFo%!W%>0THEN IFo%!Ka%=0THEN PROCH:PROCI:PROCJ:PROCK ELSE:PROCL ENDIF ENDIF WAIT:UNTILo%!W%=0:K%!f%=240:K%!k%=40:K%=FNs(K%,h%):K%!a%-=3:PROCd(K%):PROCj(K%):a$=FNa(49)+" "+FNa(53):PROCn(a$,11):PROCe(750):IFNOTo%!Ja%THEN IFo%!X%>=c%(10)THEN PROCM(o%) ENDIF ENDIF PROCc(m%):PROCc(e%):PROCc(d%):PROCc(p%):PROCc(o%):PROCc(D%):FORi%=1TO7:PROCc(a%(i%)):NEXTi%:ENDPROC DEFPROCD:IFm%!b%<=0THEN m%!b%=0 ELSE:m%!M%=0-m%!N% ENDIF ENDPROC DEFPROCE:IFm%!b%>=h%!f%-m%!f%THEN m%!b%=h%!f%-m%!f% ELSE:m%!M%=0+m%!N% ENDIF ENDPROC DEFPROCC(x%,y%):IFNOTp%!q%THEN p%!q%=TRUE:p%!b%=x%+(m%!f%/2):p%!a%=y%+m%!k% ENDIF ENDPROC DEFPROCp:REPEAT:UNTILNOTINKEY(-82):OSCLI"ScreenSave .Dump"+STR$(da%):da%+=1:ENDPROC DEFPROCF:LOCALi%:FORi%=1TO7:a%(i%)!q%=FALSE:NEXTi%:o%!W%=0:o%!Ja%=TRUE:ENDPROC DEFPROCq:REPEAT:UNTILNOTINKEY(-102):ea%=FNm(ea%):IFea%=1THENOSCLI"PlayStart"ELSEOSCLI"PlayPause" ENDPROC DEFPROCG:REPEATUNTILNOTINKEY(-56):o%!Ka%=FNm(o%!Ka%):o%!La%=o%!Ka%:PROCr(o%!La%):ENDPROC DEFPROCS:IFd%!q%THEN IFNOTd%!ma%THEN d%!ma%=TRUE:d%!na%=d%!E%:PROCa(FNb(12),d%!b%,d%!a%) ENDIF ENDIF ENDPROC DEFPROCH:LOCALTa%,Ua%:Ta%=na%:IFp%!q%THEN p%!Ta%=FALSE:IFp%!a%>=P%!za%-p%!k%THEN p%!q%=FALSE:p%!Ta%=TRUE ENDIF IFp%!Ta%THEN Ua%=FNi(p%):Ua%!a%-=2:PROCd(Ua%):PROCc(Ua%) ELSE:PROCa(FNb(5),p%!b%,p%!a%) ENDIF p%!a%+=p%!N% ENDIF ENDPROC DEFPROCI:LOCALVa%,Wa%,Xa%,h$:Va%=na%:Wa%=oa%:Xa%=pa%:IFNOTd%!q%THEN IFFNn(4)ANDFNn(5)THEN d%!q%=TRUE:d%!ma%=FALSE:d%!Wa%=0:d%!Xa%=0:IFFNn(50)THEN d%!M%=0-d%!N%:d%!b%=h%!f% ELSE:d%!M%=0+d%!N%:d%!b%=0-d%!f% ENDIF ENDIF ELSE:d%!Wa%+=1:d%!E%+=1:IFd%!b%<=0-d%!f%ANDSGN(d%!M%)=-1THEN d%!Va%=FALSE:d%!q%=FALSE:d%!E%=0:ENDPROC ENDIF IFd%!b%>h%!f%ANDSGN(d%!M%)=1THEN d%!Va%=FALSE:d%!q%=FALSE:d%!E%=0:ENDPROC ENDIF IFNOTd%!ma%THEN IFFNp(p%,d%)THEN PROCd(p%):PROCa(FNb(12),d%!b%,d%!a%):d%!Va%=d%!E%:d%!ma%=TRUE:p%!q%=FALSE:PROCg(500) ENDIF ELSE:IFFNp(p%,d%)THEN PROCd(p%):p%!q%=FALSE ENDIF ENDIF IFNOTd%!ma%THEN IFd%!Wa%>=1000THENd%!Wa%=0 IFd%!Wa%MOD10=0THEN d%!Xa%=FNm(d%!Xa%) ENDIF h$=FNb(10)+STR$(d%!Xa%):PROCa(h$,d%!b%,d%!a%):d%!b%+=d%!M% ELSE:IFd%!E%>=d%!Va%+80THEN PROCd(d%):d%!q%=FALSE:d%!Va%=FALSE:d%!E%=0:d%!Xa%=TRUE ELSE:IFd%!E%>=d%!Va%+60THEN PROCa(FNb(15),d%!b%,d%!a%) ELSE:IFd%!E%>=d%!Va%+40THEN PROCa(FNb(14),d%!b%,d%!a%) ELSE:IFd%!E%>=d%!Va%+20THEN PROCa(FNb(13),d%!b%,d%!a%) ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF ENDPROC DEFPROCJ:LOCALYa%,z%,F%,L%,Za%,_a%,`a%,Y%:LOCALG%,ab%,bb%:G%=na%:ab%=ra%:bb%=sa%:e%!E%+=1:IFe%!E%MOD5=0THENe%!G%=FNm(e%!G%) IFe%!E%>1000THENe%!E%=0 Ya%=e%!b%+e%!f%:Y%=0-((e%!ab%-1)*(D%!f%+e%!Na%)):IFYa%>=h%!f%THEN e%!M%=0-e%!N%:PROCs ENDIF IFe%!b%<=Y%THEN e%!M%=0+e%!N%:PROCs ENDIF Y%=e%!a%+((e%!Qa%-1)*D%!k%):IFY%<=m%!a%+m%!k%THEN PROCN:ENDPROC ENDIF IFFNp(p%,e%)THEN z%=D%!f%+e%!Na%:IF(p%!b%-e%!b%)MODz%<=D%!f%THEN F%=((p%!a%-e%!a%)DIVD%!k%)+1:L%=((p%!b%-e%!b%)DIVz%)+1:IFSGN(b%(L%,F%))=1THEN b%(L%,F%)=-5:PROCd(p%):p%!q%=FALSE:e%!ma%+=1:CASEF%OF WHEN1,2:PROCg(50) WHEN3,4:PROCg(75) WHEN5,6:PROCg(100) ENDCASE ENDIF ENDIF ENDIF IFe%!ma%>=e%!Oa%*e%!Pa%THEN o%!Ia%+=1:PROCd(e%):PROCf(P%!Aa%):PROCh(o%!W%):PROCk(o%!Ia%):PROCt ENDIF Za%=TRUE:_a%=TRUE:FORF%=1TOe%!Pa%:IFb%(e%!bb%,F%)<>0THENZa%=FALSE IFb%(e%!ab%,F%)<>0THEN_a%=FALSE NEXTF%:`a%=TRUE:FORL%=1TOe%!Oa%:IFb%(L%,e%!Qa%)<>0THEN`a%=FALSE NEXTL%:IF_a%THENe%!ab%+=1 IFZa%THEN e%!f%-=(D%!f%+e%!Na%):e%!bb%-=1 ENDIF IF`a%THENe%!Qa%+=1 e%!b%+=e%!M%:PROCl:ENDPROC DEFPROCK:LOCALG%,cb%,db%,i%,j%,x%,y%,eb%,fb%,h$,k$:G%=na%:cb%=oa%:FORi%=1TO7:IFNOTa%(i%)!q%THEN eb%=RND(10):fb%=o%!Ia%+5:IFfb%>100THEN fb%=100:IFo%!Ia%MOD10=0THENe%!Ra%+=1 ENDIF IFFNn(fb%)ANDFNn(e%!Ra%)THEN IFb%(eb%,e%!Qa%)>0THEN x%=e%!b%+(eb%-1)*(D%!f%+e%!Na%):y%=e%!a%+(e%!Qa%-1)*D%!k%:a%(i%)!b%=x%+D%!f%/2:a%(i%)!a%=y%:a%(i%)!q%=TRUE:a%(i%)!ma%=FALSE:a%(i%)!E%=0:a%(i%)!cb%=1:a%(i%)!G%=0:db%=4:IFFNn(25)THENa%(i%)!cb%=2:db%=db%/2 a%(i%)!N%=db%:a%(i%)!M%=a%(i%)!N% ENDIF ENDIF ELSE:a%(i%)!E%+=1:IFa%(i%)!E%>1000THENa%(i%)!E%=0 IFa%(i%)!E%MOD5=0THEN a%(i%)!G%+=1 ENDIF IFa%(i%)!cb%=1ANDa%(i%)!G%>1THEN a%(i%)!G%=0 ENDIF IFa%(i%)!cb%=2ANDa%(i%)!G%>3THEN a%(i%)!G%=0 ENDIF a%(i%)!a%-=a%(i%)!M%:k$=STR$(a%(i%)!G%):IFa%(i%)!cb%=2ANDa%(i%)!G%=3THENk$="1" h$=FNb(30)+STR$(a%(i%)!cb%)+k$:PROCa(h$,a%(i%)!b%,a%(i%)!a%):IFa%(i%)!a%<=P%!Aa%+(P%!k%+5)THEN a%(i%)!q%=FALSE:PROCd(a%(i%)) ENDIF IFFNp(a%(i%),m%)ANDa%(i%)!q%THEN FORj%=1TO3:PROCa(FNb(2)+STR$(j%),m%!b%,m%!a%):PROCe(20):WAIT:NEXTj%:PROCd(m%):IFp%!q%THEN PROCd(p%):p%!q%=FALSE ENDIF m%!b%=FNf(m%,h%):o%!W%-=1:PROCh(o%!W%):PROCd(a%(i%)):a%(i%)!q%=FALSE:PROCa(FNb(1),m%!b%,m%!a%) ENDIF IFFNp(p%,a%(i%))ANDa%(i%)!q%THEN IFa%(i%)!cb%=1THEN a%(i%)!q%=FALSE:PROCg(5):PROCd(a%(i%)) ENDIF PROCd(p%):p%!q%=FALSE ENDIF ENDIF NEXTi%:ENDPROC DEFPROCL:o%!E%+=1:IFo%!E%=1000THENo%!E%=0 IFo%!E%MOD50=0THEN o%!La%=FNm(o%!La%) ENDIF PROCr(o%!La%):ENDPROC DEFPROCx(gb%):LOCALi%,n$:FORi%=1TO10:IFi%MOD2=0THENn$=FNa(71)ELSEn$=FNa(70) a$(i%)=FNo(n$):c%(i%)=(11-i%)*1000:d%(i%)=0:NEXTi%:IFgb%THENPROCu ENDPROC DEFPROCy:LOCALi%,R%:R%=OPENIN".Resources.HiTable":FORi%=1TO10:INPUT#R%,a$(i%),c%(i%):INPUT#R%,d%(i%):NEXTi%:CLOSE#R%:ENDPROC DEFPROCu:LOCALi%,R%:R%=OPENOUT".Resources.HiTable":FORi%=1TO10:PRINT#R%,a$(i%),c%(i%):PRINT#R%,d%(i%):NEXTi%:CLOSE#R%:ENDPROC DEFPROCM(o%):LOCALI%,H%,hb%,g%,i%,ib%,O%,x%,y%,a$:H%=FNd(16):I%=FNd(16):H%!f%=FNc(100,1):H%!k%=FNc(40,2):H%!b%=FNf(H%,h%):H%!a%=800:I%!f%=FNc(150,1):I%!k%=FNc(40,2):I%!b%=FNf(I%,h%):I%!a%=H%!a%-I%!k%:ib%=0:FORi%=10TO1STEP-1 IFo%!X%>=c%(i%)THENib%=i% NEXTi%:FORi%=9TOib%STEP-1:a$(i%+1)=a$(i%):c%(i%+1)=c%(i%):d%(i%+1)=d%(i%):NEXTi%:c%(ib%)=o%!X%:d%(ib%)=o%!Ia%:CLS:PROCf(P%!za%):PROCf(P%!Aa%):PROCa(FNb(100),H%!b%,H%!a%):PROCa(FNb(101),I%!b%,I%!a%):a$=FNa(54)+" "+STR$(o%!X%) a$+=" "+FNa(55)+" "+STR$(ib%)+FNA(ib%):O%=LEN(a$)*h%!V%:x%=FNk(O%,h%!f%):y%=I%!a%-170:PROCb(x%,y%,a$,0):PROCc(H%):PROCc(I%):K%!f%=165:K%!k%=40:K%=FNs(K%,h%):PROCj(K%):x%=K%!b%+20:y%=K%!a%+12:a$="":i%=1:hb%=FALSE OSCLI"FX 21,0":REPEAT:g%=GET:CASEg%OF WHEN13:hb%=TRUE WHEN8:i%-=1:a$=LEFT$(a$,i%-1) OTHERWISE:IFi%<9ANDFNB(g%)THENi%+=1:a$+=CHR$(g%) ENDCASE IFi%<1THENi%=1 PROCb(x%,y%,STRING$(8," "),0):IFa$=""THEN PROCb(x%,y%," ",0) ELSE:PROCb(x%,y%,a$,0) ENDIF UNTILhb%:IFa$=""ORa$=" "THENa$=FNa(56) a$(ib%)=FNo(a$):IFfa%THENPROCu ENDPROC DEFFNB(jb%):LOCALTa%:Ta%=FALSE:IFjb%>=32ANDjb%<=126THENTa%=TRUE =Ta% DEFPROCA(kb%,lb%,l%,r%):LOCALx%,a$:a$=FNa(57)+FNl(STR$(kb%),10," ",TRUE):PROCb(0,h%!k%-h%!T%,a$,0):a$=FNa(58)+" "+FNa(57):a$+=" "+FNa(59)+FNl(STR$(lb%),10," ",TRUE):x%=h%!f%-LEN(a$)*h%!V%:PROCb(x%,h%!k%-h%!T%,a$,0):PROCh(l%):PROCk(r%):ENDPROC DEFPROCh(mb%):LOCALa$:PROCa(FNb(1),0,0):a$=" = "+STR$(mb%):PROCb(m%!f%,0,a$,0):ENDPROC DEFPROCk(mb%):LOCALx%,a$:a$=FNa(60)+" "+FNa(59):a$+=FNl(STR$(mb%),3,"0",TRUE):x%=h%!f%-LEN(a$)*h%!V%:PROCb(x%,0,a$,0):ENDPROC DEFPROCr(nb%):LOCALx%,y%,O%,a$:a$=FNa(49)+" "+FNa(61):IFnb%=0ORo%!Ka%=0THEN a$=STRING$(LEN(a$)," ") ENDIF O%=LEN(a$)*h%!V%:x%=FNk(O%,h%!f%):y%=h%!k%-h%!T%:PROCb(x%,y%,a$,0):ENDPROC DEFPROCg(ob%):LOCALx%,a$:o%!X%+=ob%:a$=FNa(57)+" "+FNa(59):a$+=FNl(STR$(o%!X%),10," ",TRUE):PROCb(0,h%!k%-h%!T%,a$,0):IFo%!X%-o%!Ma%>=5000THEN o%!W%+=1:PROCh(o%!W%):o%!Ma%=o%!X% ENDIF IFo%!X%>c%(1)THEN a$=FNa(58)+" "+FNa(57)+" ":a$+=FNa(59):a$+=FNl(STR$(o%!X%),10," ",TRUE):x%=h%!f%-LEN(a$)*h%!V%:PROCb(x%,h%!k%-h%!T%,a$,0) ENDIF ENDPROC DEFPROCB:LOCALG%,ab%,bb%,Qa%:G%=na%:ab%=ra%:bb%=sa%:Qa%=ta%:PROCt:PROCl:ENDPROC DEFPROCt:LOCALF%,L%,s%:e%!b%=50:e%!a%=550:e%!G%=0:e%!ma%=0:e%!N%=3:e%!M%=e%!N%:e%!ab%=1:e%!bb%=e%!Oa%:e%!Qa%=1:s%=(e%!Oa%*D%!f%)+((e%!Oa%-1)*e%!Na%):e%!f%=s%:e%!k%=e%!Pa%*D%!k%:FORL%=1TOe%!Oa%:FORF%=1TOe%!Pa% b%(L%,F%)=((F%+1)/2)+(e%!G%*10):NEXTF%:NEXTL%:ENDPROC DEFPROCl:LOCALF%,L%,x%,y%,v%:v%=FNd(16):FORL%=e%!ab%TOe%!bb%:x%=e%!b%+((L%-1)*(D%!f%+e%!Na%)):FORF%=e%!Qa%TOe%!Pa%:y%=e%!a%+((F%-1)*D%!k%):IFb%(L%,F%)>0THEN b%(L%,F%)=((F%+1)/2)+(e%!G%*10) ENDIF IFb%(L%,F%)<>0THEN CASESGN(b%(L%,F%))OF WHEN-1:PROCO(x%,y%,L%,F%) WHEN1:PROCa(FNb(27)+STR$(b%(L%,F%)),x%,y%) ENDCASE ELSE:v%!b%=x%:v%!a%=y%:v%!f%=D%!f%:v%!k%=D%!k%:PROCd(v%) ENDIF NEXTF%:NEXTL%:PROCc(v%):ENDPROC DEFPROCO(x%,y%,r%,c%):LOCALpb%:pb%=FNd(16):b%(r%,c%)+=1:PROCa(FNb(26),x%,y%):IFb%(r%,c%)=0THEN pb%!b%=x%:pb%!a%=y%:pb%!f%=D%!f%:pb%!k%=D%!k%:PROCd(pb%) ENDIF PROCc(pb%):ENDPROC DEFPROCs:LOCALv%,i%:v%=FNd(16):FORi%=1TO3:e%!a%-=D%!k%/3:PROCl:NEXTi%:v%!b%=e%!b%:v%!a%=e%!a%+e%!k%:v%!f%=e%!f%:v%!k%=D%!k%:PROCd(v%):PROCc(v%):ENDPROC DEFPROCN:LOCALS%,Z%,G%,qb%,N%,i%,j$:N%=1:rb%=24:S%=FNd(28):Z%=FNd(28):PROCd(e%):PROCd(m%):IFp%!q%THEN PROCd(p%):p%!q%=FALSE ENDIF IFd%!q%THEN PROCd(d%):d%!q%=FALSE ENDIF FORi%=1TO7:IFa%(i%)!q%THEN PROCd(a%(i%)):a%(i%)!q%=FALSE ENDIF NEXTi%:m%!b%=FNf(m%,h%):S%!b%=0-D%!f%:S%!a%=m%!a%:S%!M%=N%:Z%!b%=h%!f%:Z%!a%=m%!a%:Z%!M%=0-N%:o%!W%=0:PROCf(P%!Aa%):PROCh(o%!W%):PROCk(o%!Ia%):PROCa(FNb(1),m%!b%,m%!a%):G%=0:qb%=FALSE:REPEAT:S%!b%+=S%!M%:S%!rb%=S%!b%+D%!f%:Z%!b%+=Z%!M%:G%+=1 IFG%MOD20=0THENqb%=FNm(qb%) IFG%>1000THENG%=0 IFqb%THENj$=FNb(21)ELSEj$=FNb(20) PROCa(j$,S%!b%,S%!a%):PROCa(j$,Z%!b%,Z%!a%):PROCe(2):WAIT:UNTILS%!rb%>=m%!b%:FORi%=1TO10:PROCa(FNb(20),S%!b%,S%!a%):PROCa(FNb(20),Z%!b%,Z%!a%):PROCe(20):PROCa(FNb(21),S%!b%,S%!a%):PROCa(FNb(21),Z%!b%,Z%!a%):PROCe(20):WAIT:NEXTi%:FORi%=1TO3 PROCa(FNb(2)+STR$(i%),m%!b%,m%!a%):PROCe(20):WAIT:NEXTi%:PROCe(20):PROCd(m%):PROCc(S%):PROCc(Z%):ENDPROC DEFFNu(d$):LOCALsb%,C%:C%=FNC(d$)+256:sb%=FNd(C%):!sb%=C%:sb%!4=0:sb%!8=16:sb%!12=16:SYSha%,256+10,sb%,d$:SYSha%,256+17,sb%:=sb% DEFPROCb(x%,y%,a$,tb%):LOCALi%,ub%:ka%=ja%:ub%=h%!V%:FORi%=1TOLEN(a$):PROCa(STR$(ASC(MID$(a$,i%,1))),x%+((i%-1)*ub%),y%):IFtb%>0THENPROCe(tb%) NEXTi%:ka%=ia%:ENDPROC DEFPROCa(r$,x%,y%):LOCALvb%:SYSha%,256+24,ka%,r$TO,,vb%:SYSha%,512+34,ka%,vb%,x%,y%,0:ENDPROC DEFPROCd(w%):GCOL0,0TINT0:RECTANGLEFILLw%!b%,w%!a%,w%!f%,w%!k%:ENDPROC DEFFNk(wb%,h%):=(h%/2)-(wb%/2) DEFPROCn(a$,xb%):LOCALO%,y%:O%=LEN(a$)*h%!V%:y%=(h%!k%/2)-(h%!T%/2):PROCb(FNk(O%,h%!f%),y%,a$,xb%):ENDPROC DEFFNf(yb%,zb%):=(zb%!f%/2)-(yb%!f%/2) DEFFNs(yb%,zb%):LOCALx%,y%:yb%!b%=(zb%!f%/2)-(yb%!f%/2):yb%!a%=(zb%!k%/2)-(yb%!k%/2):=yb% DEFPROCf(a%):LOCALi%,Ab%:Ab%=h%!f%/P%!f%:FORi%=1TOAb%+1:PROCa(FNb(108),(i%-1)*P%!f%,a%):NEXTi%:ENDPROC DEFPROCj(w%):LOCALx%,y%,Bb%,Cb%,Db%,Eb%,i%:Bb%=FNc(3,1):Cb%=FNc(3,2):Db%=1:Eb%=3:FORi%=1TOw%!f%:x%=w%!b%+((i%-1)*Db%):PROCa(FNb(113),x%,w%!a%):PROCa(FNb(113),x%,w%!a%+(w%!k%-(2*Eb%))):NEXTi%:x%=w%!b%+(w%!f%-Bb%):FORi%=1TOw%!k%-1 PROCa(FNb(114),w%!b%,w%!a%+((i%-1)*Db%)):PROCa(FNb(114),x%,w%!a%+((i%-1)*Db%)):NEXTi%:PROCa(FNb(111),w%!b%,w%!a%):PROCa(FNb(109),w%!b%,(w%!a%+w%!k%)-Cb%):PROCa(FNb(112),w%!b%+(w%!f%-Bb%),w%!a%):x%=(w%!b%+w%!f%)-Bb%:y%=(w%!a%+w%!k%)-Cb% PROCa(FNb(110),x%,y%):ENDPROC DEFFNr(d$,g$):LOCAL`%,Fb%,i$:`%=OPENIN(d$):INPUT#`%,i$:IFi$<>g$THENCLOSE#`%:ERROR255,"Bad Magic!" INPUT#`%,Fb%:CLOSE#`%:=Fb% DEFPROCi(d$,g$,RETURNi%(),RETURNf$()):LOCAL`%,i%,Fb%,i$:`%=OPENIN(d$):INPUT#`%,i$:IFi$<>g$THENCLOSE#`%:ERROR255,"Bad Magic!" INPUT#`%,Fb%:FORi%=1TOFb%:INPUT#`%,i%(i%),f$(i%):NEXTi%:CLOSE#`%:ENDPROC DEFFNa(Gb%):=FNt(Gb%,aa%,f%(),b$(),106) DEFFNb(Gb%):=FNt(Gb%,ba%,g%(),c$(),107) DEFFNe(Gb%):=FNt(Gb%,ca%,h%(),d$(),108) DEFFNt(Gb%,Hb%,j%(),g$(),Ib%):LOCALi%,Jb%:Jb%=0:FORi%=1TOHb%:IFj%(i%)=Gb%THENJb%=i%:i%=Hb% NEXTi%:IFJb%=0THENERROR255,FNa(Ib%)+" "+STR$(Gb%) =FNo(g$(Jb%)) DEFPROCm:LOCALv%:v%=FNd(20):v%!0=4:v%!4=5:v%!8=11:v%!12=12:v%!16=-1:SYSFNe(5),v%,v%:h%!wa%=v%!0:h%!xa%=v%!4:h%!f%=(v%!8)+1<h%!ya%THENPROCm CASEKb%OF WHEN1:Lb%=C%<>h%!wa% WHEN4:Lb%=C%>>h%!xa% OTHERWISE:ERROR255,FNa(103)+" "+STR$(Kb%) ENDCASE =Lb% DEFFNp(w%,Nb%):LOCALOb%,Pb%,Qb%,Rb%:Qb%=FALSE:Rb%=FALSE:IFw%!q%ANDNb%!q%THEN Ob%=Nb%!b%+Nb%!f%:Pb%=Nb%!a%+Nb%!k%:IFw%!b%>=Nb%!b%ANDw%!b%=Nb%!a%ANDw%!a%=t%:ENDPROC DEFFNm(n%):=n%EOR1 DEFFNA(n%):LOCALc$,u%:u%=VAL(RIGHT$(STR$(n%),1)):c$=FNa(65):IFu%>=1ANDu%<=3THENc$=FNa(u%+61) =c$ DEFFNl(a$,Tb%,q$,Ub%):LOCALVb%,c$:Vb%=Tb%-LEN(a$):IFVb%<=0THEN c$=LEFT$(a$,Tb%) ELSE:IFUb%THEN c$=STRING$(Tb%,q$):RIGHT$(c$,LEN(a$))=a$ ELSE:c$=a$+STRING$(Vb%,q$) ENDIF ENDIF =c$ DEFFNx(a$,Tb%):LOCALc$:c$=STRING$(Tb%," "):RIGHT$(c$,LEN(a$))=a$:=c$ DEFFNv(f$):LOCALJb%:SYS"XOS_File",17,f$TOJb%:=Jb% DEFFNC(f$):LOCALC%:SYSFNe(3),5,f$TO,,,,C%:=C% DEFFNw(Kb%,f$):LOCALR%,Wb%,Xb%,Yb%:Yb%=FALSE:CASEKb%OF WHEN0:R%=OPENUP(f$+"chkfile") WHEN1:R%=OPENUP(f$) OTHERWISE:ERROR255,FNa(104)+" "+STR$(Kb%) ENDCASE IFR%<>0THEN SYSFNe(4),254,R%TOXb%;Wb%:IF(Wb%AND1)THEN CLOSE#R%:ERROR255,FNa(105) ENDIF IF((Xb%AND(1<<7))<>0)THENYb%=TRUE CLOSE#R% ENDIF =Yb% DEFPROCw:LOCALZb%:_b%=0:`b%=0:SYSFNe(10),-1,-1TOac%:SYSFNe(11)TObc%;Zb%:IFZb%AND1THENbc%=16384 PROCP(bc%):ENDPROC DEFPROCo:IF_b%THEN SYSFNe(10),_b%-32768,-1TOac%:_b%=0:`b%=0 ENDIF ENDPROC DEFFNd(cc%):LOCALA%,C%:C%=(cc%+15)AND-4:A%=FND(C%):IFA%ELSEERROR254,FNa(111) A%!0=&DEADDEAD:A%!4=cc%:!(A%-8+(A%!-4))=&DEADDEAD:=A%+8 DEFPROCc(RETURNA%):A%-=8:IFA%!0<>&DEADDEADTHENERROR254,FNa(112) IF!(A%-8+(A%!-4))<>&DEADDEADTHEN ERROR254,FNa(113) ENDIF `b%-=A%!-4:SYSFNe(12),3,_b%,A%:A%=0:ENDPROC DEFFNy(A%):LOCALv%:v%=A%-4:=v%!0 DEFFNh(A%,ob%):PROCQ(A%,ob%):=A% DEFPROCQ(A%,ob%):LOCALY%,C%:C%=FNy(A%):FORY%=0TOC%-4STEP4:A%!Y%=ob%:NEXTY%:ENDPROC DEFFNi(A%):LOCALdc%,Y%,C%:C%=FNy(A%):dc%=FNd(C%):FORY%=0TOC%-4STEP4:dc%!Y%=A%!Y%:NEXTY%:=dc% DEFPROCP(C%):IF_b%THENERROR254,FNa(115) C%=(C%+bc%-1)ANDNOT(bc%-1):_b%=HIMEM:SYSFNe(10),ac%+C%,-1TOac%:C%=ac%+32768-_b%:IFC%<1THEN _b%=0:ERROR254,FNa(116) ELSE:SYSFNe(12),0,_b%,,C% ENDIF `b%=0:ENDPROC DEFPROCR(cc%):LOCALec%:ec%=ac%:SYSFNe(10),ac%+cc%,-1TOac%:cc%=ac%-ec%:IFcc%THENSYSFNe(12),5,_b%,,cc%TO,,,cc% ENDPROC DEFFND(cc%):LOCALA%,Zb%:SYSFNe(13),2,_b%,,cc%TO,,A%;Zb%:IFZb%AND1THEN PROCR((cc%+bc%)ANDNOT(bc%-1)):SYSFNe(13),2,_b%,,cc%TO,,A%;Zb%:IFZb%AND1THEN=0 ENDIF `b%+=A%!-4:=A%