REM Acorn Invaders REM Packed by Make v1.41 15/5/08 On 11 Jun 2008 ONERRORPROCw: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","TULI"):DIMg%(ba%),c$(ba%):PROCi(b$+"ImgLUT","TULI",g%(),c$()):PRINTFNa(14) PRINTFNa(13);:ca%=FNr(b$+"SWIs","TULS"):DIMh%(ca%),d$(ca%):PROCi(b$+"SWIs","TULS",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) PROCx: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 PROCy(fa%) ELSE:IFNOTFNw(1,l$)THEN fa%=FALSE:PRINTFNa(10) ELSE:PRINTFNa(11) ENDIF PROCz ENDIF PRINTFNa(12):PROCe(150):b%=0:a%=4:f%=8:m%=12:L%=16:M%=20:q%=24:ma%=28:na%=32:oa%=36:pa%=40:qa%=44:ra%=48:sa%=52:ta%=56:ua%=60:va%=64:wa%=16:xa%=20:ya%=24:V%=28:S%=32:za%=16:Aa%=20:h%=FNd(36):O%=FNd(24):J%=FNd(16) CLS:PROCm:h%!V%=FNc(8,1):h%!S%=FNc(8,2)+7:O%!f%=FNc(6,1):O%!m%=FNc(6,2):O%!za%=h%!m%-50:O%!Aa%=30:OSCLI"PlayVolume 127":OSCLI"PlayStart":REPEAT:CLS:_%=FNz:IFNOT_%THENCLS:PROCA UNTIL_%:CLS:J%!f%=220:J%!m%=40:J%=FNs(J%,h%):J%!a%-=3:PROCj(J%):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%,G%,H%,B%,N%,d%,U%,Ba%,o%:LOCALCa%,P%,Da%,Ea%,Fa%,Ga%,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):U%=FNh(FNd(16),0):P%=FNh(FNd(16),0):o%=FNh(FNd(16),0) G%!f%=FNc(100,1):G%!m%=FNc(40,2):G%!b%=FNf(G%,h%):G%!a%=800:H%!f%=FNc(150,1):H%!m%=FNc(40,2):H%!b%=FNf(H%,h%):H%!a%=G%!a%-H%!m%:B%!f%=640:B%!m%=500:B%!b%=FNf(B%,h%):B%!a%=200:d%!f%=FNc(40,1):d%!m%=FNc(20,2):d%!b%=B%!b%+150 d%!a%=(B%!a%+B%!m%)-125:o%!f%=FNc(30,1):o%!m%=FNc(15,2):U%!f%=FNc(20,1):U%!m%=FNc(20,2):U%!b%=B%!b%+150+FNf(U%,d%):Ba%=FNi(U%):Ca%=FNi(U%)::Ca%!a%=d%!a%-40-Ca%!m%:Ba%!a%=Ca%!a%-40-Ba%!m%:U%!a%=Ba%!a%-40-U%!m% P%!f%=FNc(20,1):P%!m%=FNc(20,2):P%!b%=B%!b%+150+FNf(P%,d%):Da%=FNi(P%):Ea%=FNi(P%):Ga%=FNi(P%):Fa%=FNi(P%):Ha%=FNi(P%)::P%!a%=(B%!a%+B%!m%)-120:Da%!a%=P%!a%-60:Ea%!a%=Da%!a%-60:Ga%!a%=Ea%!a%-90:Ha%!a%=Ga%!a%-60:Fa%!a%=Ha%!a%-60 PROCf(O%!za%):PROCf(O%!Aa%):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%!V%:y%=170:PROCb(FNl(N%,h%!f%),y%,a$,11):a$=FNa(33) N%=LEN(a$)*h%!V%:y%-=h%!S%:PROCb(FNl(N%,h%!f%),y%,a$,11):WHILENOTINKEY(-99)ANDNOTINKEY(-17)ANDNOTINKEY(-82):y%=B%!a%+B%!m%:FORi%=1TOga%:a$=FNo(e$(i%)):x%=FNg(a$):CASEe%(i%)OF WHEN-1:y%-=h%!S% WHEN-2:y%-=(2*h%!S%) 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%!m%-20:PROCb(x%,y%,a$,0):a$=FNa(35):y%-=h%!S%: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) N%=o%!f%/h%!V%+2:s$=FNa(66):a$=s$+STRING$(N%," ")+FNa(67):x%=FNg(a$):y%=U%!a%-(3*h%!S%):PROCb(x%,y%,a$,0):o%!b%=x%+7+(LEN(s$)*h%!V%):o%!a%=y%:PROCa(FNb(1),o%!b%,o%!a%):I%=FNq:IFI%=1THEN=TRUE IFI%=2THEN=FALSE PROCd(B%):a$=FNa(41):x%=FNg(a$):y%=B%!a%+B%!m%-20:PROCb(x%,y%,a$,0):x%=P%!b%+P%!f%+10:PROCa(FNb(102),P%!b%,P%!a%):a$=FNa(42)+" "+FNa(43):PROCb(x%,P%!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):I%=FNq:IFI%=1THEN=TRUE IFI%=2THEN=FALSE PROCd(B%):a$=FNa(50):IFfa%THENa$=FNa(51) x%=FNg(a$):y%=B%!a%+B%!m%-20:PROCb(x%,y%,a$,0):a$=FNa(58)+" "+FNa(52):x%=FNg(a$):y%-=h%!S%:PROCb(x%,y%,a$,0):y%=(B%!a%+B%!m%)-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%!S% 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%!S%+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)THENPROCp IFINKEY(-102)THENPROCq 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(U%):PROCc(Ba%):PROCc(Ca%):PROCc(P%):PROCc(Da%):PROCc(Ea%):PROCc(Fa%):PROCc(Ga%):PROCc(Ha%):PROCc(o%) ENDIF =I% DEFFNg(a$):LOCALN%:N%=LEN(a$)*h%!V%:=B%!b%+FNl(N%,B%!f%) DEFPROCA:LOCALo%,p%,d%,e%,k%:LOCALD%:LOCALb%(),a%():LOCALW%,X%,Ia%,Ja%:LOCALKa%,La%,Ma%,Na%:LOCALOa%,Pa%,Qa%,Ra%,Sa%:LOCALTa%,N%,a$,x%,y%,i%,j%:LOCALT%:o%=FNd(32):p%=FNd(40):d%=FNd(48):e%=FNd(68):D%=FNd(16):k%=FNd(36):DIMb%(10,6),a%(7) W%=0:X%=4:Ia%=8:Ja%=12:Ka%=16:La%=20:Ma%=24:Na%=28:Ua%=32:Oa%=oa%:Pa%=pa%:Qa%=qa%:Ra%=ta%:Sa%=ua%:o%!f%=FNc(30,1):o%!m%=FNc(15,2):o%!b%=FNf(o%,h%):o%!a%=50:o%!M%=6:o%!L%=o%!M%:D%!f%=FNc(20,1):D%!m%=FNc(20,2) d%!f%=FNc(40,1):d%!m%=FNc(20,2):d%!a%=O%!za%-(10+d%!m%):d%!M%=5:d%!q%=FALSE:d%!pa%=1:p%!f%=FNc(5,1):p%!m%=FNc(20,2):p%!q%=FALSE:p%!M%=10:k%!Ia%=1:k%!X%=0:k%!W%=3:k%!Ja%=FALSE:k%!Ka%=0:k%!Ma%=k%!X%:k%!Na%=-1:k%!Ua%=0 e%!Oa%=FNc(20,1):e%!Pa%=10:e%!Qa%=6:e%!q%=TRUE:e%!Sa%=4:FORi%=1TO7:a%(i%)=FNd(40):a%(i%)=FNh(a%(i%),0):a%(i%)!f%=FNc(5,1):a%(i%)!m%=FNc(20,2):NEXTi%:PROCf(O%!za%):PROCf(O%!Aa%):PROCB(0,c%(1),k%!W%,k%!Ia%) PROCC:PROCa(FNb(1),o%!b%,o%!a%):T%=0:REPEAT:Ta%=FALSE:IFk%!Ka%=0THEN IFINKEY(-74)THENPROCD(o%!b%,o%!a%) IFINKEY(-98)THENPROCE:Ta%=TRUE IFINKEY(-67)THENPROCF:Ta%=TRUE IFINKEY(-17)THENPROCG IFINKEY(-87)THENPROCH ENDIF IFINKEY(-102)THENPROCq IFINKEY(-82)THENPROCp IFINKEY(-56)THENPROCI IFk%!Ka%=0THEN IFTa%THEN o%!b%+=o%!L%:PROCa(FNb(1),o%!b%,o%!a%) ENDIF ENDIF T%+=1:IFT%>=10000THENT%=0 IFk%!W%>0THEN IFk%!Ka%=0THEN PROCJ:PROCK:PROCL:PROCM ELSE:PROCN ENDIF ENDIF WAIT:UNTILk%!W%=0:J%!f%=240:J%!m%=40:J%=FNs(J%,h%):J%!a%-=3:PROCd(J%):PROCj(J%):a$=FNa(49)+" "+FNa(53):PROCn(a$,11):PROCe(750):IFNOTk%!Ja%THEN IFk%!X%>=c%(10)THEN PROCO(k%) ENDIF ENDIF PROCc(o%):PROCc(e%):PROCc(d%):PROCc(p%):PROCc(k%):PROCc(D%):FORi%=1TO7:PROCc(a%(i%)):NEXTi%:ENDPROC DEFPROCE:IFo%!b%<=0THEN o%!b%=0 ELSE:o%!L%=0-o%!M% ENDIF ENDPROC DEFPROCF:IFo%!b%>=h%!f%-o%!f%THEN o%!b%=h%!f%-o%!f% ELSE:o%!L%=0+o%!M% ENDIF ENDPROC DEFPROCD(x%,y%):IFNOTp%!q%THEN p%!q%=TRUE:p%!b%=x%+(o%!f%/2):p%!a%=y%+o%!m% ENDIF ENDPROC DEFPROCp:REPEAT:UNTILNOTINKEY(-82):OSCLI"ScreenSave .Dump"+STR$(da%):da%+=1:ENDPROC DEFPROCG:LOCALi%:FORi%=1TO7:a%(i%)!q%=FALSE:NEXTi%:k%!W%=0:k%!Ja%=TRUE:ENDPROC DEFPROCq:REPEAT:UNTILNOTINKEY(-102):ea%=FNk(ea%):IFea%=1THENOSCLI"PlayStart"ELSEOSCLI"PlayPause" ENDPROC DEFPROCI:REPEATUNTILNOTINKEY(-56):k%!Ka%=FNk(k%!Ka%):k%!La%=k%!Ka%:PROCr(k%!La%):ENDPROC DEFPROCV:REPEAT:UNTILNOTINKEY():IFd%!q%THEN IFNOTd%!ma%THEN d%!ma%=TRUE:d%!na%=T%:PROCa(FNb(12),d%!b%,d%!a%) ENDIF ENDIF ENDPROC DEFPROCH:REPEAT:UNTILNOTINKEY(-87):k%!Na%=0:ENDPROC DEFPROCJ:LOCALVa%,Wa%:Va%=na%:IFp%!q%THEN p%!Va%=FALSE:IFp%!a%>=O%!za%-p%!m%THEN p%!q%=FALSE:p%!Va%=TRUE ENDIF IFp%!Va%THEN Wa%=FNi(p%):Wa%!a%-=2:PROCd(Wa%):PROCc(Wa%) ELSE:PROCa(FNb(5),p%!b%,p%!a%) ENDIF p%!a%+=p%!M% ENDIF ENDPROC DEFPROCK:LOCALXa%,Ya%,Za%,h$:Xa%=na%:Ya%=oa%:Za%=pa%:IFNOTd%!q%THEN IFFNn(4)ANDFNn(5)THEN d%!q%=TRUE:d%!ma%=FALSE:d%!Ya%=0:d%!Za%=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%!Ya%+=1:IFd%!b%<=0-d%!f%ANDSGN(d%!L%)=-1THEN d%!Xa%=FALSE:d%!q%=FALSE:ENDPROC ENDIF IFd%!b%>h%!f%ANDSGN(d%!L%)=1THEN d%!Xa%=FALSE:d%!q%=FALSE:ENDPROC ENDIF IFNOTd%!ma%THEN IFFNp(p%,d%)THEN PROCd(p%):PROCa(FNb(12),d%!b%,d%!a%):d%!Xa%=T%: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%!Ya%>=1000THENd%!Ya%=0 IFd%!Ya%MOD10=0THEN d%!Za%=FNk(d%!Za%) ENDIF h$=FNb(10)+STR$(d%!Za%):PROCa(h$,d%!b%,d%!a%):d%!b%+=d%!L% ELSE:IFT%>=d%!Xa%+80THEN PROCd(d%):d%!q%=FALSE:d%!Xa%=FALSE:T%=0:d%!Za%=TRUE ELSE:IFT%>=d%!Xa%+60THEN PROCa(FNb(15),d%!b%,d%!a%) ELSE:IFT%>=d%!Xa%+40THEN PROCa(FNb(14),d%!b%,d%!a%) ELSE:IFT%>=d%!Xa%+20THEN PROCa(FNb(13),d%!b%,d%!a%) ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF ENDPROC DEFPROCL:LOCAL_a%,z%,E%,K%,`a%,ab%,bb%,Y%:LOCALF%,cb%,db%:F%=na%:cb%=ra%:db%=sa%:IFT%MOD5=0THENe%!F%=FNk(e%!F%) _a%=e%!b%+e%!f%:Y%=0-((e%!cb%-1)*(D%!f%+e%!Oa%)):IF_a%>=h%!f%THEN e%!L%=0-e%!M%:PROCs ENDIF IFe%!b%<=Y%THEN e%!L%=0+e%!M%:PROCs ENDIF Y%=e%!a%+((e%!Ra%-1)*D%!m%):IFY%<=o%!a%+o%!m%THEN PROCP:ENDPROC ENDIF IFFNp(p%,e%)THEN z%=D%!f%+e%!Oa%:IF(p%!b%-e%!b%)MODz%<=D%!f%THEN E%=((p%!a%-e%!a%)DIVD%!m%)+1:K%=((p%!b%-e%!b%)DIVz%)+1:IFSGN(b%(K%,E%))=1THEN b%(K%,E%)=-5:PROCd(p%):p%!q%=FALSE:e%!ma%+=1:CASEE%OF WHEN1,2:PROCg(50) WHEN3,4:PROCg(75) WHEN5,6:PROCg(100) ENDCASE ENDIF ENDIF ENDIF IFe%!ma%>=e%!Pa%*e%!Qa%THEN k%!Ia%+=1:PROCd(e%):PROCf(O%!Aa%):PROCh(k%!W%):PROCk(k%!Ia%):PROCt ENDIF `a%=TRUE:ab%=TRUE:FORE%=1TOe%!Qa%:IFb%(e%!db%,E%)<>0THEN`a%=FALSE IFb%(e%!cb%,E%)<>0THENab%=FALSE NEXTE%:bb%=TRUE:FORK%=1TOe%!Pa%:IFb%(K%,e%!Ra%)<>0THENbb%=FALSE NEXTK%:IFab%THENe%!cb%+=1 IF`a%THEN e%!f%-=(D%!f%+e%!Oa%):e%!db%-=1 ENDIF IFbb%THENe%!Ra%+=1 e%!b%+=e%!L%:PROCl:ENDPROC DEFPROCM:LOCALF%,eb%,fb%,i%,j%,x%,y%,gb%,hb%,h$,k$:F%=na%:eb%=oa%:FORi%=1TO7:IFNOTa%(i%)!q%THEN gb%=RND(10):hb%=k%!Ia%+5:IFhb%>100THEN hb%=100:IFk%!Ia%MOD10=0THENe%!Sa%+=1 ENDIF IFFNn(hb%)ANDFNn(e%!Sa%)THEN IFb%(gb%,e%!Ra%)>0THEN x%=e%!b%+(gb%-1)*(D%!f%+e%!Oa%):y%=e%!a%+(e%!Ra%-1)*D%!m%:a%(i%)!b%=x%+D%!f%/2:a%(i%)!a%=y%:a%(i%)!q%=TRUE:a%(i%)!ma%=FALSE:a%(i%)!eb%=1:a%(i%)!F%=0:fb%=4:IFFNn(25)THENa%(i%)!eb%=2:fb%=fb%/2 a%(i%)!M%=fb%:a%(i%)!L%=a%(i%)!M% ENDIF ENDIF ELSE:IFT%MOD5=0THEN a%(i%)!F%+=1 ENDIF IFa%(i%)!eb%=1ANDa%(i%)!F%>1THEN a%(i%)!F%=0 ENDIF IFa%(i%)!eb%=2ANDa%(i%)!F%>3THEN a%(i%)!F%=0 ENDIF a%(i%)!a%-=a%(i%)!L%:k$=STR$(a%(i%)!F%):IFa%(i%)!eb%=2ANDa%(i%)!F%=3THENk$="1" h$=FNb(30)+STR$(a%(i%)!eb%)+k$:PROCa(h$,a%(i%)!b%,a%(i%)!a%):IFa%(i%)!a%<=O%!Aa%+(O%!m%+5)THEN a%(i%)!q%=FALSE:PROCd(a%(i%)) ENDIF IFFNp(a%(i%),o%)ANDa%(i%)!q%THEN FORj%=1TO3:PROCa(FNb(2)+STR$(j%),o%!b%,o%!a%):PROCe(20):WAIT:NEXTj%:PROCd(o%):IFp%!q%THEN PROCd(p%):p%!q%=FALSE ENDIF o%!b%=FNf(o%,h%):k%!W%-=1:PROCh(k%!W%):PROCd(a%(i%)):a%(i%)!q%=FALSE:PROCa(FNb(1),o%!b%,o%!a%) ENDIF IFFNp(p%,a%(i%))ANDa%(i%)!q%THEN IFa%(i%)!eb%=1THEN a%(i%)!q%=FALSE:PROCg(5):PROCd(a%(i%)) ENDIF PROCd(p%):p%!q%=FALSE ENDIF ENDIF NEXTi%:ENDPROC DEFPROCN:IFT%MOD50=0THEN k%!La%=FNk(k%!La%) ENDIF PROCr(k%!La%):ENDPROC DEFPROCW:IFk%!Na%>=0THEN IFT%MOD50=0THEN k%!Ua%=FNk(k%!Ua%) ENDIF IFk%Ua%=1THENk%!Na%+=1 PROCQ(k%!Na%) ENDIF ENDPROC DEFPROCy(ib%):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%:IFib%THENPROCu ENDPROC DEFPROCz:LOCALi%,Q%:Q%=OPENIN".Resources.HiTable":FORi%=1TO10:INPUT#Q%,a$(i%),c%(i%):INPUT#Q%,d%(i%):NEXTi%:CLOSE#Q%:ENDPROC DEFPROCu:LOCALi%,Q%:Q%=OPENOUT".Resources.HiTable":FORi%=1TO10:PRINT#Q%,a$(i%),c%(i%):PRINT#Q%,d%(i%):NEXTi%:CLOSE#Q%:ENDPROC DEFPROCO(k%):LOCALH%,G%,jb%,g%,i%,kb%,N%,x%,y%,a$:G%=FNd(16):H%=FNd(16):G%!f%=FNc(100,1):G%!m%=FNc(40,2):G%!b%=FNf(G%,h%):G%!a%=800:H%!f%=FNc(150,1):H%!m%=FNc(40,2):H%!b%=FNf(H%,h%):H%!a%=G%!a%-H%!m%:kb%=0:FORi%=10TO1STEP-1 IFk%!X%>=c%(i%)THENkb%=i% NEXTi%:FORi%=9TOkb%STEP-1:a$(i%+1)=a$(i%):c%(i%+1)=c%(i%):d%(i%+1)=d%(i%):NEXTi%:c%(kb%)=k%!X%:d%(kb%)=k%!Ia%:CLS:PROCf(O%!za%):PROCf(O%!Aa%):PROCa(FNb(100),G%!b%,G%!a%):PROCa(FNb(101),H%!b%,H%!a%):a$=FNa(54)+" "+STR$(k%!X%) a$+=" "+FNa(55)+" "+STR$(kb%)+FNA(kb%):N%=LEN(a$)*h%!V%:x%=FNl(N%,h%!f%):y%=H%!a%-170:PROCb(x%,y%,a$,0):PROCc(G%):PROCc(H%):J%!f%=165:J%!m%=40:J%=FNs(J%,h%):PROCj(J%):x%=J%!b%+20:y%=J%!a%+12:a$="":i%=1:jb%=FALSE OSCLI"FX 21,0":REPEAT:g%=GET:CASEg%OF WHEN13:jb%=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 UNTILjb%:IFa$=""ORa$=" "THENa$=FNa(56) a$(kb%)=FNo(a$):IFfa%THENPROCu ENDPROC DEFFNB(lb%):LOCALVa%:Va%=FALSE:IFlb%>=32ANDlb%<=126THENVa%=TRUE =Va% DEFPROCB(mb%,nb%,l%,r%):LOCALx%,a$:a$=FNa(57)+FNm(STR$(mb%),10," ",TRUE):PROCb(0,h%!m%-h%!S%,a$,0):a$=FNa(58)+" "+FNa(57):a$+=" "+FNa(59)+FNm(STR$(nb%),10," ",TRUE):x%=h%!f%-LEN(a$)*h%!V%:PROCb(x%,h%!m%-h%!S%,a$,0):PROCh(l%):PROCk(r%):ENDPROC DEFPROCh(ob%):LOCALa$:PROCa(FNb(1),0,0):a$=" = "+STR$(ob%):PROCb(o%!f%,0,a$,0):ENDPROC DEFPROCk(ob%):LOCALx%,a$:a$=FNa(60)+" "+FNa(59):a$+=FNm(STR$(ob%),3,"0",TRUE):x%=h%!f%-LEN(a$)*h%!V%:PROCb(x%,0,a$,0):ENDPROC DEFPROCr(pb%):LOCALa$:a$=FNa(49)+" "+FNa(61):IFpb%=0ORk%!Ka%=0THEN a$=STRING$(LEN(a$)," ") ENDIF PROCv(a$):ENDPROC DEFPROCQ(RETURNqb%):LOCALa$:a$=FNa(66)+" "+FNa(72):IFk%!Ua%=0THEN a$=STRING$(LEN(a$)," "):IFqb%>5THENqb%=-1 ENDIF PROCv(a$):ENDPROC DEFPROCv(a$):LOCALx%,y%,N%:N%=LEN(a$)*h%!V%:x%=FNl(N%,h%!f%):y%=h%!m%-h%!S%:PROCb(x%,y%,a$,0):ENDPROC DEFPROCg(rb%):LOCALx%,a$:k%!X%+=rb%:a$=FNa(57)+" "+FNa(59):a$+=FNm(STR$(k%!X%),10," ",TRUE):PROCb(0,h%!m%-h%!S%,a$,0):IFk%!X%-k%!Ma%>=5000THEN k%!W%+=1:PROCh(k%!W%):k%!Ma%=k%!X%:k%!Na%=0 ENDIF IFk%!X%>c%(1)THEN a$=FNa(58)+" "+FNa(57)+" ":a$+=FNa(59):a$+=FNm(STR$(k%!X%),10," ",TRUE):x%=h%!f%-LEN(a$)*h%!V%:PROCb(x%,h%!m%-h%!S%,a$,0) ENDIF ENDPROC DEFPROCC:LOCALF%,cb%,db%,Ra%:F%=na%:cb%=ra%:db%=sa%:Ra%=ta%:PROCt:PROCl:ENDPROC DEFPROCt:LOCALE%,K%,s%:e%!b%=50:e%!a%=550:e%!F%=0:e%!ma%=0:e%!M%=3:e%!L%=e%!M%:e%!cb%=1:e%!db%=e%!Pa%:e%!Ra%=1:s%=(e%!Pa%*D%!f%)+((e%!Pa%-1)*e%!Oa%):e%!f%=s%:e%!m%=e%!Qa%*D%!m%:FORK%=1TOe%!Pa%:FORE%=1TOe%!Qa% b%(K%,E%)=((E%+1)/2)+(e%!F%*10):NEXTE%:NEXTK%:ENDPROC DEFPROCl:LOCALE%,K%,x%,y%,v%:v%=FNd(16):FORK%=e%!cb%TOe%!db%:x%=e%!b%+((K%-1)*(D%!f%+e%!Oa%)):FORE%=e%!Ra%TOe%!Qa%:y%=e%!a%+((E%-1)*D%!m%):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%!m%=D%!m%:PROCd(v%) ENDIF NEXTE%:NEXTK%:PROCc(v%):ENDPROC DEFPROCR(x%,y%,r%,c%):LOCALsb%:sb%=FNd(16):b%(r%,c%)+=1:PROCa(FNb(26),x%,y%):IFb%(r%,c%)=0THEN sb%!b%=x%:sb%!a%=y%:sb%!f%=D%!f%:sb%!m%=D%!m%:PROCd(sb%) ENDIF PROCc(sb%):ENDPROC DEFPROCs:LOCALv%,i%:v%=FNd(16):FORi%=1TO3:e%!a%-=D%!m%/3:PROCl:NEXTi%:v%!b%=e%!b%:v%!a%=e%!a%+e%!m%:v%!f%=e%!f%:v%!m%=D%!m%:PROCd(v%):PROCc(v%):ENDPROC DEFPROCP:LOCALR%,Z%,F%,tb%,M%,i%,j$:M%=1:ub%=24:R%=FNd(28):Z%=FNd(28):PROCd(e%):PROCd(o%):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%:o%!b%=FNf(o%,h%):R%!b%=0-D%!f%:R%!a%=o%!a%:R%!L%=M%:Z%!b%=h%!f%:Z%!a%=o%!a%:Z%!L%=0-M%:k%!W%=0:PROCf(O%!Aa%):PROCh(k%!W%):PROCk(k%!Ia%):PROCa(FNb(1),o%!b%,o%!a%):F%=0:tb%=FALSE:REPEAT:R%!b%+=R%!L%:R%!ub%=R%!b%+D%!f%:Z%!b%+=Z%!L%:F%+=1 IFF%MOD20=0THENtb%=FNk(tb%) IFF%>1000THENF%=0 IFtb%THENj$=FNb(21)ELSEj$=FNb(20) PROCa(j$,R%!b%,R%!a%):PROCa(j$,Z%!b%,Z%!a%):PROCe(2):WAIT:UNTILR%!ub%>=o%!b%:FORi%=1TO10:PROCa(FNb(20),R%!b%,R%!a%):PROCa(FNb(20),Z%!b%,Z%!a%):PROCe(20):PROCa(FNb(21),R%!b%,R%!a%):PROCa(FNb(21),Z%!b%,Z%!a%):PROCe(20):WAIT:NEXTi%:FORi%=1TO3 PROCa(FNb(2)+STR$(i%),o%!b%,o%!a%):PROCe(20):WAIT:NEXTi%:PROCe(20):PROCd(o%):PROCc(R%):PROCc(Z%):ENDPROC DEFFNu(d$):LOCALvb%,C%:C%=FNC(d$)+256:vb%=FNd(C%):!vb%=C%:vb%!4=0:vb%!8=16:vb%!12=16:SYSha%,256+10,vb%,d$:SYSha%,256+17,vb%:=vb% DEFPROCb(x%,y%,a$,wb%):LOCALi%,xb%:ka%=ja%:xb%=h%!V%:FORi%=1TOLEN(a$):PROCa(STR$(ASC(MID$(a$,i%,1))),x%+((i%-1)*xb%),y%):IFwb%>0THENPROCe(wb%) NEXTi%:ka%=ia%:ENDPROC DEFPROCa(r$,x%,y%):LOCALyb%:SYSha%,256+24,ka%,r$TO,,yb%:SYSha%,512+34,ka%,yb%,x%,y%,0:ENDPROC DEFPROCd(w%):GCOL0,0TINT0:RECTANGLEFILLw%!b%,w%!a%,w%!f%,w%!m%:ENDPROC DEFFNl(zb%,h%):=(h%/2)-(zb%/2) DEFPROCn(a$,Ab%):LOCALN%,y%:N%=LEN(a$)*h%!V%:y%=(h%!m%/2)-(h%!S%/2):PROCb(FNl(N%,h%!f%),y%,a$,Ab%):ENDPROC DEFFNf(Bb%,Cb%):=(Cb%!f%/2)-(Bb%!f%/2) DEFFNs(Bb%,Cb%):LOCALx%,y%:Bb%!b%=(Cb%!f%/2)-(Bb%!f%/2):Bb%!a%=(Cb%!m%/2)-(Bb%!m%/2):=Bb% DEFPROCf(a%):LOCALi%,Db%:Db%=h%!f%/O%!f%:FORi%=1TODb%+1:PROCa(FNb(108),(i%-1)*O%!f%,a%):NEXTi%:ENDPROC DEFPROCj(w%):LOCALx%,y%,Eb%,Fb%,Gb%,Hb%,i%:Eb%=FNc(3,1):Fb%=FNc(3,2):Gb%=1:Hb%=3:FORi%=1TOw%!f%:x%=w%!b%+((i%-1)*Gb%):PROCa(FNb(113),x%,w%!a%):PROCa(FNb(113),x%,w%!a%+(w%!m%-(2*Hb%))):NEXTi%:x%=w%!b%+(w%!f%-Eb%):FORi%=1TOw%!m%-1 PROCa(FNb(114),w%!b%,w%!a%+((i%-1)*Gb%)):PROCa(FNb(114),x%,w%!a%+((i%-1)*Gb%)):NEXTi%:PROCa(FNb(111),w%!b%,w%!a%):PROCa(FNb(109),w%!b%,(w%!a%+w%!m%)-Fb%):PROCa(FNb(112),w%!b%+(w%!f%-Eb%),w%!a%):x%=(w%!b%+w%!f%)-Eb%:y%=(w%!a%+w%!m%)-Fb% PROCa(FNb(110),x%,y%):ENDPROC DEFFNr(d$,g$):LOCAL`%,qb%,i$:`%=OPENIN(d$):INPUT#`%,i$:IFi$<>g$THENCLOSE#`%:ERROR255,"Bad Magic!" INPUT#`%,qb%:CLOSE#`%:=qb% DEFPROCi(d$,g$,RETURNi%(),RETURNf$()):LOCAL`%,i%,qb%,i$:`%=OPENIN(d$):INPUT#`%,i$:IFi$<>g$THENCLOSE#`%:ERROR255,"Bad Magic!" INPUT#`%,qb%:FORi%=1TOqb%:INPUT#`%,i%(i%),f$(i%):NEXTi%:CLOSE#`%:ENDPROC DEFFNa(Ib%):=FNt(Ib%,aa%,f%(),b$(),106) DEFFNb(Ib%):=FNt(Ib%,ba%,g%(),c$(),107) DEFFNe(Ib%):=FNt(Ib%,ca%,h%(),d$(),108) DEFFNt(Ib%,Jb%,j%(),g$(),Kb%):LOCALi%,Lb%:Lb%=0:FORi%=1TOJb%:IFj%(i%)=Ib%THENLb%=i%:i%=Jb% NEXTi%:IFLb%=0THENERROR255,FNa(Kb%)+" "+STR$(Ib%) =FNo(g$(Lb%)) 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 CASEMb%OF WHEN1:Nb%=C%<>h%!wa% WHEN4:Nb%=C%>>h%!xa% OTHERWISE:ERROR255,FNa(103)+" "+STR$(Mb%) ENDCASE =Nb% DEFFNp(w%,Pb%):LOCALQb%,Rb%,Sb%,Tb%:Sb%=FALSE:Tb%=FALSE:IFw%!q%ANDPb%!q%THEN Qb%=Pb%!b%+Pb%!f%:Rb%=Pb%!a%+Pb%!m%:IFw%!b%>=Pb%!b%ANDw%!b%=Pb%!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$,Vb%,q$,Wb%):LOCALXb%,c$:Xb%=Vb%-LEN(a$):IFXb%<=0THEN c$=LEFT$(a$,Vb%) ELSE:IFWb%THEN c$=STRING$(Vb%,q$):RIGHT$(c$,LEN(a$))=a$ ELSE:c$=a$+STRING$(Xb%,q$) ENDIF ENDIF =c$ DEFFNx(a$,Vb%):LOCALc$:c$=STRING$(Vb%," "):RIGHT$(c$,LEN(a$))=a$:=c$ DEFFNv(f$):LOCALLb%:SYS"XOS_File",17,f$TOLb%:=Lb% DEFFNC(f$):LOCALC%:SYSFNe(3),5,f$TO,,,,C%:=C% DEFFNw(Mb%,f$):LOCALQ%,Yb%,Zb%,_b%:_b%=FALSE:CASEMb%OF WHEN0:Q%=OPENUP(f$+"chkfile") WHEN1:Q%=OPENUP(f$) OTHERWISE:ERROR255,FNa(104)+" "+STR$(Mb%) ENDCASE IFQ%<>0THEN SYSFNe(4),254,Q%TOZb%;Yb%:IF(Yb%AND1)THEN CLOSE#Q%:ERROR255,FNa(105) ENDIF IF((Zb%AND(1<<7))<>0)THEN_b%=TRUE CLOSE#Q% ENDIF =_b% DEFPROCx:LOCAL`b%:ac%=0:bc%=0:SYSFNe(10),-1,-1TOcc%:SYSFNe(11)TOdc%;`b%:IF`b%AND1THENdc%=16384 PROCS(dc%):ENDPROC DEFPROCo:IFac%THEN SYSFNe(10),ac%-32768,-1TOcc%:ac%=0:bc%=0 ENDIF ENDPROC DEFFNd(ec%):LOCALA%,C%:C%=(ec%+15)AND-4:A%=FND(C%):IFA%ELSEERROR254,FNa(111) A%!0=&DEADDEAD:A%!4=ec%:!(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 bc%-=A%!-4:SYSFNe(12),3,ac%,A%:A%=0:ENDPROC DEFFNy(A%):LOCALv%:v%=A%-4:=v%!0 DEFFNh(A%,rb%):PROCT(A%,rb%):=A% DEFPROCT(A%,rb%):LOCALY%,C%:C%=FNy(A%):FORY%=0TOC%-4STEP4:A%!Y%=rb%:NEXTY%:ENDPROC DEFFNi(A%):LOCALfc%,Y%,C%:C%=FNy(A%):fc%=FNd(C%):FORY%=0TOC%-4STEP4:fc%!Y%=A%!Y%:NEXTY%:=fc% DEFPROCS(C%):IFac%THENERROR254,FNa(115) C%=(C%+dc%-1)ANDNOT(dc%-1):ac%=HIMEM:SYSFNe(10),cc%+C%,-1TOcc%:C%=cc%+32768-ac%:IFC%<1THEN ac%=0:ERROR254,FNa(116) ELSE:SYSFNe(12),0,ac%,,C% ENDIF bc%=0:ENDPROC DEFPROCU(ec%):LOCALgc%:gc%=cc%:SYSFNe(10),cc%+ec%,-1TOcc%:ec%=cc%-gc%:IFec%THENSYSFNe(12),5,ac%,,ec%TO,,,ec% ENDPROC DEFFND(ec%):LOCALA%,`b%:SYSFNe(13),2,ac%,,ec%TO,,A%;`b%:IF`b%AND1THEN PROCU((ec%+dc%)ANDNOT(dc%-1)):SYSFNe(13),2,ac%,,ec%TO,,A%;`b%:IF`b%AND1THEN=0 ENDIF bc%+=A%!-4:=A%