REM Acorn Invaders REM Packed by MH's BASCrunch v1.31c 30/1/08 On 03 Mar 2008 ONERRORREPORT:PRINT" at line ";ERL:END _%=FALSE:c$=".":IFFNe(c$+"Resources.Gfx0")<>1THEN_%=TRUE IFFNe(c$+"Resources.Gfx1")<>1THEN_%=TRUE IF_%THENERROR255,"File Missing!!" _%=FALSE:aa%=0:ba%=TRUE:DIMa$(10),a%(10):DIMc%(10):SYS"OS_SWINumberFromString",,"OS_SpriteOp"TOca%:da%=FNl(c$+"Resources.Gfx0"):ea%=FNl(c$+"Resources.Gfx1"):fa%=da%:IFFNe(c$+"Resources.HiTable")<>1THEN IFNOTFNnTHENba%=FALSE ELSE:PROCp ENDIF d%=0:b%=4:f%=8:j%=12:E%=16:F%=20:w%=24:`%=28:ga%=32:ha%=36:ia%=40:ja%=44:ka%=48:la%=16:ma%=20:na%=24:I%=28:R%=32:oa%=16:pa%=20:DIMe% 36,L% 24,A% 16:MODE28:OFF:PROCi:e%!I%=FNa(8,1):e%!R%=FNa(8,2)+7 L%!f%=FNa(6,1):L%!j%=FNa(6,2):L%!oa%=e%!j%-50:L%!pa%=30:REPEAT:CLS:_%=FNo:IFNOT_%THENCLS:PROCq UNTIL_%:CLS:A%!f%=220:A%!j%=40:A%=FNf(A%,e%):A%!b%-=3:PROCg(A%):PROCj("GOODBYE!!!",10):END DEFFNo:LOCALi%,B%,C%,p%,v%,a$,x%,a%,P%,qa%:LOCALra%,t%,y%,s$:DIMB% 16,C% 16,p% 16:DIMa% 16,P% 16:B%!f%=FNa(100,1):B%!j%=FNa(40,2):B%!d%=FNc(B%,e%):B%!b%=800:C%!f%=FNa(150,1):C%!j%=FNa(40,2):C%!d%=FNc(C%,e%):C%!b%=B%!b%-C%!j% p%!f%=630:p%!j%=500:p%!d%=FNc(p%,e%):p%!b%=200:a%!f%=FNa(40,1):a%!j%=FNa(20,2):a%!d%=p%!d%+150:a%!b%=(p%!b%+p%!j%)-160:P%!f%=FNa(20,1):P%!j%=FNa(20,2):P%!d%=p%!d%+150+FNc(P%,a%):qa%=FNg(P%,16):ra%=FNg(P%,16) P%!b%=p%!b%+100:qa%!b%=P%!b%+P%!j%+40:ra%!b%=qa%!b%+qa%!j%+40:PROCe(L%!oa%):PROCe(L%!pa%):FORi%=0-B%!f%TOB%!d%STEP5:PROCa("space",i%,B%!b%):PROCd(1):WAIT:NEXTi%:FORi%=e%!f%TOC%!d%STEP-5:PROCa("invaders",i%,C%!b%):PROCd(1):WAIT:NEXTi%:a$="PRESS SPACE TO PLAY" v%=LEN(a$)*e%!I%:y%=170:PROCb(FNb(v%,e%!f%),y%,a$,11):a$="OR Q TO QUIT":v%=LEN(a$)*e%!I%:y%-=e%!R%:PROCb(FNb(v%,e%!f%),y%,a$,11):WHILENOTINKEY(-99)ANDNOTINKEY(-17)ANDNOTINKEY(-82):PROCc(p%):a$="SCORE ADVANCE":v%=LEN(a$)*e%!I%:x%=p%!d%+FNb(v%,p%!f%):y%=p%!b%+p%!j%-20 PROCb(x%,y%,a$,0):a$="TABLE":y%-=e%!R%:v%=LEN(a$)*e%!I%:x%=p%!d%+FNb(v%,p%!f%):PROCb(x%,y%,a$,0):x%=a%!d%+a%!f%+10:PROCa("saucer_0",a%!d%,a%!b%):PROCb(x%,a%!b%+10,"= 500 POINTS !",0):PROCa("inv_3",ra%!d%,ra%!b%):PROCb(x%,ra%!b%+12,"= 100 POINTS !",0) PROCa("inv_2",qa%!d%,qa%!b%):PROCb(x%,qa%!b%+12,"= 75 POINTS !",0):PROCa("inv_1",P%!d%,P%!b%):PROCb(x%,P%!b%+12,"= 50 POINTS !",0):t%=TIME+750:REPEAT:IFINKEY(-82)THENPROCh UNTILTIME=t%ORINKEY(-17)ORINKEY(-99):IFINKEY(-17)THEN=TRUE IFINKEY(-99)THEN=FALSE PROCc(p%):a$="TODAY'S":IFba%THENa$="ALL TIME" v%=LEN(a$)*e%!I%:x%=p%!d%+FNb(v%,p%!f%):y%=p%!b%+p%!j%-20:PROCb(x%,y%,a$,0):a$="HI SCORES":y%-=e%!R%:v%=LEN(a$)*e%!I%:x%=p%!d%+FNb(v%,p%!f%):PROCb(x%,y%,a$,0):y%=(p%!b%+p%!j%)-100:a$=" POS."+" PLAYER."+STRING$(12," ")+"SCORE.":a$+=STRING$(3," ")+"RACK." v%=LEN(a$)*e%!I%:x%=p%!d%+FNb(v%,p%!f%):PROCb(x%,y%,a$,0):y%-=2*e%!R%:FORi%=1TO10:IFi%<10THEN a$=" "+STR$(i%)+". " ELSE:a$=" "+STR$(i%)+". " ENDIF s$=FNh(a$(i%)):a$+=FNd(s$,8," ",FALSE):a$+=" .... ":a$+=FNm(STR$(a%(i%)),10):a$+=" ... "+FNm(STR$(c%(i%)),3):v%=LEN(a$)*e%!I%:x%=p%!d%+FNb(v%,p%!f%):PROCb(x%,y%-(i%*(e%!R%+5)),a$,0):NEXTi%:t%=TIME+750:REPEAT:IFINKEY(-82)THENPROCh UNTILTIME=t%ORINKEY(-17)ORINKEY(-99):IFINKEY(-17)THEN=TRUE IFINKEY(-99)THEN=FALSE ENDWHILE:IFINKEY(-17)THEN=TRUE =FALSE DEFPROCq:LOCALk%,m%,a%,h%,q%:LOCALM%:LOCALb%():LOCALV%,W%,S%,sa%:LOCALta%,v%,a$,x%,y%:DIMk% 52,m% 52,a% 52,h% 52,M% 16,b%(10,6):DIMq% 16:V%=0:T%=4:W%=8:ua%=12:S%=ga%:sa%=ha%:G%=ia%:va%=ja%:wa%=ka%:k%!f%=FNa(30,1):k%!j%=FNa(15,2):k%!d%=FNc(k%,e%) k%!b%=50:k%!F%=6:k%!E%=k%!F%:M%!f%=FNa(20,1):M%!j%=FNa(20,2):a%!f%=FNa(40,1):a%!j%=FNa(20,2):a%!b%=L%!oa%-(10+a%!j%):a%!F%=5:a%!w%=FALSE:a%!ja%=1:m%!f%=FNa(5,1):m%!j%=FNa(20,2):m%!w%=FALSE:m%!F%=10 q%!W%=1:q%!T%=0:q%!V%=3:q%!ua%=FALSE:h%!sa%=FNa(20,1):h%!va%=10:h%!wa%=6:h%!w%=TRUE:PROCe(L%!oa%):PROCe(L%!pa%):PROCr(0,a%(1),q%!V%,q%!W%):PROCk:PROCl:PROCa("base",k%!d%,k%!b%):REPEAT:ta%=FALSE:IFINKEY(-74)THENPROCs(k%!d%,k%!b%) IFINKEY(-98)THENPROCt:ta%=TRUE IFINKEY(-67)THENPROCu:ta%=TRUE IFINKEY(-82)THENPROCh IFINKEY(-17)THENPROCv IFINKEY(-35)THENPROCm IFta%THEN k%!d%+=k%!E%:PROCa("base",k%!d%,k%!b%) ENDIF IFq%!V%>0THEN PROCw:PROCx:PROCy ENDIF WAIT:UNTILq%!V%=0:A%!f%=240:A%!j%=40:A%=FNf(A%,e%):A%!b%-=3:PROCg(A%):PROCj("GAME OVER!!!",11):PROCd(750):IFNOTq%!ua%THEN IFq%!T%>=a%(10)THEN PROCz(q%) ENDIF ENDIF ENDPROC DEFPROCt:IFk%!d%<=0THEN k%!d%=0 ELSE:k%!E%=0-k%!F% ENDIF ENDPROC DEFPROCu:IFk%!d%>=e%!f%-k%!f%THEN k%!d%=e%!f%-k%!f% ELSE:k%!E%=0+k%!F% ENDIF ENDPROC DEFPROCs(x%,y%):IFNOTm%!w%THEN m%!w%=TRUE:m%!d%=x%+(k%!f%/2):m%!b%=y%+k%!j% ENDIF ENDPROC DEFPROCh:REPEAT:UNTILNOTINKEY(-82):OSCLI"ScreenSave .Dump"+STR$(aa%):aa%+=1:ENDPROC DEFPROCv:q%!V%=0:q%!ua%=TRUE:ENDPROC DEFPROCw:LOCALX%,xa%:X%=ga%:IFm%!w%THEN m%!X%=FALSE:IFm%!b%>=L%!oa%-m%!j%THEN m%!w%=FALSE:m%!X%=TRUE ENDIF IFm%!X%THEN xa%=FNg(m%,52):xa%!b%-=2:PROCc(xa%) ELSE:PROCa("shell",m%!d%,m%!b%) ENDIF m%!b%+=m%!F% ENDIF ENDPROC DEFPROCx:LOCALU%,G%,ya%,za%:U%=ga%:G%=ha%:ya%=ia%:za%=ja%:IFNOTa%!w%THEN IFFNi(4)ANDFNi(5)THEN a%!w%=TRUE:a%!`%=FALSE:a%!ya%=0:a%!za%=0:IFFNi(50)THEN a%!E%=0-a%!F%:a%!d%=e%!f% ELSE:a%!E%=0+a%!F%:a%!d%=0-a%!f% ENDIF ENDIF ELSE:a%!ya%+=1:a%!G%+=1:IFa%!d%<=0-a%!f%ANDSGN(a%!E%)=-1THEN a%!U%=FALSE:a%!w%=FALSE:a%!G%=0:ENDPROC ENDIF IFa%!d%>e%!f%ANDSGN(a%!E%)=1THEN a%!U%=FALSE:a%!w%=FALSE:a%!G%=0:ENDPROC ENDIF IFNOTa%!`%THEN IFFNj(m%,a%)THEN PROCc(m%):PROCa("saucer_2",a%!d%,a%!b%):a%!U%=a%!G%:a%!`%=TRUE:m%!w%=FALSE:PROCf(500) ENDIF ELSE:IFFNj(m%,a%)THEN PROCc(m%):m%!w%=FALSE ENDIF ENDIF IFNOTa%!`%THEN IFa%!ya%>=100THENa%!ya%=0 IFa%!ya%MOD10=0THEN a%!za%=FNk(a%!za%) ENDIF IFa%!za%=0THEN PROCa("saucer_0",a%!d%,a%!b%) ELSE:PROCa("saucer_1",a%!d%,a%!b%) ENDIF a%!d%+=a%!E% ELSE:IFa%!G%>=a%!U%+125THEN PROCc(a%):a%!w%=FALSE:a%!U%=FALSE:a%!G%=0:a%!za%=TRUE ELSE:IFa%!G%>=a%!U%+100THEN PROCa("saucer_5",a%!d%,a%!b%) ELSE:IFa%!G%>=a%!U%+75THEN PROCa("saucer_4",a%!d%,a%!b%) ELSE:IFa%!G%>=a%!U%+50THEN PROCa("saucer_3",a%!d%,a%!b%) ENDIF ENDIF ENDIF ENDIF ENDIF ENDIF ENDPROC DEFPROCy:LOCALG%,Aa%,z%,D%,H%:G%=ia%:h%!G%+=1:IFh%!G%MOD5=0THENh%!S%=FNk(h%!S%) IFh%!G%>10000THENh%!G%=0 Aa%=h%!d%+h%!f%:IFAa%>=e%!f%THEN h%!E%=0-h%!F%:h%!b%-=5 ENDIF IFh%!d%<=0THEN h%!E%=0+h%!F%:h%!b%-=5 ENDIF IFh%!b%=k%!b%+k%!j%THEN PROCm:ENDPROC ENDIF IFFNj(m%,h%)THEN z%=M%!f%+h%!sa%:IF(m%!d%-h%!d%)MODz%<=M%!f%THEN D%=((m%!b%-h%!b%)DIVM%!j%)+1:H%=((m%!d%-h%!d%)DIVz%)+1:IFSGN(b%(H%,D%))=1THEN b%(H%,D%)=-5:PROCc(m%):m%!w%=FALSE:h%!`%+=1:CASED%OF WHEN1,2:PROCf(50) WHEN3,4:PROCf(75) WHEN5,6:PROCf(100) ENDCASE ENDIF ENDIF ENDIF IFh%!`%>=h%!va%*h%!wa%THEN q%!W%+=1:PROCn(q%!W%):PROCc(h%):PROCk ENDIF h%!d%+=h%!E%:PROCl:ENDPROC DEFFNn:LOCALi%,J%,n$:FORi%=1TO10:IFi%MOD2=0THENn$="Software"ELSEn$="DynaByte" a$(i%)=FNh(n$):a%(i%)=(11-i%)*1000:c%(i%)=0:NEXTi%:J%=OPENOUT".Resources.HiTable":IFJ%=0THEN=FALSE FORi%=1TO10:PRINT#J%,a$(i%),a%(i%):PRINT#J%,c%(i%):NEXTi%:CLOSE#J%:=TRUE DEFPROCp:LOCALi%,J%:J%=OPENIN".Resources.HiTable":FORi%=1TO10:INPUT#J%,a$(i%),a%(i%):INPUT#J%,c%(i%):NEXTi%:CLOSE#J%:ENDPROC DEFPROCA:LOCALi%,J%:J%=OPENOUT".Resources.HiTable":FORi%=1TO10:PRINT#J%,a$(i%),a%(i%):PRINT#J%,c%(i%):NEXTi%:CLOSE#J%:ENDPROC DEFPROCz(q%):LOCALi%,Y%,W%,T%,B%,C%,v%,x%,y%,g%,Ba%:LOCALA%,a$:DIMB% 16,C% 16,A% 16:T%=4:W%=8:B%!f%=FNa(100,1):B%!j%=FNa(40,2):B%!d%=FNc(B%,e%):B%!b%=800:C%!f%=FNa(150,1):C%!j%=FNa(40,2):C%!d%=FNc(C%,e%):C%!b%=B%!b%-C%!j% Y%=0:FORi%=10TO1STEP-1:IFq%!T%>=a%(i%)THENY%=i% NEXTi%:FORi%=9TOY%STEP-1:a$(i%+1)=a$(i%):a%(i%+1)=a%(i%):c%(i%+1)=c%(i%):NEXTi%:a%(Y%)=q%!T%:c%(Y%)=q%!W%:CLS:PROCe(L%!oa%):PROCe(L%!pa%):PROCa("space",B%!d%,B%!b%):PROCa("invaders",C%!d%,C%!b%):a$="Congratulations!!! You have earned the rank of " a$+=STR$(Y%)+FNp(Y%):v%=LEN(a$)*e%!I%:x%=FNb(v%,e%!f%):y%=C%!b%-170:PROCb(x%,y%,a$,0):A%!f%=165:A%!j%=40:A%=FNf(A%,e%):PROCg(A%):x%=A%!d%+20:y%=A%!b%+12:a$="":i%=1:Ba%=FALSE:OSCLI"FX 21,0":REPEAT:g%=GET:CASEg%OF WHEN13:Ba%=TRUE WHEN8:i%-=1:a$=LEFT$(a$,i%-1) OTHERWISE:IFi%<9ANDFNq(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 UNTILBa%:IFa$=""ORa$=" "THENa$="Anon ..." a$(Y%)=FNh(a$):IFba%THENPROCA ENDPROC DEFFNq(Ca%):LOCALX%:X%=FALSE:IFCa%>=32ANDCa%<=126THENX%=TRUE =X% DEFPROCr(Da%,Ea%,l%,r%):LOCALx%,a$:a$="SCORE :-"+FNd(STR$(Da%),10," ",TRUE):PROCb(0,e%!j%-e%!R%,a$,0):a$="HI SCORE :-":a$+=FNd(STR$(Ea%),10," ",TRUE):x%=e%!f%-LEN(a$)*e%!I%:PROCb(x%,e%!j%-e%!R%,a$,0):PROCo(l%):PROCn(r%):ENDPROC DEFPROCo(Fa%):LOCALa$:PROCa("base",0,0):a$=" = "+STR$(Fa%):PROCb(k%!f%,0,a$,0):ENDPROC DEFPROCn(Fa%):LOCALx%,a$:a$="RACK :-"+FNd(STR$(Fa%),3,"0",TRUE):x%=e%!f%-LEN(a$)*e%!I%:PROCb(x%,0,a$,0):ENDPROC DEFPROCf(Ga%):LOCALx%,a$:q%!T%+=Ga%:a$="SCORE :-"+FNd(STR$(q%!T%),10," ",TRUE):PROCb(0,e%!j%-e%!R%,a$,0):IFq%!T%>a%(1)THEN a$="HI SCORE :-":a$+=FNd(STR$(q%!T%),10," ",TRUE):x%=e%!f%-LEN(a$)*e%!I%:PROCb(x%,e%!j%-e%!R%,a$,0) ENDIF ENDPROC DEFPROCk:LOCALD%,H%,s%:h%!d%=50:h%!b%=550:h%!S%=0:h%!`%=0:h%!F%=3:h%!E%=h%!F%:s%=(h%!va%*M%!f%)+((h%!va%-1)*h%!sa%):h%!f%=s%:h%!j%=h%!wa%*M%!j%:FORH%=1TOh%!va%:FORD%=1TOh%!wa%:b%(H%,D%)=((D%+1)/2)+(h%!S%*10):NEXTD%:NEXTH%:ENDPROC DEFPROCl:LOCALD%,H%,x%,y%:FORH%=1TOh%!va%:x%=h%!d%+((H%-1)*(M%!f%+h%!sa%)):FORD%=1TOh%!wa%:y%=h%!b%+((D%-1)*M%!j%):IFb%(H%,D%)>0THEN b%(H%,D%)=((D%+1)/2)+(h%!S%*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%):LOCALHa%:DIMHa% 16:b%(r%,c%)+=1:PROCa("inv_4",x%,y%):IFb%(r%,c%)=0THEN Ha%!d%=x%:Ha%!b%=y%:Ha%!f%=M%!f%:Ha%!j%=M%!j%:PROCc(Ha%) ENDIF ENDPROC DEFPROCC:ENDPROC DEFPROCD:ENDPROC DEFPROCm:LOCALK%,Q%,S%,Ia%,F%,i%,d$:F%=1:Ja%=24:DIMK% 28,Q% 28:PROCc(h%):PROCc(k%):IFm%!w%THEN PROCc(m%):m%!w%=FALSE ENDIF IFa%!w%THEN PROCc(a%):a%!w%=FALSE ENDIF k%!d%=FNc(k%,e%):K%!d%=0-M%!f%:K%!b%=k%!b%:K%!E%=F%:Q%!d%=e%!f%:Q%!b%=k%!b%:Q%!E%=0-F%:q%!V%=0:PROCo(q%!V%):PROCa("base",k%!d%,k%!b%):S%=0:Ia%=FALSE:REPEAT:K%!d%+=K%!E%:K%!Ja%=K%!d%+M%!f%:Q%!d%+=Q%!E%:S%+=1:IFS%MOD20=0THENIa%=FNk(Ia%) IFIa%THENd$="inv_11"ELSEd$="inv_1" PROCa(d$,K%!d%,K%!b%):PROCa(d$,Q%!d%,Q%!b%):PROCd(2):WAIT:UNTILK%!Ja%>=k%!d%:FORi%=1TO10:PROCa("inv_1",K%!d%,K%!b%):PROCa("inv_1",Q%!d%,Q%!b%):PROCd(20):PROCa("inv_11",K%!d%,K%!b%):PROCa("inv_11",Q%!d%,Q%!b%):PROCd(20):WAIT:NEXTi%:FORi%=1TO3 PROCa("base_"+STR$(i%),k%!d%,k%!b%):PROCd(20):WAIT:NEXTi%:PROCd(20):PROCc(k%):ENDPROC DEFFNl(f$):LOCALZ%,N%:N%=FNr(f$)+256:DIMZ% N%:!Z%=N%:Z%!4=0:Z%!8=16:Z%!12=16:SYSca%,256+10,Z%,f$:SYSca%,256+17,Z%:=Z% DEFPROCb(x%,y%,a$,Ka%):LOCALi%,La%:fa%=ea%:La%=e%!I%:FORi%=1TOLEN(a$):PROCa(STR$(ASC(MID$(a$,i%,1))),x%+((i%-1)*La%),y%):IFKa%>0THENPROCd(Ka%) NEXTi%:fa%=da%:ENDPROC DEFPROCa(i$,x%,y%):LOCALMa%:SYSca%,256+24,fa%,i$TO,,Ma%:SYSca%,512+34,fa%,Ma%,x%,y%,0:ENDPROC DEFPROCc(o%):GCOL0,0TINT0:RECTANGLEFILLo%!d%,o%!b%,o%!f%,o%!j%:ENDPROC DEFFNb(Na%,e%):=(e%/2)-(Na%/2) DEFPROCj(a$,Oa%):LOCALv%,y%:v%=LEN(a$)*e%!I%:y%=(e%!j%/2)-(e%!R%/2):PROCb(FNb(v%,e%!f%),y%,a$,Oa%):ENDPROC DEFFNc(Pa%,Qa%):=(Qa%!f%/2)-(Pa%!f%/2) DEFFNf(Pa%,Qa%):LOCALx%,y%:Pa%!d%=(Qa%!f%/2)-(Pa%!f%/2):Pa%!b%=(Qa%!j%/2)-(Pa%!j%/2):=Pa% DEFPROCe(b%):LOCALi%,Ra%:Ra%=e%!f%/L%!f%:FORi%=1TORa%+1:PROCa("rail",(i%-1)*L%!f%,b%):NEXTi%:ENDPROC DEFPROCg(o%):LOCALx%,y%,Sa%,Ta%,Ua%,Va%,i%:Sa%=FNa(3,1):Ta%=FNa(3,2):Ua%=1:Va%=3:FORi%=1TOo%!f%:x%=o%!d%+((i%-1)*Ua%):PROCa("box_x",x%,o%!b%):PROCa("box_x",x%,o%!b%+(o%!j%-(2*Va%))):NEXTi%:x%=o%!d%+(o%!f%-Sa%):FORi%=1TOo%!j%-1 PROCa("box_y",o%!d%,o%!b%+((i%-1)*Ua%)):PROCa("box_y",x%,o%!b%+((i%-1)*Ua%)):NEXTi%:PROCa("box_bl",o%!d%,o%!b%):PROCa("box_tl",o%!d%,(o%!b%+o%!j%)-Ta%):PROCa("box_br",o%!d%+(o%!f%-Sa%),o%!b%):x%=(o%!d%+o%!f%)-Sa%:y%=(o%!b%+o%!j%)-Ta%:PROCa("box_tr",x%,y%):ENDPROC DEFPROCi:LOCALO%:DIMO% 20:O%!0=4:O%!4=5:O%!8=11:O%!12=12:O%!16=-1:SYS"OS_ReadVduVariables",O%,O%:e%!la%=O%!0:e%!ma%=O%!4:e%!f%=(O%!8)+1<e%!na%THENPROCi CASEWa%OF WHEN1:Xa%=N%<>e%!la% WHEN4:Xa%=N%>>e%!ma% OTHERWISE:ERROR255,"Unknown FNconv_units() operation : "+STR$(Wa%) ENDCASE =Xa% DEFFNj(o%,Za%):LOCAL_a%,`a%,ab%,bb%:ab%=FALSE:bb%=FALSE:IFo%!w%ANDZa%!w%THEN _a%=Za%!d%+Za%!f%:`a%=Za%!b%+Za%!j%:IFo%!d%>=Za%!d%ANDo%!d%<_a%THENab%=TRUE IFo%!b%>=Za%!b%ANDo%!b%<`a%THENbb%=TRUE ENDIF =ab%ANDbb% DEFFNg(o%,N%):LOCALcb%,db%:DIMdb% N%:FORcb%=0TON%-4STEP4:db%!cb%=o%!cb%:NEXTcb%:=db% DEFFNi(n%):LOCALeb%:eb%=RND(100):=eb%<=n% DEFFNh(a$):LOCALi%,g$:FORi%=1TOLEN(a$):g$+=CHR$(ASC(MID$(a$,i%,1))EOR131):NEXTi%:=g$ DEFPROCd(n%):LOCALt%:t%=TIME+n%:REPEAT:UNTILTIME>=t%:ENDPROC DEFFNk(n%):=n%EOR1 DEFFNp(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$ DEFFNd(a$,fb%,h$,gb%):LOCALhb%,b$:hb%=fb%-LEN(a$):IFhb%<=0THEN b$=LEFT$(a$,fb%) ELSE:IFgb%THEN b$=STRING$(fb%,h$):RIGHT$(b$,LEN(a$))=a$ ELSE:b$=a$+STRING$(hb%,h$) ENDIF ENDIF =b$ DEFFNm(a$,fb%):LOCALb$:b$=STRING$(fb%," "):RIGHT$(b$,LEN(a$))=a$:=b$ DEFFNe(e$):LOCALib%:SYS"XOS_File",17,e$TOib%:=ib% DEFFNr(e$):LOCALN%:SYS"XOS_File",5,e$TO,,,,N%:=N%