         << LINES .001/.009 ARE RESERVED FOR SYSTEMS INTEGRATION >>     00000001
$PAGE "TEST'DRT'INFO: Set up for PRINTDRT"                              23656000
$CONTROL SEGMENT=TABLESIO                                               23658000
COMMENT                                                                 23660000
                                                                        23662000
Purpose:                                                                23664000
                                                                        23666000
Input parameters:                                                       23668000
                                                                        23670000
Output parameters:                                                      23672000
                                                                        23674000
Globals Referenced:                                                     23676000
                                                                        23678000
Globals Altered:                                                        23680000
                                                                        23682000
Data Structures:                                                        23684000
                                                                        23686000
Algorithm:                                                              23688000
                                                                        23690000
;                                                                       23692000
PROCEDURE TEST'DRT'INFO(MINDRT,MAXDRT,VALID'DRTS,PFLAG);       <<03013>>23694000
<<=================================================>>          <<03013>>23696000
  VALUE PFLAG;  <<PRINT DRTBANK AND DRTADDR IF TRUE>>          <<03013>>23698000
  INTEGER MINDRT,MAXDRT;                                       <<03013>>23700000
  LOGICAL VALID'DRTS,PFLAG;                                    <<03013>>23702000
BEGIN                                                          <<03013>>23704000
                                                               <<03013>>23706000
    COMMENT                                                    <<03013>>23708000
        THIS PROCEDURE PERFORMS THE FOLLOWING:                 <<03013>>23710000
                                                               <<03013>>23712000
        RETURNS "MINDRT" BASED ON CPUTYPE.                     <<03013>>23714000
        RETURNS "MAXDRT" BASED ON "HIGHEST DRT" FROM           <<03013>>23716000
        SYSGLOB(71)   (ABSOLUTE 1071). IF "HIGHEST DRT"        <<03013>>23718000
        IS LARGER THAN THE CPU SUPPORTED MAX DRT, THEN AN      <<03013>>23720000
        ERROR IS PRINTED AND "MAXDRT" IS RETURNED AS THE       <<03013>>23722000
        CPU SUPPORTABLE MAXIMUM DRT.                           <<03013>>23724000
                                                               <<03013>>23726000
        INITIALIZES (LOADS) "DRT'TABLE'ADDRESS" FROM:          <<03013>>23728000
           DRTBANK   (ABS 9)                                   <<03013>>23730000
           DRTADDR   (ABS 9)                                   <<03013>>23732000
        AND IF PFLAG IS TRUE, PRINTS THESE VALUES.             <<03013>>23734000
                                                               <<03013>>23736000
        TESTS THIS "DRT'TABLE'ADDRESS" BASED ON CPU:           <<03013>>23738000
           IF NOT ICF55/MM THEN THIS SHOULD CONTAIN 0,0.       <<s7920>>23740000
           ANY OTHER VALUES IMPLY THE CELLS HAD BEEN           <<03013>>23742000
           DESTROYED. PRINTS AN ERROR, AND RESTORES            <<03013>>23744000
           THE VALUES TO 0,0 TO ALLOW AN ATTEMPT OF            <<03013>>23746000
           FORMATING THE DRT TABLE IF DESIRED.                 <<03013>>23748000
                                                               <<03013>>23750000
           FOR THE ICF55/MM, DRTBANK/DRTADDR VALUES            <<s7920>>23752000
           ARE ONLY TESTED TO INSURE THEY POINT WITHIN         <<03013>>23754000
           THE BOUNDS OF PHYSICAL MEMORY. IF NOT,              <<03013>>23756000
           THEN AN ERROR IS PRINTED, VALID'DRTS IS SET         <<03013>>23758000
           TO FALSE, AND THE DRT,ILT,DIT TABLES CAN            <<03013>>23760000
           NOT BE FORMATED/PRINTED.                            <<03013>>23762000
     END COMMENT;                                              <<03013>>23764000
                                                               <<03013>>23766000
    DOUBLE DRTPAIR;         <<DOUBLE ADDRESS>>                 <<03013>>23768000
    LOGICAL DRTBANK = DRTPAIR;     <<LO ORDER BANK PART>>      <<03013>>23770000
    LOGICAL DRTADDR = DRTPAIR+1;   <<HI ORDER ADDR PART>>      <<03013>>23772000
                                                               <<03013>>23774000
    INTEGER CPUMAXDRT;     <<MAX DRT CPU CAN SUPPORT>>         <<03013>>23776000
                                                               <<03013>>23778000
    DOUBLE SYSGLOB71 :=%1071D;    <<ADDR OF SYSGLOB CELL>>     <<03013>>23780000
    INTEGER HIGHESTDRT;           <<MAX CONFIG DRT>>           <<03013>>23782000
    LOGICAL CLOBBERED'DRTS; <<TRUE IF DRT POINTERS APPEAR>>    <<03013>>23784000
                            <<TO HAVE BEEN CLOBBERED>>         <<03013>>23786000
                                                               <<03013>>23788000
    <<--------------------------------------------->>          <<03013>>23790000
    VALID'DRTS := TRUE;     <<ASSUME SUCCESS>>                 <<03013>>23792000
    CLOBBERED'DRTS := FALSE;  <<ASSUME THEY ARE OK>>           <<03013>>23794000
                                                               <<03013>>23796000
                  <<RETURN MINDRT AND MAXDRT BASED ON CPU>>    <<03013>>23798000
                  <<------------------------------------->>    <<03013>>23800000
                                                               <<03013>>23802000
    MINDRT := IF SERIES'33'THRU'MM                             <<s7920>>23804000
              THEN 8                                           <<03013>>23806000
              ELSE 3;             <<RETURN MINDRT>>            <<03013>>23808000
                                                               <<03013>>23810000
    HIGHESTDRT := INTEGER( CORE(SYSGLOB71));                   <<03013>>23812000
           <<RETRIEVE HIGHEST CONFIGURED DRT FROM SYSGLOB>>    <<03013>>23814000
                                                               <<03013>>23816000
    IF ICF55'OR'MM                                             <<s7920>>23818000
    THEN CPUMAXDRT := 511   <<ICF55/MM SUPPORTS 511 DRTS>>     <<s7920>>23820000
    ELSE CPUMAXDRT := 127;  <<OTHERS SUPPORT 127 DRTS>>        <<03013>>23822000
                                                               <<03013>>23824000
              <<LOAD DRT'TABLE'ADDRESS FROM DRTBANK/DRTADDR>>  <<03013>>23826000
              <<------------------------------------------->>  <<03013>>23828000
                                                               <<03013>>23830000
    DRTBANK := CORE( 8D );    <<FIXED LOW CORE POINTERS>>      <<03013>>23832000
    DRTADDR := CORE( 9D );                                     <<03013>>23834000
                                                               <<03013>>23836000
    DRT'TABLE'ADDRESS := DRTPAIR;  <<INITIALIZED JUST AS >>    <<03013>>23838000
                              <<WE FOUND THE VALUES IN 8,9>>   <<03013>>23840000
                                                               <<03013>>23842000
    IF NOT ICF55'OR'MM                                         <<s7920>>23844000
    THEN IF DRTBANK <> 0 OR DRTADDR <> 0   <<POINTERS OK?>>    <<03013>>23846000
         THEN CLOBBERED'DRTS := TRUE;  <<WE WILL CORRECT>>     <<03013>>23848000
             <<DRT'TABLE'ADDRESS LATER AND GIVE WARNING MSG>>  <<03013>>23850000
                                                               <<03013>>23852000
                     <<PRINT DRTBANK, DRTADDR INFO>>           <<03013>>23854000
                     <<--------------------------->>           <<03013>>23856000
                                                               <<03013>>23858000
    IF PFLAG OR          <<USER REQUESTED>>                    <<03013>>23860000
       CLOBBERED'DRTS    <<ERROR DETECTED>>                    <<03013>>23862000
    THEN BEGIN                                                 <<03013>>23864000
        MOVE DBUFFER := "(ADDR %10)  DRT BANK ";               <<03013>>23866000
        @PBUF := @BBUF + 52;                                   <<03013>>23868000
        PUTNUM (DRTBANK);                                      <<03013>>23870000
        PRINTLINE; SKIPLINES(1);                               <<03013>>23872000
        MOVE DBUFFER := "(ADDR %11)  DRT ADDR ";               <<03013>>23874000
        @PBUF := @BBUF + 52;                                   <<03013>>23876000
        PUTNUM (DRTADDR);                                      <<03013>>23878000
        PRINTLINE; SKIPLINES(1);                               <<03013>>23880000
    END;  <<PRINT DRTBANK DRTADDR>>                            <<03013>>23882000
                                                               <<03013>>23884000
                     <<IF BAD DRT POINTER, GIVE ERROR>>        <<03013>>23886000
                     <<------------------------------>>        <<03013>>23888000
                                                               <<03013>>23890000
    IF CLOBBERED'DRTS   <<DRTBANK/DRTADDR HAS BEEN HIT>>       <<03013>>23892000
    THEN BEGIN                                                 <<03013>>23894000
        MOVE DBUFFER :=                                        <<03013>>23896000
         ("**ERROR** DRTBANK / DRTADDR PAIR HAS BEEN ",        <<03013>>23898000
         "MODIFIED.");                                         <<03013>>23900000
        PRINTLINE;                                             <<03013>>23902000
        MOVE DBUFFER :=                                        <<03013>>23904000
        ("**PROPER VALUES (0,0) WILL BE USED TO FORMAT DRT,",  <<03013>>23906000
        " ILT, AND DIT TABLES.");                              <<03013>>23908000
        PRINTLINE; SKIPLINES(1);                               <<03013>>23910000
        DRT'TABLE'ADDRESS := 0D;   <<USE CORRECT VALUES>>      <<03013>>23912000
    END;                                                       <<03013>>23914000
                                                               <<03013>>23916000
               <<ICF-55 TEST FOR DRTS OUTSIDE MEMORY BOUNDS>>  <<03013>>23918000
               <<------------------------------------------>>  <<03013>>23920000
    IF ICF55'OR'MM  AND DRT'TABLE'ADDRESS > MAXMEM             <<s7920>>23922000
    THEN BEGIN   <<DRTS FALL OUTSIDE OF PHYSICAL MEMORY>>      <<03013>>23924000
                 <<NOTE: ONLY START ADDRESS IS CHECKED>>       <<03013>>23926000
                                                               <<03013>>23928000
        VALID'DRTS := FALSE;  <<RETURN ERROR FLAG>>            <<03013>>23930000
        SKIPLINES(1);                                          <<03013>>23932000
        MOVE DBUFFER :=                                        <<03013>>23934000
         "**ERROR** DRT TABLE IS OUTSIDE OF PHYSICAL MEMORY";  <<03013>>23936000
        PRINTLINE;                                             <<03013>>23938000
        MOVE DBUFFER :=                                        <<03013>>23940000
         ("**ERROR** DRT, ILT, AND DIT TABLES CAN NOT",        <<03013>>23942000
         " BE PRINTED.");                                      <<03013>>23944000
        PRINTLINE; SKIPLINES(1);                               <<03013>>23946000
     END;  <<DRTPAIR > MEMSIZE>>                               <<03013>>23948000
                                                               <<03013>>23950000
                      <<CAN CPU SUPPORT CONFIG DRTS>>          <<03013>>23952000
                      <<--------------------------->>          <<03013>>23954000
    IF HIGHESTDRT > CPUMAXDRT   <<TOO BIG>>                    <<03013>>23956000
       OR HIGHESTDRT < MINDRT   <<ROLLED OVER TO NEGATIVE?>>   <<03013>>23958000
    THEN BEGIN        <<SYSGLOB CELL MUST HAVE BEEN HIT>>      <<03013>>23960000
                                                               <<03013>>23962000
        MOVE DBUFFER :=                                        <<03013>>23964000
         "**ERROR** HIGHEST DRT (SYSGLOB-71) IS INVALID.";     <<03013>>23966000
        PRINTLINE;                                             <<03013>>23968000
        MOVE DBUFFER :=                                        <<03013>>23970000
         "**MAXIMUM DRT SUPPORTED BY THIS CPU IS";             <<03013>>23972000
        @PBUF := @PBUF + 39;                                   <<03013>>23974000
        ASCII (INTEGER(CPUMAXDRT),10,PBUF);                    <<03013>>23976000
        PRINTLINE; SKIPLINES(2);                               <<03013>>23978000
                                                               <<03013>>23980000
        MAXDRT := CPUMAXDRT;  <<RETURN CPU LIMITED DRT >>      <<03013>>23982000
        END   <<TOO BIG>>                                      <<03013>>23984000
    ELSE MAXDRT := HIGHESTDRT;  <<OK, NORMAL CASE>>            <<03013>>23986000
                                                               <<03013>>23988000
                                                               <<03013>>23990000
END;  <<PROCEDURE TEST'DRT'INFO>>                              <<03013>>23992000
                                                                        23994000
$PAGE "GETDRT(DRTNO,OFFSET): Return address of DRT entry"               23996000
$CONTROL SEGMENT=TABLESIO                                               23998000
COMMENT                                                                 24000000
                                                                        24002000
Purpose:                                                                24004000
                                                                        24006000
Input parameters:                                                       24008000
                                                                        24010000
Output parameters:                                                      24012000
                                                                        24014000
Globals Referenced:                                                     24016000
                                                                        24018000
Globals Altered:                                                        24020000
                                                                        24022000
Data Structures:                                                        24024000
                                                                        24026000
Algorithm:                                                              24028000
                                                                        24030000
;                                                                       24032000
LOGICAL PROCEDURE GETDRT( DRTNO, OFFSET);                      <<03013>>24034000
<<======================================>>                     <<03013>>24036000
    VALUE   DRTNO, OFFSET;                                     <<03013>>24038000
    INTEGER DRTNO, OFFSET;                                     <<03013>>24040000
BEGIN                                                          <<03013>>24042000
    COMMENT                                                    <<03013>>24044000
       THIS PROCEDURE ASSUMES GLOBAL "DRT'TABLE'ADDRESS"       <<03013>>24046000
    HAS BEEN INITIALIZED BY A PRIOR CALL TO TEST'DRT'INFO.     <<03013>>24048000
    USING DRT'TABLE'ADDRESS AS THE BASE ADDRESS, INDEX         <<03013>>24050000
    TO THE ENTRY FOR DRTNO (MULTIPY BY ENTRYSIZE=4), AND       <<03013>>24052000
    ADD "OFFSET" TO THE DESIRED WORD.  END COMMENT;            <<03013>>24054000
                                                               <<03013>>24056000
    GETDRT := LOGICAL ( CORE (                                 <<03013>>24058000
                 DRT'TABLE'ADDRESS +      <<BASE>>             <<03013>>24060000
                 DOUBLE(DRTNO*4) +        <<INDEX TO ENTRY>>   <<03013>>24062000
                 DOUBLE(OFFSET) ));       <<DESIRED WORD>>     <<03013>>24064000
END;  <<GETDRT>>                                               <<03013>>24066000
                                                                        24068000
$PAGE "PRINTDRT: Format DRT table"                                      24070000
$CONTROL SEGMENT=TABLESIO                                               24072000
COMMENT                                                                 24074000
                                                                        24076000
Purpose:                                                                24078000
                                                                        24080000
Input parameters:                                                       24082000
                                                                        24084000
Output parameters:                                                      24086000
                                                                        24088000
Globals Referenced:                                                     24090000
                                                                        24092000
Globals Altered:                                                        24094000
                                                                        24096000
Data Structures:                                                        24098000
                                                                        24100000
Algorithm:                                                              24102000
                                                                        24104000
;                                                                       24106000
  PROCEDURE PRINTDRT;                                          <<03013>>24108000
  <<================>>                                         <<03013>>24110000
  <<THIS PROCEDURE FORMATS AND PRINTS THE DRT TABLE>>          <<03013>>24112000
                                                               <<03013>>24114000
  BEGIN                                                        <<03013>>24116000
    INTEGER DRTNUM,MAXDRT,MINDRT;                              <<03013>>24118000
    DOUBLE COREA;                                              <<03013>>24120000
    INTEGER COREA1=COREA+1;                                    <<03013>>24122000
                                                               <<03013>>24124000
    LOGICAL VALID'DRTS;                                        <<03013>>24126000
                                                               <<03013>>24128000
    NEWPAGE;                                                   <<03013>>24130000
                                                               <<03013>>24132000
               <<DETERMINE MINDRT AND MAXDRT>>                 <<03013>>24134000
               <<PRINT DRTBANK,DRTADDR  VALUES>>               <<03013>>24136000
               <<PRINT ERROR IF DRTBANK/ADDR ARE BAD>>         <<03013>>24138000
                                                               <<03013>>24140000
    TEST'DRT'INFO(MINDRT,MAXDRT,VALID'DRTS,TRUE);              <<03013>>24142000
                                                               <<03013>>24144000
    IF NOT VALID'DRTS    <<FATAL ICF55/MM DRT PROBLEM>>        <<s7920>>24146000
    THEN GO BAD'DRTS;    <<CANT PRINT TABLE>>                  <<03013>>24148000
                         <<ERROR MSG ALREADY PRINTED>>         <<03013>>24150000
                                                               <<03013>>24152000
                                                               <<03013>>24154000
    MOVE DBUFFER(21):="******    D R T    T A B L E    ******";<<03013>>24156000
    PRINTLINE;                                                 <<03013>>24158000
    SKIPLINES(1);                                              <<03013>>24160000
                                                               <<03013>>24162000
                                 <<PRINT COLUMN HEADINGS>>     <<03013>>24164000
    IF SERIES'33'THRU'MM THEN                                  <<s7920>>24166000
      MOVE DBUFFER(19):="DEVICE                         PGM"   <<03013>>24168000
    ELSE                                                       <<03013>>24170000
      MOVE DBUFFER(19):="DEVICE                PGM";           <<03013>>24172000
    PRINTLINE;                                                 <<03013>>24174000
    IF SERIES'33'THRU'MM THEN                                  <<s7920>>24176000
    MOVE DBUFFER(19):="NUMBER    ADR   SIO    CPVA    LABEL"   <<03013>>24178000
    ELSE                                                       <<03013>>24180000
    MOVE DBUFFER(19):="NUMBER    ADR   SIO   LABEL  DBI";      <<03013>>24182000
    PRINTLINE;                                                 <<03013>>24184000
    SKIPLINES(1);                                              <<03013>>24186000
                                                               <<03013>>24188000
    FOR DRTNUM:=MINDRT UNTIL MAXDRT DO                         <<03013>>24190000
    BEGIN                                                      <<03013>>24192000
       @PBUF:=@PBUF+38;                                        <<03013>>24194000
       ASCII(DRTNUM,10,PBUF);      <<PRINT DRT NUMBER>>        <<03013>>24196000
       @PBUF:=@PBUF+6;                                         <<03013>>24198000
                                                               <<03013>>24200000
       TOS := DRT'TABLE'ADDRESS;   <<DOUBLE ADDRESS>>          <<03013>>24202000
       TOS := TOS + DRTNUM *4;     <<BUMP LO ADDR TO ENTRY>>   <<03013>>24204000
       PUTNUMP( TOS);              <<PRINT LO DRT ADDRESS>>    <<03013>>24206000
       DEL;                        <<DELETE THE BANK NUMBER>>  <<03013>>24208000
       PBUF(-1):=":";                                          <<03013>>24210000
       @PBUF:=@PBUF+2;                                         <<03013>>24212000
                                                               <<03013>>24214000
       PUTNUM( GETDRT(DRTNUM,0));  <<PRINT ENTRY-WORD 0>>      <<03013>>24216000
       PUTNUM( GETDRT(DRTNUM,1));  <<PRINT ENTRY-WORD 1>>      <<03013>>24218000
       PUTNUM( GETDRT(DRTNUM,2));  <<PRINT ENTRY-WORD 2>>      <<03013>>24220000
       PUTNUM( GETDRT(DRTNUM,3));  <<PRINT ENTRY-WORD 3>>      <<03013>>24222000
       PRINTLINE;                                              <<03013>>24224000
    END;                                                       <<03013>>24226000
BAD'DRTS:   <<EXIT QUICK IF CANT PRINT DRTS>>                  <<03013>>24228000
END;                                                           <<03013>>24230000
                                                                        24232000
$PAGE "PRINTDRQT : Format the Disk request table"                       24234000
$CONTROL SEGMENT=TABLESIO                                               24236000
PROCEDURE PRINT'LDR(LDR'ENTRY'INDEX,DRQTBASE,LDR'FIRST);                24238000
VALUE LDR'ENTRY'INDEX,DRQTBASE,LDR'FIRST;                               24240000
LOGICAL LDR'ENTRY'INDEX,LDR'FIRST;                                      24242000
DOUBLE DRQTBASE;                                                        24244000
                                                                        24246000
BEGIN                                                                   24248000
EQUATE                                                                  24250000
                                                                        24252000
    LDR'FLAGS'INDEX   =  0,                                             24254000
    LDR'L'HODA'INDEX  =  1,                                             24256000
    LDR'UNITLDEV'INDEX=  2,                                             24258000
    LDR'CDT'INDEX     =  3,                                             24260000
    LDR'BUFDST'INDEX  =  4,                                             24262000
    LDR'BUFADR'INDEX  =  5,                                             24264000
    LDR'FUNCT'INDEX   =  6,                                             24266000
    LDR'COUNT'INDEX   =  7,                                             24268000
    LDR'PARM1'INDEX   =  8,                                             24270000
    LDR'PARM2'INDEX   =  9,                                             24272000
    LDR'STAT'INDEX    = 10,                                             24274000
    LDR'PCB'INDEX     = 11,                                             24276000
    LDR'PREVQ'INDEX   = 12,                                             24278000
    LDR'NEXTQ'INDEX   = 13,                                             24280000
    LDR'B'HODA'INDEX  = 14,                                             24282000
    LDR'B'LODA'INDEX  = 15,                                             24284000
    LDR'L'LODA'INDEX  = 16;                                             24286000
                                                                        24288000
DEFINE                                                                  24290000
                                                                        24292000
    LDR'FLAGS   =   LDR(LDR'FLAGS'INDEX+LDR'ENTRY'INDEX)#,              24294000
    LDR'L'HODA  =   LDR(LDR'L'HODA'INDEX+LDR'ENTRY'INDEX)#,             24296000
    LDR'UNITLDEV=   LDR(LDR'UNITLDEV'INDEX+LDR'ENTRY'INDEX)#,           24298000
    LDR'CDT     =   LDR(LDR'CDT'INDEX+LDR'ENTRY'INDEX)#,                24300000
    LDR'BUFDST  =   LDR(LDR'BUFDST'INDEX+LDR'ENTRY'INDEX)#,             24302000
    LDR'BUFADR  =   LDR(LDR'BUFADR'INDEX+LDR'ENTRY'INDEX)#,             24304000
    LDR'FUNCT   =   LDR(LDR'FUNCT'INDEX+LDR'ENTRY'INDEX)#,              24306000
    LDR'COUNT   =   LDR(LDR'COUNT'INDEX+LDR'ENTRY'INDEX)#,              24308000
    LDR'PARM1   =   LDR(LDR'PARM1'INDEX+LDR'ENTRY'INDEX)#,              24310000
    LDR'PARM2   =   LDR(LDR'PARM2'INDEX+LDR'ENTRY'INDEX)#,              24312000
    LDR'PCB     =   LDR(LDR'PCB'INDEX+LDR'ENTRY'INDEX)#,                24314000
    LDR'STATQ   =   LDR(LDR'STAT'INDEX+LDR'ENTRY'INDEX)#,               24316000
    LDR'PREVQ   =   LDR(LDR'PREVQ'INDEX+LDR'ENTRY'INDEX)#,              24318000
    LDR'NEXTQ   =   LDR(LDR'NEXTQ'INDEX+LDR'ENTRY'INDEX)#,              24320000
    LDR'B'HODA  =   LDR(LDR'B'HODA'INDEX+LDR'ENTRY'INDEX)#,             24322000
    LDR'B'LODA  =   LDR(LDR'B'LODA'INDEX+LDR'ENTRY'INDEX)#,             24324000
    LDR'L'LODA  =   LDR(LDR'L'LODA'INDEX+LDR'ENTRY'INDEX)#;             24326000
                                                                        24328000
                                                                        24330000
                                                                        24332000
DEFINE                                                                  24334000
                                                                        24336000
    LDR'DBREL   =   LDR'BUFDST.(0:1)#,    << 1 => IO IS DB REL. >>      24338000
    LDR'UNIT    =   LDR'UNITLDEV.(0:8)#,  << UNIT # ON CONTROLLER >>    24340000
    LDR'LDEV    =   LDR'UNITLDEV.(8:8)#,  << Logical device number>>    24342000
    LDR'STAT    =   LDR'STATQ.(8:8)#,     << UNIFORM STATUS RETURN >>   24344000
    LDR'FUNC    =   LDR'FUNCT.(8:8)#,     << REQUEST FUNCTION      >>   24346000
    LDR'STRATEGY=   LDR'FUNCT.(0:8)#,     << CACHE STRATEGY TO USE >>   24348000
    LDR'SBUF    =   LDR'FLAGS.(3:1)#,     << REQ USES SBUFS  >>         24350000
                                                                        24352000
    LDR'IOWAKE  =   LDR'FLAGS.(4:1)#,     << WAKE CALLER WHEN DONE >>   24354000
    LDR'BLOCKED =   LDR'FLAGS.(5:1)#,     << REQ WAITED IN ATTACHIO>>   24356000
    LDR'DONE    =   LDR'FLAGS.(6:1)#,     << REQ IS DONE  >>            24358000
    LDR'DO'POST =   LDR'FLAGS.(7:1)#,     << Must  wait for physical >> 24360000
                                          << I/O completion.         >> 24362000
    LDR'SERIAL'POST=LDR'FLAGS.(8:1)#,     << Serialize writes   >>      24364000
    LDR'CDTQUED =   LDR'FLAGS.(9:1)#,     << REQ IS QUEUED ACT ON CDT >>24366000
    LDR'MOVE'DONE = LDR'FLAGS.(10:1)#,    << Cache move performed    >> 24368000
    LDR'CUR'REQ =   LDR'FLAGS.(12:1)#,    << 1=active/cur. request  >>  24370000
    LDR'DISABLE =   LDR'FLAGS.(13:1)#,    << REQUEST IS DISABLED  >>    24372000
    LDR'LDREQ   =   LDR'FLAGS.(14:1)#,    << LDR entry >>               24374000
    LDR'INLOC   =   LDR'FLAGS.(15:1)#;    << ENTRY IN SLL >>   <<s7920>>24376000
                                                                        24378000
LOGICAL SUBROUTINE LDR(OFFSET);                                         24380000
VALUE OFFSET;                                                           24382000
LOGICAL OFFSET;                                                         24384000
                                                                        24386000
LDR:=CORE(DRQTBASE+DOUBLE(OFFSET));                                     24388000
                                                                        24390000
                                                                        24392000
SUBROUTINE PUTL(BIT,COL,L);                                             24394000
VALUE BIT,COL,L;                                                        24396000
LOGICAL BIT;                                                            24398000
INTEGER COL;                                                            24400000
BYTE L;                                                                 24402000
                                                                        24404000
IF BIT<>0 THEN                                                          24406000
BBUF(COL):=L;                                                           24408000
                                                                        24410000
<<******************************************************>>              24412000
<<                                                      >>              24414000
<<                       MAINLINE                       >>              24416000
<<                                                      >>              24418000
<<******************************************************>>              24420000
                                                                        24422000
IF LDR'FIRST OR LINECOUNT>50 THEN                                       24424000
  BEGIN                             << PRINT HEADER >>                  24426000
    NEWPAGE;                                                            24428000
    MOVE BBUF(50):="LOGICAL DISC REQUEST";                              24430000
    PRINTLINE;                                                          24432000
    SKIPLINES(2);                                                       24434000
    MOVE BBUF:="         SIBDPSCMPCDLI";                       <<s7920>>24436000
    PRINTLINE;                                                          24438000
    MOVE BBUF:="         BOLOSEQVFUIDN";                       <<s7920>>24440000
    PRINTLINE;                                                          24442000
    MOVE BBUF:="ENTRY    FWKNTRDDLRSRL L-HODA LDV  CDT";       <<s7920>>24444000
    MOVE BBUF(40):="S DSTN   ADDR STR FNC  XFRCT   PARM1";     <<sknew>>24446000
    MOVE BBUF(78):="PARM2 QFR STATUS PCB PREV  NEXT";          <<sknew>>24448000
    MOVE BBUF(110):="B-HODA B-LODA L-LODA";                    <<sknew>>24450000
    PRINTLINE;                                                          24452000
    MOVE BBUF:="----- ---------------- ------ ---  ---";                24454000
    MOVE BBUF(40):="- ----   ---- --- ---  -----   -----";     <<sknew>>24456000
    MOVE BBUF(78):="----- --- ------ --- ----  ----";          <<sknew>>24458000
    MOVE BBUF(110):="------ ------ ------";                    <<sknew>>24460000
    PRINTLINE;                                                          24462000
  END;                                                                  24464000
                                                                        24466000
<<     NOW FORMAT AND PRINT THE ENTRY   >>                              24468000
                                                                        24470000
PUTL(LDR'SBUF,9,"S");                                                   24472000
PUTL(LDR'IOWAKE,10,"I");                                                24474000
PUTL(LDR'BLOCKED,11,"B");                                               24476000
PUTL(LDR'DONE,12,"D");                                                  24478000
PUTL(LDR'DO'POST,13,"P");                                               24480000
PUTL(LDR'SERIAL'POST,14,"S");                                           24482000
PUTL(LDR'CDTQUED,15,"Q");                                               24484000
PUTL(LDR'MOVE'DONE,16,"M");                                             24486000
PUTL(LDR'CUR'REQ,18,"C");                                               24488000
PUTL(LDR'DISABLE,19,"D");                                               24490000
PUTL(LDR'LDREQ,20,"L");                                                 24492000
PUTL(LDR'INLOC,21,"N");                                        <<s7920>>24494000
                                                                        24496000
PUTOCTALP(LDR'ENTRY'INDEX,5);                                           24498000
PUTOCTALP(LDR'L'HODA,29);                                               24500000
                                                                        24502000
PUTOCTALP(LDR'LDEV,33);                                                 24504000
PUTOCTALP(LDR'CDT,38);                                                  24506000
IF LDR'BUFDST.(0:1) THEN                                                24508000
  MOVE BBUF(40):="S";                                          <<sknew>>24510000
PUTOCTALP(LDR'BUFDST.(1:15),46);                               <<sknew>>24512000
PUTOCTALP(LDR'BUFADR,53);                                      <<sknew>>24514000
PUTOCTALP(LDR'STRATEGY,57);                                    <<sknew>>24516000
PUTOCTALP(LDR'FUNC,61);                                        <<sknew>>24518000
PUTOCTALP(LDR'COUNT,68);                                       <<sknew>>24520000
PUTOCTALP(LDR'PARM1,76);                                       <<sknew>>24522000
PUTOCTALP(LDR'PARM2,83);                                       <<sknew>>24524000
PUTOCTALP(LDR'STATQ.(0:8),87);                                 <<sknew>>24526000
CASE LDR'STAT OF                                                        24528000
 BEGIN                                                                  24530000
   MOVE BBUF(88):="WAIT";                                      <<sknew>>24532000
   MOVE BBUF(88):="SUCC";                                      <<sknew>>24534000
   MOVE BBUF(88):="EOF";                                       <<sknew>>24536000
   MOVE BBUF(88):="UNSL";                                      <<sknew>>24538000
   MOVE BBUF(88):="ERR";                                       <<sknew>>24540000
 END;                                                                   24542000
PUTOCTALP(LDR'PCB,98);                                         <<sknew>>24544000
PUTOCTALP(LDR'PREVQ,103);                                      <<sknew>>24546000
PUTOCTALP(LDR'NEXTQ,109);                                      <<sknew>>24548000
PUTOCTALP(LDR'B'HODA,116);                                     <<sknew>>24550000
PUTOCTALP(LDR'B'LODA,123);                                     <<sknew>>24552000
PUTOCTALP(LDR'L'LODA,130);                                     <<sknew>>24554000
PRINTLINE;                                                              24556000
END;                                                                    24558000
$CONTROL SEGMENT=TABLESIO                                               24560000
PROCEDURE PRINTDRQT;                                           << WBT >>24562000
COMMENT                                                                 24564000
                                                                        24566000
Purpose:                                                                24568000
   This procedure is called to format the Disk request table.           24570000
                                                                        24572000
Input parameters:                                                       24574000
   None.                                                                24576000
                                                                        24578000
Output parameters:                                                      24580000
   None.                                                                24582000
                                                                        24584000
Globals Referenced:                                                     24586000
                                                                        24588000
Globals Altered:                                                        24590000
                                                                        24592000
Data Structures:                                                        24594000
                                                                        24596000
Algorithm:                                                              24598000
                                                                        24600000
;                                                                       24602000
BEGIN                                                          << WBT >>24604000
                                                               << WBT >>24606000
   << LOCAL VARIABLES >>                                       << WBT >>24608000
                                                               << WBT >>24610000
   LOGICAL DRQTSIZE, DRQTENTRIES;                              <<06460>>24612000
   DOUBLE DRQTBASE, LPDTBASE;                                  <<06460>>24614000
   LOGICAL NDX, MDX;                                           << WBT >>24616000
   LOGICAL COUNT, WORK, WORK1;                                 <<06460>>24618000
   LOGICAL MAXLDEV, LDN, DITP, CREQP, QHEADP;                  <<06460>>24620000
   INTEGER SLEN, ICOUNT;                                       <<06460>>24622000
   EQUATE AVAIL'LIST'SIZE =1600;                               <<06460>>24624000
   ARRAY AVAIL'LIST(1:AVAIL'LIST'SIZE);                        << WBT >>24626000
   ARRAY DRQLIST(1:AVAIL'LIST'SIZE);                           <<06460>>24628000
   LOGICAL OK:=FALSE;                                          <<06460>>24630000
   LOGICAL LDR'FIRST:=TRUE;                                             24632000
                                                               << WBT >>24634000
   EQUATE DRQTDSTNO=%70, DRQTSYSGLOBP=%1031;                   << WBT >>24636000
   EQUATE LPDTDSTNO=%15, LPDTSYSGLOBP=%1010;                   << WBT >>24638000
                                                               << WBT >>24640000
   EQUATE  << WORD DISPLACEMENTS IN DRQT ENTRY >>              << WBT >>24642000
                                                               << WBT >>24644000
   QFLAG       = 0,                                            << WBT >>24646000
   URGCLASS    = 1,                                            << WBT >>24648000
   NEXTAVAILX  = 1,                                            << WBT >>24650000
   LDEV        = 2,                                            << WBT >>24652000
   PREVAVAILX  = 2,                                            << WBT >>24654000
   MISC        = 3,                                            << WBT >>24656000
   DSTN        = 4,                                            << WBT >>24658000
   ADDR        = 5,                                            << WBT >>24660000
   FUNC        = 6,                                            << WBT >>24662000
   XFERCNT     = 7,                                            << WBT >>24664000
   PAR1        = 8,                                            << WBT >>24666000
   PAR2        = 9,                                            << WBT >>24668000
   STAT        = 10,                                           << WBT >>24670000
   PCB         = 11,                                           <<06460>>24672000
   PREVREQP    = 12,                                           <<06460>>24674000
   NEXTREQP    = 13,                                           <<06460>>24676000
   SEGIDENT    = 14,                                           <<06460>>24678000
   SEGIDENT1   = 15,                                           <<06460>>24680000
   SEGDISP     = 16;                                           <<s8398>>24682000
                                                               << WBT >>24684000
   DEFINE                                                      << WBT >>24686000
                                                               << WBT >>24688000
   STATUS   = STAT).(13:3 #,                                   << WBT >>24690000
   QUALIFIER = STAT).(8:5 #,                                   << WBT >>24692000
   MMREQ    = QFLAG).(1:1 #,                                   << WBT >>24694000
   FUNCTION = FUNC).(8:8 #;                                    << WBT >>24696000
                                                               << WBT >>24698000
   EQUATE                                                      << WBT >>24700000
                                                               << WBT >>24702000
   DCURRREQP  = 2,                                             << WBT >>24704000
   DQHEADER   = 8;                                             << WBT >>24706000
                                                               << WBT >>24708000
   EQUATE   << WORD DISPLACEMENTS IN QUEUE HEADER >>           << WBT >>24710000
                                                               << WBT >>24712000
   DISCQHEAD    =  11;                                         <<sknew>>24714000
                                                               << WBT >>24716000
   DEFINE                                                      <<01791>>24718000
                                                               <<01791>>24720000
   NUMENTRIES        = 0#,                                     <<06460>>24722000
   PRIMARY           = 2#,                                     <<06460>>24724000
   IMPEDEDPCB        = 3#,                                     <<06460>>24726000
   ENTRYLENGTH       = 1#,                                     <<06460>>24728000
   FIRSTAVAILINDX    = 4#,                                     <<06460>>24730000
   LASTAVAILINDX     = 5#,                                     <<06460>>24732000
   MAXINUSE          = 6#,                                     <<06460>>24734000
   CURRENTINUSE      = 7#,                                     <<06460>>24736000
   OVERFLOWS         = 8#,                                     <<06460>>24738000
   HOTOTALREQ        = 9#,                                     <<06460>>24740000
   LOTOTALREQ        = 10#,                                    <<06460>>24742000
   DISABLEDQHEAD     = 11#,                                    <<06460>>24744000
   DISABLEDQTAIL     = 12#,                                    <<06460>>24746000
   DQH'SERWQ         = 13#,                                             24748000
   DQH'FLAGS         = 14#;                                             24750000
                                                               << WBT >>24752000
   EQUATE                                                      << WBT >>24754000
                                                               << WBT >>24756000
   INUSE    = 0,  << Q TYPES >>                                << WBT >>24758000
   DISABLED = 1,                                               << WBT >>24760000
   AVAIL    = 2,                                               << WBT >>24762000
   SUMMARY  = 3,                                               << WBT >>24764000
   CURRENT  = 4,                                               <<06460>>24766000
   IN'USE'D = 5;                                               <<06460>>24768000
                                                               << WBT >>24770000
                                                               << WBT >>24772000
   << SUBROUTINES     >>                                       << WBT >>24774000
                                                               <<06460>>24776000
   LOGICAL SUBROUTINE DRQT(NDX, DISPL);                        << WBT >>24778000
   VALUE NDX, DISPL; LOGICAL NDX, DISPL;                       << WBT >>24780000
   BEGIN                                                       << WBT >>24782000
      DRQT:=CORE(DRQTBASE+DOUBLE(NDX)+DOUBLE(DISPL));          <<06460>>24784000
   END;                                                        << WBT >>24786000
                                                               << WBT >>24788000
   SUBROUTINE PRINTENTRY(NDX, TYPE);                           << WBT >>24790000
   VALUE NDX, TYPE; LOGICAL NDX, TYPE;                         << WBT >>24792000
   BEGIN                                                       << WBT >>24794000
      PUTOCTAL(NDX, 6);  << TABLE INDEX >>                     << WBT >>24796000
      IF NDX/DRQTSIZE>0 AND NDX/DRQTSIZE<=1600 THEN                     24798000
      DRQLIST(NDX/DRQTSIZE):=TRUE;                             <<06460>>24800000
      IF TYPE=CURRENT THEN BBUF(6):="*";                       << WBT >>24802000
      IF (DRQT(NDX,LDEV)=0) THEN                               <<04701>>24804000
          BBUF(10):="0"                                        <<04701>>24806000
      ELSE SLEN:=ASCII(DRQT(NDX,LDEV),10,BBUF(10));            <<04701>>24808000
      PUTOCTALP(DRQT(NDX, PCB).(1:15), 23);                             24810000
      PUTOCTALP(DRQT(NDX, DSTN).(1:15), 32);                   << WBT >>24812000
      IF DRQT(NDX, DSTN).(0:1)=1 THEN BBUF(25):="S";           << WBT >>24814000
      PUTOCTAL(DRQT(NDX, ADDR), 40);                           << WBT >>24816000
                                                               << WBT >>24818000
      <<FUNCTION>>                                             << WBT >>24820000
      @PBUF:=@BBUF+42;                                         << WBT >>24822000
      WORK:=DRQT(NDX, FUNCTION);                               << WBT >>24824000
      IF WORK>4 THEN PUTNUM(WORK)                              << WBT >>24826000
      ELSE                                                     << WBT >>24828000
      CASE WORK OF                                             << WBT >>24830000
      BEGIN                                                    << WBT >>24832000
         MOVE PBUF:="READ";                                    << WBT >>24834000
         MOVE PBUF:="WRITE";                                   << WBT >>24836000
         MOVE PBUF:="FOPEN";                                   << WBT >>24838000
         MOVE PBUF:="FCLOSE";                                  << WBT >>24840000
         MOVE PBUF:="DCLOSE";                                  << WBT >>24842000
      END;                                                     << WBT >>24844000
                                                               << WBT >>24846000
      PUTOCTALP(DRQT(NDX, XFERCNT), 56);                       << WBT >>24848000
      PUTOCTAL(DRQT(NDX, PAR1), 64);                           << WBT >>24850000
      PUTOCTAL(DRQT(NDX, PAR2), 71);                           << WBT >>24852000
      PUTOCTAL(DRQT(NDX, MISC), 79);                           << WBT >>24854000
                                                               << WBT >>24856000
      << DO SEG IDENT IF APPLICABLE >>                         << WBT >>24858000
                                                               << WBT >>24860000
      IF DRQT(NDX, MMREQ) = 1 THEN                             <<01833>>24862000
      BEGIN                                                    << WBT >>24864000
         WORK:=DRQT(NDX, SEGIDENT);                            << WBT >>24866000
         WORK1:=DRQT(NDX, SEGIDENT1);                          <<06460>>24868000
         PUTSEGID(WORK, WORK1, 83);                            <<06460>>24870000
         PUTOCTALP(DRQT(NDX, SEGDISP), 99);                    << WBT >>24872000
                                                               << WBT >>24874000
      END;                                                     << WBT >>24876000
                                                               << WBT >>24878000
      PUTOCTALP(DRQT(NDX, URGCLASS), 107);                     << WBT >>24880000
      PUTOCTAL(DRQT(NDX, QFLAG), 118);                         <<s8398>>24882000
      PUTOCTALP(DRQT(NDX, STATUS), 126);                       << WBT >>24884000
      PUTOCTALP(DRQT(NDX, QUALIFIER), 129);                    << WBT >>24886000
      BBUF(126):=".";                                          << WBT >>24888000
                                                               << WBT >>24890000
      PRINTLINE;                                               << WBT >>24892000
                                                               << WBT >>24894000
   END;                                                        << WBT >>24896000
                                                               << WBT >>24898000
                                                               << WBT >>24900000
   SUBROUTINE PRINTELEMENTHEAD(ENTRYTYPE);                     <<02012>>24902000
   VALUE ENTRYTYPE; LOGICAL ENTRYTYPE;                         <<02012>>24904000
   BEGIN                                                       << WBT >>24906000
      MOVE BBUF(95):="STATUS: 0.XX -> PENDING";                <<02012>>24908000
      PRINTLINE;                                               <<02012>>24910000
      MOVE BBUF(103):="1.XX -> SUCCESSFUL";                    <<02012>>24912000
      PRINTLINE;                                               <<02012>>24914000
      MOVE BBUF(103):="2.XX -> END OF FILE";                   <<02012>>24916000
      PRINTLINE;                                               <<02012>>24918000
      MOVE BBUF(103):="3.XX -> UNUSUAL CONDITION";             <<02012>>24920000
      PRINTLINE;                                               <<02012>>24922000
      MOVE BBUF(103):="4.XX -> IRRECOVERABLE ERROR";           <<02012>>24924000
      PRINTLINE;                                               <<02012>>24926000
      SKIPLINES(1);                                            << WBT >>24928000
      MOVE BBUF     :=" TABLE";                                << WBT >>24930000
      MOVE BBUF( 25):="S  DST/  OFFSET/";                      << WBT >>24932000
      MOVE BBUF( 51):="XFER";                                  << WBT >>24934000
      PRINTLINE;                                               << WBT >>24936000
                                                               << WBT >>24938000
   MOVE BBUF:=" INDEX  LDEV        PCB  S  BANK  ADDRESS   ",2;<<s8398>>24940000
   MOVE    *:="FUNC    CNT     PARM1  PARM2   MISC   ",2;      <<s8398>>24942000
   MOVE    *:="SEG IDENT   SEGDSP  URGCLS    FLAGS        ",2; <<s8398>>24944000
   MOVE    *:="STATUS";                                        <<s8398>>24946000
      IF ENTRYTYPE=AVAIL THEN MOVE BBUF(102):="NXTAVL";        <<02012>>24948000
      PRINTLINE;                                               << WBT >>24950000
                                                               << WBT >>24952000
      SKIPLINES(1);                                            << WBT >>24954000
                                                               << WBT >>24956000
   END;                                                        << WBT >>24958000
                                                               << WBT >>24960000
                                                               << WBT >>24962000
   SUBROUTINE PRINTHEADER(TYPE);                               << WBT >>24964000
   VALUE TYPE; LOGICAL TYPE;                                   << WBT >>24966000
   BEGIN                                                       << WBT >>24968000
   IF LINECOUNT<LNSPERPG/2-5 AND TYPE<>SUMMARY THEN SKIPLINES(5)        24970000
   ELSE NEWPAGE;                                               << WBT >>24972000
   MOVE BBUF(30):="******** DISC REQUEST TABLE ********  ";    << WBT >>24974000
   IF TYPE = INUSE         THEN MOVE BBUF(68):="(ACTIVE LISTS)"<< WBT >>24976000
   ELSE IF TYPE = DISABLED THEN MOVE BBUF(68):="(DISABLED LIST)"        24978000
   ELSE IF TYPE = AVAIL    THEN MOVE BBUF(68):="(AVAILABLE LIST)"       24980000
   ELSE IF TYPE = IN'USE'D THEN MOVE BBUF(68):="(OTHERS)"      <<06460>>24982000
   ELSE IF TYPE = SUMMARY  THEN MOVE BBUF(68):="(SUMMARY INFO)";        24984000
   PRINTLINE;                                                  << WBT >>24986000
   SKIPLINES(2);                                               << WBT >>24988000
   END;                                                        << WBT >>24990000
                                                               <<*9093>>24992000
                                                               <<*9093>>24994000
  SUBROUTINE PUTOCTNZ(NUM, COL);                               <<*9093>>24996000
  VALUE NUM, COL;                                              <<*9093>>24998000
  INTEGER COL;                                                 <<*9093>>25000000
  LOGICAL NUM;                                                 <<*9093>>25002000
  BEGIN                                                        <<*9093>>25004000
  IF NUM <> 0 THEN MOVE BBUF(COL-7):="%";                      <<*9093>>25006000
  PUTNZ(NUM, COL);                                             <<*9093>>25008000
  END;                                                         <<*9093>>25010000
                                                               << WBT >>25012000
   << COMPUTE TABLE BASE, SIZE >>                              << WBT >>25014000
                                                               << WBT >>25016000
FOR ICOUNT:=1 UNTIL AVAIL'LIST'SIZE DO                         <<06460>>25018000
  DRQLIST(ICOUNT):=FALSE;                                      <<06460>>25020000
   DRQTBASE:=VERIFYP(DRQTDSTNO, DRQTSYSGLOBP D);               <<06460>>25022000
   IF <> THEN                                                  << WBT >>25024000
   BEGIN                                                       << WBT >>25026000
      IF DRQTBASE = 0D THEN BEGIN NOFORMT'; RETURN; END;       <<06460>>25028000
      WARNING;                                                 << WBT >>25030000
   END;                                                        << WBT >>25032000
   DRQTSIZE:=DRQT(0, ENTRYLENGTH);                             << WBT >>25034000
                                                               << WBT >>25036000
   << PRINT SUMMARY INFORMATION >>                             << WBT >>25038000
                                                               << WBT >>25040000
   PRINTHEADER(SUMMARY);                                       << WBT >>25042000
   INDXARAY(2*DRQTDSTNO):=PAGENO;                              <<01833>>25044000
                                                               << WBT >>25046000
   DRQTENTRIES:=DRQT(0, NUMENTRIES);                           <<01791>>25048000
   MOVE BBUF:="TOTAL ENTRIES IN TABLE:";                       <<01791>>25050000
                                                                        25052000
   @PBUF:=@BBUF+40;                                                     25054000
   ASCII(DRQTENTRIES,-10,PBUF);                                <<*9093>>25056000
   PRINTLINE;                                                  <<01791>>25058000
                                                               <<01791>>25060000
   MOVE BBUF:="ENTRY SIZE:";                                   <<01791>>25062000
                                                                        25064000
   @PBUF:=@BBUF+40;                                                     25066000
   ASCII(DRQTSIZE,-10,PBUF);                                   <<*9093>>25068000
   PRINTLINE;                                                  <<01791>>25070000
                                                               <<01791>>25072000
   MOVE BBUF:="ENTRIES IN PRIMARY AREA:";                      <<01791>>25074000
                                                                        25076000
   @PBUF:=@BBUF+40;                                                     25078000
   ASCII(DRQT(0,PRIMARY),-10,PBUF);                            <<*9093>>25080000
   PRINTLINE;                                                  <<01791>>25082000
                                                               <<01791>>25084000
   MOVE BBUF:="IMPEDED PROCESS PCB:";                          <<01791>>25086000
   PUTOCTNZ(DRQT(0, IMPEDEDPCB), 41);                          <<*9093>>25088000
   PRINTLINE;                                                  <<01791>>25090000
                                                               <<01791>>25092000
   MOVE BBUF:="TABLE INDEX OF FIRST AVAIL ENTRY:";             <<01791>>25094000
   PUTOCTNZ(DRQT(0, FIRSTAVAILINDX), 41);                      <<*9093>>25096000
   PRINTLINE;                                                  <<01791>>25098000
                                                               <<01791>>25100000
   MOVE BBUF:="TABLE INDEX OF LAST AVAIL ENTRY:";              <<01791>>25102000
   PUTOCTNZ(DRQT(0, LASTAVAILINDX), 41);                       <<*9093>>25104000
   PRINTLINE;                                                  <<01791>>25106000
                                                               <<01791>>25108000
   MOVE BBUF:="MAXIMUM NUMBER OF ENTRIES IN USE:";             <<01791>>25110000
   PUTOCTNZ(DRQT(0, MAXINUSE), 41);                            <<*9093>>25112000
   PRINTLINE;                                                  <<01791>>25114000
                                                               <<01791>>25116000
   MOVE BBUF:="CURRENT NUMBER OF ENTRIES IN USE:";             <<01791>>25118000
   PUTOCTNZ(DRQT(0, CURRENTINUSE), 41);                        <<*9093>>25120000
   PRINTLINE;                                                  <<01791>>25122000
                                                               <<01791>>25124000
   MOVE BBUF:="OVERFLOWS:";                                    <<01791>>25126000
   PUTOCTNZ(DRQT(0, OVERFLOWS), 41);                           <<*9093>>25128000
   PRINTLINE;                                                  <<01791>>25130000
                                                               <<01791>>25132000
   MOVE BBUF:="TOTAL REQUESTS:                   %";           <<*9093>>25134000
   @PBUF:=@BBUF+35;                                            <<01791>>25136000
   TOS:=DRQT(0, HOTOTALREQ); TOS:=DRQT(0, LOTOTALREQ);         <<01791>>25138000
   PUTDNUMP(*);                                                <<01791>>25140000
   PRINTLINE;                                                  <<01791>>25142000
                                                               <<01791>>25144000
   MOVE BBUF:="TABLE INDEX OF DISABLED Q HEAD:";               <<01791>>25146000
   PUTOCTNZ(DRQT(0, DISABLEDQHEAD), 41);                       <<*9093>>25148000
   PRINTLINE;                                                  <<01791>>25150000
                                                               <<01791>>25152000
   MOVE BBUF:="TABLE INDEX OF DISABLED Q TAIL:";               <<01791>>25154000
   PUTOCTNZ(DRQT(0, DISABLEDQTAIL), 41);                       <<*9093>>25156000
   PRINTLINE;                                                  <<01791>>25158000
                                                                        25160000
   MOVE BBUF:="SERIAL WAIT QUEUE HEAD";                                 25162000
   PUTOCTNZ(DRQT(0,DQH'SERWQ), 41);                            <<*9093>>25164000
   PRINTLINE;                                                           25166000
                                                                        25168000
   MOVE BBUF:="HEADER FLAGS";                                           25170000
   PUTOCTNZ(DRQT(0,DQH'FLAGS), 41);                            <<*9093>>25172000
   PRINTLINE;                                                           25174000
                                                                        25176000
                                                               <<01791>>25178000
                                                               << WBT >>25180000
                                                               << WBT >>25182000
   << FOR EACH LDEV PRINT CURRENT ENTRY, QUEUE >>              << WBT >>25184000
                                                               << WBT >>25186000
   PRINTHEADER(INUSE);                                         << WBT >>25188000
   LPDTBASE:=VERIFYP(LPDTDSTNO, LPDTSYSGLOBP D);               <<06460>>25190000
   IF <> THEN                                                  << WBT >>25192000
   BEGIN                                                       << WBT >>25194000
      MOVE BBUF:="**** WARNING! LPDT POINTERS, USED TO ACCESS",2;       25196000
      MOVE    *:=" ACTIVE DRQT ELEMENTS, ",2;                  << WBT >>25198000
      IF LPDTBASE=0D THEN                                      <<06460>>25200000
      BEGIN                                                    << WBT >>25202000
         MOVE *:="NOT VALID.  UNABLE TO FORMAT ACTIVE DRQT ",2;<< WBT >>25204000
         MOVE *:="ELEMENTS. ****";                             << WBT >>25206000
         SKIPLINES(1);                                         << WBT >>25208000
         PRINTLINE;                                            << WBT >>25210000
         GO TO DISABLEDQ;                                      << WBT >>25212000
      END                                                      << WBT >>25214000
      ELSE                                                     << WBT >>25216000
      BEGIN                                                    << WBT >>25218000
         MOVE *:="NOT IN AGREEMENT.  ATTEMPTING TO CONTINUE. ****";     25220000
         SKIPLINES(1);                                         << WBT >>25222000
         PRINTLINE;                                            << WBT >>25224000
      END;                                                     << WBT >>25226000
      END;                                                     << WBT >>25228000
      MAXLDEV:=CORE(LPDTBASE);                                 << MCW >>25230000
      LDN:=1;                                                  << WBT >>25232000
      WHILE LDN<=MAXLDEV DO                                    << WBT >>25234000
      BEGIN                                                    << WBT >>25236000
         DITP:=CORE(LPDTBASE+4D*DOUBLE(LDN) + 2D);             <<06460>>25238000
         IF CORE(LPDTBASE+4D*DOUBLE(LDN)).(0:1)=0 THEN        <<<06460>>25240000
         IF SYSDB(DITP).(0:2)=1 THEN <<DISK>>                  << WBT >>25242000
         BEGIN                                                 << WBT >>25244000
            CREQP:=SYSDB(DITP+DCURRREQP);                      << WBT >>25246000
            QHEADP:=SYSDB(DITP+DQHEADER);                      << WBT >>25248000
            IF LINECOUNT<LNSPERPG-12 THEN SKIPLINES(2) ELSE NEWPAGE;    25250000
            MOVE BBUF(10):="LDEV";                             << WBT >>25252000
            SLEN := ASCII(LDN,-10,BBUF(17));                   <<*8817>>25254000
            IF CREQP=0 THEN                                    << WBT >>25256000
            BEGIN                                              << WBT >>25258000
               BBUF(18):=":";                                  << WBT >>25260000
               @PBUF:=@BBUF+21;                                << WBT >>25262000
               MOVE PBUF:="NO CURRENT REQUEST, ";              << WBT >>25264000
            END;                                               << WBT >>25266000
            PRINTLINE;                                         << WBT >>25268000
            COUNT:=DRQTENTRIES;                                << WBT >>25270000
            IF CREQP<>0 OR QHEADP<>0 THEN PRINTELEMENTHEAD(NOT AVAIL);  25272000
            IF CREQP<>0 THEN                                   << WBT >>25274000
            BEGIN                                              << WBT >>25276000
               PRINTENTRY(CREQP, CURRENT);                     << WBT >>25278000
               SKIPLINES(1);                                   << WBT >>25280000
            END;                                               << WBT >>25282000
            NDX:=QHEADP;                                       << WBT >>25284000
            WHILE NDX<>0 AND COUNT>0 DO                        << WBT >>25286000
            BEGIN                                              << WBT >>25288000
               IF LINECOUNT>LNSPERPG-1 THEN                    << WBT >>25290000
               BEGIN                                           << WBT >>25292000
                  NEWPAGE;                                     << WBT >>25294000
                  PRINTHEADER(INUSE);                          << WBT >>25296000
                  PRINTELEMENTHEAD(NOT AVAIL);                 <<02012>>25298000
               END;                                            << WBT >>25300000
               PRINTENTRY(NDX, INUSE);                         << WBT >>25302000
               NDX:=DRQT(NDX, NEXTREQP);                       << WBT >>25304000
               COUNT:=COUNT-1;                                 << WBT >>25306000
            END;                                               << WBT >>25308000
         END;                                                  << WBT >>25310000
         LDN:=LDN+1;                                           << WBT >>25312000
      END;                                                     << WBT >>25314000
                                                               << WBT >>25316000
   << PRINT DISABLED QUEUE >>                                  << WBT >>25318000
                                                               << WBT >>25320000
   DISABLEDQ:                                                  << WBT >>25322000
   PRINTHEADER(DISABLED);                                      << WBT >>25324000
   NDX:=DRQT(0, DISCQHEAD);                                    << WBT >>25326000
   IF NDX<>0 THEN                                              << WBT >>25328000
   BEGIN                                                       << WBT >>25330000
      PRINTELEMENTHEAD(NOT AVAIL);                             <<02012>>25332000
   END                                                         << WBT >>25334000
   ELSE                                                        << WBT >>25336000
   BEGIN                                                       << WBT >>25338000
      SKIPLINES(2);                                            << WBT >>25340000
      MOVE BBUF(30):="*****  NO DISABLED QUEUE ELEMENTS *****";<< WBT >>25342000
      PRINTLINE;                                               << WBT >>25344000
   END;                                                        << WBT >>25346000
   COUNT:=0;                                                   << WBT >>25348000
   WHILE NDX<>0 AND COUNT<=DRQTENTRIES DO                      << WBT >>25350000
   BEGIN                                                       << WBT >>25352000
      COUNT:=COUNT+1;                                          << WBT >>25354000
      PRINTENTRY(NDX, DISABLED);                               << WBT >>25356000
      NDX:=DRQT(NDX, NEXTREQP);   << SYSBASE RELATIVE INDEX >> << WBT >>25358000
   END;                                                        << WBT >>25360000
                                                               << WBT >>25362000
                                                               << WBT >>25364000
   << PRINT AVAILABLE ENTRIES >>                               << WBT >>25366000
                                                               << WBT >>25368000
   PRINTHEADER(AVAIL);                                         << WBT >>25370000
   COUNT:=0;                                                   << WBT >>25372000
   NDX:=DRQT(0, FIRSTAVAILINDX);                               << WBT >>25374000
   WHILE NDX<>0 AND COUNT<=DRQTENTRIES DO                      << WBT >>25376000
   BEGIN                                                       << WBT >>25378000
      COUNT:=COUNT+1;                                          << WBT >>25380000
      IF COUNT<=AVAIL'LIST'SIZE THEN AVAIL'LIST(COUNT):=NDX;   << WBT >>25382000
      NDX:=DRQT(NDX, NEXTAVAILX);                              << WBT >>25384000
   END;                                                        << WBT >>25386000
   IF COUNT=0 THEN                                             << WBT >>25388000
   BEGIN                                                       << WBT >>25390000
      SKIPLINES(2);                                            << WBT >>25392000
      MOVE BBUF:="*** NO AVAILABLE DRQT ELEMENTS ***";         << WBT >>25394000
      PRINTLINE;                                               << WBT >>25396000
   END                                                         << WBT >>25398000
   ELSE                                                        << WBT >>25400000
   BEGIN                                                       << WBT >>25402000
      IF COUNT>0 THEN PRINTELEMENTHEAD(AVAIL);                 <<02012>>25404000
      IF COUNT>AVAIL'LIST'SIZE THEN COUNT:=AVAIL'LIST'SIZE;    << WBT >>25406000
      WHILE COUNT>0 DO                                         << WBT >>25408000
      BEGIN                                                    << WBT >>25410000
         PRINTENTRY(AVAIL'LIST(COUNT), AVAIL);                 << WBT >>25412000
         COUNT:=COUNT-1;                                       << WBT >>25414000
         IF COUNT>0 AND LINECOUNT>LNSPERPG-1 THEN              << WBT >>25416000
         BEGIN NEWPAGE; PRINTHEADER(AVAIL);PRINTELEMENTHEAD(AVAIL); END;25418000
      END;                                                     << WBT >>25420000
   END;                                                        << WBT >>25422000
<< NOW IT'S TIME TO PRINT ALL THE DRQ ENTRIES THAT HAVE NOT >> <<06460>>25424000
<< ALREADY BEEN PRINTED--THE ENTRIES THAT ARE "IN USE" BUT  >> <<06460>>25426000
<< DONE ( THEY ARE NO LONGER ATTACHED TO A DIT BUT THEY ARE >> <<06460>>25428000
<< NOT ON THE FREE LIST YET).                               >> <<06460>>25430000
                                                               <<06460>>25432000
                                                               <<06460>>25434000
<< FIRST CHECK IF THERE ARE ANY ENTRIES THAT WEREN'T PRINTED >><<06460>>25436000
                                                               <<06460>>25438000
   FOR ICOUNT:=1 UNTIL INTEGER(DRQTENTRIES) DO                 <<06460>>25440000
     IF NOT DRQLIST(ICOUNT) THEN OK:=TRUE;                     <<06460>>25442000
   IF OK THEN                                                  <<06460>>25444000
                                                               <<06460>>25446000
<< PRINT THE REMAINING ENTRIES                               >><<06460>>25448000
                                                               <<06460>>25450000
    BEGIN                                                      <<06460>>25452000
      NEWPAGE;                                                 <<06460>>25454000
      PRINTHEADER(IN'USE'D);                                   <<06460>>25456000
      PRINTELEMENTHEAD(IN'USE'D);                              <<06460>>25458000
      FOR ICOUNT:=1 UNTIL INTEGER(DRQTENTRIES) DO              <<06460>>25460000
         IF NOT DRQLIST(ICOUNT)   AND                          << MCW >>25462000
           NOT(DRQT(LOGICAL(ICOUNT)*DRQTSIZE,0).(14:1)) THEN   << MCW >>25464000
            PRINTENTRY(LOGICAL(ICOUNT)*DRQTSIZE,IN'USE'D);     <<06460>>25466000
    END;                                                       <<06460>>25468000
   FOR ICOUNT:=1 UNTIL INTEGER(DRQTENTRIES) DO                          25470000
      IF NOT DRQLIST(ICOUNT) THEN                                       25472000
        BEGIN                                                           25474000
         PRINT'LDR(LOGICAL(ICOUNT)*DRQTSIZE,DRQTBASE,LDR'FIRST);        25476000
         LDR'FIRST:=FALSE;                                              25478000
        END;                                                            25480000
                                                                        25482000
                                                               << WBT >>25484000
                                                               << WBT >>25486000
END;                                                           << WBT >>25488000
                                                                        25490000
$PAGE "PRINTILT : Format the interrupt linkage table"                   25492000
$CONTROL SEGMENT=TABLESIO                                               25494000
PROCEDURE PRINTILT;                                                     25496000
COMMENT                                                                 25498000
                                                                        25500000
Purpose:                                                                25502000
      This procedure will format and print the interrupt linkage        25504000
      table.                                                            25506000
                                                                        25508000
Input parameters:                                                       25510000
      None.                                                             25512000
                                                                        25514000
Output parameters:                                                      25516000
      None.                                                             25518000
                                                                        25520000
Globals Referenced:                                                     25522000
                                                                        25524000
Globals Altered:                                                        25526000
                                                                        25528000
Data Structures:                                                        25530000
                                                                        25532000
Algorithm:                                                              25534000
                                                                        25536000
;                                                                       25538000
      BEGIN                                                             25540000
         DOUBLE LOCILT,LOCSIOP,SCRATCH;                                 25542000
         DOUBLE LPDTBASE:=%1010D,LPDTPTR,DITPTR,SCRATCHA;               25544000
         INTEGER HIENTNO,WORKA,IDX;                                     25546000
          INTEGER WORK2,DRTNO,SIOSIZE,HIGHDRT,                <<<01.02>>25548000
         INDX,INDX2;                                                    25550000
         LOGICAL WORK1,WORK3;                                 <<<01.02>>25552000
         INTEGER MINDRT;                                       <<03013>>25554000
         LOGICAL VALID'DRTS;                                   <<03013>>25556000
         LOGICAL WORKP;             <<CURRENT SIO POINTER>>    <<00221>>25558000
         IF (SERIES'33'THRU'MM) OR (NEW'ILT'FORMAT) THEN       <<s7920>>25560000
           BEGIN                                               <<01296>>25562000
             PRINTNEWILT;                                      <<02012>>25564000
             RETURN;                                           <<01296>>25566000
           END;                                                <<01296>>25568000
         NEWPAGE;                                                       25570000
         INDXARAY(%52*2):=PAGENO;                                       25572000
         MOVE DBUFFER(23)                                               25574000
         :="******    INTERRUPT LINKAGE TABLE    ******";               25576000
         PRINTLINE;                                                     25578000
         SKIPLINES(3);                                                  25580000
                <<DETERMINE MINDRT AND HIGHDRT>>               <<03013>>25582000
                <<INSURE DRT'TABLE'ADDRESS IS INITIALIZED>>    <<03013>>25584000
                <<IF DRTBANK,DRTADDR ARE BAD WE WILL>>         <<03013>>25586000
                <<ATTEMPT TO USE DEFAULT BANK-0 ADDR-0>>       <<03013>>25588000
                <<FOR ALL CPU EXCEPT ICF-55, AND>>             <<03013>>25590000
                <<PRINT WARNING TO THAT EFFECT>>               <<03013>>25592000
                                                               <<03013>>25594000
         TEST'DRT'INFO(MINDRT,HIGHDRT,VALID'DRTS,0);           <<03013>>25596000
                                                               <<03013>>25598000
         IF NOT VALID'DRTS   <<FATAL ICF55/MM DRT PROBLEM>>    <<s7920>>25600000
         THEN GO BAD'DRTS;                                     <<03013>>25602000
         MOVE BBUF(35):="ILT       SIOP";                               25604000
         PRINTLINE;                                                     25606000
         MOVE BBUF:="DRT  SHARED    CHANNEL             SYS DB";        25608000
         MOVE BBUF(45):="SYS DB    SIOP";                               25610000
MOVE BBUF(76):="UNIT EXTRCT  ABS         SIO";                <<<01.02>>25612000
         PRINTLINE;                                                     25614000
         MOVE BBUF:="NO   SEL CHAN  QUEUE               REL ADDR";      25616000
         MOVE BBUF(45)                                                  25618000
:="REL ADDR  SIZE      ";                                     <<<01.02>>25620000
MOVE BBUF(65)                                                 <<<01.02>>25622000
:="Q#  DITP0  INSTRUCTION  ADDRESS    PROGRAM";               <<<01.02>>25624000
         PRINTLINE;                                                     25626000
                                                               <<03013>>25628000
         FOR DRTNO:=MINDRT UNTIL HIGHDRT DO                    <<03013>>25630000
         BEGIN                                                 <<03013>>25632000
            IF INTEGER( GETDRT(DRTNO,0)) = -1                  <<03013>>25634000
            THEN GO BUMP;                                      <<03013>>25636000
                                                               <<03013>>25638000
             <<NOW GET ILT ADDR OUT OF DRT DBI LOCATION>>      <<03013>>25640000
            LOCILT := DOUBLE( GETDRT(DRTNO,2));                <<03013>>25642000
                                                               <<03013>>25644000
            WORK1:=CORE(LOCILT);                               <<03013>>25646000
            IF INTEGER(WORK1).(7:9)<> DRTNO THEN GO BUMP;      <<03013>>25648000
            @PBUF:=@BBUF;                                               25650000
            ASCII(DRTNO,10,PBUF);                                       25652000
            IF WORK1.(0:1)=1 THEN MOVE BBUF(5):="YES"                   25654000
            ELSE MOVE BBUF(5):="NO";     <<SHARED SEL CHAN>>            25656000
            WORK2:=WORK1.(1:6);                                         25658000
            @PBUF:=@BBUF+14;                                            25660000
            PUTNUMP(WORK2);                                             25662000
            @PBUF:=@BBUF+35;                                            25664000
            PUTDNUMP(LOCILT-%1000D);<<ILT SYSDB REL ADR>>      <<01.02>>25666000
            WORK1:=CORE(LOCILT+1D);                                     25668000
            WORK3:=WORK1+%1000;                               <<<01.02>>25670000
            @PBUF:=@BBUF+45;                                            25672000
            PUTNUM(WORK1);     <<SIOP SYSDB REL ADDR>>                  25674000
            WORK1:=CORE(LOCILT+2D);                                     25676000
            @PBUF:=@BBUF+79;                                            25678000
            PUTNUM(WORK1);     <<UNIT EXTRACT INST>>                    25680000
            WORK1:=CORE(LOCILT+3D);                                     25682000
            WORK2:=WORK1.(0:8);                                         25684000
            SIOSIZE:=WORK2;                                             25686000
            @PBUF:=@BBUF+53;                                            25688000
            PUTNUMP(WORK2);     <<IO PGM AREA SIZE>>                    25690000
            WORK2:=WORK1.(8:8);                                         25692000
            @PBUF:=@BBUF+61;                                            25694000
            PUTNUMP(WORK2);     <<CNTRLER Q#>>                          25696000
            WORK1:=CORE(LOCILT+4D);                                     25698000
            @PBUF:=@BBUF+69;                                            25700000
            PUTNUM(WORK1);     <<DIT PNTR UNIT 0>>                      25702000
            TOS:=0;                                                     25704000
            TOS:=CORE(LOCILT+1D)+%1000;                                 25706000
            LOCSIOP:=TOS;                                               25708000
            IF LOCSIOP < 1D THEN GO BUMP;                               25710000
            INDX2:=0;                                                   25712000
            WORKP:= GETDRT(DRTNO,0) - 2; <<LAST SIO>>          <<03013>>25714000
            DO                                                          25716000
            BEGIN                                                       25718000
               IF WORK3=WORKP THEN BBUF(87):="*";              <<00221>>25720000
               @PBUF:=@BBUF+89;                               <<<01.02>>25722000
               PUTNUM(WORK3);  <<ABS ADR OF SIO PROG>>        <<<01.02>>25724000
               WORK3:=WORK3+2; <<INCREMENT ABS ADR>>          <<<01.02>>25726000
               WORK1:=CORE(LOCSIOP+DOUBLE(INDX2));                      25728000
               @PBUF:=@BBUF+97;                                <<00221>>25730000
               PUTNUM(WORK1);     <<SIO PROGRAM>>                       25732000
               @PBUF:=@BBUF+113;                               <<00221>>25734000
               CASE * WORK1.(1:3) OF                           <<00221>>25736000
                BEGIN        <<NAME SIO ORDERS>>               <<00221>>25738000
                 BEGIN       <<0 ORDER>>                       <<00221>>25740000
                  MOVE PBUF:="JUMP";                           <<00221>>25742000
                  IF WORK1.(4:1)=1 THEN                        <<00221>>25744000
                    MOVE PBUF(5):="(CONDITIONAL)";             <<00221>>25746000
                 END;        <<0>>                             <<00221>>25748000
                 BEGIN       <<1 ORDER>>                       <<00221>>25750000
                  IF WORK1.(4:1) = 0 THEN                      <<00221>>25752000
                    MOVE PBUF:="RETURN RESIDUE"                <<00221>>25754000
                   ELSE                                        <<00221>>25756000
                    MOVE PBUF:="SET BANK";                     <<00221>>25758000
                 END;        <<1>>                             <<00221>>25760000
                 MOVE PBUF:="INTERRUPT";  <<2>>                <<00221>>25762000
                 BEGIN       <<3 ORDER>>                       <<00221>>25764000
                  MOVE PBUF:="END";                            <<00221>>25766000
                  @PBUF:=@PBUF+4;                              <<00221>>25768000
                  IF WORK1.(4:1)=0 THEN                        <<00221>>25770000
                    MOVE PBUF:="(NO INTERRUPT)"                <<00221>>25772000
                   ELSE                                        <<00221>>25774000
                    MOVE PBUF:="WITH INTERRUPT";               <<00221>>25776000
                 END;        <<3 ORDER>>                       <<00221>>25778000
                 MOVE PBUF:="CONTROL";   <<4>>                 <<00221>>25780000
                 MOVE PBUF:="SENSE";     <<5>>                 <<00221>>25782000
                 MOVE PBUF:="WRITE";     <<6>>                 <<00221>>25784000
                 MOVE PBUF:="READ";      <<7>>                 <<00221>>25786000
                END;                   <<**NAME SIO ORDER>>    <<00221>>25788000
               INDX2:=INDX2+1;                                          25790000
               @PBUF:=@BBUF+105;                               <<00221>>25792000
               WORK1:=CORE(LOCSIOP+DOUBLE(INDX2));                      25794000
               PUTNUM(WORK1);                                           25796000
               PRINTLINE;                                               25798000
               INDX2:=INDX2+1;                                          25800000
            END UNTIL INDX2 >= SIOSIZE;                                 25802000
            PRINTLINE;                                                  25804000
BUMP:                                                                   25806000
         END;                                                           25808000
BAD'DRTS:  <<EXIT HERE QUICK IF DRTS ARE BAD>>                 <<03013>>25810000
      END;                                                              25812000
                                                                        25814000
$PAGE "PRINTNEWILT : Print the new interrupt linkage table"             25816000
$CONTROL SEGMENT=TABLESDS                                      <<*8892>>25818000
PROCEDURE PRINTNEWILT;                                         <<02012>>25820000
COMMENT                                                                 25822000
                                                                        25824000
Purpose:                                                                25826000
   This procedure will format and print the interrupt linkage           25828000
   table.  Both ii/iii and hpib ilt's are handled                       25830000
                                                                        25832000
Input parameters:                                                       25834000
   None.                                                                25836000
                                                                        25838000
Output parameters:                                                      25840000
   None.                                                                25842000
                                                                        25844000
Globals Referenced:                                                     25846000
                                                                        25848000
Globals Altered:                                                        25850000
                                                                        25852000
Data Structures:                                                        25854000
                                                                        25856000
Algorithm:                                                              25858000
                                                                        25860000
;                                                                       25862000
      BEGIN                                                    <<00.01>>25864000
         DOUBLE LOCILT,LOCSIOP,LOCSTAP,SCRATCH;                <<00.01>>25866000
         DOUBLE LPDTBASE:=%1010D,LPDTPTR,DITPTR,SCRATCHA;      <<00.01>>25868000
          LOGICAL VALID'DRTS;                                  <<03013>>25870000
         INTEGER DBI'OFFSET;                                   <<03013>>25872000
         INTEGER HIENTNO,WORKA,IDX;                            <<00.01>>25874000
          INTEGER WORK2,DRTNO,SIOSIZE,HIGHDRT,LOWDRT,DBIADR,   <<01300>>25876000
         LSTAT,INDEX, CPVAX, STATX, INSTRLEN, COUNT;           <<02012>>25878000
         LOGICAL WORK1,WORK3, IOT;                             <<02012>>25880000
   SUBROUTINE ILTHEAD;                                         <<02012>>25882000
   BEGIN                                                       <<02012>>25884000
      MOVE BBUF(35):="ILT      WAIT   SIOP";                   <<02012>>25886000
      PRINTLINE;                                               <<02012>>25888000
      MOVE BBUF:=                                              <<02012>>25890000
      "DRT  SHARED    CHANNEL             SYS DB";             <<02012>>25892000
      MOVE BBUF(44):="PROG   SYS DB    SIOP";                  <<02012>>25894000
      MOVE BBUF(82):="UNIT EXTRCT  ABS         SIO";           <<02012>>25896000
      PRINTLINE;                                               <<02012>>25898000
      MOVE BBUF:=                                              <<02012>>25900000
      "NO   SEL CHAN  QUEUE     CPVA      REL ADDR";           <<02012>>25902000
      MOVE BBUF(44)                                            <<02012>>25904000
      :="STATUS REL ADDR  SIZE      ";                         <<02012>>25906000
      MOVE BBUF(71)                                            <<02012>>25908000
      :="Q#  DITP0  INSTRUCTION  ADDRESS     PROGRAM";         <<02012>>25910000
      PRINTLINE;                                               <<02012>>25912000
      SKIPLINES(1);                                            <<02012>>25914000
   END; << ILTHEAD >>                                          <<02012>>25916000
   SUBROUTINE DOCPVASTAT;                                      <<02012>>25918000
   BEGIN                                                       <<02012>>25920000
      IF CPVAX<4 THEN                                          <<02012>>25922000
      BEGIN                                                    <<02012>>25924000
         @PBUF:=@BBUF+23;                                      <<02012>>25926000
         PUTNUM(CORE(LOCILT+DOUBLE(CPVAX)));                   <<02012>>25928000
         CPVAX:=CPVAX+1;                                       <<02012>>25930000
      END;                                                     <<02012>>25932000
      IF STATX<LSTAT THEN                                      <<02012>>25934000
      BEGIN                                                    <<02012>>25936000
         @PBUF:=@BBUF+44;                                      <<02012>>25938000
         PUTNUM(CORE(LOCSTAP+DOUBLE(STATX)));                  <<02012>>25940000
         STATX:=STATX+1;                                       <<02012>>25942000
      END;                                                     <<02012>>25944000
   END; <<DOCPVASTAT>>                                         <<02012>>25946000
         NEWPAGE;                                              <<00.01>>25948000
         INDXARAY(%52*2):=PAGENO;                              <<00.01>>25950000
         MOVE DBUFFER(23)                                      <<00.01>>25952000
         :="******    INTERRUPT LINKAGE TABLE    ******";      <<00.01>>25954000
         PRINTLINE;                                            <<03013>>25956000
                                                               <<03013>>25958000
         SKIPLINES(3);                                         <<03013>>25960000
                <<DETERMINE LOWDRT AND HIGHDRT>>               <<03013>>25962000
                <<INSURE DRT'TABLE'ADDRESS IS INITIALIZED>>    <<03013>>25964000
                <<IF DRTBANK,DRTADDR ARE BAD WE WILL>>         <<03013>>25966000
                <<ATTEMPT TO USE DEFAULT BANK-0 ADDR-0>>       <<03013>>25968000
                <<FOR ALL CPU EXCEPT ICF-55, AND>>             <<03013>>25970000
                <<PRINT WARNING TO THAT EFFECT>>               <<03013>>25972000
                                                               <<03013>>25974000
         TEST'DRT'INFO(LOWDRT,HIGHDRT,VALID'DRTS,0);           <<03013>>25976000
                                                               <<03013>>25978000
         IF NOT VALID'DRTS   <<FATAL ICF55/MM DRT PROBLEM>>    <<s7920>>25980000
         THEN GO BAD'DRTS;    <<CAN NOT PRINT TABLES>>         <<03013>>25982000
                                                               <<03013>>25984000
                                                               <<03013>>25986000
ILTHEAD;                                                       <<02012>>25988000
         DRTNO:=3;                                             <<00.01>>25990000
                                                               <<03013>>25992000
                                                               <<03013>>25994000
                                                               <<03013>>25996000
         FOR DRTNO:=LOWDRT UNTIL HIGHDRT DO                    <<03013>>25998000
         BEGIN                                                 <<03013>>26000000
            IF INTEGER ( GETDRT(DRTNO,0)) = -1 THEN GO BUMP;   <<03013>>26002000
                                                               <<03013>>26004000
            DBI'OFFSET := ( IF SERIES'33'THRU'MM               <<s7920>>26006000
                            THEN 1 ELSE 2 );                   <<03013>>26008000
                                                               <<03013>>26010000
            << NOW GET THE ILT ADR. OUT OF THE DRT DBI LOC >>  <<03013>>26012000
            LOCILT := DOUBLE(GETDRT(DRTNO,DBI'OFFSET));        <<03013>>26014000
            WORK1:=CORE(LOCILT+7D);                            <<03013>>26016000
            IF INTEGER(WORK1).(7:9)<> DRTNO THEN GO BUMP;      <<03013>>26018000
            @PBUF:=@BBUF;                                      <<00.01>>26020000
            ASCII(DRTNO,10,PBUF);                              <<00.01>>26022000
            IF WORK1.(0:1)=1 THEN MOVE BBUF(5):="YES"          <<00.01>>26024000
            ELSE MOVE BBUF(5):="NO";     <<SHARED SEL CHAN>>   <<00.01>>26026000
            WORK2:=WORK1.(1:6);                                <<00.01>>26028000
            @PBUF:=@BBUF+14;                                   <<00.01>>26030000
            PUTNUMP(WORK2);                                    <<00.01>>26032000
            @PBUF :=  @BBUF+24;                                <<00.01>>26034000
            PUTNUM(CORE(LOCILT+7D));                           <<00.01>>26036000
            @PBUF:=@BBUF+35;                                   <<00.01>>26038000
            PUTNUM(INTEGER(LOCILT-%1000D));<<ILT SYSDB REL AD>><<*8818>>26040000
            WORK1:=CORE(LOCILT+8D);                            <<00.01>>26042000
            WORK3:=WORK1+%1000;                                <<00.01>>26044000
            @PBUF:=@BBUF+51;                                   <<00.01>>26046000
            PUTNUM(WORK1);     <<SIOP SYSDB REL ADDR>>         <<00.01>>26048000
            WORK1:=CORE(LOCILT+10D);                           <<00.01>>26050000
            @PBUF:=@BBUF+85;                                   <<00.01>>26052000
            PUTNUM(WORK1);     <<UNIT EXTRACT INST>>           <<00.01>>26054000
            WORK1:=CORE(LOCILT+12D);                           <<00.01>>26056000
            WORK2:=(WORK1.(0:8))*2;                            <<HM.02>>26058000
            SIOSIZE:=WORK2;                                    <<00.01>>26060000
            @PBUF:=@BBUF+59;                                   <<00.01>>26062000
            PUTNUMP(WORK2);     <<IO PGM AREA SIZE>>           <<00.01>>26064000
            WORK2:=WORK1.(8:8);                                <<00.01>>26066000
            @PBUF:=@BBUF+67;                                   <<00.01>>26068000
            PUTNUMP(WORK2);     <<CNTRLER Q#>>                 <<00.01>>26070000
            WORK1:=CORE(LOCILT+14D);                           <<00.01>>26072000
            @PBUF:=@BBUF+75;                                   <<00.01>>26074000
            PUTNUM(WORK1);     <<DIT PNTR UNIT 0>>             <<00.01>>26076000
      IOT:=SYSDB(WORK1+3).(0:2);  <<IO TYPE 0->II/III, 1->HPIB><<02012>>26078000
            TOS:=0;                                            <<00.01>>26080000
            TOS:=CORE(LOCILT+8D)+%1000;                        <<00.01>>26082000
            LOCSIOP:=TOS;                                      <<00.01>>26084000
            IF LOCSIOP < 1D THEN GO BUMP;                      <<00.01>>26086000
            TOS := 0;                                          <<00.01>>26088000
            IF (TOS:=CORE(LOCILT+9D))<>0 THEN                  <<00.01>>26090000
              BEGIN <<CALCULATE ADDRESS OF STATUS POINTER>>    <<00.01>>26092000
              ASSEMBLE(DUP);                                   <<00.01>>26094000
              TOS := CORE(LOCILT+8D);                          <<00.01>>26096000
              ASSEMBLE(XCH,LSUB);                              <<00.01>>26098000
              END                                              <<00.01>>26100000
            ELSE TOS := 0;                                     <<00.01>>26102000
            LSTAT := TOS;  <<LENGTH OF STATUS AREA>>           <<00.01>>26104000
            LOCSTAP := TOS + %1000D;                           <<02832>>26106000
            INDEX:=CPVAX:=STATX:=0;                            <<02012>>26108000
            DO                                                 <<00.01>>26110000
            BEGIN                                              <<00.01>>26112000
         << PARSE OPCODE >>                                    <<02012>>26114000
         WORK1:=CORE(LOCSIOP+DOUBLE(INDEX));                   <<02012>>26116000
         @PBUF:=@BBUF+122;                                     <<02012>>26118000
         IF (NOT SERIES'33'THRU'MM) AND (IOT=0) THEN           <<s7920>>26120000
         BEGIN  << SERIES II/III >>                            <<02012>>26122000
            CASE WORK1.(1:3) OF                                <<02012>>26124000
            BEGIN                                              <<02012>>26126000
               BEGIN <<0>>                                     <<02012>>26128000
                  IF WORK1.(4:1)=0 THEN MOVE PBUF:="JUMP"      <<02012>>26130000
                  ELSE MOVE PBUF:="JMP (COND)";                <<02012>>26132000
               END;  <<0>>                                     <<02012>>26134000
               BEGIN <<1>>                                     <<02012>>26136000
                  IF WORK1.(4:1)=0 THEN MOVE PBUF:="RTN RES"   <<02012>>26138000
                  ELSE MOVE PBUF:="SET BANK";                  <<02012>>26140000
               END;                                            <<02012>>26142000
               MOVE PBUF:="INTERRUPT"; <<2>>                   <<02012>>26144000
               BEGIN <<3>>                                     <<02012>>26146000
                  IF WORK1.(4:1)=0 THEN MOVE PBUF:="END NO INT"<<02012>>26148000
                  ELSE MOVE PBUF:="END/INT";                   <<02012>>26150000
               END;  <<3>>                                     <<02012>>26152000
               MOVE PBUF:="CONTROL"; <<4>>                     <<02012>>26154000
               MOVE PBUF:="SENSE";   <<5>>                     <<02012>>26156000
               MOVE PBUF:="WRITE";   <<6>>                     <<02012>>26158000
               MOVE PBUF:="READ";    <<7>>                     <<02012>>26160000
            END; <<CASE>>                                      <<02012>>26162000
            INSTRLEN:=2; << ALL II/III INSTRS ARE 2 WDS >>     <<02012>>26164000
         END   <<SERIES II/III>>                               <<02012>>26166000
         ELSE                                                  <<02012>>26168000
         BEGIN <<HPIB I/O PGM>>                                <<02012>>26170000
            IF WORK1.(0:8)<=17 THEN                            <<02012>>26172000
            CASE WORK1.(0:8) OF                                <<02012>>26174000
            BEGIN                                              <<02012>>26176000
               BEGIN  <<0>>                                    <<02012>>26178000
                  MOVE PBUF:="REL JMP";                        <<02012>>26180000
                  INSTRLEN:=2;                                 <<02012>>26182000
               END;   <<0>>                                    <<02012>>26184000
               BEGIN  <<1>>                                    <<02012>>26186000
                  MOVE PBUF:="INTERRUPT";                      <<02012>>26188000
                  INSTRLEN:=2;                                 <<02012>>26190000
               END;   <<1>>                                    <<02012>>26192000
               BEGIN  <<2>>                                    <<02012>>26194000
                  MOVE PBUF:="WAIT";                           <<02012>>26196000
                  INSTRLEN:=2;                                 <<02012>>26198000
               END;   <<2>>                                    <<02012>>26200000
               BEGIN  <<3>>                                    <<02012>>26202000
                  MOVE PBUF:="READ";                           <<02012>>26204000
                  INSTRLEN:=5;                                 <<02012>>26206000
               END;   <<3>>                                    <<02012>>26208000
               BEGIN  <<4>>                                    <<02012>>26210000
                  MOVE PBUF:="WRITE";                          <<02012>>26212000
                  INSTRLEN:=5;                                 <<02012>>26214000
               END;   <<4>>                                    <<02012>>26216000
               BEGIN  <<5>>                                    <<02012>>26218000
                  MOVE PBUF:="DEV SP JMP";                     <<02012>>26220000
                  INSTRLEN:=WORK1.(8:8)+3;                     <<02012>>26222000
               END;   <<5>>                                    <<02012>>26224000
               BEGIN  <<6>>                                    <<02012>>26226000
                  MOVE PBUF:="IDENTIFY";                       <<02012>>26228000
                  INSTRLEN:=2;                                 <<02012>>26230000
               END;   <<6>>                                    <<02012>>26232000
               BEGIN  <<7>>                                    <<02012>>26234000
                  MOVE PBUF:="READ CTRL";                      <<02012>>26236000
                  INSTRLEN:=5;                                 <<02012>>26238000
               END;   <<7>>                                    <<02012>>26240000
               BEGIN  <<8>>                                    <<02012>>26242000
                  MOVE PBUF:="WRT CTRL";                       <<02012>>26244000
                  INSTRLEN:=5;                                 <<02012>>26246000
               END;   <<8>>                                    <<02012>>26248000
               BEGIN  <<9>>                                    <<02012>>26250000
                  MOVE PBUF:="CLEAR";                          <<02012>>26252000
                  INSTRLEN:=2;                                 <<02012>>26254000
               END;   <<9>>                                    <<02012>>26256000
               BEGIN  <<10>>                                   <<02012>>26258000
                  MOVE PBUF:="RD-MOD-WRT";                     <<02012>>26260000
                  INSTRLEN:=2;                                 <<02012>>26262000
               END;   <<10>>                                   <<02012>>26264000
               BEGIN  <<11>>                                   <<02012>>26266000
                  MOVE PBUF:="READ REG";                       <<02012>>26268000
                  INSTRLEN:=2;                                 <<02012>>26270000
               END;   <<11>>                                   <<02012>>26272000
               BEGIN  <<12>>                                   <<02012>>26274000
                  MOVE PBUF:="WRT REG";                        <<02012>>26276000
                  INSTRLEN:=2;                                 <<02012>>26278000
               END;   <<12>>                                   <<02012>>26280000
               BEGIN  <<13>>                                   <<02012>>26282000
                  MOVE PBUF:="CMD-HPIB";                       <<02012>>26284000
                  INSTRLEN:=5;                                 <<02012>>26286000
               END;   <<13>>                                   <<02012>>26288000
               BEGIN  <<14>>                                   <<02012>>26290000
                  MOVE PBUF:="EXEC DMA";                       <<02012>>26292000
                  INSTRLEN:=5;                                 <<02012>>26294000
               END;   <<14>>                                   <<02012>>26296000
               BEGIN  <<15>>                                   <<02012>>26298000
                  MOVE PBUF:="WRT REL IM";                     <<02012>>26300000
                  INSTRLEN:=2;                                 <<02012>>26302000
               END;   <<15>>                                   <<02012>>26304000
               BEGIN  <<16>>                                   <<02012>>26306000
                  MOVE PBUF:="CRC INIT";                       <<02012>>26308000
                  INSTRLEN:=2;                                 <<02012>>26310000
               END;   <<16>>                                   <<02012>>26312000
               BEGIN  <<17>>                                   <<02012>>26314000
                  MOVE PBUF:="CRC COMP";                       <<02012>>26316000
                  INSTRLEN:=2;                                 <<02012>>26318000
               END;   <<17>>                                   <<02012>>26320000
            END   <<CASE>>                                     <<02012>>26322000
            ELSE INSTRLEN:=1;                                  <<02012>>26324000
         END; <<HPIB>>                                         <<02012>>26326000
      COUNT:=0; << NOW DUMP THE I/O PGM >>                     <<02012>>26328000
      WHILE COUNT<INSTRLEN DO                                  <<02012>>26330000
      BEGIN                                                    <<02012>>26332000
         @PBUF:=@BBUF+95;                                      <<02012>>26334000
         PUTNUM(WORK3+LOGICAL(INDEX));  <<ADDRESS>>            <<02067>>26336000
         @PBUF:=@BBUF+107;                                     <<02012>>26338000
         PUTNUM(CORE(LOCSIOP+DOUBLE(INDEX)));                  <<02012>>26340000
         INDEX:=INDEX+1;                                       <<02012>>26342000
         COUNT:=COUNT+1;                                       <<02012>>26344000
         IF COUNT<INSTRLEN THEN                                <<02012>>26346000
         BEGIN                                                 <<02012>>26348000
            @PBUF:=@BBUF+115;                                  <<02012>>26350000
            PUTNUM(CORE(LOCSIOP+DOUBLE(INDEX)));               <<02012>>26352000
            COUNT:=COUNT+1;                                    <<02012>>26354000
            INDEX:=INDEX+1;                                    <<02012>>26356000
         END;                                                  <<02012>>26358000
         DOCPVASTAT;                                           <<02012>>26360000
         PRINTLINE;                                            <<02012>>26362000
         IF LINECOUNT>=LNSPERPG-1 THEN                         <<02012>>26364000
         BEGIN NEWPAGE; ILTHEAD; END;                          <<02012>>26366000
      END;                                                     <<02012>>26368000
            END UNTIL INDEX >= SIOSIZE;                        <<02012>>26370000
            IF LINECOUNT<LNSPERPG THEN PRINTLINE;              <<02012>>26372000
BUMP:                                                          <<00.01>>26374000
         END;                                                  <<00.01>>26376000
BAD'DRTS:  <<QUICK EXIT IF DRTS ARE BAD>>                      <<03013>>26378000
                                                               <<03013>>26380000
END;                                                           <<03013>>26382000
                                                                        26384000
$PAGE "PRINTLPDT : Format the logical to physical device table"         26386000
$CONTROL SEGMENT=TABLESIO                                               26388000
PROCEDURE PRINTLPDT;                                                    26390000
      BEGIN                                                             26392000
COMMENT                                                                 26394000
                                                                        26396000
Purpose:                                                                26398000
   This procedure will format and print the logical physical            26400000
   device table.                                                        26402000
                                                                        26404000
Input parameters:                                                       26406000
   None.                                                                26408000
                                                                        26410000
Output parameters:                                                      26412000
   None.                                                                26414000
                                                                        26416000
Globals Referenced:                                                     26418000
                                                                        26420000
Globals Altered:                                                        26422000
                                                                        26424000
Data Structures:                                                        26426000
                                                                        26428000
Algorithm:                                                              26430000
                                                                        26432000
;                                                                       26434000
          INTEGER ENTSIZE,HIENTNO,INDX;                       <<<01.02>>26436000
          LOGICAL WORK1,WORK2;                                <<<01.02>>26438000
         DOUBLE LPDTBASE:=%1010D,LPDTPTR;                               26440000
         NEWPAGE;                                                       26442000
         INDXARAY(%15*2):=PAGENO;                                       26444000
         MOVE DBUFFER(23):=                                             26446000
         "******    LOGICAL PHYSICAL - DEVICE TABLE    ******";         26448000
         PRINTLINE;                                                     26450000
         SKIPLINES(3);                                                  26452000
         LPDTPTR:=VERIFYP(%15,%1010D);                         <<01.02>>26454000
         IF <> THEN                                            <<01.02>>26456000
         IF LPDTPTR <> 0D THEN WARNING ELSE                    <<01.02>>26458000
         BEGIN                                                 <<01.02>>26460000
            NOFORMT';                                          <<00221>>26462000
            GO ENDA;                                           <<01.02>>26464000
         END;                                                  <<01.02>>26466000
         MOVE BBUF(11):="SYSDB REL";                                    26468000
         MOVE BBUF(115):="DEVICE";                                      26470000
         PRINTLINE;                                                     26472000
         MOVE BBUF:="LOGICAL    DIT        DEVICE            EOF";      26474000
         MOVE BBUF(96):="ACCEPT     ACCEPT  RECOGNIT";                  26476000
         PRINTLINE;                                                     26478000
         MOVE BBUF:="DEV NO     POINTER   SUBTYPE";                     26480000
         MOVE BBUF(40):="CONDITION           BREAK     CNTRL Y";        26482000
         MOVE BBUF(78):="DUPLIC  INTERACT  JOBS/SESS  DATA";            26484000
         MOVE BBUF(115):="STATE      LOGOFF";                           26486000
         PRINTLINE;                                                     26488000
         SKIPLINES(1);                                                  26490000
         IF LPDTPTR < 1D THEN GO ENDA;                                  26492000
         WORK1:=CORE(LPDTPTR);                                          26494000
         HIENTNO:=WORK1;                                       <<06461>>26496000
         ENTSIZE:=CORE(LPDTPTR+1D);                            <<06461>>26498000
         IF ENTSIZE<>4 THEN                                    <<06461>>26500000
         BEGIN                                                          26502000
            MOVE DBUFFER(23):="INVALID ENTRY SIZE";                     26504000
            PRINTLINE;                                                  26506000
            GO ENDA;                                                    26508000
         END;                                                           26510000
         FOR INDX:=1 UNTIL HIENTNO DO                                   26512000
         BEGIN                                                          26514000
            WORK1:=CORE(LPDTPTR+DOUBLE(INDX*4));               <<06461>>26516000
            WORK2:=CORE(LPDTPTR+DOUBLE(INDX*4+2));             <<06461>>26518000
            IF WORK1=0 AND WORK2=0 THEN GO BUMPA;              <<06461>>26520000
             IF WORK1 = %100000 THEN GO BUMPA;                 <<00221>>26522000
            @PBUF:=@BBUF;                                               26524000
            ASCII(INDX,10,PBUF);     <<LOGICAL DEV NUMBER>>             26526000
            @PBUF:=@BBUF+11;                                            26528000
            PUTNUM(CORE(LPDTPTR+DOUBLE(INDX*4+2)));  <<DIT>>   <<06461>>26530000
            WORK2:=CORE(LPDTPTR+DOUBLE(INDX*4+1));             <<06461>>26532000
            WORK1:=WORK2.(12:4);                                        26534000
            @PBUF:=@BBUF+22;                                            26536000
            ASCII(WORK1,10,PBUF);     <<DEV SUBTYPE>>                   26538000
            CASE * WORK2.(8:2) OF  <<EOF CONDITION>>                    26540000
            BEGIN                                                       26542000
               BEGIN     <<0>>                                          26544000
                  MOVE BBUF(40):="NO EOF";                              26546000
               END;                                                     26548000
               BEGIN     <<1>>                                          26550000
                  MOVE BBUF(40):="HARDWARE EOF";                        26552000
               END;                                                     26554000
               BEGIN     <<2>>                                          26556000
                  MOVE BBUF(40):=":JOB,DATA,EOD,EOJ";                   26558000
               END;                                                     26560000
               BEGIN     <<3>>                                          26562000
                  MOVE BBUF(40):="COLON";                               26564000
               END;                                                     26566000
          END;                                                          26568000
          IF WORK2.(10:1)=1 THEN                                        26570000
          MOVE BBUF(58):="DETECTED";     <<BREAK>>                      26572000
          IF WORK2.(4:1)=1 THEN                                         26574000
          MOVE BBUF(68):="DETECTED";     <<CNTRL Y>>                    26576000
          IF WORK2.(5:1)=1 THEN MOVE BBUF(78):="YES"                    26578000
          ELSE MOVE BBUF(78):="NO";     <<DUPLICATIVE>>                 26580000
          IF WORK2.(6:1)=1 THEN MOVE BBUF(86):="YES"                    26582000
          ELSE MOVE BBUF(86):="NO";     <<INTERACTIVE>>                 26584000
          IF WORK2.(2:1)= 1 THEN MOVE BBUF(96):="YES"                   26586000
          ELSE MOVE BBUF(96):="NO";     <<ACCEPT JOBS/SESSIONS>>        26588000
          IF WORK2.(3:1)=1 THEN MOVE BBUF(107):="YES"                   26590000
          ELSE MOVE BBUF(107):="NO";     <<ACCEPT DATA>>                26592000
          CASE * WORK2.(0:2) OF     <<DEV RECOG STATE>>                 26594000
          BEGIN                                                         26596000
             BEGIN     <<0>>                                            26598000
                MOVE BBUF(115):="NOT OWNED";                            26600000
             END;                                                       26602000
             BEGIN     <<1>>                                            26604000
                MOVE BBUF(115):="OWNED";                                26606000
             END;                                                       26608000
             BEGIN     <<2>>                                            26610000
                MOVE BBUF(115):="SERV REQ";                             26612000
             END;                                                       26614000
             BEGIN     <<3>>                                            26616000
                MOVE BBUF(115):="SERV GNTD";                            26618000
             END;                                                       26620000
          END;                                                          26622000
          IF WORK2.(11:1)=1 THEN MOVE BBUF(126):="YES"                  26624000
          ELSE MOVE BBUF(126):="NO";     <<LOGOFF>>                     26626000
          PRINTLINE;                                                    26628000
BUMPA:                                                                  26630000
        END;                                                            26632000
ENDA:                                                                   26634000
      END;                                                              26636000
                                                                        26638000
$PAGE "PRINTIOQ : Format the I/O queues "                               26640000
$CONTROL SEGMENT=TABLESIO                                               26642000
PROCEDURE PRINTIOQ;                                                     26644000
      BEGIN                                                             26646000
COMMENT                                                                 26648000
                                                                        26650000
Purpose:                                                                26652000
   This procedure will format and print the ioq. the table will         26654000
   be printed from tail to head free list first and then the            26656000
   in use list.                                                         26658000
                                                                        26660000
Input parameters:                                                       26662000
   None.                                                                26664000
                                                                        26666000
Output parameters:                                                      26668000
   None.                                                                26670000
                                                                        26672000
Globals Referenced:                                                     26674000
                                                                        26676000
Globals Altered:                                                        26678000
                                                                        26680000
Data Structures:                                                        26682000
                                                                        26684000
Algorithm:                                                              26686000
                                                                        26688000
;                                                                       26690000
          INTEGER CINUSE,ESIZE,INDX,IX1,TOTELE;                <<01057>>26692000
          LOGICAL WORK1,WORK2,TAPTR,HDPTR,WORK3;               <<01057>>26694000
         DOUBLE IOQPTR:=%1005D,LOCIOQ,TOTREQ,WORKD;                     26696000
          DOUBLE WORKX;     <<ADDRESS OF IOQ ENTRY TO PRINT>>  <<00221>>26698000
          LOGICAL ARRAY LWORKX(*)=WORKX;                       <<00221>>26700000
                                                               <<00221>>26702000
SUBROUTINE PIOQNTRY(NTRY);                                     <<00221>>26704000
   VALUE NTRY;                                                 <<00221>>26706000
   DOUBLE NTRY;   <<CORE ADDRESS OF WORD 0>>                   <<00221>>26708000
   BEGIN                                                       <<00221>>26710000
     @PBUF:=@BBUF+11;                                          <<00221>>26712000
     ASCII(CORE(NTRY+2D),-10,PBUF);  <<LDEV>>                  <<06463>>26714000
     @PBUF:=@BBUF+12;                                          <<00221>>26716000
     PUTNUMP(CORE(NTRY+11D).(1:15));        <<PCB>>                     26718000
     WORK1:=CORE(NTRY);                                        <<00221>>26720000
     WORK2:=CORE(NTRY+4D);                                     <<00221>>26722000
     IF WORK1.(3:1) = 1 THEN                                   <<00221>>26724000
      BEGIN          <<SYSTEM BUFFER>>                         <<00221>>26726000
       MOVE BBUF(20):="SBUF";                                  <<00221>>26728000
       @PBUF:=@BBUF+24;                                        <<00221>>26730000
       PUTNUMP(WORK2);          <<DST INDEX>>                  <<00221>>26732000
       @PBUF:=@BBUF+32;                                        <<00221>>26734000
       PUTNUMP(CORE(NTRY+5D));  <<BUFFER OFFSET>>              <<00221>>26736000
      END            <<SYSTEM BUFFER>>                         <<00221>>26738000
     ELSE                                                      <<00221>>26740000
      IF WORK1.(1:1) = 1 THEN                                  <<00221>>26742000
       BEGIN         <<MAM REQUEST>>                           <<00221>>26744000
        MOVE BBUF(21):="ABS";                                  <<00221>>26746000
        @PBUF:=@BBUF+24;                                       <<00221>>26748000
        PUTNUMP(WORK2.(12:4));    <<BANK>>                     <<00221>>26750000
        @PBUF:=@BBUF+32;                                       <<00221>>26752000
        PUTNUM(CORE(NTRY+5D));    <<OFFSET>>                   <<00221>>26754000
       END                                                     <<00221>>26756000
      ELSE                                                     <<00221>>26758000
       BEGIN         <<DATA SEGMENT>>                          <<00221>>26760000
        IF WORK2.(0:1) = 1 THEN                                <<00221>>26762000
          MOVE BBUF(21):="+DB"                                 <<00221>>26764000
         ELSE                                                  <<00221>>26766000
          MOVE BBUF(21):="SEG";                                <<00221>>26768000
        @PBUF:=@BBUF+24;                                       <<00221>>26770000
        PUTNUMP(WORK2.(4:12));    <<DST NUMBER>>               <<00221>>26772000
        @PBUF:=@BBUF+32;                                       <<00221>>26774000
        PUTNUMP(CORE(NTRY+5D));                                <<00221>>26776000
       END;          <<DATA SEGMENT>>                          <<00221>>26778000
                                                               <<00221>>26780000
     @PBUF:=@BBUF+41;       <<I/O FUNCTION>>                   <<00221>>26782000
     WORK3:=CORE(NTRY+6D).(8:8);                               <<00221>>26784000
     IF WORK3 > 4 THEN PUTNUM(WORK3)                           <<00221>>26786000
      ELSE                                                     <<00221>>26788000
       CASE WORK3 OF                                           <<00221>>26790000
        BEGIN               <<NAME FUNCTION>>                  <<00221>>26792000
         MOVE PBUF:="READ";                                    <<00221>>26794000
         MOVE PBUF:="WRITE";                                   <<00221>>26796000
         MOVE PBUF:="FOPEN";                                   <<00221>>26798000
         MOVE PBUF:="FCLOSE";                                  <<00221>>26800000
         MOVE PBUF:="DCLOSE";  <<DEVICE CLOSE>>                <<00221>>26802000
        END;                <<NAME FUNCTION>>                  <<00221>>26804000
                                                               <<00221>>26806000
     @PBUF:=@BBUF+47;       <<COUNT>>                          <<00221>>26808000
     WORK3:=CORE(NTRY+7D);  <<LOAD COUNT>>                     <<00221>>26810000
     IF WORK3.(0:1) = 1 THEN                                   <<00221>>26812000
      IF WORK3 = %100000 THEN                                  <<01057>>26814000
       BEGIN                   << PUT OUT UNSPECIFIED COUNT >> <<01057>>26816000
        PUTNUMP(WORK3);                                        <<01057>>26818000
        PBUF(-1) := " ";                                       <<01057>>26820000
       END                                                     <<01057>>26822000
      ELSE                                                     <<01057>>26824000
       BEGIN                   << PUT OUT BYTE COUNT >>        <<01057>>26826000
        PUTNUMP(-WORK3);                                       <<01057>>26828000
        PBUF(-1) := "B";                                       <<01057>>26830000
       END                                                     <<01057>>26832000
     ELSE                                                      <<00221>>26834000
      BEGIN                 <<WORD COUNT>>                     <<00221>>26836000
       PUTNUMP(WORK3);      <<OUTPUT COUNT>>                   <<00221>>26838000
       PBUF(-1):="W";       <<WORDS>>                          <<00221>>26840000
      END;                  <<WORD COUNT>>                     <<00221>>26842000
                                                               <<00221>>26844000
     @PBUF:=@BBUF+56;                                          <<00221>>26846000
     PUTNUM(CORE(NTRY+8D)); <<PARM 1>>                         <<00221>>26848000
     @PBUF:=@BBUF+64;                                          <<00221>>26850000
     PUTNUM(CORE(NTRY+9D)); <<PARM 2>>                         <<00221>>26852000
     @PBUF:=@BBUF+72;                                          <<00221>>26854000
     PUTNUM(CORE(NTRY+3D)); <<MISC>>                           <<00221>>26856000
                                                               <<00221>>26858000
     WORK2:=0;       <<COUNTER>>                               <<00221>>26860000
     @PBUF:=@BBUF+80;<<LOCATION>>                              <<00221>>26862000
     PUTNUM(WORK1);         <<FLAGS>>                          <<00221>>26864000
     DO                                                        <<00221>>26866000
      BEGIN                 <<NAME BITS>>                      <<00221>>26868000
       IF WORK1.(0:1) = 1 THEN                                 <<00221>>26870000
        BEGIN               <<BIT IS ON>>                      <<00221>>26872000
        CASE WORK2 OF                                          <<00221>>26874000
         BEGIN              <<NAME CONSISTENT BITS>>           <<00221>>26876000
          MOVE PBUF:="AB";  <<0  ABORT>>                       <<00221>>26878000
          MOVE PBUF:="SP";  <<1  SPECIAL>>                     <<00221>>26880000
          MOVE PBUF:="DI";  <<2  DIAGNOSTIC>>                  <<00221>>26882000
          MOVE PBUF:="SB";  <<3  SYSTEM BUFFER>>               <<00221>>26884000
          MOVE PBUF:="IW";  <<4  IOWAKE>>                      <<00221>>26886000
          MOVE PBUF:="BL";  <<5  BLOCKED FOR IO>>              <<00221>>26888000
          MOVE PBUF:="CO";  <<6  COMPLETED>>                   <<00221>>26890000
          MOVE PBUF:="DF";  <<7  SEG IS FROZEN>>               <<00221>>26892000
          MOVE PBUF:="ME";  <<8  MAM ERROR>>                   <<00221>>26894000
         END;                                                  <<00221>>26896000
        @PBUF:=@PBUF+3;                                        <<00221>>26898000
        END;                <<BIT IS ON>>                      <<00221>>26900000
       WORK1:=WORK1&LSL(1); <<SHIFT NEXT BIT>>                 <<00221>>26902000
      END  UNTIL  (WORK2:=WORK2+1) > 8;  <<TILL ALL>>          <<00221>>26904000
                                                               <<00221>>26906000
     @PBUF:=@BBUF+126;      <<STATUS AT END>>                  <<00221>>26908000
     WORK1:=CORE(NTRY+10D); <<STATUS WORD>>                    <<00221>>26910000
     PUTNUMP(WORK1.(8:8));  <<PUT OUT STATUS>>                 <<00221>>26912000
     @PBUF:=@BBUF+97;  PBUF(-1):=" ";                          <<00221>>26914000
     CASE WORK1.(13:3) OF                                      <<00221>>26916000
      BEGIN                 <<MAJOR BREAK>>                    <<00221>>26918000
       BEGIN                <<0 - PENDING>>                    <<00221>>26920000
        MOVE PBUF:="PENDING";                                  <<00221>>26922000
        CASE WORK1.(8:5) OF                                    <<00221>>26924000
         BEGIN                                                 <<00221>>26926000
          ;         <<0>>                                      <<00221>>26928000
          MOVE PBUF:="WAITING FOR COMPLETION";                 <<00221>>26930000
          MOVE PBUF:="DOING ERROR RECOVERY";                   <<00221>>26932000
          MOVE PBUF:="NOT READY WAIT";                         <<00221>>26934000
          MOVE PBUF:="NO WRITE RING WAIT";                     <<00221>>26936000
          MOVE PBUF:="NEW PAPER TAPE WAIT";                    <<00221>>26938000
         END;                                                  <<00221>>26940000
       END;                 <<0 - PENDING>>                    <<00221>>26942000
                                                               <<00221>>26944000
       BEGIN                <<1 - SUCCESSFUL>>                 <<00221>>26946000
        MOVE PBUF:="SUCCESSFUL";                               <<00221>>26948000
        CASE WORK1.(8:5) OF                                    <<00221>>26950000
         BEGIN                                                 <<00221>>26952000
          MOVE PBUF:="NORMAL COMPLETION";                      <<00221>>26954000
          MOVE PBUF:="TERMINATED BY SPECIAL CHAR";             <<00221>>26956000
          MOVE PBUF:="RETRY FOR SUCCESS REQUIRED";             <<00221>>26958000
          MOVE PBUF:="LOW TAPE OR EOT AFTER WRITE";            <<00221>>26960000
         END;                                                  <<00221>>26962000
       END;                 <<1 - SUCCESSFUL>>                 <<00221>>26964000
                                                               <<00221>>26966000
       BEGIN                <<2 - END OF FILE>>                <<00221>>26968000
        MOVE PBUF:="END OF FILE";                              <<00221>>26970000
        CASE WORK1.(8:5) OF                                    <<00221>>26972000
         BEGIN                                                 <<00221>>26974000
          ;    <<0>>                                           <<00221>>26976000
          MOVE PBUF:="PHYSICAL END OF FILE";                   <<00221>>26978000
          MOVE PBUF:=":DATA    END OF FILE";                   <<00221>>26980000
          MOVE PBUF:=":EOD     END OF FILE";                   <<00221>>26982000
          MOVE PBUF:=":HELLO   END OF FILE";                   <<00221>>26984000
          MOVE PBUF:=":BYE     END OF FILE";                   <<00221>>26986000
          MOVE PBUF:=":JOB     END OF FILE";                   <<00221>>26988000
          MOVE PBUF:=":EOJ     END OF FILE";                   <<00221>>26990000
         END;                                                  <<00221>>26992000
       END;                 <<2 - END OF FILE>>                <<00221>>26994000
                                                               <<00221>>26996000
       BEGIN                <<3 - UNUSUAL CONDITION>>          <<00221>>26998000
        MOVE PBUF:="UNUSUAL CONDITION";                        <<00221>>27000000
        CASE WORK1.(8:5) OF                                    <<00221>>27002000
         BEGIN                                                 <<00221>>27004000
          ;    <<0>>                                           <<00221>>27006000
          MOVE PBUF:="TERMINAL PARITY ERROR";                  <<00221>>27008000
          MOVE PBUF:="TERMINAL READ TIMED OUT";                <<00221>>27010000
          MOVE PBUF:="I/O ABORTED EXTERNALLY";                 <<00221>>27012000
          MOVE PBUF:="DATA LOST          ";                    <<00221>>27014000
          MOVE PBUF:="DATA SET NOT READY OR NOT ONLINE";       <<00221>>27016000
          MOVE PBUF:="ABORTED BECAUSE OF POWER FAIL";          <<00221>>27018000
          MOVE PBUF:="BOT AND BSR, BSF REQUEST";               <<00221>>27020000
          MOVE PBUF:="TAPE RUNAWAY       ";                    <<00221>>27022000
          MOVE PBUF:="EOT AND WRITE REQUEST";                  <<00221>>27024000
          MOVE PBUF:="NO WRITE RING AFTER ASKED OPERATOR";     <<00221>>27026000
          MOVE PBUF:="END OF TAPE (PAPER TAPE LOW)";           <<00221>>27028000
          MOVE PBUF:="PLOTTER LIMIT SWITCH REACHED";           <<00221>>27030000
          MOVE PBUF:="ENABLE SUBSYS BREAK, NO CNTL Y PIN";     <<00221>>27032000
          MOVE PBUF:="READ TIME RETURNED OVERFLOW";            <<00221>>27034000
          MOVE PBUF:="BREAK STOPPED READ ";                    <<00221>>27036000
          MOVE PBUF:="WRITE AND NO CARD IN WRITE STATION";     <<00221>>27038000
         END;                                                  <<00221>>27040000
       END;                 <<3 - UNUSUAL CONDITION>>          <<00221>>27042000
                                                               <<00221>>27044000
       BEGIN                <<4 - IRRECOVERABLE ERROR>>        <<00221>>27046000
        MOVE PBUF:="IRRECOVERABLE ERROR";                      <<00221>>27048000
        CASE WORK1.(8:5) OF                                    <<00221>>27050000
         BEGIN                                                 <<00221>>27052000
          MOVE PBUF:="INVALID REQUEST    ";                    <<00221>>27054000
          MOVE PBUF:="TRANSMISSION ERROR ";                    <<00221>>27056000
          MOVE PBUF:="I/O TIMED OUT      ";                    <<00221>>27058000
          MOVE PBUF:="TIMING ERROR ON TRANSFER";               <<00221>>27060000
          MOVE PBUF:="SIO FAILURE        ";                    <<00221>>27062000
          MOVE PBUF:="UNIT FAILURE       ";                    <<00221>>27064000
          MOVE PBUF:="INVALID DISC ADDRESS";                   <<00221>>27066000
          MOVE PBUF:="TAPE PARITY ERROR  ";                    <<00221>>27068000
          MOVE PBUF:="PAPER TAPE TAPE ERROR";                  <<00221>>27070000
          MOVE PBUF:="SYSTEM ERROR       ";                    <<00221>>27072000
          MOVE PBUF:="INVALID SBUF INDEX ";                    <<00221>>27074000
         END;                                                  <<00221>>27076000
       END;                 <<4 - IRRECOVERABLE ERROR>>        <<00221>>27078000
      END;                  <<MAJOR BREAK>>                    <<00221>>27080000
   END;          <<SUBROUTINE PIOQNTRY>>                       <<00221>>27082000
         NEWPAGE;                                                       27084000
         INDXARAY(%13*2):=PAGENO;                                       27086000
         MOVE DBUFFER(23):=                                             27088000
         "******    I/O REQUEST TABLE (FREE LIST)    ******";           27090000
         PRINTLINE;                                                     27092000
         SKIPLINES(3);                                                  27094000
         LOCIOQ:=VERIFYP(%13,%1005D);                          <<01.02>>27096000
         IF <> THEN                                            <<01.02>>27098000
         IF LOCIOQ <> 0D THEN WARNING ELSE                     <<01.02>>27100000
         BEGIN                                                 <<01.02>>27102000
            NOFORMT';                                          <<00221>>27104000
            GO BAILOUT;                                        <<01.02>>27106000
         END;                                                  <<01.02>>27108000
         WORK1:=CORE(LOCIOQ);                                           27110000
         MOVE BBUF:="ELEMENTS IN TABLE";                                27112000
         @PBUF:=@BBUF+40;                                               27114000
        ASCII(WORK1,10,PBUF);  <<ELEMENTS IN TABLE>>           <<06463>>27116000
         TOTELE:=WORK1;                                        <<06463>>27118000
         MOVE BBUF(52):="MAXIMUM NUMBER OF ELEMENTS IN USE";            27120000
         WORK2:=CORE(LOCIOQ+6D);                               <<06463>>27122000
         @PBUF:=@BBUF+92;                                               27124000
         ASCII(WORK2,10,PBUF);  <<MAX# ELEMENTS IN USE>>       <<06463>>27126000
         PRINTLINE;                                                     27128000
         MOVE BBUF:="ELEMENTS IN PRIMARY AREA";                         27130000
         WORK2:=CORE(LOCIOQ+2D);                               <<06463>>27132000
         @PBUF:=@BBUF+40;                                               27134000
         ASCII(WORK2,10,PBUF);  <<ELEMENTS IN PRIMARY>>        <<06463>>27136000
         MOVE BBUF(52):="CURRENT NUMBER OF ELEMENTS IN USE";            27138000
         CINUSE:=CORE(LOCIOQ+7D);                              <<06463>>27140000
         @PBUF:=@BBUF+92;                                               27142000
         ASCII(CINUSE,10,PBUF); <<CURRENT# INUSE>>                      27144000
         PRINTLINE;                                                     27146000
         MOVE BBUF:="SIZE OF EACH ELEMENT";                             27148000
         ESIZE:=CORE(LOCIOQ+1D);                               <<06463>>27150000
         @PBUF:=@BBUF+40;                                               27152000
         ASCII(ESIZE,10,PBUF);  <<ENTRY SIZE>>                          27154000
         MOVE BBUF(52):="OVERFLOWS";                                    27156000
         WORK2:=CORE(LOCIOQ+8D);                               <<06463>>27158000
         @PBUF:=@BBUF+92;                                               27160000
         ASCII(WORK2,10,PBUF);  <<OVERFLOWS>>                           27162000
         PRINTLINE;                                                     27164000
         MOVE BBUF:="INDEX OF FIRST FREE ELEMENT";                      27166000
         MOVE BBUF(52):="TOTAL REQUEST";                                27168000
         HDPTR:=CORE(LOCIOQ+4D);                               <<06463>>27170000
         TAPTR:=CORE(LOCIOQ+5D);                               <<06463>>27172000
         @PBUF:=@BBUF+36;                                               27174000
         PUTNUMP(HDPTR);     <<HEAD POINTER>>                           27176000
         TOS:=CORE(LOCIOQ+9D);                                 <<06463>>27178000
         TOS:=CORE(LOCIOQ+10D);                                <<06463>>27180000
         TOTREQ:=TOS;                                                   27182000
         @PBUF:=@BBUF+87;                                               27184000
         PUTDNUMP(TOTREQ);    <<TOTAL REQUEST>>                         27186000
         PRINTLINE;                                                     27188000
         MOVE BBUF:="INDEX TO LAST FREE ELEMENT";                       27190000
         @PBUF:=@BBUF+36;                                               27192000
         PUTNUMP(TAPTR);     <<TAIL POINTER>>                           27194000
         PRINTLINE;                                                     27196000
         SKIPLINES(1);                                                  27198000
         IF ESIZE <> 12 THEN                                   <<06463>>27200000
         BEGIN                                                 <<01.02>>27202000
            MOVE DBUFFER:=                                     <<01.02>>27204000
"****WARNING! ENTRY SIZE <> 12 WORDS. CONTINUING****";         <<06463>>27206000
            PRINTLINE;                                         <<01.02>>27208000
            SKIPLINES(1);                                      <<01.02>>27210000
            ESIZE:=12;                                         <<06463>>27212000
          END;                                                 <<01.02>>27214000
         PIOQHEAD;                                                      27216000
         IOQIX:=0;     << ZERO OUT SCORECARD FOR FREE LIST>>            27218000
         MOVE IOQIX(1):=IOQIX,(255);                                    27220000
         FOR INDX:=1 UNTIL (TOTELE-CINUSE) DO                           27222000
         BEGIN                                                          27224000
            IF LINECOUNT = LNSPERPG THEN PIOQHEAD;             <<00221>>27226000
            @PBUF:=@BBUF;                                               27228000
            PUTNUMP(TAPTR);     <<TABLE INDEX>>                         27230000
            @PBUF:=@BBUF+9;                                             27232000
            TOS:=0;                                                     27234000
            TOS:=TAPTR;                                                 27236000
            WORKD:=TOS;                                                 27238000
            PIOQNTRY(LOCIOQ+WORKD);  <<PRINT THE ENTRY>>       <<00221>>27240000
            PRINTLINE;                                                  27242000
            IOQIX((TAPTR-8)/12):=TAPTR;   <<MARK FREE IN INDEX><<06463>>27244000
            IF TAPTR=HDPTR THEN GO QUIT;                                27246000
            IX1:=13;                                           <<06463>>27248000
            WHILE IX1<= (TOTELE*ESIZE+13) DO                   <<06463>>27250000
            BEGIN                                                       27252000
               WORK1:=CORE(LOCIOQ+DOUBLE(IX1));                         27254000
               IF WORK1 =TAPTR THEN GO BOUT                             27256000
               ELSE IX1:=IX1+ESIZE;                                     27258000
            END;                                                        27260000
BOUT:                                                                   27262000
            IF WORK1=TAPTR THEN                                         27264000
            TAPTR:=IX1-1                                                27266000
            ELSE                                                        27268000
            BEGIN                                                       27270000
               MOVE BBUF:="BROKEN IOQ LINK";                            27272000
               PRINTLINE;                                               27274000
               GO BAILOUT;                                              27276000
            END;                                                        27278000
         END;                                                           27280000
QUIT:                                                                   27282000
         SKIPLINES(2);                                                  27284000
         IF LINECOUNT > LNSPERPG-18 THEN NEWPAGE;              <<00221>>27286000
         MOVE DBUFFER(23):=                                             27288000
         "******    I/O REQUEST TABLE (IN USE LIST)    ******";         27290000
         PRINTLINE;                                                     27292000
         SKIPLINES(3);                                                  27294000
         PIOQHEAD;                                                      27296000
         FOR IX1:=0 UNTIL (TOTELE-1) DO                                 27298000
         BEGIN                                                          27300000
            IF IOQIX(IX1) =0 THEN                                       27302000
            BEGIN                                                       27304000
               TAPTR:=(IX1*ESIZE+12);                          <<06463>>27306000
               TOS:=0;                                                  27308000
            IF TAPTR.(0:1)=1 THEN TOS:=TAPTR+%1000             <<01.02>>27310000
            ELSE TOS:=TAPTR;                                   <<01.02>>27312000
               WORKD:=TOS;                                              27314000
            IF LINECOUNT = LNSPERPG THEN PIOQHEAD;             <<00221>>27316000
            @PBUF:=@BBUF;                                               27318000
            WORKX:=LOCIOQ+WORKD;    <<ADDRESS OF ENTRY>>       <<00221>>27320000
            PUTNUMP(TAPTR);  <<ADDRESS OF ENTRY>>              <<06463>>27322000
            PIOQNTRY(WORKX);         <<PRINT THE ENTRY>>       <<00221>>27324000
            PRINTLINE;                                                  27326000
         END;                                                           27328000
       END;                                                             27330000
BAILOUT:                                                                27332000
     END;                                                               27334000
                                                                        27336000
$PAGE "PIOQHEAD :  Print an I/O queue header."                          27338000
$CONTROL SEGMENT=TABLESIO                                               27340000
PROCEDURE PIOQHEAD;                                                     27342000
      BEGIN                                                             27344000
COMMENT                                                                 27346000
                                                                        27348000
Purpose:                                                                27350000
   This procedure is  called to format the head of an I/O queue.        27352000
                                                                        27354000
Input parameters:                                                       27356000
   None.                                                                27358000
                                                                        27360000
Output parameters:                                                      27362000
   None.                                                                27364000
                                                                        27366000
Globals Referenced:                                                     27368000
                                                                        27370000
Globals Altered:                                                        27372000
                                                                        27374000
Data Structures:                                                        27376000
                                                                        27378000
Algorithm:                                                              27380000
                                                                        27382000
;                                                                       27384000
         IF LINECOUNT > LNSPERPG-10 THEN NEWPAGE;              <<00221>>27386000
         MOVE BBUF:="TABLE  LOGICAL      ADDR        BUFFER";  <<00221>>27388000
         PRINTLINE;                                            <<00221>>27390000
         MOVE BBUF:="INDEX  DEVICE  PCB   REL   DST  ADDRESS"; <<00221>>27392000
         MOVE BBUF(41):="FUNC   COUNT   PARM1   PARM2   MISC"; <<00221>>27394000
         MOVE BBUF(80):="FLAGS..........  STATUS DESCRIPTION"; <<00221>>27396000
         MOVE BBUF(126):="STATUS";                             <<00221>>27398000
         PRINTLINE;                                                     27400000
         SKIPLINES(1);                                                  27402000
      END;                                                              27404000
$PAGE "PRINT TERMINAL BUFFERS"                                 <<01.3A>>27406000
                                                                        27408000
$PAGE "PRINTSBUF : Format the system buffers"                           27410000
$CONTROL SEGMENT=TABLESIO                                               27412000
PROCEDURE PRINTSBUF;                                                    27414000
COMMENT                                                                 27416000
                                                                        27418000
Purpose:                                                                27420000
      This procedure will print the header to the system buffers        27422000
      analyze the information and trace the links from head to          27424000
      tail.                                                             27426000
                                                                        27428000
Input parameters:                                                       27430000
                                                                        27432000
Output parameters:                                                      27434000
                                                                        27436000
Globals Referenced:                                                     27438000
                                                                        27440000
Globals Altered:                                                        27442000
                                                                        27444000
Data Structures:                                                        27446000
                                                                        27448000
Algorithm:                                                              27450000
                                                                        27452000
;                                                                       27454000
      BEGIN                                                             27456000
          INTEGER WORK3,CINUSE,ESIZE,INDX,COUNT,              <<<01.02>>27458000
                 TOTELE,IX1 ,TAPTR,HDPTR,PRIM,MAX;             <<06462>>27460000
          LOGICAL WORK1,WORK2;                                <<<01.02>>27462000
         DOUBLE SBUFFER:=%1006D,LOCSBUF,TOTREQ;                         27464000
         NEWPAGE;                                                       27466000
         INDXARAY(%10*2):=PAGENO;                                       27468000
         MOVE DBUFFER(23):=                                             27470000
         "******    SYSTEM BUFFER ANALYSIS    ******";                  27472000
         PRINTLINE;                                                     27474000
         SKIPLINES(3);                                                  27476000
         LOCSBUF:=VERIFYP(%10,%1006D);                         <<01.02>>27478000
         IF <> THEN                                            <<01.02>>27480000
         IF LOCSBUF <> 0D THEN WARNING ELSE                    <<01.02>>27482000
         BEGIN                                                 <<01.02>>27484000
            NOFORMT';                                          <<00221>>27486000
            GO BAILOUT;                                        <<01.02>>27488000
         END;                                                  <<01.02>>27490000
         TOTELE:=CORE(LOCSBUF);                                <<06462>>27492000
         MOVE BBUF:="ELEMENTS IN TABLE";                                27494000
         @PBUF:=@BBUF+40;                                               27496000
         ASCII(TOTELE,10,PBUF);     <<ELEMENTS IN TABLE>>               27498000
         MOVE BBUF(52):="MAXIMUM NUMBER OF ELEMENTS IN USE";            27500000
         CINUSE:=CORE(LOCSBUF+7D);                             <<06462>>27502000
         MAX:=CORE(LOCSBUF+6D);                                <<06462>>27504000
         @PBUF:=@BBUF+92;                                               27506000
         ASCII(MAX,10,PBUF);     <<MAX# ELEMENTS IN USE>>      <<06462>>27508000
         PRINTLINE;                                                     27510000
         MOVE BBUF:="ELEMENTS IN PRIMARY AREA";                         27512000
         PRIM:=CORE(LOCSBUF+2D);                               <<06462>>27514000
         @PBUF:=@BBUF+40;                                               27516000
         ASCII(PRIM,10,PBUF);     <<ELEMENTS IN PRIMARY>>      <<06462>>27518000
         MOVE BBUF(52):="CURRENT NUMBER OF ELEMENTS IN USE";            27520000
         @PBUF:=@BBUF+92;                                               27522000
         ASCII(CINUSE,10,PBUF);     <<CURRENT # IN USE>>                27524000
         PRINTLINE;                                                     27526000
         MOVE BBUF:="SIZE OF EACH ELEMENT";                             27528000
         ESIZE:=CORE(LOCSBUF+1D);                              <<06462>>27530000
         @PBUF:=@BBUF+39;                                               27532000
         ASCII(ESIZE,10,PBUF);     <<ENTRY SIZE>>                       27534000
         MOVE BBUF(52):="OVERFLOWS";                                    27536000
         WORK2:=CORE(LOCSBUF+8D);                              <<06462>>27538000
         @PBUF:=@BBUF+92;                                               27540000
         ASCII(WORK2,10,PBUF);     <<OVERFLOWS>>                        27542000
         PRINTLINE;                                                     27544000
         MOVE BBUF:="INDEX OF FIRST FREE ELEMENT";                      27546000
         MOVE BBUF(52):="TOTAL REQUEST";                                27548000
          HDPTR:=INTEGER(CORE(LOCSBUF+4D));                   <<<06462>>27550000
          TAPTR:=INTEGER(CORE(LOCSBUF+5D));                   <<<06462>>27552000
         @PBUF:=@BBUF+36;                                               27554000
         PUTNUMP(HDPTR);     <<HEAD POINTER>>                           27556000
         TOS:=CORE(LOCSBUF+9D);                                <<06462>>27558000
         TOS:=CORE(LOCSBUF+10D);                               <<06462>>27560000
         TOTREQ:=TOS;                                                   27562000
         @PBUF:=@BBUF+87;                                               27564000
         PUTDNUMP(TOTREQ);     <<TOTAL REQUEST>>                        27566000
         PRINTLINE;                                                     27568000
         MOVE BBUF:="INDEX TO LAST FREE ELEMENT";                       27570000
         @PBUF:=@BBUF+36;                                               27572000
         PUTNUMP(TAPTR);     <<TAIL POINTER>>                           27574000
         PRINTLINE;                                                     27576000
         SKIPLINES(1);                                                  27578000
         COUNT:=0;                                                      27580000
         WORK3:=HDPTR;                                                  27582000
         FOR INDX:=1 UNTIL (TOTELE-CINUSE)                              27584000
         DO                                                             27586000
         BEGIN                                                          27588000
           IF ESIZE=0 THEN GO INVI;                            <<00.04>>27590000
            TOS:=WORK3 MOD ESIZE;                                       27592000
            IF TOS <> 13 THEN                                  <<06462>>27594000
            BEGIN                                                       27596000
INVI:                                                          <<00.04>>27598000
               MOVE BBUF:=                                              27600000
               "INVALID INDEX";                                         27602000
               @PBUF:=@BBUF+16;                                         27604000
               PUTNUMP(WORK3);                                          27606000
               PRINTLINE;                                               27608000
               SKIPLINES(1);                                            27610000
               GO OUT1;                                                 27612000
            END ELSE HDPTR:=WORK3;                                      27614000
            COUNT:=COUNT+1;                                             27616000
            IF HDPTR=TAPTR THEN GO OUT1;                                27618000
             WORK3:=INTEGER(CORE(LOCSBUF+DOUBLE(HDPTR-1)));   <<<01.02>>27620000
         END;                                                           27622000
OUT1:                                                                   27624000
         IF COUNT<> (TOTELE-CINUSE) THEN                                27626000
         BEGIN                                                          27628000
            MOVE BBUF:="LINK BROKEN AT";                                27630000
            @PBUF:=@BBUF+16;                                            27632000
            PUTNUMP(HDPTR);                                             27634000
            PRINTLINE;                                                  27636000
            SKIPLINES(1);                                               27638000
            MOVE BBUF:="TOTAL LINKED ELEMENTS =";                       27640000
            @PBUF:=@BBUF+24;                                            27642000
            ASCII(COUNT,10,PBUF);                                       27644000
            PRINTLINE;                                                  27646000
            MOVE BBUF:="TOTAL SHOULD BE";                               27648000
            @PBUF:=@BBUF+24;                                            27650000
            ASCII((TOTELE-CINUSE),10,PBUF);                             27652000
            PRINTLINE;                                                  27654000
            SKIPLINES(1);                                               27656000
         END;                                                           27658000
         IF HDPTR<> TAPTR THEN                                          27660000
         BEGIN                                                          27662000
            MOVE BBUF:="LINKS NOT CONTINUOUS FROM HEAD TO TAIL";        27664000
            PRINTLINE;                                                  27666000
            SKIPLINES(1);                                               27668000
         END;                                                           27670000
         IF ESIZE <> 129 THEN                                           27672000
         BEGIN                                                          27674000
            MOVE BBUF:="INVALID ENTRY SIZE. SHOULD BE %201";            27676000
            PRINTLINE;                                                  27678000
         END;                                                           27680000
BAILOUT:                                                                27682000
      END;                                                              27684000
                                                                        27686000
$PAGE "PRINTTRL : Format the timer request list"                        27688000
$CONTROL SEGMENT=TABLESIO                                               27690000
PROCEDURE PRINTTRL;                                                     27692000
COMMENT                                                                 27694000
                                                                        27696000
Purpose:                                                                27698000
      This procedure will format and print the timer request list       27700000
                                                                        27702000
                                                                        27704000
Input parameters:                                                       27706000
                                                                        27708000
Output parameters:                                                      27710000
                                                                        27712000
Globals Referenced:                                                     27714000
                                                                        27716000
Globals Altered:                                                        27718000
                                                                        27720000
Data Structures:                                                        27722000
                                                                        27724000
Algorithm:                                                              27726000
                                                                        27728000
;                                                                       27730000
      BEGIN                                                             27732000
          INTEGER WORK2,ESIZE,IX1,TOTELE;                     <<<01.02>>27734000
          LOGICAL WORK1;                                      <<<01.02>>27736000
         INTEGER ENTNUM;                                       <<00221>>27738000
         DOUBLE TRLB:=%1012D,LOCTRL,DTIME;                              27740000
         NEWPAGE;                                                       27742000
         INDXARAY(%23*2):=PAGENO;                                       27744000
         MOVE DBUFFER(23):=                                             27746000
         "******    TIMER REQUEST LIST    ******";                      27748000
         PRINTLINE;                                                     27750000
         SKIPLINES(3);                                                  27752000
         LOCTRL:=VERIFYP(%23,%1012D);                          <<01.02>>27754000
         IF <> THEN                                            <<01.02>>27756000
         IF LOCTRL <> 0D THEN WARNING ELSE                     <<01.02>>27758000
         BEGIN                                                 <<01.02>>27760000
            NOFORMT';                                          <<00221>>27762000
            GO BAILOUT;                                        <<01.02>>27764000
         END;                                                  <<01.02>>27766000
         MOVE BBUF:="FREE LIST POINTER";                                27768000
         @PBUF:=@BBUF+30;                                               27770000
         WORK1:=CORE(LOCTRL+2D);                               <<06464>>27772000
         PUTNUM(WORK1);     <<FREE LIST POINTER>>                       27774000
         PRINTLINE;                                                     27776000
         MOVE BBUF:="NUMBER OF ENTRYS";                                 27778000
         @PBUF:=@BBUF+30;                                               27780000
         WORK1:=CORE(LOCTRL);                                  <<06464>>27782000
         TOTELE:=WORK1;                                        <<06464>>27784000
         PUTNUM(TOTELE);     <<# OF ENTRYS>>                            27786000
         PRINTLINE;                                                     27788000
         MOVE BBUF:="ENTRY SIZE";                                       27790000
         @PBUF:=@BBUF+30;                                               27792000
         ESIZE:=CORE(LOCTRL+1D);                               <<06464>>27794000
         ASCII(ESIZE,10,PBUF);                                          27796000
         PRINTLINE;                                                     27798000
         MOVE BBUF:="TRACE WORD";                                       27800000
         WORK1:=CORE(LOCTRL+9D);                               <<06464>>27802000
         @PBUF:=@BBUF+30;                                               27804000
         PUTNUM(WORK1);     <<TRACE WORD>>                              27806000
         PRINTLINE;                                                     27808000
         MOVE BBUF:="QUANTUM/100MS";                                    27810000
         @PBUF:=@BBUF+30;                                               27812000
         WORK1:=CORE(LOCTRL+4D);                               <<s8398>>27814000
         PUTNUM(WORK1);     <<QUANTUM>>                                 27816000
         PRINTLINE;                                                     27818000
         MOVE BBUF:="POINTER TO MOST ACTIVE REQ";                       27820000
         @PBUF:=@BBUF+30;                                               27822000
         WORK1:=CORE(LOCTRL+8D);                                        27824000
         PUTNUM(WORK1);     <<PTR TO MOST ACTIVE REQ>>                  27826000
         PRINTLINE;                                                     27828000
         MOVE BBUF:="DATE";                                             27830000
         MOVE BBUF(30):=STRING,(20);                                    27832000
         PRINTLINE;                                                     27834000
         SKIPLINES(2);                                                  27836000
         MOVE BBUF(30):="TYPE OF             POINTER TO";      <<00221>>27838000
         MOVE BBUF(90):="TIME TO SERVICE";                     <<00221>>27840000
         PRINTLINE;                                                     27842000
         MOVE BBUF:=" ENTRY    REQUEST STATUS      REQUEST";   <<00221>>27844000
         MOVE BBUF(50):="NEXT REQUEST        REQUEST POINTER"; <<00221>>27846000
         MOVE BBUF(90):="REQ IN FRONT (SEC/10)";               <<00221>>27848000
         PRINTLINE;                                                     27850000
         SKIPLINES(1);                                                  27852000
         LOCTRL:=LOCTRL+8D;                                             27854000
         ENTNUM:=%10;<<ENTRY ADDRESS TRL RELATIVE>>            <<01.3A>>27856000
         FOR IX1:=3 UNTIL (TOTELE-1)                                    27858000
         DO                                                             27860000
         BEGIN                                                          27862000
            LOCTRL:=LOCTRL+4D;                                          27864000
            ENTNUM:=ENTNUM+4;<<NEXT ENTRY NUM REL ADR>>        <<01.3A>>27866000
            @PBUF:=@BBUF;                                      <<01.3A>>27868000
            PUTNUMP(ENTNUM);<<REL ENTRY NUMBER>>               <<01.3A>>27870000
            @PBUF:=@BBUF+10;                                   <<01.3A>>27872000
            WORK1:=CORE(LOCTRL);                                        27874000
            IF WORK1.(0:1)=1 THEN                                       27876000
            MOVE PBUF:="ACTIVE" ELSE                           <<01.3A>>27878000
            MOVE PBUF:="INACTIVE";<<REQUEST STATUS>>           <<01.3A>>27880000
            @PBUF:=@BBUF+30;                                   <<01.3A>>27882000
            CASE * WORK1.(1:5) OF                                       27884000
            BEGIN     <<TYPE OF REQUEST>>                               27886000
               BEGIN     <<0>>                                          27888000
            MOVE PBUF:="HANGUP";                               <<01.3A>>27890000
               END;                                                     27892000
               BEGIN     <<1>>                                          27894000
                  MOVE PBUF:="CARRIER FAIL";                            27896000
               END;                                                     27898000
               BEGIN     <<2>>                                          27900000
                  MOVE PBUF:="202TURNAROUND";                           27902000
               END;                                                     27904000
               BEGIN     <<3>>                                          27906000
                  MOVE PBUF:="READ";                                    27908000
               END;                                                     27910000
               BEGIN     <<4>>                                          27912000
                  MOVE PBUF:="LOG ON";                                  27914000
               END;                                                     27916000
               BEGIN     <<5>>                                          27918000
                  MOVE PBUF:="DELAY";                                   27920000
               END;                                                     27922000
               BEGIN     <<6>>                                          27924000
                  MOVE PBUF:="LINE PR NOT RDY";                         27926000
               END;                                                     27928000
               BEGIN     <<7>>                                          27930000
                MOVE PBUF:="2640";                                      27932000
               END;                                                     27934000
               BEGIN                                                    27936000
                MOVE PBUF:="MSG PORT TIMEOUT";                          27938000
               END;                                                     27940000
               BEGIN                                                    27942000
                MOVE PBUF:="BM READ TIMEOUT";                           27944000
               END;                                                     27946000
               BEGIN                                                    27948000
                MOVE PBUF:="WATCH DOG TIMER";                           27950000
               END;                                                     27952000
               ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;<< NULL STMTS >>           27954000
               ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;<< NULL STMTS >>           27956000
           END;                                                         27958000
           WORK2:=WORK1.(6:10);                                         27960000
            @PBUF:=@BBUF+50;                                   <<01.3A>>27962000
            PUTNUMP(WORK2);<<POINTER TO NEXT REQUEST>>         <<01.3A>>27964000
            @PBUF:=@BBUF+80;                                   <<01.3A>>27966000
          WORK2:=INTEGER(CORE(LOCTRL+1D));                    <<<01.02>>27968000
           IF WORK1.(1:5)=%10 THEN MOVE BBUF := "PORT MSK="    <<*9159>>27970000
           ELSE IF WORK1.(1:5)=5 OR WORK1.(1:5)=%12 THEN       <<*9159>>27971000
             MOVE BBUF(70) := "PCBB IX ="                      <<*9159>>27972000
           ELSE MOVE BBUF(70) := "DITP    =";                  <<*9159>>27974000
           PUTNUM(WORK2);                                               27976000
           TOS:=CORE(LOCTRL+2D);                                        27978000
           TOS:=CORE(LOCTRL+3D);                                        27980000
           DTIME:=TOS;                                                  27982000
            @PBUF:=@BBUF+90;                                   <<01.3A>>27984000
           DASCII(DTIME,10,PBUF);     <<TIME TO SERV>>                  27986000
           PRINTLINE;                                                   27988000
        END;                                                            27990000
BAILOUT:                                                                27992000
      END;                                                              27994000
