> DisktoFile 0.02  Copy disk to image file 9 To do: update with USBtoFile code, add Pause to USB (: 2 "Copy disk to image file" <max%=(--1024)256:fs%=0 F2 ctrl% 31,data% 256*max%-1:X%=ctrl%:Y%=X%256 P: Z"Source drive: "drv% d8"LVFS/ADFS/DFS: "type$:type$=(type$,1)&DF) n"Output image file: "out$ x/osw%=&72:fsn%=8:type$="L":osw%=&62:fsn%=10 B type$<>"D":disk_err(adfs(data%,8,drv%,0,1,fsn%,osw%),0): size%=data%!&FC &FFFFFF = type$="D":disk_err(disk(data%,&53,drv%,0,1,1,1),1): / type$="D":size%=data%?7+256*(data%?6 3) a'"(RETURN to use &";~size%;")";11;13;"Total sectors:";5;:"&"A$::A$<>"":size%=("&"+A$) ;"Pause after errors? "pause$:pause$=(pause$,1)&DF)  :abort:: : 4out%=(out$): out%=0:"Can't create '"out$"'": fs%=fs:sect%=0  1num%=max%: sect%+num%>size%:num%=size%-sect% num%=read 313:"Writing ";h0(sect%,6);"+";h0(num%,2); "gbpb(2,out%,data%,num%*256,0) sect%=sect%+num% "sect%>=size% ,: 613:"Closing";14; @#out%:out%=0 J13:"Done";17 T ^: h ݤread rtry%=(type$="D"3): |A13:"Reading ";h0(drv%,1);":";h0(sect%,6);"+";h0(num%,2); #err%=attempt(num%):try%=try%-1  try%<1 err%=0  err%=0:=num% 3 pause$="Y":"Press SPACE to continue";:A%=: num%=num%2 try%=(type$="D"3): A13:"Reading ";h0(drv%,1);":";h0(sect%,6);"+";h0(num%,2); #err%=attempt(num%):try%=try%-1  try%<1 err%=0  err%=0:=num% 3 pause$="Y":"Press SPACE to continue";:A%=: try%=(type$="D"3): 713:"Reading ";h0(drv%,1);":";h0(sect%,6);"+01";  err%=attempt(1):try%=try%-1  try%<1 err%=0 =1 &: 0ݤattempt(num%) :> type$<>"D":err%=adfs(data%,8,drv%,sect%,num%,fsn%,osw%) DD type$="D" :err%=disk(data%,&53,drv%,sect%10,sect%10,num%,1) N 13:A%=disk_err(err%,sect%) X =err% b: l abort v fs%:"FX143,18,"+fs%:fs%=0   :  Disk access routines  ====================  ݤfs:A%,E%,Y%:=(&FFDA)&FF 7ݤdisk(addr%,cmd%,drv%,trk%,sec%,num%,den%):fs%,n% fs%=fs:fs%<>4:*FX143,18,4 $:n%=num%:sec%+n%>10:n%=10-sec% D:X%?0=drv%+den%*24+8+2*(trk%80):X%!1=addr%:X%?5=3-7*(cmd%>127) @X%?6=cmd%:X%?7=trk%80:X%?8=sec%:X%!9=n%&1E20:A%=127:&FFF1 YA%=X%?(7+X%?5):A%<>&10:addr%=addr%+n%*256:num%=num%-n%:sec%=(sec%+n%)10:trk%=trk%+1 +A%<>0num%<1:fs%<>4:"FX143,18,"+fs% =A%  5ݤadfs(addr%,cmd%,drv%,sect%,num%,fsn%,osw%):fs% )fs%=fs:fs%<>fsn%:"FX143,18,"+fsn%  DX%?0=1:X%!1=addr%:X%?5=cmd%:X%?6=drv%*32+((sect%&1F0000)65536) *9X%?7=((sect%&FF00)256):X%?8=sect%:X%!9=num%:X%!11=0 46A%=osw%:&FFF1:A%=?X%:fs%<>fsn%:"FX143,18,"+fs% >=A% Hݤdisk_err(A%,S%) R1A%:"Disk error ";h0(A%,2);" at ";h0(S%,6) \=A% f: p I/O routines z ============ %ݤh0(A%,N%):="00000000"+~A%,N%) 6ݤfx(A%,X%): Y%:Y%=X%256:=(&FFF4 &FFFF00)256 Tgbpb(A%,chn%,addr%,num%,ptr%):?X%=chn%:X%!1=addr%:X%!5=num%:X%!9=ptr%:&FFD1: