10 REM *** Winchester to floppy backup (ASW Dec.'86) LJF Jan 87 *** 11REM"ƒWed,12 Mar 1987.00:00:49 20 DIM X% 20:MODE 7:HIMEM=&2C00:B%=HIMEM:ON ERROR GOTO 640 30 D%=1:WS%=0:WF%=79:FS%=0:FF%=79:A%=&72:Y%=X% DIV 256:OSWORD=&FFF1 40 ?X%=0:X%!1=B%:X%!5=0:X%!9=2:X%!11=0:PROCtitle 50 PRINT TAB(0,9);:VDU134;:PRINT"1. Backup Winchester to floppies." 60 PRINT TAB(0,11);:VDU134;:PRINT"2. Copy floppies back to Winchester." 70 VDU7:PRINT TAB(11,18);:VDU131;:INPUT"Enter 1 or 2 ";I% 80 IF I%<1 OR I%>2 THEN PROCclear(26,18,8):GOTO 70 ELSE PROCtitle 90PROCcursor(0) 91IFI%=1 M%=0 ELSE M%=4:REM source drive 100OSCLI("MOUNT "+STR$M%):X%?5=8:CALL OSWORD:X%!9=80:*mount 0 110 IF ?X% THEN PROCdiscerror:END 120 WSIZE=?(B%+&FE)*&10000+?(B%+&FD)*&100+?(B%+&FC) 130P%=?(B%+&1FE)-3:free=(?(B%+&100+P%)+(&100*?(B%+&100+P%+1))+&10000*?(B%+&100+P%+2)) 135USED=WSIZE-free 140N%=USED DIV &A00:IF USED MOD &A00>0 THEN N%=N%+1 150 P$="":IF N%>1 THEN P$="s" 160 PRINT TAB(4,4);:VDU134;:PRINT"You will need ";N%;" floppy disc";P$;"." 170 PRINT TAB(2,6);:VDU7,131;:PRINT"Insert disc ";D%;" and press ." 180 REPEAT UNTIL GET=13:PROCclear(24,13,13):PROCclear(24,15,13) 190 IF I%=1 PRINTTAB(1,8);:VDU134;:PRINT"Copying Winchester to floppies....." 200 IF I%=2 PRINTTAB(1,8);:VDU134;:PRINT"Copying floppies to Winchester....." 210 FOR L%=1 TO 32 220 IF I%=1 THEN PROCwinch(8):PROCfloppy(10) 230IF I%=2 THEN PROCfloppy(8):PROCwinch(10) 240 NEXT 250 D%=D%+1:FS%=0:FF%=79 260 IF D%>N% THEN 280 270 PROCclear(0,8,39):GOTO 170 280 PRINT TAB(10,19);:VDU130;:PRINT"Backup completed.":GOTO 640 290 DEFPROCwinch(WR%) 300 M%=0:X%?5=WR%:PROCinfo(WS%,WF%) 310 C%=WS%:X%?6=C% DIV &10000:X%?7=C% DIV &100:X%?8=C% 320 CALL OSWORD:IF ?X% THEN PROCdiscerror:END 330 ?X%=0:WS%=WS%+80:WF%=WF%+80 340 ENDPROC 350 DEFPROCfloppy(WR%) 360 M%=4:X%?5=WR%:PROCinfo(FS%,FF%) 370 C%=FS%:X%?6=C% DIV &10000:X%?7=C% DIV &100:X%?8=C% 380 X%?6=X%?6 OR &80 390 CALL OSWORD:IF ?X% THEN PROCdiscerror:END 400 ?X%=0:FS%=FS%+80:FF%=FF%+80 410 ENDPROC 420 DEFPROCdiscerror 430 PRINTTAB(2,19);:VDU7,129;:PRINT"Aborted. Disc fault ";?X%;" on drive ";M% 440 PRINT TAB(0,24);:PROCcursor(1) 450 ENDPROC 460 DEFPROCclear(X,Y,Z) 470 PRINT TAB(X,Y)STRING$(Z," ") 480 ENDPROC 490 DEFPROCtitle 500 CLS:FOR T%=1 TO 2:PRINT TAB(6);:VDU141,131,157,132; 510 PRINT"WINCHESTER ARCHIVER ";:VDU156:NEXT 520 ENDPROC 530 DEFPROCinfo(S%,F%) 540 S$=STR$~S%:F$=STR$~F% 550 IF LEN(S$)<>5 THEN S$="0"+S$:GOTO 550 560 IF LEN(F$)<>5 THEN F$="0"+F$:GOTO 560 570 IF WR%=8 THEN PRINT TAB(1,13);:VDU134;:PRINT"Reading from drive "; 580 IF WR%=10 THEN PRINT TAB(1,15);:VDU134;:PRINT"Writing to drive "; 590 PRINT;M%;",";:VDU133;:PRINTS$;" - ";F$ 600 ENDPROC 610 DEFPROCcursor(C) 620 VDU23,1,C;0;0;0; 630 ENDPROC 640VDU7:PROCcursor(1):PRINT TAB(0,24):*mount 0