(**************************************************** * * CHAR COMPARE PROGRAM * * Written by Bob Harsch during a debugging * excercise. It was done hastily but it was such a * good idea that I cleaned it and now its part of our * utilities. * * Donated to the Pascal/Z Users Group, Oct 1980 * Modified by Charlie Foster ***************************************************** * * INSTRUCTIONS * * The two files that you want to compare need to * have their names changed to F1.DAT and F2.DAT. Then * all you have to do is type PCOMPAR. It will go thro * the entire program and list all differences and list * those in HEX, DECIMAL and ASCII. The line numbers are * in reference to 100H. * ******************************************************) PROGRAM COMPAREFILES; TYPE BYTE=0..255; VAR F1,F2 : FILE OF BYTE; B1,B2 : BYTE; COUNT : INTEGER; PROCEDURE HEX(N: INTEGER); VAR I : INTEGER; HEXDIGIT : ARRAY [1..4] OF INTEGER; BEGIN FOR I := 1 TO 4 DO BEGIN HEXDIGIT[I] := N MOD 16; N := N DIV 16 END; FOR I:= 4 DOWNTO 1 DO IF HEXDIGIT[I] > 9 THEN WRITE(CHR( ORD('A')+HEXDIGIT[I]-10 ):1) ELSE WRITE(HEXDIGIT[I]:1); WRITE(' '); END; (* OF HEX *) FUNCTION CHRCHK(B: BYTE): CHAR; BEGIN IF (B < 32) OR (B > 126) THEN CHRCHK := '.' ELSE CHRCHK := CHR(B) END; (* OF CHRCHK *) BEGIN (* MAIN PROGRAM *) RESET('F1.DAT',F1); RESET('F2.DAT',F2); WRITELN('HEX-ADDR HEX-B1-B2 DEC-B1-B2 CHR1-CHR2'); WRITELN('--------------------------------------------'); COUNT := 256; REPEAT READ(F1,B1); READ(F2,B2); IF B1 <> B2 THEN BEGIN HEX(COUNT); WRITE(' ':5); HEX(B1); HEX(B2); WRITE(' ',B1:3,' ',B2:3); WRITE(' ',CHRCHK(B1),' ',CHRCHK(B2)); WRITELN; END; COUNT := COUNT + 1; UNTIL EOF(F1) OR EOF(F2); END.