10 DEFFNN="B.Clone" 20 src=&8C:dest=&8D 30 FORF%=0TO2STEP2 40 P%=&900 50 [OPTF% 55 .clone 60 LDY #0:.findparm1 LDA(&F2),Y:INY:CMP#13:BEQhelp:CMP#32:BNE findparm1:BEQ afsp 70 .help LDA#text AND&FF:STA src:LDA#text DIV256:STA dest:LDY#0:.helploop LDA (src),Y:JSR&FFEE:INY:BNEvdu:INC dest:.vdu CMP#0:BNE helploop:RTS 80 .afsp LDA(&F2),Y:CMP#32:BNEskp1:.skp1lp INY:LDA(&F2),Y:CMP#32:BEQskp1lp:.skp1 CMP#13:BEQhelp 90 LDA#32:LDX#16:.reslop DEX:STAbuffer,X:BNEreslop:.afsplp LDA(&F2),Y:STAbuffer,X:INY:INX:CMP#13:BEQ fault:CMP#32:BNE afsplp:BEQ afsp2:.fault BRK:EQUB 128:EQUS "No destination file specified":EQUB 0 100 .afsp2 LDA(&F2),Y:CMP#32:BNEskp12:.skp1lp2 INY:LDA(&F2),Y:CMP#32:BEQskp1lp2:.skp12 CMP#13:BEQ fault 110 LDA#32:LDX#16:.reslop2 DEX:STAbuffer2,X:BNEreslop2:.afsplp2 LDA(&F2),Y:STAbuffer2,X:INY:INX:CMP#13:BEQ end:CMP#32:BNE afsplp2 120 .end LDA #32:STA buffer2-1,X 125 LDX #15:.compare LDA buffer,X:ORA #32:STA block:LDA buffer2,X:ORA #32:CMP block:BNE unlike:DEX:BPL compare:BRK:EQUB 130:EQUS "Identical afsps":EQUB0:.unlike 130 LDA #buffer MOD256:STA block:LDA #buffer DIV 256:STA block+1:LDX #block MOD256:LDY #block DIV256:LDA #5:JSR &FFDD:CMP #0:BNE create:BRK:EQUB 129:EQUS"File not found":EQUB 0 140 .create LDX #3:.mloop LDA block+&A,X:STA block+&E,X:LDA #0:STA block+&A,X:DEX:BPL mloop 150 LDA #buffer2 MOD256:STA block:LDA #buffer2 DIV 256:STA block+1:LDX #block MOD256:LDY #block DIV256:LDA #0:JSR &FFDD 160 LDX #buffer MOD256:LDY #buffer DIV 256:LDA #&40:JSR &FFCE:STA block 170 LDX #buffer2 MOD256:LDY #buffer2 DIV 256:LDA #&C0:JSR &FFCE:STA block2 180 LDX #9:LDA #0:.zero STA block+3,X:STA block2+3:DEX:BPL zero 190 .copy LDA #sector MOD256:STA block+1:LDA #sector DIV256:STA block+2:LDA #&01:STA block+6:LDA #3:LDX #block MOD 256:LDY #block DIV 256:JSR &FFD1:BCS eof 192 .putthem LDA #sector MOD256:STA block2+1:LDA #sector DIV256:STA block2+2:LDA #&01:STA block2+6:LDA #1:LDX #block2 MOD 256:LDY #block2 DIV 256:JSR &FFD1:JMP copy 194 .eof LDA #sector MOD256:STA block2+1:LDA #sector DIV256:STA block2+2:LDA #0:STA block2+6:SEC:SBC block+5:STA block2+5:LDA #1:LDX #block2 MOD 256:LDY #block2 DIV 256:JSR &FFD1 200 LDA #0:LDY block:JSR &FFCE:LDY block2:JSR &FFCE 210 RTS 220 .text 230 EQUB10:EQUS"DFS file cloning utility v1.00 by Lars 0sterballe 1991":EQUW&0A0D 240 EQUB10:EQUS"*CLONE ":EQUW&0A0D:EQUB10 250 EQUS" is file to be cloned":EQUW&0A0D 260 EQUS" is the clone file":EQUW&0A0D 270 EQUW &000A 280 .buffer EQUS "XXXXXXXXXXXXXXXX":EQUB13 290 .buffer2 EQUS "XXXXXXXXXXXXXXXX":EQUB13 300 .block EQUW 0 310 EQUD 0 320 EQUD 0 330 EQUD 0 340 EQUD 0 341 .block2 EQUW 0 342 EQUD 0 343 EQUD 0 344 EQUD 0 345 EQUD 0 350 .sector 360 ] 370 NEXT 380 OSCLI"*SAVE Clone "+STR$~clone+" "+STR$~P%