REM Acorn Invaders REM Packed by Make v1.41 15/5/08 On 26 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%=FNs(b$+"Msg","SGSM"):DIMf%(ba%),b$(ba%):PROCj(b$+"Msg","SGSM",f%(),b$()):PRINTFNa(14):PRINTFNa(9)+" "+FNa(3);:ca%=FNs(b$+"ImgLUT","TULI"):DIMg%(ca%),c$(ca%):PROCj(b$+"ImgLUT","TULI",g%(),c$()):PRINTFNa(14) PRINTFNa(9)+" "+FNa(13);:da%=FNs(b$+"SWIs","TULS"):DIMh%(da%),d$(da%):PROCj(b$+"SWIs","TULS",h%(),d$()):PRINTFNa(14):PRINTFNa(8)+" "+FNa(1):OSCLI"PlayVolume 0":OSCLI"Playmod "+b$+"Intro":OSCLI"PlayPause":PRINT:PRINTFNa(12):ea%=FNv(0):IFea%=-1THENERROR255,FNa(109) PRINTFNa(15)+STR$(ea%):aa%=FALSE:fa%=1:ga%=127:ha%=TRUE:ia%=0:DIMa$(10),c%(10):DIMd%(10):PRINTFNa(8)+" "+FNa(2):PROCy:PRINT:PRINTFNa(17)+" "+FNa(16):SYSFNe(1),,FNe(2)TOja%:PRINTFNa(9)+" "+FNa(4);:ka%=FNw(b$+"Gfx0"):PRINTFNa(14):PRINTFNa(9)+" "+FNa(5);:la%=FNw(b$+"Gfx1"):PRINTFNa(14) ma%=ka%:PRINTFNa(9)+" "+FNa(6);:Z%=OPENIN(b$+"Creds"):INPUT#Z%,i$:IFi$<>"DERC"THEN CLOSE#Z%:ERROR255,FNa(101):END ENDIF INPUT#Z%,ia%:DIMe$(ia%),e%(ia%):FORi%=1TOia%:INPUT#Z%,e%(i%),e$(i%):NEXTi%:CLOSE#Z%:PRINTFNa(14):PRINTFNa(7);:p$=b$+"HiTable":IFFNq(p$)<>1THEN IFNOTFNx(0,b$)THEN ha%=FALSE:PRINTFNa(19)+" "+FNa(10)+" "+FNa(20) ELSE:PRINTFNa(19)+" "+FNa(11)+" "+FNa(20) ENDIF PROCz(ha%) ELSE:IFNOTFNx(1,p$)THEN ha%=FALSE:PRINTFNa(18)+" "+FNa(10)+" "+FNa(20) ELSE:PRINTFNa(18)+" "+FNa(11)+" "+FNa(20) ENDIF PROCA ENDIF PRINTFNa(12):PROCe(150):b%=0:a%=4:e%=8:k%=12:L%=16:M%=20:v%=24:U%=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):P%=FNd(24):J%=FNd(16) CLS:PROCn:h%!V%=FNc(8,1):h%!S%=FNc(8,2)+7:P%!e%=FNc(6,1):P%!k%=FNc(6,2):P%!za%=h%!k%-50:P%!Aa%=30:OSCLI"PlayVolume "+STR$(ga%):OSCLI"PlayStart":WHILENOTFNA:CLS:PROCB:ENDWHILE:CLS:J%!e%=220:J%!k%=40:J%=FNt(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 DEFFNA:LOCALi%,G%,H%,q%,N%,d%,T%,Ba%,Ca%:LOCALm%,Q%,Da%,Ea%,Fa%,W%,Ga%,Ha%,Ia%:LOCALx%,y%,I%,s$,a$:G%=FNi(FNd(16),0):H%=FNi(FNd(16),0):q%=FNi(FNd(16),0):d%=FNi(FNd(16),0):T%=FNi(FNd(16),0):Q%=FNi(FNd(16),0):m%=FNi(FNd(16),0) G%!e%=FNc(100,1):G%!k%=FNc(40,2):G%!b%=FNg(G%,h%):G%!a%=800:H%!e%=FNc(150,1):H%!k%=FNc(40,2):H%!b%=FNg(H%,h%):H%!a%=G%!a%-H%!k%:q%!e%=720:q%!k%=500:q%!b%=FNg(q%,h%):q%!a%=200:d%!e%=FNc(40,1):d%!k%=FNc(20,2) d%!b%=(q%!b%+q%!e%/2)-150:d%!a%=(q%!a%+q%!k%)-125:m%!e%=FNc(30,1):m%!k%=FNc(15,2):T%!e%=FNc(20,1):T%!k%=FNc(20,2):T%!b%=(q%!b%+q%!e%/2)-150:T%!b%+=FNg(T%,d%):Ba%=FNf(T%):Ca%=FNf(T%)::Ca%!a%=d%!a%-40-Ca%!k%:Ba%!a%=Ca%!a%-40-Ba%!k% T%!a%=Ba%!a%-40-T%!k%:Q%!e%=FNc(20,1):Q%!k%=FNc(20,2):Q%!b%=(q%!b%+q%!e%/2)-120:Da%=FNf(Q%):Ea%=FNf(Q%):Fa%=FNf(Q%):Fa%!b%=q%!b%:Ja%=FNf(Fa%):Ga%=FNf(Fa%):W%=FNf(Q%):W%!b%=q%!b%:W%!b%+=(q%!e%/2)+10 Ha%=FNf(W%):Ia%=FNf(W%)::Q%!a%=(q%!a%+q%!k%)-120:Da%!a%=Q%!a%-60:Ea%!a%=Da%!a%-60:Ga%!a%=Ea%!a%-90:Ja%!a%=Ga%!a%-60:Fa%!a%=Ja%!a%-60:W%!a%=Ea%!a%-90:Ha%!a%=W%!a%-60:Ia%!a%=Ha%!a%-60:CLS:PROCf(P%!za%):PROCf(P%!Aa%) FORi%=0-G%!e%TOG%!b%STEP5:WAIT:PROCa(FNb(100),i%,G%!a%):PROCe(1):NEXTi%:FORi%=h%!e%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%!e%),y%,a$,11):a$=FNa(33):N%=LEN(a$)*h%!V%:y%-=h%!S% PROCb(FNl(N%,h%!e%),y%,a$,11):WHILENOTINKEY(-99)ANDNOTINKEY(-17)ANDNOTINKEY(-82):y%=q%!a%+q%!k%:FORi%=1TOia%:a$=FNo(e$(i%)):x%=FNh(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%=FNr:IFI%=1THEN=TRUE IFI%=2THEN=FALSE PROCd(q%):a$=FNa(57)+" "+FNa(34):x%=FNh(a$):y%=q%!a%+q%!k%-20:PROCb(x%,y%,a$,0):a$=FNa(35):y%-=h%!S%:x%=FNh(a$):PROCb(x%,y%,a$,0):x%=d%!b%+d%!e%+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),T%!b%,T%!a%):a$=FNa(39)+" "+FNa(40):PROCb(x%,T%!a%+12,a$,0) N%=m%!e%/h%!V%+2:s$=FNa(66):a$=s$+STRING$(N%," ")+FNa(67):x%=FNh(a$):y%=T%!a%-(3*h%!S%):PROCb(x%,y%,a$,0):m%!b%=x%+7+(LEN(s$)*h%!V%):m%!a%=y%:PROCa(FNb(1),m%!b%,m%!a%):I%=FNr:IFI%=1THEN=TRUE IFI%=2THEN=FALSE PROCd(q%):a$=FNa(41):x%=FNh(a$):y%=q%!a%+q%!k%-20:PROCb(x%,y%,a$,0):x%=Q%!b%+Q%!e%+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):x%=Fa%!b%+Fa%!e%+10:PROCa(FNb(105),Ja%!b%,Ja%!a%):a$=FNa(46)+" "+FNa(49):PROCb(x%,Ja%!a%+12,a$,0):PROCa(FNb(117),Ga%!b%,Ga%!a%):PROCb(x%,Ga%!a%+12,FNa(76),0) PROCa(FNb(107),Fa%!b%,Fa%!a%):a$=FNa(48)+" "+FNa(49):PROCb(x%,Fa%!a%+12,a$,0):x%=W%!b%+W%!e%+10:PROCa(FNb(106),W%!b%,W%!a%):a$=FNa(47)+" "+FNa(73):PROCb(x%,W%!a%+12,a$,0):PROCa(FNb(115),Ha%!b%,Ha%!a%):a$=FNa(47)+" "+FNa(77)+" ":a$+=FNa(74) PROCb(x%,Ha%!a%+12,a$,0):PROCa(FNb(116),Ia%!b%,Ia%!a%):a$=FNa(47)+" "+FNa(77)+" ":a$+=FNa(75):PROCb(x%,Ia%!a%+12,a$,0):I%=FNr:IFI%=1THEN=TRUE IFI%=2THEN=FALSE PROCd(q%):a$=FNa(50):IFha%THENa$=FNa(51) x%=FNh(a$):y%=q%!a%+q%!k%-20:PROCb(x%,y%,a$,0):a$=FNa(58)+" "+FNa(52):x%=FNh(a$):y%-=h%!S%:PROCb(x%,y%,a$,0):y%=(q%!a%+q%!k%)-100:a$=" "+FNa(68)+" "+FNa(69):a$+=STRING$(12," ")+FNa(57)+".":a$+=STRING$(3," ")+FNa(60)+".":x%=FNh(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$+=FNy(STR$(c%(i%)),10):a$+=" ... "+FNy(STR$(d%(i%)),3):x%=FNh(a$):PROCb(x%,y%-(i%*(h%!S%+5)),a$,0):NEXTi%:I%=FNr:IFI%=1THEN=TRUE IFI%=2THEN=FALSE PROCd(q%):ENDWHILE:ERROR255,FNa(102):=FALSE DEFFNr: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(q%):PROCc(d%):PROCc(T%):PROCc(Ba%):PROCc(Ca%):PROCc(Q%):PROCc(Da%):PROCc(Ea%):PROCc(Fa%):PROCc(W%):PROCc(Ja%):PROCc(Ga%):PROCc(Ha%):PROCc(Ia%):PROCc(m%) ENDIF =I% DEFFNh(a$):LOCALN%:N%=LEN(a$)*h%!V%:=q%!b%+FNl(N%,q%!e%) DEFPROCB:LOCALm%,p%,d%,f%,o%:LOCALD%:LOCALb%(),a%():LOCAL_%,Ka%,La%,Ma%:LOCALNa%,Oa%,Pa%,Qa%,Ra%:LOCALSa%,Ta%,Ua%,Va%,Wa%:LOCALXa%,N%,a$,x%,y%,i%,j%:LOCALO%:m%=FNd(32):p%=FNd(40):d%=FNd(48):f%=FNd(68):D%=FNd(16):o%=FNi(FNd(40),0):DIMb%(10,6),a%(7) _%=0:Ka%=4:La%=8:Ma%=12:Na%=16:Oa%=20:Pa%=24:Qa%=28:Ra%=32:Ya%=36:Sa%=oa%:Ta%=pa%:Ua%=qa%:Va%=ta%:Wa%=ua%:m%!e%=FNc(30,1):m%!k%=FNc(15,2):m%!b%=FNg(m%,h%):m%!a%=50:m%!M%=6:m%!L%=m%!M% D%!e%=FNc(20,1):D%!k%=FNc(20,2):d%!e%=FNc(40,1):d%!k%=FNc(20,2):d%!a%=P%!za%-(10+d%!k%):d%!M%=5:d%!v%=FALSE:d%!pa%=1:p%!e%=FNc(5,1):p%!k%=FNc(20,2):p%!v%=FALSE:p%!M%=10:o%!La%=1:o%!_%=3:o%!Ma%=FALSE:o%!Qa%=-1 f%!Sa%=FNc(20,1):f%!Ta%=10:f%!Ua%=6:f%!v%=TRUE:f%!Wa%=4:FORi%=1TO7:a%(i%)=FNd(44):PROCs(a%(i%),0):a%(i%)!e%=FNc(5,1):a%(i%)!k%=FNc(20,2):NEXTi%:PROCf(P%!za%):PROCf(P%!Aa%):PROCC(0,c%(1),o%!_%,o%!La%):PROCD:PROCa(FNb(1),m%!b%,m%!a%) O%=0:WHILEo%!_%>0:Xa%=FALSE:IFo%!Na%=0THEN IFINKEY(-74)THENPROCE(m%!b%,m%!a%) IFINKEY(-98)THENPROCF:Xa%=TRUE IFINKEY(-67)THENPROCG:Xa%=TRUE IFINKEY(-17)THENPROCH ENDIF IFINKEY(-102)THENPROCr IFINKEY(-82)THENPROCq IFINKEY(-56)THENPROCI IFINKEY(-59)THENPROCi(2) IFINKEY(-60)THENPROCi(-2) IFo%!Na%=0THEN IFXa%THEN m%!b%+=m%!L%:PROCa(FNb(1),m%!b%,m%!a%) ENDIF ENDIF O%+=1:IFO%>=10000THENO%=0 IFo%!Na%=0THEN PROCJ:PROCK:PROCL:PROCM:PROCN ELSE:PROCO ENDIF WAIT:ENDWHILE:J%!e%=240:J%!k%=40:J%=FNt(J%,h%):J%!a%-=3:PROCd(J%):PROCk(J%):a$=FNa(49)+" "+FNa(53):PROCo(a$,11):PROCe(750):IFNOTo%!Ma%THEN IFo%!Ka%>=c%(10)THEN PROCP(o%) ENDIF ENDIF PROCc(m%):PROCc(f%):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%!e%-m%!e%THEN m%!b%=h%!e%-m%!e% ELSE:m%!L%=0+m%!M% ENDIF ENDPROC DEFPROCE(x%,y%):IFNOTp%!v%THEN p%!v%=TRUE:p%!b%=x%+(m%!e%/2):p%!a%=y%+m%!k% ENDIF ENDPROC DEFPROCq:LOCALd$:REPEAT:UNTILNOTINKEY(-82):ea%=FNv(ea%):IFea%=-1THENERROR255,FNa(109) d$=".Screens.Dump"+STR$(ea%):OSCLI"ScreenSave "+d$:ENDPROC DEFPROCH:LOCALi%:FORi%=1TO7:a%(i%)!v%=FALSE:NEXTi%:o%!_%=0:o%!Ma%=TRUE:ENDPROC DEFPROCr:REPEAT:UNTILNOTINKEY(-102):fa%=FNk(fa%):IFfa%=1THENOSCLI"PlayStart"ELSEOSCLI"PlayPause" ENDPROC DEFPROCi(Za%):REPEAT:UNTILNOTINKEY(-59):REPEAT:UNTILNOTINKEY(-60):IFfa%=1THEN IFga%>=1ANDga%<=127THEN ga%+=Za%:IFga%<1THENga%=1 IFga%>127THENga%=127 OSCLI"PlayVolume "+STR$(ga%) ENDIF ENDIF ENDPROC DEFPROCI:REPEATUNTILNOTINKEY(-56):o%!Na%=FNk(o%!Na%):o%!Oa%=o%!Na%:IFo%!Na%=1THEN o%!Ya%=O% ELSE:O%=o%!Ya% ENDIF ENDPROC DEFPROCU:REPEAT:UNTILNOTINKEY():IFd%!v%THEN IFNOTd%!U%THEN d%!U%=TRUE:d%!na%=O%:PROCa(FNb(12),d%!b%,d%!a%) ENDIF ENDIF ENDPROC DEFPROCJ:LOCAL_a%,`a%:_a%=na%:IFp%!v%THEN p%!_a%=FALSE:IFp%!a%>=P%!za%-p%!k%THEN p%!v%=FALSE:p%!_a%=TRUE ENDIF IFp%!_a%THEN `a%=FNf(p%):`a%!a%-=2:PROCd(`a%):PROCc(`a%) ELSE:PROCa(FNb(5),p%!b%,p%!a%) ENDIF p%!a%+=p%!M% ENDIF ENDPROC DEFPROCK:LOCALab%,bb%,cb%,e$:ab%=na%:bb%=oa%:cb%=pa%:IFNOTd%!v%THEN IFFNn(4)ANDFNn(5)THEN d%!v%=TRUE:d%!U%=FALSE:d%!bb%=0:d%!cb%=0:IFFNn(50)THEN d%!L%=0-d%!M%:d%!b%=h%!e% ELSE:d%!L%=0+d%!M%:d%!b%=0-d%!e% ENDIF ENDIF ELSE:d%!bb%+=1:IFd%!b%<=0-d%!e%ANDSGN(d%!L%)=-1THEN d%!ab%=FALSE:d%!v%=FALSE:ENDPROC ENDIF IFd%!b%>h%!e%ANDSGN(d%!L%)=1THEN d%!ab%=FALSE:d%!v%=FALSE:ENDPROC ENDIF IFNOTd%!U%THEN IFFNp(p%,d%)THEN PROCd(p%):PROCa(FNb(12),d%!b%,d%!a%):d%!ab%=O%:d%!U%=TRUE:p%!v%=FALSE:PROCg(500) ENDIF ELSE:IFFNp(p%,d%)THEN PROCd(p%):p%!v%=FALSE ENDIF ENDIF IFNOTd%!U%THEN IFd%!bb%>=1000THENd%!bb%=0 IFd%!bb%MOD10=0THEN d%!cb%=FNk(d%!cb%) ENDIF e$=FNb(10)+STR$(d%!cb%):PROCa(e$,d%!b%,d%!a%):d%!b%+=d%!L% ELSE:IFO%>=d%!ab%+80THEN PROCd(d%):d%!v%=FALSE:d%!ab%=FALSE:O%=0:d%!cb%=TRUE ELSE:IFO%>=d%!ab%+60THEN PROCa(FNb(15),d%!b%,d%!a%) ELSE:IFO%>=d%!ab%+40THEN PROCa(FNb(14),d%!b%,d%!a%) ELSE:IFO%>=d%!ab%+20THEN PROCa(FNb(13),d%!b%,d%!a%) ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF ENDPROC DEFPROCL:LOCALdb%,z%,E%,K%,eb%,fb%,gb%,X%:LOCALF%,hb%,ib%:F%=na%:hb%=ra%:ib%=sa%:IFO%MOD5=0THENf%!F%=FNk(f%!F%) db%=f%!b%+f%!e%:X%=0-((f%!hb%-1)*(D%!e%+f%!Sa%)):IFdb%>=h%!e%THEN f%!L%=0-f%!M%:PROCt ENDIF IFf%!b%<=X%THEN f%!L%=0+f%!M%:PROCt ENDIF X%=f%!a%+((f%!Va%-1)*D%!k%):IFX%<=m%!a%+m%!k%THEN PROCQ:ENDPROC ENDIF IFFNp(p%,f%)THEN z%=D%!e%+f%!Sa%:IF(p%!b%-f%!b%)MODz%<=D%!e%THEN E%=((p%!a%-f%!a%)DIVD%!k%)+1:K%=((p%!b%-f%!b%)DIVz%)+1:IFSGN(b%(K%,E%))=1THEN b%(K%,E%)=-5:PROCd(p%):p%!v%=FALSE:f%!U%+=1:CASEE%OF WHEN1,2:PROCg(50) WHEN3,4:PROCg(75) WHEN5,6:PROCg(100) ENDCASE ENDIF ENDIF ENDIF IFf%!U%>=f%!Ta%*f%!Ua%THEN o%!La%+=1:PROCd(f%):PROCf(P%!Aa%):PROCh(o%!_%):PROCl(o%!La%):PROCa(FNb(1),m%!b%,m%!a%):PROCu ENDIF eb%=TRUE:fb%=TRUE:FORE%=1TOf%!Ua%:IFb%(f%!ib%,E%)<>0THENeb%=FALSE IFb%(f%!hb%,E%)<>0THENfb%=FALSE NEXTE%:gb%=TRUE:FORK%=1TOf%!Ta%:IFb%(K%,f%!Va%)<>0THENgb%=FALSE NEXTK%:IFfb%THENf%!hb%+=1 IFeb%THEN f%!e%-=(D%!e%+f%!Sa%):f%!ib%-=1 ENDIF IFgb%THENf%!Va%+=1 f%!b%+=f%!L%:PROCm:ENDPROC DEFPROCM:LOCALF%,jb%,kb%,lb%,i%,j%,x%,y%:LOCALmb%,nb%,e$,l$,ob%:F%=na%:jb%=oa%:kb%=pa%:FORi%=1TO7:IFNOTa%(i%)!v%THEN mb%=RND(10):nb%=o%!La%+5:IFnb%>100THEN nb%=100:IFo%!La%MOD10=0THENf%!Wa%+=1 ENDIF IFFNn(nb%)ANDFNn(f%!Wa%)THEN IFb%(mb%,f%!Va%)>0THEN x%=f%!b%+(mb%-1)*(D%!e%+f%!Sa%):y%=f%!a%+((f%!Va%-1)*D%!k%)-D%!k%:ob%=(D%!e%/2)-(a%(i%)!e%/2):a%(i%)!b%=x%+ob%:a%(i%)!a%=y%:a%(i%)!v%=TRUE:a%(i%)!U%=FALSE:a%(i%)!jb%=1:a%(i%)!F%=0:lb%=4:IFFNn(25)THENa%(i%)!jb%=2:lb%=lb%/2 a%(i%)!M%=lb%:a%(i%)!L%=a%(i%)!M% ENDIF ENDIF ELSE:IFO%MOD5=0THEN a%(i%)!F%+=1 ENDIF IFa%(i%)!jb%=1ANDa%(i%)!F%>1THEN a%(i%)!F%=0 ENDIF IFa%(i%)!jb%=2ANDa%(i%)!F%>3THEN a%(i%)!F%=0 ENDIF l$=STR$(a%(i%)!F%):IFa%(i%)!jb%=2ANDa%(i%)!F%=3THENl$="1" e$=FNb(30)+STR$(a%(i%)!jb%)+l$:IFNOTa%(i%)!U%THEN a%(i%)!a%-=a%(i%)!L%:PROCa(e$,a%(i%)!b%,a%(i%)!a%) ELSE:e$=FNb(30)+"3":PROCa(e$,a%(i%)!b%,a%(i%)!a%) ENDIF IFa%(i%)!a%<=P%!Aa%+(P%!k%+5)THEN a%(i%)!v%=FALSE:PROCd(a%(i%)) ENDIF IFFNp(a%(i%),m%)ANDa%(i%)!v%THEN FORj%=1TO3:PROCa(FNb(2)+STR$(j%),m%!b%,m%!a%):PROCe(20):WAIT:NEXTj%:PROCd(m%):IFp%!v%THEN PROCd(p%):p%!v%=FALSE ENDIF m%!b%=FNg(m%,h%):o%!_%-=1:PROCh(o%!_%):PROCd(a%(i%)):a%(i%)!v%=FALSE:PROCa(FNb(1),m%!b%,m%!a%) ENDIF IFFNp(p%,a%(i%))THEN IFa%(i%)!jb%=1THEN IFNOTa%(i%)!U%THEN a%(i%)!U%=TRUE:PROCg(5):e$=FNb(30)+"3":PROCa(e$,a%(i%)!b%,a%(i%)!a%):a%(i%)!kb%=O% ENDIF ENDIF PROCd(p%):p%!v%=FALSE ENDIF IFa%(i%)!U%THEN IFO%-a%(i%)!kb%>=5THEN PROCd(a%(i%)):a%(i%)!v%=FALSE ENDIF ENDIF ENDIF NEXTi%:ENDPROC DEFPROCO:LOCALa$:IFO%MOD50=0THEN o%!Oa%=FNk(o%!Oa%) ENDIF a$=FNa(49)+" "+FNa(61):IFo%!Oa%=0ORo%!Na%=0THEN a$=STRING$(LEN(a$)," ") ENDIF PROCv(a$):ENDPROC DEFPROCN:LOCALa$:IFo%!Qa%>=0THEN a$=FNa(66)+" "+FNa(72):IFO%MOD10=0THEN o%!Ra%=FNk(o%!Ra%):IFo%!Ra%=1THENo%!Qa%+=1 ENDIF IFo%!Ra%=0THEN a$=STRING$(LEN(a$)," ") ENDIF IFo%!Qa%>5THEN a$=STRING$(LEN(a$)," "):o%!Qa%=-1 ENDIF PROCv(a$) ENDIF ENDPROC DEFPROCz(pb%):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%:IFpb%THENPROCw ENDPROC DEFPROCA:LOCALi%,qb%:qb%=OPENIN".Resources.HiTable":FORi%=1TO10:INPUT#qb%,a$(i%),c%(i%):INPUT#qb%,d%(i%):NEXTi%:CLOSE#qb%:ENDPROC DEFPROCw:LOCALi%,qb%:qb%=OPENOUT".Resources.HiTable":FORi%=1TO10:PRINT#qb%,a$(i%),c%(i%):PRINT#qb%,d%(i%):NEXTi%:CLOSE#qb%:ENDPROC DEFPROCP(o%):LOCALH%,G%,rb%,g%,i%,sb%,N%,x%,y%,a$:G%=FNd(16):H%=FNd(16):G%!e%=FNc(100,1):G%!k%=FNc(40,2):G%!b%=FNg(G%,h%):G%!a%=800:H%!e%=FNc(150,1):H%!k%=FNc(40,2):H%!b%=FNg(H%,h%):H%!a%=G%!a%-H%!k%:sb%=0:FORi%=10TO1STEP-1 IFo%!Ka%>=c%(i%)THENsb%=i% NEXTi%:FORi%=9TOsb%STEP-1:a$(i%+1)=a$(i%):c%(i%+1)=c%(i%):d%(i%+1)=d%(i%):NEXTi%:c%(sb%)=o%!Ka%:d%(sb%)=o%!La%:CLS:PROCf(P%!za%):PROCf(P%!Aa%):PROCa(FNb(100),G%!b%,G%!a%):PROCa(FNb(101),H%!b%,H%!a%):a$=FNa(54)+" "+STR$(o%!Ka%) a$+=" "+FNa(55)+" "+STR$(sb%)+FNB(sb%):N%=LEN(a$)*h%!V%:x%=FNl(N%,h%!e%):y%=H%!a%-170:PROCb(x%,y%,a$,0):PROCc(G%):PROCc(H%):J%!e%=165:J%!k%=40:J%=FNt(J%,h%):PROCk(J%):x%=J%!b%+20:y%=J%!a%+12:a$="":i%=1:rb%=FALSE OSCLI"FX 21,0":REPEAT:g%=GET:CASEg%OF WHEN13:rb%=TRUE WHEN8:i%-=1:a$=LEFT$(a$,i%-1) OTHERWISE:IFi%<9ANDFNC(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 UNTILrb%:IFa$=""ORa$=" "THENa$=FNa(56) a$(sb%)=FNo(a$):IFha%THENPROCw ENDPROC DEFFNC(tb%):LOCAL_a%:_a%=FALSE:IFtb%>=32ANDtb%<=126THEN_a%=TRUE =_a% DEFPROCC(ub%,vb%,l%,r%):LOCALx%,a$:a$=FNa(57)+FNm(STR$(ub%),10," ",TRUE):PROCb(0,h%!k%-h%!S%,a$,0):a$=FNa(58)+" "+FNa(57):a$+=" "+FNa(59)+FNm(STR$(vb%),10," ",TRUE):x%=h%!e%-LEN(a$)*h%!V%:PROCb(x%,h%!k%-h%!S%,a$,0):PROCh(l%):PROCl(r%):ENDPROC DEFPROCh(wb%):LOCALa$:PROCa(FNb(1),0,0):a$=" = "+STR$(wb%):PROCb(m%!e%,0,a$,0):ENDPROC DEFPROCl(wb%):LOCALx%,a$:a$=FNa(60)+" "+FNa(59):a$+=FNm(STR$(wb%),3,"0",TRUE):x%=h%!e%-LEN(a$)*h%!V%:PROCb(x%,0,a$,0):ENDPROC DEFPROCv(a$):LOCALx%,y%,N%:N%=LEN(a$)*h%!V%:x%=FNl(N%,h%!e%):y%=h%!k%-h%!S%:PROCb(x%,y%,a$,0):ENDPROC DEFPROCg(xb%):LOCALx%,a$:o%!Ka%+=xb%:a$=FNa(57)+" "+FNa(59):a$+=FNm(STR$(o%!Ka%),10," ",TRUE):PROCb(0,h%!k%-h%!S%,a$,0):IFo%!Ka%-o%!Pa%>=5000THEN o%!_%+=1:PROCh(o%!_%):o%!Pa%=o%!Ka%:o%!Qa%=0 ENDIF IFo%!Ka%>c%(1)THEN a$=FNa(58)+" "+FNa(57)+" ":a$+=FNa(59):a$+=FNm(STR$(o%!Ka%),10," ",TRUE):x%=h%!e%-LEN(a$)*h%!V%:PROCb(x%,h%!k%-h%!S%,a$,0) ENDIF ENDPROC DEFPROCD:LOCALF%,hb%,ib%,Va%:F%=na%:hb%=ra%:ib%=sa%:Va%=ta%:PROCu:PROCm:ENDPROC DEFPROCu:LOCALE%,K%,s%:f%!b%=50:f%!a%=550:f%!F%=0:f%!U%=0:f%!M%=3:f%!L%=f%!M%:f%!hb%=1:f%!ib%=f%!Ta%:f%!Va%=1:s%=(f%!Ta%*D%!e%)+((f%!Ta%-1)*f%!Sa%):f%!e%=s%:f%!k%=f%!Ua%*D%!k%:FORK%=1TOf%!Ta%:FORE%=1TOf%!Ua% b%(K%,E%)=((E%+1)/2)+(f%!F%*10):NEXTE%:NEXTK%:ENDPROC DEFPROCm:LOCALE%,K%,x%,y%,w%:w%=FNd(16):FORK%=f%!hb%TOf%!ib%:x%=f%!b%+((K%-1)*(D%!e%+f%!Sa%)):FORE%=f%!Va%TOf%!Ua%:y%=f%!a%+((E%-1)*D%!k%):IFb%(K%,E%)>0THEN b%(K%,E%)=((E%+1)/2)+(f%!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:w%!b%=x%:w%!a%=y%:w%!e%=D%!e%:w%!k%=D%!k%:PROCd(w%) ENDIF NEXTE%:NEXTK%:PROCc(w%):ENDPROC DEFPROCR(x%,y%,r%,c%):LOCALyb%:yb%=FNd(16):b%(r%,c%)+=1:PROCa(FNb(26),x%,y%):IFb%(r%,c%)=0THEN yb%!b%=x%:yb%!a%=y%:yb%!e%=D%!e%:yb%!k%=D%!k%:PROCd(yb%) ENDIF PROCc(yb%):ENDPROC DEFPROCt:LOCALw%,i%:w%=FNd(16):FORi%=1TO3:f%!a%-=D%!k%/3:PROCm:NEXTi%:w%!b%=f%!b%:w%!a%=f%!a%+f%!k%:w%!e%=f%!e%:w%!k%=D%!k%:PROCd(w%):PROCc(w%):ENDPROC DEFPROCQ:LOCALR%,Y%,F%,zb%,M%,i%,k$:M%=1:Ab%=24:R%=FNd(28):Y%=FNd(28):PROCd(f%):PROCd(m%):IFp%!v%THEN PROCd(p%):p%!v%=FALSE ENDIF IFd%!v%THEN PROCd(d%):d%!v%=FALSE ENDIF FORi%=1TO7:IFa%(i%)!v%THEN PROCd(a%(i%)):a%(i%)!v%=FALSE ENDIF NEXTi%:m%!b%=FNg(m%,h%):R%!b%=0-D%!e%:R%!a%=m%!a%:R%!L%=M%:Y%!b%=h%!e%:Y%!a%=m%!a%:Y%!L%=0-M%:o%!_%=0:PROCf(P%!Aa%):PROCh(o%!_%):PROCl(o%!La%):PROCa(FNb(1),m%!b%,m%!a%):F%=0:zb%=FALSE:REPEAT:R%!b%+=R%!L%:R%!Ab%=R%!b%+D%!e%:Y%!b%+=Y%!L%:F%+=1 IFF%MOD20=0THENzb%=FNk(zb%) IFF%>1000THENF%=0 IFzb%THENk$=FNb(21)ELSEk$=FNb(20) PROCa(k$,R%!b%,R%!a%):PROCa(k$,Y%!b%,Y%!a%):PROCe(2):WAIT:UNTILR%!Ab%>=m%!b%:FORi%=1TO10:PROCa(FNb(20),R%!b%,R%!a%):PROCa(FNb(20),Y%!b%,Y%!a%):PROCe(20):PROCa(FNb(21),R%!b%,R%!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(R%):PROCc(Y%):ENDPROC DEFFNw(f$):LOCALBb%,C%:C%=FND(f$)+256:Bb%=FNd(C%):!Bb%=C%:Bb%!4=0:Bb%!8=16:Bb%!12=16:SYSja%,256+10,Bb%,f$:SYSja%,256+17,Bb%:=Bb% DEFPROCb(x%,y%,a$,Cb%):LOCALi%,Db%:ma%=la%:Db%=h%!V%:FORi%=1TOLEN(a$):PROCa(STR$(ASC(MID$(a$,i%,1))),x%+((i%-1)*Db%),y%):IFCb%>0THENPROCe(Cb%) NEXTi%:ma%=ka%:ENDPROC DEFPROCa(u$,x%,y%):LOCALEb%:SYSja%,256+24,ma%,u$TO,,Eb%:SYSja%,512+34,ma%,Eb%,x%,y%,0:ENDPROC DEFPROCd(A%):GCOL0,0TINT0:RECTANGLEFILLA%!b%,A%!a%,A%!e%,A%!k%:ENDPROC DEFFNl(Fb%,h%):=(h%/2)-(Fb%/2) DEFPROCo(a$,Gb%):LOCALN%,y%:N%=LEN(a$)*h%!V%:y%=(h%!k%/2)-(h%!S%/2):PROCb(FNl(N%,h%!e%),y%,a$,Gb%):ENDPROC DEFFNg(Hb%,Ib%):=(Ib%!e%/2)-(Hb%!e%/2) DEFFNt(Hb%,Ib%):LOCALx%,y%:Hb%!b%=(Ib%!e%/2)-(Hb%!e%/2):Hb%!a%=(Ib%!k%/2)-(Hb%!k%/2):=Hb% DEFPROCf(a%):LOCALi%,Jb%:Jb%=h%!e%/P%!e%:FORi%=1TOJb%+1:PROCa(FNb(108),(i%-1)*P%!e%,a%):NEXTi%:ENDPROC DEFPROCk(A%):LOCALx%,y%,Kb%,Lb%,Mb%,Nb%,i%:Kb%=FNc(3,1):Lb%=FNc(3,2):Mb%=1:Nb%=3:FORi%=1TOA%!e%:x%=A%!b%+((i%-1)*Mb%):PROCa(FNb(113),x%,A%!a%):PROCa(FNb(113),x%,A%!a%+(A%!k%-(2*Nb%))):NEXTi%:x%=A%!b%+(A%!e%-Kb%):FORi%=1TOA%!k%-1 PROCa(FNb(114),A%!b%,A%!a%+((i%-1)*Mb%)):PROCa(FNb(114),x%,A%!a%+((i%-1)*Mb%)):NEXTi%:PROCa(FNb(111),A%!b%,A%!a%):PROCa(FNb(109),A%!b%,(A%!a%+A%!k%)-Lb%):PROCa(FNb(112),A%!b%+(A%!e%-Kb%),A%!a%):x%=(A%!b%+A%!e%)-Kb%:y%=(A%!a%+A%!k%)-Lb% PROCa(FNb(110),x%,y%):ENDPROC DEFFNs(f$,i$):LOCAL`%,Ob%,j$:`%=OPENIN(f$):INPUT#`%,j$:IFj$<>i$THENCLOSE#`%:ERROR255,"Bad Magic!" INPUT#`%,Ob%:CLOSE#`%:=Ob% DEFPROCj(f$,i$,RETURNi%(),RETURNf$()):LOCAL`%,i%,Ob%,j$:`%=OPENIN(f$):INPUT#`%,j$:IFj$<>i$THENCLOSE#`%:ERROR255,"Bad Magic!" INPUT#`%,Ob%:FORi%=1TOOb%:INPUT#`%,i%(i%),f$(i%):NEXTi%:CLOSE#`%:ENDPROC DEFFNa(Pb%):=FNu(Pb%,ba%,f%(),b$(),106) DEFFNb(Pb%):=FNu(Pb%,ca%,g%(),c$(),107) DEFFNe(Pb%):=FNu(Pb%,da%,h%(),d$(),108) DEFFNu(Pb%,Qb%,j%(),g$(),Rb%):LOCALi%,Sb%:Sb%=0:FORi%=1TOQb%:IFj%(i%)=Pb%THENSb%=i%:i%=Qb% NEXTi%:IFSb%=0THENERROR255,FNa(Rb%)+" "+STR$(Pb%) =FNo(g$(Sb%)) DEFPROCn:LOCALw%:w%=FNd(20):w%!0=4:w%!4=5:w%!8=11:w%!12=12:w%!16=-1:SYSFNe(5),w%,w%:h%!wa%=w%!0:h%!xa%=w%!4:h%!e%=(w%!8)+1<h%!ya%THENPROCn CASETb%OF WHEN1:Ub%=C%<>h%!wa% WHEN4:Ub%=C%>>h%!xa% OTHERWISE:ERROR255,FNa(103)+" "+STR$(Tb%) ENDCASE =Ub% DEFFNp(A%,Wb%):LOCALXb%,Yb%,Zb%,_b%:Zb%=FALSE:_b%=FALSE:IFA%!v%ANDWb%!v%THEN Xb%=Wb%!b%+Wb%!e%:Yb%=Wb%!a%+Wb%!k%:IFA%!b%>=Wb%!b%ANDA%!b%=Wb%!a%ANDA%!a%0THEN REPEAT:Ob%+=1:d$="Dump"+STR$(Ob%):UNTILFNq(o$+d$)=0ORLEN(d$)>10:IFLEN(d$)>10THENOb%=-1 ENDIF =Ob% DEFFNn(n%):LOCAL`b%:`b%=RND(100):=`b%<=n% DEFFNo(a$):LOCALi%,r$:FORi%=1TOLEN(a$):r$+=CHR$(ASC(MID$(a$,i%,1))EOR131):NEXTi%:=r$ DEFPROCe(n%):LOCALt%:t%=TIME+n%:REPEAT:UNTILTIME>=t%:ENDPROC DEFFNk(n%):=n%EOR1 DEFFNB(n%):LOCALc$,u%:u%=VAL(RIGHT$(STR$(n%),1)):c$=FNa(65):IFu%>=1ANDu%<=3THENc$=FNa(u%+61) =c$ DEFFNm(a$,ac%,t$,bc%):LOCALcc%,c$:cc%=ac%-LEN(a$):IFcc%<=0THEN c$=LEFT$(a$,ac%) ELSE:IFbc%THEN c$=STRING$(ac%,t$):RIGHT$(c$,LEN(a$))=a$ ELSE:c$=a$+STRING$(cc%,t$) ENDIF ENDIF =c$ DEFFNy(a$,ac%):LOCALc$:c$=STRING$(ac%," "):RIGHT$(c$,LEN(a$))=a$:=c$ DEFFNq(h$):LOCALSb%:SYS"XOS_File",17,h$TOSb%:=Sb% DEFFND(h$):LOCALC%:SYSFNe(3),5,h$TO,,,,C%:=C% DEFFNx(Tb%,h$):LOCALZ%,dc%,ec%,fc%:fc%=FALSE:CASETb%OF WHEN0:Z%=OPENUP(h$+"chkfile") WHEN1:Z%=OPENUP(h$) OTHERWISE:ERROR255,FNa(104)+" "+STR$(Tb%) ENDCASE IFZ%<>0THEN SYSFNe(4),254,Z%TOec%;dc%:IF(dc%AND1)THENCLOSE#Z%:ERROR255,FNa(105) IF((ec%AND(1<<7))<>0)THENfc%=TRUE CLOSE#Z% ENDIF =fc% DEFPROCy:LOCALgc%:hc%=0:ic%=0:SYSFNe(10),-1,-1TOjc%:SYSFNe(11)TOkc%;gc%:IFgc%AND1THENkc%=16384 PROCS(kc%):ENDPROC DEFPROCp:IFhc%THEN SYSFNe(10),hc%-32768,-1TOjc%:hc%=0:ic%=0 ENDIF ENDPROC DEFFNd(lc%):LOCALB%,C%:C%=(lc%+15)AND-4:B%=FNE(C%):IFB%ELSEERROR254,FNa(111) B%!0=&DEADDEAD:B%!4=lc%:!(B%-8+(B%!-4))=&DEADDEAD:=B%+8 DEFPROCc(RETURNB%):B%-=8:IFB%!0<>&DEADDEADTHENERROR254,FNa(112) IF!(B%-8+(B%!-4))<>&DEADDEADTHEN ERROR254,FNa(113) ENDIF ic%-=B%!-4:SYSFNe(12),3,hc%,B%:B%=0:ENDPROC DEFFNz(B%):LOCALw%:w%=B%-4:=w%!0 DEFFNi(B%,xb%):PROCs(B%,xb%):=B% DEFPROCs(B%,xb%):LOCALX%,C%:C%=FNz(B%):FORX%=0TOC%-4STEP4:B%!X%=xb%:NEXTX%:ENDPROC DEFFNf(B%):LOCALmc%,X%,C%:C%=FNz(B%):mc%=FNd(C%):FORX%=0TOC%-4STEP4:mc%!X%=B%!X%:NEXTX%:=mc% DEFPROCS(C%):IFhc%THENERROR254,FNa(115) C%=(C%+kc%-1)ANDNOT(kc%-1):hc%=HIMEM:SYSFNe(10),jc%+C%,-1TOjc%:C%=jc%+32768-hc%:IFC%<1THEN hc%=0:ERROR254,FNa(116) ELSE:SYSFNe(12),0,hc%,,C% ENDIF ic%=0:ENDPROC DEFPROCT(lc%):LOCALnc%:nc%=jc%:SYSFNe(10),jc%+lc%,-1TOjc%:lc%=jc%-nc%:IFlc%THENSYSFNe(12),5,hc%,,lc%TO,,,lc% ENDPROC DEFFNE(lc%):LOCALB%,gc%:SYSFNe(13),2,hc%,,lc%TO,,B%;gc%:IFgc%AND1THEN PROCT((lc%+kc%)ANDNOT(kc%-1)):SYSFNe(13),2,hc%,,lc%TO,,B%;gc%:IFgc%AND1THEN=0 ENDIF ic%+=B%!-4:=B%