         << LINES .001/.009 ARE RESERVED FOR SYSTEMS INTEGRATION >>     00000001
<<@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@>><<D9126>>00162500
<<                                                           >><<D9126>>00163500
INTEGER VERSION := [16/11];      << MAINLINE VERSION NUMBER. >><<L2108>>00165000
<<                                                           >><<D9126>>00166500
<<@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@>><<D9126>>00167500
   TEMP'CPVA         = %1400,  << THRU %1407 TEMP >>           <<D9938>>00265100
                               << CHAN PROG VAR AREA >>        <<D9938>>00265200
   DBI               = 1,                                      <<D9938>>00265500
   PI                = 2,                                      <<D9938>>00266000
   CHANSTAT          = 3,                                      <<D9938>>00266500
   CHANPROG          = 12,                                     <<D9938>>00267000
   ASMB              = ASSEMBLE#,                              <<D9938>>00295000
   ERRCODE           = (0:3)#,                                 <<D9938>>00296000
   ABS               = ABSOLUTE#,                              <<D9938>>00297000
INTEGER                                                        <<D9938>>00301000
   X = X;                                                      <<D9938>>00302000
LOGICAL                                                        <<D9938>>00303000
   LX = X;                                                     <<D9938>>00304000
POINTER                                                        <<D9260>>00316000
   GLOBALBASE = 6;                                             <<D9260>>00317000
                                                               <<D9260>>00318000
DEFINE                                                         <<D9260>>00319000
   GTRAPLABEL = GLOBALBASE(2)#;                                <<D9260>>00319500
   STYPE'A9140      =  0,  <<SUBTYPE FOR LINUS CARTRIDGE TAPE>><<D9126>>00580000
   STYPE'A9144      =  3,<<SUBTYPE FOR BUFFALO CARTRIDGE TAPE>><<D9126>>00582000
   STYPE'AMERLIN    =  6, <<SUBTYPE FOR MERLIN CARTRIDGE TAPE>><<01347>>00583000
   STYPE7970        =  0,                                      <<D9126>>00587000
   STYPE7974        =  3,                                      <<D1272>>00600000
   STYPEHERO        =  4;                                      <<D1272>>00601000
   BACKUP            = 1,                                      <<L1027>>00737000
   RECORDCOUNT:=0,COUNT;                                       <<D9188>>00805000
   MAXCOMMANDNUM      = 12,                                    <<D9938>>00875000
   COMMANDTYPE,DDUMPDRT,DDUMPUNIT;                             <<D9938>>00945000
   44, 4, "DUMP", <<LENGTH 174>>                               <<D9938>>01205000
       ">DUMP",                                                <<D9938>>01210000
       " [DSEG=SEG]",<<[;DISC=ITEM...[,ITEM]]",>>"#",          <<D9938>>01215000
       " WHERE:#",                                             <<D9938>>01220000
       "  SEG  = ALL#",                                        <<D9938>>01225000
   70, 8, "DUMPFILE",  <<CONTINUATION OF DUMP COMMAND>>        <<D9938>>01250000
       ", AND VIRTUAL MEMORY",<<, AND/OR SYSTEM DISC AREAS#",>><<D9938>>01270000
   50,  5, "IOMAP",                                            <<D9938>>01405001
           ">IOMAP#",                                          <<D9938>>01405002
           " DISPLAYS SYSTEM I/O CONFIGURATION##",             <<D9938>>01405003
  119, 6, "PROMPT",                                            <<D9188>>01405010
          ">PROMPT <STRING>#",                                 <<D9188>>01405020
          " PRINTS STRING ON CONSOLE AND THEN WAITS FOR#",     <<D9188>>01405030
          " OPERATOR TO PRESS RETURN KEY BEFORE CONTINUING##", <<D9188>>01405040
!  6,4,"DISC",                                                 <<D9938>>01835000
!  8,6,"STACKS",                                               <<D9938>>01860000
!  8,6,"SYSTEM",                                               <<D9938>>01865000
   PROMPT(0:17):="SOFTDUMP COMMAND>#";                         <<D9126>>02065000
BYTE ARRAY                                                     <<D9317>>02086000
   BAD'IDENTIFY(0:47):=                                        <<D9317>>02087000
     "DUMP DEVICE AT DRT#   , UNIT#  DOES NOT IDENTIFY";       <<D9317>>02088000
BYTE ARRAY                                                     <<L1027>>02088100
   BADMSG(0:47):=                                              <<L1027>>02088200
      "**WARNING** ONLY DUMPED REAL MEMORY DUE TO BAD #";      <<L1027>>02088300
BYTE ARRAY                                                     <<L1027>>02089000
   BADDSTHEADER(0:16):=                                        <<L1027>>02089100
      "DST HEADER ENTRY#";                                     <<L1027>>02089200
BYTE ARRAY                                                     <<L1027>>02089300
   BADDUMPMODE(0:9):="DUMP MODE#";                             <<L1027>>02089400
   BADSYSTEMDISC(0:11):="SYSTEM DISC#";                        <<L1027>>02095000
BYTE ARRAY                                                     <<D9938>>02145050
   INVALIDKEYWORD(0:25):="INVALID KEYWORD PARAMETER#";         <<D9938>>02145060
 TRYAGAIN3(0:40):="new media, then type ""DUMP"" in response#";<<D9188>>02315000
  TRYAGAIN4(0:35):="to the prompt ""SOFTDUMP COMMAND>"".#";    <<D9188>>02325000
BYTE ARRAY                                                     <<D9188>>02327000
  HALTMESSAGE1(0:45):=                                         <<D9188>>02328000
    "SOFTDUMP ""HALT"" COMMAND ABOUT TO BE EXECUTED.#";        <<D9188>>02329000
BYTE ARRAY                                                     <<D9188>>02330000
  HALTMESSAGE2(0:59):=                                         <<D9188>>02331000
    "MOUNT DUMP MEDIA, PLACE DRIVE ON-LINE,",                  <<D9188>>02332000
    " AND THEN TYPE ""RUN"".#";                                <<D9188>>02333000
BYTE ARRAY                                                     <<D9188>>02333200
  CONTINUEMESSAGE(0:55):=                                      <<D9188>>02333500
    "PRESS THE RETURN KEY TO CONTINUE EXECUTION OF SOFTDUMP.#";<<D9188>>02333800
BYTE ARRAY                                                     <<D9283>>02333850
  NON'SERIAL'MSG1(0:29) :=                                     <<D9283>>02333900
    "DUMP MEDIA IS NOT SERIALIZED.#";                          <<D9283>>02333950
BYTE ARRAY                                                     <<D9283>>02334000
  NON'SERIAL'MSG2(0:45) :=                                     <<D9283>>02334050
    "Please mount serialized media and then type ""#";         <<D9283>>02334100
BYTE ARRAY                                                     <<D9283>>02334150
  NON'SERIAL'MSG3(0:4) :=                                      <<D9283>>02334200
    "DUMP#";                                                   <<D9283>>02334250
