DataMuseum.dk

Presents historical artifacts from the history of:

CR80 Hard and Floppy Disks

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

See our Wiki for more about CR80 Hard and Floppy Disks

Excavated with: AutoArchaeologist - Free & Open Source Software.


top - download
Index: ┃ C i

⟦ffbb6a0ae⟧ CRfs1, ileave2,6

    Length: 256256 (0x3e900)
    Types: CRfs1, ileave2,6
    Notes: Cr80S1Fs

Derivation

└─⟦c3d2d1bd4⟧ Bits:30005133 8" CR80 Floppy CR80FD_0093 ( CRD3588 CPU-SCM-TEST Boot Module )
    └─⟦this⟧ 

Namespace

name artifact - - - - - - - - - - - -
0x0000 0x0000 0x0000 0x0000 0x0000 0x0064 0x0000 0x0000 0x0001 0x0066 0x0000 0x0064 CPUSCM ⟦32a8a038e⟧

Disk picture

  Unclaimed
  ?

OctetView

0x00000…00080 UnusedSector ┆d   f d     ░░░░░░░░░░░░░░░░        08 v        d       f   d   i S   d ~ H H i S   d     Y O \   a             B O O T       E ┆
0x00080…00100 UnusedSector ┆                           ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░┆
0x00100…00180 UnusedSector ┆░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░    ┆
0x00180…001c0 DirEnt {filename=»«, kind=0x0600, de04=0x0000, de05=0x0000, de06=0x0000, de07=0x0000, cluster=0x0001, de09=0x0000, de0a=0x0000, de0b=0x0001, nsect=0x0000, de0d=0x0000, cluster2=0x0001, de0f=0x0009, de10=0xffff, de11=0xffff, de12=0xffff, de13=0xffff, de14=0xffff, de15=0xffff, de16=0xffff, de17=0xffff, de18=0xffff, de19=0x0000, de1a=0x0000, de1b=0x0000, de1c=0x0000, de1d=0x0000, de1e=0x0000, de1f=0x0000}
0x001c0…001e0 04 69 04 53 00 00 04 64 03 7e 04 48 04 48 04 69 04 53 00 00 04 64 00 00 00 00 03 59 04 4f 04 5c   ┆ i S   d ~ H H i S   d     Y O \┆
0x001e0…00200 00 01 04 61 00 00 00 01 00 04 00 20 00 00 00 01 00 49 00 4e 00 49 00 54 00 20 00 20 00 20 05 45   ┆   a             I N I T       E┆
0x00200…00280 UnusedSector ┆   ░     ░     ░     ░     ░     ░     ░     ░     ░     ░     ░     ░     ░     ░     ░     ░     ░     ░     ░     ░     ░    ┆
0x00280…00300 UnusedSector ┆ ░     ░     ░     ░     ░     ░     ░     ░     ░     ░     ░     ░     ░     ░     ░     ░     ░     ░     ░     ░     ░     ░┆
0x00300…00380 UnusedSector ┆     ░     ░     ░     ░     ░     ░     ░     ░     ░     ░     ░     ░     ░                                                  ┆
0x00380…00400 UnusedSector ┆        L                                                                                                                       ┆
0x00400…00440 DirEnt {filename=»░░«, kind=0x0600, de04=0x0000, de05=0x0000, de06=0x0000, de07=0x0000, cluster=0x0001, de09=0x0000, de0a=0x0000, de0b=0x0001, nsect=0x0000, de0d=0x0000, cluster2=0x0001, de0f=0x0009, de10=0xffff, de11=0xffff, de12=0xffff, de13=0xffff, de14=0xffff, de15=0xffff, de16=0xffff, de17=0xffff, de18=0xffff, de19=0x0000, de1a=0x0000, de1b=0x0000, de1c=0x0000, de1d=0x0000, de1e=0x0000, de1f=0x0000}
0x00440…00480 DirEnt {filename=»CPUSCM«, kind=0x0000, de04=0x0000, de05=0x0000, de06=0x0000, de07=0x0000, cluster=0x0064, de09=0x0000, de0a=0x0000, de0b=0x0001, nsect=0x0066, de0d=0x0000, cluster2=0x0064, de0f=0x000a, de10=0x0406, de11=0xffff, de12=0xffff, de13=0xffff, de14=0xffff, de15=0xffff, de16=0xffff, de17=0xffff, de18=0xffff, de19=0x0000, de1a=0x0000, de1b=0x0000, de1c=0x002b, de1d=0x0000, de1e=0x0000, de1f=0x0000}
0x00480…00500 DataSector[»CPUSCM«]
         […0x66…]
0x03800…03880 UnusedSector ┆*********************" VAR CC  :  COMPLETION_CODE; BEGIN    CONNECT(F, INPUT_MODE, INSTREAM, CC);    CHECK_CC(CC, 'CAN''T CONNEC┆
0x03880…03900 UnusedSector ┆T INPUT STREAM (:0:)'); END;  PROCEDURE CONNECT_OUTSTREAM(F : FILE); "**********************************************************┆
0x03900…03980 UnusedSector ┆** * CONNECT OUTSTREAM TO FILE F                               * ************************************************************" V┆
0x03980…03a00 UnusedSector ┆AR CC  :  COMPLETION_CODE; BEGIN    CONNECT(F, OUTPUT MODE, OUTSTREAM, CC);    CHECK_CC(CC,'CAN''T CONNECT OUTPUT FILE (:0:)'); ┆
0x03a00…03a80 UnusedSector ┆END; "CONNECT_OUTSTREAM"    PROCEDURE DISCONNECT_OUTSTREAM(F : FILE); "*********************************************************┆
0x03a80…03b00 UnusedSector ┆*** * DISCONNECT INSTREAM FROM FILE F                           * ************************************************************" ┆
0x03b00…03b80 UnusedSector ┆VAR CC  :  COMPLETION_CODE; BEGIN    DISCONNECT(INSTREAM, F, CC);    CHECK_CC(CC, 'DISCONNECTION OF INPUT STREAM (:0:)'); END; "┆
0x03b80…03c00 UnusedSector ┆******** * WRITE A BINARY INTEGER TO OUTPUT STREAM                   * *********************************************************┆
0x03c00…03c80 UnusedSector ┆***" VAR N1  :  INTEGER; BEGIN    FOR N1 := 15 DOWNTO 0 DO BEGIN       IF TESTBIT(N, N1) THEN WRITE_BYTE('1')                   ┆
0x03c80…03d00 UnusedSector ┆      ELSE WRITE_BYTE('0');       WRITE_BYTE(SP);    END; END; "WRITEBIN"  PROCEDURE WRITENL; "*********************************┆
0x03d00…03d80 UnusedSector ┆*************************** * WRITE A NEXT-LINE CHARACTER TO OUTPUT STREAM              * **************************************┆
0x03d80…03e00 UnusedSector ┆**********************" BEGIN    WRITE_BYTE(NL); END; "WRITENL"      * *********************************************************┆
0x03e00…03e80 UnusedSector ┆***" VAR N1  :  INTEGER; BEGIN    FOR N1 := 15 DOWNTO 0 DO BEGIN       IF TESTBIT(N, N1) THEN WRITE_BYTE('1')                   ┆
0x03e80…03f00 UnusedSector ┆      ELSE WRITE_BYTE('0');       WRITE_BYTE(SP);    END; END; "WRITEBIN"  PROCEDURE WRITENL; "*********************************┆
0x03f00…03f80 UnusedSector ┆*************************** * WRITE A NEXT-LINE CHARACTER TO OUTPUT STREAM              * **************************************┆
0x03f80…04000 UnusedSector ┆Z Z             !   "   #   $   %   &   '   Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z ┆
0x04000…04080 UnusedSector ┆Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z ┆
         […0x1…]
0x04100…04180 UnusedSector ┆  END; "CASE"             GET_BYTE(PARAM_STREAM, CH);             IF CH = ':' THEN BEGIN                FSN := PARAM.FSN;       ┆
0x04180…04200 UnusedSector ┆         VOL := PARAM.VOL;                INFILEID(PARAM_STREAM, COMPLETE_NAME, FSN, VOL,                          NAMELIST, NUM┆
0x04200…04280 UnusedSector ┆B_NAMES, CC);                CHECK_CC(CC, 'FILE NAME ERROR (:0:)');                GIVEN[PF] := TRUE;                CASE PF OF ┆
0x04280…04300 UnusedSector ┆               IFILE : FIND_FILE(COMPLETE_NAME, FSN, VOL,                                  NAMELIST, NUMB_NAMES,                ┆
0x04300…04380 UnusedSector ┆                  PARAM.DFILE, INFILE, CC);                OFILE : FIND_FILE(COMPLETE_NAME, FSN, VOL,                           ┆
0x04380…04400 UnusedSector ┆        NAMELIST, NUMB_NAMES,                                  PARAM.DFILE, OUTFILE, CC)                END; "CASE"             ┆
0x04400…04480 UnusedSector ┆   CHECK_CC(CC, 'FILE NOT FOUND (:0:)');             END             ELSE                IF NOT (CH IN [NL, EM]) THEN BEGIN     ┆
0x04480…04500 UnusedSector ┆              WRITETEXT('PARAMETER ERROR (:0:)');                   TERMINATE(0);                END;          END          ELSE┆
0x04500…04580 UnusedSector ┆             IF NOT (CH IN [NL, EM]) THEN BEGIN                WRITETEXT('PARAMETER ERROR (:0:)');                TERMINATE(0); ┆
0x04580…04600 UnusedSector ┆DISCONNECT_INSTREAM"  PROCEDURE DISCONNECT_OUTSTREAM(F : FILE); "************************************************************ * ┆
0x04600…04680 UnusedSector ┆DISCONNECT OUTSTREAM FROM FILE F                          * ************************************************************" VAR CC┆
0x04680…04700 UnusedSector ┆  :  COMPLETION_CODE; BEGIN    DISCONNECT(OUTSTREAM, F, CC);    CHECK_CC(CC, 'DISCONNECTION OF OUTPUT STREAM (:0:)'); END; "DISC┆
0x04700…04780 UnusedSector ┆ONNECT_OUTSTREAM"   PROCEDURE GET_BYTE(S : STREAM; VAR CH : CHAR); VAR CC : COMPLETION_CODE; BEGIN    INBYTE(S, CH, CC); END;  P┆
0x04780…04800 UnusedSector ┆ROCEDURE CONNECT_PARAMETERS; "************************************************************ * READ THE PARAMETER FILE            ┆
0x04800…04880 UnusedSector ┆                       * * CHECK IF THE EVENTUAL FILES EXIST                         * * CONNECT STREAMS TO THE FILES           ┆
0x04880…04900 UnusedSector ┆                   * * IF BOOTMODULE, ESTABLISH CONNECTION TO CONSOLE            * *********************************************┆
0x04900…04980 UnusedSector ┆***************" TYPE  PARAMFILES           =  (IFILE, OFILE); VAR   PARAM_STREAM         :  STREAM;       CC                   ┆
0x04980…04a00 UnusedSector ┆:  COMPLETION_CODE;       GIVEN                :  ARRAY [PARAMFILES] OF BOOLEAN;       PF                   :  PARAMFILES;      ┆
0x04a00…04a80 UnusedSector ┆ FSN                  :  FILE_SYSTEM_NAME;       VOL                  :  VOLUME_NAME;       NAMELIST             :  NAMELISTTYPE┆
0x04a80…04b00 UnusedSector ┆;       NUMB_NAMES           :  INTEGER;       COMPLETE_NAME        :  BOOLEAN;       CH                   :  CHAR;       ATTR  ┆
0x04b00…04b80 UnusedSector ┆               :  FILE_ATTRIBUTES;       N                    :  INTEGER;  BEGIN "CONNECT PARAMS"    CONNECT_OUTSTREAM(PARAM.OFI┆
0x04b80…04c00 UnusedSector ┆LE);    INFILE  := PARAM.IFILE;    OUTFILE := PARAM.OFILE;    IF NOT BOOTMODULE THEN BEGIN       FSN := PARAM.FSN;       VOL := ┆
0x04c00…04c80 UnusedSector ┆PARAM.VOL;       CONNECT(PARAM.PFILE, INPUT_MODE, PARAM_STREAM, CC);       CHECK_CC(CC, 'CONNECTION ERROR (:0:)');       REPEAT ┆
0x04c80…04d00 UnusedSector ┆         GET_BYTE(PARAM_STREAM, CH);       UNTIL CH = NL; "SKIP FIRST LINE OF PARAMETERFILE"       FOR PF := IFILE TO OFILE DO  ┆
0x04d00…04d80 UnusedSector ┆        GIVEN[PF] := FALSE;       REPEAT          REPEAT             GET_BYTE(PARAM_STREAM, CH);          UNTIL CH <> SP;       ┆
0x04d80…04e00 UnusedSector ┆   IF CH IN ['I','O'] THEN BEGIN             CASE CH OF             'I' : PF := IFILE;             'O' : PF := OFILE;           ┆
0x04e00…04e80 UnusedSector ┆Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z ┆
0x04e80…04f00 UnusedSector ┆                  ,    ░ H     |   ░     ░     ░     ░     ░BM   ░     ░     ░     ░     ░  HE ░ING  ░     ░     ░     ░     ░NS┆
0x04f00…04f80 UnusedSector ┆T  ░     ░     ░     ░     ░TYPE ░     ░     ░     ░     ░  VA ░     ░     ░     ░     ░     ░RMIN ░_IO  ░     ░     ░     ░FILE┆
0x04f80…05000 UnusedSector ┆            END;       UNTIL CH IN [NL, EM];    END; "IF NOT BOOTMODULE"    DISCONNECT_OUTSTREAM(PARAM.OFILE);    CONNECT_INSTRE┆
0x05000…05080 UnusedSector ┆AM(INFILE);    CONNECT_OUTSTREAM(OUTFILE); END; "CONNECT_PARAMS"     ELSE                IF NOT (CH IN [NL, EM]) THEN BEGIN     ┆
0x05080…05100 UnusedSector ┆              WRITETEXT('PARAMETER ERROR (:0:)');                   TERMINATE(0);                END;          END          ELSE┆
0x05100…05180 UnusedSector ┆             IF NOT (CH IN [NL, EM]) THEN BEGIN                WRITETEXT('PARAMETER ERROR (:0:)');                TERMINATE(0); ┆
0x05180…05200 UnusedSector ┆Z Z                             Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z ┆
0x05200…05280 UnusedSector ┆Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z ┆
         […0x2…]
0x05380…05400 UnusedSector ┆        N         (    ░ H     |   ░     ░     ░     ░     ░BM   ░     ░     ░     ░     ░  HE ░ING  ░     ░     ░     ░     ░NS┆
0x05400…05480 UnusedSector ┆T  ░     ░     ░     ░     ░TYPE ░     ░     ░     ░     ░  VA ░     ░     ░     ░     ░     ░RMIN ░_IO  ░     ░     ░     ░FILE┆
0x05480…05500 UnusedSector ┆ ░ONNE ░ION  ░     ░     ░     ░     ░     ░     ░     ░     ░     ░     ░     ░     ░     ░     ░     ░     ░     ░     ░     ░┆
0x05500…05580 UnusedSector ┆     ░     ░     ░     ░     ░     ░     ░     ░     ░     ░     ░     ░     ░                   2                              ┆
0x05580…05600 UnusedSector ┆Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z ┆
         […0x3…]
0x05780…05800 UnusedSector ┆                  *    ░ H     |   ░     ░     ░     ░     ░BM   ░     ░     ░     ░     ░  HE ░ING  ░     ░     ░     ░     ░NS┆
0x05800…05880 UnusedSector ┆T  ░     ░     ░     ░     ░TYPE ░     ░     ░     ░     ░  VA ░     ░     ░     ░     ░     ░RMIN ░_IO  ░     ░     ░     ░FILE┆
0x05880…05900 UnusedSector ┆ ░ONNE ░ION  ░     ░     ░  IN ░IALI ░     ░     ░     ░     ░     ░     ░     ░     ░     ░     ░     ░     ░     ░     ░     ░┆
0x05900…05980 UnusedSector ┆     ░     ░     ░     ░     ░     ░     ░     ░     ░     ░     ░     ░     ░                   1                              ┆
0x05980…05a00 UnusedSector ┆Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z ┆
         […0x5…]
0x05c80…05d00 UnusedSector ┆                  .    ░ H     |   ░     ░     ░     ░     ░BM   ░     ░     ░     ░     ░  HE ░ING  ░     ░     ░     ░     ░NS┆
0x05d00…05d80 UnusedSector ┆T  ░     ░     ░     ░     ░TYPE ░     ░     ░     ░     ░  VA ░     ░     ░     ░     ░     ░RMIN ░_IO  ░     ░     ░     ░FILE┆
0x05d80…05e00 UnusedSector ┆ ░ONNE ░ION  ░     ░     ░  IN ░IALI ░     ░     ░     ░     ░STPA ░_GEN ░     ░     ░     ░TEST ░TT_C ░CK   ░     ░     ░     ░┆
0x05e00…05e80 UnusedSector ┆     ░     ░     ░     ░     ░     ░     ░     ░     ░     ░     ░     ░     ░                   2                              ┆
0x05e80…05f00 UnusedSector ┆  " MTC_IO " "--------"  PROCEDURE WRITE_MTC(BUFFER_WORD_NO, DATA : INTEGER); "*************************************************┆
0x05f00…05f80 UnusedSector ┆*********** * WRITE DATA-WORD TO THE CONTROLLER BUFFER                  * * WORD NUMBER <BUFFER_WORD_NO> (0..7)                 ┆
0x05f80…06000 UnusedSector ┆      * * WIO IS USED                                               * **********************************************************┆
0x06000…06080 UnusedSector ┆**" VAR N : INTEGER; BEGIN    N := BUFFER_WORD_NO;    N := LEFTSHIFTS(N, 6);    N := N + DEVNO;    WRITE_IO(N, DATA); END; "WRIT┆
0x06080…06100 UnusedSector ┆E_MTC"  PROCEDURE READ_MTC(BUFFER_WORD_NO : INTEGER;                    VAR DATA       : INTEGER); "****************************┆
0x06100…06180 UnusedSector ┆******************************** * READ DATA-WORD FROM CONTROLLER COMMAND BUFFER             * * WORD NUMBER <BUFFER_WORD_NO> (0┆
0x06180…06200 UnusedSector ┆..7)                       * * RIO IS USED                                               * *************************************┆
0x06200…06280 UnusedSector ┆***********************" VAR N : INTEGER; BEGIN    N := LEFTSHIFTS(BUFFER_WORD_NO, 6) + DEVNO;    READ_IO(N, DATA); END; "READ_M┆
0x06280…06300 UnusedSector ┆TC"  PROCEDURE INIT_MTC; "************************************************************ * SEND AN INITIALIZE COMMAND TO THE CONTR┆
0x06300…06380 UnusedSector ┆OLLER              * * WIO IS USED                                               * *********************************************┆
0x06380…06400 UnusedSector ┆***************" VAR N : INTEGER; BEGIN    N := DEVNO + 2048;    WRITE_IO(N, 0); END; "INIT_MTC"    PROCEDURE DO_OPERATION; "***┆
0x06400…06480 UnusedSector ┆********************************************************* * ENABLE THE EXECUTION OF A COMMAND                         * * BY CLE┆
0x06480…06500 UnusedSector ┆ARING THE TCR-BIT IN THE COMMAND BUFFER             * ************************************************************" BEGIN    WRI┆
0x06500…06580 UnusedSector ┆TE_MTC(7,0); END; "DO_OPERATION"   FUNCTION CREATE_WORD1(BMO, BAD, OFS, DIN, OP, TN : INTEGER) : INTEGER; "*********************┆
0x06580…06600 UnusedSector ┆*************************************** * CREATE WORD 1 OF THE CONTROLLER COMMAND BUFFER            * * PARAMETERS :            ┆
0x06600…06680 UnusedSector ┆                                  * *     BMO : BYTE MODE               (0..1)                  * *     BAD : BYTE ADRESS       ┆
0x06680…06700 UnusedSector ┆ ░ONNE ░ION  ░     ░     ░  IN ░IALI ░     ░     ░     ░     ░STPA ░_GEN ░     ░     ░     ░     ░     ░     ░     ░     ░     ░┆
0x06700…06780 UnusedSector ┆     ░     ░     ░     ░     ░     ░     ░     ░     ░     ░     ░     ░     ░                   1                              ┆
0x06780…06800 UnusedSector ┆Z Z 0   1   2   3   4   5   6   Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z ┆
0x06800…06880 UnusedSector ┆, N);    N := N DIV 256;    IF REWMASK_BITNO <> -1 THEN       SETBIT(N, REWMASK_BITNO + 7);    N := N + OFS_MOST;    CREATE_WORD┆
0x06880…06900 UnusedSector ┆5 := N; END; "CREATE_WORD5" ********************************************************" VAR N : INTEGER; BEGIN    N :=     BMO * 2┆
0x06900…06980 UnusedSector ┆048;    N := N + BAD * 1024;    N := N + OFS *  512;    N := N + DIN *  256;    N := N + OP  *    8;    N := N + TN        ;    ┆
0x06980…06a00 UnusedSector ┆Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z ┆
         […0x3…]
0x06b80…06c00 UnusedSector ┆                  7    ░ H     |   ░     ░     ░     ░     ░BM   ░     ░     ░     ░     ░  HE ░ING  ░     ░     ░     ░     ░NS┆
0x06c00…06c80 UnusedSector ┆T  ░     ░     ░     ░     ░TYPE ░     ░     ░     ░     ░  VA ░     ░     ░     ░     ░     ░RMIN ░_IO  ░     ░     ░     ░FILE┆
0x06c80…06d00 UnusedSector ┆ ░ONNE ░ION  ░     ░     ░  IN ░IALI ░     ░     ░     ░     ░STPA ░_GEN ░     ░     ░     ░TEST ░TT_C ░CK   ░     ░     ░  MT ░┆
0x06d00…06d80 UnusedSector ┆IO   ░     ░     ░     ░     ░     ░     ░     ░     ░     ░     ░     ░     ░                   1                              ┆
0x06d80…06e00 UnusedSector ┆Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z ┆
         […0x3…]
