REMDTX:GregCook1Aug2002
J%=6482:D%=6518:IFPA.<6656STOP
M$="400":S%=0:ONERR.PROCe
DIMG%&57FF,O%17,N%10,I%79,W%5:OSC."/M.DTX"
OSC."TAPE":OSC."OPT1,2":P."At end of tape press BBC escape"'"Hit a key to start (and again at end):":IFGE.<>"#"P."#";
P."!/bin/sh"':REP.PROCl:H$=FNn(W$):Z$=FNv(W$):B%=FNd(G%,K%):IFS%PROCt(FNp+" NEXT "+Z$)
PROCu(M$,Z$,G%,K%):S%=-1:PROCs:U.0
DEFFNp:LOC.F$:F$="TAPE "+T$+" "+FNm(STR$~R%)+" "+FNm(STR$~Q%)+" "+FNm(STR$~V%):IFF%F$=F$+" Locked"
F$=F$+" CRC="+FNm(STR$~P%):=F$
DEFPROCt(F$):$I%=F$:P."# ";F$:PROCu(M$,U$+".inf",I%,LENF$):E.
DEFPROCs:T$=H$:U$=Z$:R%=L%:Q%=E%:P%=B%:V%=K%:F%=?J%:E.
DEFPROCe:LOC.H%:IFS%S%=0:PROCs:PROCt(FNp):P."# End":H%=GET
REPO.:P." at line ";ERL:END:E.
DEFPROCl:LOC.A%,X%,Y%:!N%=&D2222:!O%=N%:O%!2=G%:O%?6=0:X%=O%:Y%=O%DIV256:A%=&FF:?J%=0:CA.&FFDD:W$="":F.A%=0TO9:IFA%?946=0A%=10EL.W$=W$+CHR$(A%?946)
N.:L%=!958:E%=!962:K%=O%!10:E.:REMforDisc:L%=O%!2:E%=O%!6:K%=O%!10
DEFPROCu(B$,D$,F%,L%):LOC.N%,E%,T%,G%:P."uudecode<<'eoq'"'"begin ";B$;" ";D$;:REP.IFL%>45N%=45EL.N%=L%
P.'FNc(N%);:E%=F%+N%:G%=E%-2:F.T%=F%TOE%S.3:IFT%<G%P.FNc(?T%DIV4);FNc((?T%A.3)*16ORT%?1DIV16);FNc((T%?1A.15)*4ORT%?2DIV64);FNc(T%?2A.63);
IFT%=G%P.FNc(?T%DIV4);FNc((?T%A.3)*16ORT%?1DIV16);FNc((T%?1A.15)*4);
IFT%=E%-1P.FNc(?T%DIV4);FNc((?T%A.3)*16);
N.:F%=E%:L%=L%-N%:U.N%=0:P.'"end"'"eoq"':E.
DEFFNc(G%)=CHR$((G%+63)MOD64+33)
DEFFNd(S%,H%):LOC.X%,Y%:!W%=S%:W%!2=H%A.&FFFF:X%=W%:Y%=W%DIV256:CA.D%:=(W%!4A.&FFFF)
DEFFNn(B$):LOC.D%,F$:F$="":REP.D%=ASCB$:IFD%<33ORD%>126F$=F$+"_"EL.F$=F$+CHR$D%
B$=MID$(B$,2):U.B$="":=F$
DEFFNv(B$):LOC.D%,F$:F$="":REP.D%=ASCB$:IFD%<33ORD%>126F$=F$+"_"
IFD%>64A.D%<91F$=F$+CHR$(D%+32)
IFD%>32A.D%<65ORD%>90A.D%<127F$=F$+CHR$D%
B$=MID$(B$,2):U.B$="":=F$
DEFFNm(B$):IFLENB$<4REP.B$="0"+B$:U.LENB$=4
=B$