BYTE ARRAY                                                     <<D9283>>02334300
  NON'SERIAL'MSG4(0:2) :=                                      <<D9283>>02334350
    """#";                                                     <<D9283>>02334400
BYTE ARRAY                                                     <<D9283>>02334450
  NON'SERIAL'MSG5(0:12) :=                                     <<D9283>>02334500
    "in response #";                                           <<D9283>>02334550
BYTE ARRAY                                                     <<D9938>>02334600
  VM'DUMP'BEGIN(0:31) :=                                       <<D9938>>02334650
    "DUMP OF VIRTUAL MEMORY STARTED.#";                        <<D9938>>02334700
BYTE ARRAY                                                     <<D9938>>02334750
  VM'DUMP'END(0:32) :=                                         <<D9938>>02334800
    "DUMP OF VIRTUAL MEMORY FINISHED.#";                       <<D9938>>02334850
BYTE ARRAY                                                     <<D9938>>02334900
  REAL'DUMP'BEGIN(0:28) :=                                     <<D9938>>02334950
    "DUMP OF REAL MEMORY STARTED.#";                           <<D9938>>02334960
BYTE ARRAY                                                     <<D9938>>02334970
  REAL'DUMP'END(0:29) :=                                       <<D9938>>02334980
    "DUMP OF REAL MEMORY FINISHED.#";                          <<D9938>>02334990
BYTE ARRAY                                                     <<L1186>>02335000
  DUMPING'FILE(0:15):="DUMPING FILE:  #";                      <<L1186>>02335050
BYTE ARRAY                                                     <<L1186>>02335100
  DUMPING'LOADMAP(0:7):="LOADMAP#";                            <<L1186>>02335150
BYTE ARRAY                                                     <<L1186>>02335200
  DUMPING'MPECHECK(0:8):="MPECHECK#";                          <<L1186>>02335250
BYTE ARRAY                                                     <<L1186>>02335300
  DUMPING'CONFDATA(0:8):="CONFDATA#";                          <<L1186>>02335350
BYTE ARRAY                                                     <<L1186>>02335400
  DUMPING'HPPMAP(0:6):="HPPMAP#";                              <<L1186>>02335450
BYTE ARRAY                                                     <<L1186>>02335500
  DUMPING'PUBSYS(0:8):=".PUB.SYS#";                            <<L1186>>02335550
BYTE ARRAY SERIES68'STRT1'BUG (0:23) :=                        <<D2706>>02335600
  "SOFTDUMP WILL HALT NOW.#";                                  <<D2706>>02335650
BYTE ARRAY SERIES68'STRT2'BUG (0:46) :=                        <<D2706>>02335660
  "TO BRING YOUR SYSTEM UP, PLEASE ENTER 'START'.#";           <<D2706>>02335700
$EDIT VOID=02375000                                            <<D9938>>02375000
   CTCONFIGLEN      = 136,                                     <<L1186>>02475000
   CTCOMMANDLENGTH  = CONFIG(23)       #,                      <<D9938>>02730000
   CTSDFINITVERSION = CONFIG(24)       #,                      <<D9938>>02730050
                                                               <<D9938>>02730100
   VMTAB'ENTRY      = 25 + 6*VMINDEX   #,                      <<D9938>>02730150
   CTVMLDEV         = CONFIG(VMTAB'ENTRY + 2).(0:8)#,          <<D9938>>02730200
   CTVMHODASTART    = CONFIG(VMTAB'ENTRY + 2).(8:8)#,          <<D9938>>02730250
   CTVMLODASTART    = CONFIG(VMTAB'ENTRY + 3)      #,          <<D9938>>02730300
   CTVMHODAEND      = CONFIG(VMTAB'ENTRY + 4).(8:8)#,          <<D9938>>02730350
   CTVMLODAEND      = CONFIG(VMTAB'ENTRY + 5)      #,          <<L1027>>02730400
                                                               <<D9938>>02730450
<< CONFIG (25) THROUGH CONFIG (120) ARE RESERVED FOR THE     >><<D9938>>02731000
<< VIRTUAL MEMORY ACCESS TABLE. THERE ARE 16 ENTRIES WITH    >><<D9938>>02731050
<< 6 WORDS PER ENTRY IN THE FOLLOWING FORMAT:                >><<D9938>>02731100
<<                                                           >><<D9938>>02731150
<<   WORD 0.(0:9)  - DRT                                     >><<D9938>>02731200
<<         .(9:4)  - SUBTYPE                                 >><<D9938>>02731250
<<         .(13:3) - UNIT                                    >><<D9938>>02731300
<<                                                           >><<D9938>>02731350
<<   WORD 1        - TYPE                                    >><<D9938>>02731400
<<                                                           >><<D9938>>02731450
<<   WORD 2.(0:8)  - LDEV #                                  >><<D9938>>02731500
<<         .(8:8)  - HODA OF START OF DISC VM AREA           >><<D9938>>02731550
<<                                                           >><<D9938>>02731600
<<   WORD 3        - LODA OF START OF DISC VM AREA           >><<D9938>>02731650
<<                                                           >><<D9938>>02731700
<<   WORD 4.(0:8)  - UNUSED                                  >><<D9938>>02731750
<<         .(8:8)  - HODA OF END OF DISC VM AREA             >><<D9938>>02731800
<<                                                           >><<D9938>>02731850
<<   WORD 5        - LODA OF END OF DISC VM AREA             >><<D9938>>02731900
   CTDSTADDR        = CONFIG(121)      #,                      <<L1186>>02735050
   CTNUMDST'S       = CONFIG(122)      #,                      <<L1186>>02735060
                                                               <<L1186>>02735061
   CTNUMSECTFILE1   = CONFIG(123)      #,                      <<L1186>>02735070
   CTDISCADDRFILE1  = CONFIGD(62)      #,                      <<L1186>>02735080
   CTDISCADDRFILE2  = CONFIGD(63)      #,                      <<L1186>>02735090
   CTNUMSECTFILE2   = CONFIG(128)      #,                      <<L1186>>02735100
   CTNUMSECTFILE3   = CONFIG(129)      #,                      <<L1186>>02735110
   CTDISCADDRFILE3  = CONFIGD(65)      #,                      <<L1186>>02735120
   CTDISCADDRFILE4  = CONFIGD(66)      #,                      <<L1186>>02735130
   CTNUMSECTFILE4   = CONFIG(134)      #;                      <<L1186>>02735140
                                                               <<L1186>>02735150
EQUATE                                                         <<D9938>>02736000
   MAXVMINDEX       = 15;                                      <<D9938>>02736100
INTEGER                                                        <<D9938>>02736200
   VMINDEX;                                                    <<D9938>>02736300
DEFINE                                                         <<D9938>>02736400
   VMLDEV           = %100000 LOR LOGICAL(VMINDEX)#;           <<D9938>>02736500
                                                               <<D9938>>03020110
INTEGER PROCEDURE GETDRT( DRT, WORD);                          <<D9938>>03020120
   VALUE DRT, WORD;                                            <<D9938>>03020130
   INTEGER DRT, WORD;                                          <<D9938>>03020140
   OPTION EXTERNAL;                                            <<D9938>>03020150
                                                               <<D9938>>03020160
PROCEDURE PUTDRT(DRT,OFFSET,NUM);                              <<D9938>>03020170
   VALUE DRT,OFFSET,NUM;                                       <<D9938>>03020180
   INTEGER DRT,OFFSET,NUM;                                     <<D9938>>03020190
   OPTION EXTERNAL;                                            <<D9938>>03020200
                                                               <<D9260>>03101000
PROCEDURE STARTIDLE;                                           <<D9260>>03102000
   OPTION EXTERNAL;                                            <<D9260>>03103000
$EDIT VOID=03145000                                            <<D9126>>03120000
                                                               <<D9260>>03121000
PROCEDURE TESTCONTROLYTRAP;                                    <<D9260>>03122000
   OPTION EXTERNAL;                                            <<D9260>>03123000
$EDIT VOID=03124250                                            <<D1367>>03123050
                                                               <<D1367>>03305050
PROCEDURE DNTOA (NUM,BASE,BA);                                 <<D1367>>03305100
VALUE NUM,BASE;                                                <<D1367>>03305150
DOUBLE NUM; INTEGER BASE; BYTE ARRAY BA;                       <<D1367>>03305200
FATAL;                                                         <<D1367>>03305250
                                                               <<D1367>>03305300
PROCEDURE NTOA (NUM,BASE,BA);                                  <<D1367>>03305350
VALUE NUM,BASE;                                                <<D1367>>03305400
INTEGER NUM,BASE;                                              <<D1367>>03305450
BYTE ARRAY BA;                                                 <<D1367>>03305500
FATAL;                                                         <<D1367>>03305550
                                                               <<D1367>>03305600
INTEGER PROCEDURE LDNTOA(NUM, BASE, BA);                       <<D1367>>03305650
VALUE NUM, BASE;                                               <<D1367>>03305700
DOUBLE NUM;                                                    <<D1367>>03305750
INTEGER BASE;                                                  <<D1367>>03305800
BYTE ARRAY BA;                                                 <<D1367>>03305850
FATAL;                                                         <<D1367>>03305900
                                                               <<D1367>>03305950
INTEGER PROCEDURE LNTOA( NUM, BASE, BA);                       <<D1367>>03306000
VALUE NUM, BASE;                                               <<D1367>>03306050
INTEGER NUM, BASE;                                             <<D1367>>03306100
BYTE ARRAY BA;                                                 <<D1367>>03306150
FATAL;                                                         <<D1367>>03306200
                                                               <<D1367>>03306250
                        3 = AUX DISC 1                                  03475000
                        4 = AUX DISC 2                                  03480000
                        IF LDEV.(0:1)=1 THEN LDEV IS THE ZERO           03485000
                                             RELATIVE INDEX TO          03486000
                                             THE VIRTUAL MEMORY         03487000
                                             ACCESS TABLE. >>           03488000
                                                               <<D9938>>03685010
INTEGER PROCEDURE RIOX( DRT, DATA);                            <<D9938>>03685020
   VALUE DRT, DATA;                                            <<D9938>>03685030
   INTEGER DRT, DATA;                                          <<D9938>>03685040
   FATAL;                                                      <<D9938>>03685050
                                                               <<D9938>>03685060
PROCEDURE WIOX( DRT, COMMAND, DATA);                           <<D9938>>03685070
   VALUE DRT, COMMAND, DATA;                                   <<D9938>>03685080
   INTEGER DRT, COMMAND, DATA;                                 <<D9938>>03685090
   FATAL;                                                      <<D9938>>03685100
                                                               <<D9938>>03685110
LOGICAL PROCEDURE DISCDRIVER (DRTUNIT,TYPE,STYPE,FUNCT,        <<D9938>>03685120
                              RECORD,BUF,WC);                  <<D9938>>03685130
   VALUE DRTUNIT,TYPE,STYPE,FUNCT,RECORD,BUF,WC;               <<D9938>>03685140
   INTEGER DRTUNIT, <<(0:9) = DRT AND (9:7) = UNIT NUMBER>>    <<D9938>>03685150
           TYPE,      <<DEVICE TYPE>>                          <<D9938>>03685160
           STYPE,     <<SUBTYPE>>                              <<D9938>>03685170
           WC;        <<WORD COUNT-MAX VALUE OF 16K WORDS>>    <<D9938>>03685180
   LOGICAL FUNCT;     <<0: READ >>                             <<D9938>>03685190
                      <<1: WRITE>>                             <<D9938>>03685200
   DOUBLE RECORD,     <<DISC LOGICAL SECTOR ADDRESS>>          <<D9938>>03685210
          BUF;        <<ABSOLUTE ADDRESS OF BUFFER>>           <<D9938>>03685220
   FATAL;                                                      <<D9938>>03685230
                                                               <<D9938>>03695010
INTEGER PROCEDURE THISCPU;                                     <<D9938>>03695020
   BEGIN                                                       <<D9938>>03695030
   << THIS PROCEDURE DETECTS THE CURRENT TYPE  >>              <<D9938>>03695040
   << OF CPU IN EXECUTION AND RETURNS A VALUE  >>              <<D9938>>03695050
   <<        0  IF SERIES I                    >>              <<D9938>>03695060
   <<        1  IF SERIES II                   >>              <<D9938>>03695070
   <<        2  IF SERIES 33                   >>              <<D9938>>03695080
   <<        3  IF SERIES III                  >>              <<D9938>>03695090
   <<        4  IF ICF/44                      >>              <<D9938>>03695100
   <<        5  IF ICF/55                      >>              <<D9938>>03695110
   <<        6  IF SERIES-37                >>                 <<D9938>>03695120
   <<        7  IF TIOGA                       >>              <<L2108>>03695121
   <<        8  IF MICROMOUSE                  >>              <<L2108>>03695122
                                                               <<D9938>>03695130
   INTEGER ARRAY PHYLOGCPU(1:8)=PB :=                          <<D9938>>03695140
     1,3,4,5,6,7,8,2;                                          <<L2108>>03695150
   INTEGER X=X, S0=S-0;                                        <<D9938>>03695160
   ASSEMBLE( DZRO,NOT); << INITIALIZE RETURN (SERIES I) >>     <<D9938>>03695170
                        << TEST FLAG - ILLEGAL BANK #   >>     <<D9938>>03695180
   PUSH( DB );          << 1 WORD ON SERIES I           >>     <<D9938>>03695190
                        << 2 WORD ON SERIES II/33       >>     <<D9938>>03695200
   DEL;                 << DON'T NEED DB ADDRESS        >>     <<D9938>>03695210
   IF TOS <> -1 THEN    << WAS BANK # PUSHED?           >>     <<D9938>>03695220
      BEGIN             << YES - NOT SERIES I           >>     <<D9938>>03695230
      ASSEMBLE( PCN );  << GET MICROCODE CPU #          >>     <<D9938>>03695240
      X := TOS;         << SETUP FOR RANGE CHECK        >>     <<D9938>>03695250
      DDEL;             << DELETE TEST FLAG             >>     <<D9938>>03695260
                        << DELETE RETURN VALUE          >>     <<D9938>>03695270
      TOS := PHYLOGCPU(X);                                     <<D9938>>03695280
      END;                                                     <<D9938>>03695290
   THISCPU := TOS;  << RETURN VALUE >>                         <<D9938>>03695300
   END;  << END THISCPU >>                                     <<D9938>>03695310
PROCEDURE INIT'( CHANNR);                                      <<D9938>>03695320
   VALUE CHANNR;                                               <<D9938>>03695330
   INTEGER CHANNR;                                             <<D9938>>03695340
BEGIN                                                          <<D9938>>03695350
   CONDITIONCODE := CCE;                                       <<D9938>>03695360
   TOS := %151515;                                             <<D9938>>03695520
   TOS := CHANNR;                                              <<D9938>>03695530
   ASSEMBLE( INIT);                                            <<D9938>>03695540
   IF TOS <> %151515 THEN  << MISSING GIC >>                   <<D9938>>03695550
      CONDITIONCODE := CCL;                                    <<D9938>>03695560
END;                                                           <<D9938>>03695580
PROCEDURE SIOP'( DEVNR, CHANADR);                              <<D9938>>03695590
   VALUE DEVNR, CHANADR;                                       <<D9938>>03695600
   INTEGER DEVNR, CHANADR;                                     <<D9938>>03695610
BEGIN                                                          <<D9938>>03695620
   CONDITIONCODE := CCE;                                       <<D9938>>03695630
   TOS := DEVNR;       << CHAN, DEV >>                         <<D9938>>03695830
   TOS := CHANADR;     << ADDRESS OF CHAN PGM >>               <<D9938>>03695840
   ASSEMBLE( SIOP );                                           <<D9938>>03695850
   PUSH( STATUS );                                             <<D9938>>03695860
   TOS := TOS.(6:2);  << CONDITION CODE >>                     <<D9938>>03695870
   CONDITIONCODE := TOS;                                       <<D9938>>03695880
END;                                                           <<D9938>>03695900
PROCEDURE MABS( DBANK, DADDRESS, SBANK, SADDRESS, COUNT);      <<D9938>>03695910
   VALUE DBANK, DADDRESS, SBANK, SADDRESS, COUNT;              <<D9938>>03695920
   INTEGER DBANK, DADDRESS, SBANK, SADDRESS, COUNT;            <<D9938>>03695930
BEGIN                                                          <<D9938>>03695940
   DOUBLE                                                      <<D9938>>03695950
      DESTINATION = DBANK,                                     <<D9938>>03695960
      SOURCE      = SBANK;                                     <<D9938>>03695970
                                                               <<D9938>>03695980
   TOS := DESTINATION;                                         <<D9938>>03695990
   TOS := SOURCE;                                              <<D9938>>03696000
   TOS := COUNT;                                               <<D9938>>03696010
   ASSEMBLE( MABS );                                           <<D9938>>03696020
END;                                                           <<D9938>>03696030
  PROCEDURE INITDRT( DRT );                                    <<D9938>>03696040
  <<=====================>>                                    <<D9938>>03696050
     VALUE DRT; INTEGER DRT;                                   <<D9938>>03696060
  BEGIN                                                        <<D9938>>03696070
     PUTDRT(DRT,0,0);                                          <<D9938>>03696080
     PUTDRT(DRT,PI,0);                                         <<D9938>>03696090
     PUTDRT(DRT,DBI,TEMP'CPVA);                                <<D9938>>03696100
     PUTDRT(DRT,CHANSTAT,0);                                   <<D9938>>03696110
  END;                                                         <<D9938>>03696120
         <<----------------------------->>                     <<D9938>>03696130
         <<   IDENTIFY HPIB DEVICE      >>                     <<D9938>>03696140
         <<----------------------------->>                     <<D9938>>03696150
INTEGER PROCEDURE IDENTIFY( DRT);                              <<D9938>>03696160
VALUE DRT;                                                     <<D9938>>03696170
INTEGER DRT;   << DRT # OF DEVICE TO IDENTIFY >>               <<D9938>>03696180
COMMENT                                                        <<D9938>>03696190
   THIS PROCEDURE RETURNS THE HPIB DEVICE IDENTIFICATION       <<D9938>>03696200
   CODE OF THE DEVICE ON THE GIVEN DRT.                        <<D9938>>03696210
   IF NO DEVICE EXISTS ON THE GIVEN DRT                        <<D9938>>03696230
   OR IF THE DEVICE IS NOT AN HPIB DEVICE THE PROCEDURE        <<D9938>>03696240
   RETURNS 0.  NOTE:  THE DRT MUST BE INITIALIZED BEFORE       <<D9938>>03696250
   CALLING THIS PROCEDURE ( I.E., CPVA POINTER SET).           <<D9938>>03696260
;                                                              <<D9938>>03696270
BEGIN                                                          <<D9938>>03696280
EQUATE IDENTCODE = 1,    << INDEX TO ID RETURN WORD >>         <<D9938>>03696300
       IDENTSIZE = 4;    << CHANNEL PROGRAM SIZE    >>         <<D9938>>03696310
ARRAY IDENTPGM(0:IDENTSIZE-1)=PB := << CHANNEL PROGRAM >>      <<D9938>>03696320
      %3000,      << DEVICE IDENTIFY >>                        <<D9938>>03696330
          0,      << ID RETURN BYTES >>                        <<D9938>>03696340
                                                               <<D9938>>03696350
       %600,      << INTERRUPT/HALT  >>                        <<D9938>>03696360
          0;                                                   <<D9938>>03696370
ARRAY BUF(0:IDENTSIZE-1);  << TO BUILD CHAN. PROG. >>          <<D9938>>03696380
INTEGER SBANK,             << BANK OF 'BUF' >>                 <<D9938>>03696390
        SADDRESS,          << ADDRESS OF 'BUF' >>              <<D9938>>03696400
        I,                 << INDEX VARIABLE >>                <<D9938>>03696405
        FIXLOC,            << FIXED LOCATION TO ZERO OUT >>    <<D9938>>03696407
        CPADR;             << ABS. ADDR. OF CHAN PROG >>       <<D9938>>03696410
                                                               <<D9938>>03696420
<< GET ADDRESS OF CHANNEL PROGRAM AREA >>                      <<D9938>>03696430
CPADR := ABS( CHANPROG);                                       <<D9938>>03696440
<< MOVE CHANNEL PROGRAM INTO LOCAL BUFFER >>                   <<D9938>>03696450
MOVE BUF := IDENTPGM,(IDENTSIZE);                              <<D9938>>03696460
<< COMPUTE ABSOLUTE ADDRESS OF 'BUF' >>                        <<D9938>>03696470
PUSH(DB);                                                      <<D9938>>03696480
SADDRESS := TOS + @BUF;                                        <<D9938>>03696490
SBANK := TOS;                                                  <<D9938>>03696500
                                                               <<D9938>>03696510
<< MOVE CHANNEL PROGRAM TO BANK 0 >>                           <<D9938>>03696620
MABS(0,CPADR,SBANK,SADDRESS,IDENTSIZE);                        <<D9938>>03696630
FIXLOC:=GETDRT(DRT,DBI);   <<CLEAR THE CPVA AREA>>             <<D9938>>03696640
FOR I := 1 UNTIL 7 DO                                          <<D9938>>03696641
   BEGIN                                                       <<D9938>>03696642
      ABS (FIXLOC) := 0;                                       <<D9938>>03696643
      FIXLOC := FIXLOC + 1;                                    <<D9938>>03696644
   END;                                                        <<D9938>>03696645
INIT'( DRT);        << INITIALIZE THE CHANNEL >>               <<D9938>>03696650
IF <> THEN GO NO'DEVICE'EXIT;                                  <<D9938>>03696660
SIOP'( DRT, CPADR); << START THE CHANNEL PROGRAM >>            <<D9938>>03696670
IF <> THEN GO NO'DEVICE'EXIT;                                  <<D9938>>03696680
                                                               <<D9938>>03696690
<< WAIT FOR CHANNEL PROGRAM COMPLETION >>                      <<D9938>>03696700
WHILE GETDRT(DRT,CHANSTAT).(0:2) <> 0 DO;                      <<D9938>>03696710
                                                               <<D9938>>03696720
IF ABS(GETDRT(DRT,DBI)).ERRCODE = 4 THEN                       <<D9938>>03696730
   << GOOD RETURN--A DEVICE RESPONDED >>                       <<D9938>>03696740
   IDENTIFY := ABS( CPADR+IDENTCODE)                           <<D9938>>03696750
ELSE                                                           <<D9938>>03696760
                                                               <<D9938>>03696770
NO'DEVICE'EXIT:  << NO RETURN--NO DEVICE ON DRT >>             <<D9938>>03696780
                                                               <<D9938>>03696790
   IDENTIFY := 0;                                              <<D9938>>03696800
END;    << IDENTIFY >>                                         <<D9938>>03696810
   IF GTRAPLABEL <> 0 THEN                                     <<D9260>>03741000
      BEGIN                                                    <<D9260>>03742000
         TESTCONTROLYTRAP;                                     <<D9260>>03742500
         STARTIDLE;              << RE-ARM CTRLY TRAP >>       <<D9260>>03743000
      END;                                                     <<D9260>>03744000
$EDIT VOID=03745430                                            <<01349>>03745010
          <<---------------------------------->>               <<D9938>>03825010
          <<     TEST A BIT IN A BIT MAP      >>               <<D9938>>03825020
          <<---------------------------------->>               <<D9938>>03825030
LOGICAL PROCEDURE TESTBIT(BIT'MAP,BIT'NUM);                    <<D9938>>03825040
VALUE BIT'NUM;                                                 <<D9938>>03825050
INTEGER ARRAY                                                  <<D9938>>03825060
   BIT'MAP;    << BIT MAP >>                                   <<D9938>>03825070
INTEGER                                                        <<D9938>>03825080
   BIT'NUM;    << BIT NUMBER >>                                <<D9938>>03825090
                                                               <<D9938>>03825100
COMMENT                                                        <<D9938>>03825110
RETURN TRUE IF THE GIVEN BIT'NUM IN BITMAP IS SET (=1).        <<D9938>>03825120
OTHERWISE, RETURN FALSE.                                       <<D9938>>03825130
;                                                              <<D9938>>03825140
BEGIN                                                          <<D9938>>03825150
INTEGER                                                        <<D9938>>03825160
   TEMP;                                                       <<D9938>>03825170
                                                               <<D9938>>03825180
TEMP := BIT'MAP(BIT'NUM.(0:12));   << GET APPROPRIATE WORD >>  <<D9938>>03825190
                                   <<     FROM BIT'MAP     >>  <<D9938>>03825200
IF TEMP&LSL(BIT'NUM.(12:4)) < 0 THEN     << IF BIT IS SET, >>  <<D9938>>03825210
   TESTBIT := TRUE                       <<    RETURN TRUE >>  <<D9938>>03825220
ELSE                                     << OTHERWISE,     >>  <<D9938>>03825230
   TESTBIT := FALSE;                     <<   RETURN FALSE >>  <<D9938>>03825240
END;   << TESTBIT >>                                           <<D9938>>03825250
           <<-------------------------------->>                <<D9938>>03825260
           <<     SET A BIT IN A BIT MAP     >>                <<D9938>>03825270
           <<-------------------------------->>                <<D9938>>03825280
PROCEDURE SETBIT(BIT'MAP,BIT'NUM);                             <<D9938>>03825290
VALUE BIT'NUM;                                                 <<D9938>>03825300
INTEGER ARRAY                                                  <<D9938>>03825310
   BIT'MAP;   << BIT MAP >>                                    <<D9938>>03825320
INTEGER                                                        <<D9938>>03825330
   BIT'NUM;   << BIT NUMBER >>                                 <<D9938>>03825340
                                                               <<D9938>>03825350
COMMENT                                                        <<D9938>>03825360
SET THE THE GIVEN BIT'NUM IN BIT'MAP                           <<D9938>>03825370
;                                                              <<D9938>>03825380
BEGIN                                                          <<D9938>>03825390
LOGICAL                                                        <<D9938>>03825400
   TEMP,I;                                                     <<D9938>>03825410
                                                               <<D9938>>03825420
TEMP := BIT'MAP(BIT'NUM.(0:12));   << GET APPROPRIATE WORD >>  <<D9938>>03825430
                                   <<    FROM THE BIT MAP  >>  <<D9938>>03825440
I := %100000&LSR(BIT'NUM.(12:4));         << SET THE       >>  <<D9938>>03825450
BIT'MAP(BIT'NUM.(0:12)) := TEMP LOR I;    <<   DESIRED BIT >>  <<D9938>>03825460
END;   << SETBIT >>                                            <<D9938>>03825470
           <<-------------------------------->>                <<D9938>>03825480
           <<  RETURN CURRENT PROCESS CLOCK  >>                <<D9938>>03825490
           <<-------------------------------->>                <<D9938>>03825500
LOGICAL PROCEDURE RCLK;                                        <<D9938>>03825510
COMMENT                                                        <<D9938>>03825520
THIS PROCEDURE DOES AN RCLK INTRUCTION AND RETURNS             <<D9938>>03825530
THE CURRENT CLOCK VALUE IT LEAVES ON THE STACK.                <<D9938>>03825540
WARNING:  THIS CLOCK DOES NOT INCREMENT WHEN YOU'RE            <<D9938>>03825550
RUNNING ON THE ICS.                                            <<D9938>>03825560
;                                                              <<D9938>>03825570
BEGIN                                                          <<D9938>>03825580
ASSEMBLE(RCLK);    << GET THE CLOCK >>                         <<D9938>>03825590
RCLK := TOS;       << RETURN IT     >>                         <<D9938>>03825600
END;   << RCLK >>                                              <<D9938>>03825610
      I:=@CHARADDR-@COMMANDBUF+16;                             <<D9938>>04740000
            MOVE COMMANDBUF:=COMMANDBUF WHILE AS;              <<D9188>>05062000
            IF COMMANDBUF <> "PROMPT" THEN                     <<D9188>>05063000
               PRINTSTRING(COMMANDBUF,-RECSIZE);               <<D9188>>05065000
      MOVE COMMANDBUF:=COMMANDBUF WHILE AS,1;                  <<D9283>>05200000
SUBROUTINE LEAVE(MESSAGE);                                     <<D9938>>07065000
BYTE ARRAY       MESSAGE;                                      <<D9938>>07070000
! SUBROUTINE DSRANGECHECK(FIRSTVALUE);                         <<D9938>>07110000
! VALUE FIRSTVALUE;                                            <<D9938>>07115000
! INTEGER FIRSTVALUE;                                          <<D9938>>07120000
!    BEGIN                                                     <<D9938>>07125000
!    IF NOT GETNEXTPARM(,TYPE,PV,PARMADDR)                     <<D9938>>07130000
!       OR TYPE <> NUMERICPARM THEN                            <<D9938>>07131000
!       LEAVE(EXPECTEDNUMBER);                                 <<D9938>>07135000
!    IF FIRSTVALUE > PV THEN LEAVE(INVALIDRANGE);              <<D9938>>07140000
!    END  <<DSRANGECHECK>>;                                    <<D9938>>07145000
!                                                              <<D9938>>07150000
! SUBROUTINE DISCRANGECHECK(FIRSTVALUE);                       <<D9938>>07155000
! VALUE FIRSTVALUE;                                            <<D9938>>07160000
! DOUBLE FIRSTVALUE;                                           <<D9938>>07165000
!    BEGIN                                                     <<D9938>>07170000
!    IF NOT GETNEXTPARM(,TYPE,,PARMADDR,,,DPV)                 <<D9938>>07175000
!       OR TYPE <> NUMERICPARM THEN                            <<D9938>>07176000
!       LEAVE(EXPECTEDNUMBER);                                 <<D9938>>07180000
!    IF FIRSTVALUE > DPV THEN LEAVE(INVALIDRANGE);             <<D9938>>07185000
!    END  <<DISCRANGECHECK>>;                                  <<D9938>>07190000
$EDIT VOID=07390000                                            <<D9938>>07196000
   IF GETNEXTPARM(DUMPDICT,TYPE,PV,PARMADDR) THEN              <<D9938>>07200000
      BEGIN  <<KEYWORD SCAN>>                                  <<D9938>>07210000
         IF TYPE <> KEYWORDPARM THEN LEAVE(EXPECTEDKEYWORD);   <<D9938>>07220000
         IF PV = VIRTUALMEMORY THEN                            <<D9938>>07230000
            BEGIN  <<VIRTUAL MEMORY DATA SEGMENTS>>            <<D9938>>07240000
               IF NOT GETNEXTPARM (VIRTDICT,TYPE,PV,           <<D9938>>07250000
                                   PARMADDR,DELIMNUM) THEN     <<D9938>>07260000
                  LEAVE(EXPECTEDPARM);                         <<D9938>>07270000
               IF TYPE <> DICTIONARYPARM THEN                  <<D9938>>07280000
                  LEAVE(INVALIDVALUE)                          <<D9938>>07290000
            END                                                <<D9938>>07300000
         ELSE                                                  <<D9938>>07310000
            LEAVE(INVALIDKEYWORD);                             <<D9938>>07320000
      END  <<KEYWORD SCAN>>;                                   <<D9938>>07330000
   IF GETNEXTPARM(,,,PARMADDR) THEN LEAVE(EXTRAPARM);          <<D9938>>07340000
   LEAVE(SUCCESSFUL);                                          <<D9938>>07350000
   END  <<DUMPSYNTAX>>;                                        <<D9938>>07360000
$PAGE "IOMAP"                                                  <<D9938>>07690010
                                                               <<D9938>>07690020
LOGICAL PROCEDURE FIND'DDUMP'DEV (RETURN'DRT,RETURN'UNIT);     <<D9938>>07690030
     << FIND'DDUMP'DEV = TRUE  => DRT & UNIT FOUND        >>   <<D9938>>07690040
     <<    " "         = FALSE => EXIT TO SDF INTERACTIVE >>   <<D9938>>07690050
LOGICAL                                                        <<D9938>>07690060
   RETURN'DRT,                                                 <<D9938>>07690070
   RETURN'UNIT;                                                <<D9938>>07690080
                                                               <<D9938>>07690090
BEGIN                                                          <<D9938>>07690100
   ENTRY IOMAP;                                                <<D9938>>07690110
   LOGICAL IOMAP':= FALSE;                                     <<D9938>>07690120
                                                               <<D9938>>07690130
   INTEGER ARRAY IDCODES(*) = PB :=                            <<D9938>>07690140
<<ID CODE                                                >>    <<D9938>>07690150
<<|        SPECIAL HANDLING CODE                         >>    <<L1186>>07690160
<<|        |  DDUMP DEVICE TYPE                          >>    <<L1186>>07690170
<<|        |  |                                          >>    <<L1186>>07690180
<<V        V  V                                          >>    <<L1186>>07690185
%(16)2,    1, 1, << 7906/7920/7925 Disc Controller       >>    <<D9938>>07690190
%(16)F,    0, 0, << Advanced Terminal Processor (ATP)    >>    <<D9938>>07690200
%(16)10,   0, 0, << ADCC --- FAKE ID CODE ---            >>    <<D9938>>07690210
%(16)80,   0, 1, << Flexible disc unit (Single sided)    >>    <<D9938>>07690220
%(16)81,   0, 1, << Flexible Disc Unit (Double-sided)    >>    <<D9938>>07690230
%(16)101,  0, 0, << 2893 Card Reader                     >>    <<D9938>>07690240
%(16)120,  0, 1, << HPHERO Mag Tape (Hero)               >>    <<D1272>>07690241
%(16)174,  0, 1, << 7974 Mag Tape (Antelope)             >>    <<D9938>>07690250
%(16)176,  0, 1, << 7976 Mag Tape Controller             >>    <<D9938>>07690260
%(16)178,  0, 1, << 7978 Mag Tape (Buckhorn)             >>    <<D9938>>07690270
%(16)183,  2, 1, << 7970E Mag Tape Controller            >>    <<D9938>>07690280
%(16)204,  0, 0, << 7911 Disc Drive                      >>    <<D1272>>07690290
%(16)205,  0, 0, << 7911 Disc with Cartridge Tape        >>    <<D1272>>07690300
%(16)208,  0, 0, << 7912 Disc Drive                      >>    <<D1272>>07690310
%(16)209,  0, 0, << 7912 Disc with Cartridge Tape        >>    <<D1272>>07690320
%(16)20A,  0, 0, << 7914 Disc Drive                      >>    <<D1272>>07690330
$EDIT VOID=07690340                                            <<D1272>>07690340
%(16)212,  0, 1, << 7933/35 Disc Drive                   >>    <<D9938>>07690350
%(16)214,  0, 0, << 7937 Disc Drive (Eagle)              >>    <<D1272>>07690353
%(16)215,  0, 0, << 7936 Disc Drive (Eaglet)             >>    <<D1272>>07690356
%(16)220,  0, 0, << 7945 Disc Drive                      >>    <<D1272>>07690360
%(16)22A,  0, 0, << 7957 Disc Drive (FALSTAFF II)        >>    <<L2388>>07690361
%(16)22B,  0, 0, << 7958 Disc Drive (FALSTAFF II)        >>    <<L2388>>07690362
%(16)240,  0, 1, << 9140 Cartridge Tape Drive (LINUS)    >>    <<D9938>>07690370
%(16)260,  0, 1, << 9144 Cartridge Tape Drive (BUFFALO)  >>    <<D9938>>07690380
%(16)270,  0, 1, << 35401 Cartridge Tape Drive (MERLIN)  >>    <<L1564>>07690381
%(16)2000, 0, 0, << 9871 Character printer               >>    <<D9938>>07690390
%(16)2001, 0, 0, << 2608 Dot Matrix Printer              >>    <<D9938>>07690400
%(16)2002, 0, 0, << 2631A Serial Printer                 >>    <<D9938>>07690410
%(16)2004, 0, 0, << 2680/2688 Page Printer               >>    <<D9938>>07690420
%(16)200A, 0, 0, << 2613/2617/2619A Line Printer         >>    <<D9938>>07690430
%(16)2101, 0, 0, << 2608S/2563/2566/2569 Dot Mat Printer>>     <<D9938>>07690440
%(16)4002, 0, 0, << 30020A Intelligent Network Processor >>    <<D9938>>07690450
%(16)4003, 0, 0, << 30020B Intelligent Network Processor >>    <<D9938>>07690460
%(16)6000, 0, 0, << 31262 GIC acting as a device         >>    <<D9938>>07690470
%(16)FF01, 0, 1, << 7905 Disc Drive  -  fake id          >>    <<D9938>>07690480
%(16)FF02, 0, 1, << 7906 Disc Drive  -  fake id          >>    <<D9938>>07690490
%(16)FF03, 0, 1, << 7920 Disc Drive  -  fake id          >>    <<D9938>>07690500
%(16)FF04, 0, 1, << 7925 Disc Drive  -  fake id          >>    <<D9938>>07690510
%(16)FFFF, 0, 0; << TERMINATOR >>                              <<D9938>>07690520
   INTEGER ARRAY CHANPROC(0:15) = PB :=                        <<D9938>>07690530
      << CHAN ID >>   << CHAN TYPE >>                          <<D9938>>07690540
           <<  0 >>         3,     << GIC   >>                 <<D9938>>07690550
           <<  1 >>         0,     << ADCC  >>                 <<D9938>>07690560
           <<  2 >>         3,     << PIC   >>                 <<D9938>>07690570
           <<  3 >>         3,     << VLSI PIC >>              <<D9938>>07690580
           <<  4 >>         2,     << TIC or DAPHNIS >>        <<D1272>>07690590
           <<5-14>>     10(5),     << UNKWN >>                 <<D9938>>07690600
           << %17>>         1;     << ATP   >>                 <<D9938>>07690610
   INTEGER                                                     <<D9938>>07690620
      CHANNR,                                                  <<D9938>>07690630
      NRIMB,                                                   <<D9938>>07690640
      IMB,                                                     <<D9938>>07690650
      CHAN,                                                    <<D9938>>07690660
      DRT,                                                     <<D9938>>07690670
      DEV,                                                     <<D9938>>07690680
      UNIT,                                                    <<D9938>>07690690
      TYPE,                                                    <<D9938>>07690700
      AIB,                                                     <<D9938>>07690710
      AIBMASK,                                                 <<D9938>>07690720
      DATA,                                                    <<D9938>>07690730
      BOARDS,                                                  <<D9938>>07690740
      ID,                                                      <<D9938>>07690750
      CHANID,                                                  <<D9938>>07690760
      I,                                                       <<D9938>>07690770
      J,                                                       <<D9938>>07690780
      K,                                                       <<D9938>>07690790
      X=X;                                                     <<D9938>>07690800
   INTEGER                                                     <<D9938>>07690810
      OLDIMB,                                                  <<D9938>>07690820
      OLDCHAN,                                                 <<D9938>>07690830
      OLDDEV,                                                  <<D9938>>07690840
      OLDUNIT;                                                 <<D9938>>07690850
   INTEGER ARRAY                                               <<D9938>>07690860
      BUF(0:127);                                              <<D9938>>07690870
   BYTE ARRAY                                                  <<D9938>>07690880
      BBUF(*) = BUF;                                           <<D9938>>07690890
   BYTE POINTER BP;                                            <<D9938>>07690900
   DOUBLE                                                      <<D9938>>07690910
      STATUS,                                                  <<D9938>>07690920
      MEMADR;                                                  <<D9938>>07690930
   INTEGER                                                     <<D9938>>07690940
      BANK   = MEMADR,                                         <<D9938>>07690950
      ADR    = MEMADR+1;                                       <<D9938>>07690960
   INTEGER                                                     <<D9938>>07690970
      STATUS1    = STATUS,                                     <<D9938>>07690980
      STATUS2    = STATUS+1;                                   <<D9938>>07690990
   DEFINE MULTI'IMB'SYS = (THISCPU = 5 OR THISCPU = 6          <<L2108>>07691000
                        OR THISCPU = 7 OR THISCPU = 8)#;       <<L2108>>07691001
   << DISC DRIVER COMMANDS >>                                  <<D9938>>07691010
   EQUATE                                                      <<D9938>>07691020
      RSTAT   = 5;                                             <<D9938>>07691050
   EQUATE                                                      <<D9938>>07691070
      HIGHESTNEXTID = 39;                                      <<D9938>>07691080
   INTEGER                                                     <<D9938>>07691090
      NEXTID := -1;                                            <<D9938>>07691100
   ARRAY                                                       <<D9938>>07691110
      DRT'UNIT'INFO(0:39);                                     <<D9938>>07691120
   BYTE ARRAY                                                  <<D9938>>07691130
      BLINE(0:79);                                             <<D9938>>07691140
   INTEGER                                                     <<D9938>>07691150
      REF'NO'OFFSET := 0;                                      <<D9938>>07691160
   << DEFINE OUTPUT BUFFER >>                                  <<D9938>>07691170
   DEFINE                                                      <<D9938>>07691180
      STRIMB        = BLINE(REF'NO'OFFSET+2)#,                 <<D9938>>07691190
      STRCHAN       = BLINE(REF'NO'OFFSET+7)#,                 <<D9938>>07691200
      STRDEV        = BLINE(REF'NO'OFFSET+11)#,                <<D9938>>07691210
      STRDRT        = BLINE(REF'NO'OFFSET+16)#,                <<D9938>>07691220
      STRUNIT       = BLINE(REF'NO'OFFSET+21)#,                <<D9938>>07691230
      STRDESCP      = BLINE(REF'NO'OFFSET+24)#;                <<D9938>>07691240
   << DEFINE I/O CMS >>                                        <<D9938>>07691250
   EQUATE                                                      <<D9938>>07691260
      REG1    =    %400,                                       <<D9938>>07691270
      REG9    =   %4400,                                       <<D9938>>07691280
      REGA    =   %5000,                                       <<D9938>>07691290
      REGE    =   %7000,                                       <<D9938>>07691300
      ROCL    = %120000;                                       <<D9938>>07691310
   << ID'S THAT REQUIRE SPECIAL HANDLEING >>                   <<D9938>>07691320
   EQUATE                                                      <<D9938>>07691330
      C13037    =        2,                                    <<D9938>>07691340
      C7970     = %(16)183,                                    <<D9938>>07691350
      CATP      =   %(16)F;                                    <<D9938>>07691360
   INTEGER ARRAY                                               <<D9938>>07691370
      IMBS(0:3);                                               <<D9938>>07691380
                                                               <<D9938>>07691390
SUBROUTINE SEARCH( ID, BUFF);                                  <<D9938>>07691400
   VALUE ID;                                                   <<D9938>>07691410
   INTEGER ID;                                                 <<D9938>>07691420
   BYTE ARRAY BUFF;                                            <<D9938>>07691430
BEGIN                                                          <<D9938>>07691440
                                                               <<D9938>>07691450
   << SEARCH ID LIST >>                                        <<D9938>>07691460
   J := 0;                                                     <<D9938>>07691470
   WHILE IDCODES(J) <> -1 AND IDCODES(J) <> ID DO J := J+3;    <<D9938>>07691480
                                                               <<D9938>>07691490
   IF IDCODES(J) = -1 THEN                                     <<D9938>>07691500
      BEGIN                                                    <<D9938>>07691510
      MOVE BUFF := "UNKNOWN DEVICE, ID=",2;                    <<D9938>>07691520
      @BP := TOS;                                              <<D9938>>07691530
      LNTOA( ID, 8, BP);                                       <<D9938>>07691540
      END                                                      <<D9938>>07691550
   ELSE                                                        <<D9938>>07691560
      CASE J/3 OF                                              <<D9938>>07691570
         BEGIN                                                 <<D9938>>07691580
         MOVE BUFF := "7905/06/20/25";                         <<D9938>>07691590
         MOVE BUFF := "Advanced Terminal Processor (ATP)";     <<D9938>>07691600
         MOVE BUFF := "ADCC Terminal Controller";              <<D9938>>07691610
         MOVE BUFF := "Flexible disc unit (Single sided)";     <<D9938>>07691620
         MOVE BUFF := "Flexible Disc Unit (Double-sided)";     <<D9938>>07691630
         MOVE BUFF := "2893 Card Reader";                      <<D9938>>07691640
         MOVE BUFF := "HPHERO Mag Tape";                       <<D1272>>07691641
         MOVE BUFF := "7974 Mag Tape";                         <<D9938>>07691650
         MOVE BUFF := "7976 Mag Tape";                         <<D9938>>07691660
         MOVE BUFF := "7978 Mag Tape";                         <<D9938>>07691670
         MOVE BUFF := "7970E Mag Tape";                        <<D9938>>07691680
         MOVE BUFF := "7911 Disc Drive";                       <<D9938>>07691690
         MOVE BUFF := "7911 Disc with Cartridge Tape";         <<D9938>>07691700
         MOVE BUFF := "7912 Disc Drive";                       <<D9938>>07691710
         MOVE BUFF := "7912 Disc with Cartridge Tape";         <<D9938>>07691720
         MOVE BUFF := "7914 Disc Drive";                       <<D9938>>07691730
$EDIT VOID=07691740                                            <<D1272>>07691740
         MOVE BUFF := "7933/35 Disc Drive";                    <<D9938>>07691750
         MOVE BUFF := "7937 Disc Drive";                       <<L1186>>07691753
         MOVE BUFF := "7936 Disc Drive";                       <<L1186>>07691756
         MOVE BUFF := "7945 Disc Drive";                       <<D9938>>07691760
         MOVE BUFF := "7957 Disc Drive";                       <<L2388>>07691761
         MOVE BUFF := "7958 Disc Drive";                       <<L2388>>07691762
         MOVE BUFF := "9140 Cartridge Tape Drive";             <<D9938>>07691770
         MOVE BUFF := "9144 Cartridge Tape Drive";             <<D9938>>07691780
         MOVE BUFF := "35401 Cartridge Tape Drive";            <<L1564>>07691781
         MOVE BUFF := "9871 Character printer";                <<D9938>>07691790
         MOVE BUFF := "2608 Dot Matrix Printer";               <<D9938>>07691800
         MOVE BUFF := "2631A Serial Printer";                  <<D9938>>07691810
         MOVE BUFF := "2680/2688 Page Printer";                <<D9938>>07691820
         MOVE BUFF := "2613/2617/2619A Line Printer";          <<D9938>>07691830
         MOVE BUFF := "2608S/2563/2566/2569 Dot Mat Printer";  <<D9938>>07691840
         MOVE BUFF := "30020A Intelligent Network Processor";  <<D9938>>07691850
         MOVE BUFF := "30020B Intelligent Network Processor";  <<D9938>>07691860
         MOVE BUFF := "31262 GIC acting as a device";          <<D9938>>07691870
         MOVE BUFF := "7905 Disc Drive";                       <<D9938>>07691880
         MOVE BUFF := "7906 Disc Drive";                       <<D9938>>07691890
         MOVE BUFF := "7920 Disc Drive";                       <<D9938>>07691900
         MOVE BUFF := "7925 Disc Drive";                       <<D9938>>07691910
         END;                                                  <<D9938>>07691920
END;                                                           <<D9938>>07691930
LOGICAL SUBROUTINE ADD'DEV'ID( DRT, UNIT);                     <<D9938>>07691940
   VALUE DRT, UNIT;                                            <<D9938>>07691950
   INTEGER DRT, UNIT;                                          <<D9938>>07691960
BEGIN                                                          <<D9938>>07691970
   ADD'DEV'ID := TRUE;                                         <<D9938>>07691980
   IF NEXTID < HIGHESTNEXTID THEN                              <<D9938>>07691990
      BEGIN                                                    <<D9938>>07692000
         DRT'UNIT'INFO( NEXTID:=NEXTID+1) :=                   <<D9938>>07692010
            DRT & LSL(7) + UNIT;                               <<D9938>>07692020
         LNTOA (NEXTID, 10, BLINE (0));                        <<D9938>>07692030
      END                                                      <<D9938>>07692040
   ELSE                                                        <<D9938>>07692050
      ADD'DEV'ID := FALSE;                                     <<D9938>>07692060
END;                                                           <<D9938>>07692070
INTEGER SUBROUTINE SEARCHTYPE( ID);                            <<D9938>>07692080
   VALUE ID;                                                   <<D9938>>07692090
   INTEGER ID;                                                 <<D9938>>07692100
BEGIN                                                          <<D9938>>07692110
   J := 0;                                                     <<D9938>>07692120
   WHILE IDCODES(J) <> -1 AND IDCODES(J) <> ID DO J := J+3;    <<D9938>>07692130
   SEARCHTYPE := IDCODES(J+1);                                 <<D9938>>07692140
END;                                                           <<D9938>>07692150
LOGICAL SUBROUTINE DDUMPTYPE( ID);                             <<D9938>>07692160
   VALUE ID;                                                   <<D9938>>07692170
   INTEGER ID;                                                 <<D9938>>07692180
BEGIN                                                          <<D9938>>07692190
   J := 0;                                                     <<D9938>>07692200
   WHILE IDCODES(J) <> -1 AND IDCODES(J) <> ID DO J := J+3;    <<D9938>>07692210
   DDUMPTYPE := IDCODES(J+2) = 1;                              <<D9938>>07692220
END;                                                           <<D9938>>07692230
INTEGER SUBROUTINE CHANTYPE( DRT, CHANID);                     <<D9938>>07692240
   VALUE DRT;                                                  <<D9938>>07692250
   INTEGER DRT, CHANID;                                        <<D9938>>07692260
BEGIN                                                          <<D9938>>07692270
   IF DRT = 8 THEN                                             <<D9938>>07692280
      DELAY( 200D)  << WAIT FOR I/O TO COMPLETE >>             <<D9938>>07692281
   ELSE                                                        <<D9938>>07692282
      BEGIN                                                    <<D9938>>07692283
        INIT'( DRT);                                           <<D9938>>07692290
        IF > THEN                                              <<D9938>>07692300
           BEGIN                                               <<D9938>>07692301
              CHANTYPE := 4;                                   <<D9938>>07692310
              RETURN;                                          <<D9938>>07692311
           END;                                                <<D9938>>07692312
      END;                                                     <<D9938>>07692313
   CHANID   := RIOX( DRT, REGE); << READ REGISTER E >>         <<D9938>>07692340
   CHANTYPE := CHANPROC( CHANID.(12:4) );                      <<D9938>>07692350
END;                                                           <<D9938>>07692370
SUBROUTINE BUILD'STR( DRT, ID);                                <<D9938>>07692380
   VALUE DRT, ID;                                              <<D9938>>07692390
   INTEGER DRT, ID;                                            <<D9938>>07692400
BEGIN                                                          <<D9938>>07692410
                                                               <<D9938>>07692420
   IMB  := DRT.(7:2);                                          <<D9938>>07692430
   CHAN := DRT.(9:4);                                          <<D9938>>07692440
   DEV  := DRT.(13:3);                                         <<D9938>>07692450
                                                               <<D9938>>07692460
   MOVE BLINE (0) := " ";                                      <<D9938>>07692470
   MOVE BLINE (1) := BLINE, (78);                              <<D9938>>07692480
   MOVE BLINE (79) := %15;                                     <<D9938>>07692490
                                                               <<D9938>>07692500
   IF OLDIMB <> IMB THEN                                       <<D9938>>07692510
      BEGIN                                                    <<D9938>>07692520
      NTOA( IMB, 10, STRIMB);                                  <<D9938>>07692530
      OLDIMB := IMB;                                           <<D9938>>07692540
      OLDCHAN := -1;                                           <<D9938>>07692550
      OLDDEV := -1;                                            <<D9938>>07692560
      END;                                                     <<D9938>>07692570
   IF OLDCHAN <> CHAN THEN                                     <<D9938>>07692580
      BEGIN                                                    <<D9938>>07692590
      NTOA( CHAN, 10, STRCHAN);                                <<D9938>>07692600
      OLDCHAN := CHAN;                                         <<D9938>>07692610
      OLDDEV := -1;                                            <<D9938>>07692620
      END;                                                     <<D9938>>07692630
   IF OLDDEV <> DEV THEN                                       <<D9938>>07692640
      BEGIN                                                    <<D9938>>07692650
      NTOA( DEV, 10, STRDEV);                                  <<D9938>>07692660
      OLDDEV := DEV;                                           <<D9938>>07692670
      END;                                                     <<D9938>>07692680
   NTOA( DRT, 10, STRDRT);                                     <<D9938>>07692690
   NTOA( 0, 10, STRUNIT);                                      <<D9938>>07692700
   SEARCH( ID, STRDESCP);                                      <<D9938>>07692710
END;                                                           <<D9938>>07692720
SUBROUTINE PRINT'DEVID( DRT, ID);                              <<D9938>>07692730
   VALUE DRT, ID;                                              <<D9938>>07692740
   INTEGER DRT, ID;                                            <<D9938>>07692750
BEGIN                                                          <<D9938>>07692760
   BUILD'STR( DRT, ID);                                        <<D9938>>07692770
   IF NOT IOMAP' THEN                                          <<D9938>>07692780
      BEGIN                                                    <<D9938>>07692790
         IF DDUMPTYPE (ID) THEN                                <<D9938>>07692800
            IF ADD'DEV'ID (DRT, 0) THEN                        <<D9938>>07692810
               PRINTSTRING (BLINE);                            <<D9938>>07692820
      END                                                      <<D9938>>07692830
   ELSE                                                        <<D9938>>07692840
      PRINTSTRING (BLINE);                                     <<D9938>>07692850
END;                                                           <<D9938>>07692860
SUBROUTINE PRINT'ATP( DRT, CHANID);                            <<D9938>>07692870
   VALUE DRT, CHANID;                                          <<D9938>>07692880
   INTEGER DRT, CHANID;                                        <<D9938>>07692890
BEGIN                                                          <<D9938>>07692900
   AIBMASK := 0;                                               <<D9938>>07692910
   << DETERMINE WHICH AIB BOARDS EXIST >>                      <<D9938>>07692920
                                                               <<D9938>>07692930
   FOR *AIB := 0 UNTIL 7 DO                                    <<D9938>>07692940
      BEGIN                                                    <<D9938>>07692950
      TOS := %377;                                             <<D9938>>07692960
      X := AIB;                                                <<D9938>>07692970
      ASSEMBLE( TRBC 8,X );                                    <<D9938>>07692980
      DATA := TOS;                                             <<D9938>>07692990
      INIT'(DRT);                                              <<D9938>>07693000
      WIOX( DRT, REGA, %(16)BF89);                             <<D9938>>07693010
      WIOX( DRT, REG9, DATA);                                  <<D9938>>07693020
      DATA := RIOX( DRT, REGA);                                <<D9938>>07693030
      IF DATA.(9:1) = 0 THEN                                   <<D9938>>07693040
         BEGIN                                                 <<D9938>>07693050
         SETBIT( AIBMASK, AIB);                                <<D9938>>07693060
         END;                                                  <<D9938>>07693070
      END;                                                     <<D9938>>07693080
   INITADCC (-1);                                              <<D9938>>07693090
   MOVE BLINE := %15;                                          <<D9938>>07693093
   PRINTSTRING (BLINE,-1,%320);                                <<D9938>>07693096
                                                               <<D9938>>07693100
   << PRINT OUT CONFIGURABLE UNITS >>                          <<D9938>>07693110
                                                               <<D9938>>07693120
   BOARDS := 0;                                                <<D9938>>07693130
   FOR *AIB := 0 UNTIL 8 DO                                    <<D9938>>07693140
      BEGIN                                                    <<D9938>>07693150
      IF TESTBIT( AIBMASK, AIB) THEN                           <<D9938>>07693160
         BOARDS := BOARDS+1                                    <<D9938>>07693170
      ELSE                                                     <<D9938>>07693180
         BEGIN                                                 <<D9938>>07693190
         IF BOARDS <> 0 THEN                                   <<D9938>>07693200
            BEGIN                                              <<D9938>>07693210
            BUILD'STR( DRT, CATP);                             <<D9938>>07693220
            TOS := @BLINE(18);                                 <<D9938>>07693230
            TOS := TOS+LNTOA( (AIB-BOARDS)*12, 10, BPS0);      <<D9938>>07693240
            MOVE * := "-",2;                                   <<D9938>>07693250
            TOS := TOS+LNTOA( AIB*12-1, 10, BPS0);             <<D9938>>07693260
            DEL;                                               <<D9938>>07693270
            BOARDS := 0;                                       <<D9938>>07693280
            PRINTSTRING (BLINE);                               <<D9938>>07693290
            END;                                               <<D9938>>07693300
         END;                                                  <<D9938>>07693310
      END;                                                     <<D9938>>07693320
END;                                                           <<D9938>>07693330
SUBROUTINE PRINT'TIC( DRT, CHANID);                            <<D9938>>07693340
   VALUE DRT, CHANID;                                          <<D9938>>07693350
   INTEGER DRT, CHANID;                                        <<D9938>>07693360
<<--------------------------------------------------->>        <<D1272>>07693361
<<  NOTE: Since the MIMI chip used on both the  TIC  >>        <<D1272>>07693362
<<        and DAPHNIS has the CHANID hardcoded as 4  >>        <<D1272>>07693363
<<        we have no means of knowing whether the    >>        <<D1272>>07693364
<<        channel really has only 7 or 8 accessible  >>        <<D1272>>07693365
<<        ports.  The decision was made to list port >>        <<D1272>>07693366
<<        6 as OPTIONAL and hope the customer can    >>        <<D1272>>07693367
<<        figure it out.    HKS                      >>        <<D1272>>07693368
<<--------------------------------------------------->>        <<D1272>>07693369
                                                               <<D1272>>07693370
BEGIN                                                          <<D1272>>07693375
   ID := CATP;     << FORCE ID FOR SEARCH! >>                  <<D9938>>07693380
   BUILD'STR( DRT, ID);                                        <<D9938>>07693390
   MOVE BLINE(19) := "0-5";  << UNITS >>                       <<D9938>>07693400
   PRINTSTRING (BLINE);                                        <<D9938>>07693410
   BUILD'STR( DRT, ID);                                        <<D1272>>07693412
   MOVE BLINE(19) := "  6";  << UNITS IN CASE IT IS DAPHNIS >> <<D1272>>07693414
   PRINTSTRING (BLINE);                                        <<D1272>>07693416
   BUILD'STR( DRT, ID);                                        <<D9938>>07693420
   MOVE BLINE(19) := "  7";  << UNITS >>                       <<D9938>>07693430
   PRINTSTRING (BLINE);                                        <<D9938>>07693440
END;                                                           <<D9938>>07693450
SUBROUTINE PRINT'ADCC( DRT, CHANID);                           <<D9938>>07693460
   VALUE DRT, CHANID;                                          <<D9938>>07693470
   INTEGER DRT, CHANID;                                        <<D9938>>07693480
BEGIN                                                          <<D9938>>07693490
   ID := %(16)10;  << FORCE ID FOR SEARCH! >>                  <<D9938>>07693500
   BUILD'STR( DRT, ID);                                        <<D9938>>07693510
   IF CHANID.(11:1) = 0 THEN                                   <<D9938>>07693520
      MOVE BLINE(9) := "0-3"                                   <<D9938>>07693530
   ELSE                                                        <<D9938>>07693540
      MOVE BLINE(9) := "0-7";                                  <<D9938>>07693550
   PRINTSTRING (BLINE);                                        <<D9938>>07693560
END;                                                           <<D9938>>07693570
SUBROUTINE PRINT'UNKWNCHAN( DRT, CHANID);                      <<D9938>>07693580
   VALUE DRT, CHANID;                                          <<D9938>>07693590
   INTEGER DRT, CHANID;                                        <<D9938>>07693600
BEGIN                                                          <<D9938>>07693610
   BUILD'STR( DRT, 0);                                         <<D9938>>07693620
   MOVE STRDESCP := "UNKNOWN CHANNEL, ID=",2;                  <<D9938>>07693630
   @BP := TOS;                                                 <<D9938>>07693640
   LNTOA( CHANID, 8, BP);                                      <<D9938>>07693650
   PRINTSTRING (BLINE);                                        <<D9938>>07693660
END;                                                           <<D9938>>07693670
SUBROUTINE PRINT'C13037( DRT, CHANID);                         <<D9938>>07693680
   VALUE DRT, CHANID;                                          <<D9938>>07693690
   INTEGER DRT, CHANID;                                        <<D9938>>07693700
BEGIN                                                          <<D9938>>07693710
   I := 0;                                                     <<D9938>>07693720
   FOR *UNIT := 0 UNTIL 7 DO                                   <<D9938>>07693730
      BEGIN                                                    <<D9938>>07693740
         PUSH( DB );                                           <<D9938>>07693750
         TOS := TOS + @STATUS;                                 <<D9938>>07693760
         MEMADR := TOS;                                        <<D9938>>07693770
         DISCDRIVER (DRT & LSL(7) + UNIT, 0, 8, RSTAT,         <<D9938>>07693780
                     0D, MEMADR, 2);                           <<D9938>>07693790
         IF STATUS2 <> -1 AND STATUS2.(14:2) <> 2 THEN         <<D9938>>07693800
            BEGIN                                              <<D9938>>07693810
               TYPE := STATUS2.(4:4);                          <<D9938>>07693820
               IF TYPE = 0 THEN ID := %(16)FF02; <<7906>>      <<D9938>>07693830
               IF TYPE = 2 THEN ID := %(16)FF03; <<7920>>      <<D9938>>07693840
               IF TYPE = 4 THEN ID := %(16)FF01; <<7905>>      <<D9938>>07693850
               IF TYPE = 6 THEN ID := %(16)FF04; <<7925>>      <<D9938>>07693860
               BUILD'STR( DRT, ID);                            <<D9938>>07693870
               NTOA( UNIT, 10, STRUNIT);                       <<D9938>>07693880
               IF IOMAP' THEN                                  <<D9938>>07693890
                  PRINTSTRING (BLINE)                          <<D9938>>07693900
               ELSE                                            <<D9938>>07693910
                  IF ADD'DEV'ID( DRT, UNIT) THEN               <<D9938>>07693920
                     PRINTSTRING (BLINE);                      <<D9938>>07693930
               I := I+1;                                       <<D9938>>07693940
            END;                                               <<D9938>>07693950
      END;                                                     <<D9938>>07693960
                                                               <<D9938>>07693970
   IF I = 0 AND IOMAP' THEN                                    <<D9938>>07693980
      BEGIN                                                    <<D9938>>07693990
         BUILD'STR( DRT, ID);                                  <<D9938>>07694000
         STRUNIT := "?";                                       <<D9938>>07694010
         PRINTSTRING (BLINE);                                  <<D9938>>07694020
      END;                                                     <<D9938>>07694030
END;                                                           <<D9938>>07694040
SUBROUTINE PRINT'C7970( DRT, CHANID);                          <<D9938>>07694050
   VALUE DRT, CHANID;                                          <<D9938>>07694060
   INTEGER DRT, CHANID;                                        <<D9938>>07694070
BEGIN                                                          <<D9938>>07694080
   I := 0;                                                     <<D9938>>07694090
   FOR *UNIT := 0 UNTIL 3 DO                                   <<D9938>>07694100
      BEGIN                                                    <<D9938>>07694110
$EDIT VOID=07694130                                            <<01348>>07694120
         MOVE BUF := ( %2001,1,0,%42000,0,  <<SEL UNIT>>       <<01348>>07694140
                       %1000,0,             <<WAIT>>           <<01348>>07694150
                       %2401,0,0,0,         <<DSJ>>            <<01348>>07694160
                       %1401,3,0,%2000,0,   <<RD STAT>>        <<01348>>07694170
                       %600,0,              <<INT,H>>          <<01348>>07694180
                       0,                   <<CMD BUF>>        <<01348>>07694190
                       0,0);                <<STAT BUF>>       <<01348>>07694200
         BUF(18) := UNIT+1; <<UNIT SEL CMD>>                   <<01348>>07694210
         BUF(4) := ABS(CHANPROG)+18;                           <<01348>>07694220
         BUF(15) := ABS(CHANPROG)+19;                          <<01348>>07694230
         PUSH( DB );                                           <<01348>>07694240
         TOS := TOS+@BUF;                                      <<01348>>07694250
         MEMADR := TOS;                                        <<01348>>07694260
         MABS( 0, ABS(CHANPROG), BANK, ADR, 21);               <<01348>>07694270
         SIOP'( DRT, ABS(CHANPROG));                           <<01348>>07694280
         << WAIT FOR CHANNEL PROGRAM TO COMPLETE >>            <<01348>>07694290
         LX := RCLK;                                           <<01348>>07694300
         WHILE GETDRT(DRT,CHANSTAT).(0:2) <> 0 AND             <<01348>>07694310
               RCLK <> LX+10 DO;                               <<01348>>07694320
         IF ABS(ABS(CHANPROG)+19).(7:1) THEN                   <<01348>>07694330
            BEGIN                                              <<01348>>07694340
               BUILD'STR( DRT, ID);                            <<01348>>07694350
               NTOA( UNIT, 10, STRUNIT);                       <<01348>>07694360
               IF IOMAP' THEN                                  <<01348>>07694361
                  PRINTSTRING (BLINE)                          <<01348>>07694362
               ELSE                                            <<01348>>07694363
                  IF ADD'DEV'ID (DRT, UNIT) THEN               <<01348>>07694364
                     PRINTSTRING (BLINE);                      <<01348>>07694370
               I := I+1;                                       <<01348>>07694380
            END;                                               <<01348>>07694390
$EDIT VOID=07694470                                            <<01348>>07694400
      END;                                                     <<D9938>>07694480
                                                               <<D9938>>07694490
   IF I = 0 THEN                                               <<01348>>07694500
      IF IOMAP' THEN                                           <<01348>>07694501
         BEGIN                                                 <<01348>>07694510
            BUILD'STR( DRT, ID);                               <<01348>>07694520
            STRUNIT := "?";                                    <<01348>>07694530
            PRINTSTRING (BLINE);                               <<01348>>07694540
         END                                                   <<01348>>07694550
      ELSE                                                     <<01348>>07694551
         FOR *UNIT := 0 UNTIL 3 DO                             <<01348>>07694552
            BEGIN                                              <<01348>>07694553
               BUILD'STR (DRT, ID);                            <<01348>>07694554
               NTOA( UNIT, 10, STRUNIT);                       <<01348>>07694555
               IF ADD'DEV'ID (DRT, UNIT) THEN                  <<01348>>07694556
                  PRINTSTRING (BLINE);                         <<01348>>07694557
            END;                                               <<01348>>07694558
END;                                                           <<D9938>>07694560
SUBROUTINE PRINT'GIC( DRT, CHANID);                            <<D9938>>07694570
   VALUE DRT, CHANID;                                          <<D9938>>07694580
   INTEGER DRT, CHANID;                                        <<D9938>>07694590
BEGIN                                                          <<D9938>>07694600
   << LOOP THROUGH EACH DEVICE ON THE CHANNEL >>               <<D9938>>07694610
                                                               <<D9938>>07694620
   FOR *DEV := 0 UNTIL 7 DO                                    <<D9938>>07694630
      BEGIN                                                    <<D9938>>07694640
      INITDRT( DRT);                                           <<D9938>>07694650
      ID := IDENTIFY( DRT);                                    <<D9938>>07694660
      IF ID <> 0 THEN                                          <<D9938>>07694670
         CASE SEARCHTYPE( ID) OF                               <<D9938>>07694680
            BEGIN                                              <<D9938>>07694690
            PRINT'DEVID( DRT, ID);                             <<D9938>>07694700
            PRINT'C13037( DRT, ID);                            <<D9938>>07694710
            PRINT'C7970( DRT, ID);                             <<D9938>>07694720
            END;                                               <<D9938>>07694730
      DRT := DRT+1;                                            <<D9938>>07694740
      END;                                                     <<D9938>>07694750
END;                                                           <<D9938>>07694760
SUBROUTINE PRINT'GICDEV( DRT, CHANID);                         <<D9938>>07694770
   VALUE DRT, CHANID;                                          <<D9938>>07694780
   INTEGER DRT, CHANID;                                        <<D9938>>07694790
BEGIN                                                          <<D9938>>07694800
   CHANID := %(16)6000;                                        <<D9938>>07694810
   BUILD'STR( DRT, CHANID);                                    <<D9938>>07694820
   PRINTSTRING (BLINE);                                        <<D9938>>07694830
END;                                                           <<D9938>>07694840
                                                               <<D9938>>07694850
<< START OF MAIN CODE >>                                       <<D9938>>07694860
   REF'NO'OFFSET := 14;                                        <<D9938>>07694870
   GO START;                                                   <<D9938>>07694880
                                                               <<D9938>>07694890
IOMAP: IOMAP' := TRUE;                                         <<D9938>>07694900
START:                                                         <<D9938>>07694910
                                                               <<D9938>>07694920
   IF NOT IOMAP' THEN                                          <<D9938>>07694930
      BEGIN                                                    <<D9938>>07694940
         MOVE DRT'UNIT'INFO (0) := 0;                          <<D9938>>07694943
         MOVE DRT'UNIT'INFO (1) := DRT'UNIT'INFO, (39);        <<D9938>>07694944
         MOVE BLINE :=                                         <<D9938>>07694950
            ("THE FOLLOWING DEVICES ARE AVAILABLE ",           <<D9938>>07694960
             "FOR DUMPING MEMORY:",%15);                       <<D9938>>07694970
         PRINTSTRING (SPACE);                                  <<D9938>>07694975
         PRINTSTRING (BLINE);                                  <<D9938>>07694980
      END;                                                     <<D9938>>07695000
                                                               <<D9938>>07695010
   OLDIMB := -1;                                               <<D9938>>07695020
   OLDCHAN := -1;                                              <<D9938>>07695030
   OLDDEV := -1;                                               <<D9938>>07695040
   NEXTID := -1;                                               <<D9938>>07695045
                                                               <<D9938>>07695050
   IF NOT IOMAP' THEN                                          <<D9938>>07695060
      MOVE BLINE := "SELECTION NO. ";                          <<D9938>>07695070
   MOVE BLINE(REF'NO'OFFSET) :=                                <<D9938>>07695080
      ("IMB CHAN DEV  DRT UNIT  DESCRIPTION",%15);             <<D9938>>07695090
   PRINTSTRING (SPACE);                                        <<D9938>>07695095
   PRINTSTRING (BLINE);                                        <<D9938>>07695100
   PRINTSTRING (SPACE);                                        <<D9938>>07695110
                                                               <<D9938>>07695120
   NRIMB := IF MULTI'IMB'SYS THEN 3 ELSE 0;                    <<D9938>>07695130
   MOVE IMBS := (0,0,0,0);                                     <<D9938>>07695140
                                                               <<D9938>>07695150
   << IMB'S THAT DON'T EXIST WILL RETURN A 0 FROM SMSK >>      <<D9938>>07695160
                                                               <<D9938>>07695170
   TOS := -1D;                                                 <<D9938>>07695180
   TOS := -1D;                                                 <<D9938>>07695190
   ASSEMBLE( SMSK;                                             <<D9938>>07695200
             RMSK );                                           <<D9938>>07695210
                                                               <<D9938>>07695220
   X := 0;                                                     <<D9938>>07695230
   DO BEGIN                                                    <<D9938>>07695240
      IMBS(X) := TOS;                                          <<D9938>>07695250
      X := X+1;                                                <<D9938>>07695260
      END                                                      <<D9938>>07695270
   UNTIL X > NRIMB;                                            <<D9938>>07695280
                                                               <<D9938>>07695290
   << DO A ROLL CALL ON ALL IMB'S THAT EXIST >>                <<D9938>>07695300
                                                               <<D9938>>07695310
   I := 0;                                                     <<D9938>>07695320
   DO BEGIN                                                    <<D9938>>07695330
      IF IMBS(I) <> 0 THEN  << IMB EXISTS? >>                  <<D9938>>07695340
         IMBS(I) := RIOX( I & LSL(7), ROCL);                   <<D9938>>07695350
      I := I+1;                                                <<D9938>>07695360
      END                                                      <<D9938>>07695370
   UNTIL I > NRIMB;                                            <<D9938>>07695380
                                                               <<D9938>>07695390
   << LOOP THROUGH EACH CHANNEL ON THE IMB >>                  <<D9938>>07695400
                                                               <<D9938>>07695410
   CHANNR := 0;                                                <<D9938>>07695420
   WHILE (CHANNR:=CHANNR+1) <= 63 DO                           <<D9938>>07695430
      BEGIN                                                    <<D9938>>07695440
      IF TESTBIT( IMBS, CHANNR) THEN                           <<D9938>>07695450
         BEGIN   << CHAN EXISTS >>                             <<D9938>>07695460
         DRT := CHANNR*8;                                      <<D9938>>07695470
         CASE CHANTYPE( DRT, CHANID) OF                        <<D9938>>07695480
            BEGIN                                              <<D9938>>07695490
                                                               <<D9938>>07695500
            IF IOMAP' THEN                                     <<D9938>>07695510
               PRINT'ADCC( DRT, CHANID);                       <<D9938>>07695520
                                                               <<D9938>>07695530
            IF IOMAP' THEN                                     <<D9938>>07695540
               PRINT'ATP( DRT, CHANID);                        <<D9938>>07695550
                                                               <<D9938>>07695560
            IF IOMAP' THEN                                     <<D9938>>07695570
               PRINT'TIC( DRT, CHANID);                        <<D9938>>07695580
                                                               <<D9938>>07695590
            PRINT'GIC( DRT, CHANID);                           <<D9938>>07695600
                                                               <<D9938>>07695610
            IF IOMAP' THEN                                     <<D9938>>07695620
               PRINT'GICDEV( DRT, CHANID);                     <<D9938>>07695630
                                                               <<D9938>>07695640
            IF IOMAP' THEN                                     <<D9938>>07695650
               PRINT'UNKWNCHAN( DRT, CHANID);                  <<D9938>>07695660
                                                               <<D9938>>07695670
            END;                                               <<D9938>>07695680
         END;                                                  <<D9938>>07695690
      END;                                                     <<D9938>>07695700
   IF IOMAP' THEN RETURN; << IOMAP STOPS HERE >>               <<D9938>>07695710
                                                               <<D9938>>07695720
   PRINTSTRING (SPACE);                                        <<D9938>>07695730
   MOVE BLINE := ("ENTER SELECTION NO. FOR MEMORY DUMP,",%15); <<D9938>>07695740
   PRINTSTRING (BLINE);                                        <<D9938>>07695750
   MOVE BLINE := ("PRESS THE RETURN KEY TO RE-DISPLAY ",       <<D9938>>07695760
                  "DEVICE LIST, OR",%15);                      <<D9938>>07695770
   PRINTSTRING (BLINE);                                        <<D9938>>07695780
   MOVE BLINE := ("TYPE ""EXIT"" FOR SOFTDUMP INTERACTIVE ",   <<D9938>>07695790
                  "COMMAND PROMPT.",%15);                      <<D9938>>07695800
   PRINTSTRING (BLINE);                                        <<D9938>>07695810
   PRINTSTRING (SPACE);                                        <<D9938>>07695820
                                                               <<D9938>>07695830
RETRY:                                                         <<D9938>>07695840
   MOVE BLINE := ("SELECTION NO.>",%15);                       <<D9938>>07695850
   PRINTSTRING (BLINE,,%320);                                  <<D9938>>07695860
   J := READ(COMMANDBUF,-6); << RE-USE J FOR COUNT >>          <<D9938>>07695870
   MOVE COMMANDBUF := COMMANDBUF WHILE AS;                     <<D1272>>07695880
   IF J = 0 THEN                                               <<D9938>>07695890
      BEGIN                                                    <<D9938>>07695900
         PRINTSTRING (SPACE);                                  <<D9938>>07695910
         GO START;                                             <<D9938>>07695920
      END;                                                     <<D9938>>07695930
   IF COMMANDBUF = "EXIT" THEN                                 <<D9938>>07695940
      BEGIN                                                    <<D9938>>07695950
         MODE := INTERACTIVE;                                  <<D9938>>07695960
         FIND'DDUMP'DEV := FALSE;                              <<D9938>>07695970
         RETURN;                                               <<D9938>>07695980
      END;                                                     <<D9938>>07695990
   K := BINARY (COMMANDBUF, J);                                <<D9938>>07696000
   IF <> THEN                                                  <<D9938>>07696010
      BEGIN                                                    <<D9938>>07696020
         MOVE BLINE := ("INVALID NUMBER -- PLEASE RE-ENTER",   <<D9938>>07696030
                        %15);                                  <<D9938>>07696040
         PRINTSTRING (BLINE);                                  <<D9938>>07696050
         PRINTSTRING (SPACE);                                  <<D9938>>07696060
         GO RETRY;                                             <<D9938>>07696070
      END;                                                     <<D9938>>07696080
   IF K > NEXTID OR K < 0 THEN                                 <<D9938>>07696090
      BEGIN                                                    <<D9938>>07696100
         MOVE BLINE := ("NUMBER OUT OF RANGE -- PLEASE ",      <<D9938>>07696110
                        "RE-ENTER",%15);                       <<D9938>>07696120
         PRINTSTRING (BLINE);                                  <<D9938>>07696130
         PRINTSTRING (SPACE);                                  <<D9938>>07696140
         GO RETRY;                                             <<D9938>>07696150
      END;                                                     <<D9938>>07696160
   RETURN'DRT := DRT'UNIT'INFO (K).(0:9);                      <<D9938>>07696170
   RETURN'UNIT := DRT'UNIT'INFO(K).(13:3);                     <<D9938>>07696180
   FIND'DDUMP'DEV := TRUE;                                     <<D9938>>07696190
END;                                                           <<D9938>>07696200
$PAGE "COMMAND EXECUTOR ROUTINES"                              <<D9938>>07696210
                                                                        07725010
COMMENT                                                                 07725020
                                                                        07725030
Following are diagrams of the softdump tape format:                     07725040
                                                                        07725050
           Dump Tape Format                                             07725060
                                                                        07725070
           --------------                                               07725080
           |  BOT       |                                               07725090
           |------------|                                               07725100
           |  Real      |                                               07725110
           |  Memory    |                                               07725120
           |  Area      |                                               07725130
           |------------|                                               07725140
           |  EOF       |                                               07725150
           |------------|    \                                          07725160
           |  Virtual   |     |                                         07725170
           |  Memory    |     |  Result of DSEG=ALL                     07725180
           |  Area      |     >  parameter of the                       07725190
           |------------|     |  DUMP command.                          07725200
           |  EOF       |     |                                         07725210
           |------------|    /                                          07725220
           |  Loadmap   |                                      <<L1186>>07725222
           |------------|                                      <<L1186>>07725223
           |  EOF       |                                      <<L1186>>07725224
           |------------|                                      <<L1186>>07725225
           |  MPECheck  |                                      <<L1186>>07725226
           |------------|                                      <<L1186>>07725227
           |  EOF       |                                               07725230
           |------------|                                               07725240
           |  Confdata  |                                      <<L1186>>07725242
           |------------|                                      <<L1186>>07725243
           |  EOF       |                                      <<L1186>>07725244
           |------------|                                      <<L1186>>07725245
           |  HPPmap    |                                      <<L1186>>07725246
           |------------|                                      <<L1186>>07725247
           |  EOF       |                                      <<L1186>>07725248
           |------------|                                      <<L1186>>07725249
           |  EOF       |                                      <<L1186>>07725250
           |------------|                                      <<L1186>>07725251
                                                               <<L1186>>07725252
                                                                        07725260
                                                                        07725270
                                                                        07725280
           Memory Dump Tape                                             07725290
           Virtual Memory Area                                          07725300
                                                                        07725310
           --------------                                               07725320
           |  Header    |                                               07725330
           |  Record    |                                               07725340
           |------------|                                               07725350
           |  Data      |                                               07725360
           |  Segment   |                                               07725370
           |  Contents  |                                               07725371
           |------------|                                               07725380
           |  Trailer   |                                               07725390
           |  Record    |                                               07725400
           |------------|    \                                          07725410
           |  Header    |     |                                         07725420
           |  Record    |     |  No DST contents                        07725430
           |------------|     >  because of error.                      07725440
           |  Trailer   |     |                                         07725450
           |  Record    |     |                                         07725460
           |------------|    /                                          07725470
           |            |                                               07725480
           .     o      .                                               07725490
           .            .                                               07725500
           .     o      .                                               07725510
           .            .                                               07725520
           .     o      .                                               07725530
           |            |                                               07725540
           |------------|                                               07725550
           |  Header    |                                               07725560
           |  Record    |                                               07725570
           |------------|                                               07725580
           |  Data      |                                               07725590
           |  Segment   |                                               07725600
           |  Contents  |                                               07725601
           |------------|                                               07725610
           |  Trailer   |                                               07725620
           |  Record    |                                               07725630
           |------------|                                               07725640
                                                                        07725650
                                                                        07725660
                                                                        07725670
                    Memory Dump Tape                                    07725680
                    Virtual Memory Area                                 07725690
                    Header Record Format                                07725700
                                                                        07725710
          0  1  2  3  4  5  6  7  8  9 10 11 12 13 14 15                07725720
        |--|--|--|--|--|--|--|--|--|--|--|--|--|--|--|--|               07725730
Word 0  |                      0                        |               07725740
        |-----------------------------------------------|               07725750
Word 1  |                     DST#                      |               07725760
        |-----------------------------------------------|               07725770
Word 2  |            LENGTH OF DST IN WORDS             |               07725780
        |-----------------------------------------------|               07725790
Word 3  |A |0 |R |               SIZE/4                 | FIRMINFO      07725800
        |-----------------------------------------------|               07725810
Word 4  |D |R |I |S |M |F |S |C |W |                    |               07725820
        |C |O |M |T |O |W |Y |O |D |   VMALLOC          | FLAGS         07725830
        |V |C |I |K |D |I |S |R |  |                    |               07725840
        |  |  |  |  |  |P |  |E |  |                    |               07725850
        |-----------------------------------------------|               07725860
Word 5  |     LDEV#             |        HODA           | HODA          07725870
        |-----------------------------------------------|               07725880
Word 6  |                  LODA                         | LODA          07725890
        |-----------------------------------------------|               07725900
Word 7  |         D             |          S            |               07725910
        |-----------------------------------------------|               07725920
Word%10 |         T             |          #            |               07725930
        |-----------------------------------------------|               07725940
Word%11 |         X             |          X            |               07725950
        |-----------------------------------------------|               07725960
Word%12 |         X             |          X            |               07725970
        |-----------------------------------------------|               07725980
Word%13 |         X             |          X            |               07725990
        |-----------------------------------------------|               07726000
                                                                        07726010
                                                                        07726020
                                                                        07726030
                                                                        07726040
                   Memory Dump Tape                                     07726050
                   Virtual Memory Area                                  07726060
                   Trailer Record Format                                07726070
                                                                        07726080
          0  1  2  3  4  5  6  7  8  9 10 11 12 13 14 15                07726090
        |--|--|--|--|--|--|--|--|--|--|--|--|--|--|--|--|               07726100
Word 0  |                      1                        |               07726110
        |-----------------------------------------------|               07726120
Word 1  |                     DST#                      |               07726130
        |-----------------------------------------------|               07726140
Word 2  |I |I |D |I |///////////////////////////////////|               07726150
        |L |A |R |T |///////////////////////////////////| FLAGS         07726160
        |D |D |E |S |///////////////////////////////////|               07726170
        |E |D |  |  |///////////////////////////////////|               07726180
        |V |R |  |  |///////////////////////////////////|               07726190
        |-----------------------------------------------|               07726200
Word 3  |  NUMBER OF RECORDS WRITTEN FOR DST CONTENTS   |               07726210
        |-----------------------------------------------|               07726220
                                                                        07726230
                                                                        07726240
                                                                        07726250
         Trailer Record Field Descriptions                              07726260
                                                                        07726270
         ILDEV = invalid LDEV                                           07726280
         IADDR = invalid virtual memory address                         07726290
         DRE   = disc read error                                        07726300
         ITS   = invalid table structure                                07726310
                                                                        07726320
END OF COMMENT;                                                         07726330
      VHEADERLENGTH  = 12,                                     <<D9938>>07760000
      VTRAILERLENGTH = 4,                                      <<D9938>>07761000
$EDIT VOID=07785000                                            <<L1027>>07785000
                                                               <<D9938>>07820100
      <<DATA SEGMENT TRAILER FORMAT>>                          <<D9938>>07820200
      VT'TYPE        = DUMPBUF       #,                        <<D9938>>07820300
      VT'SEGNUM      = DUMPBUF(1)    #,                        <<D9938>>07820400
      VT'ILDEV       = VT'ERROR'FLAGS.(0:1)#,                  <<D9938>>07820500
      VT'IADR        = VT'ERROR'FLAGS.(1:1)#,                  <<D9938>>07820600
      VT'DRE         = VT'ERROR'FLAGS.(2:1)#,                  <<D9938>>07820700
      VT'ITS         = VT'ERROR'FLAGS.(3:1)#,                  <<D9938>>07820800
      VT'ERRORS      = DUMPBUF(2)    #,                        <<D9938>>07820900
      VT'REC'COUNT   = DUMPBUF(3)    #,                        <<D9938>>07821000
      DSDCV          = DESC1.(0:1)=1 #,                        <<D9938>>07871000
      DSNOTROC       = DESC1.(1:1)=0 #,                        <<D9938>>07872000
      DSVMALLOC      = DESC1.(9:7)   #,                        <<D9938>>07872500
      DSDISCLDEV     = DESC2.(0:8)   #,                        <<D9938>>07873000
      DSHIORDERDISC  = DESC2.(8:8)   #,                        <<D9938>>07885000
      DSTENTRYLEN,DELIMNUM,DESC0,DESC1,DESC2,DESC3,FILECOUNT;  <<L1186>>07925000
                                                               <<D9938>>08016000
   INTEGER                                                     <<D9938>>08017000
      VM'REC'COUNT,                                            <<D9938>>08018000
      VT'ERROR'FLAGS;                                          <<D9938>>08019000
                                                               <<D9938>>08019050
   DOUBLE                                                      <<D9938>>08019100
      DSDISC'ADDR,                                             <<D9938>>08019150
      CTVMDISC'ADDR;                                           <<D9938>>08019200
<<VARIABLES USED BY DUMPAPPENDFILES>>                          <<L1186>>08095100
LOGICAL                                                        <<L1186>>08095200
   CTNUMSECTFILE;                                              <<L1186>>08095300
DOUBLE                                                         <<L1186>>08095400
   CTDISCADDRFILE;                                             <<L1186>>08095500
                                                               <<L1186>>08095600
$EDIT VOID=08255000                                            <<L1535>>08255000
                  IF (CTDUMPDEVTYPE=TMAGTAPE) AND              <<L1535>>08351000
                    (CTDUMPDEVSUBTYP=STYPE7976)                <<L1535>>08351100
                    THEN                                       <<L1535>>08351200
                    << WE MUST SET DENSITY TO >>               <<L1535>>08352000
                    << 1600 BPI ON HP7976 >>                   <<L1535>>08352100
                      BEGIN                                    <<L1535>>08353000
                      << ACTIONS TO SET DENSITY >>             <<L1535>>08353100
                      << TO 1600BPI ON 7976 >>                 <<L1535>>08353200
                        PERFORMIO(SERIALDEVICE,                <<L1535>>08354000
                          CLEAR7976,DUMPBUF,DBUFSIZE);         <<L1535>>08354010
                        PERFORMIO(SERIALDEVICE,REWIND);        <<L1535>>08354100
                        PERFORMIO(SERIALDEVICE,                <<L1535>>08354200
                        SETDENSITY1600,DUMPBUF,DBUFSIZE);      <<L1535>>08354210
                      END;                                     <<L1535>>08354300
                  IF (CTDUMPDEVTYPE=TMAGTAPE) AND              <<L1535>>08354400
                    (CTDUMPDEVSUBTYP=STYPE7974                 <<L1535>>08354410
                    OR CTDUMPDEVSUBTYP=STYPE7978               <<L1535>>08354500
                    OR CTDUMPDEVSUBTYP=STYPEHERO)              <<L1535>>08354600
                      THEN  << WE MUST SET DENSITY >>          <<L1535>>08354700
                      << TO 1600 BPI ON HP7974/78 >>           <<L1535>>08354710
                        BEGIN  << ACTIONS TO SET >>            <<L1535>>08354800
                        <<DENSITY TO 1600BPI ON 7974/78 >>     <<L1535>>08354810
                          PERFORMIO(SERIALDEVICE,              <<L1535>>08354900
                            CLEAR7976,DUMPBUF,DBUFSIZE);       <<L1535>>08354901
                          PERFORMIO(SERIALDEVICE,              <<L1535>>08354910
                            IMMEDREPORT,DUMPBUF,DBUFSIZE);     <<L1535>>08354911
                          PERFORMIO(SERIALDEVICE,REWIND);      <<L1535>>08354920
                          PERFORMIO(SERIALDEVICE,              <<L1535>>08354930
                            SETDENSITY1600,DUMPBUF,DBUFSIZE);  <<L1535>>08354931
                        END;                                   <<L1535>>08354940
            END;                                               <<L1535>>08440000
                                                               <<D9938>>08450050
   LOGICAL SUBROUTINE VIRT'SEGMENT'VALID (DATASEGMENT);        <<D9938>>08450100
   VALUE DATASEGMENT;                                          <<D9938>>08450150
   INTEGER DATASEGMENT;                                        <<D9938>>08450200
      BEGIN                                                    <<D9938>>08450250
         VIRT'SEGMENT'VALID := FALSE;                          <<D9938>>08450300
         VMINDEX := 0;                                         <<D9938>>08450350
         DO                                                    <<D9938>>08450400
            BEGIN                                              <<D9938>>08450450
               IF INTEGER(CTVMLDEV) = DSDISCLDEV THEN          <<D9938>>08450500
                  GO CHECK'DISC'ADDR'RANGE;                    <<D9938>>08450550
               IF CTVMLDEV = 0 THEN                            <<D9938>>08450600
                  BEGIN                                        <<D9938>>08450650
                     VT'ILDEV := 1;                            <<D9938>>08450700
                     RETURN; <<INVALID LDEV>>                  <<D9938>>08450750
                  END;                                         <<D9938>>08450800
               VMINDEX := VMINDEX + 1;                         <<D9938>>08450850
            END                                                <<D9938>>08450900
         UNTIL VMINDEX > MAXVMINDEX;                           <<D9938>>08450950
                                                               <<D9938>>08451000
         VT'ILDEV := 1;                                        <<D9938>>08451050
         RETURN; <<INVALID LDEV>>                              <<D9938>>08451100
                                                               <<D9938>>08451150
CHECK'DISC'ADDR'RANGE:                                         <<D9938>>08451200
         IF DSVMALLOC = 0 THEN << NOT IN VIRTUAL MEMORY >>     <<D9938>>08451250
            IF DSDISCLDEV = 1 THEN   << MUST BE ON LDEV 1 >>   <<D9938>>08451300
               BEGIN                                           <<D9938>>08451350
                  VIRT'SEGMENT'VALID := TRUE;                  <<D9938>>08451400
                  RETURN;                                      <<D9938>>08451450
               END                                             <<D9938>>08451500
            ELSE                                               <<D9938>>08451550
               BEGIN                                           <<D9938>>08451600
                  VT'ITS := 1; << INVALID TABLE STRUCTURE >>   <<D9938>>08451650
                  RETURN;                                      <<D9938>>08451700
               END;                                            <<D9938>>08451750
                                                               <<D9938>>08451800
         TOS := CTVMHODASTART;                                 <<D9938>>08451850
         TOS := CTVMLODASTART;                                 <<D9938>>08451900
         CTVMDISC'ADDR := TOS;                                 <<D9938>>08451950
                                                               <<D9938>>08452000
         TOS := DSHIORDERDISC;                                 <<D9938>>08452050
         TOS := DSLORDERDISC;                                  <<D9938>>08452100
         DSDISC'ADDR := TOS;                                   <<D9938>>08452150
                                                               <<D9938>>08452200
         IF DSDISC'ADDR < CTVMDISC'ADDR THEN                   <<D9938>>08452250
            BEGIN                                              <<D9938>>08452300
               VT'IADR := 1; <<INVALID DISC ADDRESS>>          <<D9938>>08452350
               RETURN;                                         <<D9938>>08452400
            END;                                               <<D9938>>08452450
                                                               <<D9938>>08452500
         TOS := CTVMHODAEND;                                   <<D9938>>08452550
         TOS := CTVMLODAEND;                                   <<D9938>>08452600
         CTVMDISC'ADDR := TOS;                                 <<D9938>>08452650
                                                               <<D9938>>08452700
         DSDISC'ADDR := DSDISC'ADDR +                          <<D9938>>08452750
                        DOUBLE(LENGTH/SECTORSIZE);             <<D9938>>08452800
                                                               <<D9938>>08452850
         IF DSDISC'ADDR > CTVMDISC'ADDR THEN                   <<D9938>>08452900
            BEGIN                                              <<D9938>>08452950
               VT'IADR := 1; <<INVALID DISC ADDRESS>>          <<D9938>>08453000
               RETURN;                                         <<D9938>>08453050
            END;                                               <<D9938>>08453100
                                                               <<D9938>>08453150
         << LDEV AND DISC ADDRESS RANGE IS OK >>               <<D9938>>08453200
         VIRT'SEGMENT'VALID := TRUE;                           <<D9938>>08453250
      END << VIRT'SEGMENT'VALID >>;                            <<D9938>>08454000
                                                               <<D9938>>08455010
   LOGICAL SUBROUTINE OUTPUT'TRAILER (DATASEGMENT);            <<D9938>>08455020
   VALUE DATASEGMENT;                                          <<D9938>>08455030
   INTEGER DATASEGMENT;                                        <<D9938>>08455040
      BEGIN                                                    <<D9938>>08455050
         VT'TYPE := 1;                                         <<D9938>>08455060
         VT'SEGNUM := DATASEGMENT;                             <<D9938>>08455070
         VT'ERRORS := VT'ERROR'FLAGS;                          <<D9938>>08455080
         VT'REC'COUNT := VM'REC'COUNT;                         <<D9938>>08455090
         OUTPUTDUMP(DUMPBUF, VTRAILERLENGTH);                  <<D9938>>08455100
      END << OUTPUT'TRAILER >>;                                <<D9938>>08459000
                                                               <<D9938>>08459010
      IF DESC0 <> VACANT THEN                                  <<D9938>>08505000
         IF DSABSENT AND DSNOTROC AND DSDCV THEN               <<D9938>>08515000
            BEGIN  << SEGMENT IS VIRTUAL >>                    <<D9938>>08520000
            VM'REC'COUNT := 0;                                 <<D9938>>08521000
            VT'ERROR'FLAGS := 0;                               <<D9938>>08522000
            VID:=DATASEGMENTID;                                <<D9938>>08530000
            VDSEGNUM:=DATASEGMENT;                             <<D9938>>08530100
            VDSEGLEN := 4*DSLENGTH;                            <<D9938>>08530200
            LENGTH := 4*DSLENGTH;                              <<D9938>>08540000
            IF NOT VIRT'SEGMENT'VALID (DATASEGMENT) THEN       <<D9938>>08540100
               BEGIN                                           <<D9938>>08540200
                  LENGTH := 0;                                 <<D9938>>08540300
                  VDSEGLEN := 0;                               <<D9938>>08540400
               END;                                            <<D9938>>08540500
            MOVE DUMPBUF (7) := "DST#      ";                  <<D9938>>08540510
            LNTOA (DATASEGMENT, 8, DUMPBUF (9));               <<D9938>>08540520
            OUTPUTDUMP(DUMPBUF, VHEADERLENGTH);                <<D9938>>08541000
            IF LENGTH = 0 THEN                                 <<D9938>>08545000
               OUTPUT'TRAILER(DATASEGMENT)                     <<D9938>>08550000
                  COUNT:=IF LENGTH > DBUFSIZE THEN             <<D9938>>08580000
                            DBUFSIZE                           <<D9938>>08580100
                         ELSE                                  <<D9938>>08580200
                            LENGTH;                            <<D9938>>08580300
                  DVRSTAT := PERFORMIO (VMLDEV, INPUT,         <<D9938>>08585000
                                        DUMPBUF, COUNT,        <<D9938>>08585100
                                        DATASEGMENTSECTOR);    <<D9938>>08585200
                  IF <> THEN VT'DRE := 1; <<GOT READ ERROR>>   <<D9938>>08585300
                  OUTPUTDUMP (DUMPBUF, COUNT);                 <<D9938>>08590000
                  VM'REC'COUNT := VM'REC'COUNT + 1;            <<D9938>>08591000
$EDIT VOID=08595000                                            <<D9938>>08595000
                  DATASEGMENTSECTOR:=DATASEGMENTSECTOR +       <<D9938>>08605000
                    DBUFNUMSECTOR;                             <<D9938>>08605100
                  OUTPUT'TRAILER(DATASEGMENT);                 <<D9938>>08610100
!              WHILE LENGTH > 0 DO                             <<D9938>>08630000
!                 BEGIN                                        <<D9938>>08635000
!                 COUNT := IF LENGTH > DBUFSIZE THEN           <<D9938>>08640000
!                             DBUFSIZE                         <<D9938>>08641000
!                          ELSE                                <<D9938>>08642000
!                             LENGTH;                          <<D9938>>08643000
!                 TOS:=DSBANKNUM; TOS:=DSADDRESS;              <<D9938>>08645000
!                 GETAREA(*,DUMPBUF,COUNT);                    <<D9938>>08650000
!                 DSADDRESS:=DSADDRESS+DBUFSIZE;               <<D9938>>08655000
!                 OUTPUTDUMP(DUMPBUF,COUNT);                   <<D9938>>08660000
!                 LENGTH:=LENGTH-DBUFSIZE;                     <<D9938>>08665000
!                 END  <<WHILE>>;                              <<D9938>>08670000
!  SUBROUTINE DUMPSTACKS;                                      <<D9938>>08695000
!     BEGIN                                                    <<D9938>>08700000
!     GETAREA(DOUBLE(DSTADDR+4*VDSL'DST),DESC,DESCLENGTH);     <<D9938>>08705000
!     VDSLENGTH:=4*DSLENGTH;                                   <<D9938>>08710000
!     GETAREA(DOUBLE(DSADDRESS),VDSL,VDSLENGTH);               <<D9938>>08715000
!     FOR I:=0 UNTIL LASTDATASEG DO                            <<D9938>>08720000
!        IF STACKDATASEGMENT THEN DUMPDATASEGMENT(I);          <<D9938>>08725000
!     END  <<DUMPSTACKS>>;                                     <<D9938>>08730000
!                                                              <<D9938>>08735000
!  SUBROUTINE DUMPSYSTEMSEGMENTS;                              <<D9938>>08740000
!     BEGIN                                                    <<D9938>>08745000
!     FOR I:=1 UNTIL LASTDATASEG DO                            <<D9938>>08750000
!        BEGIN                                                 <<D9938>>08755000
!        GETAREA(DOUBLE(DSTADDR+4*I),DESC,DESCLENGTH);         <<D9938>>08760000
!        IF SYSTEMSEGMENT THEN DUMPDATASEGMENT(I);             <<D9938>>08765000
!        END;                                                  <<D9938>>08770000
!     END  <<DUMPSYSTEMSEGMENTS>>;                             <<D9938>>08775000
      PRINTSTRING(VM'DUMP'BEGIN);                              <<D9938>>08791000
!           IF DELIMNUM = DASH THEN                            <<D9938>>08810000
!              GETNEXTPARM(,,ENDSEG)                           <<D9938>>08815000
!           ELSE                                               <<D9938>>08820000
!              ENDSEG:=STARTSEG;                               <<D9938>>08825000
!           FOR I:=STARTSEG UNTIL ENDSEG DO                    <<D9938>>08830000
!              DUMPDATASEGMENT(I);                             <<D9938>>08831000
               FOR I:=1 UNTIL LASTDATASEG DO         <<ALL>>   <<D9938>>08855000
                  DUMPDATASEGMENT(I);                          <<D9938>>08856000
             <<DUMPSTACKS>>;                         <<STACKS>><<D9938>>08860000
             <<DUMPSYSTEMSEGMENTS>>;                 <<SYSTEM>><<D9938>>08865000
      PRINTSTRING(VM'DUMP'END);                                <<D9938>>08871000
!  SUBROUTINE DUMPSYSDISC;                                     <<D9938>>08885000
!     BEGIN                                                    <<D9938>>08890000
!     WHILE GETNEXTPARM(,,,,DELIMNUM,,SECTORNUM) DO            <<D9938>>08895000
!        BEGIN                                                 <<D9938>>08900000
!        <<FORMAT HEADER RECORD>>                              <<D9938>>08905000
!        DID:=DUMPSYSDISCID; DSECTORLEN:=SECTORSIZE;           <<D9938>>08910000
!        DFIRSTSECNUM:=SECTORNUM;                              <<D9938>>08915000
!        IF DELIMNUM = DASH THEN                               <<D9938>>08920000
!           GETNEXTPARM(,,,,,,SECTORLIMIT)                     <<D9938>>08925000
!        ELSE                                                  <<D9938>>08930000
!           SECTORLIMIT:=SECTORNUM;                            <<D9938>>08935000
!        DNUMSEC:=NUMSEC:=SECTORLIMIT-SECTORNUM+1D;            <<D9938>>08940000
!        HEADR:=SECTORSIZE;                                    <<D9938>>08945000
!        <<WRITE OUT THE SECTORS>>                             <<D9938>>08950000
!        WHILE NUMSEC >= DBUFNUMSECTOR DO                      <<D9938>>08955000
!           BEGIN                                              <<D9938>>08960000
!           <<WRITE OUT A BUFFERSIZE WORTH OF THE SECTORS>>    <<D9938>>08965000
!           READISC(DUMPBUF(HEADR),DBUFSIZE-HEADR,SECTORNUM);  <<D9938>>08970000
!           OUTPUTDUMP(DUMPBUF,DBUFSIZE);                      <<D9938>>08975000
!           HEADR:=0;                                          <<D9938>>08980000
!           NUMSEC:=NUMSEC-DBUFNUMSECTOR;                      <<D9938>>08985000
!           SECTORNUM:=SECTORNUM+DBUFNUMSECTOR;                <<D9938>>08990000
!           END;                                               <<D9938>>08995000
!        IF (VESTIGE:=INTEGER(NUMSEC)*SECTORSIZE) > 0 THEN     <<D9938>>09000000
!           BEGIN                                              <<D9938>>09005000
!           <<WRITE OUT THE REMAINING SECTORS (PARTIAL RECORD>><<D9938>>09010000
!           READISC(DUMPBUF(HEADR),VESTIGE,SECTORNUM);         <<D9938>>09015000
!           OUTPUTDUMP(DUMPBUF(HEADR),VESTIGE);                <<D9938>>09020000
!           END;                                               <<D9938>>09025000
!        END  <<WHILE>>;                                       <<D9938>>09030000
!     END  <<DUMPSYSDISC>>;                                    <<D9938>>09035000
                                                               <<L1186>>09040010
   SUBROUTINE DUMPAPPENDFILES;                                 <<L1186>>09040020
      BEGIN                                                    <<L1186>>09040030
      FOR FILECOUNT := 0 UNTIL 3 DO                            <<L1186>>09040040
         BEGIN                                                 <<L1186>>09040050
         CASE FILECOUNT OF                                     <<L1186>>09040060
            BEGIN                                              <<L1186>>09040070
                                                               <<L1186>>09040080
               IF CTNUMSECTFILE1 <> 0 THEN                     <<L1186>>09040090
    <<LOADMAP>>   BEGIN                                        <<L1186>>09040100
                  PRINTSTRING(DUMPING'FILE,,%320);             <<L1186>>09040120
                  PRINTSTRING(DUMPING'LOADMAP,,%320);          <<L1186>>09040130
                  PRINTSTRING(DUMPING'PUBSYS);                 <<L1186>>09040140
                  CTNUMSECTFILE  := CTNUMSECTFILE1;            <<L1186>>09040150
                  CTDISCADDRFILE := CTDISCADDRFILE1;           <<L1186>>09040160
                  END                                          <<L1186>>09040170
               ELSE GO NEXTFILE;                               <<L1186>>09040180
                                                               <<L1186>>09040190
               IF CTNUMSECTFILE2 <> 0 THEN                     <<L1186>>09040200
    <<MPECHECK>>  BEGIN                                        <<L1186>>09040210
                  PRINTSTRING(DUMPING'FILE,,%320);             <<L1186>>09040230
                  PRINTSTRING(DUMPING'MPECHECK,,%320);         <<L1186>>09040240
                  PRINTSTRING(DUMPING'PUBSYS);                 <<L1186>>09040250
                  CTNUMSECTFILE  := CTNUMSECTFILE2;            <<L1186>>09040260
                  CTDISCADDRFILE := CTDISCADDRFILE2;           <<L1186>>09040270
                  END                                          <<L1186>>09040280
               ELSE GO NEXTFILE;                               <<L1186>>09040290
                                                               <<L1186>>09040300
               IF CTNUMSECTFILE3 <> 0 THEN                     <<L1186>>09040310
    <<CONFDATA>>  BEGIN                                        <<L1186>>09040320
                  PRINTSTRING(DUMPING'FILE,,%320);             <<L1186>>09040340
                  PRINTSTRING(DUMPING'CONFDATA,,%320);         <<L1186>>09040350
                  PRINTSTRING(DUMPING'PUBSYS);                 <<L1186>>09040360
                  CTNUMSECTFILE  := CTNUMSECTFILE3;            <<L1186>>09040370
                  CTDISCADDRFILE := CTDISCADDRFILE3;           <<L1186>>09040380
                  END                                          <<L1186>>09040390
               ELSE GO NEXTFILE;                               <<L1186>>09040400
                                                               <<L1186>>09040410
               IF CTNUMSECTFILE4 <> 0 THEN                     <<L1186>>09040420
    <<HPPMAP>>    BEGIN                                        <<L1186>>09040430
                  PRINTSTRING(DUMPING'FILE,,%320);             <<L1186>>09040450
                  PRINTSTRING(DUMPING'HPPMAP,,%320);           <<L1186>>09040460
                  PRINTSTRING(DUMPING'PUBSYS);                 <<L1186>>09040470
                  CTNUMSECTFILE  := CTNUMSECTFILE4;            <<L1186>>09040480
                  CTDISCADDRFILE := CTDISCADDRFILE4;           <<L1186>>09040490
                  END                                          <<L1186>>09040500
               ELSE GO NEXTFILE;                               <<L1186>>09040510
                                                               <<L1186>>09040520
            END;  <<CASE>>                                     <<L1186>>09040530
                                                               <<L1186>>09040540
         FOR I := 0 UNTIL INTEGER(CTNUMSECTFILE) DO            <<L1186>>09040550
            BEGIN                                              <<L1186>>09040560
            PERFORMIO(SYSTEMDISC,INPUT,DUMPBUF,SECTORSIZE,     <<L1186>>09040570
               CTDISCADDRFILE+DOUBLE(I));                      <<L1186>>09040580
            OUTPUTDUMP(DUMPBUF,SECTORSIZE);                    <<L1186>>09040590
            END;                                               <<L1186>>09040600
                                                               <<L1186>>09040610
NEXTFILE:                                                      <<L1186>>09040611
         PERFORMIO(SERIALDEVICE,WRITEOF);                      <<L1186>>09040620
                                                               <<L1186>>09040630
         END;  <<FOR>>                                         <<L1186>>09040640
                                                               <<L1186>>09040650
      END  <<DUMPAPPENDFILES>>;                                <<L1186>>09040660
   GO TO IDENT;                                                <<L1186>>09110100
                                                               <<D9938>>09110200
FIND'DEV:  << SEARCH FOR A VALID DUMP DEVICE INCASE OF ERROR.>><<D9938>>09110300
      IF NOT FIND'DDUMP'DEV (DDUMPDRT, DDUMPUNIT) THEN         <<D9938>>09110400
         BEGIN                                                 <<D9938>>09110500
            MODE := INTERACTIVE;                               <<D9938>>09110600
            RETURN;                                            <<D9938>>09110700
         END;                                                  <<D9938>>09110800
      CTDUMPDEVDRT  := DDUMPDRT;                               <<D9938>>09110810
      CTDUMPDEVUNIT := DDUMPUNIT;                              <<D9938>>09110820
IDENT:                                                         <<D9938>>09110900
     IF IDENTIFYDEVICE(CTDUMPDEVDRT&LSL(7)                     <<D9317>>09111000
        LOR CTDUMPDEVUNIT,CTDUMPDEVDESC) THEN                  <<D9317>>09112000
         BEGIN                                                 <<D9317>>09113000
            CHANGEDEVICE(,CTDUMPDEVDESC);                      <<D9317>>09115000
            IF < THEN                                          <<D9317>>09120000
               BEGIN  <<NOT A SERIAL DEVICE>>                  <<D9317>>09125000
                  PRINTSTRING (SPACE);                         <<D9938>>09126000
                  PRINTSTRING(NON'SERIAL'MSG1);                <<D9317>>09130000
                  PRINTSTRING(NON'SERIAL'MSG2,,%320);          <<D9317>>09130050
                  PRINTSTRING(NON'SERIAL'MSG3,,%320);          <<D9317>>09130100
                  PRINTSTRING(NON'SERIAL'MSG4);                <<D9317>>09130150
                  PRINTSTRING(NON'SERIAL'MSG5,,%320);          <<D9317>>09130200
                  PRINTSTRING(TRYAGAIN4);                      <<D9317>>09130250
                  MODE := INTERACTIVE;                         <<D9317>>09130300
                  RETURN;                                      <<D9317>>09135000
               END                                             <<D9317>>09140000
            ELSE IF > THEN                                     <<D9317>>09140050
               BEGIN  <<INVALID DEVICE>>                       <<D9317>>09140100
                  PRINTSTRING (SPACE);                         <<D9938>>09140110
                  PRINTSTRING(BADEVICE);                       <<D9317>>09140150
$EDIT VOID=09140200                                            <<D9938>>09140200
                  GO FIND'DEV;                                 <<D9938>>09140250
               END;                                            <<D9317>>09140300
         END  <<IDENTIFIED DEVICE>>                            <<D9317>>09140350
      ELSE                                                     <<D9317>>09140400
         BEGIN                                                 <<D9317>>09140450
            PRINTSTRING (SPACE);                               <<D9938>>09140460
            ASCII (CTDUMPDEVDRT, -10, BAD'IDENTIFY(21));       <<D9317>>09140500
            ASCII (CTDUMPDEVUNIT, 10, BAD'IDENTIFY(29));       <<D9317>>09140550
            PRINTSTRING(BAD'IDENTIFY,-48);                     <<D9317>>09140600
$EDIT VOID=09140650                                            <<D9938>>09140650
            GO FIND'DEV;                                       <<D9938>>09140700
         END;                                                  <<D9317>>09140750
   IF (CTSYSDISCDEVTYP=T'CS'80)                                <<D9126>>09165000
       AND ((CTSYSDISCSUBTYP=STYPE'A9140)                      <<D9126>>09166000
       LOR  (CTSYSDISCSUBTYP=STYPE'AMERLIN)                    <<01347>>09166500
       LOR  (CTSYSDISCSUBTYP=STYPE'A9144))                     <<D9126>>09167000
       <<A LINUS/BUFFALO SECTOR IS 4 TIMES AS LARGE AS A DISC>><<D9126>>09180000
   PRINTSTRING(REAL'DUMP'BEGIN);                               <<D9938>>09206000
$EDIT VOID=09215000                                            <<D9938>>09210000
   BANKNUM:=CTNUMBERBANKS-1;                                   <<D9938>>09220000
$EDIT VOID=09225000                                            <<D9938>>09225000
     PERFORMIO(SERIALDEVICE,REWIND);                           <<D9126>>09247000
      OR CTDUMPDEVSUBTYP=STYPE7978                             <<D1272>>09265000
      OR CTDUMPDEVSUBTYP=STYPEHERO)                            <<D1272>>09266000
     PERFORMIO(SERIALDEVICE,REWIND);                           <<D9126>>09287000
   IF    (CTDUMPDEVTYPE=TMAGTAPE)                              <<D9126>>09297000
     AND (CTDUMPDEVSUBTYP=STYPE7970) THEN                      <<D9126>>09297500
      PERFORMIO(SERIALDEVICE,REWIND);                          <<D9126>>09298000
                                                               <<D9938>>09336000
   PRINTSTRING(REAL'DUMP'END);                                 <<D9938>>09337000
                                                               <<D9938>>09338000
   PERFORMIO(SERIALDEVICE,WRITEOF);                            <<D9938>>09339000
         BEGIN                                                 <<L1027>>09356000
         PRINTSTRING(BADMSG,,%320);                            <<L1027>>09357000
         PRINTSTRING(BADSYSTEMDISC);                           <<L1027>>09360000
         END                                                   <<L1027>>09361000
$EDIT VOID=09375000                                            <<D9938>>09375000
         IF CTMODE = BACKUP THEN                               <<L1027>>09380500
            BEGIN                                              <<L1027>>09381000
               PRINTSTRING(BADMSG,,%320);                      <<L1027>>09381500
               PRINTSTRING(BADDUMPMODE);                       <<L1027>>09382000
               GO CLOSE'DDUMP'DEVICE;                          <<L1027>>09382500
            END;                                               <<L1027>>09383000
         DSTADDR := CTDSTADDR;                                 <<L1027>>09385000
         GETAREA(DOUBLE(DSTADDR),LASTDATASEG);                 <<L1027>>09390000
         GETAREA(DOUBLE(DSTADDR+1),DSTENTRYLEN);               <<L1027>>09390500
         IF (LOGICAL(LASTDATASEG) <> CTNUMDST'S)               <<L1027>>09391000
            OR (DSTENTRYLEN <> 4) THEN                         <<L1027>>09391500
            BEGIN                                              <<L1027>>09392000
             PRINTSTRING(BADMSG,,%320);                        <<L1027>>09392200
             PRINTSTRING(BADDSTHEADER);                        <<L1027>>09392500
             GO CLOSE'DDUMP'DEVICE;                            <<L1027>>09393000
            END;                                               <<L1027>>09393500
         <<DO>> CASE PARMVALUE-1 OF                            <<D9938>>09395000
            <<DUMPSYSDISC>>;               <<DISC>>            <<D9938>>09410000
            END;                                               <<D9938>>09415000
!        UNTIL NOT GETNEXTPARM(DUMPDICT,TYPE,PARMVALUE);       <<D9938>>09416000
$EDIT VOID=09417000                                            <<L1186>>09417000
                                                               <<L1027>>09421000
CLOSE'DDUMP'DEVICE:                                            <<L1027>>09423000
   PERFORMIO (SERIALDEVICE,WRITEOF);                           <<L1186>>09423500
   DUMPAPPENDFILES;                                            <<L1186>>09424000
      PERFORMIO(SERIALDEVICE,WRITEOF);                         <<D9938>>09441000
      IF (CTDUMPDEVTYPE=TMAGTAPE) AND                          <<D1370>>09442000
         (CTDUMPDEVSUBTYP=STYPE7974                            <<D1370>>09442500
       OR CTDUMPDEVSUBTYP=STYPE7978                            <<D1370>>09443000
       OR CTDUMPDEVSUBTYP=STYPEHERO)                           <<D1370>>09444000
         THEN  << WE MUST ISSUE A REWIND COMMAND WITH WAIT >>  <<D1370>>09445000
            PERFORMIO(SERIALDEVICE,REWIND);                    <<D1370>>09446000
      GO TO IDENT;                                             <<D9938>>09595100
                                                               <<D9938>>09595200
FIND'DEV:  << SEARCH FOR A VALID DUMP DEVICE INCASE OF ERROR.>><<D9938>>09595300
      IF NOT FIND'DDUMP'DEV (DDUMPDRT, DDUMPUNIT) THEN         <<D9938>>09595400
         BEGIN                                                 <<D9938>>09595500
            MODE := INTERACTIVE;                               <<D9938>>09595600
            RETURN;                                            <<D9938>>09595700
         END;                                                  <<D9938>>09595800
      DRT := DDUMPDRT;                                         <<D9938>>09595900
      UNIT := DDUMPUNIT;                                       <<D9938>>09596000
IDENT:                                                         <<D9938>>09596100
         ELSE IF < THEN                                        <<D9283>>09640050
            BEGIN  <<NOT A SERIAL DEVICE>>                     <<D9283>>09640100
               PRINTSTRING(SPACE);                             <<D9938>>09640110
               PRINTSTRING(NON'SERIAL'MSG1);                   <<D9283>>09640150
               PRINTSTRING(NON'SERIAL'MSG2,,%320);             <<D9283>>09640200
               PRINTSTRING(COMMANDBUF,,%320);                  <<D9283>>09640250
               PRINTSTRING(NON'SERIAL'MSG4);                   <<D9283>>09640300
               PRINTSTRING(NON'SERIAL'MSG5,,%320);             <<D9283>>09640350
               PRINTSTRING(TRYAGAIN4);                         <<D9283>>09640400
            END                                                <<D9283>>09640450
            PRINTSTRING(SPACE);                                <<D9938>>09656000
            GO FIND'DEV;                                       <<D9938>>09661000
         BEGIN                                                 <<D9317>>09676000
            PRINTSTRING(SPACE);                                <<D9938>>09676500
            ASCII (DRT, -10, BAD'IDENTIFY(21));                <<D9317>>09677000
            ASCII (UNIT, 10, BAD'IDENTIFY(29));                <<D9317>>09678000
            PRINTSTRING(BAD'IDENTIFY,-48);                     <<D9317>>09680000
            GO FIND'DEV;                                       <<D9938>>09680500
         END;                                                  <<D9317>>09681000
   INTEGER TYPE,SUBTYPE;                                       <<D9462>>09925000
   IF THISCPU = 5 THEN <<SERIES 68>>                           <<D2706>>09925050
      BEGIN                                                    <<D2706>>09925100
         PRINTSTRING (SERIES68'STRT1'BUG);                     <<D2706>>09925150
         PRINTSTRING (SERIES68'STRT2'BUG);                     <<D2706>>09925160
         ASSEMBLE (HALT 0);                                    <<D2706>>09925200
         RETURN;                                               <<D2706>>09925210
      END;                                                     <<D2706>>09925250
   TYPE:=CTSYSDISCDEVTYP;                                      <<D9462>>09928000
   IF TYPE = T13037 THEN                                       <<D9462>>09935000
      BEGIN                                                    <<D9462>>09935500
         IF SUBTYPE = R7905 OR                                 <<D9462>>09936000
            SUBTYPE = R7906 THEN                               <<D9462>>09936500
            TOS := 1                                           <<D9462>>09937000
         ELSE                                                  <<D9462>>09937500
            TOS := 0;                                          <<D9462>>09938000
      END                                                      <<D9462>>09938500
   ELSE                                                        <<D9462>>09939000
      TOS := 0;                                                <<D9462>>09939500
   DO                                                          <<D9938>>10003000
      GETNEXTCOMMAND(COMMANDBUF)                               <<D9938>>10005000
   UNTIL COMMANDBUF <> %15;                                    <<D9938>>10007000
         TOS:=TRUE;                           <<IOMAP>>        <<D9938>>10091000
         TOS:=TRUE;                           <<PROMPT>>       <<D9188>>10093000
            BEGIN                             <<HALT>>         <<D9188>>10171000
               PRINTSTRING (HALTMESSAGE1);                     <<D9188>>10172000
               PRINTSTRING (HALTMESSAGE2);                     <<D9188>>10173000
               ASSEMBLE    (HALT 0);                           <<D9188>>10175000
            END;                                               <<D9188>>10176000
            IOMAP(DDUMPDRT,DDUMPUNIT);        <<IOMAP>>        <<D9938>>10185010
            BEGIN                             <<PROMPT>>       <<D9188>>10186000
               PRINTSTRING(COMMANDBUF(7));                     <<D9188>>10187000
               PRINTSTRING(CONTINUEMESSAGE,,%320);             <<D9188>>10188000
               COUNT:=READ(COMMANDBUF,-1);                     <<D9188>>10189000
            END;                                               <<D9188>>10189500
