<< LINES .001/.009 ARE RESERVED FOR SYSTEMS INTEGRATION>>               00000001
$PAGE "DUMPMEM(BANKNO): Print a given memory bank"                      20000000
$CONTROL SEGMENT=MEMORY                                        <<03076>>20002000
PROCEDURE DUMPMEM(BANKNUM);                                    <<03076>>20004000
VALUE BANKNUM;     << BANK BEING DUMPED >>                     <<03076>>20006000
INTEGER BANKNUM;                                               <<03076>>20008000
COMMENT                                                        <<03076>>20010000
                                                                        20012000
Purpose:                                                                20014000
     DUMPMEM(BANKNUM)                                          <<03076>>20016000
     Called exclusively by PRINTMEMORY.                        <<03076>>20018000
     Prints a formatted dump of the memory in bank BANKNUM     <<03076>>20020000
     The contents of the bank are descibed by data records     <<03076>>20022000
     in the array MEMBUF.                                      <<03076>>20024000
     The scanning and classification of the segments in the    <<03076>>20026000
     bank is done by the FILLMEMBUF routine.                   <<03076>>20028000
     DUMPMEM loops through these records, which are            <<03076>>20030000
     assumed to describe consecutive memory segments in        <<03076>>20032000
     the same bank, classifies them, and produces a            <<03076>>20034000
     formatted or octal dump of the memory between the         <<03076>>20036000
     starts of the two consecutive segments.                   <<03076>>20038000
     The flag skip determines whether the dump is an           <<03076>>20040000
     octal dump, a skipped octal dump, or no dump at all.      <<03076>>20042000
     If the segment is a DST, another table, DST'TYPE          <<03076>>20044000
     (created by CATEGORIZE'DSTS) is used to further           <<03076>>20046000
     classify the region.                                      <<03076>>20048000
                                                                        20050000
Input parameters:                                                       20052000
                                                                        20054000
Output parameters:                                                      20056000
                                                                        20058000
Globals Referenced:                                                     20060000
     MEMBUF: records describing the bank created, created by FILLMEMBUF 20062000
                                                                        20064000
Globals Altered:                                                        20066000
                                                                        20068000
Data Structures:                                                        20070000
                                                                        20072000
Algorithm:                                                              20074000
                                                                        20076000
;                                                                       20078000
                                                               <<03076>>20080000
BEGIN                                                          <<03076>>20082000
                                                               <<03076>>20084000
DOUBLE CURAD;      <<STARTING ADR OF CURRENT SEGMENT>>         <<03076>>20086000
DOUBLE NEXTADR;    <<STARTING ADR OF NEXT SEGMENT>>            <<03076>>20088000
DOUBLE BANKBASE;                                               <<03076>>20090000
DOUBLE ENDOFBANK;  << LAST ADDRESS IN THIS BANK  >>            <<03076>>20092000
LOGICAL MBENTNO';  <<SAME AS MBENTNO, BUT LOGICAL>>            <<03076>>20094000
LOGICAL DONE;      << DONE MEMBUF SCAN           >>            <<03076>>20096000
LOGICAL SKIP;      << 0   -------> SKIPOCTALDUMP >>            <<03076>>20098000
                   << 1   -------> OCTALDUMP     >>            <<03076>>20100000
                   << 2   -------> nothing at all>>            <<03076>>20102000
                                                               <<03076>>20104000
SUBROUTINE DUMPHT(START,FINISH);                               <<03076>>20106000
  VALUE START,FINISH;                                          <<03076>>20108000
  DOUBLE START, FINISH;                                        <<03076>>20110000
  IF ((INTEGER(START &DLSR(16))=BANKNUM)) AND                  <<03076>>20112000
     ((INTEGER(FINISH &DLSR(16))=BANKNUM)) THEN                <<03076>>20114000
       OCTALDUMP(START,FINISH);                                <<03076>>20116000
                                                               <<03076>>20118000
$PAGE "DUMP MEMORY (MAIN LOOP)"                                <<03076>>20120000
                                                               <<03076>>20122000
<< CHECK IF THERE IS ANYTHING OF INTEREST IN THIS BANK >>      <<03076>>20124000
MEMBUFP:=-1;                                                   <<03076>>20126000
@MEMBUFP:=@MEMBUF;                                             <<03076>>20128000
DONE:=FALSE;                                                   <<03076>>20130000
IF MINI'DUMP THEN WHILE NOT DONE DO                            <<03076>>20132000
  BEGIN                                                        <<03076>>20134000
  IF MBTYPE=3 AND DST'TYPE(MBENTNO)<>0 THEN                    <<03076>>20136000
    BEGIN  << THERE IS SOMETHING OF INTEREST >>                <<03076>>20138000
    NEWPAGE;                                                   <<03076>>20140000
      DONE:=TRUE;                                              <<03076>>20142000
    END;                                                       <<03076>>20144000
  IF MBTYPE=%17 THEN    <<NOTHING OF INTEREST IN THIS BANK>>   <<03076>>20146000
     RETURN;                                                   <<03076>>20148000
  @MEMBUFP:=@MEMBUFP+4;                                        <<03076>>20150000
  END;                                                         <<03076>>20152000
                                                               <<03076>>20154000
FILLMEMBUF(BANKNUM);                                           <<03076>>20156000
SORTMEMBUF;                                                    <<03076>>20158000
                                                               <<03076>>20160000
  <<  PRE-LOOP INITIALIZATION >>                               <<03076>>20162000
                                                               <<03076>>20164000
  MEMBUFP:=-1;         <<SET UP FIRST NEXTADR>>                <<03076>>20166000
  @MEMBUFP:=@MEMBUF;                                           <<03076>>20168000
  TOS:=BANKNUM;           <<INITIALIZE CURAD  >>               <<03076>>20170000
  TOS:=0;                                                      <<03076>>20172000
CURAD:=BANKBASE:=TOS;                                          <<03076>>20174000
TOS:=BANKNUM;    << INITIALIZE ENDOFBANK >>                    <<03076>>20176000
TOS:=%177777;                                                  <<03076>>20178000
ENDOFBANK:=TOS;                                                <<03076>>20180000
X:=BANKNUM;                                                    <<03076>>20182000
BANKNO:=BANKNUM;    << USED BY LINE PRINTING ROUTINES >>       <<03076>>20184000
BLANKBUF;                                                      <<03076>>20186000
                                                               <<03076>>20188000
WHILE TRUE DO         << LOOP OVER MEMBUF (MB)          >>     <<03076>>20190000
  BEGIN                                                        <<03076>>20192000
  SKIP:= 1 ;          << DEFAULT IS OCTALDUMP           >>     <<03076>>20194000
  CHARFLAG:=FALSE;    << GLOBAL, USED BY OCTALDUMP      >>     <<03076>>20196000
  DBADR:=0D;          << UNLESS CHANGED BY CHECKSTACK   >>     <<03076>>20198000
  MBENTNO':=MBENTNO;  <<TO BE PASSED TO OTHER PROCEDURES>>     <<03076>>20200000
                                                               <<03076>>20202000
  CASE MBTYPE OF                                               <<03076>>20204000
  BEGIN                                                        <<03076>>20206000
    ;                              << 0=UNKNOWN         >>     <<03076>>20208000
    CSTENTRY(CURAD,MBENTNO',SKIP); << 1=CSTENTRY        >>     <<03076>>20210000
    BEGIN                          << 2=PROCESSCSTENTRY >>     <<03076>>20212000
      SKIP:=0;                                                 <<03076>>20214000
      IF MINI'DUMP THEN SKIP:=2;                               <<03076>>20216000
      IF CODE'SEGMENTS THEN SKIP:=1;                           <<03076>>20218000
      IF SKIP <> 2 THEN BEGIN                                  <<03076>>20220000
      SKIPLINES(3);                                            <<03076>>20222000
      MOVE DBUFFER:="$$$$$$$$ CST  ";                          <<03076>>20224000
      @PBUF:=@BBUF+14;                                         <<03076>>20226000
      PUTNUMP(MBENTNO);                                        <<03076>>20228000
      MOVE PBUF:="CST BLOCK INDEX = ";                         <<03076>>20230000
      @PBUF:=@PBUF+18;                                         <<03076>>20232000
      PUTNUMP(MBCSTXNDX);                                      <<03076>>20234000
      MOVE PBUF:="$$$$$$$$";                                   <<03076>>20236000
      @PBUF:=@PBUF+8;                                          <<03076>>20238000
      PRINTLINE;                                               <<03076>>20240000
      END;                                                     <<03076>>20242000
    END;                                                       <<03076>>20244000
    DSTENTRY(MBENTNO',SKIP);       << 3=DSTENTRY        >>     <<03076>>20246000
    ;                              << 4=CSTTABLE        >>     <<03076>>20248000
    ;                              << 5=PROCESSCST TABLE>>     <<03076>>20250000
    ;                              << 6=DST TABLE       >>     <<03076>>20252000
    BEGIN                          << 7=FIXED LOW CORE  >>     <<03076>>20254000
      SKIPLINES(3);                                            <<03076>>20256000
      MOVE DBUFFER:="$$$$$$$$";                                <<03076>>20258000
      MOVE BBUF(9):=" FIXED LOW CORE $$$$$$$$";                <<03076>>20260000
      PRINTLINE;                                               <<03076>>20262000
    END;                                                       <<03076>>20264000
    ;                              << 10=DRT            >>     <<03076>>20266000
    ;                              << 11=SYSTEM GLOBAL  >>     <<03076>>20268000
    BEGIN                          << 12=FREE AREA      >>     <<03076>>20270000
      SKIP:=0;                                                 <<03076>>20272000
      IF MINI'DUMP THEN SKIP:=2;                               <<03076>>20274000
      IF FREE'AREAS THEN SKIP:=1;                              <<03076>>20276000
      IF SKIP <> 2 THEN                                        <<03076>>20278000
        BEGIN                                                  <<03076>>20280000
        SKIPLINES(3);                                          <<03076>>20282000
        MOVE DBUFFER:="$$$$$$$$ ";                             <<03076>>20284000
        MOVE BBUF(9):=" AVAILABLE AREA $$$$$$$$";              <<03076>>20286000
        PRINTLINE;                                             <<03076>>20288000
        END;                                                   <<03076>>20290000
    END;                                                       <<03076>>20292000
    BEGIN                          << 13=MONITOR TABLE  >>     <<03076>>20294000
      MOVE DBUFFER:="$$$$$$$$ ";                               <<03076>>20296000
      MOVE BBUF(9):=" MONITOR TABLE $$$$$$$$";                 <<03076>>20298000
      PRINTLINE;                                               <<03076>>20300000
    END;                                                       <<03076>>20302000
          BEGIN                          << 14=RESERVED REGION <<03081>>20304000
           MOVE DBUFFER:="$$$$$$$$ ";                          <<03081>>20306000
           MOVE BBUF(9):=" RESERVED REGION $$$$$$$$";          <<03081>>20308000
           PRINTLINE;                                          <<03081>>20310000
          END;                                                 <<03081>>20312000
                                                                        20314000
          BEGIN                          << 15=CACHED REGION>> <<sknew>>20316000
           SKIP := 0;                                          <<sknew>>20318000
           IF MINI'DUMP THEN SKIP:=2;                          <<sknew>>20320000
           IF CACHED'REGIONS THEN SKIP := 1;                   <<sknew>>20322000
           IF SKIP<>2 THEN BEGIN                               <<sknew>>20324000
           MOVE DBUFFER:="$$$$$$$$ ";                          <<03081>>20326000
           MOVE BBUF(9):=" CACHED REGION $$$$$$$$";            <<03081>>20328000
           PRINTLINE;                                          <<03081>>20330000
           END;                                                <<sknew>>20332000
          END;                                                 <<03081>>20334000
    ;                              << 16 UNUSED         >>     <<03076>>20336000
    RETURN;                        << 17=END OF LIST    >>     <<03076>>20338000
  END;  << CASE MBENTNO >>                                     <<03076>>20340000
                                                               <<03076>>20342000
  @MEMBUFP:=@MEMBUFP+4;  << ADVANCE POINTER TO NEXT ENTRY >>   <<03076>>20344000
  TOS:=MBBANK;   << GET NEXTADR FROM MEMBUF TABLE >>           <<03076>>20346000
  TOS:=MBADDR;                                                 <<03076>>20348000
  NEXTADR:=TOS;                                                <<03076>>20350000
                                                               <<03076>>20352000
  << DUMP OUT MEMORY FROM CURAD TO NEXTADR >>                  <<03076>>20354000
                                                               <<03076>>20356000
IF MBTYPE=%17 THEN << NEXT ENTRY IS END OF BANK >>             <<03076>>20358000
  BEGIN                                                        <<03076>>20360000
  CASE SKIP OF BEGIN                                           <<03076>>20362000
    SKIPOCTALDUMP(CURAD,ENDOFBANK);                            <<03076>>20364000
    OCTALDUMP    (CURAD,ENDOFBANK);                            <<03076>>20366000
    ;                                                          <<03076>>20368000
  END;                                                         <<03076>>20370000
  RETURN;                                                      <<03076>>20372000
  END;                                                         <<03076>>20374000
  IF (NEXTADR <> 0D) THEN                                      <<03076>>20376000
    IF NEXTADR < LINKEDMEM THEN                                         20378000
      CASE SKIP OF BEGIN                                       <<03076>>20380000
        SKIPOCTALDUMP(CURAD,NEXTADR-1D);                       <<03076>>20382000
        OCTALDUMP    (CURAD,NEXTADR-1D);                       <<03076>>20384000
        ;                                                      <<03076>>20386000
      END                                                      <<03076>>20388000
    ELSE BEGIN                                                 <<03076>>20390000
         CASE SKIP OF BEGIN                                    <<03076>>20392000
           SKIPOCTALDUMP(CURAD,NEXTADR-28D+DOUBLE(REG'DIFF));  <<CACHE>>20394000
           OCTALDUMP    (CURAD,NEXTADR-28D+DOUBLE(REG'DIFF));  <<CACHE>>20396000
           ;                                                   <<03076>>20398000
         END;                                                  <<03076>>20400000
         IF CURAD >= LINKEDMEM THEN BEGIN                      <<03076>>20402000
            SKIPLINES(1);                                               20404000
            DUMPHT(NEXTADR-28D+DOUBLE(REG'DIFF),NEXTADR-25D+   <<CACHE>>20406000
                    DOUBLE(REG'DIFF));                         <<CACHE>>20408000
            END;                                                        20410000
         SKIPLINES(2);                                         <<03076>>20412000
         DUMPHT(NEXTADR-24D+DOUBLE(REG'DIFF),NEXTADR-1D);      <<CACHE>>20414000
         END;                                                  <<03076>>20416000
  CURAD:=NEXTADR;                                              <<03076>>20418000
  STARTADR:=NEXTADR;       <<FOR DB RELATIVE PRINTING>>        <<03076>>20420000
                                                               <<03076>>20422000
  END;  << WHILE TRUE LOOP >>                                  <<03076>>20424000
END;  << DUMPMEM >>                                            <<03076>>20426000
                                                                        20428000
$PAGE "CSTENTRY: Print code segment for memory dump"                    20430000
$CONTROL SEGMENT=MEMORY                                        <<03076>>20432000
                                                               <<03076>>20434000
PROCEDURE CSTENTRY(CURAD,CKSUM,SKIP);                          <<03076>>20436000
DOUBLE CURAD;                                                  <<03076>>20438000
LOGICAL CKSUM;                                                 <<03076>>20440000
LOGICAL SKIP;                                                  <<03076>>20442000
COMMENT                                                        <<03076>>20444000
                                                                        20446000
Purpose:                                                                20448000
     CSTENTRY is called only by DUMPMEM.                       <<03076>>20450000
     It prints the header title for a code segment in          <<03076>>20452000
     memory.  Based on flag CODE'SEGMENTS, it may also         <<03076>>20454000
     set flags to dump out the segment in octal.               <<03076>>20456000
     Since the code for verifying the segment's checksum       <<03076>>20458000
     was not working, it has been removed.                     <<03076>>20460000
                                                                        20462000
Input parameters:                                                       20464000
     CURAD is bank+addr at which code segment starts                    20466000
     CKSUM is the code segment number!                                  20468000
                                                                        20470000
Output parameters:                                                      20472000
     SKIP is a code for how detailed an octaldump to print              20474000
                                                                        20476000
Globals Referenced:                                                     20478000
                                                                        20480000
Globals Altered:                                                        20482000
                                                                        20484000
Data Structures:                                                        20486000
                                                                        20488000
Algorithm:                                                              20490000
                                                                        20492000
;                                                                       20494000
BEGIN                                                          <<03076>>20496000
LOGICAL DELTAQ;                                                <<03076>>20498000
LOGICAL SEGLENGTH;                                             <<03076>>20500000
DOUBLE SLENGTH;                                                <<03076>>20502000
DOUBLE DCKSUM;                                                 <<03076>>20504000
INTEGER ARRAY CKSUM'(*)=DCKSUM;                                <<03076>>20506000
                                                               <<03076>>20508000
SKIP:=0;                                                       <<03076>>20510000
IF MINI'DUMP THEN SKIP:=2;                                     <<03076>>20512000
IF CODE'SEGMENTS THEN SKIP:=1;                                 <<03076>>20514000
IF SKIP <> 2 THEN BEGIN                                        <<03076>>20516000
MOVE DBUFFER:="$$$$$$$$ CST";                                  <<03076>>20518000
@PBUF:=@PBUF+10;                                               <<03076>>20520000
PUTNUMP(CKSUM); END;          <<CST SEGMENT >>                 <<03076>>20522000
END;  << PROCEDURE CSTENTRY >>                                 <<03076>>20524000
                                                                        20526000
$PAGE "DSTENTRY: Print data segment for memory bank dump"               20528000
$CONTROL SEGMENT=DMEM2                                         <<03076>>20530000
PROCEDURE DSTENTRY(DSTNO,SKIP);                                <<03076>>20532000
LOGICAL DSTNO;                                                 <<03076>>20534000
LOGICAL SKIP;                                                  <<03076>>20536000
COMMENT                                                        <<03076>>20538000
                                                                        20540000
Purpose:                                                                20542000
     DSTENTRY is called only by DUMPMEM.                       <<03076>>20544000
     Given a DST number, the routine refers to the array       <<03076>>20546000
     DST'TYPE (set up by CATEGORIZE'DSTS) and prints out       <<03076>>20548000
     the type of DST.  The default is to then let the          <<03076>>20550000
     returned flags allow DUMPMEM to give an OCTALDUMP of      <<03076>>20552000
     the segment.  However, for some DST types, e.g. stacks,   <<03076>>20554000
     DSTENTRY does its own formatting, and defeats the         <<03076>>20556000
     OCTALDUMP in DUMPMEM.                                     <<03076>>20558000
                                                                        20560000
Input parameters:                                                       20562000
     DSTNO is the number of the DST being formatted                     20564000
                                                                        20566000
Output parameters:                                                      20568000
     SKIP returns the desired level of detail for octaldump             20570000
                                                                        20572000
Globals Referenced:                                                     20574000
     DST'TYPE categorizes all the DSTs                                  20576000
                                                                        20578000
Globals Altered:                                                        20580000
                                                                        20582000
Data Structures:                                                        20584000
                                                                        20586000
Algorithm:                                                              20588000
                                                                        20590000
;                                                                       20592000
                                                               <<03076>>20594000
BEGIN                                                          <<03076>>20596000
                                                               <<03076>>20598000
DOUBLE DITBASE;   << ADDR OF DIT (FOLLOWS TBUF)            >>  <<03076>>20600000
DOUBLE DST14;     << START ADDR OF DST 14 (TBUF)           >>  <<03076>>20602000
DOUBLE DST2;      << START ADDR OF DST 2 (DST!)            >>  <<03076>>20604000
INTEGER DSTTYPE;  << SEE CATEGORIZE'DSTS OR CASE STATEMENT >>  <<03076>>20606000
EQUATE MAXDSTTYPE = 17;                                                 20608000
                                                                        20610000
                                                               <<03076>>20612000
<<DST'TYPE TABLE IS BUILT BY CATEGORIZE'DST PROCEDURE>>        <<03076>>20614000
DSTTYPE:=DST'TYPE(DSTNO);                                      <<03076>>20616000
<< PRINT DST NUMBER HEADER >>                                  <<03076>>20618000
IF DSTTYPE <> 0 OR NOT MINI'DUMP THEN SKIPLINES(3);            <<03076>>20620000
  MOVE DBUFFER:="$$$$$$$$ ";                                   <<03076>>20622000
  @PBUF:=@BBUF+9;                                              <<03076>>20624000
  MOVE PBUF:="DST ";                                           <<03076>>20626000
  @PBUF:=@PBUF+2;                                              <<03076>>20628000
  PUTNUMP(DSTNO);                                              <<03076>>20630000
  @PBUF:=@PBUF+36;                                             <<03076>>20632000
  MOVE PBUF:="$$$$$$$$";                                       <<03076>>20634000
  @PBUF:=@BBUF+18;  <<SET TO MIDDLE FOR DESCRIPTIONS>>         <<03076>>20636000
                                                               <<03076>>20638000
IF DSTTYPE<0 OR DSTTYPE>MAXDSTTYPE THEN  << ERROR IN TABLE >>  <<03076>>20640000
  BEGIN                                                        <<03076>>20642000
  PRINTLINE;                                                   <<03076>>20644000
  MOVE DBUFFER:="DSTENTRY: INVALID DST TYPE";                  <<03076>>20646000
  PRINTLINE;                                                   <<03076>>20648000
  RETURN;                                                      <<03076>>20650000
  END;                                                         <<03076>>20652000
                                                               <<03076>>20654000
CASE DSTTYPE OF                                                <<03076>>20656000
  BEGIN                                                        <<03076>>20658000
  BEGIN               << 0=UNDEFINED                >>         <<03076>>20660000
    IF MINI'DUMP THEN             << SQUELCH OUTPUT >>         <<03076>>20662000
       SKIP := 0;                                                       20664000
    PRINTLINE;                                                          20666000
  END;                                                         <<03076>>20668000
  BEGIN               << 1=STACK (NON CURRENT)      >>         <<03076>>20670000
    CHECKSTACK(DSTNO);                                         <<03076>>20672000
    MOVE DBUFFER:="$$$$$$$$ ";                                 <<03076>>20674000
    @PBUF:=@BBUF+9;                                            <<03076>>20676000
    MOVE PBUF:="DST ";                                         <<03076>>20678000
    @PBUF:=@PBUF+2;                                            <<03076>>20680000
    PUTNUMP(DSTNO);                                            <<03076>>20682000
    @PBUF:=@PBUF+36;                                           <<03076>>20684000
    MOVE PBUF:="$$$$$$$$";                                     <<03076>>20686000
    @PBUF:=@BBUF+18;          <<SET TO MIDDLE FOR DESCRIPTIONS>><<SFF >>20688000
    MOVE PBUF:="(STACK)";                                      <<03076>>20690000
    PRINTLINE;                                                 <<03076>>20692000
    FORMATSTACK(DSTNO);                                        <<03076>>20694000
    SKIP:= 2 ;  << no further dump >>                          <<03076>>20696000
  END;                                                         <<03076>>20698000
  BEGIN               << 2=XDS OF CURRENT PROCESS   >>         <<03076>>20700000
    MOVE PBUF:="(XDS OF CURRENT PROCESS)";                     <<03076>>20702000
    PRINTLINE;                                                 <<03076>>20704000
  END;                                                         <<03076>>20706000
  BEGIN               << 3=FCB                      >>         <<03076>>20708000
    MOVE PBUF:="(FILE CONTROL BLOCK)";                         <<03076>>20710000
    PRINTLINE;                                                 <<03076>>20712000
    FORMATFCB(DSTNO);                                          <<03076>>20714000
    SKIP:=2;                                                   <<03076>>20716000
  END;                                                         <<03076>>20718000
  BEGIN               << 4=ACB                      >>         <<03076>>20720000
    MOVE PBUF:="(FILE CONTROL BLOCK)";                         <<03076>>20722000
    PRINTLINE;                                                 <<03076>>20724000
    FORMATFCB(DSTNO);                                          <<03076>>20726000
    SKIP:=2;                                                   <<03076>>20728000
  END;                                                         <<03076>>20730000
  BEGIN               << 5=PACB                     >>         <<03076>>20732000
    MOVE PBUF:="(FILE CONTROL BLOCK)";                         <<03076>>20734000
    PRINTLINE;                                                 <<03076>>20736000
    FORMATFCB(DSTNO);                                          <<03076>>20738000
    SKIP:=2;                                                   <<03076>>20740000
  END;                                                         <<03076>>20742000
  BEGIN               << 6=LACB                     >>         <<03076>>20744000
    MOVE PBUF:="(FILE CONTROL BLOCK)";                         <<03076>>20746000
    PRINTLINE;                                                 <<03076>>20748000
    FORMATFCB(DSTNO);                                          <<03076>>20750000
    SKIP:=2;                                                   <<03076>>20752000
  END;                                                         <<03076>>20754000
  BEGIN               << 7=JOB INFORMATION TABLE    >>         <<03076>>20756000
    MOVE PBUF:="(JOB INFORMATION TABLE)";                      <<03076>>20758000
    PRINTLINE;                                                 <<03076>>20760000
  END;                                                         <<03076>>20762000
  BEGIN               << 8=JOB DIRECTORY TABLE      >>         <<03076>>20764000
    MOVE PBUF:="(JOB DIRECTORY TABLE)";                        <<03076>>20766000
    PRINTLINE;                                                 <<03076>>20768000
  END;                                                         <<03076>>20770000
  BEGIN               << 9=USER LOGGING OF CUR PIN  >>         <<03076>>20772000
    MOVE PBUF:="(USER LOGGING OF CURRENT PROCESS)";            <<03076>>20774000
    PRINTLINE;                                                 <<03076>>20776000
  END;                                                         <<03076>>20778000
  BEGIN               << 10=UDC DIRECTORY OF CURPIN >>         <<03076>>20780000
    MOVE PBUF:="(UDC DIRECTORY OF CURRENT PROCESS)";           <<03076>>20782000
    PRINTLINE;                                                 <<03076>>20784000
  END;                                                         <<03076>>20786000
  BEGIN               << 11=STACK OF CURRENT PROCESS>>         <<03076>>20788000
    CHECKSTACK(DSTNO);                                         <<03076>>20790000
    MOVE DBUFFER:="$$$$$$$$ ";                                 <<03076>>20792000
    @PBUF:=@BBUF+9;                                            <<03076>>20794000
    MOVE PBUF:="DST ";                                         <<03076>>20796000
    @PBUF:=@PBUF+2;                                            <<03076>>20798000
    PUTNUMP(DSTNO);                                            <<03076>>20800000
    @PBUF:=@PBUF+36;                                           <<03076>>20802000
    MOVE PBUF:="$$$$$$$$";                                     <<03076>>20804000
    @PBUF:=@BBUF+18;          <<SET TO MIDDLE FOR DESCRIPTIONS>><<SFF >>20806000
    MOVE PBUF:="(CURRENT PROCESS STACK)";                      <<03076>>20808000
    PRINTLINE;                                                 <<03076>>20810000
    FORMATSTACK(DSTNO);                                        <<03076>>20812000
    SKIP:= 2 ;  << no further dump >>                          <<03076>>20814000
  END;                                                         <<03076>>20816000
  BEGIN               << 12=DST#14 TBUF AND DIT     >>         <<03076>>20818000
    NAMEDST;                                                   <<03076>>20820000
    INDXARAY(%14*%2+%1):=PAGENO;  <<ADD TBUF TO INDEX>>        <<03076>>20822000
    PRINTLINE;                                                 <<03076>>20824000
    SKIP:= 2 ;   << no further dump >>                         <<03076>>20826000
    << PRINT TBUF(DST#%14), FOLLOWED BY DIT            >>      <<03076>>20828000
    <<DIT IS SANDWICHED BETWEEN TBUFS AND DST TABLE >>         <<03076>>20830000
    DST2:=DSTTOADDR(%2);   << START OF DST 2 (DST) >>          <<03076>>20832000
    DST14:=DSTTOADDR(%14); << START OF DST 14 (TBUF) >>        <<03076>>20834000
    DITBASE:=4D*DOUBLE(CORE(DSTDEFIN+4D*%14D).(3:13));         <<03076>>20836000
    DITBASE:=DITBASE+DST14;  <<+START OF DST14>>               <<03076>>20838000
    OCTALDUMP(DST14,DITBASE-1D);  << TBUF >>                   <<03076>>20840000
    SKIPLINES(3);                                              <<03076>>20842000
    MOVE DBUFFER:="(DEVICE INFORMATION TABLE)";                <<03076>>20844000
    PRINTLINE;                                                 <<03076>>20846000
    SKIPLINES(1);                                              <<03076>>20848000
    OCTALDUMP(DITBASE,DST2-1D);   << DIT >>                    <<03076>>20850000
  END;                                                         <<03076>>20852000
  BEGIN               << 13=SYSTEM DST              >>         <<03076>>20854000
    NAMEDST;                                                   <<03076>>20856000
    INDXARAY(DSTNO*2+1):=PAGENO;                               <<03076>>20858000
    PRINTLINE;                                                 <<03076>>20860000
  END;                                                         <<03076>>20862000
  PRINTLINE;          << 14=REQUESTED DST           >>         <<03076>>20864000
  BEGIN               << 15=DEV/PROCESS XDS         >>                  20866000
    MOVE PBUF:="(DS DEVICE PROCESS XDS)";                               20868000
    PRINTLINE;                                                          20870000
  END;                                                                  20872000
  BEGIN               << 16=DS JOB XDS              >>                  20874000
    MOVE PBUF:="(DS JOB XDS)";                                          20876000
    PRINTLINE;                                                          20878000
  END;                                                                  20880000
  BEGIN               << 17=CS MISC DST             >>                  20882000
    MOVE PBUF:="(CS MISC DST)";                                         20884000
    PRINTLINE;                                                          20886000
  END;                                                                  20888000
  END; <<CASE DSTTYPE>>                                        <<03076>>20890000
END;   << PROCEDURE DSTENTRY >>                                <<03076>>20892000
                                                                        20894000
                                                                        20896000
$PAGE "FORMATSTACK: Print PX, DL, DB areas of stack"                    20898000
$CONTROL SEGMENT=MEMORY                                        <<03076>>20900000
PROCEDURE FORMATSTACK(DSTNO);                                  <<03076>>20902000
VALUE DSTNO;                                                   <<03076>>20904000
LOGICAL DSTNO;                                                 <<03076>>20906000
COMMENT                                                                 20908000
                                                                        20910000
Purpose:                                                                20912000
     FORMATSTACK                                               <<03076>>20914000
     Given a DST number as input, prints the corresponding     <<03076>>20916000
     memory segment, formatted as a DST stack.                 <<03076>>20918000
     CHECKSTACK should be called before FORMATSTACK, since     <<03076>>20920000
     it sets the global flags STACKFLAG and MARKERS'OK,        <<03076>>20922000
     which are needed.  FORMATSTACK then formats the post-     <<03076>>20924000
     stack marker data in the stack.                           <<03076>>20926000
                                                                        20928000
Input parameters:                                                       20930000
                                                                        20932000
Output parameters:                                                      20934000
                                                                        20936000
Globals Referenced:                                                     20938000
                                                                        20940000
Globals Altered:                                                        20942000
                                                                        20944000
Data Structures:                                                        20946000
                                                                        20948000
Algorithm:                                                              20950000
                                                                        20952000
;                                                                       20954000
                                                               <<03076>>20956000
BEGIN  << FORMATSTACK >>                                       <<03076>>20958000
LOGICAL SEGLENGTH;  <<LENGTH OF STACK>>                        <<03076>>20960000
LOGICAL PCBXLENGTH;                                            <<03076>>20962000
LOGICAL DELTAQ;                                                <<03076>>20964000
LOGICAL ADDR;                                                  <<03076>>20966000
LOGICAL BANK;                                                  <<03076>>20968000
DOUBLE SLENGTH;                                                <<03076>>20970000
DOUBLE PXPOINTERS;                                             <<03076>>20972000
DOUBLE PXFIXED;                                                <<03076>>20974000
DOUBLE PXFILE;                                                 <<03076>>20976000
DOUBLE DLREG;                                                  <<03076>>20978000
DOUBLE DBREG;                                                  <<03076>>20980000
DOUBLE INITQ;                                                  <<03076>>20982000
DOUBLE QREG;                                                   <<03076>>20984000
DOUBLE STACKADDR;  << STACK DST LOCATION >>                    <<03076>>20986000
DOUBLE DSTENTRY;  << LOCATION OF DSTNO IN DST TABLE >>         <<03076>>20988000
                                                               <<03076>>20990000
BLANKBUF;                                                      <<03076>>20992000
SKIPLINES(2);                                                  <<03076>>20994000
                                                               <<03076>>20996000
IF NOT STACKFLAG THEN << STACK NOT FORMATTABLE >>              <<03076>>20998000
  BEGIN                                                        <<03076>>21000000
  MOVE DBUFFER:="FORMATSTACK: STACK NOT FORMATTABLE";          <<03076>>21002000
  PRINTLINE;                                                   <<03076>>21004000
  END;                                                         <<03076>>21006000
                                                               <<03076>>21008000
<< LOOK UP BANK+ADDR OF STACK >>                               <<03076>>21010000
DSTENTRY:=DOUBLE(DSTNO*4)+DSTDEFIN;<<ENTRY# OFFSET+TABLE BASE>><<03076>>21012000
STACKADDR:=DSTTOADDR(DSTNO);                                   <<03076>>21014000
SEGLENGTH:=CORE(DSTENTRY).(3:13)*4;                            <<03076>>21016000
SLENGTH:=DOUBLE(SEGLENGTH);                                    <<03076>>21018000
PCBXLENGTH:=CORE(STACKADDR);                                   <<03076>>21020000
PXPOINTERS:=STACKADDR+DOUBLE(PCBXLENGTH)-4D;                   <<03076>>21022000
                                                               <<03076>>21024000
IF PCBXLENGTH = CORE(PXPOINTERS+3D) AND                        <<03076>>21026000
   PCBXLENGTH > 0 AND                                          <<03076>>21028000
   PCBXLENGTH < SEGLENGTH                                      <<03076>>21030000
THEN                                                           <<03076>>21032000
  BEGIN  << PCBX LOOKS GOOD SO FAR >>                          <<03076>>21034000
  MOVE PBUF:="******PCBX:";                                    <<03076>>21036000
  PBUF(12):="*";                                               <<03076>>21038000
  MOVE PBUF(13):=PBUF(12),(119);  <<PROPAGATE>>                <<03076>>21040000
  PRINTLINE;                                                   <<03076>>21042000
  CHARFLAG:=FALSE;                                             <<03076>>21044000
  PXFIXED:=STACKADDR+DOUBLE(PCBXLENGTH)-                       <<03076>>21046000
           DOUBLE(CORE(PXPOINTERS+2D));                        <<03076>>21048000
  PXFILE:=STACKADDR+DOUBLE(PCBXLENGTH)-                        <<03076>>21050000
          DOUBLE(CORE(PXPOINTERS+1D));                         <<03076>>21052000
                                                               <<03076>>21054000
  IF PXFIXED > STACKADDR               AND                     <<03076>>21056000
     PXFILE  > PXFIXED             AND                         <<03076>>21058000
     PXPOINTERS >= PXFILE        <<OK>>                        <<03076>>21060000
  THEN                                                         <<03076>>21062000
    BEGIN         <<BREAK DOWN PCBX>>                          <<03076>>21064000
    MOVE PBUF:="***PXGLOBAL:";                                 <<03076>>21066000
    PRINTLINE;                                                 <<03076>>21068000
    OCTALDUMP(STACKADDR,PXFIXED-1D);                           <<03076>>21070000
    MOVE PBUF:="***PXFIXED:";                                  <<03076>>21072000
    PRINTLINE;                                                 <<03076>>21074000
    OCTALDUMP(PXFIXED,PXFILE-1D);                              <<03076>>21076000
    MOVE PBUF:="***PXFILE:";                                   <<03076>>21078000
    IF PXPOINTERS > PXFILE THEN                                <<03076>>21080000
       PRINTPXFILE(DSTNO,PXFILE);                              <<03076>>21082000
    MOVE PBUF:="**PXPOINTERS:";                                <<03076>>21084000
    PRINTLINE;                                                 <<03076>>21086000
    OCTALDUMP(PXPOINTERS,                                      <<03076>>21088000
              STACKADDR+DOUBLE(PCBXLENGTH)-1D);                <<03076>>21090000
    END  << BREAK DOWN PCBX >>                                 <<03076>>21092000
  ELSE                                                         <<03076>>21094000
    BEGIN  << PCBX SEEMED GOOD, BUT NOT FORMATABLE >>          <<03076>>21096000
    MOVE PBUF:="**CANNOT FORMAT PCBX**";                       <<03076>>21098000
    PRINTLINE;                                                 <<03076>>21100000
    OCTALDUMP(STACKADDR,STACKADDR+DOUBLE(PCBXLENGTH-1));       <<03076>>21102000
    END;                                                       <<03076>>21104000
                                                               <<03076>>21106000
  DLREG:=STACKADDR+DOUBLE(CORE(STACKADDR));                    <<03076>>21108000
  DBREG:=STACKADDR+DOUBLE(CORE(STACKADDR+1D));                 <<03076>>21110000
  IF MARKERS'OK     AND                                        <<03076>>21112000
     DOUBLE(CORE(PXFIXED)) = PXFILE-PXFIXED                    <<03076>>21114000
    THEN                                                       <<03076>>21116000
      INITQ:=DBREG+DOUBLE(CORE(PXFIXED+3D))+4D                 <<03076>>21118000
    ELSE    <<BAD INITIAL Q REGISTER>>                         <<03076>>21120000
      INITQ:=0D;                                               <<03076>>21122000
  CHARFLAG:=TRUE;                                              <<03076>>21124000
  IF DLREG <= DBREG THEN                                       <<03076>>21126000
    BEGIN                <<PRINT DL AREA>>                     <<03076>>21128000
    MOVE PBUF:="****DL REGISTER:";                             <<03076>>21130000
    PBUF(17):="*";                                             <<03076>>21132000
    MOVE PBUF(18):=PBUF(17),(114);                             <<03076>>21134000
    PRINTLINE;                                                 <<03076>>21136000
    IF DLREG < DBREG THEN                                      <<03076>>21138000
      OCTALDUMP(DLREG,DBREG-1D);                               <<03076>>21140000
    MOVE PBUF:="****DB REGISTER:";                             <<03076>>21142000
    PBUF(17):="*";                                             <<03076>>21144000
    MOVE PBUF(18):=PBUF(17),(114);                             <<03076>>21146000
    PRINTLINE;                                                 <<03076>>21148000
    IF DBREG <= INITQ LAND MARKERS'OK                          <<03076>>21150000
      THEN                                                     <<03076>>21152000
      BEGIN              <<FORMAT PRIMARY DB>>                 <<03076>>21154000
      OCTALDUMP(DBREG,INITQ-4D);                               <<03076>>21156000
      DO                                                       <<03076>>21158000
        BEGIN              <<ALL Q AREAS>>                     <<03076>>21160000
        QREG:=STACKMARKER; <<INITIAL STK MARKER>>              <<03076>>21162000
        DELTAQ:=LOGICAL(STACKSREG-STACKMARKER);                <<03076>>21164000
        WHILE QREG > INITQ DO                                  <<03076>>21166000
          BEGIN            <<FIND A MARKER>>                   <<03076>>21168000
          DELTAQ:=CORE(QREG);                                  <<03076>>21170000
          QREG:=QREG-DOUBLE(DELTAQ);                           <<03076>>21172000
          END;             <<GOT ONE>>                         <<03076>>21174000
        <<INITQ = MARKER>>                                     <<03076>>21176000
        <<DELTAQ= LENGTH>>                                     <<03076>>21178000
        SKIPLINES(1);                                          <<03076>>21180000
        TOS:=INITQ-3D;                                         <<03076>>21182000
        ADDR:=TOS;                                             <<03076>>21184000
        BANK:=TOS;                                             <<03076>>21186000
        PUTNUM(ADDR);                                          <<03076>>21188000
        MOVE PBUF(-1):="(MARKER): ";                           <<03076>>21190000
        @PBUF:=@PBUF+9;                                        <<03076>>21192000
        PUTNUM(CORE(INITQ-3D));                                <<03076>>21194000
        PUTNUM(CORE(INITQ-2D));                                <<03076>>21196000
        PUTNUM(CORE(INITQ-1D));                                <<03076>>21198000
        PUTNUM(CORE(INITQ));                                   <<03076>>21200000
        IF CORE(INITQ-1D).(8:8) < %300 THEN                    <<03076>>21202000
          BEGIN            <<NAME MARKER>>                     <<03076>>21204000
          NAMECST(CORE(INITQ-1D).(8:8));                       <<03076>>21206000
          NAMEPROC(CORE(INITQ-1D).(8:8),                       <<03076>>21208000
                   CORE(INITQ-2D),58,-1,-1);                   <<03076>>21210000
          END;           <<NAME MARKER>>                       <<03076>>21212000
        BBUF(80):="-";                                         <<03076>>21214000
        MOVE BBUF(81):=BBUF(80),(52);                          <<03076>>21216000
        PRINTLINE;                                             <<03076>>21218000
        OCTALDUMP(INITQ+1D,                                    <<03076>>21220000
        INITQ+DOUBLE(DELTAQ)-4D);                              <<03076>>21222000
        INITQ:=INITQ+DOUBLE(DELTAQ);                           <<03076>>21224000
        END  << ALL Q AREAS >>                                 <<03076>>21226000
        UNTIL INITQ > STACKMARKER                              <<03076>>21228000
              OR  DELTAQ <= 0;                                 <<03076>>21230000
      BBUF:="*"; MOVE BBUF(1):=BBUF,(131);                     <<03076>>21232000
      MOVE BBUF(3):="S REGISTER: ";                            <<03076>>21234000
      PRINTLINE;                                               <<03076>>21236000
      OCTALDUMP(STACKMARKER+1D,STACKADDR+SLENGTH-1D);          <<03076>>21238000
      END  << FORMAT PRIMARY DS >>                             <<03076>>21240000
    ELSE                                                       <<03076>>21242000
      OCTALDUMP(DBREG,STACKADDR+SLENGTH-1D);                   <<03076>>21244000
    END                 <<DL TO Z DUMP>>                       <<03076>>21246000
  ELSE                                                         <<03076>>21248000
    OCTALDUMP(DLREG,STACKADDR+SLENGTH-1D);                     <<03076>>21250000
  END                  <<FORMATTED PCBX>>                      <<03076>>21252000
ELSE   << BAD PCBX >>                                          <<03076>>21254000
  OCTALDUMP(STACKADDR,STACKADDR+SLENGTH-1D);                   <<03076>>21256000
CHARFLAG:=FALSE;                                               <<03076>>21258000
SKIPLINES(1);                                                  <<03076>>21260000
END;  << FORMATSTACK >>                                        <<03076>>21262000
                                                                        21264000
                                                                        21266000
                                                                        21268000
$PAGE "FILLMEMBUF: Fill array describing a bank of memory"              21270000
$CONTROL SEGMENT=MEMORY                                                 21272000
COMMENT                                                                 21274000
                                                                        21276000
Purpose:                                                                21278000
<<              FILL MEMORY BUFFER PROCEDURE                       >>   21280000
<<    THIS PROCEDURE WILL FILL AN ARRAY CALLED MEMBUF USING CST,  >>    21282000
<<    CST',AND DST. EACH ENTRY IN THE ARRAY CONSIST OF 4 WORDS << WBT >>21284000
<<    IN THE FOLLOWING FORMAT:                                   >>     21286000
<<                           WORD0.(0:4)--CODE 0--UNKNOWN        >>     21288000
<<                                             1--CST ENTRY      >>     21290000
<<                                             2--CST' ENTRY     >>     21292000
<<                                             3--DST ENTRY      >>     21294000
<<                                             4--CST            >>     21296000
<<                                             5--CST'           >>     21298000
<<                                             6--DST            >>     21300000
<<                                             7--FIXED LOW CORE >>     21302000
<<                                           %10--DRT            >>     21304000
<<                                           %11--SYSTEM GLOBAL  >>     21306000
<<                                           %12--FREE AREA      >>     21308000
<<                                           %14--RSRVED REGION<<03081>>21310000
<<                           WORD0.(4:12)--ENTRY NUMBER          >>     21312000
<<                            WORD1 -- BANK          >>        << WBT >>21314000
<<                                                        >>   <<01.02>>21316000
<<                           WORD2       --ADDRESS WITHIN BANK   >>     21318000
<<                            WORD 3 -- CSTX INDEX FOR CST BLK << WBT >>21320000
<<                                      ENTRIES ONLY           << WBT >>21322000
<<                                                               >>     21324000
See also CATEGORIZE'DST which describes data segments in detail         21326000
                                                                        21328000
Input parameters:                                                       21330000
                                                                        21332000
Output parameters:                                                      21334000
                                                                        21336000
Globals Referenced:                                                     21338000
                                                                        21340000
Globals Altered:                                                        21342000
                                                                        21344000
Data Structures:                                                        21346000
                                                                        21348000
Algorithm:                                                              21350000
                                                                        21352000
;                                                                       21354000
PROCEDURE FILLMEMBUF(BANKNUM);                                 <<00.01>>21356000
VALUE BANKNUM;                                                 <<00.01>>21358000
LOGICAL BANKNUM;                                               <<00.01>>21360000
      BEGIN                                                             21362000
         INTEGER COUNT;                                                 21364000
         LOGICAL ENTNUM,ENTRYTYPE;                                      21366000
         DOUBLE FREELINK,SCRATCH;                                       21368000
         DOUBLE SCRATCH1;                                      <<01.02>>21370000
         LOGICAL ARRAY SCR0(*)=SCRATCH1;                       <<01.02>>21372000
         LOGICAL ARRAY SCR1(*)=SCR0(1);                        <<01.02>>21374000
         LOGICAL WORK1,WORK2,WORK3;                            <<01.02>>21376000
         INTEGER TMP1,TMP2,INDX;                               <<01.02>>21378000
   DOUBLE ARLDPTR;                                             << WBT >>21380000
   LOGICAL SIZE;                                               << WBT >>21382000
   DOUBLE CACHE,DNUM;                                                   21384000
   LOGICAL ARRAY D1(*)=DNUM;                                            21386000
   LOGICAL ARRAY D2(*)=D1(1);                                           21388000
   LOGICAL CURRENT, MAP'ENTRY;                                          21390000
   DEFINE CACHE'DST=%1273 D#;                                           21392000
   LOGICAL LENGTH;                                                      21394000
   DEFINE CDT'DISC'HEAD = 7D #,                                         21396000
          RHEAD         = 7D #,                                         21398000
          MD'ADDR       =12D #,                                         21400000
          MAP'HEAD      = 5D #;                                         21402000
                                                                        21404000
                                                               <<01.02>>21406000
   LOGICAL SUBROUTINE ITSTHERE(A);                             << WBT >>21408000
      VALUE A; DOUBLE A;                                       << WBT >>21410000
COMMENT                                                        << WBT >>21412000
CHECK WHETHER A SEGMENT IS BOTH PRESENT IN MEMORY AND          << WBT >>21414000
IN THE BANK BEING PROCESSED;                                   << WBT >>21416000
      IF ( (CORE(A).(0:1) = 0) OR                              << WBT >>21418000
           (CORE(A+1D).(1:1) = 1) ) AND              <<ROC?>>           21420000
                                                                        21422000
         (CORE(A+2D)=BANKNUM)                                  << WBT >>21424000
         THEN ITSTHERE:=TRUE                                   << WBT >>21426000
         ELSE ITSTHERE:=FALSE;                                 << WBT >>21428000
                                                               << WBT >>21430000
SUBROUTINE FILLXCST;                                           <<01.02>>21432000
BEGIN                                                          <<01.02>>21434000
                                                               <<01.02>>21436000
SCRATCH1:=0D;                                                  <<01.02>>21438000
      CHECKMEMBUF;                                             << WBT >>21440000
WORK1:=DSTFLG;                                                 <<01.02>>21442000
IF INTEGER(WORK1)=0 THEN RETURN;                               <<01.02>>21444000
TMP1:=ICSTBLK;<<GET #ENTRIES>>                                 <<01.02>>21446000
IF INTEGER(TMP1)<=0 THEN RETURN;                               <<01.02>>21448000
INDX:=1;                                                       <<01.02>>21450000
WHILE INDX<TMP1 DO                                             <<01.02>>21452000
BEGIN                                                          <<01.02>>21454000
   TMP2:=ICSTBLK(INDX);                                        <<01.02>>21456000
   IF TMP2 <=0 THEN GO BUMP;                                   <<01.02>>21458000
         SCRATCH1:=DOUBLE(WORK1+LOGICAL(TMP2));                << WBT >>21460000
   COUNT:=CORE(SCRATCH1).(10:6); << GET # ENTRIES IN BLOCK>>   << WBT >>21462000
         SCRATCH1:=SCRATCH1+4D;                                << WBT >>21464000
   ENTNUM:=%301;                                               <<01.02>>21466000
   WHILE COUNT>0  DO                                           << WBT >>21468000
   BEGIN                                                       <<01.02>>21470000
            CHECKMEMBUF;                                       << WBT >>21472000
            IF ITSTHERE(SCRATCH1) THEN                         << WBT >>21474000
      BEGIN                                                    <<01.02>>21476000
         <<PRESENT IN MAIN MEM>>                               <<01.02>>21478000
               MBTYPE:=ENTRYTYPE &LSR(12);                     << WBT >>21480000
               MBENTNO:=ENTNUM;                                << WBT >>21482000
               MBBANK:=CORE(SCRATCH1+2D);                      << WBT >>21484000
               MBADDR:=CORE(SCRATCH1+3D);                      << WBT >>21486000
               MBCSTXNDX:=INDX;                                << WBT >>21488000
               @MEMBUFP:=@MEMBUFP+4;                           << WBT >>21490000
               END;                                            << WBT >>21492000
            SCRATCH1:=SCRATCH1+4D;                             << WBT >>21494000
      ENTNUM:=ENTNUM+1;                                        <<01.02>>21496000
      COUNT:=COUNT-1;                                          <<01.02>>21498000
   END;                                                        <<01.02>>21500000
BUMP:                                                          <<01.02>>21502000
   INDX:=INDX+1;                                               <<01.02>>21504000
END;                                                           <<01.02>>21506000
END<<FILLXCST>>;                                               <<01.02>>21508000
                                                               <<01.02>>21510000
                                                                        21512000
SUBROUTINE FILLMEM(CORELOC);                                            21514000
      VALUE CORELOC;                                                    21516000
      LOGICAL CORELOC;                                                  21518000
      BEGIN                                                             21520000
      CHECKMEMBUF;                                             << WBT >>21522000
         COUNT:=CORE(DOUBLE(CORELOC));                                  21524000
         IF ENTRYTYPE = %10000 AND COUNT > %300 THEN           <<00221>>21526000
          COUNT:=%300;     <<TOO MANY CST ENTRIES>>            <<00221>>21528000
         IF COUNT > 512 THEN COUNT:=512;                                21530000
         CORELOC:=CORELOC+3;                                            21532000
         ENTNUM:=1;                                                     21534000
    WHILE COUNT>0 DO                                           << WBT >>21536000
         BEGIN                                                          21538000
         CHECKMEMBUF;                                          << WBT >>21540000
            CORELOC:=CORELOC+1;                                         21542000
         IF ITSTHERE(DOUBLE(CORELOC)) THEN                     << WBT >>21544000
            BEGIN     <<PRESENT>>                                       21546000
               CORELOC:=CORELOC+2;                                      21548000
            MBTYPE:=ENTRYTYPE &LSR(12);                        << WBT >>21550000
            MBENTNO:=ENTNUM;                                   << WBT >>21552000
            MBBANK:=CORE(DOUBLE(CORELOC));                     << WBT >>21554000
            SCRATCH:=DOUBLE(MBBANK)&DLSL(16);                  << WBT >>21556000
            MBADDR:=CORE(DOUBLE(CORELOC:=CORELOC+1));          << WBT >>21558000
            SCRATCH:=SCRATCH+DOUBLE(MBADDR);                   << WBT >>21560000
            @MEMBUFP:=@MEMBUFP+4;                              << WBT >>21562000
               IF SCRATCH=0D THEN                              << WBT >>21564000
               IF (ENTRYTYPE <>%30000) OR (ENTNUM<>6) THEN     <<01.3A>>21566000
               BEGIN                                           <<01.3A>>21568000
               @MEMBUFP:=@MEMBUFP-4;                           << WBT >>21570000
                 IF @MEMBUFP < @MEMBUF THEN                    <<01.3A>>21572000
                 @MEMBUFP:=@MEMBUF;                            <<01.3A>>21574000
               END;                                            <<01.3A>>21576000
            END                                                         21578000
             ELSE                                              <<01.02>>21580000
             CORELOC:=CORELOC+3;                               <<01.02>>21582000
            ENTNUM:=ENTNUM+1;                                           21584000
            COUNT:=COUNT-1;                                             21586000
         END;                                                           21588000
BYP1:                                                                   21590000
       END;                                                             21592000
         @MEMBUFP:=@MEMBUF;                                    <<00.01>>21594000
         IF BANKNUM = 0 THEN                                   <<00.01>>21596000
            BEGIN                                              <<00.01>>21598000
      MBTYPE:=%7;          <<FIXED LOW CORE>>                  << WBT >>21600000
      MBENTNO:=0;                                              << WBT >>21602000
      MBBANK:=0;                                               << WBT >>21604000
      MBADDR:=0;                                               << WBT >>21606000
      @MEMBUFP:=@MEMBUFP+4;                                    << WBT >>21608000
      MBTYPE:=%11;         <<SYSTEM GLOBAL>>                   << WBT >>21610000
      MBENTNO:=0;                                              << WBT >>21612000
      MBBANK:=0;                                               << WBT >>21614000
      MBADDR:=%1000;                                           << WBT >>21616000
      @MEMBUFP:=@MEMBUFP+4;                                    << WBT >>21618000
      MBTYPE:=%4;       <<CST>>                                << WBT >>21620000
      MBENTNO:=0;                                              << WBT >>21622000
      MBBANK:=0;                                               << WBT >>21624000
      MBADDR:=CORE(CSTB D);                                    << WBT >>21626000
      @MEMBUFP:=@MEMBUFP+4;                                    << WBT >>21628000
      MBTYPE:=%5;         <<CST'>>                             << WBT >>21630000
      MBENTNO:=0;                                              << WBT >>21632000
      MBBANK:=0;                                               << WBT >>21634000
      MBADDR:=CORE(CSTB' D);                                   << WBT >>21636000
      IF NOT CSTBAD' THEN @MEMBUFP:=@MEMBUFP+4;                << WBT >>21638000
MBTYPE:=%6;    <<DST>>                                         << WBT >>21640000
MBENTNO:=0;                                                    << WBT >>21642000
MBBANK:=0;                                                     << WBT >>21644000
SCRATCH1:=DSTDEFIN;                                            << WBT >>21646000
MBADDR:=SCR1;                                                  << WBT >>21648000
@MEMBUFP:=@MEMBUFP+4;                                          << WBT >>21650000
MBTYPE:=%10;     <<DRT>>                                       << WBT >>21652000
MBENTNO:=0;                                                    << WBT >>21654000
         MBBANK:=0;                                        <<00<< WBT >>21656000
         MBADDR:=%14;                                      <<00<< WBT >>21658000
      @MEMBUFP:=@MEMBUFP+4;                                    << WBT >>21660000
END;  << END IF BANKNUM=0 >>                                   <<00221>>21662000
         ENTRYTYPE:=%10000;     <<CST ENTRIES>>                << WBT >>21664000
         IF NOT CSTBAD THEN FILLMEM(CORE(CSTB D));                      21666000
         ENTRYTYPE:=%20000;      <<CST' ENTRIES>>              << WBT >>21668000
         CSTBAD':=FALSE;                                       <<01.02>>21670000
         FILCSTBLK;                                            <<01.02>>21672000
         FILLXCST;                                             <<01.02>>21674000
         ENTRYTYPE:=%30000;       <<DST ENTRIES>>              << WBT >>21676000
         SCRATCH1:=DSTDEFIN;     <<ADDRESS OF DST BASE>>       <<00221>>21678000
         IF NOT DSTBAD THEN FILLMEM(SCR1);  <<FILL DST S>>     <<00221>>21680000
   ARLDPTR:=DOUBLE(CORE(%1044D))+%1000D;                       << WBT >>21682000
   SIZE:=0;                                                    << WBT >>21684000
   TOS:=CORE(%1250D);                                                   21686000
   TOS:=CORE(%1251D);                                                   21688000
      FREELINK:=TOS;                                           << WBT >>21690000
      WHILE FREELINK<>0D DO                                    << WBT >>21692000
      BEGIN                                                    << WBT >>21694000
         TOS:=FREELINK;                                        << WBT >>21696000
         ASSEMBLE(DDUP,DEL);                                   << WBT >>21698000
         IF TOS=BANKNUM THEN                                   << WBT >>21700000
         BEGIN                                                 << WBT >>21702000
            MBTYPE:=%12;                                       << WBT >>21704000
            MBENTNO:=0;                                        << WBT >>21706000
            MBADDR:=TOS+RBTONLDISP;                            << WBT >>21708000
            MBBANK:=TOS;                                       << WBT >>21710000
            @MEMBUFP:=@MEMBUFP+4;                              << WBT >>21712000
            CHECKMEMBUF;                                       << WBT >>21714000
         END                                                   << WBT >>21716000
            ELSE                                               << WBT >>21718000
            ASSEMBLE(DDEL);                                    << WBT >>21720000
         TOS:=CORE(FREELINK);                                           21722000
         TOS:=CORE(FREELINK+1D);                                        21724000
         FREELINK:=TOS;                                        << WBT >>21726000
      END;                                                     << WBT >>21728000
<< NOW GO THROUGH THE RESERVED REGIONS FOR DISC CACHING   >>            21730000
<< SO THEY CAN BE PRINTED TOO WHEN THE BANK IS PRINTED.   >>            21732000
<< THE HEAD OF THIS LINKED LIST OF REGIONS IS IN EACH     >>            21734000
<< CACHED DEVICE ENTRY.                                   >>            21736000
                                                                        21738000
CACHE:=DOUBLE(CORE(CACHE'DST));                                         21740000
IF CACHE <> 0D THEN                  << PROCEED--CACHING ENABLED >>     21742000
 BEGIN                                                                  21744000
   CACHE:=DSTTOADDR(LOGICAL(CACHE));                                    21746000
   LENGTH:=CORE(CACHE+1D);                                              21748000
   CURRENT:=CORE(CACHE+CDT'DISC'HEAD);                                  21750000
   CURRENT:=CURRENT*LENGTH;                                             21752000
                                                                        21754000
   WHILE CURRENT > 0 DO                                                 21756000
    BEGIN                                                               21758000
      D1:=CORE(CACHE+DOUBLE(CURRENT) + RHEAD);                          21760000
      D2:=CORE(CACHE+DOUBLE(CURRENT) + RHEAD + 1D );                    21762000
                                                                        21764000
      WHILE DNUM > 0D DO                                                21766000
       BEGIN                                                            21768000
         TOS:=DNUM;                                                     21770000
         ASSEMBLE(DDUP,DEL);                                            21772000
         IF TOS=BANKNUM THEN                                            21774000
         BEGIN                                                          21776000
            MBTYPE:=%15;                                                21778000
            MBENTNO:=0;                                                 21780000
            MBADDR:=TOS+5;                                              21782000
            MBBANK:=TOS;                                                21784000
            @MEMBUFP:=@MEMBUFP+4;                                       21786000
            CHECKMEMBUF;                                                21788000
         END                                                            21790000
            ELSE                                                        21792000
            ASSEMBLE(DDEL);                                             21794000
         TOS:=CORE(DNUM);                                               21796000
         TOS:=CORE(DNUM+1D);                                            21798000
         DNUM:=TOS;                                                     21800000
       END;                                                             21802000
                                                                        21804000
       MAP'ENTRY:=CORE(CACHE+DOUBLE(CURRENT)+MAP'HEAD)*LENGTH;          21806000
       WHILE MAP'ENTRY > 0 DO                                           21808000
        BEGIN                                                           21810000
          D1:=CORE(CACHE+DOUBLE(MAP'ENTRY) + MD'ADDR);                  21812000
          D2:=CORE(CACHE+DOUBLE(MAP'ENTRY) + MD'ADDR + 1D);             21814000
                                                                        21816000
             TOS:=DNUM;                                                 21818000
             ASSEMBLE(DDUP,DEL);                                        21820000
             IF TOS=BANKNUM THEN                                        21822000
             BEGIN                                                      21824000
                MBTYPE:=%15;                                            21826000
                MBENTNO:=0;                                             21828000
                MBADDR:=TOS;                                            21830000
                MBBANK:=TOS;                                            21832000
                @MEMBUFP:=@MEMBUFP+4;                                   21834000
                CHECKMEMBUF;                                            21836000
             END;                                                       21838000
                                                                        21840000
           MAP'ENTRY:=CORE(CACHE+DOUBLE(MAP'ENTRY) + 1D) * LENGTH;      21842000
        END;                                                            21844000
                                                                        21846000
                                                                        21848000
      CURRENT:=CORE(CACHE+DOUBLE(CURRENT))*LENGTH;                      21850000
     END;                                                               21852000
 END;                                                                   21854000
                                                                        21856000
BYPASS:                                                                 21858000
         MEMBUFP:=-1;            <<TERMINATOR>>                         21860000
         TOS:=MAXMEM+1D-DOUBLE(NUMREC)*4096D;  <<ONLY DUMPED>> <<00221>>21862000
         MBADDR:=TOS;                                          << WBT >>21864000
         MBBANK:=TOS;                                          << WBT >>21866000
                                                                        21868000
END;                                                           <<00221>>21870000
$PAGE "SORTMEMBUF: Sort records built by FILLMEMBUF"                    21872000
$CONTROL SEGMENT=MEMORY                                                 21874000
COMMENT                                                                 21876000
                                                                        21878000
Purpose:                                                                21880000
<<    THIS PROCEDURE SORTS THE MEMORY BUFFER BUILT BY FILL        >>    21882000
<<    MEMORY BUFFER INTO ASCENDING ORDER BY STARTING ADDRESS      >>    21884000
                                                                        21886000
Input parameters:                                                       21888000
                                                                        21890000
Output parameters:                                                      21892000
                                                                        21894000
Globals Referenced:                                                     21896000
                                                                        21898000
Globals Altered:                                                        21900000
                                                                        21902000
Data Structures:                                                        21904000
                                                                        21906000
Algorithm:                                                              21908000
                                                                        21910000
;                                                                       21912000
PROCEDURE SORTMEMBUF;                                                   21914000
      BEGIN                                                             21916000
   ARRAY MEMSAVE(0:3)=Q;                                       << WBT >>21918000
      INTEGER SKIPCNT,X1,X2,MAX;                                        21920000
                                                                        21922000
SUBROUTINE MEMSWAP(X1,X2);                                              21924000
      VALUE X1,X2;                                                      21926000
      INTEGER X1,X2;                                                    21928000
      BEGIN                                                             21930000
         TOS:=MEMBUF(X1*4+1);                                  << WBT >>21932000
         TOS:=MEMBUF(X:=X+1);                                           21934000
         TOS:=MEMBUF(S3*4+1);   <<X2 AT S-3>>                  << WBT >>21936000
         TOS:=MEMBUF(X:=X+1);                                           21938000
         ASB(DCMP);                                                     21940000
         IF > THEN  <<SWAP THESE 2>>                                    21942000
         BEGIN                                                          21944000
            MOVE MEMSAVE:=MEMBUF(X:=X-2),(4);                  << WBT >>21946000
            MOVE MEMBUF(X):=MEMBUF(X1*4),(4);                  << WBT >>21948000
            MOVE MEMBUF(X):=MEMSAVE,(4);                       << WBT >>21950000
            IF X1>=SKIPCNT THEN MEMSWAP(X1-SKIPCNT,X2-SKIPCNT);         21952000
         END;                                                           21954000
      END;                                                              21956000
   TOS:=(@MEMBUFP-@MEMBUF)/4;                                  << WBT >>21958000
         TOS:=1;                                                        21960000
         DO ASB(LSL 1;DDUP,LCMP) UNTIL <;                               21962000
         SKIPCNT:=TOS;                                                  21964000
         MAX:=TOS;                                                      21966000
         DO                                                             21968000
         BEGIN                                                          21970000
            X1:=0;                                                      21972000
            X2:=SKIPCNT;                                                21974000
            WHILE X2<MAX DO                                             21976000
            BEGIN                                                       21978000
               MEMSWAP(X1,X2);                                          21980000
               X1:=X1+1;                                                21982000
               X2:=X2+1;                                                21984000
            END;                                                        21986000
            SKIPCNT:=SKIPCNT&LSR(1);                                    21988000
         END UNTIL =;                                                   21990000
      END;                                                              21992000
                                                                        21994000
$PAGE "PRINTMEMLOCS: Overview of bank to be printed"                    21996000
$CONTROL SEGMENT=MEMORY                                                 21998000
COMMENT                                                                 22000000
                                                                        22002000
Purpose:                                                                22004000
<<   THIS PROCEDURE WILL PROCESS THE SORTED MEMORY     >>      <<00221>>22006000
<<   BUFFER AND PRINT SEGMENT DESCRIPTORS IN ASCENDING >>      <<00221>>22008000
<<   ORDER BY STARTING ADDRESS                         >>      <<00221>>22010000
The bank describing records were created by FILLMEMBUF and put          22012000
into ascending address order by SORTMEMBUF.                             22014000
PRINTMEMLOCS prints the index that precedes each bank and               22016000
describes its contents.  DUMPMEM then dumps out the contents.           22018000
                                                                        22020000
Input parameters:                                                       22022000
                                                                        22024000
Output parameters:                                                      22026000
                                                                        22028000
Globals Referenced:                                                     22030000
                                                                        22032000
Globals Altered:                                                        22034000
                                                                        22036000
Data Structures:                                                        22038000
                                                                        22040000
Algorithm:                                                              22042000
                                                                        22044000
;                                                                       22046000
PROCEDURE PRINTMEMLOCS(BANKNUM);                               <<00221>>22048000
VALUE BANKNUM;                                                 <<00221>>22050000
LOGICAL BANKNUM;                                               <<00221>>22052000
   BEGIN                                                       <<00221>>22054000
   LOGICAL WORK, WORK1, WORK2, WORK3;                          << WBT >>22056000
       DOUBLE SCRATCH,SCRATCH1;                                <<00221>>22058000
       LOGICAL ARRAY SCR0(*)=SCRATCH;   <<INSTEAD OF TOS>>     <<00221>>22060000
       LOGICAL ARRAY SCR1(*)=SCR0(1);   <<FOR MEM ADDRESS>>    <<00221>>22062000
       DOUBLE SEGPTR;   <<POINTER TO CST,CST',DST>>            <<00221>>22064000
       LOGICAL SEGFLAGS,SEGLENGTH;                             <<00221>>22066000
   LOGICAL LMFLAG;                                             <<01791>>22068000
                                                               << WBT >>22070000
LOGICAL SUBROUTINE FLAGS(PTR);                                 << WBT >>22072000
VALUE PTR; DOUBLE PTR;                                         << WBT >>22074000
BEGIN                                                          << WBT >>22076000
   WORK3:=CORE(PTR+1D);                                        << WBT >>22078000
   FLAGS.(11:1):=WORK3.(7:1);                                  << WBT >>22080000
   FLAGS.(15:1):=WORK3.(15:1);                                 << WBT >>22082000
   PTR:=DCORE(PTR+2D);                                         << WBT >>22084000
   IF PTR<LINKEDMEM THEN RETURN;                               << WBT >>22086000
   FLAGS.(12:3):=CORE(PTR-19D).(5:3);                          << WBT >>22088000
END;                                                           << WBT >>22090000
   SUBROUTINE PRINTLMSTART;                                    <<01791>>22092000
      BEGIN                                                    <<01791>>22094000
      LMFLAG:=FALSE;                                           <<01791>>22096000
      SKIPLINES(1);                                            <<01791>>22098000
      MOVE BBUF:="**********     LINKED MEMORY BEGINS AT";     <<01791>>22100000
      @PBUF:=@BBUF+40;                                         <<01791>>22102000
      PUTDNUMP(LINKEDMEM);                                     <<01791>>22104000
      PRINTLINE;                                               <<01791>>22106000
      SKIPLINES(1);                                            <<01791>>22108000
      END;                                                     <<01791>>22110000
   IF BANKNUM=0 THEN                                           <<01791>>22112000
      BEGIN                                                    <<01791>>22114000
      TOS:=CORE(SYSGLOBX+1D);                                  <<01791>>22116000
      TOS:=CORE(SYSGLOBX+2D);                                  <<01791>>22118000
      LINKEDMEM:=TOS;                                          <<01791>>22120000
       LMFLAG:=TRUE;                                           <<01791>>22122000
      END                                                      <<01791>>22124000
     ELSE                                                      <<01791>>22126000
      LMFLAG:=FALSE;                                           <<01791>>22128000
      MEMBUFP:=-1;          <<SET END OF TABLE>>               <<00221>>22130000
      @MEMBUFP:=@MEMBUF;    <<POINT TO TABLE START>>           <<00221>>22132000
      LINECOUNT:=LNSPERPG;  <<CAUSE PAGINATION>>               <<00221>>22134000
LOOP:                                                          <<00221>>22136000
      IF LINECOUNT = LNSPERPG THEN                             <<00221>>22138000
       BEGIN                                                   <<00221>>22140000
BANKNO:=BANKNUM; << FOR HEADER >>                              <<00221>>22142000
        NEWPAGE;                                               <<00221>>22144000
        MOVE DBUFFER(23):=                                     <<00221>>22146000
                "***** SORTED MEMORY SEGMENTS *****";          <<00221>>22148000
        PRINTLINE;                                             <<00221>>22150000
        SKIPLINES(1);                                          <<00221>>22152000
        MOVE DBUFFER:=                                         <<00221>>22154000
               "CORE           I/O  SYS/    SEGMENT";          <<00221>>22156000
        MOVE DBUFFER(21):=                                     <<00221>>22158000
               "MEMORY    SEGMENT";                            <<00221>>22160000
        PRINTLINE;                                             <<00221>>22162000
        MOVE DBUFFER:=                                         <<00221>>22164000
               "RES  LOCK FRZN FRZN USER    TYPE";             <<00221>>22166000
        MOVE DBUFFER(21):=                                     <<00221>>22168000
               "ADDRESS   LENGTH          DESCRIPTION";        <<00221>>22170000
        PRINTLINE;                                             <<00221>>22172000
        SKIPLINES(1);                                          <<00221>>22174000
       END;                                                    <<00221>>22176000
        BLANKBUF;                                              <<00221>>22178000
   IF LMFLAG AND DOUBLE(MBADDR)>=LINKEDMEM THEN PRINTLMSTART;  <<01791>>22180000
        @PBUF:=@BBUF+26;                                       <<00221>>22182000
        SEGFLAGS:=%100021;      <<NO LENGTH, RES, SYS>>        <<00221>>22184000
        CASE (MBTYPE) OF                                <<00221<< WBT >>22186000
          BEGIN                                                <<00221>>22188000
            ;      <<0>>                                       <<00221>>22190000
            BEGIN  <<1= CST ENTRY>>                            <<00221>>22192000
              MOVE PBUF:="CST ";                               <<00221>>22194000
              @PBUF:=@PBUF+1;                                  <<00221>>22196000
              PUTNUMP(MBENTNO);                         <<00221<< WBT >>22198000
              SEGPTR:=                                         <<00221>>22200000
                  DOUBLE(MEMBUFP.(8:8)*4)+DOUBLE(CORE(0D));    <<00221>>22202000
              SEGLENGTH:=CORE(SEGPTR).(4:12)*4;                <<00221>>22204000
         SEGFLAGS:=FLAGS(SEGPTR);                              << WBT >>22206000
              @PBUF:=@BBUF+62;                                 <<00221>>22208000
              NAMECST(MBENTNO);                         <<00221<< WBT >>22210000
            END;                                               <<00221>>22212000
            BEGIN  <<2=CST' ENTRY>>                            <<00221>>22214000
              MOVE PBUF:="CST'";                               <<00221>>22216000
              @PBUF:=@PBUF+1;                                  <<00221>>22218000
              PUTNUMP(MBENTNO);                         <<00221<< WBT >>22220000
            MOVE BBUF(61):="BLOCK:";    <<CST BLOCK NUMBER>>   <<00221>>22222000
            @PBUF:=@BBUF+67;                                   <<00221>>22224000
            PUTNUMP(MBCSTXNDX); <<BLOCK NUMBER>>       <<00221><< WBT >>22226000
            SCR0:=MBBANK;    <<BANK ADDRESS>>       <<00221>>  << WBT >>22228000
            SCR1:=MBADDR;           <<OFFSET IN BANK>>     <<00<< WBT >>22230000
            SEGLENGTH:=CORE(SCRATCH-DOUBLE(RBTOSRSDISP))*      <<CACHE>>22232000
                            LOGICAL(MMPAGESIZE);               <<CACHE>>22234000
            SCRATCH:=        DSTDEFIN;  <<POINTER TO DST>>     <<00221>>22236000
         SEGFLAGS:=FLAGS(SCRATCH +                             << WBT >>22238000
              DOUBLE(CORE(           <<OFFSET TO BLOCK>>       <<00221>>22240000
                   DOUBLE(CORE(SCRATCH+%217D))+                <<00221>>22242000
                   DOUBLE(MBCSTXNDX)))+                <<00221><< WBT >>22244000
         DOUBLE(4*(MBENTNO-%300)));                            << WBT >>22246000
            END;                                               <<00221>>22248000
            BEGIN  <<3= DST ENTRY>>                            <<00221>>22250000
              MOVE PBUF:="DST ";                               <<00221>>22252000
              @PBUF:=@PBUF+1;                                  <<00221>>22254000
              PUTNUMP(MBENTNO);                         <<00221<< WBT >>22256000
              SEGPTR:=                                         <<00221>>22258000
                 DOUBLE(MBENTNO*4)+        DSTDEFIN;    <<00221<< WBT >>22260000
              SEGLENGTH:=CORE(SEGPTR).(3:13)*4;                <<00221>>22262000
         SEGFLAGS:=FLAGS(SEGPTR);                              << WBT >>22264000
              @PBUF:=@BBUF+61;                                 <<00221>>22266000
              IF (MBENTNO) <= LSTSYSDST THEN            <<00221<< WBT >>22268000
NAMEDST    << DST ENTRY NAME >>                                <<00221>>22270000
              ELSE                                             <<00221>>22272000
               BEGIN                   <<TRY TO NAME SEGMENT>> <<00221>>22274000
            WORK:=1;                                           << WBT >>22276000
                DO                                             <<00221>>22278000
                 BEGIN                                         <<00221>>22280000
                  IF PCBSTACK(WORK)<>0 THEN  <<IN CORE STACK>> <<00221>>22282000
                   BEGIN                                       <<00221>>22284000
                    SEGPTR:=        DSTDEFIN+    <<DST BASE>>  <<00221>>22286000
                          DOUBLE(PCBSTACK(WORK)*4);<<DST NUM>> <<00221>>22288000
                    TOS:=CORE(SEGPTR+2D).(12:4);  <<BANK>>     <<00221>>22290000
                    TOS:=CORE(SEGPTR+3D);    <<ADDRESS>>       <<00221>>22292000
                    SEGPTR:=TOS;    <<ADDRESS OF STACK>>       <<00221>>22294000
                    IF MBENTNO = PCBSTACK(WORK) THEN    <<00221<< WBT >>22296000
                     BEGIN             <<HIS STACK>>           <<00221>>22298000
                      MOVE PBUF:="STACK FOR PIN";              <<00221>>22300000
                      @PBUF:=@PBUF+11;                         <<00221>>22302000
                      PUTNUMP(WORK);   <<PUT PIN IN MSG>>      <<00221>>22304000
                      WORK:=256;       <<PREVENT BOUNDS VIO>>  <<00221>>22306000
                     END ELSE                                  <<00221>>22308000
                    IF MBENTNO = CORE(SEGPTR+5D).(6:10) <<00221<< WBT >>22310000
                     THEN BEGIN        <<HIS JDT>>             <<00221>>22312000
                      MOVE PBUF:="JDT FOR PIN";                <<00221>>22314000
                      @PBUF:=@PBUF+9;                          <<00221>>22316000
                      PUTNUMP(WORK);   <<PUT PIN IN MSG>>      <<00221>>22318000
                      WORK:=256;       <<PREVENT BOUNDS VIO>>  <<00221>>22320000
                     END ELSE                                  <<00221>>22322000
                    IF MBENTNO = CORE(SEGPTR+6D).(6:10) <<00221<< WBT >>22324000
                     THEN BEGIN        <<HIS JIT>>             <<00221>>22326000
                      MOVE PBUF:="JIT FOR PIN";                <<00221>>22328000
                      @PBUF:=@PBUF+9;                          <<00221>>22330000
                      PUTNUMP(WORK);   <<PUT PIN IN MSG>>      <<00221>>22332000
                      WORK:=256;       <<PREVENT BOUNDS VIO>>  <<00221>>22334000
                     END;                                      <<00221>>22336000
                   END;                                        <<00221>>22338000
                 END                                           <<00221>>22340000
                UNTIL (WORK:=WORK+1) > 255;                    <<00221>>22342000
               END;                <<SEGMENT > LSTSYSDST SEG>> <<00221>>22344000
            END;                                               <<00221>>22346000
            BEGIN  <<4= CST TABLE>>                            <<00221>>22348000
              MOVE PBUF:="CST TABLE";                          <<00221>>22350000
            END;                                               <<00221>>22352000
            BEGIN  <<5= PROCESS CST TABLE>>                    <<00221>>22354000
              MOVE PBUF:="PROCESS CST";                        <<00221>>22356000
            END;                                               <<00221>>22358000
            BEGIN  <<6= DST TABLE>>                            <<00221>>22360000
              MOVE PBUF:="DST TABLE";                          <<00221>>22362000
            END;                                               <<00221>>22364000
            BEGIN  <<7= FIXED LOW CORE>>                       <<00221>>22366000
              MOVE PBUF:="FIXED LOW CORE";                     <<00221>>22368000
              SEGLENGTH:=12;    <<LENGTH OF FIXED LOW CORE>>   <<00221>>22370000
              SEGFLAGS:=%21;    <<RESIDENT AND SYSTEM>>        <<00221>>22372000
            END;                                               <<00221>>22374000
            BEGIN  <<10= DRT>>                                 <<00221>>22376000
              MOVE PBUF:="DRT ";                               <<00221>>22378000
              SEGFLAGS:=%21;                                   <<00221>>22380000
              SEGLENGTH:=(CORE(%1071D).(8:8)-2)*4;             <<00221>>22382000
            END;                                               <<00221>>22384000
            BEGIN  <<11= SYS GLOBAL>>                          <<00221>>22386000
              MOVE PBUF:="SYSTEM GLOBAL";                      <<00221>>22388000
            END;                                               <<00221>>22390000
            BEGIN  <<12= FREE AREA>>                           <<00221>>22392000
              MOVE PBUF:="AVAILABLE AREA";                     << WBT >>22394000
              TOS:=MBBANK; TOS:=MBADDR;                <<00221><< WBT >>22396000
              SCRATCH1:=TOS;     <<FREE ADDRESS>>              <<00221>>22398000
         SEGLENGTH:=CORE(SCRATCH1-DOUBLE(RBTORSDISP))*                  22400000
                               LOGICAL(MMPAGESIZE);                     22402000
              SEGFLAGS:=%0;                                    << WBT >>22404000
              IF SEGLENGTH=0                                   << WBT >>22406000
                 THEN MOVE BBUF(51):="200000"                  << WBT >>22408000
                 ELSE SEGFLAGS:=%1;                            << WBT >>22410000
            END;                                               <<00221>>22412000
            BEGIN  <<13= MONITOR TABLE>>                       <<00221>>22414000
              MOVE PBUF:="MONITOR TABLE";                      <<00221>>22416000
              TOS:=MBBANK; TOS:=MBADDR;  <<STACK>>     <<00221><< WBT >>22418000
              SCRATCH1:=TOS;      <<ASSIGN TO DOUBLE WORD>>    <<00221>>22420000
              SEGLENGTH:=CORE(SCRATCH1)+1;  <<+1 OHEAD>>       <<00221>>22422000
              SEGFLAGS:=%21;        <<SYSTEM AND RESIDENT>>    <<00221>>22424000
            END;                                               <<00221>>22426000
            BEGIN  <<14 IS UNUSED -- FORMERLY BANK MARKER>>    << WBT >>22428000
         GO AROUND;                                            << WBT >>22430000
            END;                                               <<00221>>22432000
            ;;           <<15,16 = UNUSED>>                    <<00221>>22434000
            BEGIN  <<17 = END OF LIST>>                        <<00221>>22436000
              IF LMFLAG THEN PRINTLMSTART;                     <<01791>>22438000
              RETURN;                                          <<00221>>22440000
            END;                                               <<00221>>22442000
         END;                                                  <<00221>>22444000
         @PBUF:=@BBUF+37;                                      <<00221>>22446000
PUTNUMP(MBBANK); << BANK >>                         <<00221>>  << WBT >>22448000
         PUTNUM(MBADDR);              <<OFFSET IN BANK>>   <<00<< WBT >>22450000
         IF SEGFLAGS.(11:1)=1 THEN MOVE BBUF(0):="RES";        <<00221>>22452000
         IF SEGFLAGS.(12:1)=1 THEN MOVE BBUF(5):="LOCK";       <<00221>>22454000
         IF SEGFLAGS.(13:1)=1 THEN MOVE BBUF(10):="FRZN";      <<00221>>22456000
         IF SEGFLAGS.(14:1)=1 THEN MOVE BBUF(15):="IOFR";      <<00221>>22458000
         IF SEGFLAGS.(15:1)=1 THEN MOVE BBUF(20):="SYS"        <<00221>>22460000
                              ELSE MOVE BBUF(20):="USER";      <<00221>>22462000
         @PBUF:=@BBUF+52;                                      <<00221>>22464000
         IF SEGFLAGS.(0:1)=0 THEN PUTNUMP(SEGLENGTH);          <<00221>>22466000
IF MINI'DUMP AND MBTYPE=3 THEN                                 <<03076>>22468000
  IF DST'TYPE(MBENTNO) <> 0 THEN                               <<03076>>22470000
    <<PRINTED>>                                                <<03076>>22472000
  ELSE                                                         <<03076>>22474000
    MOVE BBUF(101):="(NOT PRINTED)";                           <<03076>>22476000
IF MINI'DUMP AND MBTYPE <> 3 THEN                              <<03076>>22478000
  MOVE BBUF(101):="(NOT PRINTED)";                             <<03076>>22480000
  IF SEGLENGTH=0 THEN MBTYPE:=0 ELSE                    <<00221<< WBT >>22482000
         PRINTLINE;                                            <<00221>>22484000
AROUND:                                                        << WBT >>22486000
   @MEMBUFP:=@MEMBUFP+4;                                       << WBT >>22488000
         GO TO LOOP;                                           <<00221>>22490000
   END;                                                        <<00221>>22492000
                                                                        22494000
                                                                        22496000
$PAGE "MEMBUFOFL: Print membuf overflow message and terminate"          22498000
$CONTROL SEGMENT=MEMORY                                        << WBT >>22500000
                                                               << WBT >>22502000
COMMENT                                                                 22504000
                                                                        22506000
Purpose:                                                                22508000
   Print membuf overflow message and terminate                          22510000
                                                                        22512000
Input parameters:                                                       22514000
                                                                        22516000
Output parameters:                                                      22518000
                                                                        22520000
Globals Referenced:                                                     22522000
                                                                        22524000
Globals Altered:                                                        22526000
                                                                        22528000
Data Structures:                                                        22530000
                                                                        22532000
Algorithm:                                                              22534000
                                                                        22536000
;                                                                       22538000
PROCEDURE MEMBUFOFL;                                           << WBT >>22540000
   BEGIN                                                       << WBT >>22542000
   ARRAY JUNK'(0:65);                                          << WBT >>22544000
   BYTE ARRAY JUNK(*)=JUNK';                                   << WBT >>22546000
   INTRINSIC TERMINATE;                                        << WBT >>22548000
   MOVE JUNK:="***** INTERNAL DPAN ERROR - MEMBUF OVERFLOW *****";      22550000
   PRINT(JUNK',-49,0);                                         << WBT >>22552000
   TERMINATE;                                                  << WBT >>22554000
   END;                                                        << WBT >>22556000
$CONTROL SEGMENT=TABLES2                                                22558000
$PAGE "PRINT CACHE"                                                     22560000
                                                                        22562000
<<*****************************************************>>               22564000
<<                                                     >>               22566000
<<  PROCEDURE: PRINT'CACHE                             >>               22568000
<<                                                     >>               22570000
<<  PURPOSE: TO FORMAT THE CACHE DIRECTORY TABLE       >>               22572000
<<                                                     >>               22574000
<<  ALGORITHM: (1) PRINT THE HEADER DATA               >>               22576000
<<             (2) PRINT EACH DEVICE ENTRY, KEEPING    >>               22578000
<<                 TRACK OF EVERY MAPPED ENTRY IN AN   >>               22580000
<<                 ARRAY                               >>               22582000
<<             (3) PRINT EACH MAPPED ENTRY             >>               22584000
<<             (4) PRINT EACH FREE ENTRY               >>               22586000
<<                                                     >>               22588000
<<*****************************************************>>               22590000
                                                                        22592000
PROCEDURE PRINTCACHE;                                                   22594000
                                                                        22596000
BEGIN                                                                   22598000
EQUATE                                                                  22600000
  CACHE'DST     =%1273,          <<ABS ADDRESS OF DST # >>              22602000
  NOPOINT       =-1,             << NULL POINTER        >>              22604000
  PCBSIZE       =21,             << SIZE OF PCB         >>              22606000
  IMPOFFSET     =17,             << NIMP OFFSET         >>              22608000
  MAXMAP        =2048;           <<MAX # OF MAP ENTRIES >>              22610000
                                                                        22612000
LOGICAL ARRAY MAPDOM(0:MAXMAP);    << FLAGS MAPPED ENTRIES  >>          22614000
                                                                        22616000
LOGICAL CDST,PIN,INDX,CURRENT,ENTRYSIZE;                                22618000
INTEGER IX;                                                             22620000
                                                                        22622000
DOUBLE LOCPCB,CDT;                                                      22624000
DOUBLE DNUM,DMEMOR;                                                     22626000
LOGICAL ARRAY D1(*)=DNUM;          << HOLDS HIGH ORDER WORD >>          22628000
LOGICAL ARRAY D2(*)=D1(1);         << HOLDS LOW ORDER WORD  >>          22630000
LOGICAL MAPCDT;                                                         22632000
LOGICAL IDX,DONE,FIRST;                                                 22634000
                                                                        22636000
LOGICAL FLAGS;                 << FLAG WORD IN MCDT >>                  22638000
LOGICAL LAST,FINI;                                                      22640000
LOGICAL LEN;                                                            22642000
                                                                        22644000
<<************ Cache DST Equates and Defines *****************>>        22646000
                                                                        22648000
<< DST Header Entry >>                                                  22650000
equate CDT'ENTRIES    = 0,                        <<Entries in table  >>22652000
       CDT'SIZE       = CDT'ENTRIES + 1,          <<Entry size        >>22654000
       CDT'FREE'COUNT = CDT'SIZE + 1,             <<# free entries    >>22656000
       CDT'FREE'HEAD  = CDT'FREE'COUNT + 1,       <<First free entry  >>22658000
       CDT'FREE'TAIL  = CDT'FREE'HEAD + 1,        <<Last free entry   >>22660000
       CDT'MAX'USED   = CDT'FREE'TAIL + 1,        <<Max entries used  >>22662000
       CDT'NUM'LDEVS  = CDT'MAX'USED + 1,         <<Num LDEVs cached  >>22664000
       CDT'DISC'HEAD  = CDT'NUM'LDEVS + 1,        <<First cached LDEV >>22666000
       CDT'DST'WORDS  = CDT'DISC'HEAD + 1,        <<Number of DST wds >>22668000
       CDT'STOP'PND   = CDT'DST'WORDS + 1,        <<TRUE if stopcache >>22670000
       CDT'SEQ'MINFTCH= CDT'STOP'PND + 1,         <<# sectors seq ftch>>22672000
       CDT'RND'MINFTCH= CDT'SEQ'MINFTCH + 1,      <<# secs random ftch>>22674000
       CDT'FORCE'POST = CDT'RND'MINFTCH + 1,      <<TRUE-wait wrt comp>>22676000
       CDT'STOP'QUEUE = CDT'FORCE'POST + 1,       <<Head PIN on impede>>22678000
       CDT'END        = CDT'STOP'QUEUE + 1;       <<Len of entry      >>22680000
                                                                        22682000
<< Cached Disc Device Entry >>                                          22684000
equate CDT'DE'NEXT'LDEV = 0,                      <<Next cached LDEV  >>22686000
       CDT'DE'PREV'LDEV = CDT'DE'NEXT'LDEV+ 1,    <<Prev cached LDEV  >>22688000
       CDT'DE'LDEV = CDT'DE'PREV'LDEV + 1,        <<LDEV of disc      >>22690000
                                                                        22692000
                                                                        22694000
                                                                        22696000
       CDT'DE'MAPD'PAGES= CDT'DE'LDEV     + 1,    <<Number of main mem>>22698000
                                                  <<pages now alloc.  >>22700000
       CDT'DE'MAPD'CNT  = CDT'DE'MAPD'PAGES+1,    <<# mapped CDTs     >>22702000
       CDT'DE'MAPD'HEAD = CDT'DE'MAPD'CNT + 1,    <<Hd mapped CDT     >>22704000
       CDT'DE'MAPD'TAIL = CDT'DE'MAPD'HEAD + 1,   <<Tail mapped CDT   >>22706000
       CDT'DE'REGIONS   = CDT'DE'MAPD'TAIL + 1,                         22708000
       CDT'DE'REG'HD    = CDT'DE'REGIONS + 1,     <<Double abs reg hd >>22710000
       CDT'DE'REG'TL    = CDT'DE'REG'HD +2,       <<Double abs reg tl >>22712000
       CDT'DE'RHIT      = CDT'DE'REG'TL + 2,      <<Cache read <<ak.01>>22714000
       CDT'DE'WHIT      = CDT'DE'RHIT + 2,        <<Cache wrt H<<ak.01>>22716000
       CDT'DE'RMISS     = CDT'DE'WHIT + 2,        <<Cache read <<ak.01>>22718000
       CDT'DE'WMISS     = CDT'DE'RMISS + 2,       <<Cache write<<ak.01>>22720000
       CDT'DE'STOP      = CDT'DE'WMISS + 2,       <<Cache I/O b<<ak.01>>22722000
       CDT'DE'SCANPT    = CDT'DE'STOP   + 2,      <<Last ref do<<ak.01>>22724000
       CDT'DE'END       = CDT'DE'SCANPT    + 2;   <<Entry length      >>22726000
                                                                        22728000
<< Mapped Disc Domain Entry >>                                          22730000
equate CDT'MD'PREV      = 0,                      <<Prev mapd CDT dom.>>22732000
       CDT'MD'NEXT      = CDT'MD'PREV + 1,        <<Next mapd CDT dom.>>22734000
       CDT'MD'SECTOR    = CDT'MD'NEXT + 1,        <<Sector base       >>22736000
       CDT'MD'END'SECTOR= CDT'MD'SECTOR + 2,      <<Sector limit      >>22738000
       CDT'MD'FLAGS     = CDT'MD'END'SECTOR + 2,  <<Misc flag bits    >>22740000
       CDT'MD'READ'CNT  = CDT'MD'FLAGS + 1,       <<# DISCREQ reading >>22742000
       CDT'MD'WRITE'CNT = CDT'MD'READ'CNT + 1,    <<# DISCREQ writing >>22744000
       CDT'MD'LKD'CDT   = CDT'MD'WRITE'CNT + 1,   <<CDT locked waiting>>22746000
       CDT'MD'IMPED'HD  = CDT'MD'LKD'CDT + 1,     <<Head LDR waited   >>22748000
       CDT'MD'LDR'HEAD  = CDT'MD'IMPED'HD + 1,    <<Head LDR active   >>22750000
       CDT'MD'MEM'ADDR  = CDT'MD'LDR'HEAD + 1,    <<Abs addr of region>>22752000
                                                  <<if present        >>22754000
       CDT'MD'DISCREQ   = CDT'MD'MEM'ADDR + 2,    <<Spare disc req    >>22756000
       CDT'MD'LK'CNT    = CDT'MD'DISCREQ + 1,     <<# of flushing CDTs>>22758000
       CDT'MD'LDEV      = CDT'MD'LK'CNT  + 1,     <<Domain's LDEV     >>22760000
       CDT'MD'IMPEDED   = CDT'MD'LDEV + 1,        <<Head impeded PIN  >>22762000
       CDT'MD'END       = CDT'MD'IMPEDED + 1;     <<Entry length      >>22764000
                                                                        22766000
<< Equates for CDT'MD'STATE - all possible 'states' a CDT can be in   >>22768000
equate CDT'AVAIL'STATE = 0, <<Available, no LDRs attached             >>22770000
       CDT'READ'STATE  = 1, <<Only read LDRs are attached             >>22772000
       CDT'WRITE'STATE = 2, <<Write and read LDRs are attached        >>22774000
       CDT'FLUSH'STATE = 3, <<All LDRs must be completed: purge CDT   >>22776000
       CDT'LOCK'STATE  = 4; <<CDT locked, awaiting other CDT flush(es)>>22778000
                                                                        22780000
<< Add equates for bit positions in CDT'MD'FLAGS word   >>              22782000
equate CDT'ABS'BIT         = 0,  << Absent bit          >>              22784000
       CDT'IMI'BIT         = 1,  << In-motion in        >>              22786000
       CDT'IMO'BIT         = 2,  << In-motion out ???   >>              22788000
       CDT'MISS'BIT        = 3,  << Miss on cache       >>              22790000
       CDT'LOCKED'BIT      = 4,  << Locked bit set      >>              22792000
       CDT'FWIP'BIT        = 5,  << Forced-write in prog>>              22794000
       CDT'ROC'BIT         = 6,  << Rec. overlay canidat>>              22796000
       CDT'VIRGIN'BIT      = 7,  << Region is virgin    >>              22798000
       CDT'WAIT'ON'NOPOST  = 8,  << Waiting on NOPOST wt>>              22800000
       CDT'SEQ'BIT         = 9,  << SEQ access to CDT   >>              22802000
       CDT'STATE'BITS      =13;  << (13:3) - state bits >>              22804000
                                                                        22806000
<< Defines for bits in FLAGS word of a mapped CDT entry >>              22808000
define CDT'ABSENT     = (CDT'ABS'BIT:1)#, <<Region is absent        >>  22810000
       CDT'IMI        = (CDT'IMI'BIT:1)#, <<In-motion in            >>  22812000
       CDT'IMO        = (CDT'IMO'BIT:1)#, <<ASK JOHN B!!!!!!        >>  22814000
       CDT'LOCKREQ'PND= (CDT'MISS'BIT:1)#, <<Lock request pending  >>   22816000
       CDT'LOCKED     = (CDT'LOCKED'BIT:1)#, <<Entry is locked      >>  22818000
       CDT'FWIP       = (CDT'FWIP'BIT:1)#, <<Forced write in-prog.  >>  22820000
       CDT'ROC        = (CDT'ROC'BIT:1)#, <<Recoverable overlay can.>>  22822000
       CDT'VIRGIN     = (CDT'VIRGIN'BIT:1)#,<<Region is VIRGIN      >>  22824000
       CDT'NOPOST     = (CDT'WAIT'ON'NOPOST:1)#,<<Wait NOPOST compl.>>  22826000
       CDT'SEQ        = (CDT'SEQ'BIT:1)#, << Sequential CDT access >>   22828000
       CDT'MD'STATE   = (CDT'STATE'BITS:3)#;<<CDT state bits        >>  22830000
                                                                        22832000
LOGICAL SUBROUTINE CACHE(OFFSET);                                       22834000
VALUE OFFSET;                                                           22836000
LOGICAL OFFSET;                                                         22838000
                                                                        22840000
CACHE:=CORE(CDT+DOUBLE(OFFSET));                                        22842000
                                                                        22844000
                                                                        22846000
SUBROUTINE PUTL(BIT,COL,L);                                             22848000
VALUE BIT,COL,L;                                                        22850000
LOGICAL BIT;                                                            22852000
INTEGER COL;                                                            22854000
BYTE L;                                                                 22856000
                                                                        22858000
IF BIT<>0 THEN                                                          22860000
BBUF(COL):=L;                                                           22862000
                                                                        22864000
$PAGE                                                                   22866000
                                                                        22868000
<<********************************************************>>            22870000
<<                                                        >>            22872000
<<                  FMT'CDT'ENTRY                         >>            22874000
<<                                                        >>            22876000
<<********************************************************>>            22878000
                                                                        22880000
SUBROUTINE FMT'CDT'ENTRY(OFFSET);                                       22882000
VALUE OFFSET;                                                           22884000
LOGICAL OFFSET;                                                         22886000
BEGIN                                                                   22888000
                                                                        22890000
<<   PRINT OUT HEADER >>                                                22892000
                                                                        22894000
IF LINECOUNT >40 THEN                                                   22896000
   NEWPAGE;                                                             22898000
   MOVE BBUF(50):="CACHED DEVICE ENTRY";                                22900000
   PRINTLINE;                                                           22902000
   SKIPLINES(2);                                                        22904000
MOVE BBUF(18):="PREV NEXT ALLOC MAPPED  MAPPED MAPPED";                 22906000
MOVE BBUF(57):="REG-HEAD-PTR  REG-TAIL-PTR  NUMBER";                    22908000
MOVE BBUF(95):="                    SCAN-POINTER";                      22910000
PRINTLINE;                                                              22912000
MOVE BBUF:="     ENTRY   LDEV LDEV LDEV PAGES DOMAINS";        <<sknew>>22914000
MOVE BBUF(44):="HEAD   TAIL  BANK    BASE  BANK    BASE";               22916000
MOVE BBUF(85):="REGIONS";                                               22918000
MOVE BBUF(95):="CACHING STATISTICS";                                    22920000
MOVE BBUF(115):="BANK    BASE";                                         22922000
PRINTLINE;                                                              22924000
MOVE BBUF:="     -----   ---- ---- ---- ----- -------";        <<sknew>>22926000
MOVE BBUF(42):="------ ------  ------------  ------------ ";            22928000
MOVE BBUF(85):="-------   ------------------  ------------";            22930000
PRINTLINE;                                                              22932000
PUTOCTALP(OFFSET/ENTRYSIZE,9);               << CDT ENTRY NUMBE<<sknew>>22934000
PUTOCTALP(CACHE(OFFSET+CDT'DE'LDEV),16);                                22936000
PUTOCTALP(CACHE(OFFSET+CDT'DE'PREV'LDEV),21);                           22938000
PUTOCTALP(CACHE(OFFSET+CDT'DE'NEXT'LDEV),26);                           22940000
PUTOCTALP(CACHE(OFFSET+CDT'DE'MAPD'PAGES),33);                          22942000
PUTOCTALP(CACHE(OFFSET+CDT'DE'MAPD'CNT),39);                            22944000
MAPCDT:=CACHE(OFFSET+CDT'DE'MAPD'HEAD);                                 22946000
PUTOCTALP(MAPCDT,48);                                                   22948000
PUTOCTALP(CACHE(OFFSET+CDT'DE'MAPD'TAIL),55);                           22950000
D1:=CACHE(OFFSET+CDT'DE'REG'HD);                                        22952000
PUTOCTALP(D1,60);                                                       22954000
D2:=CACHE(OFFSET+CDT'DE'REG'HD+1);                                      22956000
PUTOCTALP(D2,69);                                                       22958000
DMEMOR:=DNUM;         << ASSIGN INITIAL VALUE TO DMEMOR >>              22960000
PUTOCTALP(CACHE(OFFSET+CDT'DE'REG'TL),74);                              22962000
PUTOCTALP(CACHE(OFFSET+CDT'DE'REG'TL+1),83);                            22964000
PUTOCTALP(CACHE(OFFSET+CDT'DE'REGIONS),91);                             22966000
                                                                        22968000
MOVE BBUF(95):="RHIT";                                                  22970000
D1:=CACHE(OFFSET+CDT'DE'RHIT);                                          22972000
D2:=CACHE(OFFSET+CDT'DE'RHIT+1);                                        22974000
@PBUF:=@BBUF+102;                                                       22976000
PUTDNUM(DNUM);                                                          22978000
                                                                        22980000
PUTOCTALP(CACHE(OFFSET+CDT'DE'SCANPT),118);                             22982000
PUTOCTALP(CACHE(OFFSET+CDT'DE'SCANPT+1),127);                           22984000
                                                                        22986000
PRINTLINE;     <<   PRINT FIRST LINE OF DATA >>                         22988000
                                                                        22990000
                                                                        22992000
DONE:=FALSE;                                                            22994000
IDX:=0;                                                                 22996000
                                                                        22998000
WHILE NOT DONE DO                                                       23000000
BEGIN                                                                   23002000
      CASE IDX OF                                                       23004000
       BEGIN                                                            23006000
         MOVE BBUF(95):="WHIT"; ;                                       23008000
         MOVE BBUF(95):="RMISS"; ;                                      23010000
         MOVE BBUF(95):="WMISS"; ;                                      23012000
         MOVE BBUF(95):="STOP";                                         23014000
       END;                                                             23016000
      D1:=CACHE(OFFSET+CDT'DE'WHIT+IDX);                                23018000
      D2:=CACHE(OFFSET+CDT'DE'WHIT+IDX+1);                              23020000
      @PBUF:=@BBUF+102;                                                 23022000
      PUTDNUM(DNUM);                                                    23024000
      IF IDX=6 THEN                                                     23026000
         DONE:=TRUE;                                                    23028000
                                                                        23030000
WHILE MAPCDT>0 AND MAPCDT<=MAXMAP DO                                    23032000
  BEGIN                                                                 23034000
    MAPDOM(MAPCDT):=TRUE;                                               23036000
    MAPCDT:=CACHE(MAPCDT*ENTRYSIZE+CDT'MD'NEXT);                        23038000
  END;                                                                  23040000
                                                                        23042000
 IDX:=IDX+2;                                                            23044000
 PRINTLINE;                                                             23046000
END;                                                                    23048000
PRINTLINE;                                                              23050000
PRINTLINE;                                                              23052000
END;                                                                    23054000
                                                                        23056000
$PAGE                                                                   23058000
<<*******************************************************>>             23060000
<<                                                       >>             23062000
<<                  FMT'MAP'ENTRY                        >>             23064000
<<                                                       >>             23066000
<<*******************************************************>>             23068000
                                                                        23070000
SUBROUTINE FMT'MAP'ENTRY(OFFSET);                                       23072000
VALUE OFFSET;                                                           23074000
LOGICAL OFFSET;                                                         23076000
                                                                        23078000
                                                                        23080000
BEGIN                                                                   23082000
                                                                        23084000
<<         PRINT OUT HEADER       >>                                    23086000
                                                                        23088000
IF LINECOUNT>50 OR FIRST THEN                                           23090000
 BEGIN                                                                  23092000
   NEWPAGE;                                                             23094000
                                                                        23096000
   FIRST:=FALSE;                                                        23098000
   MOVE BBUF(50):="MAPPED DISC DOMAIN ENTRY";                           23100000
   PRINTLINE;                                                           23102000
   SKIPLINES(2);                                                        23104000
                                                                        23106000
   MOVE BBUF(40):="AIIMLFRVNS";                                         23108000
   PRINTLINE;                                                           23110000
   MOVE BBUF(40):="BMMICWOIOE";                                         23112000
   MOVE BBUF(72):="CDT    LDR    LDR";                                  23114000
   MOVE BBUF(92):="MEM   ADDR";                                         23116000
   PRINTLINE;                                                           23118000
                                                                        23120000
   MOVE BBUF(0):="ENTRY PREV NEXT SECTOR-BASE  SECTOR-LIM";             23122000
   MOVE BBUF(40):="SIOSKPCRPQ STATE  READS WRITES LK-CDT";              23124000
   MOVE BBUF(78):="WAITED ACTIVE BANK  BASE DISCREQ LK-CNT";            23126000
   MOVE BBUF(118):="LDEV  PIN    ";                                     23128000
   PRINTLINE;                                                           23130000
                                                                        23132000
   MOVE BBUF:="----- ---- ---- -----------  ----------";                23134000
   MOVE BBUF(40):="---------- -----  ----- ------ ------";              23136000
   MOVE BBUF(78):="------ ------ ----  ---- ------- ------";            23138000
   MOVE BBUF(118):="----  ---";                                         23140000
   PRINTLINE;                                                           23142000
 END;                                                                   23144000
                                                                        23146000
<<         PRINT ENTRY INFORMATION            >>                        23148000
                                                                        23150000
PUTOCTALP(OFFSET/ENTRYSIZE,4);                                          23152000
PUTNZ(CACHE(OFFSET+CDT'MD'PREV),10);                                    23154000
PUTNZ(CACHE(OFFSET+CDT'MD'NEXT),15);                                    23156000
D1:=CACHE(OFFSET+CDT'MD'SECTOR);                                        23158000
D2:=CACHE(OFFSET+CDT'MD'SECTOR+1);                                      23160000
@PBUF:=@BBUF+16;                                                        23162000
PUTDNUM(DNUM);                                                          23164000
                                                                        23166000
D1:=CACHE(OFFSET+CDT'MD'END'SECTOR);                                    23168000
D2:=CACHE(OFFSET+CDT'MD'END'SECTOR+1);                                  23170000
@PBUF:=@BBUF+28;                                                        23172000
PUTDNUM(DNUM);                                                          23174000
                                                                        23176000
FLAGS:=CACHE(OFFSET+CDT'MD'FLAGS);                                      23178000
PUTL(FLAGS.CDT'ABSENT,40,"A");                                          23180000
PUTL(FLAGS.CDT'IMI,41,"I");                                             23182000
PUTL(FLAGS.CDT'IMO,42,"O");                                             23184000
PUTL(FLAGS.CDT'LOCKREQ'PND,43,"M");                                     23186000
PUTL(FLAGS.CDT'LOCKED,44,"L");                                          23188000
PUTL(FLAGS.CDT'FWIP,45,"F");                                            23190000
PUTL(FLAGS.CDT'ROC,46,"R");                                             23192000
PUTL(FLAGS.CDT'VIRGIN,47,"V");                                          23194000
PUTL(FLAGS.CDT'NOPOST,48,"N");                                          23196000
PUTL(FLAGS.CDT'SEQ,49,"S");                                             23198000
                                                                        23200000
CASE FLAGS.CDT'MD'STATE OF                                              23202000
BEGIN                                                                   23204000
  MOVE BBUF(51):="AVAIL";                                               23206000
  MOVE BBUF(51):="READ";                                                23208000
  MOVE BBUF(51):="WRITE";                                               23210000
  MOVE BBUF(51):="FLUSH";                                               23212000
  MOVE BBUF(51):="LOCK";                                                23214000
  ;                                                                     23216000
  ;                                                                     23218000
  ;                                                                     23220000
END;                                                                    23222000
                                                                        23224000
PUTOCTALP(CACHE(OFFSET+CDT'MD'READ'CNT),63);                            23226000
PUTOCTALP(CACHE(OFFSET+CDT'MD'WRITE'CNT),70);                           23228000
PUTOCTALP(CACHE(OFFSET+CDT'MD'LKD'CDT),77);                             23230000
PUTOCTALP(CACHE(OFFSET+CDT'MD'IMPED'HD),84);                            23232000
PUTOCTALP(CACHE(OFFSET+CDT'MD'LDR'HEAD),91);                            23234000
PUTOCTALP(CACHE(OFFSET+CDT'MD'MEM'ADDR),95);                            23236000
PUTOCTALP(CACHE(OFFSET+CDT'MD'MEM'ADDR+1),102);                         23238000
PUTOCTALP(CACHE(OFFSET+CDT'MD'DISCREQ),110);                            23240000
PUTOCTALP(CACHE(OFFSET+CDT'MD'LK'CNT),117);                             23242000
PUTOCTALP(CACHE(OFFSET+CDT'MD'LDEV),122);                               23244000
PUTOCTALP(CACHE(OFFSET+CDT'MD'IMPEDED),127);                            23246000
PRINTLINE;                                                              23248000
                                                                        23250000
END;  << FMT'MAP'ENTRY >>                                               23252000
$PAGE                                                                   23254000
<<*******************************************************>>             23256000
<<                                                       >>             23258000
<<                    FMT'FREE                           >>             23260000
<<                                                       >>             23262000
<<*******************************************************>>             23264000
                                                                        23266000
SUBROUTINE FMT'FREE;                                                    23268000
BEGIN                                                                   23270000
                                                                        23272000
LEN:=CACHE(CDT'SIZE)-1;                                                 23274000
CURRENT:=CACHE(CDT'FREE'HEAD);                                          23276000
LAST:=CACHE(CDT'FREE'TAIL);                                             23278000
                                                                        23280000
<< NOW PRINT ALL THE FREE ENTRIES  >>                                   23282000
                                                                        23284000
NEWPAGE;                                                                23286000
MOVE BBUF(55):="FREE ENTRIES";                                          23288000
PRINTLINE;                                                              23290000
SKIPLINES(3);                                                           23292000
FINI:=FALSE;                                                            23294000
WHILE NOT FINI DO                                                       23296000
  BEGIN                                                                 23298000
    IF CURRENT=LAST THEN                                                23300000
      FINI:=TRUE;                                                       23302000
    PRINTLINE;                                                          23304000
    OCTALDUMP(CDT+DOUBLE(CURRENT),CDT+DOUBLE(CURRENT+LEN));             23306000
    CURRENT:=CACHE(CURRENT+3);                                          23308000
    IF CURRENT<=0 THEN                                                  23310000
      FINI:=TRUE;                                                       23312000
  END;                                                                  23314000
END;                                                                    23316000
$PAGE                                                                   23318000
SUBROUTINE HEADER;                                                      23320000
<<****************************************************>>                23322000
<<                                                    >>                23324000
<<                   HEADER                           >>                23326000
<<                                                    >>                23328000
<<****************************************************>>                23330000
                                                                        23332000
BEGIN                                                                   23334000
  NEWPAGE;                                                              23336000
  CURRENT:=0;         << INITIALIZE CURRENT INDEX >>                    23338000
  MOVE BBUF(50):="CACHE DIRECTORY TABLE";                               23340000
  PRINTLINE;                                                            23342000
  SKIPLINES(2);                                                         23344000
                                                                        23346000
<< FORMAT LINE 1 OF THE HEADER >>                                       23348000
                                                                        23350000
  MOVE BBUF(16):="#  ENTRIES";                                          23352000
  PUTOCTALP(CACHE(CDT'ENTRIES),33);        << # OF ENTRIES >>           23354000
  MOVE BBUF(37):="FREE HEAD";                                           23356000
  PUTOCTALP(CACHE(CDT'FREE'HEAD),53);      <<FIRST FREE    >>           23358000
  MOVE BBUF(57):="NUM LDEVS";                                           23360000
  PUTOCTALP(CACHE(CDT'NUM'LDEVS),71);      << # OF LDEVS   >>           23362000
  MOVE BBUF(77):="STOP PEND";                                           23364000
  IF CACHE(CDT'STOP'PND) THEN                                           23366000
    BBUF(92):="T"                                                       23368000
  ELSE BBUF(92):="F";                      << STOP PENDING >>           23370000
  MOVE BBUF(97):="FORCE POST";                                          23372000
  IF CACHE(CDT'FORCE'POST) THEN                                         23374000
    BBUF(110):="T"                                                      23376000
  ELSE BBUF(110):="F";                      << FORCE POST   >>          23378000
  PRINTLINE;                                                            23380000
                                                                        23382000
<< FORMAT LINE 2 OF THE HEADER >>                                       23384000
                                                                        23386000
  MOVE BBUF(16):="ENTRY SIZE";                                          23388000
  PUTOCTALP(CACHE(CDT'SIZE),33);           << ENTRY SIZE   >>           23390000
  MOVE BBUF(37):="FREE TAIL";                                           23392000
  PUTOCTALP(CACHE(CDT'FREE'TAIL),53);      << FREE TAIL    >>           23394000
  MOVE BBUF(57):="DISC HEAD";                                           23396000
  PUTOCTALP(CACHE(CDT'DISC'HEAD),71);      << FIRST CACHED >>           23398000
  MOVE BBUF(77):="SEQ FETCH #";                                         23400000
  PUTOCTALP(CACHE(CDT'SEQ'MINFTCH),93);   << # OF SECTORS >>            23402000
  MOVE BBUF(97):="STOP Q PIN";                                          23404000
  PUTOCTALP(CACHE(CDT'STOP'QUEUE),111);     << PIN NUMBER   >>          23406000
  PRINTLINE;                                                            23408000
                                                                        23410000
<< FORMAT LINE 3 OF THE HEADER >>                                       23412000
                                                                        23414000
  MOVE BBUF(16):="FREE COUNT";                                          23416000
  PUTOCTALP(CACHE(CDT'FREE'COUNT),33);     << FREE COUNT   >>           23418000
  MOVE BBUF(37):="MAX USED";                                            23420000
  PUTOCTALP(CACHE(CDT'MAX'USED),53);       << MAX USED.... >>           23422000
  MOVE BBUF(57):="DST WDS";                                             23424000
  PUTOCTALP(CACHE(CDT'DST'WORDS),71);      << #DST WORDS   >>           23426000
  MOVE BBUF(77):="RAN FETCH";                                           23428000
  PUTOCTALP(CACHE(CDT'RND'MINFTCH),93);   << # OF SECTORS >>            23430000
  PRINTLINE;                                                            23432000
SKIPLINES(2);                                                           23434000
END;                                                                    23436000
$PAGE                                                                   23438000
                                                                        23440000
<<*****************************************************>>               23442000
<<                                                     >>               23444000
<<                    MAINLINE                         >>               23446000
<<                                                     >>               23448000
<<*****************************************************>>               23450000
                                                                        23452000
CDST:=CORE(DOUBLE(CACHE'DST));     << GET DST NUMBER >>                 23454000
IF CDST=0 THEN                                                          23456000
   RETURN;                         << CACHING NOT IN--RETURN >>         23458000
                                                                        23460000
INDXARAY(%76*2):=PAGENO;                                                23462000
CDT:=DSTTOADDR(CDST);              << GET CACHE DST ADDRESS  >>         23464000
HEADER;                                                                 23466000
                                                                        23468000
FOR IX:=0 UNTIL MAXMAP           << INITIALIZE MAP ARRAY >>             23470000
DO MAPDOM(IX):=FALSE;                                                   23472000
                                                                        23474000
                                                                        23476000
INDX:=CACHE(CDT'NUM'LDEVS);                                             23478000
ENTRYSIZE:=CACHE(CDT'SIZE);                                             23480000
CURRENT:=CACHE(CDT'DISC'HEAD);    << INDEX TO FIRST CDT ENTRY >>        23482000
                                                                        23484000
<< PRINT ALL THE CDT ENTRIES >>                                         23486000
                                                                        23488000
WHILE INDX<>0 AND CURRENT<>NOPOINT DO                                   23490000
 BEGIN                                                                  23492000
   FMT'CDT'ENTRY(CURRENT*ENTRYSIZE);                                    23494000
   CURRENT:=CACHE(CURRENT*ENTRYSIZE+CDT'DE'NEXT'LDEV);                  23496000
   INDX:=INDX-1;                                                        23498000
 END;                                                                   23500000
                                                                        23502000
<<   NOW FORMAT ALL THE MAPPED DISC DOMAIN ENTRIES >>                   23504000
                                                                        23506000
NEWPAGE;                                                                23508000
INDX:=0;                                                                23510000
FIRST:=TRUE;                                                            23512000
WHILE INDX<MAXMAP DO                                                    23514000
 BEGIN                                                                  23516000
   IF MAPDOM(INDX) THEN                                                 23518000
      FMT'MAP'ENTRY(INDX*ENTRYSIZE);                                    23520000
   INDX:=INDX+1;                                                        23522000
 END;                                                                   23524000
                                                                        23526000
<< LASTLY, DO AN OCTAL DUMP OF ALL FREE ENTRIES >>                      23528000
                                                                        23530000
<<FMT'FREE; - do not need to print free entries>>              <<sknew>>23532000
                                                                        23534000
END; << PRINTCACHE >>                                                   23536000
                                                                        23538000
$PAGE "PFXMEM: Format first %14 words of memory"                        23540000
$CONTROL SEGMENT=TABLES2                                                23542000
                                                                        23544000
COMMENT                                                                 23546000
                                                                        23548000
Purpose:                                                                23550000
<<    THIS PROCEDURE WILL FORMAT AND PRINT THE FIRST %14    >>          23552000
<<    LOCATIONS OF MEMORY.                                  >>          23554000
                                                                        23556000
Input parameters:                                                       23558000
                                                                        23560000
Output parameters:                                                      23562000
                                                                        23564000
Globals Referenced:                                                     23566000
                                                                        23568000
Globals Altered:                                                        23570000
                                                                        23572000
Data Structures:                                                        23574000
                                                                        23576000
Algorithm:                                                              23578000
                                                                        23580000
;                                                                       23582000
PROCEDURE PFXMEM;                                                       23584000
   BEGIN                                                       <<01.02>>23586000
      DOUBLE SCRATCH1,ABSLOC,SYSOSET,SYSB:=%1000D;             <<01.02>>23588000
      LOGICAL WORK1,WORK2,WORK3,XFLG,WARN:=0;                  <<01.02>>23590000
      INTEGER KEYPARM;                                         <<01.02>>23592000
      LOGICAL ARRAY SCR0(*)=SCRATCH1;                          <<01.02>>23594000
      LOGICAL ARRAY SCR1(*)=SCR0(1);                           <<01.02>>23596000
      DOUBLE DRTPAIR;                                          <<03013>>23598000
      LOGICAL DRTBANK = DRTPAIR;                               <<03013>>23600000
      LOGICAL DRTADDR = DRTPAIR + 1;                           <<03013>>23602000
      LOGICAL MINDRT,MAXDRT,VALID'DRTS;                        <<03013>>23604000
                                                               <<01.02>>23606000
      LOGICAL SUBROUTINE CHECKADR;                             <<01.02>>23608000
      BEGIN                                                    <<01.02>>23610000
         WORK1:=CORE(ABSLOC);                                  <<01.02>>23612000
         WORK2:=CORE(SYSB+SYSOSET);                            <<01.02>>23614000
         WORK2:=WORK2+%1000;                                   <<01.02>>23616000
         WORK3:=CORE(%5D);<<ICS BASE>>                         <<01.02>>23618000
         IF INTEGER(WORK3) <=0 THEN                            <<01.02>>23620000
         BEGIN                                                 <<01.02>>23622000
            WORK3:=%24000;<<ESTIMATED MAX CORE LOC FOR ICS>>   <<01.02>>23624000
            WARN:=WARN LOR %10;                                <<01.02>>23626000
         END;                                                  <<01.02>>23628000
         <<RANGE CHECK TWO VALUES>>                            <<01.02>>23630000
         IF INTEGER(WORK1) <=0 THEN IF INTEGER(WORK2)          <<01.02>>23632000
         <=0 THEN GOTO SETTRUE;                                <<01.02>>23634000
         <<RANGE VALUES ON ESTIMATED ICS "Q" LOC>>             <<01.02>>23636000
         IF INTEGER(WORK1) > INTEGER(WORK3) THEN GO SETTRUE;   <<01.02>>23638000
         IF INTEGER(WORK2) > INTEGER(WORK3) THEN GO SETTRUE;   <<01.02>>23640000
         IF WORK1=WORK2 THEN CHECKADR:=WORK1 ELSE              <<01.02>>23642000
         BEGIN                                                 <<01.02>>23644000
            SCR0:=0;                                           <<01.02>>23646000
            SCR1:=WORK1+XFLG;                                  <<01.02>>23648000
            WORK3:=CORE(SCRATCH1);                             <<01.02>>23650000
            IF INTEGER(WORK3)=KEYPARM THEN CHECKADR:=WORK1 ELSE<<01.02>>23652000
            BEGIN                                              <<01.02>>23654000
               SCR1:=WORK2+XFLG;                               <<01.02>>23656000
               WORK3:=CORE(SCRATCH1);                          <<01.02>>23658000
            IF INTEGER(WORK3)=KEYPARM THEN CHECKADR:=WORK2 ELSE<<01.02>>23660000
               BEGIN                                           <<01.02>>23662000
SETTRUE:                                                       <<01.02>>23664000
                  CHECKADR:=TRUE;                              <<01.02>>23666000
                  RETURN;                                      <<01.02>>23668000
                END;                                           <<01.02>>23670000
            END;                                               <<01.02>>23672000
         END;                                                  <<01.02>>23674000
   END<<CHECKADR>>;                                            <<01.02>>23676000
      SKIPLINES(2);                <<TO SAVE PAPER>>           <<00221>>23678000
     MOVE DBUFFER(23):="******    FIXED LOW MEMORY    ******";          23680000
                                                               <<00221>>23682000
     << CHECK TO SEE IF MEMORY IS FULL OF A CONSTANT>>         <<00221>>23684000
     ABSLOC:=0D;     <<LOCATION TO TEST>>                      <<00221>>23686000
     WORK1:=0;       <<FIRST TEST VALUE>>                      <<00221>>23688000
     WORK2:=0;       <<COMPARE OLD VALUE>>                     <<00221>>23690000
     XFLG:=1;        <<COUNT OF VALUE CHANGES>>                <<00221>>23692000
     DO                                                        <<00221>>23694000
      BEGIN          <<TILL DIFFERENT OR END OF MEMORY>>       <<00221>>23696000
       WORK1:=CORE(ABSLOC);  <<LOAD VALUE FROM MEM>>           <<00221>>23698000
       IF WORK1 <> WORK2 THEN                                  <<00221>>23700000
        BEGIN        <<DIFFERENT VALUES, COUNT THEM>>          <<00221>>23702000
         WORK2:=WORK1;  <<REMEMBER AS NEW OLD>>                <<00221>>23704000
         XFLG:=XFLG+1;  <<COUNT IT>>                           <<00221>>23706000
        END;         <<DIFFERENT VALUES, COUNT THEM>>          <<00221>>23708000
       ABSLOC:=ABSLOC+1D;    <<NEW VALUE>>                     <<00221>>23710000
      END                                                      <<00221>>23712000
       UNTIL  (XFLG=12) LOR (ABSLOC=MAXMEM);                   <<00221>>23714000
                                                               <<00221>>23716000
     IF (XFLG < 12) LOR (ABSLOC > %2000D) THEN <<GLITCHED?>>   <<00221>>23718000
      BEGIN          <<LOW CORE IS BAD, MADE IT TO EOM>>       <<00221>>23720000
        PRINTLINE;          <<PRINT HEADER LINE>>              <<00221>>23722000
       IF ABSLOC < MAXMEM THEN                                 <<00221>>23724000
        BEGIN             <<ALL OF MEMORY HAS IT>>             <<00221>>23726000
         MOVE BBUF:="FIRST        MEMORY LOCATIONS CONTAIN: "; <<00221>>23728000
         @PBUF:=@BBUF+6;       <<FOR PUTTING COUNT>>           <<00221>>23730000
         PUTDNUMP(ABSLOC);     <<OF BAD LOCATIONS>>            <<00221>>23732000
        END                                                    <<00221>>23734000
       ELSE                                                    <<00221>>23736000
       MOVE BBUF:="ALL OF MEMORY LOCATIONS CONTAIN:      ";    <<00221>>23738000
       PRINTLINE;                                              <<00221>>23740000
       IF ABSLOC > 177777D THEN ABSLOC:=177777D; <<ONE BANK>>  <<00221>>23742000
       CHARFLAG:=TRUE;      <<CHARACTER DATA ALSO>>            <<00221>>23744000
       OCTALDUMP(0D,ABSLOC);<<DUMP SECTION>>                   <<00221>>23746000
       TERMINATE;                                              <<00221>>23748000
      END;           <<LOW CORE IS BAD, MADE IT TO EOM>>       <<00221>>23750000
                                                               <<00221>>23752000
     PRINTLINE;                                                         23754000
     SKIPLINES(2);                                             <<03013>>23756000
     MOVE DBUFFER:="(ADDR %0)   CODE SEGMENT TABLE POINTER";   <<03013>>23758000
     SCRATCH1:=0D;                                                      23760000
     WORK1:=CORE(SCRATCH1);                                             23762000
     @PBUF:=@BBUF+52;                                          <<03013>>23764000
     PUTNUM(WORK1);                                                     23766000
     PRINTLINE;                                                         23768000
     SKIPLINES(1);                                                      23770000
      ABSLOC:=0D;                                              <<01.02>>23772000
      SYSOSET:=1D;                                             <<01.02>>23774000
      XFLG:=1;                                                 <<01.02>>23776000
      KEYPARM:=4;                                              <<01.02>>23778000
      WORK1:=CHECKADR;<<COMPARE FOR VALID ADDRESSES>>          <<01.02>>23780000
      IF WORK1.(0:1) THEN BEGIN WARN:=WARN LOR 1;END ELSE      <<01.02>>23782000
      CSTFLG:=WORK1;                                           <<01.02>>23784000
     MOVE DBUFFER:=("(ADDR %1) ",                              <<03013>>23786000
       "  EXTENDED CODE SEGMENT TABLE POINTER");               <<03013>>23788000
     SCRATCH1:=1D;                                                      23790000
     WORK1:=CORE(SCRATCH1);                                             23792000
     @PBUF:=@BBUF+52;                                          <<03013>>23794000
     PUTNUM(WORK1);                                                     23796000
     PRINTLINE;                                                         23798000
     SKIPLINES(1);                                                      23800000
     MOVE DBUFFER:="(ADDR %2)   DATA SEGMENT TABLE POINTER";   <<03013>>23802000
     SCRATCH1:=2D;                                                      23804000
     WORK1:=CORE(SCRATCH1);                                             23806000
     @PBUF:=@BBUF+52;                                          <<03013>>23808000
     PUTNUM(WORK1);                                                     23810000
     PRINTLINE;                                                         23812000
     SKIPLINES(1);                                                      23814000
      ABSLOC:=2D;                                              <<01.02>>23816000
      SYSOSET:=2D;                                             <<01.02>>23818000
      XFLG:=1;                                                 <<01.02>>23820000
      KEYPARM:=4;                                              <<01.02>>23822000
      WORK1:=CHECKADR;<<COMPARE FOR VALID ADDRESSES>>          <<01.02>>23824000
      IF WORK1.(0:1) THEN BEGIN WARN:=WARN LOR 2;END ELSE      <<01.02>>23826000
      DSTFLG:=WORK1;                                           <<01.02>>23828000
     MOVE DBUFFER:="(ADDR %3)   PROCESS CONTROL BLOCK BASE";   <<03013>>23830000
     SCRATCH1:=3D;                                                      23832000
     WORK1:=CORE(SCRATCH1);                                             23834000
     @PBUF:=@BBUF+52;                                          <<03013>>23836000
     PUTNUM(WORK1);                                                     23838000
     PRINTLINE;                                                         23840000
     SKIPLINES(1);                                                      23842000
      ABSLOC:=3D;                                              <<01.02>>23844000
      SYSOSET:=3D;                                             <<01.02>>23846000
      XFLG:=1;                                                 <<01.02>>23848000
      KEYPARM:=%20;<<SIZE OF PCB ENTRYS>>                      <<01.02>>23850000
      WORK1:=CHECKADR;<<COMPARE ADDRESSES>>                    <<01.02>>23852000
      IF WORK1.(0:1) THEN BEGIN WARN:=WARN LOR 4;END ELSE      <<01.02>>23854000
      PCBFLG:=WORK1;                                           <<01.02>>23856000
     MOVE DBUFFER:="(ADDR %4)   CURRENT PCB POINTER  ";        <<03013>>23858000
     SCRATCH1:=4D;                                                      23860000
     WORK1:=CORE(SCRATCH1);                                             23862000
     @PBUF:=@BBUF+52;                                          <<03013>>23864000
     PUTNUM(WORK1);                                                     23866000
     PRINTLINE;                                                         23868000
     SKIPLINES(1);                                                      23870000
     MOVE DBUFFER:="(ADDR %5)   INTERRUPT STACK BASE  ";       <<03013>>23872000
     SCRATCH1:=5D;                                                      23874000
     WORK1:=CORE(SCRATCH1);                                             23876000
     @PBUF:=@BBUF+52;                                          <<03013>>23878000
     PUTNUM(WORK1);                                                     23880000
     PRINTLINE;                                                         23882000
     SKIPLINES(1);                                                      23884000
     MOVE DBUFFER:="(ADDR %6)   INTERRUPT STACK LIMIT  ";      <<03013>>23886000
     SCRATCH1:=6D;                                                      23888000
     WORK1:=CORE(SCRATCH1);                                             23890000
     @PBUF:=@BBUF+52;                                          <<03013>>23892000
     PUTNUM(WORK1);                                                     23894000
     PRINTLINE;                                                         23896000
     SKIPLINES(1);                                                      23898000
     IF MACHINEID <> ICF55                                     <<03013>>23900000
     THEN BEGIN                                                <<03013>>23902000
     MOVE DBUFFER:="(ADDR %7)   INTERRUPT MASK  ";             <<03013>>23904000
     SCRATCH1:=7D;                                                      23906000
     WORK1:=CORE(SCRATCH1);                                             23908000
     @PBUF:=@BBUF+52;                                          <<03013>>23910000
     PUTNUM(WORK1);                                                     23912000
     PRINTLINE;                                                         23914000
     SKIPLINES(1);                                             <<03013>>23916000
     END;  <<DONT DUMP INTERRUPT MASK (7) FOR ICF/55>>         <<03013>>23918000
                                                               <<03013>>23920000
     TEST'DRT'INFO(MINDRT,MAXDRT,VALID'DRTS,1);                <<03013>>23922000
            <<PRINT CONTENTS OF:      >>                       <<03013>>23924000
            << DRTBANK  (ABSOLUTE %10D) >>                     <<03013>>23926000
            << DRTADDR  (ABSOLUTE %11D) >>                     <<03013>>23928000
                                                               <<03013>>23930000
     <<FORMAT INTERRUPT MASK FOR ICF/55>>                      <<03013>>23932000
                                                               <<03013>>23934000
     IF MACHINEID = ICF55                                      <<03013>>23936000
     THEN BEGIN                                                <<03013>>23938000
       MOVE DBUFFER:="(ADDR %32)  INTERRUPT MASK    IMB-0";    <<03013>>23940000
       SCRATCH1 := %32D;                                       <<03013>>23942000
       WORK1 := CORE(SCRATCH1);                                <<03013>>23944000
       @PBUF:=@BBUF + 52;                                      <<03013>>23946000
       PUTNUM( WORK1);                                         <<03013>>23948000
       PRINTLINE;                                              <<03013>>23950000
       MOVE DBUFFER:="(ADDR %33)                    IMB-1";    <<03013>>23952000
       SCRATCH1 := %33D;                                       <<03013>>23954000
       WORK1 := CORE(SCRATCH1);                                <<03013>>23956000
       @PBUF:=@BBUF + 52;                                      <<03013>>23958000
       PUTNUM( WORK1);                                         <<03013>>23960000
       PRINTLINE;                                              <<03013>>23962000
       MOVE DBUFFER:="(ADDR %34)                    IMB-2";    <<03013>>23964000
       SCRATCH1 := %34D;                                       <<03013>>23966000
       WORK1 := CORE(SCRATCH1);                                <<03013>>23968000
       @PBUF:=@BBUF + 52;                                      <<03013>>23970000
       PUTNUM( WORK1);                                         <<03013>>23972000
       PRINTLINE;                                              <<03013>>23974000
       MOVE DBUFFER:="(ADDR %35)                    IMB-3";    <<03013>>23976000
       SCRATCH1 := %35D;                                       <<03013>>23978000
       WORK1 := CORE(SCRATCH1);                                <<03013>>23980000
       @PBUF:=@BBUF + 52;                                      <<03013>>23982000
       PUTNUM( WORK1);                                         <<03013>>23984000
       PRINTLINE;                                              <<03013>>23986000
       SKIPLINES(1);                                           <<03013>>23988000
     END;  <<FORMAT INTERRUPT MASKS FOR ICF/55 >>              <<03013>>23990000
      IF INTEGER(WARN) <> 0 THEN                               <<01.02>>23992000
      BEGIN                                                    <<01.02>>23994000
         SKIPLINES(2);                                         <<01.02>>23996000
         MOVE DBUFFER:=                                        <<01.02>>23998000
         "**** WARNING! PROBABLE BAD ADDRESS FOR";             <<01.02>>24000000
         MOVE DBUFFER(20):=                                    <<01.02>>24002000
       "ONE/ALL OF THE FOLLOWING: ****";                       <<01.02>>24004000
         PRINTLINE;                                            <<01.02>>24006000
         SKIPLINES(1);                                         <<01.02>>24008000
       IF WARN.(15:1) THEN                                     <<01.02>>24010000
       BEGIN                                                   <<01.02>>24012000
          MOVE DBUFFER:="CST BASE";                            <<01.02>>24014000
          PRINTLINE;                                           <<01.02>>24016000
       END;                                                    <<01.02>>24018000
       IF WARN.(14:1) THEN                                     <<01.02>>24020000
       BEGIN                                                   <<01.02>>24022000
          MOVE DBUFFER:="DST BASE";                            <<01.02>>24024000
          PRINTLINE;                                           <<01.02>>24026000
       END;                                                    <<01.02>>24028000
       IF WARN.(13:1) THEN                                     <<01.02>>24030000
       BEGIN                                                   <<01.02>>24032000
          MOVE DBUFFER:="PCB BASE";                            <<01.02>>24034000
          PRINTLINE;                                           <<01.02>>24036000
       END;                                                    <<01.02>>24038000
       IF WARN.(12:1) THEN                                     <<01.02>>24040000
       BEGIN                                                   <<01.02>>24042000
          MOVE DBUFFER:="ICS BASE";                            <<01.02>>24044000
          PRINTLINE;                                           <<01.02>>24046000
       END;                                                    <<01.02>>24048000
   END;                                                        <<01.02>>24050000
END<<PFXMEM>>;                                                 <<01.02>>24052000
                                                                        24054000
$PAGE "PRINTCST: Format CST table"                                      24056000
$CONTROL SEGMENT=TABLES2                                                24058000
COMMENT                                                                 24060000
                                                                        24062000
Purpose:                                                                24064000
     this procedure formats and prints the code segment table           24066000
                                                                        24068000
Input parameters:                                                       24070000
                                                                        24072000
Output parameters:                                                      24074000
                                                                        24076000
Globals Referenced:                                                     24078000
                                                                        24080000
Globals Altered:                                                        24082000
                                                                        24084000
Data Structures:                                                        24086000
                                                                        24088000
Algorithm:                                                              24090000
                                                                        24092000
;                                                                       24094000
PROCEDURE PRINTCST;                                                     24096000
      BEGIN                                                             24098000
         DOUBLE LOCCST,STENT,ENDENT;                                    24100000
         INTEGER NENTRYS,INDX,WORK1,WORK2;                              24102000
         INTEGER I;             <<TEMPORARY>>                  <<00221>>24104000
         LOGICAL LENGTH;                                       <<01171>>24106000
         LOGICAL ARRAY LTMPBUF(0:11);   <<FOR SEG NAME>>       <<00221>>24108000
         BYTE ARRAY TMPBUF(*)=LTMPBUF; <<FOR CHARACTER WORK>>  <<00221>>24110000
         LOGICAL ARRAY NTRYBUF(0:14);  <<FOR TABLE ENTRY>>     <<00221>>24112000
         BYTE ARRAY BNTRYBUF(*)=NTRYBUF;                       <<00221>>24114000
         LOGICAL ARRAY SCR0(*)=LOCCST;                         <<01.02>>24116000
         LOGICAL ARRAY SCR1(*)=SCR0(1);                        <<01.02>>24118000
         NEWPAGE;                                                       24120000
         INDXARAY(1*2):=PAGENO;                                         24122000
         MOVE DBUFFER(23):="******    CST TABLE    ******";             24124000
         PRINTLINE;                                                     24126000
         LOCCST:=VERIFYP(%1,%1001D);                           <<01.02>>24128000
         IF <> THEN                                            <<01.02>>24130000
         BEGIN                                                 <<01.02>>24132000
            IF LOCCST <> 0D THEN WARNING ELSE                  <<01.02>>24134000
            IF (SCR1:=CSTFLG) <> 0 THEN WARNING ELSE           <<01.02>>24136000
            BEGIN                                              <<01.02>>24138000
               NOFORMT';                                       <<00221>>24140000
               GO BAILOUT;                                     <<01.02>>24142000
            END;                                               <<01.02>>24144000
         END;                                                  <<01.02>>24146000
         PCHEAD;                                                        24148000
         IF LOCCST < 1D THEN                                            24150000
         BEGIN                                                          24152000
            MOVE BBUF:="INVALID CST POINTER";                           24154000
            PRINTLINE;                                                  24156000
            CSTBAD:=TRUE;                                               24158000
            CSTBAD':=TRUE;                                              24160000
            GO TO BAILOUT;                                              24162000
         END;                                                           24164000
         NENTRYS:=CORE(LOCCST);                                         24166000
         IF NENTRYS >%300 THEN                                          24168000
         BEGIN                                                          24170000
TOOBIG:                                                                 24172000
            MOVE BBUF:="INVALID NUMBER OF CST ENTRYS";                  24174000
            PRINTLINE;                                                  24176000
            CSTBAD:=TRUE;                                               24178000
            CSTBAD':=TRUE;                                              24180000
            GO TO BAILOUT;                                              24182000
         END;                                                           24184000
         IF NENTRYS < 1 THEN GO TO TOOBIG;                              24186000
   CST'ADDRESS:=LOCCST;                                        << WBT >>24188000
         FOR INDX:=1 UNTIL NENTRYS                                      24190000
         DO                                                             24192000
         BEGIN                                                          24194000
            LOCCST:=LOCCST+4D;                                          24196000
            IF ONFREELIST(CST'ADDRESS, INTEGER(LOCCST-CST'ADDRESS))     24198000
            THEN GOTO B2;                                      << WBT >>24200000
            @PBUF:=@BBUF;                                               24202000
            PUTNUMP(INDX);     <<SEGMENT #>>                            24204000
            WORK1:=CORE(LOCCST);                                        24206000
            @PBUF:=@BBUF+8;                                    <<01.3A>>24208000
            IF SAME'SYS THEN                                   <<01.3A>>24210000
            BEGIN                                              <<01.3A>>24212000
              TOS:=NAMECST(INDX);                              <<01.3A>>24214000
              DEL;                                             <<01.3A>>24216000
            END;                                               <<01.3A>>24218000
            @PBUF:=@BBUF+28;                                   <<00221>>24220000
            IF WORK1.(1:1)=1 THEN MOVE PBUF:="PRIV" <<MODE>>   << WBT >>24222000
            ELSE MOVE PBUF:="USER";                                     24224000
            @PBUF:=@BBUF+38;                                   <<00221>>24226000
            IF WORK1.(2:1)=1 THEN MOVE PBUF:="ON"  <<REF BIT>> << WBT >>24228000
            ELSE MOVE PBUF:="OFF";                                      24230000
            @PBUF:=@BBUF+48;                                   <<00221>>24232000
            IF WORK1.(3:1)=1 THEN  <<TRACE BIT>>               << WBT >>24234000
            MOVE PBUF:="ON"                                             24236000
            ELSE MOVE PBUF:="OFF";                                      24238000
            LENGTH := WORK1.(4:12) * 4; << SEGMENT LENGTH >>   <<01171>>24240000
            @PBUF:=@BBUF+56;                                   <<00221>>24242000
            PUTNUMP(LENGTH);                                   <<01171>>24244000
            WORK2:=CORE(LOCCST+2D);                                     24246000
            IF PMAPFILE<>0 THEN                                << WBT >>24248000
             BEGIN       <<SEE IF PMAP FOR THIS MODULE IS ON>> <<00221>>24250000
              @MEMBUFP:=@MEMBUF;      <<INIT TABLE ADDRESS>>   <<00221>>24252000
              MOVE TMPBUF:=BBUF(8),(16);  <<TRANSFER NAME>>    <<00221>>24254000
              I:=0;            <<ZAP THE SEG NUMBER>>          <<00221>>24256000
              DO                                               <<00221>>24258000
               BEGIN                                           <<00221>>24260000
               IF TMPBUF(I)="(" THEN MOVE TMPBUF(I):="     ";  <<00221>>24262000
               END  UNTIL (I:=I+1) > 16;  <<TAKE IT ALL OFF>>  <<00221>>24264000
              DO                                               <<00221>>24266000
               BEGIN                                           <<00221>>24268000
                MOVE NTRYBUF:=MEMBUFP,(15);  <<MOVE ENTRY>>    <<00221>>24270000
                IF TMPBUF=BNTRYBUF,(16) THEN                   <<00221>>24272000
                 BEGIN               <<FOUND A MATCH>>         <<00221>>24274000
                  IF BBUF(63)=" " THEN  <<FIRST ONE??>>        <<00221>>24276000
                    BEGIN              <<SEGMENT IS DEFINED>>  <<00221>>24278000
                     PROCINDEX(INDX):=0;  <<NOT GOOD YET>>     <<00221>>24280000
                     <<BBUF(63):="?";>><<IN CASE LENGTH WRONG>><<02012>>24282000
                    END;                                       <<00221>>24284000
                  IF LENGTH = NTRYBUF(8) THEN                  <<01171>>24286000
                   BEGIN             <<LENGTH MATCHES>>        <<00221>>24288000
                    BBUF(63):="=";   <<LENGTH IS OK>>          <<00221>>24290000
                    PROCINDEX(INDX):=MEMBUFP(14);  <<ADDRESS>> <<00221>>24292000
                   END;              <<LENGTH MATCHES>>        <<00221>>24294000
                 END;                <<NAME MATCHES>>          <<00221>>24296000
                @MEMBUFP:=@MEMBUFP+15;   <<NEXT ENTRY>>        <<00221>>24298000
               END                                             <<00221>>24300000
                UNTIL MEMBUFP(14) = 0;   <<TILL END OF LIST>>  <<00221>>24302000
             END;        <<PMAP AND THIS IS MAIN CST>>         <<00221>>24304000
                                                               <<00221>>24306000
            IF WORK1.(0:1)=1 AND CORE(LOCCST+1D).(1:2)=0 THEN  << WBT >>24308000
            BEGIN     <<ABSENT BIT ON>>                                 24310000
                  @PBUF:=@BBUF+89;                             <<00221>>24312000
                  TOS:=WORK2.(8:8); <<PUSH HODA FOR DISC  >>   << WBT >>24314000
                  TOS:=CORE(LOCCST+3D);<<PUSH LODA         >>  <<00221>>24316000
                  PUTDNUMP(*);       <<CONVERT DISC ADDRESS>>  <<00221>>24318000
                  @PBUF:=@BBUF+78;                             <<00221>>24320000
                  PUTNUMP(WORK2.(0:8));  <<PRINT DISC LDEV >>  <<00221>>24322000
                  GO TO B1;                                             24324000
            END;    <<ABSENT BIT ON>>                          << WBT >>24326000
            @PBUF:=@BBUF+76;       <<PRINT CLOSE TO PB ADDR>>  <<00221>>24328000
            PUTNUMP(WORK2);   << THE BANK ADDRESS   >>         << WBT >>24330000
            @PBUF:=@BBUF+68;                                   <<00221>>24332000
            WORK1:=CORE(LOCCST+3D);                                     24334000
            PUTNUM(WORK1);    <<ABSOLUTE PB ADDR>>                      24336000
B1:                                                                     24338000
            WORK1:=CORE(LOCCST+1D);                            << WBT >>24340000
            PRINTFLAGS(WORK1);                                 << WBT >>24342000
            PRINTLINE;                                                  24344000
            IF LINECOUNT=LNSPERPG THEN                         <<00221>>24346000
              BEGIN                                            <<00221>>24348000
                NEWPAGE;                                       <<00221>>24350000
                  MOVE DBUFFER(23):=                           <<00221>>24352000
                   "******    CST TABLE    ******";            << WBT >>24354000
                PRINTLINE;                                     <<00221>>24356000
                PCHEAD;                                        <<00221>>24358000
              END;                                             <<00221>>24360000
B2:                                                            <<01.02>>24362000
         END;                                                  <<01.02>>24364000
BAILOUT:                                                       <<01.02>>24366000
      END<<PRINTCST>>;                                         <<01.02>>24368000
                                                                        24370000
                                                                        24372000
$PAGE "PRINTXCST: Format XCST table"                                    24374000
$CONTROL SEGMENT=TABLES2                                                24376000
COMMENT                                                                 24378000
                                                                        24380000
Purpose:                                                                24382000
     Format XCST table                                                  24384000
                                                                        24386000
Input parameters:                                                       24388000
                                                                        24390000
Output parameters:                                                      24392000
                                                                        24394000
Globals Referenced:                                                     24396000
                                                                        24398000
Globals Altered:                                                        24400000
                                                                        24402000
Data Structures:                                                        24404000
                                                                        24406000
Algorithm:                                                              24408000
                                                                        24410000
;                                                                       24412000
PROCEDURE PRINTXCST;                                           <<01.02>>24414000
BEGIN                                                          <<01.02>>24416000
                                                               <<01.02>>24418000
DOUBLE SCRATCH,DADDR;                                          <<01.02>>24420000
LOGICAL ARRAY SCR0(*)=SCRATCH;                                 <<01.02>>24422000
LOGICAL ARRAY SCR1(*)=SCR0(1);                                 <<01.02>>24424000
LOGICAL WORK1,WORK2,WORK3;                                     <<01.02>>24426000
INTEGER ENTNUM,INDX,COUNT,NENTRYS;                             <<01.02>>24428000
LOGICAL ARRAY DSTA(0:3);                                       <<01.02>>24430000
                                                               <<01.02>>24432000
<<BEGIN BODY OF PROCEDURE>>                                    <<01.02>>24434000
                                                               <<01.02>>24436000
CSTBAD':=FALSE;                                                <<01.02>>24438000
NEWPAGE;                                                       <<01.02>>24440000
INDXARAY(4*2):=PAGENO;                                         <<01.02>>24442000
MOVE DBUFFER(23):=                                             <<01.02>>24444000
"******    EXTENDED CST TABLE    ******";                      <<01.02>>24446000
PRINTLINE;                                                     <<01.02>>24448000
FILCSTBLK;<<SET UP CSTBLOCK ARRAY>>                            <<01.02>>24450000
WORK1:=CORE(CSTB' D);<<CURRENT CST BLOCK>>                     <<01.02>>24452000
WORK2:=CORE(%4D);<<CURRENT PCB >>                              <<01.02>>24454000
IF INTEGER(WORK2) = 0 THEN<<NO CURRENT CST BLOCK>>             <<01.02>>24456000
BEGIN                                                          <<01.02>>24458000
   SKIPLINES(1);                                               <<01.02>>24460000
   MOVE DBUFFER(19):=                                          <<01.02>>24462000
"******  NO CST BLOCK IS CURRENTLY IN USE  ******";            <<01.02>>24464000
   PRINTLINE;                                                  <<01.02>>24466000
   SKIPLINES(1);                                               <<01.02>>24468000
END;                                                           <<01.02>>24470000
IF INTEGER(DSTFLG)=0 THEN<<CANT GET TO DST#43(CSTBLOCK)>>      <<01.02>>24472000
BEGIN                                                          <<01.02>>24474000
                                                               <<01.02>>24476000
BAILOUT:                                                       <<01.02>>24478000
   CSTBAD':=TRUE;                                              <<01.02>>24480000
   MOVE DBUFFER:=                                              <<01.02>>24482000
"****** BAD ADR. POINTERS OR NO ENTRYS IN TABLE ******";       <<01.02>>24484000
   PRINTLINE;                                                  <<01.02>>24486000
   RETURN;                                                     <<01.02>>24488000
END;                                                           <<01.02>>24490000
COUNT:=ICSTBLK;<<GET TOTAL BLOCK ENTRYS>>                      <<01.02>>24492000
IF COUNT <=0 THEN GO BAILOUT;                                  <<01.02>>24494000
INDX:=1;                                                       <<01.02>>24496000
WHILE INDX < COUNT DO <<MAIN LOOP>>                            <<01.02>>24498000
BEGIN<<GOLLY! THIS IS A DESCRIPTIVE COMMENT...AY WOT!>>        <<01.02>>24500000
   WORK2:=LCSTBLK(INDX);                                       <<01.02>>24502000
   IF INTEGER(WORK2) <=0 THEN GO BUMP;                         <<01.02>>24504000
   SCRATCH:=0D;                                                <<01.02>>24506000
   SCR1:=WORK2+DSTFLG;<<ABS START ADR>>                        <<01.02>>24508000
   NENTRYS:=INTEGER(CORE(SCRATCH).(10:6));                     << WBT >>24510000
   SCR1:=SCR1+4;<<SET FOR CST ENTRY IN BLOCK>>                 <<01.02>>24512000
   ENTNUM:=%301;                                               <<01.02>>24514000
      SKIPLINES(2);                                            << WBT >>24516000
   PCXHEAD;<<PRINT HDR>>                                       <<01.02>>24518000
   WHILE NENTRYS >0 DO                                         <<01.02>>24520000
   BEGIN<<PRINT A BLOCK OF CST ENTRYS>>                        <<01.02>>24522000
      WORK3:=0;                                                <<01.02>>24524000
      WHILE INTEGER(WORK3) < 4 DO                              <<01.02>>24526000
      BEGIN                                                    <<01.02>>24528000
         DSTA(WORK3):=CORE(SCRATCH+DOUBLE(WORK3));             <<01.02>>24530000
         WORK3:=WORK3+1;                                       <<01.02>>24532000
      END;                                                     <<01.02>>24534000
      IF DSTA=%100000 THEN GO SKIP1;<<NOT IN USE>>             <<01.02>>24536000
      @PBUF:=@BBUF;                                            <<01.02>>24538000
      PUTNUMP(ENTNUM);                                         <<01.02>>24540000
         @PBUF:=@BBUF+28;                                      <<00221>>24542000
      IF DSTA.(1:1)=1 THEN MOVE PBUF:="PRIV"   <<MODE BIT>>    << WBT >>24544000
      ELSE MOVE PBUF:="USER";                                  <<01.02>>24546000
         @PBUF:=@BBUF+38;                                      <<00221>>24548000
      IF DSTA.(2:1)=1 THEN MOVE PBUF:="ON"   <<REF BIT>>       << WBT >>24550000
      ELSE MOVE PBUF:="OFF";                                   <<01.02>>24552000
         @PBUF:=@BBUF+48;                                      <<00221>>24554000
      IF DSTA.(3:1)=1 THEN MOVE PBUF:="ON"  <<TRACE BIT>>      << WBT >>24556000
      ELSE MOVE PBUF:="OFF";                                   <<01.02>>24558000
      @PBUF:=@BBUF+56;                                         <<00221>>24560000
      WORK3:=DSTA.(4:12);                                      <<01.02>>24562000
      PUTNUMP(WORK3*4);<<SEG. LENGTH>>                         <<01.02>>24564000
      PRINTFLAGS(DSTA(1));                                     << WBT >>24566000
      IF DSTA.(0:1) =1 AND DSTA(1).(1:2)=0 THEN                << WBT >>24568000
      BEGIN                                                    <<01.02>>24570000
            @PBUF:=@BBUF+89;                                   <<00221>>24572000
            TOS:=DSTA(2).(8:8); <<HODA>>                       << WBT >>24574000
            TOS:=DSTA(3);<<LODA>>                              <<01.02>>24576000
            DADDR:=TOS;                                        <<01.02>>24578000
            PUTDNUMP(DADDR);                                   <<01.02>>24580000
           @PBUF:=@BBUF+78;                                    << WBT >>24582000
            PUTNUMP(DSTA(2).(0:8));<<LDEV>>                    <<01.02>>24584000
            GO SKIP;                                           <<01.02>>24586000
      END; << ABSENT TEST >>                                   << WBT >>24588000
      @PBUF:=@BBUF+68;                                         << WBT >>24590000
      PUTNUM(DSTA(3));<<ABS PB ADDRESS>>                       <<01.02>>24592000
         @PBUF:=@BBUF+76;                                      <<00221>>24594000
      PUTNUMP(DSTA(2));   <<BANK NO.>>                         <<01791>>24596000
SKIP:                                                          <<01.02>>24598000
      @PBUF:=@BBUF+8;                                          <<00221>>24600000
      IF WORK1=SCR1-4 THEN <<CURRENT/LAST USED BLOCK>>         <<01.02>>24602000
      PBUF:="*";                                               <<01.02>>24604000
      @PBUF:=@BBUF+10;                                         <<00221>>24606000
      PUTNUMP(INDX);<<BLOCK INDEX>>                            <<01.02>>24608000
      PRINTLINE;                                               <<01.02>>24610000
      IF LINECOUNT > 58 LAND NENTRYS > 1 THEN PCXHEAD;         <<00221>>24612000
SKIP1:                                                         <<01.02>>24614000
      SCR1:=SCR1+4;<<NEXT CST ENTRY>>                          <<01.02>>24616000
      ENTNUM:=ENTNUM+1;                                        <<01.02>>24618000
      NENTRYS:=NENTRYS-1;                                      <<01.02>>24620000
   END;                                                        <<01.02>>24622000
BUMP:                                                          <<01.02>>24624000
   INDX:=INDX+1;                                               <<01.02>>24626000
END;                                                           <<01.02>>24628000
END<<PRINTXCST>>;                                              <<01.02>>24630000
                                                                        24632000
$PAGE "PRINTFLAGS: Decode CST/DST entry flags"                          24634000
$CONTROL SEGMENT=TABLES2                                                24636000
COMMENT                                                                 24638000
                                                                        24640000
Purpose:                                                                24642000
     A common routine for decoding CST/DST entry flags.                 24644000
     Called by PRINTCST, PRINTXCST, PRINTDST.                           24646000
                                                                        24648000
Input parameters:                                                       24650000
                                                                        24652000
Output parameters:                                                      24654000
                                                                        24656000
Globals Referenced:                                                     24658000
                                                                        24660000
Globals Altered:                                                        24662000
                                                                        24664000
Data Structures:                                                        24666000
                                                                        24668000
Algorithm:                                                              24670000
                                                                        24672000
;                                                                       24674000
PROCEDURE PRINTFLAGS(F);                                       << WBT >>24676000
VALUE F; LOGICAL F;                                            << WBT >>24678000
COMMENT  PUT FLAG BITS FOR A SEGMENT INTO PBUF;                << WBT >>24680000
BEGIN                                                          << WBT >>24682000
   IF F.(0:1) THEN BBUF(100):="D";                             << WBT >>24684000
   IF F.(1:1) THEN BBUF(102):="R";                             << WBT >>24686000
   IF F.(2:1) THEN BBUF(104):="I";                             << WBT >>24688000
   IF F.(3:1) THEN BBUF(106):="S";                             << WBT >>24690000
   IF F.(4:1) THEN BBUF(108):="M";                             << WBT >>24692000
   IF F.(5:1) THEN BBUF(110):="F";                             << WBT >>24694000
   IF F.(6:1) THEN BBUF(112):="S";                             << WBT >>24696000
   IF F.(7:1) THEN BBUF(114):="C";                             << WBT >>24698000
   IF F.(8:1) THEN BBUF(116):="W";                             << WBT >>24700000
END;                                                           << WBT >>24702000
                                                                        24704000
$PAGE "PCHEAD: Print formatted CST table header"                        24706000
$CONTROL SEGMENT=TABLES2                                                24708000
COMMENT                                                                 24710000
                                                                        24712000
Purpose:                                                                24714000
     Print formatted CST table header                                   24716000
                                                                        24718000
Input parameters:                                                       24720000
                                                                        24722000
Output parameters:                                                      24724000
                                                                        24726000
Globals Referenced:                                                     24728000
                                                                        24730000
Globals Altered:                                                        24732000
                                                                        24734000
Data Structures:                                                        24736000
                                                                        24738000
Algorithm:                                                              24740000
                                                                        24742000
;                                                                       24744000
PROCEDURE PCHEAD;                                                       24746000
      BEGIN                                                             24748000
   LOGICAL FLAG:=FALSE;                                        <<01.02>>24750000
   ENTRY PCXHEAD;                                              <<01.02>>24752000
      IF FLAG THEN                                             <<01.02>>24754000
PCXHEAD:                                                       <<01.02>>24756000
      FLAG:=TRUE;                                              <<01.02>>24758000
   MOVE BBUF(100):="              C";                          <<01875>>24760000
   PRINTLINE;                                                  << WBT >>24762000
   MOVE BBUF(100):="  R I       S R";                          <<02012>>24764000
   PRINTLINE;                                                  << WBT >>24766000
          MOVE BBUF:=                                          <<00221>>24768000
           "SEGMENT                            REFERENCE";     <<00221>>24770000
          MOVE BBUF(56):=                                      <<00221>>24772000
           "SEGMENT    ABSOLUTE     BANK/     DISC";           <<00221>>24774000
          MOVE BBUF(100):="  O M       Y E ";                  <<02012>>24776000
      IF FLAG THEN                                             <<01.02>>24778000
      BEGIN                                                    <<01.02>>24780000
         MOVE BBUF(9):=                                        <<00221>>24782000
         "CSTBLK/PROCESS";                                     <<00221>>24784000
      END;                                                     <<01.02>>24786000
         PRINTLINE;                                                     24788000
          MOVE BBUF:=                                          <<00221>>24790000
           "NUMBER    SEGMENT NAME      MODE      BIT";        <<00221>>24792000
          MOVE BBUF(47):=                                      <<00221>>24794000
           "TRACE    LENGTH     ADDRESS      /LDEV";           << WBT >>24796000
      IF FLAG THEN                                             <<01.02>>24798000
      BEGIN                                                    <<01.02>>24800000
         MOVE BBUF(9):=                                        <<00221>>24802000
         "    INDX     ";                                      <<00221>>24804000
      END;                                                     <<01.02>>24806000
          MOVE BBUF(89):=                                      <<00221>>24808000
           "ADDRESS      C I       S S";                       <<02012>>24810000
         PRINTLINE;                                                     24812000
   MOVE BBUF:="-------   ------------      ----   ---------",2;<< WBT >>24814000
   MOVE    *:="   -----    -------    --------     -----    ",2;        24816000
   MOVE    *:="-------      - -       - -  ";                  <<02012>>24818000
   IF FLAG THEN MOVE BBUF(9):="--------------";                << WBT >>24820000
   PRINTLINE;                                                  << WBT >>24822000
         SKIPLINES(1);                                                  24824000
      END;                                                              24826000
                                                                        24828000
$PAGE "PDHEAD: Print formatted DST table header"                        24830000
$CONTROL SEGMENT=TABLES2                                                24832000
COMMENT                                                                 24834000
                                                                        24836000
Purpose:                                                                24838000
     Print formatted DST table header                                   24840000
                                                                        24842000
Input parameters:                                                       24844000
                                                                        24846000
Output parameters:                                                      24848000
                                                                        24850000
Globals Referenced:                                                     24852000
                                                                        24854000
Globals Altered:                                                        24856000
                                                                        24858000
Data Structures:                                                        24860000
                                                                        24862000
Algorithm:                                                              24864000
                                                                        24866000
;                                                                       24868000
PROCEDURE PDHEAD;                                                       24870000
      BEGIN                                                             24872000
          IF LINECOUNT = LNSPERPG THEN NEWPAGE;                <<00221>>24874000
          MOVE DBUFFER(23):=                                   <<00221>>24876000
           "******    DST TABLE    ******";                    <<00221>>24878000
          PRINTLINE;                                           <<00221>>24880000
         IF LINECOUNT>2 THEN SKIPLINES(2);                     << WBT >>24882000
   MOVE BBUF(100):="          F   C";                          << WBT >>24884000
   PRINTLINE;                                                  << WBT >>24886000
   MOVE BBUF(100):="D R I S M W S R";                          << WBT >>24888000
   PRINTLINE;                                                  << WBT >>24890000
          MOVE BBUF:="SEGMENT";                                <<00221>>24892000
          MOVE BBUF(45):="REFERENCE";                          <<00221>>24894000
          MOVE BBUF(56):=                                      <<00221>>24896000
           "SEGMENT    ABSOLUTE     BANK/     DISC";           <<00221>>24898000
          MOVE BBUF(100):="C O M T O I Y E W           VM  ";  << WBT >>24900000
         PRINTLINE;                                                     24902000
          MOVE BBUF:=                                          <<00221>>24904000
           "NUMBER    SEGMENT DESCRIPTION";                    <<00221>>24906000
          MOVE BBUF(47):=                                      <<00221>>24908000
           " BIT     LENGTH     ADDRESS      /LDEV";           << WBT >>24910000
          MOVE BBUF(89):=                                      <<00221>>24912000
           "ADDRESS    V C I K D P S S D          ALLOC";      << WBT >>24914000
         PRINTLINE;                                                     24916000
   MOVE BBUF:="------    -------------------",2;               << WBT >>24918000
   MOVE    *:="                   ---     ------     -------",2;        24920000
   MOVE    *:="      -----    -------    - - - - - - - - -   ",2;       24922000
   MOVE    *:="       -----";                                  << WBT >>24924000
   PRINTLINE;                                                  << WBT >>24926000
         SKIPLINES(1);                                                  24928000
      END;                                                              24930000
                                                                        24932000
$PAGE "PRINTDST: Print formatted DST table"                             24934000
$CONTROL SEGMENT=TABLES2                                                24936000
COMMENT                                                                 24938000
                                                                        24940000
Purpose:                                                                24942000
     Print formatted DST table                                          24944000
                                                                        24946000
Input parameters:                                                       24948000
                                                                        24950000
Output parameters:                                                      24952000
                                                                        24954000
Globals Referenced:                                                     24956000
                                                                        24958000
Globals Altered:                                                        24960000
                                                                        24962000
Data Structures:                                                        24964000
                                                                        24966000
Algorithm:                                                              24968000
                                                                        24970000
;                                                                       24972000
PROCEDURE PRINTDST;                                            <<06.EB>>24974000
BEGIN                                                          <<06.EB>>24976000
   DOUBLE LOCDST, STENT, ENDENT, TABLEBASE;                    <<01791>>24978000
   INTEGER NENTRYS, INDX, FREECOUNT, FREEX;                    <<01791>>24980000
LOGICAL WORK1,WORK2;                                           <<01.02>>24982000
LOGICAL ARRAY SCR0(*)=LOCDST;                                  <<01.02>>24984000
LOGICAL ARRAY SCR1(*)=SCR0(1);                                 <<01.02>>24986000
INTEGER SEGLEN;                                                <<00221>>24988000
   ARRAY FREEDST(0:1023);                                      <<01791>>24990000
   OWN BYTE ARRAY DSTNAME(0:9):=9,"DST TABLE";                 <<01875>>24992000
                                                               <<06.EB>>24994000
NEWPAGE;                                                       <<06.EB>>24996000
INDXARAY(2*2):=PAGENO;                                         <<06.EB>>24998000
LOCDST:=VERIFYP(%2,%1002D);                                    <<01.02>>25000000
IF <> THEN                                                     <<01.02>>25002000
BEGIN                                                          <<01.02>>25004000
   IF LOCDST <> 0D THEN WARNING ELSE                           <<01.02>>25006000
   IF (SCR1:=DSTFLG) <> 0 THEN WARNING ELSE                    <<01.02>>25008000
   BEGIN                                                       <<01.02>>25010000
      NOFORMT';                                                <<00221>>25012000
      GO BAILOUT;                                              <<01.02>>25014000
   END;                                                        <<01.02>>25016000
END;                                                           <<01.02>>25018000
PDHEAD;                                                        <<06.EB>>25020000
IF LOCDST < 1D THEN                                            <<06.EB>>25022000
BEGIN                                                          <<06.EB>>25024000
   MOVE BBUF:="INVALID DST POINTER";                           <<06.EB>>25026000
   PRINTLINE;                                                  <<06.EB>>25028000
   DSTBAD:=TRUE;                                               <<06.EB>>25030000
   GO TO BAILOUT;                                              <<06.EB>>25032000
END;                                                           <<06.EB>>25034000
NENTRYS:=INTEGER(CORE(LOCDST));                                <<01.02>>25036000
IF 1 <= NENTRYS <= %1777 THEN << RANGE OK >>                   <<06.EB>>25038000
ELSE                                                           <<06.EB>>25040000
BEGIN                                                          <<06.EB>>25042000
   MOVE BBUF:="INVALID NUMBER OF DST ENTRYS";                  <<06.EB>>25044000
   PRINTLINE;                                                  <<06.EB>>25046000
   DSTBAD:=TRUE;                                               <<06.EB>>25048000
   GO TO BAILOUT;                                              <<06.EB>>25050000
END;                                                           <<06.EB>>25052000
         DSTLENGTH:=(NENTRYS+1)*4;                             <<00221>>25054000
   DST'ADDRESS:=LOCDST;                                        << WBT >>25056000
   MAKEFREEMAP(DST'ADDRESS, FREEDST, 4, 1023, DSTNAME);        <<01875>>25058000
FOR INDX:=1 UNTIL NENTRYS                                      <<06.EB>>25060000
DO                                                             <<06.EB>>25062000
BEGIN                                                          <<06.EB>>25064000
   LOCDST:=LOCDST+4D;                                          <<06.EB>>25066000
      IF FREEDST(INDX)                                         <<01791>>25068000
   THEN GO TO B2;                                              << WBT >>25070000
   @PBUF:=@BBUF;                                               <<06.EB>>25072000
   PUTNUMP(INDX);     <<SEGMENT #>>                            <<06.EB>>25074000
   WORK1:=CORE(LOCDST);                                        <<06.EB>>25076000
    @MEMBUFP:=@MEMBUF;      <<MAKE SURE POINTING>>             << WBT >>25078000
    MEMBUFP:=INDX;          <<SAVE INDEX FOR NAMEDST>>         << WBT >>25080000
   @PBUF:=@BBUF+8;                                             <<01.3A>>25082000
   IF INDX <= LSTSYSDST THEN NAMEDST;                          << WBT >>25084000
   @PBUF:=@BBUF+48;                                            <<06.EB>>25086000
   IF WORK1.(2:1)=1 THEN MOVE PBUF:="ON"                       <<06.EB>>25088000
                    ELSE MOVE PBUF:="OFF";                     << WBT >>25090000
   WORK2:=WORK1.(3:13);                                        << WBT >>25092000
   @PBUF:=@BBUF+56;                                            << WBT >>25094000
   SEGLEN:=WORK2*4;  << SEGMENT LENGTH >>                      << WBT >>25096000
   PUTNUMP(SEGLEN);                                            << WBT >>25098000
   PRINTFLAGS(CORE(LOCDST+1D));      <<FLAGS>>                 << WBT >>25100000
   @PBUF:=@BBUF+125;                                           << WBT >>25102000
   PUTNUMP(CORE(LOCDST+1D).(8:8));   <<ALLOC COUNT>>           << WBT >>25104000
   WORK2:=CORE(LOCDST+2D);                                     << WBT >>25106000
   IF WORK1.(0:1) = 1 AND CORE(LOCDST+1D).(1:2)=0 THEN         << WBT >>25108000
            BEGIN     <<ABSENT BIT ON>>                                 25110000
                  @PBUF:=@BBUF+89;                             <<00221>>25112000
                  TOS:=WORK2.(8:8);      <<PUSH HODA>>         << WBT >>25114000
                  TOS:=CORE(LOCDST+3D);  <<PUSH LODA>>         <<00221>>25116000
                  PUTDNUMP(*);       <<CONVERT DISC ADDRESS>>  <<00221>>25118000
                  @PBUF:=@BBUF+78;                             <<00221>>25120000
                  PUTNUMP(WORK2.(0:8));  <<CONVERT LDEV>>      <<00221>>25122000
                  GO TO B1;                                             25124000
            END;       <<SEG IS ABSENT>>                       << WBT >>25126000
            @PBUF:=@BBUF+76;                                   <<00221>>25128000
            PUTNUMP(WORK2);                                    <<01791>>25130000
            @PBUF:=@BBUF+68;                                   <<00221>>25132000
            PUTNUM(CORE(LOCDST+3D));   <<ABSOLUTE PB ADDR>>             25134000
B1:                                                                     25136000
  IF SEGLEN <> 0 THEN PRINTLINE ELSE BLANKBUF;                 << WBT >>25138000
            IF LINECOUNT=LNSPERPG THEN PDHEAD;                 <<00221>>25140000
B2:                                                                     25142000
         END;                                                           25144000
BAILOUT:                                                                25146000
      END;                                                              25148000
                                                                        25150000
$PAGE "ANALYZE'HALT: Analyze halt/suddendeath for PRINTREGS"            25152000
$CONTROL SEGMENT=TABLES2                                                25154000
COMMENT                                                                 25156000
                                                                        25158000
Purpose:                                                                25160000
    Analyze halt/suddendeath.  Look for pause.                          25162000
    Called only once, by PRINTREGS.                                     25164000
                                                                        25166000
Input parameters:                                                       25168000
                                                                        25170000
Output parameters:                                                      25172000
                                                                        25174000
Globals Referenced:                                                     25176000
                                                                        25178000
Globals Altered:                                                        25180000
                                                                        25182000
Data Structures:                                                        25184000
                                                                        25186000
Algorithm:                                                              25188000
                                                                        25190000
;                                                                       25192000
PROCEDURE ANALYZE'HALT;                                        <<03013>>25194000
<<====================>>                                       <<03013>>25196000
<<ANALYZE HALT/SUDDENDEATH     LOOK FOR PAUSE>>                <<03013>>25198000
BEGIN                                                          <<03013>>25200000
                                                               <<03013>>25202000
  DOUBLE DSCRATCH;                                             <<03013>>25204000
  LOGICAL SCRATCH;                                             <<03013>>25206000
                                                               <<03013>>25208000
         SKIPLINES (1);   <<SPACE DOWN FROM PRINTREGISTERS>>   <<03013>>25210000
                                                               <<03013>>25212000
         IF (CIRREG.(0:12) = %1417) THEN                       <<03013>>25214000
           BEGIN                 <<INSTRUCTION IS A HALT>>     <<03013>>25216000
            MOVE BBUF:="********* HALT";                       <<03013>>25218000
            @PBUF:=@BBUF+12;                                   <<03013>>25220000
            PUTNUMP(CIRREG.(12:4));                            <<03013>>25222000
            PRINTLINE;                                         <<03013>>25224000
            SKIPLINES(1);                                      <<03013>>25226000
            TOS:=ZBANKREG;  TOS:=QREG;                         <<03013>>25228000
            DSCRATCH:=TOS;   <<Q REGISTER AT TIME OF HALT>>    <<03013>>25230000
            IF  (CIRREG.(12:4) >=%15) AND   <<HALT 17?>>       <<03013>>25232000
                (CORE(DSCRATCH-4D) < 2000) THEN  <<VALID SF>>  <<04747>>25234000
              BEGIN              <<SYSTEM FAILURE MESSAGE>>    <<03013>>25236000
               MOVE BBUF:="****SYSTEM FAILURE #";              <<03013>>25238000
               SCRATCH:=ASCII(CORE(DSCRATCH-4D),10,BBUF(21));  <<03013>>25240000
               @PBUF:=@BBUF+INTEGER(SCRATCH)+21;               <<03013>>25242000
               MOVE PBUF:="; STATUS";                          <<03013>>25244000
               @PBUF:=@PBUF+9;                                 <<03013>>25246000
               PUTNUM(CORE(DSCRATCH-1D));                      <<03013>>25248000
               @PBUF:=@PBUF-1;                                 <<03013>>25250000
               MOVE PBUF:="; DELTA P";                         <<03013>>25252000
               @PBUF:=@PBUF+10;                                <<03013>>25254000
               PUTNUM(CORE(DSCRATCH-2D));                      <<03013>>25256000
               @PBUF:=@PBUF+10;                                <<03013>>25258000
               CASE (CORE(DSCRATCH-4D)/100) OF                 <<03013>>25260000
                BEGIN        <<SF CLASSIFICATION>>             <<03013>>25262000
<<001-099>>      MOVE PBUF:="(SYSTEM INTERNALS)";              <<03013>>25264000
<<100-199>>      MOVE PBUF:="(MEMORY MANAGEMENT)";             <<03013>>25266000
<<200-299>>      MOVE PBUF:="(I/O SYSTEM)";                    <<03013>>25268000
<<300-399>>      MOVE PBUF:="(PROCESS AND USER RELATED)";      <<03013>>25270000
<<400-499>>      MOVE PBUF:="(FILE SYSTEM)";                   <<03013>>25272000
<<500-599>>      MOVE PBUF:="(USER INTERFACE)";                <<03013>>25274000
<<600-699>>      MOVE PBUF:="(MEMORY MGMT / I/O SYSTEM)";      <<sknew>>25276000
<<700-799>>      ;            <<UNUSED AT PRESENT>>            <<03013>>25278000
<<800-899>>      ;            <<UNUSED AT PRESENT>>            <<03013>>25280000
<<900-999>>      BEGIN                                         <<03013>>25282000
                  IF (CORE(DSCRATCH-4D) <= 910) THEN           <<03013>>25284000
                   MOVE PBUF:="(CS 3000 INTERNALS)"            <<03013>>25286000
                   ELSE IF (CORE(DSCRATCH-4D) <= 920) THEN     <<03013>>25288000
                    MOVE PBUF:="(DS 3000 USER RELATED)"        <<03013>>25290000
                    ELSE MOVE PBUF:="(MISCELLANEOUS)";         <<03013>>25292000
                 END;                                          <<03013>>25294000
                END;          <<SF CLASSIFICATION>>            <<03013>>25296000
               END;           <<SYSTEM FAILURE MESSAGE>>       <<03013>>25298000
           END                <<SYSTEM HALT>>                  <<03013>>25300000
          ELSE                                                 <<03013>>25302000
           BEGIN           <<NOT A HALT IN CIR>>               <<03013>>25304000
            IF CIRREG = %30020 THEN                            <<03013>>25306000
             MOVE PBUF:="PAUSE INSTRUCTION IN CIR";            <<03013>>25308000
           END;                                                <<03013>>25310000
         PRINTLINE;                <<PRINT COMMENT LINE>>      <<03013>>25312000
END;   <<PROCEDURE ANALYZE'HALT>>                              <<03013>>25314000
                                                                        25316000
$PAGE "PRINTREGS: Print formatted register information page"            25318000
$CONTROL SEGMENT=TABLES2                                                25320000
COMMENT                                                                 25322000
                                                                        25324000
Purpose:                                                                25326000
                                                                        25328000
Input parameters:                                                       25330000
                                                                        25332000
Output parameters:                                                      25334000
                                                                        25336000
Globals Referenced:                                                     25338000
                                                                        25340000
Globals Altered:                                                        25342000
                                                                        25344000
Data Structures:                                                        25346000
                                                                        25348000
Algorithm:                                                              25350000
                                                                        25352000
;                                                                       25354000
PROCEDURE PRINTREGS;                                           <<03013>>25356000
<<=================>                                           <<03013>>25358000
BEGIN                                                          <<03013>>25360000
                                                               <<03013>>25362000
  ARRAY                                                        <<03013>>25364000
     WT  (0:65),         <<TITLE LINE>>                        <<03013>>25366000
     WB1 (0:65),         <<LINE 1>>                            <<03013>>25368000
     WB2 (0:65),         <<LINE 2>>                            <<03013>>25370000
     WB3 (0:65),         <<LINE 3>>                            <<03013>>25372000
     WB4 (0:65),         <<LINE 4>>                            <<03013>>25374000
     WB5 (0:65),         <<LINE 5>>                            <<03013>>25376000
     WB6 (0:65),         <<LINE 6>>                            <<03013>>25378000
     WB7 (0:65),         <<LINE 7>>                            <<03013>>25380000
     WB8 (0:65),         <<LINE 8>>                            <<03013>>25382000
     WSTARS (0:65),      <<LINE FOR STARS, ETC>>               <<03013>>25384000
     WCOLS  (0:65);      <<LINE FOR STAR COLUMNS>>             <<03013>>25386000
                                                               <<03013>>25388000
  BYTE ARRAY                                                   <<03013>>25390000
     BT  (*) = WT,      <<TITLE LINE>>                         <<03013>>25392000
     BB1 (*) = WB1,      <<LINE 1>>                            <<03013>>25394000
     BB2 (*) = WB2,      <<LINE 2>>                            <<03013>>25396000
     BB3 (*) = WB3,      <<LINE 3>>                            <<03013>>25398000
     BB4 (*) = WB4,      <<LINE 4>>                            <<03013>>25400000
     BB5 (*) = WB5,      <<LINE 5>>                            <<03013>>25402000
     BB6 (*) = WB6,      <<LINE 6>>                            <<03013>>25404000
     BB7 (*) = WB7,      <<LINE 7>>                            <<03013>>25406000
     BB8 (*) = WB8,      <<LINE 8>>                            <<03013>>25408000
     BSTARS (*) = WSTARS,  <<LINE FOR STARS>>                  <<03013>>25410000
     BCOLS  (*) = WCOLS;   <<LINE FOR STARS BETWEEN COLUMNS>>  <<03013>>25412000
                                                               <<03013>>25414000
                                                               <<03013>>25416000
SUBROUTINE PRINT'LINE (BUFFER);                                <<03013>>25418000
<<--------------------------->>                                <<03013>>25420000
    ARRAY BUFFER;                                              <<03013>>25422000
BEGIN                                                          <<03013>>25424000
    MOVE DBUFFER := BUFFER,(66);                               <<03013>>25426000
      <<COPY FROM LOCAL LINE BUFFER TO GLOBAL DBUFFER>>        <<03013>>25428000
      <<ALLOWS US TO USE ROUTINES FOR PAGING,SPACING ETC.>>    <<03013>>25430000
    PRINTLINE;   <<PRINT OUT DBUFFER>>                         <<03013>>25432000
END;                                                           <<03013>>25434000
                                                               <<03013>>25436000
SUBROUTINE LOADNUM( BPTR, NUM);                                <<03013>>25438000
<<--------------------------->>                                <<03013>>25440000
   VALUE BPTR,NUM;                                             <<03013>>25442000
   BYTE POINTER BPTR;                                          <<03013>>25444000
   INTEGER      NUM;                                           <<03013>>25446000
BEGIN                                                          <<03013>>25448000
    <<LOADNUM ALLOWS US TO USE "PUTNUM" TO LOAD "NUM">>        <<03013>>25450000
    <<INTO ANY ARBITRARY BYTE POINTER LOCATION "BPTR">>        <<03013>>25452000
   @PBUF := @BPTR;                                             <<03013>>25454000
   PUTNUM ( NUM);                                              <<03013>>25456000
END;                                                           <<03013>>25458000
                                                               <<03013>>25460000
                                                               <<03013>>25462000
SUBROUTINE LOADNUMP( BPTR, NUM);                               <<03013>>25464000
<<--------------------------->>                                <<03013>>25466000
   VALUE BPTR,NUM;                                             <<03013>>25468000
   BYTE POINTER BPTR;                                          <<03013>>25470000
   INTEGER      NUM;                                           <<03013>>25472000
BEGIN                                                          <<03013>>25474000
   @PBUF := @BPTR;                                             <<03013>>25476000
   PUTNUMP ( NUM);                                             <<03013>>25478000
END;                                                           <<03013>>25480000
                                                               <<03013>>25482000
SUBROUTINE INIT'BUFFERS;                                       <<03013>>25484000
<<--------------------->>                                      <<03013>>25486000
BEGIN                                                          <<03013>>25488000
    <<INITIALIZES THE LOCAL "PRINT REGISTER BUFFER LINES" >>   <<03013>>25490000
    <<FILLS ALL LINES WITH BLANKS, LOADS THE SOLID STAR LINE>> <<03013>>25492000
    <<AND LOADS THE STAR "GRID" WHICH SEPARATES FIELDS>>       <<03013>>25494000
  BSTARS := "*";                                               <<03013>>25496000
  MOVE BSTARS(1) := BSTARS,(131);      <<FULL STAR LINE>>      <<03013>>25498000
                                                               <<03013>>25500000
  BCOLS := " ";                                                <<03013>>25502000
  MOVE BCOLS(1) := BCOLS,(131);    <<FIRST,BLANK IT OUT>>      <<03013>>25504000
  BCOLS      := "*";                                           <<03013>>25506000
  BCOLS( 20) := "*";                                           <<03013>>25508000
  BCOLS( 37) := "*";                                           <<03013>>25510000
  BCOLS( 53) := "*";                                           <<03013>>25512000
  BCOLS( 73) := "*";                                           <<03013>>25514000
  BCOLS(131) := "*";         <<STARS BETWWEN COLUMNS>>         <<03013>>25516000
                                                               <<03013>>25518000
  MOVE BT  := BCOLS,(132);                                     <<03013>>25520000
  MOVE BB1 := BCOLS,(132);   <<INIT ALL LINE BUFFERS>>         <<03013>>25522000
  MOVE BB2 := BCOLS,(132);                                     <<03013>>25524000
  MOVE BB3 := BCOLS,(132);                                     <<03013>>25526000
  MOVE BB4 := BCOLS,(132);                                     <<03013>>25528000
  MOVE BB5 := BCOLS,(132);                                     <<03013>>25530000
  MOVE BB6 := BCOLS,(132);                                     <<03013>>25532000
  MOVE BB7 := BCOLS,(132);                                     <<03013>>25534000
  MOVE BB8 := BCOLS,(132);                                     <<03013>>25536000
END;                                                           <<03013>>25538000
                                                               <<03013>>25540000
SUBROUTINE PRINT'ALL'BUFFERS;                                  <<03013>>25542000
<<--------------------->>                                      <<03013>>25544000
BEGIN                                                          <<03013>>25546000
    <<PRINT ALL OF THE PRE-LOADED LOCAL BUFFER LINES>>         <<03013>>25548000
  PRINT'LINE( WSTARS);                                         <<03013>>25550000
  PRINT'LINE( WT);                                             <<03013>>25552000
  PRINT'LINE( WSTARS);                                         <<03013>>25554000
  PRINT'LINE( WCOLS);                                          <<03013>>25556000
  PRINT'LINE( WB1);                                            <<03013>>25558000
  PRINT'LINE( WCOLS);                                          <<03013>>25560000
  PRINT'LINE( WB2);                                            <<03013>>25562000
  PRINT'LINE( WCOLS);                                          <<03013>>25564000
  PRINT'LINE( WB3);                                            <<03013>>25566000
  PRINT'LINE( WCOLS);                                          <<03013>>25568000
  PRINT'LINE( WB4);                                            <<03013>>25570000
  PRINT'LINE( WCOLS);                                          <<03013>>25572000
  PRINT'LINE( WB5);                                            <<03013>>25574000
  PRINT'LINE( WCOLS);                                          <<03013>>25576000
  PRINT'LINE( WB6);                                            <<03013>>25578000
  PRINT'LINE( WCOLS);                                          <<03013>>25580000
  PRINT'LINE( WB7);                                            <<03013>>25582000
  PRINT'LINE( WCOLS);                                          <<03013>>25584000
  PRINT'LINE( WB8);                                            <<03013>>25586000
  PRINT'LINE( WSTARS);                                         <<03013>>25588000
END;                                                           <<03013>>25590000
                                                               <<03013>>25592000
                                                               <<03013>>25594000
SUBROUTINE ON'OFF (BPTR, NUM);                                 <<03013>>25596000
<<--------------------------->>                                <<03013>>25598000
    VALUE BPTR,NUM;                                            <<03013>>25600000
    BYTE POINTER BPTR;                                         <<03013>>25602000
    INTEGER      NUM;                                          <<03013>>25604000
BEGIN                                                          <<03013>>25606000
    IF NUM= 1                                                  <<03013>>25608000
    THEN MOVE BPTR := "ON"                                     <<03013>>25610000
    ELSE MOVE BPTR := "OFF";                                   <<03013>>25612000
END;                                                           <<03013>>25614000
                                                               <<03013>>25616000
    <<CPU INDEPENDENT ROUTINES USED FOR ALL DUMPS>>            <<03013>>25618000
    <<===========================================>>            <<03013>>25620000
                                                               <<03013>>25622000
                                                               <<03013>>25624000
SUBROUTINE LOAD'DATASEG;                                       <<03013>>25626000
<<--------------------->>                                      <<03013>>25628000
BEGIN                                                          <<03013>>25630000
  MOVE  BT(3) := "DATA SEGMENT";                               <<03013>>25632000
  MOVE BB1(3) := "DB BANK =";                                  <<03013>>25634000
  MOVE BB2(3) := "DB      =";                                  <<03013>>25636000
  MOVE BB3(3) := "S BANK  =";                                  <<03013>>25638000
  MOVE BB4(3) := "DL      =";                                  <<03013>>25640000
  MOVE BB5(3) := "Q       =";                                  <<03013>>25642000
  MOVE BB6(3) := "S       =";                                  <<03013>>25644000
  MOVE BB7(3) := "Z       =";                                  <<03013>>25646000
                                                               <<03013>>25648000
  LOADNUM( BB1(13), DBBANKREG);                                <<03013>>25650000
  LOADNUM( BB2(13), DBREG);                                    <<03013>>25652000
  LOADNUM( BB3(13), ZBANKREG);                                 <<03013>>25654000
  LOADNUM( BB4(13), DLREG);                                    <<03013>>25656000
  LOADNUM( BB5(13), QREG);                                     <<03013>>25658000
  LOADNUM( BB6(13), SREG);                                     <<03013>>25660000
  LOADNUM( BB7(13), ZREG);                                     <<03013>>25662000
END;  <<LOAD'DATASEG>>                                         <<03013>>25664000
                                                               <<03013>>25666000
SUBROUTINE LOAD'CODESEG;                                       <<03013>>25668000
<<-------------------->>                                       <<03013>>25670000
BEGIN                                                          <<03013>>25672000
  MOVE  BT(22) := "CODE SEGMENT";                              <<03013>>25674000
  MOVE BB1(22) := "PB    =";                                   <<03013>>25676000
  MOVE BB2(22) := "P     =";                                   <<03013>>25678000
  MOVE BB3(22) := "PL    =";                                   <<03013>>25680000
  MOVE BB4(22) := "PBBANK=";                                   <<03013>>25682000
  MOVE BB5(22) := "(P-PB)=";                                   <<03013>>25684000
                                                               <<03013>>25686000
  LOADNUM( BB1(30), PBREG);                                    <<03013>>25688000
  LOADNUM( BB2(30), PREG);                                     <<03013>>25690000
  LOADNUM( BB3(30), PLREG);                                    <<03013>>25692000
  LOADNUM( BB4(30), PBBANKREG);                                <<03013>>25694000
  LOADNUM( BB5(30), PREG - PBREG);                             <<03013>>25696000
END;  <<LOAD'CODESEG>>                                         <<03013>>25698000
                                                               <<03013>>25700000
                                                               <<03013>>25702000
SUBROUTINE LOAD'MISC;                                          <<03013>>25704000
<<----------------->>                                          <<03013>>25706000
BEGIN                                                          <<03013>>25708000
  MOVE  BT(39) := "MISCELLANEOUS";                             <<03013>>25710000
  MOVE BB1(39) := "X    =";                                    <<03013>>25712000
  MOVE BB2(39) := "CIR  =";                                    <<03013>>25714000
  MOVE BB3(39) := "NIR  =";                                    <<03013>>25716000
                                                               <<03013>>25718000
  LOADNUM( BB1(46), XREG);          <<  X  >>                  <<03013>>25720000
  LOADNUM( BB2(46), CIRREG);        << CIR >>                  <<03013>>25722000
  LOADNUM( BB3(46), NIR);           << NIR >>                  <<03013>>25724000
END;                                                           <<03013>>25726000
                                                               <<03013>>25728000
                                                               <<03013>>25730000
SUBROUTINE LOAD'STATUS;                                        <<03013>>25732000
<<-------------------->>                                       <<03013>>25734000
BEGIN                                                          <<03013>>25736000
  MOVE  BT(55) := "STATUS = XXXXXX";                           <<03013>>25738000
  MOVE BB1(55) := "MODE       =";                              <<03013>>25740000
  MOVE BB2(55) := "INTERRUPTS =";                              <<03013>>25742000
  MOVE BB3(55) := "TRAPS      =";                              <<03013>>25744000
  MOVE BB4(55) := "STACK OP   =";                              <<03013>>25746000
  MOVE BB5(55) := "OVERFLOW   =";                              <<03013>>25748000
  MOVE BB6(55) := "CARRY      =";                              <<03013>>25750000
  MOVE BB7(55) := "COND CODE  =";                              <<03013>>25752000
  MOVE BB8(55) := "SEGMENT #  =";                              <<03013>>25754000
                                                               <<03013>>25756000
  LOADNUM( BT(64), STAREG);          <<STATUS= XXXXXX>>        <<03013>>25758000
                                                               <<03013>>25760000
  IF STAREG.(0:1) = 1                <<MODE = PRIV/USER>>      <<03013>>25762000
  THEN MOVE BB1(68) := "PRIV"                                  <<03013>>25764000
  ELSE MOVE BB1(68) := "USER";                                 <<03013>>25766000
  ON'OFF( BB2(68), STAREG.(1:1) );   <<INTERRUPTS ON/OFF>>     <<03013>>25768000
  ON'OFF( BB3(68), STAREG.(2:1) );   <<TRAPS ON/OFF>>          <<03013>>25770000
  IF STAREG.(3:1) = 1                <<STACKOP = LEFT/RGHT>>   <<03013>>25772000
  THEN MOVE BB4(68) := "RGHT"                                  <<03013>>25774000
  ELSE MOVE BB4(68) := "LEFT";                                 <<03013>>25776000
  ON'OFF( BB5(68), STAREG.(4:1) );   <<OVERFLOW = ON/OFF>>     <<03013>>25778000
  ON'OFF( BB6(68), STAREG.(5:1) );   <<CARRY = ON/OFF>>        <<03013>>25780000
  CASE STAREG.(6:2) OF               <<CONDITION CODE>>        <<03013>>25782000
  BEGIN                                                        <<03013>>25784000
   <<0>>  MOVE BB7(68) := "CCG";                               <<03013>>25786000
   <<1>>  MOVE BB7(68) := "CCL";                               <<03013>>25788000
   <<2>>  MOVE BB7(68) := "CCE";                               <<03013>>25790000
  END;                                                         <<03013>>25792000
  LOADNUMP( BB8(68-3) , SEGK);       <<SEGMENT # >>            <<03013>>25794000
      <<TARGET STARTS 3 SPACES BEFORE DESIRED POSITION>>       <<03013>>25796000
END;  <<LOAD'STATUS>>                                          <<03013>>25798000
                                                               <<03013>>25800000
                                                               <<03013>>25802000
    <<CPU DEPENDENT ROUTINES, USE ONLY FOR APPROPRIATE CPU>>   <<03013>>25804000
    <<====================================================>>   <<03013>>25806000
                                                               <<03013>>25808000
                                                               <<03013>>25810000
SUBROUTINE LOAD'II'MISC;                                       <<03013>>25812000
<<--------------------->>                                      <<03013>>25814000
BEGIN                                                          <<03013>>25816000
  MOVE BB3(39) := "CPX1 =";                                    <<03013>>25818000
  MOVE BB4(39) := "MSIZE=";                                    <<03013>>25820000
  LOADNUM( BB3(46), CPX1);                                     <<03013>>25822000
  LOADNUM( BB4(46), MEMSIZE);                                  <<03013>>25824000
                                                               <<03013>>25826000
  MOVE BB8(3) := "Z BANK  =";                                  <<03013>>25828000
  LOADNUM( BB8(13), ZBANKREG);                                 <<03013>>25830000
END;                                                           <<03013>>25832000
                                                               <<03013>>25834000
                                                               <<03013>>25836000
SUBROUTINE LOAD'III'MISC;                                      <<03013>>25838000
<<---------------------->>                                     <<03013>>25840000
BEGIN                                                          <<03013>>25842000
  MOVE BB3(39) := "CPX1 =";                                    <<03013>>25844000
  MOVE BB4(39) := "SP1  =";                                    <<03013>>25846000
  MOVE BB5(39) := "SP2  =";                                    <<03013>>25848000
  LOADNUM( BB3(46), CPX1);                                     <<03013>>25850000
  LOADNUM( BB4(46), SP1);                                      <<03013>>25852000
  LOADNUM( BB5(46), SP2);                                      <<03013>>25854000
                                                               <<03013>>25856000
  MOVE BB8(3) := "Z BANK  =";                                  <<03013>>25858000
  LOADNUM( BB8(13), ZBANKREG);                                 <<03013>>25860000
END;                                                           <<03013>>25862000
                                                               <<03013>>25864000
                                                               <<03013>>25866000
SUBROUTINE LOAD'II'MICRO'REGS;                                 <<03013>>25868000
<<--------------------------->>                                <<03013>>25870000
BEGIN                                                          <<03013>>25872000
  MOVE BB1(116) := "UREG0 =";                                  <<03013>>25874000
  MOVE BB2(116) := "UREG1 =";                                  <<03013>>25876000
  MOVE BB3(116) := "UREG2 =";                                  <<03013>>25878000
  MOVE BB4(116) := "UREG3 =";                                  <<03013>>25880000
  MOVE BB5(116) := "UREG4 =";                                  <<03013>>25882000
  MOVE BB6(116) := "UREG5 =";                                  <<03013>>25884000
  MOVE BB7(116) := "UREG6 =";                                  <<03013>>25886000
  MOVE BB8(116) := "UREG7 =";                                  <<03013>>25888000
                                                               <<03013>>25890000
  LOADNUM( BB1(124), REG0);                                    <<03013>>25892000
  LOADNUM( BB2(124), REG1);                                    <<03013>>25894000
  LOADNUM( BB3(124), REG2);                                    <<03013>>25896000
  LOADNUM( BB4(124), REG3);                                    <<03013>>25898000
  LOADNUM( BB5(124), REG4);                                    <<03013>>25900000
  LOADNUM( BB6(124), REG5);                                    <<03013>>25902000
  LOADNUM( BB7(124), REG6);                                    <<03013>>25904000
  LOADNUM( BB8(124), REG7);                                    <<03013>>25906000
END;                                                           <<03013>>25908000
                                                               <<03013>>25910000
                                                               <<03013>>25912000
SUBROUTINE LOAD'II'III'CPX2;                                   <<03013>>25914000
<<-------------------->>                                       <<03013>>25916000
BEGIN                                                          <<03013>>25918000
  MOVE  BT(75) := "CPX2 = XXXXXX";                             <<03013>>25920000
  MOVE BB1(75) := "RUN/HALT   =";                              <<03013>>25922000
  MOVE BB2(75) := "SYS DUMP   =";                              <<03013>>25924000
  MOVE BB3(75) := "COLD LOAD  =";                              <<03013>>25926000
  MOVE BB4(75) := "LOAD REG   =";                              <<03013>>25928000
  MOVE BB5(75) := "LOAD ADDR  =";                              <<03013>>25930000
  MOVE BB6(75) := "LOAD MEM   =";                              <<03013>>25932000
  MOVE BB7(75) := "DISP MEM   =";                              <<03013>>25934000
  MOVE BB8(75) := "SNGL INST  =";                              <<03013>>25936000
                                                               <<03013>>25938000
  MOVE BB1(95) := "EXEC SW      =";                            <<03013>>25940000
  MOVE BB2(95) := "INC ADDR     =";                            <<03013>>25942000
  MOVE BB3(95) := "DEC ADDR     =";                            <<03013>>25944000
  MOVE BB4(95) := "INHB AUTO RES=";                            <<03013>>25946000
                                                               <<03013>>25948000
  LOADNUM( BT(82), CPX2);          <<CPX2 = XXXXXX>>           <<03013>>25950000
                                                               <<03013>>25952000
  IF CPX2.(15:1) = 0               <<RUN / HALT>>              <<03013>>25954000
  THEN MOVE BB1(88):= "RUN"                                    <<03013>>25956000
  ELSE MOVE BB1(88):= "HALT";                                  <<03013>>25958000
  ON'OFF( BB2(88), CPX2.(1:1) );   <<SYS DUMP >>               <<03013>>25960000
  ON'OFF( BB3(88), CPX2.(2:1) );   <<COLD LOAD>>               <<03013>>25962000
  ON'OFF( BB4(88), CPX2.(3:1) );   <<LOAD REG>>                <<03013>>25964000
  ON'OFF( BB5(88), CPX2.(4:1) );   <<LOAD ADDR>>               <<03013>>25966000
  ON'OFF( BB6(88), CPX2.(5:1) );   <<LOAD MEM>>                <<03013>>25968000
  ON'OFF( BB7(88), CPX2.(6:1) );   <<DISP MEM>>                <<03013>>25970000
  ON'OFF( BB8(88), CPX2.(7:1) );   <<SNGL INST>>               <<03013>>25972000
                                                               <<03013>>25974000
                                                               <<03013>>25976000
  ON'OFF( BB1(110), CPX2.(8:1) );  <<EXEC SW>>                 <<03013>>25978000
  ON'OFF( BB2(110), CPX2.(9:1) );  <<INC ADDR>>                <<03013>>25980000
  ON'OFF( BB3(110), CPX2.(10:1) ); <<DEC ADDR>>                <<03013>>25982000
  ON'OFF( BB4(110), CPX2.(13:1) ); <<INHB AUTO RES>>           <<03013>>25984000
END;   <<LOAD'55'CPXS>>                                        <<03013>>25986000
                                                               <<03013>>25988000
                                                               <<03013>>25990000
SUBROUTINE LOAD'33'ISR;                                        <<03013>>25992000
<<-------------------->>                                       <<03013>>25994000
BEGIN                                                          <<03013>>25996000
  MOVE  BT(75) := "ISR = XXXXXX";                              <<03013>>25998000
  MOVE BB1(75) := "RUN/HALT   =";                              <<03013>>26000000
  MOVE BB2(75) := "IRQ        =";                              <<03013>>26002000
  MOVE BB3(75) := "CSRQ       =";                              <<03013>>26004000
  MOVE BB4(75) := "PARITY     =";                              <<03013>>26006000
  MOVE BB5(75) := "POWERFAIL  =";                              <<03013>>26008000
  MOVE BB6(75) := "POWERON    =";                              <<03013>>26010000
  MOVE BB7(75) := "DISP FLAG  =";                              <<03013>>26012000
  MOVE BB8(75) := "ICS FLAG   =";                              <<03013>>26014000
                                                               <<03013>>26016000
  MOVE BB1(95) := "STACK OVR    =";                            <<03013>>26018000
  MOVE BB2(95) := "BNDS OVR/UNF =";                            <<03013>>26020000
  MOVE BB3(95) := "VIOL CODE    =";                            <<03013>>26022000
  MOVE BB4(95) := "DISABLE ATN  =";                            <<03013>>26024000
                                                               <<03013>>26026000
  LOADNUM( BT(81), ISR);          << ISR = XXXXXX>>            <<03013>>26028000
                                                               <<03013>>26030000
  IF ISR.(8:1) = 0                <<RUN / HALT>>               <<03013>>26032000
  THEN MOVE BB1(88):= "RUN"                                    <<03013>>26034000
  ELSE MOVE BB1(88):= "HALT";                                  <<03013>>26036000
  ON'OFF( BB2(88), ISR.(0:1) );   <<IRQ>>                      <<03013>>26038000
  ON'OFF( BB3(88), ISR.(1:1) );   <<CSRQ>>                     <<03013>>26040000
  ON'OFF( BB4(88), ISR.(3:1) );   <<PARITY>>                   <<03013>>26042000
  ON'OFF( BB5(88), ISR.(4:1) );   <<POWERFAIL>>                <<03013>>26044000
  ON'OFF( BB6(88), ISR.(5:1) );   <<POWERON>>                  <<03013>>26046000
  ON'OFF( BB7(88), ISR.(14:1) );  <<DISP FLAG>>                <<03013>>26048000
  ON'OFF( BB8(88), ISR.(15:1) );  <<ICS FLAG>>                 <<03013>>26050000
                                                               <<03013>>26052000
  ON'OFF( BB1(110), ISR.(10:1) ); <<STACK OVR>>                <<03013>>26054000
  ON'OFF( BB2(110), ISR.(11:1) ); <<BNDS OVR/UNF>>             <<03013>>26056000
  CASE ISR.(12:2) OF                                           <<03013>>26058000
  BEGIN                           <<VIOL CODE>>                <<03013>>26060000
   <<0>> MOVE BB3(110):= "NONE ";                              <<03013>>26062000
   <<1>> MOVE BB3(110):= "STACK";                              <<03013>>26064000
   <<2>> MOVE BB3(110):= "DATA ";                              <<03013>>26066000
   <<3>> MOVE BB3(110):= "PROG ";                              <<03013>>26068000
  END;                                                         <<03013>>26070000
  ON'OFF( BB4(110), ISR.(9:1)  ); <<DISABLE ATN>>              <<03013>>26072000
END;    <<LOAD'33'ISR>>                                        <<03013>>26074000
                                                               <<03013>>26076000
                                                               <<03013>>26078000
SUBROUTINE LOAD'44'ISR;                                        <<03013>>26080000
<<-------------------->>                                       <<03013>>26082000
BEGIN                                                          <<03013>>26084000
  MOVE  BT(75) := "ISR = XXXXXX";                              <<03013>>26086000
  MOVE BB1(75) := "RUN/HALT   =";                              <<03013>>26088000
  MOVE BB2(75) := "IRQ        =";                              <<03013>>26090000
  MOVE BB3(75) := "CSRQ       =";                              <<03013>>26092000
  MOVE BB4(75) := "PARITY     =";                              <<03013>>26094000
  MOVE BB5(75) := "POWERFAIL  =";                              <<03013>>26096000
  MOVE BB6(75) := "POWERON    =";                              <<03013>>26098000
  MOVE BB7(75) := "DISP FLAG  =";                              <<03013>>26100000
  MOVE BB8(75) := "ICS FLAG   =";                              <<03013>>26102000
                                                               <<03013>>26104000
  MOVE BB2(95) := "TIMEOUT      =";                            <<03013>>26106000
  MOVE BB3(95) := "NOT SS       =";                            <<03013>>26108000
  MOVE BB4(95) := "DISABLE ATN  =";                            <<03013>>26110000
                                                               <<03013>>26112000
  LOADNUM( BT(81), ISR);          <<ISR = XXXXXX>>             <<03013>>26114000
                                                               <<03013>>26116000
  IF ISR.(15:1) = 0               <<RUN / HALT>>               <<03013>>26118000
  THEN MOVE BB1(88):= "RUN"                                    <<03013>>26120000
  ELSE MOVE BB1(88):= "HALT";                                  <<03013>>26122000
  ON'OFF( BB2(88), ISR.(3:1) );   <<IRQ>>                      <<03013>>26124000
  ON'OFF( BB3(88), ISR.(2:1) );   <<CSRQ>>                     <<03013>>26126000
  ON'OFF( BB4(88), ISR.(7:1) );   <<PARITY>>                   <<03013>>26128000
  ON'OFF( BB5(88), ISR.(5:1) );   <<POWERFAIL>>                <<03013>>26130000
  ON'OFF( BB6(88), ISR.(4:1) );   <<POWERON>>                  <<03013>>26132000
  IF ISR.(12:1) = 1               <<DISP FLAG>>                <<03013>>26134000
  THEN ON'OFF( BB7(88), 0 )          <<NEGATIVE LOGIC>>        <<03013>>26136000
  ELSE ON'OFF( BB7(88), 1 );                                   <<03013>>26138000
  IF ISR.(13:1) = 1               <<ICS FLAG>>                 <<03013>>26140000
  THEN ON'OFF( BB8(88), 0 )          <<NEGATIVE LOGIC>>        <<03013>>26142000
  ELSE ON'OFF( BB8(88), 1 );                                   <<03013>>26144000
                                                               <<03013>>26146000
  ON'OFF( BB2(110), ISR.(8:1) );  <<TIMEOUT>>                  <<03013>>26148000
  ON'OFF( BB3(110), ISR.(14:1) ); <<NOT SS>>                   <<03013>>26150000
  ON'OFF( BB4(110), ISR.(10:1) ); <<DISABLE ATN>>              <<03013>>26152000
END;   <<LOAD'44'ISR>>                                         <<03013>>26154000
                                                               <<03013>>26156000
                                                               <<03013>>26158000
SUBROUTINE LOAD'55'CPXS;                                       <<03013>>26160000
<<-------------------->>                                       <<03013>>26162000
BEGIN                                                          <<03013>>26164000
  MOVE  BT(75) := "CPX1 = XXXXXX";                             <<03013>>26166000
  MOVE BB1(75) := "RUN/HALT   =";                              <<03013>>26168000
  MOVE BB2(75) := "MSG INT    =";                              <<03013>>26170000
  MOVE BB3(75) := "WCS PARITY =";                              <<03013>>26172000
  MOVE BB4(75) := "LUT PARITY =";                              <<03013>>26174000
  MOVE BB5(75) := "POWERFAIL  =";                              <<03013>>26176000
  MOVE BB6(75) := "POWERON    =";                              <<03013>>26178000
  MOVE BB7(75) := "DISP FLAG  =";                              <<03013>>26180000
  MOVE BB8(75) := "ICS FLAG   =";                              <<03013>>26182000
                                                               <<03013>>26184000
  MOVE  BT(95) := "CPX2 = XXXXXX";                             <<03013>>26186000
  MOVE BB1(95) := "BOUNDS       =";                            <<03013>>26188000
  MOVE BB2(95) := "TIMEOUT      =";                            <<03013>>26190000
  MOVE BB3(95) := "TCLK INT     =";                            <<03013>>26192000
  MOVE BB4(95) := "SYSHALTFF    =";                            <<03013>>26194000
  MOVE BB5(95) := "PWRFAIL INH  =";                            <<03013>>26196000
  MOVE BB6(95) := "DEFERRED INT =";                            <<03013>>26198000
  MOVE BB7(95) := "CBI INT      =";                            <<03013>>26200000
                                                               <<03013>>26202000
  LOADNUM( BT(82), CPX1);          <<CPX1 = XXXXXX>>           <<03013>>26204000
                                                               <<03013>>26206000
  IF CPX2.(6:1) = 1                <<RUN / HALT>>              <<03013>>26208000
  THEN MOVE BB1(88):= "RUN"                                    <<03013>>26210000
  ELSE MOVE BB1(88):= "HALT";                                  <<03013>>26212000
  ON'OFF( BB2(88), CPX1.(9:1) );   <<MSG INT>>                 <<03013>>26214000
  ON'OFF( BB3(88), CPX1.(3:1) );   <<WCS PARITY>>              <<03013>>26216000
  ON'OFF( BB4(88), CPX1.(5:1) );   <<LUT PARITY>>              <<03013>>26218000
  ON'OFF( BB5(88), CPX1.(12:1) );  <<POWERFAIL>>               <<03013>>26220000
  ON'OFF( BB6(88), CPX2.(0:1) );   <<POWERON>>                 <<03013>>26222000
  ON'OFF( BB7(88), CPX2.(7:1) );   <<DISP FLAG>>               <<03013>>26224000
  ON'OFF( BB8(88), CPX2.(3:1) );   <<ICS FLAG>>                <<03013>>26226000
                                                               <<03013>>26228000
  LOADNUM( BT(102), CPX2);         <<CPX2 = XXXXXX>>           <<03013>>26230000
                                                               <<03013>>26232000
  ON'OFF( BB1(110), CPX1.(2:1) );  <<BOUNDS>>                  <<03013>>26234000
  ON'OFF( BB2(110), CPX1.(7:1) );  <<TIMEOUT>>                 <<03013>>26236000
  ON'OFF( BB3(110), CPX1.(6:1)  ); <<TCLK>>                    <<03013>>26238000
  ON'OFF( BB4(110), CPX2.(10:1) ); <<SYSHALT FF>>              <<03013>>26240000
  ON'OFF( BB5(110), CPX2.(14:1) ); <<PWRFAIL INH>>             <<03013>>26242000
  ON'OFF( BB6(110), CPX2.(15:1) ); <<DEFERRED INT>>            <<03013>>26244000
  ON'OFF( BB7(110), CPX1.(10:1) ); <<CBI INT>>                 <<03013>>26246000
END;   <<LOAD'55'CPXS>>                                        <<03013>>26248000
                                                               <<03013>>26250000
                                                               <<03013>>26252000
SUBROUTINE LOAD'MACHINEID;                                     <<03013>>26254000
<<----------------------->>                                    <<03013>>26256000
BEGIN                                                          <<03013>>26258000
  CASE MACHINEID OF                                            <<03013>>26260000
  BEGIN                                                        <<03013>>26262000
   <<0>> MOVE BT(118) := "   SERIES II";                       <<03013>>26264000
   <<1>> MOVE BT(118) := "  SERIES III";                       <<03013>>26266000
   <<2>> MOVE BT(118) := "SERIES 30/33";                       <<03013>>26268000
   <<3>> MOVE BT(118) := "   SERIES 44";                       <<03013>>26270000
   <<4>> MOVE BT(118) := "   SERIES 64";                       <<03082>>26272000
  END;                                                         <<03013>>26274000
END;                                                           <<03013>>26276000
                                                               <<03013>>26278000
                                                               <<03013>>26280000
$PAGE                                                          <<03013>>26282000
                                                               <<03013>>26284000
<<****   MAIN OUTER BLOCK BODY OF PRINTREGISTERS ****>>        <<03013>>26286000
                                                               <<03013>>26288000
  NEWPAGE;    <<PRINT PAGE HEADER>>                            <<03013>>26290000
  MOVE DBUFFER(21) := "******    REGISTERS    ******";         <<03013>>26292000
  PRINTLINE;                                                   <<03013>>26294000
  SKIPLINES(2);                                                <<03013>>26296000
                                                               <<03013>>26298000
                                                               <<03013>>26300000
  INIT'BUFFERS;        <<BLANK OUT BUFFERS, LOAD STAR GRIDS>>  <<03013>>26302000
                                                               <<03013>>26304000
                  <<LOAD CPU INDEPENDENT FIELDS>>              <<03013>>26306000
                  <<--------------------------->>              <<03013>>26308000
                                                               <<03013>>26310000
  LOAD'DATASEG;        <<LOAD DB,DBBANK,SBANK,DL,Q,S,Z>>       <<03013>>26312000
  LOAD'CODESEG;        <<LOAD PB,P,L,PBBANK, P-PB>>            <<03013>>26314000
  LOAD'STATUS;         <<LOAD STATUS, M-I-T-R-O-C, ETC.>>      <<03013>>26316000
  LOAD'MISC;           <<LOAD X, CIR, NIR >>                   <<03013>>26318000
                       <<REMAINING MISC. FIELDS ARE CPU >>     <<03013>>26320000
                       <<DEPENDENT AND FILLED LATER>>          <<03013>>26322000
                                                               <<03013>>26324000
                  <<LOAD CPU DEPENDENT FIELDS>>                <<03013>>26326000
                  <<------------------------->>                <<03013>>26328000
                                                               <<03013>>26330000
  LOAD'MACHINEID;      <<LOAD CPU IDENTIFICATION>>             <<03013>>26332000
  CASE MACHINEID OF                                            <<03013>>26334000
  BEGIN                                                        <<03013>>26336000
    <<0>>   BEGIN                         <<SERIES II>>        <<03013>>26338000
              LOAD'II'MISC;                                    <<03013>>26340000
              LOAD'II'III'CPX2;                                <<03013>>26342000
              LOAD'II'MICRO'REGS;                              <<03013>>26344000
            END;                                               <<03013>>26346000
    <<1>>   BEGIN                         <<SERIES III>>       <<03013>>26348000
              LOAD'III'MISC;                                   <<03013>>26350000
              LOAD'II'III'CPX2;                                <<03013>>26352000
            END;                                               <<03013>>26354000
    <<2>>   LOAD'33'ISR;                  <<SERIES 30/33>>     <<03013>>26356000
    <<3>>   LOAD'44'ISR;                  <<SERIES 44>>        <<03013>>26358000
    <<4>>   LOAD'55'CPXS;                 <<ICF 55>>           <<03013>>26360000
  END;                                                         <<03013>>26362000
                                                               <<03013>>26364000
                   <<PRINT ALL LOADED BUFFER LINES>>           <<03013>>26366000
                   <<----------------------------->>           <<03013>>26368000
                                                               <<03013>>26370000
  PRINT'ALL'BUFFERS;                                           <<03013>>26372000
                                                               <<03013>>26374000
  ANALYZE'HALT;     <<ANALYZE HALT/SUDDEN-DEATH>>              <<03013>>26376000
                    <<LOOK FOR PAUSE INSTR IN CIR>>            <<03013>>26378000
                                                               <<03013>>26380000
END;  <<OF PROCEDURE PRINTREGISTERS>>                          <<03013>>26382000
                                                                        26384000
$PAGE "PRINTPCB: Format PCB table"                                      26386000
$CONTROL SEGMENT=TABLES2                                                26388000
COMMENT                                                                 26390000
                                                                        26392000
Purpose:                                                                26394000
<<             PRINT PROCESS CONTROL BLOCK                        >>    26396000
<<    THIS PROCEDURE WILL FORMAT AND PRINT THE PROCESS CONTROL    >>    26398000
<<    BLOCK.  HALF OF EACH PCB WILL BE PRINTED AT A TIME       << WBT >>26400000
<<    FOR ALL ASSIGNED ENTRIES, BECAUSE OF THE LIMITATION OF 132  >>    26402000
<<    CHARACTERS/LINE ON THE LINE PRINTER.                        >>    26404000
                                                                        26406000
Input parameters:                                                       26408000
                                                                        26410000
Output parameters:                                                      26412000
                                                                        26414000
Globals Referenced:                                                     26416000
                                                                        26418000
Globals Altered:                                                        26420000
                                                                        26422000
Data Structures:                                                        26424000
                                                                        26426000
Algorithm:                                                              26428000
                                                                        26430000
;                                                                       26432000
                                                                        26434000
PROCEDURE PRINTPCB;                                                     26436000
      BEGIN                                                             26438000
         DOUBLE LOCPCB,STPCB,ENPCB,STENT,ENDENT,CPCBADDR;      << WBT >>26440000
   INTEGER STKDST;                                             << WBT >>26442000
         LOGICAL ARRAY SCR0(*)=LOCPCB;                         <<01.02>>26444000
         LOGICAL ARRAY SCR1(*)=SCR0(1);                        <<01.02>>26446000
         INTEGER PCBSIZE,WORK2,IX1,INDX,SPOOLCST,              <<01.02>>26448000
                 SPOOLSV:=0;                                   <<01.02>>26450000
   BYTE ARRAY SYSNAME(0:6*12-1)=PB:=                           << WBT >>26452000
   "PROGEN",                                                   << WBT >>26454000
   "      ",                                                   << WBT >>26456000
   "UCOP  ",                                                   << WBT >>26458000
   "PFAIL ",                                                   << WBT >>26460000
   "DEVREC",                                                   << WBT >>26462000
   "      ",                                                   << WBT >>26464000
   "      ",                                                   << WBT >>26466000
   "LOG   ",                                                   << WBT >>26468000
   "LOAD  ",                                                   << WBT >>26470000
   "IOMESS",                                                   << WBT >>26472000
   "SYSIO ",                                                   << WBT >>26474000
   "MEMLOG";                                                   << WBT >>26476000
   ARRAY LPTABLE(0:11);                                        << WBT >>26478000
   INTEGER LPWORK;                                             << WBT >>26480000
         LOGICAL NENTRYS,WORK1,IND=INDX;                      <<<01.02>>26482000
   SUBROUTINE PUTL(BIT, COL, L);                               << WBT >>26484000
      VALUE BIT, COL, L;                                       << WBT >>26486000
      LOGICAL BIT;                                             << WBT >>26488000
      INTEGER COL;                                             << WBT >>26490000
      BYTE L;                                                  << WBT >>26492000
      BEGIN IF BIT<>0 THEN BBUF(COL-1):=L; END;                << WBT >>26494000
                                                               << WBT >>26496000
   SUBROUTINE WAITFLAGS(MF, C);                                << WBT >>26498000
      VALUE MF, C;                                             << WBT >>26500000
      LOGICAL MF;                                              << WBT >>26502000
      INTEGER C;                                               << WBT >>26504000
      BEGIN                                                    << WBT >>26506000
         PUTL(MF.(0:1), C+00, "M");    <<M>>                   << WBT >>26508000
         PUTL(MF.(1:1), C+02, "G");    <<RG>>                  << WBT >>26510000
         PUTL(MF.(2:1), C+04, "L");    <<RL>>                  << WBT >>26512000
         PUTL(MF.(3:1), C+06, "M");    <<MA>>                  << WBT >>26514000
         PUTL(MF.(4:1), C+08, "B");    <<BIO>>                 << WBT >>26516000
         PUTL(MF.(5:1), C+10, "I");    <<IO>>                  << WBT >>26518000
         PUTL(MF.(6:1), C+12, "U");    <<UCOP>>                << WBT >>26520000
         PUTL(MF.(7:1), C+14, "J");    <<JNK>>                 << WBT >>26522000
         PUTL(MF.(8:1), C+16, "T");    <<TIMER>>               << WBT >>26524000
         PUTL(MF.(9:1), C+18, "M");    <<MSG>>                 << WBT >>26526000
         PUTL(MF.(10:1), C+20, "S");   <<SON>>                 << WBT >>26528000
         PUTL(MF.(11:1), C+22, "F");   <<FATHER>>              << WBT >>26530000
         PUTL(MF.(12:1), C+24, "I");   <<IMP>>                 << WBT >>26532000
         PUTL(MF.(13:1), C+26, "S");   <<SIR>>                 << WBT >>26534000
         PUTL(MF.(14:1), C+28, "T");   <<TIMEOUT>>             << WBT >>26536000
         PUTL(MF.(15:1), C+30, "M");   <<MEM>>                 << WBT >>26538000
      END;                                                     << WBT >>26540000
                                                               << WBT >>26542000
                                                               << WBT >>26544000
   SUBROUTINE PUTQPIN(QPTR, COL);                              << WBT >>26546000
   VALUE QPTR, COL;                                            << WBT >>26548000
   LOGICAL QPTR;                                               << WBT >>26550000
   INTEGER COL;                                                << WBT >>26552000
   BEGIN                                                       << WBT >>26554000
      IF QPTR=0 THEN RETURN;                                   << WBT >>26556000
      QPTR:=LOGICAL(DOUBLE(QPTR+%1000)-LOCPCB);                << WBT >>26558000
      IF QPTR.(12:4)<>0                                        << WBT >>26560000
      THEN MOVE BBUF(COL-2):="***"                             << WBT >>26562000
      ELSE PUTNZ(QPTR.(0:12), COL);                            << WBT >>26564000
   END;                                                        << WBT >>26566000
                                                               << WBT >>26568000
   SUBROUTINE CHECKCURRENT;                                    << WBT >>26570000
   IF LOCPCB+DOUBLE(INDX*PCBSIZE)=CPCBADDR                     << WBT >>26572000
   THEN BBUF(4):="*";                                          << WBT >>26574000
                                                               << WBT >>26576000
                                                               << WBT >>26578000
   NEWPAGE;                                                    <<01833>>26580000
   INDXARAY(2*3):=PAGENO;                                      << WBT >>26582000
   <<FILL LP TABLE>>                                           << WBT >>26584000
   LPWORK:=0;                                                  << WBT >>26586000
   WHILE LPWORK<=11 DO                                         << WBT >>26588000
      BEGIN                                                    << WBT >>26590000
      LPTABLE(LPWORK):=CORE(DOUBLE(%1141+LPWORK))/%20;         << WBT >>26592000
      LPWORK:=LPWORK+1;                                        << WBT >>26594000
      END;                                                     << WBT >>26596000
                                                               << WBT >>26598000
   LOCPCB:=VERIFYP(%3, %1003D);                                << WBT >>26600000
         IF <> THEN                                            <<01.02>>26602000
         BEGIN                                                 <<01.02>>26604000
            IF LOCPCB <>0D THEN WARNING ELSE                   <<01.02>>26606000
            IF (SCR1:=PCBFLG) <> 0 THEN WARNING ELSE           <<01.02>>26608000
            BEGIN                                              <<01.02>>26610000
               NOFORMT';                                       <<00221>>26612000
               GO BAILOUT;                                     <<01.02>>26614000
            END;                                               <<01.02>>26616000
         END;                                                  <<01.02>>26618000
         TOS:=0;                                                        26620000
         TOS:=CORE(4D);                                                 26622000
         ENPCB:=TOS;                                                    26624000
         WORK1:=CORE(ENPCB+3D);                                         26626000
         CDSTN:=WORK1.(1:10);                                           26628000
         ENPCB:=3D;                                                     26630000
         NENTRYS:=CORE(LOCPCB) + 1;                            <<01082>>26632000
         IF LOGICAL(NENTRYS)>256 THEN                                   26634000
         BEGIN                                                          26636000
            MOVE DBUFFER(23):="INVALID NUMBER OF ENTRIES";              26638000
            PRINTLINE;                                                  26640000
            GO TO BAILOUT;                                              26642000
         END;                                                           26644000
          PCBSIZE:=INTEGER (CORE(LOCPCB+1D));                 <<<01.02>>26646000
         IF PCBSIZE <> 16 THEN                                          26648000
         BEGIN                                                          26650000
            MOVE DBUFFER(23):="INVALID PCB SIZE";                       26652000
            PRINTLINE;                                                  26654000
            GO TO BAILOUT;                                              26656000
         END;                                                           26658000
   CPCBADDR:=DOUBLE(CORE(CPCB D));                             << WBT >>26660000
         PHEAD1;                                               <<01082>>26662000
         STPCB:=LOCPCB;                                                 26664000
         IF INTEGER(NENTRYS) < 2 THEN GO TO PRINTSIZE;         <<01082>>26666000
         WORK1:=CORE(%1165D);<<GET SPOOL PLABEL>>              <<01.02>>26668000
         SPOOLCST:=WORK1.(8:8);                                <<01.02>>26670000
   INDX:=1;                                                    << WBT >>26672000
         DO                                                             26674000
         BEGIN                                                          26676000
            @PBUF:=@BBUF-3;                                             26678000
      IF ISFREEPCB(INDX) THEN                                  << WBT >>26680000
            GO BUMP;      <<UNASSIGNED SKIP TO NEXT ENTRY>>             26682000
      STKDST:=PCB03.(1:10);                                    << WBT >>26684000
            PUTNUMP(INDX);                                              26686000
      CHECKCURRENT;                                            << WBT >>26688000
                                                               << WBT >>26690000
      COMMENT DATA SEGMENT STUFF;                              << WBT >>26692000
                                                               << WBT >>26694000
      PUTNZ(PCB02.(1:10), 9);      <<XDS DST#>>                << WBT >>26696000
      PUTL(PCB02.(0:1), 11, "A");  <<ADB BIT>>                 << WBT >>26698000
      PUTNZ(PCB03.(1:10), 15);     <<STK DST#>>                << WBT >>26700000
      PUTL(PCB03.(0:1), 17, "A");  <<OV ALLOC>>                << WBT >>26702000
                                                               << WBT >>26704000
      COMMENT WAIT STUFF;                                      << WBT >>26706000
                                                               << WBT >>26708000
      WAITFLAGS(PCB04, 36);    <<WAKEMASK>>                    << WBT >>26710000
      WAITFLAGS(PCB10, 69);    <<EVENTFLAGS>>                  << WBT >>26712000
                                                               << WBT >>26714000
      COMMENT FAMILY TREE;                                     << WBT >>26716000
                                                               << WBT >>26718000
      PUTNZ(PCB05.(0:8), 22);    <<FATHER PIN>>                << WBT >>26720000
      PUTNZ(PCB05.(8:8), 27);    <<SON PIN>>                   << WBT >>26722000
      PUTNZ(PCB06.(0:8), 31);    <<BROTHER PIN>>               << WBT >>26724000
      CASE PCB08.(4:2) OF        <<OA>>                        << WBT >>26726000
         BEGIN                                                 << WBT >>26728000
            TOS:=" ";                                          << WBT >>26730000
            TOS:="F";   <<FATHER>>                             << WBT >>26732000
            TOS:="S";   <<SON>>                                << WBT >>26734000
            TOS:="R";   <<RIT REPLY>>                          << WBT >>26736000
         END;                                                  << WBT >>26738000
      BBUF(32):=TOS;                                           << WBT >>26740000
                                                               << WBT >>26742000
      COMMENT PSEUDO INTERRUPTS;                               << WBT >>26744000
                                                               << WBT >>26746000
      @PBUF:=@BBUF+101;                                        << WBT >>26748000
      CASE PCB08.(0:3) OF <<PSIM>>                             << WBT >>26750000
         BEGIN                                                 << WBT >>26752000
            ;                    <<0>>                         << WBT >>26754000
            MOVE PBUF:="HKIL";   <<1>>                         << WBT >>26756000
            MOVE PBUF:="SKIL";   <<2>>                         << WBT >>26758000
            MOVE PBUF:="STOP";   <<3>>                         << WBT >>26760000
            MOVE PBUF:="HIBN";   <<4>>                         << WBT >>26762000
            MOVE PBUF:="ESCP";   <<5>>                         << WBT >>26764000
            MOVE PBUF:="BRAK";   <<6>>                         << WBT >>26766000
            MOVE PBUF:="NORM";   <<7>>                         << WBT >>26768000
         END;                                                  << WBT >>26770000
      PUTL(PCB09.(10:1), 107, "H");   <<HK>>                   << WBT >>26772000
      PUTL(PCB09.(11:1), 109, "S");   <<SK>>                   << WBT >>26774000
      PUTL(PCB09.(12:1), 111, "T");   <<ST>>                   << WBT >>26776000
      PUTL(PCB09.(13:1), 113, "H");   <<HB>>                   << WBT >>26778000
      PUTL(PCB09.(14:1), 115, "Y");   <<CY>>                   << WBT >>26780000
      PUTL(PCB09.(15:1), 117, "B");   <<BK>>                   << WBT >>26782000
      PUTL(PCB00.(15:1), 119, "R");   <<RITBK>>                << WBT >>26784000
      PUTL(PCB00.(4:1),  121, "P");   <<PIOVR>>                << WBT >>26786000
                                                               << WBT >>26788000
      @PBUF:=@BBUF+123;                                        << WBT >>26790000
      CASE PCB09.(6:3) OF         <<PTYPE>>                    << WBT >>26792000
         BEGIN                                                 << WBT >>26794000
            MOVE PBUF:="USER";    <<0>>                        << WBT >>26796000
            MOVE PBUF:="USONM";   <<1>>                        << WBT >>26798000
            MOVE PBUF:="UMAIN";   <<2>>                        << WBT >>26800000
            MOVE PBUF:="UMTSK";   <<3>>                        << WBT >>26802000
            MOVE PBUF:="SYST";    <<4>>                        << WBT >>26804000
            ;                     <<5>>                        << WBT >>26806000
            MOVE PBUF:="SYSTU";   <<6>>                        << WBT >>26808000
            ;                     <<7>>                        << WBT >>26810000
         END;                                                  << WBT >>26812000
                                                               << WBT >>26814000
      COMMENT CRITICAL/HAS SIR;                                << WBT >>26816000
                                                               << WBT >>26818000
      PUTL(PCB00.(2:1), 130, "C"); <<CRITICAL>>                << WBT >>26820000
      PUTL(PCB00.(3:1), 132, "H"); <<HAS SIR>>                 << WBT >>26822000
                                                               << WBT >>26824000
            PRINTLINE;                                                  26826000
BUMP:       INDX:=INDX+1;                                               26828000
            IF INDX=INTEGER(NENTRYS) THEN GO TO BEND;          <<01082>>26830000
            IF LINECOUNT=LNSPERPG THEN                         <<02012>>26832000
            BEGIN NEWPAGE; PHEAD1; END;                        <<02012>>26834000
BEND:                                                                   26836000
      END UNTIL INDX=INTEGER(NENTRYS);                         <<01082>>26838000
         IF (LINECOUNT*2) > (LNSPERPG+2) THEN NEWPAGE;         <<00221>>26840000
         PHEAD2;                                                        26842000
   INDX:=1;                                                    << WBT >>26844000
         DO                                                             26846000
         BEGIN                                                          26848000
            @PBUF:=@BBUF-3;                                             26850000
      IF ISFREEPCB(INDX) THEN                                  << WBT >>26852000
            GO BUMP1;   <<UNASSIGNED SKIP TO NEXT ENTRY>>               26854000
            PUTNUMP(INDX);                                              26856000
      CHECKCURRENT;                                            << WBT >>26858000
                                                               << WBT >>26860000
      COMMENT SCHEDULING INFORMATION;                          << WBT >>26862000
                                                               << WBT >>26864000
      PUTQPIN(PCB14, 11);  <<NQPTR>>                           << WBT >>26866000
      PUTQPIN(PCB15, 18);   <<PQPTR>>                          << WBT >>26868000
      PUTL(PCB13.(0:1), 23, "D");  <<DISPQ>>                   << WBT >>26870000
      PUTL(PCB13.(1:1), 25, "L");  <<LIN SCHD>>                << WBT >>26872000
      PUTL(PCB13.(2:1), 27, "C");  <<C Q>>                     << WBT >>26874000
      PUTL(PCB13.(3:1), 29, "D");  <<D Q>>                     << WBT >>26876000
      PUTL(PCB13.(4:1), 31, "E");  <<E Q>>                     << WBT >>26878000
      PUTL(PCB13.(5:1), 33, "I");  <<INTERACTIVE>>             << WBT >>26880000
      PUTL(PCB13.(6:1), 35, "C");  <<CORE RESIDENT>>           << WBT >>26882000
      PUTNZ(PCB13.(8:8), 39);      <<PRIORITY>>                << WBT >>26884000
      PUTL(PCB00.(13:1), 41, "H"); <<HIPRI>>                   << WBT >>26886000
      PUTL(PCB00.(12:1), 43, "U"); <<USEDQ>>                   << WBT >>26888000
      PUTL(PCB00.(11:1), 45, "T"); <<TRW>>                     << WBT >>26890000
      PUTL(PCB00.(10:1), 47, "S"); <<SW>>                      << WBT >>26892000
      PUTL(PCB00.(9:1), 49, "L");  <<LW>>                      << WBT >>26894000
      PUTL(PCB00.(8:1), 51, "M");  <<MP>>                      << WBT >>26896000
      PUTL(PCB00.(7:1), 53, "P");  <<PC>>                      << WBT >>26898000
      PUTL(PCB00.(6:1), 55, "I");  <<IPEXP>>                   << WBT >>26900000
      PUTL(PCB00.(5:1), 57, "H");  <<HSPRI>>                   << WBT >>26902000
      PUTL(PCB00.(0:1), 59, "S");  <<SAR>>                     << WBT >>26904000
      PUTL(PCB09.(5:1), 61, "V");  <<STOV>>                    << WBT >>26906000
                                                               << WBT >>26908000
      COMMENT RESOURCES;                                       << WBT >>26910000
                                                               << WBT >>26912000
      PUTL(PCB00.(2:1), 65, "C");  <<CRITICAL>>                << WBT >>26914000
      PUTL(PCB00.(3:1), 67, "H");  <<HAS SIR>>                 << WBT >>26916000
      PUTNZ(PCB07.(0:8), 71);      <<PREV IMP PIN>>            << WBT >>26918000
      PUTNZ(PCB08.(8:8), 76);      <<NEXT IMP PIN>>            << WBT >>26920000
      PUTL(PCB03.(11:1), 79, "S"); <<SYSTEM CODE>>             << WBT >>26922000
                                                               << WBT >>26924000
      COMMENT COMMUNICATION;                                   << WBT >>26926000
                                                               << WBT >>26928000
      @PBUF:=@BBUF+88;                                         <<01791>>26930000
      CASE PCB09.(1:2) OF          <<BMS>>                     << WBT >>26932000
         BEGIN                                                 << WBT >>26934000
            MOVE PBUF:="SNF";                                  << WBT >>26936000
            MOVE PBUF:="REF";                                  << WBT >>26938000
            MOVE PBUF:="SNS";                                  << WBT >>26940000
            MOVE PBUF:="RES";                                  << WBT >>26942000
         END;                                                  << WBT >>26944000
      @PBUF:=@BBUF+92;                                         <<01791>>26946000
      CASE PCB09.(3:2) OF          <<PPC>>                     << WBT >>26948000
         BEGIN                                                 << WBT >>26950000
            MOVE PBUF:="NUL";                                  << WBT >>26952000
            MOVE PBUF:="STF";                                  << WBT >>26954000
            MOVE PBUF:="FTS";                                  << WBT >>26956000
            MOVE PBUF:="BLK";                                  << WBT >>26958000
         END;                                                  << WBT >>26960000
                                                               << WBT >>26962000
      COMMENT MISCELLANEOUS;                                   << WBT >>26964000
                                                               << WBT >>26966000
      PUTSEGID(PCB11, 97);  << PCST >>                         <<01791>>26968000
                                                               << WBT >>26970000
      PUTNZ(PCB12, 114);        <<PBXPTR>>                     <<01791>>26972000
                                                               << WBT >>26974000
      PUTNZ(PCB01, 121);        <<SLL PTR>>                    <<01791>>26976000
                                                               << WBT >>26978000
      PUTNZ(PCB07.(8:8), 125);  <<BPT LINK>>                   <<01791>>26980000
                                                               << WBT >>26982000
      COMMENT LIFE/DEATH BITS;                                 << WBT >>26984000
                                                               << WBT >>26986000
      PUTL(PCB09.(0:1), 82, "L");                              <<01791>>26988000
      PUTL(PCB08.(6:1), 84, "D");                              <<01791>>26990000
      PUTL(PCB08.(7:1), 86, "F");                              <<01791>>26992000
                                                               << WBT >>26994000
      << PRINT NAME FOR SYSTEM PROCESS >>                      << WBT >>26996000
      LPWORK:=0;                                               << WBT >>26998000
      WHILE LPWORK<=11 DO                                      << WBT >>27000000
         BEGIN                                                 << WBT >>27002000
         IF INDX=INTEGER(LPTABLE(LPWORK)) THEN                 << WBT >>27004000
            BEGIN                                              << WBT >>27006000
            MOVE BBUF(126):=SYSNAME(6*LPWORK),(6);             << WBT >>27008000
            LPWORK:=1000;                                      << WBT >>27010000
            END;                                               << WBT >>27012000
         LPWORK:=LPWORK+1;                                     << WBT >>27014000
         END;                                                  << WBT >>27016000
                                                               << WBT >>27018000
            PRINTLINE;                                                  27020000
BUMP1:      INDX:=INDX+1;                                               27022000
            IF INDX=INTEGER(NENTRYS) THEN GO TO BEND1;         <<01082>>27024000
            IF LINECOUNT=LNSPERPG THEN PHEAD2;                 <<00221>>27026000
BEND1:                                                                  27028000
         END UNTIL INDX=INTEGER(NENTRYS);                      <<01082>>27030000
PRINTSIZE:                                                     <<01082>>27032000
         SKIPLINES(2);                                         <<01082>>27034000
         @PBUF:=@BBUF;                                         <<01082>>27036000
         PUTNUMP(NENTRYS);                                     <<01082>>27038000
         MOVE BBUF(8):="ENTRYS";                               <<01082>>27040000
         PRINTLINE;                                            <<01082>>27042000
         PUTNUMP(CORE(LOCPCB+2D));                             <<01082>>27044000
         MOVE BBUF(8):="UNASSIGNED ENTRYS";                    <<01082>>27046000
         PRINTLINE;                                            <<01082>>27048000
         PUTNUMP(NENTRYS-CORE(LOCPCB+2D));                     <<01082>>27050000
         MOVE BBUF(8):="ASSIGNED ENTRYS";                      <<01082>>27052000
         PRINTLINE;                                            <<01082>>27054000
                                                               << WBT >>27056000
BAILOUT:                                                                27058000
      END;                                                              27060000
                                                                        27062000
$PAGE "MAKEFREEMAP: Make map of free table entries"                     27064000
$CONTROL SEGMENT=TABLES2                                                27066000
COMMENT                                                                 27068000
                                                                        27070000
Purpose:                                                                27072000
     Used by PRINTDST and FIXPCBSTACK.  Scans a given table and         27074000
     flags free entries and invalid indices.  The free map can          27076000
     then be used to process only existing entries.                     27078000
                                                                        27080000
Input parameters:                                                       27082000
                                                                        27084000
Output parameters:                                                      27086000
                                                                        27088000
Globals Referenced:                                                     27090000
                                                                        27092000
Globals Altered:                                                        27094000
                                                                        27096000
Data Structures:                                                        27098000
                                                                        27100000
Algorithm:                                                              27102000
                                                                        27104000
;                                                                       27106000
PROCEDURE MAKEFREEMAP(TABLEBASE, MAP, ENTRYSIZE, MAXENTNO,     <<01875>>27108000
                      TABLENAME);                              <<01875>>27110000
VALUE ENTRYSIZE, MAXENTNO;                                     <<01791>>27112000
INTEGER ENTRYSIZE, MAXENTNO;                                   <<01791>>27114000
DOUBLE TABLEBASE;                                              <<01791>>27116000
ARRAY MAP;                                                     <<01791>>27118000
BYTE ARRAY TABLENAME;                                          <<01875>>27120000
BEGIN                                                          <<01791>>27122000
   INTEGER COUNT, FREEX, MAPINDEX;                             <<01875>>27124000
   MAP:=FALSE;                                                 <<01791>>27126000
   MOVE MAP(1):=MAP,(MAXENTNO);                                <<01791>>27128000
   FREEX:=FIRSTFREEX;                                          <<01791>>27130000
   COUNT:=NUMCONFIG;                                           <<01791>>27132000
   IF COUNT>MAXENTNO THEN COUNT:=MAXENTNO;                     <<01791>>27134000
   WHILE COUNT>=0 AND FREEX<>0 DO                              <<01791>>27136000
   BEGIN                                                       <<01791>>27138000
      MAPINDEX:=FREEX/ENTRYSIZE;                               <<01875>>27140000
      IF NOT (0<=MAPINDEX<=MAXENTNO) THEN                      <<01875>>27142000
      BEGIN                                                    <<01875>>27144000
         SKIPLINES(2);                                         <<01875>>27146000
         MOVE BBUF:="****** WARNING -- INVALID FREE LIST IN ",2;        27148000
         MOVE    *:=TABLENAME(1),(INTEGER(TABLENAME(0))),2;    <<01875>>27150000
         MOVE    *:=" -- ATTEMPTING TO CONTINUE.";             <<01875>>27152000
         PRINTLINE;                                            <<01875>>27154000
         SKIPLINES(2);                                         <<01875>>27156000
         RETURN;                                               <<01875>>27158000
      END;                                                     <<01875>>27160000
      MAP(MAPINDEX):=TRUE;                                     <<01875>>27162000
      COUNT:=COUNT-1;                                          <<01791>>27164000
      FREEX:=NEXTFREEX;                                        <<01791>>27166000
   END;                                                        <<01791>>27168000
END;                                                           <<01791>>27170000
                                                                        27172000
$PAGE "PHEAD1: Print header for first half of PCB table"                27174000
$CONTROL SEGMENT=TABLES                                                 27176000
COMMENT                                                                 27178000
                                                                        27180000
Purpose:                                                                27182000
    Print header for first half of PCB table                            27184000
                                                                        27186000
Input parameters:                                                       27188000
                                                                        27190000
Output parameters:                                                      27192000
                                                                        27194000
Globals Referenced:                                                     27196000
                                                                        27198000
Globals Altered:                                                        27200000
                                                                        27202000
Data Structures:                                                        27204000
                                                                        27206000
Algorithm:                                                              27208000
                                                                        27210000
;                                                                       27212000
PROCEDURE PHEAD1;                                              << WBT >>27214000
BEGIN                                                          << WBT >>27216000
   MOVE DBUFFER(16):=                                          << WBT >>27218000
   "******    PROCESS CONTROL BLOCK (1ST HALF)    ******";     << WBT >>27220000
   PRINTLINE;                                                  << WBT >>27222000
   SKIPLINES(2);                                               << WBT >>27224000
   <<LINE 1>>                                                  << WBT >>27226000
   MOVE BBUF(57):="W A I T   S T A T E";                       << WBT >>27228000
   PRINTLINE;                                                  << WBT >>27230000
   <<LINE 2>>                                                  << WBT >>27232000
   MOVE BBUF(9):="DATA";                                       << WBT >>27234000
   PRINTLINE;                                                  << WBT >>27236000
   <<LINE 3>>                                                  << WBT >>27238000
   MOVE BBUF(6):="-SEGMENTS--";                                << WBT >>27240000
   MOVE BBUF(35):="-----------WAKEMASK------------";           << WBT >>27242000
   MOVE BBUF(68):="----------EVENTFLAGS-----------";           << WBT >>27244000
   MOVE BBUF(19):="-FAMILY TREE--";                            << WBT >>27246000
   MOVE BBUF(101):="-PSEUDO INTERRUPTS--";                     << WBT >>27248000
   MOVE BBUF(123):="--MISC---";                                << WBT >>27250000
   PRINTLINE;                                                  << WBT >>27252000
   <<LINE 4>>                                                  << WBT >>27254000
   PRINTLINE;                                                  << WBT >>27256000
   <<LINE 5>>                                                  << WBT >>27258000
   BBUF(16):="O";                                              << WBT >>27260000
   MOVE BBUF(51):="T     F     T";                             << WBT >>27262000
   MOVE BBUF(84):=BBUF(51),(13);                               << WBT >>27264000
   MOVE BBUF(118):="R P";                                      << WBT >>27266000
   PRINTLINE;                                                  << WBT >>27268000
   <<LINE 6>>                                                  << WBT >>27270000
   BBUF(16):="V";                                              << WBT >>27272000
   MOVE BBUF(47):="U J I     A     M";                         << WBT >>27274000
   MOVE BBUF(80):=BBUF(47),(17);                               << WBT >>27276000
   MOVE BBUF(118):="I I";                                      << WBT >>27278000
   MOVE BBUF(129):="C H";                                      << WBT >>27280000
   PRINTLINE;                                                  << WBT >>27282000
   <<LINE 7>>                                                  << WBT >>27284000
   BBUF(10):="A";                                              << WBT >>27286000
   BBUF(16):="A";                                              << WBT >>27288000
   MOVE BBUF(43):="B   C U M M S T I S O M";                   << WBT >>27290000
   MOVE BBUF(76):=BBUF(43),(23);                               << WBT >>27292000
   MOVE BBUF(118):="T O";                                      << WBT >>27294000
   MOVE BBUF(129):="R S";                                      << WBT >>27296000
   PRINTLINE;                                                  << WBT >>27298000
   <<LINE 8>>                                                  << WBT >>27300000
   BBUF(10):="D";                                              << WBT >>27302000
   BBUF(16):="L";                                              << WBT >>27304000
   MOVE BBUF(37):="R R M I I O N E S O H M I U E";             << WBT >>27306000
   MOVE BBUF(70):=BBUF(37),(29);                               << WBT >>27308000
   MOVE BBUF(19):="FTHR SON BRO O";                            << WBT >>27310000
   MOVE BBUF(106):="H S S H C B B V";                          << WBT >>27312000
   MOVE BBUF(129):="I I";                                      << WBT >>27314000
   PRINTLINE;                                                  << WBT >>27316000
   <<LINE 9>>                                                  << WBT >>27318000
   MOVE BBUF:="PIN";                                           << WBT >>27320000
   MOVE BBUF(6):="XDS B STK C";                                << WBT >>27322000
   MOVE BBUF(35):="M G L A O O P K R G N R P R T M";           << WBT >>27324000
   MOVE BBUF(68):=BBUF(35),(31);                               << WBT >>27326000
   MOVE BBUF(19):="PIN  PIN PIN A";                            << WBT >>27328000
   MOVE BBUF(101):="PSIM K K T B Y K K R";                     << WBT >>27330000
   MOVE BBUF(123):="PTYPE";                                    << WBT >>27332000
   MOVE BBUF(129):="T R";                                      << WBT >>27334000
   PRINTLINE;                                                  << WBT >>27336000
                                                               << WBT >>27338000
   <<LINE 10>>                                                 << WBT >>27340000
   MOVE BBUF:="---";                                           << WBT >>27342000
   MOVE BBUF(6):="--- - --- -";                                << WBT >>27344000
   MOVE BBUF(35):="- ",2;                                      << WBT >>27346000
   MOVE *:=BBUF(35),(30);                                      << WBT >>27348000
   MOVE BBUF(68):=BBUF(35),(31);                               << WBT >>27350000
   MOVE BBUF(19):="---- --- --- -";                            << WBT >>27352000
   MOVE BBUF(101):="---- ",2;                                  << WBT >>27354000
   MOVE *:=BBUF(104),(16);                                     << WBT >>27356000
   MOVE BBUF(123):="-----";                                    << WBT >>27358000
   MOVE BBUF(129):="- -";                                      << WBT >>27360000
   PRINTLINE;                                                  << WBT >>27362000
                                                               << WBT >>27364000
   SKIPLINES(1);                                               << WBT >>27366000
END;  <<PHEAD1>>                                               << WBT >>27368000
                                                                        27370000
$PAGE "PHEAD2: Print header for second half of PCB"                     27372000
$CONTROL SEGMENT=TABLES                                                 27374000
COMMENT                                                                 27376000
                                                                        27378000
Purpose:                                                                27380000
     Print header for second half of PCB                                27382000
                                                                        27384000
Input parameters:                                                       27386000
                                                                        27388000
Output parameters:                                                      27390000
                                                                        27392000
Globals Referenced:                                                     27394000
                                                                        27396000
Globals Altered:                                                        27398000
                                                                        27400000
Data Structures:                                                        27402000
                                                                        27404000
Algorithm:                                                              27406000
                                                                        27408000
;                                                                       27410000
PROCEDURE PHEAD2;                                              << WBT >>27412000
BEGIN                                                          << WBT >>27414000
   IF LINECOUNT > 5 THEN SKIPLINES(3);                         << WBT >>27416000
   MOVE DBUFFER(16):=                                          << WBT >>27418000
   "******    PROCESS CONTROL BLOCK (2ND HALF)    ******";     << WBT >>27420000
   PRINTLINE;                                                  << WBT >>27422000
   SKIPLINES(2);                                               << WBT >>27424000
   <<LINE 1>>                                                  << WBT >>27426000
   MOVE BBUF(6):="----- S C H E D U L I N G   I N F O R M A",2;<< WBT >>27428000
   MOVE *:=" T I O N -----";                                   << WBT >>27430000
   MOVE BBUF(64):="---RESOURCES---";                           << WBT >>27432000
   MOVE BBUF(81):="LIFE/";                                     <<01791>>27434000
   MOVE BBUF(88):="-------------- MISCELLANEOUS ---------------";       27436000
   PRINTLINE;                                                  << WBT >>27438000
   <<LINE 2>>                                                  << WBT >>27440000
   MOVE BBUF(81):="DEATH";                                     <<01791>>27442000
   PRINTLINE;                                                  << WBT >>27444000
   <<LINE 3>>                                                  << WBT >>27446000
   MOVE BBUF(20):="  D         I C     H U           I H";     << WBT >>27448000
   PRINTLINE;                                                  << WBT >>27450000
   <<LINE 4>>                                                  << WBT >>27452000
   MOVE BBUF(20):="  I         N O     I S           P S";     << WBT >>27454000
   MOVE BBUF(64):="C H";                                       << WBT >>27456000
   MOVE BBUF(81):="L D";                                       <<01791>>27458000
   PRINTLINE;                                                  << WBT >>27460000
   <<LINE 5>>                                                  << WBT >>27462000
   MOVE BBUF(20):="  S         T R     P E T         E P S S"; << WBT >>27464000
   MOVE BBUF(64):="R S PREV NEXT";                             << WBT >>27466000
   MOVE BBUF(81):="I E F";                                     <<01791>>27468000
   MOVE BBUF(126):="SYSTEM";                                   << WBT >>27470000
   PRINTLINE;                                                  << WBT >>27472000
   <<LINE 6>>                                                  << WBT >>27474000
   MOVE BBUF(20):="  P L C D E E E     R D R S L M P X R A O"; << WBT >>27476000
   MOVE BBUF(64):="I I IMPD IMPD S";                           << WBT >>27478000
   MOVE BBUF(81):="V A A";                                     <<01791>>27480000
   MOVE BBUF(122):="BPT";                                      <<01791>>27482000
   MOVE BBUF(127):="PROC";                                     << WBT >>27484000
   PRINTLINE;                                                  << WBT >>27486000
   <<LINE 7>>                                                  << WBT >>27488000
   MOVE BBUF:="PIN";                                           << WBT >>27490000
   MOVE BBUF(7):="NQPIN  PQPIN   Q Q Q Q Q R R PRI I Q W W W",2;        27492000
   MOVE BBUF(127):="PROC";                                     << WBT >>27494000
   MOVE *:=" P C P I R V";                                     << WBT >>27496000
   MOVE BBUF(64):="T R PIN  PIN  C";                           << WBT >>27498000
   MOVE BBUF(81):="E D C  BMS PPC    PCST";                    <<01791>>27500000
   MOVE BBUF(108):="PBXPTR SLLPTR LNK  NAME";                  <<01791>>27502000
   PRINTLINE;                                                  << WBT >>27504000
   <<LINE 8>>                                                  << WBT >>27506000
   MOVE BBUF:="---";                                           << WBT >>27508000
   MOVE BBUF(7):="-----  -----";                               << WBT >>27510000
   MOVE BBUF(20):=BBUF(18),(16);  BBUF(20):=" ";               << WBT >>27512000
   MOVE BBUF(36):="--- ";                                      << WBT >>27514000
   MOVE BBUF(40):=BBUF(38),(22);                               << WBT >>27516000
   MOVE BBUF(64):="- - ---- ---- -";                           << WBT >>27518000
   MOVE BBUF(81):="- - -  --- --- -----------";                <<01791>>27520000
   MOVE BBUF(108):="------ ------ --- ------";                 <<01791>>27522000
   PRINTLINE;                                                  << WBT >>27524000
                                                               << WBT >>27526000
   SKIPLINES(1);                                               << WBT >>27528000
END; <<PHEAD2>>                                                << WBT >>27530000
                                                                        27532000
$PAGE "PRINTSTACKS: Print stack markers for present stacks"             27534000
$CONTROL SEGMENT=TABLES                                                 27536000
                                                               <<00221>>27538000
COMMENT                                                                 27540000
                                                                        27542000
Purpose:                                                                27544000
<<            PRINT ALL STACK MARKERS               >>         <<00221>>27546000
<<  THIS PROCEDURE STEPS THROUGH THE PCB AND CALLS  >>         <<00221>>27548000
<<  CHECKSTACK FOR EACH PRESENT STACK.  THIS WILL   >>         <<00221>>27550000
<<  PRINT OUT THE STACK MARKERS FOR ALL PRESENT     >>         <<00221>>27552000
<<  STACKS.  THE CURRENT PROCESS STACK IS PRINTED   >>         <<00221>>27554000
<<  FIRST.                                          >>         <<00221>>27556000
                                                                        27558000
Input parameters:                                                       27560000
                                                                        27562000
Output parameters:                                                      27564000
                                                                        27566000
Globals Referenced:                                                     27568000
                                                                        27570000
Globals Altered:                                                        27572000
                                                                        27574000
Data Structures:                                                        27576000
                                                                        27578000
Algorithm:                                                              27580000
                                                                        27582000
;                                                                       27584000
PROCEDURE PRINTSTACKS;                                         <<00221>>27586000
   BEGIN                                                       <<00221>>27588000
     DOUBLE SCRATCH,SCRATCH1,SCRATCH2,SCRATCH3;                <<00221>>27590000
     LOGICAL WORK,WORK1,WORK2,WORK3,FREEPTR;                   << WBT >>27592000
     NEWPAGE;                                                  <<00221>>27594000
     MOVE DBUFFER(23):=                                        <<00221>>27596000
        "****** PRESENT STACKS ******";                        <<00221>>27598000
     PRINTLINE;                                                <<00221>>27600000
     SKIPLINES(2);                                             <<00221>>27602000
     IF CORE(4D) <> 0 THEN          <<CURRENT PROCESS>>        <<00221>>27604000
      IF DOUBLE(CORE(4D)) > PCBDEFIN THEN  <<AND VALID>>       <<00221>>27606000
       BEGIN                                                   <<00221>>27608000
         SCRATCH:=DOUBLE(CORE(4D))+3D;  <<ADDRESS OF DST>>     <<00221>>27610000
         WORK:=CORE(SCRATCH).(1:10);    <<DST NUMBER>>         <<00221>>27612000
         MBENTNO:=WORK;                 <<DST NUMBER>>         << WBT >>27614000
CHECKSTACK(WORK);                                              <<03076>>27616000
         INDXARAY((LSTSYSDST+1)*2):=PAGENO;                    <<00221>>27618000
         NEWPAGE;                                              <<00221>>27620000
       END;                                                    <<00221>>27622000
     SCRATCH:=PCBDEFIN;                 <<ADDRESS OF PCB>>     <<00221>>27624000
     IF SCRATCH < 1D OR                                        <<00221>>27626000
        CORE(SCRATCH) > 255 THEN        <<INVALID>>            <<00221>>27628000
      BEGIN                                                    <<00221>>27630000
        MOVE PBUF:="INVALID PCB: CANNOT PRINT STACKS";         <<00221>>27632000
        PRINTLINE;                                             <<00221>>27634000
        RETURN;                                                <<00221>>27636000
      END;                                                     <<00221>>27638000
     WORK2:=CORE(SCRATCH);              <<NUMBER OF ENTRIES>>  <<00221>>27640000
     WORK:=1;                           <<FIRST VALID PIN>>    << WBT >>27642000
PSTACK:                                                        <<00221>>27644000
     SCRATCH1:=SCRATCH+DOUBLE(WORK*16); <<ENTRY POINTER>>      <<00221>>27646000
     IF NOT ISFREEPCB(WORK) THEN                               << WBT >>27648000
       BEGIN                                                   <<00221>>27650000
         WORK1:=CORE(SCRATCH1+3D).(1:10);  <<DST NUMBER>>      <<00221>>27652000
         MBENTNO:=WORK1;                   <<FOR CHECKSTACK>>  << WBT >>27654000
         SCRATCH2:=        DSTDEFIN+       <<DST BASE>>        <<00221>>27656000
                   DOUBLE(WORK1*4);        <<DST OFFSET>>      <<00221>>27658000
         IF CORE(SCRATCH2).(0:1) = 0        <<PRESENT>>        <<01791>>27660000
         OR  CORE(SCRATCH2+1D).(1:1) = 1 THEN   <<OR ROC>>     <<01791>>27662000
          BEGIN                             <<ITS THERE>>      <<00221>>27664000
CHECKSTACK(WORK1);                                             <<03076>>27666000
          END;                                                 <<00221>>27668000
       END;                                                    <<00221>>27670000
     WORK:=WORK+1;                   <<NEXT PIN>>              <<00221>>27672000
     IF WORK <= WORK2 THEN GOTO PSTACK;                        <<00221>>27674000
   END;                                                        <<00221>>27676000
                                                                        27678000
$PAGE "PRINTSIR: Print SIR table, check for locked sirs"                27680000
$CONTROL SEGMENT=TABLES                                                 27682000
                                                                        27684000
COMMENT                                                                 27686000
                                                                        27688000
Purpose:                                                                27690000
    This procedure will print locked sirs and the impeded               27692000
    list if any. if no sirs are locked then "no locked sirs"            27694000
    will be printed.                                                    27696000
                                                                        27698000
Input parameters:                                                       27700000
                                                                        27702000
Output parameters:                                                      27704000
                                                                        27706000
Globals Referenced:                                                     27708000
                                                                        27710000
Globals Altered:                                                        27712000
                                                                        27714000
Data Structures:                                                        27716000
                                                                        27718000
Algorithm:                                                              27720000
                                                                        27722000
;                                                                       27724000
PROCEDURE PRINTSIR;                                                     27726000
  BEGIN                                                                 27728000
    DOUBLE LOCSIR,LOCDST,LOCPCB;                                        27730000
      INTEGER COUNT,CNT2,INDX,LSIR,PCB'ENTRIES,PCBCOUNT;      <<<01078>>27732000
      LOGICAL WORK1,WORK2,WORK3,WORK4,WORK5;                  <<<01.02>>27734000
   EQUATE PCBSIZE=%20;                                         << WBT >>27736000
    NEWPAGE;                                                            27738000
    INDXARAY(%53*2):=PAGENO;                                            27740000
    MOVE DBUFFER(23):=                                                  27742000
    "******    SIR TABLE    ******";                                    27744000
    PRINTLINE;                                                          27746000
    SKIPLINES(3);                                                       27748000
      LOCSIR:=VERIFYP(%53,%1014D);                             <<01.02>>27750000
      IF <> THEN                                               <<01.02>>27752000
      IF LOCSIR <> 0D THEN WARNING ELSE                        <<01.02>>27754000
      BEGIN                                                    <<01.02>>27756000
         NOFORMT';                                             <<00221>>27758000
         GO BAILOUT;                                           <<01.02>>27760000
      END;                                                     <<01.02>>27762000
     LOCDST:=DSTDEFIN;       <<DEFINE DST BASE>>               <<00221>>27764000
    LSIR:=4*(CORE(LOCDST+DOUBLE(4*%53)).(3:13)); <<LENGTH SIR DST>>     27766000
   << INITIALIZE TABLE OF IMPEDED/VALID/ACTIVE PINS>>          <<00221>>27768000
    << THIS TABLE PREVENTS LOOPING WHEN PRINTING SIRS>>        <<00221>>27770000
    << THE TABLE IS ACCESSED INDEXED BY PIN:         >>        <<00221>>27772000
    <<    VALUE        MEANING                       >>        <<00221>>27774000
    <<      0      PIN IS NOT IMPEDED                >>        <<00221>>27776000
    <<      1      PIN IS WAITING FOR CURRENT SIR    >>        << WBT >>27778000
    <<      2      PIN CANNOT BE WAITING FOR SIR     >>        << WBT >>27780000
    <<      3      PIN IS <1 OR >NENTRIES            >>        << WBT >>27782000
    <<      4      PIN IS WAITING FOR ANOTHER SIR    >>        << WBT >>27784000
     LOCPCB:=PCBDEFIN;                                         <<00221>>27786000
     PCB'ENTRIES:=INTEGER(CORE(LOCPCB));<<NUMBER OF ENTRIES>>  <<01078>>27788000
     INDX:=-1;                         <<INITIAL VALUE>>       <<00221>>27790000
     WHILE (INDX:=INDX+1) <= 255 DO    <<WHILE POSSIBLE>>      <<00221>>27792000
       BEGIN                           <<FOR ALL PINS>>        <<00221>>27794000
        SIRPIN(INDX):=0;               <<ASSUME IT IS OK>>     <<00221>>27796000
        IF((INDX<1) OR (INDX>PCB'ENTRIES))THEN SIRPIN(INDX):=3;<< WBT >>27798000
        IF ISFREEPCB(INDX)                                     << WBT >>27800000
        OR PCB13.(0:1)=1                                       << WBT >>27802000
        OR PCB04.(13:1)=0                                      << WBT >>27804000
                                      THEN SIRPIN(INDX):=2;    <<00221>>27806000
       END;                            <<FOR ALL PINS>>        <<00221>>27808000
                                                               <<00221>>27810000
    INDX:=0;                                                            27812000
    COUNT:=0;                                                           27814000
    WHILE (INDX:=INDX+2)< LSIR DO                                       27816000
    BEGIN                                                               27818000
      WORK1:=CORE(LOCSIR+DOUBLE(INDX));                                 27820000
      <<GET SIR ENTRY>>                                                 27822000
      WORK2:=CORE(LOCSIR+DOUBLE(INDX+1));                               27824000
      IF WORK1=0 THEN GO AEND;                                          27826000
      <<FREE SIR>>                                                      27828000
      COUNT:=COUNT+1;   <<COUNT LOCKED SIRS>>                           27830000
      MOVE BBUF:="SIR #    LOCKED BY PIN # ";                           27832000
      @PBUF:=@BBUF+2;                                                   27834000
      WORK3:=WORK1.(0:8);                                               27836000
      PUTNUMP(INDX/2);   <<SIR#>>                                       27838000
      @PBUF:=@BBUF+21;                                                  27840000
      PUTNUMP(WORK3);    <<PIN#>>                                       27842000
      IF (INDX/2) > %47 THEN GO COUT;                         <<<01.02>>27844000
      CASE * (INDX/2) OF                                                27846000
      BEGIN  <<CASES>>                                                  27848000
        BEGIN  <<0>>                                                    27850000
        END;                                                            27852000
        BEGIN  <<1>>                                                    27854000
          MOVE BBUF(60):="LOAD PROCESS SIR";                            27856000
        END;                                                            27858000
        BEGIN  <<2>>                                                    27860000
          MOVE BBUF(60):="CACHE CONTROL SIR";                  <<sknew>>27862000
        END;                                                            27864000
        BEGIN  <<3>>                                                    27866000
          MOVE BBUF(60):="IDD";                                         27868000
        END;                                                            27870000
        BEGIN  <<4>>                                                    27872000
          MOVE BBUF(60):="ODD";                                         27874000
        END;                                                            27876000
        BEGIN  <<5>>                                                    27878000
          MOVE BBUF(60):="PROCESS TREE STRUCTURE";                      27880000
        END;                                                            27882000
        BEGIN  <<6>>                                                    27884000
          MOVE BBUF(60):="SCHEDULING QUEUE";                            27886000
        END;                                                            27888000
        BEGIN  <<7>>                                                    27890000
          MOVE BBUF(60):="CST ENTRIES";                                 27892000
        END;                                                            27894000
        BEGIN  <<10>>                                                   27896000
          MOVE BBUF(60):="SYSTEM DIRECTORY";                            27898000
        END;                                                            27900000
        BEGIN  <<11>>                                                   27902000
          MOVE BBUF(60):="LPDT";                                        27904000
        END;                                                            27906000
        BEGIN  <<12>>                                                   27908000
          MOVE BBUF(60):="LDT";                                         27910000
        END;                                                            27912000
        BEGIN  <<13>>                                                   27914000
          MOVE BBUF(60):="STORAGE IN OVERLAY AREA";                     27916000
        END;                                                            27918000
        BEGIN  <<14>>                                                   27920000
          MOVE BBUF(60):="DISC FREE SPACE TABLE";                       27922000
        END;                                                            27924000
        BEGIN  <<15>>                                                   27926000
          MOVE BBUF(60):="JPCNT";                                       27928000
        END;                                                            27930000
        BEGIN  <<16>>                                                   27932000
        MOVE BBUF(60):="JCUT";                                 <<00221>>27934000
        END;                                                            27936000
        BEGIN  <<17>>                                                   27938000
        MOVE BBUF(60):="JMAT";                                 <<00221>>27940000
        END;                                                            27942000
        BEGIN  <<20>>                                                   27944000
          MOVE BBUF(60):="FMAVT";                                       27946000
        END;                                                            27948000
        BEGIN  <<21>>                                                   27950000
          MOVE BBUF(60):="LOADER SEGMENT TABLE";                        27952000
        END;                                                            27954000
        BEGIN  <<22>>                                                   27956000
          MOVE BBUF(60):="VDD";                                         27958000
        END;                                                            27960000
        BEGIN <<23>>                                                    27962000
          MOVE BBUF(60):="SPOOL";                                       27964000
        END;                                                            27966000
        BEGIN  <<24>>                                                   27968000
          MOVE BBUF(60):="MESSAGE CATALOGUE";                           27970000
        END;                                                            27972000
        BEGIN  <<25>>                                                   27974000
          MOVE BBUF(60):="RIT";                                         27976000
        END;                                                            27978000
        BEGIN  <<26>>                                                   27980000
          MOVE BBUF(60):="VOLUME TABLE";                                27982000
        END;                                                            27984000
        BEGIN  <<27>>                                                   27986000
         MOVE BBUF(60):="WELCOME MESSAGE SIR";                 <<01078>>27988000
        END;                                                            27990000
        BEGIN  <<30>>                                                   27992000
         MOVE BBUF(60) := "ASSOCIATION TABLE SIR";             <<01664>>27994000
        END;                                                            27996000
        BEGIN  <<31>>                                                   27998000
          MOVE BBUF(60):="CS ALLOCATE SIR";                             28000000
        END;                                                            28002000
        BEGIN  <<32>>                                                   28004000
          MOVE BBUF(60):="LOGGING BUFFER";                              28006000
        END;                                                            28008000
        BEGIN  <<33>>                                                   28010000
         MOVE BBUF(60):="PRIVATE VOL. MVTAB";                 <<<01.02>>28012000
        END;                                                            28014000
        BEGIN  <<34>>                                                   28016000
         MOVE BBUF(60):="PRIVATE VOL. PROCESS SIR";           <<<01.02>>28018000
        END;                                                            28020000
        BEGIN  <<35>>                                                   28022000
         MOVE BBUF(60):="PRIVATE VOL. USER TABLE";            <<<01.02>>28024000
        END;                                                            28026000
        BEGIN  <<36>>                                                   28028000
         MOVE BBUF(60):="IMAGE";                               <<01078>>28030000
        END;                                                            28032000
        BEGIN  <<37>>                                                   28034000
         MOVE BBUF(60):="KSAM";                                <<01078>>28036000
        END;                                                            28038000
        BEGIN  <<40>>                                                   28040000
         MOVE BBUF(60):="USER LOGGING";                        <<01078>>28042000
        END;                                                            28044000
        BEGIN  <<41>>                                                   28046000
        END;                                                            28048000
        BEGIN  <<42>>                                                   28050000
        END;                                                            28052000
        BEGIN  <<43>>                                                   28054000
          MOVE BBUF(60):="SUB-QUEUE MAPPING TABLE";                     28056000
        END;                                                            28058000
        BEGIN  <<44>>                                                   28060000
         MOVE BBUF(60):="CILOG";                               <<01078>>28062000
        END;                                                            28064000
        BEGIN  <<45>>                                                   28066000
          MOVE BBUF(60):="FILE INTEGRITY";                              28068000
        END;                                                            28070000
        BEGIN  <<46>>                                                   28072000
          MOVE BBUF(60):="RIN";                                         28074000
        END;                                                            28076000
         BEGIN <<47>>                                         <<<01.02>>28078000
           MOVE BBUF(60):="MAG. TAPE LABELS";                 <<<01.02>>28080000
         END;                                                 <<<01.02>>28082000
COUT:                                                                   28084000
      END;   <<CASES>>                                                  28086000
      PRINTLINE;                                                        28088000
      MOVE BBUF:="NO IMPEDED PROCESSES";                                28090000
      IF WORK2=0 THEN PRINTLINE                               <<<01.02>>28092000
      ELSE                                                              28094000
      BEGIN                                                             28096000
        MOVE BBUF:="   ";                                               28098000
        PRINTLINE;                                                      28100000
        TOS:=0;                                                         28102000
        TOS:=CORE(3D);                                                  28104000
        LOCPCB:=TOS;                                                    28106000
        WORK4:=WORK2.(8:8);  <<PIN # HEAD>>                             28108000
      WORK5:=WORK2.(0:8);  <<PIN # OF TAIL>>                  <<<01.02>>28110000
      PCBCOUNT := -1;                                          <<01078>>28112000
      DO                                                      <<<01.02>>28114000
        BEGIN                                                           28116000
          PCBCOUNT := PCBCOUNT + 1;                            <<01078>>28118000
          IF PCBCOUNT > PCB'ENTRIES THEN                       <<01078>>28120000
           BEGIN                                               <<01078>>28122000
            MOVE BBUF(15):=                                    <<01078>>28124000
            "ERROR: NUMBER OF IMPEDED PINS EXCEEDS TABLE SIZE";<<01078>>28126000
            PRINTLINE;                                         <<01078>>28128000
            GO TO AEND;                                        <<01078>>28130000
           END;                                                <<01078>>28132000
          MOVE BBUF(3):="PIN";                                          28134000
          @PBUF:=@BBUF+7;                                               28136000
          PUTNUMP(WORK4);                                               28138000
          << CHECK STATUS OF LINK >>                           <<00221>>28140000
           CASE SIRPIN(WORK4) OF                               <<00221>>28142000
            BEGIN                      <<LINK STATES>>         <<00221>>28144000
             BEGIN  <<0>>                                      <<00221>>28146000
              SIRPIN(WORK4):=1;                                <<00221>>28148000
             END;                                              <<00221>>28150000
             BEGIN  <<1>>              <<ALREADY IMPEDED>>     <<00221>>28152000
              MOVE BBUF(15):=                                  <<00221>>28154000
                "ERROR: LOOPING IMPEDED QUEUE POINTER";        <<00221>>28156000
              PRINTLINE;                                       <<00221>>28158000
              GO AEND;                                         <<00221>>28160000
             END;                                              <<00221>>28162000
             BEGIN  <<2>>              <<INACTIVE PIN>>        <<00221>>28164000
              MOVE BBUF(15):=                                  <<00221>>28166000
                "ERROR: IMPEDED PIN IS INACTIVE, ",2;          << WBT >>28168000
                MOVE *:="NOT WAITING FOR SIR, OR ON DISP QUEUE";        28170000
              PRINTLINE;                                       <<00221>>28172000
              GO AEND;                                         <<00221>>28174000
             END;                                              <<00221>>28176000
             BEGIN  <<3>>              <<INVALID PCB>>         <<00221>>28178000
              MOVE BBUF(15):=                                  <<00221>>28180000
                "ERROR: IMPEDED PIN IS INVALID";               <<00221>>28182000
              PRINTLINE;                                       <<00221>>28184000
              GO AEND;                                         <<00221>>28186000
             END;                                              <<00221>>28188000
             BEGIN  <<4>>              <<ALREADY IMPEDED>>     <<00221>>28190000
              MOVE BBUF(15):=                                  <<00221>>28192000
                "WARNING: PIN IS IMPEDED BY ANOTHER SIR";      <<00221>>28194000
              SIRPIN(WORK4):=1;        <<CALL IT IMPEDED>>     <<00221>>28196000
             END;                                              <<00221>>28198000
            END;                     <<**STATE CHECKING>>      <<00221>>28200000
          PRINTLINE;                                                    28202000
          WORK4:=CORE(LOCPCB+DOUBLE(16*WORK4+8));                       28204000
          WORK4:=WORK4.(8:8);  <<GET NEXT PIN>>                         28206000
      END UNTIL WORK4 = 0;                                     <<01078>>28208000
      END;                                                              28210000
      SKIPLINES(1);                                                     28212000
AEND:                                                                   28214000
     <<CORRECT SIRPIN TABLE FOR PINS IMPEDED>>                 <<00221>>28216000
      WORK1:=-1;                     <<SCAN WHOLE TABLE>>      <<00221>>28218000
      WHILE (WORK1:=WORK1+1) < 255 DO                          <<00221>>28220000
       IF SIRPIN(WORK1)=1  THEN SIRPIN(WORK1):=4;              <<00221>>28222000
   END;                                                                 28224000
      IF COUNT =0 THEN                                                  28226000
      BEGIN                                                             28228000
        MOVE BBUF:="NO LOCKED SIRS";                                    28230000
        PRINTLINE;                                                      28232000
      END;                                                              28234000
BAILOUT:                                                                28236000
   END;                                                                 28238000
                                                                        28240000
$PAGE "PRINTMON: Print monitor table"                                   28242000
$CONTROL SEGMENT=TABLES                                                 28244000
COMMENT                                                                 28246000
                                                                        28248000
Purpose:                                                                28250000
     Format monitor trace table                                         28252000
                                                                        28254000
Input parameters:                                                       28256000
                                                                        28258000
Output parameters:                                                      28260000
                                                                        28262000
Globals Referenced:                                                     28264000
                                                                        28266000
Globals Altered:                                                        28268000
                                                                        28270000
Data Structures:                                                        28272000
                                                                        28274000
Algorithm:                                                              28276000
                                                                        28278000
;                                                                       28280000
PROCEDURE PRINTMON;                                                     28282000
  BEGIN                                                                 28284000
    DOUBLE MONPTR:=%1017D,LOCMON,CLOC,ENDMON,STMON:=%1260D;             28286000
      INTEGER MSIZE,MSTART;                                   <<<01.02>>28288000
      LOGICAL WORK1,WORK2;                                    <<<01.02>>28290000
   EQUATE MEASINFOTABPTR = %1261;                              <<01791>>28292000
                                                                        28294000
SUBROUTINE EVENT(ENUMB);                                                28296000
  VALUE ENUMB;                                                          28298000
  INTEGER ENUMB;                                                        28300000
  BEGIN                                                                 28302000
      IF 0<=ENUMB<=8 THEN                                      <<01875>>28304000
      CASE ENUMB OF                                            <<01875>>28306000
      BEGIN   << CASES >>                                      <<01875>>28308000
                                                               <<01875>>28310000
         BEGIN     <<0>>                                       <<01875>>28312000
            MOVE PBUF:="QONSEG";                               <<01875>>28314000
         END;                                                  <<01875>>28316000
         BEGIN     <<1>>                                       <<01875>>28318000
            MOVE PBUF:="MAKEOC";                               <<01875>>28320000
         END;                                                  <<01875>>28322000
         BEGIN     <<2>>                                       <<01875>>28324000
            MOVE PBUF:="SPECIALRQ";                            <<01875>>28326000
         END;                                                  <<01875>>28328000
         BEGIN     <<3>>                                       <<01875>>28330000
            GO TO PNUMB;                                       <<01875>>28332000
         END;                                                  <<01875>>28334000
         BEGIN     <<4>>                                       <<01875>>28336000
            MOVE PBUF:="FETCHSEG";                             <<01875>>28338000
         END;                                                  <<01875>>28340000
         BEGIN     <<5>>                                       <<01875>>28342000
            MOVE PBUF:="SEGIO";                                <<01875>>28344000
         END;                                                  <<01875>>28346000
         BEGIN     <<6>>                                       <<01875>>28348000
            MOVE PBUF:="SIODONE";                              <<01875>>28350000
         END;                                                  <<01875>>28352000
         BEGIN;    <<7>>                                       <<01875>>28354000
            MOVE PBUF:="CGARBAGE";                             <<01875>>28356000
         END;                                                  <<01875>>28358000
         BEGIN     <<8>>                                       <<01875>>28360000
            MOVE PBUF:="SWAPIN";                               <<01875>>28362000
         END;                                                  <<01875>>28364000
      END                                                      <<01875>>28366000
      ELSE IF ENUMB=12 THEN MOVE PBUF:="ALLOCMEM"              <<01875>>28368000
      ELSE IF ENUMB=13 THEN MOVE PBUF:="DEALLOCM"              <<01875>>28370000
      ELSE IF ENUMB=14 THEN MOVE PBUF:="CACHEMOV"                       28372000
      ELSE IF ENUMB=15 THEN MOVE PBUF:="GET CDT"                        28374000
      ELSE IF ENUMB=16 THEN MOVE PBUF:="QUE LDR"                        28376000
      ELSE IF ENUMB=17 THEN MOVE PBUF:="DQUE LDR"                       28378000
      ELSE IF ENUMB=18 THEN MOVE PBUF:="FIND DE"                        28380000
      ELSE IF ENUMB=19 THEN MOVE PBUF:="LOCKRANG"                       28382000
      ELSE IF ENUMB=24 THEN MOVE PBUF:="EXCHDB"                <<01875>>28384000
      ELSE IF ENUMB=40 THEN MOVE PBUF:="QUIESCE"               <<01875>>28386000
      ELSE IF ENUMB=82 THEN MOVE PBUF:="AWAKEDEV"                       28388000
      ELSE IF ENUMB=83 THEN MOVE PBUF:="STRATEGY"                       28390000
      ELSE IF ENUMB=84 THEN MOVE PBUF:="INITIATE"                       28392000
      ELSE IF ENUMB=86 THEN MOVE PBUF:="CDT'ATT"                        28394000
      ELSE IF ENUMB=87 THEN MOVE PBUF:="MAP DOM"                        28396000
      ELSE IF ENUMB=88 THEN MOVE PBUF:="UN MAP RG"                      28398000
      ELSE IF ENUMB=89 THEN MOVE PBUF:="LINK REG"                       28400000
      ELSE IF ENUMB=90 THEN MOVE PBUF:="REQCACHE"                       28402000
      ELSE IF ENUMB=%300 THEN MOVE PBUF:="INTERRUPT"           <<02012>>28404000
      ELSE IF ENUMB=%301 THEN MOVE PBUF:="SIOP-INST"           <<03666>>28406000
      ELSE IF ENUMB=%302 THEN MOVE PBUF:="SIODM-ENT"           <<03666>>28408000
      ELSE IF ENUMB=%303 THEN MOVE PBUF:="SIODM-EXT"           <<03666>>28410000
      ELSE IF ENUMB=-211 THEN MOVE PBUF:="TERMIN"                       28412000
      ELSE IF ENUMB=-240 THEN MOVE PBUF:="CAUSE"                        28414000
      ELSE IF ENUMB=-241 THEN MOVE PBUF:="PROCESS"                      28416000
      ELSE IF ENUMB=-242 THEN MOVE PBUF:="BUILD MKR"                    28418000
      ELSE IF ENUMB=-243 THEN MOVE PBUF:="CHANGE ST"                    28420000
      ELSE IF ENUMB=-244 THEN MOVE PBUF:="TIMEOUT"                      28422000
      ELSE                                                     <<01875>>28424000
PNUMB:                                                                  28426000
        IF PBUF="  " THEN                                      <<00221>>28428000
         BEGIN        <<PUT OUT NUMBER ONLY>>                  <<00221>>28430000
          PUTNUMP(ENUMB);   <<EVENT NUMBER>>                   <<00221>>28432000
          @PBUF:=@PBUF-7;   <<BACK OFF POINTER>>               <<00221>>28434000
         END;         <<PUT OUT NUMBER ONLY>>                  <<00221>>28436000
 END;  <<EVENT SUBROUTINE>>                                             28438000
                                                                        28440000
                                                                        28442000
  BANKNO:=0;                                                            28444000
   IF LINECOUNT > LNSPERPG/2 THEN NEWPAGE                      <<00221>>28446000
     ELSE SKIPLINES(2);            <<TO SAVE PAPER>>           <<00221>>28448000
  MOVE DBUFFER(23):="******    MONITOR TABLE    ******";                28450000
  PRINTLINE;                                                            28452000
  SKIPLINES(3);                                                         28454000
   LOCMON:=DOUBLE(CORE(MONPTR)+%1000);                         << WBT >>28456000
  MSIZE:=CORE(LOCMON-1D);                                               28458000
  IF MSIZE < 4 THEN MSIZE:=8192;                                        28460000
  IF MSIZE > 8192 THEN MSIZE:=8192;                                     28462000
  ENDMON:=LOCMON+DOUBLE(MSIZE);                                << WBT >>28464000
   MSTART:=CORE(DOUBLE(CORE(MEASINFOTABPTR D)+%1100));         <<01791>>28466000
   IF (MSTART:=MSTART-4)<4 THEN MSTART:=CORE(LOCMON-1D)-4;     <<01791>>28468000
  IF MSTART> MSIZE-4 THEN GO BAILOUT;                                   28470000
  MOVE BBUF:="LOCATION    PIN    EVENT";                                28472000
  MOVE BBUF(54):="PIN    EVENT";                               <<00221>>28474000
  MOVE BBUF(96):="PIN    EVENT";                               <<00221>>28476000
  PRINTLINE;                                                            28478000
   CLOC:=DOUBLE(MSTART)+LOCMON;                                << WBT >>28480000
  IF CLOC < 1D THEN GO BAILOUT;                                         28482000
  WHILE MSIZE > 4 DO                                           << WBT >>28484000
  BEGIN                                                                 28486000
    @PBUF:=@BBUF;        <<BEGINNING OF LINE>>                 <<00221>>28488000
    PUTDNUMP(CLOC);      <<LOCATION OF MEMORY POINTER>>        <<00221>>28490000
    @PBUF:=@BBUF+5;      <<SPACE OVER MEMORY ADDRESS>>         <<00221>>28492000
    WORK2:=0;            <<COLUMN COUNTER>>                    <<00221>>28494000
    WHILE MSIZE > 0 LAND WORK2 < 3 DO                          <<00221>>28496000
     BEGIN               <<WHILE ROOM ACROSS PAGE>>            <<00221>>28498000
      @PBUF:=@PBUF+4;    <<OVER PREVIOUS EVENT>>               <<00221>>28500000
      WORK1:=CORE(CLOC); <<PICK UP PIN AND EVENT>>             <<00221>>28502000
      PUTNUMP(WORK1.(0:8)); <<PIN>>                            <<00221>>28504000
      EVENT(WORK1.(8:8));   <<EVENT>>                          <<00221>>28506000
      @PBUF:=@PBUF+10;      <<SKIP OVER EVENT>>                <<00221>>28508000
      PUTNUM(CORE(CLOC+1D));<<WORD 1>>                         <<00221>>28510000
      PUTNUM(CORE(CLOC+2D));<<WORD 2>>                         <<00221>>28512000
      PUTNUM(CORE(CLOC+3D));<<WORD 3>>                         <<00221>>28514000
      CLOC:=CLOC-4D;        <<NEXT LOCATION>>                  << WBT >>28516000
      IF CLOC < LOCMON+4D                                      << WBT >>28518000
        THEN CLOC:=ENDMON-4D;  << TABLE WRAPS AROUND >>        << WBT >>28520000
      MSIZE:=MSIZE-4;       <<FOUR FEWER WORDS LEFT>>          <<00221>>28522000
      WORK2:=WORK2+1;       <<COUNT COLUMNS DONE>>             <<00221>>28524000
     END;                <<DONE ACROSS PAGE>>                  <<00221>>28526000
    PRINTLINE;           <<PRINT FORMATTED LINE>>              <<00221>>28528000
  END;                                                                  28530000
BAILOUT:                                                                28532000
END;                                                                    28534000
                                                                        28536000
$PAGE "PRINTAVAIL: Print available region size bit map/list heads"      28538000
$CONTROL SEGMENT=TABLES                                                 28540000
COMMENT                                                                 28542000
                                                                        28544000
Purpose:                                                                28546000
                                                                        28548000
Input parameters:                                                       28550000
                                                                        28552000
Output parameters:                                                      28554000
                                                                        28556000
Globals Referenced:                                                     28558000
                                                                        28560000
Globals Altered:                                                        28562000
                                                                        28564000
Data Structures:                                                        28566000
                                                                        28568000
Algorithm:                                                              28570000
                                                                        28572000
;                                                                       28574000
PROCEDURE PRINTAVAIL;                                          << WBT >>28576000
   BEGIN                                                       << WBT >>28578000
                                                               << WBT >>28580000
   LOGICAL I, J, K;                                            << WBT >>28582000
                                                               << WBT >>28584000
   DOUBLE SIZE, ARSBMPTR, ARLDPTR;                             << WBT >>28586000
   LOGICAL LSIZE=SIZE+1;                                       << WBT >>28588000
                                                               << WBT >>28590000
   SUBROUTINE PRINTARSBMHEADER;                                << WBT >>28592000
      BEGIN                                                    << WBT >>28594000
      IF LINECOUNT+27 > LNSPERPG                               << WBT >>28596000
      THEN NEWPAGE                                             << WBT >>28598000
      ELSE SKIPLINES(5);                                       << WBT >>28600000
      BLANKBUF;                                                << WBT >>28602000
      MOVE BBUF(30):="*****     AVAILABLE REGION SIZE BIT",2;  << WBT >>28604000
      MOVE *       :=" MAP     *****";                         << WBT >>28606000
      PRINTLINE;                                               << WBT >>28608000
      SKIPLINES(1);                                            << WBT >>28610000
      MOVE BBUF:="   SIZE AVAIL   ",2;                         << WBT >>28612000
      MOVE *:=BBUF,(16),2;                                     << WBT >>28614000
      MOVE *:=BBUF,(32),2;                                     << WBT >>28616000
      MOVE *:=BBUF,(64);                                       << WBT >>28618000
      PRINTLINE;                                               << WBT >>28620000
      SKIPLINES(1);                                            << WBT >>28622000
   END;                                                        << WBT >>28624000
                                                               << WBT >>28626000
   SUBROUTINE FORMATARSBMENTRY;                                << WBT >>28628000
      BEGIN                                                    << WBT >>28630000
      @PBUF:=@PBUF+1;                                          << WBT >>28632000
      PUTNUMP(LSIZE);                                          << WBT >>28634000
      IF SIZE=65536D THEN MOVE PBUF(-7):="200000";             << WBT >>28636000
      K:=CORE(ARSBMPTR+DOUBLE(I));                             << WBT >>28638000
      IF (K&LSL(J)).(0:1) = 0                                  << WBT >>28640000
         THEN MOVE PBUF:="  NO"                                << WBT >>28642000
         ELSE MOVE PBUF:=" YES";                               << WBT >>28644000
      @PBUF:=@PBUF+8;                                          << WBT >>28646000
      END;                                                     << WBT >>28648000
                                                               << WBT >>28650000
   SUBROUTINE PRINTARLHEADER;                                  << WBT >>28652000
      BEGIN                                                    << WBT >>28654000
      IF LINECOUNT+32 > LNSPERPG                               << WBT >>28656000
      THEN NEWPAGE                                             << WBT >>28658000
      ELSE SKIPLINES(5);                                       << WBT >>28660000
      BLANKBUF;                                                << WBT >>28662000
      MOVE BBUF(20):="*****     AVAILABLE REGION SIZE",2;      << WBT >>28664000
      MOVE *       :=" LIST POINTERS     *****";               << WBT >>28666000
      PRINTLINE;                                               << WBT >>28668000
      SKIPLINES(1);                                            << WBT >>28670000
      MOVE BBUF:="   SIZE  BANK   ADDR  ",2;                   << WBT >>28672000
      MOVE *:=BBUF,(22),2;                                     << WBT >>28674000
      MOVE *:=BBUF,(22),2;                                     << WBT >>28676000
      MOVE *:=BBUF,(66);                                       << WBT >>28678000
      PRINTLINE;                                               << WBT >>28680000
      SKIPLINES(1);                                            << WBT >>28682000
      END;                                                     << WBT >>28684000
                                                               << WBT >>28686000
   SUBROUTINE FORMATARLENTRY;                                  << WBT >>28688000
      BEGIN                                                    << WBT >>28690000
      @PBUF:=@PBUF+1;                                          << WBT >>28692000
      PUTNUMP(LSIZE);                                          << WBT >>28694000
      IF SIZE=65536D THEN MOVE PBUF(-7):="200000";             << WBT >>28696000
      @PBUF:=@PBUF-1;                                          << WBT >>28698000
      PUTNUMP(CORE(ARLDPTR+DOUBLE(2*I)));                      << WBT >>28700000
      PUTNUM(CORE(ARLDPTR+DOUBLE(2*I+1)));                     << WBT >>28702000
      @PBUF:=@PBUF+1;                                          << WBT >>28704000
      END;                                                     << WBT >>28706000
                                                               << WBT >>28708000
   TOS:=CORE(SYSGLOBX+1D);                                     << WBT >>28710000
   TOS:=CORE(SYSGLOBX+2D);                                     << WBT >>28712000
   LINKEDMEM:=TOS;                                             << WBT >>28714000
                                                               << WBT >>28716000
   << PRINT ADDRESS OF START OF LINKED MEMORY >>               << WBT >>28718000
   NEWPAGE; BLANKBUF; SKIPLINES(5);                            << WBT >>28720000
   MOVE BBUF:="**********     LINKED MEMORY BEGINS AT";        << WBT >>28722000
   @PBUF:=@BBUF+40;                                            << WBT >>28724000
   PUTDNUMP(LINKEDMEM);                                        << WBT >>28726000
   PRINTLINE;                                                  << WBT >>28728000
   INDXARAY(55*2):=PAGENO;                                     << WBT >>28730000
                                                               << WBT >>28732000
   << PRINT AVAIL REG SIZE BIT MAP >>                          << WBT >>28734000
                                                               << WBT >>28736000
   PRINTARSBMHEADER;                                           << WBT >>28738000
   ARSBMPTR:=DOUBLE(CORE(%1004D))+%1000D;                      << WBT >>28740000
   IF ARSBMPTR>=%200000D THEN ARSBMPTR:=ARSBMPTR-%200000D;     << WBT >>28742000
   I:=J:=0;                                                    << WBT >>28744000
   WHILE (SIZE:=MMPAGESIZE*DOUBLE(16*I+J)) <= 65536D DO        << WBT >>28746000
      BEGIN                                                    << WBT >>28748000
      FORMATARSBMENTRY;                                        << WBT >>28750000
      J:=J+1;                                                  << WBT >>28752000
      IF (J MOD 8) = 0 THEN PRINTLINE;                         << WBT >>28754000
      IF J=16 THEN BEGIN J:=0; I:=I+1; END;                    << WBT >>28756000
      END;                                                     << WBT >>28758000
   PRINTLINE;                                                  << WBT >>28760000
                                                               << WBT >>28762000
   <<PRINT AVAIL REGION LIST HEAD POINTERS>>                   << WBT >>28764000
                                                               << WBT >>28766000
   PRINTARLHEADER;                                             << WBT >>28768000
   ARLDPTR:=DOUBLE(CORE(%1044D))+%1000D;                       << WBT >>28770000
   IF ARLDPTR>=%200000D THEN ARLDPTR:=ARLDPTR-%200000D;        << WBT >>28772000
   I:=0;                                                       << WBT >>28774000
   WHILE (SIZE:=MMPAGESIZE*DOUBLE(I)) <= 65536D DO             << WBT >>28776000
      BEGIN                                                    << WBT >>28778000
      FORMATARLENTRY;                                          << WBT >>28780000
      I:=I+1;                                                  << WBT >>28782000
      IF (I MOD 6) = 0 THEN PRINTLINE;                         << WBT >>28784000
      END;                                                     << WBT >>28786000
   PRINTLINE;                                                  << WBT >>28788000
                                                               << WBT >>28790000
   END; <<PRINTAVAIL>>                                         << WBT >>28792000
                                                                        28794000
$PAGE "PRINTSLL : Format the segment locality lists"                    28796000
$CONTROL SEGMENT=TABLES                                        << WBT >>28798000
PROCEDURE PRINTSLL;                                            << WBT >>28800000
COMMENT                                                                 28802000
                                                                        28804000
Purpose:                                                                28806000
   This procedure is called to format the segment locality              28808000
   list contained within the swaptable. This is done on a               28810000
   per process basis.                                                   28812000
                                                                        28814000
Input parameters:                                                       28816000
   None.                                                                28818000
                                                                        28820000
Output parameters:                                                      28822000
   None.                                                                28824000
                                                                        28826000
Globals Referenced:                                                     28828000
                                                                        28830000
Globals Altered:                                                        28832000
                                                                        28834000
Data Structures:                                                        28836000
                                                                        28838000
Algorithm:                                                              28840000
                                                                        28842000
;                                                                       28844000
BEGIN                                                          << WBT >>28846000
   DOUBLE LOCPCB;                                              << WBT >>28848000
   INTEGER PCBSIZE, NENTRYS;                                   << WBT >>28850000
   INTEGER INDX, COUNT;                                        << WBT >>28852000
   LOGICAL SLLPTR;                                             << WBT >>28854000
   DEFINE                                                      << WBT >>28856000
   SLL00=CORE(DOUBLE(%1000+SLLPTR))#,                          << WBT >>28858000
   SLL01=CORE(DOUBLE(%1001+SLLPTR))#,                          << WBT >>28860000
   SLL02=CORE(DOUBLE(%1002+SLLPTR))#,                          << WBT >>28862000
   SLL03=CORE(DOUBLE(%1003+SLLPTR))#,                          << WBT >>28864000
   SLL04=CORE(DOUBLE(%1004+SLLPTR))#;                          << WBT >>28866000
   DEFINE SLLIMI=SLL04.(06:1)#;                                <<01791>>28868000
                                                               << WBT >>28870000
   SUBROUTINE PUTN(N, C);                                      << WBT >>28872000
   VALUE N,C;                                                  << WBT >>28874000
   INTEGER N,C;                                                << WBT >>28876000
   IF N=0 THEN BBUF(C-1):="0" ELSE PUTNZ(N,C);                 << WBT >>28878000
                                                               << WBT >>28880000
   SUBROUTINE PRINTSLLTITLE;                                   << WBT >>28882000
   BEGIN                                                       << WBT >>28884000
      NEWPAGE;                                                 << WBT >>28886000
      MOVE BBUF(40):="********** PROCESS SEGMENT LOCALITY",2;  << WBT >>28888000
      MOVE *:=" LISTS **********";                             << WBT >>28890000
      PRINTLINE;                                               << WBT >>28892000
      SKIPLINES(1);                                            << WBT >>28894000
   END;                                                        << WBT >>28896000
                                                               << WBT >>28898000
   SUBROUTINE PRINTSLLHEAD;                                    << WBT >>28900000
   BEGIN                                                       << WBT >>28902000
      COUNT:=SLL04;                                            << WBT >>28904000
      IF (LINECOUNT+COUNT+9>=LNSPERPG) AND LINECOUNT+15>LNSPERPG        28906000
      THEN NEWPAGE                                             << WBT >>28908000
      ELSE SKIPLINES(2);                                       << WBT >>28910000
      MOVE BBUF:="PIN:";                                       << WBT >>28912000
      PUTN(INDX, 8);                                           << WBT >>28914000
      MOVE BBUF(11):="FIRST SLL:";                             << WBT >>28916000
      PUTN(SLL01, 28);                                         << WBT >>28918000
      MOVE BBUF(32):="CURR SLL:";                              << WBT >>28920000
      PUTN(SLL02, 48);                                         << WBT >>28922000
      MOVE BBUF(52):="MEM REQ SLL:";                           << WBT >>28924000
      PUTN(SLL03, 71);                                         << WBT >>28926000
      MOVE BBUF(75):="SLL COUNT:";                             << WBT >>28928000
      PUTN(SLL04, 92);                                         << WBT >>28930000
      MOVE BBUF(94):="IOCNT:";                                 << WBT >>28932000
      PUTN(SLL00.(8:8), 104);                                  << WBT >>28934000
      TOS:=@BBUF+106;                                          << WBT >>28936000
      IF SLL00.(0:1) THEN MOVE *:="SWIP ",2;                   << WBT >>28938000
      IF SLL00.(1:1) THEN MOVE *:="SWREQ ",2;                  << WBT >>28940000
      IF SLL00.(2:1) THEN MOVE *:="HASMEM ",2;                 << WBT >>28942000
      IF SLL00.(3:1) THEN MOVE *:="INTLC ",2;                  <<01875>>28944000
      IF SLL00.(4:1) THEN MOVE *:="PARTIN",2;                  <<01875>>28946000
      ASSEMBLE(DEL);                                           << WBT >>28948000
      PRINTLINE;                                               << WBT >>28950000
      SKIPLINES(1);                                            << WBT >>28952000
                                                               << WBT >>28954000
      MOVE BBUF(24):="NEXT     PREV";                          << WBT >>28956000
      MOVE BBUF(41):="NEXT MAKE             ";                 << MCW >>28958000
      PRINTLINE;                                               << WBT >>28960000
                                                               << WBT >>28962000
      MOVE BBUF(1):="ENTRY   SEGMENT";                         << WBT >>28964000
      MOVE BBUF(24):="ENTRY    ENTRY";                         << WBT >>28966000
      MOVE BBUF(41):="PRSNT DFRD   PRE FETCH ";                << MCW >>28968000
      PRINTLINE;                                               << WBT >>28970000
                                                               << WBT >>28972000
      MOVE BBUF(1):="INDEX   IDENTIFIER";                      << WBT >>28974000
      MOVE BBUF(24):="INDEX    INDEX";                         << WBT >>28976000
      MOVE BBUF(41):="QUEUE PIN      COUNT    DEC";            <<CACHE>>28978000
      MOVE BBUF(69):="STK TOSS FZREQ LKREQ SLLIMI DISCIO";     <<01791>>28980000
      MOVE BBUF(104):="MAP BLK FRZ LOK";                       << MCW >>28982000
      PRINTLINE;                                               << WBT >>28984000
                                                               << WBT >>28986000
      MOVE BBUF(1):="-----   -----------";                     << WBT >>28988000
      MOVE BBUF(24):="-----    -----";                         << WBT >>28990000
      MOVE BBUF(41):="----------   ---------- ---";            <<CACHE>>28992000
      MOVE BBUF(69):="--- ---- ----- ----- ------ ------";     <<01791>>28994000
      MOVE BBUF(104):="--- --- --- ---";                       << MCW >>28996000
      PRINTLINE;                                               << WBT >>28998000
                                                               << WBT >>29000000
                                                               << WBT >>29002000
      SKIPLINES(1);                                            << WBT >>29004000
                                                               << WBT >>29006000
   END;   <<PRINT SLL HEAD>>                                   << WBT >>29008000
                                                               << WBT >>29010000
                                                               << WBT >>29012000
   SUBROUTINE PRINTSLLENTRY;                                   << WBT >>29014000
   BEGIN                                                       << WBT >>29016000
                                                               << WBT >>29018000
      PUTN(SLLPTR, 6);    <<ENTRY INDEX>>                      << WBT >>29020000
                                                               << WBT >>29022000
      PUTSEGID(SLL03, 10); << FORMAT SEG ID >>                 <<01791>>29024000
                                                               << WBT >>29026000
      PUTN(SLL01, 29);  <<NEXT ENTRY INDEX>>                   << WBT >>29028000
                                                               << WBT >>29030000
      PUTN(SLL02, 38);  <<PREV ENTRY INDEX>>                   << WBT >>29032000
                                                               << WBT >>29034000
        PUTNZ(SLL00.(8:8), 47);   <<NEXT MAKE PRESENT DEFERRED <<01791>>29036000
      IF CACHE'SYSTEM THEN                                     <<CACHE>>29038000
         BEGIN                                                 <<CACHE>>29040000
            IF SLL04.(10:1) THEN MOVE BBUF(65):="DEC";         <<CACHE>>29042000
            PUTOCTALP(SLL04.(11:5), 59);  << PRE-FETCH COUNT >><<CACHE>>29044000
            IF SLL04.(02:1) THEN MOVE BBUF(97):="DISCIO"; << DI<<CACHE>>29046000
            IF SLL04.(06:1) THEN MOVE BBUF(90):="SLLIMI"; << IM<<CACHE>>29048000
         END                                                   <<CACHE>>29050000
      ELSE                                                     <<CACHE>>29052000
         BEGIN                                                 <<CACHE>>29054000
            IF SLL04.(10:1) THEN MOVE BBUF(90):="SLLIMI"; << IM<<CACHE>>29056000
            IF SLL04.(11:1) THEN MOVE BBUF(97):="DISCIO"; << DI<<CACHE>>29058000
         END;                                                  <<CACHE>>29060000
      IF SLL04.(1:1) THEN MOVE BBUF(69):="STK"; <<STK>>        << MCW >>29062000
$EDIT                                                          <<CACHE>>29064000
      IF SLL04.(7:1) THEN MOVE BBUF(73):="TOSS";  <<TOSS>>     << MCW >>29066000
      IF SLL04.(8:1) THEN MOVE BBUF(78):="FZREQ"; <<FRZ REQ>>  << MCW >>29068000
      IF SLL04.(9:1) THEN MOVE BBUF(84):="LKREQ"; <<LK REQ>>   << MCW >>29070000
$EDIT                                                          <<CACHE>>29072000
      IF SLL04.(0:1) THEN MOVE BBUF(104):="MAP";               << MCW >>29074000
      IF SLL04.(4:1) THEN MOVE BBUF(108):="BLK";               << MCW >>29076000
      IF SLL04.(5:1) THEN MOVE BBUF(112):="FRZ";               << MCW >>29078000
      IF SLL04.(3:1) THEN MOVE BBUF(116):="LOK";               << MCW >>29080000
$EDIT                                                          <<CACHE>>29082000
                                                               << WBT >>29084000
      PRINTLINE;                                               << WBT >>29086000
                                                               << WBT >>29088000
   END;  <<PRINT SLL ENTRY>>                                   << WBT >>29090000
                                                               << WBT >>29092000
   LOCPCB:=VERIFYP(%3, %1003D);    << GET PCB TABLE INFO >>    << WBT >>29094000
   IF <> THEN                                                  << WBT >>29096000
   BEGIN                                                       << WBT >>29098000
      IF LOCPCB <> 0D THEN WARNING                             << WBT >>29100000
      ELSE IF PCBFLG <> 0 THEN WARNING                         << WBT >>29102000
      ELSE BEGIN NOFORMT'; GO BAILOUT; END;                    << WBT >>29104000
   END;                                                        << WBT >>29106000
   NENTRYS:=CORE(LOCPCB)+1;                                    << WBT >>29108000
   IF LOGICAL(NENTRYS)>256 THEN                                << WBT >>29110000
      BEGIN                                                    << WBT >>29112000
      MOVE DBUFFER(23):="INVALID NUMBER OF PCB ENTRIES ";      << WBT >>29114000
      PRINTLINE;                                               << WBT >>29116000
      GO BAILOUT;                                              << WBT >>29118000
      END;                                                     << WBT >>29120000
   PCBSIZE:=INTEGER(CORE(LOCPCB+1D));                          << WBT >>29122000
   IF PCBSIZE <> 16 THEN                                       << WBT >>29124000
   BEGIN                                                       << WBT >>29126000
      MOVE DBUFFER(23):="INVALID PCB SIZE";                    << WBT >>29128000
      PRINTLINE;                                               << WBT >>29130000
      GO BAILOUT;                                              << WBT >>29132000
   END;                                                        << WBT >>29134000
                                                               << WBT >>29136000
   PRINTSLLTITLE;  << BEGIN ACTUAL WORK OF PRINTING LISTS >>   << WBT >>29138000
                                                               << WBT >>29140000
   INDX:=0;                                                    << WBT >>29142000
                                                               << WBT >>29144000
   WHILE (INDX:=INDX+1)<NENTRYS DO                             << WBT >>29146000
   IF NOT ISFREEPCB(INDX) THEN                                 << WBT >>29148000
   BEGIN                                                       << WBT >>29150000
      SLLPTR:=PCB01;                                           << WBT >>29152000
      COUNT:=SLL04;  IF COUNT > 64 THEN COUNT:=64;             << WBT >>29154000
      PRINTSLLHEAD;                                            << WBT >>29156000
      WHILE COUNT>0 AND SLLPTR<>0 DO                           << WBT >>29158000
      BEGIN                                                    << WBT >>29160000
         COUNT:=COUNT-1;                                       << WBT >>29162000
         SLLPTR:=SLL01;                                        << WBT >>29164000
         IF SLLPTR<>0 THEN PRINTSLLENTRY;                      << WBT >>29166000
      END;                                                     << WBT >>29168000
   END;                                                        << WBT >>29170000
                                                               << WBT >>29172000
BAILOUT:                                                       << WBT >>29174000
                                                               << WBT >>29176000
END;     <<PRINT SLL>>                                         << WBT >>29178000
                                                                        29180000
                                                                        29182000
$PAGE "PRINTVDSL : Print the virtual disk space list"                   29184000
$CONTROL SEGMENT=TABLES                                                 29186000
                                                               << WBT >>29188000
PROCEDURE PRINTVDSL;                                           << WBT >>29190000
COMMENT                                                                 29192000
                                                                        29194000
Purpose:                                                                29196000
   This procedure is called to format the virtual disk space            29198000
   list. In MPE IV this is actually a set of lists of segments          29200000
   where each in a given list is the same size in pages, and the        29202000
   system maintains a table of pointers to these lists, as well         29204000
   as a bit map which identifies which lists are empty.                 29206000
                                                                        29208000
                                                                        29210000
Input parameters:                                                       29212000
   None.                                                                29214000
                                                                        29216000
Output parameters:                                                      29218000
   None.                                                                29220000
                                                                        29222000
Globals Referenced:                                                     29224000
                                                                        29226000
Globals Altered:                                                        29228000
                                                                        29230000
Data Structures:                                                        29232000
                                                                        29234000
Algorithm:                                                              29236000
                                                                        29238000
;                                                                       29240000
BEGIN                                                          << WBT >>29242000
   DOUBLE VDSMTABADDR, BMSTARTADDR, BMENDADDR;                 << WBT >>29244000
   LOGICAL NDX;                                                << WBT >>29246000
   LOGICAL NEEDHEADER, COUNT;                                  << WBT >>29248000
                                                               << WBT >>29250000
   EQUATE  << ENTRY ZERO OFFSETS >>                            << WBT >>29252000
                                                               << WBT >>29254000
   TABLELENGTH      = 0,                                       << WBT >>29256000
   VMSVOLUMECNT     = 1,                                       << WBT >>29258000
   STARTENTRY       = 2,                                       << WBT >>29260000
   VMPAGESIZE       = 3,                                       << WBT >>29262000
   SECTORSPERVMPAGE = 4,                                       << WBT >>29264000
   OFFSETTOBM       = 5,                                       << WBT >>29266000
   TOTALVMPAGES     = 6,                                       << WBT >>29268000
   LEASTPAGES       = 7;                                       << WBT >>29270000
                                                               << WBT >>29272000
   EQUATE   << GENERAL VDS ENTRY OFFSETS >>                    << WBT >>29274000
                                                               << WBT >>29276000
   NEXTINLIST         = 0,                                     << WBT >>29278000
   LDEV               = 1,                                     << WBT >>29280000
   HOSTARTSECTOR      = 2,                                     << WBT >>29282000
   LOSTARTSECTOR      = 3,                                     << WBT >>29284000
   HOTOTALSECTORCOUNT = 4,                                     << WBT >>29286000
   LOTOTALSECTORCOUNT = 5,                                     << WBT >>29288000
   TOTALPAGECOUNT     = 6,                                     << WBT >>29290000
   PAGESAVAILABLE     = 7,                                     << WBT >>29292000
   BMLENGTH           = 8,                                     << WBT >>29294000
   SMALLESTMISS       = 9,                                     << WBT >>29296000
   SMALLESTEVERAVAIL  = 10;                                    << WBT >>29298000
                                                               << WBT >>29300000
   LOGICAL SUBROUTINE VDSMTAB(ENTRYINDEX, OFFSET);             << WBT >>29302000
   VALUE ENTRYINDEX, OFFSET;                                   << WBT >>29304000
   LOGICAL ENTRYINDEX, OFFSET;                                 << WBT >>29306000
   BEGIN                                                       << WBT >>29308000
      VDSMTAB:=CORE(VDSMTABADDR+DOUBLE(ENTRYINDEX+OFFSET));    << WBT >>29310000
   END;                                                        << WBT >>29312000
                                                               << WBT >>29314000
   SUBROUTINE PRINTHEADER;                                     << WBT >>29316000
   BEGIN                                                       << WBT >>29318000
      SKIPLINES(1);                                            << WBT >>29320000
      MOVE BBUF:=" TABLE";                                     << WBT >>29322000
      MOVE BBUF(21):="STARTING";                               << WBT >>29324000
      MOVE BBUF(36):="TOTAL";                                  << WBT >>29326000
      MOVE BBUF(48):="TOTAL";                                  << WBT >>29328000
      MOVE BBUF(57):="PAGES";                                  << WBT >>29330000
      MOVE BBUF(66):="SMALLEST";                               << WBT >>29332000
      MOVE BBUF(79):="LEAST PAGES";                            << WBT >>29334000
      PRINTLINE;                                               << WBT >>29336000
      MOVE BBUF:=" INDEX    LDEV        SECTOR    SECTOR COUNT",2;      29338000
      MOVE    *:="    PAGES    AVAIL   RECENT MISS   EVER AVAIL.";      29340000
      PRINTLINE;                                               << WBT >>29342000
      SKIPLINES(1);                                            << WBT >>29344000
   END;                                                        << WBT >>29346000
                                                               << WBT >>29348000
   SUBROUTINE FORMATENTRY(INDEX);                              << WBT >>29350000
   VALUE INDEX; LOGICAL INDEX;                                 << WBT >>29352000
   BEGIN                                                       << WBT >>29354000
      IF NEEDHEADER THEN PRINTHEADER;                          << WBT >>29356000
      PUTOCTAL(INDEX, 6);       << ENTRY INDEX >>              << WBT >>29358000
      PUTOCTAL(VDSMTAB(INDEX, LDEV), 14); << LOGICAL DEVICE >> << WBT >>29360000
      @PBUF:=@BBUF+17;                                         <<01875>>29362000
      PUTDNUMP(DCONS(VDSMTAB(INDEX, HOSTARTSECTOR),            <<01875>>29364000
                     VDSMTAB(INDEX, LOSTARTSECTOR)));          <<01875>>29366000
      @PBUF:=@BBUF+32;                                         <<01875>>29368000
      PUTDNUMP(DCONS(VDSMTAB(INDEX, HOTOTALSECTORCOUNT),       <<01875>>29370000
                     VDSMTAB(INDEX, LOTOTALSECTORCOUNT)));     <<01875>>29372000
      PUTOCTAL(VDSMTAB(INDEX, TOTALPAGECOUNT), 53);            << WBT >>29374000
      PUTOCTAL(VDSMTAB(INDEX, PAGESAVAILABLE), 62);            << WBT >>29376000
      PUTOCTAL(VDSMTAB(INDEX, SMALLESTMISS  ), 74);            << WBT >>29378000
      PUTOCTAL(VDSMTAB(INDEX, SMALLESTEVERAVAIL), 88);         << WBT >>29380000
      PRINTLINE;    << FINISH ALL BUT BITMAP FOR THIS ENTRY >> << WBT >>29382000
      IF PRINT'VDSM THEN                                       << WBT >>29384000
      BEGIN  << DO THE BITMAP >>                               << WBT >>29386000
         SKIPLINES(1);                                         << WBT >>29388000
         MOVE BBUF(10):="-- BIT MAP --";                       << WBT >>29390000
         PRINTLINE;                                            << WBT >>29392000
         SKIPLINES(1);                                         << WBT >>29394000
         CHARFLAG:=FALSE;                                      << WBT >>29396000
         BMSTARTADDR:=VDSMTABADDR+DOUBLE(INDEX+VDSMTAB(0, OFFSETTOBM)); 29398000
         BMENDADDR:=BMSTARTADDR+DOUBLE(VDSMTAB(INDEX,BMLENGTH)-1);      29400000
         DUMPTABLE(BMSTARTADDR, BMENDADDR, BMSTARTADDR);       << WBT >>29402000
      END;                                                     << WBT >>29404000
   END; << FORMATENTRY >>                                      << WBT >>29406000
                                                               << WBT >>29408000
   << MAIN BODY OF PROCEDURE >>                                << WBT >>29410000
                                                               << WBT >>29412000
   NEWPAGE;  << PRINT TABLE TITLE >>                           << WBT >>29414000
   INDXARAY(2*%47):=PAGENO;                                    <<01833>>29416000
   MOVE BBUF(16):="*****   VIRTUAL DISC SPACE MANAGEMENT TABLES",2;     29418000
   MOVE * :="    *****";                                       << WBT >>29420000
   PRINTLINE;                                                  << WBT >>29422000
   SKIPLINES(2);                                               << WBT >>29424000
                                                               << WBT >>29426000
   VDSMTABADDR := VERIFYP(%47, %1026D); <<FIND VDSMTAB ADDRESS><< WBT >>29428000
   IF <> THEN                                                  << WBT >>29430000
   BEGIN                                                       << WBT >>29432000
      IF VDSMTABADDR<>0D THEN WARNING                          << WBT >>29434000
      ELSE BEGIN NOFORMT'; RETURN; END;                        << WBT >>29436000
   END;                                                        << WBT >>29438000
                                                               << WBT >>29440000
                                                               << WBT >>29442000
   << PRINT ENTRY ZERO INFORMATION >>                          << WBT >>29444000
                                                               << WBT >>29446000
   MOVE BBUF(10):="NUMBER OF VMS VOLUMES:";                    << WBT >>29448000
   PUTOCTAL(VDSMTAB(0, VMSVOLUMECNT), 40);                     << WBT >>29450000
   PRINTLINE; SKIPLINES(1);                                    << WBT >>29452000
   MOVE BBUF(10):="VM PAGE SIZE:";                             << WBT >>29454000
   PUTOCTAL(VDSMTAB(0, VMPAGESIZE), 40);                       << WBT >>29456000
   PRINTLINE; SKIPLINES(1);                                    << WBT >>29458000
   MOVE BBUF(10):="SECTORS PER VM PAGE:";                      << WBT >>29460000
   PUTOCTAL(VDSMTAB(0, SECTORSPERVMPAGE), 40);                 << WBT >>29462000
   PRINTLINE; SKIPLINES(1);                                    << WBT >>29464000
   MOVE BBUF(10):="TOTAL VM PAGES AVAIL:";                     << WBT >>29466000
   PUTOCTAL(VDSMTAB(0, TOTALVMPAGES), 40);                     << WBT >>29468000
   PRINTLINE; SKIPLINES(1);                                    << WBT >>29470000
   MOVE BBUF(10):="LEAST PAGES EVER AVAIL:";                   << WBT >>29472000
   PUTOCTAL(VDSMTAB(0, LEASTPAGES), 40);                       << WBT >>29474000
   PRINTLINE; SKIPLINES(1);                                    << WBT >>29476000
   NDX:=VDSMTAB(0, STARTENTRY);                                << WBT >>29478000
   NEEDHEADER:=TRUE;                                           << WBT >>29480000
   COUNT:=0;                                                   << WBT >>29482000
   DO                                                          << WBT >>29484000
   BEGIN                                                       << WBT >>29486000
      FORMATENTRY(NDX);                                        << WBT >>29488000
      NDX:=VDSMTAB(NDX, NEXTINLIST);                           << WBT >>29490000
      COUNT:=COUNT+1;                                          << WBT >>29492000
   END                                                         << WBT >>29494000
   UNTIL NDX=VDSMTAB(0,STARTENTRY) OR COUNT=VDSMTAB(0,TABLELENGTH);     29496000
                                                               << WBT >>29498000
END; << PRINTVDSL >>                                           << WBT >>29500000
                                                                        29502000
<<             PRINT VDS BIT MAP                                  >>    29504000
<<    THIS PRROCEDURE WILL FORMAT AND PRINT THE VIRTUAL DISK SPACE>>    29506000
<<    BIT MAP.                                                    >>    29508000
<<                                                                >>    29510000
PROCEDURE PRINTVDSM;                                                    29512000
      BEGIN                                                             29514000
         DOUBLE LOCVDSM,VDSMBASE:=%1034D,SCANEND:=%1036D,               29516000
                SCANWALL:=%1037D,PAGESZ:=%1040D,VDSTRT:=%1026D;         29518000
          INTEGER IX1,WORK2,BASE,PSIZE,COUNT,NENTRYS;         <<<01.02>>29520000
          LOGICAL WORK1;                                      <<<01.02>>29522000
         LOGICAL STAT;           <<LOGICAL STATUS FLAG>>       <<00221>>29524000
         INTEGER ACNT;           <<NUMBER OF UNITS ACROSS PAGE <<00221>>29526000
         LOGICAL FRCNT:=0;       <<FREE PAGES COUNT>>          <<00221>>29528000
         LOGICAL OCCNT:=0;       <<OCCUPIED PAGES COUNT>>      <<00221>>29530000
         LOGICAL LARGST:=0;      <<LARGEST FREE BLOCK SIZE>>   <<00221>>29532000
         LOGICAL BLCNT:=0;       <<NUMBER OF FREE BLOCKS>>     <<00221>>29534000
         LOGICAL PCOUNT;         <<CURRENT BLOCK PAGE COUNT>>  <<00221>>29536000
         NEWPAGE;                                                       29538000
         INDXARAY(%47*2):=PAGENO;                                       29540000
         MOVE DBUFFER(23):=                                             29542000
         "******    VIRTUAL DISK SPACE BIT MAP    ******";              29544000
         PRINTLINE;                                                     29546000
         SKIPLINES(3);                                                  29548000
         LOCVDSM:=VERIFYP(%47,%1034D);                         <<01.02>>29550000
         IF <> THEN                                            <<01.02>>29552000
         IF LOCVDSM <> 0D THEN WARNING ELSE                    <<01.02>>29554000
         BEGIN                                                 <<01.02>>29556000
            NOFORMT';                                          <<00221>>29558000
            GO BAILOUT;                                        <<01.02>>29560000
         END;                                                  <<01.02>>29562000
         MOVE BBUF:="PAGE SIZE =";                                      29564000
         PSIZE:=CORE(PAGESZ);                                           29566000
         @PBUF:=@BBUF+13;                                               29568000
         ASCII(PSIZE,10,PBUF);     <<PAGE SIZE>>                        29570000
         PRINTLINE;                                                     29572000
         MOVE BBUF:="VDS START =";                                      29574000
         TOS:=CORE(VDSTRT);                                             29576000
         TOS:=CORE(VDSTRT+1D);                                          29578000
         VDSTRT:=TOS;                                                   29580000
         @PBUF:=@BBUF+13;                                               29582000
         PUTDNUMP(VDSTRT);     <<VDS START>>                            29584000
         PRINTLINE;                                                     29586000
         MOVE BBUF:="SCANEND   =";                                      29588000
         NENTRYS:=CORE(SCANEND);                                        29590000
         @PBUF:=@BBUF+13;                                               29592000
         PUTNUM(NENTRYS);     <<SCANEND>>                               29594000
         PRINTLINE;                                                     29596000
         MOVE BBUF:="SCANWALL  =";                                      29598000
         WORK1:=CORE(SCANWALL);                                         29600000
         @PBUF:=@BBUF+13;                                               29602000
         PUTNUM(WORK1);     <<SCANWALL>>                                29604000
         PRINTLINE;                                                     29606000
         SKIPLINES(2);                                                  29608000
         MOVE BBUF:="DISC   NUMBER   BLOCK";                   <<00221>>29610000
         ACNT:=0;                                              <<00221>>29612000
         DO                                                    <<00221>>29614000
          MOVE BBUF(ACNT*32):=BBUF,(30)                        <<00221>>29616000
          UNTIL (ACNT:=ACNT+1) = 4;   <<HEADER ACROSS PAGE>>   <<00221>>29618000
         PRINTLINE;               <<PRINT HEADER>>             <<00221>>29620000
         MOVE BBUF:="ADDR   OF PGS   STATUS";                  <<00221>>29622000
         ACNT:=0;                                              <<00221>>29624000
         DO                                                    <<00221>>29626000
          MOVE BBUF(ACNT*32):=BBUF,(30)                        <<00221>>29628000
          UNTIL (ACNT:=ACNT+1) = 4;   <<HEADER ACROSS PAGE>>   <<00221>>29630000
         PRINTLINE;                                            <<00221>>29632000
         SKIPLINES(1);                                         <<00221>>29634000
                                                               <<00221>>29636000
         COUNT:=0;           <<NUMBER OF PAGES PROCESSED>>     <<00221>>29638000
         PCOUNT:=0;          <<NUMBER OF PAGES IN CURNT BLOCK> <<00221>>29640000
         WORK1:=CORE(LOCVDSM);  <<INITIALIZE FIRST WORD>>      <<00221>>29642000
         STAT:=WORK1.(0:1);          <<STATE OF START>>        <<00221>>29644000
         IX1:=0;             <<NUMBER OF BITS EXAMINED>>       <<00221>>29646000
         @PBUF:=@BBUF;                                         <<00221>>29648000
         PUTDNUMP(VDSTRT);   <<OUTPUT DISC ADDRESS>>           <<00221>>29650000
         @PBUF:=@BBUF+7;     <<POINT TO PAGE COUNT>>           <<00221>>29652000
         ACNT:=0;            <<ENTRIES WIDE COUNTER>>          <<00221>>29654000
                                                               <<00221>>29656000
         DO                                                    <<00221>>29658000
          BEGIN              <<SCAN BIT MAP>>                  <<00221>>29660000
           IF (STAT XOR WORK1.(0:1)) LOR                       <<00221>>29662000
              (COUNT > NENTRYS) THEN                           <<00221>>29664000
            BEGIN            <<BIT CHANGED, OUTPUT COUNTS>>    <<00221>>29666000
             PUTNUMP(PCOUNT);<<NUMBER OF PAGES>>               <<00221>>29668000
              IF STAT THEN MOVE PBUF(2):="FREE"                <<00221>>29670000
                      ELSE MOVE PBUF(2):="OCCUPIED";           <<00221>>29672000
             @PBUF:=@PBUF+15;<<ADVANCE TO NEXT DISC ADDR>>     <<00221>>29674000
             IF (ACNT:=ACNT+1) = 4 THEN                        <<00221>>29676000
              BEGIN          <<LINE IS FULL, PRINT>>           <<00221>>29678000
               PRINTLINE;                                      <<00221>>29680000
               ACNT:=0;      <<RESET COUNTER>>                 <<00221>>29682000
              END;           <<LINE IS FULL, PRINT>>           <<00221>>29684000
             IF STAT THEN                                      <<00221>>29686000
              BEGIN            <<BLOCK WAS FREE>>              <<00221>>29688000
               BLCNT:=BLCNT+1; <<ONE MORE FREE BLOCK>>         <<00221>>29690000
               IF PCOUNT>LARGST THEN LARGST:=PCOUNT;           <<00221>>29692000
               FRCNT:=FRCNT+PCOUNT;  <<COUNT FREE>>            <<00221>>29694000
               STAT:=FALSE;    <<NEW CURRENT STATE>>           <<00221>>29696000
              END              <<BLOCK WAS FREE>>              <<00221>>29698000
             ELSE                                              <<00221>>29700000
              BEGIN            <<BLOCK WAS OCCUPIED>>          <<00221>>29702000
               OCCNT:=OCCNT+PCOUNT;  <<COUNT OCCUPIED>>        <<00221>>29704000
               STAT:=TRUE;           <<NEW VALUE>>             <<00221>>29706000
              END;             <<BLOCK WAS OCCUPIED>>          <<00221>>29708000
             PCOUNT:=0;      <<RESET COUNTER OF PAGES>>        <<00221>>29710000
             @PBUF:=@BBUF+(32*ACNT);    <<COMPUTE ADDRESS>>    <<00221>>29712000
             PUTDNUMP(VDSTRT);  <<PRINT DISC ADDRESS>>         <<00221>>29714000
             @PBUF:=@BBUF+(32*ACNT)+7;  <<NEXT FIELD>>         <<00221>>29716000
            END;             <<BIT CHANGED>>                   <<00221>>29718000
                                                               <<00221>>29720000
            IF (IX1:=IX1+1) = 16 THEN                          <<00221>>29722000
             BEGIN           <<WORD EXHAUSTED>>                <<00221>>29724000
              IX1:=0;        <<RESET COUNTER>>                 <<00221>>29726000
              LOCVDSM:=LOCVDSM+1D;  <<NEXT WORD FROM MEM>>     <<00221>>29728000
              WORK1:=CORE(LOCVDSM); <<LOAD BIT MAP>>           <<00221>>29730000
             END             <<WORD EXHAUSTED>>                <<00221>>29732000
            ELSE                                               <<00221>>29734000
             WORK1:=WORK1&LSL(1);  <<SHIFT TO HI BIT>>         <<00221>>29736000
                                                               <<00221>>29738000
            VDSTRT:=VDSTRT+DOUBLE(PSIZE/128);  <<DISC ADDR>>   <<00221>>29740000
            COUNT:=COUNT+1;      <<AOTHER BIT EXAMINED>>       <<00221>>29742000
            PCOUNT:=PCOUNT+1;    <<COUNT THE PAGE>>            <<00221>>29744000
           END  UNTIL COUNT > NENTRYS+1;  <<ALL DONE>>         <<00221>>29746000
                                                               <<00221>>29748000
           <<SUMARIZE MAX COUNTS>>                             <<00221>>29750000
           IF ACNT > 0 THEN                                    <<00221>>29752000
            BEGIN             <<DATA IN LINE NOT YET PRINTED>> <<00221>>29754000
             MOVE BBUF(ACNT*32):="        ";  <<ZAP ADDRESS>>  <<00221>>29756000
             PRINTLINE;                                        <<00221>>29758000
            END;                                               <<00221>>29760000
                                                               <<00221>>29762000
           SKIPLINES(2);                                       <<00221>>29764000
           MOVE BBUF:="NUMBER OF OCCUPIED PAGES =";            <<00221>>29766000
           @PBUF:=@BBUF+30;                                    <<00221>>29768000
           PUTNUMP(OCCNT);                                     <<00221>>29770000
           PRINTLINE;                                          <<00221>>29772000
           MOVE BBUF:="NUMBER OF FREE PAGES     =";            <<00221>>29774000
           @PBUF:=@BBUF+30;                                    <<00221>>29776000
           PUTNUMP(FRCNT);                                     <<00221>>29778000
           PRINTLINE;                                          <<00221>>29780000
           MOVE BBUF:="NUMBER OF FREE BLOCKS    =";            <<00221>>29782000
           @PBUF:=@BBUF+30;                                    <<00221>>29784000
           PUTNUMP(BLCNT);                                     <<00221>>29786000
           PRINTLINE;                                          <<00221>>29788000
           MOVE BBUF:="LARGEST FREE BLOCK SIZE  =";            <<00221>>29790000
           @PBUF:=@BBUF+30;                                    <<00221>>29792000
           PUTNUMP(LARGST);                                    <<00221>>29794000
           PRINTLINE;                                          <<00221>>29796000
BAILOUT:                                                                29798000
      END;                                                              29800000
                                                                        29802000
$PAGE "GET'DST'ENTRY(dst'number,dst'entry): return dst'entry"           29804000
$CONTROL SEGMENT=TABLES                                                 29806000
COMMENT                                                                 29808000
                                                                        29810000
Purpose:                                                                29812000
<<                                                       >>    <<03556>>29814000
<< This procedure, given a DST number will return the    >>    <<03556>>29816000
<< entry from the data segment table in array dst'entry  >>    <<03556>>29818000
<<                                                       >>    <<03556>>29820000
     Called only by print'dfs'data'seg'list.                            29822000
                                                                        29824000
Input parameters:                                                       29826000
                                                                        29828000
Output parameters:                                                      29830000
                                                                        29832000
Globals Referenced:                                                     29834000
                                                                        29836000
Globals Altered:                                                        29838000
                                                                        29840000
Data Structures:                                                        29842000
                                                                        29844000
Algorithm:                                                              29846000
                                                                        29848000
;                                                                       29850000
PROCEDURE Get'Dst'Entry (dst'number, dst'entry);               <<03556>>29852000
   VALUE dst'number;                                           <<03556>>29854000
   INTEGER dst'number;                                         <<03556>>29856000
   ARRAY dst'entry;                                            <<03556>>29858000
                                                               <<03556>>29860000
                                                               <<03556>>29862000
BEGIN                                                          <<03556>>29864000
                                                               <<03556>>29866000
   INTEGER index;                                              <<03556>>29868000
                                                               <<03556>>29870000
   << - - - - - - - - - - >>                                   <<03556>>29872000
                                                               <<03556>>29874000
   FOR index := 0 UNTIL 3 DO                                   <<03556>>29876000
      dst'entry (index) := Core (Dstaddr (2) +                 <<03556>>29878000
                           DOUBLE ((dst'number * 4) + index)); <<03556>>29880000
                                                               <<03556>>29882000
END;   << Get'Dst'Entry >>                                     <<03556>>29884000
                                                                        29886000
$PAGE "PRINTICS : Format the interrupt control stack"                   29888000
$CONTROL SEGMENT=TABLES                                        <<03080>>29890000
PROCEDURE PRINTICS;                                            <<03080>>29892000
                                                               <<03080>>29894000
BEGIN                                                          <<03080>>29896000
COMMENT                                                                 29898000
                                                                        29900000
Purpose:                                                                29902000
          This procedure was designed to format the Q minus             29904000
          area and stack markers of the interrupt control               29906000
          stack.  The procedure uses the DB and DL registers            29908000
          as set previously in the program to determine the             29910000
          status of the ICS.  The headings for the different            29912000
          areas of the q minus area are first printed and then          29914000
          the corresponding addresses of the information which          29916000
          they describe are passed to the subroutine setline            29918000
          to be placed in the buffer to be printed.  Headings           29920000
          are then printed and subroutine FORMAT'ICS'STACKS is          29922000
          called and here the registers determine if multiple           29924000
          stack markers are present to be printed or if only            29926000
          the dispatch stack marker is present and to be print-         29928000
          ed.  The loop in this subroutine will parce through           29930000
          the stack and setline will read the correct addresses         29932000
          to be printed.                                                29934000
                                                                        29936000
Input parameters:                                                       29938000
                                                                        29940000
Output parameters:                                                      29942000
                                                                        29944000
Globals Referenced:                                                     29946000
                                                                        29948000
Globals Altered:                                                        29950000
                                                                        29952000
Data Structures:                                                        29954000
                                                                        29956000
Algorithm:                                                              29958000
                                                                        29960000
;                                                                       29962000
                                                               <<03080>>29964000
DOUBLE CURRADDR,                                               <<03080>>29966000
       COMP'ADDR,                                              <<03080>>29968000
       ICS'QI,                                                 <<03080>>29970000
       QADDR,                                                  <<03080>>29972000
       DWORK;                                                  <<03080>>29974000
LOGICAL WORK,                                                  <<03080>>29976000
       LAST'SM;                                                <<03080>>29978000
                                                               <<03080>>29980000
SUBROUTINE SETLINE;                                            <<03080>>29982000
  BEGIN                                                        <<03080>>29984000
  WHILE CURRADDR <= COMP'ADDR DO                               <<03080>>29986000
    BEGIN                                                      <<03080>>29988000
    WORK:=CORE(CURRADDR);                                      <<03080>>29990000
    PUTNUM(WORK);                                              <<03080>>29992000
    @PBUF:=@PBUF + 3;                                          <<03080>>29994000
    CURRADDR:=CURRADDR + 1D;                                   <<03080>>29996000
    END;                                                       <<03080>>29998000
  END;                                                         <<03080>>30000000
                                                               <<03080>>30002000
SUBROUTINE FORMAT'ICS'STACKS;                                  <<03080>>30004000
  BEGIN                                                        <<03080>>30006000
  IF QREG > LOGICAL(ICS'QI - 63D) AND QREG < CORE(%6D) THEN    <<03080>>30008000
    QADDR:=DOUBLE(QREG)                                        <<03080>>30010000
  ELSE                                                         <<03080>>30012000
    QADDR:=ICS'QI;                                             <<03080>>30014000
  LAST'SM:=FALSE;                                              <<03080>>30016000
  WHILE NOT LAST'SM DO    << IF PRESENT STACK MARKER IS >>     <<03080>>30018000
    BEGIN                 << NOT THE DISPATCH STACK MARKER >>  <<03080>>30020000
    @PBUF:=@BBUF;                                              <<03080>>30022000
    PUTNUM(LOGICAL(QADDR));                                    <<03080>>30024000
    @PBUF:=@PBUF+9;                                            <<03080>>30026000
    CURRADDR:=QADDR-3D;                                        <<03080>>30028000
    COMP'ADDR:=QADDR;                                          <<03080>>30030000
    SETLINE;                                                   <<03080>>30032000
    IF CORE(QADDR) <> 0 THEN  << IF 0 IT IS THE DISPATCH SM >> <<03080>>30034000
      QADDR:=QADDR - DOUBLE(CORE(QADDR))                       <<03080>>30036000
    ELSE                                                       <<03080>>30038000
      BEGIN                                                    <<03080>>30040000
      LAST'SM:=TRUE;                                           <<03080>>30042000
      MOVE BBUF(60):="* DISPATCH STACK MARKER *";              <<03080>>30044000
      END;                                                     <<03080>>30046000
    PRINTLINE;                                                 <<03080>>30048000
    END;                                                       <<03080>>30050000
  END;                                                         <<03080>>30052000
                                                               <<03080>>30054000
NEWPAGE;                                                       <<03080>>30056000
INDXARAY(7*2):=PAGENO;                                         <<03080>>30058000
MOVE BBUF(50):="***** INTERUPT CONTROL STACK *****";           <<03080>>30060000
PRINTLINE;                                                     <<03080>>30062000
SKIPLINES(3);                                                  <<03080>>30064000
IF CORE(%5D) <> (CORE(%1007D) + %1000) THEN                    <<03080>>30066000
  BEGIN                                                        <<03080>>30068000
  MOVE BBUF:="***** WARNING!  SYSTEM POINTERS TO ICS DO NOT",2;<<03080>>30070000
  MOVE *:=" MATCH! FORMATTING OF ICS ABORTED! *****";          <<03080>>30072000
  PRINTLINE;                                                   <<03080>>30074000
  NEWPAGE;                                                     <<03080>>30076000
  RETURN;                                                      <<03080>>30078000
  END                                                          <<03080>>30080000
ELSE                                                           <<03080>>30082000
  ICS'QI:=DOUBLE(CORE(%5D));                                   <<03080>>30084000
MOVE BBUF(53):="-- SCHEDULING INFORMATION --";                 <<03080>>30086000
PRINTLINE;                                                     <<03080>>30088000
SKIPLINES(1);                                                  <<03080>>30090000
MOVE BBUF:="E BCKGRD  D BCKGRD";                               <<03080>>30092000
MOVE BBUF(41):="CURR C";                                       <<03080>>30094000
PRINTLINE;                                                     <<03080>>30096000
MOVE BBUF:="QUANTUM   QUANTUM   CWNTNUM   CWTDENOM    AST";    <<03080>>30098000
MOVE BBUF(52):="MAX C     MIN C    E BASE    D BASE    C BASE";<<03080>>30100000
MOVE BBUF(100):="E LIMIT   D LIMIT    C LIMIT";                <<03080>>30102000
PRINTLINE;                                                     <<03080>>30104000
MOVE BBUF:="-------   -------   -------   --------  ------";   <<03080>>30106000
MOVE BBUF(52):="-----     -----    ------    ------    ------";<<03080>>30108000
MOVE BBUF(100):="-------   -------    -------";                <<03080>>30110000
PRINTLINE;                                                     <<03080>>30112000
@PBUF:=@BBUF+1;                                                <<03080>>30114000
CURRADDR:=ICS'QI - 44D;                                        <<03080>>30116000
COMP'ADDR:=ICS'QI - 32D;                                       <<03080>>30118000
SETLINE;                                                       <<03080>>30120000
PRINTLINE;                                                     <<03080>>30122000
SKIPLINES(2);                                                  <<03080>>30124000
MOVE BBUF(55):="-- CURRENT STACK INFO --";                     <<03080>>30126000
PRINTLINE;                                                     <<03080>>30128000
SKIPLINES(1);                                                  <<03080>>30130000
MOVE BBUF:="STACK                         TRACE";              <<03080>>30132000
MOVE BBUF(70):="          STACK     STACK     STACK";          <<03080>>30134000
MOVE BBUF(120):="STACK";                                       <<03080>>30136000
PRINTLINE;                                                     <<03080>>30138000
MOVE BBUF:=" DST      PSTA      PADDR      FLAG    PFAILPCB";  <<03080>>30140000
MOVE BBUF(51):="JCUT        XP      PCBX       Z         DL";  <<03080>>30142000
MOVE BBUF(102):="S       S BANK      DB";                      <<03080>>30144000
PRINTLINE;                                                     <<03080>>30146000
MOVE BBUF:="------    ------    ------    ------   --------";  <<03080>>30148000
MOVE BBUF(51):="----     ------    ------    ------    -----"; <<03080>>30150000
MOVE BBUF(100):="------    ------    ------";                  <<03080>>30152000
PRINTLINE;                                                     <<03080>>30154000
@PBUF:=@BBUF;                                                  <<03080>>30156000
CURRADDR:=ICS'QI - 16D;                                        <<03080>>30158000
COMP'ADDR:=ICS'QI - 4D;                                        <<03080>>30160000
SETLINE;                                                       <<03080>>30162000
PRINTLINE;                                                     <<03080>>30164000
SKIPLINES(2);                                                  <<03080>>30166000
MOVE BBUF(50):="-- MISCELLANEOUS  INFORMATION --";             <<03080>>30168000
PRINTLINE;                                                     <<03080>>30170000
SKIPLINES(1);                                                  <<03080>>30172000
MOVE BBUF:=" CAND      LAST";                                  <<03080>>30174000
MOVE BBUF(20):="LIST       MISC    SYS MEM    XDS UP       DL";<<03080>>30176000
MOVE BBUF(71):="PSDB      PAUSE";                              <<03080>>30178000
PRINTLINE;                                                     <<03080>>30180000
MOVE BBUF(2):="PIN     WEIGHT    STATE    BNDS FLG   BOUND";   <<03080>>30182000
MOVE BBUF(50):="BOUND     INITIAL   COUNTER    TIME";          <<03080>>30184000
PRINTLINE;                                                     <<03080>>30186000
MOVE BBUF(1):="----     ------    -----    --------  -------"; <<03080>>30188000
MOVE BBUF(50):="------    -------   -------    -----";         <<03080>>30190000
PRINTLINE;                                                     <<03080>>30192000
@PBUF:=@BBUF;                                                  <<03080>>30194000
CURRADDR:=ICS'QI - 49D;                                        <<03080>>30196000
COMP'ADDR:=ICS'QI - 48D;                                       <<03080>>30198000
SETLINE;                                                       <<03080>>30200000
WORK:=CORE(ICS'QI - 45D);                                      <<03080>>30202000
PUTNUM(WORK);                                                  <<03080>>30204000
@PBUF:=@PBUF + 3;                                              <<03080>>30206000
CURRADDR:=ICS'QI - 31D;                                        <<03080>>30208000
COMP'ADDR:=ICS'QI - 28D;                                       <<03080>>30210000
SETLINE;                                                       <<03080>>30212000
WORK:=CORE(ICS'QI - 18D);                                      <<03080>>30214000
PUTNUM(WORK);                                                  <<03080>>30216000
@PBUF:=@PBUF + 3;                                              <<03080>>30218000
DWORK:=DCORE(ICS'QI - 47D);                                    <<03080>>30220000
PUTDNUM(DWORK);                                                <<03080>>30222000
PRINTLINE;                                                     <<03080>>30224000
SKIPLINES(3);                                                  <<03080>>30226000
MOVE BBUF(57):="-- STACK MARKERS --";                          <<03080>>30228000
PRINTLINE;                                                     <<03080>>30230000
SKIPLINES(1);                                                  <<03080>>30232000
MOVE BBUF:="ADDRESS            X      DELTA P   STATUS";       <<03080>>30234000
MOVE BBUF(46):="DELTA Q";                                      <<03080>>30236000
PRINTLINE;                                                     <<03080>>30238000
MOVE BBUF:="-------         ------    -------   ------";       <<03080>>30240000
MOVE BBUF(46):="-------";                                      <<03080>>30242000
PRINTLINE;                                                     <<03080>>30244000
FORMAT'ICS'STACKS;                                             <<03080>>30246000
END;                                                           <<03080>>30248000
                                                                        30250000
$PAGE "PRINTINDEX : Print an index of the dump "                        30252000
$CONTROL SEGMENT=MEMORY                                                 30254000
PROCEDURE PRINTINDEX;                                                   30256000
COMMENT                                                                 30258000
                                                                        30260000
Purpose:                                                                30262000
      This procedure will format and print an index by page             30264000
      number of various tablles in the dump                             30266000
                                                                        30268000
Input parameters:                                                       30270000
                                                                        30272000
Output parameters:                                                      30274000
                                                                        30276000
Globals Referenced:                                                     30278000
                                                                        30280000
Globals Altered:                                                        30282000
                                                                        30284000
Data Structures:                                                        30286000
                                                                        30288000
Algorithm:                                                              30290000
                                                                        30292000
;                                                                       30294000
   BEGIN                                                                30296000
      INTEGER INDX;                                                     30298000
      BNKFLG:=FALSE;  << RESET TO SKIP BANK# >>                <<00221>>30300000
      NEWPAGE;                                                          30302000
      MOVE DBUFFER(23):="******    DUMP INDEX    ******";               30304000
      PRINTLINE;                                                        30306000
      SKIPLINES(1);                                            <<01.3A>>30308000
      MOVE BBUF:="NAME";                                                30310000
      MOVE BBUF(51):="PAGE # FORMATTED          PAGE # OCTAL DUMP";     30312000
      PRINTLINE;                                                        30314000
      SKIPLINES(1);                                                     30316000
      FOR INDX := 1 UNTIL LSTSYSDST + 2 DO                     <<03556>>30318000
      BEGIN                                                             30320000
         @PBUF:=@BBUF;                                                  30322000
         CASE INDX OF                                          << WBT >>30324000
      BEGIN                                                             30326000
         BEGIN     <<0>>                                                30328000
         END;                                                           30330000
         BEGIN     <<1>>                                                30332000
            MOVE PBUF:=" CODE SEGMENT TABLE ";                          30334000
         END;                                                           30336000
         BEGIN     <<2>>                                                30338000
            MOVE PBUF:=" DATA SEGMENT TABLE ";                          30340000
         END;                                                           30342000
         BEGIN     <<3>>                                                30344000
            MOVE PBUF:=" PROCESS CONTROL BLOCK ";                       30346000
         END;                                                           30348000
         BEGIN     <<4>>                                                30350000
            MOVE PBUF:=" CST EXTENSION ";                               30352000
         END;                                                           30354000
         BEGIN     <<5>>                                                30356000
            MOVE PBUF:=" SYSTEM GLOBAL AREA ";                          30358000
         END;                                                           30360000
         BEGIN     <<6>>                                                30362000
            MOVE PBUF:=" FIXED LOW CORE ";                              30364000
         END;                                                           30366000
         BEGIN     <<7>>                                                30368000
            MOVE PBUF:=" INTERRUPT CONTROL STACK ";                     30370000
         END;                                                           30372000
         BEGIN     <<10>>                                               30374000
            MOVE PBUF:=" SYSTEM BUFFERS ";                              30376000
         END;                                                           30378000
         BEGIN     <<11>>                                               30380000
            MOVE PBUF:=" UCOP REQUEST QUEUE ";                          30382000
         END;                                                           30384000
         BEGIN     <<12>>                                               30386000
            MOVE PBUF:=" PROCESS-PROCESS COMMUNICATION TABLE ";         30388000
         END;                                                           30390000
         BEGIN     <<13>>                                               30392000
            MOVE PBUF:=" I/O QUEUE ";                                   30394000
         END;                                                           30396000
         BEGIN     <<14>>                                               30398000
            MOVE PBUF:=" TERMINAL BUFFERS ";                            30400000
         END;                                                           30402000
         BEGIN     <<15>>                                               30404000
            MOVE PBUF:=" LOGICAL-PHYSICAL DEVICE TABLE ";               30406000
         END;                                                           30408000
         BEGIN     <<16>>                                               30410000
            MOVE PBUF:=" LOGICAL DEVICE AND CLASS TABLE ";              30412000
         END;                                                           30414000
         BEGIN     <<17>>                                               30416000
            MOVE PBUF:=" DRIVER LINKAGE TABLE ";                        30418000
         END;                                                           30420000
         BEGIN     <<20>>                                               30422000
            MOVE PBUF:=" I/O RESOURCE TABLES ";                <<00221>>30424000
         END;                                                           30426000
         BEGIN     <<21>>                                               30428000
            MOVE PBUF := " SECONDARY MSG TABLE ";              <<03556>>30430000
         END;                                                           30432000
         BEGIN     <<22>>                                               30434000
            MOVE PBUF:=" LOADER SEGMENT TABLE ";                        30436000
         END;                                                           30438000
         BEGIN     <<23>>                                               30440000
            MOVE PBUF:=" TIMER REQUEST LIST ";                          30442000
         END;                                                           30444000
         BEGIN     <<24>>                                               30446000
            MOVE PBUF:=" DIRECTORY ";                                   30448000
         END;                                                           30450000
         BEGIN     <<25>>                                               30452000
            MOVE PBUF:=" DIRECTORY SPACE ";                             30454000
         END;                                                           30456000
         BEGIN     <<26>>                                               30458000
            MOVE PBUF:=" RIN TABLE ";                                   30460000
         END;                                                           30462000
         BEGIN     <<27>>                                               30464000
            MOVE PBUF:=" SWAP TABLE ";                         << WBT >>30466000
         END;                                                           30468000
         BEGIN     <<30>>                                               30470000
            MOVE PBUF:=" JOB PROCESS COUNT ";                           30472000
         END;                                                           30474000
         BEGIN     <<31>>                                               30476000
            MOVE PBUF:=" JOB MASTER TABLE ";                            30478000
         END;                                                           30480000
         BEGIN     <<32>>                                               30482000
            MOVE PBUF:=" TAPE LABEL TABLE ";                   <<01.3A>>30484000
         END;                                                           30486000
         BEGIN     <<33>>                                               30488000
            MOVE PBUF:=" LOG TABLE ";                          << WBT >>30490000
         END;                                                           30492000
         BEGIN     <<34>>                                               30494000
            MOVE PBUF:=" REPLY INFORMATION TABLE ";                     30496000
         END;                                                           30498000
         BEGIN     <<35>>                                               30500000
            MOVE PBUF:=" VOLUME TABLE ";                                30502000
         END;                                                           30504000
         BEGIN     <<36>>                                               30506000
            MOVE PBUF:=" BREAKPOINT TABLE ";                            30508000
         END;                                                           30510000
         BEGIN     <<37>>                                               30512000
            MOVE PBUF:=" LOG BUFFER 1 ";                                30514000
         END;                                                           30516000
         BEGIN     <<40>>                                               30518000
            MOVE PBUF:=" LOG BUFFER 2 ";                                30520000
         END;                                                           30522000
         BEGIN     <<41>>                                               30524000
            MOVE PBUF:=" LOG ID TABLE ";                       << WBT >>30526000
         END;                                                           30528000
         BEGIN     <<42>>                                               30530000
            GO AROUND;                                         << WBT >>30532000
         END;                                                           30534000
         BEGIN     <<43>>                                               30536000
            MOVE PBUF:=" CST BLOCK ";                                   30538000
         END;                                                           30540000
         BEGIN     <<44>>                                               30542000
            MOVE PBUF:=" JOB CUTOFF TABLE ";                            30544000
         END;                                                           30546000
         BEGIN     <<45>>                                               30548000
            MOVE PBUF:=" SYSTEM JIT ";                                  30550000
         END;                                                           30552000
         BEGIN     <<46>>                                               30554000
            MOVE PBUF:=" SPECIAL REQUEST TABLE ";              <<01791>>30556000
         END;                                                           30558000
         BEGIN     <<47>>                                               30560000
            MOVE PBUF:=" VIRTUAL DISK SPACE TABLE ";           << WBT >>30562000
         END;                                                           30564000
         BEGIN     <<50>>                                               30566000
            GO AROUND;                                         <<01791>>30568000
         END;                                                           30570000
         BEGIN     <<51>>                                               30572000
            MOVE PBUF:=" ARSBM TABLE ";                        <<01791>>30574000
         END;                                                           30576000
         BEGIN     <<52>>                                               30578000
            MOVE PBUF:=" ILT ";                                <<02012>>30580000
         END;                                                           30582000
         BEGIN     <<53>>                                               30584000
            MOVE PBUF:=" SIR TABLE ";                                   30586000
         END;                                                           30588000
         BEGIN     <<54>>                                      <<00221>>30590000
            MOVE PBUF:=" FILE MULTI-ACCESS VECTOR ";           <<00221>>30592000
         END;                                                  <<00221>>30594000
         BEGIN     <<55>>                                      <<00221>>30596000
            MOVE PBUF:=" INPUT DEVICE DIRECTORY ";             <<00221>>30598000
         END;                                                  <<00221>>30600000
         BEGIN     <<56>>                                      <<00221>>30602000
            MOVE PBUF:=" OUTPUT DEVICE DIRECTORY ";            <<00221>>30604000
         END;                                                  <<00221>>30606000
         BEGIN     <<57>>                                      <<00221>>30608000
            MOVE PBUF:=" WELCOME MESSAGE #1 ";                 <<00221>>30610000
         END;                                                  <<00221>>30612000
         BEGIN     <<60>>                                      <<00221>>30614000
            MOVE PBUF:=" WELCOME MESSAGE #2 ";                 <<00221>>30616000
         END;                                                  <<00221>>30618000
         BEGIN     <<61>>                                      <<00221>>30620000
            MOVE PBUF:=" CS SYSTEM SEGMENT ";                  <<00221>>30622000
         END;                                                  <<00221>>30624000
         BEGIN     <<62>>                                      <<00221>>30626000
            MOVE PBUF:=" JOB-PROCESS CROSS REFERENCE ";        <<00221>>30628000
         END;                                                  <<00221>>30630000
         BEGIN     <<63>>                                      <<00221>>30632000
            MOVE PBUF:=" SYSTEM JDT ";                         <<00221>>30634000
         END;                                                  <<00221>>30636000
         BEGIN     <<64>>                                      <<00221>>30638000
            MOVE PBUF:=" COMMAND INTERPRETER LOG-ON DST ";     <<00221>>30640000
         END;                                                  <<00221>>30642000
         BEGIN     <<65>>                                      <<00221>>30644000
            MOVE PBUF:=" MOUNTED VOLUME TABLE ";               <<00221>>30646000
         END;                                                  <<00221>>30648000
         BEGIN     <<66>>                                      <<00221>>30650000
            MOVE PBUF:=" PRI. VOL. USER TABLE ";               << WBT >>30652000
         END;                                                  <<00221>>30654000
         BEGIN                        <<67>>                   <<01791>>30656000
            MOVE PBUF:=" AVAILABLE REGION LIST ";              <<01791>>30658000
         END;                                                  <<01791>>30660000
         BEGIN      <<70>>                                     << WBT >>30662000
            MOVE PBUF:=" DISC REQUEST TABLE ";                 << WBT >>30664000
         END;                                                  << WBT >>30666000
         BEGIN      <<71>>                                     << WBT >>30668000
            MOVE PBUF:=" MSG HBR TABLE ";                      <<01791>>30670000
         END;                                                  << WBT >>30672000
         BEGIN      <<72>>                                     << WBT >>30674000
            MOVE PBUF:=" PRIMARY MSG TABLE ";                  <<01791>>30676000
         END;                                                  << WBT >>30678000
         BEGIN      <<73>>                                     << WBT >>30680000
            MOVE PBUF:=" MEASUREMENT INFO TABLE ";             << WBT >>30682000
         END;                                                  << WBT >>30684000
         BEGIN     <<LSTSYSDST+1>>                             <<00221>>30686000
            SKIPLINES(1);                                      <<00221>>30688000
            MOVE PBUF:=" CURRENT PROCESS STACK";               <<00221>>30690000
         END;                                                  <<00221>>30692000
         BEGIN   <<LSTSYSDST + 2>>                             <<03556>>30694000
            MOVE PBUF := " DISC FREE SPACE INFO";              <<03556>>30696000
         END;    <<LSTSYSDST + 2>>                             <<03556>>30698000
     END;                                                               30700000
     @PBUF:=@BBUF+59;                                                   30702000
     IF INDXARAY(INDX*2) >0 THEN                                        30704000
     ASCII(INDXARAY(INDX*2),10,PBUF);                                   30706000
     @PBUF:=@BBUF+85;                                                   30708000
     IF INDXARAY(INDX*2+1) >0 THEN                                      30710000
     ASCII(INDXARAY(INDX*2+1),10,PBUF);                                 30712000
     PRINTLINE;                                                         30714000
      IF INDX=%14 THEN << DIT KLUDGE >>                        <<02012>>30716000
      BEGIN                                                    <<02012>>30718000
         MOVE BBUF:=" DEVICE INFORMATION TABLE (DIT) ";        <<02012>>30720000
         @PBUF:=@BBUF+59;                                      <<02012>>30722000
         IF DITFPG<>0 THEN ASCII(DITFPG, 10, PBUF);            <<02012>>30724000
         @PBUF:=@BBUF+85;                                      <<02012>>30726000
         IF DITNFPG<>0 THEN ASCII(DITNFPG, 10, PBUF);          <<02012>>30728000
         PRINTLINE;                                            <<02012>>30730000
      END;                                                     <<02012>>30732000
AROUND:                                                        << WBT >>30734000
  END;                                                                  30736000
  IF NUMREC >0 THEN                                                     30738000
  BEGIN                                                                 30740000
     MOVE PBUF:="INCOMPLETE DUMP  XXXK WORDS NOT PRINTED";              30742000
     @PBUF:=@BBUF+17;                                                   30744000
     ASCII((NUMREC*4),10,PBUF);                                         30746000
     PRINTLINE;                                                         30748000
  END;                                                                  30750000
END;                                                                    30752000
                                                                        30754000
$PAGE "YESANSWER : Process a user reply"                                30756000
                                                                        30758000
$PAGE "PRINTMEMORY : Print memory bank by bank"                         30760000
$CONTROL SEGMENT=DPANMAIN                                      <<01114>>30762000
 PROCEDURE PRINTMEMORY;                                        <<01114>>30764000
COMMENT                                                                 30766000
                                                                        30768000
Purpose:                                                                30770000
          This procedure prints each bank and determines                30772000
          whether to format it or not                                   30774000
                                                                        30776000
Input parameters:                                                       30778000
                                                                        30780000
Output parameters:                                                      30782000
                                                                        30784000
Globals Referenced:                                                     30786000
                                                                        30788000
Globals Altered:                                                        30790000
                                                                        30792000
Data Structures:                                                        30794000
                                                                        30796000
Algorithm:                                                              30798000
                                                                        30800000
;                                                                       30802000
 BEGIN                                                         <<01114>>30804000
  INTEGER BANKNUM := -1;                                       <<01114>>30806000
  BNKFLG := TRUE;                                              <<01114>>30808000
  WHILE (BANKNUM:=BANKNUM+1) <= MAXBANK DO                     <<01114>>30810000
   IF PRINT'BANK(BANKNUM) THEN                                 <<01114>>30812000
    IF FORMAT'MEMORY THEN                                      <<01114>>30814000
     BEGIN                   << Format dump >>                 <<01114>>30816000
      FILLMEMBUF(BANKNUM);                                     <<01114>>30818000
      SORTMEMBUF;                                              <<01114>>30820000
      PRINTMEMLOCS(BANKNUM);                                   <<01114>>30822000
      DUMPMEM(BANKNUM);                                        <<01114>>30824000
     END                                                       <<01114>>30826000
     ELSE                                                      <<01114>>30828000
      BEGIN                  << Print raw dump >>              <<01114>>30830000
       TOS := BANKNUM;                                         <<01114>>30832000
       TOS := 0;                                               <<01114>>30834000
       TOS := BANKNUM;                                         <<01114>>30836000
       TOS := %177777;                                         <<01114>>30838000
       OCTALDUMP(*,*);                                         <<01114>>30840000
      END;                                                     <<01114>>30842000
 END;                                                          <<01114>>30844000
                                                                        30846000
$PAGE "PROCESS'DUMP : Read the dump and produce report"                 30848000
$CONTROL SEGMENT=DPANMAIN                                      <<01114>>30850000
 PROCEDURE PROCESS'DUMP(PARM);                                 <<01114>>30852000
 VALUE PARM;                                                   <<01114>>30854000
 INTEGER PARM;                                                 <<01114>>30856000
COMMENT                                                                 30858000
                                                                        30860000
Purpose:                                                                30862000
          This procedure controls the reading of the dump               30864000
          tape, determining which reports to produce, and               30866000
          the actual production of the reports                          30868000
                                                                        30870000
Input parameters:                                                       30872000
                                                                        30874000
Output parameters:                                                      30876000
                                                                        30878000
Globals Referenced:                                                     30880000
                                                                        30882000
Globals Altered:                                                        30884000
                                                                        30886000
Data Structures:                                                        30888000
                                                                        30890000
Algorithm:                                                              30892000
                                                                        30894000
;                                                                       30896000
 BEGIN                                                         <<01114>>30898000
INTEGER INDX := -1;                                          <<01114>>  30900000
                                                               <<04149>>30902000
<<THE FOLLOWING VARIABLES ARE USED IN DETERMINING IF>>         <<04149>>30904000
<<THE DUMP CONTAINS AN IMAGE OF "SOFTDUMP".  SEE    >>         <<04149>>30906000
<<LATER COMMENT WHICH LISTS THE PATTERNS WE ARE     >>         <<04149>>30908000
<<LOOKING FOR, AND THEIR LOCATIONS.                 >>         <<04149>>30910000
LOGICAL BADDUMP;  <<TRUE: DUMP IS NO GOOD>>                    <<04149>>30912000
                                                               <<04149>>30914000
LOGICAL ARRAY MEMORY(0:7);                                     <<04149>>30916000
BYTE ARRAY MEMORY'(*)=MEMORY;                                  <<04149>>30918000
                                                               <<04149>>30920000
LOGICAL ARRAY SOFTDUMPPAT(0:7);                                <<04149>>30922000
BYTE ARRAY SOFTDUMPPAT'(*)=SOFTDUMPPAT;                        <<04149>>30924000
                                                               <<04149>>30926000
                                                               <<01666>>30928000
SUBROUTINE PRINTIT;                                            <<01666>>30930000
BEGIN                                                          <<01666>>30932000
                                                               <<01666>>30934000
   << THIS ROUTINE PRINTS A MESSAGE ON THE TERMINAL AND >>     <<01666>>30936000
   << ON THE LISTING FOR INTERACTIVE EXECUTIONS.        >>     <<01666>>30938000
                                                               <<01666>>30940000
   PRINT( DBUFFER, -72, 0 );                                   <<01666>>30942000
   PRINTLINE;                                                  <<01666>>30944000
                                                               <<01666>>30946000
END;                                                           <<01666>>30948000
                                                               <<01666>>30950000
  TAPETODISK;                                                  <<01114>>30952000
                                                               <<01666>>30954000
<< CHECK THE SYSTEM VERSION.  THIS PROGRAM (DPAN4) WILL NOT >> <<01666>>30956000
<< CORRECTLY FORMAT MPE III DUMPS.  THE BANK MARKER IS      >> <<01666>>30958000
<< TO DETERMINE WHICH SYSTEM WAS DUMPED.  IF THE WRONG DUMP >> <<01666>>30960000
<< IS TO BE PROCESSED, THEN IF DPAN4 IS BEING RUN FROM AN   >> <<01666>>30962000
<< INTERACTIVE SESSION, A WARNING IS ISSUED AND THE PROGRAM >> <<01666>>30964000
<< ATTEMPTS TO CONTINUE.  FOR NON-INTERACTIVE EXECUTIONS,   >> <<01666>>30966000
<< THE PROGRAM WILL TERMINATE.                              >> <<01666>>30968000
   IF CORE(%200001D) <= 0  THEN   << PROBABLY NOT MPE IV.   >> <<01666>>30970000
   BEGIN                                                       <<01666>>30972000
                                                               <<01666>>30974000
      MOVE BBUF := "*** DUMP TO BE PROCESSED IS NOT AN ";      <<01666>>30976000
      MOVE BBUF(35) := "MPE IV+ SYSTEM!!";                     <<01666>>30978000
      IF PARM = 10 THEN   << INTERACTIVE, WARN AND ATTEMPT  >> <<01666>>30980000
      BEGIN               << TO CONTINUE.                   >> <<01666>>30982000
                                                               <<01666>>30984000
         PRINTIT;                                              <<01666>>30986000
         MOVE BBUF :=                                          <<01666>>30988000
            "DPAN2 SHOULD BE USED TO PROCESS MPE III SYSTEMS"; <<01666>>30990000
         PRINTIT;                                              <<01666>>30992000
         MOVE BBUF :=                                          <<01666>>30994000
            "(MPE VERSION B.01.02 OR OLDER).  YOU MAY ";       <<01666>>30996000
         PRINTIT;                                              <<01666>>30998000
         MOVE BBUF :=                                          <<01666>>31000000
            "CONTINUE EXECUTION TO FORMAT THOSE DUMP PARTS";   <<01666>>31002000
         PRINTIT;                                              <<01666>>31004000
         MOVE BBUF :=                                          <<01666>>31006000
            "COMMON TO MPE IV AND EARLIER EXECUTIONS. PROCEED";<<01666>>31008000
         PRINTIT;                                              <<01666>>31010000
         MOVE BBUF :=                                          <<01666>>31012000
            "AT YOUR OWN RISK.";                               <<01666>>31014000
         PRINTIT;                                              <<01666>>31016000
                                                               <<01666>>31018000
      END                                                      <<01666>>31020000
      ELSE                                                     <<01666>>31022000
      BEGIN                << NOT INTERACTIVE -> ABORT.     >> <<01666>>31024000
                                                               <<01666>>31026000
         PRINTLINE;                                            <<01666>>31028000
         MOVE BBUF :=                                          <<01666>>31030000
           "USE DPAN2 TO PROCESS MPE III (MPE VERSION B.01.02";<<01666>>31032000
         PRINTLINE;                                            <<01666>>31034000
         MOVE BBUF :=                                          <<01666>>31036000
            "OR OLDER) DUMPS. THIS DUMP PROCESSING IS ABORTED";<<01666>>31038000
         PRINTLINE;                                            <<01666>>31040000
         TERMINATE                                             <<01666>>31042000
                                                               <<01666>>31044000
      END;                                                     <<01666>>31046000
                                                               <<01666>>31048000
   END;                                                        <<01666>>31050000
                                                               <<04149>>31052000
                                                               <<04149>>31054000
<<CHECK TO SEE IF MEMORY CONTAINS AN IMAGE OF "SOFTDUMP">>     <<04149>>31056000
<<IF THIS IS THE CASE, THERE IS NO POINT IN PROCESSING  >>     <<04149>>31058000
<<THE DUMP SINCE MOST OF THE LOW CORE POINTERS ARE      >>     <<04149>>31060000
<<INVALID.  THERE ARE TWO POSSIBLE PATTERNS TO TEST FOR,>>     <<04149>>31062000
<<BOTH STARTING AT ADDRESS %175000 OF BANK ZERO.  THE   >>     <<04149>>31064000
<<PATTERNS ARE AS FOLLOWS ("---" INDICATES "DON'T CARE")>>     <<04149>>31066000
<<                                                      >>     <<04149>>31068000
<<  ADDRESS      PATTERN 1      PATTERN 2               >>     <<04149>>31070000
<<  -------      ---------      ---------               >>     <<04149>>31072000
<<  %175000       %002005        %002010                >>     <<04149>>31074000
<<  %175001       %000021            ---                >>     <<04149>>31076000
<<  %175002       %000000        %000000                >>     <<04149>>31078000
<<  %175003       %002000        %000000                >>     <<04149>>31080000
<<  %175004           ---            ---                >>     <<04149>>31082000
<<  %175005       %001000        %001000                >>     <<04149>>31084000
<<  %175006       %000000        %000000                >>     <<04149>>31086000
<<  %175007       %002016        %002010                >>     <<04149>>31088000
                                                               <<04149>>31090000
BADDUMP:=FALSE;   <<ASSUME THE DUMP IS GOOD>>                  <<04149>>31092000
                                                               <<04149>>31094000
<<SET UP THE ARRAYS TO TEST FOR PATTERN 1   >>                 <<04149>>31096000
<<DON'T INCLUDE THE "DON'T CARE" LOCATIONS  >>                 <<04149>>31098000
MEMORY(0):=CORE(%175000D); SOFTDUMPPAT(0):=%2005;              <<04149>>31100000
MEMORY(1):=CORE(%175001D); SOFTDUMPPAT(1):=  %21;              <<04149>>31102000
MEMORY(2):=CORE(%175002D); SOFTDUMPPAT(2):=   %0;              <<04149>>31104000
MEMORY(3):=CORE(%175003D); SOFTDUMPPAT(3):=%2000;              <<04149>>31106000
MEMORY(4):=CORE(%175005D); SOFTDUMPPAT(4):=%1000;              <<04149>>31108000
MEMORY(5):=CORE(%175006D); SOFTDUMPPAT(5):=   %0;              <<04149>>31110000
MEMORY(6):=CORE(%175007D); SOFTDUMPPAT(6):=%2016;              <<04149>>31112000
                                                               <<04149>>31114000
IF MEMORY' = SOFTDUMPPAT',(14) THEN                            <<04149>>31116000
  BADDUMP:=TRUE                                                <<04149>>31118000
ELSE BEGIN                                                     <<04149>>31120000
  <<SET UP ARRAYS TO TEST FOR PATTERN 2       >>               <<04149>>31122000
  <<DON'T INCLUDE THE "DON'T CARE" LOCATIONS  >>               <<04149>>31124000
  MEMORY(0):=CORE(%175000D); SOFTDUMPPAT(0):=%2010;            <<04149>>31126000
  MEMORY(1):=CORE(%175002D); SOFTDUMPPAT(1):=   %0;            <<04149>>31128000
  MEMORY(2):=CORE(%175003D); SOFTDUMPPAT(2):=   %0;            <<04149>>31130000
  MEMORY(3):=CORE(%175005D); SOFTDUMPPAT(3):=%1000;            <<04149>>31132000
  MEMORY(4):=CORE(%175006D); SOFTDUMPPAT(4):=   %0;            <<04149>>31134000
  MEMORY(5):=CORE(%175007D); SOFTDUMPPAT(5):=%2010;            <<04149>>31136000
                                                               <<04149>>31138000
  IF MEMORY' = SOFTDUMPPAT',(12) THEN                          <<04149>>31140000
    BADDUMP:=TRUE; END;                                        <<04149>>31142000
                                                               <<04149>>31144000
IF BADDUMP THEN BEGIN                                          <<04149>>31146000
  BLANKBUF;                                                    <<04149>>31148000
  PRINTIT;                                                     <<04149>>31150000
  MOVE BBUF:="THE DUMP TO BE PROCESSED WAS FOUND TO";          <<04149>>31152000
  PRINTIT;                                                     <<04149>>31154000
  MOVE BBUF:="CONTAIN AN IMAGE OF THE PROGRAM USED";           <<04149>>31156000
  PRINTIT;                                                     <<04149>>31158000
  MOVE BBUF:="TO ACTUALLY TAKE A DUMP, AND NOT THE";           <<04149>>31160000
  PRINTIT;                                                     <<04149>>31162000
  MOVE BBUF:="CONTENTS OF MEMORY AT THE TIME THE";             <<04149>>31164000
  PRINTIT;                                                     <<04149>>31166000
  MOVE BBUF:="SYSTEM WAS STOPPED.";                            <<04149>>31168000
  PRINTIT;                                                     <<04149>>31170000
  MOVE BBUF:="THIS SITUATION TYPICALLY OCCURS IF A";           <<04149>>31172000
  PRINTIT;                                                     <<04149>>31174000
  MOVE BBUF:="PROBLEM WAS ENCOUNTERED IN TAKING THE";          <<04149>>31176000
  PRINTIT;                                                     <<04149>>31178000
  MOVE BBUF:="DUMP ORIGINALLY, AND A SECOND";                  <<04149>>31180000
  PRINTIT;                                                     <<04149>>31182000
  MOVE BBUF:="ATTEMPT IS MADE.";                               <<04149>>31184000
  PRINTIT;                                                     <<04149>>31186000
                                                               <<04149>>31188000
  TERMINATE; END;                                              <<04149>>31190000
                                                               <<01666>>31192000
<<***********************************************************>><<03084>>31194000
  IF PRTNPRT THEN TERMINATE; <<HAVE COMPLETED APPENDING FILES>><<03084>>31196000
<<***********************************************************>><<03084>>31198000
                                                               <<03084>>31200000
                                                               <<03076>>31202000
  VERIFYTBL;                                                   <<03076>>31204000
  FIXPCBSTACK;                                                 <<03076>>31206000
SETUP'REGION'DEF;                                              <<CACHE>>31208000
                                                               <<03076>>31210000
                                                               <<03076>>31212000
  IF PARM=0 THEN MINI'DUMP:=FALSE;                             <<03076>>31214000
                                                               <<03076>>31216000
  IF PARM=20 THEN MINI'DUMP:=TRUE;                             <<03076>>31218000
                                                               <<03078>>31220000
                                                               <<03670>>31222000
                                                               <<03076>>31224000
IF                                                             <<04544>>31226000
  BAD'DST AND BAD'DST(1) AND BAD'DST(2)                        <<03076>>31228000
    THEN BEGIN  << DUMP IS INVALID >>                          <<03076>>31230000
    MOVE DBUFFER :=                                            <<03076>>31232000
      " THE FORMATTED PORTION OF THE DUMP HAS BEEN SUSPENDED ";<<03076>>31234000
      MOVE DBUFFER(27) :=                                      <<03076>>31236000
      "AND ONLY BANK 0 WILL BE DUMPED. ";                      <<03076>>31238000
    PRINTIT;                                                   <<03670>>31240000
    INDX:=-1;                                                  <<03076>>31242000
    WHILE (INDX:=INDX+1) < NUM'RESPONSES DO                    <<03076>>31244000
      RESPONSES(INDX) := FALSE;                                <<03076>>31246000
    PRINT'BANK(0) := PRINT'MEMORY := TRUE;                     <<03076>>31248000
    END                                                        <<03670>>31250000
                                                               <<03076>>31252000
  ELSE                                                         <<03670>>31254000
    BEGIN                                                      <<04544>>31256000
    CATEGORIZE'DST;                      <<ONLY IF VALID DUMP>><<03670>>31258000
    IF PARM=0 OR PARM=20 THEN <<SET FLAGS FOR MEMDUMP>>        <<04544>>31260000
      BEGIN                                                    <<04544>>31262000
      INDX:=-1;                                                <<04544>>31264000
      WHILE (INDX:=INDX+1) <= MAXBANK DO                       <<04544>>31266000
        PRINT'BANK(INDX) := TRUE;                              <<04544>>31268000
      CODE'SEGMENTS := FALSE;                                  <<04544>>31270000
      FREE'AREAS := FALSE;                                     <<04544>>31272000
      CACHED'REGIONS := FALSE;                                 <<sknew>>31274000
      END;                                                     <<04544>>31276000
    IF PARM=10 THEN INTERACTIVE'DIAGLOG;                       <<04544>>31278000
    END;                                                       <<04544>>31280000
<<CALL TABLE FORMAT ROUTINES SELECTIVELY USING FLAGS>>         <<03076>>31282000
  IF PRINT'REGISTERS THEN                                      <<03076>>31284000
    BEGIN                                                      <<03076>>31286000
    PRINTREGS;                                                 <<03076>>31288000
    PFXMEM;                                                    <<03076>>31290000
    END;                                                       <<03076>>31292000
  IF PRINT'CST THEN                                            <<03076>>31294000
    BEGIN                                                      <<03076>>31296000
    PRINTCST;                                                  <<03076>>31298000
    PRINTXCST;                                                 <<03076>>31300000
    END;                                                       <<03076>>31302000
   IF PRINT'DST THEN                                           <<03556>>31304000
      BEGIN                                                    <<03556>>31306000
         PRINTDST;                                             <<03556>>31308000
         PRINT'DFS'DATA'SEG'LIST;                              <<03556>>31310000
      END;                                                     <<03556>>31312000
  IF PRINT'PCB THEN PRINTPCB;                                  <<03076>>31314000
  IF PRINT'STACKS THEN PRINTSTACKS;                            <<03076>>31316000
  IF PRINT'SIR THEN PRINTSIR;                                  <<03076>>31318000
  IF PRINT'MON THEN PRINTMON;                                  <<03076>>31320000
  IF CACHE'SYSTEM THEN                                         <<CACHE>>31322000
     IF PRINT'CACHE THEN PRINTCACHE;                                    31324000
  IF PRINT'SLL THEN PRINTSLL;                                  <<03076>>31326000
  IF PRINT'VDSL THEN PRINTVDSL;                                <<03076>>31328000
  IF PRINT'DRT THEN PRINTDRT;                                  <<03076>>31330000
  IF PRINT'ILT THEN PRINTILT;                                  <<03076>>31332000
  IF PRINT'LPDT THEN PRINTLPDT;                                <<03076>>31334000
  IF PRINT'DIT THEN PRINTDIT;                                  <<03076>>31336000
  IF PRINT'DRQT THEN PRINTDRQT;                                <<03076>>31338000
  IF PRINT'IOQ THEN PRINTIOQ;                                  <<03076>>31340000
  IF PRINT'SBUF THEN PRINTSBUF;                                <<03076>>31342000
  IF PRINT'TBUF THEN PRINTTBUF;                                <<03076>>31344000
  IF PRINT'TRL THEN PRINTTRL;                                  <<03076>>31346000
  IF PRINT'ICS THEN PRINTICS;                                  <<03080>>31348000
  IF PRINT'MEMORY THEN PRINTMEMORY;                            <<03076>>31350000
  IF PRINT'INDEX THEN PRINTINDEX;                              <<03076>>31352000
                                                               <<03076>>31354000
END;   <<PROCESSDUMP>>                                         <<03076>>31356000