0x06f80…07000 UnusedSector ┆                  9    ░ H     |   ░     ░     ░     ░     ░BM   ░     ░     ░     ░     ░  HE ░ING  ░     ░     ░     ░     ░NS┆
0x07000…07080 UnusedSector ┆T  ░     ░     ░     ░     ░TYPE ░     ░     ░     ░     ░  VA ░     ░     ░     ░     ░     ░RMIN ░_IO  ░     ░     ░     ░FILE┆
0x07080…07100 UnusedSector ┆      (0..1)                  * *     OFS : OFFSET USED             (0..1)                  * *     DIN : DISABLE INTERRUPT     ┆
0x07100…07180 UnusedSector ┆  (0..1)                  * *     OP  : OPERATION CODE          (0..31)                 * *     TN  : TRANSPORT NUMBER        (0┆
0x07180…07200 UnusedSector ┆..7)                  * ************************************************************" VAR N : INTEGER; BEGIN    N :=     BMO * 2┆
0x07200…07280 UnusedSector ┆048;    N := N + BAD * 1024;    N := N + OFS *  512;    N := N + DIN *  256;    N := N + OP  *    8;    N := N + TN        ;    ┆
0x07280…07300 UnusedSector ┆CREATE_WORD1 := N; END; "CREATE_WORD1"  FUNCTION CREATE_WORD5(REWMASK_BITNO, OFS_MOST : INTEGER) : INTEGER; "*******************┆
0x07300…07380 UnusedSector ┆***************************************** * CREATE WORD 5 OF CONTROLLER COMMAND BUFFER                * * PARAMETERS :          ┆
0x07380…07400 UnusedSector ┆                                    * *     REWMASK_BITNO : BIT NUMBER OF UNIT TO                 * *                     BE INS┆
0x07400…07480 UnusedSector ┆ERTED INTO REWIND MASK          * *     OFS_MOST      : MOST SIGNIFICANT 8 BITS OF            * *                     OFFSET PAR┆
0x07480…07500 UnusedSector ┆AMETER (BIT 23-16)          * ************************************************************" VAR N : INTEGER; BEGIN    READ_MTC(5┆
0x07500…07580 UnusedSector ┆      WAIT_REW_INTERRUPT(UNIT); END; "REWIND"  PROCEDURE UNLOAD(UNIT : INTEGER); "**********************************************┆
0x07580…07600 UnusedSector ┆************** * SUBMIT A REWIND AND UNLOAD COMMAND FOR A SPECIFIED UNIT   * * IF UNIT = CURRENT TEST UNIT : WAIT FOR COMPLETION┆
0x07600…07680 UnusedSector ┆         * ************************************************************" VAR   W1 : INTEGER;       W5 : INTEGER; BEGIN    W1 := ┆
0x07680…07700 UnusedSector ┆CREATE_WORD1(0, 0, 0, 0, #01, UNIT);    WRITE_MTC(1, W1);    REWINDING[ UNIT ] := TRUE;    W5 := CREATE_WORD5(UNIT, 0);    WRITE┆
0x07700…07780 UnusedSector ┆_MTC(5, W5);    DO_OPERATION;    IF UNIT = UNITNO THEN       WAIT_REW_INTERRUPT(UNIT); END; "UNLOAD"    FUNCTION STATUS(UNIT : I┆
0x07780…07800 UnusedSector ┆NTEGER) : INTEGER; "************************************************************ * SUBMIT A READ STATUS COMMAND FOR A SPECIFIED ┆
0x07800…07880 UnusedSector ┆UNIT         * * RETURN STATUS                                             * ***************************************************┆
0x07880…07900 UnusedSector ┆*********" VAR   W1, W7 : INTEGER; BEGIN    W1 := CREATE_WORD1(0, 0, 0, 0, #02, UNIT);    WRITE_MTC(1, W1);    DO_OPERATION;    ┆
0x07900…07980 UnusedSector ┆READ_MTC(7, W7);    STATUS := W7; END; "STATUS"  PROCEDURE SKIP(KIND      : SKIPKINDS; "DATA, FMS, DAFMS OR EOT"                ┆
0x07980…07a00 UnusedSector ┆LENGTH    : INTEGER;   "NUMBER OF ITEMS        "                DIRECTION : DIRECTION_TYPE "FORWARD OR REVERSE "); "************┆
0x07a00…07a80 UnusedSector ┆************************************************ * SUBMIT A SKIP COMMAND FOR CURRENT TEST UNIT               * * WAIT UNTIL THE ┆
0x07a80…07b00 UnusedSector ┆ ░ONNE ░ION  ░     ░     ░  IN ░IALI ░     ░     ░     ░     ░STPA ░_GEN ░     ░     ░     ░TEST ░TT_C ░CK   ░     ░     ░  MT ░┆
0x07b00…07b80 UnusedSector ┆IO   ░     ░     ░     ░     ░C_ER ░MSG  ░     ░     ░     ░     ░     ░     ░                   1                              ┆
0x07b80…07c00 UnusedSector ┆Z Z =   >   ?   @   A   B   C   D   E   F   G   H   I   Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z ┆
0x07c00…07c80 UnusedSector ┆Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z ┆
         […0x2…]
0x07d80…07e00 UnusedSector ┆                  ;    ░ H     |   ░     ░     ░     ░     ░BM   ░     ░     ░     ░     ░  HE ░ING  ░     ░     ░     ░     ░NS┆
0x07e00…07e80 UnusedSector ┆T  ░     ░     ░     ░     ░TYPE ░     ░     ░     ░     ░  VA ░     ░     ░     ░     ░     ░RMIN ░_IO  ░     ░     ░     ░FILE┆
0x07e80…07f00 UnusedSector ┆ ░ONNE ░ION  ░     ░     ░  IN ░IALI ░     ░     ░     ░     ░STPA ░_GEN ░     ░     ░     ░TEST ░TT_C ░CK   ░     ░     ░  MT ░┆
0x07f00…07f80 UnusedSector ┆IO   ░     ░     ░     ░     ░C_ER ░MSG  ░     ░     ░     ░COMM ░D_XQ ░     ░                   2                              ┆
0x07f80…08000 UnusedSector ┆  "MTC_COMM_XQT" "------------"  PROCEDURE REWIND(UNIT : INTEGER); "************************************************************┆
0x08000…08080 UnusedSector ┆ * SUBMIT A REWIND COMMAND FOR A SPECIFIED UNIT              * * IF UNIT = CURRENT TEST UNIT : WAIT FOR COMPLETION         * ***┆
0x08080…08100 UnusedSector ┆*********************************************************" VAR   W1 : INTEGER;       W5 : INTEGER; BEGIN    W1 := CREATE_WORD1(B┆
0x08100…08180 UnusedSector ┆YTE_MODE, BYTE_ADR, 0, 0, #00, UNIT);    WRITE_MTC(1, W1);    REWINDING[ N ] := TRUE;    W5 := CREATE_WORD5(UNIT, 0);     "SET R┆
0x08180…08200 UnusedSector ┆EWIND MASK"    WRITE_MTC(5, W5);                    DO_OPERATION;                    "CLEAR TCR BIT  "    IF UNIT = UNITNO THEN ┆
0x08200…08280 UnusedSector ┆ ERASE FIXED LENGTH OR                           * *        AN ERASE VARIABLE LENGTH COMMAND                   * ***************┆
0x08280…08300 UnusedSector ┆*********************************************" VAR   W1   : INTEGER;       CODE : INTEGER; BEGIN    IF FIXED THEN CODE := #0D   ┆
0x08300…08380 UnusedSector ┆          ELSE CODE := #0E;    W1 := CREATE_WORD1(0, 0, 0, 0, CODE, UNITNO);    WRITE_MTC(1, W1);    WRITE_MTC(2, LENGTH);    DO┆
0x08380…08400 UnusedSector ┆_OPERATION;    WAIT_COMPLETION; END; "ERASE"    PROCEDURE READ(BYTES   : INTEGER;   "NUMBER OF BYTES"                OFFSET  : I┆
0x08400…08480 UnusedSector ┆NTEGER;   "NUMBER OF BYTES TO SKIP"                THR     : THRESHOLDS;"NORMAL, LOW OR HIGH    "                MEM_ADR : INTEG┆
0x08480…08500 UnusedSector ┆OPERATION HAS COMPLETED                    * ************************************************************" VAR   W1   : INTEGER;┆
0x08500…08580 UnusedSector ┆       CODE : INTEGER; BEGIN    CODE := #03;    CODE := CODE + ORD(KIND)*2 + ORD(DIRECTION);    IF KIND = EOT THEN CODE := #09; ┆
0x08580…08600 UnusedSector ┆   W1 := CREATE_WORD1(0, 0, 0, 0, CODE, UNITNO);    WRITE_MTC(1, W1);    WRITE_MTC(2, LENGTH);    DO_OPERATION;    WAIT_COMPLETI┆
0x08600…08680 UnusedSector ┆ON; END; "SKIP"    PROCEDURE EDIT(BYTES   : INTEGER;   "NUMBER OF BYTES"                PATTERN : INTEGER;   "TESTPATTERN NUMBER┆
0x08680…08700 UnusedSector ┆"                STRING  : STRING_20; "CHARACTER STRING"                MEM_ADR : INTEGER    "MEMORY ADRESS OF DATA"); "********┆
0x08700…08780 UnusedSector ┆**************************************************** * SUBMIT AN EDIT-RECORD COMMAND                             * * IF PATTERN ┆
0x08780…08800 UnusedSector ┆= 99 THEN THE STRING IS TO BE WRITTEN          * * MEMORY ADDRESS IS A DISPLACEMENT WITHIN THE ON-BOARD RAM  * *****************┆
0x08800…08880 UnusedSector ┆*******************************************" VAR   W1  : INTEGER; BEGIN    W1 := CREATE_WORD1(BYTE_MODE, BYTE_ADR, 0, 0, #0C, UN┆
0x08880…08900 UnusedSector ┆ITNO);    IF PATTERN <> 99 THEN GEN_TP(PATTERN, BYTES, MEM_ADR)                     ELSE GEN_STRING(STRING, BYTES, MEM_ADR);    ┆
0x08900…08980 UnusedSector ┆WRITE_MTC(1, W1);    WRITE_MTC(2, BYTES);    WRITE_MTC(3, MEM_ADR);    DO_OPERATION;    WAIT_COMPLETION; END; "EDIT"  PROCEDURE ┆
0x08980…08a00 UnusedSector ┆WRITE(BYTES   : INTEGER;    "NUMBER OF BYTES"                 PATTERN : INTEGER;    "TESTPATTERN NUMBER"                 STRING ┆
0x08a00…08a80 UnusedSector ┆ : STRING_20;  "CHARACTER STRING"                 MEM_ADR : INTEGER     "MEMORY ADDRESS    "); "********************************┆
0x08a80…08b00 UnusedSector ┆**************************** * SUBMIT A WRITE-RECORD COMMAND                             * * IF PATTERN = 99 THEN THE STRING IS ┆
0x08b00…08b80 UnusedSector ┆TO BE WRITTEN          * * MEMORY ADDRESS IS A DISPLACEMENT WITHIN THE ON-BOARD RAM  * *****************************************┆
0x08b80…08c00 UnusedSector ┆*******************" VAR   W1 : INTEGER; BEGIN    W1 := CREATE_WORD1(BYTE_MODE, BYTE_ADR, 0, 0, #0B, UNITNO);    IF PATTERN <> 9┆
0x08c00…08c80 UnusedSector ┆9 THEN GEN_TP(PATTERN, BYTES, MEM_ADR)                     ELSE GEN_STRING(STRING, BYTES, MEM_ADR);    WRITE_MTC(1, W1);    WRIT┆
0x08c80…08d00 UnusedSector ┆E_MTC(2, BYTES);    WRITE_MTC(3, MEM_ADR);    DO_OPERATION;    WAIT_COMPLETION; END; "WRITE"    PROCEDURE WRITEFM; "************┆
0x08d00…08d80 UnusedSector ┆************************************************ * SUBMIT A WRITE FILE MARK COMMAND                          * *****************┆
0x08d80…08e00 UnusedSector ┆*******************************************" VAR   W1 : INTEGER; BEGIN    W1 := CREATE_WORD1(0, 0, 0, 0, #0A, UNITNO);    WRITE_┆
0x08e00…08e80 UnusedSector ┆MTC(1, W1);    DO_OPERATION;    WAIT_COMPLETION; END; "WRITEFM"  PROCEDURE ERASE(FIXED  : BOOLEAN; "ERASE FIXED LENGTH ? "      ┆
0x08e80…08f00 UnusedSector ┆           LENGTH : INTEGER  "LENGTH TO ERASE      "); "************************************************************ * SUBMIT AN┆
0x08f00…08f80 UnusedSector ┆                   * ************************************************************" VAR   W1   : INTEGER;       OFS  : INTEGER;  ┆
0x08f80…09000 UnusedSector ┆     CODE : INTEGER; BEGIN    IF OFFSET = 0 THEN OFS := 0 ELSE OFS := 1;    CODE := #0F + ORD(THR);    W1 := CREATE_WORD1(BYTE_M┆
0x09000…09080 UnusedSector ┆ODE, BYTE_ADR, OFS, 0, CODE, UNITNO);    WRITE_MTC(1, W1);    WRITE_MTC(2, BYTES);    WRITE_MTC(3, MEM_ADR);    WRITE_MTC(4, OFF┆
0x09080…09100 UnusedSector ┆SET);    DO_OPERATION;    WAIT_COMPLETION; END; "READ"  PROCEDURE READREV(BYTES   : INTEGER;  "NUMBER OF BYTES"                 ┆
0x09100…09180 UnusedSector ┆  EDIT    : BOOLEAN;  "PREPARE FOR EDIT"                   MEM_ADR : INTEGER   "MEMORY ADDRESS  "); "***************************┆
0x09180…09200 UnusedSector ┆********************************* * SUBMIT A READ REVERSE OR                                  * *          READ REVERSE EDSIT CO┆
0x09200…09280 UnusedSector ┆MMAND                       * ************************************************************" VAR   W1   : INTEGER;       CODE : I┆
0x09280…09300 UnusedSector ┆NTEGER; BEGIN    CODE := #12;    IF EDIT THEN CODE := CODE + 1;    W1 := CREATE_WORD1(BYTE_MODE, BYTE_ADR, 0, 0, CODE, UNITNO); ┆
0x09300…09380 UnusedSector ┆   WRITE_MTC(1, W1);    WRITE_MTC(2, BYTES);    WRITE_MTC(3, MEM_ADR);    DO_OPERATION;    WAIT_COMPLETION; END; "READREV"   /  ┆
0x09380…09400 UnusedSector ┆Z Z M   N   O   P   Q   R   S   T   U   V   W   X   Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z ┆
0x09400…09480 UnusedSector ┆Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z ┆
         […0x2…]
0x09580…09600 UnusedSector ┆                  J    ░ H     |   ░     ░     ░     ░     ░BM   ░     ░     ░     ░     ░  HE ░ING  ░     ░     ░     ░     ░NS┆
0x09600…09680 UnusedSector ┆T  ░     ░     ░     ░     ░TYPE ░     ░     ░     ░     ░  VA ░     ░     ░     ░     ░     ░RMIN ░_IO  ░     ░     ░     ░FILE┆
0x09680…09700 UnusedSector ┆ ░ONNE ░ION  ░     ░     ░  IN ░IALI ░     ░     ░     ░     ░STPA ░_GEN ░     ░     ░     ░TEST ░TT_C ░CK   ░     ░     ░  MT ░┆
0x09700…09780 UnusedSector ┆IO   ░     ░     ░     ░     ░C_ER ░MSG  ░     ░     ░     ░COMM ░D_XQ ░     ░              MT   2  _XQT                        ┆
0x09780…09800 UnusedSector ┆  FUNCTION_XQT                    INTERPRET_COMM                  SCANNER                         PARSER                        ┆
0x09800…09880 UnusedSector ┆  MAIN_PROGRAM          ░         MERGELINES          d m ]!  }   TEST_MAGTAPE.T        s         PRINTFILE                     ┆
0x09880…09900 UnusedSector ┆  PRETTYLINES               p     MERGED.PS                       PARSE_DEV_UNIT         >  eF    PARSE_FUNCTION         d   i  ┆
0x09900…09980 UnusedSector ┆  PARSE_CONTR_COMM       ~  z     PARSE_NORMTEST              I   PARSE_SPECTEST        ]!        PARSE_COMMAND           7     ┆
0x09980…09a00 UnusedSector ┆  "FUNCTION_XQT" "------------"  PROCEDURE GENERATE_SYSTEM_TAPE; "************************************************************ *┆
0x09a00…09a80 UnusedSector ┆ GENERATE S SYSTEM TAPE A SPECIFIED IN APP. A OF USM       * ************************************************************" VAR  ┆
0x09a80…09b00 UnusedSector ┆ N : INTEGER; BEGIN  END; "GENERATE_SYSTEM_TAPE"  PROCEDURE MOVE_TO_USER_SECT; "************************************************┆
0x09b00…09b80 UnusedSector ┆************ * POSITION TAPE AT BEGINNING OF USER SECTION.               * * OPERATION PERFORMED BY THE 'USERS' COMMAND         ┆
0x09b80…09c00 UnusedSector ┆ER    "MEMORY ADDRESS"); "************************************************************ * SUBMIT A READ RECORD COMMAND           ┆
0x09c00…09c80 UnusedSector ┆GIN    IF CHECK_ID_BLOCK THEN BEGIN       IF NUMBER <= 22 THEN           SKIP(DATA, NUMBER, FORWARD)       ELSE       BEGIN     ┆
0x09c80…09d00 UnusedSector ┆     SKIP(DAFMS, 28, FORWARD); "23 DATA BLOCKS AND 5 FILE MARKS"          CASE NUMBER OF             23  :  ;             24  : ┆
0x09d00…09d80 UnusedSector ┆ SKIP(DAFMS, 3, FORWARD);             25  :  SKIP(DAFMS, 5, FORWARD);             26  :  SKIP(DAFMS, 6, FORWARD);             27┆
0x09d80…09e00 UnusedSector ┆  :  SKIP(DAFMS, 9, FORWARD)          END; "CASE"       END;    END; END; "MOVE_TO_SYSTEM_BLOCK"  FUNCTION READYBIT_SET(PRINT : ┆
0x09e00…09e80 UnusedSector ┆BOOLEAN) : BOOLEAN; "************************************************************ * CHECK THE TCR BIT IN THE COMMAND BUFFER     ┆
0x09e80…09f00 UnusedSector ┆              * ************************************************************" VAR   W7 : INTEGER;       B  : BOOLEAN; BEGIN    R┆
0x09f00…09f80 UnusedSector ┆EAD_MTC(7, W7);    B := TESTBIT(W7, 14);    IF PRINT THEN       IF B THEN WRITETEXT('BUSY  (:10:)(:0:)')            ELSE WRITETE┆
0x09f80…0a000 UnusedSector ┆XT('READY (:10:)(:0:)');    READYBIT_SET := B; END; "READYBIT_SET"    PROCEDURE DISPLAY_STATUS(KIND : DISPLAYKINDS); "**********┆
0x0a000…0a080 UnusedSector ┆************************************************** * READ AND DISPLAY A STATUS AS SPECIFIED IN THE PARAMETER   * * DISPLAYKINDS ┆
0x0a080…0a100 UnusedSector ┆= (TRANSPORT, TRANSFER, REW, ALL)            * ************************************************************" VAR   N, P : INTEGE┆
0x0a100…0a180 UnusedSector ┆R; BEGIN    CASE KIND OF    TRANSPORT :       BEGIN          WRITETEXT('TRANSPORT STATUS : (:0:)');          WRITEBIN(STATUS(UNI┆
0x0a180…0a200 UnusedSector ┆TNO));       END;    TRANSFER :       BEGIN          WRITETEXT('TRANSFER STATUS : (:0:)');          READ_MTC(7, N);          WRI┆
0x0a200…0a280 UnusedSector ┆TEBIN(N);       END;    REW :       BEGIN          WRITETEXT('REWIND STATUS : (:0:)');          READ_MTC(6, N);          WRITEBI┆
0x0a280…0a300 UnusedSector ┆N(N MOD 256);       END;    ALL :        BEGIN          WRITETEXT('COMMAND BUFFER : (:0:)');          WRITENL;          FOR P :=┆
0x0a300…0a380 UnusedSector ┆ 0 TO 7 DO           BEGIN             READ_MTC(P, N);             WRITEBIN(N);             WRITENL;          END;       END    ┆
0x0a380…0a400 UnusedSector ┆END; "CASE"    WRITENL; END; "DISPLAY_STATUS"   PROCEDURE PRINT_DATA_LAST_READ(BYTES : INTEGER; "NUMBER OF BYTES"               ┆
0x0a400…0a480 UnusedSector ┆                 CHARACTERS : BOOLEAN "PRINT IN ASCII"); "************************************************************ * PRINT O┆
0x0a480…0a500 UnusedSector ┆UT DATA LAST READ BY A 'READ' OR 'READREV' COMMAND * * PRINT OUT IN HEX. BYTES OR ASCII CHARACTERS, AS SPECIFIED * * BY THE <CHA┆
0x0a500…0a580 UnusedSector ┆RACTERS> PARAMETER                             * ************************************************************" VAR   N, P : INTE┆
0x0a580…0a600 UnusedSector ┆       * ************************************************************" BEGIN    IF CHECK_ID_BLOCK THEN BEGIN       "TAPE IN REWO┆
0x0a600…0a680 UnusedSector ┆UND POSITION"       SKIP(DAFMS, 40, FORWARD);       SKIP(EOT  ,  0, FORWARD);       SKIP(FMS  ,  1, FORWARD);    END; END; "MOVE┆
0x0a680…0a700 UnusedSector ┆_TO_USER_SECT"  PROCEDURE MOVE_TO_SYSTEM_SECT; "************************************************************ * POSITION TAPE AT ┆
0x0a700…0a780 UnusedSector ┆BEGINNING OF SYSTEM SECTION              * * OPERATION PERFORMED BY THE 'SYSTEM' COMMAND               * ***********************┆
0x0a780…0a800 UnusedSector ┆*************************************" VAR   TAPEOK : BOOLEAN; BEGIN    TAPEOK := CHECK_ID_BLOCK; END; "MOVE_TO_SYSTEM_SECT"   P┆
0x0a800…0a880 UnusedSector ┆ROCEDURE MOVE_TO_SYSTEM_BLOCK(NUMBER : INTEGER); "************************************************************ POSITION TAPE BEF┆
0x0a880…0a900 UnusedSector ┆ORE BLOCK <NUMBER> OF SYSTEM SECTION       * ************************************************************" VAR   N : INTEGER; BE┆
0x0a900…0a980 UnusedSector ┆ 15 DO        IF USERPATTERNS[ N ].LENGTH <> 0 THEN BEGIN          WRITETEXT('TP (:0:)');          WRITEINT(N);          WRITE_B┆
0x0a980…0aa00 UnusedSector ┆YTE(SP);          WITH USERPATTERNS[ N ] DO BEGIN             FOR P := 1 TO LENGTH DO BEGIN                WRITEHEX(PATTERN[ P ]┆
0x0aa00…0aa80 UnusedSector ┆);                WRITE_BYTE(SP);             END;             WRITENL;          END;       END; END; "LIST_TP_OVERVIEW" NSE;   ┆
0x0aa80…0ab00 UnusedSector ┆ UNTIL (N = BYTES) OR STOPPRINT; END; "PRINT_DATA_LAST_READ"    PROCEDURE LIST_TP_OVERVIEW; "***********************************┆
0x0ab00…0ab80 UnusedSector ┆************************* * PRINT OUT AN OVERVIEW OF THE TESTPATTERNS AVAILABLE       * * SYSTEM PATTERNS AS A SHORT DESCRIPTION┆
0x0ab80…0ac00 UnusedSector ┆Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z ┆
         […0x3…]
