         << LINES .001/.009 ARE RESERVED FOR SYSTEMS INTEGRATION >>     00000001
$CONTROL MAIN=DPAN5                                            <<s7921>>11750000
$CONTROL SEGMENT=MEMORY                                        <<b8909>>11752000
INTEGER PROCEDURE REPLY(LENGTH);                               <<b8909>>11754000
VALUE LENGTH;                                                  <<b8909>>11756000
INTEGER LENGTH;                                                <<b8909>>11758000
                                                               <<b8909>>11760000
BEGIN                                                          <<b8909>>11762000
INTEGER LNGTH,INDEX,BYTEINDEX;                                 <<b8909>>11764000
INDEX:=(LENGTH+1)/2;                                           <<b8909>>11766000
BYTEINDEX:=INDEX*2;                                            <<b8909>>11768000
PRINT(DBUFFER,-LENGTH,%320);                                   <<b8909>>11770000
LNGTH:=READX(DBUFFER(INDEX),-72);                              <<b8909>>11772000
MOVE BBUF:=BBUF(BYTEINDEX),(LNGTH);                            <<b8909>>11774000
REPLY:=LNGTH;                                                  <<b8909>>11776000
END;  <<REPLY>>                                                <<b8909>>11778000
PROCEDURE MAKE'BINARY'FILE;                                    <<b8909>>11780000
BEGIN                                                          <<b8909>>11782000
DOUBLE ADDR,                                                   <<b8909>>11784000
       NUMRECS;                                                <<b8909>>11786000
LOGICAL BANK=ADDR,                                             <<b8909>>11788000
        OFFSET=ADDR+1;                                         <<b8909>>11790000
INTEGER LENGTH,                                                <<b8909>>11792000
        NUMWORDS,                                              <<b8909>>11794000
        INDEX,                                                 <<b8909>>11796000
        FILENUM;                                               <<b8909>>11798000
                                                               <<b8909>>11800000
                                                               <<b8909>>11802000
MOVE DBUFFER:=" BANK? ";                                       <<b8909>>11804000
LENGTH:=REPLY(7);                                              <<b8909>>11806000
BANK:=BINARY(BBUF,LENGTH);                                     <<b8909>>11808000
MOVE DBUFFER:=" OFFSET? ";                                     <<b8909>>11810000
LENGTH:=REPLY(9);                                              <<b8909>>11812000
OFFSET:=BINARY(BBUF,LENGTH);                                   <<b8909>>11814000
MOVE DBUFFER:=" NUMBER OF WORDS? ";                            <<b8909>>11816000
LENGTH:=REPLY(18);                                             <<b8909>>11818000
NUMWORDS:=BINARY(BBUF,LENGTH);                                 <<b8909>>11820000
NUMRECS:=DOUBLE((NUMWORDS+127)/128);                           <<b8909>>11822000
MOVE DBUFFER:=" FILE NAME? ";                                  <<b8909>>11824000
LENGTH:=REPLY(12);                                             <<b8909>>11826000
BBUF(LENGTH):=" ";                                             <<b8909>>11828000
FILENUM:=FOPEN(BBUF,,%101,128,,,,1,,NUMRECS);                  <<b8909>>11830000
                                                               <<b8909>>11832000
WHILE NUMWORDS>=128 DO BEGIN                                   <<b8909>>11834000
   INDEX:=0;                                                   <<b8909>>11836000
   WHILE INDEX < 128 DO BEGIN                                  <<b8909>>11838000
      DBUFFER(INDEX):=CORE(ADDR);                              <<b8909>>11840000
      INDEX := INDEX+1;                                        <<b8909>>11842000
      ADDR := ADDR+1D;                                         <<b8909>>11844000
      END;                                                     <<b8909>>11846000
   FWRITE(FILENUM,DBUFFER,128,0);                              <<b8909>>11848000
   NUMWORDS := NUMWORDS-128;                                   <<b8909>>11850000
   END;                                                        <<b8909>>11852000
                                                               <<b8909>>11854000
INDEX:=0;                                                      <<b8909>>11856000
WHILE INDEX<NUMWORDS DO BEGIN                                  <<b8909>>11858000
   DBUFFER(INDEX):=CORE(ADDR);                                 <<b8909>>11860000
   INDEX := INDEX+1;                                           <<b8909>>11862000
   ADDR:=ADDR+1D;                                              <<b8909>>11864000
   END;                                                        <<b8909>>11866000
WHILE INDEX<128 DO BEGIN                                       <<b8909>>11868000
   DBUFFER(INDEX):=0;                                          <<b8909>>11870000
   INDEX:=INDEX+1;                                             <<b8909>>11872000
   END;                                                        <<b8909>>11874000
                                                               <<b8909>>11876000
FWRITE(FILENUM,DBUFFER,128,0);                                 <<b8909>>11878000
FCLOSE(FILENUM,1,0);                                           <<b8909>>11880000
END;  <<MAKE'BINARY'FILE>>                                     <<b8909>>11882000
                                                               <<b8909>>11884000
$PAGE "DUMPMEM(BANKNO): Print a given memory bank"                      11886000
$CONTROL SEGMENT=MEMORY                                        <<03076>>11888000
PROCEDURE DUMPMEM(BANKNUM);                                    <<03076>>11890000
VALUE BANKNUM;     << BANK BEING DUMPED >>                     <<03076>>11892000
INTEGER BANKNUM;                                               <<03076>>11894000
COMMENT                                                        <<03076>>11896000
                                                                        11898000
Purpose:                                                                11900000
     DUMPMEM(BANKNUM)                                          <<03076>>11902000
     Called exclusively by PRINTMEMORY.                        <<03076>>11904000
     Prints a formatted dump of the memory in bank BANKNUM     <<03076>>11906000
     The contents of the bank are descibed by data records     <<03076>>11908000
     in the array MEMBUF.                                      <<03076>>11910000
     The scanning and classification of the segments in the    <<03076>>11912000
     bank is done by the FILLMEMBUF routine.                   <<03076>>11914000
     DUMPMEM loops through these records, which are            <<03076>>11916000
     assumed to describe consecutive memory segments in        <<03076>>11918000
     the same bank, classifies them, and produces a            <<03076>>11920000
     formatted or octal dump of the memory between the         <<03076>>11922000
     starts of the two consecutive segments.                   <<03076>>11924000
     The flag skip determines whether the dump is an           <<03076>>11926000
     octal dump, a skipped octal dump, or no dump at all.      <<03076>>11928000
     If the segment is a DST, another table, DST'TYPE          <<03076>>11930000
     (created by CATEGORIZE'DSTS) is used to further           <<03076>>11932000
     classify the region.                                      <<03076>>11934000
                                                                        11936000
Input parameters:                                                       11938000
                                                                        11940000
Output parameters:                                                      11942000
                                                                        11944000
Globals Referenced:                                                     11946000
     MEMBUF: records describing the bank created, created by FILLMEMBUF 11948000
                                                                        11950000
Globals Altered:                                                        11952000
                                                                        11954000
Data Structures:                                                        11956000
                                                                        11958000
Algorithm:                                                              11960000
                                                                        11962000
;                                                                       11964000
                                                               <<03076>>11966000
BEGIN                                                          <<03076>>11968000
                                                               <<03076>>11970000
DOUBLE CURAD;      <<STARTING ADR OF CURRENT SEGMENT>>         <<03076>>11972000
DOUBLE NEXTADR;    <<STARTING ADR OF NEXT SEGMENT>>            <<03076>>11974000
DOUBLE BANKBASE;                                               <<03076>>11976000
DOUBLE ENDOFBANK;  << LAST ADDRESS IN THIS BANK  >>            <<03076>>11978000
DOUBLE FIRSTREGSTART;                                          <<s7921>>11980000
DOUBLE FIRSTREGEND;                                            <<s7921>>11982000
LOGICAL MBENTNO';  <<SAME AS MBENTNO, BUT LOGICAL>>            <<03076>>11984000
LOGICAL DONE;      << DONE MEMBUF SCAN           >>            <<03076>>11986000
LOGICAL SKIP;      << 0   -------> SKIPOCTALDUMP >>            <<03076>>11988000
                   << 1   -------> OCTALDUMP     >>            <<03076>>11990000
                   << 2   -------> nothing at all>>            <<03076>>11992000
                                                               <<03076>>11994000
SUBROUTINE DUMPHT(START,FINISH);                               <<03076>>11996000
  VALUE START,FINISH;                                          <<03076>>11998000
  DOUBLE START, FINISH;                                        <<03076>>12000000
  IF ((INTEGER(START &DLSR(16))=BANKNUM)) AND                  <<03076>>12002000
     ((INTEGER(FINISH &DLSR(16))=BANKNUM)) THEN                <<03076>>12004000
       OCTALDUMP(START,FINISH);                                <<03076>>12006000
                                                               <<03076>>12008000
$PAGE "DUMP MEMORY (MAIN LOOP)"                                <<03076>>12010000
                                                               <<03076>>12012000
<< CHECK IF THERE IS ANYTHING OF INTEREST IN THIS BANK >>      <<03076>>12014000
MEMBUFP:=-1;                                                   <<03076>>12016000
@MEMBUFP:=@MEMBUF;                                             <<03076>>12018000
DONE:=FALSE;                                                   <<03076>>12020000
IF MINI'DUMP THEN WHILE NOT DONE DO                            <<03076>>12022000
  BEGIN                                                        <<03076>>12024000
  IF MBTYPE=3 AND DST'TYPE(MBENTNO)<>0 THEN                    <<03076>>12026000
    BEGIN  << THERE IS SOMETHING OF INTEREST >>                <<03076>>12028000
    NEWPAGE;                                                   <<03076>>12030000
      DONE:=TRUE;                                              <<03076>>12032000
    END;                                                       <<03076>>12034000
  IF MBTYPE=%17 THEN    <<NOTHING OF INTEREST IN THIS BANK>>   <<03076>>12036000
     RETURN;                                                   <<03076>>12038000
  @MEMBUFP:=@MEMBUFP+4;                                        <<03076>>12040000
  END;                                                         <<03076>>12042000
                                                               <<03076>>12044000
FILLMEMBUF(BANKNUM);                                           <<03076>>12046000
SORTMEMBUF;                                                    <<03076>>12048000
                                                               <<03076>>12050000
  <<  PRE-LOOP INITIALIZATION >>                               <<03076>>12052000
                                                               <<03076>>12054000
  MEMBUFP:=-1;         <<SET UP FIRST NEXTADR>>                <<03076>>12056000
  @MEMBUFP:=@MEMBUF;                                           <<03076>>12058000
  TOS:=MBBANK;            <<INITIALIZE CURAD  >>               <<s7921>>12060000
  TOS:=MBADDR;                                                 <<s7921>>12062000
CURAD:=BANKBASE:=STARTADR:=TOS;                                <<*1391>>12064000
TOS:=BANKNUM;    << INITIALIZE ENDOFBANK >>                    <<03076>>12066000
TOS:=%177777;                                                  <<03076>>12068000
ENDOFBANK:=TOS;                                                <<03076>>12070000
X:=BANKNUM;                                                    <<03076>>12072000
BANKNO:=BANKNUM;    << USED BY LINE PRINTING ROUTINES >>       <<03076>>12074000
CHARFLAG:=TRUE;  << SET TRUE TO ENABLE CHAR ALWAYS >>          <<*1391>>12076000
BLANKBUF;                                                      <<03076>>12078000
IF BANKNUM > 0 THEN BEGIN                                      <<s7921>>12080000
   TOS := BANKNUM;                                             <<s7921>>12082000
   TOS := 0;                                                   <<s7921>>12084000
   FIRSTREGSTART := TOS;                                       <<s7921>>12086000
   TOS := BANKNUM;                                             <<s7921>>12088000
   TOS := %27;                                                 <<s7921>>12090000
   FIRSTREGEND := TOS;                                         <<s7921>>12092000
   DUMPHT(FIRSTREGSTART,FIRSTREGEND);                          <<s7921>>12094000
   END;                                                        <<s7921>>12096000
                                                               <<03076>>12098000
WHILE TRUE DO         << LOOP OVER MEMBUF (MB)          >>     <<03076>>12100000
  BEGIN                                                        <<03076>>12102000
  SKIP:= 1 ;          << DEFAULT IS OCTALDUMP           >>     <<03076>>12104000
  DBADR:=0D;          << UNLESS CHANGED BY CHECKSTACK   >>     <<03076>>12106000
  MBENTNO':=MBENTNO;  <<TO BE PASSED TO OTHER PROCEDURES>>     <<03076>>12108000
                                                               <<03076>>12110000
  CASE MBTYPE OF                                               <<03076>>12112000
  BEGIN                                                        <<03076>>12114000
    ;                              << 0=UNKNOWN         >>     <<03076>>12116000
    CSTENTRY(CURAD,MBENTNO',SKIP); << 1=CSTENTRY        >>     <<03076>>12118000
    BEGIN                          << 2=PROCESSCSTENTRY >>     <<03076>>12120000
      SKIP:=0;                                                 <<03076>>12122000
      IF MINI'DUMP THEN SKIP:=2;                               <<03076>>12124000
      IF CODE'SEGMENTS THEN SKIP:=1;                           <<03076>>12126000
      IF SKIP <> 2 THEN BEGIN                                  <<03076>>12128000
      SKIPLINES(3);                                            <<03076>>12130000
      MOVE DBUFFER:="$$$$$$$$ CST  ";                          <<03076>>12132000
      @PBUF:=@BBUF+14;                                         <<03076>>12134000
      PUTNUMP(MBENTNO);                                        <<03076>>12136000
      MOVE PBUF:="CST BLOCK INDEX = ";                         <<03076>>12138000
      @PBUF:=@PBUF+18;                                         <<03076>>12140000
      PUTNUMP(MBCSTXNDX);                                      <<03076>>12142000
      MOVE PBUF:="$$$$$$$$";                                   <<03076>>12144000
      @PBUF:=@PBUF+8;                                          <<03076>>12146000
      PRINTLINE;                                               <<03076>>12148000
      END;                                                     <<03076>>12150000
    END;                                                       <<03076>>12152000
    BEGIN                          << 3=DSTENTRY        >>     <<*1391>>12154000
      FORMATTING'DSEG := TRUE;                                 <<*1391>>12154200
      DSTENTRY(MBENTNO',SKIP);                                 <<*1391>>12154400
    END;                                                       <<*1391>>12154600
    ;                              << 4=CSTTABLE        >>     <<03076>>12156000
    ;                              << 5=PROCESSCST TABLE>>     <<03076>>12158000
    ;                              << 6=DST TABLE       >>     <<03076>>12160000
    BEGIN                          << 7=FIXED LOW CORE  >>     <<03076>>12162000
      SKIPLINES(3);                                            <<03076>>12164000
      MOVE DBUFFER:="$$$$$$$$";                                <<03076>>12166000
      MOVE BBUF(9):=" FIXED LOW CORE $$$$$$$$";                <<03076>>12168000
      PRINTLINE;                                               <<03076>>12170000
    END;                                                       <<03076>>12172000
    ;                              << 10=DRT            >>     <<03076>>12174000
    ;                              << 11=SYSTEM GLOBAL  >>     <<03076>>12176000
    BEGIN                          << 12=FREE AREA      >>     <<03076>>12178000
      SKIP:=0;                                                 <<03076>>12180000
      IF MINI'DUMP THEN SKIP:=2;                               <<03076>>12182000
      IF FREE'AREAS THEN SKIP:=1;                              <<03076>>12184000
      IF SKIP <> 2 THEN                                        <<03076>>12186000
        BEGIN                                                  <<03076>>12188000
        SKIPLINES(3);                                          <<03076>>12190000
        MOVE DBUFFER:="$$$$$$$$ ";                             <<03076>>12192000
        MOVE BBUF(9):=" AVAILABLE AREA $$$$$$$$";              <<03076>>12194000
        PRINTLINE;                                             <<03076>>12196000
        END;                                                   <<03076>>12198000
    END;                                                       <<03076>>12200000
    BEGIN                          << 13=MONITOR TABLE  >>     <<03076>>12202000
      MOVE DBUFFER:="$$$$$$$$ ";                               <<03076>>12204000
      MOVE BBUF(9):=" MONITOR TABLE $$$$$$$$";                 <<03076>>12206000
      PRINTLINE;                                               <<03076>>12208000
    END;                                                       <<03076>>12210000
          BEGIN                          << 14=RESERVED REGION <<03081>>12212000
           MOVE DBUFFER:="$$$$$$$$ ";                          <<03081>>12214000
           MOVE BBUF(9):=" RESERVED REGION $$$$$$$$";          <<03081>>12216000
           PRINTLINE;                                          <<03081>>12218000
          END;                                                 <<03081>>12220000
          BEGIN                          << 15=CACHED REGION>> <<sknew>>12222000
           SKIP := 0;                                          <<sknew>>12224000
           IF MINI'DUMP THEN SKIP:=2;                          <<sknew>>12226000
           IF CACHED'REGIONS THEN SKIP := 1;                   <<sknew>>12228000
           IF SKIP<>2 THEN BEGIN                               <<sknew>>12230000
           MOVE DBUFFER:="$$$$$$$$ ";                          << MCW >>12232000
           MOVE BBUF(9):=" CACHED REGION $$$$$$$$";            << MCW >>12234000
           PRINTLINE;                                          << MCW >>12236000
           END;                                                <<sknew>>12238000
          END;                                                 << MCW >>12240000
    ;                              << 16 UNUSED         >>     <<03076>>12242000
    RETURN;                        << 17=END OF LIST    >>     <<03076>>12244000
  END;  << CASE MBENTNO >>                                     <<03076>>12246000
                                                               <<03076>>12248000
  @MEMBUFP:=@MEMBUFP+4;  << ADVANCE POINTER TO NEXT ENTRY >>   <<03076>>12250000
  TOS:=MBBANK;   << GET NEXTADR FROM MEMBUF TABLE >>           <<03076>>12252000
  TOS:=MBADDR;                                                 <<03076>>12254000
  NEXTADR:=TOS;                                                <<03076>>12256000
                                                               <<03076>>12258000
  << DUMP OUT MEMORY FROM CURAD TO NEXTADR >>                  <<03076>>12260000
                                                               <<03076>>12262000
IF MBTYPE=%17 THEN << NEXT ENTRY IS END OF BANK >>             <<03076>>12264000
  BEGIN                                                        <<03076>>12266000
  CASE SKIP OF BEGIN                                           <<03076>>12268000
    SKIPOCTALDUMP(CURAD,ENDOFBANK);                            <<03076>>12270000
    OCTALDUMP    (CURAD,ENDOFBANK);                            <<03076>>12272000
    ;                                                          <<03076>>12274000
  END;                                                         <<03076>>12276000
  IF VM'INUSE THEN USE'PSEUDO'DST := TRUE;                     <<*1391>>12277000
  RETURN;                                                      <<03076>>12278000
  END;                                                         <<03076>>12280000
                                                               <<*8985>>12282000
  IF (NEXTADR <> 0D) THEN                                      <<03076>>12284000
    IF NEXTADR < LINKEDMEM THEN                                         12286000
      CASE SKIP OF BEGIN                                       <<03076>>12288000
        SKIPOCTALDUMP(CURAD,NEXTADR-1D);                       <<03076>>12290000
        OCTALDUMP    (CURAD,NEXTADR-1D);                       <<03076>>12292000
        ;                                                      <<03076>>12294000
      END                                                      <<03076>>12296000
    ELSE BEGIN                                                 <<03076>>12298000
         CASE SKIP OF BEGIN                                    <<03076>>12300000
           SKIPOCTALDUMP(CURAD,NEXTADR-28D);                   <<sknew>>12302000
           OCTALDUMP    (CURAD,NEXTADR-28D)                    <<sknew>>12304000
           ;                                                   <<03076>>12306000
         END;                                                  <<03076>>12308000
         IF CURAD >= LINKEDMEM THEN BEGIN                      <<03076>>12310000
            SKIPLINES(1);                                               12312000
            DUMPHT(NEXTADR-28D,NEXTADR-25D);    <<REG TRAILER>><<sknew>>12314000
            END;                                                        12316000
         SKIPLINES(2);                                         <<03076>>12318000
         DUMPHT(NEXTADR-24D,NEXTADR-1D);         <<REG HEADER>><<sknew>>12320000
         END;                                                  <<03076>>12322000
  CURAD:=NEXTADR;                                              <<03076>>12324000
  IF VM'INUSE THEN USE'PSEUDO'DST := TRUE;                     <<*1391>>12325000
  FORMATTING'DSEG := FALSE;                                    <<*1391>>12325500
  STARTADR:=NEXTADR;       <<FOR DB RELATIVE PRINTING>>        <<03076>>12326000
                                                               <<03076>>12328000
  END;  << WHILE TRUE LOOP >>                                  <<03076>>12330000
END;  << DUMPMEM >>                                            <<03076>>12332000
                                                                        12334000
$PAGE "CSTENTRY: Print code segment for memory dump"                    12336000
$CONTROL SEGMENT=MEMORY                                        <<03076>>12338000
                                                               <<03076>>12340000
PROCEDURE CSTENTRY(CURAD,CKSUM,SKIP);                          <<03076>>12342000
DOUBLE CURAD;                                                  <<03076>>12344000
LOGICAL CKSUM;                                                 <<03076>>12346000
LOGICAL SKIP;                                                  <<03076>>12348000
COMMENT                                                        <<03076>>12350000
                                                                        12352000
Purpose:                                                                12354000
     CSTENTRY is called only by DUMPMEM.                       <<03076>>12356000
     It prints the header title for a code segment in          <<03076>>12358000
     memory.  Based on flag CODE'SEGMENTS, it may also         <<03076>>12360000
     set flags to dump out the segment in octal.               <<03076>>12362000
     Since the code for verifying the segment's checksum       <<03076>>12364000
     was not working, it has been removed.                     <<03076>>12366000
                                                                        12368000
Input parameters:                                                       12370000
     CURAD is bank+addr at which code segment starts                    12372000
     CKSUM is the code segment number!                                  12374000
                                                                        12376000
Output parameters:                                                      12378000
     SKIP is a code for how detailed an octaldump to print              12380000
                                                                        12382000
Globals Referenced:                                                     12384000
                                                                        12386000
Globals Altered:                                                        12388000
                                                                        12390000
Data Structures:                                                        12392000
                                                                        12394000
Algorithm:                                                              12396000
                                                                        12398000
;                                                                       12400000
BEGIN                                                          <<03076>>12402000
LOGICAL DELTAQ;                                                <<03076>>12404000
LOGICAL SEGLENGTH;                                             <<03076>>12406000
DOUBLE SLENGTH;                                                <<03076>>12408000
DOUBLE DCKSUM;                                                 <<03076>>12410000
INTEGER ARRAY CKSUM'(*)=DCKSUM;                                <<03076>>12412000
                                                               <<03076>>12414000
SKIP:=0;                                                       <<03076>>12416000
IF MINI'DUMP THEN SKIP:=2;                                     <<03076>>12418000
IF CODE'SEGMENTS THEN SKIP:=1;                                 <<03076>>12420000
IF SKIP <> 2 THEN BEGIN                                        <<03076>>12422000
MOVE DBUFFER:="$$$$$$$$ CST";                                  <<03076>>12424000
@PBUF:=@PBUF+10;                                               <<03076>>12426000
PUTNUMP(CKSUM);          <<CST SEGMENT #>>                     <<s8397>>12428000
MOVE PBUF :="$$$$$$$$";                                        <<s8397>>12430000
@PBUF:=@PBUF+8;                                                <<s8397>>12432000
PRINTLINE;                                                     <<s8397>>12434000
END;                                                           <<s8397>>12436000
END;  << PROCEDURE CSTENTRY >>                                 <<03076>>12438000
                                                                        12440000
$PAGE "DSTENTRY: Print data segment for memory bank dump"               12442000
$CONTROL SEGMENT=DMEM2                                         <<03076>>12444000
PROCEDURE DSTENTRY(DSTNO,SKIP);                                <<03076>>12446000
LOGICAL DSTNO;                                                 <<03076>>12448000
LOGICAL SKIP;                                                  <<03076>>12450000
COMMENT                                                        <<03076>>12452000
                                                                        12454000
Purpose:                                                                12456000
     DSTENTRY is called only by DUMPMEM.                       <<03076>>12458000
     Given a DST number, the routine refers to the array       <<03076>>12460000
     DST'TYPE (set up by CATEGORIZE'DSTS) and prints out       <<03076>>12462000
     the type of DST.  The default is to then let the          <<03076>>12464000
     returned flags allow DUMPMEM to give an OCTALDUMP of      <<03076>>12466000
     the segment.  However, for some DST types, e.g. stacks,   <<03076>>12468000
     DSTENTRY does its own formatting, and defeats the         <<03076>>12470000
     OCTALDUMP in DUMPMEM.                                     <<03076>>12472000
                                                                        12474000
Input parameters:                                                       12476000
     DSTNO is the number of the DST being formatted                     12478000
                                                                        12480000
Output parameters:                                                      12482000
     SKIP returns the desired level of detail for octaldump             12484000
                                                                        12486000
Globals Referenced:                                                     12488000
     DST'TYPE categorizes all the DSTs                                  12490000
                                                                        12492000
Globals Altered:                                                        12494000
                                                                        12496000
Data Structures:                                                        12498000
                                                                        12500000
Algorithm:                                                              12502000
                                                                        12504000
;                                                                       12506000
                                                               <<03076>>12508000
BEGIN                                                          <<03076>>12510000
                                                               <<03076>>12512000
DOUBLE DITBASE;   << ADDR OF DIT (FOLLOWS TBUF)            >>  <<03076>>12514000
DOUBLE DST14;     << START ADDR OF DST 14 (TBUF)           >>  <<03076>>12516000
DOUBLE DST2;      << START ADDR OF DST 2 (DST!)            >>  <<03076>>12518000
INTEGER DSTTYPE;  << SEE CATEGORIZE'DSTS OR CASE STATEMENT >>  <<03076>>12520000
equate maxdsttype = 26;                                                 12522000
                                                                        12524000
                                                               <<03076>>12526000
STACKADDR := DSTTOADDR(DSTNO);                                 <<*1391>>12527000
<<DST'TYPE TABLE IS BUILT BY CATEGORIZE'DST PROCEDURE>>        <<03076>>12528000
DSTTYPE:=DST'TYPE(DSTNO);                                      <<03076>>12530000
<< PRINT DST NUMBER HEADER >>                                  <<03076>>12532000
IF DSTTYPE <> 0 OR NOT MINI'DUMP THEN SKIPLINES(3);            <<03076>>12534000
  MOVE DBUFFER:="$$$$$$$$ ";                                   <<03076>>12536000
  @PBUF:=@BBUF+9;                                              <<03076>>12538000
  MOVE PBUF:="DST ";                                           <<03076>>12540000
  @PBUF:=@PBUF+2;                                              <<03076>>12542000
  PUTNUMP(DSTNO);                                              <<03076>>12544000
  @PBUF:=@PBUF+36;                                             <<03076>>12546000
  MOVE PBUF:="$$$$$$$$";                                       <<03076>>12548000
  @PBUF:=@BBUF+18;  <<SET TO MIDDLE FOR DESCRIPTIONS>>         <<03076>>12550000
                                                               <<03076>>12552000
IF DSTTYPE<0 OR DSTTYPE>MAXDSTTYPE THEN  << ERROR IN TABLE >>  <<03076>>12554000
  BEGIN                                                        <<03076>>12556000
  PRINTLINE;                                                   <<03076>>12558000
  MOVE DBUFFER:="DSTENTRY: INVALID DST TYPE";                  <<03076>>12560000
  PRINTLINE;                                                   <<03076>>12562000
  RETURN;                                                      <<03076>>12564000
  END;                                                         <<03076>>12566000
                                                               <<03076>>12568000
IF DSTNO = CORE ( %1273D ) THEN <<THE (FLOATING) CDT DST>>     <<NAM01>>12570000
  BEGIN                                                        <<NAM01>>12572000
  INDXARAY(%76*%2+%1):=PAGENO; <<INDEX THE UNFORMATTED CDT>>   <<NAM01>>12574000
  MOVE PBUF:="(CACHE DESCRIPTOR TABLE)";                       <<NAM01>>12576000
  PRINTLINE;                                                   <<NAM01>>12578000
  RETURN;                                                      <<NAM01>>12580000
  END;                                                         <<NAM01>>12582000
                                                               <<NAM01>>12584000
CASE DSTTYPE OF                                                <<03076>>12586000
  BEGIN                                                        <<03076>>12588000
  BEGIN               << 0=UNDEFINED                >>         <<03076>>12590000
    IF MINI'DUMP THEN             << SQUELCH OUTPUT >>         <<03076>>12592000
       SKIP := 0;                                                       12594000
    PRINTLINE;                                                          12596000
  END;                                                         <<03076>>12598000
  BEGIN               << 1=STACK (NON CURRENT)      >>         <<03076>>12600000
    CHECKSTACK(DSTNO);                                         <<03076>>12602000
    MOVE DBUFFER:="$$$$$$$$ ";                                 <<03076>>12604000
    @PBUF:=@BBUF+9;                                            <<03076>>12606000
    MOVE PBUF:="DST ";                                         <<03076>>12608000
    @PBUF:=@PBUF+2;                                            <<03076>>12610000
    PUTNUMP(DSTNO);                                            <<03076>>12612000
    @PBUF:=@PBUF+36;                                           <<03076>>12614000
    MOVE PBUF:="$$$$$$$$";                                     <<03076>>12616000
    @PBUF:=@BBUF+18;          <<SET TO MIDDLE FOR DESCRIPTIONS>><<SFF >>12618000
    MOVE PBUF:="(STACK)";                                      <<03076>>12620000
    PRINTLINE;                                                 <<03076>>12622000
    FORMATSTACK(DSTNO);                                        <<03076>>12624000
    SKIP:= 2 ;  << no further dump >>                          <<03076>>12626000
  END;                                                         <<03076>>12628000
  BEGIN               << 2=XDS OF CURRENT PROCESS   >>         <<03076>>12630000
    MOVE PBUF:="(XDS OF CURRENT PROCESS)";                     <<03076>>12632000
    PRINTLINE;                                                 <<03076>>12634000
  END;                                                         <<03076>>12636000
  BEGIN               << 3=FCB                      >>         <<03076>>12638000
    MOVE PBUF:="(FILE CONTROL BLOCK)";                         <<03076>>12640000
    PRINTLINE;                                                 <<03076>>12642000
    FORMATFCB(DSTNO);                                          <<03076>>12644000
    SKIP:=2;                                                   <<03076>>12646000
  END;                                                         <<03076>>12648000
  BEGIN               << 4=ACB                      >>         <<03076>>12650000
    MOVE PBUF:="(FILE CONTROL BLOCK)";                         <<03076>>12652000
    PRINTLINE;                                                 <<03076>>12654000
    FORMATFCB(DSTNO);                                          <<03076>>12656000
    SKIP:=2;                                                   <<03076>>12658000
  END;                                                         <<03076>>12660000
  BEGIN               << 5=PACB                     >>         <<03076>>12662000
    MOVE PBUF:="(FILE CONTROL BLOCK)";                         <<03076>>12664000
    PRINTLINE;                                                 <<03076>>12666000
    FORMATFCB(DSTNO);                                          <<03076>>12668000
    SKIP:=2;                                                   <<03076>>12670000
  END;                                                         <<03076>>12672000
  BEGIN               << 6=LACB                     >>         <<03076>>12674000
    MOVE PBUF:="(FILE CONTROL BLOCK)";                         <<03076>>12676000
    PRINTLINE;                                                 <<03076>>12678000
    FORMATFCB(DSTNO);                                          <<03076>>12680000
    SKIP:=2;                                                   <<03076>>12682000
  END;                                                         <<03076>>12684000
  BEGIN               << 7=JOB INFORMATION TABLE    >>         <<03076>>12686000
    MOVE PBUF:="(JOB INFORMATION TABLE)";                      <<03076>>12688000
    PRINTLINE;                                                 <<03076>>12690000
  END;                                                         <<03076>>12692000
  BEGIN               << 8=JOB DIRECTORY TABLE      >>         <<03076>>12694000
    MOVE PBUF:="(JOB DIRECTORY TABLE)";                        <<03076>>12696000
    PRINTLINE;                                                 <<03076>>12698000
  END;                                                         <<03076>>12700000
  BEGIN               << 9=USER LOGGING OF CUR PIN  >>         <<03076>>12702000
    MOVE PBUF:="(USER LOGGING OF CURRENT PROCESS)";            <<03076>>12704000
    PRINTLINE;                                                 <<03076>>12706000
  END;                                                         <<03076>>12708000
  BEGIN               << 10=UDC DIRECTORY OF CURPIN >>         <<03076>>12710000
    MOVE PBUF:="(UDC DIRECTORY OF CURRENT PROCESS)";           <<03076>>12712000
    PRINTLINE;                                                 <<03076>>12714000
  END;                                                         <<03076>>12716000
  BEGIN               << 11=STACK OF CURRENT PROCESS>>         <<03076>>12718000
    CHECKSTACK(DSTNO);                                         <<03076>>12720000
    MOVE DBUFFER:="$$$$$$$$ ";                                 <<03076>>12722000
    @PBUF:=@BBUF+9;                                            <<03076>>12724000
    MOVE PBUF:="DST ";                                         <<03076>>12726000
    @PBUF:=@PBUF+2;                                            <<03076>>12728000
    PUTNUMP(DSTNO);                                            <<03076>>12730000
    @PBUF:=@PBUF+36;                                           <<03076>>12732000
    MOVE PBUF:="$$$$$$$$";                                     <<03076>>12734000
    @PBUF:=@BBUF+18;          <<SET TO MIDDLE FOR DESCRIPTIONS>><<SFF >>12736000
    MOVE PBUF:="(CURRENT PROCESS STACK)";                      <<03076>>12738000
    PRINTLINE;                                                 <<03076>>12740000
    FORMATSTACK(DSTNO);                                        <<03076>>12742000
    SKIP:= 2 ;  << no further dump >>                          <<03076>>12744000
  END;                                                         <<03076>>12746000
  BEGIN               << 12=DST#14 TBUF AND DIT     >>         <<03076>>12748000
    NAMEDST;                                                   <<03076>>12750000
    INDXARAY(%14*%2+%1):=PAGENO;  <<ADD TBUF TO INDEX>>        <<03076>>12752000
    PRINTLINE;                                                 <<03076>>12754000
    SKIP:= 2 ;   << no further dump >>                         <<03076>>12756000
    << PRINT TBUF(DST#%14), FOLLOWED BY DIT            >>      <<03076>>12758000
    <<DIT IS SANDWICHED BETWEEN TBUFS AND DST TABLE >>         <<03076>>12760000
    DST2:=DSTTOADDR(%2);   << START OF DST 2 (DST) >>          <<03076>>12762000
    DST14:=DSTTOADDR(%14); << START OF DST 14 (TBUF) >>        <<03076>>12764000
    DITBASE:=4D*DOUBLE(CORE(DSTDEFIN+4D*%14D).(3:13));         <<03076>>12766000
    DITBASE:=DITBASE+DST14;  <<+START OF DST14>>               <<03076>>12768000
    OCTALDUMP(DST14,DITBASE-1D);  << TBUF >>                   <<03076>>12770000
    SKIPLINES(3);                                              <<03076>>12772000
    MOVE DBUFFER:="(DEVICE INFORMATION TABLE)";                <<03076>>12774000
    PRINTLINE;                                                 <<03076>>12776000
    SKIPLINES(1);                                              <<03076>>12778000
    OCTALDUMP(DITBASE,DST2-1D);   << DIT >>                    <<03076>>12780000
  END;                                                         <<03076>>12782000
  BEGIN               << 13=SYSTEM DST              >>         <<03076>>12784000
    USE'PSEUDO'DST := FALSE;                                   <<*1391>>12785000
    NAMEDST;                                                   <<03076>>12786000
    INDXARAY(DSTNO*2+1):=PAGENO;                               <<03076>>12788000
    PRINTLINE;                                                 <<03076>>12790000
  END;                                                         <<03076>>12792000
  PRINTLINE;          << 14=REQUESTED DST           >>         <<03076>>12794000
  BEGIN               << 15=DEV/PROCESS XDS         >>                  12796000
    MOVE PBUF:="(DS DEVICE PROCESS XDS)";                               12798000
    PRINTLINE;                                                          12800000
  END;                                                                  12802000
  BEGIN               << 16=DS JOB XDS              >>                  12804000
    MOVE PBUF:="(DS JOB XDS)";                                          12806000
    PRINTLINE;                                                          12808000
  END;                                                                  12810000
  BEGIN               << 17=CS MISC DST             >>                  12812000
    MOVE PBUF:="(CS MISC DST)";                                         12814000
    PRINTLINE;                                                          12816000
  END;                                                                  12818000
  BEGIN                                                        << MCW >>12820000
    MOVE PBUF:="(LOGICAL SEGMENT TRANSFORMATION TABLE)";       << MCW >>12822000
    PRINTLINE;                                                 << MCW >>12824000
    FORMAT'LSTT(DSTNO);                                        << MCW >>12826000
    SKIP:=2;                                                   << MCW >>12828000
  END;                                                         << MCW >>12830000
begin               << 19= Port Dictionary >>                           12830010
  move pbuf := "(PORT DICTIONARY TABLE)";                               12830020
  printline;                                                            12830030
end;                                                                    12830040
begin               << 20= PortDST >>                                   12830050
  move pbuf := "(PortDST)";                                             12830060
  printline;                                                            12830070
  dumpportdst(dstno);                                                   12830080
  skip := 2;                                                            12830090
end;                                                                    12830100
begin               << 21= Port AFT Mapping XDS >>                      12830110
  move pbuf := "(Port AFT mapping Table)";                              12830120
  printline;                                                            12830130
end;                                                                    12830140
begin               << 22= Buffer Control Block >>                      12830150
  move pbuf := "(Xport BuffCB DST)";                                    12830160
  printline;                                                            12830170
  dumpportdst(dstno);                                                   12830180
  skip := 2;                                                            12830190
end;                                                                    12830200
begin               << 23= ADS Buffer DST >>                            12830210
  move pbuf := "(Xport Buffer DST)";                                    12830220
  printline;                                                            12830230
end;                                                                    12830240
begin               << 24= SNA HSCB table >>                            12830250
  move pbuf :=  "(SNA HSCB table)";                                     12830260
  printline;                                                            12830270
end;                                                                    12830280
begin               << 25= BSC IMF screen XDS >>                        12830290
  move pbuf := "(BSC IMF screen XDS)";                                  12830300
  printline;                                                            12830310
end;                                                                    12830320
begin               << 26= SNA IMF screen XDS >>                        12830330
  move pbuf := "(SNA IMF screen XDS)";                                  12830340
  printline;                                                            12830350
end;                                                                    12830360
begin               << 27= ADS PTOP buffer DST >>                       12830370
  move pbuf := "(ADS PTOP BUFFER DST)";                                 12830380
  printline;                                                            12830390
end;                                                                    12830400
begin               << 28= ADS RFA & RBDA buffer DST >>                 12830410
  move pbuf := "(ADS RFA & RBDA BUFFER DST)";                           12830420
  printline;                                                            12830430
end;                                                                    12830440
begin               << 29= ADS Local Socket Info XDS >>                 12830450
  move pbuf := "(ADS LOCAL SOCKET XDS)";                                12830460
  printline;                                                            12830470
end;                                                                    12830480
  END; <<CASE DSTTYPE>>                                        <<03076>>12832000
END;   << PROCEDURE DSTENTRY >>                                <<03076>>12834000
$PAGE "FORMAT'LSTT: Format the LSTT of a process"              << MCW >>12836000
$CONTROL SEGMENT=MEMORY                                        << MCW >>12838000
PROCEDURE FORMAT'LSTT(DSTNO);                                  << MCW >>12840000
VALUE DSTNO;                                                   << MCW >>12842000
LOGICAL DSTNO;                                                 << MCW >>12844000
COMMENT                                                        << MCW >>12846000
                                                               << MCW >>12848000
PURPOSE:                                                       << MCW >>12850000
     FORMAT'LSTT                                               << MCW >>12852000
     USING THE DST NUMBER PASSED AS A PARAMETER, THIS          << MCW >>12854000
     PROCEDURE WILL FORMAT THE CONTENTS OF THAT DATA           << MCW >>12856000
     SEGMENT INTO AN "EASY TO READ" LSTT.                      << MCW >>12858000
                                                               << MCW >>12860000
INPUT PARAMETERS: DSTNO                                        << MCW >>12862000
                                                               << MCW >>12864000
OUTPUT PARAMETERS: NONE                                        << MCW >>12866000
                                                               << MCW >>12868000
GLOBALS REFERENCED:                                            << MCW >>12870000
                                                               << MCW >>12872000
GLOBALS ALTERED:                                               << MCW >>12874000
                                                               << MCW >>12876000
DATA STRUCTURES:                                               << MCW >>12878000
                                                               << MCW >>12880000
ALGORITHM:                                                     << MCW >>12882000
;                                                              << MCW >>12884000
BEGIN                                                          << MCW >>12886000
DOUBLE LSTT,DSTSIZE;                                           << MCW >>12888000
DOUBLE CSTADDR;                                                <<s7921>>12890000
INTEGER CSTBANK=CSTADDR,                                       <<s7921>>12892000
        CSTBASE=CSTADDR+1;                                     <<s7921>>12894000
LOGICAL INDX,NUMSEGS,SEGLENGTH,EXTLABPTR,STTHEAD;              <<s7921>>12896000
LOGICAL INLAB,TOTLAB,EXLAB,ELABEL;                             << MCW >>12898000
LOGICAL ERRORCHECK:=FALSE;                                     << MCW >>12900000
INTEGER I;                                                     << MCW >>12902000
INTEGER CSTWORD1,CSTLENGTH,PSEGNUM,PSEGINDEX,LOCCST;           <<s7921>>12904000
EQUATE MAXSEGS=255;                                            << MCW >>12906000
                                                               << MCW >>12908000
SUBROUTINE PRINTHEADER;                                        << MCW >>12910000
BEGIN                                                          << MCW >>12912000
  MOVE BBUF:="NUMBER OF LOGICAL SEGMENTS";                     << MCW >>12914000
  PUTNZ(NUMSEGS,31);                                           << MCW >>12916000
  PRINTLINE;                                                   << MCW >>12918000
  MOVE BBUF:="LENGTH OF LSTT:";                                << MCW >>12920000
  PUTNZ(SEGLENGTH,20);                                         << MCW >>12922000
  PRINTLINE;                                                   << MCW >>12924000
  SKIPLINES(1);                                                << MCW >>12926000
  MOVE BBUF:="LOGICAL SEG  PHYSICAL SEG";                      << MCW >>12928000
  MOVE BBUF(27):="INT LABELS  EXT LABELS";                     << MCW >>12930000
  MOVE BBUF(51):="TOTAL LABELS  LABEL PNTR";                   <<s7921>>12932000
  PRINTLINE;                                                   << MCW >>12934000
  MOVE BBUF:="-----------  ------------";                               12936000
  MOVE BBUF(27):="----------  ----------";                              12938000
  MOVE BBUF(51):="------------  ----------";                            12940000
  PRINTLINE;                                                            12942000
END;                                                           << MCW >>12944000
LOCCST := CORE(0D);   <<CST LOCATION>>                         <<s7921>>12946000
                                                               << MCW >>12948000
LSTT:=DSTTOADDR(DSTNO);                                        << MCW >>12950000
INDX:=2;                                                       << MCW >>12952000
NUMSEGS:=CORE(LSTT).(8:8);                                     << MCW >>12954000
SEGLENGTH:=CORE(LSTT+1D);                                      << MCW >>12956000
PRINTHEADER;                                                   << MCW >>12958000
IF NUMSEGS>MAXSEGS OR NUMSEGS<1 THEN                           << MCW >>12960000
BEGIN                                                          << MCW >>12962000
  ERRORCHECK:=TRUE;                                            << MCW >>12964000
  MOVE BBUF:="INVALID NUMBER OF LOGICAL SEGMENTS";             << MCW >>12966000
  PRINTLINE;                                                   << MCW >>12968000
END                                                            << MCW >>12970000
ELSE                                                           << MCW >>12972000
                                                               << MCW >>12974000
<< PRINT EACH LSTT ENTRY AND ITS ASSOCIATED LABELS >>          << MCW >>12976000
                                                               << MCW >>12978000
WHILE (INDX/2)<=NUMSEGS DO                                     << MCW >>12980000
  BEGIN                                                        << MCW >>12982000
    PUTNZ(INDX/2,7);                    << LOG SEG >>          << MCW >>12984000
    PSEGNUM:=CORE(LSTT+DOUBLE(INDX));                          <<s7921>>12986000
    PUTNZ(PSEGNUM,21);  << PHY SEG >>                          <<s7921>>12988000
    EXTLABPTR:=CORE(LSTT+DOUBLE(INDX+1)); << PTR TO LIST >>    <<s7921>>12990000
    IF PSEGNUM=0 AND EXTLABPTR=0 THEN GO TO ENDOFLOOP;         <<s7921>>12992000
    IF INTEGER(EXTLABPTR)<>0 THEN                              <<s7921>>12994000
    BEGIN                                                      << MCW >>12996000
      EXLAB:=CORE(LSTT+DOUBLE(EXTLABPTR));  <<STT HEADER>>    <<<s7921>>12998000
      PSEGINDEX:=LOCCST+PSEGNUM*4;   <<CST INDX FOR PSEG>>     <<s7921>>13000000
      CSTWORD1:=CORE(DOUBLE(PSEGINDEX));                       <<s7921>>13002000
      IF CSTWORD1.(0:1)=0 THEN                                 <<s7921>>13004000
        BEGIN                                                  <<s7921>>13006000
         CSTBANK:=CORE(DOUBLE(PSEGINDEX)+2D);                  <<s7921>>13008000
         CSTBASE:=CORE(DOUBLE(PSEGINDEX)+3D);                  <<s7921>>13010000
         CSTLENGTH:=CSTWORD1.(4:12)*4-1;                       <<s7921>>13012000
         STTHEAD:=CORE(CSTADDR+DOUBLE(CSTLENGTH));             <<s7921>>13014000
         INLAB:=STTHEAD.(0:8);             << INTERNAL LABELS ><<s7921>>13016000
         TOTLAB:=STTHEAD.(8:8);             << TOTAL LABELS >> <<s7921>>13018000
        END                                                    <<s7921>>13020000
     ELSE BEGIN   <<CST IS ABSENT>>                            <<s7921>>13022000
       INLAB:=0;                                               <<s7921>>13024000
       TOTLAB:=0;                                              <<s7921>>13026000
      END;                                                     <<s7921>>13028000
      PUTNZ(INLAB,33);                                         << MCW >>13030000
      PUTNZ(EXLAB,44);                                         << MCW >>13032000
      PUTNZ(TOTLAB,58);                                        << MCW >>13034000
      PUTNZ(EXTLABPTR,70);                                     <<s7921>>13036000
    END;                                                       <<s7921>>13038000
    PRINTLINE;                                                 <<s7921>>13040000
ENDOFLOOP: INDX:=INDX+2; << MOVE ON TO NEXT LOGICAL SEG >>     <<s7921>>13042000
  END;                                                         << MCW >>13044000
  DSTSIZE:=4D*DOUBLE(CORE(DSTDEFIN+4D*DOUBLE(DSTNO)).(3:13));  << MCW >>13046000
  CHARFLAG:=TRUE;  <<GLOBAL TO PRINT DB RELATIVE ADDR>>        <<s7921>>13048000
  OCTALDUMP(LSTT,LSTT+DSTSIZE-1D);                             << MCW >>13050000
  << CHARFLAG:=FALSE >>  << COMMENT THIS OUT >>                <<*1391>>13052000
END; << FORMAT LSTT >>                                         << MCW >>13054000
$PAGE "FORMATSTACK: Print PX, DL, DB areas of stack"                    13056000
$CONTROL SEGMENT=MEMORY                                        <<03076>>13058000
PROCEDURE FORMATSTACK(DSTNO);                                  <<03076>>13060000
VALUE DSTNO;                                                   <<03076>>13062000
LOGICAL DSTNO;                                                 <<03076>>13064000
COMMENT                                                                 13066000
                                                                        13068000
Purpose:                                                                13070000
     FORMATSTACK                                               <<03076>>13072000
     Given a DST number as input, prints the corresponding     <<03076>>13074000
     memory segment, formatted as a DST stack.                 <<03076>>13076000
     CHECKSTACK should be called before FORMATSTACK, since     <<03076>>13078000
     it sets the global flags STACKFLAG and MARKERS'OK,        <<03076>>13080000
     which are needed.  FORMATSTACK then formats the post-     <<03076>>13082000
     stack marker data in the stack.                           <<03076>>13084000
                                                                        13086000
Input parameters:                                                       13088000
                                                                        13090000
Output parameters:                                                      13092000
                                                                        13094000
Globals Referenced:                                                     13096000
                                                                        13098000
Globals Altered:                                                        13100000
                                                                        13102000
Data Structures:                                                        13104000
                                                                        13106000
Algorithm:                                                              13108000
                                                                        13110000
;                                                                       13112000
                                                               <<03076>>13114000
BEGIN  << FORMATSTACK >>                                       <<03076>>13116000
LOGICAL SEGLENGTH;  <<LENGTH OF STACK>>                        <<03076>>13118000
LOGICAL PCBXLENGTH;                                            <<03076>>13120000
LOGICAL DELTAQ;                                                <<03076>>13122000
LOGICAL ADDR;                                                  <<03076>>13124000
LOGICAL BANK;                                                  <<03076>>13126000
LOGICAL PHYSICALMAP;                                           <<s7921>>13128000
INTEGER SEGMENTNUM;                                            <<s7921>>13130000
DOUBLE SLENGTH;                                                <<03076>>13132000
DOUBLE PXPOINTERS;                                             <<03076>>13134000
DOUBLE PXFIXED;                                                <<03076>>13136000
DOUBLE PXFILE;                                                 <<03076>>13138000
DOUBLE DLREG;                                                  <<03076>>13140000
DOUBLE DBREG;                                                  <<03076>>13142000
DOUBLE INITQ;                                                  <<03076>>13144000
DOUBLE QREG;                                                   <<03076>>13146000
                                                               <<*1391>>13148000
DOUBLE DSTENTRY;  << LOCATION OF DSTNO IN DST TABLE >>         <<03076>>13150000
                                                               <<03076>>13152000
BLANKBUF;                                                      <<03076>>13154000
SKIPLINES(2);                                                  <<03076>>13156000
                                                               <<03076>>13158000
IF NOT STACKFLAG THEN << STACK NOT FORMATTABLE >>              <<03076>>13160000
  BEGIN                                                        <<03076>>13162000
  MOVE DBUFFER:="FORMATSTACK: STACK NOT FORMATTABLE";          <<03076>>13164000
  PRINTLINE;                                                   <<03076>>13166000
  END;                                                         <<03076>>13168000
                                                               <<03076>>13170000
<< LOOK UP BANK+ADDR OF STACK >>                               <<03076>>13172000
DSTENTRY:=DOUBLE(DSTNO*4)+DSTDEFIN;<<ENTRY# OFFSET+TABLE BASE>><<03076>>13174000
STACKADDR:=DSTTOADDR(DSTNO);                                   <<03076>>13176000
SEGLENGTH:=CORE(DSTENTRY).(3:13)*4;                            <<03076>>13178000
SLENGTH:=DOUBLE(SEGLENGTH);                                    <<03076>>13180000
PCBXLENGTH:=CORE(STACKADDR);                                   <<03076>>13182000
PXPOINTERS:=STACKADDR+DOUBLE(PCBXLENGTH)-4D;                   <<03076>>13184000
                                                               <<03076>>13186000
IF PCBXLENGTH = CORE(PXPOINTERS+3D) AND                        <<03076>>13188000
   PCBXLENGTH > 0 AND                                          <<03076>>13190000
   PCBXLENGTH < SEGLENGTH                                      <<03076>>13192000
THEN                                                           <<03076>>13194000
  BEGIN  << PCBX LOOKS GOOD SO FAR >>                          <<03076>>13196000
  MOVE PBUF:="******PCBX:";                                    <<03076>>13198000
  PBUF(12):="*";                                               <<03076>>13200000
  MOVE PBUF(13):=PBUF(12),(119);  <<PROPAGATE>>                <<03076>>13202000
  PRINTLINE;                                                   <<03076>>13204000
  CHARFLAG:=FALSE;                                             <<03076>>13206000
  PXFIXED:=STACKADDR+DOUBLE(PCBXLENGTH)-                       <<03076>>13208000
           DOUBLE(CORE(PXPOINTERS+2D));                        <<03076>>13210000
  PXFILE:=STACKADDR+DOUBLE(PCBXLENGTH)-                        <<03076>>13212000
          DOUBLE(CORE(PXPOINTERS+1D));                         <<03076>>13214000
                                                               <<03076>>13216000
  IF PXFIXED > STACKADDR               AND                     <<03076>>13218000
     PXFILE  > PXFIXED             AND                         <<03076>>13220000
     PXPOINTERS >= PXFILE        <<OK>>                        <<03076>>13222000
  THEN                                                         <<03076>>13224000
    BEGIN         <<BREAK DOWN PCBX>>                          <<03076>>13226000
    MOVE PBUF:="***PXGLOBAL:";                                 <<03076>>13228000
    PRINTLINE;                                                 <<03076>>13230000
    OCTALDUMP(STACKADDR,PXFIXED-1D);                           <<03076>>13232000
    MOVE PBUF:="***PXFIXED:";                                  <<03076>>13234000
    PRINTLINE;                                                 <<03076>>13236000
    OCTALDUMP(PXFIXED,PXFILE-1D);                              <<03076>>13238000
    MOVE PBUF:="***PXFILE:";                                   <<03076>>13240000
    IF PXPOINTERS > PXFILE THEN                                <<03076>>13242000
       PRINTPXFILE(DSTNO,PXFILE);                              <<03076>>13244000
    MOVE PBUF:="**PXPOINTERS:";                                <<03076>>13246000
    PRINTLINE;                                                 <<03076>>13248000
    OCTALDUMP(PXPOINTERS,                                      <<03076>>13250000
              STACKADDR+DOUBLE(PCBXLENGTH)-1D);                <<03076>>13252000
    END  << BREAK DOWN PCBX >>                                 <<03076>>13254000
  ELSE                                                         <<03076>>13256000
    BEGIN  << PCBX SEEMED GOOD, BUT NOT FORMATABLE >>          <<03076>>13258000
    MOVE PBUF:="**CANNOT FORMAT PCBX**";                       <<03076>>13260000
    PRINTLINE;                                                 <<03076>>13262000
    OCTALDUMP(STACKADDR,STACKADDR+DOUBLE(PCBXLENGTH-1));       <<03076>>13264000
    END;                                                       <<03076>>13266000
                                                               <<03076>>13268000
  DLREG:=STACKADDR+DOUBLE(CORE(STACKADDR));                    <<03076>>13270000
  DBREG:=STACKADDR+DOUBLE(CORE(STACKADDR+1D));                 <<03076>>13272000
  IF MARKERS'OK     AND                                        <<03076>>13274000
     DOUBLE(CORE(PXFIXED)) = PXFILE-PXFIXED                    <<03076>>13276000
    THEN                                                       <<03076>>13278000
      INITQ:=DBREG+DOUBLE(CORE(PXFIXED+3D))+4D                 <<03076>>13280000
    ELSE    <<BAD INITIAL Q REGISTER>>                         <<03076>>13282000
      INITQ:=0D;                                               <<03076>>13284000
  CHARFLAG:=TRUE;                                              <<03076>>13286000
  IF DLREG <= DBREG THEN                                       <<03076>>13288000
    BEGIN                <<PRINT DL AREA>>                     <<03076>>13290000
    MOVE PBUF:="****DL REGISTER:";                             <<03076>>13292000
    PBUF(17):="*";                                             <<03076>>13294000
    MOVE PBUF(18):=PBUF(17),(114);                             <<03076>>13296000
    PRINTLINE;                                                 <<03076>>13298000
    IF DLREG < DBREG THEN                                      <<03076>>13300000
      OCTALDUMP(DLREG,DBREG-1D);                               <<03076>>13302000
    MOVE PBUF:="****DB REGISTER:";                             <<03076>>13304000
    PBUF(17):="*";                                             <<03076>>13306000
    MOVE PBUF(18):=PBUF(17),(114);                             <<03076>>13308000
    PRINTLINE;                                                 <<03076>>13310000
    IF DBREG <= INITQ LAND MARKERS'OK                          <<03076>>13312000
      THEN                                                     <<03076>>13314000
      BEGIN              <<FORMAT PRIMARY DB>>                 <<03076>>13316000
      OCTALDUMP(DBREG,INITQ-4D);                               <<03076>>13318000
      DO                                                       <<03076>>13320000
        BEGIN              <<ALL Q AREAS>>                     <<03076>>13322000
        QREG:=STACKMARKER; <<INITIAL STK MARKER>>              <<03076>>13324000
        DELTAQ:=LOGICAL(STACKSREG-STACKMARKER);                <<03076>>13326000
        WHILE QREG > INITQ DO                                  <<03076>>13328000
          BEGIN            <<FIND A MARKER>>                   <<03076>>13330000
          DELTAQ:=CORE(QREG);                                  <<03076>>13332000
          QREG:=QREG-DOUBLE(DELTAQ);                           <<03076>>13334000
          END;             <<GOT ONE>>                         <<03076>>13336000
        <<INITQ = MARKER>>                                     <<03076>>13338000
        <<DELTAQ= LENGTH>>                                     <<03076>>13340000
        SKIPLINES(1);                                          <<03076>>13342000
        TOS:=INITQ-3D;                                         <<03076>>13344000
        ADDR:=TOS;                                             <<03076>>13346000
        BANK:=TOS;                                             <<03076>>13348000
        PUTNUM(ADDR);                                          <<03076>>13350000
        MOVE PBUF(-1):="(MARKER): ";                           <<03076>>13352000
        @PBUF:=@PBUF+9;                                        <<03076>>13354000
        PUTNUM(CORE(INITQ-3D));                                <<03076>>13356000
        PUTNUM(CORE(INITQ-2D));                                <<03076>>13358000
        PUTNUM(CORE(INITQ-1D));                                <<03076>>13360000
        PUTNUM(CORE(INITQ));                                   <<03076>>13362000
        PHYSICALMAP := CORE(INITQ-2D).(1:1);                   <<s7921>>13364000
        SEGMENTNUM := CORE(INITQ-1D).(8:8);                    <<s7921>>13366000
        <<NAME MARKER IF SYSTEM SEGMENT>>                      <<s7921>>13368000
        IF (CSTEXPANSION LAND PHYSICALMAP)                     <<s7921>>13370000
          OR (NOT(CSTEXPANSION) LAND SEGMENTNUM<%300) THEN     <<s7921>>13372000
          BEGIN            <<NAME MARKER>>                     <<03076>>13374000
          NAMECST(CORE(INITQ-1D).(8:8));                       <<03076>>13376000
          NAMEPROC(CORE(INITQ-1D).(8:8),                       <<03076>>13378000
                   CORE(INITQ-2D),58,-1,-1);                   <<03076>>13380000
          END;           <<NAME MARKER>>                       <<03076>>13382000
        BBUF(80):="-";                                         <<03076>>13384000
        MOVE BBUF(81):=BBUF(80),(52);                          <<03076>>13386000
        PRINTLINE;                                             <<03076>>13388000
        OCTALDUMP(INITQ+1D,                                    <<03076>>13390000
        INITQ+DOUBLE(DELTAQ)-4D);                              <<03076>>13392000
        INITQ:=INITQ+DOUBLE(DELTAQ);                           <<03076>>13394000
        END  << ALL Q AREAS >>                                 <<03076>>13396000
        UNTIL INITQ > STACKMARKER                              <<03076>>13398000
              OR  DELTAQ <= 0;                                 <<03076>>13400000
      BBUF:="*"; MOVE BBUF(1):=BBUF,(131);                     <<03076>>13402000
      MOVE BBUF(3):="S REGISTER: ";                            <<03076>>13404000
      PRINTLINE;                                               <<03076>>13406000
      OCTALDUMP(STACKMARKER+1D,STACKADDR+SLENGTH-1D);          <<03076>>13408000
      END  << FORMAT PRIMARY DS >>                             <<03076>>13410000
    ELSE                                                       <<03076>>13412000
      OCTALDUMP(DBREG,STACKADDR+SLENGTH-1D);                   <<03076>>13414000
    END                 <<DL TO Z DUMP>>                       <<03076>>13416000
  ELSE                                                         <<03076>>13418000
    OCTALDUMP(DLREG,STACKADDR+SLENGTH-1D);                     <<03076>>13420000
  END                  <<FORMATTED PCBX>>                      <<03076>>13422000
ELSE   << BAD PCBX >>                                          <<03076>>13424000
  OCTALDUMP(STACKADDR,STACKADDR+SLENGTH-1D);                   <<03076>>13426000
<< CHARFLAG:= FALSE >>  << COMMENT THIS OUT >>                 <<*1391>>13428000
SKIPLINES(1);                                                  <<03076>>13430000
END;  << FORMATSTACK >>                                        <<03076>>13432000
                                                                        13434000
                                                                        13436000
                                                                        13438000
$PAGE "FILLMEMBUF: Fill array describing a bank of memory"              13440000
$CONTROL SEGMENT=MEMORY                                                 13442000
COMMENT                                                                 13444000
                                                                        13446000
Purpose:                                                                13448000
<<              FILL MEMORY BUFFER PROCEDURE                       >>   13450000
<<    THIS PROCEDURE WILL FILL AN ARRAY CALLED MEMBUF USING CST,  >>    13452000
<<    CST',AND DST. EACH ENTRY IN THE ARRAY CONSIST OF 4 WORDS << WBT >>13454000
<<    IN THE FOLLOWING FORMAT:                                   >>     13456000
<<                           WORD0.(0:4)--CODE 0--UNKNOWN        >>     13458000
<<                                             1--CST ENTRY      >>     13460000
<<                                             2--CST' ENTRY     >>     13462000
<<                                             3--DST ENTRY      >>     13464000
<<                                             4--CST            >>     13466000
<<                                             5--CST'           >>     13468000
<<                                             6--DST            >>     13470000
<<                                             7--FIXED LOW CORE >>     13472000
<<                                           %10--DRT            >>     13474000
<<                                           %11--SYSTEM GLOBAL  >>     13476000
<<                                           %12--FREE AREA      >>     13478000
<<                                           %14--RSRVED REGION<<03081>>13480000
<<                           WORD0.(4:12)--ENTRY NUMBER          >>     13482000
<<                            WORD1 -- BANK          >>        << WBT >>13484000
<<                                                        >>   <<01.02>>13486000
<<                           WORD2       --ADDRESS WITHIN BANK   >>     13488000
<<                            WORD 3 -- CSTX INDEX FOR CST BLK << WBT >>13490000
<<                                      ENTRIES ONLY           << WBT >>13492000
<<                                                               >>     13494000
See also CATEGORIZE'DST which describes data segments in detail         13496000
                                                                        13498000
Input parameters:                                                       13500000
                                                                        13502000
Output parameters:                                                      13504000
                                                                        13506000
Globals Referenced:                                                     13508000
                                                                        13510000
Globals Altered:                                                        13512000
                                                                        13514000
Data Structures:                                                        13516000
                                                                        13518000
Algorithm:                                                              13520000
                                                                        13522000
;                                                                       13524000
PROCEDURE FILLMEMBUF(BANKNUM);                                 <<00.01>>13526000
VALUE BANKNUM;                                                 <<00.01>>13528000
LOGICAL BANKNUM;                                               <<00.01>>13530000
      BEGIN                                                             13532000
         INTEGER COUNT;                                                 13534000
         LOGICAL ENTNUM,ENTRYTYPE;                                      13536000
         DOUBLE FREELINK,SCRATCH;                                       13538000
         DOUBLE SCRATCH1;                                      <<01.02>>13540000
         LOGICAL ARRAY SCR0(*)=SCRATCH1;                       <<01.02>>13542000
         LOGICAL ARRAY SCR1(*)=SCR0(1);                        <<01.02>>13544000
         LOGICAL WORK1,WORK2,WORK3;                            <<01.02>>13546000
         INTEGER TMP1,TMP2,INDX;                               <<01.02>>13548000
   DOUBLE ARLDPTR;                                             << WBT >>13550000
   LOGICAL SIZE;                                               << WBT >>13552000
   DOUBLE CACHE,DNUM;                                          << MCW >>13554000
   LOGICAL ARRAY D1(*)=DNUM;                                   << MCW >>13556000
   LOGICAL ARRAY D2(*)=D1(1);                                  << MCW >>13558000
   LOGICAL CURRENT, MAP'ENTRY;                                 << MCW >>13560000
   DEFINE CACHE'DST=%1273 D#;                                  << MCW >>13562000
   EQUATE LENGTH=%30;                                          << MCW >>13564000
   DEFINE CDT'DISC'HEAD = 7D #,                                << MCW >>13566000
          RHEAD         = %10D#;                               <<b8221>>13568000
                                                               << MCW >>13570000
                                                               <<01.02>>13572000
   LOGICAL SUBROUTINE ITSTHERE(A);                             << WBT >>13574000
      VALUE A; DOUBLE A;                                       << WBT >>13576000
COMMENT                                                        << WBT >>13578000
CHECK WHETHER A SEGMENT IS BOTH PRESENT IN MEMORY AND          << WBT >>13580000
IN THE BANK BEING PROCESSED;                                   << WBT >>13582000
      IF ( (CORE(A).(0:1) = 0) OR                              << WBT >>13584000
           (CORE(A+1D).(1:1) = 1) ) AND              <<ROC?>>           13586000
                                                                        13588000
         (CORE(A+2D)=BANKNUM)                                  << WBT >>13590000
         THEN ITSTHERE:=TRUE                                   << WBT >>13592000
         ELSE ITSTHERE:=FALSE;                                 << WBT >>13594000
                                                               << WBT >>13596000
SUBROUTINE FILLXCST;                                           <<01.02>>13598000
BEGIN                                                          <<01.02>>13600000
                                                               <<01.02>>13602000
SCRATCH1:=0D;                                                  <<01.02>>13604000
      CHECKMEMBUF;                                             << WBT >>13606000
WORK1:=DSTFLG;                                                 <<01.02>>13608000
IF INTEGER(WORK1)=0 THEN RETURN;                               <<01.02>>13610000
TMP1:=ICSTBLK;<<GET #ENTRIES>>                                 <<01.02>>13612000
IF INTEGER(TMP1)<=0 THEN RETURN;                               <<01.02>>13614000
INDX:=1;                                                       <<01.02>>13616000
WHILE INDX<TMP1 DO                                             <<01.02>>13618000
BEGIN                                                          <<01.02>>13620000
   TMP2:=ICSTBLK(INDX);                                        <<01.02>>13622000
   IF TMP2 <=0 THEN GO BUMP;                                   <<01.02>>13624000
         SCRATCH1:=DOUBLE(WORK1+LOGICAL(TMP2));                << WBT >>13626000
   COUNT:=CORE(SCRATCH1).(10:6); << GET # ENTRIES IN BLOCK>>   << WBT >>13628000
         SCRATCH1:=SCRATCH1+4D;                                << WBT >>13630000
   ENTNUM:=1;                                                  << MCW >>13632000
   WHILE COUNT>0  DO                                           << WBT >>13634000
   BEGIN                                                       <<01.02>>13636000
            CHECKMEMBUF;                                       << WBT >>13638000
            IF ITSTHERE(SCRATCH1) THEN                         << WBT >>13640000
      BEGIN                                                    <<01.02>>13642000
         <<PRESENT IN MAIN MEM>>                               <<01.02>>13644000
               MBTYPE:=ENTRYTYPE &LSR(12);                     << WBT >>13646000
               MBENTNO:=ENTNUM;                                << WBT >>13648000
               MBBANK:=CORE(SCRATCH1+2D);                      << WBT >>13650000
               MBADDR:=CORE(SCRATCH1+3D);                      << WBT >>13652000
               MBCSTXNDX:=INDX;                                << WBT >>13654000
               @MEMBUFP:=@MEMBUFP+4;                           << WBT >>13656000
               END;                                            << WBT >>13658000
            SCRATCH1:=SCRATCH1+4D;                             << WBT >>13660000
      ENTNUM:=ENTNUM+1;                                        <<01.02>>13662000
      COUNT:=COUNT-1;                                          <<01.02>>13664000
   END;                                                        <<01.02>>13666000
BUMP:                                                          <<01.02>>13668000
   INDX:=INDX+1;                                               <<01.02>>13670000
END;                                                           <<01.02>>13672000
END<<FILLXCST>>;                                               <<01.02>>13674000
                                                               <<01.02>>13676000
                                                                        13678000
SUBROUTINE FILLMEM(CORELOC);                                            13680000
      VALUE CORELOC;                                                    13682000
      LOGICAL CORELOC;                                                  13684000
      BEGIN                                                             13686000
      CHECKMEMBUF;                                             << WBT >>13688000
         COUNT:=CORE(DOUBLE(CORELOC));                                  13690000
         IF ENTRYTYPE = %10000 AND COUNT > 2048 THEN           << MCW >>13692000
          COUNT:=2048;     <<TOO MANY CST ENTRIES>>            << MCW >>13694000
         IF COUNT > 4096 THEN COUNT:=4096;                     << MCW >>13696000
         CORELOC:=CORELOC+3;                                            13698000
         ENTNUM:=1;                                                     13700000
    WHILE COUNT>0 DO                                           << WBT >>13702000
         BEGIN                                                          13704000
         CHECKMEMBUF;                                          << WBT >>13706000
            CORELOC:=CORELOC+1;                                         13708000
         IF ITSTHERE(DOUBLE(CORELOC)) THEN                     << WBT >>13710000
            BEGIN     <<PRESENT>>                                       13712000
               CORELOC:=CORELOC+2;                                      13714000
            MBTYPE:=ENTRYTYPE &LSR(12);                        << WBT >>13716000
            MBENTNO:=ENTNUM;                                   << WBT >>13718000
            MBBANK:=CORE(DOUBLE(CORELOC));                     << WBT >>13720000
            SCRATCH:=DOUBLE(MBBANK)&DLSL(16);                  << WBT >>13722000
            MBADDR:=CORE(DOUBLE(CORELOC:=CORELOC+1));          << WBT >>13724000
            SCRATCH:=SCRATCH+DOUBLE(MBADDR);                   << WBT >>13726000
            @MEMBUFP:=@MEMBUFP+4;                              << WBT >>13728000
               IF SCRATCH=0D THEN                              << WBT >>13730000
               IF (ENTRYTYPE <>%30000) OR (ENTNUM<>6) THEN     <<01.3A>>13732000
               BEGIN                                           <<01.3A>>13734000
               @MEMBUFP:=@MEMBUFP-4;                           << WBT >>13736000
                 IF @MEMBUFP < @MEMBUF THEN                    <<01.3A>>13738000
                 @MEMBUFP:=@MEMBUF;                            <<01.3A>>13740000
               END;                                            <<01.3A>>13742000
            END                                                         13744000
             ELSE                                              <<01.02>>13746000
             CORELOC:=CORELOC+3;                               <<01.02>>13748000
            ENTNUM:=ENTNUM+1;                                           13750000
            COUNT:=COUNT-1;                                             13752000
         END;                                                           13754000
BYP1:                                                                   13756000
       END;                                                             13758000
 @MEMBUFP:=@MEMBUF;                                            << MCW >>13760000
 IF BANKNUM = 0 THEN                                           << MCW >>13762000
    BEGIN                                                      << MCW >>13764000
      MBTYPE:=%7;          <<FIXED LOW CORE>>                  << WBT >>13766000
      MBENTNO:=0;                                              << WBT >>13768000
      MBBANK:=0;                                               << WBT >>13770000
      MBADDR:=0;                                               << WBT >>13772000
      @MEMBUFP:=@MEMBUFP+4;                                    << WBT >>13774000
      MBTYPE:=%11;         <<SYSTEM GLOBAL>>                   << WBT >>13776000
      MBENTNO:=0;                                              << WBT >>13778000
      MBBANK:=0;                                               << WBT >>13780000
      MBADDR:=%1000;                                           << WBT >>13782000
      @MEMBUFP:=@MEMBUFP+4;                                    << WBT >>13784000
      MBTYPE:=%4;       <<CST>>                                << WBT >>13786000
      MBENTNO:=0;                                              << WBT >>13788000
      MBBANK:=0;                                               << WBT >>13790000
      MBADDR:=CORE(CSTB D);                                    << WBT >>13792000
      @MEMBUFP:=@MEMBUFP+4;                                    << WBT >>13794000
      MBTYPE:=%5;         <<CST'>>                             << WBT >>13796000
      MBENTNO:=0;                                              << WBT >>13798000
      MBBANK:=0;                                               << WBT >>13800000
      MBADDR:=CORE(CSTB' D);                                   << WBT >>13802000
      IF NOT CSTBAD' THEN @MEMBUFP:=@MEMBUFP+4;                << WBT >>13804000
      MBTYPE:=%6;    <<DST>>                                   << MCW >>13806000
      MBENTNO:=0;                                              << MCW >>13808000
      MBBANK:=0;                                               << MCW >>13810000
      SCRATCH1:=DSTDEFIN;                                      << MCW >>13812000
      MBADDR:=SCR1;                                            << MCW >>13814000
      @MEMBUFP:=@MEMBUFP+4;                                    << MCW >>13816000
      MBTYPE:=%10;     <<DRT>>                                 << MCW >>13818000
      MBENTNO:=0;                                              << MCW >>13820000
      MBBANK:=0;                                               << MCW >>13822000
      MBADDR:=%14;                                             << MCW >>13824000
      @MEMBUFP:=@MEMBUFP+4;                                    << WBT >>13826000
END;  << END IF BANKNUM=0 >>                                   <<00221>>13828000
SIZE:=0;                                                       << MCW >>13830000
TOS:=CORE(%1250D);                                             << MCW >>13832000
TOS:=CORE(%1251D);                                             << MCW >>13834000
FREELINK:=TOS;                                                 << MCW >>13836000
WHILE FREELINK<>0D DO                                          << MCW >>13838000
  BEGIN                                                        << MCW >>13840000
         TOS:=FREELINK;                                        << MCW >>13842000
         ASSEMBLE(DDUP,DEL);                                   << MCW >>13844000
         IF TOS=BANKNUM THEN                                   << MCW >>13846000
         BEGIN                                                 << MCW >>13848000
            MBTYPE:=%12;                                       << MCW >>13850000
            MBENTNO:=0;                                        << MCW >>13852000
            MBADDR:=TOS+RBTONLDISP;                            << MCW >>13854000
            MBBANK:=TOS;                                       << MCW >>13856000
            @MEMBUFP:=@MEMBUFP+4;                              << MCW >>13858000
            CHECKMEMBUF;                                       << MCW >>13860000
         END                                                   << MCW >>13862000
            ELSE                                               << MCW >>13864000
            ASSEMBLE(DDEL);                                    << MCW >>13866000
         TOS:=CORE(FREELINK);                                  << MCW >>13868000
         TOS:=CORE(FREELINK+1D);                               << MCW >>13870000
         FREELINK:=TOS;                                        << MCW >>13872000
      END;                                                     << MCW >>13874000
      ENTRYTYPE:=%10000;     <<CST ENTRIES>>                   << MCW >>13876000
IF NOT CSTBAD THEN FILLMEM(CORE(CSTB D));                      << MCW >>13878000
ENTRYTYPE:=%20000;      <<CST' ENTRIES>>                       << MCW >>13880000
CSTBAD':=FALSE;                                                << MCW >>13882000
FILCSTBLK;                                                     << MCW >>13884000
FILLXCST;                                                      << MCW >>13886000
ENTRYTYPE:=%30000;       <<DST ENTRIES>>                       << MCW >>13888000
SCRATCH1:=DSTDEFIN;     <<ADDRESS OF DST BASE>>                << MCW >>13890000
IF NOT DSTBAD THEN FILLMEM(SCR1);  <<FILL DST S>>              << MCW >>13892000
                                                               << MCW >>13894000
<< NOW GO THROUGH THE RESERVED REGIONS FOR DISC CACHING   >>   << MCW >>13896000
<< SO THEY CAN BE PRINTED TOO WHEN THE BANK IS PRINTED.   >>   << MCW >>13898000
<< THE HEAD OF THIS LINKED LIST OF REGIONS IS IN EACH     >>   << MCW >>13900000
<< CACHED DEVICE ENTRY.                                   >>   << MCW >>13902000
                                                               << MCW >>13904000
CACHE:=DOUBLE(CORE(CACHE'DST));                                << MCW >>13906000
IF CACHE <> 0D THEN                  << PROCEED--CACHING ENABLE<< MCW >>13908000
 BEGIN                                                         << MCW >>13910000
   CACHE:=DSTTOADDR(LOGICAL(CACHE));                           << MCW >>13912000
   CURRENT:=CORE(CACHE+CDT'DISC'HEAD);                         << MCW >>13914000
   CURRENT:=CURRENT*LENGTH;                                    << MCW >>13916000
                                                               << MCW >>13918000
   WHILE CURRENT > 0 DO                                        << MCW >>13920000
    BEGIN                                                      << MCW >>13922000
      D1:=CORE(CACHE+DOUBLE(CURRENT) + RHEAD);                 << MCW >>13924000
      D2:=CORE(CACHE+DOUBLE(CURRENT) + RHEAD + 1D );           << MCW >>13926000
                                                               << MCW >>13928000
      WHILE DNUM > 0D DO                                       << MCW >>13930000
       BEGIN                                                   << MCW >>13932000
         TOS:=DNUM;                                            << MCW >>13934000
         ASSEMBLE(DDUP,DEL);                                   << MCW >>13936000
         IF TOS=BANKNUM THEN                                   << MCW >>13938000
         BEGIN                                                 << MCW >>13940000
            MBTYPE:=%15;                                       << MCW >>13942000
            MBENTNO:=0;                                        << MCW >>13944000
            MBADDR:=TOS+5;                                     << MCW >>13946000
            MBBANK:=TOS;                                       << MCW >>13948000
            @MEMBUFP:=@MEMBUFP+4;                              << MCW >>13950000
            CHECKMEMBUF;                                       << MCW >>13952000
         END                                                   << MCW >>13954000
            ELSE                                               << MCW >>13956000
            ASSEMBLE(DDEL);                                    << MCW >>13958000
         TOS:=CORE(DNUM);                                      << MCW >>13960000
         TOS:=CORE(DNUM+1D);                                   << MCW >>13962000
         DNUM:=TOS;                                            << MCW >>13964000
       END;                                                    << MCW >>13966000
                                                               << MCW >>13968000
                                                               << MCW >>13970000
      CURRENT:=CORE(CACHE+DOUBLE(CURRENT))*LENGTH;             << MCW >>13972000
     END;                                                      << MCW >>13974000
 END;                                                          << MCW >>13976000
                                                               << MCW >>13978000
BYPASS:                                                        << MCW >>13980000
         MEMBUFP:=-1;            <<TERMINATOR>>                << MCW >>13982000
         TOS:=MAXMEM+1D-DOUBLE(NUMREC)*4096D;  <<ONLY DUMPED>> << MCW >>13984000
         MBADDR:=TOS;                                          << MCW >>13986000
         MBBANK:=TOS;                                          << MCW >>13988000
                                                               << MCW >>13990000
END;                                                           << MCW >>13992000
$PAGE "SORTMEMBUF: Sort records built by FILLMEMBUF"                    13994000
$CONTROL SEGMENT=MEMORY                                                 13996000
COMMENT                                                                 13998000
                                                                        14000000
Purpose:                                                                14002000
<<    THIS PROCEDURE SORTS THE MEMORY BUFFER BUILT BY FILL        >>    14004000
<<    MEMORY BUFFER INTO ASCENDING ORDER BY STARTING ADDRESS      >>    14006000
                                                                        14008000
Input parameters:                                                       14010000
                                                                        14012000
Output parameters:                                                      14014000
                                                                        14016000
Globals Referenced:                                                     14018000
                                                                        14020000
Globals Altered:                                                        14022000
                                                                        14024000
Data Structures:                                                        14026000
                                                                        14028000
Algorithm:                                                              14030000
                                                                        14032000
;                                                                       14034000
PROCEDURE SORTMEMBUF;                                                   14036000
      BEGIN                                                             14038000
   ARRAY MEMSAVE(0:3)=Q;                                       << WBT >>14040000
      INTEGER SKIPCNT,X1,X2,MAX;                                        14042000
                                                                        14044000
SUBROUTINE MEMSWAP(X1,X2);                                              14046000
      VALUE X1,X2;                                                      14048000
      INTEGER X1,X2;                                                    14050000
      BEGIN                                                             14052000
         TOS:=MEMBUF(X1*4+1);                                  << WBT >>14054000
         TOS:=MEMBUF(X:=X+1);                                           14056000
         TOS:=MEMBUF(S3*4+1);   <<X2 AT S-3>>                  << WBT >>14058000
         TOS:=MEMBUF(X:=X+1);                                           14060000
         ASB(DCMP);                                                     14062000
         IF > THEN  <<SWAP THESE 2>>                                    14064000
         BEGIN                                                          14066000
            MOVE MEMSAVE:=MEMBUF(X:=X-2),(4);                  << WBT >>14068000
            MOVE MEMBUF(X):=MEMBUF(X1*4),(4);                  << WBT >>14070000
            MOVE MEMBUF(X):=MEMSAVE,(4);                       << WBT >>14072000
            IF X1>=SKIPCNT THEN MEMSWAP(X1-SKIPCNT,X2-SKIPCNT);         14074000
         END;                                                           14076000
      END;                                                              14078000
   TOS:=(@MEMBUFP-@MEMBUF)/4;                                  << WBT >>14080000
         TOS:=1;                                                        14082000
         DO ASB(LSL 1;DDUP,LCMP) UNTIL <;                               14084000
         SKIPCNT:=TOS;                                                  14086000
         MAX:=TOS;                                                      14088000
         DO                                                             14090000
         BEGIN                                                          14092000
            X1:=0;                                                      14094000
            X2:=SKIPCNT;                                                14096000
            WHILE X2<MAX DO                                             14098000
            BEGIN                                                       14100000
               MEMSWAP(X1,X2);                                          14102000
               X1:=X1+1;                                                14104000
               X2:=X2+1;                                                14106000
            END;                                                        14108000
            SKIPCNT:=SKIPCNT&LSR(1);                                    14110000
         END UNTIL =;                                                   14112000
      END;                                                              14114000
                                                                        14116000
$PAGE "PRINTMEMLOCS: Overview of bank to be printed"                    14118000
$CONTROL SEGMENT=MEMORY                                                 14120000
COMMENT                                                                 14122000
                                                                        14124000
Purpose:                                                                14126000
<<   THIS PROCEDURE WILL PROCESS THE SORTED MEMORY     >>      <<00221>>14128000
<<   BUFFER AND PRINT SEGMENT DESCRIPTORS IN ASCENDING >>      <<00221>>14130000
<<   ORDER BY STARTING ADDRESS                         >>      <<00221>>14132000
The bank describing records were created by FILLMEMBUF and put          14134000
into ascending address order by SORTMEMBUF.                             14136000
PRINTMEMLOCS prints the index that precedes each bank and               14138000
describes its contents.  DUMPMEM then dumps out the contents.           14140000
                                                                        14142000
Input parameters:                                                       14144000
                                                                        14146000
Output parameters:                                                      14148000
                                                                        14150000
Globals Referenced:                                                     14152000
                                                                        14154000
Globals Altered:                                                        14156000
                                                                        14158000
Data Structures:                                                        14160000
                                                                        14162000
Algorithm:                                                              14164000
                                                                        14166000
;                                                                       14168000
PROCEDURE PRINTMEMLOCS(BANKNUM);                               <<00221>>14170000
VALUE BANKNUM;                                                 <<00221>>14172000
LOGICAL BANKNUM;                                               <<00221>>14174000
   BEGIN                                                       <<00221>>14176000
   LOGICAL WORK, WORK1, WORK2, WORK3;                          << WBT >>14178000
       DOUBLE SCRATCH,SCRATCH1;                                <<00221>>14180000
       LOGICAL ARRAY SCR0(*)=SCRATCH;   <<INSTEAD OF TOS>>     <<00221>>14182000
       LOGICAL ARRAY SCR1(*)=SCR0(1);   <<FOR MEM ADDRESS>>    <<00221>>14184000
       DOUBLE SEGPTR;   <<POINTER TO CST,CST',DST>>            <<00221>>14186000
       LOGICAL SEGFLAGS,SEGLENGTH;                             <<00221>>14188000
   LOGICAL LMFLAG;                                             <<01791>>14190000
                                                               << WBT >>14192000
LOGICAL SUBROUTINE FLAGS(PTR);                                 << WBT >>14194000
VALUE PTR; DOUBLE PTR;                                         << WBT >>14196000
BEGIN                                                          << WBT >>14198000
   WORK3:=CORE(PTR+1D);                                        << WBT >>14200000
   FLAGS.(11:1):=WORK3.(7:1);                                  << WBT >>14202000
   FLAGS.(15:1):=WORK3.(6:1);                                  <<s8448>>14204000
   PTR:=DCORE(PTR+2D);                                         << WBT >>14206000
   IF PTR<LINKEDMEM THEN RETURN;                               << WBT >>14208000
   FLAGS.(12:3):=CORE(PTR-24D).(5:3);                          <<s8448>>14210000
END;                                                           << WBT >>14212000
   SUBROUTINE PRINTLMSTART;                                    <<01791>>14214000
      BEGIN                                                    <<01791>>14216000
      LMFLAG:=FALSE;                                           <<01791>>14218000
      SKIPLINES(1);                                            <<01791>>14220000
      MOVE BBUF:="**********     LINKED MEMORY BEGINS AT";     <<01791>>14222000
      @PBUF:=@BBUF+40;                                         <<01791>>14224000
      PUTDNUMP(LINKEDMEM);                                     <<01791>>14226000
      PRINTLINE;                                               <<01791>>14228000
      SKIPLINES(1);                                            <<01791>>14230000
      END;                                                     <<01791>>14232000
   IF BANKNUM=0 THEN                                           <<01791>>14234000
      BEGIN                                                    <<01791>>14236000
      TOS:=CORE(SYSGLOBX+1D);                                  <<01791>>14238000
      TOS:=CORE(SYSGLOBX+2D);                                  <<01791>>14240000
      LINKEDMEM:=TOS;                                          <<01791>>14242000
       LMFLAG:=TRUE;                                           <<01791>>14244000
      END                                                      <<01791>>14246000
     ELSE                                                      <<01791>>14248000
      LMFLAG:=FALSE;                                           <<01791>>14250000
      MEMBUFP:=-1;          <<SET END OF TABLE>>               <<00221>>14252000
      @MEMBUFP:=@MEMBUF;    <<POINT TO TABLE START>>           <<00221>>14254000
      LINECOUNT:=LNSPERPG;  <<CAUSE PAGINATION>>               <<00221>>14256000
LOOP:                                                          <<00221>>14258000
      IF LINECOUNT = LNSPERPG THEN                             <<00221>>14260000
       BEGIN                                                   <<00221>>14262000
BANKNO:=BANKNUM; << FOR HEADER >>                              <<00221>>14264000
        NEWPAGE;                                               <<00221>>14266000
        MOVE DBUFFER(23):=                                     <<00221>>14268000
                "***** SORTED MEMORY SEGMENTS *****";          <<00221>>14270000
        PRINTLINE;                                             <<00221>>14272000
        SKIPLINES(1);                                          <<00221>>14274000
        MOVE DBUFFER:=                                         <<00221>>14276000
               "CORE           I/O  SYS/    SEGMENT";          <<00221>>14278000
        MOVE DBUFFER(21):=                                     <<00221>>14280000
               "MEMORY    SEGMENT";                            <<00221>>14282000
        PRINTLINE;                                             <<00221>>14284000
        MOVE DBUFFER:=                                         <<00221>>14286000
               "RES  LOCK FRZN FRZN USER    TYPE";             <<00221>>14288000
        MOVE DBUFFER(21):=                                     <<00221>>14290000
               "ADDRESS   LENGTH          DESCRIPTION";        <<00221>>14292000
        PRINTLINE;                                             <<00221>>14294000
        SKIPLINES(1);                                          <<00221>>14296000
       END;                                                    <<00221>>14298000
        BLANKBUF;                                              <<00221>>14300000
   IF LMFLAG AND DOUBLE(MBADDR)>=LINKEDMEM THEN PRINTLMSTART;  <<01791>>14302000
        @PBUF:=@BBUF+26;                                       <<00221>>14304000
        SEGFLAGS:=%100021;      <<NO LENGTH, RES, SYS>>        <<00221>>14306000
        CASE (MBTYPE) OF                                <<00221<< WBT >>14308000
          BEGIN                                                <<00221>>14310000
            ;      <<0>>                                       <<00221>>14312000
            BEGIN  <<1= CST ENTRY>>                            <<00221>>14314000
              MOVE PBUF:="CST ";                               <<00221>>14316000
              @PBUF:=@PBUF+1;                                  <<00221>>14318000
              PUTNUMP(MBENTNO);                         <<00221<< WBT >>14320000
              SEGPTR:=                                         <<00221>>14322000
                  DOUBLE(MEMBUFP.(8:8)*4)+DOUBLE(CORE(0D));    <<00221>>14324000
              SEGLENGTH:=CORE(SEGPTR).(4:12)*4;                <<00221>>14326000
         SEGFLAGS:=FLAGS(SEGPTR);                              << WBT >>14328000
              @PBUF:=@BBUF+62;                                 <<00221>>14330000
              NAMECST(MBENTNO);                         <<00221<< WBT >>14332000
            END;                                               <<00221>>14334000
            BEGIN  <<2=CST' ENTRY>>                            <<00221>>14336000
              MOVE PBUF:="CST'";                               <<00221>>14338000
              @PBUF:=@PBUF+1;                                  <<00221>>14340000
              PUTNUMP(MBENTNO);                         <<00221<< WBT >>14342000
            MOVE BBUF(61):="BLOCK:";    <<CST BLOCK NUMBER>>   <<00221>>14344000
            @PBUF:=@BBUF+67;                                   <<00221>>14346000
            PUTNUMP(MBCSTXNDX); <<BLOCK NUMBER>>       <<00221><< WBT >>14348000
            SCR0:=MBBANK;    <<BANK ADDRESS>>       <<00221>>  << WBT >>14350000
            SCR1:=MBADDR;           <<OFFSET IN BANK>>     <<00<< WBT >>14352000
            SEGLENGTH:=CORE(SCRATCH-10D)*LOGICAL(MMPAGESIZE);  << WBT >>14354000
            SCRATCH:=        DSTDEFIN;  <<POINTER TO DST>>     <<00221>>14356000
         SEGFLAGS:=FLAGS(SCRATCH +                             << WBT >>14358000
              DOUBLE(CORE(           <<OFFSET TO BLOCK>>       <<00221>>14360000
                   DOUBLE(CORE(SCRATCH+%217D))+                <<00221>>14362000
                   DOUBLE(MBCSTXNDX)))+                <<00221><< WBT >>14364000
         DOUBLE(4*MBENTNO));                                   <<s8448>>14366000
            END;                                               <<00221>>14368000
            BEGIN  <<3= DST ENTRY>>                            <<00221>>14370000
              MOVE PBUF:="DST ";                               <<00221>>14372000
              @PBUF:=@PBUF+1;                                  <<00221>>14374000
              PUTNUMP(MBENTNO);                         <<00221<< WBT >>14376000
              SEGPTR:=                                         <<00221>>14378000
                 DOUBLE(MBENTNO*4)+        DSTDEFIN;    <<00221<< WBT >>14380000
              SEGLENGTH:=CORE(SEGPTR).(3:13)*4;                <<00221>>14382000
         SEGFLAGS:=FLAGS(SEGPTR);                              << WBT >>14384000
              @PBUF:=@BBUF+61;                                 <<00221>>14386000
              IF (MBENTNO) <= LSTSYSDST THEN            <<00221<< WBT >>14388000
NAMEDST    << DST ENTRY NAME >>                                <<00221>>14390000
              ELSE                                             <<00221>>14392000
               BEGIN                   <<TRY TO NAME SEGMENT>> <<00221>>14394000
            WORK:=1;                                           << WBT >>14396000
                DO                                             <<00221>>14398000
                 BEGIN                                         <<00221>>14400000
                  IF PCBSTACK(WORK)<>0 THEN  <<IN CORE STACK>> <<00221>>14402000
                   BEGIN                                       <<00221>>14404000
                    SEGPTR:=        DSTDEFIN+    <<DST BASE>>  <<00221>>14406000
                          DOUBLE(PCBSTACK(WORK)*4);<<DST NUM>> <<00221>>14408000
                    TOS:=CORE(SEGPTR+2D).(12:4);  <<BANK>>     <<00221>>14410000
                    TOS:=CORE(SEGPTR+3D);    <<ADDRESS>>       <<00221>>14412000
                    SEGPTR:=TOS;    <<ADDRESS OF STACK>>       <<00221>>14414000
                    IF MBENTNO = PCBSTACK(WORK) THEN    <<00221<< WBT >>14416000
                     BEGIN             <<HIS STACK>>           <<00221>>14418000
                      MOVE PBUF:="STACK FOR PIN";              <<00221>>14420000
                      @PBUF:=@PBUF+11;                         <<00221>>14422000
                      PUTNUMP(WORK);   <<PUT PIN IN MSG>>      <<00221>>14424000
                      WORK:=256;       <<PREVENT BOUNDS VIO>>  <<00221>>14426000
                     END ELSE                                  <<00221>>14428000
                    IF MBENTNO = CORE(SEGPTR+10D)              <<s8448>>14430000
                     THEN BEGIN        <<HIS JDT>>             <<00221>>14432000
                      MOVE PBUF:="JDT FOR PIN";                <<00221>>14434000
                      @PBUF:=@PBUF+9;                          <<00221>>14436000
                      PUTNUMP(WORK);   <<PUT PIN IN MSG>>      <<00221>>14438000
                      WORK:=256;       <<PREVENT BOUNDS VIO>>  <<00221>>14440000
                     END ELSE                                  <<00221>>14442000
                    IF MBENTNO = CORE(SEGPTR+11D)              <<s8448>>14444000
                     THEN BEGIN        <<HIS JIT>>             <<00221>>14446000
                      MOVE PBUF:="JIT FOR PIN";                <<00221>>14448000
                      @PBUF:=@PBUF+9;                          <<00221>>14450000
                      PUTNUMP(WORK);   <<PUT PIN IN MSG>>      <<00221>>14452000
                      WORK:=256;       <<PREVENT BOUNDS VIO>>  <<00221>>14454000
                     END ELSE                                  <<NAM01>>14456000
                    IF MBENTNO = CORE(%1273D)                  <<NAM01>>14458000
                     THEN BEGIN        <<THE CDT>>             <<NAM01>>14460000
                      MOVE PBUF:="(CACHE DESCRIPTOR TABLE)";   <<NAM01>>14462000
                      WORK:=256;       <<PREVENT BOUNDS VIO>>  <<NAM01>>14464000
                     END;                                      <<NAM01>>14466000
                   END;                                        <<00221>>14468000
                 END                                           <<00221>>14470000
                UNTIL (WORK:=WORK+1) > 255;                    <<00221>>14472000
               END;                <<SEGMENT > LSTSYSDST SEG>> <<00221>>14474000
            END;                                               <<00221>>14476000
            BEGIN  <<4= CST TABLE>>                            <<00221>>14478000
              MOVE PBUF:="CST TABLE";                          <<00221>>14480000
            END;                                               <<00221>>14482000
            BEGIN  <<5= PROCESS CST TABLE>>                    <<00221>>14484000
              MOVE PBUF:="PROCESS CST";                        <<00221>>14486000
            END;                                               <<00221>>14488000
            BEGIN  <<6= DST TABLE>>                            <<00221>>14490000
              MOVE PBUF:="DST TABLE";                          <<00221>>14492000
            END;                                               <<00221>>14494000
            BEGIN  <<7= FIXED LOW CORE>>                       <<00221>>14496000
              MOVE PBUF:="FIXED LOW CORE";                     <<00221>>14498000
              SEGLENGTH:=12;    <<LENGTH OF FIXED LOW CORE>>   <<00221>>14500000
              SEGFLAGS:=%21;    <<RESIDENT AND SYSTEM>>        <<00221>>14502000
            END;                                               <<00221>>14504000
            BEGIN  <<10= DRT>>                                 <<00221>>14506000
              MOVE PBUF:="DRT ";                               <<00221>>14508000
              SEGFLAGS:=%21;                                   <<00221>>14510000
              SEGLENGTH:=(CORE(%1071D).(8:8)-2)*4;             <<00221>>14512000
            END;                                               <<00221>>14514000
            BEGIN  <<11= SYS GLOBAL>>                          <<00221>>14516000
              MOVE PBUF:="SYSTEM GLOBAL";                      <<00221>>14518000
            END;                                               <<00221>>14520000
            BEGIN  <<12= FREE AREA>>                           <<00221>>14522000
              MOVE PBUF:="AVAILABLE AREA";                     << WBT >>14524000
              TOS:=MBBANK; TOS:=MBADDR;                <<00221><< WBT >>14526000
              SCRATCH1:=TOS;     <<FREE ADDRESS>>              <<00221>>14528000
         SEGLENGTH:=CORE(SCRATCH1-RBTORSDISP D)*LOGICAL(MMPAGESIZE);    14530000
              SEGFLAGS:=%0;                                    << WBT >>14532000
              IF SEGLENGTH=0                                   << WBT >>14534000
                 THEN MOVE BBUF(51):="200000"                  << WBT >>14536000
                 ELSE SEGFLAGS:=%1;                            << WBT >>14538000
            END;                                               <<00221>>14540000
            BEGIN  <<13= MONITOR TABLE>>                       <<00221>>14542000
              MOVE PBUF:="MONITOR TABLE";                      <<00221>>14544000
              TOS:=MBBANK; TOS:=MBADDR;  <<STACK>>     <<00221><< WBT >>14546000
              SCRATCH1:=TOS;      <<ASSIGN TO DOUBLE WORD>>    <<00221>>14548000
              SEGLENGTH:=CORE(SCRATCH1)+1;  <<+1 OHEAD>>       <<00221>>14550000
              SEGFLAGS:=%21;        <<SYSTEM AND RESIDENT>>    <<00221>>14552000
            END;                                               <<00221>>14554000
            BEGIN  <<14 IS UNUSED -- FORMERLY BANK MARKER>>    << WBT >>14556000
         GO AROUND;                                            << WBT >>14558000
            END;                                               <<00221>>14560000
            ;;           <<15,16 = UNUSED>>                    <<00221>>14562000
            BEGIN  <<17 = END OF LIST>>                        <<00221>>14564000
              IF LMFLAG THEN PRINTLMSTART;                     <<01791>>14566000
              RETURN;                                          <<00221>>14568000
            END;                                               <<00221>>14570000
         END;                                                  <<00221>>14572000
         @PBUF:=@BBUF+37;                                      <<00221>>14574000
          IF VM'INUSE AND                                      <<*1391>>14576000
              MBBANK > LOGICAL(MAX'REAL'MEM&DLSR(16)) THEN     <<*1391>>14576400
            MOVE BBUF(42) := "VIRTUAL"                         <<*1391>>14576800
          ELSE                                                 <<*1391>>14577200
            BEGIN                                              <<*1391>>14577600
            PUTNUMP(MBBANK);     << BANK >>                    <<*1391>>14578000
            PUTNUM (MBADDR);     << OFFSET IN BANK >>          <<*1391>>14578400
            END;                                               <<*1391>>14578800
         IF SEGFLAGS.(11:1)=1 THEN MOVE BBUF(0):="RES";        <<00221>>14580000
         IF SEGFLAGS.(12:1)=1 THEN MOVE BBUF(5):="LOCK";       <<00221>>14582000
         IF SEGFLAGS.(13:1)=1 THEN MOVE BBUF(10):="FRZN";      <<00221>>14584000
         IF SEGFLAGS.(14:1)=1 THEN MOVE BBUF(15):="IOFR";      <<00221>>14586000
         IF SEGFLAGS.(15:1)=1 THEN MOVE BBUF(20):="SYS"        <<00221>>14588000
                              ELSE MOVE BBUF(20):="USER";      <<00221>>14590000
         @PBUF:=@BBUF+52;                                      <<00221>>14592000
         IF SEGFLAGS.(0:1)=0 THEN PUTNUMP(SEGLENGTH);          <<00221>>14594000
IF MINI'DUMP AND MBTYPE=3 THEN                                 <<03076>>14596000
  IF DST'TYPE(MBENTNO) <> 0 THEN                               <<03076>>14598000
    <<PRINTED>>                                                <<03076>>14600000
  ELSE                                                         <<03076>>14602000
    MOVE BBUF(101):="(NOT PRINTED)";                           <<03076>>14604000
IF MINI'DUMP AND MBTYPE <> 3 THEN                              <<03076>>14606000
  MOVE BBUF(101):="(NOT PRINTED)";                             <<03076>>14608000
  IF SEGLENGTH=0 THEN MBTYPE:=0 ELSE                    <<00221<< WBT >>14610000
         PRINTLINE;                                            <<00221>>14612000
AROUND:                                                        << WBT >>14614000
   @MEMBUFP:=@MEMBUFP+4;                                       << WBT >>14616000
         GO TO LOOP;                                           <<00221>>14618000
   END;                                                        <<00221>>14620000
                                                                        14622000
                                                                        14624000
$PAGE "MEMBUFOFL: Print membuf overflow message and terminate"          14626000
$CONTROL SEGMENT=MEMORY                                        << WBT >>14628000
                                                               << WBT >>14630000
COMMENT                                                                 14632000
                                                                        14634000
Purpose:                                                                14636000
   Print membuf overflow message and terminate                          14638000
                                                                        14640000
Input parameters:                                                       14642000
                                                                        14644000
Output parameters:                                                      14646000
                                                                        14648000
Globals Referenced:                                                     14650000
                                                                        14652000
Globals Altered:                                                        14654000
                                                                        14656000
Data Structures:                                                        14658000
                                                                        14660000
Algorithm:                                                              14662000
                                                                        14664000
;                                                                       14666000
PROCEDURE MEMBUFOFL;                                           << WBT >>14668000
   BEGIN                                                       << WBT >>14670000
   ARRAY JUNK'(0:65);                                          << WBT >>14672000
   BYTE ARRAY JUNK(*)=JUNK';                                   << WBT >>14674000
   INTRINSIC TERMINATE;                                        << WBT >>14676000
   MOVE JUNK:="***** INTERNAL DPAN ERROR - MEMBUF OVERFLOW *****";      14678000
   PRINT(JUNK',-49,0);                                         << WBT >>14680000
   TERMINATE;                                                  << WBT >>14682000
   END;                                                        << WBT >>14684000
$CONTROL SEGMENT=TABLES2                                                14686000
$PAGE "PRINT CACHE"                                                     14688000
                                                                        14690000
<<*****************************************************>>               14692000
<<                                                     >>               14694000
<<  PROCEDURE: PRINT'CACHE                             >>               14696000
<<                                                     >>               14698000
<<  PURPOSE: TO FORMAT THE CACHE DIRECTORY TABLE       >>               14700000
<<                                                     >>               14702000
<<  ALGORITHM: (1) PRINT THE HEADER DATA               >>               14704000
<<             (2) PRINT EACH DEVICE ENTRY, KEEPING    >>               14706000
<<                 TRACK OF EVERY MAPPED ENTRY IN AN   >>               14708000
<<                 ARRAY                               >>               14710000
<<             (3) PRINT EACH MAPPED ENTRY             >>               14712000
<<             (4) PRINT EACH FREE ENTRY               >>               14714000
<<                                                     >>               14716000
<<*****************************************************>>               14718000
                                                                        14720000
PROCEDURE PRINTCACHE;                                                   14722000
                                                                        14724000
BEGIN                                                                   14726000
EQUATE                                                                  14728000
  CACHE'DST     =%1273,          <<ABS ADDRESS OF DST # >>              14730000
  NOPOINT       =-1,             << NULL POINTER        >>              14732000
  PCBSIZE       =21,             << SIZE OF PCB         >>              14734000
  IMPOFFSET     =17,             << NIMP OFFSET         >>              14736000
  MAXMAP        =2048;           <<MAX # OF MAP ENTRIES >>              14738000
                                                                        14740000
LOGICAL ARRAY MAPDOM(0:MAXMAP);    << FLAGS MAPPED ENTRIES  >>          14742000
                                                                        14744000
LOGICAL CDST,PIN,INDX,CURRENT,ENTRYSIZE;                                14746000
INTEGER IX;                                                             14748000
                                                                        14750000
DOUBLE LOCPCB,CDT;                                                      14752000
DOUBLE DNUM,DMEMOR;                                                     14754000
LOGICAL ARRAY D1(*)=DNUM;          << HOLDS HIGH ORDER WORD >>          14756000
LOGICAL ARRAY D2(*)=D1(1);         << HOLDS LOW ORDER WORD  >>          14758000
LOGICAL MAPCDT;                                                         14760000
LOGICAL IDX,DONE,FIRST;                                                 14762000
                                                                        14764000
LOGICAL FLAGS;                 << FLAG WORD IN MCDT >>                  14766000
LOGICAL LAST,FINI;                                                      14768000
EQUATE LEN=23;                                                          14770000
                                                                        14772000
<<************ Cache DST Equates and Defines *****************>>        14774000
                                                                        14776000
<< DST Header Entry >>                                                  14778000
equate CDT'ENTRIES    = 0,                        <<Entries in table  >>14780000
       CDT'SIZE       = CDT'ENTRIES + 1,          <<Entry size        >>14782000
       CDT'FREE'COUNT = CDT'SIZE + 1,             <<# free entries    >>14784000
       CDT'FREE'HEAD  = CDT'FREE'COUNT + 1,       <<First free entry  >>14786000
       CDT'FREE'TAIL  = CDT'FREE'HEAD + 1,        <<Last free entry   >>14788000
       CDT'MAX'USED   = CDT'FREE'TAIL + 1,        <<Max entries used  >>14790000
       CDT'NUM'LDEVS  = CDT'MAX'USED + 1,         <<Num LDEVs cached  >>14792000
       CDT'DISC'HEAD  = CDT'NUM'LDEVS + 1,        <<First cached LDEV >>14794000
       CDT'DST'WORDS  = CDT'DISC'HEAD + 1,        <<Number of DST wds >>14796000
       CDT'STOP'PND   = CDT'DST'WORDS + 1,        <<TRUE if stopcache >>14798000
       CDT'SEQ'MINFTCH= CDT'STOP'PND + 1,         <<# sectors seq ftch>>14800000
       CDT'RND'MINFTCH= CDT'SEQ'MINFTCH + 1,      <<# secs random ftch>>14802000
       CDT'FORCE'POST = CDT'RND'MINFTCH + 1,      <<TRUE-wait wrt comp>>14804000
       CDT'STOP'QUEUE = CDT'FORCE'POST + 1,       <<Head PIN on impede>>14806000
       CDT'END        = CDT'STOP'QUEUE + 1;       <<Len of entry      >>14808000
                                                                        14810000
<< Cached Disc Device Entry >>                                          14812000
equate CDT'DE'NEXT'LDEV = 0,                      <<Next cached LDEV  >>14814000
       CDT'DE'PREV'LDEV = CDT'DE'NEXT'LDEV+ 1,    <<Prev cached LDEV  >>14816000
       CDT'DE'LDEV = CDT'DE'PREV'LDEV + 1,        <<LDEV of disc      >>14818000
                                                                        14820000
                                                                        14822000
                                                                        14824000
       CDT'DE'MAPD'PAGES= CDT'DE'LDEV     + 1,    <<Number of main mem>>14826000
                                                  <<pages now alloc.  >>14828000
       CDT'DE'MAPD'CNT  = CDT'DE'MAPD'PAGES+1,    <<# mapped CDTs     >>14830000
       CDT'DE'MAPD'HEAD = CDT'DE'MAPD'CNT + 1,    <<Hd mapped CDT     >>14832000
       CDT'DE'MAPD'TAIL = CDT'DE'MAPD'HEAD + 1,   <<Tail mapped CDT   >>14834000
       CDT'DE'REGIONS   = CDT'DE'MAPD'TAIL+1,<<# of regions    <<*9034>>14836000
       CDT'DE'REG'HD    = CDT'DE'REGIONS + 1,<<Dble abs reg hd <<*9034>>14838000
       CDT'DE'REG'TL    = CDT'DE'REG'HD +2,  <<Dble abs reg tl <<*9034>>14840000
       CDT'DE'RHIT      = CDT'DE'REG'TL + 2, <<Cache read      <<*9034>>14842000
       CDT'DE'WHIT      = CDT'DE'RHIT + 2,        <<Cache wrt H<<ak.01>>14844000
       CDT'DE'RMISS     = CDT'DE'WHIT + 2,        <<Cache read <<ak.01>>14846000
       CDT'DE'WMISS     = CDT'DE'RMISS + 2,       <<Cache write<<ak.01>>14848000
       CDT'DE'STOP      = CDT'DE'WMISS + 2,       <<Cache I/O b<<ak.01>>14850000
       CDT'DE'SCANPT    = CDT'DE'STOP   + 2,      <<Last ref do<<ak.01>>14852000
       CDT'DE'END       = CDT'DE'SCANPT    + 2;   <<Entry length      >>14854000
                                                                        14856000
<< Mapped Disc Domain Entry >>                                          14858000
equate CDT'MD'PREV      = 0,                      <<Prev mapd CDT dom.>>14860000
       CDT'MD'NEXT      = CDT'MD'PREV + 1,        <<Next mapd CDT dom.>>14862000
       CDT'MD'SECTOR    = CDT'MD'NEXT + 1,        <<Sector base       >>14864000
       CDT'MD'END'SECTOR= CDT'MD'SECTOR + 2,      <<Sector limit      >>14866000
       CDT'MD'FLAGS     = CDT'MD'END'SECTOR + 2,  <<Misc flag bits    >>14868000
       CDT'MD'READ'CNT  = CDT'MD'FLAGS + 1,       <<# DISCREQ reading >>14870000
       CDT'MD'WRITE'CNT = CDT'MD'READ'CNT + 1,    <<# DISCREQ writing >>14872000
       CDT'MD'LKD'CDT   = CDT'MD'WRITE'CNT + 1,   <<CDT locked waiting>>14874000
       CDT'MD'IMPED'HD  = CDT'MD'LKD'CDT + 1,     <<Head LDR waited   >>14876000
       CDT'MD'LDR'HEAD  = CDT'MD'IMPED'HD + 1,    <<Head LDR active   >>14878000
       CDT'MD'MEM'ADDR  = CDT'MD'LDR'HEAD + 1,    <<Abs addr of region>>14880000
                                                  <<if present        >>14882000
       CDT'MD'DISCREQ   = CDT'MD'MEM'ADDR + 2,    <<Spare disc req    >>14884000
       CDT'MD'LK'CNT    = CDT'MD'DISCREQ + 1,     <<# of flushing CDTs>>14886000
       CDT'MD'LDEV      = CDT'MD'LK'CNT  + 1,     <<Domain's LDEV     >>14888000
       CDT'MD'IMPEDED   = CDT'MD'LDEV + 1,        <<Head impeded PIN  >>14890000
       CDT'MD'END       = CDT'MD'IMPEDED + 1;     <<Entry length      >>14892000
                                                                        14894000
<< Equates for CDT'MD'STATE - all possible 'states' a CDT can be in   >>14896000
equate CDT'AVAIL'STATE = 0, <<Available, no LDRs attached             >>14898000
       CDT'READ'STATE  = 1, <<Only read LDRs are attached             >>14900000
       CDT'WRITE'STATE = 2, <<Write and read LDRs are attached        >>14902000
       CDT'FLUSH'STATE = 3, <<All LDRs must be completed: purge CDT   >>14904000
       CDT'LOCK'STATE  = 4; <<CDT locked, awaiting other CDT flush(es)>>14906000
                                                                        14908000
<< Add equates for bit positions in CDT'MD'FLAGS word   >>              14910000
equate CDT'ABS'BIT         = 0,  << Absent bit          >>              14912000
       CDT'IMI'BIT         = 1,  << In-motion in        >>              14914000
       CDT'IMO'BIT         = 2,  << In-motion out ???   >>              14916000
       CDT'MISS'BIT        = 3,  << Miss on cache       >>              14918000
       CDT'LOCKED'BIT      = 4,  << Locked bit set      >>              14920000
       CDT'FWIP'BIT        = 5,  << Forced-write in prog>>              14922000
       CDT'ROC'BIT         = 6,  << Rec. overlay canidat>>              14924000
       CDT'VIRGIN'BIT      = 7,  << Region is virgin    >>              14926000
       CDT'WAIT'ON'NOPOST  = 8,  << Waiting on NOPOST wt>>              14928000
       CDT'SEQ'BIT         = 9,  << SEQ access to CDT   >>              14930000
       CDT'STATE'BITS      =13;  << (13:3) - state bits >>              14932000
                                                                        14934000
<< Defines for bits in FLAGS word of a mapped CDT entry >>              14936000
define CDT'ABSENT     = (CDT'ABS'BIT:1)#, <<Region is absent        >>  14938000
       CDT'IMI        = (CDT'IMI'BIT:1)#, <<In-motion in            >>  14940000
       CDT'IMO        = (CDT'IMO'BIT:1)#, <<ASK JOHN B!!!!!!        >>  14942000
       CDT'LOCKREQ'PND= (CDT'MISS'BIT:1)#, <<Lock request pending  >>   14944000
       CDT'LOCKED     = (CDT'LOCKED'BIT:1)#, <<Entry is locked      >>  14946000
       CDT'FWIP       = (CDT'FWIP'BIT:1)#, <<Forced write in-prog.  >>  14948000
       CDT'ROC        = (CDT'ROC'BIT:1)#, <<Recoverable overlay can.>>  14950000
       CDT'VIRGIN     = (CDT'VIRGIN'BIT:1)#,<<Region is VIRGIN      >>  14952000
       CDT'NOPOST     = (CDT'WAIT'ON'NOPOST:1)#,<<Wait NOPOST compl.>>  14954000
       CDT'SEQ        = (CDT'SEQ'BIT:1)#, << Sequential CDT access >>   14956000
       CDT'MD'STATE   = (CDT'STATE'BITS:3)#;<<CDT state bits        >>  14958000
                                                                        14960000
LOGICAL SUBROUTINE CACHE(OFFSET);                                       14962000
VALUE OFFSET;                                                           14964000
LOGICAL OFFSET;                                                         14966000
                                                                        14968000
CACHE:=CORE(CDT+DOUBLE(OFFSET));                                        14970000
                                                                        14972000
                                                                        14974000
SUBROUTINE PUTL(BIT,COL,L);                                             14976000
VALUE BIT,COL,L;                                                        14978000
LOGICAL BIT;                                                            14980000
INTEGER COL;                                                            14982000
BYTE L;                                                                 14984000
                                                                        14986000
IF BIT<>0 THEN                                                          14988000
BBUF(COL):=L;                                                           14990000
                                                                        14992000
$PAGE                                                                   14994000
                                                                        14996000
<<********************************************************>>            14998000
<<                                                        >>            15000000
<<                  FMT'CDT'ENTRY                         >>            15002000
<<                                                        >>            15004000
<<********************************************************>>            15006000
                                                                        15008000
SUBROUTINE FMT'CDT'ENTRY(OFFSET);                                       15010000
VALUE OFFSET;                                                           15012000
LOGICAL OFFSET;                                                         15014000
BEGIN                                                                   15016000
                                                                        15018000
<<   PRINT OUT HEADER >>                                                15020000
                                                                        15022000
IF LINECOUNT >40 THEN                                                   15024000
   NEWPAGE;                                                             15026000
   MOVE BBUF(50):="CACHED DEVICE ENTRY";                                15028000
   PRINTLINE;                                                           15030000
   SKIPLINES(2);                                                        15032000
MOVE BBUF(18):="PREV NEXT ALLOC MAPPED  MAPPED MAPPED";                 15034000
MOVE BBUF(57):="REG-HEAD-PTR  REG-TAIL-PTR  NUMBER";                    15036000
MOVE BBUF(95):="                    SCAN-POINTER";                      15038000
PRINTLINE;                                                              15040000
MOVE BBUF:="     ENTRY   LDEV LDEV LDEV PAGES DOMAINS";        <<sknew>>15042000
MOVE BBUF(44):="HEAD   TAIL  BANK    BASE  BANK    BASE";               15044000
MOVE BBUF(85):="REGIONS";                                               15046000
MOVE BBUF(95):="CACHING STATISTICS";                                    15048000
MOVE BBUF(115):="BANK    BASE";                                         15050000
PRINTLINE;                                                              15052000
MOVE BBUF:="     -----   ---- ---- ---- ----- -------";        <<sknew>>15054000
MOVE BBUF(42):="------ ------  ------------  ------------ ";            15056000
MOVE BBUF(85):="-------   ------------------  ------------";            15058000
PRINTLINE;                                                              15060000
PUTOCTALP(OFFSET/ENTRYSIZE,9);               << CDT ENTRY NUMBE<<sknew>>15062000
PUTOCTALP(CACHE(OFFSET+CDT'DE'LDEV),16);                                15064000
PUTOCTALP(CACHE(OFFSET+CDT'DE'PREV'LDEV),21);                           15066000
PUTOCTALP(CACHE(OFFSET+CDT'DE'NEXT'LDEV),26);                           15068000
PUTOCTALP(CACHE(OFFSET+CDT'DE'MAPD'PAGES),33);                          15070000
PUTOCTALP(CACHE(OFFSET+CDT'DE'MAPD'CNT),39);                            15072000
MAPCDT:=CACHE(OFFSET+CDT'DE'MAPD'HEAD);                                 15074000
PUTOCTALP(MAPCDT,48);                                                   15076000
PUTOCTALP(CACHE(OFFSET+CDT'DE'MAPD'TAIL),55);                           15078000
D1:=CACHE(OFFSET+CDT'DE'REG'HD);                                        15080000
PUTOCTALP(D1,60);                                                       15082000
D2:=CACHE(OFFSET+CDT'DE'REG'HD+1);                                      15084000
PUTOCTALP(D2,69);                                                       15086000
DMEMOR:=DNUM;         << ASSIGN INITIAL VALUE TO DMEMOR >>              15088000
PUTOCTALP(CACHE(OFFSET+CDT'DE'REG'TL),74);                              15090000
PUTOCTALP(CACHE(OFFSET+CDT'DE'REG'TL+1),83);                            15092000
PUTOCTALP(CACHE(OFFSET+CDT'DE'REGIONS),91);                             15094000
                                                                        15096000
MOVE BBUF(95):="RHIT";                                                  15098000
D1:=CACHE(OFFSET+CDT'DE'RHIT);                                          15100000
D2:=CACHE(OFFSET+CDT'DE'RHIT+1);                                        15102000
@PBUF:=@BBUF+102;                                                       15104000
PUTDNUM(DNUM);                                                          15106000
                                                                        15108000
PUTOCTALP(CACHE(OFFSET+CDT'DE'SCANPT),118);                             15110000
PUTOCTALP(CACHE(OFFSET+CDT'DE'SCANPT+1),127);                           15112000
                                                                        15114000
PRINTLINE;     <<   PRINT FIRST LINE OF DATA >>                         15116000
                                                                        15118000
                                                                        15120000
DONE:=FALSE;                                                            15122000
IDX:=0;                                                                 15124000
                                                                        15126000
WHILE NOT DONE DO                                                       15128000
BEGIN                                                                   15130000
      CASE IDX OF                                                       15132000
       BEGIN                                                            15134000
         MOVE BBUF(95):="WHIT";;                                        15136000
         MOVE BBUF(95):="RMISS";;                                       15138000
         MOVE BBUF(95):="WMISS";;                                       15140000
         MOVE BBUF(95):="STOP";                                         15142000
       END;                                                             15144000
      D1:=CACHE(OFFSET+CDT'DE'WHIT+IDX);                                15146000
      D2:=CACHE(OFFSET+CDT'DE'WHIT+IDX+1);                              15148000
      @PBUF:=@BBUF+102;                                                 15150000
      PUTDNUM(DNUM);                                                    15152000
      IF IDX=6 THEN                                                     15154000
         DONE:=TRUE;                                                    15156000
                                                                        15158000
WHILE MAPCDT>0 AND MAPCDT<=MAXMAP DO                                    15160000
  BEGIN                                                                 15162000
    MAPDOM(MAPCDT):=TRUE;                                               15164000
    MAPCDT:=CACHE(MAPCDT*ENTRYSIZE+CDT'MD'NEXT);                        15166000
  END;                                                                  15168000
                                                                        15170000
 IDX:=IDX+2;                                                            15172000
 PRINTLINE;                                                             15174000
END;                                                                    15176000
PRINTLINE;                                                              15178000
PRINTLINE;                                                              15180000
END;                                                                    15182000
                                                                        15184000
$PAGE                                                                   15186000
<<*******************************************************>>             15188000
<<                                                       >>             15190000
<<                  FMT'MAP'ENTRY                        >>             15192000
<<                                                       >>             15194000
<<*******************************************************>>             15196000
                                                                        15198000
SUBROUTINE FMT'MAP'ENTRY(OFFSET);                                       15200000
VALUE OFFSET;                                                           15202000
LOGICAL OFFSET;                                                         15204000
                                                                        15206000
                                                                        15208000
BEGIN                                                                   15210000
                                                                        15212000
<<         PRINT OUT HEADER       >>                                    15214000
                                                                        15216000
IF LINECOUNT>50 OR FIRST THEN                                           15218000
 BEGIN                                                                  15220000
   NEWPAGE;                                                             15222000
                                                                        15224000
   FIRST:=FALSE;                                                        15226000
   MOVE BBUF(50):="MAPPED DISC DOMAIN ENTRY";                           15228000
   PRINTLINE;                                                           15230000
   SKIPLINES(2);                                                        15232000
                                                                        15234000
   MOVE BBUF(40):="AIIMLFRVNS";                                         15236000
   PRINTLINE;                                                           15238000
   MOVE BBUF(40):="BMMICWOIOE";                                         15240000
   MOVE BBUF(72):="CDT    LDR    LDR";                                  15242000
   MOVE BBUF(92):="MEM   ADDR";                                         15244000
   PRINTLINE;                                                           15246000
                                                                        15248000
   MOVE BBUF(0):="ENTRY PREV NEXT SECTOR-BASE  SECTOR-LIM";             15250000
   MOVE BBUF(40):="SIOSKPCRPQ STATE  READS WRITES LK-CDT";              15252000
   MOVE BBUF(78):="WAITED ACTIVE BANK  BASE DISCREQ LK-CNT";            15254000
   MOVE BBUF(118):="LDEV  PIN    ";                                     15256000
   PRINTLINE;                                                           15258000
                                                                        15260000
   MOVE BBUF:="----- ---- ---- -----------  ----------";                15262000
   MOVE BBUF(40):="---------- -----  ----- ------ ------";              15264000
   MOVE BBUF(78):="------ ------ ----  ---- ------- ------";            15266000
   MOVE BBUF(118):="----  ---";                                         15268000
   PRINTLINE;                                                           15270000
 END;                                                                   15272000
                                                                        15274000
<<         PRINT ENTRY INFORMATION            >>                        15276000
                                                                        15278000
PUTOCTALP(OFFSET/ENTRYSIZE,4);                                          15280000
PUTNZ(CACHE(OFFSET+CDT'MD'PREV),10);                                    15282000
PUTNZ(CACHE(OFFSET+CDT'MD'NEXT),15);                                    15284000
D1:=CACHE(OFFSET+CDT'MD'SECTOR);                                        15286000
D2:=CACHE(OFFSET+CDT'MD'SECTOR+1);                                      15288000
@PBUF:=@BBUF+16;                                                        15290000
PUTDNUM(DNUM);                                                          15292000
                                                                        15294000
D1:=CACHE(OFFSET+CDT'MD'END'SECTOR);                                    15296000
D2:=CACHE(OFFSET+CDT'MD'END'SECTOR+1);                                  15298000
@PBUF:=@BBUF+28;                                                        15300000
PUTDNUM(DNUM);                                                          15302000
                                                                        15304000
FLAGS:=CACHE(OFFSET+CDT'MD'FLAGS);                                      15306000
PUTL(FLAGS.CDT'ABSENT,40,"A");                                          15308000
PUTL(FLAGS.CDT'IMI,41,"I");                                             15310000
PUTL(FLAGS.CDT'IMO,42,"O");                                             15312000
PUTL(FLAGS.CDT'LOCKREQ'PND,43,"M");                                     15314000
PUTL(FLAGS.CDT'LOCKED,44,"L");                                          15316000
PUTL(FLAGS.CDT'FWIP,45,"F");                                            15318000
PUTL(FLAGS.CDT'ROC,46,"R");                                             15320000
PUTL(FLAGS.CDT'VIRGIN,47,"V");                                          15322000
PUTL(FLAGS.CDT'NOPOST,48,"N");                                          15324000
PUTL(FLAGS.CDT'SEQ,49,"S");                                             15326000
                                                                        15328000
CASE FLAGS.CDT'MD'STATE OF                                              15330000
BEGIN                                                                   15332000
  MOVE BBUF(51):="AVAIL";                                               15334000
  MOVE BBUF(51):="READ";                                                15336000
  MOVE BBUF(51):="WRITE";                                               15338000
  MOVE BBUF(51):="FLUSH";                                               15340000
  MOVE BBUF(51):="LOCK";                                                15342000
  ;                                                                     15344000
  ;                                                                     15346000
  ;                                                                     15348000
END;                                                                    15350000
                                                                        15352000
PUTOCTALP(CACHE(OFFSET+CDT'MD'READ'CNT),63);                            15354000
PUTOCTALP(CACHE(OFFSET+CDT'MD'WRITE'CNT),70);                           15356000
PUTOCTALP(CACHE(OFFSET+CDT'MD'LKD'CDT),77);                             15358000
PUTOCTALP(CACHE(OFFSET+CDT'MD'IMPED'HD),84);                            15360000
PUTOCTALP(CACHE(OFFSET+CDT'MD'LDR'HEAD),91);                            15362000
PUTOCTALP(CACHE(OFFSET+CDT'MD'MEM'ADDR),95);                            15364000
PUTOCTALP(CACHE(OFFSET+CDT'MD'MEM'ADDR+1),102);                         15366000
PUTOCTALP(CACHE(OFFSET+CDT'MD'DISCREQ),110);                            15368000
PUTOCTALP(CACHE(OFFSET+CDT'MD'LK'CNT),117);                             15370000
PUTOCTALP(CACHE(OFFSET+CDT'MD'LDEV),122);                               15372000
PUTOCTALP(CACHE(OFFSET+CDT'MD'IMPEDED),127);                            15374000
PRINTLINE;                                                              15376000
                                                                        15378000
END;  << FMT'MAP'ENTRY >>                                               15380000
$PAGE                                                                   15382000
<<*******************************************************>>             15384000
<<                                                       >>             15386000
<<                    FMT'FREE                           >>             15388000
<<                                                       >>             15390000
<<*******************************************************>>             15392000
                                                                        15394000
SUBROUTINE FMT'FREE;                                                    15396000
                                                                        15398000
                                                                        15400000
BEGIN                                                                   15402000
CURRENT:=CACHE(CDT'FREE'HEAD);                                          15404000
LAST:=CACHE(CDT'FREE'TAIL);                                             15406000
                                                                        15408000
<< NOW PRINT ALL THE FREE ENTRIES  >>                                   15410000
                                                                        15412000
NEWPAGE;                                                                15414000
MOVE BBUF(55):="FREE ENTRIES";                                          15416000
PRINTLINE;                                                              15418000
SKIPLINES(3);                                                           15420000
FINI:=FALSE;                                                            15422000
WHILE NOT FINI DO                                                       15424000
  BEGIN                                                                 15426000
    IF CURRENT=LAST THEN                                                15428000
      FINI:=TRUE;                                                       15430000
    PRINTLINE;                                                          15432000
    OCTALDUMP(CDT+DOUBLE(CURRENT),CDT+DOUBLE(CURRENT+LEN));             15434000
    CURRENT:=CACHE(CURRENT+3);                                          15436000
    IF CURRENT<=0 THEN                                                  15438000
      FINI:=TRUE;                                                       15440000
  END;                                                                  15442000
END;                                                                    15444000
$PAGE                                                                   15446000
SUBROUTINE HEADER;                                                      15448000
<<****************************************************>>                15450000
<<                                                    >>                15452000
<<                   HEADER                           >>                15454000
<<                                                    >>                15456000
<<****************************************************>>                15458000
                                                                        15460000
BEGIN                                                                   15462000
  NEWPAGE;                                                              15464000
  CURRENT:=0;         << INITIALIZE CURRENT INDEX >>                    15466000
  MOVE BBUF(50):="CACHE DIRECTORY TABLE";                               15468000
  PRINTLINE;                                                            15470000
  SKIPLINES(2);                                                         15472000
                                                                        15474000
<< FORMAT LINE 1 OF THE HEADER >>                                       15476000
                                                                        15478000
  MOVE BBUF(16):="#  ENTRIES";                                          15480000
  PUTOCTALP(CACHE(CDT'ENTRIES),33);        << # OF ENTRIES >>           15482000
  MOVE BBUF(37):="FREE HEAD";                                           15484000
  PUTOCTALP(CACHE(CDT'FREE'HEAD),53);      <<FIRST FREE    >>           15486000
  MOVE BBUF(57):="NUM LDEVS";                                           15488000
  PUTOCTALP(CACHE(CDT'NUM'LDEVS),71);      << # OF LDEVS   >>           15490000
  MOVE BBUF(77):="STOP PEND";                                           15492000
  IF CACHE(CDT'STOP'PND) THEN                                           15494000
    BBUF(92):="T"                                                       15496000
  ELSE BBUF(92):="F";                      << STOP PENDING >>           15498000
  MOVE BBUF(97):="FORCE POST";                                          15500000
  IF CACHE(CDT'FORCE'POST) THEN                                         15502000
    BBUF(110):="T"                                                      15504000
  ELSE BBUF(110):="F";                      << FORCE POST   >>          15506000
  PRINTLINE;                                                            15508000
                                                                        15510000
<< FORMAT LINE 2 OF THE HEADER >>                                       15512000
                                                                        15514000
  MOVE BBUF(16):="ENTRY SIZE";                                          15516000
  PUTOCTALP(CACHE(CDT'SIZE),33);           << ENTRY SIZE   >>           15518000
  MOVE BBUF(37):="FREE TAIL";                                           15520000
  PUTOCTALP(CACHE(CDT'FREE'TAIL),53);      << FREE TAIL    >>           15522000
  MOVE BBUF(57):="DISC HEAD";                                           15524000
  PUTOCTALP(CACHE(CDT'DISC'HEAD),71);      << FIRST CACHED >>           15526000
  MOVE BBUF(77):="SEQ FETCH #";                                         15528000
  PUTOCTALP(CACHE(CDT'SEQ'MINFTCH),93);   << # OF SECTORS >>            15530000
  MOVE BBUF(97):="STOP Q PIN";                                          15532000
  PUTOCTALP(CACHE(CDT'STOP'QUEUE),111);     << PIN NUMBER   >>          15534000
  PRINTLINE;                                                            15536000
                                                                        15538000
<< FORMAT LINE 3 OF THE HEADER >>                                       15540000
                                                                        15542000
  MOVE BBUF(16):="FREE COUNT";                                          15544000
  PUTOCTALP(CACHE(CDT'FREE'COUNT),33);     << FREE COUNT   >>           15546000
  MOVE BBUF(37):="MAX USED";                                            15548000
  PUTOCTALP(CACHE(CDT'MAX'USED),53);       << MAX USED.... >>           15550000
  MOVE BBUF(57):="DST WDS";                                             15552000
  PUTOCTALP(CACHE(CDT'DST'WORDS),71);      << #DST WORDS   >>           15554000
  MOVE BBUF(77):="RAN FETCH";                                           15556000
  PUTOCTALP(CACHE(CDT'RND'MINFTCH),93);   << # OF SECTORS >>            15558000
  PRINTLINE;                                                            15560000
SKIPLINES(2);                                                           15562000
END;                                                                    15564000
$PAGE                                                                   15566000
                                                                        15568000
<<*****************************************************>>               15570000
<<                                                     >>               15572000
<<                    MAINLINE                         >>               15574000
<<                                                     >>               15576000
<<*****************************************************>>               15578000
                                                                        15580000
CDST:=CORE(DOUBLE(CACHE'DST));     << GET DST NUMBER >>                 15582000
IF CDST=0 THEN                                                          15584000
   RETURN;                         << CACHING NOT IN--RETURN >>         15586000
                                                                        15588000
INDXARAY(%76*2):=PAGENO;                                                15590000
CDT:=DSTTOADDR(CDST);              << GET CACHE DST ADDRESS  >>         15592000
HEADER;                                                                 15594000
                                                                        15596000
FOR IX:=0 UNTIL MAXMAP           << INITIALIZE MAP ARRAY >>             15598000
DO MAPDOM(IX):=FALSE;                                                   15600000
                                                                        15602000
                                                                        15604000
INDX:=CACHE(CDT'NUM'LDEVS);                                             15606000
ENTRYSIZE:=CACHE(CDT'SIZE);                                             15608000
CURRENT:=CACHE(CDT'DISC'HEAD);    << INDEX TO FIRST CDT ENTRY >>        15610000
                                                                        15612000
<< PRINT ALL THE CDT ENTRIES >>                                         15614000
                                                                        15616000
WHILE INDX<>0 AND CURRENT<>NOPOINT DO                                   15618000
 BEGIN                                                                  15620000
   FMT'CDT'ENTRY(CURRENT*ENTRYSIZE);                                    15622000
   CURRENT:=CACHE(CURRENT*ENTRYSIZE+CDT'DE'NEXT'LDEV);                  15624000
   INDX:=INDX-1;                                                        15626000
 END;                                                                   15628000
                                                                        15630000
<<   NOW FORMAT ALL THE MAPPED DISC DOMAIN ENTRIES >>                   15632000
                                                                        15634000
NEWPAGE;                                                                15636000
INDX:=0;                                                                15638000
FIRST:=TRUE;                                                            15640000
WHILE INDX<MAXMAP DO                                                    15642000
 BEGIN                                                                  15644000
   IF MAPDOM(INDX) THEN                                                 15646000
      FMT'MAP'ENTRY(INDX*ENTRYSIZE);                                    15648000
   INDX:=INDX+1;                                                        15650000
 END;                                                                   15652000
                                                                        15654000
<< LASTLY, DO AN OCTAL DUMP OF ALL FREE ENTRIES >>                      15656000
                                                                        15658000
<<FMT'FREE; - do not need to print free entries>>              <<sknew>>15660000
                                                                        15662000
END; << PRINTCACHE >>                                                   15664000
                                                                        15666000
$PAGE "PFXMEM: Format first %14 words of memory"                        15668000
$CONTROL SEGMENT=TABLES2                                                15670000
                                                                        15672000
COMMENT                                                                 15674000
                                                                        15676000
Purpose:                                                                15678000
<<    THIS PROCEDURE WILL FORMAT AND PRINT THE FIRST %14    >>          15680000
<<    LOCATIONS OF MEMORY.                                  >>          15682000
                                                                        15684000
Input parameters:                                                       15686000
                                                                        15688000
Output parameters:                                                      15690000
                                                                        15692000
Globals Referenced:                                                     15694000
                                                                        15696000
Globals Altered:                                                        15698000
                                                                        15700000
Data Structures:                                                        15702000
                                                                        15704000
Algorithm:                                                              15706000
                                                                        15708000
;                                                                       15710000
PROCEDURE PFXMEM;                                                       15712000
   BEGIN                                                       <<01.02>>15714000
      DOUBLE SCRATCH1,ABSLOC,SYSOSET,SYSB:=%1000D;             <<01.02>>15716000
      LOGICAL WORK1,WORK2,WORK3,XFLG,WARN:=0;                  <<01.02>>15718000
      INTEGER KEYPARM;                                         <<01.02>>15720000
      LOGICAL ARRAY SCR0(*)=SCRATCH1;                          <<01.02>>15722000
      LOGICAL ARRAY SCR1(*)=SCR0(1);                           <<01.02>>15724000
      DOUBLE DRTPAIR;                                          <<03013>>15726000
      LOGICAL DRTBANK = DRTPAIR;                               <<03013>>15728000
      LOGICAL DRTADDR = DRTPAIR + 1;                           <<03013>>15730000
      LOGICAL MINDRT,MAXDRT,VALID'DRTS;                        <<03013>>15732000
                                                               <<01.02>>15734000
      LOGICAL SUBROUTINE CHECKADR;                             <<01.02>>15736000
      BEGIN                                                    <<01.02>>15738000
         WORK1:=CORE(ABSLOC);                                  <<01.02>>15740000
         WORK2:=CORE(SYSB+SYSOSET);                            <<01.02>>15742000
         WORK2:=WORK2+%1000;                                   <<01.02>>15744000
         WORK3:=CORE(%5D);<<ICS BASE>>                         <<01.02>>15746000
         <<RANGE CHECK TWO VALUES>>                            <<01.02>>15748000
         IF INTEGER(WORK1) <=0 THEN IF INTEGER(WORK2)          <<01.02>>15750000
         <=0 THEN GOTO SETTRUE;                                <<01.02>>15752000
         <<RANGE VALUES ON ESTIMATED ICS "Q" LOC>>             <<01.02>>15754000
         IF WORK1 > WORK3 THEN GOTO SETTRUE;                   <<*9365>>15756000
         IF WORK2 > WORK3 THEN GOTO SETTRUE;                   <<*9365>>15758000
         IF WORK1=WORK2 THEN CHECKADR:=WORK1 ELSE              <<01.02>>15760000
         BEGIN                                                 <<01.02>>15762000
            SCR0:=0;                                           <<01.02>>15764000
            SCR1:=WORK1+XFLG;                                  <<01.02>>15766000
            WORK3:=CORE(SCRATCH1);                             <<01.02>>15768000
            IF INTEGER(WORK3)=KEYPARM THEN CHECKADR:=WORK1 ELSE<<01.02>>15770000
            BEGIN                                              <<01.02>>15772000
               SCR1:=WORK2+XFLG;                               <<01.02>>15774000
               WORK3:=CORE(SCRATCH1);                          <<01.02>>15776000
            IF INTEGER(WORK3)=KEYPARM THEN CHECKADR:=WORK2 ELSE<<01.02>>15778000
               BEGIN                                           <<01.02>>15780000
SETTRUE:                                                       <<01.02>>15782000
                  CHECKADR:=TRUE;                              <<01.02>>15784000
                  RETURN;                                      <<01.02>>15786000
                END;                                           <<01.02>>15788000
            END;                                               <<01.02>>15790000
         END;                                                  <<01.02>>15792000
   END<<CHECKADR>>;                                            <<01.02>>15794000
      SKIPLINES(2);                <<TO SAVE PAPER>>           <<00221>>15796000
     MOVE DBUFFER(23):="******    FIXED LOW MEMORY    ******";          15798000
                                                               <<00221>>15800000
     << CHECK TO SEE IF MEMORY IS FULL OF A CONSTANT>>         <<00221>>15802000
     ABSLOC:=0D;     <<LOCATION TO TEST>>                      <<00221>>15804000
     WORK1:=0;       <<FIRST TEST VALUE>>                      <<00221>>15806000
     WORK2:=0;       <<COMPARE OLD VALUE>>                     <<00221>>15808000
     XFLG:=1;        <<COUNT OF VALUE CHANGES>>                <<00221>>15810000
     DO                                                        <<00221>>15812000
      BEGIN          <<TILL DIFFERENT OR END OF MEMORY>>       <<00221>>15814000
       WORK1:=CORE(ABSLOC);  <<LOAD VALUE FROM MEM>>           <<00221>>15816000
       IF WORK1 <> WORK2 THEN                                  <<00221>>15818000
        BEGIN        <<DIFFERENT VALUES, COUNT THEM>>          <<00221>>15820000
         WORK2:=WORK1;  <<REMEMBER AS NEW OLD>>                <<00221>>15822000
         XFLG:=XFLG+1;  <<COUNT IT>>                           <<00221>>15824000
        END;         <<DIFFERENT VALUES, COUNT THEM>>          <<00221>>15826000
       ABSLOC:=ABSLOC+1D;    <<NEW VALUE>>                     <<00221>>15828000
      END                                                      <<00221>>15830000
       UNTIL  (XFLG=12) LOR (ABSLOC=MAXMEM);                   <<00221>>15832000
                                                               <<00221>>15834000
     IF (XFLG < 12) LOR (ABSLOC > %2000D) THEN <<GLITCHED?>>   <<00221>>15836000
      BEGIN          <<LOW CORE IS BAD, MADE IT TO EOM>>       <<00221>>15838000
        PRINTLINE;          <<PRINT HEADER LINE>>              <<00221>>15840000
       IF ABSLOC < MAXMEM THEN                                 <<00221>>15842000
        BEGIN             <<ALL OF MEMORY HAS IT>>             <<00221>>15844000
         MOVE BBUF:="FIRST        MEMORY LOCATIONS CONTAIN: "; <<00221>>15846000
         @PBUF:=@BBUF+6;       <<FOR PUTTING COUNT>>           <<00221>>15848000
         PUTDNUMP(ABSLOC);     <<OF BAD LOCATIONS>>            <<00221>>15850000
        END                                                    <<00221>>15852000
       ELSE                                                    <<00221>>15854000
       MOVE BBUF:="ALL OF MEMORY LOCATIONS CONTAIN:      ";    <<00221>>15856000
       PRINTLINE;                                              <<00221>>15858000
       IF ABSLOC > 177777D THEN ABSLOC:=177777D; <<ONE BANK>>  <<00221>>15860000
       CHARFLAG:=TRUE;      <<CHARACTER DATA ALSO>>            <<00221>>15862000
       OCTALDUMP(0D,ABSLOC);<<DUMP SECTION>>                   <<00221>>15864000
       TERMINATE;                                              <<00221>>15866000
      END;           <<LOW CORE IS BAD, MADE IT TO EOM>>       <<00221>>15868000
                                                               <<00221>>15870000
     PRINTLINE;                                                         15872000
     SKIPLINES(2);                                             <<03013>>15874000
     MOVE DBUFFER:="(ADDR %0)   CODE SEGMENT TABLE POINTER";   <<03013>>15876000
     SCRATCH1:=0D;                                                      15878000
     WORK1:=CORE(SCRATCH1);                                             15880000
     @PBUF:=@BBUF+52;                                          <<03013>>15882000
     PUTNUM(WORK1);                                                     15884000
     PRINTLINE;                                                         15886000
     SKIPLINES(1);                                                      15888000
      ABSLOC:=0D;                                              <<01.02>>15890000
      SYSOSET:=1D;                                             <<01.02>>15892000
      XFLG:=1;                                                 <<01.02>>15894000
      KEYPARM:=4;                                              <<01.02>>15896000
      WORK1:=CHECKADR;<<COMPARE FOR VALID ADDRESSES>>          <<01.02>>15898000
      IF WORK1.(0:1) THEN BEGIN WARN:=WARN LOR 1;END ELSE      <<01.02>>15900000
      CSTFLG:=WORK1;                                           <<01.02>>15902000
     MOVE DBUFFER:=("(ADDR %1) ",                              <<03013>>15904000
       "  EXTENDED CODE SEGMENT TABLE POINTER");               <<03013>>15906000
     SCRATCH1:=1D;                                                      15908000
     WORK1:=CORE(SCRATCH1);                                             15910000
     @PBUF:=@BBUF+52;                                          <<03013>>15912000
     PUTNUM(WORK1);                                                     15914000
     PRINTLINE;                                                         15916000
     SKIPLINES(1);                                                      15918000
     MOVE DBUFFER:="(ADDR %2)   DATA SEGMENT TABLE POINTER";   <<03013>>15920000
     SCRATCH1:=2D;                                                      15922000
     WORK1:=CORE(SCRATCH1);                                             15924000
     @PBUF:=@BBUF+52;                                          <<03013>>15926000
     PUTNUM(WORK1);                                                     15928000
     PRINTLINE;                                                         15930000
     SKIPLINES(1);                                                      15932000
      ABSLOC:=2D;                                              <<01.02>>15934000
      SYSOSET:=2D;                                             <<01.02>>15936000
      XFLG:=1;                                                 <<01.02>>15938000
      KEYPARM:=4;                                              <<01.02>>15940000
      WORK1:=CHECKADR;<<COMPARE FOR VALID ADDRESSES>>          <<01.02>>15942000
      IF WORK1.(0:1) THEN BEGIN WARN:=WARN LOR 2;END ELSE      <<01.02>>15944000
      DSTFLG:=WORK1;                                           <<01.02>>15946000
     MOVE DBUFFER:="(ADDR %3)                     ";           << MCW >>15948000
     SCRATCH1:=3D;                                                      15950000
     WORK1:=CORE(SCRATCH1);                                             15952000
     @PBUF:=@BBUF+52;                                          <<03013>>15954000
     PUTNUM(WORK1);                                                     15956000
     PRINTLINE;                                                         15958000
     SKIPLINES(1);                                                      15960000
     MOVE DBUFFER:="(ADDR %4)   CURRENT PCB POINTER  ";        <<03013>>15962000
     SCRATCH1:=4D;                                                      15964000
     WORK1:=CORE(SCRATCH1);                                             15966000
     @PBUF:=@BBUF+52;                                          <<03013>>15968000
     PUTNUM(WORK1);                                                     15970000
     PRINTLINE;                                                         15972000
     SKIPLINES(1);                                                      15974000
     MOVE DBUFFER:="(ADDR %5)   INTERRUPT STACK BASE  ";       <<03013>>15976000
     SCRATCH1:=5D;                                                      15978000
     WORK1:=CORE(SCRATCH1);                                             15980000
     @PBUF:=@BBUF+52;                                          <<03013>>15982000
     PUTNUM(WORK1);                                                     15984000
     PRINTLINE;                                                         15986000
     SKIPLINES(1);                                                      15988000
     MOVE DBUFFER:="(ADDR %6)   INTERRUPT STACK LIMIT  ";      <<03013>>15990000
     SCRATCH1:=6D;                                                      15992000
     WORK1:=CORE(SCRATCH1);                                             15994000
     @PBUF:=@BBUF+52;                                          <<03013>>15996000
     PUTNUM(WORK1);                                                     15998000
     PRINTLINE;                                                         16000000
     SKIPLINES(1);                                                      16002000
     IF NOT ICF55'OR'MM                                        <<s7921>>16004000
     THEN BEGIN                                                <<03013>>16006000
     MOVE DBUFFER:="(ADDR %7)   INTERRUPT MASK  ";             <<03013>>16008000
     SCRATCH1:=7D;                                                      16010000
     WORK1:=CORE(SCRATCH1);                                             16012000
     @PBUF:=@BBUF+52;                                          <<03013>>16014000
     PUTNUM(WORK1);                                                     16016000
     PRINTLINE;                                                         16018000
     SKIPLINES(1);                                             <<03013>>16020000
     END;  <<DONT DUMP INTERRUPT MASK (7) FOR ICF/55>>         <<03013>>16022000
                                                               <<03013>>16024000
     TEST'DRT'INFO(MINDRT,MAXDRT,VALID'DRTS,1);                <<03013>>16026000
            <<PRINT CONTENTS OF:      >>                       <<03013>>16028000
            << DRTBANK  (ABSOLUTE %10D) >>                     <<03013>>16030000
            << DRTADDR  (ABSOLUTE %11D) >>                     <<03013>>16032000
                                                               <<03013>>16034000
     <<FORMAT INTERRUPT MASK FOR ICF/55>>                      <<03013>>16036000
                                                               <<03013>>16038000
     IF ICF55'OR'MM                                            <<s7921>>16040000
     THEN BEGIN                                                <<03013>>16042000
       MOVE DBUFFER:="(ADDR %32)  INTERRUPT MASK    IMB-0";    <<03013>>16044000
       SCRATCH1 := %32D;                                       <<03013>>16046000
       WORK1 := CORE(SCRATCH1);                                <<03013>>16048000
       @PBUF:=@BBUF + 52;                                      <<03013>>16050000
       PUTNUM( WORK1);                                         <<03013>>16052000
       PRINTLINE;                                              <<03013>>16054000
       MOVE DBUFFER:="(ADDR %33)                    IMB-1";    <<03013>>16056000
       SCRATCH1 := %33D;                                       <<03013>>16058000
       WORK1 := CORE(SCRATCH1);                                <<03013>>16060000
       @PBUF:=@BBUF + 52;                                      <<03013>>16062000
       PUTNUM( WORK1);                                         <<03013>>16064000
       PRINTLINE;                                              <<03013>>16066000
       MOVE DBUFFER:="(ADDR %34)                    IMB-2";    <<03013>>16068000
       SCRATCH1 := %34D;                                       <<03013>>16070000
       WORK1 := CORE(SCRATCH1);                                <<03013>>16072000
       @PBUF:=@BBUF + 52;                                      <<03013>>16074000
       PUTNUM( WORK1);                                         <<03013>>16076000
       PRINTLINE;                                              <<03013>>16078000
       MOVE DBUFFER:="(ADDR %35)                    IMB-3";    <<03013>>16080000
       SCRATCH1 := %35D;                                       <<03013>>16082000
       WORK1 := CORE(SCRATCH1);                                <<03013>>16084000
       @PBUF:=@BBUF + 52;                                      <<03013>>16086000
       PUTNUM( WORK1);                                         <<03013>>16088000
       PRINTLINE;                                              <<03013>>16090000
       SKIPLINES(1);                                           <<03013>>16092000
     END;  <<FORMAT INTERRUPT MASKS FOR ICF/55 >>              <<03013>>16094000
      IF INTEGER(WARN) <> 0 THEN                               <<01.02>>16096000
      BEGIN                                                    <<01.02>>16098000
         SKIPLINES(2);                                         <<01.02>>16100000
         MOVE DBUFFER:=                                        <<01.02>>16102000
         "**** WARNING! PROBABLE BAD ADDRESS FOR";             <<01.02>>16104000
         MOVE DBUFFER(20):=                                    <<01.02>>16106000
       "ONE/ALL OF THE FOLLOWING: ****";                       <<01.02>>16108000
         PRINTLINE;                                            <<01.02>>16110000
         SKIPLINES(1);                                         <<01.02>>16112000
       IF WARN.(15:1) THEN                                     <<01.02>>16114000
       BEGIN                                                   <<01.02>>16116000
          MOVE DBUFFER:="CST BASE";                            <<01.02>>16118000
          PRINTLINE;                                           <<01.02>>16120000
       END;                                                    <<01.02>>16122000
       IF WARN.(14:1) THEN                                     <<01.02>>16124000
       BEGIN                                                   <<01.02>>16126000
          MOVE DBUFFER:="DST BASE";                            <<01.02>>16128000
          PRINTLINE;                                           <<01.02>>16130000
       END;                                                    <<01.02>>16132000
       IF WARN.(13:1) THEN                                     <<01.02>>16134000
       BEGIN                                                   <<01.02>>16136000
          MOVE DBUFFER:="PCB BASE";                            <<01.02>>16138000
          PRINTLINE;                                           <<01.02>>16140000
       END;                                                    <<01.02>>16142000
       IF WARN.(12:1) THEN                                     <<01.02>>16144000
       BEGIN                                                   <<01.02>>16146000
          MOVE DBUFFER:="ICS BASE";                            <<01.02>>16148000
          PRINTLINE;                                           <<01.02>>16150000
       END;                                                    <<01.02>>16152000
   END;                                                        <<01.02>>16154000
END<<PFXMEM>>;                                                 <<01.02>>16156000
                                                                        16158000
$PAGE "PRINTCST: Format CST table"                                      16160000
$CONTROL SEGMENT=TABLES2                                                16162000
COMMENT                                                                 16164000
                                                                        16166000
Purpose:                                                                16168000
     this procedure formats and prints the code segment table           16170000
                                                                        16172000
Input parameters:                                                       16174000
                                                                        16176000
Output parameters:                                                      16178000
                                                                        16180000
Globals Referenced:                                                     16182000
                                                                        16184000
Globals Altered:                                                        16186000
                                                                        16188000
Data Structures:                                                        16190000
                                                                        16192000
Algorithm:                                                              16194000
                                                                        16196000
;                                                                       16198000
PROCEDURE PRINTCST;                                                     16200000
      BEGIN                                                             16202000
         DOUBLE LOCCST,STENT,ENDENT;                                    16204000
         INTEGER NENTRYS,INDX,WORK1,WORK2;                              16206000
         INTEGER I;             <<TEMPORARY>>                  <<00221>>16208000
         LOGICAL LENGTH;                                       <<01171>>16210000
         LOGICAL ARRAY LTMPBUF(0:11);   <<FOR SEG NAME>>       <<00221>>16212000
         BYTE ARRAY TMPBUF(*)=LTMPBUF; <<FOR CHARACTER WORK>>  <<00221>>16214000
         LOGICAL ARRAY NTRYBUF(0:14);  <<FOR TABLE ENTRY>>     <<00221>>16216000
         BYTE ARRAY BNTRYBUF(*)=NTRYBUF;                       <<00221>>16218000
         LOGICAL ARRAY SCR0(*)=LOCCST;                         <<01.02>>16220000
         LOGICAL ARRAY SCR1(*)=SCR0(1);                        <<01.02>>16222000
         NEWPAGE;                                                       16224000
         INDXARAY(1*2):=PAGENO;                                         16226000
         MOVE DBUFFER(23):="******    CST TABLE    ******";             16228000
         PRINTLINE;                                                     16230000
         LOCCST:=VERIFYP(%1,%1001D);                           <<01.02>>16232000
         IF <> THEN                                            <<01.02>>16234000
         BEGIN                                                 <<01.02>>16236000
            IF LOCCST <> 0D THEN WARNING ELSE                  <<01.02>>16238000
            IF (SCR1:=CSTFLG) <> 0 THEN WARNING ELSE           <<01.02>>16240000
            BEGIN                                              <<01.02>>16242000
               NOFORMT';                                       <<00221>>16244000
               GO BAILOUT;                                     <<01.02>>16246000
            END;                                               <<01.02>>16248000
         END;                                                  <<01.02>>16250000
         PCHEAD;                                                        16252000
         IF LOCCST < 1D THEN                                            16254000
         BEGIN                                                          16256000
            MOVE BBUF:="INVALID CST POINTER";                           16258000
            PRINTLINE;                                                  16260000
            CSTBAD:=TRUE;                                               16262000
            CSTBAD':=TRUE;                                              16264000
            GO TO BAILOUT;                                              16266000
         END;                                                           16268000
         NENTRYS:=CORE(LOCCST);                                         16270000
         IF NENTRYS >CSTMAXENT THEN                            << MCW >>16272000
         BEGIN                                                          16274000
TOOBIG:                                                                 16276000
            MOVE BBUF:="INVALID NUMBER OF CST ENTRYS";                  16278000
            PRINTLINE;                                                  16280000
            CSTBAD:=TRUE;                                               16282000
            CSTBAD':=TRUE;                                              16284000
            GO TO BAILOUT;                                              16286000
         END;                                                           16288000
         IF NENTRYS < 1 THEN GO TO TOOBIG;                              16290000
   CST'ADDRESS:=LOCCST;                                        << WBT >>16292000
         FOR INDX:=1 UNTIL NENTRYS                                      16294000
         DO                                                             16296000
         BEGIN                                                          16298000
            LOCCST:=LOCCST+4D;                                          16300000
            IF (WORK1:=CORE(LOCCST)) = %100000                 <<s7921>>16302000
            THEN GOTO B2;                                      << WBT >>16304000
            @PBUF:=@BBUF;                                               16306000
            PUTNUMP(INDX);     <<SEGMENT #>>                            16308000
            @PBUF:=@BBUF+8;                                    <<01.3A>>16310000
            IF SAME'SYS THEN                                   <<01.3A>>16312000
            BEGIN                                              <<01.3A>>16314000
              TOS:=NAMECST(INDX);                              <<01.3A>>16316000
              DEL;                                             <<01.3A>>16318000
            END;                                               <<01.3A>>16320000
            @PBUF:=@BBUF+28;                                   <<00221>>16322000
            IF WORK1.(1:1)=1 THEN MOVE PBUF:="PRIV" <<MODE>>   << WBT >>16324000
            ELSE MOVE PBUF:="USER";                                     16326000
            @PBUF:=@BBUF+38;                                   <<00221>>16328000
            IF WORK1.(2:1)=1 THEN MOVE PBUF:="ON"  <<REF BIT>> << WBT >>16330000
            ELSE MOVE PBUF:="OFF";                                      16332000
            @PBUF:=@BBUF+48;                                   <<00221>>16334000
            IF WORK1.(3:1)=1 THEN  <<TRACE BIT>>               << WBT >>16336000
            MOVE PBUF:="ON"                                             16338000
            ELSE MOVE PBUF:="OFF";                                      16340000
            LENGTH := WORK1.(4:12) * 4; << SEGMENT LENGTH >>   <<01171>>16342000
            @PBUF:=@BBUF+56;                                   <<00221>>16344000
            PUTNUMP(LENGTH);                                   <<01171>>16346000
            WORK2:=CORE(LOCCST+2D);                                     16348000
            IF PMAPFILE<>0 THEN                                << WBT >>16350000
             BEGIN       <<SEE IF PMAP FOR THIS MODULE IS ON>> <<00221>>16352000
              @MEMBUFP:=@MEMBUF;      <<INIT TABLE ADDRESS>>   <<00221>>16354000
              MOVE TMPBUF:=BBUF(8),(16);  <<TRANSFER NAME>>    <<00221>>16356000
              I:=0;            <<ZAP THE SEG NUMBER>>          <<00221>>16358000
              DO                                               <<00221>>16360000
               BEGIN                                           <<00221>>16362000
               IF TMPBUF(I)="(" THEN MOVE TMPBUF(I):="     ";  <<00221>>16364000
               END  UNTIL (I:=I+1) > 16;  <<TAKE IT ALL OFF>>  <<00221>>16366000
              DO                                               <<00221>>16368000
               BEGIN                                           <<00221>>16370000
                MOVE NTRYBUF:=MEMBUFP,(15);  <<MOVE ENTRY>>    <<00221>>16372000
                IF TMPBUF=BNTRYBUF,(16) THEN                   <<00221>>16374000
                 BEGIN               <<FOUND A MATCH>>         <<00221>>16376000
                  IF BBUF(63)=" " THEN  <<FIRST ONE??>>        <<00221>>16378000
                    BEGIN              <<SEGMENT IS DEFINED>>  <<00221>>16380000
                     PROCINDEX(INDX):=0;  <<NOT GOOD YET>>     <<00221>>16382000
                     BBUF(63):="?";  <<IN CASE LENGTH WRONG>>  <<*8875>>16384000
                    END;                                       <<00221>>16386000
                  IF LENGTH = NTRYBUF(8) THEN                  <<01171>>16388000
                   BEGIN             <<LENGTH MATCHES>>        <<00221>>16390000
                    BBUF(63):="=";   <<LENGTH IS OK>>          <<00221>>16392000
                    PROCINDEX(INDX):=MEMBUFP(14);  <<ADDRESS>> <<00221>>16394000
                   END;              <<LENGTH MATCHES>>        <<00221>>16396000
                 END;                <<NAME MATCHES>>          <<00221>>16398000
                @MEMBUFP:=@MEMBUFP+15;   <<NEXT ENTRY>>        <<00221>>16400000
               END                                             <<00221>>16402000
                UNTIL MEMBUFP(14) = 0;   <<TILL END OF LIST>>  <<00221>>16404000
             END;        <<PMAP AND THIS IS MAIN CST>>         <<00221>>16406000
                                                               <<00221>>16408000
            IF WORK1.(0:1)=1 AND CORE(LOCCST+1D).(1:2)=0 THEN  << WBT >>16410000
            BEGIN     <<ABSENT BIT ON>>                                 16412000
                  @PBUF:=@BBUF+89;                             <<00221>>16414000
                  TOS:=WORK2.(8:8); <<PUSH HODA FOR DISC  >>   << WBT >>16416000
                  TOS:=CORE(LOCCST+3D);<<PUSH LODA         >>  <<00221>>16418000
                  PUTDNUMP(*);       <<CONVERT DISC ADDRESS>>  <<00221>>16420000
                  @PBUF:=@BBUF+78;                             <<00221>>16422000
                  PUTNUMP(WORK2.(0:8));  <<PRINT DISC LDEV >>  <<00221>>16424000
                  GO TO B1;                                             16426000
            END;    <<ABSENT BIT ON>>                          << WBT >>16428000
            @PBUF:=@BBUF+76;       <<PRINT CLOSE TO PB ADDR>>  <<00221>>16430000
            PUTNUMP(WORK2);   << THE BANK ADDRESS   >>         << WBT >>16432000
            @PBUF:=@BBUF+68;                                   <<00221>>16434000
            WORK1:=CORE(LOCCST+3D);                                     16436000
            PUTNUM(WORK1);    <<ABSOLUTE PB ADDR>>                      16438000
B1:                                                                     16440000
            WORK1:=CORE(LOCCST+1D);                            << WBT >>16442000
            PRINTFLAGS(WORK1);                                 << WBT >>16444000
            PRINTLINE;                                                  16446000
            IF LINECOUNT=LNSPERPG THEN                         <<00221>>16448000
              BEGIN                                            <<00221>>16450000
                NEWPAGE;                                       <<00221>>16452000
                  MOVE DBUFFER(23):=                           <<00221>>16454000
                   "******    CST TABLE    ******";            << WBT >>16456000
                PRINTLINE;                                     <<00221>>16458000
                PCHEAD;                                        <<00221>>16460000
              END;                                             <<00221>>16462000
B2:                                                            <<01.02>>16464000
         END;                                                  <<01.02>>16466000
BAILOUT:                                                       <<01.02>>16468000
      END<<PRINTCST>>;                                         <<01.02>>16470000
                                                                        16472000
                                                                        16474000
$PAGE "PRINTXCST: Format XCST table"                                    16476000
$CONTROL SEGMENT=TABLES2                                                16478000
COMMENT                                                                 16480000
                                                                        16482000
Purpose:                                                                16484000
     Format XCST table                                                  16486000
                                                                        16488000
Input parameters:                                                       16490000
                                                                        16492000
Output parameters:                                                      16494000
                                                                        16496000
Globals Referenced:                                                     16498000
                                                                        16500000
Globals Altered:                                                        16502000
                                                                        16504000
Data Structures:                                                        16506000
                                                                        16508000
Algorithm:                                                              16510000
                                                                        16512000
;                                                                       16514000
PROCEDURE PRINTXCST;                                           <<01.02>>16516000
BEGIN                                                          <<01.02>>16518000
                                                               <<01.02>>16520000
DOUBLE SCRATCH,DADDR;                                          <<01.02>>16522000
LOGICAL ARRAY SCR0(*)=SCRATCH;                                 <<01.02>>16524000
LOGICAL ARRAY SCR1(*)=SCR0(1);                                 <<01.02>>16526000
LOGICAL WORK1,WORK2,WORK3;                                     <<01.02>>16528000
INTEGER ENTNUM,INDX,COUNT,NENTRYS;                             <<01.02>>16530000
LOGICAL ARRAY DSTA(0:3);                                       <<01.02>>16532000
                                                               <<01.02>>16534000
<<BEGIN BODY OF PROCEDURE>>                                    <<01.02>>16536000
                                                               <<01.02>>16538000
CSTBAD':=FALSE;                                                <<01.02>>16540000
NEWPAGE;                                                       <<01.02>>16542000
INDXARAY(4*2):=PAGENO;                                         <<01.02>>16544000
MOVE DBUFFER(23):=                                             <<01.02>>16546000
"******    EXTENDED CST TABLE    ******";                      <<01.02>>16548000
PRINTLINE;                                                     <<01.02>>16550000
FILCSTBLK;<<SET UP CSTBLOCK ARRAY>>                            <<01.02>>16552000
WORK1:=CORE(CSTB' D);<<CURRENT CST BLOCK>>                     <<01.02>>16554000
WORK2:=CORE(%4D);<<CURRENT PCB >>                              <<01.02>>16556000
IF INTEGER(WORK2) = 0 THEN<<NO CURRENT CST BLOCK>>             <<01.02>>16558000
BEGIN                                                          <<01.02>>16560000
   SKIPLINES(1);                                               <<01.02>>16562000
   MOVE DBUFFER(19):=                                          <<01.02>>16564000
"******  NO CST BLOCK IS CURRENTLY IN USE  ******";            <<01.02>>16566000
   PRINTLINE;                                                  <<01.02>>16568000
   SKIPLINES(1);                                               <<01.02>>16570000
END;                                                           <<01.02>>16572000
IF INTEGER(DSTFLG)=0 THEN<<CANT GET TO DST#43(CSTBLOCK)>>      <<01.02>>16574000
BEGIN                                                          <<01.02>>16576000
                                                               <<01.02>>16578000
BAILOUT:                                                       <<01.02>>16580000
   CSTBAD':=TRUE;                                              <<01.02>>16582000
   MOVE DBUFFER:=                                              <<01.02>>16584000
"****** BAD ADR. POINTERS OR NO ENTRYS IN TABLE ******";       <<01.02>>16586000
   PRINTLINE;                                                  <<01.02>>16588000
   RETURN;                                                     <<01.02>>16590000
END;                                                           <<01.02>>16592000
COUNT:=ICSTBLK;<<GET TOTAL BLOCK ENTRYS>>                      <<01.02>>16594000
IF COUNT <=0 THEN GO BAILOUT;                                  <<01.02>>16596000
INDX:=1;                                                       <<01.02>>16598000
WHILE INDX < COUNT DO <<MAIN LOOP>>                            <<01.02>>16600000
BEGIN<<GOLLY! THIS IS A DESCRIPTIVE COMMENT...AY WOT!>>        <<01.02>>16602000
   WORK2:=LCSTBLK(INDX);                                       <<01.02>>16604000
   IF INTEGER(WORK2) <=0 THEN GO BUMP;                         <<01.02>>16606000
   SCRATCH:=0D;                                                <<01.02>>16608000
   SCR1:=WORK2+DSTFLG;<<ABS START ADR>>                        <<01.02>>16610000
   NENTRYS:=INTEGER(CORE(SCRATCH));                            <<s7921>>16612000
   SCR1:=SCR1+4;<<SET FOR CST ENTRY IN BLOCK>>                 <<01.02>>16614000
   ENTNUM:=%1;                                                 << MCW >>16616000
      SKIPLINES(2);                                            << WBT >>16618000
   PCXHEAD;<<PRINT HDR>>                                       <<01.02>>16620000
   WHILE NENTRYS >0 DO                                         <<01.02>>16622000
   BEGIN<<PRINT A BLOCK OF CST ENTRYS>>                        <<01.02>>16624000
      WORK3:=0;                                                <<01.02>>16626000
      WHILE INTEGER(WORK3) < 4 DO                              <<01.02>>16628000
      BEGIN                                                    <<01.02>>16630000
         DSTA(WORK3):=CORE(SCRATCH+DOUBLE(WORK3));             <<01.02>>16632000
         WORK3:=WORK3+1;                                       <<01.02>>16634000
      END;                                                     <<01.02>>16636000
      IF DSTA=%100000 THEN GO SKIP1;<<NOT IN USE>>             <<01.02>>16638000
      @PBUF:=@BBUF;                                            <<01.02>>16640000
      PUTNUMP(ENTNUM);                                         <<01.02>>16642000
         @PBUF:=@BBUF+28;                                      <<00221>>16644000
      IF DSTA.(1:1)=1 THEN MOVE PBUF:="PRIV"   <<MODE BIT>>    << WBT >>16646000
      ELSE MOVE PBUF:="USER";                                  <<01.02>>16648000
         @PBUF:=@BBUF+38;                                      <<00221>>16650000
      IF DSTA.(2:1)=1 THEN MOVE PBUF:="ON"   <<REF BIT>>       << WBT >>16652000
      ELSE MOVE PBUF:="OFF";                                   <<01.02>>16654000
         @PBUF:=@BBUF+48;                                      <<00221>>16656000
      IF DSTA.(3:1)=1 THEN MOVE PBUF:="ON"  <<TRACE BIT>>      << WBT >>16658000
      ELSE MOVE PBUF:="OFF";                                   <<01.02>>16660000
      @PBUF:=@BBUF+56;                                         <<00221>>16662000
      WORK3:=DSTA.(4:12);                                      <<01.02>>16664000
      PUTNUMP(WORK3*4);<<SEG. LENGTH>>                         <<01.02>>16666000
      PRINTFLAGS(DSTA(1));                                     << WBT >>16668000
      IF DSTA.(0:1) =1 AND DSTA(1).(1:2)=0 THEN                << WBT >>16670000
      BEGIN                                                    <<01.02>>16672000
            @PBUF:=@BBUF+89;                                   <<00221>>16674000
            TOS:=DSTA(2).(8:8); <<HODA>>                       << WBT >>16676000
            TOS:=DSTA(3);<<LODA>>                              <<01.02>>16678000
            DADDR:=TOS;                                        <<01.02>>16680000
            PUTDNUMP(DADDR);                                   <<01.02>>16682000
           @PBUF:=@BBUF+78;                                    << WBT >>16684000
            PUTNUMP(DSTA(2).(0:8));<<LDEV>>                    <<01.02>>16686000
            GO SKIP;                                           <<01.02>>16688000
      END; << ABSENT TEST >>                                   << WBT >>16690000
      @PBUF:=@BBUF+68;                                         << WBT >>16692000
      PUTNUM(DSTA(3));<<ABS PB ADDRESS>>                       <<01.02>>16694000
         @PBUF:=@BBUF+76;                                      <<00221>>16696000
      PUTNUMP(DSTA(2));   <<BANK NO.>>                         <<01791>>16698000
SKIP:                                                          <<01.02>>16700000
      @PBUF:=@BBUF+8;                                          <<00221>>16702000
      IF WORK1=SCR1-4 THEN <<CURRENT/LAST USED BLOCK>>         <<01.02>>16704000
      PBUF:="*";                                               <<01.02>>16706000
      @PBUF:=@BBUF+10;                                         <<00221>>16708000
      PUTNUMP(INDX);<<BLOCK INDEX>>                            <<01.02>>16710000
      PRINTLINE;                                               <<01.02>>16712000
      IF LINECOUNT > 58 LAND NENTRYS > 1 THEN PCXHEAD;         <<00221>>16714000
SKIP1:                                                         <<01.02>>16716000
      SCR1:=SCR1+4;<<NEXT CST ENTRY>>                          <<01.02>>16718000
      ENTNUM:=ENTNUM+1;                                        <<01.02>>16720000
      NENTRYS:=NENTRYS-1;                                      <<01.02>>16722000
   END;                                                        <<01.02>>16724000
GET'PNAME(INDX,BBUF(41));                                      <<*2018>>16724100
IF BBUF(41) >= "A" AND BBUF <= "Z" THEN                        <<*2018>>16724200
  BEGIN                                                        <<*2018>>16724300
  @PBUF := @BBUF + 31;                                         <<*2018>>16724500
  PUTNUMP(INDX);                                               <<*2018>>16724600
  MOVE BBUF := "PROGRAM NAME FOR CSTX BLOCK INDEX";            <<*2018>>16724650
  MOVE BBUF(37) := ":   ";                                     <<*2018>>16724660
  PRINTLINE;                                                   <<*2018>>16724700
  END                                                          <<*2018>>16724800
ELSE BLANKBUF;                                                 <<*2018>>16724900
BUMP:                                                          <<01.02>>16726000
   INDX:=INDX+1;                                               <<01.02>>16728000
END;                                                           <<01.02>>16730000
END<<PRINTXCST>>;                                              <<01.02>>16732000
                                                                        16734000
$PAGE "PRINTFLAGS: Decode CST/DST entry flags"                          16736000
$CONTROL SEGMENT=TABLES2                                                16738000
COMMENT                                                                 16740000
                                                                        16742000
Purpose:                                                                16744000
     A common routine for decoding CST/DST entry flags.                 16746000
     Called by PRINTCST, PRINTXCST, PRINTDST.                           16748000
                                                                        16750000
Input parameters:                                                       16752000
                                                                        16754000
Output parameters:                                                      16756000
                                                                        16758000
Globals Referenced:                                                     16760000
                                                                        16762000
Globals Altered:                                                        16764000
                                                                        16766000
Data Structures:                                                        16768000
                                                                        16770000
Algorithm:                                                              16772000
                                                                        16774000
;                                                                       16776000
PROCEDURE PRINTFLAGS(F);                                       << WBT >>16778000
VALUE F; LOGICAL F;                                            << WBT >>16780000
COMMENT  PUT FLAG BITS FOR A SEGMENT INTO PBUF;                << WBT >>16782000
BEGIN                                                          << WBT >>16784000
   IF F.(0:1) THEN BBUF(100):="D";                             << WBT >>16786000
   IF F.(1:1) THEN BBUF(102):="R";                             << WBT >>16788000
   IF F.(2:1) THEN BBUF(104):="I";                             << WBT >>16790000
   IF F.(3:1) THEN BBUF(106):="S";                             << WBT >>16792000
   IF F.(4:1) THEN BBUF(108):="M";                             << WBT >>16794000
   IF F.(5:1) THEN BBUF(110):="F";                             << WBT >>16796000
   IF F.(6:1) THEN BBUF(112):="S";                             << WBT >>16798000
   IF F.(7:1) THEN BBUF(114):="C";                             << WBT >>16800000
   IF F.(8:1) THEN BBUF(116):="W";                             << WBT >>16802000
END;                                                           << WBT >>16804000
                                                                        16806000
$PAGE "PCHEAD: Print formatted CST table header"                        16808000
$CONTROL SEGMENT=TABLES2                                                16810000
COMMENT                                                                 16812000
                                                                        16814000
Purpose:                                                                16816000
     Print formatted CST table header                                   16818000
                                                                        16820000
Input parameters:                                                       16822000
                                                                        16824000
Output parameters:                                                      16826000
                                                                        16828000
Globals Referenced:                                                     16830000
                                                                        16832000
Globals Altered:                                                        16834000
                                                                        16836000
Data Structures:                                                        16838000
                                                                        16840000
Algorithm:                                                              16842000
                                                                        16844000
;                                                                       16846000
PROCEDURE PCHEAD;                                                       16848000
      BEGIN                                                             16850000
   LOGICAL FLAG:=FALSE;                                        <<01.02>>16852000
   ENTRY PCXHEAD;                                              <<01.02>>16854000
      IF FLAG THEN                                             <<01.02>>16856000
PCXHEAD:                                                       <<01.02>>16858000
      FLAG:=TRUE;                                              <<01.02>>16860000
   MOVE BBUF(100):="              C";                          <<01875>>16862000
   PRINTLINE;                                                  << WBT >>16864000
   MOVE BBUF(100):="  R I       S R";                          <<02012>>16866000
   PRINTLINE;                                                  << WBT >>16868000
          MOVE BBUF:=                                          <<00221>>16870000
           "SEGMENT                            REFERENCE";     <<00221>>16872000
          MOVE BBUF(56):=                                      <<00221>>16874000
           "SEGMENT    ABSOLUTE     BANK/     DISC";           <<00221>>16876000
          MOVE BBUF(100):="  O M       Y E ";                  <<02012>>16878000
      IF FLAG THEN                                             <<01.02>>16880000
      BEGIN                                                    <<01.02>>16882000
         MOVE BBUF(9):=                                        <<00221>>16884000
         "CSTBLK/PROCESS";                                     <<00221>>16886000
      END;                                                     <<01.02>>16888000
         PRINTLINE;                                                     16890000
          MOVE BBUF:=                                          <<00221>>16892000
           "NUMBER    SEGMENT NAME      MODE      BIT";        <<00221>>16894000
          MOVE BBUF(47):=                                      <<00221>>16896000
           "TRACE    LENGTH     ADDRESS      /LDEV";           << WBT >>16898000
      IF FLAG THEN                                             <<01.02>>16900000
      BEGIN                                                    <<01.02>>16902000
         MOVE BBUF(9):=                                        <<00221>>16904000
         "    INDX     ";                                      <<00221>>16906000
      END;                                                     <<01.02>>16908000
          MOVE BBUF(89):=                                      <<00221>>16910000
           "ADDRESS      C I       S S";                       <<02012>>16912000
         PRINTLINE;                                                     16914000
   MOVE BBUF:="-------   ------------      ----   ---------",2;<< WBT >>16916000
   MOVE    *:="   -----    -------    --------     -----    ",2;        16918000
   MOVE    *:="-------      - -       - -  ";                  <<02012>>16920000
   IF FLAG THEN MOVE BBUF(9):="--------------";                << WBT >>16922000
   PRINTLINE;                                                  << WBT >>16924000
         SKIPLINES(1);                                                  16926000
      END;                                                              16928000
                                                                        16930000
$PAGE "PDHEAD: Print formatted DST table header"                        16932000
$CONTROL SEGMENT=TABLES2                                                16934000
COMMENT                                                                 16936000
                                                                        16938000
Purpose:                                                                16940000
     Print formatted DST table header                                   16942000
                                                                        16944000
Input parameters:                                                       16946000
                                                                        16948000
Output parameters:                                                      16950000
                                                                        16952000
Globals Referenced:                                                     16954000
                                                                        16956000
Globals Altered:                                                        16958000
                                                                        16960000
Data Structures:                                                        16962000
                                                                        16964000
Algorithm:                                                              16966000
                                                                        16968000
;                                                                       16970000
PROCEDURE PDHEAD;                                                       16972000
      BEGIN                                                             16974000
          IF LINECOUNT = LNSPERPG THEN NEWPAGE;                <<00221>>16976000
          MOVE DBUFFER(23):=                                   <<00221>>16978000
           "******    DST TABLE    ******";                    <<00221>>16980000
          PRINTLINE;                                           <<00221>>16982000
         IF LINECOUNT>2 THEN SKIPLINES(2);                     << WBT >>16984000
   MOVE BBUF(100):="          F   C";                          << WBT >>16986000
   PRINTLINE;                                                  << WBT >>16988000
   MOVE BBUF(100):="D R I S M W S R";                          << WBT >>16990000
   PRINTLINE;                                                  << WBT >>16992000
          MOVE BBUF:="SEGMENT";                                <<00221>>16994000
          MOVE BBUF(45):="REFERENCE";                          <<00221>>16996000
          MOVE BBUF(56):=                                      <<00221>>16998000
           "SEGMENT    ABSOLUTE     BANK/     DISC";           <<00221>>17000000
          MOVE BBUF(100):="C O M T O I Y E W           VM  ";  << WBT >>17002000
         PRINTLINE;                                                     17004000
          MOVE BBUF:=                                          <<00221>>17006000
           "NUMBER    SEGMENT DESCRIPTION";                    <<00221>>17008000
          MOVE BBUF(47):=                                      <<00221>>17010000
           " BIT     LENGTH     ADDRESS      /LDEV";           << WBT >>17012000
          MOVE BBUF(89):=                                      <<00221>>17014000
           "ADDRESS    V C I K D P S S D          ALLOC";      << WBT >>17016000
         PRINTLINE;                                                     17018000
   MOVE BBUF:="------    -------------------",2;               << WBT >>17020000
   MOVE    *:="                   ---     ------     -------",2;        17022000
   MOVE    *:="      -----    -------    - - - - - - - - -   ",2;       17024000
   MOVE    *:="       -----";                                  << WBT >>17026000
   PRINTLINE;                                                  << WBT >>17028000
         SKIPLINES(1);                                                  17030000
      END;                                                              17032000
                                                                        17034000
$PAGE "PRINTDST: Print formatted DST table"                             17036000
$CONTROL SEGMENT=TABLES2                                                17038000
COMMENT                                                                 17040000
                                                                        17042000
Purpose:                                                                17044000
     Print formatted DST table                                          17046000
                                                                        17048000
Input parameters:                                                       17050000
                                                                        17052000
Output parameters:                                                      17054000
                                                                        17056000
Globals Referenced:                                                     17058000
                                                                        17060000
Globals Altered:                                                        17062000
                                                                        17064000
Data Structures:                                                        17066000
                                                                        17068000
Algorithm:                                                              17070000
                                                                        17072000
;                                                                       17074000
PROCEDURE PRINTDST;                                            <<06.EB>>17076000
BEGIN                                                          <<06.EB>>17078000
   DOUBLE LOCDST, STENT, ENDENT, TABLEBASE;                    <<01791>>17080000
   INTEGER NENTRYS, INDX, FREECOUNT, FREEX;                    <<01791>>17082000
LOGICAL WORK1,WORK2;                                           <<01.02>>17084000
LOGICAL ARRAY SCR0(*)=LOCDST;                                  <<01.02>>17086000
LOGICAL ARRAY SCR1(*)=SCR0(1);                                 <<01.02>>17088000
INTEGER SEGLEN;                                                <<00221>>17090000
   ARRAY FREEDST(0:MAX'DSTNUM);                                <<01791>>17092000
   OWN BYTE ARRAY DSTNAME(0:9):=9,"DST TABLE";                 <<01875>>17094000
                                                               <<06.EB>>17096000
NEWPAGE;                                                       <<06.EB>>17098000
USE'PSEUDO'DST := FALSE;                                       <<*1391>>17099000
INDXARAY(2*2):=PAGENO;                                         <<06.EB>>17100000
LOCDST:=VERIFYP(%2,%1002D);                                    <<01.02>>17102000
IF <> THEN                                                     <<01.02>>17104000
BEGIN                                                          <<01.02>>17106000
   IF LOCDST <> 0D THEN WARNING ELSE                           <<01.02>>17108000
   IF (SCR1:=DSTFLG) <> 0 THEN WARNING ELSE                    <<01.02>>17110000
   BEGIN                                                       <<01.02>>17112000
      NOFORMT';                                                <<00221>>17114000
      GO BAILOUT;                                              <<01.02>>17116000
   END;                                                        <<01.02>>17118000
END;                                                           <<01.02>>17120000
PDHEAD;                                                        <<06.EB>>17122000
IF LOCDST < 1D THEN                                            <<06.EB>>17124000
BEGIN                                                          <<06.EB>>17126000
   MOVE BBUF:="INVALID DST POINTER";                           <<06.EB>>17128000
   PRINTLINE;                                                  <<06.EB>>17130000
   DSTBAD:=TRUE;                                               <<06.EB>>17132000
   GO TO BAILOUT;                                              <<06.EB>>17134000
END;                                                           <<06.EB>>17136000
NENTRYS:=INTEGER(CORE(LOCDST));                                <<01.02>>17138000
IF 1 <= NENTRYS <= MAX'DSTNUM THEN << RANGE OK >>                       17140000
ELSE                                                           <<06.EB>>17142000
BEGIN                                                          <<06.EB>>17144000
   MOVE BBUF:="INVALID NUMBER OF DST ENTRYS";                  <<06.EB>>17146000
   PRINTLINE;                                                  <<06.EB>>17148000
   DSTBAD:=TRUE;                                               <<06.EB>>17150000
   GO TO BAILOUT;                                              <<06.EB>>17152000
END;                                                           <<06.EB>>17154000
         DSTLENGTH:=(NENTRYS+1)*4;                             <<00221>>17156000
   DST'ADDRESS:=LOCDST;                                        << WBT >>17158000
   MAKEFREEMAP(DST'ADDRESS, FREEDST, 4, 4095, DSTNAME);        <<01875>>17160000
FOR INDX:=1 UNTIL NENTRYS                                      <<06.EB>>17162000
DO                                                             <<06.EB>>17164000
BEGIN                                                          <<06.EB>>17166000
   LOCDST:=LOCDST+4D;                                          <<06.EB>>17168000
      IF FREEDST(INDX)                                         <<01791>>17170000
   THEN GO TO B2;                                              << WBT >>17172000
   @PBUF:=@BBUF;                                               <<06.EB>>17174000
   PUTNUMP(INDX);     <<SEGMENT #>>                            <<06.EB>>17176000
   WORK1:=CORE(LOCDST);                                        <<06.EB>>17178000
    @MEMBUFP:=@MEMBUF;      <<MAKE SURE POINTING>>             << WBT >>17180000
    MEMBUFP:=INDX;          <<SAVE INDEX FOR NAMEDST>>         << WBT >>17182000
   @PBUF:=@BBUF+8;                                             <<01.3A>>17184000
   IF INDX <= LSTSYSDST THEN NAMEDST;                          << WBT >>17186000
   @PBUF:=@BBUF+48;                                            <<06.EB>>17188000
   IF WORK1.(2:1)=1 THEN MOVE PBUF:="ON"                       <<06.EB>>17190000
                    ELSE MOVE PBUF:="OFF";                     << WBT >>17192000
   WORK2:=WORK1.(3:13);                                        << WBT >>17194000
   @PBUF:=@BBUF+56;                                            << WBT >>17196000
   SEGLEN:=WORK2*4;  << SEGMENT LENGTH >>                      << WBT >>17198000
   PUTNUMP(SEGLEN);                                            << WBT >>17200000
   PRINTFLAGS(CORE(LOCDST+1D));      <<FLAGS>>                 << WBT >>17202000
   @PBUF:=@BBUF+125;                                           << WBT >>17204000
   PUTNUMP(CORE(LOCDST+1D).(8:8));   <<ALLOC COUNT>>           << WBT >>17206000
   WORK2:=CORE(LOCDST+2D);                                     << WBT >>17208000
   IF WORK1.(0:1) = 1 AND CORE(LOCDST+1D).(1:2)=0 THEN         << WBT >>17210000
            BEGIN     <<ABSENT BIT ON>>                                 17212000
                  @PBUF:=@BBUF+89;                             <<00221>>17214000
                  TOS:=WORK2.(8:8);      <<PUSH HODA>>         << WBT >>17216000
                  TOS:=CORE(LOCDST+3D);  <<PUSH LODA>>         <<00221>>17218000
                  PUTDNUMP(*);       <<CONVERT DISC ADDRESS>>  <<00221>>17220000
                  @PBUF:=@BBUF+78;                             <<00221>>17222000
                  PUTNUMP(WORK2.(0:8));  <<CONVERT LDEV>>      <<00221>>17224000
                  GO TO B1;                                             17226000
            END;       <<SEG IS ABSENT>>                       << WBT >>17228000
            @PBUF:=@BBUF+76;                                   <<00221>>17230000
            PUTNUMP(WORK2);                                    <<01791>>17232000
            @PBUF:=@BBUF+68;                                   <<00221>>17234000
            PUTNUM(CORE(LOCDST+3D));   <<ABSOLUTE PB ADDR>>             17236000
B1:                                                                     17238000
  IF SEGLEN <> 0 THEN PRINTLINE ELSE BLANKBUF;                 << WBT >>17240000
            IF LINECOUNT=LNSPERPG THEN PDHEAD;                 <<00221>>17242000
B2:                                                                     17244000
         END;                                                           17246000
BAILOUT:                                                                17248000
  IF VM'INUSE THEN USE'PSEUDO'DST := TRUE;                     <<*1391>>17249000
      END;                                                              17250000
                                                                        17252000
$PAGE "ANALYZE'HALT: Analyze halt/suddendeath for PRINTREGS"            17254000
$CONTROL SEGMENT=TABLES2                                                17256000
COMMENT                                                                 17258000
                                                                        17260000
Purpose:                                                                17262000
    Analyze halt/suddendeath.  Look for pause.                          17264000
    Called only once, by PRINTREGS.                                     17266000
                                                                        17268000
Input parameters:                                                       17270000
                                                                        17272000
Output parameters:                                                      17274000
                                                                        17276000
Globals Referenced:                                                     17278000
                                                                        17280000
Globals Altered:                                                        17282000
                                                                        17284000
Data Structures:                                                        17286000
                                                                        17288000
Algorithm:                                                              17290000
                                                                        17292000
;                                                                       17294000
PROCEDURE ANALYZE'HALT;                                        <<03013>>17296000
<<====================>>                                       <<03013>>17298000
<<ANALYZE HALT/SUDDENDEATH     LOOK FOR PAUSE>>                <<03013>>17300000
BEGIN                                                          <<03013>>17302000
                                                               <<03013>>17304000
  DOUBLE DSCRATCH;                                             <<03013>>17306000
  LOGICAL SCRATCH;                                             <<03013>>17308000
                                                               <<03013>>17310000
         SKIPLINES (1);   <<SPACE DOWN FROM PRINTREGISTERS>>   <<03013>>17312000
                                                               <<03013>>17314000
         IF (CIRREG.(0:12) = %1417) THEN                       <<03013>>17316000
           BEGIN                 <<INSTRUCTION IS A HALT>>     <<03013>>17318000
            MOVE BBUF:="********* HALT";                       <<03013>>17320000
            @PBUF:=@BBUF+12;                                   <<03013>>17322000
            PUTNUMP(CIRREG.(12:4));                            <<03013>>17324000
            PRINTLINE;                                         <<03013>>17326000
            SKIPLINES(1);                                      <<03013>>17328000
            TOS:=ZBANKREG;  TOS:=QREG;                         <<03013>>17330000
            DSCRATCH:=TOS;   <<Q REGISTER AT TIME OF HALT>>    <<03013>>17332000
            IF  (CIRREG.(12:4) >=%15) AND   <<HALT 17?>>       <<03013>>17334000
                (CORE(DSCRATCH-4D) < 2000) THEN  <<VALID SF>>  <<04747>>17336000
              BEGIN              <<SYSTEM FAILURE MESSAGE>>    <<03013>>17338000
               MOVE BBUF:="****SYSTEM FAILURE #";              <<03013>>17340000
               SCRATCH:=ASCII(CORE(DSCRATCH-4D),10,BBUF(21));  <<03013>>17342000
               @PBUF:=@BBUF+INTEGER(SCRATCH)+21;               <<03013>>17344000
               MOVE PBUF:="; STATUS";                          <<03013>>17346000
               @PBUF:=@PBUF+9;                                 <<03013>>17348000
               PUTNUM(CORE(DSCRATCH-1D));                      <<03013>>17350000
               @PBUF:=@PBUF-1;                                 <<03013>>17352000
               MOVE PBUF:="; DELTA P";                         <<03013>>17354000
               @PBUF:=@PBUF+10;                                <<03013>>17356000
               PUTNUM(CORE(DSCRATCH-2D) LAND %137777);         << MCW >>17358000
               @PBUF:=@PBUF+10;                                <<03013>>17360000
               CASE (CORE(DSCRATCH-4D)/100) OF                 <<03013>>17362000
                BEGIN        <<SF CLASSIFICATION>>             <<03013>>17364000
<<001-099>>      MOVE PBUF:="(SYSTEM INTERNALS)";              <<03013>>17366000
<<100-199>>      MOVE PBUF:="(MEMORY MANAGEMENT)";             <<03013>>17368000
<<200-299>>      MOVE PBUF:="(I/O SYSTEM)";                    <<03013>>17370000
<<300-399>>      MOVE PBUF:="(PROCESS AND USER RELATED)";      <<03013>>17372000
<<400-499>>      MOVE PBUF:="(FILE SYSTEM)";                   <<03013>>17374000
<<500-599>>      MOVE PBUF:="(USER INTERFACE)";                <<03013>>17376000
<<600-699>>      MOVE PBUF:="(MEMORY MGMT / I/O SYSTEM)";      <<sknew>>17378000
<<700-799>>      ;            <<UNUSED AT PRESENT>>            <<03013>>17380000
<<800-899>>      ;            <<UNUSED AT PRESENT>>            <<03013>>17382000
<<900-999>>      BEGIN                                         <<03013>>17384000
                  IF (CORE(DSCRATCH-4D) <= 910) THEN           <<03013>>17386000
                   MOVE PBUF:="(CS 3000 INTERNALS)"            <<03013>>17388000
                   ELSE IF (CORE(DSCRATCH-4D) <= 920) THEN     <<03013>>17390000
                    MOVE PBUF:="(DS 3000 USER RELATED)"        <<03013>>17392000
                    ELSE MOVE PBUF:="(MISCELLANEOUS)";         <<03013>>17394000
                 END;                                          <<03013>>17396000
                END;          <<SF CLASSIFICATION>>            <<03013>>17398000
               END;           <<SYSTEM FAILURE MESSAGE>>       <<03013>>17400000
           END                <<SYSTEM HALT>>                  <<03013>>17402000
          ELSE                                                 <<03013>>17404000
           BEGIN           <<NOT A HALT IN CIR>>               <<03013>>17406000
            IF CIRREG = %30020 THEN                            <<03013>>17408000
             MOVE PBUF:="PAUSE INSTRUCTION IN CIR";            <<03013>>17410000
           END;                                                <<03013>>17412000
         PRINTLINE;                <<PRINT COMMENT LINE>>      <<03013>>17414000
END;   <<PROCEDURE ANALYZE'HALT>>                              <<03013>>17416000
                                                                        17418000
$PAGE "PRINTREGS: Print formatted register information page"            17420000
$CONTROL SEGMENT=TABLESDS                                      <<*8911>>17422000
COMMENT                                                                 17424000
                                                                        17426000
Purpose:                                                                17428000
                                                                        17430000
Input parameters:                                                       17432000
                                                                        17434000
Output parameters:                                                      17436000
                                                                        17438000
Globals Referenced:                                                     17440000
                                                                        17442000
Globals Altered:                                                        17444000
                                                                        17446000
Data Structures:                                                        17448000
                                                                        17450000
Algorithm:                                                              17452000
                                                                        17454000
;                                                                       17456000
PROCEDURE PRINTREGS;                                           <<03013>>17458000
<<=================>                                           <<03013>>17460000
BEGIN                                                          <<03013>>17462000
                                                               <<03013>>17464000
  ARRAY                                                        <<03013>>17466000
     WT  (0:65),         <<TITLE LINE>>                        <<03013>>17468000
     WB1 (0:65),         <<LINE 1>>                            <<03013>>17470000
     WB2 (0:65),         <<LINE 2>>                            <<03013>>17472000
     WB3 (0:65),         <<LINE 3>>                            <<03013>>17474000
     WB4 (0:65),         <<LINE 4>>                            <<03013>>17476000
     WB5 (0:65),         <<LINE 5>>                            <<03013>>17478000
     WB6 (0:65),         <<LINE 6>>                            <<03013>>17480000
     WB7 (0:65),         <<LINE 7>>                            <<03013>>17482000
     WB8 (0:65),         <<LINE 8>>                            <<03013>>17484000
     WSTARS (0:65),      <<LINE FOR STARS, ETC>>               <<03013>>17486000
     WCOLS  (0:65);      <<LINE FOR STAR COLUMNS>>             <<03013>>17488000
                                                               <<03013>>17490000
  BYTE ARRAY                                                   <<03013>>17492000
     BT  (*) = WT,      <<TITLE LINE>>                         <<03013>>17494000
     BB1 (*) = WB1,      <<LINE 1>>                            <<03013>>17496000
     BB2 (*) = WB2,      <<LINE 2>>                            <<03013>>17498000
     BB3 (*) = WB3,      <<LINE 3>>                            <<03013>>17500000
     BB4 (*) = WB4,      <<LINE 4>>                            <<03013>>17502000
     BB5 (*) = WB5,      <<LINE 5>>                            <<03013>>17504000
     BB6 (*) = WB6,      <<LINE 6>>                            <<03013>>17506000
     BB7 (*) = WB7,      <<LINE 7>>                            <<03013>>17508000
     BB8 (*) = WB8,      <<LINE 8>>                            <<03013>>17510000
     BSTARS (*) = WSTARS,  <<LINE FOR STARS>>                  <<03013>>17512000
     BCOLS  (*) = WCOLS;   <<LINE FOR STARS BETWEEN COLUMNS>>  <<03013>>17514000
                                                                        17516000
INTEGER COREWD;                                                <<*8878>>17518000
DOUBLE LOCCST;                                                          17520000
                                                               <<03013>>17522000
                                                               <<03013>>17524000
SUBROUTINE PRINT'LINE (BUFFER);                                <<03013>>17526000
<<--------------------------->>                                <<03013>>17528000
    ARRAY BUFFER;                                              <<03013>>17530000
BEGIN                                                          <<03013>>17532000
    MOVE DBUFFER := BUFFER,(66);                               <<03013>>17534000
      <<COPY FROM LOCAL LINE BUFFER TO GLOBAL DBUFFER>>        <<03013>>17536000
      <<ALLOWS US TO USE ROUTINES FOR PAGING,SPACING ETC.>>    <<03013>>17538000
    PRINTLINE;   <<PRINT OUT DBUFFER>>                         <<03013>>17540000
END;                                                           <<03013>>17542000
                                                               <<03013>>17544000
SUBROUTINE LOADNUM( BPTR, NUM);                                <<03013>>17546000
<<--------------------------->>                                <<03013>>17548000
   VALUE BPTR,NUM;                                             <<03013>>17550000
   BYTE POINTER BPTR;                                          <<03013>>17552000
   INTEGER      NUM;                                           <<03013>>17554000
BEGIN                                                          <<03013>>17556000
    <<LOADNUM ALLOWS US TO USE "PUTNUM" TO LOAD "NUM">>        <<03013>>17558000
    <<INTO ANY ARBITRARY BYTE POINTER LOCATION "BPTR">>        <<03013>>17560000
   @PBUF := @BPTR;                                             <<03013>>17562000
   PUTNUM ( NUM);                                              <<03013>>17564000
END;                                                           <<03013>>17566000
                                                               <<03013>>17568000
                                                               <<03013>>17570000
SUBROUTINE LOADNUMP( BPTR, NUM);                               <<03013>>17572000
<<--------------------------->>                                <<03013>>17574000
   VALUE BPTR,NUM;                                             <<03013>>17576000
   BYTE POINTER BPTR;                                          <<03013>>17578000
   INTEGER      NUM;                                           <<03013>>17580000
BEGIN                                                          <<03013>>17582000
   @PBUF := @BPTR;                                             <<03013>>17584000
   PUTNUMP ( NUM);                                             <<03013>>17586000
END;                                                           <<03013>>17588000
                                                               <<03013>>17590000
SUBROUTINE INIT'BUFFERS;                                       <<03013>>17592000
<<--------------------->>                                      <<03013>>17594000
BEGIN                                                          <<03013>>17596000
    <<INITIALIZES THE LOCAL "PRINT REGISTER BUFFER LINES" >>   <<03013>>17598000
    <<FILLS ALL LINES WITH BLANKS, LOADS THE SOLID STAR LINE>> <<03013>>17600000
    <<AND LOADS THE STAR "GRID" WHICH SEPARATES FIELDS>>       <<03013>>17602000
  BSTARS := "*";                                               <<03013>>17604000
  MOVE BSTARS(1) := BSTARS,(131);      <<FULL STAR LINE>>      <<03013>>17606000
                                                               <<03013>>17608000
  BCOLS := " ";                                                <<03013>>17610000
  MOVE BCOLS(1) := BCOLS,(131);    <<FIRST,BLANK IT OUT>>      <<03013>>17612000
  BCOLS      := "*";                                           <<03013>>17614000
  BCOLS( 20) := "*";                                           <<03013>>17616000
  BCOLS( 37) := "*";                                           <<03013>>17618000
  BCOLS( 53) := "*";                                           <<03013>>17620000
  BCOLS( 73) := "*";                                           <<03013>>17622000
  BCOLS(131) := "*";         <<STARS BETWWEN COLUMNS>>         <<03013>>17624000
                                                               <<03013>>17626000
  MOVE BT  := BCOLS,(132);                                     <<03013>>17628000
  MOVE BB1 := BCOLS,(132);   <<INIT ALL LINE BUFFERS>>         <<03013>>17630000
  MOVE BB2 := BCOLS,(132);                                     <<03013>>17632000
  MOVE BB3 := BCOLS,(132);                                     <<03013>>17634000
  MOVE BB4 := BCOLS,(132);                                     <<03013>>17636000
  MOVE BB5 := BCOLS,(132);                                     <<03013>>17638000
  MOVE BB6 := BCOLS,(132);                                     <<03013>>17640000
  MOVE BB7 := BCOLS,(132);                                     <<03013>>17642000
  MOVE BB8 := BCOLS,(132);                                     <<03013>>17644000
END;                                                           <<03013>>17646000
                                                               <<03013>>17648000
SUBROUTINE PRINT'ALL'BUFFERS;                                  <<03013>>17650000
<<--------------------->>                                      <<03013>>17652000
BEGIN                                                          <<03013>>17654000
    <<PRINT ALL OF THE PRE-LOADED LOCAL BUFFER LINES>>         <<03013>>17656000
  PRINT'LINE( WSTARS);                                         <<03013>>17658000
  PRINT'LINE( WT);                                             <<03013>>17660000
  PRINT'LINE( WSTARS);                                         <<03013>>17662000
  PRINT'LINE( WCOLS);                                          <<03013>>17664000
  PRINT'LINE( WB1);                                            <<03013>>17666000
  PRINT'LINE( WCOLS);                                          <<03013>>17668000
  PRINT'LINE( WB2);                                            <<03013>>17670000
  PRINT'LINE( WCOLS);                                          <<03013>>17672000
  PRINT'LINE( WB3);                                            <<03013>>17674000
  PRINT'LINE( WCOLS);                                          <<03013>>17676000
  PRINT'LINE( WB4);                                            <<03013>>17678000
  PRINT'LINE( WCOLS);                                          <<03013>>17680000
  PRINT'LINE( WB5);                                            <<03013>>17682000
  PRINT'LINE( WCOLS);                                          <<03013>>17684000
  PRINT'LINE( WB6);                                            <<03013>>17686000
  PRINT'LINE( WCOLS);                                          <<03013>>17688000
  PRINT'LINE( WB7);                                            <<03013>>17690000
  PRINT'LINE( WCOLS);                                          <<03013>>17692000
  PRINT'LINE( WB8);                                            <<03013>>17694000
  PRINT'LINE( WSTARS);                                         <<03013>>17696000
END;                                                           <<03013>>17698000
                                                               <<03013>>17700000
                                                               <<03013>>17702000
SUBROUTINE ON'OFF (BPTR, NUM);                                 <<03013>>17704000
<<--------------------------->>                                <<03013>>17706000
    VALUE BPTR,NUM;                                            <<03013>>17708000
    BYTE POINTER BPTR;                                         <<03013>>17710000
    INTEGER      NUM;                                          <<03013>>17712000
BEGIN                                                          <<03013>>17714000
    IF NUM= 1                                                  <<03013>>17716000
    THEN MOVE BPTR := "ON"                                     <<03013>>17718000
    ELSE MOVE BPTR := "OFF";                                   <<03013>>17720000
END;                                                           <<03013>>17722000
                                                               <<03013>>17724000
    <<CPU INDEPENDENT ROUTINES USED FOR ALL DUMPS>>            <<03013>>17726000
    <<===========================================>>            <<03013>>17728000
                                                               <<03013>>17730000
                                                               <<03013>>17732000
SUBROUTINE LOAD'DATASEG;                                       <<03013>>17734000
<<--------------------->>                                      <<03013>>17736000
BEGIN                                                          <<03013>>17738000
  MOVE  BT(3) := "DATA SEGMENT";                               <<03013>>17740000
  MOVE BB1(3) := "DB BANK =";                                  <<03013>>17742000
  MOVE BB2(3) := "DB      =";                                  <<03013>>17744000
  MOVE BB3(3) := "S BANK  =";                                  <<03013>>17746000
  MOVE BB4(3) := "DL      =";                                  <<03013>>17748000
  MOVE BB5(3) := "Q       =";                                  <<03013>>17750000
  MOVE BB6(3) := "S       =";                                  <<03013>>17752000
  MOVE BB7(3) := "Z       =";                                  <<03013>>17754000
                                                               <<03013>>17756000
  LOADNUM( BB1(13), DBBANKREG);                                <<03013>>17758000
  LOADNUM( BB2(13), DBREG);                                    <<03013>>17760000
  LOADNUM( BB3(13), ZBANKREG);                                 <<03013>>17762000
  LOADNUM( BB4(13), DLREG);                                    <<03013>>17764000
  LOADNUM( BB5(13), QREG);                                     <<03013>>17766000
  LOADNUM( BB6(13), SREG);                                     <<03013>>17768000
  LOADNUM( BB7(13), ZREG);                                     <<03013>>17770000
END;  <<LOAD'DATASEG>>                                         <<03013>>17772000
                                                               <<03013>>17774000
SUBROUTINE LOAD'CODESEG;                                       <<03013>>17776000
<<-------------------->>                                       <<03013>>17778000
BEGIN                                                          <<03013>>17780000
  MOVE  BT(22) := "CODE SEGMENT";                              <<03013>>17782000
  MOVE BB1(22) := "PB    =";                                   <<03013>>17784000
  MOVE BB2(22) := "P     =";                                   <<03013>>17786000
  MOVE BB3(22) := "PL    =";                                   <<03013>>17788000
  MOVE BB4(22) := "PBBANK=";                                   <<03013>>17790000
  MOVE BB5(22) := "(P-PB)=";                                   <<03013>>17792000
                                                               <<03013>>17794000
  LOADNUM( BB1(30), PBREG);                                    <<03013>>17796000
  LOADNUM( BB2(30), PREG);                                     <<03013>>17798000
  LOADNUM( BB3(30), PLREG);                                    <<03013>>17800000
  LOADNUM( BB4(30), PBBANKREG);                                <<03013>>17802000
  LOADNUM( BB5(30), PREG - PBREG);                             <<03013>>17804000
END;  <<LOAD'CODESEG>>                                         <<03013>>17806000
                                                               <<03013>>17808000
                                                               <<03013>>17810000
SUBROUTINE LOAD'MISC;                                          <<03013>>17812000
<<----------------->>                                          <<03013>>17814000
BEGIN                                                          <<03013>>17816000
  MOVE  BT(39) := "MISCELLANEOUS";                             <<03013>>17818000
  MOVE BB1(39) := "X    =";                                    <<03013>>17820000
  MOVE BB2(39) := "CIR  =";                                    <<03013>>17822000
  MOVE BB3(39) := "NIR  =";                                    <<03013>>17824000
                                                               <<03013>>17826000
  LOADNUM( BB1(46), XREG);          <<  X  >>                  <<03013>>17828000
  LOADNUM( BB2(46), CIRREG);        << CIR >>                  <<03013>>17830000
  LOADNUM( BB3(46), NIR);           << NIR >>                  <<03013>>17832000
END;                                                           <<03013>>17834000
                                                               <<03013>>17836000
                                                               <<03013>>17838000
SUBROUTINE LOAD'STATUS;                                        <<03013>>17840000
<<-------------------->>                                       <<03013>>17842000
BEGIN                                                          <<03013>>17844000
  MOVE  BT(55) := "STATUS = XXXXXX";                           <<03013>>17846000
  MOVE BB1(55) := "MODE       =";                              <<03013>>17848000
  MOVE BB2(55) := "INTERRUPTS =";                              <<03013>>17850000
  MOVE BB3(55) := "TRAPS      =";                              <<03013>>17852000
  MOVE BB4(55) := "STACK OP   =";                              <<03013>>17854000
  MOVE BB5(55) := "OVERFLOW   =";                              <<03013>>17856000
  MOVE BB6(55) := "CARRY      =";                              <<03013>>17858000
  MOVE BB7(55) := "COND CODE  =";                              <<03013>>17860000
  MOVE BB8(55) := "SEGMENT #  =";                              <<03013>>17862000
                                                               <<03013>>17864000
  LOADNUM( BT(64), STAREG);          <<STATUS= XXXXXX>>        <<03013>>17866000
                                                               <<03013>>17868000
  IF STAREG.(0:1) = 1                <<MODE = PRIV/USER>>      <<03013>>17870000
  THEN MOVE BB1(68) := "PRIV"                                  <<03013>>17872000
  ELSE MOVE BB1(68) := "USER";                                 <<03013>>17874000
  ON'OFF( BB2(68), STAREG.(1:1) );   <<INTERRUPTS ON/OFF>>     <<03013>>17876000
  ON'OFF( BB3(68), STAREG.(2:1) );   <<TRAPS ON/OFF>>          <<03013>>17878000
  IF STAREG.(3:1) = 1                <<STACKOP = LEFT/RGHT>>   <<03013>>17880000
  THEN MOVE BB4(68) := "RGHT"                                  <<03013>>17882000
  ELSE MOVE BB4(68) := "LEFT";                                 <<03013>>17884000
  ON'OFF( BB5(68), STAREG.(4:1) );   <<OVERFLOW = ON/OFF>>     <<03013>>17886000
  ON'OFF( BB6(68), STAREG.(5:1) );   <<CARRY = ON/OFF>>        <<03013>>17888000
  CASE STAREG.(6:2) OF               <<CONDITION CODE>>        <<03013>>17890000
  BEGIN                                                        <<03013>>17892000
   <<0>>  MOVE BB7(68) := "CCG";                               <<03013>>17894000
   <<1>>  MOVE BB7(68) := "CCL";                               <<03013>>17896000
   <<2>>  MOVE BB7(68) := "CCE";                               <<03013>>17898000
  END;                                                         <<03013>>17900000
  LOADNUMP( BB8(68-3) , SEGK);       <<SEGMENT # >>            <<03013>>17902000
  LOCCST:=VERIFYP(%1,%1001D);                                           17904000
  IF PBBANKREG=CORE(LOCCST+DOUBLE(SEGK*4+2)) AND                        17906000
     PBREG=CORE(LOCCST+DOUBLE(SEGK*4+3)) THEN                           17908000
     BB8(71):="P"                                                       17910000
  ELSE                                                                  17912000
     BB8(71):="L";                                                      17914000
      <<TARGET STARTS 3 SPACES BEFORE DESIRED POSITION>>       <<03013>>17916000
END;  <<LOAD'STATUS>>                                          <<03013>>17918000
                                                               <<03013>>17920000
                                                               <<03013>>17922000
    <<CPU DEPENDENT ROUTINES, USE ONLY FOR APPROPRIATE CPU>>   <<03013>>17924000
    <<====================================================>>   <<03013>>17926000
                                                               <<03013>>17928000
                                                               <<03013>>17930000
SUBROUTINE LOAD'II'MISC;                                       <<03013>>17932000
<<--------------------->>                                      <<03013>>17934000
BEGIN                                                          <<03013>>17936000
  MOVE BB3(39) := "CPX1 =";                                    <<03013>>17938000
  MOVE BB4(39) := "MSIZE=";                                    <<03013>>17940000
  LOADNUM( BB3(46), CPX1);                                     <<03013>>17942000
  LOADNUM( BB4(46), MEMSIZE);                                  <<03013>>17944000
                                                               <<03013>>17946000
  MOVE BB8(3) := "Z BANK  =";                                  <<03013>>17948000
  LOADNUM( BB8(13), ZBANKREG);                                 <<03013>>17950000
END;                                                           <<03013>>17952000
                                                               <<03013>>17954000
                                                               <<03013>>17956000
SUBROUTINE LOAD'III'MISC;                                      <<03013>>17958000
<<---------------------->>                                     <<03013>>17960000
BEGIN                                                          <<03013>>17962000
  MOVE BB3(39) := "CPX1 =";                                    <<03013>>17964000
  MOVE BB4(39) := "SP1  =";                                    <<03013>>17966000
  MOVE BB5(39) := "SP2  =";                                    <<03013>>17968000
  LOADNUM( BB3(46), CPX1);                                     <<03013>>17970000
  LOADNUM( BB4(46), SP1);                                      <<03013>>17972000
  LOADNUM( BB5(46), SP2);                                      <<03013>>17974000
                                                               <<03013>>17976000
  MOVE BB8(3) := "Z BANK  =";                                  <<03013>>17978000
  LOADNUM( BB8(13), ZBANKREG);                                 <<03013>>17980000
END;                                                           <<03013>>17982000
                                                               <<03013>>17984000
                                                               <<03013>>17986000
SUBROUTINE LOAD'II'MICRO'REGS;                                 <<03013>>17988000
<<--------------------------->>                                <<03013>>17990000
BEGIN                                                          <<03013>>17992000
  MOVE BB1(116) := "UREG0 =";                                  <<03013>>17994000
  MOVE BB2(116) := "UREG1 =";                                  <<03013>>17996000
  MOVE BB3(116) := "UREG2 =";                                  <<03013>>17998000
  MOVE BB4(116) := "UREG3 =";                                  <<03013>>18000000
  MOVE BB5(116) := "UREG4 =";                                  <<03013>>18002000
  MOVE BB6(116) := "UREG5 =";                                  <<03013>>18004000
  MOVE BB7(116) := "UREG6 =";                                  <<03013>>18006000
  MOVE BB8(116) := "UREG7 =";                                  <<03013>>18008000
                                                               <<03013>>18010000
  LOADNUM( BB1(124), REG0);                                    <<03013>>18012000
  LOADNUM( BB2(124), REG1);                                    <<03013>>18014000
  LOADNUM( BB3(124), REG2);                                    <<03013>>18016000
  LOADNUM( BB4(124), REG3);                                    <<03013>>18018000
  LOADNUM( BB5(124), REG4);                                    <<03013>>18020000
  LOADNUM( BB6(124), REG5);                                    <<03013>>18022000
  LOADNUM( BB7(124), REG6);                                    <<03013>>18024000
  LOADNUM( BB8(124), REG7);                                    <<03013>>18026000
END;                                                           <<03013>>18028000
                                                               <<03013>>18030000
                                                               <<03013>>18032000
SUBROUTINE LOAD'II'III'CPX2;                                   <<03013>>18034000
<<-------------------->>                                       <<03013>>18036000
BEGIN                                                          <<03013>>18038000
  MOVE  BT(75) := "CPX2 = XXXXXX";                             <<03013>>18040000
  MOVE BB1(75) := "RUN/HALT   =";                              <<03013>>18042000
  MOVE BB2(75) := "SYS DUMP   =";                              <<03013>>18044000
  MOVE BB3(75) := "COLD LOAD  =";                              <<03013>>18046000
  MOVE BB4(75) := "LOAD REG   =";                              <<03013>>18048000
  MOVE BB5(75) := "LOAD ADDR  =";                              <<03013>>18050000
  MOVE BB6(75) := "LOAD MEM   =";                              <<03013>>18052000
  MOVE BB7(75) := "DISP MEM   =";                              <<03013>>18054000
  MOVE BB8(75) := "SNGL INST  =";                              <<03013>>18056000
                                                               <<03013>>18058000
  MOVE BB1(95) := "EXEC SW      =";                            <<03013>>18060000
  MOVE BB2(95) := "INC ADDR     =";                            <<03013>>18062000
  MOVE BB3(95) := "DEC ADDR     =";                            <<03013>>18064000
  MOVE BB4(95) := "INHB AUTO RES=";                            <<03013>>18066000
                                                               <<03013>>18068000
  LOADNUM( BT(82), CPX2);          <<CPX2 = XXXXXX>>           <<03013>>18070000
                                                               <<03013>>18072000
  IF CPX2.(15:1) = 0               <<RUN / HALT>>              <<03013>>18074000
  THEN MOVE BB1(88):= "RUN"                                    <<03013>>18076000
  ELSE MOVE BB1(88):= "HALT";                                  <<03013>>18078000
  ON'OFF( BB2(88), CPX2.(1:1) );   <<SYS DUMP >>               <<03013>>18080000
  ON'OFF( BB3(88), CPX2.(2:1) );   <<COLD LOAD>>               <<03013>>18082000
  ON'OFF( BB4(88), CPX2.(3:1) );   <<LOAD REG>>                <<03013>>18084000
  ON'OFF( BB5(88), CPX2.(4:1) );   <<LOAD ADDR>>               <<03013>>18086000
  ON'OFF( BB6(88), CPX2.(5:1) );   <<LOAD MEM>>                <<03013>>18088000
  ON'OFF( BB7(88), CPX2.(6:1) );   <<DISP MEM>>                <<03013>>18090000
  ON'OFF( BB8(88), CPX2.(7:1) );   <<SNGL INST>>               <<03013>>18092000
                                                               <<03013>>18094000
                                                               <<03013>>18096000
  ON'OFF( BB1(110), CPX2.(8:1) );  <<EXEC SW>>                 <<03013>>18098000
  ON'OFF( BB2(110), CPX2.(9:1) );  <<INC ADDR>>                <<03013>>18100000
  ON'OFF( BB3(110), CPX2.(10:1) ); <<DEC ADDR>>                <<03013>>18102000
  ON'OFF( BB4(110), CPX2.(13:1) ); <<INHB AUTO RES>>           <<03013>>18104000
END;   <<LOAD'55'CPXS>>                                        <<03013>>18106000
                                                               <<03013>>18108000
                                                               <<03013>>18110000
SUBROUTINE LOAD'33'ISR;                                        <<03013>>18112000
<<-------------------->>                                       <<03013>>18114000
BEGIN                                                          <<03013>>18116000
  MOVE  BT(75) := "ISR = XXXXXX";                              <<03013>>18118000
  MOVE BB1(75) := "RUN/HALT   =";                              <<03013>>18120000
  MOVE BB2(75) := "IRQ        =";                              <<03013>>18122000
  MOVE BB3(75) := "CSRQ       =";                              <<03013>>18124000
  MOVE BB4(75) := "PARITY     =";                              <<03013>>18126000
  MOVE BB5(75) := "POWERFAIL  =";                              <<03013>>18128000
  MOVE BB6(75) := "POWERON    =";                              <<03013>>18130000
  MOVE BB7(75) := "DISP FLAG  =";                              <<03013>>18132000
  MOVE BB8(75) := "ICS FLAG   =";                              <<03013>>18134000
                                                               <<03013>>18136000
  MOVE BB1(95) := "STACK OVR    =";                            <<03013>>18138000
  MOVE BB2(95) := "BNDS OVR/UNF =";                            <<03013>>18140000
  MOVE BB3(95) := "VIOL CODE    =";                            <<03013>>18142000
  MOVE BB4(95) := "DISABLE ATN  =";                            <<03013>>18144000
  MOVE BB5(95) := "MAPPING FW   =";                            << MCW >>18146000
                                                               <<03013>>18148000
  LOADNUM( BT(81), ISR);          << ISR = XXXXXX>>            <<03013>>18150000
                                                               <<03013>>18152000
  IF ISR.(8:1) = 0                <<RUN / HALT>>               <<03013>>18154000
  THEN MOVE BB1(88):= "RUN"                                    <<03013>>18156000
  ELSE MOVE BB1(88):= "HALT";                                  <<03013>>18158000
  ON'OFF( BB2(88), ISR.(0:1) );   <<IRQ>>                      <<03013>>18160000
  ON'OFF( BB3(88), ISR.(1:1) );   <<CSRQ>>                     <<03013>>18162000
  ON'OFF( BB4(88), ISR.(3:1) );   <<PARITY>>                   <<03013>>18164000
  ON'OFF( BB5(88), ISR.(4:1) );   <<POWERFAIL>>                <<03013>>18166000
  ON'OFF( BB6(88), ISR.(5:1) );   <<POWERON>>                  <<03013>>18168000
  ON'OFF( BB7(88), ISR.(14:1) );  <<DISP FLAG>>                <<03013>>18170000
  ON'OFF( BB8(88), ISR.(15:1) );  <<ICS FLAG>>                 <<03013>>18172000
                                                               <<03013>>18174000
  ON'OFF( BB1(110), ISR.(10:1) ); <<STACK OVR>>                <<03013>>18176000
  ON'OFF( BB2(110), ISR.(11:1) ); <<BNDS OVR/UNF>>             <<03013>>18178000
  CASE ISR.(12:2) OF                                           <<03013>>18180000
  BEGIN                           <<VIOL CODE>>                <<03013>>18182000
   <<0>> MOVE BB3(110):= "NONE ";                              <<03013>>18184000
   <<1>> MOVE BB3(110):= "STACK";                              <<03013>>18186000
   <<2>> MOVE BB3(110):= "DATA ";                              <<03013>>18188000
   <<3>> MOVE BB3(110):= "PROG ";                              <<03013>>18190000
  END;                                                         <<03013>>18192000
  ON'OFF( BB4(110), ISR.(9:1)  ); <<DISABLE ATN>>              <<03013>>18194000
  ON'OFF( BB5(110), CORE(%1220D).(15:1)); <<MAPPING FW >>      << MCW >>18196000
END;    <<LOAD'33'ISR>>                                        <<03013>>18198000
                                                               <<03013>>18200000
                                                               <<03013>>18202000
SUBROUTINE LOAD'44'ISR;                                        <<03013>>18204000
<<-------------------->>                                       <<03013>>18206000
BEGIN                                                          <<03013>>18208000
  MOVE  BT(75) := "ISR = XXXXXX";                              <<03013>>18210000
  MOVE BB1(75) := "RUN/HALT   =";                              <<03013>>18212000
  MOVE BB2(75) := "IRQ        =";                              <<03013>>18214000
  MOVE BB3(75) := "CSRQ       =";                              <<03013>>18216000
  MOVE BB4(75) := "PARITY     =";                              <<03013>>18218000
  MOVE BB5(75) := "POWERFAIL  =";                              <<03013>>18220000
  MOVE BB6(75) := "POWERON    =";                              <<03013>>18222000
  MOVE BB7(75) := "DISP FLAG  =";                              <<03013>>18224000
  MOVE BB8(75) := "ICS FLAG   =";                              <<03013>>18226000
                                                               <<03013>>18228000
  MOVE BB2(95) := "TIMEOUT      =";                            <<03013>>18230000
  MOVE BB3(95) := "NOT SS       =";                            <<03013>>18232000
  MOVE BB4(95) := "DISABLE ATN  =";                            <<03013>>18234000
  MOVE BB5(95) := "MAPPING FW   =";                            << MCW >>18236000
                                                               <<03013>>18238000
  LOADNUM( BT(81), ISR);          <<ISR = XXXXXX>>             <<03013>>18240000
                                                               <<03013>>18242000
  IF ISR.(15:1) = 0               <<RUN / HALT>>               <<03013>>18244000
  THEN MOVE BB1(88):= "RUN"                                    <<03013>>18246000
  ELSE MOVE BB1(88):= "HALT";                                  <<03013>>18248000
  ON'OFF( BB2(88), ISR.(3:1) );   <<IRQ>>                      <<03013>>18250000
  ON'OFF( BB3(88), ISR.(2:1) );   <<CSRQ>>                     <<03013>>18252000
  ON'OFF( BB4(88), ISR.(7:1) );   <<PARITY>>                   <<03013>>18254000
  ON'OFF( BB5(88), ISR.(5:1) );   <<POWERFAIL>>                <<03013>>18256000
  ON'OFF( BB6(88), ISR.(4:1) );   <<POWERON>>                  <<03013>>18258000
  IF ISR.(12:1) = 1               <<DISP FLAG>>                <<03013>>18260000
  THEN ON'OFF( BB7(88), 0 )          <<NEGATIVE LOGIC>>        <<03013>>18262000
  ELSE ON'OFF( BB7(88), 1 );                                   <<03013>>18264000
  IF ISR.(13:1) = 1               <<ICS FLAG>>                 <<03013>>18266000
  THEN ON'OFF( BB8(88), 0 )          <<NEGATIVE LOGIC>>        <<03013>>18268000
  ELSE ON'OFF( BB8(88), 1 );                                   <<03013>>18270000
                                                               <<03013>>18272000
  ON'OFF( BB2(110), ISR.(8:1) );  <<TIMEOUT>>                  <<03013>>18274000
  ON'OFF( BB3(110), ISR.(14:1) ); <<NOT SS>>                   <<03013>>18276000
  ON'OFF( BB4(110), ISR.(10:1) ); <<DISABLE ATN>>              <<03013>>18278000
  ON'OFF( BB5(110), CORE(%1220D).(15:1)); <<MAPPING FW>>       << MCW >>18280000
END;   <<LOAD'44'ISR>>                                         <<03013>>18282000
                                                               <<03013>>18284000
                                                               <<03013>>18286000
SUBROUTINE LOAD'55'CPXS;                                       <<03013>>18288000
<<-------------------->>                                       <<03013>>18290000
BEGIN                                                          <<03013>>18292000
  MOVE  BT(75) := "CPX1 = XXXXXX";                             <<03013>>18294000
  MOVE BB1(75) := "RUN/HALT   =";                              <<03013>>18296000
  MOVE BB2(75) := "MSG INT    =";                              <<03013>>18298000
  MOVE BB3(75) := "WCS PARITY =";                              <<03013>>18300000
  MOVE BB4(75) := "LUT PARITY =";                              <<03013>>18302000
  MOVE BB5(75) := "POWERFAIL  =";                              <<03013>>18304000
  MOVE BB6(75) := "POWERON    =";                              <<03013>>18306000
  MOVE BB7(75) := "DISP FLAG  =";                              <<03013>>18308000
  MOVE BB8(75) := "ICS FLAG   =";                              <<03013>>18310000
                                                               <<03013>>18312000
  MOVE  BT(95) := "CPX2 = XXXXXX";                             <<03013>>18314000
  MOVE BB1(95) := "BOUNDS       =";                            <<03013>>18316000
  MOVE BB2(95) := "TIMEOUT      =";                            <<03013>>18318000
  MOVE BB3(95) := "TCLK INT     =";                            <<03013>>18320000
  MOVE BB4(95) := "SYSHALTFF    =";                            <<03013>>18322000
  MOVE BB5(95) := "PWRFAIL INH  =";                            <<03013>>18324000
  MOVE BB6(95) := "DEFERRED INT =";                            <<03013>>18326000
  MOVE BB7(95) := "CBI INT      =";                            <<03013>>18328000
  MOVE BB8(95) := "MAPPING FW   =";                            << MCW >>18330000
                                                               <<03013>>18332000
  LOADNUM( BT(82), CPX1);          <<CPX1 = XXXXXX>>           <<03013>>18334000
                                                               <<03013>>18336000
  IF CPX2.(6:1) = 1                <<RUN / HALT>>              <<03013>>18338000
  THEN MOVE BB1(88):= "RUN"                                    <<03013>>18340000
  ELSE MOVE BB1(88):= "HALT";                                  <<03013>>18342000
  ON'OFF( BB2(88), CPX1.(9:1) );   <<MSG INT>>                 <<03013>>18344000
  ON'OFF( BB3(88), CPX1.(3:1) );   <<WCS PARITY>>              <<03013>>18346000
  ON'OFF( BB4(88), CPX1.(5:1) );   <<LUT PARITY>>              <<03013>>18348000
  ON'OFF( BB5(88), CPX1.(12:1) );  <<POWERFAIL>>               <<03013>>18350000
  ON'OFF( BB6(88), CPX2.(0:1) );   <<POWERON>>                 <<03013>>18352000
  ON'OFF( BB7(88), CPX2.(7:1) );   <<DISP FLAG>>               <<03013>>18354000
  ON'OFF( BB8(88), CPX2.(3:1) );   <<ICS FLAG>>                <<03013>>18356000
                                                               <<03013>>18358000
  LOADNUM( BT(102), CPX2);         <<CPX2 = XXXXXX>>           <<03013>>18360000
                                                               <<03013>>18362000
  ON'OFF( BB1(110), CPX1.(2:1) );  <<BOUNDS>>                  <<03013>>18364000
  ON'OFF( BB2(110), CPX1.(7:1) );  <<TIMEOUT>>                 <<03013>>18366000
  ON'OFF( BB3(110), CPX1.(6:1)  ); <<TCLK>>                    <<03013>>18368000
  ON'OFF( BB4(110), CPX2.(10:1) ); <<SYSHALT FF>>              <<03013>>18370000
  ON'OFF( BB5(110), CPX2.(14:1) ); <<PWRFAIL INH>>             <<03013>>18372000
  ON'OFF( BB6(110), CPX2.(15:1) ); <<DEFERRED INT>>            <<03013>>18374000
  ON'OFF( BB7(110), CPX1.(10:1) ); <<CBI INT>>                 <<03013>>18376000
  ON'OFF( BB8(110), CORE(%1220D).(15:1)); <<MAPPING FW>>       << MCW >>18378000
END;   <<LOAD'55'CPXS>>                                        <<03013>>18380000
                                                               <<03013>>18382000
                                                               <<*8878>>18384000
SUBROUTINE LOAD'MM'MISC;                                       <<*8878>>18386000
<<--------------------------->>                                <<*8878>>18388000
BEGIN                                                          <<*8878>>18390000
  MOVE BT(75) := "MISCELLANEOUS";                              <<*8878>>18392000
  MOVE BB1(75) := "MICROCODE VERSION =";                       <<*8878>>18394000
  MOVE BB2(75) := "STOP CODE         = 000";                            18396000
  MOVE BB4(75) := "INTERRUPT CONTROL STACK FLAG =";            <<*8878>>18398000
  MOVE BB5(75) := "DISPATCHER FLAG              =";                     18400000
  MOVE BB6(75) := "LOGICAL/PHYSICAL FLAG        =";                     18402000
  MOVE BB7(75) := "CHANNEL PROGRAM FLAG         =";                     18404000
  MOVE BB8(75) := "SPLIT BANK FLAG              =";                     18406000
                                                               <<*8878>>18408000
  IF MACHINEID = TIOGA OR MACHINEID = MICROMOUSE THEN                   18408500
  LOADNUM( BB1(95), NOT(CORE(DOUBLE(%1421)))) << U-CODE BUG >>          18408600
  ELSE                                                                  18408700
  LOADNUM( BB1(95), CORE(DOUBLE(%1421)));                      <<*8878>>18410000
  COREWD := CORE(DOUBLE(%1422));                               <<*8878>>18412000
  LOADNUMP( BB2(92), COREWD.(8:8));                                     18414000
  LOADNUMP( BB4(101), COREWD.(0:1));                           <<*8878>>18416000
  LOADNUMP( BB5(101), COREWD.(1:1));                                    18418000
  LOADNUMP( BB6(101), COREWD.(2:1));                                    18420000
  LOADNUMP( BB7(101), COREWD.(3:1));                                    18422000
  LOADNUMP( BB8(101), COREWD.(4:1));                                    18424000
END;                                                           <<*8878>>18426000
                                                               <<*8878>>18428000
                                                               <<03013>>18430000
SUBROUTINE LOAD'MACHINEID;                                     <<03013>>18432000
<<----------------------->>                                    <<03013>>18434000
BEGIN                                                          <<03013>>18436000
  CASE MACHINEID OF                                            <<03013>>18438000
  BEGIN                                                        <<03013>>18440000
   <<0>> MOVE BT(118) := "   SERIES II";                       <<03013>>18442000
   <<1>> MOVE BT(118) := "  SERIES III";                       <<03013>>18444000
   <<2>> MOVE BT(118) := "SERIES 30/33";                       <<03013>>18446000
   <<3>> MOVE BT(118) := "   SERIES 44";                       <<03013>>18448000
   <<4>> MOVE BT(118) := "   SERIES 64";                       <<03082>>18450000
   <<5>> MOVE BT(118) := "   SERIES 37";                       <<*8878>>18452000
   <<6>> MOVE BT(118) := "MICRO 3000XE";                                18452500
   <<7>> MOVE BT(118) := "  MICRO 3000";                                18452600
  END;                                                         <<03013>>18454000
END;                                                           <<03013>>18456000
                                                               <<03013>>18458000
                                                               <<03013>>18460000
$PAGE                                                          <<03013>>18462000
                                                               <<03013>>18464000
<<****   MAIN OUTER BLOCK BODY OF PRINTREGISTERS ****>>        <<03013>>18466000
                                                               <<03013>>18468000
  NEWPAGE;    <<PRINT PAGE HEADER>>                            <<03013>>18470000
  MOVE DBUFFER(21) := "******    REGISTERS    ******";         <<03013>>18472000
  PRINTLINE;                                                   <<03013>>18474000
  SKIPLINES(2);                                                <<03013>>18476000
                                                               <<03013>>18478000
                                                               <<03013>>18480000
  INIT'BUFFERS;        <<BLANK OUT BUFFERS, LOAD STAR GRIDS>>  <<03013>>18482000
                                                               <<03013>>18484000
                  <<LOAD CPU INDEPENDENT FIELDS>>              <<03013>>18486000
                  <<--------------------------->>              <<03013>>18488000
                                                               <<03013>>18490000
  LOAD'DATASEG;        <<LOAD DB,DBBANK,SBANK,DL,Q,S,Z>>       <<03013>>18492000
  LOAD'CODESEG;        <<LOAD PB,P,L,PBBANK, P-PB>>            <<03013>>18494000
  LOAD'STATUS;         <<LOAD STATUS, M-I-T-R-O-C, ETC.>>      <<03013>>18496000
  LOAD'MISC;           <<LOAD X, CIR, NIR >>                   <<03013>>18498000
                       <<REMAINING MISC. FIELDS ARE CPU >>     <<03013>>18500000
                       <<DEPENDENT AND FILLED LATER>>          <<03013>>18502000
                                                               <<03013>>18504000
                  <<LOAD CPU DEPENDENT FIELDS>>                <<03013>>18506000
                  <<------------------------->>                <<03013>>18508000
                                                               <<03013>>18510000
  LOAD'MACHINEID;      <<LOAD CPU IDENTIFICATION>>             <<03013>>18512000
  CASE MACHINEID OF                                            <<03013>>18514000
  BEGIN                                                        <<03013>>18516000
    <<0>>   BEGIN                         <<SERIES II>>        <<03013>>18518000
              LOAD'II'MISC;                                    <<03013>>18520000
              LOAD'II'III'CPX2;                                <<03013>>18522000
              LOAD'II'MICRO'REGS;                              <<03013>>18524000
            END;                                               <<03013>>18526000
    <<1>>   BEGIN                         <<SERIES III>>       <<03013>>18528000
              LOAD'III'MISC;                                   <<03013>>18530000
              LOAD'II'III'CPX2;                                <<03013>>18532000
            END;                                               <<03013>>18534000
    <<2>>   LOAD'33'ISR;                  <<SERIES 30/33>>     <<03013>>18536000
    <<3>>   LOAD'44'ISR;                  <<SERIES 44>>        <<03013>>18538000
    <<4>>   LOAD'55'CPXS;                 <<ICF 55>>           <<03013>>18540000
    <<5>>   LOAD'MM'MISC;                 <<MIGHTY MOUSE>>              18542000
    <<6>>   LOAD'MM'MISC;                 <<TIOGA>>                     18542500
    <<7>>   LOAD'MM'MISC;                 <<MICRO/3000>>                18543000
  END;                                                         <<03013>>18544000
                                                               <<03013>>18546000
                   <<PRINT ALL LOADED BUFFER LINES>>           <<03013>>18548000
                   <<----------------------------->>           <<03013>>18550000
                                                               <<03013>>18552000
  PRINT'ALL'BUFFERS;                                           <<03013>>18554000
                                                               <<03013>>18556000
  ANALYZE'HALT;     <<ANALYZE HALT/SUDDEN-DEATH>>              <<03013>>18558000
                    <<LOOK FOR PAUSE INSTR IN CIR>>            <<03013>>18560000
                                                               <<03013>>18562000
END;  <<OF PROCEDURE PRINTREGISTERS>>                          <<03013>>18564000
                                                                        18566000
$PAGE "PRINTPCB: Format PCB table"                                      18568000
$CONTROL SEGMENT=TABLES2                                                18570000
COMMENT                                                                 18572000
                                                                        18574000
Purpose:                                                                18576000
<<             PRINT PROCESS CONTROL BLOCK                        >>    18578000
<<    THIS PROCEDURE WILL FORMAT AND PRINT THE PROCESS CONTROL    >>    18580000
<<    BLOCK.  HALF OF EACH PCB WILL BE PRINTED AT A TIME       << WBT >>18582000
<<    FOR ALL ASSIGNED ENTRIES, BECAUSE OF THE LIMITATION OF 132  >>    18584000
<<    CHARACTERS/LINE ON THE LINE PRINTER.                        >>    18586000
                                                                        18588000
Input parameters:                                                       18590000
                                                                        18592000
Output parameters:                                                      18594000
                                                                        18596000
Globals Referenced:                                                     18598000
                                                                        18600000
Globals Altered:                                                        18602000
                                                                        18604000
Data Structures:                                                        18606000
                                                                        18608000
Algorithm:                                                              18610000
                                                                        18612000
;                                                                       18614000
                                                                        18616000
PROCEDURE PRINTPCB;                                                     18618000
      BEGIN                                                             18620000
         DOUBLE LOCPCB,STPCB,ENPCB,STENT,ENDENT,CPCBADDR;      << WBT >>18622000
   INTEGER STKDST;                                             << WBT >>18624000
         LOGICAL ARRAY SCR0(*)=LOCPCB;                         <<01.02>>18626000
         LOGICAL ARRAY SCR1(*)=SCR0(1);                        <<01.02>>18628000
         INTEGER PCBSIZE,WORK2,IX1,INDX,SPOOLCST,              <<01.02>>18630000
                 SPOOLSV:=0;                                   <<01.02>>18632000
   BYTE ARRAY SYSNAME(0:6*12-1)=PB:=                           << WBT >>18634000
   "PROGEN",                                                   << WBT >>18636000
   "      ",                                                   << WBT >>18638000
   "UCOP  ",                                                   << WBT >>18640000
   "PFAIL ",                                                   << WBT >>18642000
   "DEVREC",                                                   << WBT >>18644000
   "      ",                                                   << WBT >>18646000
   "      ",                                                   << WBT >>18648000
   "LOG   ",                                                   << WBT >>18650000
   "LOAD  ",                                                   << WBT >>18652000
   "IOMESS",                                                   << WBT >>18654000
   "SYSIO ",                                                   << WBT >>18656000
   "MEMLOG";                                                   << WBT >>18658000
   ARRAY LPTABLE(0:11);                                        << WBT >>18660000
   INTEGER LPWORK;                                             << WBT >>18662000
         LOGICAL NENTRYS,WORK1,IND=INDX;                      <<<01.02>>18664000
   SUBROUTINE PUTL(BIT, COL, L);                               << WBT >>18666000
      VALUE BIT, COL, L;                                       << WBT >>18668000
      LOGICAL BIT;                                             << WBT >>18670000
      INTEGER COL;                                             << WBT >>18672000
      BYTE L;                                                  << WBT >>18674000
      BEGIN IF BIT<>0 THEN BBUF(COL-1):=L; END;                << WBT >>18676000
                                                               << WBT >>18678000
   SUBROUTINE WAITFLAGS(MF, C);                                << WBT >>18680000
      VALUE MF, C;                                             << WBT >>18682000
      LOGICAL MF;                                              << WBT >>18684000
      INTEGER C;                                               << WBT >>18686000
      BEGIN                                                    << WBT >>18688000
         PUTL(MF.(0:1), C+00, "M");    <<M>>                   << WBT >>18690000
         PUTL(MF.(1:1), C+02, "G");    <<RG>>                  << WBT >>18692000
         PUTL(MF.(2:1), C+04, "L");    <<RL>>                  << WBT >>18694000
         PUTL(MF.(3:1), C+06, "M");    <<MA>>                  << WBT >>18696000
         PUTL(MF.(4:1), C+08, "B");    <<BIO>>                 << WBT >>18698000
         PUTL(MF.(5:1), C+10, "I");    <<IO>>                  << WBT >>18700000
         PUTL(MF.(6:1), C+12, "U");    <<UCOP>>                << WBT >>18702000
         PUTL(MF.(7:1), C+14, "J");    <<JNK>>                 << WBT >>18704000
         PUTL(MF.(8:1), C+16, "T");    <<TIMER>>               << WBT >>18706000
         PUTL(MF.(9:1), C+18, "M");    <<MSG>>                 << WBT >>18708000
         PUTL(MF.(10:1), C+20, "S");   <<SON>>                 << WBT >>18710000
         PUTL(MF.(11:1), C+22, "F");   <<FATHER>>              << WBT >>18712000
         PUTL(MF.(12:1), C+24, "I");   <<IMP>>                 << WBT >>18714000
         PUTL(MF.(13:1), C+26, "S");   <<SIR>>                 << WBT >>18716000
         PUTL(MF.(14:1), C+28, "T");   <<TIMEOUT>>             << WBT >>18718000
         PUTL(MF.(15:1), C+30, "M");   <<MEM>>                 << WBT >>18720000
      END;                                                     << WBT >>18722000
                                                               << WBT >>18724000
                                                               << WBT >>18726000
   SUBROUTINE PUTQPIN(QPTR, COL);                              << WBT >>18728000
   VALUE QPTR, COL;                                            << WBT >>18730000
   LOGICAL QPTR;                                               << WBT >>18732000
   INTEGER COL;                                                << WBT >>18734000
   BEGIN                                                       << WBT >>18736000
      IF QPTR=0 THEN RETURN;                                   << WBT >>18738000
      IF (QPTR MOD 21) <> 0                                    << MCW >>18740000
      THEN MOVE BBUF(COL-2):="***"                             << WBT >>18742000
      ELSE PUTNZ(QPTR/21, COL);                                << MCW >>18744000
   END;                                                        << WBT >>18746000
                                                               << WBT >>18748000
   SUBROUTINE CHECKCURRENT;                                    << WBT >>18750000
   IF LOCPCB+DOUBLE(INDX*PCBSIZE)=CPCBADDR                     << WBT >>18752000
   THEN BBUF(4):="*";                                          << WBT >>18754000
                                                               << WBT >>18756000
                                                               << WBT >>18758000
   NEWPAGE;                                                    <<01833>>18760000
   INDXARAY(2*3):=PAGENO;                                      << WBT >>18762000
   <<FILL LP TABLE>>                                           << WBT >>18764000
   LPWORK:=0;                                                  << WBT >>18766000
   WHILE LPWORK<=11 DO                                         << WBT >>18768000
      BEGIN                                                    << WBT >>18770000
      LPTABLE(LPWORK):=CORE(DOUBLE(%1141+LPWORK))/21;          << MCW >>18772000
      LPWORK:=LPWORK+1;                                        << WBT >>18774000
      END;                                                     << WBT >>18776000
                                                               << WBT >>18778000
   LOCPCB:=VERIFYP(%3, %1003D);                                << WBT >>18780000
         IF <> THEN                                            <<01.02>>18782000
         BEGIN                                                 <<01.02>>18784000
            IF LOCPCB <>0D THEN WARNING ELSE                   <<01.02>>18786000
            BEGIN                                              <<01.02>>18788000
               NOFORMT';                                       <<00221>>18790000
               GO BAILOUT;                                     <<01.02>>18792000
            END;                                               <<01.02>>18794000
         END;                                                  <<01.02>>18796000
         TOS:=0;                                                        18798000
         TOS:=CORE(4D);                                                 18800000
         ENPCB:=TOS;                                                    18802000
         WORK1:=CORE(LOCPCB+ENPCB+3D);                         << MCW >>18804000
         CDSTN:=WORK1.(2:14);                                  << MCW >>18806000
         CPCBADDR:=LOCPCB+ENPCB;                               << MCW >>18808000
         ENPCB:=3D;                                                     18810000
         NENTRYS:=CORE(LOCPCB);                                << MCW >>18812000
         IF LOGICAL(NENTRYS)>1025 THEN                         << MCW >>18814000
         BEGIN                                                          18816000
            MOVE DBUFFER(23):="INVALID NUMBER OF ENTRIES";              18818000
            PRINTLINE;                                                  18820000
            GO TO BAILOUT;                                              18822000
         END;                                                           18824000
          PCBSIZE:=INTEGER (CORE(LOCPCB+1D));                 <<<01.02>>18826000
         IF PCBSIZE <> 21 THEN                                 << MCW >>18828000
         BEGIN                                                          18830000
            MOVE DBUFFER(23):="INVALID PCB SIZE";                       18832000
            PRINTLINE;                                                  18834000
            GO TO BAILOUT;                                              18836000
         END;                                                           18838000
         PHEAD1;                                               <<01082>>18840000
         STPCB:=LOCPCB;                                                 18842000
         IF INTEGER(NENTRYS) < 2 THEN GO TO PRINTSIZE;         <<01082>>18844000
         WORK1:=CORE(%1165D);<<GET SPOOL PLABEL>>              <<01.02>>18846000
         SPOOLCST:=WORK1.(8:8);                                <<01.02>>18848000
   INDX:=1;                                                    << WBT >>18850000
         DO                                                             18852000
         BEGIN                                                          18854000
            @PBUF:=@BBUF-2;                                    << MCW >>18856000
      IF INTEGER(PCB20) <0 THEN                                << MCW >>18858000
            GO BUMP;      <<UNASSIGNED SKIP TO NEXT ENTRY>>             18860000
      STKDST:=PCB03.(2:14);                                    << MCW >>18862000
            PUTNUMP(INDX);                                              18864000
      CHECKCURRENT;                                            << WBT >>18866000
                                                               << WBT >>18868000
      COMMENT DATA SEGMENT STUFF;                              << WBT >>18870000
                                                               << WBT >>18872000
      PUTNZ(PCB15,9);              << LSTT >>                  << MCW >>18874000
      PUTNZ(PCB02.(2:14), 14);    <<XDS DST#>>                 << MCW >>18876000
      PUTL(PCB02.(0:1), 16, "A");  <<ADB BIT>>                 << MCW >>18878000
      PUTNZ(PCB03.(2:14), 21);     <<STK DST#>>                << MCW >>18880000
      PUTL(PCB03.(0:1), 23, "A");  <<OV ALLOC>>                << MCW >>18882000
                                                               << WBT >>18884000
      COMMENT WAIT STUFF;                                      << WBT >>18886000
                                                               << WBT >>18888000
      WAITFLAGS(PCB04, 42);    <<WAKEMASK>>                    << MCW >>18890000
      WAITFLAGS(PCB10, 75);    <<EVENTFLAGS>>                  << MCW >>18892000
                                                               << WBT >>18894000
      COMMENT FAMILY TREE;                                     << WBT >>18896000
                                                               << WBT >>18898000
      PUTQPIN(PCB05, 28);    <<FATHER PIN>>                    << MCW >>18900000
      PUTQPIN(PCB06, 33);    <<SON PIN>>                       << MCW >>18902000
      PUTQPIN(PCB07, 38);    <<BROTHER PIN>>                   << MCW >>18904000
      CASE PCB08.(4:2) OF        <<OA>>                        << WBT >>18906000
         BEGIN                                                 << WBT >>18908000
            TOS:=" ";                                          << WBT >>18910000
            TOS:="F";   <<FATHER>>                             << WBT >>18912000
            TOS:="S";   <<SON>>                                << WBT >>18914000
            TOS:="R";   <<RIT REPLY>>                          << WBT >>18916000
         END;                                                  << WBT >>18918000
      BBUF(39):=TOS;                                           << MCW >>18920000
                                                               << WBT >>18922000
      COMMENT PSEUDO INTERRUPTS;                               << WBT >>18924000
                                                               << WBT >>18926000
      @PBUF:=@BBUF+106;                                        << MCW >>18928000
      CASE PCB08.(0:3) OF <<PSIM>>                             << WBT >>18930000
         BEGIN                                                 << WBT >>18932000
            ;                    <<0>>                         << WBT >>18934000
            MOVE PBUF:="HKIL";   <<1>>                         << WBT >>18936000
            MOVE PBUF:="SKIL";   <<2>>                         << WBT >>18938000
            MOVE PBUF:="STOP";   <<3>>                         << WBT >>18940000
            MOVE PBUF:="HIBN";   <<4>>                         << WBT >>18942000
            MOVE PBUF:="ESCP";   <<5>>                         << WBT >>18944000
            MOVE PBUF:="BRAK";   <<6>>                         << WBT >>18946000
            MOVE PBUF:="NORM";   <<7>>                         << WBT >>18948000
         END;                                                  << WBT >>18950000
      PUTL(PCB09.(10:1), 112, "H");   <<HK>>                   << MCW >>18952000
      PUTL(PCB09.(11:1), 114, "S");   <<SK>>                   << MCW >>18954000
      PUTL(PCB09.(12:1), 116, "T");   <<ST>>                   << MCW >>18956000
      PUTL(PCB09.(13:1), 118, "H");   <<HB>>                   << MCW >>18958000
      PUTL(PCB09.(14:1), 120, "Y");   <<CY>>                   << MCW >>18960000
      PUTL(PCB09.(15:1), 122, "B");   <<BK>>                   << MCW >>18962000
      PUTL(PCB00.(15:1), 124, "R");   <<RITBK>>                << MCW >>18964000
      PUTL(PCB00.(4:1),  126, "P");   <<PIOVR>>                << MCW >>18966000
                                                               << WBT >>18968000
      @PBUF:=@BBUF+127;                                        << MCW >>18970000
      CASE PCB09.(6:3) OF         <<PTYPE>>                    << WBT >>18972000
         BEGIN                                                 << WBT >>18974000
            MOVE PBUF:="USER";    <<0>>                        << WBT >>18976000
            MOVE PBUF:="USONM";   <<1>>                        << WBT >>18978000
            MOVE PBUF:="UMAIN";   <<2>>                        << WBT >>18980000
            MOVE PBUF:="UMTSK";   <<3>>                        << WBT >>18982000
            MOVE PBUF:="SYST";    <<4>>                        << WBT >>18984000
            ;                     <<5>>                        << WBT >>18986000
            MOVE PBUF:="SYSTU";   <<6>>                        << WBT >>18988000
            ;                     <<7>>                        << WBT >>18990000
         END;                                                  << WBT >>18992000
                                                               << WBT >>18994000
            PRINTLINE;                                                  18996000
BUMP:       INDX:=INDX+1;                                               18998000
            IF INDX=INTEGER(NENTRYS) THEN GO TO BEND;          <<01082>>19000000
            IF LINECOUNT=LNSPERPG THEN                         <<02012>>19002000
            BEGIN NEWPAGE; PHEAD1; END;                        <<02012>>19004000
BEND:                                                                   19006000
      END UNTIL INDX=INTEGER(NENTRYS);                         <<01082>>19008000
         IF (LINECOUNT*2) > (LNSPERPG+2) THEN NEWPAGE;         <<00221>>19010000
         PHEAD2;                                                        19012000
   INDX:=1;                                                    << WBT >>19014000
         DO                                                             19016000
         BEGIN                                                          19018000
            @PBUF:=@BBUF-2;                                    << MCW >>19020000
      IF INTEGER(PCB20) < 0 THEN                               << MCW >>19022000
            GO BUMP1;   <<UNASSIGNED SKIP TO NEXT ENTRY>>               19024000
            PUTNUMP(INDX);                                              19026000
      CHECKCURRENT;                                            << WBT >>19028000
                                                               << WBT >>19030000
      COMMENT SCHEDULING INFORMATION;                          << WBT >>19032000
                                                               << WBT >>19034000
      PUTQPIN(PCB19, 11);  <<NQPTR>>                           << MCW >>19036000
      PUTQPIN(PCB20, 18);   <<PQPTR>>                          << MCW >>19038000
      PUTL(PCB13.(0:1), 23, "D");  <<DISPQ>>                   << WBT >>19040000
      PUTL(PCB13.(1:1), 25, "L");  <<LIN SCHD>>                << WBT >>19042000
      PUTL(PCB13.(2:1), 27, "C");  <<C Q>>                     << WBT >>19044000
      PUTL(PCB13.(3:1), 29, "D");  <<D Q>>                     << WBT >>19046000
      PUTL(PCB13.(4:1), 31, "E");  <<E Q>>                     << WBT >>19048000
      PUTL(PCB13.(5:1), 33, "I");  <<INTERACTIVE>>             << WBT >>19050000
      PUTL(PCB13.(6:1), 35, "C");  <<CORE RESIDENT>>           << WBT >>19052000
      PUTNZ(PCB13.(8:8), 39);      <<PRIORITY>>                << WBT >>19054000
      PUTL(PCB00.(13:1), 41, "H"); <<HIPRI>>                   << WBT >>19056000
      PUTL(PCB00.(12:1), 43, "U"); <<USEDQ>>                   << WBT >>19058000
      PUTL(PCB00.(11:1), 45, "T"); <<TRW>>                     << WBT >>19060000
      PUTL(PCB00.(10:1), 47, "S"); <<SW>>                      << WBT >>19062000
      PUTL(PCB00.(9:1), 49, "L");  <<LW>>                      << WBT >>19064000
      PUTL(PCB00.(8:1), 51, "M");  <<MP>>                      << WBT >>19066000
      PUTL(PCB00.(7:1), 53, "P");  <<PC>>                      << WBT >>19068000
      PUTL(PCB00.(6:1), 55, "I");  <<IPEXP>>                   << WBT >>19070000
      PUTL(PCB00.(5:1), 57, "H");  <<HSPRI>>                   << WBT >>19072000
      PUTL(PCB00.(0:1), 59, "S");  <<SAR>>                     << WBT >>19074000
      PUTL(PCB09.(5:1), 61, "V");  <<STOV>>                    << WBT >>19076000
                                                               << WBT >>19078000
      COMMENT RESOURCES;                                       << WBT >>19080000
                                                               << WBT >>19082000
      PUTL(PCB00.(2:1), 65, "C");  <<CRITICAL>>                << WBT >>19084000
      PUTL(PCB00.(3:1), 67, "H");  <<HAS SIR>>                 << WBT >>19086000
      PUTQPIN(PCB16, 72);      <<PREV IMP PIN>>                << MCW >>19088000
      PUTQPIN(PCB17, 77);      <<NEXT IMP PIN>>                << MCW >>19090000
      PUTL(PCB03.(1:1), 79, "S"); <<SYSTEM CODE>>              << MCW >>19092000
                                                               << WBT >>19094000
      COMMENT COMMUNICATION;                                   << WBT >>19096000
                                                               << WBT >>19098000
      @PBUF:=@BBUF+88;                                         <<01791>>19100000
      CASE PCB09.(1:2) OF          <<BMS>>                     << WBT >>19102000
         BEGIN                                                 << WBT >>19104000
            MOVE PBUF:="SNF";                                  << WBT >>19106000
            MOVE PBUF:="REF";                                  << WBT >>19108000
            MOVE PBUF:="SNS";                                  << WBT >>19110000
            MOVE PBUF:="RES";                                  << WBT >>19112000
         END;                                                  << WBT >>19114000
      @PBUF:=@BBUF+92;                                         <<01791>>19116000
      CASE PCB09.(3:2) OF          <<PPC>>                     << WBT >>19118000
         BEGIN                                                 << WBT >>19120000
            MOVE PBUF:="NUL";                                  << WBT >>19122000
            MOVE PBUF:="STF";                                  << WBT >>19124000
            MOVE PBUF:="FTS";                                  << WBT >>19126000
            MOVE PBUF:="BLK";                                  << WBT >>19128000
         END;                                                  << WBT >>19130000
                                                               << WBT >>19132000
      COMMENT MISCELLANEOUS;                                   << WBT >>19134000
                                                               << WBT >>19136000
      PUTSEGID(PCB11, PCB12, 97);  << PCST >>                  << MCW >>19138000
                                                               << WBT >>19140000
      PUTNZ(PCB14, 114);        <<PBXPTR>>                     << MCW >>19142000
                                                               << WBT >>19144000
      PUTNZ(PCB01, 121);        <<SLL PTR>>                    <<01791>>19146000
                                                               << WBT >>19148000
      PUTNZ(PCB18, 125);  <<BPT LINK>>                         << MCW >>19150000
                                                               << WBT >>19152000
      COMMENT LIFE/DEATH BITS;                                 << WBT >>19154000
                                                               << WBT >>19156000
      PUTL(PCB09.(0:1), 82, "L");                              <<01791>>19158000
      PUTL(PCB08.(6:1), 84, "D");                              <<01791>>19160000
      PUTL(PCB08.(7:1), 86, "F");                              <<01791>>19162000
                                                               << WBT >>19164000
      << PRINT NAME FOR SYSTEM PROCESS >>                      << WBT >>19166000
      LPWORK:=0;                                               << WBT >>19168000
      WHILE LPWORK<=11 DO                                      << WBT >>19170000
         BEGIN                                                 << WBT >>19172000
         IF INDX=INTEGER(LPTABLE(LPWORK)) THEN                 << WBT >>19174000
            BEGIN                                              << WBT >>19176000
            MOVE BBUF(126):=SYSNAME(6*LPWORK),(6);             << WBT >>19178000
            LPWORK:=1000;                                      << WBT >>19180000
            END;                                               << WBT >>19182000
         LPWORK:=LPWORK+1;                                     << WBT >>19184000
         END;                                                  << WBT >>19186000
                                                               << WBT >>19188000
            PRINTLINE;                                                  19190000
BUMP1:      INDX:=INDX+1;                                               19192000
            IF INDX=INTEGER(NENTRYS) THEN GO TO BEND1;         <<01082>>19194000
            IF LINECOUNT=LNSPERPG THEN PHEAD2;                 <<00221>>19196000
BEND1:                                                                  19198000
         END UNTIL INDX=INTEGER(NENTRYS);                      <<01082>>19200000
PRINTSIZE:                                                     <<01082>>19202000
         SKIPLINES(1);                                         << MCW >>19204000
         MOVE BBUF(8):="ENTRIES";                              << MCW >>19206000
         MOVE BBUF(36):="LENGTH";                              << MCW >>19208000
         MOVE BBUF(64):="CURRENTLY IMPEDED";                   << MCW >>19210000
         MOVE BBUF(102):="FIRST FREE INDEX";                   << MCW >>19212000
         PUTNZ(CORE(LOCPCB),6);   <<ENTRIES>>                  << MCW >>19214000
         PUTNZ(CORE(LOCPCB+1D),34);     << ENTRY LENGTH >>     << MCW >>19216000
         PUTNZ(CORE(LOCPCB+9D),62);     << CUR IMPEDED >>      << MCW >>19218000
         PUTNZ(CORE(LOCPCB+3D),98);     << FIRST FREE  >>      << MCW >>19220000
         PRINTLINE;                                            << MCW >>19222000
         MOVE BBUF(8):="UNASSIGNED";                           << MCW >>19224000
         MOVE BBUF(36):="PRIMARY";                             << MCW >>19226000
         MOVE BBUF(64):="MAXIMUM IMPEDED";                     << MCW >>19228000
         MOVE BBUF(102):="LAST FREE INDEX";                    << MCW >>19230000
         PUTNZ(CORE(LOCPCB+2D),6);        << UNASSIGNED >>     << MCW >>19232000
         PUTNZ(CORE(LOCPCB+6D),34);       << PRIMARY >>        << MCW >>19234000
         PUTNZ(CORE(LOCPCB+10D),62);     << MAX IMPEDED >>     << MCW >>19236000
         PUTNZ(CORE(LOCPCB+4D),98);      << LAST FREE >>       << MCW >>19238000
         PRINTLINE;                                            << MCW >>19240000
         MOVE BBUF(8):="ASSIGNED";                             << MCW >>19242000
         MOVE BBUF(36):="HIGH WATER";                          << MCW >>19244000
         MOVE BBUF(64):="CUMULATIVE IMPEDED";                  << MCW >>19246000
         MOVE BBUF(102):="IMP QUEUE HEAD INDEX";               << MCW >>19248000
         PUTNZ(NENTRYS-CORE(LOCPCB+2D),6);    << ASSIGNED >>   << MCW >>19250000
         PUTNZ(CORE(LOCPCB+5D),34);        << HIGH WATER >>    << MCW >>19252000
         PUTNZ(CORE(LOCPCB+11D),62);       << CUMUALTIVE >>    << MCW >>19254000
         PUTNZ(CORE(LOCPCB+7D),98);        <<IMP Q HEAD>>      << MCW >>19256000
         PRINTLINE;                                            << MCW >>19258000
         MOVE BBUF(102):="IMP QUEUE TAIL INDEX";               << MCW >>19260000
         PUTNZ(CORE(LOCPCB+8D),98);       << IMP Q TAIL >>     << MCW >>19262000
         PRINTLINE;                                            << MCW >>19264000
                                                               << WBT >>19266000
BAILOUT:                                                                19268000
      END;                                                              19270000
                                                                        19272000
$PAGE "MAKEFREEMAP: Make map of free table entries"                     19274000
$CONTROL SEGMENT=TABLES2                                                19276000
COMMENT                                                                 19278000
                                                                        19280000
Purpose:                                                                19282000
     Used by PRINTDST and FIXPCBSTACK.  Scans a given table and         19284000
     flags free entries and invalid indices.  The free map can          19286000
     then be used to process only existing entries.                     19288000
                                                                        19290000
Input parameters:                                                       19292000
                                                                        19294000
Output parameters:                                                      19296000
                                                                        19298000
Globals Referenced:                                                     19300000
                                                                        19302000
Globals Altered:                                                        19304000
                                                                        19306000
Data Structures:                                                        19308000
                                                                        19310000
Algorithm:                                                              19312000
                                                                        19314000
;                                                                       19316000
PROCEDURE MAKEFREEMAP(TABLEBASE, MAP, ENTRYSIZE, MAXENTNO,     <<01875>>19318000
                      TABLENAME);                              <<01875>>19320000
VALUE ENTRYSIZE, MAXENTNO;                                     <<01791>>19322000
INTEGER ENTRYSIZE, MAXENTNO;                                   <<01791>>19324000
DOUBLE TABLEBASE;                                              <<01791>>19326000
ARRAY MAP;                                                     <<01791>>19328000
BYTE ARRAY TABLENAME;                                          <<01875>>19330000
BEGIN                                                          <<01791>>19332000
   INTEGER COUNT, FREEX, MAPINDEX;                             <<01875>>19334000
   MAP:=FALSE;                                                 <<01791>>19336000
   MOVE MAP(1):=MAP,(MAXENTNO);                                <<01791>>19338000
   FREEX:=FIRSTFREEX;                                          <<01791>>19340000
   COUNT:=NUMCONFIG-1;                                         << MCW >>19342000
   IF COUNT>MAXENTNO THEN COUNT:=MAXENTNO;                     <<01791>>19344000
   WHILE COUNT>=0 AND FREEX<>0 DO                              <<01791>>19346000
   BEGIN                                                       <<01791>>19348000
      MAPINDEX:=FREEX/ENTRYSIZE;                               <<01875>>19350000
      IF NOT (0<=MAPINDEX<=MAXENTNO) THEN                      <<01875>>19352000
      BEGIN                                                    <<01875>>19354000
         SKIPLINES(2);                                         <<01875>>19356000
         MOVE BBUF:="****** WARNING -- INVALID FREE LIST IN ",2;        19358000
         MOVE    *:=TABLENAME(1),(INTEGER(TABLENAME(0))),2;    <<01875>>19360000
         MOVE    *:=" -- ATTEMPTING TO CONTINUE.";             <<01875>>19362000
         PRINTLINE;                                            <<01875>>19364000
         SKIPLINES(2);                                         <<01875>>19366000
         RETURN;                                               <<01875>>19368000
      END;                                                     <<01875>>19370000
      MAP(MAPINDEX):=TRUE;                                     <<01875>>19372000
      COUNT:=COUNT-1;                                          <<01791>>19374000
      FREEX:=NEXTFREEX;                                        <<01791>>19376000
   END;                                                        <<01791>>19378000
END;                                                           <<01791>>19380000
                                                                        19382000
$PAGE "PHEAD1: Print header for first half of PCB table"                19384000
$CONTROL SEGMENT=TABLES                                                 19386000
COMMENT                                                                 19388000
                                                                        19390000
Purpose:                                                                19392000
    Print header for first half of PCB table                            19394000
                                                                        19396000
Input parameters:                                                       19398000
                                                                        19400000
Output parameters:                                                      19402000
                                                                        19404000
Globals Referenced:                                                     19406000
                                                                        19408000
Globals Altered:                                                        19410000
                                                                        19412000
Data Structures:                                                        19414000
                                                                        19416000
Algorithm:                                                              19418000
                                                                        19420000
;                                                                       19422000
PROCEDURE PHEAD1;                                              << WBT >>19424000
BEGIN                                                          << WBT >>19426000
   MOVE DBUFFER(16):=                                          << WBT >>19428000
   "******    PROCESS CONTROL BLOCK (1ST HALF)    ******";     << WBT >>19430000
   PRINTLINE;                                                  << WBT >>19432000
   SKIPLINES(2);                                               << WBT >>19434000
   <<LINE 1>>                                                  << WBT >>19436000
   MOVE BBUF(63):="W A I T   S T A T E";                       << MCW >>19438000
   PRINTLINE;                                                  << WBT >>19440000
   <<LINE 2>>                                                  << WBT >>19442000
   MOVE BBUF(9):="DATA";                                       << WBT >>19444000
   PRINTLINE;                                                  << WBT >>19446000
   <<LINE 3>>                                                  << WBT >>19448000
   MOVE BBUF(5):="----SEGMENTS----";                           << MCW >>19450000
   MOVE BBUF(41):="-----------WAKEMASK------------";           << MCW >>19452000
   MOVE BBUF(74):="----------EVENTFLAGS-----------";           << MCW >>19454000
   MOVE BBUF(24):="---FAMILY TREE--";                          << MCW >>19456000
   MOVE BBUF(106):="-PSEUDO INTERRUPTS--";                     << MCW >>19458000
   MOVE BBUF(127):="MISC";                                     << MCW >>19460000
   PRINTLINE;                                                  << WBT >>19462000
   <<LINE 4>>                                                  << WBT >>19464000
   PRINTLINE;                                                  << WBT >>19466000
   <<LINE 5>>                                                  << WBT >>19468000
   BBUF(22):="O";                                              << MCW >>19470000
   MOVE BBUF(57):="T     F     T";                             << MCW >>19472000
   MOVE BBUF(90):=BBUF(57),(13);                               << MCW >>19474000
   MOVE BBUF(123):="R P";                                      << MCW >>19476000
   PRINTLINE;                                                  << WBT >>19478000
   <<LINE 6>>                                                  << WBT >>19480000
   BBUF(22):="V";                                              << MCW >>19482000
   MOVE BBUF(53):="U J I     A     M";                         << MCW >>19484000
   MOVE BBUF(86):=BBUF(53),(17);                               << MCW >>19486000
   MOVE BBUF(123):="I I";                                      << MCW >>19488000
   PRINTLINE;                                                  << WBT >>19490000
   <<LINE 7>>                                                  << WBT >>19492000
   BBUF(15):="A";                                              << MCW >>19494000
   BBUF(22):="A";                                              << MCW >>19496000
   MOVE BBUF(49):="B   C U M M S T I S O M";                   << MCW >>19498000
   MOVE BBUF(82):=BBUF(49),(23);                               << MCW >>19500000
   MOVE BBUF(123):="T O";                                      << MCW >>19502000
                                                               << MCW >>19504000
   PRINTLINE;                                                  << WBT >>19506000
   <<LINE 8>>                                                  << WBT >>19508000
   BBUF(15):="D";                                              << MCW >>19510000
   BBUF(22):="L";                                              << MCW >>19512000
   MOVE BBUF(43):="R R M I I O N E S O H M I U E";             << MCW >>19514000
   MOVE BBUF(76):=BBUF(43),(29);                               << MCW >>19516000
   MOVE BBUF(24):="FTHR  SON  BRO O";                          << MCW >>19518000
   MOVE BBUF(111):="H S S H C B B V";                          << MCW >>19520000
                                                               << MCW >>19522000
   PRINTLINE;                                                  << WBT >>19524000
   <<LINE 9>>                                                  << WBT >>19526000
   MOVE BBUF:="PIN  LSTT";                                     << MCW >>19528000
   MOVE BBUF(10):="XDS  B STAK C";                             << MCW >>19530000
   MOVE BBUF(41):="M G L A O O P K R G N R P R T M";           << MCW >>19532000
   MOVE BBUF(74):=BBUF(41),(31);                               << MCW >>19534000
   MOVE BBUF(24):="PIN   PIN  PIN A";                          << MCW >>19536000
   MOVE BBUF(106):="PSIM K K T B Y K K R";                     << MCW >>19538000
   MOVE BBUF(127):="PTYPE";                                    << MCW >>19540000
                                                               << MCW >>19542000
   PRINTLINE;                                                  << WBT >>19544000
                                                               << WBT >>19546000
   <<LINE 10>>                                                 << WBT >>19548000
   MOVE BBUF:="---- ----";                                     << MCW >>19550000
   MOVE BBUF(10):="---- - ---- -";                             << MCW >>19552000
   MOVE BBUF(41):="- ",2;                                      << MCW >>19554000
   MOVE *:=BBUF(41),(30);                                      << MCW >>19556000
   MOVE BBUF(74):=BBUF(41),(31);                               << MCW >>19558000
   MOVE BBUF(24):="---- ---- ---- -";                          << MCW >>19560000
   MOVE BBUF(106):="---- ",2;                                  << MCW >>19562000
   MOVE *:=BBUF(109),(16);                                     << MCW >>19564000
   MOVE BBUF(127):="-----";                                    << MCW >>19566000
   PRINTLINE;                                                  << WBT >>19568000
                                                               << WBT >>19570000
   SKIPLINES(1);                                               << WBT >>19572000
END;  <<PHEAD1>>                                               << WBT >>19574000
                                                                        19576000
$PAGE "PHEAD2: Print header for second half of PCB"                     19578000
$CONTROL SEGMENT=TABLES                                                 19580000
COMMENT                                                                 19582000
                                                                        19584000
Purpose:                                                                19586000
     Print header for second half of PCB                                19588000
                                                                        19590000
Input parameters:                                                       19592000
                                                                        19594000
Output parameters:                                                      19596000
                                                                        19598000
Globals Referenced:                                                     19600000
                                                                        19602000
Globals Altered:                                                        19604000
                                                                        19606000
Data Structures:                                                        19608000
                                                                        19610000
Algorithm:                                                              19612000
                                                                        19614000
;                                                                       19616000
PROCEDURE PHEAD2;                                              << WBT >>19618000
BEGIN                                                          << WBT >>19620000
   IF LINECOUNT > 5 THEN SKIPLINES(3);                         << WBT >>19622000
   MOVE DBUFFER(16):=                                          << WBT >>19624000
   "******    PROCESS CONTROL BLOCK (2ND HALF)    ******";     << WBT >>19626000
   PRINTLINE;                                                  << WBT >>19628000
   SKIPLINES(2);                                               << WBT >>19630000
   <<LINE 1>>                                                  << WBT >>19632000
   MOVE BBUF(6):="----- S C H E D U L I N G   I N F O R M A",2;<< WBT >>19634000
   MOVE *:=" T I O N -----";                                   << WBT >>19636000
   MOVE BBUF(64):="---RESOURCES---";                           << WBT >>19638000
   MOVE BBUF(81):="LIFE/";                                     <<01791>>19640000
   MOVE BBUF(88):="-------------- MISCELLANEOUS ---------------";       19642000
   PRINTLINE;                                                  << WBT >>19644000
   <<LINE 2>>                                                  << WBT >>19646000
   MOVE BBUF(81):="DEATH";                                     <<01791>>19648000
   PRINTLINE;                                                  << WBT >>19650000
   <<LINE 3>>                                                  << WBT >>19652000
   MOVE BBUF(20):="  D         I C     H U           I H";     << WBT >>19654000
   PRINTLINE;                                                  << WBT >>19656000
   <<LINE 4>>                                                  << WBT >>19658000
   MOVE BBUF(20):="  I         N O     I S           P S";     << WBT >>19660000
   MOVE BBUF(64):="C H";                                       << WBT >>19662000
   MOVE BBUF(81):="L D";                                       <<01791>>19664000
   PRINTLINE;                                                  << WBT >>19666000
   <<LINE 5>>                                                  << WBT >>19668000
   MOVE BBUF(20):="  S         T R     P E T         E P S S"; << WBT >>19670000
   MOVE BBUF(64):="R S PREV NEXT";                             << WBT >>19672000
   MOVE BBUF(81):="I E F";                                     <<01791>>19674000
   MOVE BBUF(126):="SYSTEM";                                   << WBT >>19676000
   PRINTLINE;                                                  << WBT >>19678000
   <<LINE 6>>                                                  << WBT >>19680000
   MOVE BBUF(20):="  P L C D E E E     R D R S L M P X R A O"; << WBT >>19682000
   MOVE BBUF(64):="I I IMPD IMPD S";                           << WBT >>19684000
   MOVE BBUF(81):="V A A";                                     <<01791>>19686000
   MOVE BBUF(122):="BPT";                                      <<01791>>19688000
   MOVE BBUF(127):="PROC";                                     << WBT >>19690000
   PRINTLINE;                                                  << WBT >>19692000
   <<LINE 7>>                                                  << WBT >>19694000
   MOVE BBUF:="PIN";                                           << WBT >>19696000
   MOVE BBUF(7):="NQPIN  PQPIN   Q Q Q Q Q R R PRI I Q W W W",2;        19698000
   MOVE BBUF(127):="PROC";                                     << WBT >>19700000
   MOVE *:=" P C P I R V";                                     << WBT >>19702000
   MOVE BBUF(64):="T R PIN  PIN  C";                           << WBT >>19704000
   MOVE BBUF(81):="E D C  BMS PPC    PCST";                    <<01791>>19706000
   MOVE BBUF(108):="PBXPTR SLLPTR LNK  NAME";                  <<01791>>19708000
   PRINTLINE;                                                  << WBT >>19710000
   <<LINE 8>>                                                  << WBT >>19712000
   MOVE BBUF:="----";                                          << MCW >>19714000
   MOVE BBUF(7):="-----  -----";                               << WBT >>19716000
   MOVE BBUF(20):=BBUF(18),(16);  BBUF(20):=" ";               << WBT >>19718000
   MOVE BBUF(36):="--- ";                                      << WBT >>19720000
   MOVE BBUF(40):=BBUF(38),(22);                               << WBT >>19722000
   MOVE BBUF(64):="- - ---- ---- -";                           << WBT >>19724000
   MOVE BBUF(81):="- - -  --- --- -----------";                <<01791>>19726000
   MOVE BBUF(108):="------ ------ --- ------";                 <<01791>>19728000
   PRINTLINE;                                                  << WBT >>19730000
                                                               << WBT >>19732000
   SKIPLINES(1);                                               << WBT >>19734000
END; <<PHEAD2>>                                                << WBT >>19736000
                                                                        19738000
$PAGE "PRINTSTACKS: Print stack markers for present stacks"             19740000
$CONTROL SEGMENT=TABLES                                                 19742000
                                                               <<00221>>19744000
COMMENT                                                                 19746000
                                                                        19748000
Purpose:                                                                19750000
<<            PRINT ALL STACK MARKERS               >>         <<00221>>19752000
<<  THIS PROCEDURE STEPS THROUGH THE PCB AND CALLS  >>         <<00221>>19754000
<<  CHECKSTACK FOR EACH PRESENT STACK.  THIS WILL   >>         <<00221>>19756000
<<  PRINT OUT THE STACK MARKERS FOR ALL PRESENT     >>         <<00221>>19758000
<<  STACKS.  THE CURRENT PROCESS STACK IS PRINTED   >>         <<00221>>19760000
<<  FIRST.                                          >>         <<00221>>19762000
                                                                        19764000
Input parameters:                                                       19766000
                                                                        19768000
Output parameters:                                                      19770000
                                                                        19772000
Globals Referenced:                                                     19774000
                                                                        19776000
Globals Altered:                                                        19778000
                                                                        19780000
Data Structures:                                                        19782000
                                                                        19784000
Algorithm:                                                              19786000
                                                                        19788000
;                                                                       19790000
PROCEDURE PRINTSTACKS;                                         <<00221>>19792000
   BEGIN                                                       <<00221>>19794000
     DOUBLE SCRATCH,SCRATCH1,SCRATCH2,SCRATCH3;                <<00221>>19796000
     LOGICAL WORK,WORK1,WORK2,WORK3,FREEPTR;                   << WBT >>19798000
     NEWPAGE;                                                  <<00221>>19800000
     MOVE DBUFFER(25):=                                        <<*1391>>19802000
        "****** STACKS ******";                                <<*1391>>19804000
     PRINTLINE;                                                <<00221>>19806000
     SKIPLINES(2);                                             <<00221>>19808000
     IF CORE(4D) <> 0 THEN          <<CURRENT PROCESS>>        <<00221>>19810000
                                                               << MCW >>19812000
       BEGIN                                                   <<00221>>19814000
      SCRATCH:=DOUBLE(CORE(4D))+PCBDEFIN+3D;<<ADDRESS OF DST>> << MCW >>19816000
         WORK:=CORE(SCRATCH).(2:14);    <<DST NUMBER>>         << MCW >>19818000
         MBENTNO:=WORK;                 <<DST NUMBER>>         << WBT >>19820000
CHECKSTACK(WORK);                                              <<03076>>19822000
         INDXARAY((LSTSYSDST+1)*2):=PAGENO;                    <<00221>>19824000
         NEWPAGE;                                              <<00221>>19826000
       END;                                                    <<00221>>19828000
     SCRATCH:=PCBDEFIN;                 <<ADDRESS OF PCB>>     <<00221>>19830000
     IF SCRATCH < 1D OR                                        <<00221>>19832000
        CORE(SCRATCH) > 1025 THEN       <<INVALID>>            << MCW >>19834000
      BEGIN                                                    <<00221>>19836000
        MOVE PBUF:="INVALID PCB: CANNOT PRINT STACKS";         <<00221>>19838000
        PRINTLINE;                                             <<00221>>19840000
        RETURN;                                                <<00221>>19842000
      END;                                                     <<00221>>19844000
     WORK2:=CORE(SCRATCH)-1;        <<NUMBER OF PCB INTRIES>>  <<*9327>>19846000
     WORK:=1;                           <<FIRST VALID PIN>>    << WBT >>19848000
PSTACK:                                                        <<00221>>19850000
     SCRATCH1:=SCRATCH+DOUBLE(WORK*21); <<ENTRY POINTER>>      << MCW >>19852000
     IF NOT ISFREEPCB(WORK) THEN                               << WBT >>19854000
       BEGIN                                                   <<00221>>19856000
         WORK1:=CORE(SCRATCH1+3D).(2:14);  <<DST NUMBER>>      << MCW >>19858000
         MBENTNO:=WORK1;                   <<FOR CHECKSTACK>>  << WBT >>19860000
         SCRATCH2:=        DSTDEFIN+       <<DST BASE>>        <<00221>>19862000
                   DOUBLE(WORK1*4);        <<DST OFFSET>>      <<00221>>19864000
         IF CORE(SCRATCH2).(0:1) = 0        <<PRESENT>>        <<01791>>19866000
         OR  CORE(SCRATCH2+1D).(1:1) = 1 THEN   <<OR ROC>>     <<01791>>19868000
          BEGIN                             <<ITS THERE>>      <<00221>>19870000
CHECKSTACK(WORK1);                                             <<03076>>19872000
          END;                                                 <<00221>>19874000
       END;                                                    <<00221>>19876000
     WORK:=WORK+1;                   <<NEXT PIN>>              <<00221>>19878000
     IF WORK <= WORK2 THEN GOTO PSTACK;                        <<00221>>19880000
   END;                                                        <<00221>>19882000
                                                                        19884000
$PAGE "PRINTSIR: Print SIR table, check for locked sirs"                19886000
$CONTROL SEGMENT=TABLES                                                 19888000
                                                                        19890000
COMMENT                                                                 19892000
                                                                        19894000
Purpose:                                                                19896000
    This procedure will print locked sirs and the impeded               19898000
    list if any. if no sirs are locked then "no locked sirs"            19900000
    will be printed.                                                    19902000
                                                                        19904000
Input parameters:                                                       19906000
                                                                        19908000
Output parameters:                                                      19910000
                                                                        19912000
Globals Referenced:                                                     19914000
                                                                        19916000
Globals Altered:                                                        19918000
                                                                        19920000
Data Structures:                                                        19922000
                                                                        19924000
Algorithm:                                                              19926000
                                                                        19928000
;                                                                       19930000
PROCEDURE PRINTSIR;                                                     19932000
  BEGIN                                                                 19934000
    DOUBLE LOCSIR,LOCDST,LOCPCB;                                        19936000
      INTEGER COUNT,CNT2,INDX,LSIR,PCB'ENTRIES,PCBCOUNT;      <<<01078>>19938000
      LOGICAL WORK1,WORK2,WORK3,WORK4,WORK5;                  <<<01.02>>19940000
   EQUATE PCBSIZE= 21;                                         << MCW >>19942000
    NEWPAGE;                                                            19944000
    INDXARAY(%53*2):=PAGENO;                                            19946000
    MOVE DBUFFER(23):=                                                  19948000
    "******    SIR TABLE    ******";                                    19950000
    PRINTLINE;                                                          19952000
    SKIPLINES(3);                                                       19954000
      LOCSIR:=VERIFYP(%53,%1014D);                             <<01.02>>19956000
      IF <> THEN                                               <<01.02>>19958000
      IF LOCSIR <> 0D THEN WARNING ELSE                        <<01.02>>19960000
      BEGIN                                                    <<01.02>>19962000
         NOFORMT';                                             <<00221>>19964000
         GO BAILOUT;                                           <<01.02>>19966000
      END;                                                     <<01.02>>19968000
     LOCDST:=DSTDEFIN;       <<DEFINE DST BASE>>               <<00221>>19970000
    LSIR:=4*(CORE(LOCDST+DOUBLE(4*%53)).(3:13)); <<LENGTH SIR DST>>     19972000
   << INITIALIZE TABLE OF IMPEDED/VALID/ACTIVE PINS>>          <<00221>>19974000
    << THIS TABLE PREVENTS LOOPING WHEN PRINTING SIRS>>        <<00221>>19976000
    << THE TABLE IS ACCESSED INDEXED BY PIN:         >>        <<00221>>19978000
    <<    VALUE        MEANING                       >>        <<00221>>19980000
    <<      0      PIN IS NOT IMPEDED                >>        <<00221>>19982000
    <<      1      PIN IS WAITING FOR CURRENT SIR    >>        << WBT >>19984000
    <<      2      PIN CANNOT BE WAITING FOR SIR     >>        << WBT >>19986000
    <<      3      PIN IS <1 OR >NENTRIES            >>        << WBT >>19988000
    <<      4      PIN IS WAITING FOR ANOTHER SIR    >>        << WBT >>19990000
     LOCPCB:=PCBDEFIN;                                         <<00221>>19992000
     PCB'ENTRIES:=INTEGER(CORE(LOCPCB));<<NUMBER OF ENTRIES>>  <<01078>>19994000
     INDX:=-1;                         <<INITIAL VALUE>>       <<00221>>19996000
     WHILE (INDX:=INDX+1) <= 1023 DO   <<WHILE POSSIBLE>>      << MCW >>19998000
       BEGIN                           <<FOR ALL PINS>>        <<00221>>20000000
        SIRPIN(INDX):=0;               <<ASSUME IT IS OK>>     <<00221>>20002000
        IF((INDX<1) OR (INDX>PCB'ENTRIES))THEN SIRPIN(INDX):=3;<< WBT >>20004000
        IF ISFREEPCB(INDX)                                     << WBT >>20006000
        OR PCB13.(0:1)=1                                       << WBT >>20008000
        OR PCB04.(13:1)=0                                      << WBT >>20010000
                                      THEN SIRPIN(INDX):=2;    <<00221>>20012000
       END;                            <<FOR ALL PINS>>        <<00221>>20014000
                                                               <<00221>>20016000
    INDX:=0;                                                            20018000
    COUNT:=0;                                                           20020000
    WHILE (INDX:=INDX+4)< LSIR DO                              << MCW >>20022000
    BEGIN                                                               20024000
      WORK1:=CORE(LOCSIR+DOUBLE(INDX));                                 20026000
      <<GET SIR ENTRY>>                                                 20028000
      WORK2:=CORE(LOCSIR+DOUBLE(INDX+1));                               20030000
      IF WORK1=0 THEN GO AEND;                                          20032000
      <<FREE SIR>>                                                      20034000
      COUNT:=COUNT+1;   <<COUNT LOCKED SIRS>>                           20036000
      MOVE BBUF:="SIR #    LOCKED BY PIN # ";                           20038000
      @PBUF:=@BBUF+2;                                                   20040000
      PUTNUMP(INDX/4);   <<SIR#>>                              << MCW >>20042000
      @PBUF:=@BBUF+21;                                                  20044000
      PUTNUMP(WORK1/21);    <<PIN#>>                           << MCW >>20046000
      IF (INDX/4) > %47 THEN GO COUT;                          << MCW >>20048000
      CASE * (INDX/4) OF                                       << MCW >>20050000
      BEGIN  <<CASES>>                                                  20052000
        BEGIN  <<0>>                                                    20054000
        END;                                                            20056000
        BEGIN  <<1>>                                                    20058000
          MOVE BBUF(60):="LOAD PROCESS SIR";                            20060000
        END;                                                            20062000
        BEGIN  <<2>>                                                    20064000
          MOVE BBUF(60):="CACHE CONTROL SIR";                  <<sknew>>20066000
        END;                                                            20068000
        BEGIN  <<3>>                                                    20070000
          MOVE BBUF(60):="IDD";                                         20072000
        END;                                                            20074000
        BEGIN  <<4>>                                                    20076000
          MOVE BBUF(60):="ODD";                                         20078000
        END;                                                            20080000
        BEGIN  <<5>>                                                    20082000
          MOVE BBUF(60):="PROCESS TREE STRUCTURE";                      20084000
        END;                                                            20086000
        BEGIN  <<6>>                                                    20088000
          MOVE BBUF(60):="SCHEDULING QUEUE";                            20090000
        END;                                                            20092000
        BEGIN  <<7>>                                                    20094000
          MOVE BBUF(60):="CST ENTRIES";                                 20096000
        END;                                                            20098000
        BEGIN  <<10>>                                                   20100000
          MOVE BBUF(60):="SYSTEM DIRECTORY";                            20102000
        END;                                                            20104000
        BEGIN  <<11>>                                                   20106000
          MOVE BBUF(60):="LPDT";                                        20108000
        END;                                                            20110000
        BEGIN  <<12>>                                                   20112000
          MOVE BBUF(60):="LDT";                                         20114000
        END;                                                            20116000
        BEGIN  <<13>>                                                   20118000
          MOVE BBUF(60):="STORAGE IN OVERLAY AREA";                     20120000
        END;                                                            20122000
        BEGIN  <<14>>                                                   20124000
          MOVE BBUF(60):="DISC FREE SPACE TABLE";                       20126000
        END;                                                            20128000
        BEGIN  <<15>>                                                   20130000
          MOVE BBUF(60):="JPCNT";                                       20132000
        END;                                                            20134000
        BEGIN  <<16>>                                                   20136000
        MOVE BBUF(60):="JCUT";                                 <<00221>>20138000
        END;                                                            20140000
        BEGIN  <<17>>                                                   20142000
        MOVE BBUF(60):="JMAT";                                 <<00221>>20144000
        END;                                                            20146000
        BEGIN  <<20>>                                                   20148000
          MOVE BBUF(60):="FMAVT";                                       20150000
        END;                                                            20152000
        BEGIN  <<21>>                                                   20154000
          MOVE BBUF(60):="LOADER SEGMENT TABLE";                        20156000
        END;                                                            20158000
        BEGIN  <<22>>                                                   20160000
          MOVE BBUF(60):="VDD";                                         20162000
        END;                                                            20164000
        BEGIN <<23>>                                                    20166000
          MOVE BBUF(60):="SPOOL";                                       20168000
        END;                                                            20170000
        BEGIN  <<24>>                                                   20172000
          MOVE BBUF(60):="MESSAGE CATALOGUE";                           20174000
        END;                                                            20176000
        BEGIN  <<25>>                                                   20178000
          MOVE BBUF(60):="RIT";                                         20180000
        END;                                                            20182000
        BEGIN  <<26>>                                                   20184000
          MOVE BBUF(60):="VOLUME TABLE";                                20186000
        END;                                                            20188000
        BEGIN  <<27>>                                                   20190000
         MOVE BBUF(60):="WELCOME MESSAGE SIR";                 <<01078>>20192000
        END;                                                            20194000
        BEGIN  <<30>>                                                   20196000
         MOVE BBUF(60) := "ASSOCIATION TABLE SIR";             <<01664>>20198000
        END;                                                            20200000
        BEGIN  <<31>>                                                   20202000
          MOVE BBUF(60):="CS ALLOCATE SIR";                             20204000
        END;                                                            20206000
        BEGIN  <<32>>                                                   20208000
          MOVE BBUF(60):="LOGGING BUFFER";                              20210000
        END;                                                            20212000
        BEGIN  <<33>>                                                   20214000
         MOVE BBUF(60):="PRIVATE VOL. MVTAB";                 <<<01.02>>20216000
        END;                                                            20218000
        BEGIN  <<34>>                                                   20220000
         MOVE BBUF(60):="PRIVATE VOL. PROCESS SIR";           <<<01.02>>20222000
        END;                                                            20224000
        BEGIN  <<35>>                                                   20226000
         MOVE BBUF(60):="PRIVATE VOL. USER TABLE";            <<<01.02>>20228000
        END;                                                            20230000
        BEGIN  <<36>>                                                   20232000
         MOVE BBUF(60):="IMAGE";                               <<01078>>20234000
        END;                                                            20236000
        BEGIN  <<37>>                                                   20238000
         MOVE BBUF(60):="KSAM";                                <<01078>>20240000
        END;                                                            20242000
        BEGIN  <<40>>                                                   20244000
         MOVE BBUF(60):="USER LOGGING";                        <<01078>>20246000
        END;                                                            20248000
        BEGIN  <<41>>                                                   20250000
          MOVE BBUF(60):="HORIZON SIR";                                 20252000
        END;                                                            20254000
        BEGIN  <<42>>                                                   20256000
          MOVE BBUF(60):="COLD LOAD SIR";                      << MCW >>20258000
        END;                                                            20260000
        BEGIN  <<43>>                                                   20262000
          MOVE BBUF(60):="SUB-QUEUE MAPPING TABLE";                     20264000
        END;                                                            20266000
        BEGIN  <<44>>                                                   20268000
         MOVE BBUF(60):="CILOG";                               <<01078>>20270000
        END;                                                            20272000
        BEGIN  <<45>>                                                   20274000
          MOVE BBUF(60):="FILE INTEGRITY";                              20276000
        END;                                                            20278000
        BEGIN  <<46>>                                                   20280000
          MOVE BBUF(60):="RIN";                                         20282000
        END;                                                            20284000
         BEGIN <<47>>                                         <<<01.02>>20286000
           MOVE BBUF(60):="MAG. TAPE LABELS";                 <<<01.02>>20288000
         END;                                                 <<<01.02>>20290000
COUT:                                                                   20292000
      END;   <<CASES>>                                                  20294000
      PRINTLINE;                                                        20296000
      MOVE BBUF:="NO IMPEDED PROCESSES";                                20298000
      IF WORK2=0 THEN PRINTLINE                               <<<01.02>>20300000
      ELSE                                                              20302000
      BEGIN                                                             20304000
        MOVE BBUF:="   ";                                               20306000
        PRINTLINE;                                                      20308000
        WORK4:=CORE(LOCSIR +DOUBLE(INDX+2))/21;  <<PIN # HEAD>><< MCW >>20310000
      WORK5:=CORE(LOCSIR + DOUBLE(INDX+3))/21;  <<PIN # OF TAIL<< MCW >>20312000
      PCBCOUNT := -1;                                          <<01078>>20314000
      DO                                                      <<<01.02>>20316000
        BEGIN                                                           20318000
          PCBCOUNT := PCBCOUNT + 1;                            <<01078>>20320000
          IF PCBCOUNT > PCB'ENTRIES THEN                       <<01078>>20322000
           BEGIN                                               <<01078>>20324000
            MOVE BBUF(15):=                                    <<01078>>20326000
            "ERROR: NUMBER OF IMPEDED PINS EXCEEDS TABLE SIZE";<<01078>>20328000
            PRINTLINE;                                         <<01078>>20330000
            GO TO AEND;                                        <<01078>>20332000
           END;                                                <<01078>>20334000
          MOVE BBUF(3):="PIN";                                          20336000
          @PBUF:=@BBUF+7;                                               20338000
          PUTNUMP(WORK4);                                               20340000
          << CHECK STATUS OF LINK >>                           <<00221>>20342000
           CASE SIRPIN(WORK4) OF                               <<00221>>20344000
            BEGIN                      <<LINK STATES>>         <<00221>>20346000
             BEGIN  <<0>>                                      <<00221>>20348000
              SIRPIN(WORK4):=1;                                <<00221>>20350000
             END;                                              <<00221>>20352000
             BEGIN  <<1>>              <<ALREADY IMPEDED>>     <<00221>>20354000
              MOVE BBUF(15):=                                  <<00221>>20356000
                "ERROR: LOOPING IMPEDED QUEUE POINTER";        <<00221>>20358000
              PRINTLINE;                                       <<00221>>20360000
              GO AEND;                                         <<00221>>20362000
             END;                                              <<00221>>20364000
             BEGIN  <<2>>              <<INACTIVE PIN>>        <<00221>>20366000
              MOVE BBUF(15):=                                  <<00221>>20368000
                "ERROR: IMPEDED PIN IS INACTIVE, ",2;          << WBT >>20370000
                MOVE *:="NOT WAITING FOR SIR, OR ON DISP QUEUE";        20372000
              PRINTLINE;                                       <<00221>>20374000
              GO AEND;                                         <<00221>>20376000
             END;                                              <<00221>>20378000
             BEGIN  <<3>>              <<INVALID PCB>>         <<00221>>20380000
              MOVE BBUF(15):=                                  <<00221>>20382000
                "ERROR: IMPEDED PIN IS INVALID";               <<00221>>20384000
              PRINTLINE;                                       <<00221>>20386000
              GO AEND;                                         <<00221>>20388000
             END;                                              <<00221>>20390000
             BEGIN  <<4>>              <<ALREADY IMPEDED>>     <<00221>>20392000
              MOVE BBUF(15):=                                  <<00221>>20394000
                "WARNING: PIN IS IMPEDED BY ANOTHER SIR";      <<00221>>20396000
              SIRPIN(WORK4):=1;        <<CALL IT IMPEDED>>     <<00221>>20398000
             END;                                              <<00221>>20400000
            END;                     <<**STATE CHECKING>>      <<00221>>20402000
          PRINTLINE;                                                    20404000
          WORK4:=CORE(LOCPCB+DOUBLE(21*WORK4+17))/21;          << MCW >>20406000
      END UNTIL WORK4 = 0;                                     <<01078>>20408000
      END;                                                              20410000
      SKIPLINES(1);                                                     20412000
AEND:                                                                   20414000
     <<CORRECT SIRPIN TABLE FOR PINS IMPEDED>>                 <<00221>>20416000
      WORK1:=-1;                     <<SCAN WHOLE TABLE>>      <<00221>>20418000
      WHILE (WORK1:=WORK1+1) < 255 DO                          <<00221>>20420000
       IF SIRPIN(WORK1)=1  THEN SIRPIN(WORK1):=4;              <<00221>>20422000
   END;                                                                 20424000
      IF COUNT =0 THEN                                                  20426000
      BEGIN                                                             20428000
        MOVE BBUF:="NO LOCKED SIRS";                                    20430000
        PRINTLINE;                                                      20432000
      END;                                                              20434000
BAILOUT:                                                                20436000
   END;                                                                 20438000
                                                                        20440000
$PAGE "PRINTMON: Print monitor table"                                   20442000
$CONTROL SEGMENT=TABLES                                                 20444000
COMMENT                                                                 20446000
                                                                        20448000
Purpose:                                                                20450000
     Format monitor trace table                                         20452000
                                                                        20454000
Input parameters:                                                       20456000
                                                                        20458000
Output parameters:                                                      20460000
                                                                        20462000
Globals Referenced:                                                     20464000
                                                                        20466000
Globals Altered:                                                        20468000
                                                                        20470000
Data Structures:                                                        20472000
                                                                        20474000
Algorithm:                                                              20476000
                                                                        20478000
;                                                                       20480000
PROCEDURE PRINTMON;                                                     20482000
  BEGIN                                                                 20484000
    DOUBLE MONPTR:=%1017D,LOCMON,CLOC,ENDMON,STMON:=%1260D;             20486000
      INTEGER MSIZE,MSTART;                                   <<<01.02>>20488000
      LOGICAL WORK1,WORK2;                                    <<<01.02>>20490000
   EQUATE MEASINFOTABPTR = %1261;                              <<01791>>20492000
   EQUATE SMONSIZE = %2000;                                    <<s7921>>20494000
                                                                        20496000
SUBROUTINE EVENT(ENUMB);                                                20498000
  VALUE ENUMB;                                                          20500000
  INTEGER ENUMB;                                                        20502000
  BEGIN                                                                 20504000
      IF 0<=ENUMB<=8 THEN                                      <<01875>>20506000
      CASE ENUMB OF                                            <<01875>>20508000
      BEGIN   << CASES >>                                      <<01875>>20510000
                                                               <<01875>>20512000
         BEGIN     <<0>>                                       <<01875>>20514000
            MOVE PBUF:="QONOBJ";                               << MCW >>20516000
         END;                                                  <<01875>>20518000
         BEGIN     <<1>>                                       <<01875>>20520000
            MOVE PBUF:="MAKEOC";                               <<01875>>20522000
         END;                                                  <<01875>>20524000
         BEGIN     <<2>>                                       <<01875>>20526000
            MOVE PBUF:="SPECIALRQ";                            <<01875>>20528000
         END;                                                  <<01875>>20530000
         BEGIN     <<3>>                                       <<01875>>20532000
            GO TO PNUMB;                                       <<01875>>20534000
         END;                                                  <<01875>>20536000
         BEGIN     <<4>>                                       <<01875>>20538000
            MOVE PBUF:="FETCHSEG";                             <<01875>>20540000
         END;                                                  <<01875>>20542000
         BEGIN     <<5>>                                       <<01875>>20544000
            MOVE PBUF:="SEGIO";                                <<01875>>20546000
         END;                                                  <<01875>>20548000
         BEGIN     <<6>>                                       <<01875>>20550000
            MOVE PBUF:="SIODONE";                              <<01875>>20552000
         END;                                                  <<01875>>20554000
         BEGIN;    <<7>>                                       <<01875>>20556000
            MOVE PBUF:="CGARBAGE";                             <<01875>>20558000
         END;                                                  <<01875>>20560000
         BEGIN     <<8>>                                       <<01875>>20562000
            MOVE PBUF:="SWAPIN";                               <<01875>>20564000
         END;                                                  <<01875>>20566000
      END                                                      <<01875>>20568000
      ELSE IF ENUMB=12 THEN MOVE PBUF:="ALLOCMEM"              <<01875>>20570000
      ELSE IF ENUMB=13 THEN MOVE PBUF:="DEALLOCM"              <<01875>>20572000
      ELSE IF ENUMB=14 THEN MOVE PBUF:="CACHEMOV"              << MCW >>20574000
      ELSE IF ENUMB=15 THEN MOVE PBUF:="GET CDT"               << MCW >>20576000
      ELSE IF ENUMB=16 THEN MOVE PBUF:="QUE LDR"               << MCW >>20578000
      ELSE IF ENUMB=17 THEN MOVE PBUF:="DQUE LDR"              << MCW >>20580000
      ELSE IF ENUMB=18 THEN MOVE PBUF:="FIND DE"               << MCW >>20582000
      ELSE IF ENUMB=19 THEN MOVE PBUF:="LOCKRANG"              << MCW >>20584000
      ELSE IF ENUMB=24 THEN MOVE PBUF:="EXCHDB"                <<01875>>20586000
      ELSE IF ENUMB=40 THEN MOVE PBUF:="QUIESCE"               <<01875>>20588000
      ELSE IF ENUMB=82 THEN MOVE PBUF:="AWAKEDEV"              << MCW >>20590000
      ELSE IF ENUMB=83 THEN MOVE PBUF:="STRATEGY"              << MCW >>20592000
      ELSE IF ENUMB=84 THEN MOVE PBUF:="INITIATE"              << MCW >>20594000
      ELSE IF ENUMB=90 THEN MOVE PBUF:="REQCACHE"              << MCW >>20596000
      ELSE IF ENUMB=86 THEN MOVE PBUF:="CDT'ATT"               << MCW >>20598000
      ELSE IF ENUMB=87 THEN MOVE PBUF:="MAP DOM"               << MCW >>20600000
      ELSE IF ENUMB=88 THEN MOVE PBUF:="UN MAP RG"             << MCW >>20602000
      ELSE IF ENUMB=89 THEN MOVE PBUF:="LINK REG"              << MCW >>20604000
      ELSE IF ENUMB=139 THEN MOVE PBUF:="C ABSENT"             <<s7921>>20606000
      ELSE IF ENUMB=240 THEN MOVE PBUF:="PFAIL"                <<s7921>>20608000
      ELSE IF ENUMB=%300 THEN MOVE PBUF:="INTERRUPT"           <<02012>>20610000
      ELSE IF ENUMB=%301 THEN MOVE PBUF:="SIOP-INST"           <<03666>>20612000
      ELSE IF ENUMB=%302 THEN MOVE PBUF:="SIODM-ENT"           <<03666>>20614000
      ELSE IF ENUMB=%303 THEN MOVE PBUF:="SIODM-EXT"           <<03666>>20616000
      ELSE IF ENUMB=-211 THEN MOVE PBUF:="TERMIN"              << MCW >>20618000
      ELSE IF ENUMB=-240 THEN MOVE PBUF:="CAUSE"               << MCW >>20620000
      ELSE IF ENUMB=-241 THEN MOVE PBUF:="PROCESS"             << MCW >>20622000
      ELSE IF ENUMB=-242 THEN MOVE PBUF:="BUILD MKR"           << MCW >>20624000
      ELSE IF ENUMB=-243 THEN MOVE PBUF:="CHANGE ST"           << MCW >>20626000
      ELSE IF ENUMB=-244 THEN MOVE PBUF:="TIMEOUT"             << MCW >>20628000
      ELSE                                                     <<01875>>20630000
PNUMB:                                                                  20632000
        IF PBUF="  " THEN                                      <<00221>>20634000
         BEGIN        <<PUT OUT NUMBER ONLY>>                  <<00221>>20636000
          PUTNUMP(ENUMB);   <<EVENT NUMBER>>                   <<00221>>20638000
          @PBUF:=@PBUF-7;   <<BACK OFF POINTER>>               <<00221>>20640000
         END;         <<PUT OUT NUMBER ONLY>>                  <<00221>>20642000
 END;  <<EVENT SUBROUTINE>>                                             20644000
                                                                        20646000
                                                                        20648000
  BANKNO:=0;                                                            20650000
   IF LINECOUNT > LNSPERPG/2 THEN NEWPAGE                      <<00221>>20652000
     ELSE SKIPLINES(2);            <<TO SAVE PAPER>>           <<00221>>20654000
  MOVE DBUFFER(23):="******    MONITOR TABLE    ******";                20656000
  PRINTLINE;                                                            20658000
  SKIPLINES(3);                                                         20660000
  WORK1:=CORE(%1011 D);                                        << MCW >>20662000
  TOS:=WORK1 LAND %37;     <<  GET BANK OF MONITOR TABLE >>    << MCW >>20664000
  TOS:=(WORK1 LAND %177740) + %1000;   << GET OFFSET >>        << MCW >>20666000
  LOCMON:=TOS;                                                 << MCW >>20668000
MSIZE:=SMONSIZE;                                               <<s7921>>20670000
  ENDMON:=LOCMON+DOUBLE(MSIZE);                                << WBT >>20672000
  MSTART:=CORE(%1034 D);                                       << MCW >>20674000
  MOVE BBUF:="LOCATION    PIN    EVENT";                                20676000
  MOVE BBUF(75):="PIN    EVENT";                               << MCW >>20678000
  PRINTLINE;                                                            20680000
   CLOC:=DOUBLE(MSTART)+LOCMON;                                << WBT >>20682000
   CLOC := CLOC-8D;  <<CURR POINTER IS LAST ENTRY+1>>          <<s8397>>20684000
   IF CLOC < LOCMON THEN CLOC:=ENDMON-8D;  <<WRAP AROUND>>     <<s8397>>20686000
  IF CLOC < 1D THEN GO BAILOUT;                                         20688000
  WHILE MSIZE > 8 DO                                           << MCW >>20690000
  BEGIN                                                                 20692000
    @PBUF:=@BBUF;        <<BEGINNING OF LINE>>                 <<00221>>20694000
    PUTDNUMP(CLOC);      <<LOCATION OF MEMORY POINTER>>        <<00221>>20696000
    @PBUF:=@BBUF+5;      <<SPACE OVER MEMORY ADDRESS>>         <<00221>>20698000
    WORK2:=0;            <<COLUMN COUNTER>>                    <<00221>>20700000
    WHILE MSIZE > 0 LAND WORK2 < 2 DO                          << MCW >>20702000
     BEGIN               <<WHILE ROOM ACROSS PAGE>>            <<00221>>20704000
      @PBUF:=@PBUF+4;    <<OVER PREVIOUS EVENT>>               <<00221>>20706000
      WORK1:=CORE(CLOC)/21;  <<PICK UP PIN INDEX>>             << MCW >>20708000
      PUTNUMP(WORK1); <<PIN>>                                  << MCW >>20710000
      WORK1:=CORE(CLOC+1D);    << EVENT >>                     << MCW >>20712000
      EVENT(WORK1);   <<EVENT>>                                << MCW >>20714000
      @PBUF:=@PBUF+10;      <<SKIP OVER EVENT>>                <<00221>>20716000
      PUTNUM(CORE(CLOC+2D));<<WORD 1>>                         << MCW >>20718000
      PUTNUM(CORE(CLOC+3D));<<WORD 2>>                         << MCW >>20720000
      PUTNUM(CORE(CLOC+4D));<<WORD 3>>                         << MCW >>20722000
      PUTNUM(CORE(CLOC+5D));<<WORD 4>>                         << MCW >>20724000
      PUTNUM(CORE(CLOC+6D));<<WORD 5>>                         << MCW >>20726000
      PUTNUM(CORE(CLOC+7D));<<WORD 6>>                         << MCW >>20728000
      CLOC:=CLOC-8D;        <<NEXT LOCATION>>                  << MCW >>20730000
      IF CLOC < LOCMON                                         <<s8397>>20732000
        THEN CLOC:=ENDMON-8D;  << TABLE WRAPS AROUND >>        << MCW >>20734000
      MSIZE:=MSIZE-8;       <<FOUR FEWER WORDS LEFT>>          << MCW >>20736000
      WORK2:=WORK2+1;       <<COUNT COLUMNS DONE>>             <<00221>>20738000
     END;                <<DONE ACROSS PAGE>>                  <<00221>>20740000
    PRINTLINE;           <<PRINT FORMATTED LINE>>              <<00221>>20742000
  END;                                                                  20744000
BAILOUT:                                                                20746000
END;                                                                    20748000
                                                                        20750000
$PAGE "PRINTAVAIL: Print available region size bit map/list heads"      20752000
$CONTROL SEGMENT=TABLES                                                 20754000
COMMENT                                                                 20756000
                                                                        20758000
Purpose:                                                                20760000
                                                                        20762000
Input parameters:                                                       20764000
                                                                        20766000
Output parameters:                                                      20768000
                                                                        20770000
Globals Referenced:                                                     20772000
                                                                        20774000
Globals Altered:                                                        20776000
                                                                        20778000
Data Structures:                                                        20780000
                                                                        20782000
Algorithm:                                                              20784000
                                                                        20786000
;                                                                       20788000
PROCEDURE PRINTAVAIL;                                          << WBT >>20790000
   BEGIN                                                       << WBT >>20792000
                                                               << WBT >>20794000
   LOGICAL I, J, K;                                            << WBT >>20796000
                                                               << WBT >>20798000
   DOUBLE SIZE, ARSBMPTR, ARLDPTR;                             << WBT >>20800000
   LOGICAL LSIZE=SIZE+1;                                       << WBT >>20802000
                                                               << WBT >>20804000
   SUBROUTINE PRINTARSBMHEADER;                                << WBT >>20806000
      BEGIN                                                    << WBT >>20808000
      IF LINECOUNT+27 > LNSPERPG                               << WBT >>20810000
      THEN NEWPAGE                                             << WBT >>20812000
      ELSE SKIPLINES(5);                                       << WBT >>20814000
      BLANKBUF;                                                << WBT >>20816000
      MOVE BBUF(30):="*****     AVAILABLE REGION SIZE BIT",2;  << WBT >>20818000
      MOVE *       :=" MAP     *****";                         << WBT >>20820000
      PRINTLINE;                                               << WBT >>20822000
      SKIPLINES(1);                                            << WBT >>20824000
      MOVE BBUF:="   SIZE AVAIL   ",2;                         << WBT >>20826000
      MOVE *:=BBUF,(16),2;                                     << WBT >>20828000
      MOVE *:=BBUF,(32),2;                                     << WBT >>20830000
      MOVE *:=BBUF,(64);                                       << WBT >>20832000
      PRINTLINE;                                               << WBT >>20834000
      SKIPLINES(1);                                            << WBT >>20836000
   END;                                                        << WBT >>20838000
                                                               << WBT >>20840000
   SUBROUTINE FORMATARSBMENTRY;                                << WBT >>20842000
      BEGIN                                                    << WBT >>20844000
      @PBUF:=@PBUF+1;                                          << WBT >>20846000
      PUTNUMP(LSIZE);                                          << WBT >>20848000
      IF SIZE=65536D THEN MOVE PBUF(-7):="200000";             << WBT >>20850000
      K:=CORE(ARSBMPTR+DOUBLE(I));                             << WBT >>20852000
      IF (K&LSL(J)).(0:1) = 0                                  << WBT >>20854000
         THEN MOVE PBUF:="  NO"                                << WBT >>20856000
         ELSE MOVE PBUF:=" YES";                               << WBT >>20858000
      @PBUF:=@PBUF+8;                                          << WBT >>20860000
      END;                                                     << WBT >>20862000
                                                               << WBT >>20864000
   SUBROUTINE PRINTARLHEADER;                                  << WBT >>20866000
      BEGIN                                                    << WBT >>20868000
      IF LINECOUNT+32 > LNSPERPG                               << WBT >>20870000
      THEN NEWPAGE                                             << WBT >>20872000
      ELSE SKIPLINES(5);                                       << WBT >>20874000
      BLANKBUF;                                                << WBT >>20876000
      MOVE BBUF(20):="*****     AVAILABLE REGION SIZE",2;      << WBT >>20878000
      MOVE *       :=" LIST POINTERS     *****";               << WBT >>20880000
      PRINTLINE;                                               << WBT >>20882000
      SKIPLINES(1);                                            << WBT >>20884000
      MOVE BBUF:="   SIZE  BANK   ADDR  ",2;                   << WBT >>20886000
      MOVE *:=BBUF,(22),2;                                     << WBT >>20888000
      MOVE *:=BBUF,(22),2;                                     << WBT >>20890000
      MOVE *:=BBUF,(66);                                       << WBT >>20892000
      PRINTLINE;                                               << WBT >>20894000
      SKIPLINES(1);                                            << WBT >>20896000
      END;                                                     << WBT >>20898000
                                                               << WBT >>20900000
   SUBROUTINE FORMATARLENTRY;                                  << WBT >>20902000
      BEGIN                                                    << WBT >>20904000
      @PBUF:=@PBUF+1;                                          << WBT >>20906000
      PUTNUMP(LSIZE);                                          << WBT >>20908000
      IF SIZE=65536D THEN MOVE PBUF(-7):="200000";             << WBT >>20910000
      @PBUF:=@PBUF-1;                                          << WBT >>20912000
      PUTNUMP(CORE(ARLDPTR+DOUBLE(2*I)));                      << WBT >>20914000
      PUTNUM(CORE(ARLDPTR+DOUBLE(2*I+1)));                     << WBT >>20916000
      @PBUF:=@PBUF+1;                                          << WBT >>20918000
      END;                                                     << WBT >>20920000
                                                               << WBT >>20922000
   TOS:=CORE(SYSGLOBX+1D);                                     << WBT >>20924000
   TOS:=CORE(SYSGLOBX+2D);                                     << WBT >>20926000
   LINKEDMEM:=TOS;                                             << WBT >>20928000
                                                               << WBT >>20930000
   << PRINT ADDRESS OF START OF LINKED MEMORY >>               << WBT >>20932000
   NEWPAGE; BLANKBUF; SKIPLINES(5);                            << WBT >>20934000
   MOVE BBUF:="**********     LINKED MEMORY BEGINS AT";        << WBT >>20936000
   @PBUF:=@BBUF+40;                                            << WBT >>20938000
   PUTDNUMP(LINKEDMEM);                                        << WBT >>20940000
   PRINTLINE;                                                  << WBT >>20942000
   INDXARAY(55*2):=PAGENO;                                     << WBT >>20944000
                                                               << WBT >>20946000
   << PRINT AVAIL REG SIZE BIT MAP >>                          << WBT >>20948000
                                                               << WBT >>20950000
   PRINTARSBMHEADER;                                           << WBT >>20952000
   ARSBMPTR:=DSTTOADDR(%51);                                   << MCW >>20954000
   I:=J:=0;                                                    << WBT >>20956000
   WHILE (SIZE:=MMPAGESIZE*DOUBLE(16*I+J)) <= 65536D DO        << WBT >>20958000
      BEGIN                                                    << WBT >>20960000
      FORMATARSBMENTRY;                                        << WBT >>20962000
      J:=J+1;                                                  << WBT >>20964000
      IF (J MOD 8) = 0 THEN PRINTLINE;                         << WBT >>20966000
      IF J=16 THEN BEGIN J:=0; I:=I+1; END;                    << WBT >>20968000
      END;                                                     << WBT >>20970000
   PRINTLINE;                                                  << WBT >>20972000
                                                               << WBT >>20974000
   <<PRINT AVAIL REGION LIST HEAD POINTERS>>                   << WBT >>20976000
                                                               << WBT >>20978000
   PRINTARLHEADER;                                             << WBT >>20980000
   ARLDPTR:=DSTTOADDR(%67);                                    << MCW >>20982000
   I:=0;                                                       << WBT >>20984000
   WHILE (SIZE:=MMPAGESIZE*DOUBLE(I)) <= 65536D DO             << WBT >>20986000
      BEGIN                                                    << WBT >>20988000
      FORMATARLENTRY;                                          << WBT >>20990000
      I:=I+1;                                                  << WBT >>20992000
      IF (I MOD 6) = 0 THEN PRINTLINE;                         << WBT >>20994000
      END;                                                     << WBT >>20996000
   PRINTLINE;                                                  << WBT >>20998000
                                                               << WBT >>21000000
   END; <<PRINTAVAIL>>                                         << WBT >>21002000
                                                                        21004000
$PAGE "PRINTSLL : Format the segment locality lists"                    21006000
$CONTROL SEGMENT=TABLES                                        << WBT >>21008000
PROCEDURE PRINTSLL;                                            << WBT >>21010000
COMMENT                                                                 21012000
                                                                        21014000
Purpose:                                                                21016000
   This procedure is called to format the segment locality              21018000
   list contained within the swaptable. This is done on a               21020000
   per process basis.                                                   21022000
                                                                        21024000
Input parameters:                                                       21026000
   None.                                                                21028000
                                                                        21030000
Output parameters:                                                      21032000
   None.                                                                21034000
                                                                        21036000
Globals Referenced:                                                     21038000
                                                                        21040000
Globals Altered:                                                        21042000
                                                                        21044000
Data Structures:                                                        21046000
                                                                        21048000
Algorithm:                                                              21050000
                                                                        21052000
;                                                                       21054000
BEGIN                                                          << WBT >>21056000
   DOUBLE LOCPCB;                                              << MCW >>21058000
   INTEGER PCBSIZE, NENTRYS;                                   << WBT >>21060000
   INTEGER INDX, COUNT;                                        << WBT >>21062000
   DOUBLE SLLPTR,LOCSLL;                                       << MCW >>21064000
   DEFINE                                                      << WBT >>21066000
   SLL00=CORE(0D+SLLPTR)#,                                     << MCW >>21068000
   SLL01=CORE(1D+SLLPTR)#,                                     << MCW >>21070000
   SLL02=CORE(2D+SLLPTR)#,                                     << MCW >>21072000
   SLL03=CORE(3D+SLLPTR)#,                                     << MCW >>21074000
   SLL04=CORE(4D+SLLPTR)#,                                     << MCW >>21076000
   SLL05=CORE(5D+SLLPTR)#;                                     << MCW >>21078000
   DEFINE SLLIMI=SLL05.(6:1)#;                                 << MCW >>21080000
                                                               << WBT >>21082000
   SUBROUTINE PUTN(N, C);                                      << WBT >>21084000
   VALUE N,C;                                                  << WBT >>21086000
   INTEGER N,C;                                                << WBT >>21088000
   IF N=0 THEN BBUF(C-1):="0" ELSE PUTNZ(N,C);                 << WBT >>21090000
                                                               << WBT >>21092000
   SUBROUTINE PRINTSLLTITLE;                                   << WBT >>21094000
   BEGIN                                                       << WBT >>21096000
      NEWPAGE;                                                 << WBT >>21098000
      MOVE BBUF(40):="********** PROCESS SEGMENT LOCALITY",2;  << WBT >>21100000
      MOVE *:=" LISTS **********";                             << WBT >>21102000
      PRINTLINE;                                               << WBT >>21104000
      SKIPLINES(1);                                            << WBT >>21106000
         MOVE BBUF(8):="ENTRIES";                              << MCW >>21108000
         MOVE BBUF(36):="LENGTH";                              << MCW >>21110000
         MOVE BBUF(64):="CURRENTLY IMPEDED";                   << MCW >>21112000
         MOVE BBUF(102):="FIRST FREE INDEX";                   << MCW >>21114000
         PUTNZ(CORE(LOCSLL),6);   <<ENTRIES>>                  << MCW >>21116000
         PUTNZ(CORE(LOCSLL+1D),34);     << ENTRY LENGTH >>     << MCW >>21118000
         PUTNZ(CORE(LOCSLL+9D),62);     << CUR IMPEDED >>      << MCW >>21120000
         PUTNZ(CORE(LOCSLL+3D),98);     << FIRST FREE  >>      << MCW >>21122000
         PRINTLINE;                                            << MCW >>21124000
         MOVE BBUF(8):="UNASSIGNED";                           << MCW >>21126000
         MOVE BBUF(36):="PRIMARY";                             << MCW >>21128000
         MOVE BBUF(64):="MAXIMUM IMPEDED";                     << MCW >>21130000
         MOVE BBUF(102):="LAST FREE INDEX";                    << MCW >>21132000
         PUTNZ(CORE(LOCSLL+2D),6);        << UNASSIGNED >>     << MCW >>21134000
         PUTNZ(CORE(LOCSLL+6D),34);       << PRIMARY >>        << MCW >>21136000
         PUTNZ(CORE(LOCSLL+10D),62);     << MAX IMPEDED >>     << MCW >>21138000
         PUTNZ(CORE(LOCSLL+4D),98);      << LAST FREE >>       << MCW >>21140000
         PRINTLINE;                                            << MCW >>21142000
         MOVE BBUF(8):="ASSIGNED";                             << MCW >>21144000
         MOVE BBUF(36):="HIGH WATER";                          << MCW >>21146000
         MOVE BBUF(64):="CUMULATIVE IMPEDED";                  << MCW >>21148000
         MOVE BBUF(102):="IMP QUEUE HEAD INDEX";               << MCW >>21150000
         PUTNZ(CORE(LOCSLL)-CORE(LOCSLL+2D),6);    << ASSIGNED << MCW >>21152000
         PUTNZ(CORE(LOCSLL+5D),34);        << HIGH WATER >>    << MCW >>21154000
         PUTNZ(CORE(LOCSLL+11D),62);       << CUMUALTIVE >>    << MCW >>21156000
         PUTNZ(CORE(LOCSLL+7D),98);        <<IMP Q HEAD>>      << MCW >>21158000
         PRINTLINE;                                            << MCW >>21160000
         MOVE BBUF(102):="IMP QUEUE TAIL INDEX";               << MCW >>21162000
         PUTNZ(CORE(LOCSLL+8D),98);       << IMP Q TAIL >>     << MCW >>21164000
         PRINTLINE;                                            << MCW >>21166000
   SKIPLINES(1);                                               << MCW >>21168000
   END;                                                        << WBT >>21170000
                                                               << WBT >>21172000
   SUBROUTINE PRINTSLLHEAD;                                    << WBT >>21174000
   BEGIN                                                       << WBT >>21176000
      COUNT:=SLL04;                                            << WBT >>21178000
      IF (LINECOUNT+COUNT+9>=LNSPERPG) AND LINECOUNT+15>LNSPERPG        21180000
      THEN NEWPAGE                                             << WBT >>21182000
      ELSE SKIPLINES(2);                                       << WBT >>21184000
      MOVE BBUF:="PIN:";                                       << WBT >>21186000
      PUTN(INDX, 8);                                           << WBT >>21188000
      MOVE BBUF(11):="FIRST SLL:";                             << WBT >>21190000
      PUTN(SLL01, 28);                                         << WBT >>21192000
      MOVE BBUF(32):="CURR SLL:";                              << WBT >>21194000
      PUTN(SLL02, 48);                                         << WBT >>21196000
      MOVE BBUF(52):="MEM REQ SLL:";                           << WBT >>21198000
      PUTN(SLL03, 71);                                         << WBT >>21200000
      MOVE BBUF(75):="SLL COUNT:";                             << WBT >>21202000
      PUTN(SLL04, 92);                                         << WBT >>21204000
      MOVE BBUF(94):="IOCNT:";                                 << WBT >>21206000
      PUTN(SLL00.(8:8), 104);                                  << WBT >>21208000
      TOS:=@BBUF+106;                                          << WBT >>21210000
      IF SLL00.(6:1) THEN MOVE *:="SWIP ",2;                   << MCW >>21212000
      IF SLL00.(1:1) THEN MOVE *:="SWREQ ",2;                  << WBT >>21214000
      IF SLL00.(2:1) THEN MOVE *:="HASMEM ",2;                 << WBT >>21216000
      IF SLL00.(3:1) THEN MOVE *:="INTLC ",2;                  <<01875>>21218000
      IF SLL00.(4:1) THEN MOVE *:="PARTIN",2;                  <<01875>>21220000
      IF SLL00.(5:1) THEN MOVE *:="STRTOV",2;                  <<SLL01>>21222000
      ASSEMBLE(DEL);                                           << WBT >>21224000
      PRINTLINE;                                               << WBT >>21226000
      SKIPLINES(1);                                            << WBT >>21228000
                                                               << WBT >>21230000
      MOVE BBUF(24):="NEXT     PREV";                          << WBT >>21232000
      MOVE BBUF(41):="NEXT MAKE             ";                 << MCW >>21234000
      PRINTLINE;                                               << WBT >>21236000
                                                               << WBT >>21238000
      MOVE BBUF(1):="ENTRY   SEGMENT";                         << WBT >>21240000
      MOVE BBUF(24):="ENTRY    ENTRY";                         << WBT >>21242000
      MOVE BBUF(41):="PRSNT DFRD   PRE FETCH ";                << MCW >>21244000
      PRINTLINE;                                               << WBT >>21246000
                                                               << WBT >>21248000
      MOVE BBUF(1):="INDEX   IDENTIFIER";                      << WBT >>21250000
      MOVE BBUF(24):="INDEX    INDEX";                         << WBT >>21252000
      MOVE BBUF(41):="QUEUE PIN      COUNT       ";            << MCW >>21254000
      MOVE BBUF(65):="DEC STK TOSS FZREQ LKREQ SLLIMI DISCIO"; <<01791>>21256000
      MOVE BBUF(104):="MAP BLK FRZ LOK";                       << MCW >>21258000
      PRINTLINE;                                               << WBT >>21260000
                                                               << WBT >>21262000
      MOVE BBUF(1):="-----   -----------";                     << WBT >>21264000
      MOVE BBUF(24):="-----    -----";                         << WBT >>21266000
      MOVE BBUF(41):="----------   ----------";                << WBT >>21268000
      MOVE BBUF(65):="--- --- ---- ----- ----- ------ ------"; <<sknew>>21270000
      MOVE BBUF(104):="--- --- --- ---";                       << MCW >>21272000
      PRINTLINE;                                               << WBT >>21274000
                                                               << WBT >>21276000
                                                               << WBT >>21278000
      SKIPLINES(1);                                            << WBT >>21280000
                                                               << WBT >>21282000
   END;   <<PRINT SLL HEAD>>                                   << WBT >>21284000
                                                               << WBT >>21286000
                                                               << WBT >>21288000
   SUBROUTINE PRINTSLLENTRY;                                   << WBT >>21290000
   BEGIN                                                       << WBT >>21292000
                                                               << WBT >>21294000
      PUTN(LOGICAL(SLLPTR-LOCSLL), 6);    <<ENTRY INDEX>>      << MCW >>21296000
                                                               << WBT >>21298000
      PUTSEGID(SLL03,SLL04, 10); << FORMAT SEG ID >>           << MCW >>21300000
                                                               << WBT >>21302000
      PUTN(SLL01, 29);  <<NEXT ENTRY INDEX>>                   << WBT >>21304000
                                                               << WBT >>21306000
      PUTN(SLL02, 38);  <<PREV ENTRY INDEX>>                   << WBT >>21308000
                                                               << WBT >>21310000
        PUTNZ(SLL00/21, 47);   <<NEXT MAKE PRESENT DEFERRED    << MCW >>21312000
        IF SLL05.(10:1) THEN MOVE BBUF(65):="DEC";             << MCW >>21314000
                                                               <<01791>>21316000
        PUTNZ(SLL05.(11:5), 60);  << PRE-FETCH COUNT >>        << MCW >>21318000
                                                               << WBT >>21320000
      IF SLL05.(1:1) THEN MOVE BBUF(69):="STK"; <<STK>>        << MCW >>21322000
      IF SLL05.(02:1) THEN MOVE BBUF(97):="DISCIO"; << DISCIO ><< MCW >>21324000
      IF SLL05.(7:1) THEN MOVE BBUF(73):="TOSS";  <<TOSS>>     << MCW >>21326000
      IF SLL05.(8:1) THEN MOVE BBUF(78):="FZREQ"; <<FRZ REQ>>  << MCW >>21328000
      IF SLL05.(9:1) THEN MOVE BBUF(84):="LKREQ"; <<LK REQ>>   << MCW >>21330000
      IF SLL05.(06:1) THEN MOVE BBUF(90):="SLLIMI"; << IMI >>  << MCW >>21332000
      IF SLL05.(0:1) THEN MOVE BBUF(104):="MAP";               << MCW >>21334000
      IF SLL05.(4:1) THEN MOVE BBUF(108):="BLK";               << MCW >>21336000
      IF SLL05.(5:1) THEN MOVE BBUF(112):="FRZ";               << MCW >>21338000
      IF SLL05.(3:1) THEN MOVE BBUF(116):="LOK";               << MCW >>21340000
                                                               << WBT >>21342000
      PRINTLINE;                                               << WBT >>21344000
                                                               << WBT >>21346000
   END;  <<PRINT SLL ENTRY>>                                   << WBT >>21348000
                                                               << WBT >>21350000
   LOCSLL:=DSTTOADDR(%27);                                     << MCW >>21352000
   LOCPCB:=VERIFYP(%3, %1003D);    << GET PCB TABLE INFO >>    << WBT >>21354000
   IF <> THEN                                                  << WBT >>21356000
   BEGIN                                                       << WBT >>21358000
      IF LOCPCB <> 0D THEN WARNING                             << WBT >>21360000
      ELSE IF PCBFLG <> 0 THEN WARNING                         << WBT >>21362000
      ELSE BEGIN NOFORMT'; GO BAILOUT; END;                    << WBT >>21364000
   END;                                                        << WBT >>21366000
   NENTRYS:=CORE(LOCPCB);                                      << WBT >>21368000
   IF LOGICAL(NENTRYS)>1025 THEN                               << MCW >>21370000
      BEGIN                                                    << WBT >>21372000
      MOVE DBUFFER(23):="INVALID NUMBER OF PCB ENTRIES ";      << WBT >>21374000
      PRINTLINE;                                               << WBT >>21376000
      GO BAILOUT;                                              << WBT >>21378000
      END;                                                     << WBT >>21380000
   PCBSIZE:=INTEGER(CORE(LOCPCB+1D));                          << WBT >>21382000
   IF PCBSIZE <> 21 THEN                                       << MCW >>21384000
   BEGIN                                                       << WBT >>21386000
      MOVE DBUFFER(23):="INVALID PCB SIZE";                    << WBT >>21388000
      PRINTLINE;                                               << WBT >>21390000
      GO BAILOUT;                                              << WBT >>21392000
   END;                                                        << WBT >>21394000
                                                               << WBT >>21396000
   PRINTSLLTITLE;  << BEGIN ACTUAL WORK OF PRINTING LISTS >>   << WBT >>21398000
                                                               << WBT >>21400000
   INDX:=0;                                                    << WBT >>21402000
                                                               << WBT >>21404000
   WHILE (INDX:=INDX+1)<NENTRYS DO                             << WBT >>21406000
   IF INTEGER(PCB20) >=0   AND INTEGER(PCB01)<>0 THEN          << MCW >>21408000
   BEGIN                                                       << WBT >>21410000
      SLLPTR:=DOUBLE(PCB01)+LOCSLL;                            << MCW >>21412000
      COUNT:=SLL04;  IF COUNT > 64 THEN COUNT:=64;             << WBT >>21414000
      PRINTSLLHEAD;                                            << WBT >>21416000
      WHILE COUNT>0 AND SLLPTR<>0D DO                          << MCW >>21418000
      BEGIN                                                    << WBT >>21420000
         COUNT:=COUNT-1;                                       << WBT >>21422000
         SLLPTR:=DOUBLE(SLL01)+LOCSLL;                         << MCW >>21424000
         IF SLLPTR<>0D THEN PRINTSLLENTRY;                     << MCW >>21426000
      END;                                                     << WBT >>21428000
   END;                                                        << WBT >>21430000
                                                               << WBT >>21432000
BAILOUT:                                                       << WBT >>21434000
                                                               << WBT >>21436000
END;     <<PRINT SLL>>                                         << WBT >>21438000
                                                                        21440000
                                                                        21442000
$PAGE "PRINTVDSL : Print the virtual disk space list"                   21444000
$CONTROL SEGMENT=TABLES                                                 21446000
                                                               << WBT >>21448000
PROCEDURE PRINTVDSL;                                           << WBT >>21450000
COMMENT                                                                 21452000
                                                                        21454000
Purpose:                                                                21456000
   This procedure is called to format the virtual disk space            21458000
   list. In MPE IV this is actually a set of lists of segments          21460000
   where each in a given list is the same size in pages, and the        21462000
   system maintains a table of pointers to these lists, as well         21464000
   as a bit map which identifies which lists are empty.                 21466000
                                                                        21468000
                                                                        21470000
Input parameters:                                                       21472000
   None.                                                                21474000
                                                                        21476000
Output parameters:                                                      21478000
   None.                                                                21480000
                                                                        21482000
Globals Referenced:                                                     21484000
                                                                        21486000
Globals Altered:                                                        21488000
                                                                        21490000
Data Structures:                                                        21492000
                                                                        21494000
Algorithm:                                                              21496000
                                                                        21498000
;                                                                       21500000
BEGIN                                                          << WBT >>21502000
   DOUBLE VDSMTABADDR, BMSTARTADDR, BMENDADDR;                 << WBT >>21504000
   LOGICAL NDX;                                                << WBT >>21506000
   LOGICAL NEEDHEADER, COUNT;                                  << WBT >>21508000
                                                               << WBT >>21510000
   EQUATE  << ENTRY ZERO OFFSETS >>                            << WBT >>21512000
                                                               << WBT >>21514000
   TABLELENGTH      = 0,                                       << WBT >>21516000
   VMSVOLUMECNT     = 1,                                       << WBT >>21518000
   STARTENTRY       = 2,                                       << WBT >>21520000
   VMPAGESIZE       = 3,                                       << WBT >>21522000
   SECTORSPERVMPAGE = 4,                                       << WBT >>21524000
   OFFSETTOBM       = 5,                                       << WBT >>21526000
   TOTALVMPAGES     = 6,                                       << WBT >>21528000
   LEASTPAGES       = 7;                                       << WBT >>21530000
                                                               << WBT >>21532000
   EQUATE   << GENERAL VDS ENTRY OFFSETS >>                    << WBT >>21534000
                                                               << WBT >>21536000
   NEXTINLIST         = 0,                                     << WBT >>21538000
   LDEV               = 1,                                     << WBT >>21540000
   HOSTARTSECTOR      = 2,                                     << WBT >>21542000
   LOSTARTSECTOR      = 3,                                     << WBT >>21544000
   HOTOTALSECTORCOUNT = 4,                                     << WBT >>21546000
   LOTOTALSECTORCOUNT = 5,                                     << WBT >>21548000
   TOTALPAGECOUNT     = 6,                                     << WBT >>21550000
   PAGESAVAILABLE     = 7,                                     << WBT >>21552000
   BMLENGTH           = 8,                                     << WBT >>21554000
   SMALLESTMISS       = 9,                                     << WBT >>21556000
   SMALLESTEVERAVAIL  = 10;                                    << WBT >>21558000
                                                               << WBT >>21560000
   LOGICAL SUBROUTINE VDSMTAB(ENTRYINDEX, OFFSET);             << WBT >>21562000
   VALUE ENTRYINDEX, OFFSET;                                   << WBT >>21564000
   LOGICAL ENTRYINDEX, OFFSET;                                 << WBT >>21566000
   BEGIN                                                       << WBT >>21568000
      VDSMTAB:=CORE(VDSMTABADDR+DOUBLE(ENTRYINDEX+OFFSET));    << WBT >>21570000
   END;                                                        << WBT >>21572000
                                                               << WBT >>21574000
   SUBROUTINE PRINTHEADER;                                     << WBT >>21576000
   BEGIN                                                       << WBT >>21578000
      SKIPLINES(1);                                            << WBT >>21580000
      MOVE BBUF:=" TABLE";                                     << WBT >>21582000
      MOVE BBUF(21):="STARTING";                               << WBT >>21584000
      MOVE BBUF(36):="TOTAL";                                  << WBT >>21586000
      MOVE BBUF(48):="TOTAL";                                  << WBT >>21588000
      MOVE BBUF(57):="PAGES";                                  << WBT >>21590000
      MOVE BBUF(66):="SMALLEST";                               << WBT >>21592000
      MOVE BBUF(79):="LEAST PAGES";                            << WBT >>21594000
      PRINTLINE;                                               << WBT >>21596000
      MOVE BBUF:=" INDEX    LDEV        SECTOR    SECTOR COUNT",2;      21598000
      MOVE    *:="    PAGES    AVAIL   RECENT MISS   EVER AVAIL.";      21600000
      PRINTLINE;                                               << WBT >>21602000
      SKIPLINES(1);                                            << WBT >>21604000
   END;                                                        << WBT >>21606000
                                                               << WBT >>21608000
   SUBROUTINE FORMATENTRY(INDEX);                              << WBT >>21610000
   VALUE INDEX; LOGICAL INDEX;                                 << WBT >>21612000
   BEGIN                                                       << WBT >>21614000
      IF NEEDHEADER THEN PRINTHEADER;                          << WBT >>21616000
      PUTOCTAL(INDEX, 6);       << ENTRY INDEX >>              << WBT >>21618000
      PUTOCTAL(VDSMTAB(INDEX, LDEV), 14); << LOGICAL DEVICE >> << WBT >>21620000
      @PBUF:=@BBUF+17;                                         <<01875>>21622000
      PUTDNUMP(DCONS(VDSMTAB(INDEX, HOSTARTSECTOR),            <<01875>>21624000
                     VDSMTAB(INDEX, LOSTARTSECTOR)));          <<01875>>21626000
      @PBUF:=@BBUF+32;                                         <<01875>>21628000
      PUTDNUMP(DCONS(VDSMTAB(INDEX, HOTOTALSECTORCOUNT),       <<01875>>21630000
                     VDSMTAB(INDEX, LOTOTALSECTORCOUNT)));     <<01875>>21632000
      PUTOCTAL(VDSMTAB(INDEX, TOTALPAGECOUNT), 53);            << WBT >>21634000
      PUTOCTAL(VDSMTAB(INDEX, PAGESAVAILABLE), 62);            << WBT >>21636000
      PUTOCTAL(VDSMTAB(INDEX, SMALLESTMISS  ), 74);            << WBT >>21638000
      PUTOCTAL(VDSMTAB(INDEX, SMALLESTEVERAVAIL), 88);         << WBT >>21640000
      PRINTLINE;    << FINISH ALL BUT BITMAP FOR THIS ENTRY >> << WBT >>21642000
      IF PRINT'VDSM THEN                                       << WBT >>21644000
      BEGIN  << DO THE BITMAP >>                               << WBT >>21646000
         SKIPLINES(1);                                         << WBT >>21648000
         MOVE BBUF(10):="-- BIT MAP --";                       << WBT >>21650000
         PRINTLINE;                                            << WBT >>21652000
         SKIPLINES(1);                                         << WBT >>21654000
         CHARFLAG:=FALSE;                                      << WBT >>21656000
         BMSTARTADDR:=VDSMTABADDR+DOUBLE(INDEX+VDSMTAB(0, OFFSETTOBM)); 21658000
         BMENDADDR:=BMSTARTADDR+DOUBLE(VDSMTAB(INDEX,BMLENGTH)-1);      21660000
         DUMPTABLE(BMSTARTADDR, BMENDADDR, BMSTARTADDR);       << WBT >>21662000
      END;                                                     << WBT >>21664000
   END; << FORMATENTRY >>                                      << WBT >>21666000
                                                               << WBT >>21668000
   << MAIN BODY OF PROCEDURE >>                                << WBT >>21670000
                                                               << WBT >>21672000
   NEWPAGE;  << PRINT TABLE TITLE >>                           << WBT >>21674000
   INDXARAY(2*%47):=PAGENO;                                    <<01833>>21676000
   MOVE BBUF(16):="*****   VIRTUAL DISC SPACE MANAGEMENT TABLES",2;     21678000
   MOVE * :="    *****";                                       << WBT >>21680000
   PRINTLINE;                                                  << WBT >>21682000
   SKIPLINES(2);                                               << WBT >>21684000
                                                               << WBT >>21686000
   VDSMTABADDR := VERIFYP(%47, %1026D); <<FIND VDSMTAB ADDRESS><< WBT >>21688000
   IF <> THEN                                                  << WBT >>21690000
   BEGIN                                                       << WBT >>21692000
      IF VDSMTABADDR<>0D THEN WARNING                          << WBT >>21694000
      ELSE BEGIN NOFORMT'; RETURN; END;                        << WBT >>21696000
   END;                                                        << WBT >>21698000
                                                               << WBT >>21700000
                                                               << WBT >>21702000
   << PRINT ENTRY ZERO INFORMATION >>                          << WBT >>21704000
                                                               << WBT >>21706000
   MOVE BBUF(10):="NUMBER OF VMS VOLUMES:";                    << WBT >>21708000
   PUTOCTAL(VDSMTAB(0, VMSVOLUMECNT), 40);                     << WBT >>21710000
   PRINTLINE; SKIPLINES(1);                                    << WBT >>21712000
   MOVE BBUF(10):="VM PAGE SIZE:";                             << WBT >>21714000
   PUTOCTAL(VDSMTAB(0, VMPAGESIZE), 40);                       << WBT >>21716000
   PRINTLINE; SKIPLINES(1);                                    << WBT >>21718000
   MOVE BBUF(10):="SECTORS PER VM PAGE:";                      << WBT >>21720000
   PUTOCTAL(VDSMTAB(0, SECTORSPERVMPAGE), 40);                 << WBT >>21722000
   PRINTLINE; SKIPLINES(1);                                    << WBT >>21724000
   MOVE BBUF(10):="TOTAL VM PAGES AVAIL:";                     << WBT >>21726000
   PUTOCTAL(VDSMTAB(0, TOTALVMPAGES), 40);                     << WBT >>21728000
   PRINTLINE; SKIPLINES(1);                                    << WBT >>21730000
   MOVE BBUF(10):="LEAST PAGES EVER AVAIL:";                   << WBT >>21732000
   PUTOCTAL(VDSMTAB(0, LEASTPAGES), 40);                       << WBT >>21734000
   PRINTLINE; SKIPLINES(1);                                    << WBT >>21736000
   NDX:=VDSMTAB(0, STARTENTRY);                                << WBT >>21738000
   NEEDHEADER:=TRUE;                                           << WBT >>21740000
   COUNT:=0;                                                   << WBT >>21742000
   DO                                                          << WBT >>21744000
   BEGIN                                                       << WBT >>21746000
      FORMATENTRY(NDX);                                        << WBT >>21748000
      NDX:=VDSMTAB(NDX, NEXTINLIST);                           << WBT >>21750000
      COUNT:=COUNT+1;                                          << WBT >>21752000
   END                                                         << WBT >>21754000
   UNTIL NDX=VDSMTAB(0,STARTENTRY) OR COUNT=VDSMTAB(0,TABLELENGTH);     21756000
                                                               << WBT >>21758000
END; << PRINTVDSL >>                                           << WBT >>21760000
                                                                        21762000
<<             PRINT VDS BIT MAP                                  >>    21764000
<<    THIS PRROCEDURE WILL FORMAT AND PRINT THE VIRTUAL DISK SPACE>>    21766000
<<    BIT MAP.                                                    >>    21768000
<<                                                                >>    21770000
PROCEDURE PRINTVDSM;                                                    21772000
      BEGIN                                                             21774000
         DOUBLE LOCVDSM,VDSMBASE:=%1034D,SCANEND:=%1036D,               21776000
                SCANWALL:=%1037D,PAGESZ:=%1040D,VDSTRT:=%1026D;         21778000
          INTEGER IX1,WORK2,BASE,PSIZE,COUNT,NENTRYS;         <<<01.02>>21780000
          LOGICAL WORK1;                                      <<<01.02>>21782000
         LOGICAL STAT;           <<LOGICAL STATUS FLAG>>       <<00221>>21784000
         INTEGER ACNT;           <<NUMBER OF UNITS ACROSS PAGE <<00221>>21786000
         LOGICAL FRCNT:=0;       <<FREE PAGES COUNT>>          <<00221>>21788000
         LOGICAL OCCNT:=0;       <<OCCUPIED PAGES COUNT>>      <<00221>>21790000
         LOGICAL LARGST:=0;      <<LARGEST FREE BLOCK SIZE>>   <<00221>>21792000
         LOGICAL BLCNT:=0;       <<NUMBER OF FREE BLOCKS>>     <<00221>>21794000
         LOGICAL PCOUNT;         <<CURRENT BLOCK PAGE COUNT>>  <<00221>>21796000
         NEWPAGE;                                                       21798000
         INDXARAY(%47*2):=PAGENO;                                       21800000
         MOVE DBUFFER(23):=                                             21802000
         "******    VIRTUAL DISK SPACE BIT MAP    ******";              21804000
         PRINTLINE;                                                     21806000
         SKIPLINES(3);                                                  21808000
         LOCVDSM:=VERIFYP(%47,%1034D);                         <<01.02>>21810000
         IF <> THEN                                            <<01.02>>21812000
         IF LOCVDSM <> 0D THEN WARNING ELSE                    <<01.02>>21814000
         BEGIN                                                 <<01.02>>21816000
            NOFORMT';                                          <<00221>>21818000
            GO BAILOUT;                                        <<01.02>>21820000
         END;                                                  <<01.02>>21822000
         MOVE BBUF:="PAGE SIZE =";                                      21824000
         PSIZE:=CORE(PAGESZ);                                           21826000
         @PBUF:=@BBUF+13;                                               21828000
         ASCII(PSIZE,10,PBUF);     <<PAGE SIZE>>                        21830000
         PRINTLINE;                                                     21832000
         MOVE BBUF:="VDS START =";                                      21834000
         TOS:=CORE(VDSTRT);                                             21836000
         TOS:=CORE(VDSTRT+1D);                                          21838000
         VDSTRT:=TOS;                                                   21840000
         @PBUF:=@BBUF+13;                                               21842000
         PUTDNUMP(VDSTRT);     <<VDS START>>                            21844000
         PRINTLINE;                                                     21846000
         MOVE BBUF:="SCANEND   =";                                      21848000
         NENTRYS:=CORE(SCANEND);                                        21850000
         @PBUF:=@BBUF+13;                                               21852000
         PUTNUM(NENTRYS);     <<SCANEND>>                               21854000
         PRINTLINE;                                                     21856000
         MOVE BBUF:="SCANWALL  =";                                      21858000
         WORK1:=CORE(SCANWALL);                                         21860000
         @PBUF:=@BBUF+13;                                               21862000
         PUTNUM(WORK1);     <<SCANWALL>>                                21864000
         PRINTLINE;                                                     21866000
         SKIPLINES(2);                                                  21868000
         MOVE BBUF:="DISC   NUMBER   BLOCK";                   <<00221>>21870000
         ACNT:=0;                                              <<00221>>21872000
         DO                                                    <<00221>>21874000
          MOVE BBUF(ACNT*32):=BBUF,(30)                        <<00221>>21876000
          UNTIL (ACNT:=ACNT+1) = 4;   <<HEADER ACROSS PAGE>>   <<00221>>21878000
         PRINTLINE;               <<PRINT HEADER>>             <<00221>>21880000
         MOVE BBUF:="ADDR   OF PGS   STATUS";                  <<00221>>21882000
         ACNT:=0;                                              <<00221>>21884000
         DO                                                    <<00221>>21886000
          MOVE BBUF(ACNT*32):=BBUF,(30)                        <<00221>>21888000
          UNTIL (ACNT:=ACNT+1) = 4;   <<HEADER ACROSS PAGE>>   <<00221>>21890000
         PRINTLINE;                                            <<00221>>21892000
         SKIPLINES(1);                                         <<00221>>21894000
                                                               <<00221>>21896000
         COUNT:=0;           <<NUMBER OF PAGES PROCESSED>>     <<00221>>21898000
         PCOUNT:=0;          <<NUMBER OF PAGES IN CURNT BLOCK> <<00221>>21900000
         WORK1:=CORE(LOCVDSM);  <<INITIALIZE FIRST WORD>>      <<00221>>21902000
         STAT:=WORK1.(0:1);          <<STATE OF START>>        <<00221>>21904000
         IX1:=0;             <<NUMBER OF BITS EXAMINED>>       <<00221>>21906000
         @PBUF:=@BBUF;                                         <<00221>>21908000
         PUTDNUMP(VDSTRT);   <<OUTPUT DISC ADDRESS>>           <<00221>>21910000
         @PBUF:=@BBUF+7;     <<POINT TO PAGE COUNT>>           <<00221>>21912000
         ACNT:=0;            <<ENTRIES WIDE COUNTER>>          <<00221>>21914000
                                                               <<00221>>21916000
         DO                                                    <<00221>>21918000
          BEGIN              <<SCAN BIT MAP>>                  <<00221>>21920000
           IF (STAT XOR WORK1.(0:1)) LOR                       <<00221>>21922000
              (COUNT > NENTRYS) THEN                           <<00221>>21924000
            BEGIN            <<BIT CHANGED, OUTPUT COUNTS>>    <<00221>>21926000
             PUTNUMP(PCOUNT);<<NUMBER OF PAGES>>               <<00221>>21928000
              IF STAT THEN MOVE PBUF(2):="FREE"                <<00221>>21930000
                      ELSE MOVE PBUF(2):="OCCUPIED";           <<00221>>21932000
             @PBUF:=@PBUF+15;<<ADVANCE TO NEXT DISC ADDR>>     <<00221>>21934000
             IF (ACNT:=ACNT+1) = 4 THEN                        <<00221>>21936000
              BEGIN          <<LINE IS FULL, PRINT>>           <<00221>>21938000
               PRINTLINE;                                      <<00221>>21940000
               ACNT:=0;      <<RESET COUNTER>>                 <<00221>>21942000
              END;           <<LINE IS FULL, PRINT>>           <<00221>>21944000
             IF STAT THEN                                      <<00221>>21946000
              BEGIN            <<BLOCK WAS FREE>>              <<00221>>21948000
               BLCNT:=BLCNT+1; <<ONE MORE FREE BLOCK>>         <<00221>>21950000
               IF PCOUNT>LARGST THEN LARGST:=PCOUNT;           <<00221>>21952000
               FRCNT:=FRCNT+PCOUNT;  <<COUNT FREE>>            <<00221>>21954000
               STAT:=FALSE;    <<NEW CURRENT STATE>>           <<00221>>21956000
              END              <<BLOCK WAS FREE>>              <<00221>>21958000
             ELSE                                              <<00221>>21960000
              BEGIN            <<BLOCK WAS OCCUPIED>>          <<00221>>21962000
               OCCNT:=OCCNT+PCOUNT;  <<COUNT OCCUPIED>>        <<00221>>21964000
               STAT:=TRUE;           <<NEW VALUE>>             <<00221>>21966000
              END;             <<BLOCK WAS OCCUPIED>>          <<00221>>21968000
             PCOUNT:=0;      <<RESET COUNTER OF PAGES>>        <<00221>>21970000
             @PBUF:=@BBUF+(32*ACNT);    <<COMPUTE ADDRESS>>    <<00221>>21972000
             PUTDNUMP(VDSTRT);  <<PRINT DISC ADDRESS>>         <<00221>>21974000
             @PBUF:=@BBUF+(32*ACNT)+7;  <<NEXT FIELD>>         <<00221>>21976000
            END;             <<BIT CHANGED>>                   <<00221>>21978000
                                                               <<00221>>21980000
            IF (IX1:=IX1+1) = 16 THEN                          <<00221>>21982000
             BEGIN           <<WORD EXHAUSTED>>                <<00221>>21984000
              IX1:=0;        <<RESET COUNTER>>                 <<00221>>21986000
              LOCVDSM:=LOCVDSM+1D;  <<NEXT WORD FROM MEM>>     <<00221>>21988000
              WORK1:=CORE(LOCVDSM); <<LOAD BIT MAP>>           <<00221>>21990000
             END             <<WORD EXHAUSTED>>                <<00221>>21992000
            ELSE                                               <<00221>>21994000
             WORK1:=WORK1&LSL(1);  <<SHIFT TO HI BIT>>         <<00221>>21996000
                                                               <<00221>>21998000
            VDSTRT:=VDSTRT+DOUBLE(PSIZE/128);  <<DISC ADDR>>   <<00221>>22000000
            COUNT:=COUNT+1;      <<AOTHER BIT EXAMINED>>       <<00221>>22002000
            PCOUNT:=PCOUNT+1;    <<COUNT THE PAGE>>            <<00221>>22004000
           END  UNTIL COUNT > NENTRYS+1;  <<ALL DONE>>         <<00221>>22006000
                                                               <<00221>>22008000
           <<SUMARIZE MAX COUNTS>>                             <<00221>>22010000
           IF ACNT > 0 THEN                                    <<00221>>22012000
            BEGIN             <<DATA IN LINE NOT YET PRINTED>> <<00221>>22014000
             MOVE BBUF(ACNT*32):="        ";  <<ZAP ADDRESS>>  <<00221>>22016000
             PRINTLINE;                                        <<00221>>22018000
            END;                                               <<00221>>22020000
                                                               <<00221>>22022000
           SKIPLINES(2);                                       <<00221>>22024000
           MOVE BBUF:="NUMBER OF OCCUPIED PAGES =";            <<00221>>22026000
           @PBUF:=@BBUF+30;                                    <<00221>>22028000
           PUTNUMP(OCCNT);                                     <<00221>>22030000
           PRINTLINE;                                          <<00221>>22032000
           MOVE BBUF:="NUMBER OF FREE PAGES     =";            <<00221>>22034000
           @PBUF:=@BBUF+30;                                    <<00221>>22036000
           PUTNUMP(FRCNT);                                     <<00221>>22038000
           PRINTLINE;                                          <<00221>>22040000
           MOVE BBUF:="NUMBER OF FREE BLOCKS    =";            <<00221>>22042000
           @PBUF:=@BBUF+30;                                    <<00221>>22044000
           PUTNUMP(BLCNT);                                     <<00221>>22046000
           PRINTLINE;                                          <<00221>>22048000
           MOVE BBUF:="LARGEST FREE BLOCK SIZE  =";            <<00221>>22050000
           @PBUF:=@BBUF+30;                                    <<00221>>22052000
           PUTNUMP(LARGST);                                    <<00221>>22054000
           PRINTLINE;                                          <<00221>>22056000
BAILOUT:                                                                22058000
      END;                                                              22060000
                                                                        22062000
$PAGE "GET'DST'ENTRY(dst'number,dst'entry): return dst'entry"           22064000
$CONTROL SEGMENT=TABLES                                                 22066000
COMMENT                                                                 22068000
                                                                        22070000
Purpose:                                                                22072000
<<                                                       >>    <<03556>>22074000
<< This procedure, given a DST number will return the    >>    <<03556>>22076000
<< entry from the data segment table in array dst'entry  >>    <<03556>>22078000
<<                                                       >>    <<03556>>22080000
     Called only by print'dfs'data'seg'list.                            22082000
                                                                        22084000
Input parameters:                                                       22086000
                                                                        22088000
Output parameters:                                                      22090000
                                                                        22092000
Globals Referenced:                                                     22094000
                                                                        22096000
Globals Altered:                                                        22098000
                                                                        22100000
Data Structures:                                                        22102000
                                                                        22104000
Algorithm:                                                              22106000
                                                                        22108000
;                                                                       22110000
PROCEDURE Get'Dst'Entry (dst'number, dst'entry);               <<03556>>22112000
   VALUE dst'number;                                           <<03556>>22114000
   INTEGER dst'number;                                         <<03556>>22116000
   ARRAY dst'entry;                                            <<03556>>22118000
                                                               <<03556>>22120000
                                                               <<03556>>22122000
BEGIN                                                          <<03556>>22124000
                                                               <<03556>>22126000
   INTEGER index;                                              <<03556>>22128000
                                                               <<03556>>22130000
   << - - - - - - - - - - >>                                   <<03556>>22132000
                                                               <<03556>>22134000
   FOR index := 0 UNTIL 3 DO                                   <<03556>>22136000
      dst'entry (index) := Core ( DOUBLE(Core(2D)) +           <<*1391>>22138000
                           DOUBLE ((dst'number * 4) + index)); <<03556>>22140000
                                                               <<03556>>22142000
END;   << Get'Dst'Entry >>                                     <<03556>>22144000
                                                                        22146000
$PAGE "PRINTICS : Format the interrupt control stack"                   22148000
$CONTROL SEGMENT=TABLES                                        <<03080>>22150000
PROCEDURE PRINTICS;                                            <<03080>>22152000
                                                               <<03080>>22154000
BEGIN                                                          <<03080>>22156000
COMMENT                                                                 22158000
                                                                        22160000
Purpose:                                                                22162000
          This procedure was designed to format the Q minus             22164000
          area and stack markers of the interrupt control               22166000
          stack.  The procedure uses the DB and DL registers            22168000
          as set previously in the program to determine the             22170000
          status of the ICS.  The headings for the different            22172000
          areas of the q minus area are first printed and then          22174000
          the corresponding addresses of the information which          22176000
          they describe are passed to the subroutine setline            22178000
          to be placed in the buffer to be printed.  Headings           22180000
          are then printed and subroutine FORMAT'ICS'STACKS is          22182000
          called and here the registers determine if multiple           22184000
          stack markers are present to be printed or if only            22186000
          the dispatch stack marker is present and to be print-         22188000
          ed.  The loop in this subroutine will parce through           22190000
          the stack and setline will read the correct addresses         22192000
          to be printed.                                                22194000
                                                                        22196000
Input parameters:                                                       22198000
                                                                        22200000
Output parameters:                                                      22202000
                                                                        22204000
Globals Referenced:                                                     22206000
                                                                        22208000
Globals Altered:                                                        22210000
                                                                        22212000
Data Structures:                                                        22214000
                                                                        22216000
Algorithm:                                                              22218000
                                                                        22220000
;                                                                       22222000
                                                               <<03080>>22224000
DOUBLE CURRADDR,                                               <<03080>>22226000
       COMP'ADDR,                                              <<03080>>22228000
       ICS'QI,                                                 <<03080>>22230000
       QADDR,                                                  <<03080>>22232000
       DWORK;                                                  <<03080>>22234000
LOGICAL WORK,                                                  <<03080>>22236000
        PHYSICALMAP,                                           <<s7921>>22238000
       LAST'SM;                                                <<03080>>22240000
LOGICAL FORMAT'STACK := FALSE;                                 <<s7921>>22242000
                                                               <<03080>>22244000
SUBROUTINE SETLINE;                                            <<03080>>22246000
  BEGIN                                                        <<03080>>22248000
  WHILE CURRADDR <= COMP'ADDR DO                               <<03080>>22250000
    BEGIN                                                      <<03080>>22252000
    WORK:=CORE(CURRADDR);                                      <<03080>>22254000
    IF FORMAT'STACK AND (COMP'ADDR-CURRADDR=2D) THEN BEGIN     <<s7921>>22256000
       PHYSICALMAP := WORK.(1:1);                              <<s7921>>22258000
       WORK:=WORK LAND %137777;                                << MCW >>22260000
       PUTNUM(WORK);                                           <<s7921>>22262000
       IF CSTEXPANSION THEN                                   <<<s7921>>22264000
         IF PHYSICALMAP THEN PBUF:="P"                         <<s7921>>22266000
             ELSE PBUF:="L";                                   <<s7921>>22268000
       END                                                     <<s7921>>22270000
      ELSE PUTNUM(WORK);                                       <<s7921>>22272000
    @PBUF:=@PBUF + 3;                                          <<03080>>22274000
    CURRADDR:=CURRADDR + 1D;                                   <<03080>>22276000
    END;                                                       <<03080>>22278000
  END;                                                         <<03080>>22280000
                                                               <<03080>>22282000
SUBROUTINE FORMAT'ICS'STACKS;                                  <<03080>>22284000
  BEGIN                                                        <<03080>>22286000
  FORMAT'STACK:=TRUE;                                          <<s7921>>22288000
  IF QREG > LOGICAL(ICS'QI - 63D) AND QREG < CORE(%6D) THEN    <<03080>>22290000
    QADDR:=DOUBLE(QREG)                                        <<03080>>22292000
  ELSE                                                         <<03080>>22294000
    QADDR:=ICS'QI;                                             <<03080>>22296000
  LAST'SM:=FALSE;                                              <<03080>>22298000
  WHILE NOT LAST'SM DO    << IF PRESENT STACK MARKER IS >>     <<03080>>22300000
    BEGIN                 << NOT THE DISPATCH STACK MARKER >>  <<03080>>22302000
    @PBUF:=@BBUF;                                              <<03080>>22304000
    PUTNUM(LOGICAL(QADDR));                                    <<03080>>22306000
    @PBUF:=@PBUF+9;                                            <<03080>>22308000
    CURRADDR:=QADDR-3D;                                        <<03080>>22310000
    COMP'ADDR:=QADDR;                                          <<03080>>22312000
    SETLINE;                                                   <<03080>>22314000
    WORK := CORE(QADDR).(1:15);                                <<s7921>>22316000
    IF WORK <> 0 THEN  << IF 0 IT IS THE DISPATCH SM >>        <<s7921>>22318000
      QADDR:=QADDR - DOUBLE(WORK)                              <<s7921>>22320000
    ELSE                                                       <<03080>>22322000
      BEGIN                                                    <<03080>>22324000
      LAST'SM:=TRUE;                                           <<03080>>22326000
      MOVE BBUF(60):="* DISPATCH STACK MARKER *";              <<03080>>22328000
      END;                                                     <<03080>>22330000
    PRINTLINE;                                                 <<03080>>22332000
    END;                                                       <<03080>>22334000
  FORMAT'STACK:=FALSE;                                         <<s7921>>22336000
  END;                                                         <<03080>>22338000
                                                               <<03080>>22340000
NEWPAGE;                                                       <<03080>>22342000
INDXARAY(7*2):=PAGENO;                                         <<03080>>22344000
MOVE BBUF(50):="***** INTERUPT CONTROL STACK *****";           <<03080>>22346000
PRINTLINE;                                                     <<03080>>22348000
SKIPLINES(3);                                                  <<03080>>22350000
IF CORE(%5D) <> (CORE(%1007D) + %1000) THEN                    <<03080>>22352000
  BEGIN                                                        <<03080>>22354000
  MOVE BBUF:="***** WARNING!  SYSTEM POINTERS TO ICS DO NOT",2;<<03080>>22356000
  MOVE *:=" MATCH! FORMATTING OF ICS ABORTED! *****";          <<03080>>22358000
  PRINTLINE;                                                   <<03080>>22360000
  NEWPAGE;                                                     <<03080>>22362000
  RETURN;                                                      <<03080>>22364000
  END                                                          <<03080>>22366000
ELSE                                                           <<03080>>22368000
  ICS'QI:=DOUBLE(CORE(%5D));                                   <<03080>>22370000
MOVE BBUF(53):="-- SCHEDULING INFORMATION --";                 <<03080>>22372000
PRINTLINE;                                                     <<03080>>22374000
SKIPLINES(1);                                                  <<03080>>22376000
MOVE BBUF:="E BCKGRD  D BCKGRD";                               <<03080>>22378000
MOVE BBUF(41):="CURR C";                                       <<03080>>22380000
PRINTLINE;                                                     <<03080>>22382000
MOVE BBUF:="QUANTUM   QUANTUM   CWNTNUM   CWTDENOM    AST";    <<03080>>22384000
MOVE BBUF(52):="MAX C     MIN C    E BASE    D BASE    C BASE";<<03080>>22386000
MOVE BBUF(100):="E LIMIT   D LIMIT    C LIMIT";                <<03080>>22388000
PRINTLINE;                                                     <<03080>>22390000
MOVE BBUF:="-------   -------   -------   --------  ------";   <<03080>>22392000
MOVE BBUF(52):="-----     -----    ------    ------    ------";<<03080>>22394000
MOVE BBUF(100):="-------   -------    -------";                <<03080>>22396000
PRINTLINE;                                                     <<03080>>22398000
@PBUF:=@BBUF+1;                                                <<03080>>22400000
CURRADDR:=ICS'QI - 44D;                                        <<03080>>22402000
COMP'ADDR:=ICS'QI - 32D;                                       <<03080>>22404000
SETLINE;                                                       <<03080>>22406000
PRINTLINE;                                                     <<03080>>22408000
SKIPLINES(2);                                                  <<03080>>22410000
MOVE BBUF(55):="-- CURRENT STACK INFO --";                     <<03080>>22412000
PRINTLINE;                                                     <<03080>>22414000
SKIPLINES(1);                                                  <<03080>>22416000
MOVE BBUF:="STACK                         TRACE";              <<03080>>22418000
MOVE BBUF(70):="          STACK     STACK     STACK";          <<03080>>22420000
MOVE BBUF(120):="STACK";                                       <<03080>>22422000
PRINTLINE;                                                     <<03080>>22424000
MOVE BBUF:=" DST      PSTA      PADDR      FLAG    PFAILPCB";  <<03080>>22426000
MOVE BBUF(51):="JCUT        XP      PCBX       Z         DL";  <<03080>>22428000
MOVE BBUF(102):="S       S BANK      DB";                      <<03080>>22430000
PRINTLINE;                                                     <<03080>>22432000
MOVE BBUF:="------    ------    ------    ------   --------";  <<03080>>22434000
MOVE BBUF(51):="----     ------    ------    ------    -----"; <<03080>>22436000
MOVE BBUF(100):="------    ------    ------";                  <<03080>>22438000
PRINTLINE;                                                     <<03080>>22440000
@PBUF:=@BBUF;                                                  <<03080>>22442000
CURRADDR:=ICS'QI - 16D;                                        <<03080>>22444000
COMP'ADDR:=ICS'QI - 4D;                                        <<03080>>22446000
SETLINE;                                                       <<03080>>22448000
PRINTLINE;                                                     <<03080>>22450000
SKIPLINES(2);                                                  <<03080>>22452000
MOVE BBUF(50):="-- MISCELLANEOUS  INFORMATION --";             <<03080>>22454000
PRINTLINE;                                                     <<03080>>22456000
SKIPLINES(1);                                                  <<03080>>22458000
MOVE BBUF:=" CAND      LAST";                                  <<03080>>22460000
MOVE BBUF(20):="LIST       MISC    SYS MEM    XDS UP       DL";<<03080>>22462000
MOVE BBUF(71):="PSDB      PAUSE";                              <<03080>>22464000
PRINTLINE;                                                     <<03080>>22466000
MOVE BBUF(2):="PIN     WEIGHT    STATE    BNDS FLG   BOUND";   <<03080>>22468000
MOVE BBUF(50):="BOUND     INITIAL   COUNTER    TIME";          <<03080>>22470000
PRINTLINE;                                                     <<03080>>22472000
MOVE BBUF(1):="----     ------    -----    --------  -------"; <<03080>>22474000
MOVE BBUF(50):="------    -------   -------    -----";         <<03080>>22476000
PRINTLINE;                                                     <<03080>>22478000
@PBUF:=@BBUF;                                                  <<03080>>22480000
CURRADDR:=ICS'QI - 49D;                                        <<03080>>22482000
COMP'ADDR:=ICS'QI - 48D;                                       <<03080>>22484000
SETLINE;                                                       <<03080>>22486000
WORK:=CORE(ICS'QI - 45D);                                      <<03080>>22488000
PUTNUM(WORK);                                                  <<03080>>22490000
@PBUF:=@PBUF + 3;                                              <<03080>>22492000
CURRADDR:=ICS'QI - 31D;                                        <<03080>>22494000
COMP'ADDR:=ICS'QI - 28D;                                       <<03080>>22496000
SETLINE;                                                       <<03080>>22498000
WORK:=CORE(ICS'QI - 18D);                                      <<03080>>22500000
PUTNUM(WORK);                                                  <<03080>>22502000
@PBUF:=@PBUF + 3;                                              <<03080>>22504000
DWORK:=DCORE(ICS'QI - 47D);                                    <<03080>>22506000
PUTDNUM(DWORK);                                                <<03080>>22508000
PRINTLINE;                                                     <<03080>>22510000
SKIPLINES(3);                                                  <<03080>>22512000
MOVE BBUF(57):="-- STACK MARKERS --";                          <<03080>>22514000
PRINTLINE;                                                     <<03080>>22516000
SKIPLINES(1);                                                  <<03080>>22518000
MOVE BBUF:="ADDRESS            X      DELTA P   STATUS";       <<03080>>22520000
MOVE BBUF(46):="DELTA Q";                                      <<03080>>22522000
PRINTLINE;                                                     <<03080>>22524000
MOVE BBUF:="-------         ------    -------   ------";       <<03080>>22526000
MOVE BBUF(46):="-------";                                      <<03080>>22528000
PRINTLINE;                                                     <<03080>>22530000
FORMAT'ICS'STACKS;                                             <<03080>>22532000
END;                                                           <<03080>>22534000
                                                                        22536000
$PAGE "PRINTINDEX : Print an index of the dump "                        22538000
$CONTROL SEGMENT=MEMORY                                                 22540000
PROCEDURE PRINTINDEX;                                                   22542000
COMMENT                                                                 22544000
                                                                        22546000
Purpose:                                                                22548000
      This procedure will format and print an index by page             22550000
      number of various tablles in the dump                             22552000
                                                                        22554000
Input parameters:                                                       22556000
                                                                        22558000
Output parameters:                                                      22560000
                                                                        22562000
Globals Referenced:                                                     22564000
                                                                        22566000
Globals Altered:                                                        22568000
                                                                        22570000
Data Structures:                                                        22572000
                                                                        22574000
Algorithm:                                                              22576000
                                                                        22578000
;                                                                       22580000
   BEGIN                                                                22582000
      INTEGER INDX;                                                     22584000
      BNKFLG:=FALSE;  << RESET TO SKIP BANK# >>                <<00221>>22586000
      NEWPAGE;                                                          22588000
      MOVE DBUFFER(23):="******    DUMP INDEX    ******";               22590000
      PRINTLINE;                                                        22592000
      SKIPLINES(1);                                            <<01.3A>>22594000
      MOVE BBUF:="NAME";                                                22596000
      MOVE BBUF(51):="PAGE # FORMATTED          PAGE # OCTAL DUMP";     22598000
      PRINTLINE;                                                        22600000
      SKIPLINES(1);                                                     22602000
      FOR INDX := 1 UNTIL LSTSYSDST + 3 DO                     <<NAM01>>22604000
      BEGIN                                                             22606000
         @PBUF:=@BBUF;                                                  22608000
         CASE INDX OF                                          << WBT >>22610000
      BEGIN                                                             22612000
         BEGIN     <<0>>                                                22614000
         END;                                                           22616000
         BEGIN     <<1>>                                                22618000
            MOVE PBUF:=" CODE SEGMENT TABLE ";                          22620000
         END;                                                           22622000
         BEGIN     <<2>>                                                22624000
            MOVE PBUF:=" DATA SEGMENT TABLE ";                          22626000
         END;                                                           22628000
         BEGIN     <<3>>                                                22630000
            MOVE PBUF:=" PROCESS CONTROL BLOCK ";                       22632000
         END;                                                           22634000
         BEGIN     <<4>>                                                22636000
            MOVE PBUF:=" CST EXTENSION ";                               22638000
         END;                                                           22640000
         BEGIN     <<5>>                                                22642000
            MOVE PBUF:=" SYSTEM GLOBAL AREA ";                          22644000
         END;                                                           22646000
         BEGIN     <<6>>                                                22648000
            MOVE PBUF:=" FIXED LOW CORE ";                              22650000
         END;                                                           22652000
         BEGIN     <<7>>                                                22654000
            MOVE PBUF:=" INTERRUPT CONTROL STACK ";                     22656000
         END;                                                           22658000
         BEGIN     <<10>>                                               22660000
            MOVE PBUF:=" SYSTEM BUFFERS ";                              22662000
         END;                                                           22664000
         BEGIN     <<11>>                                               22666000
            MOVE PBUF:=" UCOP REQUEST QUEUE ";                          22668000
         END;                                                           22670000
         BEGIN     <<12>>                                               22672000
            MOVE PBUF:=" PROCESS-PROCESS COMMUNICATION TABLE ";         22674000
         END;                                                           22676000
         BEGIN     <<13>>                                               22678000
            MOVE PBUF:=" I/O QUEUE ";                                   22680000
         END;                                                           22682000
         BEGIN     <<14>>                                               22684000
            MOVE PBUF:=" TERMINAL BUFFERS ";                            22686000
         END;                                                           22688000
         BEGIN     <<15>>                                               22690000
            MOVE PBUF:=" LOGICAL-PHYSICAL DEVICE TABLE ";               22692000
         END;                                                           22694000
         BEGIN     <<16>>                                               22696000
            MOVE PBUF:=" LOGICAL DEVICE TABLE ";               <<sknew>>22698000
         END;                                                           22700000
         BEGIN     <<17>>                                               22702000
            MOVE PBUF:=" DRIVER LINKAGE TABLE ";                        22704000
         END;                                                           22706000
         BEGIN     <<20>>                                               22708000
            MOVE PBUF:=" I/O RESOURCE TABLES ";                <<00221>>22710000
         END;                                                           22712000
         BEGIN     <<21>>                                               22714000
            MOVE PBUF := " PORT DICTIONARY TABLE ";                     22716000
         END;                                                           22718000
         BEGIN     <<22>>                                               22720000
            MOVE PBUF:=" LOADER SEGMENT TABLE ";                        22722000
         END;                                                           22724000
         BEGIN     <<23>>                                               22726000
            MOVE PBUF:=" TIMER REQUEST LIST ";                          22728000
         END;                                                           22730000
         BEGIN     <<24>>                                               22732000
            MOVE PBUF:=" DIRECTORY ";                                   22734000
         END;                                                           22736000
         BEGIN     <<25>>                                               22738000
            MOVE PBUF:=" DIRECTORY SPACE ";                             22740000
         END;                                                           22742000
         BEGIN     <<26>>                                               22744000
            MOVE PBUF:=" RIN TABLE ";                                   22746000
         END;                                                           22748000
         BEGIN     <<27>>                                               22750000
            MOVE PBUF:=" SWAP TABLE ";                         << WBT >>22752000
         END;                                                           22754000
         BEGIN     <<30>>                                               22756000
            MOVE PBUF:=" JOB PROCESS COUNT ";                           22758000
         END;                                                           22760000
         BEGIN     <<31>>                                               22762000
            MOVE PBUF:=" JOB MASTER TABLE ";                            22764000
         END;                                                           22766000
         BEGIN     <<32>>                                               22768000
            MOVE PBUF:=" TAPE LABEL TABLE ";                   <<01.3A>>22770000
         END;                                                           22772000
         BEGIN     <<33>>                                               22774000
            MOVE PBUF:=" LOG TABLE ";                          << WBT >>22776000
         END;                                                           22778000
         BEGIN     <<34>>                                               22780000
            MOVE PBUF:=" REPLY INFORMATION TABLE ";                     22782000
         END;                                                           22784000
         BEGIN     <<35>>                                               22786000
            MOVE PBUF:=" VOLUME TABLE ";                                22788000
         END;                                                           22790000
         BEGIN     <<36>>                                               22792000
            MOVE PBUF:=" BREAKPOINT TABLE ";                            22794000
         END;                                                           22796000
         BEGIN     <<37>>                                               22798000
            MOVE PBUF:=" LOG BUFFER 1 ";                                22800000
         END;                                                           22802000
         BEGIN     <<40>>                                               22804000
            MOVE PBUF:=" LOG BUFFER 2 ";                                22806000
         END;                                                           22808000
         BEGIN     <<41>>                                               22810000
            MOVE PBUF:=" LOG ID TABLE ";                       << WBT >>22812000
         END;                                                           22814000
         BEGIN     <<42>>                                               22816000
            GO AROUND;                                         << WBT >>22818000
         END;                                                           22820000
         BEGIN     <<43>>                                               22822000
            MOVE PBUF:=" CST BLOCK ";                                   22824000
         END;                                                           22826000
         BEGIN     <<44>>                                               22828000
            MOVE PBUF:=" JOB CUTOFF TABLE ";                            22830000
         END;                                                           22832000
         BEGIN     <<45>>                                               22834000
            MOVE PBUF:=" SYSTEM JIT ";                                  22836000
         END;                                                           22838000
         BEGIN     <<46>>                                               22840000
            MOVE PBUF:=" SPECIAL REQUEST TABLE ";              <<01791>>22842000
         END;                                                           22844000
         BEGIN     <<47>>                                               22846000
            MOVE PBUF:=" VIRTUAL DISK SPACE TABLE ";           << WBT >>22848000
         END;                                                           22850000
         BEGIN     <<50>>                                               22852000
            MOVE PBUF:=" DEVICE CLASS TABLE ";                 <<sknew>>22854000
         END;                                                           22856000
         BEGIN     <<51>>                                               22858000
            MOVE PBUF:=" ARSBM TABLE ";                        <<01791>>22860000
         END;                                                           22862000
         BEGIN     <<52>>                                               22864000
            MOVE PBUF:=" ILT ";                                <<02012>>22866000
         END;                                                           22868000
         BEGIN     <<53>>                                               22870000
            MOVE PBUF:=" SIR TABLE ";                                   22872000
         END;                                                           22874000
         BEGIN     <<54>>                                      <<00221>>22876000
            MOVE PBUF:=" FILE MULTI-ACCESS VECTOR ";           <<00221>>22878000
         END;                                                  <<00221>>22880000
         BEGIN     <<55>>                                      <<00221>>22882000
            MOVE PBUF:=" INPUT DEVICE DIRECTORY ";             <<00221>>22884000
         END;                                                  <<00221>>22886000
         BEGIN     <<56>>                                      <<00221>>22888000
            MOVE PBUF:=" OUTPUT DEVICE DIRECTORY ";            <<00221>>22890000
         END;                                                  <<00221>>22892000
         BEGIN     <<57>>                                      <<00221>>22894000
            MOVE PBUF:=" WELCOME MESSAGE #1 ";                 <<00221>>22896000
         END;                                                  <<00221>>22898000
         BEGIN     <<60>>                                      <<00221>>22900000
            MOVE PBUF:=" WELCOME MESSAGE #2 ";                 <<00221>>22902000
         END;                                                  <<00221>>22904000
         BEGIN     <<61>>                                      <<00221>>22906000
            MOVE PBUF:=" CS SYSTEM SEGMENT ";                  <<00221>>22908000
         END;                                                  <<00221>>22910000
         BEGIN     <<62>>                                      <<00221>>22912000
            MOVE PBUF:=" JOB-PROCESS CROSS REFERENCE ";        <<00221>>22914000
         END;                                                  <<00221>>22916000
         BEGIN     <<63>>                                      <<00221>>22918000
            MOVE PBUF:=" SYSTEM JDT ";                         <<00221>>22920000
         END;                                                  <<00221>>22922000
         BEGIN     <<64>>                                      <<00221>>22924000
            MOVE PBUF:=" COMMAND INTERPRETER LOG-ON DST ";     <<00221>>22926000
         END;                                                  <<00221>>22928000
         BEGIN     <<65>>                                      <<00221>>22930000
            MOVE PBUF:=" MOUNTED VOLUME TABLE ";               <<00221>>22932000
         END;                                                  <<00221>>22934000
         BEGIN     <<66>>                                      <<00221>>22936000
            MOVE PBUF:=" PRI. VOL. USER TABLE ";               << WBT >>22938000
         END;                                                  <<00221>>22940000
         BEGIN                        <<67>>                   <<01791>>22942000
            MOVE PBUF:=" AVAILABLE REGION LIST ";              <<01791>>22944000
         END;                                                  <<01791>>22946000
         BEGIN      <<70>>                                     << WBT >>22948000
            MOVE PBUF:=" DISC REQUEST TABLE ";                 << WBT >>22950000
         END;                                                  << WBT >>22952000
         BEGIN      <<71>>                                     << WBT >>22954000
            MOVE PBUF:=" MSG HBR TABLE ";                      <<01791>>22956000
         END;                                                  << WBT >>22958000
         BEGIN      <<72>>                                     << WBT >>22960000
            MOVE PBUF:=" IOWAITPORT MAP TABLE ";                        22962000
         END;                                                  << WBT >>22964000
         BEGIN      <<73>>                                     << WBT >>22966000
            MOVE PBUF:=" MEASUREMENT INFO TABLE ";             << WBT >>22968000
         END;                                                  << WBT >>22970000
         BEGIN     <<LSTSYSDST+1>>                             <<00221>>22972000
            SKIPLINES(1);                                      <<00221>>22974000
            MOVE PBUF:=" CURRENT PROCESS STACK";               <<00221>>22976000
         END;                                                  <<00221>>22978000
         BEGIN   <<LSTSYSDST + 2>>                             <<03556>>22980000
            MOVE PBUF := " DISC FREE SPACE INFO";              <<03556>>22982000
         END;    <<LSTSYSDST + 2>>                             <<03556>>22984000
         BEGIN   <<CDT ( 76 ) >>                               <<NAM01>>22986000
            MOVE PBUF := " CACHE DESCRIPTOR TABLE";            <<NAM01>>22988000
         END;    <<CDT>>                                       <<NAM01>>22990000
     END;                                                               22992000
     @PBUF:=@BBUF+59;                                                   22994000
     IF INDXARAY(INDX*2) >0 THEN                                        22996000
     ASCII(INDXARAY(INDX*2),10,PBUF);                                   22998000
     @PBUF:=@BBUF+85;                                                   23000000
     IF INDXARAY(INDX*2+1) >0 THEN                                      23002000
     ASCII(INDXARAY(INDX*2+1),10,PBUF);                                 23004000
     PRINTLINE;                                                         23006000
      IF INDX=%14 THEN << DIT KLUDGE >>                        <<02012>>23008000
      BEGIN                                                    <<02012>>23010000
         MOVE BBUF:=" DEVICE INFORMATION TABLE (DIT) ";        <<02012>>23012000
         @PBUF:=@BBUF+59;                                      <<02012>>23014000
         IF DITFPG<>0 THEN ASCII(DITFPG, 10, PBUF);            <<02012>>23016000
         @PBUF:=@BBUF+85;                                      <<02012>>23018000
         IF DITNFPG<>0 THEN ASCII(DITNFPG, 10, PBUF);          <<02012>>23020000
         PRINTLINE;                                            <<02012>>23022000
      END;                                                     <<02012>>23024000
AROUND:                                                        << WBT >>23026000
  END;                                                                  23028000
  IF NUMREC >0 THEN                                                     23030000
  BEGIN                                                                 23032000
     MOVE PBUF:="INCOMPLETE DUMP  XXXK WORDS NOT PRINTED";              23034000
     @PBUF:=@BBUF+17;                                                   23036000
     ASCII((NUMREC*4),10,PBUF);                                         23038000
     PRINTLINE;                                                         23040000
  END;                                                                  23042000
END;                                                                    23044000
                                                                        23046000
$PAGE "YESANSWER : Process a user reply"                                23048000
                                                                        23050000
$PAGE "PRINTMEMORY : Print memory bank by bank"                         23052000
$CONTROL SEGMENT=DPANMAIN                                      <<01114>>23054000
 PROCEDURE PRINTMEMORY;                                        <<01114>>23056000
COMMENT                                                                 23058000
                                                                        23060000
Purpose:                                                                23062000
          This procedure prints each bank and determines                23064000
          whether to format it or not                                   23066000
                                                                        23068000
Input parameters:                                                       23070000
                                                                        23072000
Output parameters:                                                      23074000
                                                                        23076000
Globals Referenced:                                                     23078000
                                                                        23080000
Globals Altered:                                                        23082000
                                                                        23084000
Data Structures:                                                        23086000
                                                                        23088000
Algorithm:                                                              23090000
                                                                        23092000
;                                                                       23094000
 BEGIN                                                         <<01114>>23096000
  INTEGER BANKNUM := -1;                                       <<01114>>23098000
  BNKFLG := TRUE;                                              <<01114>>23100000
  WHILE (BANKNUM:=BANKNUM+1) <= MAXBANK DO                     <<01114>>23102000
   IF PRINT'BANK(BANKNUM) THEN                                 <<01114>>23104000
    IF FORMAT'MEMORY THEN                                      <<01114>>23106000
     BEGIN                   << Format dump >>                 <<01114>>23108000
      FILLMEMBUF(BANKNUM);                                     <<01114>>23110000
      SORTMEMBUF;                                              <<01114>>23112000
      PRINTMEMLOCS(BANKNUM);                                   <<01114>>23114000
      DUMPMEM(BANKNUM);                                        <<01114>>23116000
     END                                                       <<01114>>23118000
     ELSE                                                      <<01114>>23120000
      BEGIN                  << Print raw dump >>              <<01114>>23122000
       TOS := BANKNUM;                                         <<01114>>23124000
       TOS := 0;                                               <<01114>>23126000
       TOS := BANKNUM;                                         <<01114>>23128000
       TOS := %177777;                                         <<01114>>23130000
       OCTALDUMP(*,*);                                         <<01114>>23132000
      END;                                                     <<01114>>23134000
 END;                                                          <<01114>>23136000
                                                                        23138000
$PAGE "PROCESS'DUMP : Read the dump and produce report"                 23140000
$CONTROL SEGMENT=DPANMAIN                                      <<01114>>23142000
 PROCEDURE PROCESS'DUMP(PARM);                                 <<01114>>23144000
 VALUE PARM;                                                   <<01114>>23146000
 INTEGER PARM;                                                 <<01114>>23148000
COMMENT                                                                 23150000
                                                                        23152000
Purpose:                                                                23154000
          This procedure controls the reading of the dump               23156000
          tape, determining which reports to produce, and               23158000
          the actual production of the reports                          23160000
                                                                        23162000
Input parameters:                                                       23164000
                                                                        23166000
Output parameters:                                                      23168000
                                                                        23170000
Globals Referenced:                                                     23172000
                                                                        23174000
Globals Altered:                                                        23176000
                                                                        23178000
Data Structures:                                                        23180000
                                                                        23182000
Algorithm:                                                              23184000
                                                                        23186000
;                                                                       23188000
 BEGIN                                                         <<01114>>23190000
INTEGER INDX := -1;                                          <<01114>>  23192000
                                                               <<04149>>23194000
<<THE FOLLOWING VARIABLES ARE USED IN DETERMINING IF>>         <<04149>>23196000
<<THE DUMP CONTAINS AN IMAGE OF "SOFTDUMP".  SEE    >>         <<04149>>23198000
<<LATER COMMENT WHICH LISTS THE PATTERNS WE ARE     >>         <<04149>>23200000
<<LOOKING FOR, AND THEIR LOCATIONS.                 >>         <<04149>>23202000
LOGICAL BADDUMP;  <<TRUE: DUMP IS NO GOOD>>                    <<04149>>23204000
                                                               <<04149>>23206000
LOGICAL ARRAY MEMORY(0:7);                                     <<04149>>23208000
BYTE ARRAY MEMORY'(*)=MEMORY;                                  <<04149>>23210000
                                                               <<04149>>23212000
LOGICAL ARRAY SOFTDUMPPAT(0:7);                                <<04149>>23214000
BYTE ARRAY SOFTDUMPPAT'(*)=SOFTDUMPPAT;                        <<04149>>23216000
                                                               <<04149>>23218000
                                                               <<01666>>23220000
SUBROUTINE PRINTIT;                                            <<01666>>23222000
BEGIN                                                          <<01666>>23224000
                                                               <<01666>>23226000
   << THIS ROUTINE PRINTS A MESSAGE ON THE TERMINAL AND >>     <<01666>>23228000
   << ON THE LISTING FOR INTERACTIVE EXECUTIONS.        >>     <<01666>>23230000
                                                               <<01666>>23232000
   PRINT( DBUFFER, -72, 0 );                                   <<01666>>23234000
   IF NOT DUPLICATIVE THEN PRINTLINE;                          <<*1391>>23236000
   BLANKBUF;                                                   <<*1737>>23237000
                                                               <<01666>>23238000
END;                                                           <<01666>>23240000
                                                               <<01666>>23242000
  TAPETODISK;                                                  <<01114>>23244000
                                                               <<01666>>23246000
  PRINT(DBUFFER,0,0);                                          <<*1391>>23246050
  MOVE BBUF := "PROCESSING DUMP";                              <<*1391>>23246100
  PRINT(DBUFFER,-15,0);                                        <<*1391>>23246200
  BLANKBUF;                                                    <<*1391>>23246300
$EDIT VOID=23342000                                                     23248000
                                                               <<04149>>23344000
                                                               <<04149>>23346000
<<CHECK TO SEE IF MEMORY CONTAINS AN IMAGE OF "SOFTDUMP">>     <<04149>>23348000
<<IF THIS IS THE CASE, THERE IS NO POINT IN PROCESSING  >>     <<04149>>23350000
<<THE DUMP SINCE MOST OF THE LOW CORE POINTERS ARE      >>     <<04149>>23352000
<<INVALID.  THERE ARE TWO POSSIBLE PATTERNS TO TEST FOR,>>     <<04149>>23354000
<<BOTH STARTING AT ADDRESS %175000 OF BANK ZERO.  THE   >>     <<04149>>23356000
<<PATTERNS ARE AS FOLLOWS ("---" INDICATES "DON'T CARE")>>     <<04149>>23358000
<<                                                      >>     <<04149>>23360000
<<  ADDRESS      PATTERN 1      PATTERN 2               >>     <<04149>>23362000
<<  -------      ---------      ---------               >>     <<04149>>23364000
<<  %175000       %002005        %002010                >>     <<04149>>23366000
<<  %175001       %000021            ---                >>     <<04149>>23368000
<<  %175002       %000000        %000000                >>     <<04149>>23370000
<<  %175003       %002000        %000000                >>     <<04149>>23372000
<<  %175004           ---            ---                >>     <<04149>>23374000
<<  %175005       %001000        %001000                >>     <<04149>>23376000
<<  %175006       %000000        %000000                >>     <<04149>>23378000
<<  %175007       %002016        %002010                >>     <<04149>>23380000
                                                               <<04149>>23382000
BADDUMP:=FALSE;   <<ASSUME THE DUMP IS GOOD>>                  <<04149>>23384000
                                                               <<04149>>23386000
<<SET UP THE ARRAYS TO TEST FOR PATTERN 1   >>                 <<04149>>23388000
<<DON'T INCLUDE THE "DON'T CARE" LOCATIONS  >>                 <<04149>>23390000
MEMORY(0):=CORE(%175000D); SOFTDUMPPAT(0):=%2005;              <<04149>>23392000
MEMORY(1):=CORE(%175001D); SOFTDUMPPAT(1):=  %21;              <<04149>>23394000
MEMORY(2):=CORE(%175002D); SOFTDUMPPAT(2):=   %0;              <<04149>>23396000
MEMORY(3):=CORE(%175003D); SOFTDUMPPAT(3):=%2000;              <<04149>>23398000
MEMORY(4):=CORE(%175005D); SOFTDUMPPAT(4):=%1000;              <<04149>>23400000
MEMORY(5):=CORE(%175006D); SOFTDUMPPAT(5):=   %0;              <<04149>>23402000
MEMORY(6):=CORE(%175007D); SOFTDUMPPAT(6):=%2016;              <<04149>>23404000
                                                               <<04149>>23406000
IF MEMORY' = SOFTDUMPPAT',(14) THEN                            <<04149>>23408000
  BADDUMP:=TRUE                                                <<04149>>23410000
ELSE BEGIN                                                     <<04149>>23412000
  <<SET UP ARRAYS TO TEST FOR PATTERN 2       >>               <<04149>>23414000
  <<DON'T INCLUDE THE "DON'T CARE" LOCATIONS  >>               <<04149>>23416000
  MEMORY(0):=CORE(%175000D); SOFTDUMPPAT(0):=%2010;            <<04149>>23418000
  MEMORY(1):=CORE(%175002D); SOFTDUMPPAT(1):=   %0;            <<04149>>23420000
  MEMORY(2):=CORE(%175003D); SOFTDUMPPAT(2):=   %0;            <<04149>>23422000
  MEMORY(3):=CORE(%175005D); SOFTDUMPPAT(3):=%1000;            <<04149>>23424000
  MEMORY(4):=CORE(%175006D); SOFTDUMPPAT(4):=   %0;            <<04149>>23426000
  MEMORY(5):=CORE(%175007D); SOFTDUMPPAT(5):=%2010;            <<04149>>23428000
                                                               <<04149>>23430000
  IF MEMORY' = SOFTDUMPPAT',(12) THEN                          <<04149>>23432000
    BADDUMP:=TRUE; END;                                        <<04149>>23434000
                                                               <<04149>>23436000
IF BADDUMP THEN BEGIN                                          <<04149>>23438000
  BLANKBUF;                                                    <<04149>>23440000
  PRINTIT;                                                     <<04149>>23442000
  MOVE BBUF:="THE DUMP TO BE PROCESSED WAS FOUND TO";          <<04149>>23444000
  PRINTIT;                                                     <<04149>>23446000
  MOVE BBUF:="CONTAIN AN IMAGE OF THE PROGRAM USED";           <<04149>>23448000
  PRINTIT;                                                     <<04149>>23450000
  MOVE BBUF:="TO ACTUALLY TAKE A DUMP, AND NOT THE";           <<04149>>23452000
  PRINTIT;                                                     <<04149>>23454000
  MOVE BBUF:="CONTENTS OF MEMORY AT THE TIME THE";             <<04149>>23456000
  PRINTIT;                                                     <<04149>>23458000
  MOVE BBUF:="SYSTEM WAS STOPPED.";                            <<04149>>23460000
  PRINTIT;                                                     <<04149>>23462000
  MOVE BBUF:="THIS SITUATION TYPICALLY OCCURS IF A";           <<04149>>23464000
  PRINTIT;                                                     <<04149>>23466000
  MOVE BBUF:="PROBLEM WAS ENCOUNTERED IN TAKING THE";          <<04149>>23468000
  PRINTIT;                                                     <<04149>>23470000
  MOVE BBUF:="DUMP ORIGINALLY, AND A SECOND";                  <<04149>>23472000
  PRINTIT;                                                     <<04149>>23474000
  MOVE BBUF:="ATTEMPT IS MADE.";                               <<04149>>23476000
  PRINTIT;                                                     <<04149>>23478000
                                                               <<04149>>23480000
  TERMINATE; END;                                              <<04149>>23482000
                                                               <<*1409>>23482020
<< CHECK THE SYSTEM VERSION.  THIS PROGRAM (DPAN4) WILL NOT >> <<*1409>>23482040
<< CORRECTLY FORMAT MPE III DUMPS.  THE BANK MARKER IS      >> <<*1409>>23482060
<< TO DETERMINE WHICH SYSTEM WAS DUMPED.  IF THE WRONG DUMP >> <<*1409>>23482080
<< IS TO BE PROCESSED, THEN IF DPAN4 IS BEING RUN FROM AN   >> <<*1409>>23482100
<< INTERACTIVE SESSION, A WARNING IS ISSUED AND THE PROGRAM >> <<*1409>>23482120
<< ATTEMPTS TO CONTINUE.  FOR NON-INTERACTIVE EXECUTIONS,   >> <<*1409>>23482140
<< THE PROGRAM WILL TERMINATE.                              >> <<*1409>>23482160
   IF CORE(%200001D)<=0 AND CORE(3D)<>0 AND PARM<>30 THEN      <<*1409>>23482180
   BEGIN                                                       <<*1409>>23482200
                                                               <<*1409>>23482220
      MOVE BBUF := "*** DUMP TO BE PROCESSED IS NOT AN ";      <<*1409>>23482240
      MOVE BBUF(35) := "MPE V/E SYSTEM!!";                     <<*1409>>23482260
      IF PARM = 10 THEN   << INTERACTIVE, WARN AND ATTEMPT  >> <<*1409>>23482280
      BEGIN               << TO CONTINUE.                   >> <<*1409>>23482300
                                                               <<*1409>>23482320
         PRINTIT;                                              <<*1409>>23482340
         MOVE BBUF :=                                          <<*1409>>23482360
            "DPAN2 SHOULD BE USED TO PROCESS MPE III SYSTEMS"; <<*1409>>23482380
         PRINTIT;                                              <<*1409>>23482400
         MOVE BBUF :=                                          <<*1409>>23482420
            "(MPE VERSION B.01.02 OR OLDER).  YOU MAY ";       <<*1409>>23482440
         PRINTIT;                                              <<*1409>>23482460
         MOVE BBUF :=                                          <<*1409>>23482480
            "CONTINUE EXECUTION TO FORMAT THOSE DUMP PARTS";   <<*1409>>23482500
         PRINTIT;                                              <<*1409>>23482520
         MOVE BBUF :=                                          <<*1409>>23482540
            "COMMON TO MPE IV AND EARLIER EXECUTIONS. PROCEED";<<*1409>>23482560
         PRINTIT;                                              <<*1409>>23482580
         MOVE BBUF :=                                          <<*1409>>23482600
            "AT YOUR OWN RISK.";                               <<*1409>>23482620
         PRINTIT;                                              <<*1409>>23482640
                                                               <<*1409>>23482660
      END                                                      <<*1409>>23482680
      ELSE                                                     <<*1409>>23482700
      BEGIN                << NOT INTERACTIVE -> ABORT.     >> <<*1409>>23482720
                                                               <<*1409>>23482740
         PRINTLINE;                                            <<*1409>>23482760
         MOVE BBUF :=                                          <<*1409>>23482780
           "USE DPAN2 TO PROCESS MPE III (MPE VERSION B.01.02";<<*1409>>23482800
         PRINTLINE;                                            <<*1409>>23482820
         MOVE BBUF :=                                          <<*1409>>23482840
            "OR OLDER) DUMPS. THIS DUMP PROCESSING IS ABORTED";<<*1409>>23482860
         PRINTLINE;                                            <<*1409>>23482880
         TERMINATE                                             <<*1409>>23482900
                                                               <<*1409>>23482920
      END;                                                     <<*1409>>23482940
                                                               <<*1409>>23482960
   END;                                                        <<*1409>>23482980
                                                               <<01666>>23484000
<<***********************************************************>><<03084>>23486000
  IF PRTNPRT THEN TERMINATE; <<HAVE COMPLETED APPENDING FILES>><<03084>>23488000
<<***********************************************************>><<03084>>23490000
IF PARM=30 THEN BEGIN                                          <<b8909>>23492000
   MAKE'BINARY'FILE;                                           <<b8909>>23494000
   TERMINATE;                                                  <<b8909>>23496000
   END;                                                        <<b8909>>23498000
                                                               <<03076>>23500000
  VERIFYTBL;                                                   <<03076>>23502000
  FIXPCBSTACK;                                                 <<03076>>23504000
                                                               <<03076>>23506000
                                                               <<03076>>23508000
  IF PARM=0 THEN MINI'DUMP:=FALSE;                             <<03076>>23510000
                                                               <<03076>>23512000
  IF PARM=20 THEN MINI'DUMP:=TRUE;                             <<03076>>23514000
                                                               <<03078>>23516000
                                                               <<03670>>23518000
                                                               <<03076>>23520000
IF                                                             <<04544>>23522000
  BAD'DST AND BAD'DST(1) AND BAD'DST(2)                        <<03076>>23524000
    THEN BEGIN  << DUMP IS INVALID >>                          <<03076>>23526000
    MOVE DBUFFER :=                                            <<03076>>23528000
      " THE FORMATTED PORTION OF THE DUMP HAS BEEN SUSPENDED ";<<03076>>23530000
      MOVE DBUFFER(27) :=                                      <<03076>>23532000
      "AND ONLY BANK 0 WILL BE DUMPED. ";                      <<03076>>23534000
    PRINTIT;                                                   <<03670>>23536000
    INDX:=-1;                                                  <<03076>>23538000
    WHILE (INDX:=INDX+1) < NUM'RESPONSES DO                    <<03076>>23540000
      RESPONSES(INDX) := FALSE;                                <<03076>>23542000
    PRINT'BANK(0) := PRINT'MEMORY := TRUE;                     <<03076>>23544000
    END                                                        <<03670>>23546000
                                                               <<03076>>23548000
  ELSE                                                         <<03670>>23550000
    BEGIN                                                      <<04544>>23552000
    CATEGORIZE'DST;                      <<ONLY IF VALID DUMP>><<03670>>23554000
    IF PARM=0 OR PARM=20 THEN <<SET FLAGS FOR MEMDUMP>>        <<04544>>23556000
      BEGIN                                                    <<04544>>23558000
      INDX:=-1;                                                <<04544>>23560000
      WHILE (INDX:=INDX+1) <= MAXBANK DO                       <<04544>>23562000
        PRINT'BANK(INDX) := TRUE;                              <<04544>>23564000
      CODE'SEGMENTS := FALSE;                                  <<04544>>23566000
      FREE'AREAS := FALSE;                                     <<04544>>23568000
      CACHED'REGIONS := FALSE;                                 <<sknew>>23570000
      END;                                                     <<04544>>23572000
    IF PARM=10 THEN INTERACTIVE'DIAGLOG;                       <<04544>>23574000
    END;                                                       <<04544>>23576000
<<CALL TABLE FORMAT ROUTINES SELECTIVELY USING FLAGS>>         <<03076>>23578000
  IF PRINT'REGISTERS THEN                                      <<03076>>23580000
    BEGIN                                                      <<03076>>23582000
    PRINTREGS;                                                 <<03076>>23584000
    PFXMEM;                                                    <<03076>>23586000
    END;                                                       <<03076>>23588000
  IF PRINT'CST THEN                                            <<03076>>23590000
    BEGIN                                                      <<03076>>23592000
    PRINTCST;                                                  <<03076>>23594000
    PRINTXCST;                                                 <<03076>>23596000
    END;                                                       <<03076>>23598000
   IF PRINT'DST THEN                                           <<03556>>23600000
      BEGIN                                                    <<03556>>23602000
         PRINTDST;                                             <<03556>>23604000
         PRINT'DFS'DATA'SEG'LIST;                              <<03556>>23606000
      END;                                                     <<03556>>23608000
  IF PRINT'PCB THEN PRINTPCB;                                  <<03076>>23610000
  IF PRINT'STACKS THEN PRINTSTACKS;                            <<03076>>23612000
  IF PRINT'SIR THEN PRINTSIR;                                  <<03076>>23614000
  IF PRINT'MON THEN PRINTMON;                                  <<03076>>23616000
  IF PRINT'CACHE THEN PRINTCACHE;                              << MCW >>23618000
  IF PRINT'SLL THEN PRINTSLL;                                  <<03076>>23620000
  IF PRINT'VDSL THEN PRINTVDSL;                                <<03076>>23622000
  IF PRINT'DRT THEN PRINTDRT;                                  <<03076>>23624000
  IF PRINT'ILT THEN PRINTILT;                                  <<03076>>23626000
  IF PRINT'LPDT THEN PRINTLPDT;                                <<03076>>23628000
  IF PRINT'DIT THEN PRINTDIT;                                  <<03076>>23630000
  IF PRINT'DRQT THEN PRINTDRQT;                                <<03076>>23632000
  IF PRINT'IOQ THEN PRINTIOQ;                                  <<03076>>23634000
  IF PRINT'SBUF THEN PRINTSBUF;                                <<03076>>23636000
  IF PRINT'TBUF THEN PRINTTBUF;                                <<R8330>>23638000
  IF PRINT'TRL THEN PRINTTRL;                                  <<03076>>23640000
  IF PRINT'ICS THEN PRINTICS;                                  <<03080>>23642000
  IF PRINT'MEMORY THEN PRINTMEMORY;                            <<03076>>23644000
  IF PRINT'INDEX THEN PRINTINDEX;                              <<03076>>23646000
  IF NOT DUPLICATIVE THEN PRINT'LOADMAP;                       <<*1901>>23647000
                                                               <<03076>>23648000
END;   <<PROCESSDUMP>>                                         <<03076>>23650000
