10 REM 20 MODE7 30 PRINT"‘,,,†Catalogue Saver‘,,," 40 PRINT"ƒby Stephen Edwards" 50 PRINT 60 PRINT"‚This program saves catalogues for ‚emergency backups…(DFS only)" 70 DIMspace% &200,block% 12 80 *FX12,4 90 ONERROR GOTO280 100 REPEAT 110 REM 120 REPEAT:PRINT:PRINT''"‚1STORE CATALOG"''"‚2RETRIEVE CATALOGUE"''"‚ENTER CHOICE ";:O%=GET-48:UNTILO%=1 OR O%=2:PRINT;O% 130 PROCdrive 140 ON O%GOSUB160,470 150 UNTIL FALSE 160 REM 170 PRINT''"‚STORING CATALOGUE" 180 T%=0 190 FOR S%=0 TO 1 200 REM 210 PROCtransfer(T%,S%,space%+S%*256,&53) 220 NEXT 230 PROCsize 240 T%=Z% DIV 10 250 S%=Z% MOD 10:PROCtransfer(T%,S%,space%,&4B) 260 S%=S%+1:PROCtransfer(T%,S%,space%+256,&4B) 270 RETURN 280 VDU3,6:CLOSE#0:*FX4,0 290 *FX12,0 300 *FX229,0 310 MODE 7 320 REPORT:PRINT" at :"ERL 330 END 340 DEFPROCtransfer(track%,sector%,space%,type%) 350 block%?6=type% 360 ?block%=D%:block%!1=space% 370 block%?5=3:block%?7=track% 380 block%?8=sector%:block%?9=&21 390 X%=block% MOD 256:Y%=block% DIV 256 400 A%=&7F:CALL&FFF1 410 ENDPROC 420 DEFPROCsize 430 Z%=?(space%+&107)+((?(space%+&106))*256) MOD &1000 440 IF (Z% MOD 10)=0 THEN ?(space%+&107)=?(space%+&107)-2:Z%=Z%-2:PROCtransfer(0,1,space%+256,&4B) 450 ENDPROC 460 DEFPROCdrive:PRINT''"ENTER DRIVE :";:REPEAT:D%=GET-48:UNTILD%>-1 AND D%<4:PRINT T%;D%:ENDPROC 470 REM 480 PRINT"RETRIVE CATALOGUE" 490 PRINT'"ENTER DISC SIZE 40/80 :";:REPEAT:L%=GET-48:UNTIL L%=4 OR L%=8:PRINT'';L%;"0" 500 PROCtransfer(L%*10-1,8,space%,&53) 510 PROCtransfer(L%*10-1,9,space%+256,&53) 520 PROCtransfer(0,0,space%,&4B) 530 PROCtransfer(0,1,space%+256,&4B) 540 RETURN