DataMuseum.dk

Presents historical artifacts from the history of:

CP/M

This is an automatic "excavation" of a thematic subset of
artifacts from Datamuseum.dk's BitArchive.

See our Wiki for more about CP/M

Excavated with: AutoArchaeologist - Free & Open Source Software.


top - metrics - download

⟦476a49f62⟧ TextFile

    Length: 1920 (0x780)
    Types: TextFile
    Names: »SAMMLIGN.PAS«

Derivation

└─⟦f0eb17f9f⟧ Bits:30009437 50004984
    └─⟦d0422dc08⟧ 
        └─⟦this⟧ »SAMMLIGN.PAS« 

TextFile

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»