REM Acorn Invaders REM Packed by Make v1.41 15/5/08 On 22 Jun 2008 ONERRORPROCx:END MODE28:OFF:a$="Acorn Invaders. (c)2008 DynaByte Software":PRINTa$:PRINTSTRING$(LEN(a$),"-"):PRINT:aa%=FALSE:b$=".Resources.":PRINT"Checking files...":IFNOTFNj(b$+"Gfx0","Sprites")THENaa%=TRUE IFNOTFNj(b$+"Gfx1","Charset")THENaa%=TRUE IFNOTFNj(b$+"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%=FNr(b$+"Msg","SGSM"):DIMf%(ba%),b$(ba%):PROCj(b$+"Msg","SGSM",f%(),b$()):PRINTFNa(14):PRINTFNa(3);:ca%=FNr(b$+"ImgLUT","TULI"):DIMg%(ca%),c$(ca%):PROCj(b$+"ImgLUT","TULI",g%(),c$()):PRINTFNa(14) PRINTFNa(13);:da%=FNr(b$+"SWIs","TULS"):DIMh%(da%),d$(da%):PROCj(b$+"SWIs","TULS",h%(),d$()):PRINTFNa(14):PRINTFNa(1):OSCLI"PlayVolume 0":OSCLI"Playmod "+b$+"Intro":OSCLI"PlayPause":aa%=FALSE:ea%=0:fa%=1:ga%=127:ha%=TRUE ia%=0:DIMa$(10),c%(10):DIMd%(10):PRINTFNa(2):PROCy:SYSFNe(1),,FNe(2)TOja%:PRINTFNa(4);:ka%=FNu(b$+"Gfx0"):PRINTFNa(14):PRINTFNa(5);:la%=FNu(b$+"Gfx1"):PRINTFNa(14):ma%=ka%:PRINTFNa(6);:na%=OPENIN(b$+"Creds"):INPUT#na%,h$:IFh$<>"DERC"THEN CLOSE#na%:ERROR255,FNa(101):END ENDIF INPUT#na%,ia%:DIMe$(ia%),e%(ia%):FORi%=1TOia%:INPUT#na%,e%(i%),e$(i%):NEXTi%:CLOSE#na%:PRINTFNa(14):PRINTFNa(7);:l$=b$+"HiTable":IFFNv(l$)<>1THEN IFNOTFNw(0,b$)THEN ha%=FALSE:PRINTFNa(8) ELSE:PRINTFNa(9) ENDIF PROCz(ha%) ELSE:IFNOTFNw(1,l$)THEN ha%=FALSE:PRINTFNa(10) ELSE:PRINTFNa(11) ENDIF PROCA ENDIF PRINTFNa(12):PROCe(150):b%=0:a%=4:f%=8:k%=12:L%=16:M%=20:q%=24:U%=28:oa%=32:pa%=36:qa%=40:ra%=44:sa%=48:ta%=52:ua%=56:va%=60:wa%=64:xa%=16:ya%=20:za%=24:W%=28:T%=32:Aa%=16:Ba%=20:h%=FNd(36):P%=FNd(24):J%=FNd(16) CLS:PROCn:h%!W%=FNc(8,1):h%!T%=FNc(8,2)+7:P%!f%=FNc(6,1):P%!k%=FNc(6,2):P%!Aa%=h%!k%-50:P%!Ba%=30:OSCLI"PlayVolume "+STR$(ga%):OSCLI"PlayStart":WHILENOTFNz:CLS:PROCB:ENDWHILE:CLS:J%!f%=220:J%!k%=40:J%=FNs(J%,h%):J%!a%-=3:PROCk(J%):PROCo(FNa(31),10):IFfa%=1THEN FORi%=ga%TO1STEP-2:OSCLI"PlayVolume "+STR$(i%):PROCe(4):NEXTi%:OSCLI"PlayStop":OSCLI"PlayVolume 127" ENDIF PROCp:END DEFFNz:LOCALi%,G%,H%,B%,N%,d%,V%,Ca%,m%:LOCALDa%,Q%,Ea%,Fa%,Ga%,Ha%,x%,y%,I%,s$,a$:G%=FNh(FNd(16),0):H%=FNh(FNd(16),0):B%=FNh(FNd(16),0):d%=FNh(FNd(16),0):V%=FNh(FNd(16),0):Q%=FNh(FNd(16),0):m%=FNh(FNd(16),0) G%!f%=FNc(100,1):G%!k%=FNc(40,2):G%!b%=FNf(G%,h%):G%!a%=800:H%!f%=FNc(150,1):H%!k%=FNc(40,2):H%!b%=FNf(H%,h%):H%!a%=G%!a%-H%!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):V%!f%=FNc(20,1):V%!k%=FNc(20,2):V%!b%=B%!b%+150+FNf(V%,d%):Ca%=FNi(V%):Da%=FNi(V%)::Da%!a%=d%!a%-40-Da%!k%:Ca%!a%=Da%!a%-40-Ca%!k%:V%!a%=Ca%!a%-40-V%!k% Q%!f%=FNc(20,1):Q%!k%=FNc(20,2):Q%!b%=B%!b%+150+FNf(Q%,d%):Ea%=FNi(Q%):Fa%=FNi(Q%):Ha%=FNi(Q%):Ga%=FNi(Q%):Ia%=FNi(Q%)::Q%!a%=(B%!a%+B%!k%)-120:Ea%!a%=Q%!a%-60:Fa%!a%=Ea%!a%-60:Ha%!a%=Fa%!a%-90:Ia%!a%=Ha%!a%-60:Ga%!a%=Ia%!a%-60 CLS:PROCf(P%!Aa%):PROCf(P%!Ba%):FORi%=0-G%!f%TOG%!b%STEP5:WAIT:PROCa(FNb(100),i%,G%!a%):PROCe(1):NEXTi%:FORi%=h%!f%TOH%!b%STEP-5:WAIT:PROCa(FNb(101),i%,H%!a%):PROCe(1):NEXTi%:a$=FNa(32):N%=LEN(a$)*h%!W%:y%=170:PROCb(FNl(N%,h%!f%),y%,a$,11):a$=FNa(33) N%=LEN(a$)*h%!W%:y%-=h%!T%:PROCb(FNl(N%,h%!f%),y%,a$,11):WHILENOTINKEY(-99)ANDNOTINKEY(-17)ANDNOTINKEY(-82):y%=B%!a%+B%!k%:FORi%=1TOia%: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%:I%=FNq:IFI%=1THEN=TRUE IFI%=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),Da%!b%,Da%!a%):a$=FNa(37)+" "+FNa(40):PROCb(x%,Da%!a%+12,a$,0):PROCa(FNb(22),Ca%!b%,Ca%!a%):a$=FNa(38)+" "+FNa(40):PROCb(x%,Ca%!a%+12,a$,0):PROCa(FNb(20),V%!b%,V%!a%):a$=FNa(39)+" "+FNa(40):PROCb(x%,V%!a%+12,a$,0) N%=m%!f%/h%!W%+2:s$=FNa(66):a$=s$+STRING$(N%," ")+FNa(67):x%=FNg(a$):y%=V%!a%-(3*h%!T%):PROCb(x%,y%,a$,0):m%!b%=x%+7+(LEN(s$)*h%!W%):m%!a%=y%:PROCa(FNb(1),m%!b%,m%!a%):I%=FNq:IFI%=1THEN=TRUE IFI%=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),Ea%!b%,Ea%!a%):a$=FNa(42)+" "+FNa(44):PROCb(x%,Ea%!a%+12,a$,0) PROCa(FNb(104),Fa%!b%,Fa%!a%):PROCb(x%,Fa%!a%+12,FNa(45),0):PROCa(FNb(105),Ia%!b%,Ia%!a%):a$=FNa(46)+" "+FNa(49):PROCb(x%,Ia%!a%+12,a$,0):PROCa(FNb(106),Ha%!b%,Ha%!a%):PROCb(x%,Ha%!a%+12,FNa(47),0):PROCa(FNb(107),Ga%!b%,Ga%!a%) a$=FNa(48)+" "+FNa(49):PROCb(x%,Ga%!a%+12,a$,0):I%=FNq:IFI%=1THEN=TRUE IFI%=2THEN=FALSE PROCd(B%):a$=FNa(50):IFha%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$+=FNm(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%:I%=FNq:IFI%=1THEN=TRUE IFI%=2THEN=FALSE PROCd(B%):ENDWHILE:ERROR255,FNa(102):=FALSE DEFFNq:LOCALt%,I%:t%=TIME+750:I%=FALSE:REPEAT:IFINKEY(-82)THENPROCq IFINKEY(-102)THENPROCr IFINKEY(-59)THENPROCi(2) IFINKEY(-60)THENPROCi(-2) UNTILTIME>=t%ORINKEY(-17)ORINKEY(-99):IFINKEY(-17)THENI%=1 IFINKEY(-99)THENI%=2 IFI%THEN PROCc(G%):PROCc(H%):PROCc(B%):PROCc(d%):PROCc(V%):PROCc(Ca%):PROCc(Da%):PROCc(Q%):PROCc(Ea%):PROCc(Fa%):PROCc(Ga%):PROCc(Ha%):PROCc(Ia%):PROCc(m%) ENDIF =I% DEFFNg(a$):LOCALN%:N%=LEN(a$)*h%!W%:=B%!b%+FNl(N%,B%!f%) DEFPROCB:LOCALm%,p%,d%,e%,o%:LOCALD%:LOCALb%(),a%():LOCALZ%,Ja%,Ka%,La%:LOCALMa%,Na%,Oa%,Pa%,Qa%:LOCALRa%,Sa%,Ta%,Ua%,Va%:LOCALWa%,N%,a$,x%,y%,i%,j%:LOCALO%:m%=FNd(32):p%=FNd(40):d%=FNd(48):e%=FNd(68):D%=FNd(16):o%=FNh(FNd(40),0):DIMb%(10,6),a%(7) Z%=0:Ja%=4:Ka%=8:La%=12:Ma%=16:Na%=20:Oa%=24:Pa%=28:Qa%=32:Xa%=36:Ra%=pa%:Sa%=qa%:Ta%=ra%:Ua%=ua%:Va%=va%:m%!f%=FNc(30,1):m%!k%=FNc(15,2):m%!b%=FNf(m%,h%):m%!a%=50:m%!M%=6:m%!L%=m%!M% D%!f%=FNc(20,1):D%!k%=FNc(20,2):d%!f%=FNc(40,1):d%!k%=FNc(20,2):d%!a%=P%!Aa%-(10+d%!k%):d%!M%=5:d%!q%=FALSE:d%!qa%=1:p%!f%=FNc(5,1):p%!k%=FNc(20,2):p%!q%=FALSE:p%!M%=10:o%!Ka%=1:o%!Z%=3:o%!La%=FALSE:o%!Pa%=-1 e%!Ra%=FNc(20,1):e%!Sa%=10:e%!Ta%=6:e%!q%=TRUE:e%!Va%=4:FORi%=1TO7:a%(i%)=FNd(44):PROCs(a%(i%),0):a%(i%)!f%=FNc(5,1):a%(i%)!k%=FNc(20,2):NEXTi%:PROCf(P%!Aa%):PROCf(P%!Ba%):PROCC(0,c%(1),o%!Z%,o%!Ka%):PROCD:PROCa(FNb(1),m%!b%,m%!a%) O%=0:WHILEo%!Z%>0:Wa%=FALSE:IFo%!Ma%=0THEN IFINKEY(-74)THENPROCE(m%!b%,m%!a%) IFINKEY(-98)THENPROCF:Wa%=TRUE IFINKEY(-67)THENPROCG:Wa%=TRUE IFINKEY(-17)THENPROCH ENDIF IFINKEY(-102)THENPROCr IFINKEY(-82)THENPROCq IFINKEY(-56)THENPROCI IFINKEY(-59)THENPROCi(2) IFINKEY(-60)THENPROCi(-2) IFo%!Ma%=0THEN IFWa%THEN m%!b%+=m%!L%:PROCa(FNb(1),m%!b%,m%!a%) ENDIF ENDIF O%+=1:IFO%>=10000THENO%=0 IFo%!Ma%=0THEN PROCJ:PROCK:PROCL:PROCM:PROCN ELSE:PROCO ENDIF WAIT:ENDWHILE:J%!f%=240:J%!k%=40:J%=FNs(J%,h%):J%!a%-=3:PROCd(J%):PROCk(J%):a$=FNa(49)+" "+FNa(53):PROCo(a$,11):PROCe(750):IFNOTo%!La%THEN IFo%!Ja%>=c%(10)THEN PROCP(o%) ENDIF ENDIF PROCc(m%):PROCc(e%):PROCc(d%):PROCc(p%):PROCc(o%):PROCc(D%):FORi%=1TO7:PROCc(a%(i%)):NEXTi%:ENDPROC DEFPROCF:IFm%!b%<=0THEN m%!b%=0 ELSE:m%!L%=0-m%!M% ENDIF ENDPROC DEFPROCG:IFm%!b%>=h%!f%-m%!f%THEN m%!b%=h%!f%-m%!f% ELSE:m%!L%=0+m%!M% ENDIF ENDPROC DEFPROCE(x%,y%):IFNOTp%!q%THEN p%!q%=TRUE:p%!b%=x%+(m%!f%/2):p%!a%=y%+m%!k% ENDIF ENDPROC DEFPROCq:REPEAT:UNTILNOTINKEY(-82):OSCLI"ScreenSave .Dump"+STR$(ea%):ea%+=1:ENDPROC DEFPROCH:LOCALi%:FORi%=1TO7:a%(i%)!q%=FALSE:NEXTi%:o%!Z%=0:o%!La%=TRUE:ENDPROC DEFPROCr:REPEAT:UNTILNOTINKEY(-102):fa%=FNk(fa%):IFfa%=1THENOSCLI"PlayStart"ELSEOSCLI"PlayPause" ENDPROC DEFPROCi(Ya%):IFfa%=1THEN IFga%>=1ANDga%<=127THEN ga%+=Ya%:IFga%<1THENga%=1 IFga%>127THENga%=127 OSCLI"PlayVolume "+STR$(ga%) ENDIF ENDIF ENDPROC DEFPROCI:REPEATUNTILNOTINKEY(-56):o%!Ma%=FNk(o%!Ma%):o%!Na%=o%!Ma%:IFo%!Ma%=1THEN o%!Xa%=O% ELSE:O%=o%!Xa% ENDIF ENDPROC DEFPROCU:REPEAT:UNTILNOTINKEY():IFd%!q%THEN IFNOTd%!U%THEN d%!U%=TRUE:d%!oa%=O%:PROCa(FNb(12),d%!b%,d%!a%) ENDIF ENDIF ENDPROC DEFPROCJ:LOCALZa%,_a%:Za%=oa%:IFp%!q%THEN p%!Za%=FALSE:IFp%!a%>=P%!Aa%-p%!k%THEN p%!q%=FALSE:p%!Za%=TRUE ENDIF IFp%!Za%THEN _a%=FNi(p%):_a%!a%-=2:PROCd(_a%):PROCc(_a%) ELSE:PROCa(FNb(5),p%!b%,p%!a%) ENDIF p%!a%+=p%!M% ENDIF ENDPROC DEFPROCK:LOCAL`a%,ab%,bb%,d$:`a%=oa%:ab%=pa%:bb%=qa%:IFNOTd%!q%THEN IFFNn(4)ANDFNn(5)THEN d%!q%=TRUE:d%!U%=FALSE:d%!ab%=0:d%!bb%=0:IFFNn(50)THEN d%!L%=0-d%!M%:d%!b%=h%!f% ELSE:d%!L%=0+d%!M%:d%!b%=0-d%!f% ENDIF ENDIF ELSE:d%!ab%+=1:IFd%!b%<=0-d%!f%ANDSGN(d%!L%)=-1THEN d%!`a%=FALSE:d%!q%=FALSE:ENDPROC ENDIF IFd%!b%>h%!f%ANDSGN(d%!L%)=1THEN d%!`a%=FALSE:d%!q%=FALSE:ENDPROC ENDIF IFNOTd%!U%THEN IFFNp(p%,d%)THEN PROCd(p%):PROCa(FNb(12),d%!b%,d%!a%):d%!`a%=O%:d%!U%=TRUE:p%!q%=FALSE:PROCg(500) ENDIF ELSE:IFFNp(p%,d%)THEN PROCd(p%):p%!q%=FALSE ENDIF ENDIF IFNOTd%!U%THEN IFd%!ab%>=1000THENd%!ab%=0 IFd%!ab%MOD10=0THEN d%!bb%=FNk(d%!bb%) ENDIF d$=FNb(10)+STR$(d%!bb%):PROCa(d$,d%!b%,d%!a%):d%!b%+=d%!L% ELSE:IFO%>=d%!`a%+80THEN PROCd(d%):d%!q%=FALSE:d%!`a%=FALSE:O%=0:d%!bb%=TRUE ELSE:IFO%>=d%!`a%+60THEN PROCa(FNb(15),d%!b%,d%!a%) ELSE:IFO%>=d%!`a%+40THEN PROCa(FNb(14),d%!b%,d%!a%) ELSE:IFO%>=d%!`a%+20THEN PROCa(FNb(13),d%!b%,d%!a%) ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF ENDPROC DEFPROCL:LOCALcb%,z%,E%,K%,db%,eb%,fb%,X%:LOCALF%,gb%,hb%:F%=oa%:gb%=sa%:hb%=ta%:IFO%MOD5=0THENe%!F%=FNk(e%!F%) cb%=e%!b%+e%!f%:X%=0-((e%!gb%-1)*(D%!f%+e%!Ra%)):IFcb%>=h%!f%THEN e%!L%=0-e%!M%:PROCt ENDIF IFe%!b%<=X%THEN e%!L%=0+e%!M%:PROCt ENDIF X%=e%!a%+((e%!Ua%-1)*D%!k%):IFX%<=m%!a%+m%!k%THEN PROCQ:ENDPROC ENDIF IFFNp(p%,e%)THEN z%=D%!f%+e%!Ra%:IF(p%!b%-e%!b%)MODz%<=D%!f%THEN E%=((p%!a%-e%!a%)DIVD%!k%)+1:K%=((p%!b%-e%!b%)DIVz%)+1:IFSGN(b%(K%,E%))=1THEN b%(K%,E%)=-5:PROCd(p%):p%!q%=FALSE:e%!U%+=1:CASEE%OF WHEN1,2:PROCg(50) WHEN3,4:PROCg(75) WHEN5,6:PROCg(100) ENDCASE ENDIF ENDIF ENDIF IFe%!U%>=e%!Sa%*e%!Ta%THEN o%!Ka%+=1:PROCd(e%):PROCf(P%!Ba%):PROCh(o%!Z%):PROCl(o%!Ka%):PROCu ENDIF db%=TRUE:eb%=TRUE:FORE%=1TOe%!Ta%:IFb%(e%!hb%,E%)<>0THENdb%=FALSE IFb%(e%!gb%,E%)<>0THENeb%=FALSE NEXTE%:fb%=TRUE:FORK%=1TOe%!Sa%:IFb%(K%,e%!Ua%)<>0THENfb%=FALSE NEXTK%:IFeb%THENe%!gb%+=1 IFdb%THEN e%!f%-=(D%!f%+e%!Ra%):e%!hb%-=1 ENDIF IFfb%THENe%!Ua%+=1 e%!b%+=e%!L%:PROCm:ENDPROC DEFPROCM:LOCALF%,ib%,jb%,kb%,i%,j%,x%,y%:LOCALlb%,mb%,d$,k$,nb%:F%=oa%:ib%=pa%:jb%=qa%:FORi%=1TO7:IFNOTa%(i%)!q%THEN lb%=RND(10):mb%=o%!Ka%+5:IFmb%>100THEN mb%=100:IFo%!Ka%MOD10=0THENe%!Va%+=1 ENDIF IFFNn(mb%)ANDFNn(e%!Va%)THEN IFb%(lb%,e%!Ua%)>0THEN x%=e%!b%+(lb%-1)*(D%!f%+e%!Ra%):y%=e%!a%+((e%!Ua%-1)*D%!k%)-D%!k%:nb%=(D%!f%/2)-(a%(i%)!f%/2):a%(i%)!b%=x%+nb%:a%(i%)!a%=y%:a%(i%)!q%=TRUE:a%(i%)!U%=FALSE:a%(i%)!ib%=1:a%(i%)!F%=0:kb%=4:IFFNn(25)THENa%(i%)!ib%=2:kb%=kb%/2 a%(i%)!M%=kb%:a%(i%)!L%=a%(i%)!M% ENDIF ENDIF ELSE:IFO%MOD5=0THEN a%(i%)!F%+=1 ENDIF IFa%(i%)!ib%=1ANDa%(i%)!F%>1THEN a%(i%)!F%=0 ENDIF IFa%(i%)!ib%=2ANDa%(i%)!F%>3THEN a%(i%)!F%=0 ENDIF k$=STR$(a%(i%)!F%):IFa%(i%)!ib%=2ANDa%(i%)!F%=3THENk$="1" d$=FNb(30)+STR$(a%(i%)!ib%)+k$:IFNOTa%(i%)!U%THEN a%(i%)!a%-=a%(i%)!L%:PROCa(d$,a%(i%)!b%,a%(i%)!a%) ELSE:d$=FNb(30)+"3":PROCa(d$,a%(i%)!b%,a%(i%)!a%) ENDIF IFa%(i%)!a%<=P%!Ba%+(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%!Z%-=1:PROCh(o%!Z%):PROCd(a%(i%)):a%(i%)!q%=FALSE:PROCa(FNb(1),m%!b%,m%!a%) ENDIF IFFNp(p%,a%(i%))THEN IFa%(i%)!ib%=1THEN IFNOTa%(i%)!U%THEN a%(i%)!U%=TRUE:PROCg(5):d$=FNb(30)+"3":PROCa(d$,a%(i%)!b%,a%(i%)!a%):a%(i%)!jb%=O% ENDIF ENDIF PROCd(p%):p%!q%=FALSE ENDIF IFa%(i%)!U%THEN IFO%-a%(i%)!jb%>=5THEN PROCd(a%(i%)):a%(i%)!q%=FALSE ENDIF ENDIF ENDIF NEXTi%:ENDPROC DEFPROCO:LOCALa$:IFO%MOD50=0THEN o%!Na%=FNk(o%!Na%) ENDIF a$=FNa(49)+" "+FNa(61):IFo%!Na%=0ORo%!Ma%=0THEN a$=STRING$(LEN(a$)," ") ENDIF PROCv(a$):ENDPROC DEFPROCN:LOCALa$:IFo%!Pa%>=0THEN a$=FNa(66)+" "+FNa(72):IFO%MOD10=0THEN o%!Qa%=FNk(o%!Qa%):IFo%!Qa%=1THENo%!Pa%+=1 ENDIF IFo%!Qa%=0THEN a$=STRING$(LEN(a$)," ") ENDIF IFo%!Pa%>5THEN a$=STRING$(LEN(a$)," "):o%!Pa%=-1 ENDIF PROCv(a$) ENDIF ENDPROC DEFPROCz(ob%):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%:IFob%THENPROCw ENDPROC DEFPROCA:LOCALi%,R%:R%=OPENIN".Resources.HiTable":FORi%=1TO10:INPUT#R%,a$(i%),c%(i%):INPUT#R%,d%(i%):NEXTi%:CLOSE#R%:ENDPROC DEFPROCw:LOCALi%,R%:R%=OPENOUT".Resources.HiTable":FORi%=1TO10:PRINT#R%,a$(i%),c%(i%):PRINT#R%,d%(i%):NEXTi%:CLOSE#R%:ENDPROC DEFPROCP(o%):LOCALH%,G%,pb%,g%,i%,qb%,N%,x%,y%,a$:G%=FNd(16):H%=FNd(16):G%!f%=FNc(100,1):G%!k%=FNc(40,2):G%!b%=FNf(G%,h%):G%!a%=800:H%!f%=FNc(150,1):H%!k%=FNc(40,2):H%!b%=FNf(H%,h%):H%!a%=G%!a%-H%!k%:qb%=0:FORi%=10TO1STEP-1 IFo%!Ja%>=c%(i%)THENqb%=i% NEXTi%:FORi%=9TOqb%STEP-1:a$(i%+1)=a$(i%):c%(i%+1)=c%(i%):d%(i%+1)=d%(i%):NEXTi%:c%(qb%)=o%!Ja%:d%(qb%)=o%!Ka%:CLS:PROCf(P%!Aa%):PROCf(P%!Ba%):PROCa(FNb(100),G%!b%,G%!a%):PROCa(FNb(101),H%!b%,H%!a%):a$=FNa(54)+" "+STR$(o%!Ja%) a$+=" "+FNa(55)+" "+STR$(qb%)+FNA(qb%):N%=LEN(a$)*h%!W%:x%=FNl(N%,h%!f%):y%=H%!a%-170:PROCb(x%,y%,a$,0):PROCc(G%):PROCc(H%):J%!f%=165:J%!k%=40:J%=FNs(J%,h%):PROCk(J%):x%=J%!b%+20:y%=J%!a%+12:a$="":i%=1:pb%=FALSE OSCLI"FX 21,0":REPEAT:g%=GET:CASEg%OF WHEN13:pb%=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 UNTILpb%:IFa$=""ORa$=" "THENa$=FNa(56) a$(qb%)=FNo(a$):IFha%THENPROCw ENDPROC DEFFNB(rb%):LOCALZa%:Za%=FALSE:IFrb%>=32ANDrb%<=126THENZa%=TRUE =Za% DEFPROCC(sb%,tb%,l%,r%):LOCALx%,a$:a$=FNa(57)+FNm(STR$(sb%),10," ",TRUE):PROCb(0,h%!k%-h%!T%,a$,0):a$=FNa(58)+" "+FNa(57):a$+=" "+FNa(59)+FNm(STR$(tb%),10," ",TRUE):x%=h%!f%-LEN(a$)*h%!W%:PROCb(x%,h%!k%-h%!T%,a$,0):PROCh(l%):PROCl(r%):ENDPROC DEFPROCh(ub%):LOCALa$:PROCa(FNb(1),0,0):a$=" = "+STR$(ub%):PROCb(m%!f%,0,a$,0):ENDPROC DEFPROCl(ub%):LOCALx%,a$:a$=FNa(60)+" "+FNa(59):a$+=FNm(STR$(ub%),3,"0",TRUE):x%=h%!f%-LEN(a$)*h%!W%:PROCb(x%,0,a$,0):ENDPROC DEFPROCv(a$):LOCALx%,y%,N%:N%=LEN(a$)*h%!W%:x%=FNl(N%,h%!f%):y%=h%!k%-h%!T%:PROCb(x%,y%,a$,0):ENDPROC DEFPROCg(vb%):LOCALx%,a$:o%!Ja%+=vb%:a$=FNa(57)+" "+FNa(59):a$+=FNm(STR$(o%!Ja%),10," ",TRUE):PROCb(0,h%!k%-h%!T%,a$,0):IFo%!Ja%-o%!Oa%>=5000THEN o%!Z%+=1:PROCh(o%!Z%):o%!Oa%=o%!Ja%:o%!Pa%=0 ENDIF IFo%!Ja%>c%(1)THEN a$=FNa(58)+" "+FNa(57)+" ":a$+=FNa(59):a$+=FNm(STR$(o%!Ja%),10," ",TRUE):x%=h%!f%-LEN(a$)*h%!W%:PROCb(x%,h%!k%-h%!T%,a$,0) ENDIF ENDPROC DEFPROCD:LOCALF%,gb%,hb%,Ua%:F%=oa%:gb%=sa%:hb%=ta%:Ua%=ua%:PROCu:PROCm:ENDPROC DEFPROCu:LOCALE%,K%,s%:e%!b%=50:e%!a%=550:e%!F%=0:e%!U%=0:e%!M%=3:e%!L%=e%!M%:e%!gb%=1:e%!hb%=e%!Sa%:e%!Ua%=1:s%=(e%!Sa%*D%!f%)+((e%!Sa%-1)*e%!Ra%):e%!f%=s%:e%!k%=e%!Ta%*D%!k%:FORK%=1TOe%!Sa%:FORE%=1TOe%!Ta% b%(K%,E%)=((E%+1)/2)+(e%!F%*10):NEXTE%:NEXTK%:ENDPROC DEFPROCm:LOCALE%,K%,x%,y%,v%:v%=FNd(16):FORK%=e%!gb%TOe%!hb%:x%=e%!b%+((K%-1)*(D%!f%+e%!Ra%)):FORE%=e%!Ua%TOe%!Ta%:y%=e%!a%+((E%-1)*D%!k%):IFb%(K%,E%)>0THEN b%(K%,E%)=((E%+1)/2)+(e%!F%*10) ENDIF IFb%(K%,E%)<>0THEN CASESGN(b%(K%,E%))OF WHEN-1:PROCR(x%,y%,K%,E%) WHEN1:PROCa(FNb(27)+STR$(b%(K%,E%)),x%,y%) ENDCASE ELSE:v%!b%=x%:v%!a%=y%:v%!f%=D%!f%:v%!k%=D%!k%:PROCd(v%) ENDIF NEXTE%:NEXTK%:PROCc(v%):ENDPROC DEFPROCR(x%,y%,r%,c%):LOCALwb%:wb%=FNd(16):b%(r%,c%)+=1:PROCa(FNb(26),x%,y%):IFb%(r%,c%)=0THEN wb%!b%=x%:wb%!a%=y%:wb%!f%=D%!f%:wb%!k%=D%!k%:PROCd(wb%) ENDIF PROCc(wb%):ENDPROC DEFPROCt:LOCALv%,i%:v%=FNd(16):FORi%=1TO3:e%!a%-=D%!k%/3:PROCm:NEXTi%:v%!b%=e%!b%:v%!a%=e%!a%+e%!k%:v%!f%=e%!f%:v%!k%=D%!k%:PROCd(v%):PROCc(v%):ENDPROC DEFPROCQ:LOCALS%,Y%,F%,xb%,M%,i%,j$:M%=1:yb%=24:S%=FNd(28):Y%=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%!L%=M%:Y%!b%=h%!f%:Y%!a%=m%!a%:Y%!L%=0-M%:o%!Z%=0:PROCf(P%!Ba%):PROCh(o%!Z%):PROCl(o%!Ka%):PROCa(FNb(1),m%!b%,m%!a%):F%=0:xb%=FALSE:REPEAT:S%!b%+=S%!L%:S%!yb%=S%!b%+D%!f%:Y%!b%+=Y%!L%:F%+=1 IFF%MOD20=0THENxb%=FNk(xb%) IFF%>1000THENF%=0 IFxb%THENj$=FNb(21)ELSEj$=FNb(20) PROCa(j$,S%!b%,S%!a%):PROCa(j$,Y%!b%,Y%!a%):PROCe(2):WAIT:UNTILS%!yb%>=m%!b%:FORi%=1TO10:PROCa(FNb(20),S%!b%,S%!a%):PROCa(FNb(20),Y%!b%,Y%!a%):PROCe(20):PROCa(FNb(21),S%!b%,S%!a%):PROCa(FNb(21),Y%!b%,Y%!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(Y%):ENDPROC DEFFNu(e$):LOCALzb%,C%:C%=FNC(e$)+256:zb%=FNd(C%):!zb%=C%:zb%!4=0:zb%!8=16:zb%!12=16:SYSja%,256+10,zb%,e$:SYSja%,256+17,zb%:=zb% DEFPROCb(x%,y%,a$,Ab%):LOCALi%,Bb%:ma%=la%:Bb%=h%!W%:FORi%=1TOLEN(a$):PROCa(STR$(ASC(MID$(a$,i%,1))),x%+((i%-1)*Bb%),y%):IFAb%>0THENPROCe(Ab%) NEXTi%:ma%=ka%:ENDPROC DEFPROCa(r$,x%,y%):LOCALCb%:SYSja%,256+24,ma%,r$TO,,Cb%:SYSja%,512+34,ma%,Cb%,x%,y%,0:ENDPROC DEFPROCd(w%):GCOL0,0TINT0:RECTANGLEFILLw%!b%,w%!a%,w%!f%,w%!k%:ENDPROC DEFFNl(Db%,h%):=(h%/2)-(Db%/2) DEFPROCo(a$,Eb%):LOCALN%,y%:N%=LEN(a$)*h%!W%:y%=(h%!k%/2)-(h%!T%/2):PROCb(FNl(N%,h%!f%),y%,a$,Eb%):ENDPROC DEFFNf(Fb%,Gb%):=(Gb%!f%/2)-(Fb%!f%/2) DEFFNs(Fb%,Gb%):LOCALx%,y%:Fb%!b%=(Gb%!f%/2)-(Fb%!f%/2):Fb%!a%=(Gb%!k%/2)-(Fb%!k%/2):=Fb% DEFPROCf(a%):LOCALi%,Hb%:Hb%=h%!f%/P%!f%:FORi%=1TOHb%+1:PROCa(FNb(108),(i%-1)*P%!f%,a%):NEXTi%:ENDPROC DEFPROCk(w%):LOCALx%,y%,Ib%,Jb%,Kb%,Lb%,i%:Ib%=FNc(3,1):Jb%=FNc(3,2):Kb%=1:Lb%=3:FORi%=1TOw%!f%:x%=w%!b%+((i%-1)*Kb%):PROCa(FNb(113),x%,w%!a%):PROCa(FNb(113),x%,w%!a%+(w%!k%-(2*Lb%))):NEXTi%:x%=w%!b%+(w%!f%-Ib%):FORi%=1TOw%!k%-1 PROCa(FNb(114),w%!b%,w%!a%+((i%-1)*Kb%)):PROCa(FNb(114),x%,w%!a%+((i%-1)*Kb%)):NEXTi%:PROCa(FNb(111),w%!b%,w%!a%):PROCa(FNb(109),w%!b%,(w%!a%+w%!k%)-Jb%):PROCa(FNb(112),w%!b%+(w%!f%-Ib%),w%!a%):x%=(w%!b%+w%!f%)-Ib%:y%=(w%!a%+w%!k%)-Jb% PROCa(FNb(110),x%,y%):ENDPROC DEFFNr(e$,h$):LOCAL_%,Mb%,i$:_%=OPENIN(e$):INPUT#_%,i$:IFi$<>h$THENCLOSE#_%:ERROR255,"Bad Magic!" INPUT#_%,Mb%:CLOSE#_%:=Mb% DEFPROCj(e$,h$,RETURNi%(),RETURNf$()):LOCAL_%,i%,Mb%,i$:_%=OPENIN(e$):INPUT#_%,i$:IFi$<>h$THENCLOSE#_%:ERROR255,"Bad Magic!" INPUT#_%,Mb%:FORi%=1TOMb%:INPUT#_%,i%(i%),f$(i%):NEXTi%:CLOSE#_%:ENDPROC DEFFNa(Nb%):=FNt(Nb%,ba%,f%(),b$(),106) DEFFNb(Nb%):=FNt(Nb%,ca%,g%(),c$(),107) DEFFNe(Nb%):=FNt(Nb%,da%,h%(),d$(),108) DEFFNt(Nb%,Ob%,j%(),g$(),Pb%):LOCALi%,Qb%:Qb%=0:FORi%=1TOOb%:IFj%(i%)=Nb%THENQb%=i%:i%=Ob% NEXTi%:IFQb%=0THENERROR255,FNa(Pb%)+" "+STR$(Nb%) =FNo(g$(Qb%)) DEFPROCn:LOCALv%:v%=FNd(20):v%!0=4:v%!4=5:v%!8=11:v%!12=12:v%!16=-1:SYSFNe(5),v%,v%:h%!xa%=v%!0:h%!ya%=v%!4:h%!f%=(v%!8)+1<h%!za%THENPROCn CASERb%OF WHEN1:Sb%=C%<>h%!xa% WHEN4:Sb%=C%>>h%!ya% OTHERWISE:ERROR255,FNa(103)+" "+STR$(Rb%) ENDCASE =Sb% DEFFNp(w%,Ub%):LOCALVb%,Wb%,Xb%,Yb%:Xb%=FALSE:Yb%=FALSE:IFw%!q%ANDUb%!q%THEN Vb%=Ub%!b%+Ub%!f%:Wb%=Ub%!a%+Ub%!k%:IFw%!b%>=Ub%!b%ANDw%!b%=Ub%!a%ANDw%!a%=t%:ENDPROC DEFFNk(n%):=n%EOR1 DEFFNA(n%):LOCALc$,u%:u%=VAL(RIGHT$(STR$(n%),1)):c$=FNa(65):IFu%>=1ANDu%<=3THENc$=FNa(u%+61) =c$ DEFFNm(a$,_b%,q$,`b%):LOCALac%,c$:ac%=_b%-LEN(a$):IFac%<=0THEN c$=LEFT$(a$,_b%) ELSE:IF`b%THEN c$=STRING$(_b%,q$):RIGHT$(c$,LEN(a$))=a$ ELSE:c$=a$+STRING$(ac%,q$) ENDIF ENDIF =c$ DEFFNx(a$,_b%):LOCALc$:c$=STRING$(_b%," "):RIGHT$(c$,LEN(a$))=a$:=c$ DEFFNv(g$):LOCALQb%:SYS"XOS_File",17,g$TOQb%:=Qb% DEFFNC(g$):LOCALC%:SYSFNe(3),5,g$TO,,,,C%:=C% DEFFNw(Rb%,g$):LOCALR%,bc%,cc%,dc%:dc%=FALSE:CASERb%OF WHEN0:R%=OPENUP(g$+"chkfile") WHEN1:R%=OPENUP(g$) OTHERWISE:ERROR255,FNa(104)+" "+STR$(Rb%) ENDCASE IFR%<>0THEN SYSFNe(4),254,R%TOcc%;bc%:IF(bc%AND1)THEN CLOSE#R%:ERROR255,FNa(105) ENDIF IF((cc%AND(1<<7))<>0)THENdc%=TRUE CLOSE#R% ENDIF =dc% DEFPROCy:LOCALec%:`%=0:fc%=0:SYSFNe(10),-1,-1TOgc%:SYSFNe(11)TOhc%;ec%:IFec%AND1THENhc%=16384 PROCS(hc%):ENDPROC DEFPROCp:IF`%THEN SYSFNe(10),`%-32768,-1TOgc%:`%=0:fc%=0 ENDIF ENDPROC DEFFNd(ic%):LOCALA%,C%:C%=(ic%+15)AND-4:A%=FND(C%):IFA%ELSEERROR254,FNa(111) A%!0=&DEADDEAD:A%!4=ic%:!(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 fc%-=A%!-4:SYSFNe(12),3,`%,A%:A%=0:ENDPROC DEFFNy(A%):LOCALv%:v%=A%-4:=v%!0 DEFFNh(A%,vb%):PROCs(A%,vb%):=A% DEFPROCs(A%,vb%):LOCALX%,C%:C%=FNy(A%):FORX%=0TOC%-4STEP4:A%!X%=vb%:NEXTX%:ENDPROC DEFFNi(A%):LOCALjc%,X%,C%:C%=FNy(A%):jc%=FNd(C%):FORX%=0TOC%-4STEP4:jc%!X%=A%!X%:NEXTX%:=jc% DEFPROCS(C%):IF`%THENERROR254,FNa(115) C%=(C%+hc%-1)ANDNOT(hc%-1):`%=HIMEM:SYSFNe(10),gc%+C%,-1TOgc%:C%=gc%+32768-`%:IFC%<1THEN `%=0:ERROR254,FNa(116) ELSE:SYSFNe(12),0,`%,,C% ENDIF fc%=0:ENDPROC DEFPROCT(ic%):LOCALkc%:kc%=gc%:SYSFNe(10),gc%+ic%,-1TOgc%:ic%=gc%-kc%:IFic%THENSYSFNe(12),5,`%,,ic%TO,,,ic% ENDPROC DEFFND(ic%):LOCALA%,ec%:SYSFNe(13),2,`%,,ic%TO,,A%;ec%:IFec%AND1THEN PROCT((ic%+hc%)ANDNOT(hc%-1)):SYSFNe(13),2,`%,,ic%TO,,A%;ec%:IFec%AND1THEN=0 ENDIF fc%+=A%!-4:=A%