PROGRAM SEKTCOPY; (* BR-19.02.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; 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;   WRITELN('Kopiering fra       : ');   WRITE(  'pladelagerbetegnelse: P');   READLN;   IF EOF THEN EXIT(MAIN);   READ(DISC);   WRITE(  'spornummer          : ');   READLN;   IF EOF THEN EXIT(MAIN);   READ(TRACK);   WRITE(  'sektornummer        : ');   READLN;   IF EOF THEN EXIT(MAIN);   READ(SECTOR);   IOCODE := 1;   PSCIU(DISCBUFFER,DISC,TRACK,SECTOR,IOCODE,ERRORCODE);   IF ERRORCODE <> 0 THEN BEGIN     WRITELN ('ERRORCODE:', ERRORCODE:4);     EXIT(MAIN);   END;   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;  WRITELN(LIST,CHR(12)); END; (*********************************************************************) PROCEDURE KOPIER;BEGIN   IF EOF THEN EXIT(KOPIER);   WRITELN('Kopiering til       : ');   WRITE(  'pladelagerbetegnelse: P');   READLN;   IF EOF THEN EXIT(KOPIER);   READ(DISC);   WRITE(  'spornummer          : ');   READLN;   IF EOF THEN EXIT(KOPIER);   READ(TRACK);   WRITE(  'sektornummer        : ');   READLN;   IF EOF THEN EXIT(KOPIER);   READ(SECTOR);   IOCODE := 2;   PSCIU(DISCBUFFER,DISC,TRACK,SECTOR,IOCODE,ERRORCODE);   IF ERRORCODE <> 0 THEN WRITELN ('ERRORCODE:', ERRORCODE:4);END; (*KOPIER*) (*********************************************************************) BEGIN  REPEAT    MAIN;    KOPIER;  UNTIL EOF;  WRITELN('SEKTCOPY terminated');END.