DataMuseum.dk

Presents historical artifacts from the history of:

MIKADOS

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

See our Wiki for more about MIKADOS

Excavated with: AutoArchaeologist - Free & Open Source Software.


top - download

⟦fbd11d804⟧

    Length: 5056 (0x13c0)
    Notes: Mikados TextFile, Mikados_K
    Names: »DUMP1«

Derivation

└─⟦f1b095e24⟧ Bits:30005320 Katalogisering af disketter
    └─ ⟦this⟧ »DUMP1« 

Text

PROGRAM DUMP1;  (* BR 15.03.85 *)
 
TYPE BLOCK = PACKED ARRAY (0..255) OF CHAR;
VAR DISCBUFFER: BLOCK;
    DISC, TRACK, SECTOR, IOCODE, ERRORCODE,
    I, J, K, L, P, CHARCODE, CIF1, CIF2: INTEGER;
    UDBUF: STRING;
    NUMMER, TRACK1, SECTOR1, TRACK2, SECTOR2, SEKTANTAL, ANT : INTEGER;
    
PROCEDURE PSCIU(VAR DISCBUFFER: BLOCK; DISC, TRACK, SECTOR,
                IOCODE: INTEGER; VAR ERRORCODE: INTEGER);
                                                EXTERNAL;
                                                
PROCEDURE WRITEHEX(I: INTEGER);
BEGIN
  P := P+1;
  IF I < 10 THEN UDBUF(P):=CHR(I+48) ELSE UDBUF(P):=CHR(I+55);
END;
 
 
PROCEDURE MAIN;
BEGIN
  UDBUF := ' 0';
  (*$R-*) UDBUF(0) := CHR(64) (*$R+*);
  FILLCHAR(UDBUF(3),62,' ');
  ERRORCODE := 0;
  ANT:=0;
 
  REPEAT
    WRITE('Indtast pladelagerbetegnelse: P');
    READLN;
    IF EOF THEN EXIT(MAIN);
  READ(DISC);
  UNTIL DISC IN (.1..3.);
  IF DISC=3 THEN SEKTANTAL:=16 ELSE SEKTANTAL:=32;
 
  WRITE('Fra spornummer : ');
  READLN;
  IF EOF THEN EXIT(MAIN);
  READ(TRACK1);
  WRITE('og sektornummer: ');
  READLN;
  IF EOF THEN EXIT(MAIN);
  READ(SECTOR1);
 
  WRITE('til spornummer : ');
  READLN;
  IF EOF THEN EXIT(MAIN);
  READ(TRACK2);
  WRITE('og sektornummer: ');
  READLN;
  IF EOF THEN EXIT(MAIN);
  READ(SECTOR2);
 
  FOR NUMMER:=TRACK1*SEKTANTAL+SECTOR1 TO TRACK2*SEKTANTAL+SECTOR2 DO
  BEGIN
    TRACK:=NUMMER DIV SEKTANTAL;
    SECTOR:=NUMMER MOD SEKTANTAL;
    IOCODE := 1;
    PSCIU(DISCBUFFER,DISC,TRACK,SECTOR,IOCODE,ERRORCODE);
    IF ERRORCODE <> 0 THEN EXIT(MAIN);
    WRITELN(LIST,'DUMP FRA DISK P',DISC:1,',   SPOR ',TRACK:3,
                 ',   SEKTOR ',SECTOR:2);
    WRITELN(LIST);
    FOR I := 0 TO 15 DO
    BEGIN
      P := 0;
      WRITEHEX(I);
      P := 5;
      J := I * 16;
      K := J + 15;
      FOR L := J TO K DO
      BEGIN
        IF L MOD 4 = 0 THEN P := P+1;
        P := P+1;
        CIF1 := ORD(DISCBUFFER(L)) MOD 128;
        IF (CIF1 <= 126) AND (CIF1 >= 32) THEN
          UDBUF(P) := CHR(CIF1)
        ELSE
          UDBUF(P) := '.';
      END;
      P := P+3;
      FOR L := J TO K DO
      BEGIN
        IF L MOD 4 = 0 THEN P:=P+1;
        CIF1 := ORD(DISCBUFFER(L)) DIV 16;
        CIF2 := ORD(DISCBUFFER(L)) MOD 16;
        WRITEHEX(CIF1);
        WRITEHEX(CIF2);
      END;
      WRITELN(LIST,UDBUF);
    END;
  ANT:=ANT+1;
  IF ANT=3 THEN BEGIN
    WRITELN(LIST,CHR(12));
    ANT:=0;
  END
  ELSE
    WRITELN(LIST);
  WRITE('Næste sektor tryk på <RETURN>  -  afslut tryk på <ESC> ');
  READLN;
  IF EOF THEN EXIT(MAIN);
  END;
END;
 
BEGIN
  CLEARSCREEN;
  WRITELN('UDSKRIVNING AF INDHOLD PÅ BAGGRUNDSLAGER.');
  WRITELN;
  MAIN;
  PAGE(LIST);
  IF ERRORCODE <> 0 THEN WRITELN ('ERRORCODE:', ERRORCODE:4);
  WRITELN('DUMP1 terminated');
END.