REM Acorn Invaders REM Packed by MH's BASCrunch v1.31c 30/1/08 On 02 Apr 2008 ONERRORREPORT:PRINT" at line ";ERL:END MODE28:OFF:a$="Acorn Invaders. (c)2008 DynaByte Software":PRINTa$:PRINTSTRING$(LEN(a$),"-"):PRINT:PRINT:PRINT"Loading Game Data...":PRINT"Please Wait...":_%=FALSE:c$=".":IFFNf(c$+"Resources.Gfx0")<>1THEN_%=TRUE IFFNf(c$+"Resources.Gfx1")<>1THEN_%=TRUE IFFNf(c$+"Resources.Intro")<>1THEN_%=TRUE IFFNf(c$+"Resources.Creds")<>1THEN_%=TRUE IF_%THENERROR255,"File Missing!!" OSCLI"Playmod "+c$+"Resources.Intro":_%=FALSE:aa%=0:ba%=1:ca%=TRUE:DIMa$(10),c%(10):DIMd%(10):DIMb$(10),e%(10):SYS"OS_SWINumberFromString",,"OS_SpriteOp"TOda%:ea%=FNn(c$+"Resources.Gfx0"):fa%=FNn(c$+"Resources.Gfx1"):ga%=ea% ha%=OPENIN(c$+"Resources.Creds"):FORi%=1TO10:INPUT#ha%,e%(i%),b$(i%):NEXTi%:CLOSE#ha%:f$=c$+"Resources.HiTable":IFFNf(f$)<>1THEN IFNOTFNo(0,c$)THENca%=FALSE PROCs(ca%) ELSE:IFNOTFNo(1,f$)THENca%=FALSE PROCt ENDIF b%=0:a%=4:f%=8:k%=12:I%=16:J%=20:q%=24:V%=28:ia%=32:ja%=36:ka%=40:la%=44:ma%=48:na%=52:oa%=56:pa%=60:qa%=16:ra%=20:sa%=24:W%=28:R%=32:ta%=16:ua%=20:DIMh% 36,K% 24,E% 16:CLS:PROCk:h%!W%=FNa(8,1):h%!R%=FNa(8,2)+7 K%!f%=FNa(6,1):K%!k%=FNa(6,2):K%!ta%=h%!k%-50:K%!ua%=30:REPEAT:CLS:_%=FNq:IFNOT_%THENCLS:PROCu UNTIL_%:CLS:E%!f%=220:E%!k%=40:E%=FNm(E%,h%):E%!a%-=3:PROCg(E%):PROCl("GOODBYE!!!",10):IFba%=1THEN FORi%=127TO1STEP-2:OSCLI"PlayVolume "+STR$(i%):PROCd(4):NEXTi%:OSCLI"PlayStop":OSCLI"PlayVolume 127" ENDIF END DEFFNq:LOCALi%,F%,G%,w%,Q%,d%,S%,va%:LOCALwa%,N%,xa%,ya%,za%,x%,y%,T%,s$,a$:DIMF% 16,G% 16,w% 16:DIMd% 16,S% 16,N% 16:F%!f%=FNa(100,1):F%!k%=FNa(40,2):F%!b%=FNb(F%,h%):F%!a%=800:G%!f%=FNa(150,1):G%!k%=FNa(40,2):G%!b%=FNb(G%,h%) G%!a%=F%!a%-G%!k%:w%!f%=640:w%!k%=500:w%!b%=FNb(w%,h%):w%!a%=200:d%!f%=FNa(40,1):d%!k%=FNa(20,2):d%!b%=w%!b%+150:d%!a%=(w%!a%+w%!k%)-160:S%!f%=FNa(20,1):S%!k%=FNa(20,2):S%!b%=w%!b%+150+FNb(S%,d%) va%=FNd(S%,16):wa%=FNd(S%,16):S%!a%=w%!a%+100:va%!a%=S%!a%+S%!k%+40:wa%!a%=va%!a%+va%!k%+40:N%!f%=FNa(20,1):N%!k%=FNa(20,2):N%!b%=w%!b%+150+FNb(N%,d%):xa%=FNd(N%,16):ya%=FNd(N%,16):Aa%=FNd(N%,16):za%=FNd(N%,16) :N%!a%=(w%!a%+w%!k%)-160:xa%!a%=N%!a%-60:ya%!a%=xa%!a%-60:Aa%!a%=ya%!a%-100:za%!a%=Aa%!a%-60:PROCe(K%!ta%):PROCe(K%!ua%):FORi%=0-F%!f%TOF%!b%STEP5:WAIT:PROCa("space",i%,F%!a%):PROCd(1):NEXTi%:FORi%=h%!f%TOG%!b%STEP-5:WAIT:PROCa("invaders",i%,G%!a%):PROCd(1):NEXTi% a$="PRESS SPACE TO PLAY":Q%=LEN(a$)*h%!W%:y%=170:PROCb(FNg(Q%,h%!f%),y%,a$,11):a$="OR Q TO QUIT":Q%=LEN(a$)*h%!W%:y%-=h%!R%:PROCb(FNg(Q%,h%!f%),y%,a$,11):WHILENOTINKEY(-99)ANDNOTINKEY(-17)ANDNOTINKEY(-82):PROCc(w%):y%=w%!a%+w%!k%:FORi%=1TO10:a$=FNk(b$(i%)) x%=FNc(a$):CASEe%(i%)OF WHEN-1:y%-=h%!R% WHEN-2:y%-=(2*h%!R%) OTHERWISE:y%-=e%(i%) ENDCASE PROCb(x%,y%,a$,0):NEXTi%:T%=FNl:IFT%=1THEN=TRUE IFT%=2THEN=FALSE PROCc(w%):a$="SCORE ADVANCE":x%=FNc(a$):y%=w%!a%+w%!k%-20:PROCb(x%,y%,a$,0):a$="TABLE":y%-=h%!R%:x%=FNc(a$):PROCb(x%,y%,a$,0):x%=d%!b%+d%!f%+10:PROCa("saucer_0",d%!b%,d%!a%):PROCb(x%,d%!a%+10,"= 500 POINTS !",0):PROCa("inv_3",wa%!b%,wa%!a%) PROCb(x%,wa%!a%+12,"= 100 POINTS !",0):PROCa("inv_2",va%!b%,va%!a%):PROCb(x%,va%!a%+12,"= 75 POINTS !",0):PROCa("inv_1",S%!b%,S%!a%):PROCb(x%,S%!a%+12,"= 50 POINTS !",0):T%=FNl:IFT%=1THEN=TRUE IFT%=2THEN=FALSE PROCc(w%):a$="KEYBOARD CONTROLS":x%=FNc(a$):y%=w%!a%+w%!k%-20:PROCb(x%,y%,a$,0):x%=N%!b%+N%!f%+10:PROCa("key_z",N%!b%,N%!a%):PROCb(x%,N%!a%+12,": MOVE LEFT",0):PROCa("key_x",xa%!b%,xa%!a%):PROCb(x%,xa%!a%+12,": MOVE RIGHT",0) PROCa("key_enter",ya%!b%,ya%!a%):PROCb(x%,ya%!a%+12,": FIRE SHELL",0):PROCa("key_m",Aa%!b%,Aa%!a%):PROCb(x%,Aa%!a%,": MUSIC ON/OFF",0):PROCa("key_q",za%!b%,za%!a%):PROCb(x%,za%!a%+12,": END GAME",0):T%=FNl:IFT%=1THEN=TRUE IFT%=2THEN=FALSE PROCc(w%):a$="TODAY'S":IFca%THENa$="ALL TIME" x%=FNc(a$):y%=w%!a%+w%!k%-20:PROCb(x%,y%,a$,0):a$="HI SCORES":y%-=h%!R%:x%=FNc(a$):PROCb(x%,y%,a$,0):y%=(w%!a%+w%!k%)-100:a$=" POS."+" PLAYER."+STRING$(12," ")+"SCORE.":a$+=STRING$(3," ")+"RACK.":x%=FNc(a$):PROCb(x%,y%,a$,0):y%-=2*h%!R%:FORi%=1TO10:IFi%<10THEN a$=" "+STR$(i%)+". " ELSE:a$=" "+STR$(i%)+". " ENDIF s$=FNk(a$(i%)):a$+=FNe(s$,8," ",FALSE):a$+=" .... ":a$+=FNp(STR$(c%(i%)),10):a$+=" ... "+FNp(STR$(d%(i%)),3):x%=FNc(a$):PROCb(x%,y%-(i%*(h%!R%+5)),a$,0):NEXTi%:T%=FNl:IFT%=1THEN=TRUE IFT%=2THEN=FALSE ENDWHILE:IFINKEY(-17)THEN=TRUE =FALSE DEFFNl:LOCALt%:t%=TIME+750:REPEAT:IFINKEY(-82)THENPROCm IFINKEY(-102)THENPROCn UNTILTIME=t%ORINKEY(-17)ORINKEY(-99):IFINKEY(-17)THEN=1 IFINKEY(-99)THEN=2 =0 DEFFNc(a$):LOCALQ%:Q%=LEN(a$)*h%!W%:=w%!b%+FNg(Q%,w%!f%) DEFPROCu:LOCALm%,o%,d%,e%,A%:LOCALD%:LOCALb%(),a%():LOCALX%,Y%,Ba%,Ca%:LOCALDa%,Ea%:LOCALFa%,Q%,a$,x%,y%,i%:DIMm% 52,o% 52,d% 52,e% 64,D% 16,b%(10,6):DIMA% 16,a%(7):X%=0:Z%=4:Y%=8:Ba%=12:Ca%=ja%:Da%=la%:Ea%=ma%:m%!f%=FNa(30,1):m%!k%=FNa(15,2) m%!b%=FNb(m%,h%):m%!a%=50:m%!J%=6:m%!I%=m%!J%:D%!f%=FNa(20,1):D%!k%=FNa(20,2):d%!f%=FNa(40,1):d%!k%=FNa(20,2):d%!a%=K%!ta%-(10+d%!k%):d%!J%=5:d%!q%=FALSE:d%!la%=1:o%!f%=FNa(5,1):o%!k%=FNa(20,2):o%!q%=FALSE:o%!J%=10 A%!Y%=1:A%!Z%=0:A%!X%=3:A%!Ba%=FALSE:e%!Ca%=FNa(20,1):e%!Da%=10:e%!Ea%=6:e%!q%=TRUE:FORi%=1TO7:a%(i%)=FNr(52):a%(i%)!f%=FNa(5,1):a%(i%)!k%=FNa(20,2):NEXTi%:PROCe(K%!ta%):PROCe(K%!ua%):PROCv(0,c%(1),A%!X%,A%!Y%) PROCw:PROCa("base",m%!b%,m%!a%):REPEAT:Fa%=FALSE:IFINKEY(-74)THENPROCx(m%!b%,m%!a%) IFINKEY(-98)THENPROCy:Fa%=TRUE IFINKEY(-67)THENPROCz:Fa%=TRUE IFINKEY(-102)THENPROCn IFINKEY(-82)THENPROCm IFINKEY(-17)THENPROCA IFINKEY(-34)THENPROCB IFINKEY(-35)THENPROCo IFFa%THEN m%!b%+=m%!I%:PROCa("base",m%!b%,m%!a%) ENDIF IFA%!X%>0THEN PROCC:PROCD:PROCE ENDIF WAIT:UNTILA%!X%=0:E%!f%=240:E%!k%=40:E%=FNm(E%,h%):E%!a%-=3:PROCg(E%):PROCl("GAME OVER!!!",11):PROCd(750):IFNOTA%!Ba%THEN IFA%!Z%>=c%(10)THEN PROCF(A%) ENDIF ENDIF ENDPROC DEFPROCy:IFm%!b%<=0THEN m%!b%=0 ELSE:m%!I%=0-m%!J% ENDIF ENDPROC DEFPROCz:IFm%!b%>=h%!f%-m%!f%THEN m%!b%=h%!f%-m%!f% ELSE:m%!I%=0+m%!J% ENDIF ENDPROC DEFPROCx(x%,y%):IFNOTo%!q%THEN o%!q%=TRUE:o%!b%=x%+(m%!f%/2):o%!a%=y%+m%!k% ENDIF ENDPROC DEFPROCm:REPEAT:UNTILNOTINKEY(-82):OSCLI"ScreenSave .Dump"+STR$(aa%):aa%+=1:ENDPROC DEFPROCA:A%!X%=0:A%!Ba%=TRUE:ENDPROC DEFPROCn:REPEAT:UNTILNOTINKEY(-102):ba%=FNh(ba%):IFba%=1THENOSCLI"PlayStart"ELSEOSCLI"PlayPause" ENDPROC DEFPROCB:IFd%!q%THEN IFNOTd%!V%THEN d%!V%=TRUE:d%!ia%=d%!ja%:PROCa("saucer_2",d%!b%,d%!a%) ENDIF ENDIF ENDPROC DEFPROCC:LOCALGa%,Ha%:Ga%=ia%:IFo%!q%THEN o%!Ga%=FALSE:IFo%!a%>=K%!ta%-o%!k%THEN o%!q%=FALSE:o%!Ga%=TRUE ENDIF IFo%!Ga%THEN Ha%=FNd(o%,52):Ha%!a%-=2:PROCc(Ha%) ELSE:PROCa("shell",o%!b%,o%!a%) ENDIF o%!a%+=o%!J% ENDIF ENDPROC DEFPROCD:LOCAL`%,C%,Ia%,Ja%:`%=ia%:C%=ja%:Ia%=ka%:Ja%=la%:IFNOTd%!q%THEN IFFNi(4)ANDFNi(5)THEN d%!q%=TRUE:d%!V%=FALSE:d%!Ia%=0:d%!Ja%=0:IFFNi(50)THEN d%!I%=0-d%!J%:d%!b%=h%!f% ELSE:d%!I%=0+d%!J%:d%!b%=0-d%!f% ENDIF ENDIF ELSE:d%!Ia%+=1:d%!C%+=1:IFd%!b%<=0-d%!f%ANDSGN(d%!I%)=-1THEN d%!`%=FALSE:d%!q%=FALSE:d%!C%=0:ENDPROC ENDIF IFd%!b%>h%!f%ANDSGN(d%!I%)=1THEN d%!`%=FALSE:d%!q%=FALSE:d%!C%=0:ENDPROC ENDIF IFNOTd%!V%THEN IFFNj(o%,d%)THEN PROCc(o%):PROCa("saucer_2",d%!b%,d%!a%):d%!`%=d%!C%:d%!V%=TRUE:o%!q%=FALSE:PROCf(500) ENDIF ELSE:IFFNj(o%,d%)THEN PROCc(o%):o%!q%=FALSE ENDIF ENDIF IFNOTd%!V%THEN IFd%!Ia%>=100THENd%!Ia%=0 IFd%!Ia%MOD10=0THEN d%!Ja%=FNh(d%!Ja%) ENDIF IFd%!Ja%=0THEN PROCa("saucer_0",d%!b%,d%!a%) ELSE:PROCa("saucer_1",d%!b%,d%!a%) ENDIF d%!b%+=d%!I% ELSE:IFd%!C%>=d%!`%+80THEN PROCc(d%):d%!q%=FALSE:d%!`%=FALSE:d%!C%=0:d%!Ja%=TRUE ELSE:IFd%!C%>=d%!`%+60THEN PROCa("saucer_5",d%!b%,d%!a%) ELSE:IFd%!C%>=d%!`%+40THEN PROCa("saucer_4",d%!b%,d%!a%) ELSE:IFd%!C%>=d%!`%+20THEN PROCa("saucer_3",d%!b%,d%!a%) ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF ENDPROC DEFPROCE:LOCALKa%,z%,B%,H%,La%,Ma%,Na%,Oa%:LOCALL%,C%,Pa%,Qa%,Ra%:L%=ia%:C%=ka%:Pa%=na%:Qa%=oa%:Ra%=pa%:e%!C%+=1:IFe%!C%MOD5=0THENe%!L%=FNh(e%!L%) IFe%!C%>10000THENe%!C%=0 Ka%=e%!b%+e%!f%:Oa%=0-((e%!Pa%-1)*(D%!f%+e%!Ca%)):IFKa%>=h%!f%THEN e%!I%=0-e%!J%:PROCp ENDIF IFe%!b%<=Oa%THEN e%!I%=0+e%!J%:PROCp ENDIF Oa%=e%!a%+((e%!Ra%-1)*D%!k%):IFOa%<=m%!a%+m%!k%THEN PROCo:ENDPROC ENDIF IFFNj(o%,e%)THEN z%=D%!f%+e%!Ca%:IF(o%!b%-e%!b%)MODz%<=D%!f%THEN B%=((o%!a%-e%!a%)DIVD%!k%)+1:H%=((o%!b%-e%!b%)DIVz%)+1:IFSGN(b%(H%,B%))=1THEN b%(H%,B%)=-5:PROCc(o%):o%!q%=FALSE:e%!V%+=1:CASEB%OF WHEN1,2:PROCf(50) WHEN3,4:PROCf(75) WHEN5,6:PROCf(100) ENDCASE ENDIF ENDIF ENDIF IFe%!V%>=e%!Da%*e%!Ea%THEN A%!Y%+=1:PROCc(e%):PROCe(K%!ua%):PROCh(A%!X%):PROCi(A%!Y%):PROCq ENDIF La%=TRUE:Ma%=TRUE:FORB%=1TOe%!Ea%:IFb%(e%!Qa%,B%)<>0THENLa%=FALSE IFb%(e%!Pa%,B%)<>0THENMa%=FALSE NEXTB%:Na%=TRUE:FORH%=1TOe%!Da%:IFb%(H%,e%!Ra%)<>0THENNa%=FALSE NEXTH%:IFMa%THENe%!Pa%+=1 IFLa%THEN e%!f%-=(D%!f%+e%!Ca%):e%!Qa%-=1 ENDIF IFNa%THENe%!Ra%+=1 e%!b%+=e%!I%:PROCj:ENDPROC DEFPROCs(Sa%):LOCALi%,M%,n$:FORi%=1TO10:IFi%MOD2=0THENn$="Software"ELSEn$="DynaByte" a$(i%)=FNk(n$):c%(i%)=(11-i%)*1000:d%(i%)=0:NEXTi%:IFSa%THENPROCr ENDPROC DEFPROCt:LOCALi%,M%:M%=OPENIN".Resources.HiTable":FORi%=1TO10:INPUT#M%,a$(i%),c%(i%):INPUT#M%,d%(i%):NEXTi%:CLOSE#M%:ENDPROC DEFPROCr:LOCALi%,M%:M%=OPENOUT".Resources.HiTable":FORi%=1TO10:PRINT#M%,a$(i%),c%(i%):PRINT#M%,d%(i%):NEXTi%:CLOSE#M%:ENDPROC DEFPROCF(A%):LOCALi%,Ta%,Y%,Z%,F%,G%,Q%,x%,y%,g%,Ua%:LOCALE%,a$:DIMF% 16,G% 16,E% 16:Z%=4:Y%=8:F%!f%=FNa(100,1):F%!k%=FNa(40,2):F%!b%=FNb(F%,h%):F%!a%=800:G%!f%=FNa(150,1):G%!k%=FNa(40,2):G%!b%=FNb(G%,h%):G%!a%=F%!a%-G%!k% Ta%=0:FORi%=10TO1STEP-1:IFA%!Z%>=c%(i%)THENTa%=i% NEXTi%:FORi%=9TOTa%STEP-1:a$(i%+1)=a$(i%):c%(i%+1)=c%(i%):d%(i%+1)=d%(i%):NEXTi%:c%(Ta%)=A%!Z%:d%(Ta%)=A%!Y%:CLS:PROCe(K%!ta%):PROCe(K%!ua%):PROCa("space",F%!b%,F%!a%):PROCa("invaders",G%!b%,G%!a%):a$="Congratulations!!! You have earned the rank of " a$+=STR$(Ta%)+FNs(Ta%):Q%=LEN(a$)*h%!W%:x%=FNg(Q%,h%!f%):y%=G%!a%-170:PROCb(x%,y%,a$,0):E%!f%=165:E%!k%=40:E%=FNm(E%,h%):PROCg(E%):x%=E%!b%+20:y%=E%!a%+12:a$="":i%=1:Ua%=FALSE:OSCLI"FX 21,0":REPEAT:g%=GET:CASEg%OF WHEN13:Ua%=TRUE WHEN8:i%-=1:a$=LEFT$(a$,i%-1) OTHERWISE:IFi%<9ANDFNt(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 UNTILUa%:IFa$=""ORa$=" "THENa$="Anon ..." a$(Ta%)=FNk(a$):IFca%THENPROCr ENDPROC DEFFNt(Va%):LOCALGa%:Ga%=FALSE:IFVa%>=32ANDVa%<=126THENGa%=TRUE =Ga% DEFPROCv(Wa%,Xa%,l%,r%):LOCALx%,a$:a$="SCORE :-"+FNe(STR$(Wa%),10," ",TRUE):PROCb(0,h%!k%-h%!R%,a$,0):a$="HI SCORE :-":a$+=FNe(STR$(Xa%),10," ",TRUE):x%=h%!f%-LEN(a$)*h%!W%:PROCb(x%,h%!k%-h%!R%,a$,0):PROCh(l%):PROCi(r%):ENDPROC DEFPROCh(Ya%):LOCALa$:PROCa("base",0,0):a$=" = "+STR$(Ya%):PROCb(m%!f%,0,a$,0):ENDPROC DEFPROCi(Ya%):LOCALx%,a$:a$="RACK :-"+FNe(STR$(Ya%),3,"0",TRUE):x%=h%!f%-LEN(a$)*h%!W%:PROCb(x%,0,a$,0):ENDPROC DEFPROCf(Za%):LOCALx%,a$:A%!Z%+=Za%:a$="SCORE :-"+FNe(STR$(A%!Z%),10," ",TRUE):PROCb(0,h%!k%-h%!R%,a$,0):IFA%!Z%>c%(1)THEN a$="HI SCORE :-":a$+=FNe(STR$(A%!Z%),10," ",TRUE):x%=h%!f%-LEN(a$)*h%!W%:PROCb(x%,h%!k%-h%!R%,a$,0) ENDIF ENDPROC DEFPROCw:LOCALL%,Pa%,Qa%,Ra%:L%=ia%:Pa%=na%:Qa%=oa%:Ra%=pa%:PROCq:PROCj:ENDPROC DEFPROCq:LOCALB%,H%,s%:e%!b%=50:e%!a%=550:e%!L%=0:e%!V%=0:e%!J%=3:e%!I%=e%!J%:e%!Pa%=1:e%!Qa%=e%!Da%:e%!Ra%=1:s%=(e%!Da%*D%!f%)+((e%!Da%-1)*e%!Ca%):e%!f%=s%:e%!k%=e%!Ea%*D%!k%:FORH%=1TOe%!Da%:FORB%=1TOe%!Ea% b%(H%,B%)=((B%+1)/2)+(e%!L%*10):NEXTB%:NEXTH%:ENDPROC DEFPROCj:LOCALB%,H%,x%,y%,v%:DIMv% 16:FORH%=e%!Pa%TOe%!Qa%:x%=e%!b%+((H%-1)*(D%!f%+e%!Ca%)):FORB%=e%!Ra%TOe%!Ea%:y%=e%!a%+((B%-1)*D%!k%):IFb%(H%,B%)>0THEN b%(H%,B%)=((B%+1)/2)+(e%!L%*10) ENDIF IFb%(H%,B%)<>0THEN CASESGN(b%(H%,B%))OF WHEN-1:PROCG(x%,y%,H%,B%) WHEN1:PROCa("inv_"+STR$(b%(H%,B%)),x%,y%) ENDCASE ELSE:v%!b%=x%:v%!a%=y%:v%!f%=D%!f%:v%!k%=D%!k%:PROCc(v%) ENDIF NEXTB%:NEXTH%:ENDPROC DEFPROCG(x%,y%,r%,c%):LOCAL_a%:DIM_a% 16:b%(r%,c%)+=1:PROCa("inv_4",x%,y%):IFb%(r%,c%)=0THEN _a%!b%=x%:_a%!a%=y%:_a%!f%=D%!f%:_a%!k%=D%!k%:PROCc(_a%) ENDIF ENDPROC DEFPROCp:LOCALv%,i%:DIMv% 16:FORi%=1TO3:e%!a%-=D%!k%/3:PROCj:NEXTi%:v%!b%=e%!b%:v%!a%=e%!a%+e%!k%:v%!f%=e%!f%:v%!k%=D%!k%:PROCc(v%):ENDPROC DEFPROCH:LOCALC%,L%,`a%,ab%,i%,j%,g$:C%=ia%:L%=ja%:`a%=ka%:FORi%=1TO7:IFNOTa%(i%)!q%THEN IFFNi(A%!Y%)ANDFNi(4)THEN a%(i%)!a%=e%!a%+((e%!Ra%-1)*D%!k%):a%(i%)!q%=TRUE:a%(i%)!V%=FALSE:a%(i%)!C%=0:a%(i%)!`a%=RND(2):ab%=4:IFa%(i%)!L%=2THENab%=ab%/2 a%(i%)!J%=ab%:a%(i%)!I%=0-a%(i%)!J% ENDIF ELSE:a%(i%)!C%+=1:IFa%(i%)!C%MOD5=0THEN a%(i%)!L%=FNh(a%(i%)!L%) ENDIF IFa%(i%)!C%>10000THENa%(i%)!C%=0 a%(i%)!a%-=a%(i%)!I%:g$="miss_"+STR$(a%(i%)!`a%)+STR$(a%(i%)!L%):PROCa(g$,a%(i%)!b%,a%(i%)!a%):IFa%(i%)!b%<=K%!ua%+K%!k%THEN PROCc(a%(i%)):a%(i%)!q%=FALSE ENDIF IFFNj(a%(i%),m%)THEN FORj%=1TO3:PROCa("base_"+STR$(j%),m%!b%,m%!a%):PROCd(20):WAIT:NEXTj%:PROCc(m%):IFo%!q%THEN PROCc(o%):o%!q%=FALSE ENDIF m%!b%=FNb(m%,h%):A%!X%-=1:PROCa("base",x%,y%) ENDIF IFFNj(o%,a%(i%))THEN IFa%(i%)!`a%=1THEN PROCc(a%(i%)):a%(i%)!q%=FALSE:PROCf(5) ENDIF PROCc(o%):o%!q%=FALSE ENDIF ENDIF NEXTi%:ENDPROC DEFPROCo:LOCALP%,U%,L%,bb%,J%,i%,e$:J%=1:cb%=24:DIMP% 28,U% 28:PROCc(e%):PROCc(m%):IFo%!q%THEN PROCc(o%):o%!q%=FALSE ENDIF IFd%!q%THEN PROCc(d%):d%!q%=FALSE ENDIF FORi%=1TO7:IFa%(i%)!q%THEN PROCc(a%(i%)):a%(i%)!q%=FALSE ENDIF NEXTi%:m%!b%=FNb(m%,h%):P%!b%=0-D%!f%:P%!a%=m%!a%:P%!I%=J%:U%!b%=h%!f%:U%!a%=m%!a%:U%!I%=0-J%:A%!X%=0:PROCe(K%!ua%):PROCh(A%!X%):PROCi(A%!Y%):PROCa("base",m%!b%,m%!a%):L%=0:bb%=FALSE:REPEAT:P%!b%+=P%!I%:P%!cb%=P%!b%+D%!f%:U%!b%+=U%!I%:L%+=1 IFL%MOD20=0THENbb%=FNh(bb%) IFbb%THENe$="inv_11"ELSEe$="inv_1" PROCa(e$,P%!b%,P%!a%):PROCa(e$,U%!b%,U%!a%):PROCd(2):WAIT:UNTILP%!cb%>=m%!b%:FORi%=1TO10:PROCa("inv_1",P%!b%,P%!a%):PROCa("inv_1",U%!b%,U%!a%):PROCd(20):PROCa("inv_11",P%!b%,P%!a%):PROCa("inv_11",U%!b%,U%!a%):PROCd(20):WAIT:NEXTi%:FORi%=1TO3 PROCa("base_"+STR$(i%),m%!b%,m%!a%):PROCd(20):WAIT:NEXTi%:PROCd(20):PROCc(m%):ENDPROC DEFFNn(h$):LOCALdb%,O%:O%=FNu(h$)+256:DIMdb% O%:!db%=O%:db%!4=0:db%!8=16:db%!12=16:SYSda%,256+10,db%,h$:SYSda%,256+17,db%:=db% DEFPROCb(x%,y%,a$,eb%):LOCALi%,fb%:ga%=fa%:fb%=h%!W%:FORi%=1TOLEN(a$):PROCa(STR$(ASC(MID$(a$,i%,1))),x%+((i%-1)*fb%),y%):IFeb%>0THENPROCd(eb%) NEXTi%:ga%=ea%:ENDPROC DEFPROCa(k$,x%,y%):LOCALgb%:SYSda%,256+24,ga%,k$TO,,gb%:SYSda%,512+34,ga%,gb%,x%,y%,0:ENDPROC DEFPROCc(p%):GCOL0,0TINT0:RECTANGLEFILLp%!b%,p%!a%,p%!f%,p%!k%:ENDPROC DEFFNg(hb%,h%):=(h%/2)-(hb%/2) DEFPROCl(a$,ib%):LOCALQ%,y%:Q%=LEN(a$)*h%!W%:y%=(h%!k%/2)-(h%!R%/2):PROCb(FNg(Q%,h%!f%),y%,a$,ib%):ENDPROC DEFFNb(jb%,kb%):=(kb%!f%/2)-(jb%!f%/2) DEFFNm(jb%,kb%):LOCALx%,y%:jb%!b%=(kb%!f%/2)-(jb%!f%/2):jb%!a%=(kb%!k%/2)-(jb%!k%/2):=jb% DEFPROCe(a%):LOCALi%,lb%:lb%=h%!f%/K%!f%:FORi%=1TOlb%+1:PROCa("rail",(i%-1)*K%!f%,a%):NEXTi%:ENDPROC DEFPROCg(p%):LOCALx%,y%,mb%,nb%,ob%,pb%,i%:mb%=FNa(3,1):nb%=FNa(3,2):ob%=1:pb%=3:FORi%=1TOp%!f%:x%=p%!b%+((i%-1)*ob%):PROCa("box_x",x%,p%!a%):PROCa("box_x",x%,p%!a%+(p%!k%-(2*pb%))):NEXTi%:x%=p%!b%+(p%!f%-mb%):FORi%=1TOp%!k%-1 PROCa("box_y",p%!b%,p%!a%+((i%-1)*ob%)):PROCa("box_y",x%,p%!a%+((i%-1)*ob%)):NEXTi%:PROCa("box_bl",p%!b%,p%!a%):PROCa("box_tl",p%!b%,(p%!a%+p%!k%)-nb%):PROCa("box_br",p%!b%+(p%!f%-mb%),p%!a%):x%=(p%!b%+p%!f%)-mb%:y%=(p%!a%+p%!k%)-nb%:PROCa("box_tr",x%,y%):ENDPROC DEFPROCk:LOCALv%:DIMv% 20:v%!0=4:v%!4=5:v%!8=11:v%!12=12:v%!16=-1:SYS"OS_ReadVduVariables",v%,v%:h%!qa%=v%!0:h%!ra%=v%!4:h%!f%=(v%!8)+1<h%!sa%THENPROCk CASEqb%OF WHEN1:rb%=O%<>h%!qa% WHEN4:rb%=O%>>h%!ra% OTHERWISE:ERROR255,"Unknown FNconv_units() operation : "+STR$(qb%) ENDCASE =rb% DEFFNj(p%,tb%):LOCALub%,vb%,wb%,xb%:wb%=FALSE:xb%=FALSE:IFp%!q%ANDtb%!q%THEN ub%=tb%!b%+tb%!f%:vb%=tb%!a%+tb%!k%:IFp%!b%>=tb%!b%ANDp%!b%=tb%!a%ANDp%!a%=t%:ENDPROC DEFFNh(n%):=n%EOR1 DEFFNs(n%):LOCALb$,u%:u%=VAL(RIGHT$(STR$(n%),1)):CASEu%OF WHEN1:b$="st" WHEN2:b$="nd" WHEN3:b$="rd" OTHERWISE:b$="th" ENDCASE =b$ DEFFNr(O%):LOCALv%:DIMv% O%:=v% DEFFNe(a$,Ab%,j$,Bb%):LOCALCb%,b$:Cb%=Ab%-LEN(a$):IFCb%<=0THEN b$=LEFT$(a$,Ab%) ELSE:IFBb%THEN b$=STRING$(Ab%,j$):RIGHT$(b$,LEN(a$))=a$ ELSE:b$=a$+STRING$(Cb%,j$) ENDIF ENDIF =b$ DEFFNp(a$,Ab%):LOCALb$:b$=STRING$(Ab%," "):RIGHT$(b$,LEN(a$))=a$:=b$ DEFFNf(d$):LOCALDb%:SYS"XOS_File",17,d$TODb%:=Db% DEFFNu(d$):LOCALO%:SYS"XOS_File",5,d$TO,,,,O%:=O% DEFFNo(qb%,d$):LOCALM%,Eb%,Fb%,Gb%:Gb%=FALSE:CASEqb%OF WHEN0:M%=OPENUP(d$+"chkfile") WHEN1:M%=OPENUP(d$) OTHERWISE:ERROR255,"Unknown FNfs_writeable op :"+STR$(qb%) ENDCASE IFM%<>0THEN SYS"XOS_Args",254,M%TOFb%;Eb%:IF(Eb%AND1)THEN CLOSE#M%:ERROR255,"Unknown FNfs_writeable fault." ENDIF IF((Fb%AND(1<<7))<>0)THENGb%=TRUE CLOSE#M% ENDIF =Gb%