10 REM ADFTFR for transferring files on DFS discs to ADFS 20 REM based on AMCOM/ADFS transfer programs 30 REM by H.L.Clarke and S.B.Yeo 40 REM (C) 1991 50 MODE 7:HIMEM=&7000 60 PROCtitle 70 READ fparm,fbuff,ftrack,fsec,secnums,fresult,faddr,pparms,putdata,putlength,pointer,cstring 80 OSWRCH=&FFEE:OSNEWL=&FFE7:OSWORD=&FFF1:OSGBPB=&FFD1:OSFIND=&FFCE:oscli=&FFF7:U%=PAGE+&1800:V%=&7600:W%=V%-U% 90 PROCcode 100 CHAIN"DTOA2" 10000 DEFPROCcode 10010 FOR pass%=0 TO 2 STEP 2 10020 P%=V% 10030 [OPT pass% 10040 .centry:JSR transfer\sets up parameters for loading DFS file 10050 LDA &7BE6 10060 ROR A:ROR A:ROR A:ROR A 10070 AND #3:STA &7B86 10080 LDA #0:STA &7B82:STA &7B83:STA &7B87 10090 LDA &7BE4:STA &7B84 10100 LDA &7BE5:STA &7B85\store file length in !&7B84 10110 LDA &7BE6:AND #3 10120 STA &7B81 10130 LDA &7BE7:STA &7B80 10140 RTS 10150 \ 10160 \ 10170 \ 10180 \ 10190 \ 10200 \ 10210 \ 10220 \ 10230 \ 10240 \ 10250 .transfer:STX &70:STY &71:LDY #0\transfers catalogue filename entry for DFS file to &7BE8 onwards 10260 .tstring:LDA (&70),Y 10270 STA &7BE8,Y 10280 INY 10290 CPY #8 10300 BNE tstring 10310 STA &7BFF:LDA #&20:STA &7BEF\DFS directory in &7BFF 10320 .tcr:LDX #8 10330 .tcrloop:LDA &7BE0,X:CMP #&20 10340 BEQ crin:BCC bn 10350 INX:JMP tcrloop 10360 .crin:LDA #&0D:STA &7BE0,X 10370 INC &71:LDY #0\transfers catalogue address entry for DFS file to &7BE0 onwards 10380 .taddr:LDA (&70),Y 10390 STA &7BE0,Y 10400 INY 10410 CPY #8 10420 BNE taddr 10430 RTS 10440 .bn:BRK 10450 OPT FNerror(&83,"Illegal filename") 10460 \ 10470 BRK 10480 NOP:NOP 10490 NOP:NOP:NOP 10500 \ 10510 \ 10520 .name:JSR transfer\updates list of DFS directories 10530 LDX &7B7A 10540 LDA &7BFF:AND #&7F 10550 STA &7B90,X 10560 RTS 10570 \ 10580 .secread:LDA #&79:STA fbuff+1\loads DFS catalogue to &7900 10590 LDA #&22:STA secnums 10600 LDA #0:STA fbuff:STA fbuff+2:STA fbuff+3 10610 STA ftrack:STA fsec 10620 \ 10630 \ 10640 LDA #&7F\function 10650 LDX faddr:LDY faddr+1\point X and Y @ fparm 10660 JSR OSWORD 10670 LDA fresult:BNE re 10680 LDA &7A05:ROR A:ROR A:ROR A 10690 STA &7B90\number of DFS files stored in &7B90 10700 RTS 10710 \ 10720 \ 10730 .re:BRK 10740 OPT FNerror(&82,"Can't read catalogue") 10750 BRK 10760 \ 10770 \ 10780 .long:LDA fsec:CLC:ADC &7B1E\sets up 'ftrack' and 'fsec' for loading long file by 'stload' 10790 CMP #&0A:BNE sametr 10800 INC ftrack:LDA #0 10810 .sametr:STA fsec 10820 .stload:LDA &7B85:STA &7B20\main loading routine 10830 LDA &7B86:STA &7B21 10840 \ 10850 LDA #0:STA &7BFA\last load marker flag 10860 LDA &7B84:BEQ noadd 10870 LDA &7B20:CLC:ADC #1:STA &7B20 10880 LDA &7B21:ADC #0:STA &7B21 10890 \ 10900 .noadd:LDA #&0A:SEC:SBC fsec:STA &7B24 10910 \ 10920 .check:LDA &7B21:BNE morethan 10930 LDA &7B24:CMP &7B20:BCS lessthan 10940 .morethan:LDA &7B24:STA &7B1E:CLC:ADC #&20:STA secnums 10950 LDA &7B20:SEC:SBC &7B24:STA &7B20 10960 LDA &7B21:SBC #0:STA &7B21 10970 JMP opn 10980 .lessthan:LDA &7B20:STA &7B1E:CLC:ADC #&20:STA secnums:STA &7BFA 10990 .opn:LDA #&7F:LDX faddr:LDY faddr+1:JSR OSWORD 11000 LDA &7BFA:BNE endfile\last load marker set 11010 LDA #0:STA fsec:INC ftrack 11020 LDA fbuff+1:CLC:ADC &7B1E:STA fbuff+1 11030 LDA #&0A:STA &7B24:JMP check 11040 .endfile:RTS 11050 \ 11060 \ 11070 \ 11080 \ 11090 \ 11100 \ 11110 \ 11120 \ 11130 \ 11140 .subd:STA &7B29:LDA #0:STA &7BD0\makes list of ADFS sub-directories to be created 11150 .subloop:STX &72:LDA &7B90,X:CMP #&24:BEQ s2 11160 AND #&5F:STA &7B78:LDA &7BD0:BEQ notere 11170 LDX #1 11180 .nsloop:LDA &7BD0,X:CMP &7B78:BEQ s3 11190 CPX &7BD0:BEQ notere 11200 INX:JMP nsloop 11210 .notere:INC &7BD0:LDX &7BD0 11220 LDA &7B78:STA &7BD0,X 11230 .s3:LDX &72 11240 .s2:CPX &7B29:BEQ endsub 11250 INX:JMP subloop 11260 .endsub RTS 11270 \ 11280 \ 11290 .title:LDX #0\prints title of DFS disc 11300 .first:LDA &7900,X:JSR OSWRCH:INX:CPX #8:BNE first 11310 LDX #0 11320 .second:LDA &7A00,X:JSR OSWRCH:INX:CPX #4:BNE second 11330 JSR OSNEWL:JSR OSNEWL:RTS 11340 \ 11350 \ 11360 \ 11370 \ 11380 \ 11390 .command:LDX #(cstring MOD 256):LDY #(cstring DIV 256) 11400 JSR oscli 11410 RTS 11420 \ 11430 \ 11440 .putbyte:LDA #&C0:LDX #&60:LDY #&7B\save second or later part of long file to ADFS disc 11450 JSR OSFIND\open file for random access 11460 BNE fileok 11470 LDA #&FE:STA fresult:RTS 11480 .fileok:STA pparms 11490 LDX #(pparms MOD 256):LDY #(pparms DIV 256) 11500 LDA #1:JSR OSGBPB 11510 LDA #0:LDY #0:JSR OSFIND 11520 RTS 11530 \ 11540 ] 11550 NEXT 11560 ENDPROC 11570 DEFPROCtitle 11580 VDU31,0,3 11590 PROCband 11600 PRINT'''' 11610 FOR N%=0 TO 1 11620 PRINTCHR$(131);CHR$(141);STRING$(10," ");"DFS to ADFS" 11630 NEXT 11640 PRINT'''' 11650 FOR N%=0 TO 1 11660 PRINTCHR$(131);CHR$(141);STRING$(12," ");"transfer" 11670 NEXT 11680 PRINT'''' 11690 PROCband 11700 ENDPROC 11710 DEFPROCband 11720 FOR N%=0 TO 1 11730 PRINTCHR$(150);CHR$(154);CHR$(157);CHR$(147);STRING$(30,CHR$(255));" ";CHR$(156) 11740 NEXT 11750 ENDPROC 15000 DEFFNerror(err,err$) 15010 ?P%=err 15020 P%=P%+1 15030 $P%=err$ 15040 P%=P%+LEN(err$) 15050 =pass% 20000 DATA &7B10,&7B11,&7B17,&7B18,&7B19,&7B1A,&7B1B,&7B2A,&7B2B,&7B2F,&7B33,&78D0