REM Acorn Invaders REM Packed by Make v1.41 15/5/08 On 27 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%=TRUE:ga%=0:DIMa$(10),c%(10):DIMd%(10):PRINTFNa(8)+" "+FNa(2):PROCy:O%=FNg(FNd(12),0):O%!0=1:O%!4=127:PRINT:PRINTFNa(17)+" "+FNa(16):SYSFNe(1),,FNe(2)TOha%:PRINTFNa(9)+" "+FNa(4);:ia%=FNw(b$+"Gfx0"):PRINTFNa(14):PRINTFNa(9)+" "+FNa(5); ja%=FNw(b$+"Gfx1"):PRINTFNa(14):ka%=ia%:PRINT:PRINTFNa(9)+" "+FNa(6);:_%=OPENIN(b$+"Creds"):INPUT#_%,i$:IFi$<>"DERC"THEN CLOSE#_%:ERROR255,FNa(101):END ENDIF INPUT#_%,ga%:DIMe$(ga%),e%(ga%):FORi%=1TOga%:INPUT#_%,e%(i%),e$(i%):NEXTi%:CLOSE#_%:PRINTFNa(14):PRINT:PRINTFNa(7):p$=b$+"HiTable":IFFNq(p$)<>1THEN IFNOTFNx(0,b$)THEN fa%=FALSE:PRINTFNa(19)+" "+FNa(10)+" "+FNa(20) ELSE:PRINTFNa(19)+" "+FNa(11)+" "+FNa(20) ENDIF PROCz(fa%) ELSE:IFNOTFNx(1,p$)THEN fa%=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:I%=16:J%=20:v%=24:T%=28:la%=32:ma%=36:na%=40:oa%=44:pa%=48:qa%=52:ra%=56:sa%=60:ta%=64:ua%=16:va%=20:wa%=24:W%=28:U%=32:xa%=16:ya%=20:h%=FNd(36):Q%=FNd(24):M%=FNd(16) CLS:PROCo:h%!W%=FNc(8,1):h%!U%=FNc(8,2)+7:Q%!e%=FNc(6,1):Q%!k%=FNc(6,2):Q%!xa%=h%!k%-50:Q%!ya%=30:OSCLI"PlayVolume "+STR$(O%!4):OSCLI"PlayStart":WHILENOTFNA:CLS:PROCB:ENDWHILE:CLS:M%!e%=220:M%!k%=40:M%=FNt(M%,h%):M%!a%-=3:PROCk(M%):PROCp(FNa(31),10):IFO%!0=1THEN FORi%=O%!4TO1STEP-2:OSCLI"PlayVolume "+STR$(i%):PROCe(4):NEXTi%:OSCLI"PlayStop":OSCLI"PlayVolume 127" ENDIF PROCq:END DEFFNA:LOCALi%,G%,H%,q%,P%,d%,V%,za%,Aa%:LOCALo%,R%,Ba%,Ca%,Da%,X%,Ea%,Fa%,Ga%:LOCALx%,y%,K%,s$,a$:G%=FNg(FNd(16),0):H%=FNg(FNd(16),0):q%=FNg(FNd(16),0):d%=FNg(FNd(16),0):V%=FNg(FNd(16),0):R%=FNg(FNd(16),0):o%=FNg(FNd(16),0) G%!e%=FNc(100,1):G%!k%=FNc(40,2):G%!b%=FNh(G%,h%):G%!a%=800:H%!e%=FNc(150,1):H%!k%=FNc(40,2):H%!b%=FNh(H%,h%):H%!a%=G%!a%-H%!k%:q%!e%=720:q%!k%=500:q%!b%=FNh(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:o%!e%=FNc(30,1):o%!k%=FNc(15,2):V%!e%=FNc(20,1):V%!k%=FNc(20,2):V%!b%=(q%!b%+q%!e%/2)-150:V%!b%+=FNh(V%,d%):za%=FNf(V%):Aa%=FNf(V%)::Aa%!a%=d%!a%-40-Aa%!k%:za%!a%=Aa%!a%-40-za%!k% V%!a%=za%!a%-40-V%!k%:R%!e%=FNc(20,1):R%!k%=FNc(20,2):R%!b%=(q%!b%+q%!e%/2)-120:Ba%=FNf(R%):Ca%=FNf(R%):Da%=FNf(R%):Da%!b%=q%!b%:Ha%=FNf(Da%):Ea%=FNf(Da%):X%=FNf(R%):X%!b%=q%!b%:X%!b%+=(q%!e%/2)+10 Fa%=FNf(X%):Ga%=FNf(X%)::R%!a%=(q%!a%+q%!k%)-120:Ba%!a%=R%!a%-60:Ca%!a%=Ba%!a%-60:Ea%!a%=Ca%!a%-90:Ha%!a%=Ea%!a%-60:Da%!a%=Ha%!a%-60:X%!a%=Ca%!a%-90:Fa%!a%=X%!a%-60:Ga%!a%=Fa%!a%-60:CLS:PROCf(Q%!xa%):PROCf(Q%!ya%) 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):P%=LEN(a$)*h%!W%:y%=170:PROCb(FNm(P%,h%!e%),y%,a$,11):a$=FNa(33):P%=LEN(a$)*h%!W%:y%-=h%!U% PROCb(FNm(P%,h%!e%),y%,a$,11):WHILENOTINKEY(-99)ANDNOTINKEY(-17)ANDNOTINKEY(-82):y%=q%!a%+q%!k%:FORi%=1TOga%:a$=FNo(e$(i%)):x%=FNi(a$):CASEe%(i%)OF WHEN-1:y%-=h%!U% WHEN-2:y%-=(2*h%!U%) OTHERWISE:y%-=e%(i%) ENDCASE PROCb(x%,y%,a$,0):NEXTi%:K%=FNr:IFK%=1THEN=TRUE IFK%=2THEN=FALSE PROCd(q%):a$=FNa(57)+" "+FNa(34):x%=FNi(a$):y%=q%!a%+q%!k%-20:PROCb(x%,y%,a$,0):a$=FNa(35):y%-=h%!U%:x%=FNi(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),Aa%!b%,Aa%!a%):a$=FNa(37)+" "+FNa(40):PROCb(x%,Aa%!a%+12,a$,0):PROCa(FNb(22),za%!b%,za%!a%):a$=FNa(38)+" "+FNa(40):PROCb(x%,za%!a%+12,a$,0):PROCa(FNb(20),V%!b%,V%!a%):a$=FNa(39)+" "+FNa(40):PROCb(x%,V%!a%+12,a$,0) P%=o%!e%/h%!W%+2:s$=FNa(66):a$=s$+STRING$(P%," ")+FNa(67):x%=FNi(a$):y%=V%!a%-(3*h%!U%):PROCb(x%,y%,a$,0):o%!b%=x%+7+(LEN(s$)*h%!W%):o%!a%=y%:PROCa(FNb(1),o%!b%,o%!a%):K%=FNr:IFK%=1THEN=TRUE IFK%=2THEN=FALSE PROCd(q%):a$=FNa(41):x%=FNi(a$):y%=q%!a%+q%!k%-20:PROCb(x%,y%,a$,0):x%=R%!b%+R%!e%+10:PROCa(FNb(102),R%!b%,R%!a%):a$=FNa(42)+" "+FNa(43):PROCb(x%,R%!a%+12,a$,0):PROCa(FNb(103),Ba%!b%,Ba%!a%):a$=FNa(42)+" "+FNa(44):PROCb(x%,Ba%!a%+12,a$,0) PROCa(FNb(104),Ca%!b%,Ca%!a%):PROCb(x%,Ca%!a%+12,FNa(45),0):x%=Da%!b%+Da%!e%+10:PROCa(FNb(105),Ha%!b%,Ha%!a%):a$=FNa(46)+" "+FNa(49):PROCb(x%,Ha%!a%+12,a$,0):PROCa(FNb(117),Ea%!b%,Ea%!a%):PROCb(x%,Ea%!a%+12,FNa(76),0) PROCa(FNb(107),Da%!b%,Da%!a%):a$=FNa(48)+" "+FNa(49):PROCb(x%,Da%!a%+12,a$,0):x%=X%!b%+X%!e%+10:PROCa(FNb(106),X%!b%,X%!a%):a$=FNa(47)+" "+FNa(73):PROCb(x%,X%!a%+12,a$,0):PROCa(FNb(115),Fa%!b%,Fa%!a%):a$=FNa(47)+" "+FNa(77)+" ":a$+=FNa(74) PROCb(x%,Fa%!a%+12,a$,0):PROCa(FNb(116),Ga%!b%,Ga%!a%):a$=FNa(47)+" "+FNa(77)+" ":a$+=FNa(75):PROCb(x%,Ga%!a%+12,a$,0):K%=FNr:IFK%=1THEN=TRUE IFK%=2THEN=FALSE PROCd(q%):a$=FNa(50):IFfa%THENa$=FNa(51) x%=FNi(a$):y%=q%!a%+q%!k%-20:PROCb(x%,y%,a$,0):a$=FNa(58)+" "+FNa(52):x%=FNi(a$):y%-=h%!U%: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%=FNi(a$):PROCb(x%,y%,a$,0):y%-=2*h%!U% FORi%=1TO10:IFi%<10THEN a$=" "+STR$(i%)+". " ELSE:a$=" "+STR$(i%)+". " ENDIF s$=FNo(a$(i%)):a$+=FNn(s$,8," ",FALSE):a$+=" .... ":a$+=FNy(STR$(c%(i%)),10):a$+=" ... "+FNy(STR$(d%(i%)),3):x%=FNi(a$):PROCb(x%,y%-(i%*(h%!U%+5)),a$,0):NEXTi%:K%=FNr:IFK%=1THEN=TRUE IFK%=2THEN=FALSE PROCd(q%):ENDWHILE:ERROR255,FNa(102):=FALSE DEFFNr:LOCALt%,K%:t%=TIME+750:K%=FALSE:REPEAT:IFINKEY(-82)THENPROCr IFINKEY(-102)THENPROCs IFINKEY(-59)THENPROCi(2) IFINKEY(-60)THENPROCi(-2) UNTILTIME>=t%ORINKEY(-17)ORINKEY(-99):IFINKEY(-17)THENK%=1 IFINKEY(-99)THENK%=2 IFK%THEN PROCc(G%):PROCc(H%):PROCc(q%):PROCc(d%):PROCc(V%):PROCc(za%):PROCc(Aa%):PROCc(R%):PROCc(Ba%):PROCc(Ca%):PROCc(Da%):PROCc(X%):PROCc(Ha%):PROCc(Ea%):PROCc(Fa%):PROCc(Ga%):PROCc(o%) ENDIF =K% DEFFNi(a$):LOCALP%:P%=LEN(a$)*h%!W%:=q%!b%+FNm(P%,q%!e%) DEFPROCB:LOCALo%,p%,d%,f%,m%:LOCALD%:LOCALb%(),a%():LOCAL`%,Ia%,Ja%,Ka%:LOCALLa%,Ma%,Na%,Oa%:LOCALPa%,Qa%,Ra%:LOCALSa%,Ta%,Ua%,Va%,Wa%:LOCALXa%,P%,a$,x%,y%,i%,j%:LOCALYa%:o%=FNd(32):p%=FNd(40):d%=FNd(48):f%=FNd(68):D%=FNd(16):m%=FNg(FNd(48),0):DIMb%(10,6),a%(7) `%=0:Ia%=4:Ja%=8:Ka%=12:La%=16:Ma%=20:Na%=24:Oa%=28:Pa%=32:Za%=36:Qa%=40:Ra%=44:Sa%=ma%:Ta%=na%:Ua%=oa%:Va%=ra%:Wa%=sa%:o%!e%=FNc(30,1):o%!k%=FNc(15,2):o%!b%=FNh(o%,h%):o%!a%=50:o%!J%=6:o%!I%=o%!J% D%!e%=FNc(20,1):D%!k%=FNc(20,2):d%!e%=FNc(40,1):d%!k%=FNc(20,2):d%!a%=Q%!xa%-(10+d%!k%):d%!J%=5:d%!v%=FALSE:d%!na%=1:p%!e%=FNc(5,1):p%!k%=FNc(20,2):p%!v%=FALSE:p%!J%=10:m%!Ja%=1:m%!`%=3:m%!Ka%=FALSE:m%!Oa%=-1 f%!Sa%=FNc(20,1):f%!Ta%=10:f%!Ua%=6:f%!v%=TRUE:f%!Wa%=4:SYSFNe(6)TOf%!ta%:FORi%=1TO7:a%(i%)=FNd(48):PROCt(a%(i%),0):a%(i%)!e%=FNc(5,1):a%(i%)!k%=FNc(20,2):SYSFNe(6)TOa%(i%)!na%:SYSFNe(6)TOa%(i%)!oa%:NEXTi% PROCf(Q%!xa%):PROCf(Q%!ya%):PROCC(0,c%(1),m%!`%,m%!Ja%):PROCD:PROCa(FNb(1),o%!b%,o%!a%):Ya%=0:WHILEm%!`%>0:Xa%=FALSE:IFm%!La%=0THEN IFINKEY(-74)THENPROCE(o%!b%,o%!a%) IFINKEY(-98)THENPROCF:Xa%=TRUE IFINKEY(-67)THENPROCG:Xa%=TRUE IFINKEY(-17)THENPROCH IFINKEY(-36)THENPROCI ENDIF IFINKEY(-102)THENPROCs IFINKEY(-82)THENPROCr IFINKEY(-56)THENPROCJ IFINKEY(-59)THENPROCi(2) IFINKEY(-60)THENPROCi(-2) IFm%!La%=0THEN IFXa%THEN o%!b%+=o%!I%:PROCa(FNb(1),o%!b%,o%!a%) ENDIF ENDIF SYSFNe(6)TOYa%:IFm%!La%=0THEN PROCK:PROCL:PROCM:PROCN:PROCO ELSE:PROCP ENDIF WAIT:ENDWHILE:M%!e%=240:M%!k%=40:M%=FNt(M%,h%):M%!a%-=3:PROCd(M%):PROCk(M%):a$=FNa(49)+" "+FNa(53):PROCp(a$,11):PROCe(750):IFNOTm%!Ka%THEN IFm%!Ia%>=c%(10)THEN PROCQ(m%) ENDIF ENDIF PROCc(o%):PROCc(f%):PROCc(d%):PROCc(p%):PROCc(m%):PROCc(D%):FORi%=1TO7:PROCc(a%(i%)):NEXTi%:ENDPROC DEFPROCF:IFo%!b%<=0THEN o%!b%=0 ELSE:o%!I%=0-o%!J% ENDIF ENDPROC DEFPROCG:IFo%!b%>=h%!e%-o%!e%THEN o%!b%=h%!e%-o%!e% ELSE:o%!I%=0+o%!J% ENDIF ENDPROC DEFPROCE(x%,y%):IFNOTp%!v%THEN p%!v%=TRUE:p%!b%=x%+(o%!e%/2):p%!a%=y%+o%!k% ENDIF ENDPROC DEFPROCr: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%:m%!`%=0:m%!Ka%=TRUE:ENDPROC DEFPROCs:LOCAL_a%:_a%=0:REPEAT:UNTILNOTINKEY(-102):O%!_a%=FNk(O%!_a%):IFO%!_a%=1THENOSCLI"PlayStart"ELSEOSCLI"PlayPause" ENDPROC DEFPROCi(`a%):LOCAL_a%,ab%,bb%,L%:_a%=0:ab%=4:bb%=8:IFO%!_a%=1THEN SYSFNe(6)TOL%:IFL%-O%!bb%>=10THEN IFO%!ab%>=1ANDO%!ab%<=127THEN O%!ab%+=`a%:SYSFNe(6)TOO%!bb%:IFO%!ab%<1THENO%!ab%=1 IFO%!ab%>127THENO%!ab%=127 OSCLI"PlayVolume "+STR$(O%!ab%) ENDIF ENDIF ENDIF ENDPROC DEFPROCJ:LOCALa$:REPEATUNTILNOTINKEY(-56):a$=FNa(49)+" "+FNa(61):m%!La%=FNk(m%!La%):m%!Ma%=m%!La%:IFm%!La%=1THEN m%!Za%=Ya% ELSE:Ya%=m%!Za%:a$=STRING$(LEN(a$)," "):PROCl(a$) ENDIF ENDPROC DEFPROCI:REPEAT:UNTILNOTINKEY(-36):IFd%!v%THEN IFNOTd%!T%THEN d%!T%=TRUE:d%!la%=Ya%:PROCa(FNb(12),d%!b%,d%!a%) ENDIF ELSE:d%!v%=TRUE:d%!T%=FALSE:d%!ma%=0:IFFNl(50)THEN d%!I%=0-d%!J%:d%!b%=h%!e% ELSE:d%!I%=0+d%!J%:d%!b%=0-d%!e% ENDIF ENDIF ENDPROC DEFPROCK:LOCALcb%,db%:cb%=la%:IFp%!v%THEN p%!cb%=FALSE:IFp%!a%>=Q%!xa%-p%!k%THEN p%!v%=FALSE:p%!cb%=TRUE ENDIF IFp%!cb%THEN db%=FNf(p%):db%!a%-=2:PROCd(db%):PROCc(db%) ELSE:PROCa(FNb(5),p%!b%,p%!a%) ENDIF p%!a%+=p%!J% ENDIF ENDPROC DEFPROCL:LOCALeb%,fb%,gb%,L%,hb%,e$:eb%=la%:fb%=ma%:gb%=na%:IFNOTd%!v%THEN IFFNl(4)ANDFNl(5)THEN d%!v%=TRUE:d%!T%=FALSE:d%!fb%=0:IFFNl(50)THEN d%!I%=0-d%!J%:d%!b%=h%!e% ELSE:d%!I%=0+d%!J%:d%!b%=0-d%!e% ENDIF ENDIF ELSE:IFd%!b%<=0-d%!e%ANDSGN(d%!I%)=-1THEN d%!eb%=FALSE:d%!v%=FALSE:ENDPROC ENDIF IFd%!b%>h%!e%ANDSGN(d%!I%)=1THEN d%!eb%=FALSE:d%!v%=FALSE:ENDPROC ENDIF IFNOTd%!T%THEN IFFNp(p%,d%)THEN PROCd(p%):PROCa(FNb(12),d%!b%,d%!a%):d%!eb%=Ya%:d%!T%=TRUE:p%!v%=FALSE:PROCg(500) ENDIF ELSE:IFFNp(p%,d%)THEN PROCd(p%):p%!v%=FALSE ENDIF ENDIF IFNOTd%!T%THEN SYSFNe(6)TOL%:IFL%-d%!gb%>=40THEN d%!gb%=Ya%:d%!fb%=FNk(d%!fb%) ENDIF e$=FNb(10)+STR$(d%!fb%):PROCa(e$,d%!b%,d%!a%):d%!b%+=d%!I% ELSE:SYSFNe(6)TOL%:hb%=L%-d%!eb%:IFhb%>=300THEN d%!v%=FALSE:d%!fb%=1:PROCd(d%) ELSE:IFhb%>=250THEN PROCa(FNb(15),d%!b%,d%!a%) ELSE:IFhb%>=200THEN PROCa(FNb(14),d%!b%,d%!a%) ELSE:IFhb%>=100THEN PROCa(FNb(13),d%!b%,d%!a%) ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF ENDPROC DEFPROCM:LOCALib%,z%,E%,N%,jb%,kb%,lb%,Y%:LOCALF%,mb%,nb%,L%,ob%:F%=la%:mb%=pa%:nb%=qa%:ob%=ta%:SYSFNe(6)TOL%:IFL%-f%!ob%>=50THEN f%!ob%=Ya%:f%!F%=FNk(f%!F%) ENDIF ib%=f%!b%+f%!e%:Y%=0-((f%!mb%-1)*(D%!e%+f%!Sa%)):IFib%>=h%!e%THEN f%!I%=0-f%!J%:PROCu ENDIF IFf%!b%<=Y%THEN f%!I%=0+f%!J%:PROCu ENDIF Y%=f%!a%+((f%!Va%-1)*D%!k%):IFY%<=o%!a%+o%!k%THEN PROCR: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:N%=((p%!b%-f%!b%)DIVz%)+1:IFSGN(b%(N%,E%))=1THEN b%(N%,E%)=-5:PROCd(p%):p%!v%=FALSE:f%!T%+=1:CASEE%OF WHEN1,2:PROCg(50) WHEN3,4:PROCg(75) WHEN5,6:PROCg(100) ENDCASE ENDIF ENDIF ENDIF IFf%!T%>=f%!Ta%*f%!Ua%THEN m%!Ja%+=1:PROCd(f%):PROCf(Q%!ya%):PROCh(m%!`%):PROCm(m%!Ja%):PROCa(FNb(1),o%!b%,o%!a%):PROCv ENDIF jb%=TRUE:kb%=TRUE:FORE%=1TOf%!Ua%:IFb%(f%!nb%,E%)<>0THENjb%=FALSE IFb%(f%!mb%,E%)<>0THENkb%=FALSE NEXTE%:lb%=TRUE:FORN%=1TOf%!Ta%:IFb%(N%,f%!Va%)<>0THENlb%=FALSE NEXTN%:IFkb%THENf%!mb%+=1 IFjb%THEN f%!e%-=(D%!e%+f%!Sa%):f%!nb%-=1 ENDIF IFlb%THENf%!Va%+=1 f%!b%+=f%!I%:PROCn:ENDPROC DEFPROCN:LOCALF%,pb%,hb%,qb%,i%,j%,x%,y%:LOCALrb%,sb%,e$,l$,tb%,L%:F%=la%:pb%=ma%:hb%=na%:ub%=oa%:FORi%=1TO7:IFNOTa%(i%)!v%THEN rb%=RND(10):sb%=m%!Ja%+5:IFsb%>100THEN sb%=100:IFm%!Ja%MOD10=0THENf%!Wa%+=1 ENDIF IFFNl(sb%)ANDFNl(f%!Wa%)THEN IFb%(rb%,f%!Va%)>0THEN x%=f%!b%+(rb%-1)*(D%!e%+f%!Sa%):y%=f%!a%+((f%!Va%-1)*D%!k%)-D%!k%:tb%=(D%!e%/2)-(a%(i%)!e%/2):a%(i%)!b%=x%+tb%:a%(i%)!a%=y%:a%(i%)!v%=TRUE:a%(i%)!T%=FALSE:a%(i%)!pb%=1:a%(i%)!F%=0:qb%=4:IFFNl(25)THENa%(i%)!pb%=2:qb%=qb%/2 a%(i%)!J%=qb%:a%(i%)!I%=a%(i%)!J% ENDIF ENDIF ELSE:SYSFNe(6)TOL%:IFL%-a%(i%)!ub%>=40THEN a%(i%)!ub%=Ya%:a%(i%)!F%+=1 ENDIF IFa%(i%)!pb%=1ANDa%(i%)!F%>1THEN a%(i%)!F%=0 ENDIF IFa%(i%)!pb%=2ANDa%(i%)!F%>3THEN a%(i%)!F%=0 ENDIF l$=STR$(a%(i%)!F%):IFa%(i%)!pb%=2ANDa%(i%)!F%=3THENl$="1" e$=FNb(30)+STR$(a%(i%)!pb%)+l$:IFNOTa%(i%)!T%THEN a%(i%)!a%-=a%(i%)!I%: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%<=Q%!ya%+(Q%!k%+5)THEN a%(i%)!v%=FALSE:PROCd(a%(i%)) ENDIF IFFNp(a%(i%),o%)ANDa%(i%)!v%THEN FORj%=1TO3:PROCa(FNb(2)+STR$(j%),o%!b%,o%!a%):PROCe(20):WAIT:NEXTj%:PROCd(o%):IFp%!v%THEN PROCd(p%):p%!v%=FALSE ENDIF o%!b%=FNh(o%,h%):m%!`%-=1:PROCh(m%!`%):PROCd(a%(i%)):a%(i%)!v%=FALSE:PROCa(FNb(1),o%!b%,o%!a%) ENDIF IFFNp(p%,a%(i%))THEN IFa%(i%)!pb%=1THEN IFNOTa%(i%)!T%THEN a%(i%)!T%=TRUE:PROCg(5):e$=FNb(30)+"3":PROCa(e$,a%(i%)!b%,a%(i%)!a%):a%(i%)!hb%=Ya% ENDIF ENDIF PROCd(p%):p%!v%=FALSE ENDIF IFa%(i%)!T%THEN SYSFNe(6)TOL%:IFL%-a%(i%)!hb%>=40THEN PROCd(a%(i%)):a%(i%)!v%=FALSE ENDIF ENDIF ENDIF NEXTi%:ENDPROC DEFPROCP:LOCALa$,L%:SYSFNe(6)TOL%:IFL%-m%!Qa%>=50THEN m%!Ma%=FNk(m%!Ma%):m%!Qa%=Ya% ENDIF a$=FNa(49)+" "+FNa(61):IFm%!Ma%=0ORm%!La%=0THEN a$=STRING$(LEN(a$)," ") ENDIF PROCl(a$):ENDPROC DEFPROCO:LOCALa$,L%:IFm%!Oa%>=0THEN SYSFNe(6)TOL%:a$=FNa(66)+" "+FNa(72):IFL%-m%!Ra%>=50THEN m%!Ra%=Ya%:m%!Pa%=FNk(m%!Pa%):IFm%!Pa%=1THENm%!Oa%+=1 ENDIF IFm%!Pa%=0THEN a$=STRING$(LEN(a$)," ") ENDIF IFm%!Oa%>5THEN a$=STRING$(LEN(a$)," "):m%!Oa%=-1 ENDIF PROCl(a$) ENDIF ENDPROC DEFPROCz(vb%):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%:IFvb%THENPROCw ENDPROC DEFPROCA:LOCALi%,wb%:wb%=OPENIN".Resources.HiTable":FORi%=1TO10:INPUT#wb%,a$(i%),c%(i%):INPUT#wb%,d%(i%):NEXTi%:CLOSE#wb%:ENDPROC DEFPROCw:LOCALi%,wb%:wb%=OPENOUT".Resources.HiTable":FORi%=1TO10:PRINT#wb%,a$(i%),c%(i%):PRINT#wb%,d%(i%):NEXTi%:CLOSE#wb%:ENDPROC DEFPROCQ(m%):LOCALH%,G%,xb%,g%,i%,yb%,P%,x%,y%,a$:G%=FNd(16):H%=FNd(16):G%!e%=FNc(100,1):G%!k%=FNc(40,2):G%!b%=FNh(G%,h%):G%!a%=800:H%!e%=FNc(150,1):H%!k%=FNc(40,2):H%!b%=FNh(H%,h%):H%!a%=G%!a%-H%!k%:yb%=0:FORi%=10TO1STEP-1 IFm%!Ia%>=c%(i%)THENyb%=i% NEXTi%:FORi%=9TOyb%STEP-1:a$(i%+1)=a$(i%):c%(i%+1)=c%(i%):d%(i%+1)=d%(i%):NEXTi%:c%(yb%)=m%!Ia%:d%(yb%)=m%!Ja%:CLS:PROCf(Q%!xa%):PROCf(Q%!ya%):PROCa(FNb(100),G%!b%,G%!a%):PROCa(FNb(101),H%!b%,H%!a%):a$=FNa(54)+" "+STR$(m%!Ia%) a$+=" "+FNa(55)+" "+STR$(yb%)+FNB(yb%):P%=LEN(a$)*h%!W%:x%=FNm(P%,h%!e%):y%=H%!a%-170:PROCb(x%,y%,a$,0):PROCc(G%):PROCc(H%):M%!e%=165:M%!k%=40:M%=FNt(M%,h%):PROCk(M%):x%=M%!b%+20:y%=M%!a%+12:a$="":i%=1:xb%=FALSE OSCLI"FX 21,0":REPEAT:g%=GET:CASEg%OF WHEN13:xb%=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 UNTILxb%:IFa$=""ORa$=" "THENa$=FNa(56) a$(yb%)=FNo(a$):IFfa%THENPROCw ENDPROC DEFFNC(zb%):LOCALcb%:cb%=FALSE:IFzb%>=32ANDzb%<=126THENcb%=TRUE =cb% DEFPROCC(Ab%,Bb%,l%,r%):LOCALx%,a$:a$=FNa(57)+FNn(STR$(Ab%),10," ",TRUE):PROCb(0,h%!k%-h%!U%,a$,0):a$=FNa(58)+" "+FNa(57):a$+=" "+FNa(59)+FNn(STR$(Bb%),10," ",TRUE):x%=h%!e%-LEN(a$)*h%!W%:PROCb(x%,h%!k%-h%!U%,a$,0):PROCh(l%):PROCm(r%):ENDPROC DEFPROCh(Cb%):LOCALa$:PROCa(FNb(1),0,0):a$=" = "+STR$(Cb%):PROCb(o%!e%,0,a$,0):ENDPROC DEFPROCm(Cb%):LOCALx%,a$:a$=FNa(60)+" "+FNa(59):a$+=FNn(STR$(Cb%),3,"0",TRUE):x%=h%!e%-LEN(a$)*h%!W%:PROCb(x%,0,a$,0):ENDPROC DEFPROCl(a$):LOCALx%,y%,P%:P%=LEN(a$)*h%!W%:x%=FNm(P%,h%!e%):y%=h%!k%-h%!U%:PROCb(x%,y%,a$,0):ENDPROC DEFPROCg(Db%):LOCALx%,a$:m%!Ia%+=Db%:a$=FNa(57)+" "+FNa(59):a$+=FNn(STR$(m%!Ia%),10," ",TRUE):PROCb(0,h%!k%-h%!U%,a$,0):IFm%!Ia%-m%!Na%>=5000THEN m%!`%+=1:PROCh(m%!`%):m%!Na%=m%!Ia%:m%!Oa%=0 ENDIF IFm%!Ia%>c%(1)THEN a$=FNa(58)+" "+FNa(57)+" ":a$+=FNa(59):a$+=FNn(STR$(m%!Ia%),10," ",TRUE):x%=h%!e%-LEN(a$)*h%!W%:PROCb(x%,h%!k%-h%!U%,a$,0) ENDIF ENDPROC DEFPROCD:LOCALF%,mb%,nb%,Va%:F%=la%:mb%=pa%:nb%=qa%:Va%=ra%:PROCv:PROCn:ENDPROC DEFPROCv:LOCALE%,N%,s%:f%!b%=50:f%!a%=550:f%!F%=0:f%!T%=0:f%!J%=3:f%!I%=f%!J%:f%!mb%=1:f%!nb%=f%!Ta%:f%!Va%=1:s%=(f%!Ta%*D%!e%)+((f%!Ta%-1)*f%!Sa%):f%!e%=s%:f%!k%=f%!Ua%*D%!k%:FORN%=1TOf%!Ta%:FORE%=1TOf%!Ua% b%(N%,E%)=((E%+1)/2)+(f%!F%*10):NEXTE%:NEXTN%:ENDPROC DEFPROCn:LOCALE%,N%,x%,y%,w%:w%=FNd(16):FORN%=f%!mb%TOf%!nb%:x%=f%!b%+((N%-1)*(D%!e%+f%!Sa%)):FORE%=f%!Va%TOf%!Ua%:y%=f%!a%+((E%-1)*D%!k%):IFb%(N%,E%)>0THEN b%(N%,E%)=((E%+1)/2)+(f%!F%*10) ENDIF IFb%(N%,E%)<>0THEN CASESGN(b%(N%,E%))OF WHEN-1:PROCS(x%,y%,N%,E%) WHEN1:PROCa(FNb(27)+STR$(b%(N%,E%)),x%,y%) ENDCASE ELSE:w%!b%=x%:w%!a%=y%:w%!e%=D%!e%:w%!k%=D%!k%:PROCd(w%) ENDIF NEXTE%:NEXTN%:PROCc(w%):ENDPROC DEFPROCS(x%,y%,r%,c%):LOCALEb%:Eb%=FNd(16):b%(r%,c%)+=1:PROCa(FNb(26),x%,y%):IFb%(r%,c%)=0THEN Eb%!b%=x%:Eb%!a%=y%:Eb%!e%=D%!e%:Eb%!k%=D%!k%:PROCd(Eb%) ENDIF PROCc(Eb%):ENDPROC DEFPROCu:LOCALw%,i%:w%=FNd(16):FORi%=1TO3:f%!a%-=D%!k%/3:PROCn:NEXTi%:w%!b%=f%!b%:w%!a%=f%!a%+f%!k%:w%!e%=f%!e%:w%!k%=D%!k%:PROCd(w%):PROCc(w%):ENDPROC DEFPROCR:LOCALS%,Z%,F%,Fb%,J%,i%,k$:J%=1:Gb%=24:S%=FNd(28):Z%=FNd(28):PROCd(f%):PROCd(o%):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%:o%!b%=FNh(o%,h%):S%!b%=0-D%!e%:S%!a%=o%!a%:S%!I%=J%:Z%!b%=h%!e%:Z%!a%=o%!a%:Z%!I%=0-J%:m%!`%=0:PROCf(Q%!ya%):PROCh(m%!`%):PROCm(m%!Ja%):PROCa(FNb(1),o%!b%,o%!a%):F%=0:Fb%=FALSE:REPEAT:S%!b%+=S%!I%:S%!Gb%=S%!b%+D%!e%:Z%!b%+=Z%!I%:F%+=1 IFF%MOD20=0THENFb%=FNk(Fb%) IFF%>1000THENF%=0 IFFb%THENk$=FNb(21)ELSEk$=FNb(20) PROCa(k$,S%!b%,S%!a%):PROCa(k$,Z%!b%,Z%!a%):PROCe(2):WAIT:UNTILS%!Gb%>=o%!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%),o%!b%,o%!a%):PROCe(20):WAIT:NEXTi%:PROCe(20):PROCd(o%):PROCc(S%):PROCc(Z%):ENDPROC DEFFNw(f$):LOCALHb%,C%:C%=FND(f$)+256:Hb%=FNd(C%):!Hb%=C%:Hb%!4=0:Hb%!8=16:Hb%!12=16:SYSha%,256+10,Hb%,f$:SYSha%,256+17,Hb%:=Hb% DEFPROCb(x%,y%,a$,Ib%):LOCALi%,Jb%:ka%=ja%:Jb%=h%!W%:FORi%=1TOLEN(a$):PROCa(STR$(ASC(MID$(a$,i%,1))),x%+((i%-1)*Jb%),y%):IFIb%>0THENPROCe(Ib%) NEXTi%:ka%=ia%:ENDPROC DEFPROCa(u$,x%,y%):LOCALKb%:SYSha%,256+24,ka%,u$TO,,Kb%:SYSha%,512+34,ka%,Kb%,x%,y%,0:ENDPROC DEFPROCd(A%):GCOL0,0TINT0:RECTANGLEFILLA%!b%,A%!a%,A%!e%,A%!k%:ENDPROC DEFFNm(Lb%,h%):=(h%/2)-(Lb%/2) DEFPROCp(a$,bb%):LOCALP%,y%:P%=LEN(a$)*h%!W%:y%=(h%!k%/2)-(h%!U%/2):PROCb(FNm(P%,h%!e%),y%,a$,bb%):ENDPROC DEFFNh(Mb%,Nb%):=(Nb%!e%/2)-(Mb%!e%/2) DEFFNt(Mb%,Nb%):LOCALx%,y%:Mb%!b%=(Nb%!e%/2)-(Mb%!e%/2):Mb%!a%=(Nb%!k%/2)-(Mb%!k%/2):=Mb% DEFPROCf(a%):LOCALi%,Ob%:Ob%=h%!e%/Q%!e%:FORi%=1TOOb%+1:PROCa(FNb(108),(i%-1)*Q%!e%,a%):NEXTi%:ENDPROC DEFPROCk(A%):LOCALx%,y%,Pb%,Qb%,Rb%,Sb%,i%:Pb%=FNc(3,1):Qb%=FNc(3,2):Rb%=1:Sb%=3:FORi%=1TOA%!e%:x%=A%!b%+((i%-1)*Rb%):PROCa(FNb(113),x%,A%!a%):PROCa(FNb(113),x%,A%!a%+(A%!k%-(2*Sb%))):NEXTi%:x%=A%!b%+(A%!e%-Pb%):FORi%=1TOA%!k%-1 PROCa(FNb(114),A%!b%,A%!a%+((i%-1)*Rb%)):PROCa(FNb(114),x%,A%!a%+((i%-1)*Rb%)):NEXTi%:PROCa(FNb(111),A%!b%,A%!a%):PROCa(FNb(109),A%!b%,(A%!a%+A%!k%)-Qb%):PROCa(FNb(112),A%!b%+(A%!e%-Pb%),A%!a%):x%=(A%!b%+A%!e%)-Pb%:y%=(A%!a%+A%!k%)-Qb% PROCa(FNb(110),x%,y%):ENDPROC DEFFNs(f$,i$):LOCALTb%,Ub%,j$:Tb%=OPENIN(f$):INPUT#Tb%,j$:IFj$<>i$THENCLOSE#Tb%:ERROR255,"Bad Magic!" INPUT#Tb%,Ub%:CLOSE#Tb%:=Ub% DEFPROCj(f$,i$,RETURNi%(),RETURNf$()):LOCALTb%,i%,Ub%,j$:Tb%=OPENIN(f$):INPUT#Tb%,j$:IFj$<>i$THENCLOSE#Tb%:ERROR255,"Bad Magic!" INPUT#Tb%,Ub%:FORi%=1TOUb%:INPUT#Tb%,i%(i%),f$(i%):NEXTi%:CLOSE#Tb%:ENDPROC DEFFNa(Vb%):=FNu(Vb%,ba%,f%(),b$(),106) DEFFNb(Vb%):=FNu(Vb%,ca%,g%(),c$(),107) DEFFNe(Vb%):=FNu(Vb%,da%,h%(),d$(),108) DEFFNu(Vb%,Wb%,j%(),g$(),Xb%):LOCALi%,Yb%:Yb%=0:FORi%=1TOWb%:IFj%(i%)=Vb%THENYb%=i%:i%=Wb% NEXTi%:IFYb%=0THENERROR255,FNa(Xb%)+" "+STR$(Vb%) =FNo(g$(Yb%)) DEFPROCo:LOCALw%:w%=FNd(20):w%!0=4:w%!4=5:w%!8=11:w%!12=12:w%!16=-1:SYSFNe(5),w%,w%:h%!ua%=w%!0:h%!va%=w%!4:h%!e%=(w%!8)+1<h%!wa%THENPROCo CASEZb%OF WHEN1:_b%=C%<>h%!ua% WHEN4:_b%=C%>>h%!va% OTHERWISE:ERROR255,FNa(103)+" "+STR$(Zb%) ENDCASE =_b% DEFFNp(A%,ac%):LOCALbc%,cc%,dc%,ec%:dc%=FALSE:ec%=FALSE:IFA%!v%ANDac%!v%THEN bc%=ac%!b%+ac%!e%:cc%=ac%!a%+ac%!k%:IFA%!b%>=ac%!b%ANDA%!b%=ac%!a%ANDA%!a%0THEN REPEAT:Ub%+=1:d$="Dump"+STR$(Ub%):UNTILFNq(o$+d$)=0ORLEN(d$)>10:IFLEN(d$)>10THENUb%=-1 ENDIF =Ub% DEFFNl(n%):LOCALfc%:fc%=RND(100):=fc%<=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$ DEFFNn(a$,gc%,t$,hc%):LOCALic%,c$:ic%=gc%-LEN(a$):IFic%<=0THEN c$=LEFT$(a$,gc%) ELSE:IFhc%THEN c$=STRING$(gc%,t$):RIGHT$(c$,LEN(a$))=a$ ELSE:c$=a$+STRING$(ic%,t$) ENDIF ENDIF =c$ DEFFNy(a$,gc%):LOCALc$:c$=STRING$(gc%," "):RIGHT$(c$,LEN(a$))=a$:=c$ DEFFNq(h$):LOCALYb%:SYS"XOS_File",17,h$TOYb%:=Yb% DEFFND(h$):LOCALC%:SYSFNe(3),5,h$TO,,,,C%:=C% DEFFNx(Zb%,h$):LOCAL_%,jc%,kc%,lc%:lc%=FALSE:CASEZb%OF WHEN0:_%=OPENUP(h$+"chkfile") WHEN1:_%=OPENUP(h$) OTHERWISE:ERROR255,FNa(104)+" "+STR$(Zb%) ENDCASE IF_%<>0THEN SYSFNe(4),254,_%TOkc%;jc%:IF(jc%AND1)THENCLOSE#_%:ERROR255,FNa(105) IF((kc%AND(1<<7))<>0)THENlc%=TRUE CLOSE#_% ENDIF =lc% DEFPROCy:LOCALmc%:nc%=0:oc%=0:SYSFNe(10),-1,-1TOpc%:SYSFNe(11)TOqc%;mc%:IFmc%AND1THENqc%=16384 PROCT(qc%):ENDPROC DEFPROCq:IFnc%THEN SYSFNe(10),nc%-32768,-1TOpc%:nc%=0:oc%=0 ENDIF ENDPROC DEFFNd(rc%):LOCALB%,C%:C%=(rc%+15)AND-4:B%=FNE(C%):IFB%ELSEERROR254,FNa(111) B%!0=&DEADDEAD:B%!4=rc%:!(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 oc%-=B%!-4:SYSFNe(12),3,nc%,B%:B%=0:ENDPROC DEFFNz(B%):LOCALw%:w%=B%-4:=w%!0 DEFFNg(B%,Db%):PROCt(B%,Db%):=B% DEFPROCt(B%,Db%):LOCALY%,C%:C%=FNz(B%):FORY%=0TOC%-4STEP4:B%!Y%=Db%:NEXTY%:ENDPROC DEFFNf(B%):LOCALsc%,Y%,C%:C%=FNz(B%):sc%=FNd(C%):FORY%=0TOC%-4STEP4:sc%!Y%=B%!Y%:NEXTY%:=sc% DEFPROCT(C%):IFnc%THENERROR254,FNa(115) C%=(C%+qc%-1)ANDNOT(qc%-1):nc%=HIMEM:SYSFNe(10),pc%+C%,-1TOpc%:C%=pc%+32768-nc%:IFC%<1THEN nc%=0:ERROR254,FNa(116) ELSE:SYSFNe(12),0,nc%,,C% ENDIF oc%=0:ENDPROC DEFPROCU(rc%):LOCALtc%:tc%=pc%:SYSFNe(10),pc%+rc%,-1TOpc%:rc%=pc%-tc%:IFrc%THENSYSFNe(12),5,nc%,,rc%TO,,,rc% ENDPROC DEFFNE(rc%):LOCALB%,mc%:SYSFNe(13),2,nc%,,rc%TO,,B%;mc%:IFmc%AND1THEN PROCU((rc%+qc%)ANDNOT(qc%-1)):SYSFNe(13),2,nc%,,rc%TO,,B%;mc%:IFmc%AND1THEN=0 ENDIF oc%+=B%!-4:=B%