0x0ad80…0ae00 UnusedSector ┆  ON_X            Y    ░ H     |   ░     ░     ░     ░     ░     ░     ░     ░     ░     ░     ░     ░     ░     ░     ░     ░  ┆
0x0ae00…0ae80 UnusedSector ┆   ░     ░     ░  ░  ░     ░  }  ░     ░  D  ░; d  ░]!   ░     ░d FD ░00   ░     ░s    ░     ░     ░     ░     ░     ░     ░  ]!┆
0x0ae80…0af00 UnusedSector ┆ ░     ░     ░(    ░  p  ░  ]! ░     ░     ░     ░     ░     ░     ░  =4 ░ 7   ░   > ░eF   ░   G ░ M   ░  bW ░ Z   ░   i ░     ░┆
0x0af00…0af80 UnusedSector ┆   z ░^{   ░  w} ░ ~   ░     ░ |   ░     ░     ░     ░  I  ░     ░?    ░     ░    ]!             1  ]! %            7           ┆
0x0af80…0b000 UnusedSector ┆GER;       STOPPRINT : BOOLEAN; BEGIN    N := 0;    REPEAT       N := N + 1;       IF (N MOD 24) = 0 THEN WRITENL;       P := OR┆
0x0b000…0b080 UnusedSector ┆D(IOBUFFER[N]);          "IOBUFFER : ARRAY[ ? ] OF CHAR"       IF CHARACTERS THEN BEGIN          IF (P>=32) AND (P<127) THEN BEG┆
0x0b080…0b100 UnusedSector ┆IN             WRITE_BYTE(SP);             WRITE_BYTE(CHR(P));             WRITE_BYTE(SP);          END          ELSE WRITEHEXBY┆
0x0b100…0b180 UnusedSector ┆TE(P);       END       ELSE WRITEHEXBYTE(CHR(P));       IF (N MOD 552) = 0 THEN          STOPPRINT := WAIT_TERMINAL_RESPONSE;   ┆
0x0b180…0b200 UnusedSector ┆ UNTIL (N = BYTES) OR STOPPRINT; END; "PRINT_DATA_LAST_READ"    PROCEDURE LIST_TP_OVERVIEW; "***********************************┆
0x0b200…0b280 UnusedSector ┆************************* * PRINT OUT AN OVERVIEW OF THE TESTPATTERNS AVAILABLE       * * SYSTEM PATTERNS AS A SHORT DESCRIPTION┆
0x0b280…0b300 UnusedSector ┆                    * * USER   PATTERNS AS HEX. WORDS                             * ********************************************┆
0x0b300…0b380 UnusedSector ┆****************" VAR   N, P : INTEGER; BEGIN    FOR N := 0 TO 7 DO BEGIN       WRITETEXT('TP (:0:)');       WRITEINT(N);       ┆
0x0b380…0b400 UnusedSector ┆WRITEBYTE(SP);       CASE N OF          0  :  WRITETEXT('WALKING ZERO                      (:0:)');          1  :  WRITETEXT('WA┆
0x0b400…0b480 UnusedSector ┆LKING ONE                       (:0:)');          2  :  WRITETEXT('CHECKERBOARD                      (:0:)');          3  :  WRI┆
0x0b480…0b500 UnusedSector ┆TETEXT('COUNT UP  , WORDS                 (:0:)');          4  :  WRITETEXT('COUNT DOWN, WORDS                 (:0:)');         ┆
0x0b500…0b580 UnusedSector ┆ 5  :  WRITETEXT('COUNT UP  , BYTES                 (:0:)');          6  :  WRITETEXT('DATA=INVERTED ADDRESS , - 1 BIT   (:0:)')┆
0x0b580…0b600 UnusedSector ┆;          7  :  WRITETEXT('RANDOM NUMBERS                    (:0:)')       END; "CASE"       WRITENL;    END;    FOR N := 11 TO┆
0x0b600…0b680 UnusedSector ┆      * *                INTEGERS (DEC. OR HEX.)                    * **********************************************************┆
0x0b680…0b700 UnusedSector ┆**"  VAR I, J, K : INTEGER;     I_L  :  LONG_INTEGER;  BEGIN    WHILE CH IN [NL, CR, FF, SP] DO GETCH;    IF CH IN ALFABETIC THE┆
0x0b700…0b780 UnusedSector ┆N BEGIN       K := 0;       REPEAT          IF K < 12 THEN BEGIN             K := K + 1;             A[K] := CH;          END;  ┆
0x0b780…0b800 UnusedSector ┆        GETCH;       UNTIL NOT (CH IN ALFABETIC);       FOR KK:=K + 1 TO 12 DO A [KK] := ' ';       ID := A;       WORD[0] := ID┆
0x0b800…0b880 UnusedSector ┆;       J := SYMBOLS;       WHILE WORD [J] <> ID DO J := J - 1;       IF J = 0 THEN SYM := IDENT                ELSE SYM := WSYM┆
0x0b880…0b900 UnusedSector ┆[J];    END    ELSE       IF CH IN NUMERIC THEN       BEGIN          K := 0;          LONG_NUM := 0L;          SYM := NUMBER;   ┆
0x0b900…0b980 UnusedSector ┆       REPEAT             I_L := CREATE_LONG(ORD(CH)-ORD('0'), 0);             LONG_NUM := LONG_NUM * 10L + I_L;             K :┆
0x0b980…0ba00 UnusedSector ┆Z Z ]   ^   _   `   a   b   c   d   e   Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z ┆
0x0ba00…0ba80 UnusedSector ┆Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z ┆
         […0x2…]
0x0bb80…0bc00 UnusedSector ┆  ON_X            [    ░ H     |   ░T_CO ░     ░     ░     ░     ░     ░     ░     ░     ░     ░     ░     ░     ░     ░     ░  ┆
0x0bc00…0bc80 UnusedSector ┆   ░     ░     ░  ░  ░     ░  }  ░     ░  D  ░; d  ░]!   ░     ░d FD ░00   ░     ░s    ░     ░     ░     ░     ░     ░     ░  ]!┆
0x0bc80…0bd00 UnusedSector ┆ ░     ░     ░(    ░  p  ░  ]! ░     ░     ░     ░     ░     ░     ░  =4 ░ 7   ░   > ░eF   ░   G ░ M   ░  bW ░ Z   ░   i ░     ░┆
0x0bd00…0bd80 UnusedSector ┆   z ░^{   ░  w} ░ ~   ░     ░ |   ░     ░     ░     ░  I  ░     ░?    ░     ░    ]!             2  ]! %            7           ┆
0x0bd80…0be00 UnusedSector ┆  "ELEMENT SCANNER" "---------------"  PROCEDURE GETCH; "************************************************************ * GET A CH┆
0x0be00…0be80 UnusedSector ┆ARACTER FROM INPUT STREAM, USING A LINE BUFFER    * ************************************************************" VAR  CC  :  CO┆
0x0be80…0bf00 UnusedSector ┆MPLETION_CODE;      C   :  CHAR; BEGIN    IF CH_COUNT = L_LENGTH THEN BEGIN       CH_COUNT := 0;       L_LENGTH := 0;       WRIT┆
0x0bf00…0bf80 UnusedSector ┆ETEXT(':(:0:)');       REPEAT          L_LENGTH := L_LENGTH + 1;          READ_BYTE(C);          L [L_LENGTH] := C;       UNTIL ┆
0x0bf80…0c000 UnusedSector ┆(C IN [CR, NL, EM]) OR (L_LENGTH = 132);    END;    CH_COUNT := CH_COUNT + 1;    CH := L [ CH_COUNT ]; END;   " GETCH "  FUNCTIO┆
0x0c000…0c080 UnusedSector ┆N EOLN : BOOLEAN; "************************************************************ * COMPARE LINE POINTER TO LINE LENGTH, AND      ┆
0x0c080…0c100 UnusedSector ┆            * * RETURN TRUE OR FALSE                                      * ****************************************************┆
0x0c100…0c180 UnusedSector ┆********" BEGIN    EOLN := CH_COUNT = L_LENGTH; END; "EOLN"  PROCEDURE SKIPLINE; "**********************************************┆
0x0c180…0c200 UnusedSector ┆************** * SET LINE POINTER TO LAST CHARACTER IN LINE                * ***************************************************┆
0x0c200…0c280 UnusedSector ┆*********" BEGIN    CH_COUNT := L_LENGTH; END; "SKIPLINE"   PROCEDURE GETSYM; "*************************************************┆
0x0c280…0c300 UnusedSector ┆*********** * SOURCE SCANNER                                            * * GET AND DECODE RESERVED WORDS                       ┆
0x0c300…0c380 UnusedSector ┆   z ░^{   ░  w} ░ ~   ░     ░ |   ░     ░     ░     ░  I  ░     ░?    ░     ░    ]!             2  ]! %            7           ┆
0x0c380…0c400 UnusedSector ┆= K + 1;             GETCH;          UNTIL NOT (CH IN NUMERIC);          SPLIT_LONG(LONG_NUM, NUM, I);       END       ELSE     ┆
0x0c400…0c480 UnusedSector ┆     IF CH = '#' THEN          BEGIN    "HEXNUMBER"             GETCH;             LONG_NUM := 0L;             SYM := NUMBER;   ┆
0x0c480…0c500 UnusedSector ┆          WHILE CH IN HEXNUMERIC DO BEGIN                IF CH IN NUMERIC THEN BEGIN                   I_L := CREATE_LONG(ORD(CH┆
0x0c500…0c580 UnusedSector ┆)-ORD('0'), 0);                   LONG_NUM := 16L * LONG_NUM + I_L;                END                ELSE                 BEGIN┆
0x0c580…0c600 UnusedSector ┆                   I_L := CREATE_LONG(ORD(CH)-55, 0);                   LONG_NUM := LONG_NUM * 16L + I_L;                END;   ┆
0x0c600…0c680 UnusedSector ┆             GETCH;             END;             SPLIT_LONG(LONG_NUM, NUM, I);          END          ELSE          IF CH = ':' T┆
0x0c680…0c700 UnusedSector ┆HEN           BEGIN             SYM := COLON;             GETCH;          END          ELSE             IF CH = '/' THEN        ┆
0x0c700…0c780 UnusedSector ┆     BEGIN                SYM := SLASH;                GETCH;             END             ELSE                IF CH = EM THEN   ┆
0x0c780…0c800 UnusedSector ┆                TERMINATE(EOF)                ELSE                BEGIN                   SYM := NUL;                   GETCH;  ┆
0x0c800…0c880 UnusedSector ┆              END; END; "GETSYM"   PROCEDURE GETSYMBOL(EXPECT : SET_OF_SYMBOL; "ALLOWED SYMBOLS"                     ERR_NO : IN┆
0x0c880…0c900 UnusedSector ┆TEGER " EVENTUAL ERROR NUMBER"); "************************************************************ *                                ┆
0x0c900…0c980 UnusedSector ┆                           * ************************************************************" BEGIN    IF NOT ERROR_IN_LINE THEN BE┆
0x0c980…0ca00 UnusedSector ┆GIN       GETSYM;       IF NOT (SYM IN EXPECT) THEN BEGIN          ERROR_IN_LINE := TRUE;          SKIPLINE;          S_ERROR(ER┆
0x0ca00…0ca80 UnusedSector ┆R_NO);       END;    END; END; "GETSYMBOL";  PROCEDURE NUMBER_OK(VALUE, MIN, MAX : INTEGER) : BOOLEAN; "************************┆
0x0ca80…0cb00 UnusedSector ┆************************************ * CHECK IF VALUE IS IN THE RANGE MIN..MAX                   * * IF NOT, PRINT ERRORMESSAGE ┆
0x0cb00…0cb80 UnusedSector ┆5                              * ************************************************************" BEGIN    IF NOT ERROR_IN_LINE THE┆
0x0cb80…0cc00 UnusedSector ┆N       IF (VALUE >= MIN) AND (VALUE <= MAX) THEN          NUMBER_OK := TRUE       ELSE BEGIN          S_ERROR(5);          SKIP┆
0x0cc00…0cc80 UnusedSector ┆LINE;          NUMBER_OK := FALSE;          ERROR_IN_LINE := TRUE;       END; END; "NUMBER_OK"   6  i  #          t   t R     T ┆
0x0cc80…0cd00 UnusedSector ┆Z Z h   i   Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z ┆
0x0cd00…0cd80 UnusedSector ┆Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z ┆
         […0x2…]
0x0ce80…0cf00 UnusedSector ┆  ON_X  j         f    ░ H     |   ░T_CO ░     ░     ░     ░SCAN ░R    ░     ░     ░     ░     ░     ░     ░     ░     ░     ░  ┆
0x0cf00…0cf80 UnusedSector ┆   ░     ░     ░  ░  ░     ░  }  ░     ░  D  ░; d  ░]!   ░     ░d FD ░00   ░     ░s    ░     ░     ░     ░     ░     ░     ░  ]!┆
0x0cf80…0d000 UnusedSector ┆ ░     ░     ░(    ░  p  ░  ]! ░     ░     ░     ░     ░     ░     ░  =4 ░ 7   ░   > ░eF   ░   G ░ M   ░  bW ░ Z   ░   i ░     ░┆
0x0d000…0d080 UnusedSector ┆                   * ************************************************************"   PROCEDURE PARSE_COMMAND(VAR S : SAVED_COMMA┆
0x0d080…0d100 UnusedSector ┆ND_TYPE;                         COMM_BEG_SYS : SET_OF_SYMBOL); FORWARD; $@**USERS.D*TLM.D*TEST_MAGTAPE.D*PARSE_DEV_UNIT $@**USE┆
0x0d100…0d180 UnusedSector ┆RS.D*TLM.D*TEST_MAGTAPE.D*PARSE_FUNCTION $@**USERS.D*TLM.D*TEST_MAGTAPE.D*PARSE_CONTR_COMM $@**USERS.D*TLM.D*TEST_MAGTAPE.D*PARS┆
0x0d180…0d200 UnusedSector ┆Z Z     Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z ┆
0x0d200…0d280 UnusedSector ┆Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z ┆
         […0x2…]
0x0d380…0d400 UnusedSector ┆  ON_X  x         j    ░ H     |   ░T_CO ░     ░     ░     ░SCAN ░R    ░     ░     ░     ░  PA ░ER   ░     ░     ░     ░     ░  ┆
0x0d400…0d480 UnusedSector ┆   ░     ░     ░  ░  ░     ░  }  ░     ░  D  ░; d  ░]!   ░     ░d FD ░00   ░     ░s    ░     ░     ░     ░     ░     ░     ░  ]!┆
0x0d480…0d500 UnusedSector ┆ ░     ░     ░(    ░  p  ░  ]! ░     ░     ░     ░     ░     ░     ░  =4 ░ 7   ░   > ░eF   ░   G ░ M   ░  bW ░ Z   ░   i ░     ░┆
0x0d500…0d580 UnusedSector ┆   z ░^{   ░  w} ░ ~   ░     ░ |   ░     ░     ░     ░  I  ░     ░?    ░     ░    ]!             2  ]! %            7           ┆
0x0d580…0d600 UnusedSector ┆Z Z n   o   Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z ┆
0x0d600…0d680 UnusedSector ┆Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z ┆
         […0x2…]
0x0d780…0d800 UnusedSector ┆  ON_X            l    ░ H     |   ░T_CO ░     ░     ░     ░SCAN ░R    ░     ░     ░     ░  PA ░ER   ░     ░     ░     ░     ░IN┆
0x0d800…0d880 UnusedSector ┆_P ░GRAM ░     ░  ░  ░     ░  }  ░     ░  D  ░; d  ░]!   ░     ░d FD ░00   ░     ░s    ░     ░     ░     ░     ░     ░     ░  ]!┆
0x0d880…0d900 UnusedSector ┆ ░     ░     ░(    ░  p  ░  ]! ░     ░     ░     ░     ░     ░     ░  =4 ░ 7   ░   > ░eF   ░   G ░ M   ░  bW ░ Z   ░   i ░     ░┆
0x0d900…0d980 UnusedSector ┆   z ░^{   ░  w} ░ ~   ░     ░ |   ░     ░     ░     ░  I  ░     ░?    ░     ░    ]!             2  ]! %            7           ┆
0x0d980…0da00 UnusedSector ┆$@**USERS.D*TLM.D*TEST_MAGTAPE.D*HEADING $@**USERS.D*TLM.D*TEST_MAGTAPE.D*CONST $@**USERS.D*TLM.D*TEST_MAGTAPE.D*TYPE $@**USERS.┆
0x0da00…0da80 UnusedSector ┆D*TLM.D*TEST_MAGTAPE.D*VAR $@**USERS.D*TLM.D*TEST_MAGTAPE.D*TERMINAL_IO $@**USERS.D*TLM.D*TEST_MAGTAPE.D*FILE_CONNECTION $@**USE┆
0x0da80…0db00 UnusedSector ┆  " PARSER " "--------"  "************************************************************ *                P A R S E R             ┆
0x0db00…0db80 UnusedSector ┆                   * ************************************************************"   PROCEDURE PARSE_COMMAND(VAR S : SAVED_COMMA┆
0x0db80…0dc00 UnusedSector ┆ND_TYPE;                         COMM_BEG_SYS : SET_OF_SYMBOL); FORWARD; $@**USERS.D*TLM.D*TEST_MAGTAPE.D*PARSE_DEV_UNIT $@**USE┆
0x0dc00…0dc80 UnusedSector ┆RS.D*TLM.D*TEST_MAGTAPE.D*PARSE_FUNCTION $@**USERS.D*TLM.D*TEST_MAGTAPE.D*PARSE_CONTR_COMM $@**USERS.D*TLM.D*TEST_MAGTAPE.D*PARS┆
0x0dc80…0dd00 UnusedSector ┆E_NORMTEST $@**USERS.D*TLM.D*TEST_MAGTAPE.D*PARSE_SPECTEST $@**USERS.D*TLM.D*TEST_MAGTAPE.D*PARSE_COMMAND A R S E R             ┆
0x0dd00…0dd80 UnusedSector ┆_P ░GRAM ░     ░  ░  ░     ░MERG ░INES ░     ░  d  ░]!   ░     ░d FD ░00   ░     ░s    ░     ░     ░     ░     ░     ░     ░  ]!┆
0x0dd80…0de00 UnusedSector ┆ ░     ░     ░(    ░  p  ░  ]! ░     ░     ░     ░     ░     ░     ░  =4 ░ 7   ░   > ░eF   ░   G ░ M   ░  bW ░ Z   ░   i ░     ░┆
0x0de00…0de80 UnusedSector ┆   z ░^{   ░  w} ░ ~   ░     ░ |   ░     ░     ░     ░  I  ░     ░?    ░     ░    ]!             1  ]! %            7   J       ┆
0x0de80…0df00 UnusedSector ┆Z Z t   u   v   Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z ┆
0x0df00…0df80 UnusedSector ┆Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z ┆
         […0x2…]
0x0e080…0e100 UnusedSector ┆  ON_X            r    ░ H     |   ░T_CO ░     ░     ░     ░SCAN ░R    ░     ░     ░     ░  PA ░ER   ░     ░     ░     ░     ░IN┆
0x0e100…0e180 UnusedSector ┆_P ░GRAM ░     ░  ░  ░     ░MERG ░INES ░     ░  d  ░]!   ░  TE ░_MAG ░PE.T ░     ░s    ░     ░     ░     ░     ░     ░     ░  ]!┆
0x0e180…0e200 UnusedSector ┆ ░     ░     ░(    ░  p  ░  ]! ░     ░     ░     ░     ░     ░     ░  =4 ░ 7   ░   > ░eF   ░   G ░ M   ░  bW ░ Z   ░   i ░     ░┆
0x0e200…0e280 UnusedSector ┆   z ░^{   ░  w} ░ ~   ░     ░ |   ░     ░     ░     ░  I  ░     ░?    ░     ░    ]!             2  ]! %            7   J       ┆
0x0e280…0e300 UnusedSector ┆NAME             TYPE           SIZE ALLOCATED  AREASIZE HEADING          RANDOM            0         0         1 CONST         ┆
0x0e300…0e380 UnusedSector ┆   RANDOM            0         0         1 TYPE             RANDOM            0         0         1 VAR              RANDOM     ┆
0x0e380…0e400 UnusedSector ┆       0         0         1 TERMINAL_IO      RANDOM            0         0         1 FILE_CONNECTION  RANDOM            0      ┆
0x0e400…0e480 UnusedSector ┆   0         1 INITIALIZE       RANDOM            0         0         1 TESTPATT_GEN     RANDOM            0         0         1┆
0x0e480…0e500 UnusedSector ┆RS.D*TLM.D*TEST_MAGTAPE.D*INITIALIZE $@**USERS.D*TLM.D*TEST_MAGTAPE.D*TESTPATT_GEN $@**USERS.D*TLM.D*TEST_MAGTAPE.D*TESTPATT_CHE┆
0x0e500…0e580 UnusedSector ┆CK $@**USERS.D*TLM.D*TEST_MAGTAPE.D*MTC_IO $@**USERS.D*TLM.D*TEST_MAGTAPE.D*MTC_ERR_MSG $@**USERS.D*TLM.D*TEST_MAGTAPE.D*COMMAND┆
0x0e580…0e600 UnusedSector ┆_XQT $@**USERS.D*TLM.D*TEST_MAGTAPE.D*MTC_COMM_XQT $@**USERS.D*TLM.D*TEST_MAGTAPE.D*FUNCTION_XQT $@**USERS.D*TLM.D*TEST_MAGTAPE.┆
0x0e600…0e680 UnusedSector ┆D*INTERPRET_COMM $@**USERS.D*TLM.D*TEST_MAGTAPE.D*SCANNER $@**USERS.D*TLM.D*TEST_MAGTAPE.D*PARSER $@**USERS.D*TLM.D*TEST_MAGTAPE┆
0x0e680…0e700 UnusedSector ┆.D*MAIN_PROGRAM MAGTAPE.D*INITIALIZE $@**USERS.D*TLM.D*TEST_MAGTAPE.D*TESTPATT_GEN $@**USERS.D*TLM.D*TEST_MAGTAPE.D*TESTPATT_CHE┆
0x0e700…0e780 UnusedSector ┆CK $@**USERS.D*TLM.D*TEST_MAGTAPE.D*MTC_IO $@**USERS.D*TLM.D*TEST_MAGTAPE.D*MTC_ERR_MSG $@**USERS.D*TLM.D*TEST_MAGTAPE.D*COMMAND┆
0x0e780…0e800 UnusedSector ┆Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z ┆
         […0x3…]
0x0e980…0ea00 UnusedSector ┆  ON_X            p    ░ H     |   ░T_CO ░     ░     ░     ░SCAN ░R    ░     ░     ░     ░  PA ░ER   ░     ░     ░     ░     ░IN┆
0x0ea00…0ea80 UnusedSector ┆_P ░GRAM ░     ░  ░  ░     ░MERG ░INES ░     ░  d  ░]!   ░  TE ░_MAG ░PE.T ░     ░s    ░     ░INTF ░E    ░     ░     ░     ░  ]!┆
0x0ea80…0eb00 UnusedSector ┆ ░     ░     ░(    ░  p  ░  ]! ░     ░     ░     ░     ░     ░     ░  =4 ░ 7   ░   > ░eF   ░   G ░ M   ░  bW ░ Z   ░   i ░     ░┆
0x0eb00…0eb80 UnusedSector ┆   z ░^{   ░  w} ░ ~   ░     ░ |   ░     ░     ░     ░  I  ░     ░?    ░     ░    ]!             2  ]! %            7   J       ┆
0x0eb80…0ec00 UnusedSector ┆Z Z |                                                                   Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z ┆
0x0ec00…0ec80 UnusedSector ┆Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z ┆
         […0x2…]
0x0ed80…0ee00 UnusedSector ┆  ON_X            z    ░ H     |   ░T_CO ░     ░     ░     ░SCAN ░R    ░     ░     ░     ░  PA ░ER   ░     ░     ░     ░     ░IN┆
0x0ee00…0ee80 UnusedSector ┆_P ░GRAM ░     ░  ░  ░     ░MERG ░INES ░     ░  d  ░]!   ░  TE ░_MAG ░PE.T ░     ░s    ░     ░INTF ░E    ░     ░     ░     ░PRET┆
0x0ee80…0ef00 UnusedSector ┆ TESTPATT_CHECK   RANDOM            0         0         1 MTC_IO           RANDOM            0         0         1 MTC_ERR_MSG  ┆
0x0ef00…0ef80 UnusedSector ┆    RANDOM            0         0         1 COMMAND_XQT      RANDOM            0         0         1 MTC_COMM_XQT     RANDOM    ┆
0x0ef80…0f000 UnusedSector ┆        0         0         1 FUNCTION_XQT     RANDOM            0         0         1 INTERPRET_COMM   RANDOM            0     ┆
0x0f000…0f080 UnusedSector ┆    0         1 SCANNER          RANDOM            0         0         1 PARSER           RANDOM            0         0         ┆
0x0f080…0f100 UnusedSector ┆1 MAIN_PROGRAM     RANDOM            0         0         1 MERGELINES       RANDOM            0         0         1 TEST_MAGTAPE┆
0x0f100…0f180 UnusedSector ┆.T   RANDOM            0         0         5 PRINTFILE        RANDOM            0         0         5 R              RANDOM     ┆
0x0f180…0f200 UnusedSector ┆       0         0         1 TERMINAL_IO      RANDOM            0         0         1 FILE_CONNECTION  RANDOM            0      ┆
0x0f200…0f280 UnusedSector ┆   0         1 INITIALIZE       RANDOM            0         0         1 TESTPATT_GEN     RANDOM            0         0         1┆
0x0f280…0f300 UnusedSector ┆Z Z y   Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z ┆
0x0f300…0f380 UnusedSector ┆Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z ┆
         […0x2…]
0x0f480…0f500 UnusedSector ┆  ON_X  |         w    ░ H     |   ░T_CO ░     ░     ░     ░SCAN ░R    ░     ░     ░     ░  PA ░ER   ░     ░     ░     ░     ░IN┆
0x0f500…0f580 UnusedSector ┆_P ░GRAM ░     ░  ░  ░     ░MERG ░INES ░     ░  d  ░]!   ░  TE ░_MAG ░PE.T ░     ░s    ░     ░INTF ░E    ░     ░     ░     ░  ]!┆
0x0f580…0f600 UnusedSector ┆ ░     ░     ░(    ░  p  ░  ]! ░     ░     ░     ░     ░     ░     ░  =4 ░ 7   ░   > ░eF   ░   G ░ M   ░  bW ░ Z   ░   i ░     ░┆
0x0f600…0f680 UnusedSector ┆   z ░^{   ░  w} ░ ~   ░     ░ |   ░     ░     ░     ░  I  ░     ░?    ░     ░    ]!             2  ]! %            7   J       ┆
0x0f680…0f700 UnusedSector ┆"************************************************************ ************************************************************"  ░IN┆
0x0f700…0f780 UnusedSector ┆**************************************** * READ AND RETURN A CHARACTER FROM INPUT STREAM             * *************************┆
0x0f780…0f800 UnusedSector ┆***********************************" VAR CC  :  COMPLETION_CODE; BEGIN    INBYTE(INSTREAM, C, CC); END; "READ_BYTE"  PROCEDURE W┆
0x0f800…0f880 UnusedSector ┆RITE_BYTE(C : CHAR); "************************************************************ * WRITE A CHARACTER TO OUTPUT STREAM         ┆
0x0f880…0f900 UnusedSector ┆ ░LINE ░     ░     ░  p  ░  ]! ░     ░     ░     ░     ░     ░     ░  =4 ░ 7   ░   > ░eF   ░   G ░ M   ░  bW ░ Z   ░   i ░     ░┆
0x0f900…0f980 UnusedSector ┆   z ░^{   ░  w} ░ ~   ░     ░ |   ░     ░     ░     ░  I  ░     ░?    ░     ░    ]!             2  ]! %            7   J       ┆
0x0f980…0fa00 UnusedSector ┆"HEADING" "******************************************************************* * PROJECT           CR80D/TEST-MAGTAPE/1693      ┆
0x0fa00…0fa80 UnusedSector ┆                  * *                                                                  * * MODULE NAME       TEST-MAGTAPE       ┆
0x0fa80…0fb00 UnusedSector ┆                            * * MODULE ID NMB.    CSS/719                                        * * MODULE VERSION    0001     ┆
0x0fb00…0fb80 UnusedSector ┆                                      * * MODULE TYPE       M & D                                          * * MODULE FILES     ┆
0x0fb80…0fc00 UnusedSector ┆                                                * * MERGE  FILES      TBS                                            * *        ┆
0x0fc00…0fc80 UnusedSector ┆                                                          * * SPECIFICATIONS    CSS/719/USM/0049                               *┆
0x0fc80…0fd00 UnusedSector ┆ * AUTHOR/DATE       TLM/80----                                     * *                                                         ┆
0x0fd00…0fd80 UnusedSector ┆         * * DELIVERABLE       NO                                             * * SOURCE LANGUAGE   CR80 PASCAL                 ┆
0x0fd80…0fe00 UnusedSector ┆                   * * COMPILE COMPUTER  CR80                                           * * TARGET  COMPUTER  CR80D             ┆
0x0fe00…0fe80 UnusedSector ┆                             * * OPER. SYSTEM      DAMOS                                          * *                           ┆
0x0fe80…0ff00 UnusedSector ┆                                       * ******************************************************************** *                 ┆
0x0ff00…0ff80 UnusedSector ┆                                                 * * CHANGE RECORD                                                    * *       ┆
0x0ff80…10000 UnusedSector ┆                                                           * *******************************************************************┆
0x10000…10080 UnusedSector ┆" "************************************************************ ************************************************************"   ┆
0x10080…10100 UnusedSector ┆" TYPE " "------" TYPE SYMBOLS = (IDENT, COLON, SLASH, NUMBER,                  ALLSYM, BSYM, BADSYM, BEGINSYM,                 ┆
0x10100…10180 UnusedSector ┆ BLOCKSYM, BMOSYM, CHSYM, DAFMSSYM,                  DATASYM, DEFSYM, DEVSYM, DISPLAYSYM,                  EDITSYM, ENDSYM, ENDR┆
0x10180…10200 UnusedSector ┆EPSYM, EOTSYM,                  ERASESYM, FIXEDSYM, FMSSYM, FORSYM,                  GENSYM, HIGHSYM, INITSYM, LISTSYM,         ┆
0x10200…10280 UnusedSector ┆         LOADINSSYM, LOWSYM, NORMALSYM, OFSSYM,                  OPCODESYM, PRINTSYM, PRIOSYM, READSYM,                  READREV┆
0x10280…10300 UnusedSector ┆SYM, READYSYM, REPEATSYM, REPORTSYM,                  REVSYM, REWSYM, REWINDSYM, REWMASKSYM,                  SKIPSYM, STATUSSYM┆
0x10300…10380 UnusedSector ┆, SYSTEMSYM, TESTSYM,                  THRSYM, TPSYM, TRANSFERSYM, TRANSPORTSYM,                  UNITSYM, UNLOADSYM, USERSSYM, ┆
0x10380…10400 UnusedSector ┆WRITESYM,                  WRITEFMSYM);    "TERMINAL_IO" "-----------"  PROCEDURE READ_BYTE(VAR C : CHAR); "********************┆
0x10400…10480 UnusedSector ┆C  :  COMPLETION_CODE; BEGIN    OUTTEXT(OUTSTREAM, T, CC);    FLUSH(OUTSTREAM, CC); END; "WRITETEXT"  PROCEDURE WRITEINT(N : INT┆
0x10480…10500 UnusedSector ┆EGER); "************************************************************ * WRITE AN INTEGER TO OUTPUT STREAM                        ┆
0x10500…10580 UnusedSector ┆ * ************************************************************" VAR CC  :  COMPLETION_CODE; BEGIN    OUTINTEGER(OUT_STREAM, N, ┆
0x10580…10600 UnusedSector ┆0, CC); END; "WRITEINT"    PROCEDURE WRITEHEX(N : INTEGER); "************************************************************ * WRIT┆
0x10600…10680 UnusedSector ┆E A HEX. INTEGER TO OUTPUT STREAM                     * ************************************************************" VAR CC  : ┆
0x10680…10700 UnusedSector ┆ COMPLETION_CODE; BEGIN    OUTHEXA(OUTSTREAM, N, '#', CC); END; "WRITEHEX"  PROCEDURE WRITEHEXBYTE(N : INTEGER); "**************┆
0x10700…10780 UnusedSector ┆********************************************** * WRITE A HEX. BYTE TO OUTPUT STREAM                        * *******************┆
0x10780…10800 UnusedSector ┆*****************************************" VAR N1, N2 : INTEGER; BEGIN    N1 := N MOD 16;    N2 := (N MOD 256) DIV 16;    WRITE_┆
0x10800…10880 UnusedSector ┆BYTE(HEXCH(N2]);    WRITE_BYTE(HEXCH[N1]);    WRITE_BYTE(SP); END; "WRITEHEXBYTE"  PROCEDURE WRITEBIN(N : INTEGER); "***********┆
0x10880…10900 UnusedSector ┆************************************************* * WRITE A BINARY INTEGER TO OUTPUT STREAM                   * ****************┆
0x10900…10980 UnusedSector ┆********************************************" VAR N1  :  INTEGER; BEGIN    FOR N1 := 15 DOWNTO 0 DO BEGIN       IF TESTBIT(N, N1┆
0x10980…10a00 UnusedSector ┆) THEN WRITE_BYTE('1')                         ELSE WRITE_BYTE('0');       WRITE_BYTE(SP);    END; END; "WRITEBIN"  PROCEDURE WR┆
0x10a00…10a80 UnusedSector ┆ITENL; "************************************************************ * WRITE A NEXT-LINE CHARACTER TO OUTPUT STREAM             ┆
0x10a80…10b00 UnusedSector ┆ * ************************************************************" BEGIN    WRITE_BYTE(NL); END; "WRITENL"   "FILE_CONNECTION" "--┆
0x10b00…10b80 UnusedSector ┆-------------"  PROCEDURE CHECK_CC(CC : COMPLETION_CODE; TEXT : LINE); BEGIN    IF CC <> 0 THEN BEGIN       WRITETEXT(TEXT);    ┆
0x10b80…10c00 UnusedSector ┆   TERMINATE(CC);    END; END;  PROCEDURE CONNECT_INSTREAM(F : FILE); "*********************************************************┆
0x10c00…10c80 UnusedSector ┆*** * CONNECT INSTREAM TO FILE F                                * ************************************************************" ┆
0x10c80…10d00 UnusedSector ┆VAR CC  :  COMPLETION_CODE; BEGIN    CONNECT(F, INPUT_MODE, INSTREAM, CC);    CHECK_CC(CC, 'CAN''T CONNECT INPUT STREAM (:0:)');┆
0x10d00…10d80 UnusedSector ┆ END;  PROCEDURE CONNECT_OUTSTREAM(F : FILE); "************************************************************ * CONNECT OUTSTREAM ┆
0x10d80…10e00 UnusedSector ┆TO FILE F                               * ************************************************************" VAR CC  :  COMPLETION_CO┆
0x10e00…10e80 UnusedSector ┆DE; BEGIN    CONNECT(F, OUTPUT MODE, OUTSTREAM, CC);    CHECK_CC(CC,'CAN''T CONNECT OUTPUT FILE (:0:)'); END; "CONNECT_OUTSTREAM┆
0x10e80…10f00 UnusedSector ┆"    PROCEDURE DISCONNECT_OUTSTREAM(F : FILE); "************************************************************ * DISCONNECT INSTRE┆
0x10f00…10f80 UnusedSector ┆AM FROM FILE F                           * ************************************************************" VAR CC  :  COMPLETION_C┆
0x10f80…11000 UnusedSector ┆               * ************************************************************" VAR CC  :  COMPLETION_CODE; BEGIN    OUTBYTE(OUTS┆
0x11000…11080 UnusedSector ┆TREAM, C, CC); END; "WRITE_BYTE"  PROCEDURE WRITETEXT(T : TEXT); "************************************************************ *┆
0x11080…11100 UnusedSector ┆ WRITE A STRING OF CHARACTERS TO OUTPUT STREAM             * ************************************************************" VAR C┆
0x11100…11180 UnusedSector ┆   GIVEN                :  ARRAY [PARAMFILES] OF BOOLEAN;       PF                   :  PARAMFILES;       FSN                  :┆
0x11180…11200 UnusedSector ┆  FILE_SYSTEM_NAME;       VOL                  :  VOLUME_NAME;       NAMELIST             :  NAMELISTTYPE;       NUMB_NAMES     ┆
0x11200…11280 UnusedSector ┆      :  INTEGER;       COMPLETE_NAME        :  BOOLEAN;       CH                   :  CHAR;       ATTR                 :  FILE_┆
0x11280…11300 UnusedSector ┆ATTRIBUTES;       N                    :  INTEGER;  BEGIN "CONNECT PARAMS"    CONNECT_OUTSTREAM(PARAM.OFILE);    INFILE  := PARA┆
0x11300…11380 UnusedSector ┆M.IFILE;    OUTFILE := PARAM.OFILE;    IF NOT BOOTMODULE THEN BEGIN       FSN := PARAM.FSN;       VOL := PARAM.VOL;       CONNEC┆
0x11380…11400 UnusedSector ┆T(PARAM.PFILE, INPUT_MODE, PARAM_STREAM, CC);       CHECK_CC(CC, 'CONNECTION ERROR (:0:)');       REPEAT          GET_BYTE(PARAM┆
0x11400…11480 UnusedSector ┆_STREAM, CH);       UNTIL CH = NL; "SKIP FIRST LINE OF PARAMETERFILE"       FOR PF := IFILE TO OFILE DO          GIVEN[PF] := FA┆
0x11480…11500 UnusedSector ┆LSE;       REPEAT          REPEAT             GET_BYTE(PARAM_STREAM, CH);          UNTIL CH <> SP;          IF CH IN ['I','O'] T┆
0x11500…11580 UnusedSector ┆HEN BEGIN             CASE CH OF             'I' : PF := IFILE;             'O' : PF := OFILE;             END; "CASE"          ┆
0x11580…11600 UnusedSector ┆   GET_BYTE(PARAM_STREAM, CH);             IF CH = ':' THEN BEGIN                FSN := PARAM.FSN;                VOL := PARAM.V┆
0x11600…11680 UnusedSector ┆OL;                INFILEID(PARAM_STREAM, COMPLETE_NAME, FSN, VOL,                          NAMELIST, NUMB_NAMES, CC);          ┆
0x11680…11700 UnusedSector ┆      CHECK_CC(CC, 'FILE NAME ERROR (:0:)');                GIVEN[PF] := TRUE;                CASE PF OF                IFILE : ┆
0x11700…11780 UnusedSector ┆FIND_FILE(COMPLETE_NAME, FSN, VOL,                                  NAMELIST, NUMB_NAMES,                                  PARAM┆
0x11780…11800 UnusedSector ┆.DFILE, INFILE, CC);                OFILE : FIND_FILE(COMPLETE_NAME, FSN, VOL,                                   NAMELIST, NUMB_┆
0x11800…11880 UnusedSector ┆NAMES,                                  PARAM.DFILE, OUTFILE, CC)                END; "CASE"                CHECK_CC(CC, 'FILE N┆
0x11880…11900 UnusedSector ┆OT FOUND (:0:)');             END             ELSE                IF NOT (CH IN [NL, EM]) THEN BEGIN                   WRITETEXT┆
0x11900…11980 UnusedSector ┆('PARAMETER ERROR (:0:)');                   TERMINATE(0);                END;          END          ELSE             IF NOT (CH┆
0x11980…11a00 UnusedSector ┆ODE; BEGIN    DISCONNECT(INSTREAM, F, CC);    CHECK_CC(CC, 'DISCONNECTION OF INPUT STREAM (:0:)'); END; "DISCONNECT_INSTREAM"  P┆
0x11a00…11a80 UnusedSector ┆ROCEDURE DISCONNECT_OUTSTREAM(F : FILE); "************************************************************ * DISCONNECT OUTSTREAM FR┆
0x11a80…11b00 UnusedSector ┆OM FILE F                          * ************************************************************" VAR CC  :  COMPLETION_CODE; B┆
0x11b00…11b80 UnusedSector ┆EGIN    DISCONNECT(OUTSTREAM, F, CC);    CHECK_CC(CC, 'DISCONNECTION OF OUTPUT STREAM (:0:)'); END; "DISCONNECT_OUTSTREAM"   PRO┆
0x11b80…11c00 UnusedSector ┆CEDURE GET_BYTE(S : STREAM; VAR CH : CHAR); VAR CC : COMPLETION_CODE; BEGIN    INBYTE(S, CH, CC); END;  PROCEDURE CONNECT_PARAME┆
0x11c00…11c80 UnusedSector ┆TERS; "************************************************************ * READ THE PARAMETER FILE                                   ┆
0x11c80…11d00 UnusedSector ┆* * CHECK IF THE EVENTUAL FILES EXIST                         * * CONNECT STREAMS TO THE FILES                              * * ┆
0x11d00…11d80 UnusedSector ┆IF BOOTMODULE, ESTABLISH CONNECTION TO CONSOLE            * ************************************************************" TYPE  ┆
0x11d80…11e00 UnusedSector ┆PARAMFILES           =  (IFILE, OFILE); VAR   PARAM_STREAM         :  STREAM;       CC                   :  COMPLETION_CODE;    ┆
0x11e00…11e80 UnusedSector ┆HR         ';    WORD[ 46 ] := 'TP          ';    WORD[ 47 ] := 'TRANSFER    ';    WORD[ 48 ] := 'TRANSPORT   ';    WORD[ 49 ] :┆
0x11e80…11f00 UnusedSector ┆= 'UNIT        ';    WORD[ 50 ] := 'UNLOAD      ';    WORD[ 51 ] := 'USERS       ';    WORD[ 52 ] := 'WRITE       ';    WORD[ 53┆
0x11f00…11f80 UnusedSector ┆ ] := 'WRITEFM     ';     WSYM[ 1 ] := ALLSYM;    WSYM[ 2 ] := BSYM;    WSYM[ 3 ] := BADSYM;    WSYM[ 4 ] := BEGINSYM;    WSYM[ ┆
0x11f80…12000 UnusedSector ┆5 ] := BLOCKSYM;    WSYM[ 6 ] := BMOSYM;    WSYM[ 7 ] := CHSYM;    WSYM[ 8 ] := DAFMSSYM;    WSYM[ 9 ] := DATASYM;    WSYM[ 10 ]┆
0x12000…12080 UnusedSector ┆ := DEFSYM;    WSYM[ 11 ] := DEVSYM;    WSYM[ 12 ] := DISPLAYSYM;    WSYM[ 13 ] := EDITSYM;    WSYM[ 14 ] := ENDSYM;    WSYM[ 15┆
0x12080…12100 UnusedSector ┆ ] := ENDREPSYM;    WSYM[ 16 ] := EOTSYM;    WSYM[ 17 ] := ERASESYM;    WSYM[ 18 ] := FIXEDSYM;    WSYM[ 19 ] := FMSSYM;    WSYM┆
0x12100…12180 UnusedSector ┆[ 20 ] := FORSYM;    WSYM[ 21 ] := GENSYM;    WSYM[ 22 ] := HIGHSYM;    WSYM[ 23 ] := INITSYM;    WSYM[ 24 ] := LISTSYM;    WSYM┆
0x12180…12200 UnusedSector ┆[ 25 ] := LOADINSSYM;    WSYM[ 26 ] := LOWSYM;    WSYM[ 27 ] := NORMALSYM;    WSYM[ 28 ] := OFSSYM;    WSYM[ 29 ] := OPCODESYM; ┆
0x12200…12280 UnusedSector ┆   WSYM[ 30 ] := PRINTSYM;    WSYM[ 31 ] := PRIOSYM;    WSYM[ 32 ] := READSYM;    WSYM[ 33 ] := READREVSYM;    WSYM[ 34 ] := REA┆
0x12280…12300 UnusedSector ┆DYSYM;    WSYM[ 35 ] := REPEATSYM;    WSYM[ 36 ] := REPORTSYM;    WSYM[ 37 ] := REVSYM;    WSYM[ 38 ] := REWSYM;    WSYM[ 39 ] :┆
0x12300…12380 UnusedSector ┆= REWINDSYM;    WSYM[ 40 ] := REWMASKSYM;    WSYM[ 41 ] := SKIPSYM;    WSYM[ 42 ] := STATUSSYM;    WSYM[ 43 ] := SYSTEMSYM;    W┆
0x12380…12400 UnusedSector ┆ IN [NL, EM]) THEN BEGIN                WRITETEXT('PARAMETER ERROR (:0:)');                TERMINATE(0);             END;       ┆
0x12400…12480 UnusedSector ┆UNTIL CH IN [NL, EM];    END; "IF NOT BOOTMODULE"    DISCONNECT_OUTSTREAM(PARAM.OFILE);    CONNECT_INSTREAM(INFILE);    CONNECT_┆
0x12480…12500 UnusedSector ┆OUTSTREAM(OUTFILE); END; "CONNECT_PARAMS" "************************************************************ ************************┆
0x12500…12580 UnusedSector ┆************************************"   " INITIALIZE " "------------"        WORD[ 1 ] := 'ALL         ';    WORD[ 2 ] := 'B    ┆
0x12580…12600 UnusedSector ┆       ';    WORD[ 3 ] := 'BAD         ';    WORD[ 4 ] := 'BEGIN       ';    WORD[ 5 ] := 'BLOCK       ';    WORD[ 6 ] := 'BMO  ┆
0x12600…12680 UnusedSector ┆       ';    WORD[ 7 ] := 'CH          ';    WORD[ 8 ] := 'DAFMS       ';    WORD[ 9 ] := 'DATA        ';    WORD[ 10 ] := 'DEF ┆
0x12680…12700 UnusedSector ┆        ';    WORD[ 11 ] := 'DEV         ';    WORD[ 12 ] := 'DISPLAY     ';    WORD[ 13 ] := 'EDIT        ';    WORD[ 14 ] := '┆
0x12700…12780 UnusedSector ┆END         ';    WORD[ 15 ] := 'ENDREP      ';    WORD[ 16 ] := 'EOT         ';    WORD[ 17 ] := 'ERASE       ';    WORD[ 18 ] ┆
0x12780…12800 UnusedSector ┆:= 'FIXED       ';    WORD[ 19 ] := 'FMS         ';    WORD[ 20 ] := 'FOR         ';    WORD[ 21 ] := 'GEN         ';    WORD[ 2┆
0x12800…12880 UnusedSector ┆2 ] := 'HIGH        ';    WORD[ 23 ] := 'INIT        ';    WORD[ 24 ] := 'LIST        ';    WORD[ 25 ] := 'LOADINS     ';    WOR┆
0x12880…12900 UnusedSector ┆D[ 26 ] := 'LOW         ';    WORD[ 27 ] := 'NORMAL      ';    WORD[ 28 ] := 'OFS         ';    WORD[ 29 ] := 'OPCODE      ';   ┆
0x12900…12980 UnusedSector ┆ WORD[ 30 ] := 'PRINT       ';    WORD[ 31 ] := 'PRIO        ';    WORD[ 32 ] := 'READ        ';    WORD[ 33 ] := 'READREV     '┆
0x12980…12a00 UnusedSector ┆;    WORD[ 34 ] := 'READY       ';    WORD[ 35 ] := 'REPEAT      ';    WORD[ 36 ] := 'REPORT      ';    WORD[ 37 ] := 'REV      ┆
0x12a00…12a80 UnusedSector ┆   ';    WORD[ 38 ] := 'REW         ';    WORD[ 39 ] := 'REWIND      ';    WORD[ 40 ] := 'REWMASK     ';    WORD[ 41 ] := 'SKIP ┆
0x12a80…12b00 UnusedSector ┆       ';    WORD[ 42 ] := 'STATUS      ';    WORD[ 43 ] := 'SYSTEM      ';    WORD[ 44 ] := 'TEST        ';    WORD[ 45 ] := 'T┆
0x12b00…12b80 UnusedSector ┆:=     BMO * 2048;    N := N + BAD * 1024;    N := N + OFS *  512;    N := N + DIN *  256;    N := N + OP  *    8;    N := N + T┆
0x12b80…12c00 UnusedSector ┆N        ;    CREATE_WORD1 := N; END; "CREATE_WORD1"  FUNCTION CREATE_WORD5(REWMASK_BITNO, OFS_MOST : INTEGER) : INTEGER; "*****┆
0x12c00…12c80 UnusedSector ┆******************************************************* * CREATE WORD 5 OF CONTROLLER COMMAND BUFFER                * * PARAMETE┆
0x12c80…12d00 UnusedSector ┆RS :                                              * *     REWMASK_BITNO : BIT NUMBER OF UNIT TO                 * *             ┆
0x12d00…12d80 UnusedSector ┆        BE INSERTED INTO REWIND MASK          * *     OFS_MOST      : MOST SIGNIFICANT 8 BITS OF            * *                 ┆
0x12d80…12e00 UnusedSector ┆SYM[ 44 ] := TESTSYM;    WSYM[ 45 ] := THRSYM;    WSYM[ 46 ] := TPSYM;    WSYM[ 47 ] := TRANSFERSYM;    WSYM[ 48 ] := TRANSPORTS┆
0x12e00…12e80 UnusedSector ┆YM;    WSYM[ 49 ] := UNITSYM;    WSYM[ 50 ] := UNLOADSYM;    WSYM[ 51 ] := USERSSYM;    WSYM[ 52 ] := WRITESYM;    WSYM[ 53 ] :=┆
0x12e80…12f00 UnusedSector ┆ WRITEFMSYM;    " MTC_IO " "--------"  PROCEDURE WRITE_MTC(BUFFER_WORD_NO, DATA : INTEGER); "***********************************┆
0x12f00…12f80 UnusedSector ┆************************* * WRITE DATA-WORD TO THE CONTROLLER BUFFER                  * * WORD NUMBER <BUFFER_WORD_NO> (0..7)   ┆
0x12f80…13000 UnusedSector ┆                    * * WIO IS USED                                               * ********************************************┆
0x13000…13080 UnusedSector ┆****************" VAR N : INTEGER; BEGIN    N := BUFFER_WORD_NO;    N := LEFTSHIFTS(N, 6);    N := N + DEVNO;    WRITE_IO(N, DAT┆
0x13080…13100 UnusedSector ┆A); END; "WRITE_MTC"  PROCEDURE READ_MTC(BUFFER_WORD_NO : INTEGER;                    VAR DATA       : INTEGER); "**************┆
0x13100…13180 UnusedSector ┆********************************************** * READ DATA-WORD FROM CONTROLLER COMMAND BUFFER             * * WORD NUMBER <BUFF┆
0x13180…13200 UnusedSector ┆ER_WORD_NO> (0..7)                       * * RIO IS USED                                               * ***********************┆
0x13200…13280 UnusedSector ┆*************************************" VAR N : INTEGER; BEGIN    N := LEFTSHIFTS(BUFFER_WORD_NO, 6) + DEVNO;    READ_IO(N, DATA)┆
0x13280…13300 UnusedSector ┆; END; "READ_MTC"  PROCEDURE INIT_MTC; "************************************************************ * SEND AN INITIALIZE COMMAN┆
0x13300…13380 UnusedSector ┆D TO THE CONTROLLER              * * WIO IS USED                                               * *******************************┆
0x13380…13400 UnusedSector ┆*****************************" VAR N : INTEGER; BEGIN    N := DEVNO + 2048;    WRITE_IO(N, 0); END; "INIT_MTC"    PROCEDURE DO_O┆
0x13400…13480 UnusedSector ┆PERATION; "************************************************************ * ENABLE THE EXECUTION OF A COMMAND                     ┆
0x13480…13500 UnusedSector ┆    * * BY CLEARING THE TCR-BIT IN THE COMMAND BUFFER             * ************************************************************┆
0x13500…13580 UnusedSector ┆" BEGIN    WRITE_MTC(7,0); END; "DO_OPERATION"   FUNCTION CREATE_WORD1(BMO, BAD, OFS, DIN, OP, TN : INTEGER) : INTEGER; "*******┆
0x13580…13600 UnusedSector ┆***************************************************** * CREATE WORD 1 OF THE CONTROLLER COMMAND BUFFER            * * PARAMETERS┆
0x13600…13680 UnusedSector ┆ :                                              * *     BMO : BYTE MODE               (0..1)                  * *     BAD : BYTE┆
0x13680…13700 UnusedSector ┆ ADRESS             (0..1)                  * *     OFS : OFFSET USED             (0..1)                  * *     DIN : DISABLE ┆
0x13700…13780 UnusedSector ┆INTERRUPT       (0..1)                  * *     OP  : OPERATION CODE          (0..31)                 * *     TN  : TRANSPORT NU┆
0x13780…13800 UnusedSector ┆MBER        (0..7)                  * ************************************************************" VAR N : INTEGER; BEGIN    N ┆
0x13800…13880 UnusedSector ┆    READ_MTC(5, N);    N := N DIV 256;    IF REWMASK_BITNO <> -1 THEN       SETBIT(N, REWMASK_BITNO + 7);    N := N + OFS_MOST; ┆
0x13880…13900 UnusedSector ┆   CREATE_WORD5 := N; END; "CREATE_WORD5"   "MTC_COMM_XQT" "------------"  PROCEDURE REWIND(UNIT : INTEGER); "******************┆
0x13900…13980 UnusedSector ┆****************************************** * SUBMIT A REWIND COMMAND FOR A SPECIFIED UNIT              * * IF UNIT = CURRENT TES┆
0x13980…13a00 UnusedSector ┆T UNIT : WAIT FOR COMPLETION         * ************************************************************" VAR   W1 : INTEGER;       W┆
0x13a00…13a80 UnusedSector ┆5 : INTEGER; BEGIN    W1 := CREATE_WORD1(BYTE_MODE, BYTE_ADR, 0, 0, #00, UNIT);    WRITE_MTC(1, W1);    REWINDING[ N ] := TRUE; ┆
0x13a80…13b00 UnusedSector ┆   W5 := CREATE_WORD5(UNIT, 0);     "SET REWIND MASK"    WRITE_MTC(5, W5);                    DO_OPERATION;                    "┆
0x13b00…13b80 UnusedSector ┆CLEAR TCR BIT  "    IF UNIT = UNITNO THEN       WAIT_REW_INTERRUPT(UNIT); END; "REWIND"  PROCEDURE UNLOAD(UNIT : INTEGER); "****┆
0x13b80…13c00 UnusedSector ┆******************************************************** * SUBMIT A REWIND AND UNLOAD COMMAND FOR A SPECIFIED UNIT   * * IF UNIT┆
0x13c00…13c80 UnusedSector ┆ = CURRENT TEST UNIT : WAIT FOR COMPLETION         * ************************************************************" VAR   W1 : IN┆
0x13c80…13d00 UnusedSector ┆TEGER;       W5 : INTEGER; BEGIN    W1 := CREATE_WORD1(0, 0, 0, 0, #01, UNIT);    WRITE_MTC(1, W1);    REWINDING[ UNIT ] := TRUE┆
0x13d00…13d80 UnusedSector ┆;    W5 := CREATE_WORD5(UNIT, 0);    WRITE_MTC(5, W5);    DO_OPERATION;    IF UNIT = UNITNO THEN       WAIT_REW_INTERRUPT(UNIT);┆
0x13d80…13e00 UnusedSector ┆ END; "UNLOAD"    FUNCTION STATUS(UNIT : INTEGER) : INTEGER; "************************************************************ * SUB┆
0x13e00…13e80 UnusedSector ┆MIT A READ STATUS COMMAND FOR A SPECIFIED UNIT         * * RETURN STATUS                                             * *********┆
0x13e80…13f00 UnusedSector ┆***************************************************" VAR   W1, W7 : INTEGER; BEGIN    W1 := CREATE_WORD1(0, 0, 0, 0, #02, UNIT);┆
0x13f00…13f80 UnusedSector ┆    WRITE_MTC(1, W1);    DO_OPERATION;    READ_MTC(7, W7);    STATUS := W7; END; "STATUS"  PROCEDURE SKIP(KIND      : SKIPKINDS;┆
0x13f80…14000 UnusedSector ┆ "DATA, FMS, DAFMS OR EOT"                LENGTH    : INTEGER;   "NUMBER OF ITEMS        "                DIRECTION : DIRECTION_┆
0x14000…14080 UnusedSector ┆TYPE "FORWARD OR REVERSE "); "************************************************************ * SUBMIT A SKIP COMMAND FOR CURRENT T┆
0x14080…14100 UnusedSector ┆EST UNIT               * * WAIT UNTIL THE OPERATION HAS COMPLETED                    * *****************************************┆
0x14100…14180 UnusedSector ┆*******************" VAR   W1   : INTEGER;       CODE : INTEGER; BEGIN    CODE := #03;    CODE := CODE + ORD(KIND)*2 + ORD(DIREC┆
0x14180…14200 UnusedSector ┆TION);    IF KIND = EOT THEN CODE := #09;    W1 := CREATE_WORD1(0, 0, 0, 0, CODE, UNITNO);    WRITE_MTC(1, W1);    WRITE_MTC(2, ┆
0x14200…14280 UnusedSector ┆LENGTH);    DO_OPERATION;    WAIT_COMPLETION; END; "SKIP"    PROCEDURE EDIT(BYTES   : INTEGER;   "NUMBER OF BYTES"              ┆
0x14280…14300 UnusedSector ┆  PATTERN : INTEGER;   "TESTPATTERN NUMBER"                STRING  : STRING_20; "CHARACTER STRING"                MEM_ADR : INTE┆
0x14300…14380 UnusedSector ┆GER    "MEMORY ADRESS OF DATA"); "************************************************************ * SUBMIT AN EDIT-RECORD COMMAND  ┆
0x14380…14400 UnusedSector ┆                           * * IF PATTERN = 99 THEN THE STRING IS TO BE WRITTEN          * * MEMORY ADDRESS IS A DISPLACEMENT WI┆
0x14400…14480 UnusedSector ┆THIN THE ON-BOARD RAM  * ************************************************************" VAR   W1  : INTEGER; BEGIN    W1 := CREAT┆
0x14480…14500 UnusedSector ┆    OFFSET PARAMETER (BIT 23-16)          * ************************************************************" VAR N : INTEGER; BEGIN┆
0x14500…14580 UnusedSector ┆DR, 0, 0, #0B, UNITNO);    IF PATTERN <> 99 THEN GEN_TP(PATTERN, BYTES, MEM_ADR)                     ELSE GEN_STRING(STRING, BYT┆
0x14580…14600 UnusedSector ┆ES, MEM_ADR);    WRITE_MTC(1, W1);    WRITE_MTC(2, BYTES);    WRITE_MTC(3, MEM_ADR);    DO_OPERATION;    WAIT_COMPLETION; END; "┆
0x14600…14680 UnusedSector ┆WRITE"    PROCEDURE WRITEFM; "************************************************************ * SUBMIT A WRITE FILE MARK COMMAND   ┆
0x14680…14700 UnusedSector ┆                       * ************************************************************" VAR   W1 : INTEGER; BEGIN    W1 := CREATE┆
0x14700…14780 UnusedSector ┆_WORD1(0, 0, 0, 0, #0A, UNITNO);    WRITE_MTC(1, W1);    DO_OPERATION;    WAIT_COMPLETION; END; "WRITEFM"  PROCEDURE ERASE(FIXED┆
0x14780…14800 UnusedSector ┆  : BOOLEAN; "ERASE FIXED LENGTH ? "                 LENGTH : INTEGER  "LENGTH TO ERASE      "); "******************************┆
0x14800…14880 UnusedSector ┆****************************** * SUBMIT AN ERASE FIXED LENGTH OR                           * *        AN ERASE VARIABLE LENGTH C┆
0x14880…14900 UnusedSector ┆OMMAND                   * ************************************************************" VAR   W1   : INTEGER;       CODE : INTE┆
0x14900…14980 UnusedSector ┆GER; BEGIN    IF FIXED THEN CODE := #0D             ELSE CODE := #0E;    W1 := CREATE_WORD1(0, 0, 0, 0, CODE, UNITNO);    WRITE_┆
0x14980…14a00 UnusedSector ┆MTC(1, W1);    WRITE_MTC(2, LENGTH);    DO_OPERATION;    WAIT_COMPLETION; END; "ERASE"    PROCEDURE READ(BYTES   : INTEGER;   "N┆
0x14a00…14a80 UnusedSector ┆UMBER OF BYTES"                OFFSET  : INTEGER;   "NUMBER OF BYTES TO SKIP"                THR     : THRESHOLDS;"NORMAL, LOW O┆
0x14a80…14b00 UnusedSector ┆R HIGH    "                MEM_ADR : INTEGER    "MEMORY ADDRESS"); "************************************************************┆
0x14b00…14b80 UnusedSector ┆ * SUBMIT A READ RECORD COMMAND                              * ************************************************************" VAR┆
0x14b80…14c00 UnusedSector ┆   W1   : INTEGER;       OFS  : INTEGER;       CODE : INTEGER; BEGIN    IF OFFSET = 0 THEN OFS := 0 ELSE OFS := 1;    CODE := #0┆
0x14c00…14c80 UnusedSector ┆F + ORD(THR);    W1 := CREATE_WORD1(BYTE_MODE, BYTE_ADR, OFS, 0, CODE, UNITNO);    WRITE_MTC(1, W1);    WRITE_MTC(2, BYTES);    ┆
0x14c80…14d00 UnusedSector ┆WRITE_MTC(3, MEM_ADR);    WRITE_MTC(4, OFFSET);    DO_OPERATION;    WAIT_COMPLETION; END; "READ"  PROCEDURE READREV(BYTES   : IN┆
0x14d00…14d80 UnusedSector ┆TEGER;  "NUMBER OF BYTES"                   EDIT    : BOOLEAN;  "PREPARE FOR EDIT"                   MEM_ADR : INTEGER   "MEMORY┆
0x14d80…14e00 UnusedSector ┆ ADDRESS  "); "************************************************************ * SUBMIT A READ REVERSE OR                          ┆
0x14e00…14e80 UnusedSector ┆        * *          READ REVERSE EDSIT COMMAND                       * ********************************************************┆
0x14e80…14f00 UnusedSector ┆E_WORD1(BYTE_MODE, BYTE_ADR, 0, 0, #0C, UNITNO);    IF PATTERN <> 99 THEN GEN_TP(PATTERN, BYTES, MEM_ADR)                     EL┆
0x14f00…14f80 UnusedSector ┆SE GEN_STRING(STRING, BYTES, MEM_ADR);    WRITE_MTC(1, W1);    WRITE_MTC(2, BYTES);    WRITE_MTC(3, MEM_ADR);    DO_OPERATION;  ┆
0x14f80…15000 UnusedSector ┆  WAIT_COMPLETION; END; "EDIT"  PROCEDURE WRITE(BYTES   : INTEGER;    "NUMBER OF BYTES"                 PATTERN : INTEGER;    "T┆
0x15000…15080 UnusedSector ┆ESTPATTERN NUMBER"                 STRING  : STRING_20;  "CHARACTER STRING"                 MEM_ADR : INTEGER     "MEMORY ADDRES┆
0x15080…15100 UnusedSector ┆S    "); "************************************************************ * SUBMIT A WRITE-RECORD COMMAND                          ┆
0x15100…15180 UnusedSector ┆   * * IF PATTERN = 99 THEN THE STRING IS TO BE WRITTEN          * * MEMORY ADDRESS IS A DISPLACEMENT WITHIN THE ON-BOARD RAM  *┆
0x15180…15200 UnusedSector ┆ ************************************************************" VAR   W1 : INTEGER; BEGIN    W1 := CREATE_WORD1(BYTE_MODE, BYTE_A┆
0x15200…15280 UnusedSector ┆**************" VAR   N : INTEGER; BEGIN    IF CHECK_ID_BLOCK THEN BEGIN       IF NUMBER <= 22 THEN           SKIP(DATA, NUMBER,┆
0x15280…15300 UnusedSector ┆ FORWARD)       ELSE       BEGIN          SKIP(DAFMS, 28, FORWARD); "23 DATA BLOCKS AND 5 FILE MARKS"          CASE NUMBER OF   ┆
0x15300…15380 UnusedSector ┆          23  :  ;             24  :  SKIP(DAFMS, 3, FORWARD);             25  :  SKIP(DAFMS, 5, FORWARD);             26  :  SK┆
0x15380…15400 UnusedSector ┆IP(DAFMS, 6, FORWARD);             27  :  SKIP(DAFMS, 9, FORWARD)          END; "CASE"       END;    END; END; "MOVE_TO_SYSTEM_B┆
0x15400…15480 UnusedSector ┆LOCK"  FUNCTION READYBIT_SET(PRINT : BOOLEAN) : BOOLEAN; "************************************************************ * CHECK T┆
0x15480…15500 UnusedSector ┆HE TCR BIT IN THE COMMAND BUFFER                   * ************************************************************" VAR   W7 : IN┆
0x15500…15580 UnusedSector ┆TEGER;       B  : BOOLEAN; BEGIN    READ_MTC(7, W7);    B := TESTBIT(W7, 14);    IF PRINT THEN       IF B THEN WRITETEXT('BUSY  ┆
0x15580…15600 UnusedSector ┆(:10:)(:0:)')            ELSE WRITETEXT('READY (:10:)(:0:)');    READYBIT_SET := B; END; "READYBIT_SET"    PROCEDURE DISPLAY_STA┆
0x15600…15680 UnusedSector ┆TUS(KIND : DISPLAYKINDS); "************************************************************ * READ AND DISPLAY A STATUS AS SPECIFIED┆
0x15680…15700 UnusedSector ┆ IN THE PARAMETER   * * DISPLAYKINDS = (TRANSPORT, TRANSFER, REW, ALL)            * ********************************************┆
0x15700…15780 UnusedSector ┆****************" VAR   N, P : INTEGER; BEGIN    CASE KIND OF    TRANSPORT :       BEGIN          WRITETEXT('TRANSPORT STATUS : ┆
0x15780…15800 UnusedSector ┆(:0:)');          WRITEBIN(STATUS(UNITNO));       END;    TRANSFER :       BEGIN          WRITETEXT('TRANSFER STATUS : (:0:)'); ┆
0x15800…15880 UnusedSector ┆         READ_MTC(7, N);          WRITEBIN(N);       END;    REW :       BEGIN          WRITETEXT('REWIND STATUS : (:0:)');     ┆
0x15880…15900 UnusedSector ┆****" VAR   W1   : INTEGER;       CODE : INTEGER; BEGIN    CODE := #12;    IF EDIT THEN CODE := CODE + 1;    W1 := CREATE_WORD1(┆
0x15900…15980 UnusedSector ┆BYTE_MODE, BYTE_ADR, 0, 0, CODE, UNITNO);    WRITE_MTC(1, W1);    WRITE_MTC(2, BYTES);    WRITE_MTC(3, MEM_ADR);    DO_OPERATION┆
0x15980…15a00 UnusedSector ┆;    WAIT_COMPLETION; END; "READREV"   "FUNCTION_XQT" "------------"  PROCEDURE GENERATE_SYSTEM_TAPE; "*************************┆
0x15a00…15a80 UnusedSector ┆*********************************** * GENERATE S SYSTEM TAPE A SPECIFIED IN APP. A OF USM       * ******************************┆
0x15a80…15b00 UnusedSector ┆******************************" VAR   N : INTEGER; BEGIN  END; "GENERATE_SYSTEM_TAPE"  PROCEDURE MOVE_TO_USER_SECT; "***********┆
0x15b00…15b80 UnusedSector ┆************************************************* * POSITION TAPE AT BEGINNING OF USER SECTION.               * * OPERATION PERF┆
0x15b80…15c00 UnusedSector ┆ORMED BY THE 'USERS' COMMAND                * ************************************************************" BEGIN    IF CHECK_ID┆
0x15c00…15c80 UnusedSector ┆_BLOCK THEN BEGIN       "TAPE IN REWOUND POSITION"       SKIP(DAFMS, 40, FORWARD);       SKIP(EOT  ,  0, FORWARD);       SKIP(FM┆
0x15c80…15d00 UnusedSector ┆S  ,  1, FORWARD);    END; END; "MOVE_TO_USER_SECT"  PROCEDURE MOVE_TO_SYSTEM_SECT; "*******************************************┆
0x15d00…15d80 UnusedSector ┆***************** * POSITION TAPE AT BEGINNING OF SYSTEM SECTION              * * OPERATION PERFORMED BY THE 'SYSTEM' COMMAND   ┆
0x15d80…15e00 UnusedSector ┆            * ************************************************************" VAR   TAPEOK : BOOLEAN; BEGIN    TAPEOK := CHECK_ID_┆
0x15e00…15e80 UnusedSector ┆BLOCK; END; "MOVE_TO_SYSTEM_SECT"   PROCEDURE MOVE_TO_SYSTEM_BLOCK(NUMBER : INTEGER); "*****************************************┆
0x15e80…15f00 UnusedSector ┆******************* POSITION TAPE BEFORE BLOCK <NUMBER> OF SYSTEM SECTION       * **********************************************┆
0x15f00…15f80 UnusedSector ┆   WRITENL;    END;    FOR N := 11 TO 15 DO        IF USERPATTERNS[ N ].LENGTH <> 0 THEN BEGIN          WRITETEXT('TP (:0:)');  ┆
0x15f80…16000 UnusedSector ┆        WRITEINT(N);          WRITE_BYTE(SP);          WITH USERPATTERNS[ N ] DO BEGIN             FOR P := 1 TO LENGTH DO BEGIN┆
0x16000…16080 UnusedSector ┆                WRITEHEX(PATTERN[ P ]);                WRITE_BYTE(SP);             END;             WRITENL;          END;      ┆
0x16080…16100 UnusedSector ┆ END; END; "LIST_TP_OVERVIEW"   "ELEMENT SCANNER" "---------------"  PROCEDURE GETCH; "*****************************************┆
0x16100…16180 UnusedSector ┆******************* * GET A CHARACTER FROM INPUT STREAM, USING A LINE BUFFER    * **********************************************┆
0x16180…16200 UnusedSector ┆**************" VAR  CC  :  COMPLETION_CODE;      C   :  CHAR; BEGIN    IF CH_COUNT = L_LENGTH THEN BEGIN       CH_COUNT := 0;  ┆
0x16200…16280 UnusedSector ┆     L_LENGTH := 0;       WRITETEXT(':(:0:)');       REPEAT          L_LENGTH := L_LENGTH + 1;          READ_BYTE(CH);          ┆
0x16280…16300 UnusedSector ┆     READ_MTC(6, N);          WRITEBIN(N MOD 256);       END;    ALL :        BEGIN          WRITETEXT('COMMAND BUFFER : (:0:)')┆
0x16300…16380 UnusedSector ┆;          WRITENL;          FOR P := 0 TO 7 DO           BEGIN             READ_MTC(P, N);             WRITEBIN(N);            ┆
0x16380…16400 UnusedSector ┆ WRITENL;          END;       END    END; "CASE"    WRITENL; END; "DISPLAY_STATUS"   PROCEDURE PRINT_DATA_LAST_READ(BYTES : INTE┆
0x16400…16480 UnusedSector ┆GER; "NUMBER OF BYTES"                                CHARACTERS : BOOLEAN "PRINT IN ASCII"); "*********************************┆
0x16480…16500 UnusedSector ┆*************************** * PRINT OUT DATA LAST READ BY A 'READ' OR 'READREV' COMMAND * * PRINT OUT IN HEX. BYTES OR ASCII CHA┆
0x16500…16580 UnusedSector ┆RACTERS, AS SPECIFIED * * BY THE <CHARACTERS> PARAMETER                             * ******************************************┆
0x16580…16600 UnusedSector ┆******************" VAR   N, P : INTEGER;       STOPPRINT : BOOLEAN; BEGIN    N := 0;    REPEAT       N := N + 1;       IF (N MO┆
0x16600…16680 UnusedSector ┆D 24) = 0 THEN WRITENL;       P := ORD(IOBUFFER[N]);          "IOBUFFER : ARRAY[ ? ] OF CHAR"       IF CHARACTERS THEN BEGIN    ┆
0x16680…16700 UnusedSector ┆      IF (P>=32) AND (P<127) THEN BEGIN             WRITE_BYTE(SP);             WRITE_BYTE(CHR(P));             WRITE_BYTE(SP); ┆
0x16700…16780 UnusedSector ┆         END          ELSE WRITEHEXBYTE(P);       END       ELSE WRITEHEXBYTE(CHR(P));       IF (N MOD 552) = 0 THEN          ST┆
0x16780…16800 UnusedSector ┆OPPRINT := WAIT_TERMINAL_RESPONSE;    UNTIL (N = BYTES) OR STOPPRINT; END; "PRINT_DATA_LAST_READ"    PROCEDURE LIST_TP_OVERVIEW;┆
0x16800…16880 UnusedSector ┆ "************************************************************ * PRINT OUT AN OVERVIEW OF THE TESTPATTERNS AVAILABLE       * * S┆
0x16880…16900 UnusedSector ┆YSTEM PATTERNS AS A SHORT DESCRIPTION                    * * USER   PATTERNS AS HEX. WORDS                             * *******┆
0x16900…16980 UnusedSector ┆*****************************************************" VAR   N, P : INTEGER; BEGIN    FOR N := 0 TO 7 DO BEGIN       WRITETEXT('┆
0x16980…16a00 UnusedSector ┆TP (:0:)');       WRITEINT(N);       WRITEBYTE(SP);       CASE N OF          0  :  WRITETEXT('WALKING ZERO                      ┆
0x16a00…16a80 UnusedSector ┆(:0:)');          1  :  WRITETEXT('WALKING ONE                       (:0:)');          2  :  WRITETEXT('CHECKERBOARD            ┆
0x16a80…16b00 UnusedSector ┆          (:0:)');          3  :  WRITETEXT('COUNT UP  , WORDS                 (:0:)');          4  :  WRITETEXT('COUNT DOWN, WO┆
0x16b00…16b80 UnusedSector ┆RDS                 (:0:)');          5  :  WRITETEXT('COUNT UP  , BYTES                 (:0:)');          6  :  WRITETEXT('DATA┆
0x16b80…16c00 UnusedSector ┆=INVERTED ADDRESS , - 1 BIT   (:0:)');          7  :  WRITETEXT('RANDOM NUMBERS                    (:0:)')       END; "CASE"    ┆
0x16c00…16c80 UnusedSector ┆                                                          * ************************************************************" BEGIN ┆
0x16c80…16d00 UnusedSector ┆L [L_LENGTH] := C;       UNTIL (C IN [CR, NL, EM]) OR (L_LENGTH = 132);    END;    CH_COUNT := CH_COUNT + 1;    CH := L [ CH_COU┆
0x16d00…16d80 UnusedSector ┆NT ]; END;   " GETCH "  FUNCTION EOLN : BOOLEAN; "************************************************************ * COMPARE LINE PO┆
0x16d80…16e00 UnusedSector ┆INTER TO LINE LENGTH, AND                  * * RETURN TRUE OR FALSE                                      * *********************┆
0x16e00…16e80 UnusedSector ┆***************************************" BEGIN    EOLN := CH_COUNT = L_LENGTH; END; "EOLN"  PROCEDURE SKIPLINE; "***************┆
0x16e80…16f00 UnusedSector ┆********************************************* * SET LINE POINTER TO LAST CHARACTER IN LINE                * ********************┆
0x16f00…16f80 UnusedSector ┆****************************************" BEGIN    CH_COUNT := L_LENGTH; END; "SKIPLINE"   PROCEDURE GETSYM; "******************┆
0x16f80…17000 UnusedSector ┆****************************************** * SOURCE SCANNER                                            * * GET AND DECODE RESERV┆
0x17000…17080 UnusedSector ┆ED WORDS                             * *                INTEGERS (DEC. OR HEX.)                    * ***************************┆
0x17080…17100 UnusedSector ┆*********************************"  VAR I, J, K : INTEGER;     I_L  :  LONG_INTEGER;  BEGIN    WHILE CH IN [NL, CR, FF, SP] DO G┆
0x17100…17180 UnusedSector ┆ETCH;    IF CH IN ALFABETIC THEN BEGIN       K := 0;       REPEAT          IF K < 12 THEN BEGIN             K := K + 1;         ┆
0x17180…17200 UnusedSector ┆    A[K] := CH;          END;          GETCH;       UNTIL NOT (CH IN ALFABETIC);       FOR KK:=K + 1 TO 12 DO A [KK] := ' ';    ┆
0x17200…17280 UnusedSector ┆   ID := A;       WORD[0] := ID;       J := SYMBOLS;       WHILE WORD [J] <> ID DO J := J - 1;       IF J = 0 THEN SYM := IDENT ┆
0x17280…17300 UnusedSector ┆               ELSE SYM := WSYM[J];    END    ELSE       IF CH IN NUMERIC THEN       BEGIN          K := 0;          LONG_NUM :=┆
0x17300…17380 UnusedSector ┆ 0L;          SYM := NUMBER;          REPEAT             I_L := CREATE_LONG(ORD(CH)-ORD('0'), 0);             LONG_NUM := LONG_N┆
0x17380…17400 UnusedSector ┆UM * 10L + I_L;             K := K + 1;             GETCH;          UNTIL NOT (CH IN NUMERIC);          SPLIT_LONG(LONG_NUM, NUM┆
0x17400…17480 UnusedSector ┆, I);       END       ELSE          IF CH = '#' THEN          BEGIN    "HEXNUMBER"             GETCH;             LONG_NUM := 0L┆
0x17480…17500 UnusedSector ┆;             SYM := NUMBER;             WHILE CH IN HEXNUMERIC DO BEGIN                IF CH IN NUMERIC THEN BEGIN             ┆
0x17500…17580 UnusedSector ┆      I_L := CREATE_LONG(ORD(CH)-ORD('0'), 0);                   LONG_NUM := 16L * LONG_NUM + I_L;                END           ┆
0x17580…17600 UnusedSector ┆     ELSE                 BEGIN                   I_L := CREATE_LONG(ORD(CH)-55, 0);                   LONG_NUM := LONG_NUM * 16┆
0x17600…17680 UnusedSector ┆L + I_L;                END;                GETCH;             END;             SPLIT_LONG(LONG_NUM, NUM, I);          END      ┆
0x17680…17700 UnusedSector ┆    ELSE          IF CH = ':' THEN           BEGIN             SYM := COLON;             GETCH;          END          ELSE      ┆
0x17700…17780 UnusedSector ┆       IF CH = '/' THEN             BEGIN                SYM := SLASH;                GETCH;             END             ELSE   ┆
0x17780…17800 UnusedSector ┆             IF CH = EM THEN                   TERMINATE(EOF)                ELSE                BEGIN                   SYM := ┆
0x17800…17880 UnusedSector ┆NUL;                   GETCH;                END; END; "GETSYM"   PROCEDURE GETSYMBOL(EXPECT : SET_OF_SYMBOL; "ALLOWED SYMBOLS" ┆
0x17880…17900 UnusedSector ┆                    ERR_NO : INTEGER " EVENTUAL ERROR NUMBER"); "************************************************************ * ┆
0x17900…17980 UnusedSector ┆     CHECK_NUMBER := FALSE;    END; END; "CHECK_NUMBER"   " PARSER " "--------"  "**********************************************┆
0x17980…17a00 UnusedSector ┆Z Z             Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z ┆
0x17a00…17a80 UnusedSector ┆Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z ┆
         […0x2…]
0x17b80…17c00 UnusedSector ┆  ON_X  Q              ░ H     |   ░T_CO ░     ░     ░     ░SCAN ░R    ░     ░     ░     ░  PA ░ER   ░     ░     ░     ░     ░IN┆
0x17c00…17c80 UnusedSector ┆_P ░GRAM ░     ░  ░  ░     ░MERG ░INES ░     ░  d  ░]!   ░  TE ░_MAG ░PE.T ░     ░s    ░     ░INTF ░E    ░     ░     ░     ░PRET┆
0x17c80…17d00 UnusedSector ┆ ░LINE ░     ░     ░  p  ░  ME ░ED.P ░     ░     ░     ░     ░     ░  =4 ░ 7   ░   > ░eF   ░   G ░ M   ░  bW ░ Z   ░   i ░     ░┆
0x17d00…17d80 UnusedSector ┆   z ░^{   ░  w} ░ ~   ░     ░ |   ░     ░     ░     ░  I  ░     ░?    ░     ░    ]!             2  ]! %            7           ┆
0x17d80…17e00 UnusedSector ┆  " PARSE_DEV_UNIT " "----------------"  PROCEDURE DEVSPEC(VAR S : SAVED_COMMAND_TYPE); "***************************************┆
0x17e00…17e80 UnusedSector ┆********************* * PARSE AND RETURN DEVICE NUMBER AND PRIORITY               * ********************************************┆
0x17e80…17f00 UnusedSector ┆****************" VAR B : BOOLEAN; BEGIN    WITH S DO BEGIN       COMM := DEVSYM;       GETSYMBOL([COLON], 2);       GETSYMBOL([┆
0x17f00…17f80 UnusedSector ┆NUMBER], 3);       NUMBER1 := NUM;       IF NUMBER_OK(NUM, 0, 1023) THEN BEGIN          GETSYMBOL([PRIOSYM], 1);          GETSYM┆
0x17f80…18000 UnusedSector ┆BOL([COLON  ], 2);          GETSYMBOL([NUMBER ], 3);          NUMBER2 := NUM;          B := NUMBER_OK(NUM, 0, 3);       END;    ┆
0x18000…18080 UnusedSector ┆ END; "WITH" END; "DEVSPEC"  PROCEDURE UNITSPEC(VAR S : SAVED_COMMAND_TYPE); "**************************************************┆
0x18080…18100 UnusedSector ┆********** * PARSE AND RETURN UNIT NUMBER                             * ********************************************************┆
0x18100…18180 UnusedSector ┆****" VAR B : BOOLEAN; BEGIN    WITH S DO BEGIN       COMM := UNITSYM;       GETSYMBOL([COLON], 2);       GETSYMBOL([NUMBER], 3)┆
0x18180…18200 UnusedSector ┆;       NUMBER1 := NUM;       B := NUMBER_OK(NUM, 0, 7);    END; END; "UNITSPEC"                                                ┆
0x18200…18280 UnusedSector ┆  $   8   8   > ! >   > ! > Q >       > Q  ░a  ░q  ░   ░   ░   ░   ░      .   0   6   6   6   6   6 ! 6 1 6 A 6           2     ┆
0x18280…18300 UnusedSector ┆!      ░                  $    ░      ,    ░  4    ░!  ░   ░                                       ░   ░!  ░1  ░A  ░a          ░┆
0x18300…18380 UnusedSector ┆   ░!  ░1  ░A  ░                    L       I    ░  S    ░  T    ░ ░N       O    ░  L   $   I    ░  S    ░  T    ░ ░P   (   R   ┆
0x18380…18400 UnusedSector ┆   IF NOT ERROR_IN_LINE THEN BEGIN       GETSYM;       IF NOT (SYM IN EXPECT) THEN BEGIN          ERROR_IN_LINE := TRUE;        ┆
0x18400…18480 UnusedSector ┆  SKIPLINE;          S_ERROR(ERR_NO);       END;    END; END; "GETSYMBOL";  PROCEDURE CHECK_NUMBER(VALUE, MIN, MAX : INTEGER) : ┆
0x18480…18500 UnusedSector ┆BOOLEAN; "************************************************************ * CHECK IF VALUE IS IN THE RANGE MIN..MAX                ┆
0x18500…18580 UnusedSector ┆   * * IF NOT, PRINT ERRORMESSAGE 5                              * ************************************************************"┆
0x18580…18600 UnusedSector ┆ BEGIN    IF (VALUE >= MIN) AND (VALUE <= MAX) THEN       CHECK_NUMBER := TRUE    ELSE BEGIN       S_ERROR(5);       SKIPLINE;  ┆
0x18600…18680 UnusedSector ┆OMM := SYM;       CASE SYM OF          GENSYM, USERSSYM, SYSTEMSYM,          READYSYM, LISTSYM             : ; "NO PARAMETERS"  ┆
0x18680…18700 UnusedSector ┆               DISPLAYSYM :             BEGIN                SYMSET := [TRANSPORTSYM, TRANSFERSYM, REWSYM, ALLSYM];             ┆
0x18700…18780 UnusedSector ┆   GETSYMBOL(SYMSET, 1);                IF SYM IN SYMSET THEN                   CASE SYM OF                      TRANSPORTSYM : ┆
0x18780…18800 UnusedSector ┆NUMBER1 := 0;                      TRANSFERSYM  : NUMBER1 := 1;                      REWSYM       : NUMBER1 := 2;               ┆
0x18800…18880 UnusedSector ┆       ALLSYM       : NUMBER1 := 3                   END; "CASE"             END;          PRINTSYM :             BEGIN         ┆
0x18880…18900 UnusedSector ┆       GETSYMBOL([BSYM  ], 1);                GETSYMBOL([COLON ], 2);                GETSYMBOL([NUMBER], 3);                NUMB┆
0x18900…18980 UnusedSector ┆ER1 := NUM;                IF NOT EOLN THEN BEGIN                   GETSYMBOL([CHSYM], 1);                   BOOL := TRUE;      ┆
0x18980…18a00 UnusedSector ┆          END                ELSE BOOL := FALSE;             END;          DEFSYM :             BEGIN                GETSYMBOL([┆
0x18a00…18a80 UnusedSector ┆TPSYM ], 1);                GETSYMBOL([NUMBER], 3);                TPNO := NUM;                IF NUMBER_OK(NUM, 11, 15) THEN   ┆
0x18a80…18b00 UnusedSector ┆                GETSYMBOL([COLON], 1);                   N := 0;                   REPEAT                      N := N + 1;      ┆
0x18b00…18b80 UnusedSector ┆                GETSYMBOL([NUMBER], 3);                      USERPATT[ N ] := NUM;                   UNTIL EOLN OR (N = 10);    ┆
0x18b80…18c00 UnusedSector ┆               USERPATT_LENGTH := N;                END;             END;          BLOCKSYM, INITSYM, REWMASKSYM,          BMOSY┆
0x18c00…18c80 UnusedSector ┆M, BADSYM, REPORTSYM :             BEGIN                GETSYMBOL([COLON], 2);                GETSYMBOL([NUMBER], 3);           ┆
0x18c80…18d00 UnusedSector ┆     NUMBER1 := NUM;                CASE COMM OF                   INITSYM,                    BMOSYM,                   BADSYM ┆
0x18d00…18d80 UnusedSector ┆      : B := NUMBER_OK(NUM, 0, 1);                   REWMASKSYM   : B := NUMBER_OK(NUM, 0, 255);                   BLOCKSYM     ┆
0x18d80…18e00 UnusedSector ┆Z Z                     Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z ┆
0x18e00…18e80 UnusedSector ┆Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z ┆
         […0x2…]
0x18f80…19000 UnusedSector ┆  ON_X                 ░ H     |   ░T_CO ░     ░     ░     ░SCAN ░R    ░     ░     ░     ░  PA ░ER   ░     ░     ░     ░     ░IN┆
0x19000…19080 UnusedSector ┆_P ░GRAM ░     ░  ░  ░     ░MERG ░INES ░     ░  d  ░]!   ░  TE ░_MAG ░PE.T ░     ░s    ░     ░INTF ░E    ░     ░     ░     ░PRET┆
0x19080…19100 UnusedSector ┆ ░LINE ░     ░     ░  p  ░  ME ░ED.P ░     ░     ░     ░     ░RSE_ ░V_UN ░     ░   > ░eF   ░   G ░ M   ░  bW ░ Z   ░   i ░     ░┆
0x19100…19180 UnusedSector ┆   z ░^{   ░  w} ░ ~   ░     ░ |   ░     ░     ░     ░  I  ░     ░?    ░     ░    ]!             2  ]! %            7           ┆
0x19180…19200 UnusedSector ┆  " PARSE_FUNCTION " "----------------"  PROCEDURE PARSE_FUNCTION(VAR S : SAVED_COMMAND_TYPE); "********************************┆
0x19200…19280 UnusedSector ┆**************************** * PARSE AND RETURN IN S A <FUNCTION> WITH PARAMETERS       * **************************************┆
0x19280…19300 UnusedSector ┆**********************" VAR SYMSET : SET_OF_SYMBOL;     N      : INTEGER;     B      : BOOLEAN; BEGIN    WITH S DO BEGIN       C┆
0x19300…19380 UnusedSector ┆E_CO ░R_CO ░     ░ ~   ░     ░ |   ░     ░     ░     ░  I  ░     ░?    ░     ░    ]!             2  ]! %            7           ┆
0x19380…19400 UnusedSector ┆Z Z                             Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z ┆
0x19400…19480 UnusedSector ┆Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z ┆
         […0x2…]
0x19580…19600 UnusedSector ┆  ON_X                 ░ H     |   ░T_CO ░     ░     ░     ░SCAN ░R    ░     ░     ░     ░  PA ░ER   ░     ░     ░     ░     ░IN┆
0x19600…19680 UnusedSector ┆_P ░GRAM ░     ░  ░  ░     ░MERG ░INES ░     ░  d  ░]!   ░  TE ░_MAG ░PE.T ░     ░s    ░     ░INTF ░E    ░     ░     ░     ░PRET┆
0x19680…19700 UnusedSector ┆ ░LINE ░     ░     ░  p  ░  ME ░ED.P ░     ░     ░     ░     ░RSE_ ░V_UN ░     ░   > ░eF   ░PARS ░FUNC ░ON   ░     ░   i ░  PA ░┆
0x19700…19780 UnusedSector ┆E_CO ░R_CO ░     ░ ~   ░     ░RSE_ ░RMTE ░     ░     ░  I  ░     ░?    ░     ░    ]!             2  ]! %            7           ┆
0x19780…19800 UnusedSector ┆: B := NUMBER_OK(NUM, 0, 27);                   REPORTSYM    : B := NUMBER_OK(NUM, 0, 2)                END;             END    ┆
0x19800…19880 UnusedSector ┆   END; "CASE"    END; END; "PARSE_FUNCTION"      < K   V0l V0M _    _  X V0l V0o   V0t V0w     V0l V0M _    _  X V0l V0o       ┆
0x19880…19900 UnusedSector ┆Z Z                                                                     Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z ┆
0x19900…19980 UnusedSector ┆Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z ┆
         […0x2…]
0x19a80…19b00 UnusedSector ┆  ON_X  O              ░ H     |   ░T_CO ░     ░     ░     ░SCAN ░R    ░     ░     ░     ░  PA ░ER   ░     ░     ░     ░     ░IN┆
0x19b00…19b80 UnusedSector ┆_P ░GRAM ░     ░  ░  ░     ░MERG ░INES ░     ░  d  ░]!   ░  TE ░_MAG ░PE.T ░     ░s    ░     ░INTF ░E    ░     ░     ░     ░PRET┆
0x19b80…19c00 UnusedSector ┆ ░LINE ░     ░     ░  p  ░  ME ░ED.P ░     ░     ░     ░     ░RSE_ ░V_UN ░     ░   > ░eF   ░PARS ░FUNC ░ON   ░     ░   i ░     ░┆
0x19c00…19c80 UnusedSector ┆   z ░^{   ░  w} ░ ~   ░     ░ |   ░     ░     ░     ░  I  ░     ░?    ░     ░    ]!             2  ]! %            7           ┆
0x19c80…19d00 UnusedSector ┆Z Z         Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z ┆
0x19d00…19d80 UnusedSector ┆Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z ┆
         […0x2…]
0x19e80…19f00 UnusedSector ┆  ON_X  &              ░ H     |   ░T_CO ░     ░     ░     ░SCAN ░R    ░     ░     ░     ░  PA ░ER   ░     ░     ░     ░     ░IN┆
0x19f00…19f80 UnusedSector ┆_P ░GRAM ░     ░  ░  ░     ░MERG ░INES ░     ░  d  ░]!   ░  TE ░_MAG ░PE.T ░     ░s    ░     ░INTF ░E    ░     ░     ░     ░PRET┆
0x19f80…1a000 UnusedSector ┆ ░LINE ░     ░     ░  p  ░  ME ░ED.P ░     ░     ░     ░     ░RSE_ ░V_UN ░     ░   > ░eF   ░PARS ░FUNC ░ON   ░     ░   i ░  PA ░┆
0x1a000…1a080 UnusedSector ┆           LOADINSSYM, LOWSYM, NORMALSYM, OFSSYM,                  OPCODESYM, PRINTSYM, PRIOSYM, READSYM,                  READR┆
0x1a080…1a100 UnusedSector ┆  " INITIALIZE " "------------"  PROCEDURE INITIALIZE; "************************************************************ * INITIALIZ┆
0x1a100…1a180 UnusedSector ┆E ARRAY OF KEYWORDS AND OTHER VARIABLES          * ************************************************************" BEGIN     WORD[┆
0x1a180…1a200 UnusedSector ┆Z Z         Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z ┆
0x1a200…1a280 UnusedSector ┆Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z ┆
         […0x2…]
0x1a380…1a400 UnusedSector ┆  ON_X                 ░ H     |   ░T_CO ░     ░     ░     ░SCAN ░R    ░     ░     ░     ░  PA ░ER   ░     ░     ░     ░     ░IN┆
0x1a400…1a480 UnusedSector ┆_P ░GRAM ░     ░  ░  ░     ░MERG ░INES ░     ░  d  ░]!   ░  TE ░_MAG ░PE.T ░     ░s    ░     ░INTF ░E    ░     ░     ░     ░PRET┆
0x1a480…1a500 UnusedSector ┆ ░LINE ░     ░     ░  p  ░  ME ░ED.P ░     ░     ░     ░     ░RSE_ ░V_UN ░     ░   > ░eF   ░PARS ░FUNC ░ON   ░     ░   i ░  PA ░┆
0x1a500…1a580 UnusedSector ┆E_CO ░R_CO ░     ░ ~   ░     ░RSE_ ░RMTE ░     ░     ░  I  ░PARS ░SPEC ░ST   ░    ]!             2  ]! %            7           ┆
0x1a580…1a600 UnusedSector ┆  " TYPE " "------" TYPE SYMBOLS = (IDENT, COLON, SLASH, NUMBER,                  ALLSYM, BSYM, BADSYM, BEGINSYM,               ┆
0x1a600…1a680 UnusedSector ┆   BLOCKSYM, BMOSYM, CHSYM, DAFMSSYM,                  DATASYM, DEFSYM, DEVSYM, DISPLAYSYM,                  EDITSYM, ENDSYM, EN┆
0x1a680…1a700 UnusedSector ┆DREPSYM, EOTSYM,                  ERASESYM, FIXEDSYM, FMSSYM, FORSYM,                  GENSYM, HIGHSYM, INITSYM, LISTSYM,       ┆
0x1a700…1a780 UnusedSector ┆           LOADINSSYM, LOWSYM, NORMALSYM, OFSSYM,                  OPCODESYM, PRINTSYM, PRIOSYM, READSYM,                  READR┆
0x1a780…1a800 UnusedSector ┆EVSYM, READYSYM, REPEATSYM, REPORTSYM,                  REVSYM, REWSYM, REWINDSYM, REWMASKSYM,                  SKIPSYM, STATUSS┆
0x1a800…1a880 UnusedSector ┆YM, SYSTEMSYM, TESTSYM,                  THRSYM, TPSYM, TRANSFERSYM, TRANSPORTSYM,                  UNITSYM, UNLOADSYM, USERSSYM┆
0x1a880…1a900 UnusedSector ┆, WRITESYM,                  WRITEFMSYM);  TYPE SET_OF_SYMBOL = SET OF SYMBOLS;  TYPE STRING_20 = ARRAY[1..20] OF CHAR;  TYPE TH┆
0x1a900…1a980 UnusedSector ┆RESHOLDS = (NORMAL, LOW, HIGH);  TYPE SAVED_COMMAND_TYPE = RECORD "27 WORDS / RECORD "                              COMM        ┆
0x1a980…1aa00 UnusedSector ┆     :  SYMBOLS;                              NUMBER1          :  INTEGER;                              NUMBER2          :  INTE┆
0x1aa00…1aa80 UnusedSector ┆GER;                              BOOL             :  BOOLEAN;                              STRING           :  STRING_20;      ┆
0x1aa80…1ab00 UnusedSector ┆                        TPNO             :  INTEGER;                              THR              :  THRESHOLDS;               ┆
0x1ab00…1ab80 UnusedSector ┆               USERPATT_LENGTH  :  INTEGER;                              USERPATT         :  ARRAY[1..10] OF INTEGER            ┆
0x1ab80…1ac00 UnusedSector ┆               END; TYPE SYMBOLS = (IDENT, COLON, SLASH, NUMBER,                  ALLSYM, BSYM, BADSYM, BEGINSYM,               ┆
0x1ac00…1ac80 UnusedSector ┆   BLOCKSYM, BMOSYM, CHSYM, DAFMSSYM,                  DATASYM, DEFSYM, DEVSYM, DISPLAYSYM,                  EDITSYM, ENDSYM, EN┆
0x1ac80…1ad00 UnusedSector ┆DREPSYM, EOTSYM,                  ERASESYM, FIXEDSYM, FMSSYM, FORSYM,                  GENSYM, HIGHSYM, INITSYM, LISTSYM,       ┆
0x1ad00…1ad80 UnusedSector ┆RD[ 13 ] := 'EDIT        ';    WORD[ 14 ] := 'END         ';    WORD[ 15 ] := 'ENDREP      ';    WORD[ 16 ] := 'EOT         ';  ┆
0x1ad80…1ae00 UnusedSector ┆  WORD[ 17 ] := 'ERASE       ';    WORD[ 18 ] := 'FIXED       ';    WORD[ 19 ] := 'FMS         ';    WORD[ 20 ] := 'FOR         ┆
0x1ae00…1ae80 UnusedSector ┆';    WORD[ 21 ] := 'GEN         ';    WORD[ 22 ] := 'HIGH        ';    WORD[ 23 ] := 'INIT        ';    WORD[ 24 ] := 'LIST    ┆
0x1ae80…1af00 UnusedSector ┆    ';    WORD[ 25 ] := 'LOADINS     ';    WORD[ 26 ] := 'LOW         ';    WORD[ 27 ] := 'NORMAL      ';    WORD[ 28 ] := 'OFS ┆
0x1af00…1af80 UnusedSector ┆        ';    WORD[ 29 ] := 'OPCODE      ';    WORD[ 30 ] := 'PRINT       ';    WORD[ 31 ] := 'PRIO        ';    WORD[ 32 ] := '┆
0x1af80…1b000 UnusedSector ┆READ        ';    WORD[ 33 ] := 'READREV     ';    WORD[ 34 ] := 'READY       ';    WORD[ 35 ] := 'REPEAT      ';    WORD[ 36 ] ┆
0x1b000…1b080 UnusedSector ┆:= 'REPORT      ';    WORD[ 37 ] := 'REV         ';    WORD[ 38 ] := 'REW         ';    WORD[ 39 ] := 'REWIND      ';    WORD[ 4┆
0x1b080…1b100 UnusedSector ┆0 ] := 'REWMASK     ';    WORD[ 41 ] := 'SKIP        ';    WORD[ 42 ] := 'STATUS      ';    WORD[ 43 ] := 'SYSTEM      ';    WOR┆
0x1b100…1b180 UnusedSector ┆D[ 44 ] := 'TEST        ';    WORD[ 45 ] := 'THR         ';    WORD[ 46 ] := 'TP          ';    WORD[ 47 ] := 'TRANSFER    ';   ┆
0x1b180…1b200 UnusedSector ┆ WORD[ 48 ] := 'TRANSPORT   ';    WORD[ 49 ] := 'UNIT        ';    WORD[ 50 ] := 'UNLOAD      ';    WORD[ 51 ] := 'USERS       '┆
0x1b200…1b280 UnusedSector ┆;    WORD[ 52 ] := 'WRITE       ';    WORD[ 53 ] := 'WRITEFM     ';     WSYM[ 1 ] := ALLSYM;    WSYM[ 2 ] := BSYM;    WSYM[ 3 ] ┆
0x1b280…1b300 UnusedSector ┆:= BADSYM;    WSYM[ 4 ] := BEGINSYM;    WSYM[ 5 ] := BLOCKSYM;    WSYM[ 6 ] := BMOSYM;    WSYM[ 7 ] := CHSYM;    WSYM[ 8 ] := DA┆
0x1b300…1b380 UnusedSector ┆FMSSYM;    WSYM[ 9 ] := DATASYM;    WSYM[ 10 ] := DEFSYM;    WSYM[ 11 ] := DEVSYM;    WSYM[ 12 ] := DISPLAYSYM;    WSYM[ 13 ] :=┆
0x1b380…1b400 UnusedSector ┆ EDITSYM;    WSYM[ 14 ] := ENDSYM;    WSYM[ 15 ] := ENDREPSYM;    WSYM[ 16 ] := EOTSYM;    WSYM[ 17 ] := ERASESYM;    WSYM[ 18 ]┆
0x1b400…1b480 UnusedSector ┆ := FIXEDSYM;    WSYM[ 19 ] := FMSSYM;    WSYM[ 20 ] := FORSYM;    WSYM[ 21 ] := GENSYM;    WSYM[ 22 ] := HIGHSYM;    WSYM[ 23 ]┆
0x1b480…1b500 UnusedSector ┆ := INITSYM;    WSYM[ 24 ] := LISTSYM;    WSYM[ 25 ] := LOADINSSYM;    WSYM[ 26 ] := LOWSYM;    WSYM[ 27 ] := NORMALSYM;    WSYM┆
0x1b500…1b580 UnusedSector ┆[ 28 ] := OFSSYM;    WSYM[ 29 ] := OPCODESYM;    WSYM[ 30 ] := PRINTSYM;    WSYM[ 31 ] := PRIOSYM;    WSYM[ 32 ] := READSYM;    ┆
0x1b580…1b600 UnusedSector ┆WSYM[ 33 ] := READREVSYM;    WSYM[ 34 ] := READYSYM;    WSYM[ 35 ] := REPEATSYM;    WSYM[ 36 ] := REPORTSYM;    WSYM[ 37 ] := RE┆
0x1b600…1b680 UnusedSector ┆VSYM;    WSYM[ 38 ] := REWSYM;    WSYM[ 39 ] := REWINDSYM;    WSYM[ 40 ] := REWMASKSYM;    WSYM[ 41 ] := SKIPSYM;    WSYM[ 42 ] ┆
0x1b680…1b700 UnusedSector ┆:= STATUSSYM;    WSYM[ 43 ] := SYSTEMSYM;    WSYM[ 44 ] := TESTSYM;    WSYM[ 45 ] := THRSYM;    WSYM[ 46 ] := TPSYM;    WSYM[ 47┆
0x1b700…1b780 UnusedSector ┆ ] := TRANSFERSYM;    WSYM[ 48 ] := TRANSPORTSYM;    WSYM[ 49 ] := UNITSYM;    WSYM[ 50 ] := UNLOADSYM;    WSYM[ 51 ] := USERSSY┆
0x1b780…1b800 UnusedSector ┆M;    WSYM[ 52 ] := WRITESYM;    WSYM[ 53 ] := WRITEFMSYM;  END; "INITIALIZE" = EOTSYM;    WSYM[ 17 ] := ERASESYM;    WSYM[ 18 ]┆
0x1b800…1b880 UnusedSector ┆ := FIXEDSYM;    WSYM[ 19 ] := FMSSYM;    WSYM[ 20 ] := FORSYM;    WSYM[ 21 ] := GENSYM;    WSYM[ 22 ] := HIGHSYM;    WSYM[ 23 ]┆
0x1b880…1b900 UnusedSector ┆ 1 ] := 'ALL         ';    WORD[ 2 ] := 'B           ';    WORD[ 3 ] := 'BAD         ';    WORD[ 4 ] := 'BEGIN       ';    WORD[┆
0x1b900…1b980 UnusedSector ┆ 5 ] := 'BLOCK       ';    WORD[ 6 ] := 'BMO         ';    WORD[ 7 ] := 'CH          ';    WORD[ 8 ] := 'DAFMS       ';    WORD[┆
0x1b980…1ba00 UnusedSector ┆ 9 ] := 'DATA        ';    WORD[ 10 ] := 'DEF         ';    WORD[ 11 ] := 'DEV         ';    WORD[ 12 ] := 'DISPLAY     ';    WO┆
0x1ba00…1ba80 UnusedSector ┆[NUMBER], 3);       NUMBER1 := NUM;       IF NUMBER_OK(NUM, 0, 1023) THEN BEGIN          GETSYMBOL([PRIOSYM], 1);          GETSY┆
0x1ba80…1bb00 UnusedSector ┆MBOL([COLON  ], 2);          GETSYMBOL([NUMBER ], 3);          NUMBER2 := NUM;          B := NUMBER_OK(NUM, 0, 3);       END;   ┆
0x1bb00…1bb80 UnusedSector ┆  END; "WITH" END; "DEVSPEC"  PROCEDURE UNITSPEC(VAR S : SAVED_COMMAND_TYPE); "*************************************************┆
0x1bb80…1bc00 UnusedSector ┆*********** * PARSE AND RETURN UNIT NUMBER                             * *******************************************************┆
0x1bc00…1bc80 UnusedSector ┆*****" VAR B : BOOLEAN; BEGIN    WITH S DO BEGIN       COMM := UNITSYM;       GETSYMBOL([COLON], 2);       GETSYMBOL([NUMBER], 3┆
0x1bc80…1bd00 UnusedSector ┆);       NUMBER1 := NUM;       B := NUMBER_OK(NUM, 0, 7);    END; END; "UNITSPEC"   " PARSE_FUNCTION " "----------------"  PROCE┆
0x1bd00…1bd80 UnusedSector ┆DURE PARSE_FUNCTION(VAR S : SAVED_COMMAND_TYPE); "************************************************************ * PARSE AND RETUR┆
0x1bd80…1be00 UnusedSector ┆N IN S A <FUNCTION> WITH PARAMETERS       * ************************************************************" VAR SYMSET : SET_OF_SY┆
0x1be00…1be80 UnusedSector ┆MBOL;     N      : INTEGER;     B      : BOOLEAN; BEGIN    WITH S DO BEGIN       COMM := SYM;       CASE SYM OF          GENSYM,┆
0x1be80…1bf00 UnusedSector ┆ USERSSYM, SYSTEMSYM,          READYSYM, LISTSYM             : ; "NO PARAMETERS"                 DISPLAYSYM :             BEGIN ┆
0x1bf00…1bf80 UnusedSector ┆               SYMSET := [TRANSPORTSYM, TRANSFERSYM, REWSYM, ALLSYM];                GETSYMBOL(SYMSET, 1);                IF SYM┆
0x1bf80…1c000 UnusedSector ┆ IN SYMSET THEN                   CASE SYM OF                      TRANSPORTSYM : NUMBER1 := 0;                      TRANSFERSYM┆
0x1c000…1c080 UnusedSector ┆  : NUMBER1 := 1;                      REWSYM       : NUMBER1 := 2;                      ALLSYM       : NUMBER1 := 3            ┆
0x1c080…1c100 UnusedSector ┆       END; "CASE"             END;          PRINTSYM :             BEGIN                GETSYMBOL([BSYM  ], 1);                ┆
0x1c100…1c180 UnusedSector ┆GETSYMBOL([COLON ], 2);                GETSYMBOL([NUMBER], 3);                NUMBER1 := NUM;                IF NOT EOLN THEN BE┆
0x1c180…1c200 UnusedSector ┆GIN                   GETSYMBOL([CHSYM], 1);                   BOOL := TRUE;                END                ELSE BOOL := FALS┆
0x1c200…1c280 UnusedSector ┆E;             END;          DEFSYM :             BEGIN                GETSYMBOL([TPSYM ], 1);                GETSYMBOL([NUMBER]┆
0x1c280…1c300 UnusedSector ┆  " MAIN_PROGRAM " "--------------"  BEGIN    CONNECT_PARAMETERS;    INITIALIZE;    GETCH;    GETSYM;    INPUTSEQ; END.         ┆
0x1c300…1c380 UnusedSector ┆GM                HOG               TLM               BLAU              PHO               LKN               HOH               DO┆
0x1c380…1c400 UnusedSector ┆RA              .                 JSL               FILE              LA                PHF               SVO               BLK ┆
0x1c400…1c480 UnusedSector ┆              JK                FIX               SWL1            d SCL               AK                FR                  l   ┆
0x1c480…1c500 UnusedSector ┆************** *                P A R S E R                                * ***************************************************┆
0x1c500…1c580 UnusedSector ┆*********"   PROCEDURE PARSE_COMMAND(VAR S : SAVED_COMMAND_TYPE;                         COMM_BEG_SYS : SET_OF_SYMBOL); FORWARD;┆
0x1c580…1c600 UnusedSector ┆   " PARSE_DEV_UNIT " "----------------"  PROCEDURE DEVSPEC(VAR S : SAVED_COMMAND_TYPE); "**************************************┆
0x1c600…1c680 UnusedSector ┆********************** * PARSE AND RETURN DEVICE NUMBER AND PRIORITY               * *******************************************┆
0x1c680…1c700 UnusedSector ┆*****************" VAR B : BOOLEAN; BEGIN    WITH S DO BEGIN       COMM := DEVSYM;       GETSYMBOL([COLON], 2);       GETSYMBOL(┆
0x1c700…1c780 UnusedSector ┆******************** * PARSE AND RETURN A <STATUSCOMM>                           * *********************************************┆
0x1c780…1c800 UnusedSector ┆***************" BEGIN    REWINDCOMM(S);    S.COMM := STATUSSYM; END; "STATUSCOMM"    PROCEDURE SKIPCOMM(VAR S : SAVED_COMMAND_T┆
0x1c800…1c880 UnusedSector ┆YPE); "************************************************************ * PARSE AND RETURN A <SKIPCOMM>                             ┆
0x1c880…1c900 UnusedSector ┆* * PARAMETERS SAVED IN :                                     * *     S.NUMBER1   :  KIND                                   * * ┆
0x1c900…1c980 UnusedSector ┆    S.NUMBER2   :  NUMBER OF ITEMS                        * *     S.BOOL      :  DIRECTION ((FORWARD = TRUE)            * ******┆
0x1c980…1ca00 UnusedSector ┆******************************************************" VAR SSYM : SET_OF_SYMBOL; BEGIN    S.COMM := SKIPSYM;    SSYM := [DATASY┆
0x1ca00…1ca80 UnusedSector ┆M, FMSSYM, DAFMSSYM, EOTSYM];    GETSYMBOL(SSYM, 1);    IF SYM IN SSYM THEN BEGIN       CASE SYM OF          DATASYM   :  S.NUMB┆
0x1ca80…1cb00 UnusedSector ┆ER1 := 0;          FMSSYM    :  S.NUMBER1 := 1;          DAFMSSYM  :  S.NUMBER1 := 2;          EOTSYM    :  S.NUMBER1 := 3      ┆
0x1cb00…1cb80 UnusedSector ┆ END; "CASE"       IF SYM <> EOTSYM THEN BEGIN          GETSYMBOL([COLON], 2);          GETSYMBOL([NUMBER], 3);          S.NUMBE┆
0x1cb80…1cc00 UnusedSector ┆R2 := NUM;          IF NOT EOLN THEN BEGIN             GETSYMBOL([FORSYM, REVSYM], 1);             IF SYM = FORSYM THEN S.BOOL :┆
0x1cc00…1cc80 UnusedSector ┆= TRUE;             IF SYM = REVSYM THEN S.BOOL := FALSE;          END          ELSE S.BOOL := TRUE;       END;    END; END; "SK┆
0x1cc80…1cd00 UnusedSector ┆, 3);                TPNO := NUM;                IF NUMBER_OK(NUM, 11, 15) THEN                   GETSYMBOL([COLON], 1);        ┆
0x1cd00…1cd80 UnusedSector ┆           N := 0;                   REPEAT                      N := N + 1;                      GETSYMBOL([NUMBER], 3);       ┆
0x1cd80…1ce00 UnusedSector ┆               USERPATT[ N ] := NUM;                   UNTIL EOLN OR (N = 10);                   USERPATT_LENGTH := N;          ┆
0x1ce00…1ce80 UnusedSector ┆      END;             END;          BLOCKSYM, INITSYM, REWMASKSYM,          BMOSYM, BADSYM, REPORTSYM :             BEGIN      ┆
0x1ce80…1cf00 UnusedSector ┆          GETSYMBOL([COLON], 2);                GETSYMBOL([NUMBER], 3);                NUMBER1 := NUM;                CASE COMM ┆
0x1cf00…1cf80 UnusedSector ┆OF                   INITSYM,                    BMOSYM,                   BADSYM       : B := NUMBER_OK(NUM, 0, 1);            ┆
0x1cf80…1d000 UnusedSector ┆       REWMASKSYM   : B := NUMBER_OK(NUM, 0, 255);                   BLOCKSYM     : B := NUMBER_OK(NUM, 0, 27);                 ┆
0x1d000…1d080 UnusedSector ┆  REPORTSYM    : B := NUMBER_OK(NUM, 0, 2)                END;             END       END; "CASE"    END; END; "PARSE_FUNCTION"  ┆
0x1d080…1d100 UnusedSector ┆ " PARSE_CONTR_COMM " "------------------"  PROCEDURE REWINDCOMM(VAR S : SAVED_COMMAND_TYPE); "*********************************┆
0x1d100…1d180 UnusedSector ┆*************************** * PARSE AND RETURN A <REWINDCOMM>                           * **************************************┆
0x1d180…1d200 UnusedSector ┆**********************" VAR S1 : SAVED_COMMAND_TYPE; BEGIN    S.COMM := REWINDSYM;    IF NOT EOLN THEN BEGIN       GETSYMBOL([UN┆
0x1d200…1d280 UnusedSector ┆ITSYM], 1);       UNITSPEC(S1);       S.NUMBER1 := S1.NUMBER1;    END    ELSE S.NUMBER1 := UNITNO; END; "REWINDCOMM"  PROCEDURE ┆
0x1d280…1d300 UnusedSector ┆UNLOADCOMM(VAR S : SAVED_COMMAND_TYPE); "************************************************************ * PARSE AND RETURN AN <UNL┆
0x1d300…1d380 UnusedSector ┆OADCOMM>                          * ************************************************************" BEGIN    REWINDCOMM(S);    S.C┆
0x1d380…1d400 UnusedSector ┆OMM := UNLOADSYM; END; "UNLOADCOMM"  PROCEDURE STATUSCOMM(VAR S : SAVED_COMMAND_TYPE); "****************************************┆
0x1d400…1d480 UnusedSector ┆MBOL([COLON], 2);       GETSYMBOL([NORMALSYM, LOWSYM, HIGHSYM], 1);       IF SYM IN [NORMALSYM, LOWSYM, HIGHSYM] THEN           ┆
0x1d480…1d500 UnusedSector ┆CASE SYM OF             NORMALSYM : S.THR := NORMAL;             LOWSYM    : S.THR := LOW;             HIGHSYM   : S.THR := HIGH┆
0x1d500…1d580 UnusedSector ┆          END;          IF NOT EOLN THEN             GETSYMBOL([TPSYM], 1);    END; END; "PARSE_THRESHOLD"  PROCEDURE PARSE_EXPD┆
0x1d580…1d600 UnusedSector ┆ATA(VAR S : SAVED_COMMAND_TYPE); BEGIN    S.TPNO := 99       IF SYM = TPSYM THEN BEGIN       GETSYMBOL([NUMBER], 3);       IF NU┆
0x1d600…1d680 UnusedSector ┆MBER_OK(NUM, 0, 15) THEN          S.TPNO := NUM;    END; END; "PARSE_EXPDATA"   PROCEDURE READCOMM(VAR S : SAVED_COMMAND_TYPE); ┆
0x1d680…1d700 UnusedSector ┆IPCOMM"    PROCEDURE EDITCOMM(VAR S : SAVED_COMMAND_TYPE); "************************************************************ * PARSE┆
0x1d700…1d780 UnusedSector ┆ AND SAVE AN <EDITCOMM>                              * * PARAMETERS SAVED IN :                                     * *     S.NUM┆
0x1d780…1d800 UnusedSector ┆BER1         :  NUMBER OF BYTES                  * *     S.TPNO            :  EVENTUAL PATTERN TO WRITE        * *     S.STRING ┆
0x1d800…1d880 UnusedSector ┆         :  EVENTUAL STRING TO WRITE         * *     S.USERPATT_LENGTH :  LENGTH OF STRING                 * *******************┆
0x1d880…1d900 UnusedSector ┆*****************************************" VAR   N : INTEGER;       B : BOOLEAN; BEGIN    S.COMM := EDITSYM;    GETSYMBOL([BSYM]┆
0x1d900…1d980 UnusedSector ┆, 1);    GETSYMBOL([COLON], 2);    GETSYMBOL([NUMBER], 3);    S.NUMBER1 := NUM;    GETSYMBOL([TPSYM, SLASH], 1);    IF SYM = TPS┆
0x1d980…1da00 UnusedSector ┆YM THEN BEGIN       GETSYMBOL([NUMBER], 3);       S.TPNO := NUM;       B := NUMBER_OK(NUM, 0, 15);    END;    IF SYM = SLASH THE┆
0x1da00…1da80 UnusedSector ┆N BEGIN       S.TPNO := 99;       N := 0;       REPEAT          IF N <= 20 THEN BEGIN             N := N + 1;             S.STRI┆
0x1da80…1db00 UnusedSector ┆NG[N] := CH;          END;          GETCH;       UNTIL CH = '/';       CH := SP; "TO PREVENT GETTING SYM = SLASH AGAIN"    END; ┆
0x1db00…1db80 UnusedSector ┆END; "EDITCOMM"    PROCEDURE WRITECOMM(VAR S : SAVED_COMMAND_TYPE); "***********************************************************┆
0x1db80…1dc00 UnusedSector ┆* * PARSE AND RETURN A <WRITECOMM>                            * * USES EDITCOMM, AS THEY HAVE THE SAME PARAMETERS           * **┆
0x1dc00…1dc80 UnusedSector ┆**********************************************************" BEGIN    EDITCOMM(S);    S.COMM := WRITESYM; END; "WRITECOMM"  PROCE┆
0x1dc80…1dd00 UnusedSector ┆DURE ERASECOMM(VAR S : SAVED_COMMAND_TYPE); "************************************************************ * PARSE AND RETURN AN ┆
0x1dd00…1dd80 UnusedSector ┆<ERASECOMM>                           * * PARAMETERS SAVED IN :                                     * *     S.BOOL      :  ERASE┆
0x1dd80…1de00 UnusedSector ┆ FIXED                            * *     S.NUMBER1   :  LANGTH TO ERASE                        * ******************************┆
0x1de00…1de80 UnusedSector ┆******************************" BEGIN    S.COMM := ERASESYM;    GETSYMBOL([FIXEDSYM, NUMBER], 1);    IF SYM = FIXEDSYM THEN     ┆
0x1de80…1df00 UnusedSector ┆  S.BOOL := TRUE    ELSE BEGIN       S.BOOL := FALSE;       S.NUMBER1 := NUM;    END; END; "ERASECOMM"    PROCEDURE PARSE_OFFSET┆
0x1df00…1df80 UnusedSector ┆(VAR S : SAVED_COMMAND_TYPE); BEGIN    IF NOT EOLN THEN BEGIN       GETSYMBOL([OFSSYM, THRSYM, TPSYM], 1);       IF SYM = OFSSYM┆
0x1df80…1e000 UnusedSector ┆ THEN BEGIN          GETSYMBOL([COLON], 2);          GETSYMBOL([NUMBER], 3);          S.NUMBER2 := NUM;          IF NOT EOLN THE┆
0x1e000…1e080 UnusedSector ┆N             GETSYMBOL([THRSYM, TPSYM], 1);       END       ELSE S.NUMBER2 := 0;    END    ELSE S.NUMBER2 := 0; END; "PARSE_OFF┆
0x1e080…1e100 UnusedSector ┆SET"  PROCEDURE PARSE_THRESHOLD(VAR S : SAVED_COMMAND_TYPE); BEGIN    S.THR := NORMAL;    IF SYM = THRSYM THEN BEGIN       GETSY┆
0x1e100…1e180 UnusedSector ┆RAMETERS SAVED IN :                                     * *     S.NUMBER1  :  NUMBER OF BYTES                         * *     S.┆
0x1e180…1e200 UnusedSector ┆NUMBER2  :  OFFSET                                  * *     S.THR      :  THRESHOLD                               * *     S.TPNO┆
0x1e200…1e280 UnusedSector ┆     :  EVENTUAL EXPECTED DATA                  * ************************************************************" VAR   SSYM : SET┆
0x1e280…1e300 UnusedSector ┆_OF_SYMBOL;       N    : INTEGER; BEGIN    S.COMM := READSYM;    SSYM := _OFSSYM, THRSYM, TPSYM];    GETSYMBOL([BSYM], 1);    GE┆
0x1e300…1e380 UnusedSector ┆TSYMBOL([COLON], 2);    GETSYMBOL([NUMBER], 3);    S.NUMBER1 := NUM;    PARSE_OFFSET(S);    PARSE_THRESHOLD(S);    PARSE_EXPDATA┆
0x1e380…1e400 UnusedSector ┆(S); END; "READCOMM"  PROCEDURE READREVCOMM(VAR S : SAVED_COMMAND_TYPE); "******************************************************┆
0x1e400…1e480 UnusedSector ┆****** * PARSE AND RETURN A <READREVCOMM>                          * * PARA METERS SAVED IN :                                   ┆
0x1e480…1e500 UnusedSector ┆  * *     S.NUMBER1  :  NUMBER OF BYTES                         * *     S.BOOL     :  EDIT                                    * ┆
0x1e500…1e580 UnusedSector ┆*     S.TPNO     :  EVENTUAL EXPECTED DATA                  * ************************************************************" BEGI┆
0x1e580…1e600 UnusedSector ┆N    S.COMM := READREVSYM;    S.BOOL := FALSE;    S.TPNO := 99;    GETSYMBOL([BSYM], 1);    GETSYMBOL([COLON], 2);    GETSYMBOL(┆
0x1e600…1e680 UnusedSector ┆[NUMBER], 3);    S.NUMBER1 := NUM;    IF NOT EOLN THEN BEGIN       GETSYMBOL([EDITSYM, TPSYM], 1);       IF SYM = EDITSYM THEN S┆
0x1e680…1e700 UnusedSector ┆.BOOL := TRUE;    END;    IF SYM = TPSYM THEN PARSE_EXPDATA(S); END; "READREVCOMM"    PROCEDURE WRITEFMCOMM(VAR S : SAVED_COMMAN┆
0x1e700…1e780 UnusedSector ┆D_TYPE); "************************************************************ * PARSE AND RETURN A <WRITEFMCOMM>                       ┆
0x1e780…1e800 UnusedSector ┆   * ************************************************************" BEGIN    S.COMM := WRITEFMSYM; END; "WRITEFMCOMM"   PROCEDURE┆
0x1e800…1e880 UnusedSector ┆ PARSE_CONTR_COMM(VAR S : SAVED_COMMAND_TYPE); "************************************************************ * PARSE AND RETURN ┆
0x1e880…1e900 UnusedSector ┆A <CONTR.COMM> USING                     * * REWINFCOMM..WRITEFMCOMM                                   * ***********************┆
0x1e900…1e980 UnusedSector ┆*************************************" BEGIN    CASE SYM OF       REWINDSYM    :  REWINDCOMM(S);       UNLOADSYM    :  UNLOADCOM┆
0x1e980…1ea00 UnusedSector ┆M(S);       STATUSSYM    :  STATUSCOMM(S);       SKIPSYM      :  SKIPCOMM(S);       EDITSYM      :  EDITCOMM(S);       WRITESYM ┆
0x1ea00…1ea80 UnusedSector ┆    :  WRITECOMM(S);       ERASESYM     :  ERASECOMM(S);       READSYM      :  READCOMM(S);       READREVSYM   :  READREVCOMM(S)┆
0x1ea80…1eb00 UnusedSector ┆;       WRITEFMSYM   :  WRITEFMCOMM(S)    END; "CASE" END; "PARSE_CONTR_COMM"   " PARSE_NORMTEST " "----------------"  PROCEDURE┆
0x1eb00…1eb80 UnusedSector ┆ PARSE_NORMTEST(VAR S : SAVED_COMMAND_TYPE); "************************************************************ * PARSE AND RETURN A ┆
0x1eb80…1ec00 UnusedSector ┆<NORMTEST>                             * ************************************************************" BEGIN    S.COMM := TESTSY┆
0x1ec00…1ec80 UnusedSector ┆M;    GETSYMBOL([NUMBER], 3);    S.NUMBER1 := NUM;    IF NUMBER_OK(1, 16) THEN BEGIN       IF (NUM >=9) AND (NUM <= 10) THEN BEG┆
0x1ec80…1ed00 UnusedSector ┆IN          ERROR_IN_LINE := TRUE;          SKIPLINE;          S_ERROR(5);       END;    END; END; "PARSE_NORMTEST"   " PARSE_SP┆
0x1ed00…1ed80 UnusedSector ┆ECTEST " "-----------------"  PROCEDURE REPEATTEST; "************************************************************ * PARSE AND SA┆
0x1ed80…1ee00 UnusedSector ┆"************************************************************ * PARSE AND RETURN A <READCOMM>                             * * PA┆
0x1ee00…1ee80 UnusedSector ┆ IF NOT ERROR_IN_LINE THEN                   IF N < 30 THEN BEGIN                      N := N + 1;                      SAVED_CO┆
0x1ee80…1ef00 UnusedSector ┆MMANDS[N] := S;                   END;                CLEAR_SAVED(S);                ERROR_IN_LINE := FALSE;                GETS┆
0x1ef00…1ef80 UnusedSector ┆YMBOL((COMM_BEG_SYS-[REPEATSYM] OR [ENDREPSYM], 1);             END; "WHILE"          END;       END; "SYM = BEGINSYM"       IF ┆
0x1ef80…1f000 UnusedSector ┆SYM IN (COMM_BEG_SYS-[REPEATSYM]) THEN BEGIN          CLEAR_SAVED(S);          PARSE_COMMAND(S, (COMM_BEG_SYS-[REPEATSYM]));    ┆
0x1f000…1f080 UnusedSector ┆      IF NOT ERROR_IN_LINE THEN BEGIN             N := 1;             SAVED_COMMANDS[1] := S;          END;       END;       FOR┆
0x1f080…1f100 UnusedSector ┆ P := 1 TO TIMES_TO_REPEAT DO BEGIN          FOR COMM_INDEX := 1 TO N DO BEGIN             EXECUTE_COMMAND(SAVED_COMMANDS[COMM_I┆
0x1f100…1f180 UnusedSector ┆NDEX]);             OUTPUT_REPORT;          END;       END;    END; END; "REPEATTEST"    PROCEDURE LOADINSTEST(VAR S : SAVED_COM┆
0x1f180…1f200 UnusedSector ┆MANDS); "************************************************************ * PARSE AND RETURN PARAMETERS IN A <LOADINSTEST>          ┆
0x1f200…1f280 UnusedSector ┆  * * PARAMETERS SAVED IN :                                     * *     S.USERPATT[1..7]  :  COMMAND BUFFER                   * ┆
0x1f280…1f300 UnusedSector ┆************************************************************" BEGIN    S.COMM := LOADINSSYM;    FOR N := 1 TO 7 DO BEGIN       G┆
0x1f300…1f380 UnusedSector ┆ETSYMBOL([NUMBER], 3);       S.USERPATT[ N ] := NUM;    END; END; "LOADINSTEST"  PROCEDURE OPCODETEST(VAR S : SAVED_COMMAND_TYPE┆
0x1f380…1f400 UnusedSector ┆); "************************************************************ * PARSE AND RETURN AN <OPCODETEST>                          * *┆
0x1f400…1f480 UnusedSector ┆***********************************************************" VAR   B : BOOLEAN; BEGIN    S.COMM := OPCODESYM;    GETSYMBOL([NUMB┆
0x1f480…1f500 UnusedSector ┆ER], 3);    S.NUMBER1 := NUM;    B := NUMBER_OK(NUM, 20, 29); END; "OPCODETEST"   PROCEDURE PARSE_SPEXTEST(VAR S : SAVED_COMMAND┆
0x1f500…1f580 UnusedSector ┆_TYPE); "************************************************************ * CALL SPECTEST, LOADINSTEST OR OPCODETEST                ┆
0x1f580…1f600 UnusedSector ┆  * * ACCORDING TO SYM                                          * ************************************************************" ┆
0x1f600…1f680 UnusedSector ┆BEGIN    CASE SYM OF       REPEATSYM     :  REPEATTEST;       LOADINSSYM    :  LOADINSTEST(S);       OPCODETEST    :  OPCODETEST┆
0x1f680…1f700 UnusedSector ┆    END; "CASE" END; "PARSE_SPECTEST"   " PARSE_COMMAND " "---------------"  PROCEDURE PARSE_COMMAND(VAR S : SAVED_COMMAND_TYPE;┆
0x1f700…1f780 UnusedSector ┆                         COMM_BEG_SYS : SET_OF_SYMBOL); "************************************************************ * CALL OTH┆
0x1f780…1f800 UnusedSector ┆VE COMMANDS IN A <REPEATTEST>                 * * COMMANMDS ARE COLLECTED BY PARSE_COMMAND                  * * COMMANDS ARE EXE┆
0x1f800…1f880 UnusedSector ┆CUTED ONER AT A TIME BY                   * * EXECUTE_COMMAND                                           * **********************┆
0x1f880…1f900 UnusedSector ┆**************************************" VAR   COMM_INDEX      :  INTEGER;       S               : SAVED_COMMAND_TYPE;       TIME┆
0x1f900…1f980 UnusedSector ┆S_TO_REPEAT : INTEGER;       N, P            : INTEGER; BEGIN    GETSYMBOL([NUMBER], 3);    TIMES_TO_REPEAT := NUM;    N := 0;  ┆
0x1f980…1fa00 UnusedSector ┆  IF NOT ERROR_IN_LINE THEN BEGIN       GETSYMBOL(([BEGINSYM] OR (COMM_BEG_SYS-[REPEATSYM])), 1);       IF SYM = BEGINSYM THEN B┆
0x1fa00…1fa80 UnusedSector ┆EGIN          GETSYMBOL((COMM_BEG_SYS-[REPEATSYM]) OR [ENDREPSYM], 1);          CLEAR_SAVED(S);          IF NOT ERROR_IN_LINE TH┆
0x1fa80…1fb00 UnusedSector ┆EN BEGIN             WHILE SYM <> ENDREPSYM DO BEGIN                PARSE_COMMAND(S, (COMM_BEG_SYS-[REPEATSYM]));               ┆
0x1fb00…1fb80 UnusedSector ┆Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z ┆
         […0x4…]
0x1fd80…1fe00 UnusedSector ┆  " PARSE_CONTR_COMM " "------------------"  PROCEDURE REWINDCOMM(VAR S : SAVED_COMMAND_TYPE); "********************************┆
0x1fe00…1fe80 UnusedSector ┆**************************** * PARSE AND RETURN A <REWINDCOMM>                           * *************************************┆
0x1fe80…1ff00 UnusedSector ┆***********************" VAR S1 : SAVED_COMMAND_TYPE; BEGIN    S.COMM := REWINDSYM;    IF NOT EOLN THEN BEGIN       GETSYMBOL([U┆
0x1ff00…1ff80 UnusedSector ┆NITSYM], 1);       UNITSPEC(S1);       S.NUMBER1 := S1.NUMBER1;    END    ELSE S.NUMBER1 := UNITNO; END; "REWINDCOMM"  PROCEDURE┆
0x1ff80…20000 UnusedSector ┆ UNLOADCOMM(VAR S : SAVED_COMMAND_TYPE); "************************************************************ * PARSE AND RETURN AN <UN┆
0x20000…20080 UnusedSector ┆LOADCOMM>                          * ************************************************************" BEGIN    REWINDCOMM(S);    S.┆
0x20080…20100 UnusedSector ┆COMM := UNLOADSYM; END; "UNLOADCOMM"  PROCEDURE STATUSCOMM(VAR S : SAVED_COMMAND_TYPE); "***************************************┆
0x20100…20180 UnusedSector ┆********************* * PARSE AND RETURN A <STATUSCOMM>                           * ********************************************┆
0x20180…20200 UnusedSector ┆ER PARSER PROCEDURE ACCORDING TO CURRENT SYMBOL   * ************************************************************" BEGIN    IF SY┆
0x20200…20280 UnusedSector ┆M IN COMM_BEG_SYS THEN BEGIN       CASE SYM OF          GENSYM, USERSSYM, SYSTEMSYM,          DISPLAYSYM, PRINTSYM, BLOCKSYM,   ┆
0x20280…20300 UnusedSector ┆       READYSYM, INITSYM, REWMASKSYM,          DEFSYM, LISTSYM,          BMOSYM, BADSYM,          REPORTSYM                     ┆
0x20300…20380 UnusedSector ┆ : PARSE_FUNCTION(S);           REWINDSYM, UNLOADSYM, STATUSSYM,          SKIPSYM, EDITSYM, WRITESYM,          ERASESYM, READSYM┆
0x20380…20400 UnusedSector ┆, READREVSYM,          WRITEFMSYM                     : PARSE_CONTR_COMM;           TESTSYM                        : PARSE_NORMT┆
0x20400…20480 UnusedSector ┆EST;           REPEATSYM, LOADINSSYM,          OPCODESYM                      : PARSE_SPECTEST       END; "CASE"    END; END; "P┆
0x20480…20500 UnusedSector ┆ARSE_COMMAND"   " MAIN_PROGRAM " "--------------"  BEGIN    CONNECT_PARAMETERS;    INITIALIZE;    GETCH;    GETSYM;    INPUTSEQ;┆
0x20500…20580 UnusedSector ┆ END. ; "************************************************************ * CALL SPECTEST, LOADINSTEST OR OPCODETEST                ┆
0x20580…20600 UnusedSector ┆  * * ACCORDING TO SYM                                          * ************************************************************" ┆
0x20600…20680 UnusedSector ┆BEGIN    CASE SYM OF       REPEATSYM     :  REPEATTEST;       LOADINSSYM    :  LOADINSTEST(S);       OPCODETEST    :  OPCODETEST┆
0x20680…20700 UnusedSector ┆Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z ┆
         […0x2…]
0x20800…20880 UnusedSector ┆ END; "EDITCOMM"    PROCEDURE WRITECOMM(VAR S : SAVED_COMMAND_TYPE); "**********************************************************┆
0x20880…20900 UnusedSector ┆** * PARSE AND RETURN A <WRITECOMM>                            * * USES EDITCOMM, AS THEY HAVE THE SAME PARAMETERS           * *┆
0x20900…20980 UnusedSector ┆***********************************************************" BEGIN    EDITCOMM(S);    S.COMM := WRITESYM; END; "WRITECOMM"  PROC┆
0x20980…20a00 UnusedSector ┆EDURE ERASECOMM(VAR S : SAVED_COMMAND_TYPE); "************************************************************ * PARSE AND RETURN AN┆
0x20a00…20a80 UnusedSector ┆ <ERASECOMM>                           * * PARAMETERS SAVED IN :                                     * *     S.BOOL      :  ERAS┆
0x20a80…20b00 UnusedSector ┆E FIXED                            * *     S.NUMBER1   :  LANGTH TO ERASE                        * *****************************┆
0x20b00…20b80 UnusedSector ┆*******************************" BEGIN    S.COMM := ERASESYM;    GETSYMBOL([FIXEDSYM, NUMBER], 1);    IF SYM = FIXEDSYM THEN    ┆
0x20b80…20c00 UnusedSector ┆****************" BEGIN    REWINDCOMM(S);    S.COMM := STATUSSYM; END; "STATUSCOMM"    PROCEDURE SKIPCOMM(VAR S : SAVED_COMMAND_┆
0x20c00…20c80 UnusedSector ┆TYPE); "************************************************************ * PARSE AND RETURN A <SKIPCOMM>                            ┆
0x20c80…20d00 UnusedSector ┆ * * PARAMETERS SAVED IN :                                     * *     S.NUMBER1   :  KIND                                   * *┆
0x20d00…20d80 UnusedSector ┆     S.NUMBER2   :  NUMBER OF ITEMS                        * *     S.BOOL      :  DIRECTION ((FORWARD = TRUE)            * *****┆
0x20d80…20e00 UnusedSector ┆*******************************************************" VAR SSYM : SET_OF_SYMBOL; BEGIN    S.COMM := SKIPSYM;    SSYM := [DATAS┆
0x20e00…20e80 UnusedSector ┆YM, FMSSYM, DAFMSSYM, EOTSYM];    GETSYMBOL(SSYM, 1);    IF SYM IN SSYM THEN BEGIN       CASE SYM OF          DATASYM   :  S.NUM┆
0x20e80…20f00 UnusedSector ┆BER1 := 0;          FMSSYM    :  S.NUMBER1 := 1;          DAFMSSYM  :  S.NUMBER1 := 2;          EOTSYM    :  S.NUMBER1 := 3     ┆
0x20f00…20f80 UnusedSector ┆  END; "CASE"       IF SYM <> EOTSYM THEN BEGIN          GETSYMBOL([COLON], 2);          GETSYMBOL([NUMBER], 3);          S.NUMB┆
0x20f80…21000 UnusedSector ┆ER2 := NUM;          IF NOT EOLN THEN BEGIN             GETSYMBOL([FORSYM, REVSYM], 1);             IF SYM = FORSYM THEN S.BOOL ┆
0x21000…21080 UnusedSector ┆:= TRUE;             IF SYM = REVSYM THEN S.BOOL := FALSE;          END          ELSE S.BOOL := TRUE;       END;    END; END; "S┆
0x21080…21100 UnusedSector ┆KIPCOMM"    PROCEDURE EDITCOMM(VAR S : SAVED_COMMAND_TYPE); "************************************************************ * PARS┆
0x21100…21180 UnusedSector ┆E AND SAVE AN <EDITCOMM>                              * * PARAMETERS SAVED IN :                                     * *     S.NU┆
0x21180…21200 UnusedSector ┆MBER1         :  NUMBER OF BYTES                  * *     S.TPNO            :  EVENTUAL PATTERN TO WRITE        * *     S.STRING┆
0x21200…21280 UnusedSector ┆          :  EVENTUAL STRING TO WRITE         * *     S.USERPATT_LENGTH :  LENGTH OF STRING                 * ******************┆
0x21280…21300 UnusedSector ┆******************************************" VAR   N : INTEGER;       B : BOOLEAN; BEGIN    S.COMM := EDITSYM;    GETSYMBOL([BSYM┆
0x21300…21380 UnusedSector ┆], 1);    GETSYMBOL([COLON], 2);    GETSYMBOL([NUMBER], 3);    S.NUMBER1 := NUM;    GETSYMBOL([TPSYM, SLASH], 1);    IF SYM = TP┆
0x21380…21400 UnusedSector ┆SYM THEN BEGIN       GETSYMBOL([NUMBER], 3);       S.TPNO := NUM;       B := NUMBER_OK(NUM, 0, 15);    END;    IF SYM = SLASH TH┆
0x21400…21480 UnusedSector ┆EN BEGIN       S.TPNO := 99;       N := 0;       REPEAT          IF N <= 20 THEN BEGIN             N := N + 1;             S.STR┆
0x21480…21500 UnusedSector ┆ING[N] := CH;          END;          GETCH;       UNTIL CH = '/';       CH := SP; "TO PREVENT GETTING SYM = SLASH AGAIN"    END;┆
0x21500…21580 UnusedSector ┆E PARSE_CONTR_COMM(VAR S : SAVED_COMMAND_TYPE); "************************************************************ * PARSE AND RETURN┆
0x21580…21600 UnusedSector ┆   S.BOOL := TRUE    ELSE BEGIN       S.BOOL := FALSE;       S.NUMBER1 := NUM;    END; END; "ERASECOMM"    PROCEDURE PARSE_OFFSE┆
0x21600…21680 UnusedSector ┆T(VAR S : SAVED_COMMAND_TYPE); BEGIN    IF NOT EOLN THEN BEGIN       GETSYMBOL([OFSSYM, THRSYM, TPSYM], 1);       IF SYM = OFSSY┆
0x21680…21700 UnusedSector ┆M THEN BEGIN          GETSYMBOL([COLON], 2);          GETSYMBOL([NUMBER], 3);          S.NUMBER2 := NUM;          IF NOT EOLN TH┆
0x21700…21780 UnusedSector ┆EN             GETSYMBOL([THRSYM, TPSYM], 1);       END       ELSE S.NUMBER2 := 0;    END    ELSE S.NUMBER2 := 0; END; "PARSE_OF┆
0x21780…21800 UnusedSector ┆FSET"  PROCEDURE PARSE_THRESHOLD(VAR S : SAVED_COMMAND_TYPE); BEGIN    S.THR := NORMAL;    IF SYM = THRSYM THEN BEGIN       GETS┆
0x21800…21880 UnusedSector ┆YMBOL([COLON], 2);       GETSYMBOL([NORMALSYM, LOWSYM, HIGHSYM], 1);       IF SYM IN [NORMALSYM, LOWSYM, HIGHSYM] THEN          ┆
0x21880…21900 UnusedSector ┆ CASE SYM OF             NORMALSYM : S.THR := NORMAL;             LOWSYM    : S.THR := LOW;             HIGHSYM   : S.THR := HIG┆
0x21900…21980 UnusedSector ┆H          END;          IF NOT EOLN THEN             GETSYMBOL([TPSYM], 1);    END; END; "PARSE_THRESHOLD"  PROCEDURE PARSE_EXP┆
0x21980…21a00 UnusedSector ┆DATA(VAR S : SAVED_COMMAND_TYPE); BEGIN    S.TPNO := 99       IF SYM = TPSYM THEN BEGIN       GETSYMBOL([NUMBER], 3);       IF N┆
0x21a00…21a80 UnusedSector ┆UMBER_OK(NUM, 0, 15) THEN          S.TPNO := NUM;    END; END; "PARSE_EXPDATA"   PROCEDURE READCOMM(VAR S : SAVED_COMMAND_TYPE);┆
0x21a80…21b00 UnusedSector ┆ "************************************************************ * PARSE AND RETURN A <READCOMM>                             * * P┆
0x21b00…21b80 UnusedSector ┆ARAMETERS SAVED IN :                                     * *     S.NUMBER1  :  NUMBER OF BYTES                         * *     S┆
0x21b80…21c00 UnusedSector ┆.NUMBER2  :  OFFSET                                  * *     S.THR      :  THRESHOLD                               * *     S.TPN┆
0x21c00…21c80 UnusedSector ┆O     :  EVENTUAL EXPECTED DATA                  * ************************************************************" VAR   SSYM : SE┆
0x21c80…21d00 UnusedSector ┆T_OF_SYMBOL;       N    : INTEGER; BEGIN    S.COMM := READSYM;    SSYM := _OFSSYM, THRSYM, TPSYM];    GETSYMBOL([BSYM], 1);    G┆
0x21d00…21d80 UnusedSector ┆ETSYMBOL([COLON], 2);    GETSYMBOL([NUMBER], 3);    S.NUMBER1 := NUM;    PARSE_OFFSET(S);    PARSE_THRESHOLD(S);    PARSE_EXPDAT┆
0x21d80…21e00 UnusedSector ┆A(S); END; "READCOMM"  PROCEDURE READREVCOMM(VAR S : SAVED_COMMAND_TYPE); "*****************************************************┆
0x21e00…21e80 UnusedSector ┆******* * PARSE AND RETURN A <READREVCOMM>                          * * PARA METERS SAVED IN :                                  ┆
0x21e80…21f00 UnusedSector ┆   * *     S.NUMBER1  :  NUMBER OF BYTES                         * *     S.BOOL     :  EDIT                                    *┆
0x21f00…21f80 UnusedSector ┆ *     S.TPNO     :  EVENTUAL EXPECTED DATA                  * ************************************************************" BEG┆
0x21f80…22000 UnusedSector ┆IN    S.COMM := READREVSYM;    S.BOOL := FALSE;    S.TPNO := 99;    GETSYMBOL([BSYM], 1);    GETSYMBOL([COLON], 2);    GETSYMBOL┆
0x22000…22080 UnusedSector ┆([NUMBER], 3);    S.NUMBER1 := NUM;    IF NOT EOLN THEN BEGIN       GETSYMBOL([EDITSYM, TPSYM], 1);       IF SYM = EDITSYM THEN ┆
0x22080…22100 UnusedSector ┆S.BOOL := TRUE;    END;    IF SYM = TPSYM THEN PARSE_EXPDATA(S); END; "READREVCOMM"    PROCEDURE WRITEFMCOMM(VAR S : SAVED_COMMA┆
0x22100…22180 UnusedSector ┆ND_TYPE); "************************************************************ * PARSE AND RETURN A <WRITEFMCOMM>                      ┆
0x22180…22200 UnusedSector ┆    * ************************************************************" BEGIN    S.COMM := WRITEFMSYM; END; "WRITEFMCOMM"   PROCEDUR┆
0x22200…22280 UnusedSector ┆**************************************" BEGIN    CASE SYM OF       REWINDSYM    :  REWINDCOMM(S);       UNLOADSYM    :  UNLOADCO┆
0x22280…22300 UnusedSector ┆MM(S);       STATUSSYM    :  STATUSCOMM(S);       SKIPSYM      :  SKIPCOMM(S);       EDITSYM      :  EDITCOMM(S);       WRITESYM┆
0x22300…22380 UnusedSector ┆     :  WRITECOMM(S);       ERASESYM     :  ERASECOMM(S);       READSYM      :  READCOMM(S);       READREVSYM   :  READREVCOMM(S┆
0x22380…22400 UnusedSector ┆  " PARSE_NORMTEST " "----------------"  PROCEDURE PARSE_NORMTEST(VAR S : SAVED_COMMAND_TYPE); "********************************┆
0x22400…22480 UnusedSector ┆**************************** * PARSE AND RETURN A <NORMTEST>                             * *************************************┆
0x22480…22500 UnusedSector ┆***********************" BEGIN    S.COMM := TESTSYM;    GETSYMBOL([NUMBER], 3);    S.NUMBER1 := NUM;    IF NUMBER_OK(1, 16) THEN┆
0x22500…22580 UnusedSector ┆ BEGIN       IF (NUM >=9) AND (NUM <= 10) THEN BEGIN          ERROR_IN_LINE := TRUE;          SKIPLINE;          S_ERROR(5);    ┆
0x22580…22600 UnusedSector ┆   END;    END; END; "PARSE_NORMTEST" "  PROCEDURE PARSE_NORMTEST(VAR S : SAVED_COMMAND_TYPE); "********************************┆
0x22600…22680 UnusedSector ┆**************************** * PARSE AND RETURN A <NORMTEST>                             * *************************************┆
0x22680…22700 UnusedSector ┆***********************" BEGIN    S.COMM := TESTSYM;    GETSYMBOL([NUMBER], 3);    S.NUMBER1 := NUM;    IF NUMBER_OK(1, 16) THEN┆
0x22700…22780 UnusedSector ┆ BEGIN       IF (NUM >=9) AND (NUM <= 10) THEN BEGIN          ERROR_IN_LINE := TRUE;          SKIPLINE;          S_ERROR(5);    ┆
0x22780…22800 UnusedSector ┆  " PARSE_SPECTEST " "-----------------"  PROCEDURE REPEATTEST; "************************************************************ * ┆
0x22800…22880 UnusedSector ┆PARSE AND SAVE COMMANDS IN A <REPEATTEST>                 * * COMMANMDS ARE COLLECTED BY PARSE_COMMAND                  * * COMM┆
0x22880…22900 UnusedSector ┆ANDS ARE EXECUTED ONER AT A TIME BY                   * * EXECUTE_COMMAND                                           * **********┆
0x22900…22980 UnusedSector ┆**************************************************" VAR   COMM_INDEX      :  INTEGER;       S               : SAVED_COMMAND_TYPE┆
0x22980…22a00 UnusedSector ┆;       TIMES_TO_REPEAT : INTEGER;       N, P            : INTEGER; BEGIN    GETSYMBOL([NUMBER], 3);    TIMES_TO_REPEAT := NUM; ┆
0x22a00…22a80 UnusedSector ┆   N := 0;    IF NOT ERROR_IN_LINE THEN BEGIN       GETSYMBOL(([BEGINSYM] OR (COMM_BEG_SYS-[REPEATSYM])), 1);       IF SYM = BEG┆
0x22a80…22b00 UnusedSector ┆INSYM THEN BEGIN          GETSYMBOL((COMM_BEG_SYS-[REPEATSYM]) OR [ENDREPSYM], 1);          CLEAR_SAVED(S);          IF NOT ERRO┆
0x22b00…22b80 UnusedSector ┆R_IN_LINE THEN BEGIN             WHILE SYM <> ENDREPSYM DO BEGIN                PARSE_COMMAND(S, (COMM_BEG_SYS-[REPEATSYM]));   ┆
0x22b80…22c00 UnusedSector ┆             IF NOT ERROR_IN_LINE THEN                   IF N < 30 THEN BEGIN                      N := N + 1;                  ┆
0x22c00…22c80 UnusedSector ┆    SAVED_COMMANDS[N] := S;                   END;                CLEAR_SAVED(S);                ERROR_IN_LINE := FALSE;        ┆
0x22c80…22d00 UnusedSector ┆ A <CONTR.COMM> USING                     * * REWINFCOMM..WRITEFMCOMM                                   * **********************┆
0x22d00…22d80 UnusedSector ┆**************************************" BEGIN    CASE SYM OF       REWINDSYM    :  REWINDCOMM(S);       UNLOADSYM    :  UNLOADCO┆
0x22d80…22e00 UnusedSector ┆MM(S);       STATUSSYM    :  STATUSCOMM(S);       SKIPSYM      :  SKIPCOMM(S);       EDITSYM      :  EDITCOMM(S);       WRITESYM┆
0x22e00…22e80 UnusedSector ┆     :  WRITECOMM(S);       ERASESYM     :  ERASECOMM(S);       READSYM      :  READCOMM(S);       READREVSYM   :  READREVCOMM(S┆
0x22e80…22f00 UnusedSector ┆);       WRITEFMSYM   :  WRITEFMCOMM(S)    END; "CASE" END; "PARSE_CONTR_COMM"                          * **********************┆
0x22f00…22f80 UnusedSector ┆SYMBOL([NUMBER], 3);    S.NUMBER1 := NUM;    B := NUMBER_OK(NUM, 20, 29); END; "OPCODETEST"   PROCEDURE PARSE_SPEXTEST(VAR S : S┆
0x22f80…23000 UnusedSector ┆AVED_COMMAND_TYPE); "************************************************************ * CALL SPECTEST, LOADINSTEST OR OPCODETEST    ┆
0x23000…23080 UnusedSector ┆              * * ACCORDING TO SYM                                          * **************************************************┆
0x23080…23100 UnusedSector ┆**********" BEGIN    CASE SYM OF       REPEATSYM     :  REPEATTEST;       LOADINSSYM    :  LOADINSTEST(S);       OPCODETEST    :┆
0x23100…23180 UnusedSector ┆  OPCODETEST    END; "CASE" END; "PARSE_SPECTEST" **********************" BEGIN    S.COMM := LOADINSSYM;    FOR N := 1 TO 7 DO B┆
0x23180…23200 UnusedSector ┆EGIN       GETSYMBOL([NUMBER], 3);       S.USERPATT[ N ] := NUM;    END; END; "LOADINSTEST"  PROCEDURE OPCODETEST(VAR S : SAVED_┆
0x23200…23280 UnusedSector ┆COMMAND_TYPE); "************************************************************ * PARSE AND RETURN AN <OPCODETEST>                 ┆
0x23280…23300 UnusedSector ┆  " PARSE_COMMAND " "---------------"  PROCEDURE PARSE_COMMAND(VAR S : SAVED_COMMAND_TYPE;                         COMM_BEG_SYS ┆
0x23300…23380 UnusedSector ┆: SET_OF_SYMBOL); "************************************************************ * CALL OTHER PARSER PROCEDURE ACCORDING TO CURRE┆
0x23380…23400 UnusedSector ┆NT SYMBOL   * ************************************************************" BEGIN    IF SYM IN COMM_BEG_SYS THEN BEGIN       CAS┆
0x23400…23480 UnusedSector ┆E SYM OF          GENSYM, USERSSYM, SYSTEMSYM,          DISPLAYSYM, PRINTSYM, BLOCKSYM,          READYSYM, INITSYM, REWMASKSYM, ┆
0x23480…23500 UnusedSector ┆         DEFSYM, LISTSYM,          BMOSYM, BADSYM,          REPORTSYM                      : PARSE_FUNCTION(S);           REWIND┆
0x23500…23580 UnusedSector ┆SYM, UNLOADSYM, STATUSSYM,          SKIPSYM, EDITSYM, WRITESYM,          ERASESYM, READSYM, READREVSYM,          WRITEFMSYM     ┆
0x23580…23600 UnusedSector ┆                : PARSE_CONTR_COMM;           TESTSYM                        : PARSE_NORMTEST;           REPEATSYM, LOADINSSYM, ┆
0x23600…23680 UnusedSector ┆         OPCODESYM                      : PARSE_SPECTEST       END; "CASE"    END; END; "PARSE_COMMAND"                         ┆
0x23680…23700 UnusedSector ┆        GETSYMBOL((COMM_BEG_SYS-[REPEATSYM] OR [ENDREPSYM], 1);             END; "WHILE"          END;       END; "SYM = BEGINSY┆
0x23700…23780 UnusedSector ┆M"       IF SYM IN (COMM_BEG_SYS-[REPEATSYM]) THEN BEGIN          CLEAR_SAVED(S);          PARSE_COMMAND(S, (COMM_BEG_SYS-[REPEA┆
0x23780…23800 UnusedSector ┆TSYM]));          IF NOT ERROR_IN_LINE THEN BEGIN             N := 1;             SAVED_COMMANDS[1] := S;          END;       EN┆
0x23800…23880 UnusedSector ┆D;       FOR P := 1 TO TIMES_TO_REPEAT DO BEGIN          FOR COMM_INDEX := 1 TO N DO BEGIN             EXECUTE_COMMAND(SAVED_COM┆
0x23880…23900 UnusedSector ┆MANDS[COMM_INDEX]);             OUTPUT_REPORT;          END;       END;    END; END; "REPEATTEST"    PROCEDURE LOADINSTEST(VAR S┆
0x23900…23980 UnusedSector ┆ : SAVED_COMMANDS); "************************************************************ * PARSE AND RETURN PARAMETERS IN A <LOADINSTES┆
0x23980…23a00 UnusedSector ┆T>            * * PARAMETERS SAVED IN :                                     * *     S.USERPATT[1..7]  :  COMMAND BUFFER         ┆
0x23a00…23a80 UnusedSector ┆          * ************************************************************" BEGIN    S.COMM := LOADINSSYM;    FOR N := 1 TO 7 DO B┆
0x23a80…23b00 UnusedSector ┆EGIN       GETSYMBOL([NUMBER], 3);       S.USERPATT[ N ] := NUM;    END; END; "LOADINSTEST"  PROCEDURE OPCODETEST(VAR S : SAVED_┆
0x23b00…23b80 UnusedSector ┆COMMAND_TYPE); "************************************************************ * PARSE AND RETURN AN <OPCODETEST>                 ┆
0x23b80…23c00 UnusedSector ┆         * ************************************************************" VAR   B : BOOLEAN; BEGIN    S.COMM := OPCODESYM;    GET┆
0x23c00…23c80 UnusedSector ┆Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z ┆
         […0x8…]
0x24080…24100 UnusedSector ┆Z Z !   Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z ┆
0x24100…24180 UnusedSector ┆Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z ┆
         […0x2…]
0x24280…24300 UnusedSector ┆  ON_X  /              ░ H     |   ░T_CO ░     ░     ░     ░SCAN ░R    ░     ░     ░     ░  PA ░ER   ░     ░     ░     ░     ░IN┆
0x24300…24380 UnusedSector ┆_P ░GRAM ░     ░  ░  ░     ░MERG ░INES ░     ░  d  ░]!   ░  TE ░_MAG ░PE.T ░     ░s    ░     ░INTF ░E    ░     ░     ░     ░PRET┆
0x24380…24400 UnusedSector ┆ ░LINE ░     ░     ░  p  ░  ME ░ED.P ░     ░     ░     ░     ░RSE_ ░V_UN ░     ░   > ░eF   ░PARS ░FUNC ░ON   ░     ░   i ░  PA ░┆
0x24400…24480 UnusedSector ┆E_CO ░R_CO ░     ░ ~   ░     ░RSE_ ░RMTE ░     ░     ░  I  ░PARS ░SPEC ░ST   ░    ]!        PA   1  MMAND           7   h       ┆
0x24480…24500 UnusedSector ┆  MERGE.J                                                                                                                       ┆
0x24500…24580 UnusedSector ┆                        ░     M     }       M   [   ; d m ]!  }     h d FDD000      L                   l     ,                 ┆
0x24580…24600 UnusedSector ┆    ]!      \     ]!(       p     ]!D&                               *                *LIST             CDIR:@DMA000-FILE*CRP000┆
0x24600…24680 UnusedSector ┆          *MD              *USER  D         *TLM.D            I         ?               ]!                ]! %            7     ┆
0x24680…24700 UnusedSector ┆MERGE I:MERGELINES O:MERGED.PS PRINT MERGED.PS ░     ░     ░TEN. ░     ░     ░     ░#  A ░  SA ░.D   ░     ░B    ░ A   ░     ░J.┆
0x24700…24780 UnusedSector ┆D  ░     ░  E  ░     ░     ░MC.D ░     ░     ░     ░     ░  HC ░D    ░     ░S    ░     ░     ░P.D  ░     ░  T  ░   A ░     ░TLM.┆
0x24780…24800 UnusedSector ┆ ░     ░     ░     ░     ░  JH ░     ░     ░|    ░TS:= ░02   ░.D   ░     ░     ░ENTE ░=  # ░10   ░ISMO ░= #0 ░B    ░ITON ░  00 ░┆
0x24800…24880 UnusedSector ┆   O ░REC: ░#000 ░  XN ░DS   ░0202 ░ BAC ░E:=  ░005  ░XNI  ░     ░d E  ░[, ░ ░  ░░M k M     R    2  [, &          _ o _     l   ┆
0x24880…24900 UnusedSector ┆Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z ┆
         […0x33d…]
0x3e780…3e800 UnusedSector 0x1a[128]
         […0x1…]
0x3e880…3e900 UnusedSector ┆Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z Z ┆