10 'DCMPAR.BA 20 'Takes two disks and makes a list of 30 'all files that have different last 40 'modification dates, different file 50 'sizes, or are on only one disk. 60 'Uses routines developed in PRDIR.BA 45 'and BCKLST.CHP. 70 'By William Schneider [70146,1107] 80 'You may use any way you like. 90 MAXFILES=3:GOTO130 100 OPENXX$FOROUTPUTAS2:OPEN"LCD:"FOROUTPUTAS1 110 GOSUB450:IFL(0)=0THENCLOSE:RETURN 120 CC=C(L(0)):CL=L(L(0)):L(0)=L(0)-1:GOTO110 130 CLS:PRINT"BACKUP INDEX PROGRAM":INPUT" Mount original disk, press ENTER";XX$ 140 CLEAR7000:DIML(30),C(30),L$(10),NA$(100),NB$(100),DA$(100),DB$(100) 145 DS=18:AT$=DSKI$(0,0,5,0)+LEFT$(DSKI$(0,0,5,1),127) 150 XX$="ORIGZQ":GOSUB100:XX$="":D1$=MID$(DSKI$(0,0,1,0),2,9) 155 PRINT:PRINT"Finished with original":INPUT" Mount backup disk, press ENTER";XX$ 160 CL=0:CC=0:L(0)=0:DS=18:AT$=DSKI$(0,0,5,0)+LEFT$(DSKI$(0,0,5,1),127) 170 XX$="BCKDZQ":GOSUB100:D2$=MID$(DSKI$(0,0,1,0),2,9) 175 PRINT:PRINT"WAIT PATIENTLY while disks are compared" 180 OPEN"ORIGZQ"FORINPUTAS1:OPEN"BCKDZQ"FORINPUTAS2:OPEN"DISKZQ"FOROUTPUTAS3 190 FORN=1TO100:IFEOF(1)THENNA=N-1:GOTO200ELSELINEINPUT#1,LN$:NA$(N)=LN$:NEXT 200 FORN=1TO100:IFEOF(2)THENNB=N-1:GOTO210ELSELINEINPUT#2,LN$:NB$(N)=LN$:NEXT 210 M=NA 220 M=INT(M/2):IFM=0THEN260ELSEJ=1:K=NA-M 230 I=J 240 L=I+M:IFNA$(I)<=NA$(L)THEN250ELSELN$=NA$(I):NA$(I)=NA$(L):NA$(L)=LN$:I=I-M:IFI>0THEN240 250 J=J+1:IFJ>KTHEN220ELSE230 260 M=NB 270 M=INT(M/2):IFM=0THEN310ELSEJ=1:K=NB-M 280 I=J 290 L=I+M:IFNB$(I)<=NB$(L)THEN300ELSELN$=NB$(I):NB$(I)=NB$(L):NB$(L)=LN$:I=I-M:IFI>0THEN290 300 J=J+1:IFJ>KTHEN270ELSE280 310 FORI=1TONA:DA$(I)=MID$(NA$(I),11,18):NA$(I)=LEFT$(NA$(I),8):NEXT 320 FORI=1TONB:DB$(I)=MID$(NB$(I),11,18):NB$(I)=LEFT$(NB$(I),8):NEXT 330 PRINT#3,DATE$" "TIME$:PRINT#3,"":PRINT#3,"Diskname:";SPACE$(5);D1$;SPACE$(4);D2$ 335 PRINT#3,"Filename------Orig Size---Backup Size":PRINT#3,"" 340 N=1 350 FORI=1TONA 360 IFNA$(I)NB$(N)ANDNB$(N)<>""THENGOSUB430:N=N+1:GOTO360 380 IFNA$(I)>NB$(N)THENGOSUB440:NEXT:GOTO420 390 IFNA$(I)=NB$(N)ANDDA$(I)<>DB$(N)THENPRINT#3,LEFT$(NA$(I),6)+"."+RIGHT$(NA$(I),2);" ";DA$(I);" ";DB$(N) 400 N=N+1:NEXT:IFN>NBTHEN420 410 FORI=NTONB:GOSUB430:NEXT 420 CLOSE:MENU 430 PRINT#3,LEFT$(NB$(N),6)+"."+RIGHT$(NB$(N),2);SPACE$(16);DB$(N):RETURN 440 PRINT#3,LEFT$(NA$(I),6)+"."+RIGHT$(NA$(I),2);" ";DA$(I):RETURN 450 T=CC\3:S=(CC MOD 3)*6+1:FOR X=0 TO 2 STEP 2:DR$=DSKI$(0,T,S+X,0)+LEFT$(DSKI$(0,T,S+X,1),127):IF X THEN 470 460 L$(CL)=MID$(DR$,2,9) 470 FOR Y=1*DS+1 TO 12*DS+1 STEP DS:AT=ASC(MID$(DR$,Y,1)):IF AT=0 THEN 530 480 D$=MID$(DR$,Y+12,2):GOSUB 540:D$=MID$(DR$,Y+14,2):GOSUB 540 490 IF AT<>240 THEN 510: ELSE L(0)=L(0)+1:C(L(0))=ASC(MID$(DR$,Y+11,1)) 500 L(L(0))=CL+1:GOTO 530 510 U=ASC(MID$(DR$,Y+11,1)):FL=ASC(MID$(DR$,Y+10,1)):PRINT#2,MID$(DR$,Y+1,9)" "; 515 A=ASC(LEFT$(D$,1))+ASC(RIGHT$(D$,1))*256 518 PRINT#2,USING"##/##/## ";INT(A/2^12),INT(A/2^7)AND31,(A-INT(A/2^8)*2^8)AND127; 520 U=ASC(MID$(AT$,U+1,1)):IF U<240 THEN FL=FL+6*256:GOTO 520: ELSE FL=FL+(U-241)*256:PRINT#2,USING"#####";FL+1 530 NEXT Y,X:RETURN 540 A=ASC(LEFT$(D$,1))+ASC(RIGHT$(D$,1))*256 550 RETURN