|
|
DataMuseum.dkPresents historical artifacts from the history of: CP/M |
This is an automatic "excavation" of a thematic subset of
See our Wiki for more about CP/M Excavated with: AutoArchaeologist - Free & Open Source Software. |
top - metrics - download
Length: 1920 (0x780)
Types: TextFile
Names: »SAMMLIGN.PAS«
└─⟦f0eb17f9f⟧ Bits:30009437 50004984
└─⟦d0422dc08⟧
└─⟦this⟧ »SAMMLIGN.PAS«
PROGRAM SAMMENLIGN; æ$A+,R-,S+å
LABEL BREAK,EXIT;
TYPE
SECTOR = ARRAY(.0..127.) OF BYTE;
HEXSTRING = STRING(.4.);
FILENAME = STRING(.14.);
FUNCTION HEX(NUMBER,DIGITS: INTEGER): HEXSTRING;
CONST
HEXDIGIT: ARRAYÆ0..15Å OF CHAR = '0123456789ABCDEF';
VAR
D: INTEGER;
H: HEXSTRING;
BEGIN
HÆ0Å:=CHR(DIGITS);
FOR D:=DIGITS DOWNTO 1 DO
BEGIN
HÆDÅ:=HEXDIGITÆNUMBER AND 15Å;
NUMBER:=NUMBER SHR 4;
END;
HEX:=H;
END;
VAR
L,I : INTEGER;
CH: CHAR;
INNAME1,INNAME2: FILENAME;
OUTNAME:FILENAME;
BUFFER1,BUFFER2: SECTOR;
INFILE1,INFILE2: FILE;
OUTFILE:TEXT;
BLOKNUMMER:INTEGER;
UENS:BOOLEAN;
ADRESSE:INTEGER;
BEGIN
WRITE('Input file no 1s name? '); READLN(INNAME1);
IF INNAME1='' THEN GOTO EXIT;
WRITE('Input file no 2s name? '); READLN(INNAME2);
IF INNAME2='' THEN GOTO EXIT;
WRITE('Output file name? '); READLN(OUTNAME);
IF OUTNAME='' THEN GOTO EXIT;
ASSIGN(INFILE1,INNAME1); æ$I-å RESET(INFILE1) æ$I+å;
IF IORES>0 THEN
BEGIN
WRITELN(INNAME1,' does not exist'); GOTO EXIT;
END;
ASSIGN(INFILE2,INNAME2); æ$I-å RESET(INFILE2) æ$I+å;
IF IORES>0 THEN
BEGIN
WRITELN(INNAME2,' does not exist'); GOTO EXIT;
END;
ASSIGN(OUTFILE,OUTNAME);
ADRESSE:=128;
WHILE NOT EOF(INFILE2) AND NOT EOF(INFILE1) DO
BEGIN
ADRESSE:=ADRESSE+128;
BLOCKREAD(INFILE1,BUFFER1,1);
BLOCKREAD(INFILE2,BUFFER2,1);
UENS:=FALSE;
FOR L:=0 TO 127 DO
BEGIN
UENS:=(BUFFER1(.L.)<>BUFFER2(.L.));
IF UENS THEN WRITELN(OUTFILE,HEX(ADRESSE+L,4),HEX(BUFFER1(.L.),2):3,
HEX(BUFFER2(.L.),2):3);
END;
IF KEYPRESS THEN
BEGIN
READ(KBD,CH); IF CH=^C THEN GOTO BREAK;
READ(KBD,CH); IF CH=^C THEN GOTO BREAK;
END;
END;
BREAK:
CLOSE(INFILE1); CLOSE(INFILE2);
EXIT:
END.
«eof»