DataMuseum.dk

Presents historical artifacts from the history of:

Jet Computer Jet80

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

See our Wiki for more about Jet Computer Jet80

Excavated with: AutoArchaeologist - Free & Open Source Software.


top - download

⟦325ab1936⟧ TextFile

    Length: 2176 (0x880)
    Types: TextFile
    Names: »CHECKSUM.PAS«

Derivation

└─⟦9c4522ab9⟧ Bits:30004602 COMAL-80 version 1.8 og COMPAS-80 V3.02
    └─ ⟦this⟧ »CHECKSUM.PAS« 

TextFile

  PROGRAM CKECKSUM;
æ PROGRAM DER SAETTER CHECKSUM PAA EN HEXFIL, DER ER NORMAL, MEN
  UDEN CHECKSUM PAA HVER LINIE                                          å
LABEL  SLUT;

TYPE
        STR2 = STRINGÆ2Å;

VAR
        FILNAVN:STRINGÆ14Å;
        HEXER:STRINGÆ17Å;
        I,XSUM,REST:INTEGER;
        INDHEX:STR2;
        INDFIL,UDFIL:TEXT;
        LINIE:STRINGÆ128Å;
        
FUNCTION BYTEUD(A:INTEGER):STR2;
BEGIN
BYTEUD:= HEXER Æ1+TRUNC(A/16)Å +HEXER Æ1+TRUNC(16*FRAC(A/16))Å ;
END;

FUNCTION OMHEX(XX:STR2):BYTE;
BEGIN
OMHEX:=16*(POS(XXÆ1Å,HEXER)-1 ) +POS(XXÆ2Å,HEXER)-1
END;

 

æ  ---------------   MAIN  PROGRAM  -------------------- å
BEGIN
HEXER:='0123456789ABCDEF';
WRITELN;WRITELN('      Checksum-program for intel hexfiler');
WRITE('INDFIL = ');READLN(FILNAVN);
ASSIGN(INDFIL,FILNAVN);
RESET(INDFIL); 

WRITE('UDFIL = ');READLN(FILNAVN);
ASSIGN(UDFIL,FILNAVN);
REWRITE(UDFIL); 
WHILE NOT EOF(INDFIL) DO
  BEGIN
  READLN(INDFIL,LINIE);
  IF (COPY(LINIE,1,3)=':00') AND (LEN(LINIE)=11) THEN
    BEGIN
    WRITELN(UDFIL,LINIE);
    WRITELN(LINIE,'   SLUT');
    GOTO SLUT;
    END;
  IF NOT ODD(LEN(LINIE)) THEN 
    BEGIN 
    WRITELN('DER ER IKKE ULIGE ANTAL TEGN !!!?');
    WRITELN('-> ',LINIE);
    GOTO SLUT;
    END; 
  IF LEN(LINIE)-9<>2*OMHEX(LINIEÆ2Å+LINIEÆ3Å) THEN
      BEGIN
      WRITELN('FORKERT ANTAL BYTES');
      WRITELN('-> ',LINIE);
      GOTO SLUT;
      END;
  IF LINIEÆ1Å<>':' THEN 
    BEGIN
    WRITELN('LINIE STARTER IKKE MED ":"');
    WRITELN('-> ',LINIE);
    GOTO SLUT;
    END;
  FOR I:=2 TO LEN(LINIE) DO
    IF POS(LINIEÆIÅ,HEXER)=0 THEN BEGIN
       WRITELN('ULOVLIGT TEGN ? FY!');
       WRITELN('-> ',LINIE);
       GOTO SLUT;
       END; 
  XSUM:=0;
   FOR I:=1 TO TRUNC((LEN(LINIE)-1)/2) DO
    XSUM:=XSUM+OMHEX(LINIEÆI*2Å+LINIEÆI*2+1Å);
  REST:=256-TRUNC(256.0001*FRAC(XSUM/256));        
  WRITELN(UDFIL,LINIE,BYTEUD(REST));
  WRITELN(LINIE,BYTEUD(REST),'     BYTES = ',TRUNC((LEN(LINIE)-9)/2));

  END;
SLUT:
CLOSE(INDFIL);
CLOSE(UDFIL);
END.
«eof»