5 REM SINGLE DRIVE VERSION ADAPTED BY C.J.RICHARDSON 10 REM DFS to ADFS transfer listing II - loaded as ADFTFR2 20 REM adapted from Amcom to ADFS transfer programs 30 REM by H.L.Clarke and S.B.Yeo 40 REM (C) 1991 50 MODE 7+128:HIMEM=U% 55 REPEAT:PRINT"1. Single drive. DFS side 0 only"'"2. Single drive. DFS sides 0 and 2"'"3. Twin drive. DFS sides 1 and 3":A$=GET$:UNTILVALA$>0ANDVALA$<4 56 IFA$="1"C%=0:G%=0:H%=0 57 IFA$="2"C%=1:G%=0:H%=2 58 IFA$="3"C%=1:G%=1:H%=3 60 B%=0:Q%=0 70 READ centry,transfer,name,secread,long,stload,subd,title,fparm,fbuff,ftrack,fsec,secnums,fresult,faddr,pparms,putdata,putlength,pointer,putbyte,command,cstring 80 ?&7B15=3:?&7B16=&53:!faddr=fparm 90 PRINT''"Printout of filenames of"'"transferred files ?" 100 INPUT yn$ 110 IF LEFT$(yn$,1)="Y" OR LEFT$(yn$,1)="y" THEN Q%=2 120 PRINT''"Insert capital letter to be first"'"character of ADFS sub-directories":REPEAT:INPUT F$:Z%=ASC(F$):UNTIL Z%>64 AND Z%<91 140 REM 180 PROCctad 190 *MOUNT0 200 FOR N%=B% TO (B%+C%):$cstring="CDIR "+CHR$(Z%)+STR$(N%):CALL command:NEXT 210 FOR D%=G%TOH%STEP 2 220 PROCctdi 230 ?fparm=D%:CALL secread 240 IF ?&7908=0 THEN B%=B%+1:GOTO 320 250 FOR E%=1 TO ?&7B90 260 PROCaddr 270 CALL name 280 NEXT 290 PRINT CHR$(Q%):PRINT'''"Transferring from drive ";STR$(D%):PRINT"Disc ";:CALL title:PRINT 300 PROCtransfer(1,?&7B90) 310 B%=B%+1 320 VDU3 330 NEXT D% 340 PRINT':PRINTTAB(18)"***"'':INPUT"Transfer another DFS disc ",yn$ 350 IF LEFT$(yn$,1)="Y" OR LEFT$(yn$,1)="y" THEN 140 360 PRINT''"The ADFS disc will need some editing."'"Note that files are now in ADFS"'"directories from ";CHR$(Z%);"0 to ";CHR$(Z%);STR$(B%-1);" inclusive." 370 END 10000 DEFPROCaddr 10010 X%=&7900+(8*E%):Y%=X%DIV256 10020 ?&7B7A=E% 10030 ENDPROC 10040 DEFPROCA 10050 PROCctad 10060 *MOUNT0 10070 $cstring="DIR "+CHR$(Z%)+STR$(B%):CALL command 10080 ENDPROC 10090 DEFPROCtransfer(X%,A%) 10100 CALL subd 10120 PROCA 10130 IF ?&7BD0=0 THEN 10170 10140 FOR F%=1 TO ?&7BD0 10145 IF ?(&7BD0+F%)<32 THEN ?(&7BD0+F%)=?(&7BD0+F%)+32 10150 $cstring="CDIR "+CHR$(?(&7BD0+F%)):CALL command 10160 NEXT 10170 FOR E%=X% TO A% 10180 PROCaddr 10190 PROCctdi 10200 CALL centry:?ftrack=!&7B80 DIV 10:?fsec=!&7B80 MOD 10 10210 !fbuff=HIMEM:PRINT CHR$(?&7BFF);".";$&7BE8;STRING$((18-LEN($&7BE8))," "); 10220 IF !&7B84>W% THEN PROClong:GOTO 10260 10230 R%=0:CALL stload:IF ?fresult<>0 THEN PROCde:GOTO10290 10240 PRINT"-> "; 10250 PROCA:PROCsave 10260 IF R%=1 THEN 10290 10270 PRINT CHR$(Z%);STR$(B%);".";F$ 10280 IF ?&7BFF>&80 THEN $cstring="ACCESS "+F$+" R":CALL command 10290 NEXT E% 10300 ENDPROC 10310 DEFPROCsave 10320 IF ?(&7B90+E%)=&24 THEN F$=$&7BE8 ELSE F$=CHR$(?(&7B90+E%))+"."+$&7BE8 10330 $cstring="SAVE "+F$+" "+STR$~HIMEM+" "+STR$~(HIMEM+!&7B84)+" "+FNadr(&7BE2,&C0)+" "+FNadr(&7BE0,&C):CALL command 10340 ENDPROC 10350 DEFPROClong 10360 L%=!&7B84:!&7B84=W%:M%=0:T%=0 10370 REM L%=total length of file yet unloaded, M% is marker for very long file (>2*W%),T%=PTR 10380 R%=0:CALL stload:IF ?fresult<>0 THEN PROCde:GOTO 10530 10390 PRINT"-> "; 10400 PROCA:PROCsave 10410 L%=L%-W%:IF L%>W% THEN M%=1 ELSE M%=0 10420 IF M%=1 THEN !&7B84=W% ELSE !&7B84=L% 10430 PROCctdi 10440 !fbuff=HIMEM:R%=0:CALL long:IF ?fresult<>0 THEN PROCde:GOTO 10530 10450 PROCA:T%=T%+W%:!pointer=T% 10460 !putdata=HIMEM:!putlength=!&7B84 10470 $&7B60=F$ 10480 R%=0:CALL putbyte:IF ?fresult<>0 THEN PROCde:GOTO 10530 10490 REM 10500 REM 10510 REM 10520 IF M%=1 THEN 10410 10530 ENDPROC 10540 DEFPROCde 10550 R%=1 10560 PRINTTAB(20)"not transferable" 10570 ENDPROC 11000 DEFPROCctdi:IFH%=3:OSCLI"DISC":ENDPROC ELSE VDU3:PRINT'"“INSERT DFS PRESS A KEY":VDUQ%:REPEATUNTILGET:OSCLI"DISC":ENDPROC:REM OSCLI"DR.1"???? 11010 DEFPROCctad:IFH%=3:OSCLI"ADFS":ENDPROC ELSE VDU3:OSCLI"FX21":PRINT'"’INSERT ADFS PRESS A KEY":VDUQ%:REPEATUNTILGET:OSCLI"ADFS":ENDPROC 15000 DEFFNadr(I%,J%) 15010 REM I% represents load address (&7BE0) or execution address (&7BE2) 15020 REM J% represents bits of &7BE6 which when set imply a second processor address (&C for load, &C0 for execution) 15030 IF (?&7BE6 AND J%)=0 THEN K%=0 ELSE K%=&FFFF0000 15040 A$=STR$~((!I%AND&FFFF)+K%) 15050 =A$ 20000 DATA &7600,&7635,&7688,&7697,&76E3,&76F6,&778E,&77D4,&7B10,&7B11,&7B17,&7B18,&7B19,&7B1A,&7B1B,&7B2A,&7B2B,&7B2F,&7B33,&77FD,&77F5,&78D0