>BACKUP v1.20 01-Dec-1998  Backup program 4 v1.15 28-12-1997: More display, tidier program (7 v1.16 11-01-1998: Countdown counts down (not up!) 2/ v1.18 20-03-1998: Command line parameters <- v1.19 10-08-1998: Missed OR&20 replaced F+ v1.20 01-12-1998: Can use disk images P4&87:A$=OS_GetEnv:quit$=cl(" -q",1):::end ZRcl("-?",0):"Syntax: "run$" ( ( ) (-t )":end d:init:"BACKUP PROGRAM 1.20. Buffer size: &";~maxlen%' n:Close:end x fs%=fs:params:backup:end  : ?init:OSWORD=&FFF1:OSGBPB=&FFD1:maxlen%=(--3000)&FFFF00 - ctrl%30,data%maxlen%:X%=ctrl%:Y%=X%256  : 'Close:fs%<>fs:"FX143,18,"+fs% "ch%=ch%:ch%:A%=ch%:ch%=0:#A%  #ݤh0(A%,N%)="0000000"+~A%,N%) #ݤfs:A%,X%,Y%,E%:=(&FFDA)&FF : ,Drd(Ad%,Dv%,Sc%,Nm%):dsk(&53,sdrv$): ,Dwr(Ad%,Dv%,Sc%,Nm%):dsk(&4B,ddrv$): *dsk(Cmd%,fn$):Derr%=0:Dv%=-1:gpb: #"FX143,18,4":Nm0%=Nm%:A%=&7F: "3Num%=Nm%256:Num%+(Sc%10)>10:Num%=10-(Sc%10) ,try%=tries%: 6=?X%=Dv%:X%!1=Ad%:X%?5=3:X%?6=Cmd%:X%?7=Sc%10:X%?8=Sc%10 @;X%!9=Num%32:X%?7>79:X%?7=X%?7-80:?X%=?X% 2: Side 2 J'13:Cmd%=&53:"Read "; "Write"; TI" "h0(Dv%,1)":"h0(Sc%,6)"+"h0(Nm%256,2)" "h0(tries%-try%,1)" "; ^6 OSWORD:Derr%=X%?10:try%=try%-1:Derr%=0 try%=0 h,Derr%:err(Derr%);(39-);:Nm%=&100: rlCmd%=&53 Derr%=0:;read%+Nm0%-Nm%;" bytes read"; Cmd%=&4B Derr%=0 ;write%-Nm0%+Nm%;" bytes left"; |<(39-);:Ad%=Ad%+Num%*256:Sc%=Sc%+Num%:Nm%=Nm%-Num%*256 &Nm%<1 Derr%:"FX143,18,"+fs%: : 1ݤerr(A%):A%<&08 A%>&18:="Error "+h0(A%,2) ="Clock errorID CRC errorData CRC errorNot readyWrite protectedTrack 0 not foundSector not found","010012243847620079",A%-7,2),"110012140915170016",A%-7,2)) : Dseek:?X%=Dv%:X%?5=1:X%?6=&69:X%?7=(Sc%10)(Sc%>10): OSWORD: : Agpb:Sc%=Sc%*256:A%=fn$,":"):A%:fn$,A%-1):fn$=fn$,A%+1) CCmd%=&53:A%=3:ch%=(fn$) A%=1:Sc%=0:ch%=(fn$) ch%=(fn$) W?X%=ch%:X%!1=Ad%:X%!5=Nm%:X%!9=Sc%: OSGBPB:#ch%:ch%=0:fs<>fs%:"FX143,18,"+fs%  :  params 9spt%=cl("-s",1):tries%=cl("-t",1):sdrv$=cl("",1) 5ddrv$=cl("",1):trk%=cl("",1):sides%=cl("",1) Bsdrv$="":trk%=-1:"Source drive: "sdrv$:"Dest. drive: "ddrv$ &#sdrv%=-1:sdrv$=1:sdrv%=sdrv$ 0#ddrv%=-1:ddrv$=1:ddrv%=ddrv$ :-1:same%:"Using same drive." Dtrk%=-1:"Number of tracks (80) "trk%:"Number of sides (2) "sides%:"Number of tries (10) "tries%:"Press a key to backup from "sdrv$" to "ddrv$;:祄1 ' Nspt%=0:spt%=10 Xtrk%=0:trk%=80 bsides%=0:sides%=2 ltries%=0:tries%=10 v :  backup 9read%=0:write%=2560*trk%*sides%:s%=0(sides%-1)*2 2 Gsect%=0:length%=trk%*2560::num%=maxlen%:num%>length%:num%=length% : Isame%:13"Insert source disk and press a key";:祄1:13;(39);13; MDrd(data%,(sdrv%+s%)(sdrv%<0),sect%-(spt%*trk%)*(s%=2 sdrv%<0),num%)  Derr%:num%=(num%&FFFE00)2 ,Derr%=0 num%<&100:num%<&100:num%=&100 (Derr%=0 num%=&100:read%=read%+num% : Hsame%:13"Insert dest. disk and press a key";:祄1:13;(39);13; MDwr(data%,(ddrv%+s%)(ddrv%<0),sect%-(spt%*trk%)*(s%=2 ddrv%<0),num%)  Derr%:num%=(num%&FFFE00)2  7Derr%=0 Derr%=&12 num%<&100:num%<&100:num%=&100 *Derr%=0 num%=&100:write%=write%-num%  CDerr%=&12:'"Destination disk write protected":length%=0:s%=99 *-sect%=sect%+num%256:length%=length%-num% 4(length%<1 Derr%=&12:s%:13;(39) >ddrv%>-1: H :Close:end R7A%=ddrv$,":"):A%:ddrv$,A%-1):ddrv$=ddrv$,A%+1) \4X%!2=&FFFB2200:A%=file(ddrv$,2):"Stamp "+ddrv$ f Close: p: zBݤfile(A$,A%):$data%=A$:?X%=data%:X%?1=data%256:=(&FFDD)&FF 6ݤOS_GetEnv:A$:A%=0:X%=1:os%=((&FFF4)&FF00)256 Aos%=6>&8000:ș"OS_GetEnv"A$:A$=A$,1+A$," ",1+A$," "))) os%=32:A$=$&100 /A$=0:?(P-3):A$=$&600 A$=0:A$=$&3800 -A%=A$+" "," "):run$=A$,A%-1):=A$,A%+1) : Hݤcl(l$,n%):l$="":I%=A$+" "," "):l$=A$,I%-1):A$=s(A$,I%+1)):=l$ l$=32 A$<>"":A$=" "+A$ bI%=A$,l$):l$="":I%>0n%>0:l$=A$,A$+" "," ",I%+1)+1):A$,I%,1)<>" ":l$=l$,l$+" "," ")-1) qI%:A$,I%,1)=" ":A$=A$,2+(A$<>32),I%-2-(I%=1)) I%:A$=A$,I%-1)+A$,A$+" "," ",A$+" "," ",I%)+l$)+1) "A$=s(A$):n%:=s(l$) =I%<>0 /ݤs(A$):A$,1)=" ":A$=A$,2):A$,1)<>" " +A$,1)=" ":A$=A$,A$-1):A$,1)<>" " =A$ : (os(A$):A$=""A$=42:A$: A$: $: .0end:quit$<>"":A$=quit$:quit$="":os(A$): 8: B(C) {H {h H {h * pq?risrpqs {۠{L `{{`{{H Ϋ{ {h`p{{{p`Q%=PAGE OLD RUN BASIC M