|
|
DataMuseum.dkPresents historical artifacts from the history of: MIKADOS |
This is an automatic "excavation" of a thematic subset of
See our Wiki for more about MIKADOS Excavated with: AutoArchaeologist - Free & Open Source Software. |
top - download
Length: 2528 (0x9e0)
Types: TextFile
Notes: Mikados_K
Names: »DUMP.K«
└─⟦89d8689a3⟧ Bits:30003591 MIKADOS Pascal compiler (01.02.1982 E)
└─⟦this⟧ »DUMP.K«
PROGRAM DUMP; (* AN 800104 *)
TYPE BLOCK = PACKED ARRAY (0..255) OF CHAR;
VAR DISCBUFFER: BLOCK;
DISC, TRACK, SECTOR, IOCODE, ERRORCODE,
I, J, K, L, P, CHARCODE, DIG1, DIG2: INTEGER;
OUTBUF: STRING;
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 OUTBUF(P):=CHR(I+48) ELSE OUTBUF(P):=CHR(I+55);
END;
PROCEDURE MAIN;
BEGIN
OUTBUF := ' 0';
(*$R-*) OUTBUF(0) := CHR(64) (*$R+*);
FILLCHAR(OUTBUF(3),62,' ');
ERRORCODE := 0;
REPEAT
WRITE('Enter disk identification: P');
READLN;
IF EOF THEN EXIT(MAIN);
READ(DISC);
WRITE('Enter track number: ');
READLN;
IF EOF THEN EXIT(MAIN);
READ(TRACK);
WRITE('Enter sector number: ');
READLN;
IF EOF THEN EXIT(MAIN);
READ(SECTOR);
IOCODE := 1;
PSCIU(DISCBUFFER,DISC,TRACK,SECTOR,IOCODE,ERRORCODE);
IF ERRORCODE <> 0 THEN EXIT(MAIN);
WRITELN(LIST,'Dump from disk P',DISC:1,', track ',TRACK:3,
', sector ',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;
DIG1 := ORD(DISCBUFFER(L)) MOD 128;
IF (DIG1 <= 126) AND
(DIG1 >= 32) THEN
OUTBUF(P) := CHR(DIG1)
ELSE
OUTBUF(P) := '.';
END;
P := P+3;
FOR L := J TO K DO
BEGIN
IF L MOD 4 = 0 THEN P:=P+1;
DIG1 := ORD(DISCBUFFER(L)) DIV 16;
DIG2 := ORD(DISCBUFFER(L)) MOD 16;
WRITEHEX(DIG1);
WRITEHEX(DIG2);
END;
WRITELN(LIST,OUTBUF);
END;
WRITELN(LIST,CHR(12));
UNTIL FALSE;
END;
BEGIN
WRITELN('Dump one sector');
MAIN;
IF ERRORCODE <> 0 THEN WRITELN ('Error code:', ERRORCODE:4);
WRITELN('DUMP terminated');
END.
0x000…020 Line {l1=0x1e, l2=»PROGRAM DUMP; (* AN 800104 *)«, l3=0x1e}
0x020…04d Line {l1=0x2b, l2=»TYPE BLOCK = PACKED ARRAY (0..255) OF CHAR;«, l3=0x2b}
0x04d…065 Line {l1=0x16, l2=»VAR DISCBUFFER: BLOCK;«, l3=0x16}
0x065…092 Line {l1=0x2b, l2=» DISC, TRACK, SECTOR, IOCODE, ERRORCODE,«, l3=0x2b}
0x092…0c5 Line {l1=0x31, l2=» I, J, K, L, P, CHARCODE, DIG1, DIG2: INTEGER;«, l3=0x31}
0x0c5…0da Line {l1=0x13, l2=» OUTBUF: STRING;«, l3=0x13}
0x0da…0e0 Line {l1=0x04, l2=» «, l3=0x04}
0x0e0…11d Line {l1=0x3b, l2=»PROCEDURE PSCIU(VAR DISCBUFFER: BLOCK; DISC, TRACK, SECTOR,«, l3=0x3b}
0x11d…158 Line {l1=0x39, l2=» IOCODE: INTEGER; VAR ERRORCODE: INTEGER);«, l3=0x39}
0x158…193 Line {l1=0x39, l2=» EXTERNAL;«, l3=0x39}
0x193…1c5 Line {l1=0x30, l2=» «, l3=0x30}
0x1c5…1e6 Line {l1=0x1f, l2=»PROCEDURE WRITEHEX(I: INTEGER);«, l3=0x1f}
0x1e6…1ed Line {l1=0x05, l2=»BEGIN«, l3=0x05}
0x1ed…1fa Line {l1=0x0b, l2=» P := P+1;«, l3=0x0b}
0x1fa…23c Line {l1=0x40, l2=» IF I < 10 THEN OUTBUF(P):=CHR(I+48) ELSE OUTBUF(P):=CHR(I+55);«, l3=0x40}
0x23c…242 Line {l1=0x04, l2=»END;«, l3=0x04}
0x242…245 Line {l1=0x01, l2=» «, l3=0x01}
[…0x1…]
0x248…259 Line {l1=0x0f, l2=»PROCEDURE MAIN;«, l3=0x0f}
0x259…260 Line {l1=0x05, l2=»BEGIN«, l3=0x05}
0x260…273 Line {l1=0x11, l2=» OUTBUF := ' 0';«, l3=0x11}
0x273…29c Line {l1=0x27, l2=» (*$R-*) OUTBUF(0) := CHR(64) (*$R+*);«, l3=0x27}
0x29c…2bb Line {l1=0x1d, l2=» FILLCHAR(OUTBUF(3),62,' ');«, l3=0x1d}
0x2bb…2ce Line {l1=0x11, l2=» ERRORCODE := 0;«, l3=0x11}
0x2ce…2d8 Line {l1=0x08, l2=» REPEAT«, l3=0x08}
0x2d8…303 Line {l1=0x29, l2=» WRITE('Enter disk identification: P');«, l3=0x29}
0x303…30f Line {l1=0x0a, l2=» READLN;«, l3=0x0a}
0x30f…32b Line {l1=0x1a, l2=» IF EOF THEN EXIT(MAIN);«, l3=0x1a}
0x32b…33b Line {l1=0x0e, l2=» READ(DISC);«, l3=0x0e}
0x33b…35e Line {l1=0x21, l2=» WRITE('Enter track number: ');«, l3=0x21}
0x35e…36a Line {l1=0x0a, l2=» READLN;«, l3=0x0a}
0x36a…386 Line {l1=0x1a, l2=» IF EOF THEN EXIT(MAIN);«, l3=0x1a}
0x386…397 Line {l1=0x0f, l2=» READ(TRACK);«, l3=0x0f}
0x397…3bb Line {l1=0x22, l2=» WRITE('Enter sector number: ');«, l3=0x22}
0x3bb…3c7 Line {l1=0x0a, l2=» READLN;«, l3=0x0a}
0x3c7…3e3 Line {l1=0x1a, l2=» IF EOF THEN EXIT(MAIN);«, l3=0x1a}
0x3e3…3f5 Line {l1=0x10, l2=» READ(SECTOR);«, l3=0x10}
0x3f5…406 Line {l1=0x0f, l2=» IOCODE := 1;«, l3=0x0f}
0x406…440 Line {l1=0x38, l2=» PSCIU(DISCBUFFER,DISC,TRACK,SECTOR,IOCODE,ERRORCODE);«, l3=0x38}
0x440…467 Line {l1=0x25, l2=» IF ERRORCODE <> 0 THEN EXIT(MAIN);«, l3=0x25}
0x467…4a8 Line {l1=0x3f, l2=» WRITELN(LIST,'Dump from disk P',DISC:1,', track ',TRACK:3,«, l3=0x3f}
0x4a8…4d2 Line {l1=0x28, l2=» ', sector ',SECTOR:2);«, l3=0x28}
0x4d2…4e5 Line {l1=0x11, l2=» WRITELN(LIST);«, l3=0x11}
0x4e5…4fd Line {l1=0x16, l2=» FOR I := 0 TO 15 DO«, l3=0x16}
0x4fd…507 Line {l1=0x08, l2=» BEGIN«, l3=0x08}
0x507…516 Line {l1=0x0d, l2=» P := 0;«, l3=0x0d}
0x516…52a Line {l1=0x12, l2=» WRITEHEX(I);«, l3=0x12}
0x52a…539 Line {l1=0x0d, l2=» P := 5;«, l3=0x0d}
0x539…54d Line {l1=0x12, l2=» J := I * 16;«, l3=0x12}
0x54d…561 Line {l1=0x12, l2=» K := J + 15;«, l3=0x12}
0x561…57b Line {l1=0x18, l2=» FOR L := J TO K DO«, l3=0x18}
0x57b…588 Line {l1=0x0b, l2=» BEGIN«, l3=0x0b}
0x588…5b3 Line {l1=0x29, l2=» IF L MOD 4 = 0 THEN P := P+1;«, l3=0x29}
0x5b3…5ca Line {l1=0x15, l2=» P := P+1;«, l3=0x15}
0x5ca…5fb Line {l1=0x2f, l2=» DIG1 := ORD(DISCBUFFER(L)) MOD 128;«, l3=0x2f}
0x5fb…61d Line {l1=0x20, l2=» IF (DIG1 <= 126) AND«, l3=0x20}
0x61d…640 Line {l1=0x21, l2=» (DIG1 >= 32) THEN«, l3=0x21}
0x640…667 Line {l1=0x25, l2=» OUTBUF(P) := CHR(DIG1)«, l3=0x25}
0x667…679 Line {l1=0x10, l2=» ELSE«, l3=0x10}
0x679…69b Line {l1=0x20, l2=» OUTBUF(P) := '.';«, l3=0x20}
0x69b…6a7 Line {l1=0x0a, l2=» END;«, l3=0x0a}
0x6a7…6b8 Line {l1=0x0f, l2=» P := P+3;«, l3=0x0f}
0x6b8…6d2 Line {l1=0x18, l2=» FOR L := J TO K DO«, l3=0x18}
0x6d2…6df Line {l1=0x0b, l2=» BEGIN«, l3=0x0b}
0x6df…708 Line {l1=0x27, l2=» IF L MOD 4 = 0 THEN P:=P+1;«, l3=0x27}
0x708…738 Line {l1=0x2e, l2=» DIG1 := ORD(DISCBUFFER(L)) DIV 16;«, l3=0x2e}
0x738…768 Line {l1=0x2e, l2=» DIG2 := ORD(DISCBUFFER(L)) MOD 16;«, l3=0x2e}
0x768…785 Line {l1=0x1b, l2=» WRITEHEX(DIG1);«, l3=0x1b}
0x785…7a2 Line {l1=0x1b, l2=» WRITEHEX(DIG2);«, l3=0x1b}
0x7a2…7ae Line {l1=0x0a, l2=» END;«, l3=0x0a}
0x7ae…7cb Line {l1=0x1b, l2=» WRITELN(LIST,OUTBUF);«, l3=0x1b}
0x7cb…7d4 Line {l1=0x07, l2=» END;«, l3=0x07}
0x7d4…7ee Line {l1=0x18, l2=» WRITELN(LIST,CHR(12));«, l3=0x18}
0x7ee…7fe Line {l1=0x0e, l2=» UNTIL FALSE;«, l3=0x0e}
0x7fe…805 Line {l1=0x05, l2=» END;«, l3=0x05}
0x805…808 Line {l1=0x01, l2=» «, l3=0x01}
0x808…80f Line {l1=0x05, l2=»BEGIN«, l3=0x05}
0x80f…82e Line {l1=0x1d, l2=» WRITELN('Dump one sector');«, l3=0x1d}
0x82e…837 Line {l1=0x07, l2=» MAIN;«, l3=0x07}
0x837…877 Line {l1=0x3e, l2=» IF ERRORCODE <> 0 THEN WRITELN ('Error code:', ERRORCODE:4);«, l3=0x3e}
0x877…896 Line {l1=0x1d, l2=» WRITELN('DUMP terminated');«, l3=0x1d}
0x896…89c Line {l1=0x04, l2=»END.«, l3=0x04}
0x89c…8a0 00 00 00 00 ┆ ┆
0x8a0…8c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ┆ ┆
[…0x8…]
0x9c0…9e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 63 ┆ c┆