$ > CPMCOPY - Buffered file copy  J.G.Harston : (1usr0%=0: pr::Close_All:usr(usr0%):*BYE 2+max%=(--2048)-512: mem% max%:*FX229 2:iusr%=in$, 2,A%-2):in$ =in$, 1)+in$, A%):ousr%=usr0% ZA%=out$,":"):A%>2:ousr%=out$,2,A%-2):out$=out$,1)+out$,A%):iusr%=-1:iusr%=usr0% : @usr(iusr%):in%=(in$): in%=0:"File '"in$;"' not found";: ext%=#in%:ptr%=0 Wusr(ousr%):out%=(out$): out%=0:"Can't open '"out$"'";:usr(iusr%):#in%:in%=0: :  (num%=ext%-ptr%: num%>max%:num%=max% usr(iusr%): A%=0 num%-1 \ (A%&FF)=0:13;"Reading ";~ptr%+A%;"+";~num%-A%;", ";ext%-ptr%-A%;" bytes to go ";8;  num%:mem%?A%=#in%  A% usr(ousr%): A%=0 num%-1 "X (A%&FF)=0:13;"Writing ";~ptr%+A%;"+";~num%-A%;", ";ptr%+A%;" bytes so far ";8; , num%:#out%,mem%?A% 6 A% @ptr%=ptr%+num% J>13;"Writing ";~ptr%;"+0, ";ptr%;" bytes done";5;5,8); T ptr%>=ext% ^#out%:out%=0 husr(iusr%):#in%:in%=0 r |:  usr(A%) "A%>-1:?5=&C3:C%=32:E%=A%: 5  :  pr::  : Close_All .in%=in%:in%:A%=in%:in%=0:usr(iusr%):#A% 3out%=out%:out%:A%=out%:out%=0:usr(ousr%):#A%  : /ݤs(A$):A$,1)=" ":A$=A$,2):A$,1)<>" " +A$,1)=" ":A$=A$,A$-1):A$,1)<>" " =A$