REM Acorn Invaders REM Packed by Make v1.41 15/5/08 On 04 Jul 2008 ONERRORPROCy: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):PROCz:N%=FNg(FNe(12),0):N%!0=1:N%!4=127:PRINT:PRINTFNa(17)+" "+FNa(16):SYSFNd(1),,FNd(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 PROCA(fa%) ELSE:IFNOTFNx(1,p$)THEN fa%=FALSE:PRINTFNa(18)+" "+FNa(10)+" "+FNa(20) ELSE:PRINTFNa(18)+" "+FNa(11)+" "+FNa(20) ENDIF PROCB ENDIF PRINTFNa(12):PROCe(150):b%=0:a%=4:e%=8:k%=12:I%=16:J%=20:w%=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%=FNe(36):Q%=FNe(24):L%=FNe(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$(N%!4):OSCLI"PlayStart":WHILENOTFNA:CLS:PROCC:ENDWHILE:CLS:L%!e%=220:L%!k%=40:L%=FNt(L%,h%):L%!a%-=3:PROCk(L%):PROCp(FNa(31),10):IFN%!0=1THEN FORi%=N%!4TO1STEP-2:OSCLI"PlayVolume "+STR$(i%):PROCe(4):NEXTi%:OSCLI"PlayStop":OSCLI"PlayVolume 127" ENDIF PROCq:END DEFFNA:LOCALi%,G%,H%,v%,O%,d%,V%,za%,Aa%:LOCALo%,R%,Ba%,Ca%,Da%,X%,Ea%,Fa%,Ga%:LOCALx%,y%,K%,s$,a$:G%=FNg(FNe(16),0):H%=FNg(FNe(16),0):v%=FNg(FNe(16),0):d%=FNg(FNe(16),0):V%=FNg(FNe(16),0):R%=FNg(FNe(16),0):o%=FNg(FNe(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%:v%!e%=720:v%!k%=500:v%!b%=FNh(v%,h%):v%!a%=200:d%!e%=FNc(40,1):d%!k%=FNc(20,2) d%!b%=(v%!b%+v%!e%/2)-150:d%!a%=(v%!a%+v%!k%)-125:o%!e%=FNc(30,1):o%!k%=FNc(15,2):V%!e%=FNc(20,1):V%!k%=FNc(20,2):V%!b%=(v%!b%+v%!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%=(v%!b%+v%!e%/2)-120:Ba%=FNf(R%):Ca%=FNf(R%):Da%=FNf(R%):Da%!b%=v%!b%:Ha%=FNf(Da%):Ea%=FNf(Da%):X%=FNf(R%):X%!b%=v%!b%:X%!b%+=(v%!e%/2)+10 Fa%=FNf(X%):Ga%=FNf(X%)::R%!a%=(v%!a%+v%!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):O%=LEN(a$)*h%!W%:y%=170:PROCb(FNm(O%,h%!e%),y%,a$,11):a$=FNa(33):O%=LEN(a$)*h%!W%:y%-=h%!U% PROCb(FNm(O%,h%!e%),y%,a$,11):WHILENOTINKEY(-99)ANDNOTINKEY(-17)ANDNOTINKEY(-82):y%=v%!a%+v%!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(v%):a$=FNa(57)+" "+FNa(34):x%=FNi(a$):y%=v%!a%+v%!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) O%=o%!e%/h%!W%+2:s$=FNa(66):a$=s$+STRING$(O%," ")+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(v%):a$=FNa(41):x%=FNi(a$):y%=v%!a%+v%!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(v%):a$=FNa(50):IFfa%THENa$=FNa(51) x%=FNi(a$):y%=v%!a%+v%!k%-20:PROCb(x%,y%,a$,0):a$=FNa(58)+" "+FNa(52):x%=FNi(a$):y%-=h%!U%:PROCb(x%,y%,a$,0):y%=(v%!a%+v%!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(v%):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(v%):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$):LOCALO%:O%=LEN(a$)*h%!W%:=v%!b%+FNm(O%,v%!e%) DEFPROCC:LOCALo%,p%,d%,f%,m%:LOCALE%:LOCALb%(),a%():LOCAL`%,Ia%,Ja%,Ka%:LOCALLa%,Ma%,Na%,Oa%:LOCALPa%,Qa%,Ra%:LOCALSa%,Ta%,Ua%,Va%,Wa%:LOCALXa%,O%,a$,x%,y%,i%,j%:o%=FNe(32):p%=FNe(40):d%=FNe(48):f%=FNe(68):E%=FNe(16):m%=FNg(FNe(44),0):DIMb%(10,6),a%(7) `%=0:Ia%=4:Ja%=8:Ka%=12:La%=16:Ma%=20:Na%=24:Oa%=28:Pa%=32:Qa%=36:Ra%=40: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% E%!e%=FNc(20,1):E%!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%!w%=FALSE:d%!na%=1:p%!e%=FNc(5,1):p%!k%=FNc(20,2):p%!w%=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%!w%=TRUE:f%!Wa%=4:SYSFNd(6)TOf%!ta%:FORi%=1TO7:a%(i%)=FNe(48):PROCt(a%(i%),0):a%(i%)!e%=FNc(5,1):a%(i%)!k%=FNc(20,2):SYSFNd(6)TOa%(i%)!na%:SYSFNd(6)TOa%(i%)!oa%:NEXTi% PROCf(Q%!xa%):PROCf(Q%!ya%):PROCD(0,c%(1),m%!`%,m%!Ja%):PROCE:PROCa(FNb(1),o%!b%,o%!a%):WHILEm%!`%>0:Xa%=FALSE:IFm%!La%=0THEN IFINKEY(-74)THENPROCF(o%!b%,o%!a%) IFINKEY(-98)THENPROCG:Xa%=TRUE IFINKEY(-67)THENPROCH:Xa%=TRUE IFINKEY(-17)THENPROCI IFINKEY(-36)THENPROCJ IFINKEY(-87)THENPROCK IFINKEY(-35)THENPROCu ENDIF IFINKEY(-102)THENPROCs IFINKEY(-82)THENPROCr IFINKEY(-56)THENPROCL 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 IFm%!La%=0THEN PROCM:PROCN:PROCO:PROCP:PROCQ ELSE:PROCR ENDIF WAIT:ENDWHILE:L%!e%=240:L%!k%=40:L%=FNt(L%,h%):L%!a%-=3:PROCd(L%):PROCk(L%):a$=FNa(49)+" "+FNa(53):PROCp(a$,11):PROCe(750):IFNOTm%!Ka%THEN IFm%!Ia%>=c%(10)THEN PROCS(m%) ENDIF ENDIF PROCc(o%):PROCc(f%):PROCc(d%):PROCc(p%):PROCc(m%):PROCc(E%):FORi%=1TO7:PROCc(a%(i%)):NEXTi%:ENDPROC DEFPROCG:IFo%!b%<=0THEN o%!b%=0 ELSE:o%!I%=0-o%!J% ENDIF ENDPROC DEFPROCH:IFo%!b%>=h%!e%-o%!e%THEN o%!b%=h%!e%-o%!e% ELSE:o%!I%=0+o%!J% ENDIF ENDPROC DEFPROCF(x%,y%):IFNOTp%!w%THEN p%!w%=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 DEFPROCI:LOCALi%:FORi%=1TO7:a%(i%)!w%=FALSE:NEXTi%:m%!`%=0:m%!Ka%=TRUE:ENDPROC DEFPROCs:LOCALYa%:Ya%=0:REPEAT:UNTILNOTINKEY(-102):N%!Ya%=FNk(N%!Ya%):IFN%!Ya%=1THENOSCLI"PlayStart"ELSEOSCLI"PlayPause" ENDPROC DEFPROCi(Za%):LOCALYa%,_a%,`a%,B%:Ya%=0:_a%=4:`a%=8:IFN%!Ya%=1THEN SYSFNd(6)TOB%:IFB%-N%!`a%>=10THEN IFN%!_a%>=1ANDN%!_a%<=127THEN N%!_a%+=Za%:N%!`a%=B%:IFN%!_a%<1THENN%!_a%=1 IFN%!_a%>127THENN%!_a%=127 OSCLI"PlayVolume "+STR$(N%!_a%) ENDIF ENDIF ENDIF ENDPROC DEFPROCL:LOCALa$:REPEATUNTILNOTINKEY(-56):a$=FNa(49)+" "+FNa(61):m%!La%=FNk(m%!La%):m%!Ma%=m%!La%:IFm%!La%=0THEN a$=STRING$(LEN(a$)," "):PROCl(a$) ENDIF ENDPROC DEFPROCJ:REPEAT:UNTILNOTINKEY(-36):IFd%!w%THEN IFNOTd%!T%THEN d%!T%=TRUE:SYSFNd(6)TOd%!la%:PROCa(FNb(12),d%!b%,d%!a%) ENDIF ELSE:d%!w%=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:REPEAT:UNTILNOTINKEY(-87):m%!Oa%=0:ENDPROC DEFPROCM:LOCALab%,bb%:ab%=la%:IFp%!w%THEN p%!ab%=FALSE:IFp%!a%>=Q%!xa%-p%!k%THEN p%!w%=FALSE:p%!ab%=TRUE ENDIF IFp%!ab%THEN bb%=FNf(p%):bb%!a%-=2:PROCd(bb%):PROCc(bb%) ELSE:PROCa(FNb(5),p%!b%,p%!a%) ENDIF p%!a%+=p%!J% ENDIF ENDPROC DEFPROCN:LOCALcb%,db%,eb%,B%,fb%,e$:cb%=la%:db%=ma%:eb%=na%:IFNOTd%!w%THEN IFFNl(4)ANDFNl(5)THEN d%!w%=TRUE:d%!T%=FALSE:d%!db%=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%!cb%=FALSE:d%!w%=FALSE:ENDPROC ENDIF IFd%!b%>h%!e%ANDSGN(d%!I%)=1THEN d%!cb%=FALSE:d%!w%=FALSE:ENDPROC ENDIF IFNOTd%!T%THEN IFFNp(p%,d%)THEN PROCd(p%):PROCa(FNb(12),d%!b%,d%!a%):SYSFNd(6)TOd%!cb%:d%!T%=TRUE:p%!w%=FALSE:PROCg(500) ENDIF ELSE:IFFNp(p%,d%)THEN PROCd(p%):p%!w%=FALSE ENDIF ENDIF IFNOTd%!T%THEN SYSFNd(6)TOB%:IFB%-d%!eb%>=40THEN d%!eb%=B%:d%!db%=FNk(d%!db%) ENDIF e$=FNb(10)+STR$(d%!db%):PROCa(e$,d%!b%,d%!a%):d%!b%+=d%!I% ELSE:SYSFNd(6)TOB%:fb%=B%-d%!cb%:IFfb%>=300THEN d%!w%=FALSE:d%!db%=1:PROCd(d%) ELSE:IFfb%>=250THEN PROCa(FNb(15),d%!b%,d%!a%) ELSE:IFfb%>=200THEN PROCa(FNb(14),d%!b%,d%!a%) ELSE:IFfb%>=100THEN PROCa(FNb(13),d%!b%,d%!a%) ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF ENDPROC DEFPROCO:LOCALgb%,z%,F%,M%,hb%,ib%,jb%,Y%:LOCALP%,kb%,lb%,B%,mb%:P%=la%:kb%=pa%:lb%=qa%:mb%=ta%:SYSFNd(6)TOB%:IFB%-f%!mb%>=50THEN f%!mb%=B%:f%!P%=FNk(f%!P%) ENDIF gb%=f%!b%+f%!e%:Y%=0-((f%!kb%-1)*(E%!e%+f%!Sa%)):IFgb%>=h%!e%THEN f%!I%=0-f%!J%:PROCv ENDIF IFf%!b%<=Y%THEN f%!I%=0+f%!J%:PROCv ENDIF Y%=f%!a%+((f%!Va%-1)*E%!k%):IFY%<=o%!a%+o%!k%THEN PROCu:ENDPROC ENDIF IFFNp(p%,f%)THEN z%=E%!e%+f%!Sa%:IF(p%!b%-f%!b%)MODz%<=E%!e%THEN F%=((p%!a%-f%!a%)DIVE%!k%)+1:M%=((p%!b%-f%!b%)DIVz%)+1:IFSGN(b%(M%,F%))=1THEN b%(M%,F%)=-5:PROCd(p%):p%!w%=FALSE:f%!T%+=1:CASEF%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%):PROCw ENDIF hb%=TRUE:ib%=TRUE:FORF%=1TOf%!Ua%:IFb%(f%!lb%,F%)<>0THENhb%=FALSE IFb%(f%!kb%,F%)<>0THENib%=FALSE NEXTF%:jb%=TRUE:FORM%=1TOf%!Ta%:IFb%(M%,f%!Va%)<>0THENjb%=FALSE NEXTM%:IFib%THENf%!kb%+=1 IFhb%THEN f%!e%-=(E%!e%+f%!Sa%):f%!lb%-=1 ENDIF IFjb%THENf%!Va%+=1 f%!b%+=f%!I%:PROCn:ENDPROC DEFPROCP:LOCALP%,nb%,fb%,ob%,i%,j%,x%,y%:LOCALpb%,qb%,e$,l$,rb%,B%:P%=la%:nb%=ma%:fb%=na%:sb%=oa%:FORi%=1TO7:IFNOTa%(i%)!w%THEN pb%=RND(10):qb%=m%!Ja%+5:IFqb%>100THEN qb%=100:IFm%!Ja%MOD10=0THENf%!Wa%+=1 ENDIF IFFNl(qb%)ANDFNl(f%!Wa%)THEN IFb%(pb%,f%!Va%)>0THEN x%=f%!b%+(pb%-1)*(E%!e%+f%!Sa%):y%=f%!a%+((f%!Va%-1)*E%!k%)-E%!k%:rb%=(E%!e%/2)-(a%(i%)!e%/2):a%(i%)!b%=x%+rb%:a%(i%)!a%=y%:a%(i%)!w%=TRUE:a%(i%)!T%=FALSE:a%(i%)!nb%=1:a%(i%)!P%=0:ob%=4:IFFNl(25)THENa%(i%)!nb%=2:ob%=ob%/2 a%(i%)!J%=ob%:a%(i%)!I%=a%(i%)!J% ENDIF ENDIF ELSE:SYSFNd(6)TOB%:IFB%-a%(i%)!sb%>=40THEN a%(i%)!sb%=B%:a%(i%)!P%+=1 ENDIF IFa%(i%)!nb%=1ANDa%(i%)!P%>1THEN a%(i%)!P%=0 ENDIF IFa%(i%)!nb%=2ANDa%(i%)!P%>3THEN a%(i%)!P%=0 ENDIF l$=STR$(a%(i%)!P%):IFa%(i%)!nb%=2ANDa%(i%)!P%=3THENl$="1" e$=FNb(30)+STR$(a%(i%)!nb%)+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%)!w%=FALSE:PROCd(a%(i%)) ENDIF IFFNp(a%(i%),o%)ANDa%(i%)!w%THEN FORj%=1TO3:PROCa(FNb(2)+STR$(j%),o%!b%,o%!a%):PROCe(20):WAIT:NEXTj%:PROCd(o%):IFp%!w%THEN PROCd(p%):p%!w%=FALSE ENDIF o%!b%=FNh(o%,h%):m%!`%-=1:PROCh(m%!`%):PROCd(a%(i%)):a%(i%)!w%=FALSE:PROCa(FNb(1),o%!b%,o%!a%) ENDIF IFFNp(p%,a%(i%))THEN IFa%(i%)!nb%=1THEN IFNOTa%(i%)!T%THEN a%(i%)!T%=TRUE:PROCg(5):e$=FNb(30)+"3":PROCa(e$,a%(i%)!b%,a%(i%)!a%):SYSFNd(6)TOa%(i%)!fb% ENDIF ENDIF PROCd(p%):p%!w%=FALSE ENDIF IFa%(i%)!T%THEN SYSFNd(6)TOB%:IFB%-a%(i%)!fb%>=40THEN PROCd(a%(i%)):a%(i%)!w%=FALSE ENDIF ENDIF ENDIF NEXTi%:ENDPROC DEFPROCR:LOCALa$,B%:SYSFNd(6)TOB%:IFB%-m%!Qa%>=50THEN m%!Ma%=FNk(m%!Ma%):m%!Qa%=B% ENDIF a$=FNa(49)+" "+FNa(61):IFm%!Ma%=0ORm%!La%=0THEN a$=STRING$(LEN(a$)," ") ENDIF PROCl(a$):ENDPROC DEFPROCQ:LOCALa$,B%:IFm%!Oa%>=0THEN SYSFNd(6)TOB%:a$=FNa(66)+" "+FNa(72):IFB%-m%!Ra%>=50THEN m%!Ra%=B%: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 DEFPROCA(tb%):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%:IFtb%THENPROCx ENDPROC DEFPROCB:LOCALi%,ub%:ub%=OPENIN".Resources.HiTable":FORi%=1TO10:INPUT#ub%,a$(i%),c%(i%):INPUT#ub%,d%(i%):NEXTi%:CLOSE#ub%:ENDPROC DEFPROCx:LOCALi%,ub%:ub%=OPENOUT".Resources.HiTable":FORi%=1TO10:PRINT#ub%,a$(i%),c%(i%):PRINT#ub%,d%(i%):NEXTi%:CLOSE#ub%:ENDPROC DEFPROCS(m%):LOCALH%,G%,vb%,g%,i%,wb%,O%,x%,y%,a$:G%=FNe(16):H%=FNe(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%:wb%=0:FORi%=10TO1STEP-1 IFm%!Ia%>=c%(i%)THENwb%=i% NEXTi%:FORi%=9TOwb%STEP-1:a$(i%+1)=a$(i%):c%(i%+1)=c%(i%):d%(i%+1)=d%(i%):NEXTi%:c%(wb%)=m%!Ia%:d%(wb%)=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$(wb%)+FNB(wb%):O%=LEN(a$)*h%!W%:x%=FNm(O%,h%!e%):y%=H%!a%-170:PROCb(x%,y%,a$,0):PROCc(G%):PROCc(H%):L%!e%=165:L%!k%=40:L%=FNt(L%,h%):PROCk(L%):x%=L%!b%+20:y%=L%!a%+12:a$="":i%=1:vb%=FALSE OSCLI"FX 21,0":REPEAT:g%=GET:CASEg%OF WHEN13:vb%=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 UNTILvb%:IFa$=""ORa$=" "THENa$=FNa(56) a$(wb%)=FNo(a$):IFfa%THENPROCx ENDPROC DEFFNC(xb%):LOCALab%:ab%=FALSE:IFxb%>=32ANDxb%<=126THENab%=TRUE =ab% DEFPROCD(yb%,zb%,l%,r%):LOCALx%,a$:a$=FNa(57)+FNn(STR$(yb%),10," ",TRUE):PROCb(0,h%!k%-h%!U%,a$,0):a$=FNa(58)+" "+FNa(57):a$+=" "+FNa(59)+FNn(STR$(zb%),10," ",TRUE):x%=h%!e%-LEN(a$)*h%!W%:PROCb(x%,h%!k%-h%!U%,a$,0):PROCh(l%):PROCm(r%):ENDPROC DEFPROCh(Ab%):LOCALa$:PROCa(FNb(1),0,0):a$=" = "+STR$(Ab%):PROCb(o%!e%,0,a$,0):ENDPROC DEFPROCm(Ab%):LOCALx%,a$:a$=FNa(60)+" "+FNa(59):a$+=FNn(STR$(Ab%),3,"0",TRUE):x%=h%!e%-LEN(a$)*h%!W%:PROCb(x%,0,a$,0):ENDPROC DEFPROCl(a$):LOCALx%,y%,O%:O%=LEN(a$)*h%!W%:x%=FNm(O%,h%!e%):y%=h%!k%-h%!U%:PROCb(x%,y%,a$,0):ENDPROC DEFPROCg(Bb%):LOCALx%,a$:m%!Ia%+=Bb%: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 DEFPROCE:LOCALP%,kb%,lb%,Va%:P%=la%:kb%=pa%:lb%=qa%:Va%=ra%:PROCw:PROCn:ENDPROC DEFPROCw:LOCALF%,M%,s%:f%!b%=50:f%!a%=550:f%!P%=0:f%!T%=0:f%!J%=3:f%!I%=f%!J%:f%!kb%=1:f%!lb%=f%!Ta%:f%!Va%=1:s%=(f%!Ta%*E%!e%)+((f%!Ta%-1)*f%!Sa%):f%!e%=s%:f%!k%=f%!Ua%*E%!k%:FORM%=1TOf%!Ta%:FORF%=1TOf%!Ua% b%(M%,F%)=((F%+1)/2)+(f%!P%*10):NEXTF%:NEXTM%:ENDPROC DEFPROCn:LOCALF%,M%,x%,y%,q%:q%=FNe(16):FORM%=f%!kb%TOf%!lb%:x%=f%!b%+((M%-1)*(E%!e%+f%!Sa%)):FORF%=f%!Va%TOf%!Ua%:y%=f%!a%+((F%-1)*E%!k%):IFb%(M%,F%)>0THEN b%(M%,F%)=((F%+1)/2)+(f%!P%*10) ENDIF IFb%(M%,F%)<>0THEN CASESGN(b%(M%,F%))OF WHEN-1:PROCT(x%,y%,M%,F%) WHEN1:PROCa(FNb(27)+STR$(b%(M%,F%)),x%,y%) ENDCASE ELSE:q%!b%=x%:q%!a%=y%:q%!e%=E%!e%:q%!k%=E%!k%:PROCd(q%) ENDIF NEXTF%:NEXTM%:PROCc(q%):ENDPROC DEFPROCT(x%,y%,r%,c%):LOCALq%:b%(r%,c%)+=1:PROCa(FNb(26),x%,y%):IFb%(r%,c%)=0THEN q%=FNe(16):q%!b%=x%:q%!a%=y%:q%!e%=E%!e%:q%!k%=E%!k%:PROCd(q%):PROCc(q%) ENDIF ENDPROC DEFPROCv:LOCALq%,i%:q%=FNe(16):FORi%=1TO3:f%!a%-=E%!k%/3:PROCn:NEXTi%:q%!b%=f%!b%:q%!a%=f%!a%+f%!k%:q%!e%=f%!e%:q%!k%=E%!k%:PROCd(q%):PROCc(q%):ENDPROC DEFPROCu:LOCALS%,Z%,B%,sb%,Cb%,J%,i%,k$:J%=1:Db%=24:S%=FNe(28):Z%=FNe(28):PROCd(f%):PROCd(o%):IFp%!w%THEN PROCd(p%):p%!w%=FALSE ENDIF IFd%!w%THEN PROCd(d%):d%!w%=FALSE ENDIF FORi%=1TO7:IFa%(i%)!w%THEN PROCd(a%(i%)):a%(i%)!w%=FALSE ENDIF NEXTi%:o%!b%=FNh(o%,h%):S%!b%=0-E%!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%):P%=0:Cb%=FALSE:REPEAT:S%!b%+=S%!I%:S%!Db%=S%!b%+E%!e%:Z%!b%+=Z%!I% SYSFNd(6)TOB%:IFB%-sb%>=50THENCb%=FNk(Cb%):sb%=B% IFCb%THENk$=FNb(21)ELSEk$=FNb(20) PROCa(k$,S%!b%,S%!a%):PROCa(k$,Z%!b%,Z%!a%):PROCe(2):WAIT:UNTILS%!Db%>=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$):LOCALEb%,D%:D%=FND(f$)+256:Eb%=FNe(D%):!Eb%=D%:Eb%!4=0:Eb%!8=16:Eb%!12=16:SYSha%,256+10,Eb%,f$:SYSha%,256+17,Eb%:=Eb% DEFPROCb(x%,y%,a$,Fb%):LOCALi%,Gb%:ka%=ja%:Gb%=h%!W%:FORi%=1TOLEN(a$):PROCa(STR$(ASC(MID$(a$,i%,1))),x%+((i%-1)*Gb%),y%):IFFb%>0THENPROCe(Fb%) NEXTi%:ka%=ia%:ENDPROC DEFPROCa(u$,x%,y%):LOCALHb%:SYSha%,256+24,ka%,u$TO,,Hb%:SYSha%,512+34,ka%,Hb%,x%,y%,0:ENDPROC DEFPROCd(A%):GCOL0,0TINT0:RECTANGLEFILLA%!b%,A%!a%,A%!e%,A%!k%:ENDPROC DEFFNm(Ib%,h%):=(h%/2)-(Ib%/2) DEFPROCp(a$,`a%):LOCALO%,y%:O%=LEN(a$)*h%!W%:y%=(h%!k%/2)-(h%!U%/2):PROCb(FNm(O%,h%!e%),y%,a$,`a%):ENDPROC DEFFNh(Jb%,Kb%):=(Kb%!e%/2)-(Jb%!e%/2) DEFFNt(Jb%,Kb%):LOCALx%,y%:Jb%!b%=(Kb%!e%/2)-(Jb%!e%/2):Jb%!a%=(Kb%!k%/2)-(Jb%!k%/2):=Jb% DEFPROCf(a%):LOCALi%,Lb%:Lb%=h%!e%/Q%!e%:FORi%=1TOLb%+1:PROCa(FNb(108),(i%-1)*Q%!e%,a%):NEXTi%:ENDPROC DEFPROCk(A%):LOCALx%,y%,Mb%,Nb%,Ob%,Pb%,i%:Mb%=FNc(3,1):Nb%=FNc(3,2):Ob%=1:Pb%=3:FORi%=1TOA%!e%:x%=A%!b%+((i%-1)*Ob%):PROCa(FNb(113),x%,A%!a%):PROCa(FNb(113),x%,A%!a%+(A%!k%-(2*Pb%))):NEXTi%:x%=A%!b%+(A%!e%-Mb%):FORi%=1TOA%!k%-1 PROCa(FNb(114),A%!b%,A%!a%+((i%-1)*Ob%)):PROCa(FNb(114),x%,A%!a%+((i%-1)*Ob%)):NEXTi%:PROCa(FNb(111),A%!b%,A%!a%):PROCa(FNb(109),A%!b%,(A%!a%+A%!k%)-Nb%):PROCa(FNb(112),A%!b%+(A%!e%-Mb%),A%!a%):x%=(A%!b%+A%!e%)-Mb%:y%=(A%!a%+A%!k%)-Nb% PROCa(FNb(110),x%,y%):ENDPROC DEFFNs(f$,i$):LOCALQb%,Rb%,j$:Qb%=OPENIN(f$):INPUT#Qb%,j$:IFj$<>i$THENCLOSE#Qb%:ERROR255,"Bad Magic!" INPUT#Qb%,Rb%:CLOSE#Qb%:=Rb% DEFPROCj(f$,i$,RETURNi%(),RETURNf$()):LOCALQb%,i%,Rb%,j$:Qb%=OPENIN(f$):INPUT#Qb%,j$:IFj$<>i$THENCLOSE#Qb%:ERROR255,"Bad Magic!" INPUT#Qb%,Rb%:FORi%=1TORb%:INPUT#Qb%,i%(i%),f$(i%):NEXTi%:CLOSE#Qb%:ENDPROC DEFFNa(Sb%):=FNu(Sb%,ba%,f%(),b$(),106) DEFFNb(Sb%):=FNu(Sb%,ca%,g%(),c$(),107) DEFFNd(Sb%):=FNu(Sb%,da%,h%(),d$(),108) DEFFNu(Sb%,Tb%,j%(),g$(),Ub%):LOCALi%,Vb%:Vb%=0:FORi%=1TOTb%:IFj%(i%)=Sb%THENVb%=i%:i%=Tb% NEXTi%:IFVb%=0THENERROR255,FNa(Ub%)+" "+STR$(Sb%) =FNo(g$(Vb%)) DEFPROCo:LOCALq%:q%=FNe(20):q%!0=4:q%!4=5:q%!8=11:q%!12=12:q%!16=-1:SYSFNd(5),q%,q%:h%!ua%=q%!0:h%!va%=q%!4:h%!e%=(q%!8)+1<h%!wa%THENPROCo CASEWb%OF WHEN1:Xb%=D%<>h%!ua% WHEN4:Xb%=D%>>h%!va% OTHERWISE:ERROR255,FNa(103)+" "+STR$(Wb%) ENDCASE =Xb% DEFFNp(A%,Zb%):LOCAL_b%,`b%,ac%,bc%:ac%=FALSE:bc%=FALSE:IFA%!w%ANDZb%!w%THEN _b%=Zb%!b%+Zb%!e%:`b%=Zb%!a%+Zb%!k%:IFA%!b%>=Zb%!b%ANDA%!b%<_b%THENac%=TRUE IFA%!a%>=Zb%!a%ANDA%!a%<`b%THENbc%=TRUE ENDIF =ac%ANDbc% DEFPROCy:LOCALm$:ONERROROFF m$=" Panic!!!":CASEERROF WHEN17:m$="Program Terminated." WHEN254:m$="ASH"+m$ WHEN255:m$="Game"+m$ OTHERWISE:m$="System"+m$ ENDCASE PRINTm$:PRINTSTRING$(LEN(m$),"="):PRINT:REPORT:PRINT" at line : ";ERL:OSCLI"PlayStop":PROCq:ENDPROC DEFFNj(v$,q$):LOCALg$,K%,Vb%:Vb%=FALSE:g$=STRING$(10," "):RIGHT$(g$,3)=" : ":LEFT$(g$,LEN(q$))=q$:K%=FNq(v$):IFK%=1THEN g$+="OK.":Vb%=TRUE ELSE:g$+="Missing!!" ENDIF PRINTg$:=Vb% DEFFNv(Rb%):LOCALd$,o$:o$=".Screens.":d$="Dump"+STR$(Rb%):IFFNq(o$+d$)<>0THEN REPEAT:Rb%+=1:d$="Dump"+STR$(Rb%):UNTILFNq(o$+d$)=0ORLEN(d$)>10:IFLEN(d$)>10THENRb%=-1 ENDIF =Rb% DEFFNl(n%):LOCALcc%:cc%=RND(100):=cc%<=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$,dc%,t$,ec%):LOCALfc%,c$:fc%=dc%-LEN(a$):IFfc%<=0THEN c$=LEFT$(a$,dc%) ELSE:IFec%THEN c$=STRING$(dc%,t$):RIGHT$(c$,LEN(a$))=a$ ELSE:c$=a$+STRING$(fc%,t$) ENDIF ENDIF =c$ DEFFNy(a$,dc%):LOCALc$:c$=STRING$(dc%," "):RIGHT$(c$,LEN(a$))=a$:=c$ DEFFNq(h$):LOCALVb%:SYS"XOS_File",17,h$TOVb%:=Vb% DEFFND(h$):LOCALD%:SYSFNd(3),5,h$TO,,,,D%:=D% DEFFNx(Wb%,h$):LOCAL_%,gc%,hc%,ic%:ic%=FALSE:CASEWb%OF WHEN0:_%=OPENUP(h$+"chkfile") WHEN1:_%=OPENUP(h$) OTHERWISE:ERROR255,FNa(104)+" "+STR$(Wb%) ENDCASE IF_%<>0THEN SYSFNd(4),254,_%TOhc%;gc%:IF(gc%AND1)THENCLOSE#_%:ERROR255,FNa(105) IF((hc%AND(1<<7))<>0)THENic%=TRUE CLOSE#_% ENDIF =ic% DEFPROCz:LOCALjc%:kc%=0:lc%=0:SYSFNd(10),-1,-1TOmc%:SYSFNd(11)TOnc%;jc%:IFjc%AND1THENnc%=16384 PROCU(nc%):ENDPROC DEFPROCq:IFkc%THEN SYSFNd(10),kc%-32768,-1TOmc%:kc%=0:lc%=0 ENDIF ENDPROC DEFFNe(oc%):LOCALC%,D%:D%=(oc%+15)AND-4:C%=FNE(D%):IFC%ELSEERROR254,FNa(111) C%!0=&DEADDEAD:C%!4=oc%:!(C%-8+(C%!-4))=&DEADDEAD:=C%+8 DEFPROCc(RETURNC%):C%-=8:IFC%!0<>&DEADDEADTHENERROR254,FNa(112) IF!(C%-8+(C%!-4))<>&DEADDEADTHEN ERROR254,FNa(113) ENDIF lc%-=C%!-4:SYSFNd(12),3,kc%,C%:C%=0:ENDPROC DEFFNz(C%):LOCALq%:q%=C%-4:=q%!0 DEFFNg(C%,Bb%):PROCt(C%,Bb%):=C% DEFPROCt(C%,Bb%):LOCALY%,D%:D%=FNz(C%):FORY%=0TOD%-4STEP4:C%!Y%=Bb%:NEXTY%:ENDPROC DEFFNf(C%):LOCALpc%,Y%,D%:D%=FNz(C%):pc%=FNe(D%):FORY%=0TOD%-4STEP4:pc%!Y%=C%!Y%:NEXTY%:=pc% DEFPROCU(D%):IFkc%THENERROR254,FNa(115) D%=(D%+nc%-1)ANDNOT(nc%-1):kc%=HIMEM:SYSFNd(10),mc%+D%,-1TOmc%:D%=mc%+32768-kc%:IFD%<1THEN kc%=0:ERROR254,FNa(116) ELSE:SYSFNd(12),0,kc%,,D% ENDIF lc%=0:ENDPROC DEFPROCV(oc%):LOCALqc%:qc%=mc%:SYSFNd(10),mc%+oc%,-1TOmc%:oc%=mc%-qc%:IFoc%THENSYSFNd(12),5,kc%,,oc%TO,,,oc% ENDPROC DEFFNE(oc%):LOCALC%,jc%:SYSFNd(13),2,kc%,,oc%TO,,C%;jc%:IFjc%AND1THEN PROCV((oc%+nc%)ANDNOT(nc%-1)):SYSFNd(13),2,kc%,,oc%TO,,C%;jc%:IFjc%AND1THEN=0 ENDIF lc%+=C%!-4:=C%