REM Acorn Invaders REM Packed by MH's BASCrunch v1.31c 30/1/08 On 24 Mar 2008 ONERRORREPORT:PRINT" at line ";ERL:END Z%=FALSE:c$=".":IFFNf(c$+"Resources.Gfx0")<>1THENZ%=TRUE IFFNf(c$+"Resources.Gfx1")<>1THENZ%=TRUE IFFNf(c$+"Resources.Intro")<>1THENZ%=TRUE IFZ%THENERROR255,"File Missing!!" OSCLI"Playmod "+c$+"Resources.Intro":Z%=FALSE:aa%=0:ba%=1:ca%=TRUE:DIMa$(10),b%(10):DIMc%(10):SYS"OS_SWINumberFromString",,"OS_SpriteOp"TOda%:ea%=FNm(c$+"Resources.Gfx0"):fa%=FNm(c$+"Resources.Gfx1"):ga%=ea% f$=c$+"Resources.HiTable":IFFNf(f$)<>1THEN IFNOTFNn(0,c$)THENca%=FALSE PROCr(ca%) ELSE:IFNOTFNn(1,f$)THENca%=FALSE PROCs ENDIF b%=0:a%=4:e%=8:j%=12:F%=16:G%=20:A%=24:ha%=28:ia%=32:ja%=36:ka%=40:la%=44:ma%=48:na%=52:oa%=56:pa%=60:qa%=16:ra%=20:sa%=24:J%=28:S%=32:ta%=16:ua%=20:DIMh% 36,N% 24,B% 16:MODE28:OFF:PROCh:h%!J%=FNa(8,1):h%!S%=FNa(8,2)+7 N%!e%=FNa(6,1):N%!j%=FNa(6,2):N%!ta%=h%!j%-50:N%!ua%=30:REPEAT:CLS:Z%=FNp:IFNOTZ%THENCLS:PROCt UNTILZ%:CLS:B%!e%=220:B%!j%=40:B%=FNh(B%,h%):B%!a%-=3:PROCg(B%):PROCi("GOODBYE!!!",10):END DEFFNp:LOCALi%,C%,D%,m%,v%,d%,Q%,va%:LOCALwa%,K%,xa%,ya%,za%,x%,y%,V%,s$,a$:DIMC% 16,D% 16,m% 16:DIMd% 16,Q% 16,K% 16:C%!e%=FNa(100,1):C%!j%=FNa(40,2):C%!b%=FNc(C%,h%):C%!a%=800:D%!e%=FNa(150,1):D%!j%=FNa(40,2):D%!b%=FNc(D%,h%) D%!a%=C%!a%-D%!j%:m%!e%=630:m%!j%=500:m%!b%=FNc(m%,h%):m%!a%=200:d%!e%=FNa(40,1):d%!j%=FNa(20,2):d%!b%=m%!b%+150:d%!a%=(m%!a%+m%!j%)-160:Q%!e%=FNa(20,1):Q%!j%=FNa(20,2):Q%!b%=m%!b%+150+FNc(Q%,d%) va%=FNd(Q%,16):wa%=FNd(Q%,16):Q%!a%=m%!a%+100:va%!a%=Q%!a%+Q%!j%+40:wa%!a%=va%!a%+va%!j%+40:K%!e%=FNa(20,1):K%!j%=FNa(20,2):K%!b%=m%!b%+150+FNc(K%,d%):xa%=FNd(K%,16):ya%=FNd(K%,16):Aa%=FNd(K%,16):za%=FNd(K%,16) :K%!a%=(m%!a%+m%!j%)-160:xa%!a%=K%!a%-60:ya%!a%=xa%!a%-60:Aa%!a%=ya%!a%-100:za%!a%=Aa%!a%-60:PROCe(N%!ta%):PROCe(N%!ua%):FORi%=0-C%!e%TOC%!b%STEP5:PROCa("space",i%,C%!a%):PROCd(1):WAIT:NEXTi%:FORi%=h%!e%TOD%!b%STEP-5:PROCa("invaders",i%,D%!a%):PROCd(1):WAIT:NEXTi% a$="PRESS SPACE TO PLAY":v%=LEN(a$)*h%!J%:y%=170:PROCb(FNb(v%,h%!e%),y%,a$,11):a$="OR Q TO QUIT":v%=LEN(a$)*h%!J%:y%-=h%!S%:PROCb(FNb(v%,h%!e%),y%,a$,11):WHILENOTINKEY(-99)ANDNOTINKEY(-17)ANDNOTINKEY(-82):PROCc(m%):a$="SCORE ADVANCE":v%=LEN(a$)*h%!J% x%=m%!b%+FNb(v%,m%!e%):y%=m%!a%+m%!j%-20:PROCb(x%,y%,a$,0):a$="TABLE":y%-=h%!S%:v%=LEN(a$)*h%!J%:x%=m%!b%+FNb(v%,m%!e%):PROCb(x%,y%,a$,0):x%=d%!b%+d%!e%+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",Q%!b%,Q%!a%):PROCb(x%,Q%!a%+12,"= 50 POINTS !",0):V%=FNi:IFV%=1THEN=TRUE IFV%=2THEN=FALSE PROCc(m%):a$="KEYBOARD CONTROLS":v%=LEN(a$)*h%!J%:x%=m%!b%+FNb(v%,m%!e%):y%=m%!a%+m%!j%-20:PROCb(x%,y%,a$,0):x%=K%!b%+K%!e%+10:PROCa("key_z",K%!b%,K%!a%):PROCb(x%,K%!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) V%=FNi:IFV%=1THEN=TRUE IFV%=2THEN=FALSE PROCc(m%):a$="TODAY'S":IFca%THENa$="ALL TIME" v%=LEN(a$)*h%!J%:x%=m%!b%+FNb(v%,m%!e%):y%=m%!a%+m%!j%-20:PROCb(x%,y%,a$,0):a$="HI SCORES":y%-=h%!S%:v%=LEN(a$)*h%!J%:x%=m%!b%+FNb(v%,m%!e%):PROCb(x%,y%,a$,0):y%=(m%!a%+m%!j%)-100:a$=" POS."+" PLAYER."+STRING$(12," ")+"SCORE.":a$+=STRING$(3," ")+"RACK." v%=LEN(a$)*h%!J%:x%=m%!b%+FNb(v%,m%!e%):PROCb(x%,y%,a$,0):y%-=2*h%!S%:FORi%=1TO10:IFi%<10THEN a$=" "+STR$(i%)+". " ELSE:a$=" "+STR$(i%)+". " ENDIF s$=FNj(a$(i%)):a$+=FNe(s$,8," ",FALSE):a$+=" .... ":a$+=FNo(STR$(b%(i%)),10):a$+=" ... "+FNo(STR$(c%(i%)),3):v%=LEN(a$)*h%!J%:x%=m%!b%+FNb(v%,m%!e%):PROCb(x%,y%-(i%*(h%!S%+5)),a$,0):NEXTi%:V%=FNi:IFV%=1THEN=TRUE IFV%=2THEN=FALSE ENDWHILE:IFINKEY(-17)THEN=TRUE =FALSE DEFFNi:LOCALt%:t%=TIME+750:REPEAT:IFINKEY(-82)THENPROCj IFINKEY(-102)THENPROCk UNTILTIME=t%ORINKEY(-17)ORINKEY(-99):IFINKEY(-17)THEN=1 IFINKEY(-99)THEN=2 =0 DEFPROCt:LOCALk%,o%,d%,f%,q%:LOCALH%:LOCALa%():LOCAL_%,`%,T%,Ba%:LOCALL%,W%,Ca%,Da%,Ea%,Fa%:LOCALGa%,v%,a$,x%,y%:DIMk% 52,o% 52,d% 52,f% 64,H% 16,a%(10,6):DIMq% 16:_%=0:U%=4:`%=8:Ha%=12:T%=ia%:Ba%=ja%:L%=ka%:W%=la%:Ca%=ma%:Da%=na%:Ea%=oa%:Fa%=pa% k%!e%=FNa(30,1):k%!j%=FNa(15,2):k%!b%=FNc(k%,h%):k%!a%=50:k%!G%=6:k%!F%=k%!G%:H%!e%=FNa(20,1):H%!j%=FNa(20,2):d%!e%=FNa(40,1):d%!j%=FNa(20,2):d%!a%=N%!ta%-(10+d%!j%):d%!G%=5:d%!A%=FALSE:d%!la%=1 o%!e%=FNa(5,1):o%!j%=FNa(20,2):o%!A%=FALSE:o%!G%=10:q%!`%=1:q%!U%=0:q%!_%=3:q%!Ha%=FALSE:f%!Ba%=FNa(20,1):f%!W%=10:f%!Ca%=6:f%!A%=TRUE:PROCe(N%!ta%):PROCe(N%!ua%):PROCu(0,b%(1),q%!_%,q%!`%):PROCl:PROCm:PROCa("base",k%!b%,k%!a%) REPEAT:Ga%=FALSE:IFINKEY(-74)THENPROCv(k%!b%,k%!a%) IFINKEY(-98)THENPROCw:Ga%=TRUE IFINKEY(-67)THENPROCx:Ga%=TRUE IFINKEY(-102)THENPROCk IFINKEY(-82)THENPROCj IFINKEY(-17)THENPROCy IFINKEY(-35)THENPROCn IFGa%THEN k%!b%+=k%!F%:PROCa("base",k%!b%,k%!a%) ENDIF IFq%!_%>0THEN PROCz:PROCA:PROCB ENDIF WAIT:UNTILq%!_%=0:B%!e%=240:B%!j%=40:B%=FNh(B%,h%):B%!a%-=3:PROCg(B%):PROCi("GAME OVER!!!",11):PROCd(750):IFNOTq%!Ha%THEN IFq%!U%>=b%(10)THEN PROCC(q%) ENDIF ENDIF ENDPROC DEFPROCw:IFk%!b%<=0THEN k%!b%=0 ELSE:k%!F%=0-k%!G% ENDIF ENDPROC DEFPROCx:IFk%!b%>=h%!e%-k%!e%THEN k%!b%=h%!e%-k%!e% ELSE:k%!F%=0+k%!G% ENDIF ENDPROC DEFPROCv(x%,y%):IFNOTo%!A%THEN o%!A%=TRUE:o%!b%=x%+(k%!e%/2):o%!a%=y%+k%!j% ENDIF ENDPROC DEFPROCj:REPEAT:UNTILNOTINKEY(-82):OSCLI"ScreenSave .Dump"+STR$(aa%):aa%+=1:ENDPROC DEFPROCy:q%!_%=0:q%!Ha%=TRUE:ENDPROC DEFPROCk:REPEAT:UNTILNOTINKEY(-102):ba%=FNg(ba%):IFba%=1THENOSCLI"PlayStart"ELSEOSCLI"PlayPause" ENDPROC DEFPROCz:LOCALIa%,Ja%:Ia%=ia%:IFo%!A%THEN o%!Ia%=FALSE:IFo%!a%>=N%!ta%-o%!j%THEN o%!A%=FALSE:o%!Ia%=TRUE ENDIF IFo%!Ia%THEN Ja%=FNd(o%,52):Ja%!a%-=2:PROCc(Ja%) ELSE:PROCa("shell",o%!b%,o%!a%) ENDIF o%!a%+=o%!G% ENDIF ENDPROC DEFPROCA:LOCALX%,L%,Ka%,La%:X%=ia%:L%=ja%:Ka%=ka%:La%=la%:IFNOTd%!A%THEN IFFNk(4)ANDFNk(5)THEN d%!A%=TRUE:d%!ha%=FALSE:d%!Ka%=0:d%!La%=0:IFFNk(50)THEN d%!F%=0-d%!G%:d%!b%=h%!e% ELSE:d%!F%=0+d%!G%:d%!b%=0-d%!e% ENDIF ENDIF ELSE:d%!Ka%+=1:d%!L%+=1:IFd%!b%<=0-d%!e%ANDSGN(d%!F%)=-1THEN d%!X%=FALSE:d%!A%=FALSE:d%!L%=0:ENDPROC ENDIF IFd%!b%>h%!e%ANDSGN(d%!F%)=1THEN d%!X%=FALSE:d%!A%=FALSE:d%!L%=0:ENDPROC ENDIF IFNOTd%!ha%THEN IFFNl(o%,d%)THEN PROCc(o%):PROCa("saucer_2",d%!b%,d%!a%):d%!X%=d%!L%:d%!ha%=TRUE:o%!A%=FALSE:PROCf(500) ENDIF ELSE:IFFNl(o%,d%)THEN PROCc(o%):o%!A%=FALSE ENDIF ENDIF IFNOTd%!ha%THEN IFd%!Ka%>=100THENd%!Ka%=0 IFd%!Ka%MOD10=0THEN d%!La%=FNg(d%!La%) ENDIF IFd%!La%=0THEN PROCa("saucer_0",d%!b%,d%!a%) ELSE:PROCa("saucer_1",d%!b%,d%!a%) ENDIF d%!b%+=d%!F% ELSE:IFd%!L%>=d%!X%+125THEN PROCc(d%):d%!A%=FALSE:d%!X%=FALSE:d%!L%=0:d%!La%=TRUE ELSE:IFd%!L%>=d%!X%+100THEN PROCa("saucer_5",d%!b%,d%!a%) ELSE:IFd%!L%>=d%!X%+75THEN PROCa("saucer_4",d%!b%,d%!a%) ELSE:IFd%!L%>=d%!X%+50THEN PROCa("saucer_3",d%!b%,d%!a%) ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF ENDPROC DEFPROCB:LOCALMa%,z%,w%,E%,Na%,Oa%,Pa%,Y%:f%!L%+=1:IFf%!L%MOD5=0THENf%!T%=FNg(f%!T%) IFf%!L%>10000THENf%!L%=0 Ma%=f%!b%+f%!e%:Y%=0-((f%!Da%-1)*(H%!e%+f%!Ba%)):IFMa%>=h%!e%THEN f%!F%=0-f%!G%:f%!a%-=5 ENDIF IFf%!b%<=Y%THEN f%!F%=0+f%!G%:f%!a%-=5 ENDIF Y%=f%!a%+((f%!Fa%-1)*H%!j%):IFY%<=k%!a%+k%!j%THEN PROCn:ENDPROC ENDIF IFFNl(o%,f%)THEN z%=H%!e%+f%!Ba%:IF(o%!b%-f%!b%)MODz%<=H%!e%THEN w%=((o%!a%-f%!a%)DIVH%!j%)+1:E%=((o%!b%-f%!b%)DIVz%)+1:IFSGN(a%(E%,w%))=1THEN a%(E%,w%)=-5:PROCc(o%):o%!A%=FALSE:f%!ha%+=1:CASEw%OF WHEN1,2:PROCf(50) WHEN3,4:PROCf(75) WHEN5,6:PROCf(100) ENDCASE ENDIF ENDIF ENDIF IFf%!ha%>=f%!W%*f%!Ca%THEN q%!`%+=1:PROCo(q%!`%):PROCc(f%):PROCl ENDIF Na%=TRUE:Oa%=TRUE:FORw%=1TOf%!Ca%:IFa%(f%!Ea%,w%)<>0THENNa%=FALSE IFa%(f%!Da%,w%)<>0THENOa%=FALSE NEXTw%:Pa%=TRUE:FORE%=1TOf%!W%:IFa%(E%,f%!Fa%)<>0THENPa%=FALSE NEXTE%:IFOa%THENf%!Da%+=1 IFNa%THEN f%!e%-=(H%!e%+f%!Ba%):f%!Ea%-=1 ENDIF IFPa%THENf%!Fa%+=1 f%!b%+=f%!F%:PROCm:ENDPROC DEFPROCr(Qa%):LOCALi%,I%,n$:FORi%=1TO10:IFi%MOD2=0THENn$="Software"ELSEn$="DynaByte" a$(i%)=FNj(n$):b%(i%)=(11-i%)*1000:c%(i%)=0:NEXTi%:IFQa%THENPROCp ENDPROC DEFPROCs:LOCALi%,I%:I%=OPENIN".Resources.HiTable":FORi%=1TO10:INPUT#I%,a$(i%),b%(i%):INPUT#I%,c%(i%):NEXTi%:CLOSE#I%:ENDPROC DEFPROCp:LOCALi%,I%:I%=OPENOUT".Resources.HiTable":FORi%=1TO10:PRINT#I%,a$(i%),b%(i%):PRINT#I%,c%(i%):NEXTi%:CLOSE#I%:ENDPROC DEFPROCC(q%):LOCALi%,Ra%,`%,U%,C%,D%,v%,x%,y%,g%,Sa%:LOCALB%,a$:DIMC% 16,D% 16,B% 16:U%=4:`%=8:C%!e%=FNa(100,1):C%!j%=FNa(40,2):C%!b%=FNc(C%,h%):C%!a%=800:D%!e%=FNa(150,1):D%!j%=FNa(40,2):D%!b%=FNc(D%,h%):D%!a%=C%!a%-D%!j% Ra%=0:FORi%=10TO1STEP-1:IFq%!U%>=b%(i%)THENRa%=i% NEXTi%:FORi%=9TORa%STEP-1:a$(i%+1)=a$(i%):b%(i%+1)=b%(i%):c%(i%+1)=c%(i%):NEXTi%:b%(Ra%)=q%!U%:c%(Ra%)=q%!`%:CLS:PROCe(N%!ta%):PROCe(N%!ua%):PROCa("space",C%!b%,C%!a%):PROCa("invaders",D%!b%,D%!a%):a$="Congratulations!!! You have earned the rank of " a$+=STR$(Ra%)+FNq(Ra%):v%=LEN(a$)*h%!J%:x%=FNb(v%,h%!e%):y%=D%!a%-170:PROCb(x%,y%,a$,0):B%!e%=165:B%!j%=40:B%=FNh(B%,h%):PROCg(B%):x%=B%!b%+20:y%=B%!a%+12:a$="":i%=1:Sa%=FALSE:OSCLI"FX 21,0":REPEAT:g%=GET:CASEg%OF WHEN13:Sa%=TRUE WHEN8:i%-=1:a$=LEFT$(a$,i%-1) OTHERWISE:IFi%<9ANDFNr(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 UNTILSa%:IFa$=""ORa$=" "THENa$="Anon ..." a$(Ra%)=FNj(a$):IFca%THENPROCp ENDPROC DEFFNr(Ta%):LOCALIa%:Ia%=FALSE:IFTa%>=32ANDTa%<=126THENIa%=TRUE =Ia% DEFPROCu(Ua%,Va%,l%,r%):LOCALx%,a$:a$="SCORE :-"+FNe(STR$(Ua%),10," ",TRUE):PROCb(0,h%!j%-h%!S%,a$,0):a$="HI SCORE :-":a$+=FNe(STR$(Va%),10," ",TRUE):x%=h%!e%-LEN(a$)*h%!J%:PROCb(x%,h%!j%-h%!S%,a$,0):PROCq(l%):PROCo(r%):ENDPROC DEFPROCq(Wa%):LOCALa$:PROCa("base",0,0):a$=" = "+STR$(Wa%):PROCb(k%!e%,0,a$,0):ENDPROC DEFPROCo(Wa%):LOCALx%,a$:a$="RACK :-"+FNe(STR$(Wa%),3,"0",TRUE):x%=h%!e%-LEN(a$)*h%!J%:PROCb(x%,0,a$,0):ENDPROC DEFPROCf(Xa%):LOCALx%,a$:q%!U%+=Xa%:a$="SCORE :-"+FNe(STR$(q%!U%),10," ",TRUE):PROCb(0,h%!j%-h%!S%,a$,0):IFq%!U%>b%(1)THEN a$="HI SCORE :-":a$+=FNe(STR$(q%!U%),10," ",TRUE):x%=h%!e%-LEN(a$)*h%!J%:PROCb(x%,h%!j%-h%!S%,a$,0) ENDIF ENDPROC DEFPROCl:LOCALw%,E%,s%:f%!b%=50:f%!a%=550:f%!T%=0:f%!ha%=0:f%!G%=3:f%!F%=f%!G%:f%!Da%=1:f%!Ea%=f%!W%:f%!Fa%=1:s%=(f%!W%*H%!e%)+((f%!W%-1)*f%!Ba%):f%!e%=s%:f%!j%=f%!Ca%*H%!j%:FORE%=1TOf%!W%:FORw%=1TOf%!Ca% a%(E%,w%)=((w%+1)/2)+(f%!T%*10):NEXTw%:NEXTE%:ENDPROC DEFPROCm:LOCALw%,E%,x%,y%:FORE%=1TOf%!W%:x%=f%!b%+((E%-1)*(H%!e%+f%!Ba%)):FORw%=1TOf%!Ca%:y%=f%!a%+((w%-1)*H%!j%):IFa%(E%,w%)>0THEN a%(E%,w%)=((w%+1)/2)+(f%!T%*10) ENDIF IFa%(E%,w%)<>0THEN CASESGN(a%(E%,w%))OF WHEN-1:PROCD(x%,y%,E%,w%) WHEN1:PROCa("inv_"+STR$(a%(E%,w%)),x%,y%) ENDCASE ENDIF NEXTw%:NEXTE%:ENDPROC DEFPROCD(x%,y%,r%,c%):LOCALYa%:DIMYa% 16:a%(r%,c%)+=1:PROCa("inv_4",x%,y%):IFa%(r%,c%)=0THEN Ya%!b%=x%:Ya%!a%=y%:Ya%!e%=H%!e%:Ya%!j%=H%!j%:PROCc(Ya%) ENDIF ENDPROC DEFPROCn:LOCALM%,R%,T%,Za%,G%,i%,e$:G%=1:_a%=24:DIMM% 28,R% 28:PROCc(f%):PROCc(k%):IFo%!A%THEN PROCc(o%):o%!A%=FALSE ENDIF IFd%!A%THEN PROCc(d%):d%!A%=FALSE ENDIF k%!b%=FNc(k%,h%):M%!b%=0-H%!e%:M%!a%=k%!a%:M%!F%=G%:R%!b%=h%!e%:R%!a%=k%!a%:R%!F%=0-G%:q%!_%=0:PROCq(q%!_%):PROCa("base",k%!b%,k%!a%):T%=0:Za%=FALSE:REPEAT:M%!b%+=M%!F%:M%!_a%=M%!b%+H%!e%:R%!b%+=R%!F%:T%+=1:IFT%MOD20=0THENZa%=FNg(Za%) IFZa%THENe$="inv_11"ELSEe$="inv_1" PROCa(e$,M%!b%,M%!a%):PROCa(e$,R%!b%,R%!a%):PROCd(2):WAIT:UNTILM%!_a%>=k%!b%:FORi%=1TO10:PROCa("inv_1",M%!b%,M%!a%):PROCa("inv_1",R%!b%,R%!a%):PROCd(20):PROCa("inv_11",M%!b%,M%!a%):PROCa("inv_11",R%!b%,R%!a%):PROCd(20):WAIT:NEXTi%:FORi%=1TO3 PROCa("base_"+STR$(i%),k%!b%,k%!a%):PROCd(20):WAIT:NEXTi%:PROCd(20):PROCc(k%):ENDPROC DEFFNm(g$):LOCAL`a%,O%:O%=FNs(g$)+256:DIM`a% O%:!`a%=O%:`a%!4=0:`a%!8=16:`a%!12=16:SYSda%,256+10,`a%,g$:SYSda%,256+17,`a%:=`a% DEFPROCb(x%,y%,a$,ab%):LOCALi%,bb%:ga%=fa%:bb%=h%!J%:FORi%=1TOLEN(a$):PROCa(STR$(ASC(MID$(a$,i%,1))),x%+((i%-1)*bb%),y%):IFab%>0THENPROCd(ab%) NEXTi%:ga%=ea%:ENDPROC DEFPROCa(j$,x%,y%):LOCALcb%:SYSda%,256+24,ga%,j$TO,,cb%:SYSda%,512+34,ga%,cb%,x%,y%,0:ENDPROC DEFPROCc(p%):GCOL0,0TINT0:RECTANGLEFILLp%!b%,p%!a%,p%!e%,p%!j%:ENDPROC DEFFNb(db%,h%):=(h%/2)-(db%/2) DEFPROCi(a$,eb%):LOCALv%,y%:v%=LEN(a$)*h%!J%:y%=(h%!j%/2)-(h%!S%/2):PROCb(FNb(v%,h%!e%),y%,a$,eb%):ENDPROC DEFFNc(fb%,gb%):=(gb%!e%/2)-(fb%!e%/2) DEFFNh(fb%,gb%):LOCALx%,y%:fb%!b%=(gb%!e%/2)-(fb%!e%/2):fb%!a%=(gb%!j%/2)-(fb%!j%/2):=fb% DEFPROCe(a%):LOCALi%,hb%:hb%=h%!e%/N%!e%:FORi%=1TOhb%+1:PROCa("rail",(i%-1)*N%!e%,a%):NEXTi%:ENDPROC DEFPROCg(p%):LOCALx%,y%,ib%,jb%,kb%,lb%,i%:ib%=FNa(3,1):jb%=FNa(3,2):kb%=1:lb%=3:FORi%=1TOp%!e%:x%=p%!b%+((i%-1)*kb%):PROCa("box_x",x%,p%!a%):PROCa("box_x",x%,p%!a%+(p%!j%-(2*lb%))):NEXTi%:x%=p%!b%+(p%!e%-ib%):FORi%=1TOp%!j%-1 PROCa("box_y",p%!b%,p%!a%+((i%-1)*kb%)):PROCa("box_y",x%,p%!a%+((i%-1)*kb%)):NEXTi%:PROCa("box_bl",p%!b%,p%!a%):PROCa("box_tl",p%!b%,(p%!a%+p%!j%)-jb%):PROCa("box_br",p%!b%+(p%!e%-ib%),p%!a%):x%=(p%!b%+p%!e%)-ib%:y%=(p%!a%+p%!j%)-jb%:PROCa("box_tr",x%,y%):ENDPROC DEFPROCh:LOCALP%:DIMP% 20:P%!0=4:P%!4=5:P%!8=11:P%!12=12:P%!16=-1:SYS"OS_ReadVduVariables",P%,P%:h%!qa%=P%!0:h%!ra%=P%!4:h%!e%=(P%!8)+1<h%!sa%THENPROCh CASEmb%OF WHEN1:nb%=O%<>h%!qa% WHEN4:nb%=O%>>h%!ra% OTHERWISE:ERROR255,"Unknown FNconv_units() operation : "+STR$(mb%) ENDCASE =nb% DEFFNl(p%,pb%):LOCALqb%,rb%,sb%,tb%:sb%=FALSE:tb%=FALSE:IFp%!A%ANDpb%!A%THEN qb%=pb%!b%+pb%!e%:rb%=pb%!a%+pb%!j%:IFp%!b%>=pb%!b%ANDp%!b%=pb%!a%ANDp%!a%=t%:ENDPROC DEFFNg(n%):=n%EOR1 DEFFNq(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$ DEFFNe(a$,wb%,i$,xb%):LOCALyb%,b$:yb%=wb%-LEN(a$):IFyb%<=0THEN b$=LEFT$(a$,wb%) ELSE:IFxb%THEN b$=STRING$(wb%,i$):RIGHT$(b$,LEN(a$))=a$ ELSE:b$=a$+STRING$(yb%,i$) ENDIF ENDIF =b$ DEFFNo(a$,wb%):LOCALb$:b$=STRING$(wb%," "):RIGHT$(b$,LEN(a$))=a$:=b$ DEFFNf(d$):LOCALzb%:SYS"XOS_File",17,d$TOzb%:=zb% DEFFNs(d$):LOCALO%:SYS"XOS_File",5,d$TO,,,,O%:=O% DEFFNn(mb%,d$):LOCALI%,Ab%,Bb%,Cb%:Cb%=FALSE:CASEmb%OF WHEN0:I%=OPENUP(d$+"chkfile") WHEN1:I%=OPENUP(d$) OTHERWISE:ERROR255,"Unknown FNfs_writeable op :"+STR$(mb%) ENDCASE IFI%<>0THEN SYS"XOS_Args",254,I%TOBb%;Ab%:IF(Ab%AND1)THEN CLOSE#I%:ERROR255,"Unknown FNfs_writeable fault." ENDIF IF((Bb%AND(1<<7))<>0)THENCb%=TRUE CLOSE#I% ENDIF =Cb%