<< LINES .001/.009 ARE RESERVED FOR SYSTEMS INTEGRATION>>               00000001
$PAGE "TEST'DRT'INFO: Set up for PRINTDRT"                              35000000
$CONTROL SEGMENT=TABLESIO                                               35002000
COMMENT                                                                 35004000
                                                                        35006000
Purpose:                                                                35008000
                                                                        35010000
Input parameters:                                                       35012000
                                                                        35014000
Output parameters:                                                      35016000
                                                                        35018000
Globals Referenced:                                                     35020000
                                                                        35022000
Globals Altered:                                                        35024000
                                                                        35026000
Data Structures:                                                        35028000
                                                                        35030000
Algorithm:                                                              35032000
                                                                        35034000
;                                                                       35036000
PROCEDURE TEST'DRT'INFO(MINDRT,MAXDRT,VALID'DRTS,PFLAG);       <<03013>>35038000
<<=================================================>>          <<03013>>35040000
  VALUE PFLAG;  <<PRINT DRTBANK AND DRTADDR IF TRUE>>          <<03013>>35042000
  INTEGER MINDRT,MAXDRT;                                       <<03013>>35044000
  LOGICAL VALID'DRTS,PFLAG;                                    <<03013>>35046000
BEGIN                                                          <<03013>>35048000
                                                               <<03013>>35050000
    COMMENT                                                    <<03013>>35052000
        THIS PROCEDURE PERFORMS THE FOLLOWING:                 <<03013>>35054000
                                                               <<03013>>35056000
        RETURNS "MINDRT" BASED ON CPUTYPE.                     <<03013>>35058000
        RETURNS "MAXDRT" BASED ON "HIGHEST DRT" FROM           <<03013>>35060000
        SYSGLOB(71)   (ABSOLUTE 1071). IF "HIGHEST DRT"        <<03013>>35062000
        IS LARGER THAN THE CPU SUPPORTED MAX DRT, THEN AN      <<03013>>35064000
        ERROR IS PRINTED AND "MAXDRT" IS RETURNED AS THE       <<03013>>35066000
        CPU SUPPORTABLE MAXIMUM DRT.                           <<03013>>35068000
                                                               <<03013>>35070000
        INITIALIZES (LOADS) "DRT'TABLE'ADDRESS" FROM:          <<03013>>35072000
           DRTBANK   (ABS 9)                                   <<03013>>35074000
           DRTADDR   (ABS 9)                                   <<03013>>35076000
        AND IF PFLAG IS TRUE, PRINTS THESE VALUES.             <<03013>>35078000
                                                               <<03013>>35080000
        TESTS THIS "DRT'TABLE'ADDRESS" BASED ON CPU:           <<03013>>35082000
           IF NOT ICF55 THEN THIS SHOULD CONTAIN 0,0.          <<03013>>35084000
           ANY OTHER VALUES IMPLY THE CELLS HAD BEEN           <<03013>>35086000
           DESTROYED. PRINTS AN ERROR, AND RESTORES            <<03013>>35088000
           THE VALUES TO 0,0 TO ALLOW AN ATTEMPT OF            <<03013>>35090000
           FORMATING THE DRT TABLE IF DESIRED.                 <<03013>>35092000
                                                               <<03013>>35094000
           FOR THE ICF55, DRTBANK/DRTADDR VALUES               <<03013>>35096000
           ARE ONLY TESTED TO INSURE THEY POINT WITHIN         <<03013>>35098000
           THE BOUNDS OF PHYSICAL MEMORY. IF NOT,              <<03013>>35100000
           THEN AN ERROR IS PRINTED, VALID'DRTS IS SET         <<03013>>35102000
           TO FALSE, AND THE DRT,ILT,DIT TABLES CAN            <<03013>>35104000
           NOT BE FORMATED/PRINTED.                            <<03013>>35106000
     END COMMENT;                                              <<03013>>35108000
                                                               <<03013>>35110000
    DOUBLE DRTPAIR;         <<DOUBLE ADDRESS>>                 <<03013>>35112000
    LOGICAL DRTBANK = DRTPAIR;     <<LO ORDER BANK PART>>      <<03013>>35114000
    LOGICAL DRTADDR = DRTPAIR+1;   <<HI ORDER ADDR PART>>      <<03013>>35116000
                                                               <<03013>>35118000
    INTEGER CPUMAXDRT;     <<MAX DRT CPU CAN SUPPORT>>         <<03013>>35120000
                                                               <<03013>>35122000
    DOUBLE SYSGLOB71 :=%1071D;    <<ADDR OF SYSGLOB CELL>>     <<03013>>35124000
    INTEGER HIGHESTDRT;           <<MAX CONFIG DRT>>           <<03013>>35126000
    LOGICAL CLOBBERED'DRTS; <<TRUE IF DRT POINTERS APPEAR>>    <<03013>>35128000
                            <<TO HAVE BEEN CLOBBERED>>         <<03013>>35130000
                                                               <<03013>>35132000
    <<--------------------------------------------->>          <<03013>>35134000
    VALID'DRTS := TRUE;     <<ASSUME SUCCESS>>                 <<03013>>35136000
    CLOBBERED'DRTS := FALSE;  <<ASSUME THEY ARE OK>>           <<03013>>35138000
                                                               <<03013>>35140000
                  <<RETURN MINDRT AND MAXDRT BASED ON CPU>>    <<03013>>35142000
                  <<------------------------------------->>    <<03013>>35144000
                                                               <<03013>>35146000
    MINDRT := IF SERIES'33'THRU'55                             <<03013>>35148000
              THEN 8                                           <<03013>>35150000
              ELSE 3;             <<RETURN MINDRT>>            <<03013>>35152000
                                                               <<03013>>35154000
    HIGHESTDRT := INTEGER( CORE(SYSGLOB71));                   <<03013>>35156000
           <<RETRIEVE HIGHEST CONFIGURED DRT FROM SYSGLOB>>    <<03013>>35158000
                                                               <<03013>>35160000
    IF MACHINEID = ICF55                                       <<03013>>35162000
    THEN CPUMAXDRT := 511   <<ICF55 SUPPORTS 511 DRTS>>        <<03013>>35164000
    ELSE CPUMAXDRT := 127;  <<OTHERS SUPPORT 127 DRTS>>        <<03013>>35166000
                                                               <<03013>>35168000
              <<LOAD DRT'TABLE'ADDRESS FROM DRTBANK/DRTADDR>>  <<03013>>35170000
              <<------------------------------------------->>  <<03013>>35172000
                                                               <<03013>>35174000
    DRTBANK := CORE( 8D );    <<FIXED LOW CORE POINTERS>>      <<03013>>35176000
    DRTADDR := CORE( 9D );                                     <<03013>>35178000
                                                               <<03013>>35180000
    DRT'TABLE'ADDRESS := DRTPAIR;  <<INITIALIZED JUST AS >>    <<03013>>35182000
                              <<WE FOUND THE VALUES IN 8,9>>   <<03013>>35184000
                                                               <<03013>>35186000
    IF MACHINEID <> ICF55                                      <<03013>>35188000
    THEN IF DRTBANK <> 0 OR DRTADDR <> 0   <<POINTERS OK?>>    <<03013>>35190000
         THEN CLOBBERED'DRTS := TRUE;  <<WE WILL CORRECT>>     <<03013>>35192000
             <<DRT'TABLE'ADDRESS LATER AND GIVE WARNING MSG>>  <<03013>>35194000
                                                               <<03013>>35196000
                     <<PRINT DRTBANK, DRTADDR INFO>>           <<03013>>35198000
                     <<--------------------------->>           <<03013>>35200000
                                                               <<03013>>35202000
    IF PFLAG OR          <<USER REQUESTED>>                    <<03013>>35204000
       CLOBBERED'DRTS    <<ERROR DETECTED>>                    <<03013>>35206000
    THEN BEGIN                                                 <<03013>>35208000
        MOVE DBUFFER := "(ADDR %10)  DRT BANK ";               <<03013>>35210000
        @PBUF := @BBUF + 52;                                   <<03013>>35212000
        PUTNUM (DRTBANK);                                      <<03013>>35214000
        PRINTLINE; SKIPLINES(1);                               <<03013>>35216000
        MOVE DBUFFER := "(ADDR %11)  DRT ADDR ";               <<03013>>35218000
        @PBUF := @BBUF + 52;                                   <<03013>>35220000
        PUTNUM (DRTADDR);                                      <<03013>>35222000
        PRINTLINE; SKIPLINES(1);                               <<03013>>35224000
    END;  <<PRINT DRTBANK DRTADDR>>                            <<03013>>35226000
                                                               <<03013>>35228000
                     <<IF BAD DRT POINTER, GIVE ERROR>>        <<03013>>35230000
                     <<------------------------------>>        <<03013>>35232000
                                                               <<03013>>35234000
    IF CLOBBERED'DRTS   <<DRTBANK/DRTADDR HAS BEEN HIT>>       <<03013>>35236000
    THEN BEGIN                                                 <<03013>>35238000
        MOVE DBUFFER :=                                        <<03013>>35240000
         ("**ERROR** DRTBANK / DRTADDR PAIR HAS BEEN ",        <<03013>>35242000
         "MODIFIED.");                                         <<03013>>35244000
        PRINTLINE;                                             <<03013>>35246000
        MOVE DBUFFER :=                                        <<03013>>35248000
        ("**PROPER VALUES (0,0) WILL BE USED TO FORMAT DRT,",  <<03013>>35250000
        " ILT, AND DIT TABLES.");                              <<03013>>35252000
        PRINTLINE; SKIPLINES(1);                               <<03013>>35254000
        DRT'TABLE'ADDRESS := 0D;   <<USE CORRECT VALUES>>      <<03013>>35256000
    END;                                                       <<03013>>35258000
                                                               <<03013>>35260000
               <<ICF-55 TEST FOR DRTS OUTSIDE MEMORY BOUNDS>>  <<03013>>35262000
               <<------------------------------------------>>  <<03013>>35264000
    IF MACHINEID=ICF55 AND DRT'TABLE'ADDRESS > MAXMEM          <<03013>>35266000
    THEN BEGIN   <<DRTS FALL OUTSIDE OF PHYSICAL MEMORY>>      <<03013>>35268000
                 <<NOTE: ONLY START ADDRESS IS CHECKED>>       <<03013>>35270000
                                                               <<03013>>35272000
        VALID'DRTS := FALSE;  <<RETURN ERROR FLAG>>            <<03013>>35274000
        SKIPLINES(1);                                          <<03013>>35276000
        MOVE DBUFFER :=                                        <<03013>>35278000
         "**ERROR** DRT TABLE IS OUTSIDE OF PHYSICAL MEMORY";  <<03013>>35280000
        PRINTLINE;                                             <<03013>>35282000
        MOVE DBUFFER :=                                        <<03013>>35284000
         ("**ERROR** DRT, ILT, AND DIT TABLES CAN NOT",        <<03013>>35286000
         " BE PRINTED.");                                      <<03013>>35288000
        PRINTLINE; SKIPLINES(1);                               <<03013>>35290000
     END;  <<DRTPAIR > MEMSIZE>>                               <<03013>>35292000
                                                               <<03013>>35294000
                      <<CAN CPU SUPPORT CONFIG DRTS>>          <<03013>>35296000
                      <<--------------------------->>          <<03013>>35298000
    IF HIGHESTDRT > CPUMAXDRT   <<TOO BIG>>                    <<03013>>35300000
       OR HIGHESTDRT < MINDRT   <<ROLLED OVER TO NEGATIVE?>>   <<03013>>35302000
    THEN BEGIN        <<SYSGLOB CELL MUST HAVE BEEN HIT>>      <<03013>>35304000
                                                               <<03013>>35306000
        MOVE DBUFFER :=                                        <<03013>>35308000
         "**ERROR** HIGHEST DRT (SYSGLOB-71) IS INVALID.";     <<03013>>35310000
        PRINTLINE;                                             <<03013>>35312000
        MOVE DBUFFER :=                                        <<03013>>35314000
         "**MAXIMUM DRT SUPPORTED BY THIS CPU IS";             <<03013>>35316000
        @PBUF := @PBUF + 39;                                   <<03013>>35318000
        ASCII (INTEGER(CPUMAXDRT),10,PBUF);                    <<03013>>35320000
        PRINTLINE; SKIPLINES(2);                               <<03013>>35322000
                                                               <<03013>>35324000
        MAXDRT := CPUMAXDRT;  <<RETURN CPU LIMITED DRT >>      <<03013>>35326000
        END   <<TOO BIG>>                                      <<03013>>35328000
    ELSE MAXDRT := HIGHESTDRT;  <<OK, NORMAL CASE>>            <<03013>>35330000
                                                               <<03013>>35332000
                                                               <<03013>>35334000
END;  <<PROCEDURE TEST'DRT'INFO>>                              <<03013>>35336000
                                                                        35338000
$PAGE "GETDRT(DRTNO,OFFSET): Return address of DRT entry"               35340000
$CONTROL SEGMENT=TABLESIO                                               35342000
COMMENT                                                                 35344000
                                                                        35346000
Purpose:                                                                35348000
                                                                        35350000
Input parameters:                                                       35352000
                                                                        35354000
Output parameters:                                                      35356000
                                                                        35358000
Globals Referenced:                                                     35360000
                                                                        35362000
Globals Altered:                                                        35364000
                                                                        35366000
Data Structures:                                                        35368000
                                                                        35370000
Algorithm:                                                              35372000
                                                                        35374000
;                                                                       35376000
LOGICAL PROCEDURE GETDRT( DRTNO, OFFSET);                      <<03013>>35378000
<<======================================>>                     <<03013>>35380000
    VALUE   DRTNO, OFFSET;                                     <<03013>>35382000
    INTEGER DRTNO, OFFSET;                                     <<03013>>35384000
BEGIN                                                          <<03013>>35386000
    COMMENT                                                    <<03013>>35388000
       THIS PROCEDURE ASSUMES GLOBAL "DRT'TABLE'ADDRESS"       <<03013>>35390000
    HAS BEEN INITIALIZED BY A PRIOR CALL TO TEST'DRT'INFO.     <<03013>>35392000
    USING DRT'TABLE'ADDRESS AS THE BASE ADDRESS, INDEX         <<03013>>35394000
    TO THE ENTRY FOR DRTNO (MULTIPY BY ENTRYSIZE=4), AND       <<03013>>35396000
    ADD "OFFSET" TO THE DESIRED WORD.  END COMMENT;            <<03013>>35398000
                                                               <<03013>>35400000
    GETDRT := LOGICAL ( CORE (                                 <<03013>>35402000
                 DRT'TABLE'ADDRESS +      <<BASE>>             <<03013>>35404000
                 DOUBLE(DRTNO*4) +        <<INDEX TO ENTRY>>   <<03013>>35406000
                 DOUBLE(OFFSET) ));       <<DESIRED WORD>>     <<03013>>35408000
END;  <<GETDRT>>                                               <<03013>>35410000
                                                                        35412000
$PAGE "PRINTDRT: Format DRT table"                                      35414000
$CONTROL SEGMENT=TABLESIO                                               35416000
COMMENT                                                                 35418000
                                                                        35420000
Purpose:                                                                35422000
                                                                        35424000
Input parameters:                                                       35426000
                                                                        35428000
Output parameters:                                                      35430000
                                                                        35432000
Globals Referenced:                                                     35434000
                                                                        35436000
Globals Altered:                                                        35438000
                                                                        35440000
Data Structures:                                                        35442000
                                                                        35444000
Algorithm:                                                              35446000
                                                                        35448000
;                                                                       35450000
  PROCEDURE PRINTDRT;                                          <<03013>>35452000
  <<================>>                                         <<03013>>35454000
  <<THIS PROCEDURE FORMATS AND PRINTS THE DRT TABLE>>          <<03013>>35456000
                                                               <<03013>>35458000
  BEGIN                                                        <<03013>>35460000
    INTEGER DRTNUM,MAXDRT,MINDRT;                              <<03013>>35462000
    DOUBLE COREA;                                              <<03013>>35464000
    INTEGER COREA1=COREA+1;                                    <<03013>>35466000
                                                               <<03013>>35468000
    LOGICAL VALID'DRTS;                                        <<03013>>35470000
                                                               <<03013>>35472000
    NEWPAGE;                                                   <<03013>>35474000
                                                               <<03013>>35476000
               <<DETERMINE MINDRT AND MAXDRT>>                 <<03013>>35478000
               <<PRINT DRTBANK,DRTADDR  VALUES>>               <<03013>>35480000
               <<PRINT ERROR IF DRTBANK/ADDR ARE BAD>>         <<03013>>35482000
                                                               <<03013>>35484000
    TEST'DRT'INFO(MINDRT,MAXDRT,VALID'DRTS,TRUE);              <<03013>>35486000
                                                               <<03013>>35488000
    IF NOT VALID'DRTS    <<FATAL ICF55 DRT PROBLEM>>           <<03013>>35490000
    THEN GO BAD'DRTS;    <<CANT PRINT TABLE>>                  <<03013>>35492000
                         <<ERROR MSG ALREADY PRINTED>>         <<03013>>35494000
                                                               <<03013>>35496000
                                                               <<03013>>35498000
    MOVE DBUFFER(21):="******    D R T    T A B L E    ******";<<03013>>35500000
    PRINTLINE;                                                 <<03013>>35502000
    SKIPLINES(1);                                              <<03013>>35504000
                                                               <<03013>>35506000
                                 <<PRINT COLUMN HEADINGS>>     <<03013>>35508000
    IF SERIES'33'THRU'55 THEN                                  <<03013>>35510000
      MOVE DBUFFER(19):="DEVICE                         PGM"   <<03013>>35512000
    ELSE                                                       <<03013>>35514000
      MOVE DBUFFER(19):="DEVICE                PGM";           <<03013>>35516000
    PRINTLINE;                                                 <<03013>>35518000
    IF SERIES'33'THRU'55 THEN                                  <<03013>>35520000
    MOVE DBUFFER(19):="NUMBER    ADR   SIO    CPVA    LABEL"   <<03013>>35522000
    ELSE                                                       <<03013>>35524000
    MOVE DBUFFER(19):="NUMBER    ADR   SIO   LABEL  DBI";      <<03013>>35526000
    PRINTLINE;                                                 <<03013>>35528000
    SKIPLINES(1);                                              <<03013>>35530000
                                                               <<03013>>35532000
    FOR DRTNUM:=MINDRT UNTIL MAXDRT DO                         <<03013>>35534000
    BEGIN                                                      <<03013>>35536000
       @PBUF:=@PBUF+38;                                        <<03013>>35538000
       ASCII(DRTNUM,10,PBUF);      <<PRINT DRT NUMBER>>        <<03013>>35540000
       @PBUF:=@PBUF+6;                                         <<03013>>35542000
                                                               <<03013>>35544000
       TOS := DRT'TABLE'ADDRESS;   <<DOUBLE ADDRESS>>          <<03013>>35546000
       TOS := TOS + DRTNUM *4;     <<BUMP LO ADDR TO ENTRY>>   <<03013>>35548000
       PUTNUMP( TOS);              <<PRINT LO DRT ADDRESS>>    <<03013>>35550000
       DEL;                        <<DELETE THE BANK NUMBER>>  <<03013>>35552000
       PBUF(-1):=":";                                          <<03013>>35554000
       @PBUF:=@PBUF+2;                                         <<03013>>35556000
                                                               <<03013>>35558000
       PUTNUM( GETDRT(DRTNUM,0));  <<PRINT ENTRY-WORD 0>>      <<03013>>35560000
       PUTNUM( GETDRT(DRTNUM,1));  <<PRINT ENTRY-WORD 1>>      <<03013>>35562000
       PUTNUM( GETDRT(DRTNUM,2));  <<PRINT ENTRY-WORD 2>>      <<03013>>35564000
       PUTNUM( GETDRT(DRTNUM,3));  <<PRINT ENTRY-WORD 3>>      <<03013>>35566000
       PRINTLINE;                                              <<03013>>35568000
    END;                                                       <<03013>>35570000
BAD'DRTS:   <<EXIT QUICK IF CANT PRINT DRTS>>                  <<03013>>35572000
END;                                                           <<03013>>35574000
                                                                        35576000
$PAGE "PRINTDRQT : Format the Disk request table"                       35578000
$CONTROL SEGMENT=TABLESIO                                               35580000
PROCEDURE PRINT'LDR(LDR'ENTRY'INDEX,DRQTBASE,LDR'FIRST);                35582000
VALUE LDR'ENTRY'INDEX,DRQTBASE,LDR'FIRST;                               35584000
LOGICAL LDR'ENTRY'INDEX,LDR'FIRST;                                      35586000
DOUBLE DRQTBASE;                                                        35588000
                                                                        35590000
BEGIN                                                                   35592000
EQUATE                                                                  35594000
                                                                        35596000
    LDR'FLAGS'INDEX   =  0,                                             35598000
    LDR'L'HODA'INDEX  =  1,                                             35600000
    LDR'UNITLDEV'INDEX=  2,                                             35602000
    LDR'CDT'INDEX     =  3,                                             35604000
    LDR'BUFDST'INDEX  =  4,                                             35606000
    LDR'BUFADR'INDEX  =  5,                                             35608000
    LDR'FUNCT'INDEX   =  6,                                             35610000
    LDR'COUNT'INDEX   =  7,                                             35612000
    LDR'PARM1'INDEX   =  8,                                             35614000
    LDR'PARM2'INDEX   =  9,                                             35616000
    LDR'STAT'INDEX    = 10,                                             35618000
$EDIT                                                          <<CACHE>>35620000
    LDR'PREVQ'INDEX   = 11,                                    <<CACHE>>35622000
    LDR'NEXTQ'INDEX   = 12,                                    <<CACHE>>35624000
    LDR'B'HODA'INDEX  = 13,                                    <<CACHE>>35626000
    LDR'B'LODA'INDEX  = 14,                                    <<CACHE>>35628000
    LDR'L'LODA'INDEX  = 15;                                    <<CACHE>>35630000
                                                                        35632000
DEFINE                                                                  35634000
                                                                        35636000
    LDR'FLAGS   =   LDR(LDR'FLAGS'INDEX+LDR'ENTRY'INDEX)#,              35638000
    LDR'L'HODA  =   LDR(LDR'L'HODA'INDEX+LDR'ENTRY'INDEX)#,             35640000
    LDR'UNITLDEV=   LDR(LDR'UNITLDEV'INDEX+LDR'ENTRY'INDEX)#,           35642000
    LDR'CDT     =   LDR(LDR'CDT'INDEX+LDR'ENTRY'INDEX)#,                35644000
    LDR'BUFDST  =   LDR(LDR'BUFDST'INDEX+LDR'ENTRY'INDEX)#,             35646000
    LDR'BUFADR  =   LDR(LDR'BUFADR'INDEX+LDR'ENTRY'INDEX)#,             35648000
    LDR'FUNCT   =   LDR(LDR'FUNCT'INDEX+LDR'ENTRY'INDEX)#,              35650000
    LDR'COUNT   =   LDR(LDR'COUNT'INDEX+LDR'ENTRY'INDEX)#,              35652000
    LDR'PARM1   =   LDR(LDR'PARM1'INDEX+LDR'ENTRY'INDEX)#,              35654000
    LDR'PARM2   =   LDR(LDR'PARM2'INDEX+LDR'ENTRY'INDEX)#,              35656000
$EDIT                                                          <<CACHE>>35658000
    LDR'STATQ   =   LDR(LDR'STAT'INDEX+LDR'ENTRY'INDEX)#,               35660000
    LDR'PREVQ   =   LDR(LDR'PREVQ'INDEX+LDR'ENTRY'INDEX)#,              35662000
    LDR'NEXTQ   =   LDR(LDR'NEXTQ'INDEX+LDR'ENTRY'INDEX)#,              35664000
    LDR'B'HODA  =   LDR(LDR'B'HODA'INDEX+LDR'ENTRY'INDEX)#,             35666000
    LDR'B'LODA  =   LDR(LDR'B'LODA'INDEX+LDR'ENTRY'INDEX)#,             35668000
    LDR'L'LODA  =   LDR(LDR'L'LODA'INDEX+LDR'ENTRY'INDEX)#;             35670000
                                                                        35672000
                                                                        35674000
                                                                        35676000
DEFINE                                                                  35678000
                                                                        35680000
    LDR'DBREL   =   LDR'BUFDST.(0:1)#,    << 1 => IO IS DB REL. >>      35682000
    LDR'UNIT    =   LDR'UNITLDEV.(0:8)#,  << UNIT # ON CONTROLLER >>    35684000
    LDR'LDEV    =   LDR'UNITLDEV.(8:8)#,  << Logical device number>>    35686000
    LDR'PCB     =   LDR'STATQ.(0:8)#,                          <<CACHE>>35688000
    LDR'QFR     =   LDR'STATQ.(8:5)#,                          <<CACHE>>35690000
    LDR'STAT    =   LDR'STATQ.(13:3)#,    << UNIFORM STATUS RET<<CACHE>>35692000
    LDR'FUNC    =   LDR'FUNCT.(8:8)#,     << REQUEST FUNCTION      >>   35694000
    LDR'STRATEGY=   LDR'FUNCT.(0:8)#,     << CACHE STRATEGY TO USE >>   35696000
                                                                        35698000
                                                                        35700000
<< The following 4 bit defines are not used >>                          35702000
    LDR'ABORT   =   LDR'FLAGS.(0:1)#,     << LDR IS TO BE ABORTED >>    35704000
    LDR'MMREQ   =   LDR'FLAGS.(1:1)#,     << SEGMENT XFER REQ. >>       35706000
    LDR'DIAG    =   LDR'FLAGS.(2:1)#,     << A DIAGNOSTIC REQUEST >>    35708000
    LDR'SBUF    =   LDR'FLAGS.(3:1)#,     << REQ USES SBUFS  >>         35710000
                                                                        35712000
    LDR'IOWAKE  =   LDR'FLAGS.(4:1)#,     << WAKE CALLER WHEN DONE >>   35714000
    LDR'BLOCKED =   LDR'FLAGS.(5:1)#,     << REQ WAITED IN ATTACHIO>>   35716000
    LDR'DONE    =   LDR'FLAGS.(6:1)#,     << REQ IS DONE  >>            35718000
    LDR'DO'POST =   LDR'FLAGS.(7:1)#,     << Must  wait for physical >> 35720000
                                          << I/O completion.         >> 35722000
    LDR'SERIAL'POST=LDR'FLAGS.(8:1)#,     << Serialize writes   >>      35724000
    LDR'CDTQUED =   LDR'FLAGS.(9:1)#,     << REQ IS QUEUED ACT ON CDT >>35726000
    LDR'MOVE'DONE = LDR'FLAGS.(10:1)#,    << Cache move performed    >> 35728000
<<  LDR'PFAIL   =   LDR'FLAGS.(11:1)#,  >><< A POWERFAIL OCCURED >>     35730000
    LDR'CUR'REQ =   LDR'FLAGS.(12:1)#,    << 1=active/cur. request  >>  35732000
    LDR'DISABLE =   LDR'FLAGS.(13:1)#,    << REQUEST IS DISABLED  >>    35734000
    LDR'LDREQ   =   LDR'FLAGS.(14:1)#,    << This is a LDR entr<<CACHE>>35736000
    LDR'INLOC   =   LDR'FLAGS.(15:1)#;    << IN LOCALITY >>    <<CACHE>>35738000
                                                                        35740000
LOGICAL SUBROUTINE LDR(OFFSET);                                         35742000
VALUE OFFSET;                                                           35744000
LOGICAL OFFSET;                                                         35746000
                                                                        35748000
LDR:=CORE(DRQTBASE+DOUBLE(OFFSET)+ %1000D);                             35750000
                                                                        35752000
                                                                        35754000
SUBROUTINE PUTL(BIT,COL,L);                                             35756000
VALUE BIT,COL,L;                                                        35758000
LOGICAL BIT;                                                            35760000
INTEGER COL;                                                            35762000
BYTE L;                                                                 35764000
                                                                        35766000
IF BIT<>0 THEN                                                          35768000
BBUF(COL):=L;                                                           35770000
                                                                        35772000
<<******************************************************>>              35774000
<<                                                      >>              35776000
<<                       MAINLINE                       >>              35778000
<<                                                      >>              35780000
<<******************************************************>>              35782000
                                                                        35784000
IF LDR'FIRST OR LINECOUNT>50 THEN                                       35786000
  BEGIN                             << PRINT HEADER >>                  35788000
    NEWPAGE;                                                            35790000
    MOVE BBUF(50):="LOGICAL DISC REQUEST";                              35792000
    PRINTLINE;                                                          35794000
    SKIPLINES(2);                                                       35796000
    MOVE BBUF:="      AMDSIBDPSCMPCDLI";                       <<CACHE>>35798000
    PRINTLINE;                                                          35800000
    MOVE BBUF:="      BMIBOLOSEQVFUIDN";                       <<CACHE>>35802000
    PRINTLINE;                                                          35804000
    MOVE BBUF:="ENTRY TRAFWKNTRDDLRSRL L-HODA LDV  CDT";       <<CACHE>>35806000
    MOVE BBUF(40):="S DSTN   ADDR STR FNC  XFRCT   PARM1";     <<sknew>>35808000
    MOVE BBUF(78):="PARM2 QFR STATUS PCB PREV  NEXT";          <<sknew>>35810000
    MOVE BBUF(110):="B-HODA B-LODA L-LODA";                    <<sknew>>35812000
    PRINTLINE;                                                          35814000
    MOVE BBUF:="----- ---------------- ------ ---  ---";                35816000
    MOVE BBUF(40):="- ----   ---- --- ---  -----   -----";     <<sknew>>35818000
    MOVE BBUF(78):="----- --- ------ --- ----  ----";          <<sknew>>35820000
    MOVE BBUF(110):="------ ------ ------";                    <<sknew>>35822000
    PRINTLINE;                                                          35824000
  END;                                                                  35826000
                                                                        35828000
<<     NOW FORMAT AND PRINT THE ENTRY   >>                              35830000
                                                                        35832000
PUTL(LDR'ABORT,6,"A");                                                  35834000
PUTL(LDR'MMREQ,7,"M");                                                  35836000
PUTL(LDR'DIAG,8,"D");                                                   35838000
PUTL(LDR'SBUF,9,"S");                                                   35840000
PUTL(LDR'IOWAKE,10,"I");                                                35842000
PUTL(LDR'BLOCKED,11,"B");                                               35844000
PUTL(LDR'DONE,12,"D");                                                  35846000
PUTL(LDR'DO'POST,13,"P");                                               35848000
PUTL(LDR'SERIAL'POST,14,"S");                                           35850000
PUTL(LDR'CDTQUED,15,"Q");                                               35852000
PUTL(LDR'MOVE'DONE,16,"M");                                             35854000
PUTL(LDR'CUR'REQ,18,"C");                                               35856000
PUTL(LDR'DISABLE,19,"D");                                               35858000
PUTL(LDR'LDREQ,20,"L");                                                 35860000
PUTL(LDR'INLOC,21,"I");                                        <<CACHE>>35862000
                                                                        35864000
PUTOCTALP(LDR'ENTRY'INDEX,5);                                           35866000
PUTOCTALP(LDR'L'HODA,29);                                               35868000
                                                                        35870000
PUTOCTALP(LDR'LDEV,33);                                                 35872000
PUTOCTALP(LDR'CDT,38);                                                  35874000
IF LDR'BUFDST.(0:1) THEN                                                35876000
  MOVE BBUF(40):="S";                                          <<sknew>>35878000
PUTOCTALP(LDR'BUFDST.(1:15),46);                               <<sknew>>35880000
PUTOCTALP(LDR'BUFADR,53);                                      <<sknew>>35882000
PUTOCTALP(LDR'STRATEGY,57);                                    <<sknew>>35884000
PUTOCTALP(LDR'FUNC,61);                                        <<sknew>>35886000
PUTOCTALP(LDR'COUNT,68);                                       <<sknew>>35888000
PUTOCTALP(LDR'PARM1,76);                                       <<sknew>>35890000
PUTOCTALP(LDR'PARM2,83);                                       <<sknew>>35892000
PUTOCTALP(LDR'QFR,86);                                         <<CACHE>>35894000
CASE LDR'STAT OF                                                        35896000
 BEGIN                                                                  35898000
   MOVE BBUF(88):="WAIT";                                      <<sknew>>35900000
   MOVE BBUF(88):="SUCC";                                      <<sknew>>35902000
   MOVE BBUF(88):="EOF";                                       <<sknew>>35904000
   MOVE BBUF(88):="UNSL";                                      <<sknew>>35906000
   MOVE BBUF(88):="ERR";                                       <<sknew>>35908000
 END;                                                                   35910000
PUTOCTALP(LDR'PCB,98);                                         <<CACHE>>35912000
PUTOCTALP(LDR'PREVQ,103);                                      <<sknew>>35914000
PUTOCTALP(LDR'NEXTQ,109);                                      <<sknew>>35916000
PUTOCTALP(LDR'B'HODA,116);                                     <<sknew>>35918000
PUTOCTALP(LDR'B'LODA,123);                                     <<sknew>>35920000
PUTOCTALP(LDR'L'LODA,130);                                     <<sknew>>35922000
PRINTLINE;                                                              35924000
END;                                                                    35926000
$CONTROL SEGMENT=TABLESIO                                               35928000
PROCEDURE PRINTDRQT;                                           << WBT >>35930000
COMMENT                                                                 35932000
                                                                        35934000
Purpose:                                                                35936000
   This procedure is called to format the Disk request table.           35938000
                                                                        35940000
Input parameters:                                                       35942000
   None.                                                                35944000
                                                                        35946000
Output parameters:                                                      35948000
   None.                                                                35950000
                                                                        35952000
Globals Referenced:                                                     35954000
                                                                        35956000
Globals Altered:                                                        35958000
                                                                        35960000
Data Structures:                                                        35962000
                                                                        35964000
Algorithm:                                                              35966000
                                                                        35968000
;                                                                       35970000
BEGIN                                                          << WBT >>35972000
                                                               << WBT >>35974000
   << LOCAL VARIABLES >>                                       << WBT >>35976000
                                                               << WBT >>35978000
   LOGICAL DRQTBASE, DRQTSIZE, DRQTENTRIES;                    << WBT >>35980000
   LOGICAL NDX, MDX;                                           << WBT >>35982000
   LOGICAL COUNT, WORK;                                        << WBT >>35984000
   LOGICAL LPDTBASE, MAXLDEV, LDN, DITP, CREQP, QHEADP;        << WBT >>35986000
   INTEGER SLEN, ICOUNT;                                       <<06460>>35988000
   EQUATE AVAIL'LIST'SIZE =1600;                               <<06460>>35990000
   ARRAY AVAIL'LIST(1:AVAIL'LIST'SIZE);                        << WBT >>35992000
   ARRAY DRQLIST(1:AVAIL'LIST'SIZE);                           <<06460>>35994000
   LOGICAL OK:=FALSE;                                          <<06460>>35996000
   LOGICAL LDR'FIRST:=TRUE;                                             35998000
                                                               << WBT >>36000000
   EQUATE DRQTDSTNO=%70, DRQTSYSGLOBP=%1031;                   << WBT >>36002000
   EQUATE LPDTDSTNO=%15, LPDTSYSGLOBP=%1010;                   << WBT >>36004000
                                                               << WBT >>36006000
   EQUATE  << WORD DISPLACEMENTS IN DRQT ENTRY >>              << WBT >>36008000
                                                               << WBT >>36010000
   QFLAG       = 0,                                            << WBT >>36012000
   URGCLASS    = 1,                                            << WBT >>36014000
   NEXTAVAILX  = 1,                                            << WBT >>36016000
   LDEVN       = 2,                                            << WBT >>36018000
   PREVAVAILX  = 2,                                            << WBT >>36020000
   MISC        = 3,                                            << WBT >>36022000
   DSTN        = 4,                                            << WBT >>36024000
   ADDR        = 5,                                            << WBT >>36026000
   FUNC        = 6,                                            << WBT >>36028000
   XFERCNT     = 7,                                            << WBT >>36030000
   PAR1        = 8,                                            << WBT >>36032000
   PAR2        = 9,                                            << WBT >>36034000
   STAT        = 10,                                           << WBT >>36036000
   PREVREQP    = 11,                                           << WBT >>36038000
   NEXTREQP    = 12,                                           << WBT >>36040000
   SEGIDENT    = 13,                                           << WBT >>36042000
   SEGDISP     = 14,                                           << WBT >>36044000
   AUXREQFLAGS = 15;                                           << WBT >>36046000
                                                               << WBT >>36048000
   DEFINE                                                      << WBT >>36050000
                                                               << WBT >>36052000
   LDEV     = LDEVN).(8:8 #,                                   << WBT >>36054000
   UNIT     = LDEVN).(0:8 #,                                   << WBT >>36056000
   PCB      = STAT).(0:8 #,                                    << WBT >>36058000
   STATUS   = STAT).(13:3 #,                                   << WBT >>36060000
   QUALIFIER = STAT).(8:5 #,                                   << WBT >>36062000
   MMREQ    = QFLAG).(1:1 #,                                   << WBT >>36064000
   FUNCTION = FUNC).(8:8 #;                                    << WBT >>36066000
                                                               << WBT >>36068000
   EQUATE                                                      << WBT >>36070000
                                                               << WBT >>36072000
   DCURRREQP  = 2,                                             << WBT >>36074000
   DQHEADER   = 8;                                             << WBT >>36076000
                                                               << WBT >>36078000
   EQUATE   << WORD DISPLACEMENTS IN QUEUE HEADER >>           << WBT >>36080000
                                                               << WBT >>36082000
   DISCQHEAD    =  9,                                          << WBT >>36084000
   DISCQTAIL    = 10,                                          << WBT >>36086000
   QHEADERFLAGS = 14;                                          << WBT >>36088000
                                                               << WBT >>36090000
   DEFINE                                                      <<01791>>36092000
                                                               <<01791>>36094000
   NUMENTRIES        = 0).(0:8#,                               <<01791>>36096000
   PRIMARY           = 0).(8:8#,                               <<01791>>36098000
   IMPEDEDPCB        = 1).(0:8#,                               <<01791>>36100000
   ENTRYLENGTH       = 1).(8:8#,                               <<01791>>36102000
   FIRSTAVAILINDX    = 2#,                                     <<01791>>36104000
   LASTAVAILINDX     = 3#,                                     <<01791>>36106000
   MAXINUSE          = 4).(0:8#,                               <<01791>>36108000
   CURRENTINUSE      = 4).(8:8#,                               <<01791>>36110000
   OVERFLOWS         = 5#,                                     <<01791>>36112000
   HOTOTALREQ        = 6#,                                     <<01791>>36114000
   LOTOTALREQ        = 7#,                                     <<01791>>36116000
   DISABLEDQHEAD     = 8#,                                     <<01791>>36118000
   DISABLEDQTAIL     = 9#;                                     <<02012>>36120000
                                                               << WBT >>36122000
   EQUATE                                                      << WBT >>36124000
                                                               << WBT >>36126000
   INUSE    = 0,  << Q TYPES >>                                << WBT >>36128000
   DISABLED = 1,                                               << WBT >>36130000
   AVAIL    = 2,                                               << WBT >>36132000
   SUMMARY  = 3,                                               << WBT >>36134000
   CURRENT  = 4,                                               << WBT >>36136000
   IN'USE'D = 5;                                                        36138000
                                                               << WBT >>36140000
                                                               << WBT >>36142000
   << SUBROUTINES     >>                                       << WBT >>36144000
                                                               << WBT >>36146000
   LOGICAL SUBROUTINE DRQT(NDX, DISPL);                        << WBT >>36148000
   VALUE NDX, DISPL; LOGICAL NDX, DISPL;                       << WBT >>36150000
   BEGIN                                                       << WBT >>36152000
      DRQT:=SYSDB(DRQTBASE+NDX+DISPL);                         << WBT >>36154000
   END;                                                        << WBT >>36156000
                                                               << WBT >>36158000
   LOGICAL SUBROUTINE LPDT(LDN);                               << WBT >>36160000
   VALUE LDN; LOGICAL LDN;                                     << WBT >>36162000
   LPDT:=SYSDB(LPDTBASE+2*LDN);                                << WBT >>36164000
                                                               << WBT >>36166000
   SUBROUTINE PRINTENTRY(NDX, TYPE);                           << WBT >>36168000
   VALUE NDX, TYPE; LOGICAL NDX, TYPE;                         << WBT >>36170000
   BEGIN                                                       << WBT >>36172000
      PUTOCTAL(NDX, 6);  << TABLE INDEX >>                     << WBT >>36174000
      IF NDX/DRQTSIZE>0 AND NDX/DRQTSIZE<=1600 THEN                     36176000
      DRQLIST(NDX/DRQTSIZE):=TRUE;                             <<06460>>36178000
      IF TYPE=CURRENT THEN BBUF(6):="*";                       << WBT >>36180000
      IF (DRQT(NDX,LDEV)=0) THEN                               <<04701>>36182000
          BBUF(10):="0"                                        <<04701>>36184000
      ELSE SLEN:=ASCII(DRQT(NDX,LDEV),10,BBUF(10));            <<04701>>36186000
      PUTOCTALP(DRQT(NDX, UNIT), 17);                          << WBT >>36188000
      PUTOCTALP(DRQT(NDX, PCB), 23);                           << WBT >>36190000
      PUTOCTALP(DRQT(NDX, DSTN).(1:15), 32);                   << WBT >>36192000
      IF DRQT(NDX, DSTN).(0:1)=1 THEN BBUF(25):="S";           << WBT >>36194000
      PUTOCTAL(DRQT(NDX, ADDR), 40);                           << WBT >>36196000
                                                               << WBT >>36198000
      <<FUNCTION>>                                             << WBT >>36200000
      @PBUF:=@BBUF+42;                                         << WBT >>36202000
      WORK:=DRQT(NDX, FUNCTION);                               << WBT >>36204000
      IF WORK>4 THEN PUTNUM(WORK)                              << WBT >>36206000
      ELSE                                                     << WBT >>36208000
      CASE WORK OF                                             << WBT >>36210000
      BEGIN                                                    << WBT >>36212000
         MOVE PBUF:="READ";                                    << WBT >>36214000
         MOVE PBUF:="WRITE";                                   << WBT >>36216000
         MOVE PBUF:="FOPEN";                                   << WBT >>36218000
         MOVE PBUF:="FCLOSE";                                  << WBT >>36220000
         MOVE PBUF:="DCLOSE";                                  << WBT >>36222000
      END;                                                     << WBT >>36224000
                                                               << WBT >>36226000
      PUTOCTALP(DRQT(NDX, XFERCNT), 56);                       << WBT >>36228000
      PUTOCTAL(DRQT(NDX, PAR1), 64);                           << WBT >>36230000
      PUTOCTAL(DRQT(NDX, PAR2), 71);                           << WBT >>36232000
      PUTOCTAL(DRQT(NDX, MISC), 79);                           << WBT >>36234000
                                                               << WBT >>36236000
      << DO SEG IDENT IF APPLICABLE >>                         << WBT >>36238000
                                                               << WBT >>36240000
      IF DRQT(NDX, MMREQ) = 1 THEN                             <<01833>>36242000
      BEGIN                                                    << WBT >>36244000
         WORK:=DRQT(NDX, SEGIDENT);                            << WBT >>36246000
         PUTSEGID(WORK, 83);                                   <<01791>>36248000
         PUTOCTALP(DRQT(NDX, SEGDISP), 99);                    << WBT >>36250000
                                                               << WBT >>36252000
      END;                                                     << WBT >>36254000
                                                               << WBT >>36256000
      PUTOCTALP(DRQT(NDX, URGCLASS), 107);                     << WBT >>36258000
      PUTOCTAL(DRQT(NDX, QFLAG), 115);                         << WBT >>36260000
      PUTOCTAL(DRQT(NDX, AUXREQFLAGS), 122);                   << WBT >>36262000
      PUTOCTALP(DRQT(NDX, STATUS), 126);                       << WBT >>36264000
      PUTOCTALP(DRQT(NDX, QUALIFIER), 129);                    << WBT >>36266000
      BBUF(126):=".";                                          << WBT >>36268000
                                                               << WBT >>36270000
      PRINTLINE;                                               << WBT >>36272000
                                                               << WBT >>36274000
   END;                                                        << WBT >>36276000
                                                               << WBT >>36278000
                                                               << WBT >>36280000
   SUBROUTINE PRINTELEMENTHEAD(ENTRYTYPE);                     <<02012>>36282000
   VALUE ENTRYTYPE; LOGICAL ENTRYTYPE;                         <<02012>>36284000
   BEGIN                                                       << WBT >>36286000
      MOVE BBUF(95):="STATUS: 0.XX -> PENDING";                <<02012>>36288000
      PRINTLINE;                                               <<02012>>36290000
      MOVE BBUF(103):="1.XX -> SUCCESSFUL";                    <<02012>>36292000
      PRINTLINE;                                               <<02012>>36294000
      MOVE BBUF(103):="2.XX -> END OF FILE";                   <<02012>>36296000
      PRINTLINE;                                               <<02012>>36298000
      MOVE BBUF(103):="3.XX -> UNUSUAL CONDITION";             <<02012>>36300000
      PRINTLINE;                                               <<02012>>36302000
      MOVE BBUF(103):="4.XX -> IRRECOVERABLE ERROR";           <<02012>>36304000
      PRINTLINE;                                               <<02012>>36306000
      SKIPLINES(1);                                            << WBT >>36308000
      MOVE BBUF     :=" TABLE";                                << WBT >>36310000
      MOVE BBUF( 25):="S  DST/  OFFSET/";                      << WBT >>36312000
      MOVE BBUF( 51):="XFER";                                  << WBT >>36314000
      MOVE BBUF(109):="- F L A G S -";                         << WBT >>36316000
      PRINTLINE;                                               << WBT >>36318000
                                                               << WBT >>36320000
      MOVE BBUF:=" INDEX  LDEV  UNIT  PCB  S  BANK  ADDRESS   ",2;      36322000
      MOVE    *:="FUNC    CNT     PARM1  PARM2   MISC   ",2;   << WBT >>36324000
      MOVE    *:="SEG IDENT   SEGDSP  URGCLS    MAIN   AUX   ",2;       36326000
      MOVE    *:="STATUS";                                     << WBT >>36328000
      IF ENTRYTYPE=AVAIL THEN MOVE BBUF(102):="NXTAVL";        <<02012>>36330000
      PRINTLINE;                                               << WBT >>36332000
                                                               << WBT >>36334000
      SKIPLINES(1);                                            << WBT >>36336000
                                                               << WBT >>36338000
   END;                                                        << WBT >>36340000
                                                               << WBT >>36342000
                                                               << WBT >>36344000
   SUBROUTINE PRINTHEADER(TYPE);                               << WBT >>36346000
   VALUE TYPE; LOGICAL TYPE;                                   << WBT >>36348000
   BEGIN                                                       << WBT >>36350000
   IF LINECOUNT<LNSPERPG/2-5 AND TYPE<>SUMMARY THEN SKIPLINES(5)        36352000
   ELSE NEWPAGE;                                               << WBT >>36354000
   MOVE BBUF(30):="******** DISC REQUEST TABLE ********  ";    << WBT >>36356000
   IF TYPE = INUSE         THEN MOVE BBUF(68):="(ACTIVE LISTS)"<< WBT >>36358000
   ELSE IF TYPE = DISABLED THEN MOVE BBUF(68):="(DISABLED LIST)"        36360000
   ELSE IF TYPE = AVAIL    THEN MOVE BBUF(68):="(AVAILABLE LIST)"       36362000
   ELSE IF TYPE = IN'USE'D THEN MOVE BBUF(68):="(OTHERS)"               36364000
   ELSE IF TYPE = SUMMARY  THEN MOVE BBUF(68):="(SUMMARY INFO)";        36366000
   PRINTLINE;                                                  << WBT >>36368000
   SKIPLINES(2);                                               << WBT >>36370000
   END;                                                        << WBT >>36372000
                                                               << WBT >>36374000
   << COMPUTE TABLE BASE, SIZE >>                              << WBT >>36376000
                                                               << WBT >>36378000
FOR ICOUNT:=1 UNTIL AVAIL'LIST'SIZE DO                         <<06460>>36380000
  DRQLIST(ICOUNT):=FALSE;                                      <<06460>>36382000
   DRQTBASE:=LOGICAL(VERIFYP(DRQTDSTNO, DRQTSYSGLOBP D));      << WBT >>36384000
   IF <> THEN                                                  << WBT >>36386000
   BEGIN                                                       << WBT >>36388000
      IF DRQTBASE = 0 THEN BEGIN NOFORMT'; RETURN; END;        << WBT >>36390000
      WARNING;                                                 << WBT >>36392000
   END;                                                        << WBT >>36394000
   DRQTBASE:=DRQTBASE-SYSBASE;                                 << WBT >>36396000
   DRQTSIZE:=DRQT(0, ENTRYLENGTH);                             << WBT >>36398000
                                                               << WBT >>36400000
   << PRINT SUMMARY INFORMATION >>                             << WBT >>36402000
                                                               << WBT >>36404000
   PRINTHEADER(SUMMARY);                                       << WBT >>36406000
   INDXARAY(2*DRQTDSTNO):=PAGENO;                              <<01833>>36408000
                                                               << WBT >>36410000
   DRQTENTRIES:=DRQT(0, NUMENTRIES);                           <<01791>>36412000
   MOVE BBUF:="TOTAL ENTRIES IN TABLE:";                       <<01791>>36414000
   PUTNZ(DRQTENTRIES, 40);                                     <<01791>>36416000
   PRINTLINE;                                                  <<01791>>36418000
                                                               <<01791>>36420000
   MOVE BBUF:="ENTRY SIZE:";                                   <<01791>>36422000
   PUTNZ(DRQTSIZE, 40);                                        <<01791>>36424000
   PRINTLINE;                                                  <<01791>>36426000
                                                               <<01791>>36428000
   MOVE BBUF:="ENTRIES IN PRIMARY AREA:";                      <<01791>>36430000
   PUTNZ(DRQT(0, PRIMARY), 40);                                <<01791>>36432000
   PRINTLINE;                                                  <<01791>>36434000
                                                               <<01791>>36436000
   MOVE BBUF:="IMPEDED PROCESS PCB:";                          <<01791>>36438000
   PUTNZ(DRQT(0, IMPEDEDPCB), 40);                             <<01791>>36440000
   PRINTLINE;                                                  <<01791>>36442000
                                                               <<01791>>36444000
   MOVE BBUF:="TABLE INDEX OF FIRST AVAIL ENTRY:";             <<01791>>36446000
   PUTNZ(DRQT(0, FIRSTAVAILINDX), 40);                         <<01791>>36448000
   PRINTLINE;                                                  <<01791>>36450000
                                                               <<01791>>36452000
   MOVE BBUF:="TABLE INDEX OF LAST AVAIL ENTRY:";              <<01791>>36454000
   PUTNZ(DRQT(0, LASTAVAILINDX), 40);                          <<01791>>36456000
   PRINTLINE;                                                  <<01791>>36458000
                                                               <<01791>>36460000
   MOVE BBUF:="MAXIMUM NUMBER OF ENTRIES IN USE:";             <<01791>>36462000
   PUTNZ(DRQT(0, MAXINUSE), 40);                               <<01791>>36464000
   PRINTLINE;                                                  <<01791>>36466000
                                                               <<01791>>36468000
   MOVE BBUF:="CURRENT NUMBER OF ENTRIES IN USE:";             <<01791>>36470000
   PUTNZ(DRQT(0, CURRENTINUSE), 40);                           <<01791>>36472000
   PRINTLINE;                                                  <<01791>>36474000
                                                               <<01791>>36476000
   MOVE BBUF:="OVERFLOWS:";                                    <<01791>>36478000
   PUTNZ(DRQT(0, OVERFLOWS), 40);                              <<01791>>36480000
   PRINTLINE;                                                  <<01791>>36482000
                                                               <<01791>>36484000
   MOVE BBUF:="TOTAL REQUESTS:";                               <<01791>>36486000
   @PBUF:=@BBUF+35;                                            <<01791>>36488000
   TOS:=DRQT(0, HOTOTALREQ); TOS:=DRQT(0, LOTOTALREQ);         <<01791>>36490000
   PUTDNUMP(*);                                                <<01791>>36492000
   PRINTLINE;                                                  <<01791>>36494000
                                                               <<01791>>36496000
   MOVE BBUF:="SYSBASE INDEX OF DISABLED Q HEAD:";             <<01791>>36498000
   PUTNZ(DRQT(0, DISABLEDQHEAD), 40);                          <<01791>>36500000
   PRINTLINE;                                                  <<01791>>36502000
                                                               <<01791>>36504000
   MOVE BBUF:="SYSBASE INDEX OF DISABLED Q TAIL:";             <<01791>>36506000
   PUTNZ(DRQT(0, DISABLEDQTAIL), 40);                          <<01791>>36508000
   PRINTLINE;                                                  <<01791>>36510000
                                                               <<01791>>36512000
                                                               << WBT >>36514000
                                                               << WBT >>36516000
   << FOR EACH LDEV PRINT CURRENT ENTRY, QUEUE >>              << WBT >>36518000
                                                               << WBT >>36520000
   PRINTHEADER(INUSE);                                         << WBT >>36522000
   LPDTBASE:=LOGICAL(VERIFYP(LPDTDSTNO, LPDTSYSGLOBP D));      << WBT >>36524000
   IF <> THEN                                                  << WBT >>36526000
   BEGIN                                                       << WBT >>36528000
      MOVE BBUF:="**** WARNING! LPDT POINTERS, USED TO ACCESS",2;       36530000
      MOVE    *:=" ACTIVE DRQT ELEMENTS, ",2;                  << WBT >>36532000
      IF LPDTBASE=0 THEN                                       << WBT >>36534000
      BEGIN                                                    << WBT >>36536000
         MOVE *:="NOT VALID.  UNABLE TO FORMAT ACTIVE DRQT ",2;<< WBT >>36538000
         MOVE *:="ELEMENTS. ****";                             << WBT >>36540000
         SKIPLINES(1);                                         << WBT >>36542000
         PRINTLINE;                                            << WBT >>36544000
         GO TO DISABLEDQ;                                      << WBT >>36546000
      END                                                      << WBT >>36548000
      ELSE                                                     << WBT >>36550000
      BEGIN                                                    << WBT >>36552000
         MOVE *:="NOT IN AGREEMENT.  ATTEMPTING TO CONTINUE. ****";     36554000
         SKIPLINES(1);                                         << WBT >>36556000
         PRINTLINE;                                            << WBT >>36558000
      END;                                                     << WBT >>36560000
      END;                                                     << WBT >>36562000
   LPDTBASE:=LPDTBASE-SYSBASE;                                 << WBT >>36564000
      MAXLDEV:=LPDT(0).(0:8);                                  << WBT >>36566000
      LDN:=1;                                                  << WBT >>36568000
      WHILE LDN<=MAXLDEV DO                                    << WBT >>36570000
      BEGIN                                                    << WBT >>36572000
         DITP:=LPDT(LDN);                                      << WBT >>36574000
         IF DITP.(0:1)=0 THEN <<REAL DEVICE>>                  << WBT >>36576000
         IF SYSDB(DITP).(0:2)=1 THEN <<DISK>>                  << WBT >>36578000
         BEGIN                                                 << WBT >>36580000
            CREQP:=SYSDB(DITP+DCURRREQP);                      << WBT >>36582000
            IF CREQP<>0 THEN CREQP:=CREQP-DRQTBASE;            << WBT >>36584000
            QHEADP:=SYSDB(DITP+DQHEADER);                      << WBT >>36586000
            IF LINECOUNT<LNSPERPG-12 THEN SKIPLINES(2) ELSE NEWPAGE;    36588000
            MOVE BBUF(10):="LDEV";                             << WBT >>36590000
            SLEN:=ASCII(LDN,10,BBUF(17));                      <<04701>>36592000
            IF CREQP=0 THEN                                    << WBT >>36594000
            BEGIN                                              << WBT >>36596000
               BBUF(18):=":";                                  << WBT >>36598000
               @PBUF:=@BBUF+21;                                << WBT >>36600000
               MOVE PBUF:="NO CURRENT REQUEST, ";              << WBT >>36602000
            END;                                               << WBT >>36604000
            PRINTLINE;                                         << WBT >>36606000
            COUNT:=DRQTENTRIES;                                << WBT >>36608000
            IF CREQP<>0 OR QHEADP<>0 THEN PRINTELEMENTHEAD(NOT AVAIL);  36610000
            IF CREQP<>0 THEN                                   << WBT >>36612000
            BEGIN                                              << WBT >>36614000
               PRINTENTRY(CREQP, CURRENT);                     << WBT >>36616000
               SKIPLINES(1);                                   << WBT >>36618000
            END;                                               << WBT >>36620000
            NDX:=QHEADP;                                       << WBT >>36622000
            WHILE NDX<>0 AND COUNT>0 DO                        << WBT >>36624000
            BEGIN                                              << WBT >>36626000
               IF LINECOUNT>LNSPERPG-1 THEN                    << WBT >>36628000
               BEGIN                                           << WBT >>36630000
                  NEWPAGE;                                     << WBT >>36632000
                  PRINTHEADER(INUSE);                          << WBT >>36634000
                  PRINTELEMENTHEAD(NOT AVAIL);                 <<02012>>36636000
               END;                                            << WBT >>36638000
               NDX:=NDX-DRQTBASE;                              << WBT >>36640000
               PRINTENTRY(NDX, INUSE);                         << WBT >>36642000
               NDX:=DRQT(NDX, NEXTREQP);                       << WBT >>36644000
               COUNT:=COUNT-1;                                 << WBT >>36646000
            END;                                               << WBT >>36648000
         END;                                                  << WBT >>36650000
         LDN:=LDN+1;                                           << WBT >>36652000
      END;                                                     << WBT >>36654000
                                                               << WBT >>36656000
   << PRINT DISABLED QUEUE >>                                  << WBT >>36658000
                                                               << WBT >>36660000
   DISABLEDQ:                                                  << WBT >>36662000
   PRINTHEADER(DISABLED);                                      << WBT >>36664000
   NDX:=DRQT(0, DISCQHEAD);                                    << WBT >>36666000
   IF NDX<>0 THEN                                              << WBT >>36668000
   BEGIN                                                       << WBT >>36670000
      PRINTELEMENTHEAD(NOT AVAIL);                             <<02012>>36672000
   END                                                         << WBT >>36674000
   ELSE                                                        << WBT >>36676000
   BEGIN                                                       << WBT >>36678000
      SKIPLINES(2);                                            << WBT >>36680000
      MOVE BBUF(30):="*****  NO DISABLED QUEUE ELEMENTS *****";<< WBT >>36682000
      PRINTLINE;                                               << WBT >>36684000
   END;                                                        << WBT >>36686000
   COUNT:=0;                                                   << WBT >>36688000
   WHILE NDX<>0 AND COUNT<=DRQTENTRIES DO                      << WBT >>36690000
   BEGIN                                                       << WBT >>36692000
      COUNT:=COUNT+1;                                          << WBT >>36694000
      NDX:=NDX-DRQTBASE;  << CONVERT SYSBASE INDEX INTO TABLE I<< WBT >>36696000
      PRINTENTRY(NDX, DISABLED);                               << WBT >>36698000
      NDX:=DRQT(NDX, NEXTREQP);   << SYSBASE RELATIVE INDEX >> << WBT >>36700000
   END;                                                        << WBT >>36702000
                                                               << WBT >>36704000
                                                               << WBT >>36706000
   << PRINT AVAILABLE ENTRIES >>                               << WBT >>36708000
                                                               << WBT >>36710000
   PRINTHEADER(AVAIL);                                         << WBT >>36712000
   COUNT:=0;                                                   << WBT >>36714000
   NDX:=DRQT(0, FIRSTAVAILINDX);                               << WBT >>36716000
   WHILE NDX<>0 AND COUNT<=DRQTENTRIES DO                      << WBT >>36718000
   BEGIN                                                       << WBT >>36720000
      COUNT:=COUNT+1;                                          << WBT >>36722000
      IF COUNT<=AVAIL'LIST'SIZE THEN AVAIL'LIST(COUNT):=NDX;   << WBT >>36724000
      NDX:=DRQT(NDX, NEXTAVAILX);                              << WBT >>36726000
   END;                                                        << WBT >>36728000
   IF COUNT=0 THEN                                             << WBT >>36730000
   BEGIN                                                       << WBT >>36732000
      SKIPLINES(2);                                            << WBT >>36734000
      MOVE BBUF:="*** NO AVAILABLE DRQT ELEMENTS ***";         << WBT >>36736000
      PRINTLINE;                                               << WBT >>36738000
   END                                                         << WBT >>36740000
   ELSE                                                        << WBT >>36742000
   BEGIN                                                       << WBT >>36744000
      IF COUNT>0 THEN PRINTELEMENTHEAD(AVAIL);                 <<02012>>36746000
      IF COUNT>AVAIL'LIST'SIZE THEN COUNT:=AVAIL'LIST'SIZE;    << WBT >>36748000
      WHILE COUNT>0 DO                                         << WBT >>36750000
      BEGIN                                                    << WBT >>36752000
         PRINTENTRY(AVAIL'LIST(COUNT), AVAIL);                 << WBT >>36754000
         COUNT:=COUNT-1;                                       << WBT >>36756000
         IF COUNT>0 AND LINECOUNT>LNSPERPG-1 THEN              << WBT >>36758000
         BEGIN NEWPAGE; PRINTHEADER(AVAIL);PRINTELEMENTHEAD(AVAIL); END;36760000
      END;                                                     << WBT >>36762000
   END;                                                        << WBT >>36764000
<< NOW IT'S TIME TO PRINT ALL THE DRQ ENTRIES THAT HAVE NOT >> <<06460>>36766000
<< ALREADY BEEN PRINTED--THE ENTRIES THAT ARE "IN USE" BUT  >> <<06460>>36768000
<< DONE ( THEY ARE NO LONGER ATTACHED TO A DIT BUT THEY ARE >> <<06460>>36770000
<< NOT ON THE FREE LIST YET).                               >> <<06460>>36772000
                                                               <<06460>>36774000
                                                               <<06460>>36776000
<< FIRST CHECK IF THERE ARE ANY ENTRIES THAT WEREN'T PRINTED >><<06460>>36778000
                                                               <<06460>>36780000
   FOR ICOUNT:=1 UNTIL INTEGER(DRQTENTRIES) DO                 <<06460>>36782000
     IF NOT DRQLIST(ICOUNT) THEN OK:=TRUE;                     <<06460>>36784000
   IF OK THEN                                                  <<06460>>36786000
                                                               <<06460>>36788000
<< PRINT THE REMAINING ENTRIES                               >><<06460>>36790000
                                                               <<06460>>36792000
    BEGIN                                                      <<06460>>36794000
      NEWPAGE;                                                 <<06460>>36796000
      PRINTHEADER(IN'USE'D);                                   <<06460>>36798000
      PRINTELEMENTHEAD(IN'USE'D);                              <<06460>>36800000
      FOR ICOUNT:=1 UNTIL INTEGER(DRQTENTRIES) DO              <<06460>>36802000
         IF NOT DRQLIST(ICOUNT)   AND                          << MCW >>36804000
           NOT(DRQT(LOGICAL(ICOUNT)*DRQTSIZE,0).(14:1)) THEN   << MCW >>36806000
            PRINTENTRY(LOGICAL(ICOUNT)*DRQTSIZE,IN'USE'D);     <<06460>>36808000
    END;                                                       <<06460>>36810000
   FOR ICOUNT:=1 UNTIL INTEGER(DRQTENTRIES) DO                          36812000
      IF NOT DRQLIST(ICOUNT) THEN                                       36814000
        BEGIN                                                           36816000
         PRINT'LDR(LOGICAL(ICOUNT)*DRQTSIZE,DOUBLE(DRQTBASE),LDR'FIRST);36818000
         LDR'FIRST:=FALSE;                                              36820000
        END;                                                            36822000
                                                                        36824000
                                                               << WBT >>36826000
                                                               << WBT >>36828000
END;                                                           << WBT >>36830000
                                                                        36832000
$PAGE "PRINTILT : Format the interrupt linkage table"                   36834000
$CONTROL SEGMENT=TABLESIO                                               36836000
PROCEDURE PRINTILT;                                                     36838000
COMMENT                                                                 36840000
                                                                        36842000
Purpose:                                                                36844000
      This procedure will format and print the interrupt linkage        36846000
      table.                                                            36848000
                                                                        36850000
Input parameters:                                                       36852000
      None.                                                             36854000
                                                                        36856000
Output parameters:                                                      36858000
      None.                                                             36860000
                                                                        36862000
Globals Referenced:                                                     36864000
                                                                        36866000
Globals Altered:                                                        36868000
                                                                        36870000
Data Structures:                                                        36872000
                                                                        36874000
Algorithm:                                                              36876000
                                                                        36878000
;                                                                       36880000
      BEGIN                                                             36882000
         DOUBLE LOCILT,LOCSIOP,SCRATCH;                                 36884000
         DOUBLE LPDTBASE:=%1010D,LPDTPTR,DITPTR,SCRATCHA;               36886000
         INTEGER HIENTNO,WORKA,IDX;                                     36888000
          INTEGER WORK2,DRTNO,SIOSIZE,HIGHDRT,                <<<01.02>>36890000
         INDX,INDX2;                                                    36892000
         LOGICAL WORK1,WORK3;                                 <<<01.02>>36894000
         INTEGER MINDRT;                                       <<03013>>36896000
         LOGICAL VALID'DRTS;                                   <<03013>>36898000
         LOGICAL WORKP;             <<CURRENT SIO POINTER>>    <<00221>>36900000
         IF (SERIES'33'THRU'55) OR (NEW'ILT'FORMAT) THEN       <<01296>>36902000
           BEGIN                                               <<01296>>36904000
             PRINTNEWILT;                                      <<02012>>36906000
             RETURN;                                           <<01296>>36908000
           END;                                                <<01296>>36910000
         NEWPAGE;                                                       36912000
         INDXARAY(%52*2):=PAGENO;                                       36914000
         MOVE DBUFFER(23)                                               36916000
         :="******    INTERRUPT LINKAGE TABLE    ******";               36918000
         PRINTLINE;                                                     36920000
         SKIPLINES(3);                                                  36922000
                <<DETERMINE MINDRT AND HIGHDRT>>               <<03013>>36924000
                <<INSURE DRT'TABLE'ADDRESS IS INITIALIZED>>    <<03013>>36926000
                <<IF DRTBANK,DRTADDR ARE BAD WE WILL>>         <<03013>>36928000
                <<ATTEMPT TO USE DEFAULT BANK-0 ADDR-0>>       <<03013>>36930000
                <<FOR ALL CPU EXCEPT ICF-55, AND>>             <<03013>>36932000
                <<PRINT WARNING TO THAT EFFECT>>               <<03013>>36934000
                                                               <<03013>>36936000
         TEST'DRT'INFO(MINDRT,HIGHDRT,VALID'DRTS,0);           <<03013>>36938000
                                                               <<03013>>36940000
         IF NOT VALID'DRTS   <<FATAL ICF55 DRT PROBLEM>>       <<03013>>36942000
         THEN GO BAD'DRTS;                                     <<03013>>36944000
         MOVE BBUF(35):="ILT       SIOP";                               36946000
         PRINTLINE;                                                     36948000
         MOVE BBUF:="DRT  SHARED    CHANNEL             SYS DB";        36950000
         MOVE BBUF(45):="SYS DB    SIOP";                               36952000
MOVE BBUF(76):="UNIT EXTRCT  ABS         SIO";                <<<01.02>>36954000
         PRINTLINE;                                                     36956000
         MOVE BBUF:="NO   SEL CHAN  QUEUE               REL ADDR";      36958000
         MOVE BBUF(45)                                                  36960000
:="REL ADDR  SIZE      ";                                     <<<01.02>>36962000
MOVE BBUF(65)                                                 <<<01.02>>36964000
:="Q#  DITP0  INSTRUCTION  ADDRESS    PROGRAM";               <<<01.02>>36966000
         PRINTLINE;                                                     36968000
                                                               <<03013>>36970000
         FOR DRTNO:=MINDRT UNTIL HIGHDRT DO                    <<03013>>36972000
         BEGIN                                                 <<03013>>36974000
            IF INTEGER( GETDRT(DRTNO,0)) = -1                  <<03013>>36976000
            THEN GO BUMP;                                      <<03013>>36978000
                                                               <<03013>>36980000
             <<NOW GET ILT ADDR OUT OF DRT DBI LOCATION>>      <<03013>>36982000
            LOCILT := DOUBLE( GETDRT(DRTNO,2));                <<03013>>36984000
                                                               <<03013>>36986000
            WORK1:=CORE(LOCILT);                               <<03013>>36988000
            IF INTEGER(WORK1).(7:9)<> DRTNO THEN GO BUMP;      <<03013>>36990000
            @PBUF:=@BBUF;                                               36992000
            ASCII(DRTNO,10,PBUF);                                       36994000
            IF WORK1.(0:1)=1 THEN MOVE BBUF(5):="YES"                   36996000
            ELSE MOVE BBUF(5):="NO";     <<SHARED SEL CHAN>>            36998000
            WORK2:=WORK1.(1:6);                                         37000000
            @PBUF:=@BBUF+14;                                            37002000
            PUTNUMP(WORK2);                                             37004000
            @PBUF:=@BBUF+35;                                            37006000
            PUTDNUMP(LOCILT-%1000D);<<ILT SYSDB REL ADR>>      <<01.02>>37008000
            WORK1:=CORE(LOCILT+1D);                                     37010000
            WORK3:=WORK1+%1000;                               <<<01.02>>37012000
            @PBUF:=@BBUF+45;                                            37014000
            PUTNUM(WORK1);     <<SIOP SYSDB REL ADDR>>                  37016000
            WORK1:=CORE(LOCILT+2D);                                     37018000
            @PBUF:=@BBUF+79;                                            37020000
            PUTNUM(WORK1);     <<UNIT EXTRACT INST>>                    37022000
            WORK1:=CORE(LOCILT+3D);                                     37024000
            WORK2:=WORK1.(0:8);                                         37026000
            SIOSIZE:=WORK2;                                             37028000
            @PBUF:=@BBUF+53;                                            37030000
            PUTNUMP(WORK2);     <<IO PGM AREA SIZE>>                    37032000
            WORK2:=WORK1.(8:8);                                         37034000
            @PBUF:=@BBUF+61;                                            37036000
            PUTNUMP(WORK2);     <<CNTRLER Q#>>                          37038000
            WORK1:=CORE(LOCILT+4D);                                     37040000
            @PBUF:=@BBUF+69;                                            37042000
            PUTNUM(WORK1);     <<DIT PNTR UNIT 0>>                      37044000
            TOS:=0;                                                     37046000
            TOS:=CORE(LOCILT+1D)+%1000;                                 37048000
            LOCSIOP:=TOS;                                               37050000
            IF LOCSIOP < 1D THEN GO BUMP;                               37052000
            INDX2:=0;                                                   37054000
            WORKP:= GETDRT(DRTNO,0) - 2; <<LAST SIO>>          <<03013>>37056000
            DO                                                          37058000
            BEGIN                                                       37060000
               IF WORK3=WORKP THEN BBUF(87):="*";              <<00221>>37062000
               @PBUF:=@BBUF+89;                               <<<01.02>>37064000
               PUTNUM(WORK3);  <<ABS ADR OF SIO PROG>>        <<<01.02>>37066000
               WORK3:=WORK3+2; <<INCREMENT ABS ADR>>          <<<01.02>>37068000
               WORK1:=CORE(LOCSIOP+DOUBLE(INDX2));                      37070000
               @PBUF:=@BBUF+97;                                <<00221>>37072000
               PUTNUM(WORK1);     <<SIO PROGRAM>>                       37074000
               @PBUF:=@BBUF+113;                               <<00221>>37076000
               CASE * WORK1.(1:3) OF                           <<00221>>37078000
                BEGIN        <<NAME SIO ORDERS>>               <<00221>>37080000
                 BEGIN       <<0 ORDER>>                       <<00221>>37082000
                  MOVE PBUF:="JUMP";                           <<00221>>37084000
                  IF WORK1.(4:1)=1 THEN                        <<00221>>37086000
                    MOVE PBUF(5):="(CONDITIONAL)";             <<00221>>37088000
                 END;        <<0>>                             <<00221>>37090000
                 BEGIN       <<1 ORDER>>                       <<00221>>37092000
                  IF WORK1.(4:1) = 0 THEN                      <<00221>>37094000
                    MOVE PBUF:="RETURN RESIDUE"                <<00221>>37096000
                   ELSE                                        <<00221>>37098000
                    MOVE PBUF:="SET BANK";                     <<00221>>37100000
                 END;        <<1>>                             <<00221>>37102000
                 MOVE PBUF:="INTERRUPT";  <<2>>                <<00221>>37104000
                 BEGIN       <<3 ORDER>>                       <<00221>>37106000
                  MOVE PBUF:="END";                            <<00221>>37108000
                  @PBUF:=@PBUF+4;                              <<00221>>37110000
                  IF WORK1.(4:1)=0 THEN                        <<00221>>37112000
                    MOVE PBUF:="(NO INTERRUPT)"                <<00221>>37114000
                   ELSE                                        <<00221>>37116000
                    MOVE PBUF:="WITH INTERRUPT";               <<00221>>37118000
                 END;        <<3 ORDER>>                       <<00221>>37120000
                 MOVE PBUF:="CONTROL";   <<4>>                 <<00221>>37122000
                 MOVE PBUF:="SENSE";     <<5>>                 <<00221>>37124000
                 MOVE PBUF:="WRITE";     <<6>>                 <<00221>>37126000
                 MOVE PBUF:="READ";      <<7>>                 <<00221>>37128000
                END;                   <<**NAME SIO ORDER>>    <<00221>>37130000
               INDX2:=INDX2+1;                                          37132000
               @PBUF:=@BBUF+105;                               <<00221>>37134000
               WORK1:=CORE(LOCSIOP+DOUBLE(INDX2));                      37136000
               PUTNUM(WORK1);                                           37138000
               PRINTLINE;                                               37140000
               INDX2:=INDX2+1;                                          37142000
            END UNTIL INDX2 >= SIOSIZE;                                 37144000
            PRINTLINE;                                                  37146000
BUMP:                                                                   37148000
         END;                                                           37150000
BAD'DRTS:  <<EXIT HERE QUICK IF DRTS ARE BAD>>                 <<03013>>37152000
      END;                                                              37154000
                                                                        37156000
$PAGE "PRINTNEWILT : Print the new interrupt linkage table"             37158000
$CONTROL SEGMENT=TABLESIO                                               37160000
PROCEDURE PRINTNEWILT;                                         <<02012>>37162000
COMMENT                                                                 37164000
                                                                        37166000
Purpose:                                                                37168000
   This procedure will format and print the interrupt linkage           37170000
   table.  Both ii/iii and hpib ilt's are handled                       37172000
                                                                        37174000
Input parameters:                                                       37176000
   None.                                                                37178000
                                                                        37180000
Output parameters:                                                      37182000
   None.                                                                37184000
                                                                        37186000
Globals Referenced:                                                     37188000
                                                                        37190000
Globals Altered:                                                        37192000
                                                                        37194000
Data Structures:                                                        37196000
                                                                        37198000
Algorithm:                                                              37200000
                                                                        37202000
;                                                                       37204000
      BEGIN                                                    <<00.01>>37206000
         DOUBLE LOCILT,LOCSIOP,LOCSTAP,SCRATCH;                <<00.01>>37208000
         DOUBLE LPDTBASE:=%1010D,LPDTPTR,DITPTR,SCRATCHA;      <<00.01>>37210000
          LOGICAL VALID'DRTS;                                  <<03013>>37212000
         INTEGER DBI'OFFSET;                                   <<03013>>37214000
         INTEGER HIENTNO,WORKA,IDX;                            <<00.01>>37216000
          INTEGER WORK2,DRTNO,SIOSIZE,HIGHDRT,LOWDRT,DBIADR,   <<01300>>37218000
         LSTAT,INDEX, CPVAX, STATX, INSTRLEN, COUNT;           <<02012>>37220000
         LOGICAL WORK1,WORK3, IOT;                             <<02012>>37222000
   SUBROUTINE ILTHEAD;                                         <<02012>>37224000
   BEGIN                                                       <<02012>>37226000
      MOVE BBUF(35):="ILT      WAIT   SIOP";                   <<02012>>37228000
      PRINTLINE;                                               <<02012>>37230000
      MOVE BBUF:=                                              <<02012>>37232000
      "DRT  SHARED    CHANNEL             SYS DB";             <<02012>>37234000
      MOVE BBUF(44):="PROG   SYS DB    SIOP";                  <<02012>>37236000
      MOVE BBUF(82):="UNIT EXTRCT  ABS         SIO";           <<02012>>37238000
      PRINTLINE;                                               <<02012>>37240000
      MOVE BBUF:=                                              <<02012>>37242000
      "NO   SEL CHAN  QUEUE     CPVA      REL ADDR";           <<02012>>37244000
      MOVE BBUF(44)                                            <<02012>>37246000
      :="STATUS REL ADDR  SIZE      ";                         <<02012>>37248000
      MOVE BBUF(71)                                            <<02012>>37250000
      :="Q#  DITP0  INSTRUCTION  ADDRESS     PROGRAM";         <<02012>>37252000
      PRINTLINE;                                               <<02012>>37254000
      SKIPLINES(1);                                            <<02012>>37256000
   END; << ILTHEAD >>                                          <<02012>>37258000
   SUBROUTINE DOCPVASTAT;                                      <<02012>>37260000
   BEGIN                                                       <<02012>>37262000
      IF CPVAX<4 THEN                                          <<02012>>37264000
      BEGIN                                                    <<02012>>37266000
         @PBUF:=@BBUF+23;                                      <<02012>>37268000
         PUTNUM(CORE(LOCILT+DOUBLE(CPVAX)));                   <<02012>>37270000
         CPVAX:=CPVAX+1;                                       <<02012>>37272000
      END;                                                     <<02012>>37274000
      IF STATX<LSTAT THEN                                      <<02012>>37276000
      BEGIN                                                    <<02012>>37278000
         @PBUF:=@BBUF+44;                                      <<02012>>37280000
         PUTNUM(CORE(LOCSTAP+DOUBLE(STATX)));                  <<02012>>37282000
         STATX:=STATX+1;                                       <<02012>>37284000
      END;                                                     <<02012>>37286000
   END; <<DOCPVASTAT>>                                         <<02012>>37288000
         NEWPAGE;                                              <<00.01>>37290000
         INDXARAY(%52*2):=PAGENO;                              <<00.01>>37292000
         MOVE DBUFFER(23)                                      <<00.01>>37294000
         :="******    INTERRUPT LINKAGE TABLE    ******";      <<00.01>>37296000
         PRINTLINE;                                            <<03013>>37298000
                                                               <<03013>>37300000
         SKIPLINES(3);                                         <<03013>>37302000
                <<DETERMINE LOWDRT AND HIGHDRT>>               <<03013>>37304000
                <<INSURE DRT'TABLE'ADDRESS IS INITIALIZED>>    <<03013>>37306000
                <<IF DRTBANK,DRTADDR ARE BAD WE WILL>>         <<03013>>37308000
                <<ATTEMPT TO USE DEFAULT BANK-0 ADDR-0>>       <<03013>>37310000
                <<FOR ALL CPU EXCEPT ICF-55, AND>>             <<03013>>37312000
                <<PRINT WARNING TO THAT EFFECT>>               <<03013>>37314000
                                                               <<03013>>37316000
         TEST'DRT'INFO(LOWDRT,HIGHDRT,VALID'DRTS,0);           <<03013>>37318000
                                                               <<03013>>37320000
         IF NOT VALID'DRTS   <<FATAL ICF55 DRT PROBLEM>>       <<03013>>37322000
         THEN GO BAD'DRTS;    <<CAN NOT PRINT TABLES>>         <<03013>>37324000
                                                               <<03013>>37326000
                                                               <<03013>>37328000
ILTHEAD;                                                       <<02012>>37330000
         DRTNO:=3;                                             <<00.01>>37332000
                                                               <<03013>>37334000
                                                               <<03013>>37336000
                                                               <<03013>>37338000
         FOR DRTNO:=LOWDRT UNTIL HIGHDRT DO                    <<03013>>37340000
         BEGIN                                                 <<03013>>37342000
            IF INTEGER ( GETDRT(DRTNO,0)) = -1 THEN GO BUMP;   <<03013>>37344000
                                                               <<03013>>37346000
            DBI'OFFSET := ( IF SERIES'33'THRU'55               <<03013>>37348000
                            THEN 1 ELSE 2 );                   <<03013>>37350000
                                                               <<03013>>37352000
            << NOW GET THE ILT ADR. OUT OF THE DRT DBI LOC >>  <<03013>>37354000
            LOCILT := DOUBLE(GETDRT(DRTNO,DBI'OFFSET));        <<03013>>37356000
            WORK1:=CORE(LOCILT+7D);                            <<03013>>37358000
            IF INTEGER(WORK1).(7:9)<> DRTNO THEN GO BUMP;      <<03013>>37360000
            @PBUF:=@BBUF;                                      <<00.01>>37362000
            ASCII(DRTNO,10,PBUF);                              <<00.01>>37364000
            IF WORK1.(0:1)=1 THEN MOVE BBUF(5):="YES"          <<00.01>>37366000
            ELSE MOVE BBUF(5):="NO";     <<SHARED SEL CHAN>>   <<00.01>>37368000
            WORK2:=WORK1.(1:6);                                <<00.01>>37370000
            @PBUF:=@BBUF+14;                                   <<00.01>>37372000
            PUTNUMP(WORK2);                                    <<00.01>>37374000
            @PBUF :=  @BBUF+24;                                <<00.01>>37376000
            PUTNUM(CORE(LOCILT+7D));                           <<00.01>>37378000
            @PBUF:=@BBUF+35;                                   <<00.01>>37380000
            PUTDNUMP(LOCILT-%1000D);<<ILT SYSDB REL ADR>>      <<00.01>>37382000
            WORK1:=CORE(LOCILT+8D);                            <<00.01>>37384000
            WORK3:=WORK1+%1000;                                <<00.01>>37386000
            @PBUF:=@BBUF+51;                                   <<00.01>>37388000
            PUTNUM(WORK1);     <<SIOP SYSDB REL ADDR>>         <<00.01>>37390000
            WORK1:=CORE(LOCILT+10D);                           <<00.01>>37392000
            @PBUF:=@BBUF+85;                                   <<00.01>>37394000
            PUTNUM(WORK1);     <<UNIT EXTRACT INST>>           <<00.01>>37396000
            WORK1:=CORE(LOCILT+12D);                           <<00.01>>37398000
            WORK2:=(WORK1.(0:8))*2;                            <<HM.02>>37400000
            SIOSIZE:=WORK2;                                    <<00.01>>37402000
            @PBUF:=@BBUF+59;                                   <<00.01>>37404000
            PUTNUMP(WORK2);     <<IO PGM AREA SIZE>>           <<00.01>>37406000
            WORK2:=WORK1.(8:8);                                <<00.01>>37408000
            @PBUF:=@BBUF+67;                                   <<00.01>>37410000
            PUTNUMP(WORK2);     <<CNTRLER Q#>>                 <<00.01>>37412000
            WORK1:=CORE(LOCILT+14D);                           <<00.01>>37414000
            @PBUF:=@BBUF+75;                                   <<00.01>>37416000
            PUTNUM(WORK1);     <<DIT PNTR UNIT 0>>             <<00.01>>37418000
      IOT:=SYSDB(WORK1+3).(0:2);  <<IO TYPE 0->II/III, 1->HPIB><<02012>>37420000
            TOS:=0;                                            <<00.01>>37422000
            TOS:=CORE(LOCILT+8D)+%1000;                        <<00.01>>37424000
            LOCSIOP:=TOS;                                      <<00.01>>37426000
            IF LOCSIOP < 1D THEN GO BUMP;                      <<00.01>>37428000
            TOS := 0;                                          <<00.01>>37430000
            IF (TOS:=CORE(LOCILT+9D))<>0 THEN                  <<00.01>>37432000
              BEGIN <<CALCULATE ADDRESS OF STATUS POINTER>>    <<00.01>>37434000
              ASSEMBLE(DUP);                                   <<00.01>>37436000
              TOS := CORE(LOCILT+8D);                          <<00.01>>37438000
              ASSEMBLE(XCH,LSUB);                              <<00.01>>37440000
              END                                              <<00.01>>37442000
            ELSE TOS := 0;                                     <<00.01>>37444000
            LSTAT := TOS;  <<LENGTH OF STATUS AREA>>           <<00.01>>37446000
            LOCSTAP := TOS + %1000D;                           <<02832>>37448000
            INDEX:=CPVAX:=STATX:=0;                            <<02012>>37450000
            DO                                                 <<00.01>>37452000
            BEGIN                                              <<00.01>>37454000
         << PARSE OPCODE >>                                    <<02012>>37456000
         WORK1:=CORE(LOCSIOP+DOUBLE(INDEX));                   <<02012>>37458000
         @PBUF:=@BBUF+122;                                     <<02012>>37460000
         IF (NOT SERIES'33'THRU'55) AND (IOT=0) THEN           <<02012>>37462000
         BEGIN  << SERIES II/III >>                            <<02012>>37464000
            CASE WORK1.(1:3) OF                                <<02012>>37466000
            BEGIN                                              <<02012>>37468000
               BEGIN <<0>>                                     <<02012>>37470000
                  IF WORK1.(4:1)=0 THEN MOVE PBUF:="JUMP"      <<02012>>37472000
                  ELSE MOVE PBUF:="JMP (COND)";                <<02012>>37474000
               END;  <<0>>                                     <<02012>>37476000
               BEGIN <<1>>                                     <<02012>>37478000
                  IF WORK1.(4:1)=0 THEN MOVE PBUF:="RTN RES"   <<02012>>37480000
                  ELSE MOVE PBUF:="SET BANK";                  <<02012>>37482000
               END;                                            <<02012>>37484000
               MOVE PBUF:="INTERRUPT"; <<2>>                   <<02012>>37486000
               BEGIN <<3>>                                     <<02012>>37488000
                  IF WORK1.(4:1)=0 THEN MOVE PBUF:="END NO INT"<<02012>>37490000
                  ELSE MOVE PBUF:="END/INT";                   <<02012>>37492000
               END;  <<3>>                                     <<02012>>37494000
               MOVE PBUF:="CONTROL"; <<4>>                     <<02012>>37496000
               MOVE PBUF:="SENSE";   <<5>>                     <<02012>>37498000
               MOVE PBUF:="WRITE";   <<6>>                     <<02012>>37500000
               MOVE PBUF:="READ";    <<7>>                     <<02012>>37502000
            END; <<CASE>>                                      <<02012>>37504000
            INSTRLEN:=2; << ALL II/III INSTRS ARE 2 WDS >>     <<02012>>37506000
         END   <<SERIES II/III>>                               <<02012>>37508000
         ELSE                                                  <<02012>>37510000
         BEGIN <<HPIB I/O PGM>>                                <<02012>>37512000
            IF WORK1.(0:8)<=17 THEN                            <<02012>>37514000
            CASE WORK1.(0:8) OF                                <<02012>>37516000
            BEGIN                                              <<02012>>37518000
               BEGIN  <<0>>                                    <<02012>>37520000
                  MOVE PBUF:="REL JMP";                        <<02012>>37522000
                  INSTRLEN:=2;                                 <<02012>>37524000
               END;   <<0>>                                    <<02012>>37526000
               BEGIN  <<1>>                                    <<02012>>37528000
                  MOVE PBUF:="INTERRUPT";                      <<02012>>37530000
                  INSTRLEN:=2;                                 <<02012>>37532000
               END;   <<1>>                                    <<02012>>37534000
               BEGIN  <<2>>                                    <<02012>>37536000
                  MOVE PBUF:="WAIT";                           <<02012>>37538000
                  INSTRLEN:=2;                                 <<02012>>37540000
               END;   <<2>>                                    <<02012>>37542000
               BEGIN  <<3>>                                    <<02012>>37544000
                  MOVE PBUF:="READ";                           <<02012>>37546000
                  INSTRLEN:=5;                                 <<02012>>37548000
               END;   <<3>>                                    <<02012>>37550000
               BEGIN  <<4>>                                    <<02012>>37552000
                  MOVE PBUF:="WRITE";                          <<02012>>37554000
                  INSTRLEN:=5;                                 <<02012>>37556000
               END;   <<4>>                                    <<02012>>37558000
               BEGIN  <<5>>                                    <<02012>>37560000
                  MOVE PBUF:="DEV SP JMP";                     <<02012>>37562000
                  INSTRLEN:=WORK1.(8:8)+3;                     <<02012>>37564000
               END;   <<5>>                                    <<02012>>37566000
               BEGIN  <<6>>                                    <<02012>>37568000
                  MOVE PBUF:="IDENTIFY";                       <<02012>>37570000
                  INSTRLEN:=2;                                 <<02012>>37572000
               END;   <<6>>                                    <<02012>>37574000
               BEGIN  <<7>>                                    <<02012>>37576000
                  MOVE PBUF:="READ CTRL";                      <<02012>>37578000
                  INSTRLEN:=5;                                 <<02012>>37580000
               END;   <<7>>                                    <<02012>>37582000
               BEGIN  <<8>>                                    <<02012>>37584000
                  MOVE PBUF:="WRT CTRL";                       <<02012>>37586000
                  INSTRLEN:=5;                                 <<02012>>37588000
               END;   <<8>>                                    <<02012>>37590000
               BEGIN  <<9>>                                    <<02012>>37592000
                  MOVE PBUF:="CLEAR";                          <<02012>>37594000
                  INSTRLEN:=2;                                 <<02012>>37596000
               END;   <<9>>                                    <<02012>>37598000
               BEGIN  <<10>>                                   <<02012>>37600000
                  MOVE PBUF:="RD-MOD-WRT";                     <<02012>>37602000
                  INSTRLEN:=2;                                 <<02012>>37604000
               END;   <<10>>                                   <<02012>>37606000
               BEGIN  <<11>>                                   <<02012>>37608000
                  MOVE PBUF:="READ REG";                       <<02012>>37610000
                  INSTRLEN:=2;                                 <<02012>>37612000
               END;   <<11>>                                   <<02012>>37614000
               BEGIN  <<12>>                                   <<02012>>37616000
                  MOVE PBUF:="WRT REG";                        <<02012>>37618000
                  INSTRLEN:=2;                                 <<02012>>37620000
               END;   <<12>>                                   <<02012>>37622000
               BEGIN  <<13>>                                   <<02012>>37624000
                  MOVE PBUF:="CMD-HPIB";                       <<02012>>37626000
                  INSTRLEN:=5;                                 <<02012>>37628000
               END;   <<13>>                                   <<02012>>37630000
               BEGIN  <<14>>                                   <<02012>>37632000
                  MOVE PBUF:="EXEC DMA";                       <<02012>>37634000
                  INSTRLEN:=5;                                 <<02012>>37636000
               END;   <<14>>                                   <<02012>>37638000
               BEGIN  <<15>>                                   <<02012>>37640000
                  MOVE PBUF:="WRT REL IM";                     <<02012>>37642000
                  INSTRLEN:=2;                                 <<02012>>37644000
               END;   <<15>>                                   <<02012>>37646000
               BEGIN  <<16>>                                   <<02012>>37648000
                  MOVE PBUF:="CRC INIT";                       <<02012>>37650000
                  INSTRLEN:=2;                                 <<02012>>37652000
               END;   <<16>>                                   <<02012>>37654000
               BEGIN  <<17>>                                   <<02012>>37656000
                  MOVE PBUF:="CRC COMP";                       <<02012>>37658000
                  INSTRLEN:=2;                                 <<02012>>37660000
               END;   <<17>>                                   <<02012>>37662000
            END   <<CASE>>                                     <<02012>>37664000
            ELSE INSTRLEN:=1;                                  <<02012>>37666000
         END; <<HPIB>>                                         <<02012>>37668000
      COUNT:=0; << NOW DUMP THE I/O PGM >>                     <<02012>>37670000
      WHILE COUNT<INSTRLEN DO                                  <<02012>>37672000
      BEGIN                                                    <<02012>>37674000
         @PBUF:=@BBUF+95;                                      <<02012>>37676000
         PUTNUM(WORK3+LOGICAL(INDEX));  <<ADDRESS>>            <<02067>>37678000
         @PBUF:=@BBUF+107;                                     <<02012>>37680000
         PUTNUM(CORE(LOCSIOP+DOUBLE(INDEX)));                  <<02012>>37682000
         INDEX:=INDEX+1;                                       <<02012>>37684000
         COUNT:=COUNT+1;                                       <<02012>>37686000
         IF COUNT<INSTRLEN THEN                                <<02012>>37688000
         BEGIN                                                 <<02012>>37690000
            @PBUF:=@BBUF+115;                                  <<02012>>37692000
            PUTNUM(CORE(LOCSIOP+DOUBLE(INDEX)));               <<02012>>37694000
            COUNT:=COUNT+1;                                    <<02012>>37696000
            INDEX:=INDEX+1;                                    <<02012>>37698000
         END;                                                  <<02012>>37700000
         DOCPVASTAT;                                           <<02012>>37702000
         PRINTLINE;                                            <<02012>>37704000
         IF LINECOUNT>=LNSPERPG-1 THEN                         <<02012>>37706000
         BEGIN NEWPAGE; ILTHEAD; END;                          <<02012>>37708000
      END;                                                     <<02012>>37710000
            END UNTIL INDEX >= SIOSIZE;                        <<02012>>37712000
            IF LINECOUNT<LNSPERPG THEN PRINTLINE;              <<02012>>37714000
BUMP:                                                          <<00.01>>37716000
         END;                                                  <<00.01>>37718000
BAD'DRTS:  <<QUICK EXIT IF DRTS ARE BAD>>                      <<03013>>37720000
                                                               <<03013>>37722000
END;                                                           <<03013>>37724000
                                                                        37726000
$PAGE "PRINTLPDT : Format the logical to physical device table"         37728000
$CONTROL SEGMENT=TABLESIO                                               37730000
PROCEDURE PRINTLPDT;                                                    37732000
      BEGIN                                                             37734000
COMMENT                                                                 37736000
                                                                        37738000
Purpose:                                                                37740000
   This procedure will format and print the logical physical            37742000
   device table.                                                        37744000
                                                                        37746000
Input parameters:                                                       37748000
   None.                                                                37750000
                                                                        37752000
Output parameters:                                                      37754000
   None.                                                                37756000
                                                                        37758000
Globals Referenced:                                                     37760000
                                                                        37762000
Globals Altered:                                                        37764000
                                                                        37766000
Data Structures:                                                        37768000
                                                                        37770000
Algorithm:                                                              37772000
                                                                        37774000
;                                                                       37776000
          INTEGER ENTSIZE,HIENTNO,INDX;                       <<<01.02>>37778000
          LOGICAL WORK1,WORK2;                                <<<01.02>>37780000
         DOUBLE LPDTBASE:=%1010D,LPDTPTR;                               37782000
         NEWPAGE;                                                       37784000
         INDXARAY(%15*2):=PAGENO;                                       37786000
         MOVE DBUFFER(23):=                                             37788000
         "******    LOGICAL PHYSICAL - DEVICE TABLE    ******";         37790000
         PRINTLINE;                                                     37792000
         SKIPLINES(3);                                                  37794000
         LPDTPTR:=VERIFYP(%15,%1010D);                         <<01.02>>37796000
         IF <> THEN                                            <<01.02>>37798000
         IF LPDTPTR <> 0D THEN WARNING ELSE                    <<01.02>>37800000
         BEGIN                                                 <<01.02>>37802000
            NOFORMT';                                          <<00221>>37804000
            GO ENDA;                                           <<01.02>>37806000
         END;                                                  <<01.02>>37808000
         MOVE BBUF(11):="SYSDB REL";                                    37810000
         MOVE BBUF(115):="DEVICE";                                      37812000
         PRINTLINE;                                                     37814000
         MOVE BBUF:="LOGICAL    DIT        DEVICE            EOF";      37816000
         MOVE BBUF(96):="ACCEPT     ACCEPT  RECOGNIT";                  37818000
         PRINTLINE;                                                     37820000
         MOVE BBUF:="DEV NO     POINTER   SUBTYPE";                     37822000
         MOVE BBUF(40):="CONDITION           BREAK     CNTRL Y";        37824000
         MOVE BBUF(78):="DUPLIC  INTERACT  JOBS/SESS  DATA";            37826000
         MOVE BBUF(115):="STATE      LOGOFF";                           37828000
         PRINTLINE;                                                     37830000
         SKIPLINES(1);                                                  37832000
         IF LPDTPTR < 1D THEN GO ENDA;                                  37834000
         WORK1:=CORE(LPDTPTR);                                          37836000
         HIENTNO:=WORK1.(0:8);                                          37838000
         ENTSIZE:=WORK1.(8:8);                                          37840000
         IF ENTSIZE<>2 THEN                                             37842000
         BEGIN                                                          37844000
            MOVE DBUFFER(23):="INVALID ENTRY SIZE";                     37846000
            PRINTLINE;                                                  37848000
            GO ENDA;                                                    37850000
         END;                                                           37852000
         FOR INDX:=1 UNTIL HIENTNO DO                                   37854000
         BEGIN                                                          37856000
            WORK1:=CORE(LPDTPTR+DOUBLE(INDX*2));                        37858000
            IF WORK1=0 THEN GO BUMPA;                                   37860000
             IF WORK1 = %100000 THEN GO BUMPA;                 <<00221>>37862000
            @PBUF:=@BBUF;                                               37864000
            ASCII(INDX,10,PBUF);     <<LOGICAL DEV NUMBER>>             37866000
            @PBUF:=@BBUF+11;                                            37868000
            PUTNUM(WORK1);     <<SYS DB REL DIT>>                       37870000
            WORK2:=CORE(LPDTPTR+DOUBLE(INDX*2+1));                      37872000
            WORK1:=WORK2.(12:4);                                        37874000
            @PBUF:=@BBUF+22;                                            37876000
            ASCII(WORK1,10,PBUF);     <<DEV SUBTYPE>>                   37878000
            CASE * WORK2.(8:2) OF  <<EOF CONDITION>>                    37880000
            BEGIN                                                       37882000
               BEGIN     <<0>>                                          37884000
                  MOVE BBUF(40):="NO EOF";                              37886000
               END;                                                     37888000
               BEGIN     <<1>>                                          37890000
                  MOVE BBUF(40):="HARDWARE EOF";                        37892000
               END;                                                     37894000
               BEGIN     <<2>>                                          37896000
                  MOVE BBUF(40):=":JOB,DATA,EOD,EOJ";                   37898000
               END;                                                     37900000
               BEGIN     <<3>>                                          37902000
                  MOVE BBUF(40):="COLON";                               37904000
               END;                                                     37906000
          END;                                                          37908000
          IF WORK2.(10:1)=1 THEN                                        37910000
          MOVE BBUF(58):="DETECTED";     <<BREAK>>                      37912000
          IF WORK2.(4:1)=1 THEN                                         37914000
          MOVE BBUF(68):="DETECTED";     <<CNTRL Y>>                    37916000
          IF WORK2.(5:1)=1 THEN MOVE BBUF(78):="YES"                    37918000
          ELSE MOVE BBUF(78):="NO";     <<DUPLICATIVE>>                 37920000
          IF WORK2.(6:1)=1 THEN MOVE BBUF(86):="YES"                    37922000
          ELSE MOVE BBUF(86):="NO";     <<INTERACTIVE>>                 37924000
          IF WORK2.(2:1)= 1 THEN MOVE BBUF(96):="YES"                   37926000
          ELSE MOVE BBUF(96):="NO";     <<ACCEPT JOBS/SESSIONS>>        37928000
          IF WORK2.(3:1)=1 THEN MOVE BBUF(107):="YES"                   37930000
          ELSE MOVE BBUF(107):="NO";     <<ACCEPT DATA>>                37932000
          CASE * WORK2.(0:2) OF     <<DEV RECOG STATE>>                 37934000
          BEGIN                                                         37936000
             BEGIN     <<0>>                                            37938000
                MOVE BBUF(115):="NOT OWNED";                            37940000
             END;                                                       37942000
             BEGIN     <<1>>                                            37944000
                MOVE BBUF(115):="OWNED";                                37946000
             END;                                                       37948000
             BEGIN     <<2>>                                            37950000
                MOVE BBUF(115):="SERV REQ";                             37952000
             END;                                                       37954000
             BEGIN     <<3>>                                            37956000
                MOVE BBUF(115):="SERV GNTD";                            37958000
             END;                                                       37960000
          END;                                                          37962000
          IF WORK2.(11:1)=1 THEN MOVE BBUF(126):="YES"                  37964000
          ELSE MOVE BBUF(126):="NO";     <<LOGOFF>>                     37966000
          PRINTLINE;                                                    37968000
BUMPA:                                                                  37970000
        END;                                                            37972000
ENDA:                                                                   37974000
      END;                                                              37976000
                                                                        37978000
$PAGE "PRINTIOQ : Format the I/O queues "                               37980000
$CONTROL SEGMENT=TABLESIO                                               37982000
PROCEDURE PRINTIOQ;                                                     37984000
      BEGIN                                                             37986000
COMMENT                                                                 37988000
                                                                        37990000
Purpose:                                                                37992000
   This procedure will format and print the ioq. the table will         37994000
   be printed from tail to head free list first and then the            37996000
   in use list.                                                         37998000
                                                                        38000000
Input parameters:                                                       38002000
   None.                                                                38004000
                                                                        38006000
Output parameters:                                                      38008000
   None.                                                                38010000
                                                                        38012000
Globals Referenced:                                                     38014000
                                                                        38016000
Globals Altered:                                                        38018000
                                                                        38020000
Data Structures:                                                        38022000
                                                                        38024000
Algorithm:                                                              38026000
                                                                        38028000
;                                                                       38030000
          INTEGER CINUSE,ESIZE,INDX,IX1,TOTELE;                <<01057>>38032000
          LOGICAL WORK1,WORK2,TAPTR,HDPTR,WORK3;               <<01057>>38034000
         DOUBLE IOQPTR:=%1005D,LOCIOQ,TOTREQ,WORKD;                     38036000
          DOUBLE WORKX;     <<ADDRESS OF IOQ ENTRY TO PRINT>>  <<00221>>38038000
          LOGICAL ARRAY LWORKX(*)=WORKX;                       <<00221>>38040000
                                                               <<00221>>38042000
SUBROUTINE PIOQNTRY(NTRY);                                     <<00221>>38044000
   VALUE NTRY;                                                 <<00221>>38046000
   DOUBLE NTRY;   <<CORE ADDRESS OF WORD 0>>                   <<00221>>38048000
   BEGIN                                                       <<00221>>38050000
     @PBUF:=@BBUF+11;                                          <<00221>>38052000
     ASCII(CORE(NTRY+2D).(8:8),-10,PBUF);  <<LDEV>>            <<00221>>38054000
     @PBUF:=@BBUF+12;                                          <<00221>>38056000
     PUTNUMP(CORE(NTRY+10D).(0:8));        <<PCB>>             <<00221>>38058000
     WORK1:=CORE(NTRY);                                        <<00221>>38060000
     WORK2:=CORE(NTRY+4D);                                     <<00221>>38062000
     IF WORK1.(3:1) = 1 THEN                                   <<00221>>38064000
      BEGIN          <<SYSTEM BUFFER>>                         <<00221>>38066000
       MOVE BBUF(20):="SBUF";                                  <<00221>>38068000
       @PBUF:=@BBUF+24;                                        <<00221>>38070000
       PUTNUMP(WORK2);          <<DST INDEX>>                  <<00221>>38072000
       @PBUF:=@BBUF+32;                                        <<00221>>38074000
       PUTNUMP(CORE(NTRY+5D));  <<BUFFER OFFSET>>              <<00221>>38076000
      END            <<SYSTEM BUFFER>>                         <<00221>>38078000
     ELSE                                                      <<00221>>38080000
      IF WORK1.(1:1) = 1 THEN                                  <<00221>>38082000
       BEGIN         <<MAM REQUEST>>                           <<00221>>38084000
        MOVE BBUF(21):="ABS";                                  <<00221>>38086000
        @PBUF:=@BBUF+24;                                       <<00221>>38088000
        PUTNUMP(WORK2.(12:4));    <<BANK>>                     <<00221>>38090000
        @PBUF:=@BBUF+32;                                       <<00221>>38092000
        PUTNUM(CORE(NTRY+5D));    <<OFFSET>>                   <<00221>>38094000
       END                                                     <<00221>>38096000
      ELSE                                                     <<00221>>38098000
       BEGIN         <<DATA SEGMENT>>                          <<00221>>38100000
        IF WORK2.(0:1) = 1 THEN                                <<00221>>38102000
          MOVE BBUF(21):="+DB"                                 <<00221>>38104000
         ELSE                                                  <<00221>>38106000
          MOVE BBUF(21):="SEG";                                <<00221>>38108000
        @PBUF:=@BBUF+24;                                       <<00221>>38110000
        PUTNUMP(WORK2.(4:12));    <<DST NUMBER>>               <<00221>>38112000
        @PBUF:=@BBUF+32;                                       <<00221>>38114000
        PUTNUMP(CORE(NTRY+5D));                                <<00221>>38116000
       END;          <<DATA SEGMENT>>                          <<00221>>38118000
                                                               <<00221>>38120000
     @PBUF:=@BBUF+41;       <<I/O FUNCTION>>                   <<00221>>38122000
     WORK3:=CORE(NTRY+6D).(8:8);                               <<00221>>38124000
     IF WORK3 > 4 THEN PUTNUM(WORK3)                           <<00221>>38126000
      ELSE                                                     <<00221>>38128000
       CASE WORK3 OF                                           <<00221>>38130000
        BEGIN               <<NAME FUNCTION>>                  <<00221>>38132000
         MOVE PBUF:="READ";                                    <<00221>>38134000
         MOVE PBUF:="WRITE";                                   <<00221>>38136000
         MOVE PBUF:="FOPEN";                                   <<00221>>38138000
         MOVE PBUF:="FCLOSE";                                  <<00221>>38140000
         MOVE PBUF:="DCLOSE";  <<DEVICE CLOSE>>                <<00221>>38142000
        END;                <<NAME FUNCTION>>                  <<00221>>38144000
                                                               <<00221>>38146000
     @PBUF:=@BBUF+47;       <<COUNT>>                          <<00221>>38148000
     WORK3:=CORE(NTRY+7D);  <<LOAD COUNT>>                     <<00221>>38150000
     IF WORK3.(0:1) = 1 THEN                                   <<00221>>38152000
      IF WORK3 = %100000 THEN                                  <<01057>>38154000
       BEGIN                   << PUT OUT UNSPECIFIED COUNT >> <<01057>>38156000
        PUTNUMP(WORK3);                                        <<01057>>38158000
        PBUF(-1) := " ";                                       <<01057>>38160000
       END                                                     <<01057>>38162000
      ELSE                                                     <<01057>>38164000
       BEGIN                   << PUT OUT BYTE COUNT >>        <<01057>>38166000
        PUTNUMP(-WORK3);                                       <<01057>>38168000
        PBUF(-1) := "B";                                       <<01057>>38170000
       END                                                     <<01057>>38172000
     ELSE                                                      <<00221>>38174000
      BEGIN                 <<WORD COUNT>>                     <<00221>>38176000
       PUTNUMP(WORK3);      <<OUTPUT COUNT>>                   <<00221>>38178000
       PBUF(-1):="W";       <<WORDS>>                          <<00221>>38180000
      END;                  <<WORD COUNT>>                     <<00221>>38182000
                                                               <<00221>>38184000
     @PBUF:=@BBUF+56;                                          <<00221>>38186000
     PUTNUM(CORE(NTRY+8D)); <<PARM 1>>                         <<00221>>38188000
     @PBUF:=@BBUF+64;                                          <<00221>>38190000
     PUTNUM(CORE(NTRY+9D)); <<PARM 2>>                         <<00221>>38192000
     @PBUF:=@BBUF+72;                                          <<00221>>38194000
     PUTNUM(CORE(NTRY+3D)); <<MISC>>                           <<00221>>38196000
                                                               <<00221>>38198000
     WORK2:=0;       <<COUNTER>>                               <<00221>>38200000
     @PBUF:=@BBUF+80;<<LOCATION>>                              <<00221>>38202000
     PUTNUM(WORK1);         <<FLAGS>>                          <<00221>>38204000
     DO                                                        <<00221>>38206000
      BEGIN                 <<NAME BITS>>                      <<00221>>38208000
       IF WORK1.(0:1) = 1 THEN                                 <<00221>>38210000
        BEGIN               <<BIT IS ON>>                      <<00221>>38212000
        CASE WORK2 OF                                          <<00221>>38214000
         BEGIN              <<NAME CONSISTENT BITS>>           <<00221>>38216000
          MOVE PBUF:="AB";  <<0  ABORT>>                       <<00221>>38218000
          MOVE PBUF:="SP";  <<1  SPECIAL>>                     <<00221>>38220000
          MOVE PBUF:="DI";  <<2  DIAGNOSTIC>>                  <<00221>>38222000
          MOVE PBUF:="SB";  <<3  SYSTEM BUFFER>>               <<00221>>38224000
          MOVE PBUF:="IW";  <<4  IOWAKE>>                      <<00221>>38226000
          MOVE PBUF:="BL";  <<5  BLOCKED FOR IO>>              <<00221>>38228000
          MOVE PBUF:="CO";  <<6  COMPLETED>>                   <<00221>>38230000
          MOVE PBUF:="DF";  <<7  SEG IS FROZEN>>               <<00221>>38232000
          MOVE PBUF:="ME";  <<8  MAM ERROR>>                   <<00221>>38234000
         END;                                                  <<00221>>38236000
        @PBUF:=@PBUF+3;                                        <<00221>>38238000
        END;                <<BIT IS ON>>                      <<00221>>38240000
       WORK1:=WORK1&LSL(1); <<SHIFT NEXT BIT>>                 <<00221>>38242000
      END  UNTIL  (WORK2:=WORK2+1) > 8;  <<TILL ALL>>          <<00221>>38244000
                                                               <<00221>>38246000
     @PBUF:=@BBUF+126;      <<STATUS AT END>>                  <<00221>>38248000
     WORK1:=CORE(NTRY+10D); <<STATUS WORD>>                    <<00221>>38250000
     PUTNUMP(WORK1.(8:8));  <<PUT OUT STATUS>>                 <<00221>>38252000
     @PBUF:=@BBUF+97;  PBUF(-1):=" ";                          <<00221>>38254000
     CASE WORK1.(13:3) OF                                      <<00221>>38256000
      BEGIN                 <<MAJOR BREAK>>                    <<00221>>38258000
       BEGIN                <<0 - PENDING>>                    <<00221>>38260000
        MOVE PBUF:="PENDING";                                  <<00221>>38262000
        CASE WORK1.(8:5) OF                                    <<00221>>38264000
         BEGIN                                                 <<00221>>38266000
          ;         <<0>>                                      <<00221>>38268000
          MOVE PBUF:="WAITING FOR COMPLETION";                 <<00221>>38270000
          MOVE PBUF:="DOING ERROR RECOVERY";                   <<00221>>38272000
          MOVE PBUF:="NOT READY WAIT";                         <<00221>>38274000
          MOVE PBUF:="NO WRITE RING WAIT";                     <<00221>>38276000
          MOVE PBUF:="NEW PAPER TAPE WAIT";                    <<00221>>38278000
         END;                                                  <<00221>>38280000
       END;                 <<0 - PENDING>>                    <<00221>>38282000
                                                               <<00221>>38284000
       BEGIN                <<1 - SUCCESSFUL>>                 <<00221>>38286000
        MOVE PBUF:="SUCCESSFUL";                               <<00221>>38288000
        CASE WORK1.(8:5) OF                                    <<00221>>38290000
         BEGIN                                                 <<00221>>38292000
          MOVE PBUF:="NORMAL COMPLETION";                      <<00221>>38294000
          MOVE PBUF:="TERMINATED BY SPECIAL CHAR";             <<00221>>38296000
          MOVE PBUF:="RETRY FOR SUCCESS REQUIRED";             <<00221>>38298000
          MOVE PBUF:="LOW TAPE OR EOT AFTER WRITE";            <<00221>>38300000
         END;                                                  <<00221>>38302000
       END;                 <<1 - SUCCESSFUL>>                 <<00221>>38304000
                                                               <<00221>>38306000
       BEGIN                <<2 - END OF FILE>>                <<00221>>38308000
        MOVE PBUF:="END OF FILE";                              <<00221>>38310000
        CASE WORK1.(8:5) OF                                    <<00221>>38312000
         BEGIN                                                 <<00221>>38314000
          ;    <<0>>                                           <<00221>>38316000
          MOVE PBUF:="PHYSICAL END OF FILE";                   <<00221>>38318000
          MOVE PBUF:=":DATA    END OF FILE";                   <<00221>>38320000
          MOVE PBUF:=":EOD     END OF FILE";                   <<00221>>38322000
          MOVE PBUF:=":HELLO   END OF FILE";                   <<00221>>38324000
          MOVE PBUF:=":BYE     END OF FILE";                   <<00221>>38326000
          MOVE PBUF:=":JOB     END OF FILE";                   <<00221>>38328000
          MOVE PBUF:=":EOJ     END OF FILE";                   <<00221>>38330000
         END;                                                  <<00221>>38332000
       END;                 <<2 - END OF FILE>>                <<00221>>38334000
                                                               <<00221>>38336000
       BEGIN                <<3 - UNUSUAL CONDITION>>          <<00221>>38338000
        MOVE PBUF:="UNUSUAL CONDITION";                        <<00221>>38340000
        CASE WORK1.(8:5) OF                                    <<00221>>38342000
         BEGIN                                                 <<00221>>38344000
          ;    <<0>>                                           <<00221>>38346000
          MOVE PBUF:="TERMINAL PARITY ERROR";                  <<00221>>38348000
          MOVE PBUF:="TERMINAL READ TIMED OUT";                <<00221>>38350000
          MOVE PBUF:="I/O ABORTED EXTERNALLY";                 <<00221>>38352000
          MOVE PBUF:="DATA LOST          ";                    <<00221>>38354000
          MOVE PBUF:="DATA SET NOT READY OR NOT ONLINE";       <<00221>>38356000
          MOVE PBUF:="ABORTED BECAUSE OF POWER FAIL";          <<00221>>38358000
          MOVE PBUF:="BOT AND BSR, BSF REQUEST";               <<00221>>38360000
          MOVE PBUF:="TAPE RUNAWAY       ";                    <<00221>>38362000
          MOVE PBUF:="EOT AND WRITE REQUEST";                  <<00221>>38364000
          MOVE PBUF:="NO WRITE RING AFTER ASKED OPERATOR";     <<00221>>38366000
          MOVE PBUF:="END OF TAPE (PAPER TAPE LOW)";           <<00221>>38368000
          MOVE PBUF:="PLOTTER LIMIT SWITCH REACHED";           <<00221>>38370000
          MOVE PBUF:="ENABLE SUBSYS BREAK, NO CNTL Y PIN";     <<00221>>38372000
          MOVE PBUF:="READ TIME RETURNED OVERFLOW";            <<00221>>38374000
          MOVE PBUF:="BREAK STOPPED READ ";                    <<00221>>38376000
          MOVE PBUF:="WRITE AND NO CARD IN WRITE STATION";     <<00221>>38378000
         END;                                                  <<00221>>38380000
       END;                 <<3 - UNUSUAL CONDITION>>          <<00221>>38382000
                                                               <<00221>>38384000
       BEGIN                <<4 - IRRECOVERABLE ERROR>>        <<00221>>38386000
        MOVE PBUF:="IRRECOVERABLE ERROR";                      <<00221>>38388000
        CASE WORK1.(8:5) OF                                    <<00221>>38390000
         BEGIN                                                 <<00221>>38392000
          MOVE PBUF:="INVALID REQUEST    ";                    <<00221>>38394000
          MOVE PBUF:="TRANSMISSION ERROR ";                    <<00221>>38396000
          MOVE PBUF:="I/O TIMED OUT      ";                    <<00221>>38398000
          MOVE PBUF:="TIMING ERROR ON TRANSFER";               <<00221>>38400000
          MOVE PBUF:="SIO FAILURE        ";                    <<00221>>38402000
          MOVE PBUF:="UNIT FAILURE       ";                    <<00221>>38404000
          MOVE PBUF:="INVALID DISC ADDRESS";                   <<00221>>38406000
          MOVE PBUF:="TAPE PARITY ERROR  ";                    <<00221>>38408000
          MOVE PBUF:="PAPER TAPE TAPE ERROR";                  <<00221>>38410000
          MOVE PBUF:="SYSTEM ERROR       ";                    <<00221>>38412000
          MOVE PBUF:="INVALID SBUF INDEX ";                    <<00221>>38414000
         END;                                                  <<00221>>38416000
       END;                 <<4 - IRRECOVERABLE ERROR>>        <<00221>>38418000
      END;                  <<MAJOR BREAK>>                    <<00221>>38420000
   END;          <<SUBROUTINE PIOQNTRY>>                       <<00221>>38422000
         NEWPAGE;                                                       38424000
         INDXARAY(%13*2):=PAGENO;                                       38426000
         MOVE DBUFFER(23):=                                             38428000
         "******    I/O REQUEST TABLE (FREE LIST)    ******";           38430000
         PRINTLINE;                                                     38432000
         SKIPLINES(3);                                                  38434000
         LOCIOQ:=VERIFYP(%13,%1005D);                          <<01.02>>38436000
         IF <> THEN                                            <<01.02>>38438000
         IF LOCIOQ <> 0D THEN WARNING ELSE                     <<01.02>>38440000
         BEGIN                                                 <<01.02>>38442000
            NOFORMT';                                          <<00221>>38444000
            GO BAILOUT;                                        <<01.02>>38446000
         END;                                                  <<01.02>>38448000
         WORK1:=CORE(LOCIOQ);                                           38450000
         WORK2:=WORK1.(0:8);                                            38452000
         MOVE BBUF:="ELEMENTS IN TABLE";                                38454000
         @PBUF:=@BBUF+40;                                               38456000
        ASCII(WORK2,10,PBUF);  <<ELEMENTS IN TABLE>>                    38458000
         TOTELE:=WORK2;                                                 38460000
         MOVE BBUF(52):="MAXIMUM NUMBER OF ELEMENTS IN USE";            38462000
         WORK2:=CORE(LOCIOQ+4D);                                        38464000
         WORK3:=WORK2.(0:8);                                            38466000
         @PBUF:=@BBUF+92;                                               38468000
         ASCII(WORK3,10,PBUF);  <<MAX# ELEMENTS IN USE>>                38470000
         PRINTLINE;                                                     38472000
         MOVE BBUF:="ELEMENTS IN PRIMARY AREA";                         38474000
         WORK3:=WORK1.(8:8);                                            38476000
         @PBUF:=@BBUF+40;                                               38478000
         ASCII(WORK3,10,PBUF);  <<ELEMENTS IN PRIMARY>>                 38480000
         MOVE BBUF(52):="CURRENT NUMBER OF ELEMENTS IN USE";            38482000
         CINUSE:=WORK2.(8:8);                                           38484000
         @PBUF:=@BBUF+92;                                               38486000
         ASCII(CINUSE,10,PBUF); <<CURRENT# INUSE>>                      38488000
         PRINTLINE;                                                     38490000
         MOVE BBUF:="SIZE OF EACH ELEMENT";                             38492000
         WORK1:=CORE(LOCIOQ+1D);                                        38494000
         ESIZE:=WORK1.(8:8);                                            38496000
         @PBUF:=@BBUF+40;                                               38498000
         ASCII(ESIZE,10,PBUF);  <<ENTRY SIZE>>                          38500000
         MOVE BBUF(52):="OVERFLOWS";                                    38502000
         WORK2:=CORE(LOCIOQ+5D);                                        38504000
         @PBUF:=@BBUF+92;                                               38506000
         ASCII(WORK2,10,PBUF);  <<OVERFLOWS>>                           38508000
         PRINTLINE;                                                     38510000
         MOVE BBUF:="INDEX OF FIRST FREE ELEMENT";                      38512000
         MOVE BBUF(52):="TOTAL REQUEST";                                38514000
         HDPTR:=CORE(LOCIOQ+2D);                                        38516000
         TAPTR:=CORE(LOCIOQ+3D);                                        38518000
         @PBUF:=@BBUF+36;                                               38520000
         PUTNUMP(HDPTR);     <<HEAD POINTER>>                           38522000
         TOS:=CORE(LOCIOQ+6D);                                          38524000
         TOS:=CORE(LOCIOQ+7D);                                          38526000
         TOTREQ:=TOS;                                                   38528000
         @PBUF:=@BBUF+87;                                               38530000
         PUTDNUMP(TOTREQ);    <<TOTAL REQUEST>>                         38532000
         PRINTLINE;                                                     38534000
         MOVE BBUF:="INDEX TO LAST FREE ELEMENT";                       38536000
         @PBUF:=@BBUF+36;                                               38538000
         PUTNUMP(TAPTR);     <<TAIL POINTER>>                           38540000
         PRINTLINE;                                                     38542000
         SKIPLINES(1);                                                  38544000
         IF ESIZE <> 11 THEN                                   <<01.02>>38546000
         BEGIN                                                 <<01.02>>38548000
            MOVE DBUFFER:=                                     <<01.02>>38550000
"****WARNING! ENTRY SIZE <> 11 WORDS. CONTINUING****";         <<01.02>>38552000
            PRINTLINE;                                         <<01.02>>38554000
            SKIPLINES(1);                                      <<01.02>>38556000
            ESIZE:=11;                                         <<01.02>>38558000
          END;                                                 <<01.02>>38560000
         PIOQHEAD;                                                      38562000
         IOQIX:=0;     << ZERO OUT SCORECARD FOR FREE LIST>>            38564000
         MOVE IOQIX(1):=IOQIX,(255);                                    38566000
         FOR INDX:=1 UNTIL (TOTELE-CINUSE) DO                           38568000
         BEGIN                                                          38570000
            IF LINECOUNT = LNSPERPG THEN PIOQHEAD;             <<00221>>38572000
            @PBUF:=@BBUF;                                               38574000
            PUTNUMP(TAPTR);     <<TABLE INDEX>>                         38576000
            @PBUF:=@BBUF+9;                                             38578000
            TOS:=0;                                                     38580000
            TOS:=TAPTR;                                                 38582000
            WORKD:=TOS;                                                 38584000
            PIOQNTRY(LOCIOQ+WORKD);  <<PRINT THE ENTRY>>       <<00221>>38586000
            PRINTLINE;                                                  38588000
            IOQIX((TAPTR-8)/11):=TAPTR;   <<MARK FREE IN INDEX>>        38590000
            IF TAPTR=HDPTR THEN GO QUIT;                                38592000
            IX1:=9;                                                     38594000
            WHILE IX1<= (TOTELE*ESIZE+9) DO                             38596000
            BEGIN                                                       38598000
               WORK1:=CORE(LOCIOQ+DOUBLE(IX1));                         38600000
               IF WORK1 =TAPTR THEN GO BOUT                             38602000
               ELSE IX1:=IX1+ESIZE;                                     38604000
            END;                                                        38606000
BOUT:                                                                   38608000
            IF WORK1=TAPTR THEN                                         38610000
            TAPTR:=IX1-1                                                38612000
            ELSE                                                        38614000
            BEGIN                                                       38616000
               MOVE BBUF:="BROKEN IOQ LINK";                            38618000
               PRINTLINE;                                               38620000
               GO BAILOUT;                                              38622000
            END;                                                        38624000
         END;                                                           38626000
QUIT:                                                                   38628000
         SKIPLINES(2);                                                  38630000
         IF LINECOUNT > LNSPERPG-18 THEN NEWPAGE;              <<00221>>38632000
         MOVE DBUFFER(23):=                                             38634000
         "******    I/O REQUEST TABLE (IN USE LIST)    ******";         38636000
         PRINTLINE;                                                     38638000
         SKIPLINES(3);                                                  38640000
         PIOQHEAD;                                                      38642000
         FOR IX1:=0 UNTIL (TOTELE-1) DO                                 38644000
         BEGIN                                                          38646000
            IF IOQIX(IX1) =0 THEN                                       38648000
            BEGIN                                                       38650000
               TAPTR:=(IX1*ESIZE+8);                                    38652000
               TOS:=0;                                                  38654000
            IF TAPTR.(0:1)=1 THEN TOS:=TAPTR+%1000             <<01.02>>38656000
            ELSE TOS:=TAPTR;                                   <<01.02>>38658000
               WORKD:=TOS;                                              38660000
            IF LINECOUNT = LNSPERPG THEN PIOQHEAD;             <<00221>>38662000
            @PBUF:=@BBUF;                                               38664000
            WORKX:=LOCIOQ+WORKD;    <<ADDRESS OF ENTRY>>       <<00221>>38666000
            PUTNUMP(LWORKX(1)-%1000);  <<ADDRESS OF ENTRY>>    <<00221>>38668000
            PIOQNTRY(WORKX);         <<PRINT THE ENTRY>>       <<00221>>38670000
            PRINTLINE;                                                  38672000
         END;                                                           38674000
       END;                                                             38676000
BAILOUT:                                                                38678000
     END;                                                               38680000
                                                                        38682000
$PAGE "PIOQHEAD :  Print an I/O queue header."                          38684000
$CONTROL SEGMENT=TABLESIO                                               38686000
PROCEDURE PIOQHEAD;                                                     38688000
      BEGIN                                                             38690000
COMMENT                                                                 38692000
                                                                        38694000
Purpose:                                                                38696000
   This procedure is  called to format the head of an I/O queue.        38698000
                                                                        38700000
Input parameters:                                                       38702000
   None.                                                                38704000
                                                                        38706000
Output parameters:                                                      38708000
   None.                                                                38710000
                                                                        38712000
Globals Referenced:                                                     38714000
                                                                        38716000
Globals Altered:                                                        38718000
                                                                        38720000
Data Structures:                                                        38722000
                                                                        38724000
Algorithm:                                                              38726000
                                                                        38728000
;                                                                       38730000
         IF LINECOUNT > LNSPERPG-10 THEN NEWPAGE;              <<00221>>38732000
         MOVE BBUF:="TABLE  LOGICAL      ADDR        BUFFER";  <<00221>>38734000
         PRINTLINE;                                            <<00221>>38736000
         MOVE BBUF:="INDEX  DEVICE  PCB   REL   DST  ADDRESS"; <<00221>>38738000
         MOVE BBUF(41):="FUNC   COUNT   PARM1   PARM2   MISC"; <<00221>>38740000
         MOVE BBUF(80):="FLAGS..........  STATUS DESCRIPTION"; <<00221>>38742000
         MOVE BBUF(126):="STATUS";                             <<00221>>38744000
         PRINTLINE;                                                     38746000
         SKIPLINES(1);                                                  38748000
      END;                                                              38750000
$PAGE "PRINT TERMINAL BUFFERS"                                 <<01.3A>>38752000
                                                                        38754000
$PAGE "PRINTSBUF : Format the system buffers"                           38756000
$CONTROL SEGMENT=TABLESIO                                               38758000
PROCEDURE PRINTSBUF;                                                    38760000
COMMENT                                                                 38762000
                                                                        38764000
Purpose:                                                                38766000
      This procedure will print the header to the system buffers        38768000
      analyze the information and trace the links from head to          38770000
      tail.                                                             38772000
                                                                        38774000
Input parameters:                                                       38776000
                                                                        38778000
Output parameters:                                                      38780000
                                                                        38782000
Globals Referenced:                                                     38784000
                                                                        38786000
Globals Altered:                                                        38788000
                                                                        38790000
Data Structures:                                                        38792000
                                                                        38794000
Algorithm:                                                              38796000
                                                                        38798000
;                                                                       38800000
      BEGIN                                                             38802000
          INTEGER WORK3,CINUSE,ESIZE,INDX,COUNT,              <<<01.02>>38804000
                 TOTELE,IX1 ,TAPTR,HDPTR;                               38806000
          LOGICAL WORK1,WORK2;                                <<<01.02>>38808000
         DOUBLE SBUFFER:=%1006D,LOCSBUF,TOTREQ;                         38810000
         NEWPAGE;                                                       38812000
         INDXARAY(%10*2):=PAGENO;                                       38814000
         MOVE DBUFFER(23):=                                             38816000
         "******    SYSTEM BUFFER ANALYSIS    ******";                  38818000
         PRINTLINE;                                                     38820000
         SKIPLINES(3);                                                  38822000
         LOCSBUF:=VERIFYP(%10,%1006D);                         <<01.02>>38824000
         IF <> THEN                                            <<01.02>>38826000
         IF LOCSBUF <> 0D THEN WARNING ELSE                    <<01.02>>38828000
         BEGIN                                                 <<01.02>>38830000
            NOFORMT';                                          <<00221>>38832000
            GO BAILOUT;                                        <<01.02>>38834000
         END;                                                  <<01.02>>38836000
         WORK1:=CORE(LOCSBUF);                                          38838000
         TOTELE:=WORK1.(0:8);                                           38840000
         MOVE BBUF:="ELEMENTS IN TABLE";                                38842000
         @PBUF:=@BBUF+40;                                               38844000
         ASCII(TOTELE,10,PBUF);     <<ELEMENTS IN TABLE>>               38846000
         MOVE BBUF(52):="MAXIMUM NUMBER OF ELEMENTS IN USE";            38848000
         WORK2:=CORE(LOCSBUF+4D);                                       38850000
         CINUSE:=WORK2.(8:8);                                           38852000
         WORK3:=WORK2.(0:8);                                            38854000
         @PBUF:=@BBUF+92;                                               38856000
         ASCII(WORK3,10,PBUF);     <<MAX# ELEMENTS IN USE>>             38858000
         PRINTLINE;                                                     38860000
         MOVE BBUF:="ELEMENTS IN PRIMARY AREA";                         38862000
         WORK3:=WORK1.(8:8);                                            38864000
         @PBUF:=@BBUF+40;                                               38866000
         ASCII(WORK3,10,PBUF);     <<ELEMENTS IN PRIMARY>>              38868000
         MOVE BBUF(52):="CURRENT NUMBER OF ELEMENTS IN USE";            38870000
         @PBUF:=@BBUF+92;                                               38872000
         ASCII(CINUSE,10,PBUF);     <<CURRENT # IN USE>>                38874000
         PRINTLINE;                                                     38876000
         MOVE BBUF:="SIZE OF EACH ELEMENT";                             38878000
         WORK1:=CORE(LOCSBUF+1D);                                       38880000
         ESIZE:=WORK1.(8:8);                                            38882000
         @PBUF:=@BBUF+39;                                               38884000
         ASCII(ESIZE,10,PBUF);     <<ENTRY SIZE>>                       38886000
         MOVE BBUF(52):="OVERFLOWS";                                    38888000
         WORK2:=CORE(LOCSBUF+5D);                                       38890000
         @PBUF:=@BBUF+92;                                               38892000
         ASCII(WORK2,10,PBUF);     <<OVERFLOWS>>                        38894000
         PRINTLINE;                                                     38896000
         MOVE BBUF:="INDEX OF FIRST FREE ELEMENT";                      38898000
         MOVE BBUF(52):="TOTAL REQUEST";                                38900000
          HDPTR:=INTEGER(CORE(LOCSBUF+2D));                   <<<01.02>>38902000
          TAPTR:=INTEGER(CORE(LOCSBUF+3D));                   <<<01.02>>38904000
         @PBUF:=@BBUF+36;                                               38906000
         PUTNUMP(HDPTR);     <<HEAD POINTER>>                           38908000
         TOS:=CORE(LOCSBUF+6D);                                         38910000
         TOS:=CORE(LOCSBUF+7D);                                         38912000
         TOTREQ:=TOS;                                                   38914000
         @PBUF:=@BBUF+87;                                               38916000
         PUTDNUMP(TOTREQ);     <<TOTAL REQUEST>>                        38918000
         PRINTLINE;                                                     38920000
         MOVE BBUF:="INDEX TO LAST FREE ELEMENT";                       38922000
         @PBUF:=@BBUF+36;                                               38924000
         PUTNUMP(TAPTR);     <<TAIL POINTER>>                           38926000
         PRINTLINE;                                                     38928000
         SKIPLINES(1);                                                  38930000
         COUNT:=0;                                                      38932000
         WORK3:=HDPTR;                                                  38934000
         FOR INDX:=1 UNTIL (TOTELE-CINUSE)                              38936000
         DO                                                             38938000
         BEGIN                                                          38940000
           IF ESIZE=0 THEN GO INVI;                            <<00.04>>38942000
            TOS:=WORK3 MOD ESIZE;                                       38944000
            IF TOS <> 9 THEN                                            38946000
            BEGIN                                                       38948000
INVI:                                                          <<00.04>>38950000
               MOVE BBUF:=                                              38952000
               "INVALID INDEX";                                         38954000
               @PBUF:=@BBUF+16;                                         38956000
               PUTNUMP(WORK3);                                          38958000
               PRINTLINE;                                               38960000
               SKIPLINES(1);                                            38962000
               GO OUT1;                                                 38964000
            END ELSE HDPTR:=WORK3;                                      38966000
            COUNT:=COUNT+1;                                             38968000
            IF HDPTR=TAPTR THEN GO OUT1;                                38970000
             WORK3:=INTEGER(CORE(LOCSBUF+DOUBLE(HDPTR-1)));   <<<01.02>>38972000
         END;                                                           38974000
OUT1:                                                                   38976000
         IF COUNT<> (TOTELE-CINUSE) THEN                                38978000
         BEGIN                                                          38980000
            MOVE BBUF:="LINK BROKEN AT";                                38982000
            @PBUF:=@BBUF+16;                                            38984000
            PUTNUMP(HDPTR);                                             38986000
            PRINTLINE;                                                  38988000
            SKIPLINES(1);                                               38990000
            MOVE BBUF:="TOTAL LINKED ELEMENTS =";                       38992000
            @PBUF:=@BBUF+24;                                            38994000
            ASCII(COUNT,10,PBUF);                                       38996000
            PRINTLINE;                                                  38998000
            MOVE BBUF:="TOTAL SHOULD BE";                               39000000
            @PBUF:=@BBUF+24;                                            39002000
            ASCII((TOTELE-CINUSE),10,PBUF);                             39004000
            PRINTLINE;                                                  39006000
            SKIPLINES(1);                                               39008000
         END;                                                           39010000
         IF HDPTR<> TAPTR THEN                                          39012000
         BEGIN                                                          39014000
            MOVE BBUF:="LINKS NOT CONTINUOUS FROM HEAD TO TAIL";        39016000
            PRINTLINE;                                                  39018000
            SKIPLINES(1);                                               39020000
         END;                                                           39022000
         IF ESIZE <> 129 THEN                                           39024000
         BEGIN                                                          39026000
            MOVE BBUF:="INVALID ENTRY SIZE. SHOULD BE %201";            39028000
            PRINTLINE;                                                  39030000
         END;                                                           39032000
BAILOUT:                                                                39034000
      END;                                                              39036000
                                                                        39038000
$PAGE "PRINTTRL : Format the timer request list"                        39040000
$CONTROL SEGMENT=TABLESIO                                               39042000
PROCEDURE PRINTTRL;                                                     39044000
COMMENT                                                                 39046000
                                                                        39048000
Purpose:                                                                39050000
      This procedure will format and print the timer request list       39052000
                                                                        39054000
                                                                        39056000
Input parameters:                                                       39058000
                                                                        39060000
Output parameters:                                                      39062000
                                                                        39064000
Globals Referenced:                                                     39066000
                                                                        39068000
Globals Altered:                                                        39070000
                                                                        39072000
Data Structures:                                                        39074000
                                                                        39076000
Algorithm:                                                              39078000
                                                                        39080000
;                                                                       39082000
      BEGIN                                                             39084000
          INTEGER WORK2,ESIZE,IX1,TOTELE;                     <<<01.02>>39086000
          LOGICAL WORK1;                                      <<<01.02>>39088000
         INTEGER ENTNUM;                                       <<00221>>39090000
         DOUBLE TRLB:=%1012D,LOCTRL,DTIME;                              39092000
         NEWPAGE;                                                       39094000
         INDXARAY(%23*2):=PAGENO;                                       39096000
         MOVE DBUFFER(23):=                                             39098000
         "******    TIMER REQUEST LIST    ******";                      39100000
         PRINTLINE;                                                     39102000
         SKIPLINES(3);                                                  39104000
         LOCTRL:=VERIFYP(%23,%1012D);                          <<01.02>>39106000
         IF <> THEN                                            <<01.02>>39108000
         IF LOCTRL <> 0D THEN WARNING ELSE                     <<01.02>>39110000
         BEGIN                                                 <<01.02>>39112000
            NOFORMT';                                          <<00221>>39114000
            GO BAILOUT;                                        <<01.02>>39116000
         END;                                                  <<01.02>>39118000
         MOVE BBUF:="FREE LIST POINTER";                                39120000
         @PBUF:=@BBUF+30;                                               39122000
         WORK1:=CORE(LOCTRL);                                           39124000
         PUTNUM(WORK1);     <<FREE LIST POINTER>>                       39126000
         PRINTLINE;                                                     39128000
         MOVE BBUF:="NUMBER OF ENTRYS";                                 39130000
         @PBUF:=@BBUF+30;                                               39132000
         WORK1:=CORE(LOCTRL+1D);                                        39134000
         TOTELE:=WORK1.(0:8);                                           39136000
         PUTNUM(TOTELE);     <<# OF ENTRYS>>                            39138000
         PRINTLINE;                                                     39140000
         MOVE BBUF:="ENTRY SIZE";                                       39142000
         @PBUF:=@BBUF+30;                                               39144000
         ESIZE:=WORK1.(8:8);                                            39146000
         ASCII(ESIZE,10,PBUF);                                          39148000
         PRINTLINE;                                                     39150000
         MOVE BBUF:="TRACE WORD";                                       39152000
         WORK1:=CORE(LOCTRL+2D);                                        39154000
         @PBUF:=@BBUF+30;                                               39156000
         PUTNUM(WORK1);     <<TRACE WORD>>                              39158000
         PRINTLINE;                                                     39160000
         MOVE BBUF:="QUANTUM/100MS";                                    39162000
         @PBUF:=@BBUF+30;                                               39164000
         WORK1:=CORE(LOCTRL+3D);                                        39166000
         PUTNUM(WORK1);     <<QUANTUM>>                                 39168000
         PRINTLINE;                                                     39170000
         MOVE BBUF:="POINTER TO MOST ACTIVE REQ";                       39172000
         @PBUF:=@BBUF+30;                                               39174000
         WORK1:=CORE(LOCTRL+8D);                                        39176000
         PUTNUM(WORK1);     <<PTR TO MOST ACTIVE REQ>>                  39178000
         PRINTLINE;                                                     39180000
         MOVE BBUF:="DATE";                                             39182000
         MOVE BBUF(30):=STRING,(20);                                    39184000
         PRINTLINE;                                                     39186000
         SKIPLINES(2);                                                  39188000
         MOVE BBUF(30):="TYPE OF             POINTER TO";      <<00221>>39190000
         MOVE BBUF(90):="TIME TO SERVICE";                     <<00221>>39192000
         PRINTLINE;                                                     39194000
         MOVE BBUF:=" ENTRY    REQUEST STATUS      REQUEST";   <<00221>>39196000
         MOVE BBUF(50):="NEXT REQUEST        REQUEST POINTER"; <<00221>>39198000
         MOVE BBUF(90):="REQ IN FRONT (SEC/10)";               <<00221>>39200000
         PRINTLINE;                                                     39202000
         SKIPLINES(1);                                                  39204000
         LOCTRL:=LOCTRL+8D;                                             39206000
         ENTNUM:=%10;<<ENTRY ADDRESS TRL RELATIVE>>            <<01.3A>>39208000
         FOR IX1:=3 UNTIL (TOTELE-1)                                    39210000
         DO                                                             39212000
         BEGIN                                                          39214000
            LOCTRL:=LOCTRL+4D;                                          39216000
            ENTNUM:=ENTNUM+4;<<NEXT ENTRY NUM REL ADR>>        <<01.3A>>39218000
            @PBUF:=@BBUF;                                      <<01.3A>>39220000
            PUTNUMP(ENTNUM);<<REL ENTRY NUMBER>>               <<01.3A>>39222000
            @PBUF:=@BBUF+10;                                   <<01.3A>>39224000
            WORK1:=CORE(LOCTRL);                                        39226000
            IF WORK1.(0:1)=1 THEN                                       39228000
            MOVE PBUF:="ACTIVE" ELSE                           <<01.3A>>39230000
            MOVE PBUF:="INACTIVE";<<REQUEST STATUS>>           <<01.3A>>39232000
            @PBUF:=@BBUF+30;                                   <<01.3A>>39234000
            CASE * WORK1.(3:3) OF                                       39236000
            BEGIN     <<TYPE OF REQUEST>>                               39238000
               BEGIN     <<0>>                                          39240000
            MOVE PBUF:="HANGUP";                               <<01.3A>>39242000
               END;                                                     39244000
               BEGIN     <<1>>                                          39246000
                  MOVE PBUF:="CARRIER FAIL";                            39248000
               END;                                                     39250000
               BEGIN     <<2>>                                          39252000
                  MOVE PBUF:="202TURNAROUND";                           39254000
               END;                                                     39256000
               BEGIN     <<3>>                                          39258000
                  MOVE PBUF:="READ";                                    39260000
               END;                                                     39262000
               BEGIN     <<4>>                                          39264000
                  MOVE PBUF:="LOG ON";                                  39266000
               END;                                                     39268000
               BEGIN     <<5>>                                          39270000
                  MOVE PBUF:="DELAY";                                   39272000
               END;                                                     39274000
               BEGIN     <<6>>                                          39276000
                  MOVE PBUF:="LINE PR NOT RDY";                         39278000
               END;                                                     39280000
               BEGIN     <<7>>                                          39282000
               END;                                                     39284000
           END;                                                         39286000
           WORK2:=WORK1.(6:10);                                         39288000
            @PBUF:=@BBUF+50;                                   <<01.3A>>39290000
            PUTNUMP(WORK2);<<POINTER TO NEXT REQUEST>>         <<01.3A>>39292000
            @PBUF:=@BBUF+80;                                   <<01.3A>>39294000
          WORK2:=INTEGER(CORE(LOCTRL+1D));                    <<<01.02>>39296000
           IF WORK1.(1:5)=5 THEN                                        39298000
            MOVE BBUF(70):="PCBB IX =" ELSE                    <<01.3A>>39300000
             MOVE BBUF(70):="DITP    =";                       <<00221>>39302000
           PUTNUM(WORK2);                                               39304000
           TOS:=CORE(LOCTRL+2D);                                        39306000
           TOS:=CORE(LOCTRL+3D);                                        39308000
           DTIME:=TOS;                                                  39310000
            @PBUF:=@BBUF+90;                                   <<01.3A>>39312000
           DASCII(DTIME,10,PBUF);     <<TIME TO SERV>>                  39314000
           PRINTLINE;                                                   39316000
        END;                                                            39318000
BAILOUT:                                                                39320000
      END;                                                              39322000
