0 REM:POWR-DOS Copy-to-DISK program 1 MAXFILES=2:CLEAR0,MAXRAM:CLEAR500,MAXRAM-FRE(0)+2000 2 R=MAXRAMC:IFPEEK(2)=125THENOB=65450:SM=23456:XR=60850ELSEOB=64798:SM=28449:XR=58960 3 LFILESV:DEFSTRA-F:DEFINTI-N:DIMF(40),X(40) 4 GOSUB30:ONERRORGOTO7:LFILESTO"qfwfq":OPEN"qfwfq"FORINPUTAS1 5 IFEOF(1)THEN6ELSELINEINPUT#1,A:IFLEN(A)<>17THEN5ELSENF=NF+1:GOTO5 6 CLOSE1:IFNF=0THEN10ELSEPRINT"Diskette Has"NF"files.":INPUT"Delete them (y/n)";A:IFINSTR("yY",A)THEN9ELSECLEAR0,MAXRAM:KILL"qfwfq.do":LFILESMENU 7 IFERR<>18THEN26 8 CLOSE:INPUT"Diskette Unreadable. Format (y/n)";A:IFINSTR("yY",A)THENLFILESFORMAT:RESUME10ELSEKILL"qfwfq.do":LFILESMENU 9 ONERRORGOTO26:FORX=HIMEMTOHIMEM+1240STEP31:POKEX,0:NEXT:POKEHIMEM+1240,128:FORX=HIMEM+1241TOHIMEM+1292:POKEX,0:NEXT:DSKO$1,0,HIMEM 10 GOSUB29:ONERRORGOTO26:LFILESTO"qfwfq":ONERRORGOTO27:OPEN"qfwfq"FORINPUTAS1:NF=0 11 IFEOF(1)THEN12ELSELINEINPUT#1,A:IFLEN(A)<>17THEN11ELSEIFMID$(A,7,1)<>"."THEN11ELSENF=NF+1:F(NF)=LEFT$(A,6)+MID$(A,8,2):X(NF)=VAL(RIGHT$(A,5)):GOTO11 12 CLOSE1:KILL"qfwfq.do":IFNF=0THENPRINT"No files on source diskette":CALLSM 13 FORI=1TONF:XT=XT+X(I):NEXT:PRINT"Total Swaps Necessary:";1+INT((XT-1)/(MAXRAM-HIMEM)):O=0:O2=0:IW=1 14 P=HIMEM 15 IR=IR+1:IFIR>NFTHENIR=IR-1:IFP>HIMEMTHEN21ELSECLEAR0,MAXRAM:BEEP:PRINT"Done.":FORI=1TO500:NEXT:LFILESMENU 16 I=IR:M=3:GOSUB32:IFO=0THEN19ELSEN=INT(O/128) 17 IFN>0THENFORI=1TON:CALLR+6,128,0:NEXT 18 N=O-N*128:IFN>0THENCALLR+6,N,0 19 IFX(IR)-O>MAXRAM-PTHENXC=MAXRAM-P:O=O+XCELSEXC=X(IR)-O:O=0 20 GOSUB34:IFP0THENXC=MAXRAM-PELSEXC=X(IW)-O2 24 GOSUB34:CALLR+15,2:IFIR=IWANDO>0THENO2=O:IR=IR-1:GOSUB29:GOTO14 25 O2=0:IW=IW+1:IFIW<=IRTHEN22ELSEIFIW<=NFTHENGOSUB29LINEGOTO14ELSE14 26 KILL"qfwfq.do" 27 IFERR=63THENPRINT"Write Protect Tab Open on Dest. Disk" 28 PRINT"ERROR! Can't Continue ... Press Key":A=INPUT$(1):CLEAR0,MAXRAM:LFILESMENU 29 A="Source":GOTO31 30 A="Destination" 31 BEEP:PRINT"Insert "A" Diskette; press key";:POKEOB,0:A=INPUT$(1):PRINT:RETURN 32 IFM=3THENQ=R+6:A="Reading"ELSEQ=R+9:IFM=2THENA="Appending"ELSEA="Writing" 33 B=F(I):Z=VARPTR(B):PRINTA" "B:CALLR+3,M,PEEK(Z+1)+256*PEEK(Z+2):RETURN 34 N=INT(XC/128):IFN>0THENFORI=1TON:CALLQ,128,P:P=P+128:NEXT 35 N=XC-128*N:IFN>0THENCALLQ,N,P:P=P+N 36 RETURN