REM Acorn Invaders REM Packed by MH's BASCrunch v1.31c 30/1/08 On 05 Mar 2008 ONERRORREPORT:PRINT" at line ";ERL:END aa%=FALSE:c$=".":IFFNf(c$+"Resources.Gfx0")<>1THENaa%=TRUE IFFNf(c$+"Resources.Gfx1")<>1THENaa%=TRUE IFaa%THENERROR255,"File Missing!!" aa%=FALSE:ba%=0:ca%=TRUE:DIMa$(10),a%(10):DIMc%(10):SYS"OS_SWINumberFromString",,"OS_SpriteOp"TOda%:ea%=FNm(c$+"Resources.Gfx0"):fa%=FNm(c$+"Resources.Gfx1"):ga%=ea%:IFFNf(c$+"Resources.HiTable")<>1THEN IFNOTFNoTHENca%=FALSE ELSE:PROCp ENDIF b%=0:a%=4:e%=8:j%=12:E%=16:F%=20:w%=24:ha%=28:ia%=32:ja%=36:ka%=40:la%=44:ma%=48:na%=16:oa%=20:pa%=24:I%=28:S%=32:qa%=16:ra%=20:DIMf% 36,M% 24,A% 16:MODE28:OFF:PROCh:f%!I%=FNa(8,1):f%!S%=FNa(8,2)+7 M%!e%=FNa(6,1):M%!j%=FNa(6,2):M%!qa%=f%!j%-50:M%!ra%=30:REPEAT:CLS:aa%=FNp:IFNOTaa%THENCLS:PROCq UNTILaa%:CLS:A%!e%=220:A%!j%=40:A%=FNg(A%,f%):A%!a%-=3:PROCg(A%):PROCi("GOODBYE!!!",10):END DEFFNp:LOCALi%,B%,C%,m%,v%,d%,Q%,sa%:LOCALta%,J%,ua%,va%,wa%,x%,y%,V%,s$,a$:DIMB% 16,C% 16,m% 16:DIMd% 16,Q% 16,J% 16:B%!e%=FNa(100,1):B%!j%=FNa(40,2):B%!b%=FNc(B%,f%):B%!a%=800:C%!e%=FNa(150,1):C%!j%=FNa(40,2):C%!b%=FNc(C%,f%) C%!a%=B%!a%-C%!j%:m%!e%=630:m%!j%=500:m%!b%=FNc(m%,f%):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%) sa%=FNd(Q%,16):ta%=FNd(Q%,16):Q%!a%=m%!a%+100:sa%!a%=Q%!a%+Q%!j%+40:ta%!a%=sa%!a%+sa%!j%+40:J%!e%=FNa(20,1):J%!j%=FNa(20,2):J%!b%=m%!b%+150+FNc(J%,d%):ua%=FNd(J%,16):va%=FNd(J%,16):wa%=FNd(J%,16) :J%!a%=(m%!a%+m%!j%)-160:ua%!a%=J%!a%-60:va%!a%=ua%!a%-60:wa%!a%=va%!a%-100:PROCe(M%!qa%):PROCe(M%!ra%):FORi%=0-B%!e%TOB%!b%STEP5:PROCa("space",i%,B%!a%):PROCd(1):WAIT:NEXTi%:FORi%=f%!e%TOC%!b%STEP-5:PROCa("invaders",i%,C%!a%):PROCd(1):WAIT:NEXTi%:a$="PRESS SPACE TO PLAY" v%=LEN(a$)*f%!I%:y%=170:PROCb(FNb(v%,f%!e%),y%,a$,11):a$="OR Q TO QUIT":v%=LEN(a$)*f%!I%:y%-=f%!S%:PROCb(FNb(v%,f%!e%),y%,a$,11):WHILENOTINKEY(-99)ANDNOTINKEY(-17)ANDNOTINKEY(-82):PROCc(m%):a$="SCORE ADVANCE":v%=LEN(a$)*f%!I%:x%=m%!b%+FNb(v%,m%!e%):y%=m%!a%+m%!j%-20 PROCb(x%,y%,a$,0):a$="TABLE":y%-=f%!S%:v%=LEN(a$)*f%!I%: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",ta%!b%,ta%!a%):PROCb(x%,ta%!a%+12,"= 100 POINTS !",0) PROCa("inv_2",sa%!b%,sa%!a%):PROCb(x%,sa%!a%+12,"= 75 POINTS !",0):PROCa("inv_1",Q%!b%,Q%!a%):PROCb(x%,Q%!a%+12,"= 50 POINTS !",0):V%=FNh:IFV%=1THEN=TRUE IFV%=2THEN=FALSE PROCc(m%):a$="KEYBOARD CONTROLS":v%=LEN(a$)*f%!I%:x%=m%!b%+FNb(v%,m%!e%):y%=m%!a%+m%!j%-20:PROCb(x%,y%,a$,0):x%=J%!b%+J%!e%+10:PROCa("key_z",J%!b%,J%!a%):PROCb(x%,J%!a%+12,": MOVE LEFT",0):PROCa("key_x",ua%!b%,ua%!a%) PROCb(x%,ua%!a%+12,": MOVE RIGHT",0):PROCa("key_enter",va%!b%,va%!a%):PROCb(x%,va%!a%+12,": FIRE SHELL",0):PROCa("key_q",wa%!b%,wa%!a%):PROCb(x%,wa%!a%,": END GAME",0):V%=FNh:IFV%=1THEN=TRUE IFV%=2THEN=FALSE PROCc(m%):a$="TODAY'S":IFca%THENa$="ALL TIME" v%=LEN(a$)*f%!I%:x%=m%!b%+FNb(v%,m%!e%):y%=m%!a%+m%!j%-20:PROCb(x%,y%,a$,0):a$="HI SCORES":y%-=f%!S%:v%=LEN(a$)*f%!I%: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$)*f%!I%:x%=m%!b%+FNb(v%,m%!e%):PROCb(x%,y%,a$,0):y%-=2*f%!S%:FORi%=1TO10:IFi%<10THEN a$=" "+STR$(i%)+". " ELSE:a$=" "+STR$(i%)+". " ENDIF s$=FNi(a$(i%)):a$+=FNe(s$,8," ",FALSE):a$+=" .... ":a$+=FNn(STR$(a%(i%)),10):a$+=" ... "+FNn(STR$(c%(i%)),3):v%=LEN(a$)*f%!I%:x%=m%!b%+FNb(v%,m%!e%):PROCb(x%,y%-(i%*(f%!S%+5)),a$,0):NEXTi%:V%=FNh:IFV%=1THEN=TRUE IFV%=2THEN=FALSE ENDWHILE:IFINKEY(-17)THEN=TRUE =FALSE DEFFNh:LOCALt%:t%=TIME+750:REPEAT:IFINKEY(-82)THENPROCj UNTILTIME=t%ORINKEY(-17)ORINKEY(-99):IFINKEY(-17)THEN=1 IFINKEY(-99)THEN=2 =0 DEFPROCq:LOCALk%,o%,d%,h%,q%:LOCALN%:LOCALb%():LOCALX%,Y%,T%,xa%:LOCALya%,v%,a$,x%,y%:DIMk% 52,o% 52,d% 52,h% 52,N% 16,b%(10,6):DIMq% 16:X%=0:U%=4:Y%=8:za%=12:T%=ia%:xa%=ja%:G%=ka%:Aa%=la%:Ba%=ma%:k%!e%=FNa(30,1):k%!j%=FNa(15,2):k%!b%=FNc(k%,f%) k%!a%=50:k%!F%=6:k%!E%=k%!F%:N%!e%=FNa(20,1):N%!j%=FNa(20,2):d%!e%=FNa(40,1):d%!j%=FNa(20,2):d%!a%=M%!qa%-(10+d%!j%):d%!F%=5:d%!w%=FALSE:d%!la%=1:o%!e%=FNa(5,1):o%!j%=FNa(20,2):o%!w%=FALSE:o%!F%=10 q%!Y%=1:q%!U%=0:q%!X%=3:q%!za%=FALSE:h%!xa%=FNa(20,1):h%!Aa%=10:h%!Ba%=6:h%!w%=TRUE:PROCe(M%!qa%):PROCe(M%!ra%):PROCr(0,a%(1),q%!X%,q%!Y%):PROCk:PROCl:PROCa("base",k%!b%,k%!a%):REPEAT:ya%=FALSE:IFINKEY(-74)THENPROCs(k%!b%,k%!a%) IFINKEY(-98)THENPROCt:ya%=TRUE IFINKEY(-67)THENPROCu:ya%=TRUE IFINKEY(-82)THENPROCj IFINKEY(-17)THENPROCv IFINKEY(-35)THENPROCm IFya%THEN k%!b%+=k%!E%:PROCa("base",k%!b%,k%!a%) ENDIF IFq%!X%>0THEN PROCw:PROCx:PROCy ENDIF WAIT:UNTILq%!X%=0:A%!e%=240:A%!j%=40:A%=FNg(A%,f%):A%!a%-=3:PROCg(A%):PROCi("GAME OVER!!!",11):PROCd(750):IFNOTq%!za%THEN IFq%!U%>=a%(10)THEN PROCz(q%) ENDIF ENDIF ENDPROC DEFPROCt:IFk%!b%<=0THEN k%!b%=0 ELSE:k%!E%=0-k%!F% ENDIF ENDPROC DEFPROCu:IFk%!b%>=f%!e%-k%!e%THEN k%!b%=f%!e%-k%!e% ELSE:k%!E%=0+k%!F% ENDIF ENDPROC DEFPROCs(x%,y%):IFNOTo%!w%THEN o%!w%=TRUE:o%!b%=x%+(k%!e%/2):o%!a%=y%+k%!j% ENDIF ENDPROC DEFPROCj:REPEAT:UNTILNOTINKEY(-82):OSCLI"ScreenSave .Dump"+STR$(ba%):ba%+=1:ENDPROC DEFPROCv:q%!X%=0:q%!za%=TRUE:ENDPROC DEFPROCw:LOCALZ%,Ca%:Z%=ia%:IFo%!w%THEN o%!Z%=FALSE:IFo%!a%>=M%!qa%-o%!j%THEN o%!w%=FALSE:o%!Z%=TRUE ENDIF IFo%!Z%THEN Ca%=FNd(o%,52):Ca%!a%-=2:PROCc(Ca%) ELSE:PROCa("shell",o%!b%,o%!a%) ENDIF o%!a%+=o%!F% ENDIF ENDPROC DEFPROCx:LOCALW%,G%,Da%,Ea%:W%=ia%:G%=ja%:Da%=ka%:Ea%=la%:IFNOTd%!w%THEN IFFNj(4)ANDFNj(5)THEN d%!w%=TRUE:d%!ha%=FALSE:d%!Da%=0:d%!Ea%=0:IFFNj(50)THEN d%!E%=0-d%!F%:d%!b%=f%!e% ELSE:d%!E%=0+d%!F%:d%!b%=0-d%!e% ENDIF ENDIF ELSE:d%!Da%+=1:d%!G%+=1:IFd%!b%<=0-d%!e%ANDSGN(d%!E%)=-1THEN d%!W%=FALSE:d%!w%=FALSE:d%!G%=0:ENDPROC ENDIF IFd%!b%>f%!e%ANDSGN(d%!E%)=1THEN d%!W%=FALSE:d%!w%=FALSE:d%!G%=0:ENDPROC ENDIF IFNOTd%!ha%THEN IFFNk(o%,d%)THEN PROCc(o%):PROCa("saucer_2",d%!b%,d%!a%):d%!W%=d%!G%:d%!ha%=TRUE:o%!w%=FALSE:PROCf(500) ENDIF ELSE:IFFNk(o%,d%)THEN PROCc(o%):o%!w%=FALSE ENDIF ENDIF IFNOTd%!ha%THEN IFd%!Da%>=100THENd%!Da%=0 IFd%!Da%MOD10=0THEN d%!Ea%=FNl(d%!Ea%) ENDIF IFd%!Ea%=0THEN PROCa("saucer_0",d%!b%,d%!a%) ELSE:PROCa("saucer_1",d%!b%,d%!a%) ENDIF d%!b%+=d%!E% ELSE:IFd%!G%>=d%!W%+125THEN PROCc(d%):d%!w%=FALSE:d%!W%=FALSE:d%!G%=0:d%!Ea%=TRUE ELSE:IFd%!G%>=d%!W%+100THEN PROCa("saucer_5",d%!b%,d%!a%) ELSE:IFd%!G%>=d%!W%+75THEN PROCa("saucer_4",d%!b%,d%!a%) ELSE:IFd%!G%>=d%!W%+50THEN PROCa("saucer_3",d%!b%,d%!a%) ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF ENDPROC DEFPROCy:LOCALG%,Fa%,z%,D%,H%:G%=ka%:h%!G%+=1:IFh%!G%MOD5=0THENh%!T%=FNl(h%!T%) IFh%!G%>10000THENh%!G%=0 Fa%=h%!b%+h%!e%:IFFa%>=f%!e%THEN h%!E%=0-h%!F%:h%!a%-=5 ENDIF IFh%!b%<=0THEN h%!E%=0+h%!F%:h%!a%-=5 ENDIF IFh%!a%=k%!a%+k%!j%THEN PROCm:ENDPROC ENDIF IFFNk(o%,h%)THEN z%=N%!e%+h%!xa%:IF(o%!b%-h%!b%)MODz%<=N%!e%THEN D%=((o%!a%-h%!a%)DIVN%!j%)+1:H%=((o%!b%-h%!b%)DIVz%)+1:IFSGN(b%(H%,D%))=1THEN b%(H%,D%)=-5:PROCc(o%):o%!w%=FALSE:h%!ha%+=1:CASED%OF WHEN1,2:PROCf(50) WHEN3,4:PROCf(75) WHEN5,6:PROCf(100) ENDCASE ENDIF ENDIF ENDIF IFh%!ha%>=h%!Aa%*h%!Ba%THEN q%!Y%+=1:PROCn(q%!Y%):PROCc(h%):PROCk ENDIF h%!b%+=h%!E%:PROCl:ENDPROC DEFFNo:LOCALi%,K%,n$:FORi%=1TO10:IFi%MOD2=0THENn$="Software"ELSEn$="DynaByte" a$(i%)=FNi(n$):a%(i%)=(11-i%)*1000:c%(i%)=0:NEXTi%:K%=OPENOUT".Resources.HiTable":IFK%=0THEN=FALSE FORi%=1TO10:PRINT#K%,a$(i%),a%(i%):PRINT#K%,c%(i%):NEXTi%:CLOSE#K%:=TRUE DEFPROCp:LOCALi%,K%:K%=OPENIN".Resources.HiTable":FORi%=1TO10:INPUT#K%,a$(i%),a%(i%):INPUT#K%,c%(i%):NEXTi%:CLOSE#K%:ENDPROC DEFPROCA:LOCALi%,K%:K%=OPENOUT".Resources.HiTable":FORi%=1TO10:PRINT#K%,a$(i%),a%(i%):PRINT#K%,c%(i%):NEXTi%:CLOSE#K%:ENDPROC DEFPROCz(q%):LOCALi%,_%,Y%,U%,B%,C%,v%,x%,y%,g%,Ga%:LOCALA%,a$:DIMB% 16,C% 16,A% 16:U%=4:Y%=8:B%!e%=FNa(100,1):B%!j%=FNa(40,2):B%!b%=FNc(B%,f%):B%!a%=800:C%!e%=FNa(150,1):C%!j%=FNa(40,2):C%!b%=FNc(C%,f%):C%!a%=B%!a%-C%!j% _%=0:FORi%=10TO1STEP-1:IFq%!U%>=a%(i%)THEN_%=i% NEXTi%:FORi%=9TO_%STEP-1:a$(i%+1)=a$(i%):a%(i%+1)=a%(i%):c%(i%+1)=c%(i%):NEXTi%:a%(_%)=q%!U%:c%(_%)=q%!Y%:CLS:PROCe(M%!qa%):PROCe(M%!ra%):PROCa("space",B%!b%,B%!a%):PROCa("invaders",C%!b%,C%!a%):a$="Congratulations!!! You have earned the rank of " a$+=STR$(_%)+FNq(_%):v%=LEN(a$)*f%!I%:x%=FNb(v%,f%!e%):y%=C%!a%-170:PROCb(x%,y%,a$,0):A%!e%=165:A%!j%=40:A%=FNg(A%,f%):PROCg(A%):x%=A%!b%+20:y%=A%!a%+12:a$="":i%=1:Ga%=FALSE:OSCLI"FX 21,0":REPEAT:g%=GET:CASEg%OF WHEN13:Ga%=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 UNTILGa%:IFa$=""ORa$=" "THENa$="Anon ..." a$(_%)=FNi(a$):IFca%THENPROCA ENDPROC DEFFNr(Ha%):LOCALZ%:Z%=FALSE:IFHa%>=32ANDHa%<=126THENZ%=TRUE =Z% DEFPROCr(Ia%,Ja%,l%,r%):LOCALx%,a$:a$="SCORE :-"+FNe(STR$(Ia%),10," ",TRUE):PROCb(0,f%!j%-f%!S%,a$,0):a$="HI SCORE :-":a$+=FNe(STR$(Ja%),10," ",TRUE):x%=f%!e%-LEN(a$)*f%!I%:PROCb(x%,f%!j%-f%!S%,a$,0):PROCo(l%):PROCn(r%):ENDPROC DEFPROCo(Ka%):LOCALa$:PROCa("base",0,0):a$=" = "+STR$(Ka%):PROCb(k%!e%,0,a$,0):ENDPROC DEFPROCn(Ka%):LOCALx%,a$:a$="RACK :-"+FNe(STR$(Ka%),3,"0",TRUE):x%=f%!e%-LEN(a$)*f%!I%:PROCb(x%,0,a$,0):ENDPROC DEFPROCf(La%):LOCALx%,a$:q%!U%+=La%:a$="SCORE :-"+FNe(STR$(q%!U%),10," ",TRUE):PROCb(0,f%!j%-f%!S%,a$,0):IFq%!U%>a%(1)THEN a$="HI SCORE :-":a$+=FNe(STR$(q%!U%),10," ",TRUE):x%=f%!e%-LEN(a$)*f%!I%:PROCb(x%,f%!j%-f%!S%,a$,0) ENDIF ENDPROC DEFPROCk:LOCALD%,H%,s%:h%!b%=50:h%!a%=550:h%!T%=0:h%!ha%=0:h%!F%=3:h%!E%=h%!F%:s%=(h%!Aa%*N%!e%)+((h%!Aa%-1)*h%!xa%):h%!e%=s%:h%!j%=h%!Ba%*N%!j%:FORH%=1TOh%!Aa%:FORD%=1TOh%!Ba%:b%(H%,D%)=((D%+1)/2)+(h%!T%*10):NEXTD%:NEXTH%:ENDPROC DEFPROCl:LOCALD%,H%,x%,y%:FORH%=1TOh%!Aa%:x%=h%!b%+((H%-1)*(N%!e%+h%!xa%)):FORD%=1TOh%!Ba%:y%=h%!a%+((D%-1)*N%!j%):IFb%(H%,D%)>0THEN b%(H%,D%)=((D%+1)/2)+(h%!T%*10) ENDIF IFb%(H%,D%)<>0THEN CASESGN(b%(H%,D%))OF WHEN-1:PROCB(x%,y%,H%,D%) WHEN1:PROCa("inv_"+STR$(b%(H%,D%)),x%,y%) ENDCASE ENDIF NEXTD%:NEXTH%:ENDPROC DEFPROCB(x%,y%,r%,c%):LOCALMa%:DIMMa% 16:b%(r%,c%)+=1:PROCa("inv_4",x%,y%):IFb%(r%,c%)=0THEN Ma%!b%=x%:Ma%!a%=y%:Ma%!e%=N%!e%:Ma%!j%=N%!j%:PROCc(Ma%) ENDIF ENDPROC DEFPROCC:ENDPROC DEFPROCD:ENDPROC DEFPROCm:LOCALL%,R%,T%,Na%,F%,i%,d$:F%=1:Oa%=24:DIML% 28,R% 28:PROCc(h%):PROCc(k%):IFo%!w%THEN PROCc(o%):o%!w%=FALSE ENDIF IFd%!w%THEN PROCc(d%):d%!w%=FALSE ENDIF k%!b%=FNc(k%,f%):L%!b%=0-N%!e%:L%!a%=k%!a%:L%!E%=F%:R%!b%=f%!e%:R%!a%=k%!a%:R%!E%=0-F%:q%!X%=0:PROCo(q%!X%):PROCa("base",k%!b%,k%!a%):T%=0:Na%=FALSE:REPEAT:L%!b%+=L%!E%:L%!Oa%=L%!b%+N%!e%:R%!b%+=R%!E%:T%+=1:IFT%MOD20=0THENNa%=FNl(Na%) IFNa%THENd$="inv_11"ELSEd$="inv_1" PROCa(d$,L%!b%,L%!a%):PROCa(d$,R%!b%,R%!a%):PROCd(2):WAIT:UNTILL%!Oa%>=k%!b%:FORi%=1TO10:PROCa("inv_1",L%!b%,L%!a%):PROCa("inv_1",R%!b%,R%!a%):PROCd(20):PROCa("inv_11",L%!b%,L%!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(f$):LOCAL`%,O%:O%=FNs(f$)+256:DIM`% O%:!`%=O%:`%!4=0:`%!8=16:`%!12=16:SYSda%,256+10,`%,f$:SYSda%,256+17,`%:=`% DEFPROCb(x%,y%,a$,Pa%):LOCALi%,Qa%:ga%=fa%:Qa%=f%!I%:FORi%=1TOLEN(a$):PROCa(STR$(ASC(MID$(a$,i%,1))),x%+((i%-1)*Qa%),y%):IFPa%>0THENPROCd(Pa%) NEXTi%:ga%=ea%:ENDPROC DEFPROCa(i$,x%,y%):LOCALRa%:SYSda%,256+24,ga%,i$TO,,Ra%:SYSda%,512+34,ga%,Ra%,x%,y%,0:ENDPROC DEFPROCc(p%):GCOL0,0TINT0:RECTANGLEFILLp%!b%,p%!a%,p%!e%,p%!j%:ENDPROC DEFFNb(Sa%,f%):=(f%/2)-(Sa%/2) DEFPROCi(a$,Ta%):LOCALv%,y%:v%=LEN(a$)*f%!I%:y%=(f%!j%/2)-(f%!S%/2):PROCb(FNb(v%,f%!e%),y%,a$,Ta%):ENDPROC DEFFNc(Ua%,Va%):=(Va%!e%/2)-(Ua%!e%/2) DEFFNg(Ua%,Va%):LOCALx%,y%:Ua%!b%=(Va%!e%/2)-(Ua%!e%/2):Ua%!a%=(Va%!j%/2)-(Ua%!j%/2):=Ua% DEFPROCe(a%):LOCALi%,Wa%:Wa%=f%!e%/M%!e%:FORi%=1TOWa%+1:PROCa("rail",(i%-1)*M%!e%,a%):NEXTi%:ENDPROC DEFPROCg(p%):LOCALx%,y%,Xa%,Ya%,Za%,_a%,i%:Xa%=FNa(3,1):Ya%=FNa(3,2):Za%=1:_a%=3:FORi%=1TOp%!e%:x%=p%!b%+((i%-1)*Za%):PROCa("box_x",x%,p%!a%):PROCa("box_x",x%,p%!a%+(p%!j%-(2*_a%))):NEXTi%:x%=p%!b%+(p%!e%-Xa%):FORi%=1TOp%!j%-1 PROCa("box_y",p%!b%,p%!a%+((i%-1)*Za%)):PROCa("box_y",x%,p%!a%+((i%-1)*Za%)):NEXTi%:PROCa("box_bl",p%!b%,p%!a%):PROCa("box_tl",p%!b%,(p%!a%+p%!j%)-Ya%):PROCa("box_br",p%!b%+(p%!e%-Xa%),p%!a%):x%=(p%!b%+p%!e%)-Xa%:y%=(p%!a%+p%!j%)-Ya%: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%:f%!na%=P%!0:f%!oa%=P%!4:f%!e%=(P%!8)+1<f%!pa%THENPROCh CASE`a%OF WHEN1:ab%=O%<>f%!na% WHEN4:ab%=O%>>f%!oa% OTHERWISE:ERROR255,"Unknown FNconv_units() operation : "+STR$(`a%) ENDCASE =ab% DEFFNk(p%,cb%):LOCALdb%,eb%,fb%,gb%:fb%=FALSE:gb%=FALSE:IFp%!w%ANDcb%!w%THEN db%=cb%!b%+cb%!e%:eb%=cb%!a%+cb%!j%:IFp%!b%>=cb%!b%ANDp%!b%=cb%!a%ANDp%!a%=t%:ENDPROC DEFFNl(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$,kb%,h$,lb%):LOCALmb%,b$:mb%=kb%-LEN(a$):IFmb%<=0THEN b$=LEFT$(a$,kb%) ELSE:IFlb%THEN b$=STRING$(kb%,h$):RIGHT$(b$,LEN(a$))=a$ ELSE:b$=a$+STRING$(mb%,h$) ENDIF ENDIF =b$ DEFFNn(a$,kb%):LOCALb$:b$=STRING$(kb%," "):RIGHT$(b$,LEN(a$))=a$:=b$ DEFFNf(e$):LOCALnb%:SYS"XOS_File",17,e$TOnb%:=nb% DEFFNs(e$):LOCALO%:SYS"XOS_File",5,e$TO,,,,O%:=O%