<< LINES .001/.009 ARE RESERVED FOR SYSTEMS INTEGRATION>>               00000001
INTEGER ARRAY BK1DSEG(0:7):= 8(0);                             <<06259>>00117000
          EXPTABLES =    15,         <<# OF EXPANDABLE TABLES>><<CONFD>>00140000
$EDIT                                                          <<CONFD>>00150000
  EQUATE  LDTSIZE   =    7,          <<LOGICAL DEVICE TABLE>>  <<dctab>>00178000
          LPDTSIZE  =    4,          <<LOGICAL-PHYSICAL DEV>>  <<dctab>>00182000
          DVRSIZE   =    7,          <<DRIVER TABLE>>          <<dctab>>00184000
$EDIT                                                          <<*pcb*>>00194000
          IOQSIZE   =    12,         <<I/O QUEUE>>             <<06354>>00196000
          DISCREQSIZE=  17,                                    <<.DRQ.>>00198000
          SWAPTABSIZE = 6,                                     <<*sll5>>00214000
          SIRSIZE   =    4,          <<SIR TABLE>>             <<*SIR*>>00220000
          NSIR      =    43,          <<# OF SIRS>>            <<.DRQ.>>00222000
$EDIT                                                          <<PORTS>>00224000
          SRTSIZE   =   6,                                     <<*SLL*>>00226000
$EDIT                                                          <<PORTS>>00232000
          JMATSIZE  =    38,         <<JOB MASTER TABLE>>      <<JMAT*>>00244000
          MAXJMATSIZE = 150,  <<MAX # SECTORS JMAT CAN BE>>    <<JMAT*>>00246000
          TLTSIZE   =    65,         <<TAPE LABEL TABLE>>      <<06259>>00256000
          MAXSTOPSIZE =   14,        <<MAX STOP ENTRY SIZE>>   <<BRKPT>>00258000
          MINSTOPSIZE =   7,         <<MIN STOP ENTRY SIZE>>   <<BRKPT>>00260000
          DCTHSIZE =  6,  <<HEADER SIZE OF DEV CLASS TAB >>    <<DEVCO>>00261000
  EQUATE  MAXLDEV   =    1024,                                 <<LIMIT>>00271000
$EDIT VOID=00278000                                            <<DEVCO>>00272000
$EDIT                                                          <<DEVCO>>00279000
$EDIT VOID=00284000                                            <<DEVCO>>00282000
$EDIT                                                          <<DEVCO>>00310000
$EDIT                                                          <<DEVCO>>00314000
$EDIT                                                          <<DEVCO>>00315000
$EDIT                                                                   00315500
$EDIT                                                          <<CONFD>>00318000
$EDIT                                                          <<DEVCO>>00336000
          CSDEFSIZE =    MAXLDEV,<<DEFAULT LINE DESCRIPTORS>>  <<LIMIT>>00338000
$EDIT                                                          <<DEVCO>>00346000
          MAXSJDTSIZE=   %1000,      <<MAX SIZE OF SYS JDT>>   <<zrela>>00350000
          COMMSIZE   =   128,  <<SYSDUMP/INITIAL COMM>>        <<CONFD>>00350500
          RECBUFLEN  =   4095,                                 <<zrela>>00351000
          TZTBUFLEN  =    255;                                 <<zrela>>00352000
          PORT'DICT'DSTN=17,         << PORT DICTIONARY>>      <<PORTS>>00446000
          DCTDSTN   =    40,         <<DEV CLASS & TTDT TABLE>><<dctab>>00491000
$EDIT                                                          <<SYPTR>>00492000
$EDIT                                                          <<SYPTR>>00520000
          MSGHARBORTABDSTN=57,       <<"INCORE" IPC FACILITY>> <<PORTS>>00524000
          PORTVECTORDSTN=58,      <<IOWAIT PORT VECTOR TABLE>> <<PORTS>>00526000
          << THE FOLLOWING ARE TEMP DSTS USED BY INITIAL >>    <<06259>>00528500
          ILTDSTN = JMATDSTN,                                  <<06259>>00528600
          DITDSTN = TLTDSTN,                                   <<06259>>00528700
          TEMPDSTN = RITDSTN,                                  <<06259>>00528800
          SYSIX     =    0,          <<SYSGLOBAL>>             <<06259>>00569000
          SWAPTABIX =    %4,                                   <<SYPTR>>00582000
          SYSSWAPTAB=    SYSBASE+SWAPTABIX,                    <<SYPTR>>00584000
$EDIT VOID=00604000                                            <<06259>>00602000
          MONBUFIX  =    %11,        <<MONITORING BUFFER>>     <<SYPTR>>00606000
          SYSMONBUF =    SYSBASE+MONBUFIX,                     <<SYPTR>>00608000
$EDIT VOID=00624000                                            <<06259>>00622000
          DISCREQTABIX=  %17,                                  <<SYPTR>>00634000
          SYSDISCREQTAB= SYSBASE+DISCREQTABIX,                 <<SYPTR>>00636000
$EDIT VOID=00644000                                            <<06259>>00638000
          TCSTIX    =  %20, << INITIAL'S CST TABLE >>          <<06259>>00639000
          SYSTCST   =  SYSBASE+TCSTIX,                         <<06259>>00640000
          DRTIX     =    %24,                                  <<SYPTR>>00641000
          STOPSIX   =    %25,        <<BREAKPOINT TABLE>>      <<SYPTR>>00646000
          SYSSTOPS  =    SYSBASE+STOPSIX,                      <<SYPTR>>00648000
          STATICFENCE =  %27,                                  <<SYPTR>>00653000
$EDIT VOID=00656000                                            <<SYPTR>>00654000
          SYSPMBC   =    SYSBASE+%37,<<ABS ADDR OF PMBC TABLE>><<PMBC*>>00663000
          SMONINDEX =    %44,                                  <<SYPTR>>00676000
$EDIT                                                          <<SYPTR>>00678000
$EDIT VOID=00710000                                            <<06259>>00704000
$EDIT VOID=00798000  << KILL TRACE PLABEL! >>                  <<06091>>00796000
          MAPPINGFIRMWARE=SYSBASE+%220,<<FIRMWARE EXISTS>>     <<06241>>00820100
          NRPHYCST      =SYSBASE+%224,<<NR PHY CSTS>>          <<06241>>00820200
          PHYCSTHEAD    =SYSBASE+%225,<<PHY CST HEAD>>         <<06241>>00820300
          NMMONSTOP =    SYSBASE+%316,<< NMMON STOP ENTRY >>   <<AL.00>>00847000
          SYSPORT'PIN = %120,                                  <<PORTS>>00909000
EQUATE                                                         <<jb.dc>>00912010
   HOLECOUNTIX = %44,                                          <<jb.dc>>00912020
   HOLELISTHEADIX = %250,                                      <<jb.dc>>00912030
   HOLELISTTAILIX = %252;                                      <<jb.dc>>00912040
DOUBLE ARRAY                                                   <<jb.dc>>00912050
   HOLELISTHEAD(*) = DB + HOLELISTHEADIX,                      <<jb.dc>>00912060
   HOLELISTTAIL(*) = DB + HOLELISTTAILIX;                      <<jb.dc>>00912070
INTEGER                                                        <<jb.dc>>00912110
   HOLECOUNT = DB + HOLECOUNTIX;                               <<jb.dc>>00912120
DEFINE                                                         <<*pcb*>>00922000
        STACKFIELD = (2:14)#,                                  <<*pcb*>>00926000
$EDIT VOID = 00941000                                          <<*pcb*>>00936000
$EDIT                                                          <<*pcb*>>00944000
  EQUATE  PXGLOB    =    12,         <<GLOBAL AREA SIZE>>      <<PCBXG>>01028000
DEFINE                                                         <<SYPTR>>01042100
   LDTX'TERMID   = LDTX(LDTX'INDEX+2)#;                        <<SYPTR>>01042200
$INCLUDE INCLLDTI                                              <<*LDT*>>01043000
$INCLUDE INCLPDTI                                              <<*LPDT>>01043100
$INCLUDE INCLDVR                                               <<*DVR*>>01043300
$INCLUDE INCLDCTI                                              <<dctab>>01043400
$EDIT VOID=01084000                                            <<*LDT*>>01044000
$EDIT VOID=01102000                                            <<*LDT*>>01086000
$EDIT VOID=01126000                                            <<*LDTX>>01106000
$EDIT VOID=01180000                                            <<*LPDT>>01162000
     CSLDTXAUTO'DIAL'LDN = CSLDTX( 4)        #,                <<csdec>>01254000
     CSLDTXDOPTIONS      = CSLDTX( 5)        #,                <<csdec>>01255000
     CSLDTXRECV'TIMEOUT  = CSLDTX( 6)        #,                <<csdec>>01256000
     CSLDTXLOCAL'TIMEOUT = CSLDTX( 7)        #,                <<csdec>>01257000
     CSLDTXCONCT'TIMEOUT = CSLDTX( 8)        #,                <<csdec>>01258000
     CSLDTXINSPEED       = CSLDTX( 9)        #,  << 2 WORDS >> <<csdec>>01259000
     CSLDTXOUTSPEED      = CSLDTX(11)        #,  << 2 WORDS >> <<csdec>>01260000
     CSLDTXPBUFFSIZE     = CSLDTX(13)        #,                <<csdec>>01261000
     CSLDTXLDEV          = CSLDTX(14)        #,                <<csdec>>01262000
     CSLDTXDRINDEX       = CSLDTX(15).(8: 8) #,                <<csdec>>01263000
     CSLDTXCONTPTR       = CSLDTX(16)        #,                <<csdec>>01264000
     CSLDTXIDLISTPTR     = CSLDTX(17)        #,                <<csdec>>01265000
     CSLDTXPHLISTPTR     = CSLDTX(18)        #,                <<csdec>>01266000
     CSLDTXDUMP'DATE     = CSLDTX(34)        #,                <<csdec>>01267000
     CSLDTX'DEV'DUMPED   = CSLDTX(35).(0: 1) #,                <<csdec>>01268000
     CSLDTXCUR'DUMP'NUM  = CSLDTX(35).(8: 8) #,                <<csdec>>01269000
     CSLDTXMAX'DUMPS     = CSLDTX(36)        #;                <<csdec>>01270000
$EDIT VOID=01288000                                            <<csdec>>01272000
     CONTROLP            = ABS(DITADR+9)        #;             <<06259>>01336000
$EDIT VOID=01388000                                            <<06259>>01339000
DEFINE     << CS STANDARD DIT FIELDS >>                        <<06259>>01340000
     CSSUBTYPE           = ABS(STDADR+ 2).(0: 4)#,             <<06259>>01342000
     CSDEVTYPE           = ABS(STDADR+ 2).(4: 6)#,             <<06259>>01344000
     CSLCN               = ABS(STDADR+ 2).(10:6)#,             <<06259>>01346000
     CSMODE              = ABS(STDADR+ 6).(6: 4)#,             <<06259>>01348000
     CSCODE              = ABS(STDADR+ 6).(10:6)#,             <<06259>>01350000
     CSPROTOCOL          = ABS(STDADR+ 7).(0: 8)#,             <<06259>>01352000
     CSDOPTIONS          = ABS(STDADR+ 8)       #,             <<06259>>01354000
     CSHSI'CHAN          = ABS(STDADR+ 9).(3: 4)#,             <<06259>>01356000
     CSDUAL'SPEED        = ABS(STDADR+ 9).(8: 1)#,             <<06259>>01358000
     CSHALF'SPEED        = ABS(STDADR+ 9).(9: 1)#,             <<06259>>01360000
     CSXMSN'MODE         = ABS(STDADR+ 9).(10:2)#,             <<06259>>01362000
     CSSPEED'CHNGBLE     = ABS(STDADR+ 9).(12:1)#,             <<06259>>01364000
     CSANSWER            = ABS(STDADR+ 9).(13:2)#,             <<06259>>01366000
     CSDIAL              = ABS(STDADR+ 9).(15:1)#,             <<06259>>01368000
     CSRECV'TIMEOUT      = ABS(STDADR+11)       #,             <<06259>>01370000
     CSLOCAL'TIMEOUT     = ABS(STDADR+12)       #,             <<06259>>01372000
     CSCONCT'TIMEOUT     = ABS(STDADR+13)       #,             <<06259>>01374000
     CSINSPEED           = ABS(STDADR+14)       #,<< 2 WORDS >><<06259>>01376000
     CSOUTSPEED          = ABS(STDADR+16)       #,<< 2 WORDS >><<06259>>01378000
<<   CSTRACEINFO         = ABS(STDADR+31)       #,>>           <<06259>>01380000
<<   CSTRACEALL          = ABS(STDADR+31).(0: 1)#,>>           <<06259>>01382000
<<   CSTRACEMASK         = ABS(STDADR+31).(1: 7)#,>>           <<06259>>01384000
<<   CSTRACENTNUM        = ABS(STDADR+31).(8: 8)#,>>           <<06259>>01386000
     CSMAXRETRIES        = ABS(STDADR+32).(0: 8)#;             <<06259>>01388000
          CONTRSTART=    37,<<CONTROL TRIBUTARY >>             <<depen>>01418000
          CSSHOWCOMLEN=  20,                                   <<CSSEG>>01422000
          CSSHOWCOMINFO= 19,<<SHOWCOMINFO START IN >>          <<CSSEG>>01424000
$EDIT VOID=01452000                                            <<*LPDT>>01452000
$EDIT VOID=01454000                                            <<*LPDT>>01454000
$EDIT VOID=01456000                                            <<*LPDT>>01456000
$EDIT VOID=01458000                                            <<*LPDT>>01458000
          CSDEVICE  =    CSDEV17<=LDT'DEVICE'TYPE<=CSDEV19#,   <<*LDT*>>01462000
$EDIT VOID=01496000                                            <<*DVR*>>01476000
  EQUATE  CTABCURVERSION = 1;   << CURRENT VERSION OF CTAB>>   <<CONFD>>01551000
  EQUATE  CTABCHECKSUM = 0,          <<CHECKSUM OF CTAB>>      <<CONFD>>01552000
          CTABVERSION =  1,          <<VERSION OF CTAB>>       <<CONFD>>01554000
          CORESIZE  =    3,          <<CORE SIZE IN K WORDS>>  <<CONFD>>01558000
$EDIT                                                                   01572000
$EDIT VOID=01598000                                            <<CONFD>>01578000
$EDIT VOID=01604000                                            <<CONFD>>01602000
          EXTSSECT' =    33;        <<SECTORS/SPOOLFILE EXT>>  <<CONFD>>01610000
$EDIT VOID=01633000                                            <<CONFD>>01612000
$EDIT VOID=01642000                                            <<CONFD>>01636000
                                                               <<CONFD>>01636100
   <<----------------------------------->>                     <<CONFD>>01636200
   <<   SYSDUMP/INITIAL COMMUNICATION   >>                     <<CONFD>>01636300
   <<----------------------------------->>                     <<CONFD>>01636400
                                                               <<CONFD>>01636500
   EQUATE MITVERSION     =  0,                                 <<CONFD>>01636600
          MITUPDATE      =  1,                                 <<CONFD>>01636700
          MITFIX         =  2,                                 <<CONFD>>01636800
          VERSION'       =  3,                                 <<CONFD>>01636900
          UPDATEL'       =  4,                                 <<CONFD>>01637000
          FIXLEVEL'      =  5,                                 <<CONFD>>01637100
          EXPFLAG'       =  6,                                 <<CONFD>>01637200
          DRTNUM         =  7,                                 <<CONFD>>01637300
          HLDEV'         =  8,                                 <<CONFD>>01637400
          HVOL'          =  9,                                 <<CONFD>>01637500
          NUMADVRS       = 10,                                 <<CONFD>>01637600
          COLDLOADID'    = 11,                                 <<CONFD>>01637700
          FILESDUMPED    = 12,                                 <<CONFD>>01637800
          SERIALDISCLOAD'= 13,                                 <<CONFD>>01637900
          TAPERECSIZE'   = 14,                                 <<CONFD>>01638000
          DISCENTRY'     = 15,                                 <<CONFD>>01638100
          MAXINITSEG'    = 16,                                 <<CONFD>>01638200
          DVCLSIZE'      = 20,                                 <<CONFD>>01638300
          TTDTSIZE'      = 21,                                 <<CONFD>>01638400
          OLDVTABSIZE    = 22,                                 <<CONFD>>01638500
          OLDINFOSIZE    = 23,                                 <<CONFD>>01638600
          CSTABSIZE      = 24,                                 <<CONFD>>01638700
          ID0            = 30,                                 <<CONFD>>01638800
          ID1            = 31,                                 <<CONFD>>01638900
          ID2            = 32,                                 <<CONFD>>01639000
          ID3            = 33,                                 <<CONFD>>01639100
          LOGFILENUM'    = 40; << LOG FILE NUMBERT >>          <<CONFD>>01639200
          LSTSIZE   =    14,         <<LOADER SEG TABLE>>      <<.LST.>>01683000
          NOCREATE  =    (8:1)#,     <<1=DON'T PROCREATE>>     <<06259>>01865000
          DLDEV     =    3#,         <<LDEV NUMBER>>           <<06301>>01990000
          DPCBN     =    8#,         <<PROCESS PIN>>           <<06301>>01996000
          DUNIT     =   10#;         <<IOT + UNIT NUMBERS>>    <<06301>>01997000
  EQUATE  IOHEADSIZE=    12,         <<TABLE HEADER>>          <<06354>>02006000
$INCLUDE INCLREGI                                              <<06208>>02027000
$EDIT VOID=02108000                                            <<06208>>02028000
$EDIT                                                          <<06208>>02116000
<<******    # 1 IS FREE   *******************>>                <<PORTS>>02326000
          NMMONPROC =    5,          << NM MONITOR PROCESS >>  <<AL.00>>02334000
          NMMONSTACK =   4096,       << NM MONITOR STACK >>    <<AL.00>>02362000
          SYSPORTSTACK = 3500,       <<ICS PORT SERVER STACK>> <<PORTS>>02373000
          NMMONPRI  =    149,        << NM MONITOR PRI >>      <<AL.00>>02405000
          SYSPORTPRI =   149,        <<ICS PORT SERVER PRI>>   <<PORTS>>02407000
           MEMLGSBIT =     4,           <<MEMLOGP>>            <<AL.00>>02426000
           NMMONBIT  =     5;           << NM MONITOR >>       <<AL.00>>02427000
EQUATE SEGDIRLEN= 730,   <<DIRECTORY SIZE>>                    <<06091>>02436000
       SEGTPDB  = 38,    <<PRIMARY DB AREA>>                   <<06091>>02438000
       SEG'HEAD = 20,    <<ADR OF HEAD LINKS FOR ENTRIES>>     <<06091>>02439000
       SEG'TAIL = 29,    <<ADR OF TAIL LINKS FOR ENTRIES>>     <<06091>>02439100
       SEGTABMAX= 16380, <<MAX DATA SEG SIZE>>                 <<06091>>02440000
       SEGLCTLEN= 22,    <<LENGTH OF LCT>>                     <<06091>>02441000
$EDIT VOID=02456000                                            <<DEVCO>>02452000
  DEFINE  CTAB0RECNUM=   0D#,        <<STD CONFIGURATION RECORD<<DEVCO>>02458000
                                                               <<DEVCO>>02460300
          <<------------------------------->>                  <<DEVCO>>02460400
          <<   DEVICE CONFIGURATION FILE   >>                  <<DEVCO>>02460500
          <<------------------------------->>                  <<DEVCO>>02460600
                                                               <<DEVCO>>02460700
  DEFINE  DEVCHECKSUM   = DEVREC0#,  <<RECORD 0 CHECKSUM>>     <<DEVCO>>02460800
          DEVVERSION    = DEVREC0(1)#, << FILE VERSION >>      <<DEVCO>>02460900
          DEVNEXT       = DEVREC0(2)#, << NEXT AVAIL REC >>    <<DEVCO>>02461000
          DEVHLDEV      = DEVREC0(3)#, << HIGHEST LDEV >>      <<DEVCO>>02461100
          DEVHDRT       = DEVREC0(4)#, << HIGHEST DRT  >>      <<DEVCO>>02461200
          DEVNRADVRS    = DEVREC0(5)#; << NR ADD'L DVR >>      <<DEVCO>>02461300
                                                               <<DEVCO>>02461400
  EQUATE  DEVTABENTRIES =  64, << START TABLE OF ENTRIES >>    <<DEVCO>>02461500
          DEVREC0SIZE   = 128, << SIZE OF PARMS REC >>         <<DEVCO>>02461510
          DEVCURVERSION =   1; << CURRENT DEV FILE VERSION >>  <<DEVCO>>02461600
  EQUATE  DEVDVR        =  0,    << DRIVER TABLE >>            <<DEVCO>>02461700
          DEVLPDT       =  1,    << LPDT         >>            <<DEVCO>>02461800
          DEVLDT        =  2,    << LDT          >>            <<DEVCO>>02461900
          DEVLDTX       =  3,    << LDTX         >>            <<DEVCO>>02462000
          DEVDCTH       =  4,    << DEV CLASS HDR>>            <<DEVCO>>02462100
          DEVDCT        =  5,    << CLASS TABLE  >>            <<DEVCO>>02462200
          DEVTTDT       =  6,    << TTDT         >>            <<DEVCO>>02462300
          DEVCSDVR      =  7,    << ADD'L CS DVR >>            <<DEVCO>>02462400
          DEVCSDEF      =  8,    << CS DEF TABLE >>            <<DEVCO>>02462500
          DEVCSTAB      =  9;    << CS TABLE     >>            <<DEVCO>>02462600
                                                               <<DEVCO>>02462700
$EDIT                                                                   02630000
          NTABLES   =    15,         <<#ENTS IN TABLE AREA>>   <<06067>>02680000
          DVRINFOX  =     0,    <<DRIVER TABLE>>                        02682000
          CTAB0INFOX=     5,    <<STD CONFIGURATION>>                   02684000
          CTABINFOX =    10,    <<CORESIZE-RELATED CONFIGURATION>>      02686000
          CSDVRINFOX=    15,    <<EXTRA CS DRIVERS>>                    02688000
          CSDEFINFOX=    20,    <<DEFAULT LINE DESCRIPTORS>>            02690000
          CSTABINFOX=    25,    <<CS DATA SEGMENT>>                     02692000
          LPDTINFOX =    30,    <<LOG-PHYS DEVICE TABLE>>               02694000
          LDTINFOX  =    35,    <<LOGICAL DEVICE TABLE>>                02696000
          DVCLINFOX =    40,    <<DEVICE CLASS TABLE>>                  02698000
          VTABINFOX =    45,    <<VOLUME TABLE>>                        02700000
          LDTXINFOX =    50,    <<LOG. DEV. TABLE EXTENSION>>           02702000
          STACKINFOX=    55,    <<STACK FOR INITIAL>>                   02703000
          DCTHINFOX    = 60,    << DEV CLASS TAB HDR >>                 02703010
          TTDTINFOX =    65,    <<TERMTYPE DESC TAB>>                   02704000
          COMMINFOX =    70;    <<SYSDUMP/INITIAL COMM>>                02705000
          <<----------------------->>                          <<CONFD>>02716100
          <<  COLD LOAD EXT TABLE  >>                          <<CONFD>>02716200
          <<----------------------->>                          <<CONFD>>02716300
                                                               <<CONFD>>02716400
  DEFINE  CLEXTSECT       = 32D#;                              <<CONFD>>02716500
  EQUATE  LOG'FILE'NUM'   = 21;                                <<CONFD>>02716600
                                                               <<CONFD>>02716700
          BOOTQI    =    32,         <<QI FOR BOOTSTRAP>>      <<06259>>02732000
          BOOTQI    =    32,         <<QI FOR BOOTSTRAP>>      <<06259>>02744000
  DEFINE  COMMSECTOR  = 31D#;                                  <<CONFD>>02755000
 FLFCBVECT   =FLABDBL(16)#,    << FCB VECTOR >>                <<*FLAB>>02844000
 FLPVINFO    =FLAB (27) #,     << PVINFO WORD >>               <<*FLAB>>02848000
  EQUATE  LYNX'BOARD  = %50017,                                <<SYPTR>>03002000
          ADCC'MAIN   = %100001,                               <<SYPTR>>03003000
          ADCC'EXT    = %100021;                               <<SYPTR>>03004000
  EQUATE NPROTECTED=    12;                                    <<DEVCO>>03108000
  EQUATE NPROTECTED=    32;                                    <<DEVCO>>03112000
  EQUATE XDDSUBSIZE=    32,    <<XDD SUBENTRY SIZE>>           <<*XDD*>>03124000
          FLABADR1  =    22,                                   <<*XDD*>>03146000
          LINKW     =    27,                                   <<*XDD*>>03148000
          NUMEXT    =    24,                                   <<*XDD*>>03150000
          LASTEXT   =    25,   <<LAST EXTENT SIZE>>            <<*XDD*>>03152000
          XDDEOF    =    28,                                   <<*XDD*>>03154000
          JMATSUBSIZE=   38;                                   <<*XDD*>>03156000
          IDDREST   =    26).(2:1#,                            <<*XDD*>>03172000
          VDVFLD    =    21#,                                  <<*XDD*>>03174000
          SQUEEZE  =    26).(0:1#,                             <<*XDD*>>03176000
   M137    = 137,                                              <<LIMIT>>03344100
                  TCLASS=TABLEPTRS+4, << TEMP CLASS TABLE >>   <<tclas>>03841000
$EDIT VOID=03848000                                            <<zrela>>03842000
                  DCT'HEAD=TABLEPTRS+5, << DCTAB HEADER>>      <<tclas>>03848010
                  DCTAB   =TABLEPTRS+6, <<DEVICE CLASS TABLE>> <<tclas>>03848011
                  TTDT=TABLEPTRS+7,  <<TERMTYPE DESCR TAB>>    <<tclas>>03848020
                  VTAB=TABLEPTRS+8,  <<VOLUME TABLE>>          <<tclas>>03850000
                  OLDVTAB=TABLEPTRS+9, <<OLD VOLUME TABLE>>    <<tclas>>03852000
                  OLDINFO=TABLEPTRS+10,<<OLD INFO TABLE>>      <<tclas>>03854000
                  RECBUF= TABLEPTRS+11,                        <<tclas>>03855000
                  TZTBUF = TABLEPTRS + 12,                     <<tclas>>03855100
                  CTAB=TABLEPTRS+13, <<CORESIZE-RELATED>>      <<CONFD>>03856000
                  CTAB0=TABLEPTRS+14,<<STD CONFIGURATION>>     <<CONFD>>03858000
                  COMM = TABLEPTRS+15;<<SYSDUMP/INITIAL COMM>> <<CONFD>>03859000
$EDIT VOID=03860000                                            <<dctab>>03860000
  INTEGER POINTER FDVCLTAB = DCT'HEAD;                         <<dctab>>03861100
  GLOBAL INTEGER POINTER LDT,                                  <<zrela>>03861110
                         LPDT;                                 <<zrela>>03861200
  INTEGER POINTER        LDTX,                                 <<zrela>>03861300
                         DVRTAB;                               <<zrela>>03861400
          TCLASSINCR=TABLEINCRS+4,   << TEMP CLASS TABLE >>    <<tclas>>03871000
$EDIT VOID=03877999                                            <<zrela>>03872000
$EDIT VOID=03878000                                            <<zrela>>03878000
$EDIT VOID=03880000                                            <<zrela>>03878001
          << NO INCREMENT NEEDED FOR DCT'HEAD        >>        <<zrela>>03880010
          DCTABINCR=TABLEINCRS+6,  <<DEVICE CLASS TABLE>>      <<tclas>>03880011
          TTDTINCR   =TABLEINCRS+7,  <<TERMTYPE DESCR TAB>>    <<tclas>>03880020
          VTABINCR   =TABLEINCRS+8,  <<VOLUME TABLE>>          <<tclas>>03882000
          << NO INCREMENT NEEDED FOR OLDVTAB           >>      <<zrela>>03883000
          OLDINFOINCR=TABLEINCRS+10, <<OLD INFO TABLE>>        <<tclas>>03884000
          RECBUFINCR = TABLEINCRS + 11,                        <<tclas>>03885000
          TZTBUFINCR = TABLEINCRS + 12;                        <<CONFD>>03885100
$EDIT                                                          <<CONFD>>03886000
  INTEGER POINTER FDVCLTABINCR = DCTABINCR;                    <<dctab>>03887000
$EDIT                                                          <<SYPTR>>03888000
$EDIT                                                          <<JPCNT>>03900000
$EDIT VOID=03908000                                            <<06259>>03904000
   LOGICAL POINTER JPCNT = JPCNTIX; <<JOB PROCESS COUNT TAB>>  <<JPCNT>>03913000
  LOGICAL POINTER VDSMTAB=VDSMTABIX; << VM MGT TABLE >>        <<06259>>03914000
$EDIT VOID=03918000                                            <<06259>>03916000
$EDIT                                                          <<SYPTR>>03920000
  INTEGER POINTER SWAPTAB=SWAPTABIX,                           <<SYPTR>>03922000
$EDIT VOID=03936000                                            <<06259>>03930000
                  SYS = SYSIX,                                 <<06259>>03931000
                  TCST = TCSTIX, << INITIAL'S CST TABLE >>     <<06259>>03932000
                  SLL  = SWAPTABIX, << SWAP TABLE >>           <<*SLL*>>03933000
$EDIT                                                          <<06259>>03952000
  INTEGER POINTER RIN,               <<RIN TABLE>>             <<06259>>03956000
                  TABLEINFO,         <<INFO TAB AREA>>                  03957000
                  OLDTABLEINFO,      <<OLD INFO TAB>>                   03957100
                  TCSTINFO,          <<INFO TEMP CST>>                  03957200
                  OLDTCSTINFO,       <<OLD INFO TEMP CST>>              03957300
$EDIT                                                          <<CONFD>>03958000
$EDIT                                                          <<CONFD>>03960000
$EDIT VOID=03962000                                            <<*DVR*>>03962000
$EDIT VOID=03974000                                            <<*LDT*>>03974000
$EDIT VOID=03976000                                            <<*LDTX>>03976000
$EDIT VOID=03978000                                            <<*LPDT>>03978000
$EDIT VOID=03992000                                            <<06091>>03990000
<< LINES .001/.009 ARE RESERVED FOR SYSTEMS INTEGRATION>>      <<*pcb*>>04016000
Comment                                                        <<*pcb*>>04016010
<<=========================================================    <<*pcb*>>04016100
=                                                         =    <<*pcb*>>04016200
=                  INCLPCB - A2                           =    <<*pcb*>>04016300
=                                                         =    <<*pcb*>>04016400
=========================================================>>    <<*pcb*>>04016500
;                                                              <<*pcb*>>04016510
                                                               <<*pcb*>>04016600
                                                               <<*pcb*>>04016700
Comment                                                        <<*pcb*>>04016800
                                                               <<*pcb*>>04016900
   When using this include file please be aware of the followin<<*pcb*>>04017000
requirements :                                                 <<*pcb*>>04017100
                                                               <<*pcb*>>04017200
   (1)  PCBPT is a logical variable which is the result of     <<*pcb*>>04017300
        multiplying the pin number by PCBSIZE, thus yielding   <<*pcb*>>04017400
        a PCB base relative index of the first word of the pin <<*pcb*>>04017500
        in question.                                           <<*pcb*>>04017600
                                                               <<*pcb*>>04017700
   (2)  PCB should be a logical pointer equated to SYSPCBINDEX.<<*pcb*>>04017800
                                                               <<*pcb*>>04017900
   (3)  As a general rule only the SPCB..... declarations are  <<*pcb*>>04018000
        necessary for modules outside the KERNEL.              <<*pcb*>>04018100
                                                               <<*pcb*>>04018200
   (4)  When accessing a particular field within one's own     <<*pcb*>>04018300
        PCB , please use the CURPRC (current process) to       <<*pcb*>>04018400
        set the value of PCBPT.                                <<*pcb*>>04018500
                                                               <<*pcb*>>04018600
   (5)  At all costs avoid the use of ABSOLUTE constructs when <<*pcb*>>04018700
        accessing the PCB and for that matter any other system <<*pcb*>>04018800
        tables which could reside outside of bank 0.           <<*pcb*>>04018900
                                                               <<*pcb*>>04019000
;                                                              <<*pcb*>>04019100
<< Equates for the Process Control Block Table >>              <<*pcb*>>04019200
                                                               <<*pcb*>>04019300
EQUATE                                                         <<*pcb*>>04019400
                                                               <<*pcb*>>04019500
   RESABORTINFOWORDNUM         = 0,                            <<*pcb*>>04019600
   SLLIXWORDNUM                = 1,                            <<*pcb*>>04019700
   DBXDSINFOWORDNUM            = 2,                            <<*pcb*>>04019800
   STKINFOWORDNUM              = 3,                            <<*pcb*>>04019900
   WAKEMASKWORDNUM             = 4,                            <<*pcb*>>04020000
   FATHERINFOWORDNUM           = 5,                            <<*pcb*>>04020100
   SONINFOWORDNUM              = 6,                            <<*pcb*>>04020200
   BROTHERINFOWORDNUM          = 7,                            <<*pcb*>>04020300
   PIINFOWORDNUM               = 8,                            <<*pcb*>>04020400
   PROCSTATEWORDNUM            = 9,                            <<*pcb*>>04020500
   EVENTFLAGSWORDNUM           = 10,                           <<*pcb*>>04020600
<< LASTREFCODEWORDNUM          = 11, >>                        <<*pcb*>>04020700
   QUEUEINGINFOWORDNUM         = 13,                           <<*pcb*>>04020800
   PBXWORDNUM                  = 14,                           <<*pcb*>>04020900
   MAPDSTWORDNUM               = 15,                           <<*pcb*>>04021000
<< PIMPPINWORDNUM              = 16, >>                        <<*pcb*>>04021100
<< NIMPPINWORDNUM              = 17, >>                        <<*pcb*>>04021200
<< BPTLINKWORDNUM              = 18, >>                        <<*pcb*>>04021300
<< NQPTRWORDNUM                = 19, >>                        <<*pcb*>>04021400
   PQPTRWORDNUM                = 20;                           <<*pcb*>>04021500
                                                               <<*pcb*>>04021600
EQUATE                                                         <<*pcb*>>04021700
                                                               <<*pcb*>>04021800
   PCBSIZE                     = 21,                           <<*pcb*>>04021900
   SYSPCBINDEX                 = 3;                            <<*pcb*>>04022000
                                                               <<*pcb*>>04022100
                                                               <<*pcb*>>04022200
LOGICAL POINTER                                                <<*pcb*>>04022300
                                                               <<*pcb*>>04022400
   LPCB                        = 3;                            <<*pcb*>>04022500
                                                               <<*pcb*>>04022600
Comment                                                        <<*pcb*>>04022700
DEFINE                                                         <<*pcb*>>04022800
                                                               <<*pcb*>>04022900
   CURPRC                      = ABSOLUTE(4)#;                 <<*pcb*>>04023000
                                                               <<*pcb*>>04023200
                                                               <<*pcb*>>04023300
DEFINE                                                         <<*pcb*>>04023400
                                                               <<*pcb*>>04023500
   RESABORTINFO        = LPCB(PCBPT + RESABORTINFOWORDNUM)#,   <<*pcb*>>04023600
   SLLPTR              = LPCB(PCBPT + SLLIXWORDNUM)#,          <<*pcb*>>04023700
   DBXDSINFO           = LPCB(PCBPT + DBXDSINFOWORDNUM)#,      <<*pcb*>>04023800
   STKINFO             = LPCB(PCBPT + STKINFOWORDNUM)#,        <<*pcb*>>04023900
   WAKEMASK            = LPCB(PCBPT + WAKEMASKWORDNUM)#,       <<*pcb*>>04024000
   FATHERINFO          = LPCB(PCBPT + FATHERINFOWORDNUM)#,     <<*pcb*>>04024100
   SONINFO             = LPCB(PCBPT + SONINFOWORDNUM)#,        <<*pcb*>>04024200
   BROTHERINFO         = LPCB(PCBPT + BROTHERINFOWORDNUM)#,    <<*pcb*>>04024300
<< BPTLINK             = LPCB(PCBPT + BPTLINKWORDNUM)#, >>     <<*pcb*>>04024400
<< PIMPPIN             = LPCB(PCBPT + PIMPPINWORDNUM)#, >>     <<*pcb*>>04024500
<< EVENTFLAGS          = LPCB(PCBPT + EVENTFLAGSWORDNUM)#, >>  <<*pcb*>>04024600
   PROCSTATE           = LPCB(PCBPT + PROCSTATEWORDNUM)#,      <<*pcb*>>04024700
   PIINFO              = LPCB(PCBPT + PIINFOWORDNUM)#,         <<*pcb*>>04024800
   NIMPPIN             = LPCB(PCBPT + NIMPPINWORDNUM)#,        <<*pcb*>>04024900
<< LASTREFCODESEG0     = LPCB(PCBPT + LASTREFCODEWORDNUM)#, >> <<*pcb*>>04025000
<< LASTREFCODESEG1     = LPCB(PCBPT + LASTREFCODEWORDNUM + 1)#,<<*pcb*>>04025100
   PBX                 = LPCB(PCBPT + PBXWORDNUM)#,            <<*pcb*>>04025200
   QUEUEINGINFO        = LPCB(PCBPT + QUEUEINGINFOWORDNUM)#,   <<*pcb*>>04025300
   MAPDST              = LPCB(PCBPT + MAPDSTWORDNUM)#,         <<*pcb*>>04025400
<< NQPTR               = LPCB(PCBPT + NQPTRWORDNUM)#, >>       <<*pcb*>>04025500
   PQPTR               = LPCB(PCBPT + PQPTRWORDNUM)#;          <<*pcb*>>04025600
                                                               <<*pcb*>>04025700
                                                               <<*pcb*>>04025800
<< Misc. bits for TBC , TRBC etc. >>                           <<*pcb*>>04025900
                                                               <<*pcb*>>04026000
Comment These lines are not needed here                        <<*pcb*>>04026100
EQUATE                                                         <<*pcb*>>04026200
                                                               <<*pcb*>>04026300
   SARBIT                   = 0,                               <<*pcb*>>04026400
   CRITBIT                  = 2,                               <<*pcb*>>04026500
   HASSIRBIT                = 3,                               <<*pcb*>>04026600
   PIOVRBIT                 = 4,                               <<*pcb*>>04026700
   INCOREPROTECTEXPBIT      = 6,                               <<*pcb*>>04026800
   PREEMPTCAPBIT            = 7,                               <<*pcb*>>04026900
   MUSTPREEMPTBIT           = 8,                               <<*pcb*>>04027000
   IMPEDEDWAITBIT           = 12,                              <<*pcb*>>04027100
   SIRWAITBIT               = 13,                              <<*pcb*>>04027200
   TIMWAITBIT               = 14,                              <<*pcb*>>04027300
   MEMORYWAITBIT            = 15,                              <<*pcb*>>04027400
   IMPEDEDWAKEBIT           = 12,                              <<*pcb*>>04027500
   SIRWAKEBIT               = 13,                              <<*pcb*>>04027600
   TIMWAKEBIT               = 14,                              <<*pcb*>>04027700
   MEMORYWAKEBIT            = 15,                              <<*pcb*>>04027800
   WWSBIT                   = 15,                              <<*pcb*>>04027900
   DISPQBIT                 = 0,                               <<*pcb*>>04028000
   MAIN                     = 2,                               <<*pcb*>>04028100
   SOFTKILL                 = %20,                             <<*pcb*>>04028200
   LSCHEDBIT                = 1,                               <<*pcb*>>04028300
   CSCHEDBIT                = 2,                               <<*pcb*>>04028400
   DSCHEDBIT                = 3,                               <<*pcb*>>04028500
   ESCHEDBIT                = 4,                               <<*pcb*>>04028600
   INTERACTIVEBIT           = 5,                               <<*pcb*>>04028700
   CORERESBIT               = 6,                               <<*pcb*>>04028800
   HOLDSIRPRIBIT            = 5;                               <<*pcb*>>04028900
                                                               <<*pcb*>>04029000
                                                               <<*pcb*>>04029200
DEFINE                                                         <<*pcb*>>04029300
                                                               <<*pcb*>>04029400
<< SARFLAG                  = (0:1)#, >>                       <<*pcb*>>04029500
   CRITFLAG                 = (2:1)#,                          <<*pcb*>>04029600
<< HASSIRFLAG               = (3:1)#, >>                       <<*pcb*>>04029700
<< CRITSIRFLAG              = (2:2)#, >>                       <<*pcb*>>04029800
<< PIOVRFLAG                = (4:1)#, >>                       <<*pcb*>>04029900
<< INCPROTECTEXPFLAG        = (6:1)#, >>                       <<*pcb*>>04030000
<< PREEMPTCAPFLAG           = (7:1)#, >>                       <<*pcb*>>04030100
<< MUSTPREEMPTFLAG          = (8:1)#, >>                       <<*pcb*>>04030200
<< PCBLONGWAITFLAG          = (9:1)#, >>                       <<*pcb*>>04030300
<< PCBSHORTWAITFLAG         = (10:1)#, >>                      <<*pcb*>>04030400
<< PCBTERMREADFLAG          = (11:1)#, >>                      <<*pcb*>>04030500
<< USEDQUANTUMFLAG          = (12:1)#, >>                      <<*pcb*>>04030600
<< HOLDIMPPRIFLAG           = (13:1)#, >>                      <<*pcb*>>04030700
<< DELAYSOFTFLAG            = (8:1)#, >>                       <<*pcb*>>04030800
<< STOVABORTFLAG            = (14:1)#, >>                      <<*pcb*>>04030900
<< RITBRKFLAG               = (15:1)#, >>                      <<*pcb*>>04031000
   ABSDBFLAG                = (0:1)#,                          <<*pcb*>>04031100
   XDSDSTFIELD              = (2:14)#,                         <<*pcb*>>04031200
<< STOVRALLFLAG             = (0:1)#, >>                       <<*pcb*>>04031300
   STKDSTFIELD              = (2:14)#,                         <<*pcb*>>04031400
<< INSYSTEMFLAG             = (1:1)#, >>                       <<*pcb*>>04031500
<< OAFIELD                  = (4:2)#, >>                       <<*pcb*>>04031600
<< CRITEVENTFIELD           = (12:4)#, >>                      <<*pcb*>>04031700
<< NONCRITEVENTFIELD        = (0:12)#, >>                      <<*pcb*>>04031800
<< NONCRITEVENTFLD'         = (0:10)#, >>                      <<*pcb*>>04031900
<< MOURNWAITFLAG            = (0:1)#, >>                       <<*pcb*>>04032000
<< BLKDIOWAITFLAG           = (4:1)#, >>                       <<*pcb*>>04032100
<< IMPEDEDWAITFLAG          = (12:1)#, >>                      <<*pcb*>>04032200
<< SIRWAITFLAG              = (13:1)#,>>                       <<*pcb*>>04032300
<< RIT'UCOPWAITFLAG         = (6:1)#, >>                       <<*pcb*>>04032400
<< MAILWAITFLAG             = (3:1)#, >>                       <<*pcb*>>04032500
   JUNKWAITFLAG             = (7:1)#,                          <<*pcb*>>04032600
   TIMERWAITFLAG            = (14:1)#,                         <<*pcb*>>04032700
   FATHERSONWAKEFLAGS       = (10:2)#,                         <<*pcb*>>04032800
<< FATHERWAITFLAG           = (11:1)#, >>                      <<*pcb*>>04032900
<< ABORTWAKEFLAGS           = (8:4)#, >>                       <<*pcb*>>04033000
<< INTFASONWAITFLAGS        = (9:3)#, >>                       <<*pcb*>>04033100
   MEMORYWAITFLAG           = (15:1)#,                         <<*pcb*>>04033200
<< MOURNWAKEFLAG            = (0:1)#, >>                       <<*pcb*>>04033300
<< IMPEDEDWAKEFLAG          = (12:1)#, >>                      <<*pcb*>>04033400
<< SIRWAKEFLAG              = (13:1)#, >>                      <<*pcb*>>04033500
   TIMERWAKEFLAG            = (14:1)#,                         <<*pcb*>>04033600
   WWS                      = (15:1)#,                         <<*pcb*>>04033700
   MEMORYWAKEFLAG           = (15:1)#,                         <<*pcb*>>04033800
   PTYPEFIELD               = (6:3)#,                          <<*pcb*>>04033900
   PTYPEFIELD'              = (6:2)#,                          <<*pcb*>>04034000
   FACFLAG                  = (7:1)#,                          <<*pcb*>>04034100
<< STOVFLAG                 = (5:1)#, >>                       <<*pcb*>>04034200
   SYSTEMPROCFLAG           = (6:1)#,                          <<*pcb*>>04034300
   SONOFMAINFLAG            = (8:1)#,                          <<*pcb*>>04034400
   MAINPROCFLAG             = (7:1)#,                          <<*pcb*>>04034500
   ALIVEFLAG                = (0:1)#,                          <<*pcb*>>04034600
   DEADFLAG                 = (6:1)#,                          <<*pcb*>>04034700
<< PPCFIELD                 = (3:2)#, >>                       <<*pcb*>>04034800
<< SOFTKILLFLAG             = (11:1)#, >>                      <<*pcb*>>04034900
<< HARDKILLFLAG             = (10:1)#, >>                      <<*pcb*>>04035000
<< PPCWAITFIELD             = (1:2)#, >>                       <<*pcb*>>04035100
   QUEUEFIELD'              = (1:3)#,                          <<*pcb*>>04035200
<< SOFTINTFLAG              = (9:1)#, >>                       <<*pcb*>>04035300
<< SIPIFLAGSFIELD           = (9:7)#, >>                       <<*pcb*>>04035400
<< PIFLAGSFIELD             = (10:6)#, >>                      <<*pcb*>>04035500
<< HYBERNATEFLAG            = (13:1)#, >>                      <<*pcb*>>04035600
<< STOPFLAG                 = (12:1)#, >>                      <<*pcb*>>04035700
<< CYFLAG                   = (14:1)#, >>                      <<*pcb*>>04035800
<< BKFLAG                   = (15:1)#, >>                      <<*pcb*>>04035900
<< PSIMFIELD                = (0:3)#, >>                       <<*pcb*>>04036000
<< WAKESOFTFLAG             = (3:1)#, >>                       <<*pcb*>>04036100
<< DISPQFLAG                = (0:1)#, >>                       <<*pcb*>>04036200
   LSCHEDFLAG               = (1:1)#,                          <<*pcb*>>04036300
   CSCHEDFLAG               = (2:1)#,                          <<*pcb*>>04036400
   DSCHEDFLAG               = (3:1)#,                          <<*pcb*>>04036500
   ESCHEDFLAG               = (4:1)#,                          <<*pcb*>>04036600
   INTERACTIVEFLAG          = (5:1)#,                          <<*pcb*>>04036700
<< PROCRESIDENTFLAG         = (6:1)#, >>                       <<*pcb*>>04036800
<< HOLDSIRPRIFLAG           = (5:1)#, >>                       <<*pcb*>>04036900
   QUEUEFIELD               = (1:4)#,                          <<*pcb*>>04037000
<< ALLOWSOFTFLAG            = (7:1)#, >>                       <<*pcb*>>04037100
   PRIFIELD                 = (8:8)#;                          <<*pcb*>>04037200
                                                               <<*pcb*>>04037300
Comment The following are not needed by Initial                <<*pcb*>>04037400
DEFINE                                                         <<*pcb*>>04037500
   SPCBCRIT       = PCB(PCBPT).CRITFLAG#,                      <<*pcb*>>04037600
   SPCBCRITSIR    = PCB(PCBPT).CRITSIRFLAG#,                   <<*pcb*>>04037700
   SPCBPIOVRFLAG  = PCB(PCBPT).PIOVRFLAG#,                     <<*pcb*>>04037800
   SPCBDELAYSOFT  = PCB(PCBPT).DELAYSOFTFLAG#,                 <<*pcb*>>04037900
   SPCBWAITFIELD  = PCB(PCBPT+WAKEMASKWORDNUM).(0:15)#,        <<*pcb*>>04038000
   SPCBNONCRITWAIT= PCB(PCBPT+WAKEMASKWORDNUM).NONCRITEVENTFIEL<<*pcb*>>04038100
   SPCBABORTWAKE  = PCB(PCBPT+WAKEMASKWORDNUM).ABORTWAKEFLAGS#,<<*pcb*>>04038200
   SPCBIMPEDE     = PCB(PCBPT+WAKEMASKWORDNUM).IMPEDEDWAITFLAG#<<*pcb*>>04038300
   SPCBPSIM       = PCB(PCBPT+PIINFOWORDNUM).PSIMFIELD#,       <<*pcb*>>04038400
   SPCBWAKESOFT   = PCB(PCBPT+PIINFOWORDNUM).WAKESOFTFLAG#,    <<*pcb*>>04038500
   SPCBSOFTINT    = PCB(PCBPT+PROCSTATEWORDNUM).SOFTINTFLAG#,  <<*pcb*>>04038600
   SPCBPIFLAGS    = PCB(PCBPT+PROCSTATEWORDNUM).PIFLAGSFIELD#, <<*pcb*>>04038700
   SPCBDISPQ      = PCB(PCBPT+QUEUEINGINFOWORDNUM).DISPQFLAG#, <<*pcb*>>04038800
   SPCBALLOWSOFT  = PCB(PCBPT+QUEUEINGINFOWORDNUM).ALLOWSOFTFLA<<*pcb*>>04038900
   SPCBSTKDST     = PCB(PCBPT+STKINFOWORDNUM).STKDSTFIELD#,    <<*pcb*>>04039000
   SPCBXDSDST     = PCB(PCBPT+DBXDSINFOWORDNUM).XDSDSTFIELD#,  <<*pcb*>>04039100
   SPCBFATHERINFO = PCB(PCBPT+FATHERINFOWORDNUM)#,             <<*pcb*>>04039200
   SPCBSONINFO    = PCB(PCBPT+SONINFOWORDNUM)#,                <<*pcb*>>04039300
   SPCBBROTHERINFO= PCB(PCBPT+BROTHERINFOWORDNUM)#,            <<*pcb*>>04039400
   SPCBPIMPPIN    = PCB(PCBPT+PIMPPINWORDNUM)#,                <<*pcb*>>04039500
   SPCBNIMPPIN    = PCB(PCBPT+NIMPPINWORDNUM)#,                <<*pcb*>>04039600
   SPCBPTYPE      = PCB(PCBPT+PROCSTATEWORDNUM).PTYPEFIELD#,   <<*pcb*>>04039700
   SPCBPTYPE'     = PCB(PCBPT+PROCSTATEWORDNUM).PTYPEFIELD'#,  <<*pcb*>>04039800
   SPCBQTYPE      = PCB(PCBPT+QUEUEINGINFOWORDNUM).QUEUEFIELD#,<<*pcb*>>04039900
   SPCBPBX        = PCB(PCBPT+PBXWORDNUM)#,                    <<*pcb*>>04040000
   SPCBMAPDST     = PCB(PCBPT+MAPDSTWORDNUM)#,                 <<*pcb*>>04040100
   SPCBPPRI       = PCB(PCBPT+QUEUEINGINFOWORDNUM).PRIFIELD#;  <<*pcb*>>04040200
                                                               <<*pcb*>>04040400
Comment                                                        <<*pcb*>>04040410
<<=========================================================    <<*pcb*>>04040500
=                                                         =    <<*pcb*>>04040600
=                  END INCLPCB                            =    <<*pcb*>>04040700
=                                                         =    <<*pcb*>>04040800
=========================================================>>    <<*pcb*>>04040900
;                                                              <<*pcb*>>04040910
$EDIT VOID = 04116000                                          <<*pcb*>>04041000
$EDIT VOID=04206000                                            <<*SLL*>>04126000
                                                               <<*SLL*>>04129000
<< Offsets into SLL Header entry >>                            <<*SLL*>>04130000
                                                               <<*SLL*>>04131000
DEFINE                                                         <<*SLL*>>04132000
   SCHEDTOIOMSG      =  SLLHEADINX#,                           <<*sll5>>04133000
   FIRSTINX          =  SLLHEADINX + 1#,                       <<*SLL*>>04134000
   MEMREQINX         =  SLLHEADINX + 3#,                       <<*SLL*>>04135000
   SEGCOUNT          =  SLLHEADINX + 4#,                       <<*SLL*>>04136000
                                                               <<*SLL*>>04137000
$EDIT                                                          <<*sll5>>04138000
<< NEXTIMPPIN        =  SLLINX#,              >>               <<*sll5>>04139000
<< NEXTINX           =  SLLINX + 1#,          >>               <<*SLL*>>04140000
<< PREVINX           =  SLLINX + 2#,          >>               <<*SLL*>>04141000
   SLL'OBJDESC       =  SLLINX + 3#,                           <<*sll5>>04142000
   SLL'OBJNUM        =  SLLINX + 4#,                           <<*sll5>>04142100
   SLL'FLAGS         =  SLLINX + 5#;                           <<*sll5>>04143000
                                                               <<*SLL*>>04144000
DEFINE                                                         <<*SLL*>>04145000
   << SCHEDTOIOMSG field definitions >>                        <<*SLL*>>04146000
                                                               <<*SLL*>>04147000
   SLLSWAPREQFLAG       =  (1:1)#,                             <<*SLL*>>04148000
<< SLLHASMEMFLAG        =  (2:1)#,            >>               <<*SLL*>>04149000
<< SLLLOCINITFLAG       =  (3:1)#,            >>               <<*SLL*>>04150000
<< SLLPARTIALSWAPDONEFLAG= (4:1)#,            >>               <<*SLL*>>04151000
<< SLLSTARTOVERFLAG     =  (5:1)#,            >>               <<*SLL*>>04152000
<< SLLSWAPIPFLAG        =  (6:1)#,            >>               <<*SLL*>>04153000
<< SLLIOCOMPTOAWAKECNT  =  (8:8)#,            >>               <<*SLL*>>04154000
                                                               <<*SLL*>>04155000
   << SLL'FLAGS field definitions    >>                        <<*SLL*>>04156000
                                                               <<*SLL*>>04157000
   SLLSTKENTRYFLAG      =  (1:1)#;                             <<*SLL*>>04158000
<< SLLMAPSEGFLAG        =  (0:1)#,            >>               <<*SLL*>>04159000
<< SLLDISCIOSEGFLAG     =  (2:1)#,            >>               <<*SLL*>>04160000
<< SLLLOCKEDFLAG        =  (3:1)#,            >>               <<*SLL*>>04161000
<< SLLBLKLOCKREQFLAG    =  (4:1)#,            >>               <<*SLL*>>04162000
<< SLLFZFLAG            =  (5:1)#,            >>               <<*SLL*>>04163000
<< SLLIMIFLAG           =  (6:1)#,            >>               <<*SLL*>>04164000
<< SLLTOSSENTRYFLAG     =  (7:1)#,            >>               <<*SLL*>>04165000
<< SLLFZREQFLAG         =  (8:1)#,            >>               <<*SLL*>>04166000
<< SLLLKREQFLAG         =  (9:1)#,            >>               <<*SLL*>>04167000
<< SLLDECCNTFLAG        = (10:1)#,            >>               <<*sll5>>04167100
<< SLLPREFETCHCOUNT     = (11:5)#,            >>               <<*sll5>>04168000
$EDIT VOID=04218000                                                     04216000
$EDIT VOID=04224000                                                     04222000
  INTEGER POINTER ENTRE0 = ENTRE,                              <<*DVR*>>04236000
                  DRIV'NAME;              <<DRIVER NAME>>      <<*DVR*>>04237000
               INTR;            <<INTERRUPT PROCEDURES' STT'S>><<DCLAS>>04240000
$EDIT VOID=04242000                                            <<*DVR*>>04242000
$EDIT VOID=04244000                                            <<DCLAS>>04244000
BYTE ARRAY BAMISC(0:174):=                                     <<AL.00>>04268000
        <<00>>  "CONFDATA ",0,                                 <<DEVCO>>04270000
        <<10>>  "DEVDATA ",                                    <<DEVCO>>04271000
        <<18>>  "SL      ",                                    <<DEVCO>>04272000
        <<26>>  "CSDUMMY ",                                    <<DEVCO>>04274000
        <<34>>  "7TRACE0'",                                    <<DEVCO>>04276000
        <<42>>  "=COMMANDINTERP",                              <<DEVCO>>04278000
        <<56>>  "9TERMINATE",                                  <<DEVCO>>04280000
        <<66>>  "9PSEUDOINT",                                  <<DEVCO>>04282000
        <<76>>  "3DSP",                                        <<DEVCO>>04284000
        <<80>>  ":IOMESSPROC",0,                               <<DEVCO>>04286000
        <<92>>  "3GIP",                                        <<DEVCO>>04288000
        <<96>>  "4TICK ",                                      <<DEVCO>>04290000
        <<102>> "9SYSIOPROC      ",                            <<SYSIO>>04292000
        <<118>> "8INITIATE",0,                                 <<DEVCO>>04294000
        <<128>> "6CCLOSE",0,                                   <<DEVCO>>04296000
        <<136>> "8CSIOWAIT",0,                                 <<PORTS>>04298000
        <<146>> "=SYSPORTSERVER",                              <<iopad>>04298500
        <<160>> "6IOPAD1",0,                                   <<AL.00>>04298600
        <<168>> "5NMMON";                                      <<AL.00>>04298700
DEFINE  CTABFILE     = BAMISC#,                                <<DEVCO>>04300000
        DEVFILE      = BAMISC(10)#,                            <<DEVCO>>04301000
        SLFILE       = BAMISC(18)#,                            <<DEVCO>>04302000
        CSDUMMY      = BAMISC(26)#,                            <<DEVCO>>04304000
        TRACENAME    = BAMISC(34)#,                            <<DEVCO>>04306000
        CINAME       = BAMISC(42)#,                            <<DEVCO>>04308000
        TERMNAME     = BAMISC(56)#,                            <<DEVCO>>04310000
        PSINTNAME    = BAMISC(66)#,                            <<DEVCO>>04312000
        DISPATCHNAME = BAMISC(76)#,                            <<DEVCO>>04314000
        IOMESSNAME   = BAMISC(80)#,                            <<DEVCO>>04316000
        GIPNAME      = BAMISC(92)#,                            <<DEVCO>>04318000
        CLOCKNAME    = BAMISC(96)#,                            <<DEVCO>>04320000
        SYSIOPROC    = BAMISC(102)#,                           <<SYSIO>>04322000
        INITNAME     = BAMISC(118)#,                           <<DEVCO>>04324000
        CCLOSENAME   = BAMISC(128)#,                           <<DEVCO>>04326000
        CSIOWAITNAME = BAMISC(136)#,                           <<PORTS>>04328000
        SYSPORTNAME  = BAMISC(146)#,                           <<iopad>>04328500
        IOPAD1NAME   = BAMISC(160)#,                           <<AL.00>>04328600
        NMMONNAME    = BAMISC(168)#;                           <<AL.00>>04328700
                     "DEVDATA ","PVINIT  ","STORE   "          <<DEVCO>>04360000
                DEVREC0(0:DEVREC0SIZE-1), << FIRST RECORD OF DE<<DEVCO>>04519000
$EDIT VOID=04600000                                            <<tclas>>04598000
          DEVFILEADR,    << ADR OF FIRST REC OF DEVDATA >>     <<DEVCO>>04615000
EQUATE ANYWHERE'TAB  = 0,                                      <<06259>>04622100
       BANK0ONLY     = 1,                                      <<06259>>04622110
       BANK0ABOVE    = 2,                                      <<06259>>04622120
       TEMPORARY'TAB = 4;                                      <<06259>>04622200
LOGICAL TABSIZE;                                               <<06259>>04622280
DOUBLE MEMADR;                                                 <<06259>>04623000
LOGICAL LCMEMLOC;    <<LOW CORE MEMORY POINTER>>               <<06259>>04623500
          DISCLASS'X,             <<INDEX INTO DCTAB FOR DISC>><<DCLAS>>04638000
$EDIT                                                          <<06259>>04706000
$EDIT                                                          <<06259>>04712000
          DEVFNUM,                   <<I/O CONF FILE NUM>>     <<DEVCO>>04717000
$EDIT VOID=04764000                                            <<06259>>04760000
$EDIT                                                          <<DEVCO>>04766000
$EDIT                                                          <<DEVCO>>04768000
$EDIT                                                          <<DEVCO>>04770000
LOGICAL RETURNP'=Q-2;  <<MAP FLAG,DELTAP IN MARKER>>           <<06091>>04933000
DEFINE  RETURNP= RETURNP'.(2:14)#; <<DELTAP IN MARKER>>        <<06091>>04934000
$EDIT                                                                   04936000
DEFINE  MEMORYSIZE       = LOGICAL(CTAB0(CORESIZE))#,          <<CONFD>>04972000
        NUM'BANKS        = LOGICAL(CTAB0(CORESIZE)+63)&LSR(6)#;<<CONFD>>04980000
  INTEGER ARRAY DBINT(0:30):=31(0);                            <<*DVR*>>05134000
        SYSTAPEDRT     = DBINT( 1)#,        <<DRT# & UNIT#>>   <<*DVR*>>05142000
$EDIT VOID=05144000                                            <<*DVR*>>05144000
$EDIT VOID=05146000                                            <<*DVR*>>05146000
<<LOGICAL MAPPING INFORMATION>>                                <<06091>>05150900
            SYSDISCDRT = DBINT(29)#,   << DRT FOR SYS DISC >>  <<*DVR*>>05212000
            SYSTAPEUNIT= DBINT(30)#;   << UNIT FOR SYS TAPE>>  <<*DVR*>>05213000
DEFINE LOGICALMAPPING'=ABSOLUTE(ABSOLUTE(QI)-9)#,              <<06091>>05214000
       <<TRUE IF NEW FIRMWARE PRESENT--USE WHEN >>             <<06091>>05214100
       <<TESTING BEFORE SYSGLOB INITIALIZED     >>             <<06091>>05214200
       LOGICALMAPPING=ABSOLUTE(MAPPINGFIRMWARE)#,              <<06241>>05214300
       <<TRUE IF NEW FIRMWARE PRESENT--USE WHEN >>             <<06091>>05214400
       <<TESTING AFTER SYSGLOB INITIALIZED    >>               <<06091>>05214500
       MAPFLAG=(1:1)#;  <<MAPPING FLAG IN STACK MARKER>>       <<06091>>05214600
EQUATE MAXPHYCST=256,   <<MAX # PHYSICALLY MAPPED CST'S>>      <<06091>>05214700
       SYSPHYCST=192;   <<# CST'S ALLOCATED TO PHYSICALLY>>    <<06091>>05214800
                        <<MAPPED SEGMENTS                >>    <<06091>>05214900
DEFINE PMBCFIRMWARE = ABS(%1220).(14:1)#;                      <<PMBC*>>05217000
$EDIT VOID=05628000                                            <<zrela>>05610000
                                                               <<06259>>05962200
LOGICAL PROCEDURE TESTBIT(BIT'MAP,BIT'NUM);                    <<06259>>05962300
  VALUE BIT'NUM;                                               <<06259>>05962400
  INTEGER ARRAY BIT'MAP;      << BIT MAP >>                    <<06259>>05962500
  INTEGER       BIT'NUM;      << BIT NUMBER >>                 <<06259>>05962600
  OPTION FORWARD;                                              <<06259>>05962700
                                                               <<06091>>06554200
   LOGICAL                                                     <<06091>>06554400
      FMAPFLAG   = Q-9;                                        <<06091>>06554600
                                                               <<06091>>06554800
   <<  The mapping firmware will store a 1 at QI-9  >>         <<06091>>06555000
   <<  on coldload as an indication that is exists. >>         <<06091>>06555200
                                                               <<06091>>06555400
   LOGICALMAPPING := FMAPFLAG;                                 <<06091>>06555600
      QI'DB     = Q-4,                                         <<06091>>06572000
      QI'SBANK  = Q-5,                                         <<06091>>06572200
      QI'S      = Q-6,                                         <<06091>>06572400
      QI'DL     = Q-7,                                         <<06091>>06572600
      QI'Z      = Q-8,                                         <<06091>>06572800
      FMAPFLAG  = Q-9,                                         <<06091>>06573000
   QI'S := SAVED'S;                                            <<06091>>06584000
                                                               <<06091>>06584200
   <<  The mapping firmware will store a 1 at QI-9  >>         <<06091>>06584400
   <<  on coldload as an indication that it exists. >>         <<06091>>06584600
                                                               <<06091>>06584800
   TOS := QI'SBANK;                                            <<06091>>06585000
   TOS := QI'DB + QI'S - 4; << LOCATION OF DELTA P >>          <<06091>>06585200
   ASSEMBLE( LSEA );     << LOAD DELTA P >>                    <<06091>>06585400
   TOS.MAPFLAG := FMAPFLAG;<< PHY MAPPED, IF FIRMWARE EXISTS >><<06091>>06585600
   ASSEMBLE( SSEA );     << REPLACE DELTA P >>                 <<06091>>06585800
   LOGICALMAPPING := FMAPFLAG;                                 <<06091>>06585840
$EDIT VOID=07182000                                            <<CONFD>>07172000
                                                               <<CONFD>>07360100
INTEGER ARRAY WRDIO(0:39) = Q; << OUTPUT BUFFER >>             <<CONFD>>07360200
BYTE ARRAY IO(*) = WRDIO;                                      <<CONFD>>07360300
                                                               <<CONFD>>07360400
INTEGER ARRAY INBUF(0:39) = Q; << INPUT BUFFER >>              <<CONFD>>07360500
BYTE ARRAY BINBUF(*) = INBUF;                                  <<CONFD>>07360600
   P := ENTRY'P.(2:14);   <<RESTORE ENTRY VALUES FOR P,CST>>   <<HELP2>>09446000
ENTRY'P := SMP-1;  << GET P FROM STACK MARKER >>               <<HELP2>>09886000
P := ENTRY'P.(2:14);   <<SAVE ENTRY VALUES FOR P AND CST>>     <<HELP2>>09890000
   SMP := ENTRY'P;    <<DECREMENT THE RETURN ADDR>>            <<HELP2>>09952000
    SMP := ENTRY'P;    <<DECREMENT THE EXIT ADDRESS>>          <<HELP2>>09972000
OCTNUMOUT (DOUBLE(P),5);    <<LOAD P >>                        <<HELP2>>10006000
INTEGER DVR'INDEX;                                             <<*DVR*>>10360100
DVR'INDEX := LDEV * DVRSIZE;                                   <<*DVR*>>10361000
   (DVRDRTNUM <> 0 OR DVRDSBIT = 1) THEN                       <<*DVR*>>10364000
$EDIT VOID=10366000                                            <<*DVR*>>10366000
INTEGER DVR'INDEX;                                             <<*DVR*>>10400100
DVR'INDEX := LDEV * DVRSIZE;                                   <<*DVR*>>10401000
   DVRDSBIT = 0 AND DVRDRTNUM <> 0 THEN                        <<*DVR*>>10404000
$EDIT VOID=10406000                                            <<*DVR*>>10406000
        GETBOARDTYPE := TEMP;                                  <<SYPTR>>11064000
          IF LOGICAL(I) THEN WPBUFFER(I&LSR(1)).(8:8) := CHAR  <<SI.DR>>11456000
                        ELSE WPBUFFER(I&LSR(1)).(0:8) := CHAR; <<SI.DR>>11456200
              IF WPBUFFER = [8/"?",8/13] THEN                  <<SI.DR>>11464000
                 MOVE WPBUFFER := "READ PENDING";              <<SI.DR>>11470000
          IF BOARD <> LYNX'BOARD AND BOARD <> ADCC'MAIN AND    <<SYPTR>>11856000
             BOARD <> ADCC'EXT THEN                            <<SYPTR>>11857000
   10,"BREAKPOINT",                                            <<sytab>>13717000
    8,"EXTENDED",                                              <<sytab>>13891500
    3,"ICS",                                                   <<sytab>>13953000
    6,"LOADER",                                                <<*LST3>>14017000
    5,"QUEUE",                                                 <<sytab>>14163000
    7,"REQUEST",                                               <<sytab>>14199000
    9,"SECONDARY",                                             <<sytab>>14215000
    7,"SPECIAL",                                               <<sytab>>14245000
    4,"SWAP",                                                  <<sytab>>14267000
    5,"TIMER",                                                 <<sytab>>14285000
    4,"UCOP",                                                  <<sytab>>14307000
   BREAKPOINT        = BOOTSTRAP        +1,                    <<sytab>>14441000
   BUFFER            = BREAKPOINT       +1,                    <<sytab>>14442000
   BUFFERS           = BUFFER           +PLURAL,               <<sytab>>14443000
   EXTENDED          = EXPERIMENTAL     +1,                    <<sytab>>14631500
   EXTENT            = EXTENDED         +1,                    <<sytab>>14632000
   ICS               = IO               +1,                    <<sytab>>14695000
   ID                = ICS              +1,                    <<sytab>>14696000
   LOADER            = LOADED           +1,                    <<*LST3>>14759000
   LOCAL             = LOADER           +1,                    <<*LST3>>14760000
   QUEUE             = PURGED           +1,                    <<sytab>>14911000
   RANGE'            = QUEUE            +1,                    <<sytab>>14912000
   REQUEST           = REPEATS          +1,                    <<sytab>>14951000
   RESERVED          = REQUEST          +1,                    <<sytab>>14952000
   SECONDARY         = SECOND           +1,                    <<sytab>>14967000
   SECTOR            = SECONDARY        +1,                    <<sytab>>14968000
   SPECIAL'          = SPARING          +1,                    <<sytab>>15001000
   SPECIFIED         = SPECIAL'         +1,                    <<sytab>>15002000
   SWAP              = SUPPOSED         +1,                    <<sytab>>15025000
   SYSTEM            = SWAP             +1,                    <<sytab>>15026000
   TIMER             = TIMEOUT          +1,                    <<sytab>>15045000
   TIMING            = TIMER            +1,                    <<sytab>>15046000
   UCOP              = TYPE             +1,                    <<sytab>>15069000
   UNAVAILABLE       = UCOP             +1,                    <<sytab>>15070000
 137, 6,HIGHEST,SUPPORTED,DISC,LDEV,IS,PD1,                    <<LIMIT>>15298100
           << SYSTEM TABLE CHANGES >>                          <<sytab>>15968100
                                                               <<sytab>>15968110
3000, 3,SYSTEM,TABLE,CHANGES,                                  <<sytab>>15968120
3001, 1,CST,                                                   <<sytab>>15968130
3002, 2,EXTENDED,CST,                                          <<sytab>>15968140
3003, 1,DST,                                                   <<sytab>>15968150
3004, 1,PCB,                                                   <<sytab>>15968160
3005, 2,IO,QUEUE,                                              <<sytab>>15968170
3006, 3,DISC,REQUEST,QUEUE,                                    <<sytab>>15968180
3007, 4,TERMINAL,BUFFERS,PER,PORT,                             <<sytab>>15968190
3008, 2,SYSTEM,BUFFERS,                                        <<sytab>>15968200
3009, 2,SWAP,TABLE,                                            <<sytab>>15968210
3010, 3,PRIMARY,MESSAGE,TABLE,                                 <<sytab>>15968220
3011, 3,SECONDARY,MESSAGE,TABLE,                               <<sytab>>15968230
3012, 3,SPECIAL',REQUEST,TABLE,                                <<sytab>>15968240
3013, 1,ICS,                                                   <<sytab>>15968250
3014, 3,UCOP,REQUEST,QUEUE,                                    <<sytab>>15968260
3015, 3,TIMER,REQUEST,QUEUE,                                   <<sytab>>15968270
3016, 2,BREAKPOINT,TABLE,                                      <<sytab>>15968280
3017, 3,LOADER,SEGMENT,TABLE,                                  <<*LST3>>15968290
   INTEGER TYPE, STYPE,                                        <<*LPDT>>17626000
           LDT'INDEX,LPDT'INDEX;                               <<*LPDT>>17627000
   LDT'INDEX := LDEV * LDTSIZE;                                <<*LDT*>>17639000
   TYPE := LDT'DEVICE'TYPE;                                    <<*LDT*>>17640000
   LPDT'INDEX := LDEV * LPDTSIZE;                              <<*LPDT>>17641000
   STYPE := LPDT'SUBTYPE;                                      <<*LPDT>>17642000
IF TYPE = 0 << MH DISC >> OR TYPE = 2 << FLOPPY DISC >> THEN   <<*LDT*>>17646000
   TOS := IF TYPE = 2 << FLOPPY DISC >> THEN                   <<*LDT*>>17658000
   TOS := IF TYPE = 2 << FLOPPY DISC >> THEN                   <<*LDT*>>17682000
   IF TYPE <> 2 << FLOPPY DISC >> THEN                         <<*LDT*>>17692000
     TOS:=TOS+DISCINFO(MHSTHEAD);                              <<*LDT*>>17693000
PROCEDURE CS'80'ERROR( LDEV, FUNC, DISCADR, CPADR, STATUS);    <<SPFIX>>19962100
   VALUE LDEV, FUNC, CPADR, DISCADR;                           <<SPFIX>>19962150
   INTEGER LDEV, FUNC, CPADR;                                  <<SPFIX>>19962200
   DOUBLE DISCADR;                                             <<SPFIX>>19962250
   INTEGER ARRAY STATUS;                                       <<SPFIX>>19962300
BEGIN                                                          <<SPFIX>>19962350
   INTEGER                                                     <<SPFIX>>19962400
      COL,                                                     <<SPFIX>>19962450
      I,                                                       <<SPFIX>>19962500
      J;                                                       <<SPFIX>>19962550
                                                               <<SPFIX>>19962600
   MOVE BLINE := "LDEV ",2;                                    <<SPFIX>>19962650
   TOS := TOS + ASCII( LDEV, BPS0);                            <<SPFIX>>19962700
   MOVE * := ",FUNC ",2;                                       <<SPFIX>>19962750
   TOS := TOS + ASCII( FUNC, BPS0);                            <<SPFIX>>19962800
   MOVE * := ",DISCADR %",2;                                   <<SPFIX>>19962850
   TOS := TOS + LDNTOA( DISCADR, 8, BPS0);                     <<SPFIX>>19962900
   MOVE * := ",CPADR %",2;                                     <<SPFIX>>19962950
   TOS := TOS + LNTOA( CPADR, 8, BPS0);                        <<SPFIX>>19963000
   PRINTLINE;                                                  <<SPFIX>>19963050
   MOVE BLINE(10) := "*** STATUS DISPLAY ***";                 <<SPFIX>>19963100
   PRINTLINE;                                                  <<SPFIX>>19963150
   J := 0;                                                     <<SPFIX>>19963200
   FOR *I := 0 UNTIL 1 DO                                      <<SPFIX>>19963250
      BEGIN                                                    <<SPFIX>>19963300
      FOR *COL := 8 STEP 8 UNTIL 40 DO                         <<SPFIX>>19963350
         BEGIN                                                 <<SPFIX>>19963400
         NTOA( STATUS(J), 8, BLINE(COL));                      <<SPFIX>>19963450
         J := J+1;                                             <<SPFIX>>19963500
         END;                                                  <<SPFIX>>19963550
      PRINTLINE;                                               <<SPFIX>>19963600
      END;                                                     <<SPFIX>>19963650
   PRINTLINE;                                                  <<SPFIX>>19963670
END;                                                           <<SPFIX>>19963700
PROCEDURE CS80'DRIVER(LDEV,DRT,UNIT,STYPE,FUNCT,RECORD,BUF,WC);<<*DVR*>>19970000
VALUE LDEV,DRT,UNIT,STYPE,FUNCT,RECORD,BUF,WC;                 <<*DVR*>>19972000
   DRT,        << DRT NUMBER >>                                <<*DVR*>>19976000
   UNIT,       << UNIT NUMBER>>                                <<*DVR*>>19977000
   I;       << TEMP >>                                         <<*DVR*>>20590000
$EDIT VOID=20592000                                            <<*DVR*>>20592000
$EDIT VOID=20594000                                            <<*DVR*>>20594000
$EDIT VOID=21972000                                            <<*DVR*>>21972000
$EDIT VOID=21974000                                            <<*DVR*>>21974000
$EDIT VOID=21976000                                            <<*DVR*>>21976000
      ELSE IF STATUS(INFOR'FIELD).MAINT'TRK'OV THEN            <<SPFIX>>22856100
         GOTO INFO'ERROR                                       <<SPFIX>>22856200
                                                               <<SPFIX>>22856300
$EDIT VOID=22920000                                            <<SPFIX>>22904000
         IF (CURFUNCT = RECOV'READ) OR                         <<SPFIX>>22905000
            (CURFUNCT = SPARE'RETAIN) THEN                     <<SPFIX>>22906000
                                                               <<SPFIX>>22907000
            <<------------------------------------------->>    <<SPFIX>>22908000
            << DO NOTHING HERE.  DRIVER WILL RETURN CCL  >>    <<SPFIX>>22909000
            << FOR BOTH OF THESE FUNCTIONS.              >>    <<SPFIX>>22910000
            <<------------------------------------------->>    <<SPFIX>>22911000
$EDIT VOID=23142000                                            <<SPFIX>>23124000
 <<-------------------------------------------------------->>  <<SPFIX>>23124100
 << SPARE RETAINING DATA OR SPARE NOT RETAINING DATA       >>  <<SPFIX>>23124200
 << COMPLETED.  RETURN THE PARM'FIELD FROM THE STATUS,     >>  <<SPFIX>>23124300
 << WHICH CONTAINS THE ADDRESS & LENGTH OF THE AREA        >>  <<SPFIX>>23124400
 << AFFECTED BY THE SPARE.  IF AN UNRECOVERABLE DATA ERROR >>  <<SPFIX>>23124500
 << WAS ENCOUNTERED (SPARE RETAIN ONLY) RETURN CCL,        >>  <<SPFIX>>23124600
 << OTHERWISE CCE.                                         >>  <<SPFIX>>23124700
 <<-------------------------------------------------------->>  <<SPFIX>>23124800
                                                               <<SPFIX>>23124900
ELSE IF (FUNCT = SPARE'RETAIN) OR                              <<SPFIX>>23125000
        (FUNCT = SPARE'NO'RETAIN) THEN                         <<SPFIX>>23125100
                                                               <<SPFIX>>23125200
   BEGIN                                                       <<SPFIX>>23125300
   MABS(DATA'BANK, DATA'ADDR, 0,                               <<SPFIX>>23125400
        CHAN'PROG'BASE+STAT'AREA+PARM'FIELD, 5);               <<SPFIX>>23125500
                                                               <<SPFIX>>23125600
   IF STATUS(ACCESS'FIELD).UNRECOV'DATA'OV OR                  <<SPFIX>>23125700
      STATUS(ACCESS'FIELD).UNRECOV'DATA THEN                   <<SPFIX>>23125800
                                                               <<SPFIX>>23125900
      GOTO CCL'EXIT;                                           <<SPFIX>>23126000
   END                                                         <<SPFIX>>23126100
                                                               <<SPFIX>>23126200
 <<-------------------------------------------------------->>  <<SPFIX>>23126300
 << IF THE RECOVERY READ FUNCTION WAS UNABLE TO READ THE   >>  <<SPFIX>>23126400
 << DATA, RETURN CCL.                                      >>  <<SPFIX>>23126500
 <<-------------------------------------------------------->>  <<SPFIX>>23126600
                                                               <<SPFIX>>23126700
ELSE IF FUNCT = RECOV'READ THEN                                <<SPFIX>>23126800
                                                               <<SPFIX>>23126900
   BEGIN                                                       <<SPFIX>>23127000
   IF STATUS(ACCESS'FIELD).UNRECOV'DATA'OV OR                  <<SPFIX>>23127100
      STATUS(ACCESS'FIELD).UNRECOV'DATA THEN                   <<SPFIX>>23127200
                                                               <<SPFIX>>23127300
      GOTO CCL'EXIT;                                           <<SPFIX>>23127400
   END                                                         <<SPFIX>>23127500
INFO'ERROR:                                                    <<SPFIX>>23234100
                                                               <<SPFIX>>23234200
   ERROR := 9;                                                 <<SPFIX>>23234300
   GOTO ERROR'EXIT;                                            <<SPFIX>>23234400
                                                               <<SPFIX>>23234500
   CS'80'ERROR( LDEV, FUNCT, RECORD, CHAN'PROG'BASE, STATUS);  <<SPFIX>>23299000
      <<  0 >> ERRMESSAGE(M30,ERROR); << ID'ERROR >>           <<SPFIX>>23304000
      <<  1 >> ERRMESSAGE(M30,ERROR); << REJECT'ERROR >>       <<SPFIX>>23306000
      <<  2 >> ERRMESSAGE(M30,ERROR); << FAULT'ERROR >>        <<SPFIX>>23308000
      <<  3 >> ERRMESSAGE(M30,ERROR); << ACCESS'ERROR >>       <<SPFIX>>23310000
      <<  7 >> ERRMESSAGE(M30,ERROR); << OFFLINE'ERROR >>      <<SPFIX>>23320000
      <<  8 >> ERRMESSAGE(M30,ERROR); << UNIT'ERROR >>         <<SPFIX>>23322000
      <<  9 >> ERRMESSAGE(M30,ERROR); << INFO'ERROR >>         <<SPFIX>>23323000
PROCEDURE MH7905'HPIB(LDEV,DRT,UNIT,STYPE,FUNCT,RECORD,BUF,WC);<<*DVR*>>23358000
    VALUE LDEV,DRT,UNIT,STYPE,FUNCT,RECORD,BUF,WC;             <<*DVR*>>23360000
    INTEGER DRT,            << DRT NUMBER >>                   <<*DVR*>>23362000
            UNIT,           << UNIT NUMBER >>                  <<*DVR*>>23363000
$EDIT VOID=23528000                                            <<*DVR*>>23528000
$EDIT VOID=23530000                                            <<*DVR*>>23530000
$EDIT VOID=23531000                                            <<*DVR*>>23531000
        INTEGER SBANK,                                         <<*DVR*>>23532000
                LDT'INDEX,                                     <<*DVR*>>23534100
      TOS := IF TYPE = 2 << FLOPPY DISC >> THEN                <<*LDT*>>23916000
      TOS := IF TYPE = 2 << FLOPPY DISC >> THEN                <<*LDT*>>23940000
      IF TYPE <> 2 << FLOPPY DISC >> THEN                      <<*LDT*>>23952000
        TOS:=TOS+HEADBASE(STYPE);                              <<*LDT*>>23953000
          LDT'INDEX := LDEV * LDTSIZE;                         <<*LDT*>>24191000
                  ELSE LDT'DEVICE'TYPE;                        <<*LDT*>>24194000
$EDIT VOID=24204000                                            <<*DVR*>>24204000
$EDIT VOID=24206000                                            <<*DVR*>>24206000
            IF TYPE<>2 << FLOPPY DISC >>                       <<*LDT*>>24274000
              AND STYPE <> S7910 THEN                          <<*LDT*>>24275000
                  MH7905'HPIB(LDEV,DRT,UNIT,STYPE,0,1D,TBUFA,  <<*DVR*>>24566000
                  MH7905'HPIB(LDEV,DRT,UNIT,STYPE,1,1D,TBUFA,  <<*DVR*>>24586000
PROCEDURE MH7905(LDEV,DRT,UNIT,STYPE,FUNCT,RECORD,BUF,WC);     <<*DVR*>>24890000
   VALUE LDEV,DRT,UNIT,STYPE,FUNCT,RECORD,BUF,WC;              <<*DVR*>>24892000
   INTEGER LDEV,DRT,UNIT,STYPE,WC;                             <<*DVR*>>24894000
      TOS := DRT;                                              <<*DVR*>>24908000
            ERRMESSAGE(M1,DRT);                                <<*DVR*>>24922000
      MH7905'HPIB(LDEV,DRT,UNIT,STYPE,FUNCT,RECORD,BUF,WC);    <<*DVR*>>24940000
PROCEDURE MHDISC(LDEV,DRT,UNIT,STYPE,FUNCT,RECORD,BUF,WC);     <<*DVR*>>24954000
    VALUE LDEV,DRT,UNIT,STYPE,FUNCT,RECORD,BUF,WC;             <<*DVR*>>24956000
    INTEGER DRT,UNIT,LDEV,STYPE,WC;                            <<*DVR*>>24958000
PROCEDURE FHDISC(LDEV,DRT,UNIT,STYPE,FUNCT,RECORD,BUF,WC);     <<*DVR*>>24970000
    VALUE LDEV,DRT,UNIT,STYPE,FUNCT,RECORD,BUF,WC;             <<*DVR*>>24972000
    INTEGER DRT,UNIT,LDEV,STYPE,WC;                            <<*DVR*>>24974000
          INTEGER                                              <<*LDT*>>25019000
              LDT'INDEX,                                       <<*DVR*>>25019100
              LPDT'INDEX,                                      <<*DVR*>>25019200
              DVR'INDEX;                                       <<*DVR*>>25019300
          LDT'INDEX := LDEV * LDTSIZE;                         <<*LDT*>>25021000
          LPDT'INDEX := LDEV * LPDTSIZE;                       <<*LPDT>>25021100
          DVR'INDEX  := LDEV * DVRSIZE;                        <<*DVR*>>25021200
          TOS := DVRDRTNUM;                                    <<*DVR*>>25026000
          TOS := DVRUNITNUM;                                   <<*DVR*>>25027000
          TOS := LPDT'SUBTYPE;                                 <<*LPDT>>25028000
$EDIT VOID=25040000                                            <<*DVR*>>25040000
          IF LDT'DEVICE'TYPE = 1 << FH DISC >> THEN            <<*LDT*>>25042000
            TOS := @FHDISC                                     <<*LDT*>>25043000
          ELSE                                                 <<*LDT*>>25044000
            IF LDT'DEVICE'TYPE = 0 << MH DISC >> THEN          <<*LDT*>>25046000
              IF LPDT'SUBTYPE < 4 THEN                         <<*LPDT>>25048000
                TOS := @MHDISC                                 <<*LDT*>>25049000
              ELSE                                             <<*LDT*>>25050000
                IF LPDT'SUBTYPE < NMHSUBTYPES THEN             <<*LPDT>>25052000
                  TOS := @MH7905                               <<*LDT*>>25053000
                ELSE                                           <<*LDT*>>25054000
                  ERRMESSAGE(M126,0)                           <<*LDT*>>25056000
            ELSE                                               <<*LDT*>>25058000
              IF LDT'DEVICE'TYPE = 2 << FLOPPY DISC >> THEN    <<*LDT*>>25062000
                TOS := @MH7905                                 <<*LDT*>>25063000
              ELSE                                             <<*LDT*>>25064000
                IF LDT'DEVICE'TYPE = 3 << CS80 DEVICE >> THEN  <<*LDT*>>25066000
                  TOS := @CS80'DRIVER    <<CALL CS'80>>        <<*LDT*>>25067000
                                         << DRIVER   >>        <<*LDT*>>25068000
$EDIT VOID=25069000                                            <<*LDT*>>25069000
                ELSE     << BAD DISC TYPE >>                   <<*LDT*>>25070000
                    ERRMESSAGE(M126,2);                        <<*LDT*>>25074000
          ASSEMBLE(PCAL 0);                                    <<*DVR*>>25076000
        INTEGER                                                <<*DVR*>>25166100
            LPDT'INDEX,                                        <<*DVR*>>25166200
            DVR'INDEX;                                         <<*DVR*>>25166300
          LPDT'INDEX := LDEV * LPDTSIZE;                       <<*LPDT>>25167000
          DVR'INDEX  := LDEV * DVRSIZE;                        <<*DVR*>>25167100
          TOS := DVRDRTNUM;                                    <<*DVR*>>25170000
          TOS := DVRUNITNUM;                                   <<*DVR*>>25171000
          TOS := LPDT'SUBTYPE;                                 <<*LPDT>>25172000
        INTEGER                                                <<*LPDT>>25231000
            LPDT'INDEX,                                        <<*DVR*>>25231100
            DVR'INDEX;                                         <<*DVR*>>25231200
          LPDT'INDEX := LDEV * LPDTSIZE;                       <<*LPDT>>25235000
          DVR'INDEX  := LDEV * DVRSIZE;                        <<*DVR*>>25235100
          TOS := LPDT'SUBTYPE;                                 <<*LPDT>>25242000
              MHDISC(LDEV,DVRDRTNUM,DVRUNITNUM,STYPE,4,        <<*DVR*>>25262000
                SECTOR,BA, IF STYPE=3 THEN 4 ELSE 132);        <<*DVR*>>25264000
              MH7905(LDEV,DVRDRTNUM,DVRUNITNUM,STYPE,4,        <<*DVR*>>25294000
                     SECTOR+DOUBLE(I),BA,141);                 <<*DVR*>>25296000
IF BLABEL(LABVOLB) = "SERDISC" AND                                      25362000
        IF SYSTAPETYPE =  2 << FLOPPY DISC >> THEN             <<*LDT*>>25806000
         IF SYSTAPETYPE = 3 << CS80 DEVICE >> THEN             <<*LDT*>>25818000
         IF SYSTAPETYPE = 3 << CS80 DEVICE >> THEN             <<*LDT*>>25866000
         IF SYSTAPETYPE = 3 << CS80 DEVICE >> THEN             <<*LDT*>>25918000
INTEGER                                                        <<*LDT*>>28405000
    LDT'INDEX,                                                 <<*DVR*>>28406000
    LPDT'INDEX,                                                <<*DVR*>>28407000
    DVR'INDEX;                                                 <<*DVR*>>28407100
                 LDT'INDEX := SYSTAPELDEV * LDTSIZE;           <<*LDT*>>28611000
                 LPDT'INDEX := SYSTAPELDEV * LPDTSIZE;         <<*LPDT>>28611100
                 DVR'INDEX  := SYSTAPELDEV * DVRSIZE;          <<*DVR*>>28611200
                 SYSTAPETYPE := LDT'DEVICE'TYPE;               <<*LDT*>>28612000
$EDIT VOID=28614000                                            <<*LDT*>>28614000
                 SYSTAPESTYPE := LPDT'SUBTYPE;                 <<*LPDT>>28616000
$EDIT VOID=28618000                                            <<*LPDT>>28618000
                 SYSTAPEDRT := DVRDRTNUM;                      <<*DVR*>>28620000
                 SYSTAPEUNIT := DVRUNITNUM;                    <<*DVR*>>28622000
INTEGER                                                        <<*LDT*>>28885000
    LDT'INDEX;                                                 <<*LDT*>>28885100
     BEGIN                                                     <<*LDT*>>28889000
     LDT'INDEX := LDEV * LDTSIZE;                              <<*LDT*>>28889100
       IF LDT'DEVICE'TYPE = 3 << CS80 DEVICE >> THEN           <<*LDT*>>28892000
     END;                                                      <<*LDT*>>28895000
INTEGER PROCEDURE BUILDSYSPTR( MEMORYADDR);                    <<06259>>28898000
   VALUE MEMORYADDR;                                           <<06259>>28898100
   DOUBLE MEMORYADDR;                                          <<06259>>28898200
BEGIN                                                          <<06259>>28898300
   INTEGER                                                     <<06259>>28898400
      BANK     = MEMORYADDR,                                   <<06259>>28898500
      ADDRESS  = MEMORYADDR+1;                                 <<06259>>28898600
                                                               <<06259>>28898700
   IF ADDRESS.(11:5) <> 0 THEN ERRMESSAGE(M374,3);             <<06259>>28898800
   IF BANK > 31 THEN ERRMESSAGE(M374,4);                       <<06259>>28898900
   ADDRESS := ADDRESS-SYSBASE; << MAKE SYSGLOBAL RELATIVE >>   <<06259>>28899000
   ADDRESS.(11:5) := BANK;                                     <<06259>>28899100
   BUILDSYSPTR := ADDRESS;                                     <<06259>>28899200
   IF NOT LOGICALMAPPING AND BANK > 0 THEN ERRMESSAGE( M351);  <<BANK0>>28899250
END;                                                           <<06259>>28899300
PROCEDURE MFDS( BUF, DSTN, OFFSET, COUNT);                     <<06259>>28899400
   VALUE DSTN, OFFSET, COUNT;                                  <<06259>>28899500
   ARRAY BUF;                                                  <<06259>>28899600
   INTEGER DSTN, OFFSET, COUNT;                                <<06259>>28899700
BEGIN                                                          <<06259>>28899800
   TOS := @BUF;                                                <<06259>>28899900
   TOS := DSTN;                                                <<06259>>28900000
   TOS := OFFSET;                                              <<06259>>28900100
   TOS := COUNT;                                               <<06259>>28900200
   ASSEMBLE( MFDS );                                           <<06259>>28900300
END;                                                           <<06259>>28900400
PROCEDURE MTDS( DSTN, OFFSET, BUF, COUNT);                     <<06259>>28900500
   VALUE DSTN, OFFSET, COUNT;                                  <<06259>>28900600
   ARRAY BUF;                                                  <<06259>>28900700
   INTEGER DSTN, OFFSET, COUNT;                                <<06259>>28900800
BEGIN                                                          <<06259>>28900900
   TOS := DSTN;                                                <<06259>>28901000
   TOS := OFFSET;                                              <<06259>>28901100
   TOS := @BUF;                                                <<06259>>28901200
   TOS := COUNT;                                               <<06259>>28901250
   ASSEMBLE( MTDS );                                           <<06259>>28901300
END;                                                           <<06259>>28901350
PROCEDURE MDS( TARGETDSTN,TOFFSET,SOURCEDSTN,SOFFSET,COUNT);   <<06259>>28901400
   VALUE TARGETDSTN, TOFFSET, SOURCEDSTN, SOFFSET, COUNT;      <<06259>>28901450
   INTEGER TARGETDSTN, TOFFSET, SOURCEDSTN, SOFFSET, COUNT;    <<06259>>28901500
BEGIN                                                          <<06259>>28901600
   TOS := TARGETDSTN;                                          <<06259>>28901650
   TOS := TOFFSET;                                             <<06259>>28901700
   TOS := SOURCEDSTN;                                          <<06259>>28901750
   TOS := SOFFSET;                                             <<06259>>28901800
   TOS := COUNT;                                               <<06259>>28901850
   ASSEMBLE( MDS );                                            <<06259>>28901900
END;                                                           <<06259>>28901950
PROCEDURE SDEA( DCOREADDR, DVALUE);                            <<06259>>28920100
  VALUE DCOREADDR, DVALUE;                                     <<06259>>28920200
  DOUBLE DCOREADDR, DVALUE;                                    <<06259>>28920300
  BEGIN                                                        <<06259>>28920400
  TOS:= DCOREADDR;                                             <<06259>>28920500
  TOS:= DVALUE;                                                <<06259>>28920600
  ASSEMBLE( SDEA );                                            <<06259>>28920700
  END;  << SDEA >>                                             <<06259>>28920800
logical procedure compare'words(addr1,addr2,count);            <<*DVR*>>28954010
                                                               <<*DVR*>>28954020
  comment                                                      <<*DVR*>>28954030
                                                               <<*DVR*>>28954040
      This procedure will compare the memory locations indicate<<*DVR*>>28954050
      by word pointers addr1 and addr2. If they are the same fo<<*DVR*>>28954060
      the count indicated a value of true is returned to the ca<<*DVR*>>28954070
      if not, a value of false is returned.                    <<*DVR*>>28954080
                                                               <<*DVR*>>28954090
  ;                                                            <<*DVR*>>28954100
    value addr1,addr2,count;                                   <<*DVR*>>28954140
    pointer addr1,addr2;                                       <<*DVR*>>28954150
    integer count;                                             <<*DVR*>>28954160
                                                               <<*DVR*>>28954170
  begin                                                        <<*DVR*>>28954171
                                                               <<*DVR*>>28954172
    integer i;                                                 <<*DVR*>>28954173
    compare'words := true;                                     <<*DVR*>>28954180
    i := -1;                                                   <<*DVR*>>28954190
    while (i:=i+1) < count do                                  <<*DVR*>>28954200
      if addr1(i) <> addr2(i) then compare'words := false;     <<*DVR*>>28954210
  end;  << compare'words >>                                    <<*DVR*>>28954220
$EDIT VOID=29104000                                            <<06259>>28956000
$INCLUDE PUTONARL                                              <<jb.dc>>29218000
$EDIT VOID = 29304000                                          <<jb.dc>>29220000
   USEDRSIZE := 0;                                             <<MEMGT>>29511000
       << ASSIGNED/FROZEN >>                                   <<RGHDR>>29546000
       SSEA( DCOREADDR+DOUBLE(HL+RBTORASDISP), TEMP);          <<RGHDR>>29547000
       IF USEDRSIZE = 0 THEN USEDRSIZE := MAXHOLESIZE;         <<MEMGT>>29553000
       << REGION SIZE ROUNDED >>                               <<RGHDR>>29554000
       SSEA( DCOREADDR+DOUBLE(HL+RBTORSDISP), USEDRSIZE);      <<RGHDR>>29555000
       << SUB REGION SIZE >>                                   <<RGHDR>>29556000
       SSEA( DCOREADDR+DOUBLE(HL+RBTOSSDISP), USEDRSIZE);      <<RGHDR>>29557000
       IF USEDRSIZE = 0 THEN USEDRSIZE := MAXHOLESIZE;         <<MEMGT>>29575000
   IF COREADDR = 0 THEN                                        <<MEMGT>>29585000
      RSIZE := IF USEDRSIZE = 0 THEN MAXHOLESIZE ELSE 0        <<MEMGT>>29586000
   ELSE                                                        <<MEMGT>>29587000
      RSIZE := -COREADDR/MMPAGESIZE;                           <<MEMGT>>29588000
$EDIT VOID=29614000                                            <<RGHDR>>29607000
       << REGION SIZE >>                                       <<RGHDR>>29608000
       SSEA( DCOREADDR+DOUBLE(HL+RBTOPTRSDISP), USEDRSIZE);    <<RGHDR>>29609000
       << ASSIGNED/FROZEN >>                                   <<RGHDR>>29610000
       SSEA( DCOREADDR+DOUBLE(HL+RBTOPTRASDISP), TEMP);        <<RGHDR>>29611000
       << SUBSIZE >>                                           <<RGHDR>>29612000
       SSEA( DCOREADDR+DOUBLE(HL+RBTOPTSSDISP), USEDRSIZE);    <<RGHDR>>29613000
      PUTONARL(DCOREADDR,RSIZE,FALSE);                         <<jb.dc>>29634000
   PUTONARL(DCOREADDR,RSIZE,FALSE);                            <<jb.dc>>29664000
          IF ADDRESS(0) = %177777 THEN ERRMESSAGE(M374,5);     <<06259>>29690000
          IF TOS < ADDRESS(0) THEN ERRMESSAGE(M351);           <<06259>>29708000
         <<----------------------------->>                     <<06259>>29712050
         <<   INSERT SEGMENT INTO DST   >>                     <<06259>>29712100
         <<----------------------------->>                     <<06259>>29712150
                                                               <<06259>>29712200
PROCEDURE INSERTDST(MEMADR,DSTN,SEGSIZE,MAXSIZE);              <<06259>>29712250
   VALUE MEMADR,DSTN,SEGSIZE,MAXSIZE;                          <<06259>>29712300
   DOUBLE MEMADR;        << MEMORY ADDRESS >>                  <<06259>>29712350
   INTEGER DSTN,         << DATA SEGMENT NUMBER >>             <<06259>>29712400
           SEGSIZE,      << SEGMENT SIZE >>                    <<06259>>29712450
           MAXSIZE;      << =0  -NOT IN LINKED MEMORY>>        <<06259>>29712500
                         << =-1 -USE SEGSIZE FOR MAXIMUM SIZE>><<06259>>29712550
                         << >0  -MAXIMUM SIZE OF SEGMENT>>     <<06259>>29712600
    COMMENT                                                    <<06259>>29712700
      INSERTS A DST DESCRIPTOR INTO THE DST TABLE. IF MAXSIZE  <<06259>>29712750
    = 0 THEN DO NOT GET OVERLAY SPACE AND SET THE CORE RESIDENT<<06259>>29712800
    BIT.  IF THE SEGMENT IS TO BE ABSENT, THE CORE RESIDENT BIT<<06259>>29712850
    BE CLEARED BY PROCEDURE ABSENT.                            <<06259>>29712900
;                                                              <<06259>>29712950
BEGIN                                                          <<06259>>29713000
   INTEGER                                                     <<06259>>29713050
      BANK      = MEMADR,                                      <<06259>>29713100
      ADDRESS   = MEMADR+1;                                    <<06259>>29713150
                                                               <<06259>>29713200
   DST(DSTN&LSL(2)) := (SEGSIZE+3)&LSR(2);                     <<06259>>29713250
   TOS:=DST(X:=X+1);                                           <<06259>>29713300
   TOS.SYSTEMFLAG:=1;                                          <<06259>>29713350
   IF MAXSIZE=0 THEN TOS.SEGRESIDENTFLAG:=1;                   <<06259>>29713400
   DST(X):=TOS;                                                <<06259>>29713450
   DST(X:=X+1) := BANK;                                        <<06259>>29713500
   DST(X:=X+1) := ADDRESS;                                     <<06259>>29713550
END << INSERTDST >> ;                                          <<06259>>29713600
   <<-------------------------------------->>                           29714000
   <<   INSERT ABSENT SEGMENT INTO DST     >>                           29715000
   <<-------------------------------------->>                           29716000
                                                                        29717000
PROCEDURE INSERT'ABSENT'DST(DISCADR,DSTN,SEGSIZE,MAXSIZE);              29718000
   VALUE DISCADR,DSTN,SEGSIZE,MAXSIZE;                                  29719000
   DOUBLE DISCADR;      <<DISC ADDRESS>>                                29720000
   INTEGER DSTN,        <<DST NUMBER>>                                  29721000
           SEGSIZE,     <<SEGMENT SIZE>>                                29722000
           MAXSIZE;     << = -1 USE SEGSIZE FOR MAXIMUM SIZE>>          29723000
                        << = >0 MAXIMUM SIZE OF SEGMENT >>              29724000
                                                                        29725000
COMMENT                                                                 29726000
   MAKES A DST ENTRY FOR A DATA SEGMENT IN VIRTUAL MEMORY.  THE         29727000
   DATA SEGMENT IS ASSUMED TO BE IN THE SYSTEM DISC'S VIRTUAL           29728000
   MEMORY;                                                              29729000
                                                                        29730000
BEGIN                                                                   29731000
   INTEGER WORDSPERVMPAGE;                                              29731050
   INTEGER DISCADR1 = DISCADR,                                          29731100
           DISCADR2 = DISCADR+1;                                        29731200
   DEFINE ABSENTFLAG = (0:1)#;                                          29731300
                                                                        29731400
   WORDSPERVMPAGE := VMPAGESIZE;                                        29731500
   DST(DSTN&LSL(2)) := (SEGSIZE+3)&LSR(2);                              29732000
   DST(X).ABSENTFLAG := 1;                                              29733000
   IF MAXSIZE = -1 THEN MAXSIZE := SEGSIZE;                             29734000
   TOS := (MAXSIZE-1)/WORDSPERVMPAGE + 1;   <<GET VM PAGES >>           29735000
   TOS.SYSTEMFLAG := 1;                                                 29736000
   TOS.DISCCOPYVALIDFLAG := 1;                                          29737000
   DST(X:=X+1) := TOS;                                                  29738000
   DST(X:=X+1) := DISCADR1 CAT SYSDISC(0:8:8);                          29739000
   DST(X+1) := DISCADR2;                                                29740000
END;  <<INSERT'ABSENT'DST>>                                             29741000
$EDIT VOID=29786000                                                     29742000
DOUBLE PROCEDURE INITTABLE(NRENTRIES, ENTRYSIZE, WHERE, B32,   <<06259>>29786020
                             DSTN, SYSIX);                     <<06259>>29786021
   VALUE NRENTRIES,ENTRYSIZE,WHERE,B32,DSTN,SYSIX;             <<06259>>29786030
   INTEGER NRENTRIES, ENTRYSIZE, WHERE, DSTN, SYSIX;           <<06259>>29786040
   LOGICAL B32;                                                <<06259>>29786060
   OPTION VARIABLE;                                            <<06259>>29786080
BEGIN  COMMENT                                                 <<06259>>29786100
                                                               <<06259>>29786120
      WHERE                                                    <<06259>>29786140
        0    - ANYWHERE                                        <<06259>>29786160
        1    - BANK 0 ONLY                                     <<06259>>29786180
        2    - BANK 0 ABOVE SYSGLOB                            <<06259>>29786200
        3    - NOT BANK 0                                      <<06259>>29786220
        4    - TEMPORARY STORAGE                               <<06259>>29786240
      B32                                                      <<06259>>29786260
        ALIGN ON A 32 WORD BOUNDARY                            <<06259>>29786280
                                                               <<06259>>29786300
COMMENT:  EACH CELL OF THE ARRAY ADDRESS POINTS TO THE FIRST   <<06259>>29786320
AVAILABLE WORD IN ITS ASSOCIATED BANK.  THUS, THE MEMORY       <<06259>>29786340
ADDRESSES THAT ARE LESS THAN ADDRESS(BANK#) ARE IN USE  AND    <<06259>>29786360
THE HIGHER ONES ARE FREE.  NOTE THAT ADDRESS(BANK#) IS THE     <<06259>>29786380
AMOUNT OF THE BANK IN USE WHILE -ADDRESS(BANK#) IS THE         <<06259>>29786400
AMOUNT OF FREE SPACE IN THAT BANK.                             <<06259>>29786420
;                                                              <<06259>>29786440
                                                               <<06259>>29786460
   DOUBLE  CUR'DL,                                             <<06259>>29786480
           MEMADR = INITTABLE;                                 <<06259>>29786500
   INTEGER LOWLIMIT,                                           <<06259>>29786520
           HIGHLIMIT;                                          <<06259>>29786540
   LOGICAL DONE,                                               <<06259>>29786580
           I,                                                  <<06259>>29786600
           CUR'DL1  = CUR'DL,                                  <<06259>>29786620
           CUR'DL2  = CUR'DL+1,                                <<06259>>29786640
           BANK     = INITTABLE,                               <<06259>>29786660
           COREADDR = INITTABLE+1,                             <<06259>>29786680
           LCLIMIT,                                            <<06259>>29786681
           VAR  = Q-4;                                         <<06259>>29786700
   DEFINE TEMPORARY = (WHERE=4)#;                              <<06259>>29786710
                                                               <<06259>>29786720
   IF VAR.(14:1) THEN  << DSTN SPECIFIED >>                    <<06259>>29786740
      IF TESTBIT(BK1DSEG,DSTN) THEN WHERE := 3;                <<06259>>29786760
                                                               <<06259>>29786780
   TABSIZE := ((NRENTRIES*ENTRYSIZE+3)&LSR(2))&LSL(2);         <<06259>>29786800
   LOWLIMIT := IF WHERE = 3 THEN 1 ELSE 0;                     <<06259>>29786820
   HIGHLIMIT := IF WHERE = 1 OR WHERE = 2 THEN 1               <<06259>>29786840
                                          ELSE NUM'BANKS;      <<06259>>29786850
   LCLIMIT := IF STARFISH THEN %764 ELSE SYSBASE;              <<06259>>29786860
                                                               <<06259>>29786880
   DONE := FALSE;                                              <<06259>>29786920
                                                               <<06259>>29786940
   IF NOT ( 2 <= WHERE <= 3 ) THEN                             <<06259>>29786941
      BEGIN  << SEARCH AREA BETWEEN 0 AND SYSBASE >>           <<06259>>29786942
      BANK := 0;                                               <<06259>>29786943
      COREADDR := IF B32 THEN (LCMEMLOC+31)/32*32 ELSE         <<06259>>29786944
         LCMEMLOC;                                             <<06259>>29786945
      IF COREADDR+TABSIZE <= LCLIMIT THEN                      <<06259>>29786946
         BEGIN                                                 <<06259>>29786947
         IF NOT TEMPORARY THEN                                 <<06259>>29786948
            LCMEMLOC := COREADDR + TABSIZE;                    <<06259>>29786949
         DONE := TRUE;                                         <<06259>>29786950
         END;                                                  <<06259>>29786951
      END;                                                     <<06259>>29786952
                                                               <<06259>>29786953
   I := LOWLIMIT;                                              <<06259>>29786957
   WHILE (I <> LOGICAL(HIGHLIMIT)) AND NOT DONE DO             <<06259>>29786960
      BEGIN                                                    <<06259>>29786970
      BANK := I;                                               <<06259>>29786980
      COREADDR := IF B32 THEN (ADDRESS(BANK)+31)/32*32         <<06259>>29787000
         ELSE ADDRESS(BANK);                                   <<06259>>29787020
      IF TABSIZE <= -(COREADDR+5) THEN                         <<LARGE>>29787040
         BEGIN                 <<^INSURE 3 WDS FOR TRAILER>>   <<06259>>29787060
         << COMPUTE ABSOLUTE DL ADDRESS >>                     <<06259>>29787080
         PUSH(DL,DB);                                          <<06259>>29787100
         ASSEMBLE(CAB, ADD);  << ABSOLUTE DL ADDRESS >>        <<06259>>29787120
         CUR'DL := TOS;                                        <<06259>>29787140
         IF CUR'DL <= MEMADR+DOUBLE(TABSIZE) THEN              <<06259>>29787160
            ERRMESSAGE(M350);  << OUT OF MEMORY >>             <<06259>>29787180
         IF BANK=0 AND (COREADDR+TABSIZE < HCLIMIT) OR         <<06259>>29787200
            BANK <> 0 THEN                                     <<06259>>29787240
            BEGIN                                              <<06259>>29787260
            DONE := TRUE;                                      <<06259>>29787280
            IF NOT TEMPORARY THEN                              <<06259>>29787300
               ADDRESS(BANK) := COREADDR + TABSIZE;            <<06259>>29787380
            END;                                               <<06259>>29787400
         END;                                                  <<06259>>29787420
      I := I+1;                                                <<06259>>29787430
      END;                                                     <<06259>>29787440
                                                               <<06259>>29787480
   IF NOT DONE THEN ERRMESSAGE(M350);  << OUT OF MEMORY >>     <<06259>>29787500
                                                               <<06259>>29787560
   << ZERO MEMORY SPACE >>                                     <<06259>>29787580
   TOS := MEMADR;  << STARTING ADDRESS >>                      <<06259>>29787600
   TOS := 0;                                                   <<06259>>29787620
   ASSEMBLE(SSEA; INCA,DDUP; DECA);                            <<06259>>29787640
   TOS := TABSIZE-1;                                           <<06259>>29787660
   ASSEMBLE(MABS 5);                                           <<06259>>29787680
                                                               <<06259>>29787685
   IF VAR.(15:1) THEN ABS(SYSIX) := BUILDSYSPTR(MEMADR);       <<06259>>29787690
   IF VAR.(14:1) THEN INSERTDST(MEMADR,DSTN,TABSIZE,0);        <<06259>>29787695
   IF LOGICALMAPPING AND (WHERE=1 OR WHERE=2) THEN             <<depen>>29787696
      BEGIN                                                    <<depen>>29787697
      TOS := HCLIMIT;                                          <<depen>>29787698
      ASSEMBLE(NEG);                                           <<depen>>29787699
      BANK0 := ADDRESS(BANK) + TOS;                            <<depen>>29787700
      END                                                      <<depen>>29787701
   ELSE                                                        <<depen>>29787702
      IF (NOT LOGICALMAPPING) AND (WHERE=1 OR WHERE=2          <<depen>>29787703
         OR VAR.(15:1)) THEN                                   <<depen>>29787704
         BEGIN                                                 <<depen>>29787705
         TOS := HCLIMIT;                                       <<depen>>29787706
         ASSEMBLE(NEG);                                        <<depen>>29787707
         BANK0 := ADDRESS(BANK) + TOS;                         <<depen>>29787708
         END;                                                  <<depen>>29787709
END;  << INITTABLE >>                                          <<depen>>29787720
$EDIT VOID=29858000                                            <<06259>>29788000
          <<-------------------------->>                       <<06259>>29790000
          <<   INITIALIZE FREE LIST   >>                       <<06259>>29791000
          <<-------------------------->>                       <<06259>>29792000
                                                               <<06259>>29793000
PROCEDURE INITFREELIST(MEMADR,NRENTRIES,ENTRYSIZE,FIRSTENTRY); <<06259>>29794000
   VALUE MEMADR, NRENTRIES, ENTRYSIZE, FIRSTENTRY;             <<06259>>29795000
   DOUBLE MEMADR;                                              <<06259>>29796000
   INTEGER NRENTRIES, ENTRYSIZE, FIRSTENTRY;                   <<06259>>29797000
   COMMENT                                                     <<06259>>29798000
     INITIALIZE FREE LIST FOR TABLE BEGINNING                  <<06259>>29799000
       AT ENTRY FIRSTENTRY;                                    <<06259>>29799500
BEGIN                                                          <<06259>>29800000
   INTEGER ARRAY TABLE(*)=DB+0;                                <<06259>>29801000
   INTEGER PREVENTRYINX:=0;                                    <<06259>>29802000
                                                               <<06259>>29803000
   TOS := MEMADR;                                              <<06259>>29804000
   ASSEMBLE(XCHD);  <<SET DB TO TABLE>>                        <<06259>>29805000
   TABLE := NRENTRIES-1;                                       <<06259>>29806000
   TABLE(1) := ENTRYSIZE;                                      <<06259>>29807000
   TABLE(2) := NRENTRIES-FIRSTENTRY;                           <<06259>>29808000
               <<# OF UNALLOCATED ENTRIES>>                    <<06259>>29808500
   TABLE(3) := FIRSTENTRY*ENTRYSIZE; <<PTR TO FIRST AVAILABLE>><<06259>>29809000
   IF ENTRYSIZE >= 5 THEN                                      <<06259>>29810000
      TABLE(4) := (NRENTRIES-1)*ENTRYSIZE;                     <<06259>>29811000
                                                               <<06259>>29812000
   DO BEGIN  <<INITIALIZE FREE LIST>>                          <<06259>>29813000
      TABLE(FIRSTENTRY*ENTRYSIZE) := %100000;                  <<06259>>29814000
      TOS := X+ENTRYSIZE;                                      <<06259>>29815000
      TABLE(X:=X+1) := TOS; <<PTR TO NEXT ENTRY>>              <<06259>>29816000
      IF ENTRYSIZE >= 5 THEN                                   <<06259>>29817000
         BEGIN                                                 <<06259>>29818000
         TABLE(X:=X+1):=PREVENTRYINX;                          <<06259>>29819000
         X:=X-1;                                               <<06259>>29820000
         END;                                                  <<06259>>29821000
      PREVENTRYINX := FIRSTENTRY*ENTRYSIZE;                    <<06259>>29822000
      END                                                      <<06259>>29823000
   UNTIL (FIRSTENTRY:=FIRSTENTRY+1)=NRENTRIES;                 <<06259>>29824000
                                                               <<06259>>29825000
   TABLE(X) := 0;   <<STOPPER>>                                <<06259>>29826000
   SET( DB );  << RESET DB TO STACK >>                         <<06259>>29827000
END;   << INITFREELIST >>                                      <<06259>>29828000
$EDIT VOID=29930000                                            <<*SLL*>>29860000
INTEGER PROCEDURE GETENTRY( DSTNR );                           <<*SLL*>>29862000
   VALUE DSTNR;                                                <<*SLL*>>29863000
   INTEGER DSTNR;   << DATA SEGMENT # OF TABLE >>              <<*SLL*>>29864000
BEGIN                                                          <<*SLL*>>29865000
                                                               <<*SLL*>>29866000
   <<   Retriveves the next free entry from the specified   >> <<*SLL*>>29867000
   <<   table and returns its number.  If no free entries   >> <<*SLL*>>29868000
   <<   are left, prints an error message and halts.        >> <<*SLL*>>29869000
                                                               <<*SLL*>>29870000
   INTEGER RETURNVALUE=GETENTRY;                               <<*SLL*>>29871000
   INTEGER ARRAY MESSIX(1:3)=PB :=                             <<*SLL*>>29872000
       M300,M301,M302;                                         <<*SLL*>>29873000
   INTEGER                                                     <<*SLL*>>29874000
      NRENTRES     = DB+0,                                     <<*SLL*>>29875000
      ENTSIZE      = DB+1,                                     <<*SLL*>>29876000
      NRFREE       = DB+2,                                     <<*SLL*>>29877000
      FIRSTFREE    = DB+3;                                     <<*SLL*>>29878000
   INTEGER ARRAY                                               <<*SLL*>>29879000
      TABLE(*)     = DB+0;                                     <<*SLL*>>29880000
   INTEGER                                                     <<*SLL*>>29881000
      NEWHEAD;                                                 <<*SLL*>>29882000
                                                               <<*SLL*>>29883000
   EXCHANGEDB( DSTNR ); << XCH DB TO THE BASE OF TABLE >>      <<*SLL*>>29884000
                                                               <<*SLL*>>29885000
   IF NRFREE = 0 THEN                                          <<*SLL*>>29886000
      IF DSTNR = SWAPTABDSTN THEN                              <<*SLL*>>29887000
         ERRMESSAGE( M303 )                                    <<*SLL*>>29888000
      ELSE                                                     <<*SLL*>>29889000
         ERRMESSAGE( MESSIX(DSTNR) );                          <<*SLL*>>29890000
   NRFREE := NRFREE - 1;                                       <<*SLL*>>29891000
   GETENTRY := FIRSTFREE / ENTSIZE;                            <<*SLL*>>29892000
   NEWHEAD := TABLE(FIRSTFREE+1);                              <<*SLL*>>29893000
   TABLE(FIRSTFREE+0) := 0;                                    <<*SLL*>>29894000
   TABLE(X:=X+1) := 0;                                         <<*SLL*>>29895000
   IF DSTNR = PCBDSTN THEN                                     <<*SLL*>>29896000
      PCB(FIRSTFREE+PQPTRWORDNUM) := 0;                        <<*SLL*>>29897000
   IF ENTSIZE > 4 THEN TABLE(NEWHEAD+2) := 0;                  <<*SLL*>>29898000
   FIRSTFREE := NEWHEAD;                                       <<*SLL*>>29899000
                                                               <<*SLL*>>29900000
   EXCHANGEDB( 0 ); << XCH DB BACK TO STACK >>                 <<*SLL*>>29901000
END;                                                           <<*SLL*>>29902000
$EDIT VOID=30002000                                            <<*SLL*>>29932000
            <<----------------------------------->>            <<*SLL*>>29933000
            <<    RETURN ENTRY TO FREE LIST      >>            <<*SLL*>>29934000
            <<----------------------------------->>            <<*SLL*>>29935000
                                                               <<*SLL*>>29936000
PROCEDURE RETURNENTRY( DSTNR, ENTRYNUM);                       <<*SLL*>>29937000
   VALUE DSTNR, ENTRYNUM;                                      <<*SLL*>>29938000
   INTEGER DSTNR,   << DST # OF TABLE           >>             <<*SLL*>>29939000
          ENTRYNUM; << ENTRY NUMBER TO BE FREED >>             <<*SLL*>>29940000
BEGIN                                                          <<*SLL*>>29941000
                                                               <<*SLL*>>29942000
   <<   Returns an entry allocated by GETENTRY to its   >>     <<*SLL*>>29943000
   <<   free list.  The returned entry becomes first    >>     <<*SLL*>>29944000
   <<   on the free list.                               >>     <<*SLL*>>29945000
                                                               <<*SLL*>>29946000
   INTEGER                                                     <<*SLL*>>29947000
      NRENTRES     = DB+0,                                     <<*SLL*>>29948000
      ENTSIZE      = DB+1,                                     <<*SLL*>>29949000
      NRFREE       = DB+2,                                     <<*SLL*>>29950000
      FIRSTFREE    = DB+3,                                     <<*SLL*>>29951000
      LASTFREE     = DB+4;                                     <<*SLL*>>29952000
   INTEGER ARRAY                                               <<*SLL*>>29953000
      TABLE(*)     = DB+0;                                     <<*SLL*>>29954000
   INTEGER                                                     <<*SLL*>>29955000
      OLDHEAD,                                                 <<*SLL*>>29956000
      OLDTAIL,                                                 <<*SLL*>>29957000
      ENTRYINX;                                                <<*SLL*>>29958000
                                                               <<*SLL*>>29959000
   EXCHANGEDB( DSTNR ); << SET DB TO BASE OF THE TABLE >>      <<*SLL*>>29960000
                                                               <<*SLL*>>29961000
   NRFREE := NRFREE + 1;                                       <<*SLL*>>29962000
   ENTRYINX := ENTRYNUM * ENTSIZE;                             <<*SLL*>>29963000
   IF ENTSIZE <= 4 THEN                                        <<*SLL*>>29964000
      BEGIN                                                    <<*SLL*>>29965000
      OLDHEAD := FIRSTFREE;                                    <<*SLL*>>29966000
      FIRSTFREE := ENTRYINX;                                   <<*SLL*>>29967000
      TABLE( FIRSTFREE+1) := OLDHEAD;                          <<*SLL*>>29968000
      TABLE( FIRSTFREE) := %100000; << MARK FREE >>            <<*SLL*>>29969000
      END;                                                     <<*SLL*>>29970000
                                                               <<*SLL*>>29971000
   EXCHANGEDB( 0 );  << RETURN DB TO THE STACK >>              <<*SLL*>>29972000
END;  << RETURNENTRY >>                                        <<*SLL*>>29973000
     POINTER PTR;                                              <<06091>>30022400
                                                               <<06091>>30022600
     RETURNENTRY( CSTDSTN, CSTNUM); << RETURN TO FREE LIST >>  <<*SLL*>>30024000
     @PTR := @SEGT(SEGT(SEG'HEAD+SLTYP)+21+CSTNUM*3);          <<06091>>30026000
     PTR := %177400;   << XFORM >>                             <<06091>>30028000
     PTR(1) := 0;      << REF   >>                             <<06091>>30030000
     PTR(2) := 0;      << PHY # >>                             <<06091>>30030117
END;  << DELETECST >>                                          <<06091>>30030235
$EDIT VOID=30174000                                            <<06259>>30114000
                                                               <<06259>>30175700
$EDIT VOID=30246000                                            <<06259>>30176000
          <<----------------------------------->>              <<06259>>30178000
          <<   MAKE DATA SEGMENT NON-PRESENT   >>              <<06259>>30179000
          <<----------------------------------->>              <<06259>>30180000
                                                               <<06259>>30181000
PROCEDURE ABSENT(DSTN, MAXSIZE, DISCADR);                      <<06259>>30182000
   VALUE DSTN, MAXSIZE, DISCADR;                               <<06259>>30183000
   INTEGER DSTN,      <<DST NUMBER>>                           <<06259>>30184000
           MAXSIZE;   <<IF -1, USE SEGMENT SIZE, OTHERWISE >>  <<06259>>30185000
   DOUBLE             << MAXIMUM SEGMENT SIZE>>                <<06259>>30186000
      DISCADR;                                                 <<06259>>30187000
   OPTION VARIABLE;                                            <<06259>>30188000
   COMMENT                                                     <<06259>>30189000
     WRITES THE SPECIFIED DATA SEGMENT TO VIRTUAL MEMORY       <<06259>>30190000
     AND UPDATES THE DST TO REFLECT THIS;                      <<06259>>30191000
BEGIN                                                          <<06259>>30192000
   LOGICAL                                                     <<06259>>30193000
      MASK = Q-4;                                              <<06259>>30194000
   DOUBLE                                                      <<06259>>30195000
      MEMADR;                                                  <<06259>>30196000
   INTEGER                                                     <<06259>>30197000
      MEMADR1       = MEMADR,                                  <<06259>>30198000
      MEMADR2       = MEMADR+1,                                <<06259>>30199000
      DISCADR1      = DISCADR,                                 <<06259>>30200000
      DISCADR2      = DISCADR+1,                               <<06259>>30201000
      SIZE,                                                    <<06259>>30202000
      INX;                                                     <<06259>>30203000
                                                               <<06259>>30204000
   INX := DSTN * 4;                                            <<06259>>30205000
   SIZE := (DST(INX).(3:13) +1) *4;                            <<06694>>30206000
   IF NOT MASK THEN << DISCADR NOT SUPPLIED - GET SOME VM >>   <<06259>>30207000
      DISCADR := GETSWAPREGION( DSTN, IF MAXSIZE = -1 THEN     <<06259>>30208000
         SIZE ELSE MAXSIZE, SYSDISC);                          <<06259>>30209000
   IF DISCADR = 0D THEN ERRMESSAGE( M330, SYSDISC);            <<06259>>30210000
   << OUT OF VIRTUAL MEMORY ON LDEV #1 >>                      <<06259>>30211000
   DST( INX).(0:3) := 4;     << SET ABSENT BIT >>              <<JMAT*>>30212000
   DST( INX+1).DISCCOPYVALIDFLAG := 1;                         <<06259>>30213000
   DST( INX+1).SYSTEMFLAG := 1;                                <<06259>>30214000
   DST( INX+1).SEGRESIDENTFLAG := 0; << SET IN INSERTDST >>    <<06259>>30215000
   MEMADR1 := DST( INX+2);                                     <<06259>>30216000
   MEMADR2 := DST( INX+3);                                     <<06259>>30217000
   DST( INX+2) := DISCADR1 CAT SYSDISC (0:8:8);                <<06259>>30218000
   DST( INX+3) := DISCADR2;                                    <<06259>>30219000
   DISC'( WRITE, SYSDISC, DISCADR, MEMADR, SIZE);              <<06259>>30220000
END;    << ABSENT >>                                           <<06259>>30221000
$EDIT VOID=30364000                                            <<06354>>30222000
          <<----------------------------->>                    <<*SLL*>>30222500
          <<   INITIALIZE SYSTEM TABLE   >>                    <<*SLL*>>30223000
          <<----------------------------->>                    <<*SLL*>>30224000
                                                               <<*SLL*>>30225000
PROCEDURE INITSYSTABLE(NRENTRIES,NRPRIMARY,ENTRYSIZE,DSTN,     <<*SLL*>>30226000
      SYSIX);                                                  <<*SLL*>>30227000
   VALUE NRENTRIES, NRPRIMARY, ENTRYSIZE, DSTN, SYSIX;         <<*SLL*>>30228000
   INTEGER NRENTRIES, NRPRIMARY, ENTRYSIZE, DSTN, SYSIX;       <<*SLL*>>30229000
BEGIN                                                          <<*SLL*>>30230000
   <<                                                 >>       <<*SLL*>>30231000
   <<   ALLOCATE MEMORY AND INITIALIZE SYSTEM TABLE   >>       <<*SLL*>>30232000
   <<                                                 >>       <<*SLL*>>30233000
   EQUATE SYSTABOVERHEAD = 15; << HEADER SIZE IN WORDS >>      <<*SLL*>>30233500
   INTEGER ARRAY TABLE(*)=DB+0;                                <<*SLL*>>30234000
   INTEGER PREVENTRYINX:=0;                                    <<*SLL*>>30235000
   INTEGER TOTENTRIES;                                         <<*SLL*>>30235500
   INTEGER FIRSTENTRY;                                         <<*SLL*>>30236000
   INTEGER INX;                                                <<*SLL*>>30237000
                                                               <<*SLL*>>30238000
   FIRSTENTRY := (SYSTABOVERHEAD+ENTRYSIZE-1)/ENTRYSIZE;       <<*SLL*>>30239000
   TOTENTRIES := NRENTRIES + FIRSTENTRY;                       <<*SLL*>>30239500
   INITTABLE(TOTENTRIES, ENTRYSIZE, ANYWHERE'TAB, TRUE,        <<*SLL*>>30240000
      DSTN, SYSIX);                                            <<*SLL*>>30241000
                                                               <<*SLL*>>30242000
   EXCHANGEDB( DSTN );  << XCH DB TO BASE OF THE TABLE >>      <<*SLL*>>30243000
   TABLE := TOTENTRIES;                                        <<SLLHR>>30244000
   TABLE(1) := ENTRYSIZE;                                      <<*SLL*>>30245000
   TABLE(2) := NRENTRIES; <<# OF UNALLOCATED ENTRIES>>         <<*SLL*>>30246000
   TABLE(3) := FIRSTENTRY * ENTRYSIZE; <<PTR TO FIRST AVAIL>>  <<*SLL*>>30247000
   TABLE(4) := (TOTENTRIES-1) * ENTRYSIZE;                     <<*SLL*>>30248000
   TABLE(6) := NRPRIMARY;                                      <<*SLL*>>30249000
                                                               <<*SLL*>>30250000
   DO BEGIN  <<INITIALIZE FREE LIST>>                          <<*SLL*>>30251000
      INX := FIRSTENTRY * ENTRYSIZE;                           <<*SLL*>>30252000
      TABLE(INX) := %100000;                                   <<*SLL*>>30253000
      TABLE(INX+1) := INX+ENTRYSIZE; <<PTR TO NEXT ENTRY>>     <<*SLL*>>30254000
      IF ENTRYSIZE >= 5 THEN                                   <<*SLL*>>30255000
         TABLE(INX+2) := PREVENTRYINX;                         <<*SLL*>>30256000
      IF DSTN = PCBDSTN THEN                                   <<*SLL*>>30257000
         TABLE(INX+PQPTRWORDNUM) := -1;                        <<*SLL*>>30258000
      PREVENTRYINX := INX;                                     <<*SLL*>>30259000
      END                                                      <<*SLL*>>30260000
   UNTIL (FIRSTENTRY:=FIRSTENTRY+1) = TOTENTRIES;              <<*SLL*>>30261000
                                                               <<*SLL*>>30262000
   TABLE(INX+1) := 0;   << STOPPER >>                          <<*SLL*>>30263000
                                                               <<*SLL*>>30264000
   EXCHANGEDB( 0 ); << RETURN DB TO THE STACK >>               <<*SLL*>>30265000
END;   << INITFREELIST >>                                      <<*SLL*>>30266000
          <<--------------------------------->>                <<PORTS>>30266010
          << INITIALIZE INCORE MESSAGE TABLE >>                <<PORTS>>30266020
          <<--------------------------------->>                <<PORTS>>30266030
                                                               <<PORTS>>30266040
PROCEDURE INIT'MESSAGE'SYSTEM;                                 <<PORTS>>30266050
  BEGIN                                                        <<PORTS>>30266060
  INTEGER PRISIZE,                                             <<PORTS>>30266070
          MINPRISIZE,                                          <<PORTS>>30266080
          SECSIZE,                                             <<PORTS>>30266090
          MINSECSIZE,                                          <<PORTS>>30266100
          NUMPORTS,                                            <<PORTS>>30266110
          TOTALSIZE;                                           <<PORTS>>30266120
  INTEGER POINTER MSG;                                         <<PORTS>>30266130
  DOUBLE DADDR,                                                <<PORTS>>30266140
         SAVEDADDR;                                            <<PORTS>>30266150
  INTEGER BANK = DADDR,                                        <<PORTS>>30266160
          COREADDR = DADDR +1;                                 <<PORTS>>30266170
                                                               <<PORTS>>30266180
  EQUATE MSGHARBHEADERSIZE = 13,                               <<PORTS>>30266190
         MSGHARBORLENGTH = 16,  << FOUR SUBQUEUES >>           <<PORTS>>30266200
         MSGTABSIZE = 6;  << LINK, LENGTH, 4 WORDS DATA >>     <<PORTS>>30266210
                                                               <<PORTS>>30266220
  << PORT DST HEADER STRUCTURE >>                              <<PORTS>>30266230
  INTEGER PORTDSTNUM = DB +0;                                  <<PORTS>>30266240
  INTEGER PORTDSTSIZE = DB +1;                                 <<PORTS>>30266250
  INTEGER POINTER USERREGIONPOINTER = DB +2;                   <<PORTS>>30266260
  INTEGER PORTDSTNUMPORTS = DB +3;                             <<PORTS>>30266270
  INTEGER PORTDSTMAXMSGSIZE = DB +4;                           <<PORTS>>30266280
  INTEGER PORTDSTMAXCONTEXTSIZE = DB +5;                       <<PORTS>>30266290
  INTEGER POINTER MSGPOOLHEAD = DB +6,                         <<PORTS>>30266300
                  MSGPOOLTAIL = DB +7;                         <<PORTS>>30266310
  INTEGER POOLCNT = DB +8;                                     <<PORTS>>30266320
  INTEGER PROCHEAD = DB +9,                                    <<PORTS>>30266330
          PROCTAIL = DB +10;                                   <<PORTS>>30266340
  INTEGER POINTER TIMEHEAD = DB +11;                           <<PORTS>>30266350
  INTEGER TIMETRLX = DB +12;                                   <<PORTS>>30266360
  EQUATE PORTDSTHEADERSIZE = 13;                               <<PORTS>>30266370
                                                               <<PORTS>>30266380
  NUMPORTS := CTAB(PCBNUM) +1;  << DISPATCHER USES ONE >>      <<PORTS>>30266390
  PRISIZE := CTAB(PRIMARYMSGTABLE);                            <<PORTS>>30266400
  << MUST RESERVE AN ENTRY FOR 50% OF NUM PORTS >>             <<PORTS>>30266410
  MINPRISIZE := (NUMPORTS +1)&LSR(1);                          <<PORTS>>30266420
  IF PRISIZE < MINPRISIZE THEN                                 <<PORTS>>30266430
    PRISIZE := MINPRISIZE;                                     <<PORTS>>30266440
  IF PRISIZE > 1023 THEN                                       <<PORTS>>30266450
    PRISIZE := 1023;                                           <<PORTS>>30266460
                                                               <<PORTS>>30266470
  SECSIZE := CTAB(SECNDRYMSGTABLE);                            <<PORTS>>30266480
  << MUST HAVE AN ENRTY FOR 12% OF THE PINS >>                 <<PORTS>>30266490
  MINSECSIZE := (NUMPORTS +7)&LSR(3);                          <<PORTS>>30266500
  IF SECSIZE < MINSECSIZE THEN                                 <<PORTS>>30266510
    SECSIZE := MINSECSIZE;                                     <<PORTS>>30266520
  IF SECSIZE > 1023 THEN                                       <<PORTS>>30266530
    SECSIZE := 1023;                                           <<PORTS>>30266540
                                                               <<PORTS>>30266550
  TOTALSIZE := MSGHARBHEADERSIZE +  << FIXED OVERHEAD >>       <<PORTS>>30266560
               NUMPORTS*MSGHARBORLENGTH +                      <<PORTS>>30266570
               (PRISIZE + SECSIZE)*MSGTABSIZE;                 <<PORTS>>30266580
                                                               <<PORTS>>30266590
  DADDR := INITTABLE( TOTALSIZE, 1, 0<<ANYWHERE>>,             <<PORTS>>30266600
                       FALSE, MSGHARBORTABDSTN);               <<PORTS>>30266610
                                                               <<PORTS>>30266620
  TOS := DADDR;                                                <<PORTS>>30266630
  ASSEMBLE( XCHD );                                            <<PORTS>>30266640
  SAVEDADDR := TOS;                                            <<PORTS>>30266650
                                                               <<PORTS>>30266660
  << INIT. MESSAGE TABLE HEADER >>                             <<PORTS>>30266670
  PORTDSTNUM := MSGHARBORTABDSTN;                              <<PORTS>>30266680
  PORTDSTSIZE := TOTALSIZE;                                    <<PORTS>>30266690
  @USERREGIONPOINTER := TOTALSIZE;  <<CAUSE BNDS VIOL IF USED>><<PORTS>>30266700
  PORTDSTNUMPORTS := NUMPORTS;                                 <<PORTS>>30266710
  PORTDSTMAXMSGSIZE := MSGTABSIZE;                             <<PORTS>>30266720
  PORTDSTMAXCONTEXTSIZE := 0;                                  <<PORTS>>30266730
                                                               <<PORTS>>30266740
  @MSGPOOLHEAD := @MSGPOOLTAIL := 0;                           <<PORTS>>30266750
  POOLCNT := PRISIZE;                                          <<PORTS>>30266760
  PROCHEAD := PROCTAIL := 0;                                   <<PORTS>>30266770
                                                               <<PORTS>>30266780
  << INIT MSG FREE POOL >>                                     <<PORTS>>30266790
  @MSG := NUMPORTS*MSGHARBORLENGTH + MSGHARBHEADERSIZE;        <<PORTS>>30266800
  @MSGPOOLHEAD := @MSG;                                        <<PORTS>>30266810
  WHILE @MSG < PORTDSTSIZE - MSGTABSIZE DO                     <<PORTS>>30266820
    @MSG := MSG := @MSG + MSGTABSIZE;                          <<PORTS>>30266830
  @MSGPOOLTAIL := @MSG;                                        <<PORTS>>30266840
                                                               <<PORTS>>30266850
  << RESTORE DB >>                                             <<PORTS>>30266860
  TOS := SAVEDADDR;                                            <<PORTS>>30266870
  ASSEMBLE( XCHD;  DDEL );                                     <<PORTS>>30266880
                                                               <<PORTS>>30266890
  END;  << INIT'MESSAGE'SYSTEM >>                              <<PORTS>>30266900
                                                               <<PORTS>>30266910
          <<-------------------------->>                       <<PORTS>>30266920
          << IOWAIT PORT VECTOR TABLE >>                       <<PORTS>>30266930
          <<-------------------------->>                       <<PORTS>>30266940
                                                               <<PORTS>>30266950
PROCEDURE INIT'IOWAIT'VECTOR'TABLE;                            <<PORTS>>30266960
  BEGIN                                                        <<PORTS>>30266970
  DOUBLE DADDR;                                                <<PORTS>>30266980
  INTEGER BANK = DADDR,                                        <<PORTS>>30266990
          COREADDR = DADDR +1;                                 <<PORTS>>30267000
  INTEGER I;                                                   <<PORTS>>30267010
                                                               <<PORTS>>30267020
  EQUATE INITPORTVECTORSIZE=1024,                              <<PORTS>>30267030
         MAXPORTVECTORSIZE=4096;                               <<PORTS>>30267040
                                                               <<PORTS>>30267050
  DADDR := INITTABLE( INITPORTVECTORSIZE, 1, 0,<< ANYWHERE >>  <<PORTS>>30267060
                      FALSE, PORTVECTORDSTN );                 <<PORTS>>30267070
                                                               <<PORTS>>30267090
  SSEA(DADDR+0D,INITPORTVECTORSIZE); <<CURRENT SIZE>>          <<PORTS>>30267100
  SSEA(DADDR+1D,MAXPORTVECTORSIZE);  <<MAXSIZE>>               <<PORTS>>30267110
  << INIT FREE ENTRY LINKED LIST >>                            <<PORTS>>30267120
  SSEA(DADDR+2D,8);   <<@HEADPTR>>                             <<PORTS>>30267130
  I := 6;        << RESERVE AN EIGHT WORD DST OVERHEAD AREA >> <<PORTS>>30267140
  WHILE (I := I +2) < INITPORTVECTORSIZE-2 DO                  <<PORTS>>30267150
    SSEA(DADDR+DOUBLE(I),I+2);                                 <<PORTS>>30267160
  SSEA(DADDR+DOUBLE(I),0);  <<TERMINATE LIST>>                 <<PORTS>>30267170
  SSEA(DADDR+3D,I);    <<@TAILPTR>>                            <<PORTS>>30267180
  ABSENT(PORTVECTORDSTN,MAXPORTVECTORSIZE);                    <<PORTS>>30267190
                                                               <<PORTS>>30267200
  END;  << INIT'IOWAIT'VECTOR'TABLE >>                         <<PORTS>>30267210
                                                               <<PORTS>>30267220
          <<--------------------------------->>                <<PORTS>>30267230
          << PORT PROCEDURE DICTIONARY TABLE >>                <<PORTS>>30267240
          <<--------------------------------->>                <<PORTS>>30267250
                                                               <<PORTS>>30267260
PROCEDURE INIT'PORT'DICT'TABLE;                                <<PORTS>>30267270
  BEGIN                                                        <<PORTS>>30267280
  DOUBLE DADDR,                                                <<PORTS>>30267290
         SAVEDADDR;                                            <<PORTS>>30267300
  INTEGER BANK = DADDR,                                        <<PORTS>>30267310
          COREADDR = DADDR +1;                                 <<PORTS>>30267320
  INTEGER I;                                                   <<PORTS>>30267330
  INTEGER POINTER DICT'PTR;                                    <<PORTS>>30267340
                                                               <<PORTS>>30267350
  EQUATE INITIAL'DICT'SIZE = 4096,                             <<PORTS>>30267360
         MAX'DICT'SIZE = 16384;                                <<PORTS>>30267370
                                                               <<PORTS>>30267380
  EQUATE DICT'HEADERSIZE = 8,                                  <<PORTS>>30267390
         NUMHASH'BUCKETS = 95,  << SAME HASH FUNCTION AS USL >><<PORTS>>30267400
         DICT'ENTRY'SIZE = 16;                                 <<PORTS>>30267410
                                                               <<PORTS>>30267420
  INTEGER CURRENT'SIZE = DB +0,                                <<PORTS>>30267430
          MAX'DST'SIZE = DB +1;                                <<PORTS>>30267440
  INTEGER POINTER DICT'POOLHEAD = DB +2,                       <<PORTS>>30267450
                  DICT'POOLTAIL = DB +3;                       <<PORTS>>30267460
                                                               <<PORTS>>30267470
  DADDR := INITTABLE( INITIAL'DICT'SIZE, 1, 0, << ANYWHERE >>  <<PORTS>>30267480
                      FALSE, PORT'DICT'DSTN );                 <<PORTS>>30267490
                                                               <<PORTS>>30267510
  TOS := DADDR;                                                <<PORTS>>30267520
  ASSEMBLE( XCHD );                                            <<PORTS>>30267530
  SAVEDADDR := TOS;                                            <<PORTS>>30267540
                                                               <<PORTS>>30267550
  << INIT. DICT. TABLE HEADER >>                               <<PORTS>>30267560
  CURRENT'SIZE := INITIAL'DICT'SIZE;                           <<PORTS>>30267570
  MAX'DST'SIZE := MAX'DICT'SIZE;                               <<PORTS>>30267580
                                                               <<PORTS>>30267590
  << INIT DICT'ENTRY FREE POOL >>                              <<PORTS>>30267600
  @DICT'PTR := NUMHASH'BUCKETS + DICT'HEADERSIZE;              <<PORTS>>30267610
  @DICT'POOLHEAD := @DICT'PTR;                                 <<PORTS>>30267620
  WHILE @DICT'PTR < INITIAL'DICT'SIZE - DICT'ENTRY'SIZE DO     <<PORTS>>30267630
    @DICT'PTR := DICT'PTR := @DICT'PTR + DICT'ENTRY'SIZE;      <<PORTS>>30267640
  @DICT'POOLTAIL := @DICT'PTR;                                 <<PORTS>>30267650
                                                               <<PORTS>>30267660
  << RESTORE DB >>                                             <<PORTS>>30267670
  TOS := SAVEDADDR;                                            <<PORTS>>30267680
  ASSEMBLE( XCHD;  DDEL );                                     <<PORTS>>30267690
                                                               <<PORTS>>30267700
  ABSENT(PORT'DICT'DSTN,MAX'DICT'SIZE);                        <<PORTS>>30267710
                                                               <<PORTS>>30267720
  END;  << INIT'PORT'DICT'TABLE >>                             <<PORTS>>30267730
         <<-------------------------->>                        <<06259>>30364050
         <<   INITIALIZE I/O TABLE   >>                        <<06259>>30364100
         <<-------------------------->>                        <<06259>>30364150
                                                               <<06259>>30364200
PROCEDURE INITIOTABLE(NRENTRIES,SECONDPART,ENTRYSIZE,          <<06354>>30364250
                         DSTN, SYSIX);                         <<06259>>30364251
   VALUE NRENTRIES,SECONDPART,ENTRYSIZE,DSTN,SYSIX;            <<06259>>30364300
   INTEGER NRENTRIES,SECONDPART,ENTRYSIZE,DSTN,SYSIX;          <<06259>>30364350
   COMMENT                                                     <<06259>>30364400
      INITIALIZE FREE LIST AND HEADER INFO FOR ONE OF THE      <<06259>>30364450
    I/O TABLES. 1/SECONDPART GIVES THE PORTION OF ENTRIES TO BE<<06259>>30364500
    PUT IN THE SECONDARY PART OF THE TABLE;                    <<06259>>30364550
BEGIN                                                          <<06259>>30364600
   INTEGER ARRAY TABLE(*)=DB+0;                                <<06259>>30364650
   INTEGER NEXT;                                               <<06259>>30364675
   INTEGER I;                                                  <<06259>>30364700
   INTEGER HEADSIZE;                                           <<06259>>30364750
   INTEGER PRIMARYPART;                                        <<06259>>30364800
   DOUBLE MEMADR;                                              <<06259>>30364850
                                                               <<06259>>30364900
   HEADSIZE := IF DSTN = DISCREQTABDSTN THEN ENTRYSIZE         <<06259>>30364950
      ELSE IOHEADSIZE;                                         <<06259>>30365000
   MEMADR := INITTABLE(NRENTRIES*ENTRYSIZE+HEADSIZE, 1,        <<06354>>30365050
                          ANYWHERE'TAB, TRUE, DSTN, SYSIX);    <<06354>>30365051
   PRIMARYPART := IF SYSIX = SYSTBUF THEN                      <<06259>>30365200
       NRENTRIES - (NRENTRIES / SECONDPART)                    <<06354>>30365250
    <<COMPUTE # OF PRIMARY ELEMENTS>>                          <<06354>>30365252
   ELSE                                                        <<06259>>30365300
      NRENTRIES - SECONDPART; << # OF PRIMANY ELEMENTS >>      <<06259>>30365350
                                                               <<06259>>30365400
   TOS := MEMADR;                                              <<06259>>30365450
   ASSEMBLE( XCHD ); << EXCHANGE DB TO TABLE >>                <<06259>>30365500
   TABLE := NRENTRIES;                                         <<06259>>30365550
   TABLE(1) := ENTRYSIZE;                                      <<06259>>30365600
   TABLE(2) := PRIMARYPART;                                    <<06259>>30365650
   TABLE(4) := IF SYSIX = SYSSBUF THEN HEADSIZE+1              <<06259>>30365700
      ELSE HEADSIZE;                                           <<06259>>30365750
   << INITIALIZE FREE LIST >>                                  <<06259>>30365800
   NEXT := TABLE(4);                                           <<06259>>30365850
   X := IF SYSIX = SYSSBUF THEN                                <<06259>>30365900
           NEXT-1                                              <<06259>>30365950
        ELSE                                                   <<06259>>30366000
           IF DSTN=DISCREQTABDSTN OR SYSIX=SYSIOQ THEN         <<06259>>30366050
              NEXT+1                                           <<06259>>30366100
           ELSE                                                <<06259>>30366150
              NEXT;                                            <<06259>>30366200
   I := 0;                                                     <<06259>>30366250
   WHILE (I:=I+1) < NRENTRIES DO                               <<06259>>30366300
      BEGIN                                                    <<06259>>30366350
      NEXT := NEXT + ENTRYSIZE;                                <<06259>>30366400
      TABLE(X) := NEXT;                                        <<06259>>30366450
      X := X + ENTRYSIZE;                                      <<06354>>30366500
      END;                                                     <<06259>>30366550
   TABLE(5) := NEXT;  << TAIL INDEX >>                         <<06259>>30366600
                                                               <<SYPTR>>30366604
   IF DSTN=DISCREQTABDSTN OR SYSIX=SYSIOQ THEN                 <<SYPTR>>30366608
      BEGIN                                                    <<SYPTR>>30366612
      NEXT := TABLE(4);                                        <<SYPTR>>30366616
      I := 0;                                                  <<SYPTR>>30366620
      WHILE (I:=I+1) <= NRENTRIES DO                           <<SYPTR>>30366624
         BEGIN                                                 <<SYPTR>>30366628
         TABLE(NEXT+11) := %100000;                            <<SYPTR>>30366632
         NEXT := NEXT+ENTRYSIZE;                               <<SYPTR>>30366636
         END;                                                  <<SYPTR>>30366640
      END;                                                     <<SYPTR>>30366644
                                                               <<SYPTR>>30366648
   SET( DB ); << RESET DB TO STACK >>                          <<06259>>30366650
END;  << INITIOTABLE >>                                        <<06259>>30366700
          << HAS OWN PROCESS >>                                <<06259>>30499000
          ELSE MTDS( DITDSTN, DPCBN, NIOPROC, 1);              <<06259>>30500000
   INTEGER return'value = Ldevtotype,                          <<*LDT*>>30626000
           LDT'INDEX;                                          <<*LDT*>>30627000
   LDT'INDEX := LDEV * LDTSIZE;                                <<*LDT*>>30633000
   return'value := LDT'DEVICE'TYPE;                            <<*LDT*>>30634000
   INTEGER LPDT'INDEX;                                         <<*LPDT>>30751000
   LPDT'INDEX := LDEV * LPDTSIZE;                              <<*LPDT>>30757000
   return'value := lpdt'subtype;                               <<*LPDT>>30758000
   IF number'of'bits <= 0D THEN RETURN;                        <<RETSP>>32677000
   INTEGER LPDT'INDEX;                                         <<*LPDT>>33214000
   LPDT'INDEX := LDEV * LPDTSIZE;                              <<*LPDT>>33241000
   IF LOGICAL(LPDT'NON'SYS'DOMAIN) THEN                        <<*LPDT>>33242000
        INTEGER                                                <<*LDT*>>36379000
            LDT'INDEX,                                         <<*LPDT>>36379100
            LPDT'INDEX;                                        <<*LPDT>>36379110
        INTEGER POINTER                                        <<dctab>>36379200
            DCT;                                               <<dctab>>36379300
        BYTE POINTER                                           <<dctab>>36379400
            DCT'B;                                             <<dctab>>36379500
$EDIT VOID=36584000                                            <<dctab>>36576000
              @DCT := @DCT'HEAD + DCTH'DCT'BASE;               <<dctab>>36586000
              @DCT'B := @DCT & LSL(1);                         <<dctab>>36587000
              J := 0;                                          <<dctab>>36588000
              WHILE (J:=J+1) <= DCTH'NUM'DCT'ENTRIES DO        <<dctab>>36590000
                IF FLCLASSB=DCTB'CLASS'NAME,(8) THEN           <<dctab>>36592000
$EDIT VOID=36594000                                            <<dctab>>36594000
$EDIT VOID=36604000                                            <<dctab>>36602000
                    @DCT := @DCT + DCT'NEXT'ENTRY;             <<dctab>>36606000
                    @DCT'B := @DCT & LSL(1);                   <<dctab>>36608000
                    END;                                       <<dctab>>36610000
$EDIT VOID=36612000                                            <<dctab>>36612000
  GOTCLASS:   J := -1;                                         <<dctab>>36616000
$EDIT VOID=36618000                                            <<dctab>>36618000
              INDEX := DCT'CYCLICAL'PTR;                       <<dctab>>36620000
              IF INDEX > DCT'NUM'DEVICES THEN INDEX := 0;      <<dctab>>36622000
              WHILE(J:=J+1) <= DCT'NUM'DEVICES DO              <<dctab>>36626000
                LDEV := DCT(DCT'FIRST'LDEV + INDEX );          <<dctab>>36630000
                LDT'INDEX := LDEV * LDTSIZE;                   <<*LDT*>>36631000
                LPDT'INDEX := LDEV * LPDTSIZE;                 <<*LPDT>>36631100
                IF LOGICAL(LPDT'NON'SYS'DOMAIN) OR NOT         <<*LPDT>>36632000
                  SYSDISC'TYPE( LDT'DEVICE'TYPE,               <<*LDT*>>36634000
                       LPDT'SUBTYPE) THEN                      <<*LPDT>>36636000
  NEXTLDEV:    INDEX:= (INDEX+1) MOD DCT'NUM'DEVICES;          <<dctab>>36670000
            LDT'INDEX := LDEV * LDTSIZE;                       <<*LDT*>>36711000
            LPDT'INDEX := LDEV * LPDTSIZE;                     <<*LPDT>>36711100
               SYSDISC'TYPE( LDT'DEVICE'TYPE, LPDT'SUBTYPE)    <<*LPDT>>36714000
$EDIT VOID=36716000                                            <<*LPDT>>36716000
               AND NOT LOGICAL( LPDT'NON'SYS'DOMAIN ) THEN     <<*LPDT>>36718000
          ELSE IF TYPE = 3 << CS80 DEVICE >> THEN              <<*LDT*>>36734000
          LDT'INDEX := LDEV * LDTSIZE;                         <<*LDT*>>36751000
          LPDT'INDEX := LDEV * LPDTSIZE;                       <<*LPDT>>36751100
          IF LDT'DEVICE'TYPE = TYPE THEN                       <<*LDT*>>36752000
          IF LPDT'SUBTYPE=SUBTYP THEN                          <<*LPDT>>36754000
             LDEV := DCTAB(DISCLASS'X+DCT'FIRST'LDEV+INDEX);   <<DCLAS>>36814000
             LPDT'INDEX := LDEV * LPDTSIZE;                    <<*LPDT>>36815000
           UNTIL NOT LOGICAL( LPDT'NON'SYS'DOMAIN );           <<*LPDT>>36818000
             LDEV := DCTAB(DISCLASS'X+DCT'FIRST'LDEV+INDEX);   <<DCLAS>>36846000
             LPDT'INDEX := LDEV * LPDTSIZE;                    <<*LPDT>>36847000
             IF NOT LOGICAL( LPDT'NON'SYS'DOMAIN ) THEN        <<*LPDT>>36848000
                IF (INDEX:=INDEX+1) = DCT'NUM'DEVICES          <<dctab>>36872000
                  THEN INDEX:=0;                               <<dctab>>36873000
                DCT'CYCLICAL'PTR := INDEX;                     <<dctab>>36874000
          FLFCBVECT := 0D;                                     <<*FLAB>>38262000
$EDIT VOID=38676000                                                     38296000
$EDIT                                                                   38693000
$EDIT                                                          <<zrela>>38695000
$EDIT                                                          <<06091>>39256000
<<THE FIXED STT LOOKS THE SAME WHETHER LOGICAL MAPPING>>       <<06091>>39289000
<<FIRMWARE IS PRESENT OR NOT                          >>       <<06091>>39289100
          I:=-(STT(STTINDEX).(0:8)); <<SKIP INTERNAL ENTRIES>> <<06091>>39298000
  DCOREADDR:= INITTABLE(MEMSEG, 1, ANYWHERE'TAB, FALSE);       <<06259>>39392000
  LOGICAL PROCEDURE DUMMYDRIVER( DLT, INTRINDEX, FIRSTCST,     <<06259>>39422000
  INTEGER ARRAY DLT;                                           <<06259>>39449000
        INTEGER SLRECNUM;                                      <<06091>>39601000
          SLRECNUM:=TOS;              <<REF TAB REC NUM>>      <<06091>>39728000
          FREAD(SLFNUM,DOUBLE(SLREC1(SLRECNUM)),REFTAB,128);   <<06091>>39730000
              CSTN := GETENTRY( CSTDSTN);                      <<*SLL*>>39758000
            SEGXFORM(CSTN):=LCST&LSL(8)+(FLAGS.(4:3)&LSL(1));  <<06091>>39760000
        SEGXFORM(CSTN).(15:1):=1;<<SET PHYSICALLY MAPPED FLAG>><<06091>>39762000
              <<UPDATE STT HEAD TO NEW FORMAT>>                <<06091>>39839000
              I:=-(STT(STTINDEX).(8:8));  << # STT ENTRIES>>   <<06091>>39839100
              J:=0;                                            <<06091>>39839200
              K:=0;              <<COUNT OF INTERNAL LABELS>>  <<06091>>39839300
              WHILE (J:=J-1) >= I DO                           <<06091>>39839400
                 BEGIN                                         <<06091>>39839500
                 IF STT(J+STTINDEX) >= 0 THEN K:=K+1;          <<06091>>39839600
                 END;                                          <<06091>>39839700
              STT(STTINDEX).(0:8):=K;     <<INSERT COUNT>>     <<06091>>39839800
              <<SET FLAG IN REFTAB TO INDICATE STT HEAD   >>   <<06091>>39841000
              <<INITIALIZED - WRITE UPDATED REFTAB TO DISC>>   <<06091>>39841100
              REFTAB(INDEX).(1:1):=1;                          <<06091>>39841200
            FWRITE(SLFNUM,DOUBLE(SLREC1(SLRECNUM)),REFTAB,128);<<06091>>39841300
          IF LOGICALMAPPING THEN                               <<06091>>40091000
             TOS.MAPFLAG := EXTLAB.(0:1);                      <<06091>>40091100
        INTEGER LOGSEGNR,SEGLISTPTR,PHYCST;                    <<06091>>40160100
$EDIT VOID=40272000                                            <<06091>>40161000
SUBROUTINE SETBIT(LOGSEG,CSTMAP);                              <<06091>>40162000
  VALUE LOGSEG;                                                <<06091>>40163000
  INTEGER LOGSEG;      <<LOG SEG #>>                           <<06091>>40164000
  ARRAY CSTMAP;        <<BITMAP OF ALLOCATED SEGS>>            <<06091>>40165000
  BEGIN                                                        <<06091>>40166000
    TOS:=CSTMAP(LOGSEG.(0:12));  <<GET PROPER WORD>>           <<06091>>40167000
    X:=S3.(12:4);             <<PROPER BIT >>                  <<06091>>40168000
    ASSEMBLE(TSBC 0,X);       <<SET BIT    >>                  <<06091>>40169000
    X:=S3.(0:12);             <<PROPER WORD>>                  <<06091>>40170000
    ASSEMBLE(STOR S2,I,X);    <<RESTORE WORD>>                 <<06091>>40171000
  END; <<SETBIT>>                                              <<06091>>40172000
   TOS:=SEGT(SEG'HEAD+ENTTYPE); << GET HEAD PTR FOR TYPE >>    <<06091>>40173000
NEXT:                                                          <<06091>>40174000
   IF S0 = 0 THEN GO TO NOTFOUND;                              <<06091>>40175000
   @SEGDIR:=TOS+@SEGT;           <<LOCAL PTR>>                 <<06091>>40176000
   TOS:=FID;                     <<DESIRED KEY >>              <<06091>>40177000
   TOS:=SEGDIR(1);               <<KEY IN ENTRY>>              <<06091>>40178000
   TOS:=SEGDIR(2);                                             <<06091>>40179000
   ASSEMBLE(DCMP);                                             <<06091>>40180000
   IF = THEN                                                   <<06091>>40181000
      BEGIN                       <<KEYS MATCH>>               <<06091>>40182000
      SEGLISTPTR:=21;   <<PTR TO SEGLIST>>                     <<06091>>40183000
      PHYCST:=FIRSTCST;                                        <<06091>>40184000
      DO BEGIN                                                 <<06091>>40185000
         LOGSEGNR:=SEGXFORM(PHYCST).(0:8); <<LOG SEG NR>>      <<06091>>40186000
         <<SET ALLOCATED FLAG IN SEG ARRAY>>                   <<06091>>40187000
         SETBIT(LOGSEGNR,SEGDIR(5));                           <<06091>>40188000
         <<INC COUNT OF ALLOCATED SEGS>>                       <<06091>>40189000
         SEGDIR(4).(0:8):=SEGDIR(4).(0:8)+1;                   <<06091>>40190000
         <<BUILD SEGLIST ENTRY OUT OF FREE ENTRY>>             <<06091>>40191000
         WHILE SEGDIR(SEGLISTPTR).(0:8) <> 255                 <<06091>>40192000
           DO SEGLISTPTR:=SEGLISTPTR+3;                        <<06091>>40193000
         <<FOUND FREE ENTRY>>                                  <<06091>>40194000
         SEGDIR(SEGLISTPTR):=SEGXFORM(PHYCST); <<FLAGS>>       <<06091>>40195000
         SEGDIR(SEGLISTPTR+1):=1;              <<REF CNT>>     <<06091>>40196000
         SEGDIR(SEGLISTPTR+2):=PHYCST;         <<CST #>>       <<06091>>40197000
         SEGLISTPTR:=SEGLISTPTR+3;                             <<06091>>40198000
         PHYCST:=PHYCST+1; <<NEXT CST>>                        <<06091>>40199000
         END UNTIL PHYCST > LASTCST;                           <<06091>>40200000
      RETURN;                                                  <<06091>>40201000
      END                                                      <<06091>>40202000
   ELSE                                                        <<06091>>40202100
      BEGIN                     <<KEYS DO NOT MATCH>>          <<06091>>40203000
      TOS:=SEGDIR(-3);          <<GET FORWARD LINK>>           <<06091>>40204000
      GO TO NEXT;                                              <<06091>>40205000
      END;                                                     <<06091>>40206000
                                                               <<06091>>40206100
NOTFOUND:                                                      <<06091>>40207000
                                                               <<06091>>40207100
   <<ENTRY NOT FOUND -- BUILD ONE FROM A GARBAGE ENTRY>>       <<06091>>40208000
                                                               <<06091>>40208100
   @SEGDIR:=SEGT(SEG'HEAD)+@SEGT;     <<LOCAL PTR>>            <<06091>>40209000
   NWG:=SEGDIR(-1);                   <<LENGTH>>               <<06091>>40210000
   NCST:=LASTCST-FIRSTCST+1;          <<# CST>>                <<06091>>40211000
   SEGDIR:=ENTTYPE;                   <<TYPE>>                 <<06091>>40212000
   TOS:=FID;                          <<KEY>>                  <<06091>>40213000
   SEGDIR(2):=TOS;                                             <<06091>>40214000
   SEGDIR(1):=TOS;                                             <<06091>>40215000
   SEGDIR(3):=0;                      <<PVINFO>>               <<06091>>40216000
   SEGDIR(X:=X+1) :=0;      << # ALLOCATED SEGS>>              <<06091>>40217000
   SEGDIR(X:=X+1):=0;       << SEG ARRAY       >>              <<06091>>40218000
   MOVE SEGDIR(X:=X+1):=SEGDIR(X:=X-1),(15);                   <<06091>>40219000
                                                               <<06091>>40219100
   <<BUILD SEG ARRAY AND SEG LIST>>                            <<06091>>40220000
                                                               <<06091>>40220100
   SEGLISTPTR:=21;          <<PTR INTO SEGLIST>>               <<06091>>40221000
   PHYCST:=FIRSTCST;        <<PHYSICAL CST #>>                 <<06091>>40222000
   DO BEGIN                                                    <<06091>>40223000
      LOGSEGNR:=SEGXFORM(PHYCST).(0:8);                        <<06091>>40224000
      <<SET ALLOCATED BIT IN SEG ARRAY>>                       <<06091>>40225000
      SETBIT(LOGSEGNR,SEGDIR(SAGL+5));                         <<06091>>40226000
      <<INC COUNT OF ALLOCATED SEGS>>                          <<06091>>40227000
      SEGDIR(4).(0:8):=SEGDIR(4).(0:8)+1;                      <<06091>>40228000
      <<BUILD SEGLIST ENTRY>>                                  <<06091>>40229000
      SEGDIR(SEGLISTPTR):=SEGXFORM(PHYCST); <<FLAGS>>          <<06091>>40230000
      SEGDIR(SEGLISTPTR+1):=1;              <<REF COUNT>>      <<06091>>40231000
      SEGDIR(SEGLISTPTR+2):=PHYCST;         <<CST # >>         <<06091>>40232000
      SEGLISTPTR:=SEGLISTPTR+3;                                <<06091>>40233000
      PHYCST:=PHYCST+1;  <<NEXT CST>>                          <<06091>>40234000
      END UNTIL PHYCST > LASTCST;                              <<06091>>40235000
                                                               <<06091>>40235100
   <<BUILD TOTAL OF 200 SEGLIST ENTRIES>>                      <<06091>>40236000
                                                               <<06091>>40236100
   I:=200-NCST;                                                <<06091>>40237000
   WHILE (I:=I-1) >= 0 DO                                      <<06091>>40238000
      BEGIN                                                    <<06091>>40239000
      SEGDIR(SEGLISTPTR):=%177400;       <<FREE>>              <<06091>>40240000
      SEGDIR(X:=X+1):=0;                 <<REFCNT>>            <<06091>>40241000
      SEGDIR(X:=X+1):=0;                 <<CST #>>             <<06091>>40242000
      SEGLISTPTR:=SEGLISTPTR+3;                                <<06091>>40243000
      END;                                                     <<06091>>40244000
   SEGDIR(4).(8:8):=200;                 <<# SEGLIST ENTRIES>> <<06091>>40245000
                                                               <<06091>>40245100
   <<LINK ENTRY INTO CHAIN>>                                   <<06091>>40246000
                                                               <<06091>>40246100
   SEGDIR(-3):=SEGT(SEG'HEAD+ENTTYPE);    <<FWDLINK>>          <<06091>>40247000
   SEGDIR(-2):=0;                   <<BKWDLINK>>               <<06091>>40248000
   SEGDIR(-1):=SEGLISTPTR+3;        <<LENGTH>>                 <<06091>>40249000
   SEGT(SEG'HEAD+ENTTYPE) := @SEGDIR-@SEGT; << HEAD LINK >>    <<06091>>40251000
   IF SEGT(SEG'TAIL+ENTTYPE) = 0 THEN << FIRST ON LIST? >>     <<06091>>40252000
      SEGT(SEG'TAIL+ENTTYPE) := SEGT(SEG'HEAD+ENTTYPE)         <<06091>>40253000
   ELSE                                                        <<06091>>40254000
      SEGT(SEGDIR(-3)-2) := SEGT(SEG'HEAD+ENTTYPE);            <<06091>>40255000
                                                               <<06091>>40256000
   <<BUILD NEW GARBAGE ENTRY>>                                 <<06091>>40258000
                                                               <<06091>>40258100
   SEGDIR(SEGLISTPTR):=0;           <<FWDLINK>>                <<06091>>40259000
   SEGDIR(X:=X+1):=0;               <<BKWDLINK>>               <<06091>>40260000
   SEGDIR(X:=X+1):=NWG-SEGLISTPTR-3;  <<LENGTH>>               <<06091>>40261000
   SEGDIR(X:=X+1):=0;               <<TYPE>>                   <<06091>>40262000
   SEGT(SEG'HEAD):=@SEGDIR+SEGLISTPTR+3-@SEGT; <<HEAD LINK>>   <<06091>>40263000
   SEGT(SEG'TAIL):=SEGT(SEG'HEAD);         <<TAIL LINK>>       <<06091>>40264000
                OLDCSTN,          <<SAVE CSTN >>               <<06091>>40415000
                COUNTINT,    <<COUNT OF INTERNAL STT ENTRIES>> <<06091>>40423000
         FLFCBVECT := 0D;                                      <<*FLAB>>40454000
                FIRSTCST := IF LOGICALMAPPING THEN 1           <<06091>>40490000
                                              ELSE %301;       <<06091>>40491000
                FIRSTCST := GETENTRY( CSTDSTN);                <<*SLL*>>40498000
                WHILE (I:=I+1) < NSEG DO GETENTRY( CSTDSTN);   <<*SLL*>>40502000
          OLDCSTN := CSTN;  << SAVE OLD VALUE OF CSTN >>       <<06091>>40519000
  FIXSL:  IF CSTN > OLDCSTN AND NAME<>"ININ    " THEN          <<06091>>40590000
              I := OLDCSTN;                                    <<06696>>40593000
              COUNTINT:=0; <<INITIALIZE COUNT>>                <<06091>>40653000
                      COUNTINT:=COUNTINT+1; <<INCREMENT COUNT>><<06091>>40665000
              <<UPDATE STT HEAD TO NEW FORMAT>>                <<06091>>40727000
              STT(STTINDEX).(0:8):=COUNTINT;   <<INSERT COUNT>><<06091>>40727100
              <<SET FLAG IN SEG DESCRIPTOR THAT THE STT HEAD >><<06091>>40728500
              <<HAS BEEN INITIALIZED TO THE NEW FORMAT >>      <<06091>>40728600
              PREC0(K+I).(1:1):=1;                             <<06091>>40728700
$EDIT VOID=40744000                                            <<06091>>40730000
          DSTSTACK := GETENTRY( DSTDSTN);                      <<*SLL*>>40772000
            DCOREADDR:= INITTABLE(DATASIZE, 1,                 <<06259>>40780000
                                   ANYWHERE'TAB, FALSE)        <<06259>>40781000
            DCOREADDR:= INITTABLE(DATASIZE, 1,                 <<06259>>40784000
                                   TEMPORARY'TAB, FALSE);      <<06259>>40785000
          INSERTDST(DCOREADDR,DSTSTACK,DATASIZE,               <<06259>>40800000
            IF LINKED=1 THEN DATASIZE+1540 ELSE 0);            <<06259>>40802000
PROCEDURE BROTHER(PCBPT);                                      <<*pcb*>>40812000
VALUE PCBPT;                                                   <<*pcb*>>40813000
INTEGER PCBPT;                                                 <<*pcb*>>40814000
BEGIN                                                          <<*pcb*>>40815000
Comment                                                        <<*pcb*>>40815010
   This procedure will make PCBPT the son of PROGEN and the    <<*pcb*>>40815020
   brother of the all other PROGEN's sons.                     <<*pcb*>>40815030
;                                                              <<*pcb*>>40815040
INTEGER                                                        <<*pcb*>>40816000
   SAVE'PCBPT;                                                 <<*pcb*>>40817000
FATHERINFO := PROGPCBN * PCBSIZE;                              <<*pcb*>>40818000
SAVE'PCBPT := PCBPT;                                           <<*pcb*>>40819000
PCBPT := PROGPCBN * PCBSIZE;                                   <<*pcb*>>40820000
IF SONINFO = 0 THEN                                            <<*pcb*>>40821000
   SONINFO := SAVE'PCBPT                                       <<*pcb*>>40822000
ELSE                                                           <<*pcb*>>40823000
   BEGIN                                                       <<*pcb*>>40824000
   PCBPT := SONINFO;                                           <<*pcb*>>40825000
   DO                                                          <<*pcb*>>40826000
      PCBPT := BROTHERINFO                                     <<*pcb*>>40827000
   UNTIL BROTHERINFO = 0;                                      <<*pcb*>>40828000
   BROTHERINFO := SAVE'PCBPT;                                  <<*pcb*>>40829000
   END;                                                        <<*pcb*>>40830000
                                                               <<*pcb*>>40831000
END; << procedure brother >>                                   <<*pcb*>>40832000
$EDIT VOID = 40846000                                          <<*pcb*>>40832100
                SLLHEADINX,   << Index to SLL header entry >>  <<*SLL*>>40911000
                SLLINX,       << Index to SLL regular entry >> <<*SLL*>>40911100
               PCBPT,                                          <<*pcb*>>40913000
$EDIT                                                          <<06259>>40916000
          DSTN := GETENTRY( DSTDSTN);                          <<*SLL*>>40980000
            DCOREADDR:= INITTABLE(MEMSEG, 1,                   <<06259>>40984000
                                   ANYWHERE'TAB, FALSE)        <<06259>>40985000
            DCOREADDR:= INITTABLE(MEMSEG, 1,                   <<06259>>40988000
                                   TEMPORARY'TAB, FALSE);      <<06259>>40989000
          INSERTDST(DCOREADDR,DSTN,MEMSEG,IF LINKED=0 THEN 0   <<06259>>40994000
            ELSE MAXD+1540);                                   <<06259>>40996000
          PCBN := IF SON THEN GETENTRY( PCBDSTN)               <<*SLL*>>41006000
             ELSE PROGPCBN;                                    <<*SLL*>>41007000
           PCBPT := PCBN * PCBSIZE;                            <<*pcb*>>41007100
          TEMP := PROCSTART;                                   <<06091>>41069000
          IF LOGICALMAPPING AND CSTBLKINDEX = 0 THEN           <<06091>>41069100
             TEMP.MAPFLAG := 1; << SET PHYSICAL BIT >>         <<06091>>41069200
          SSEA(MARKER+6D, TEMP);                               <<06091>>41070000
          SSEA(PCBX+4D, -1);              << JPCNT >>          <<PCBXG>>41109000
          SSEA(PCBX+6D, %6000);           << INTR,DUPL >>      <<PCBXG>>41110000
          SSEA(PCBX+8D, CONSOLELDEV);     << JOB INPUT LDEV >> <<PCBXG>>41112000
          SSEA(PCBX+9D, CONSOLELDEV);     << JOB OUTPUT LDEV>> <<PCBXG>>41114000
$EDIT                                                          <<PCBXG>>41116000
            SSEA(PCBX+10D, SJDTDSTN);      << JDT DST >>       <<PCBXG>>41122000
            SSEA(PCBX+11D, SJITDSTN);      << JIT DST >>       <<PCBXG>>41124000
$EDIT                                                          <<PCBXG>>41128000
            SSEA(PCBX+34D, TEMP);  << USED VIRTUAL DISC SPACE>><<PCBXG>>41158000
$EDIT                                                          <<*pcb*>>41198000
IF SON THEN                                                    <<*pcb*>>41200000
   BROTHER(PCBPT);                                             <<*pcb*>>41201000
$EDIT                                                          <<*pcb*>>41208000
   PIINFO.PSIMFIELD := 7;                                      <<*pcb*>>41210000
   TOS := GETENTRY( SWAPTABDSTN); << ENTRY NUMBER >>           <<*SLL*>>41220000
   TOS := SYSBASE D;                                           <<*SLL*>>41221000
   SET( DB );  << GETENTRY RETURNS DB TO STACK !!! >>          <<*SLL*>>41221100
$EDIT                                                          <<*SLL*>>41224000
$EDIT                                                          <<*pcb*>>41226000
   SLLHEADINX := TOS; << Fix SLL entry so stk gets swapped in>><<*SLL*>>41230000
   SLL(SCHEDTOIOMSG) := TOS;                                   <<*SLL*>>41236000
   TOS := GETENTRY( SWAPTABDSTN);                              <<*SLL*>>41238000
   TOS := SYSBASE D;                                           <<*SLL*>>41239000
   SET( DB );  << GETENTRY RETURNS DB TO STACK !!! >>          <<*SLL*>>41239100
$EDIT                                                          <<*SLL*>>41242000
   SLL(FIRSTINX) := S0;                                        <<*SLL*>>41244000
   SLL(MEMREQINX) := S0;                                       <<*SLL*>>41246000
   SLL(SEGCOUNT) := 1;                                         <<*SLL*>>41248000
   SLLINX := TOS;    << Fill in SLL entry for the stack >>     <<*SLL*>>41250000
   SLL(SLL'OBJNUM) := DSTN;                                    <<*sll5>>41252000
   SLL(SLL'OBJDESC) := 0;                                      <<*sll5>>41253000
                                                               <<*sll5>>41253200
   SLL(SLL'FLAGS).SLLSTKENTRYFLAG := 1;                        <<*SLL*>>41254000
$EDIT                                                          <<*pcb*>>41260000
$EDIT                                                          <<*pcb*>>41274000
PBX := CSTBLKINDEX;                                            <<*pcb*>>41278000
MAPDST := 0;                                                   <<06172>>41278001
IF TYPE = 0 << MH DISC >> OR                                   <<*LDT*>>41530000
   TYPE = 1 << FH DISC >> OR                                   <<*LDT*>>41532000
   TYPE = 3 << CS80 DEVICE >> AND SUBTYP <> LINUS THEN         <<*LDT*>>41534000
IF TYPE=0 << MH DISC >> AND (SUBTYP=UH7905 OR SUBTYP=UH7906    <<*LDT*>>41572000
   TYPE = 2 << FLOPPY DISC >> OR                               <<*LDT*>>41576000
   TYPE = 3 << CS80 DEVICE >> THEN                             <<*LDT*>>41578000
  INTEGER PROCEDURE FORMATCSDVRENTRY(DVRBNAME);                <<*DVR*>>41736000
    BYTE ARRAY DVRBNAME;                                       <<*DVR*>>41738000
    <<     DVRBNAME   -   NAME OF DRIVER              >>       <<*DVR*>>41744000
          DVRFNUM := FOPEN(DVRBNAME);                          <<*DVR*>>41806000
          MOVE * := DVRBNAME,(8);                              <<*DVR*>>41874000
  INTEGER PROCEDURE CLINDEX(CLNAME);                           <<dctab>>41917010
    BYTE ARRAY CLNAME;                                         <<dctab>>41917020
    OPTION PRIVILEGED,UNCALLABLE;                              <<dctab>>41917030
      BEGIN                                                    <<dctab>>41917040
        INTEGER POINTER                                        <<dctab>>41917041
            DCT;                                               <<dctab>>41917042
        BYTE POINTER                                           <<dctab>>41917043
            DCT'B;                                             <<dctab>>41917044
        INTEGER I:=0;                                          <<dctab>>41917050
        @DCT := @DCT'HEAD + DCTH'DCT'BASE;                     <<dctab>>41917060
        @DCT'B := @DCT & LSL(1);                               <<dctab>>41917070
          WHILE (I:=I+1) <= DCTH'NUM'DCT'ENTRIES DO            <<dctab>>41917080
          IF DCTB'CLASS'NAME = CLNAME,(8) THEN                 <<dctab>>41917090
            BEGIN   <<FOUND IT>>                               <<dctab>>41917100
              CLINDEX := I;                                    <<dctab>>41917110
              RETURN;                                          <<dctab>>41917120
            END                                                <<dctab>>41917130
          ELSE                                                 <<dctab>>41917140
            BEGIN   <<BUMP INDEX>>                             <<dctab>>41917150
              @DCT := @DCT + DCT'NEXT'ENTRY;                   <<dctab>>41917160
              @DCT'B := @DCT & LSL(1);                         <<dctab>>41917170
            END;                                               <<dctab>>41917180
      END <<CLINDEX>> ;                                        <<dctab>>41917190
$EDIT VOID=41952000                                            <<dctab>>41918000
          L := COMM(NUMADVRS);                                 <<CONFD>>42056000
  PROCEDURE CLNAME(CLINDEX,NAME);                              <<dctab>>42083010
    VALUE CLINDEX;                                             <<dctab>>42083020
    INTEGER CLINDEX;                                           <<dctab>>42083030
    BYTE ARRAY NAME;                                           <<dctab>>42083040
    OPTION PRIVILEGED,UNCALLABLE;                              <<dctab>>42083050
      BEGIN                                                    <<dctab>>42083060
        INTEGER POINTER                                        <<dctab>>42083061
            DCT;                                               <<dctab>>42083062
        BYTE POINTER                                           <<dctab>>42083063
            DCT'B;                                             <<dctab>>42083064
        INTEGER I:=0;                                          <<dctab>>42083070
          @DCT := @DCT'HEAD + DCTH'DCT'BASE;                   <<dctab>>42083080
          WHILE (I:=I+1) < CLINDEX DO                          <<dctab>>42083090
            @DCT := @DCT + DCT'NEXT'ENTRY;                     <<dctab>>42083100
          @DCT'B := @DCT & LSL(1);                             <<dctab>>42083110
          MOVE NAME := DCTB'CLASS'NAME,(8);                    <<dctab>>42083120
      END <<CLNAME>> ;                                         <<dctab>>42083130
$EDIT VOID=42114000                                            <<dctab>>42084000
             DEVTYP,  << DEVICE TYPE   >>                      <<*LDT*>>42154000
             LDT'INDEX,                                        <<*DVR*>>42155000
             LPDT'INDEX,                                       <<*LDTX>>42155100
             LDTX'INDEX,                                       <<*DVR*>>42155200
             DVR'INDEX;                                        <<*DVR*>>42155300
$EDIT VOID=42158000                                            <<*DVR*>>42156000
        LDT'INDEX := LDEV * LDTSIZE;                           <<*LDT*>>42167000
        LPDT'INDEX := LDEV * LPDTSIZE;                         <<*LPDT>>42167100
               LDTX'INDEX := LDEV * LDTXSIZE;                  <<*LDTX>>42167200
        DVR'INDEX := LDEV * DVRSIZE;                           <<*DVR*>>42168000
        DEVTYP  := LDT'DEVICE'TYPE;                            <<*LDT*>>42172000
        SUBTYP  := LPDT'SUBTYPE;                               <<*LPDT>>42174000
        IF DEVTYP = 16 << TERMINAL >> OR                       <<*LDT*>>42180000
           DEVTYP = 32 << PRINTER >> AND                       <<*LDT*>>42181000
           IF DVRDSBIT = 0 AND DVRDRTNUM <> 0 THEN             <<*DVR*>>42190000
$EDIT VOID=42192000                                            <<*DVR*>>42192000
                  IF LDTX'TERMID = LYNX'BOARD THEN             <<SYPTR>>42202000
$EDIT VOID=42204000                                            <<*LDTX>>42204000
  PROCEDURE LISTIODEV;                                         <<dctab>>42632010
    OPTION PRIVILEGED,UNCALLABLE;                              <<dctab>>42632020
    COMMENT                                                    <<dctab>>42632030
      PRINTS A LISTING OF THE I/O DEVICE CONFIGURATION ON THE  <<dctab>>42632040
    JOB LIST DEVICE;                                           <<dctab>>42632050
      BEGIN                                                    <<dctab>>42632060
        INTEGER                                                <<dctab>>42632061
            LDT'INDEX,                                         <<dctab>>42632062
            LPDT'INDEX,                                        <<dctab>>42632063
            LDTX'INDEX,                                        <<dctab>>42632064
            DVR'INDEX;                                         <<dctab>>42632065
        INTEGER POINTER                                        <<dctab>>42632066
            DCT;                                               <<dctab>>42632067
        BYTE POINTER                                           <<dctab>>42632068
            DCT'B;                                             <<dctab>>42632069
        INTEGER ARRAY HEAD1(0:34)=PB:=                         <<dctab>>42632070
         "LOG DRT U  C T SUB              REC   OUTPUT ",      <<dctab>>42632080
         " MODE   DRIVER   DEVICE ";                           <<dctab>>42632090
        INTEGER ARRAY HEAD2(0:35)=PB:=                         <<dctab>>42632100
         "DEV  #  N  H Y TYPE  TERMINAL   WIDTH  DEV ",        <<dctab>>42632110
         "           NAME    CLASSES ";                        <<dctab>>42632120
        INTEGER ARRAY HEAD3(0:15)=PB:=                         <<dctab>>42632130
         " #      I  A P      TYPE SPEED  ";                   <<dctab>>42632140
        INTEGER ARRAY HEAD4(0:6)=PB:=                          <<dctab>>42632150
         "        T  N E";                                     <<dctab>>42632160
        INTEGER TSPEED,                                        <<dctab>>42632170
                SPEEDCDE;                                      <<dctab>>42632180
        LOGICAL FIRSTCLASS;                                    <<dctab>>42632190
        MOVE LINE := HEAD1,(35);                               <<dctab>>42632200
        PRINTLINE;                                             <<dctab>>42632210
        MOVE LINE := HEAD2,(35);                               <<dctab>>42632220
        PRINTLINE;                                             <<dctab>>42632230
        MOVE LINE := HEAD3,(16);                               <<dctab>>42632240
        PRINTLINE;                                             <<dctab>>42632250
        MOVE LINE := HEAD4,(7);                                <<dctab>>42632260
        PRINTLINE;                                             <<dctab>>42632270
        LDEV:=0;                                               <<dctab>>42632280
        WHILE (LDEV:=LDEV+1) <= HLDEV DO                       <<dctab>>42632290
          BEGIN                                                <<dctab>>42632300
          DVR'INDEX := LDEV * DVRSIZE;                         <<dctab>>42632310
          IF DVRDRTNUM<>0 OR DVRDSBIT=1 THEN                   <<dctab>>42632330
            BEGIN                                              <<dctab>>42632340
            LDT'INDEX  := LDEV * LDTSIZE;                      <<dctab>>42632350
            LDTX'INDEX := LDEV * LDTXSIZE;                     <<dctab>>42632360
            LPDT'INDEX := LDEV * LPDTSIZE;                     <<dctab>>42632370
            ASCII(LDEV, BLINE);  <<LOGICAL DEVICE #>>          <<dctab>>42632380
            IF DVRDSBIT=1  THEN                                <<dctab>>42632390
              BEGIN  <<DS DEVICE>>                             <<dctab>>42632400
              BLINE(3) := "#";                                 <<dctab>>42632410
              ASCII(DVRMASTERLDEV,BLINE(4));                   <<dctab>>42632420
              END                                              <<dctab>>42632430
            ELSE ASCII(DVRDRTNUM,BLINE(4));                    <<dctab>>42632440
            ASCII(DVRUNITNUM,BLINE(8));           <<UNIT #>>   <<dctab>>42632450
            ASCII(DVRCHANNUM,BLINE(11));        <<CHANNEL#>>   <<dctab>>42632460
            ASCII(LDT'DEVICE'TYPE,BLINE(13));       <<TYPE>>   <<dctab>>42632470
            ASCII(LPDT'SUBTYPE,BLINE(16));       <<SUBTYPE>>   <<dctab>>42632480
            I := LPDT'SUBTYPE;  <<DEV. SUBTYPE>>               <<dctab>>42632490
            IF LDT'DEVICE'TYPE = TERMDEVTYPE OR                <<dctab>>42632500
               LDT'DEVICE'TYPE = 32 AND                        <<dctab>>42632510
               ( I=14 OR I=15) THEN                            <<dctab>>42632520
              BEGIN <<TERMINAL>>                               <<dctab>>42632530
              IF LDT'DFLT'TERM'TYPE=%37 THEN                   <<dctab>>42632540
                MOVE BLINE(21) := "??"                         <<dctab>>42632550
              ELSE ASCII(LDT'DFLT'TERM'TYPE,BLINE(21));        <<dctab>>42632560
              IF LDTX'TDT'OFFSET <> -1 THEN                    <<dctab>>42632570
                BLINE(23) := "*";      <<THERE IS A TTDF REF>> <<dctab>>42632580
              SPEEDCDE := LDTX'BAUD'RATE'CODE;  <<SPEED CODE>> <<dctab>>42632590
              TSPEED := -1;            << SET PARAMETER FOR >> <<dctab>>42632600
                                       <<    CHECKSPEED     >> <<dctab>>42632610
              CHECKSPEED(TSPEED,SPEEDCDE);    <<CONVERT CODE>> <<dctab>>42632620
                                              <<   TO SPEED >> <<dctab>>42632630
              IF SPEEDCDE = 0 THEN                             <<dctab>>42632640
                 MOVE BLINE(26) := "??"                        <<dctab>>42632650
              ELSE                             << CONVERT TO>> <<dctab>>42632660
                 ASCII(TSPEED,BLINE(26));        <<  ASCII  >> <<dctab>>42632670
                                                               <<dctab>>42632680
              END;                                             <<dctab>>42632690
            ASCII(LDT'RECORD'WIDTH,BLINE(33));                 <<dctab>>42632700
            IF LOGICAL(LDT'CLASS'INDEX) THEN                   <<dctab>>42632710
              BEGIN           <<OUTPUT DEVICE IS CLASS INDEX>> <<dctab>>42632720
              TOS := LDT'DFLT'OUT'DEV;                         <<dctab>>42632730
              IF = THEN DEL                                    <<dctab>>42632740
              ELSE CLNAME(*,BLINE(38));                        <<dctab>>42632750
              END                                              <<dctab>>42632760
            ELSE ASCII(LDT'DFLT'OUT'DEV,BLINE(40));            <<dctab>>42632770
            IF LOGICAL(LDTX'SEEK'AHEAD) THEN BLINE(46):="E";   <<dctab>>42632780
            IF LOGICAL(LPDT'JOB'ACCEPT) THEN BLINE(47):="J";   <<dctab>>42632790
            IF LOGICAL(LPDT'DATA'ACCEPT) THEN BLINE(48):="A";  <<dctab>>42632800
            IF LOGICAL(LPDT'INTERACTIVE) THEN BLINE(49):="I";  <<dctab>>42632810
            IF LOGICAL(LPDT'DUPLICATIVE)                       <<dctab>>42632820
              THEN BLINE(50):="D";                             <<dctab>>42632830
            IF LDT'SPOOL'STATE<>0 THEN BLINE(51) := "S";       <<dctab>>42632840
            IF LOGICAL(DVRCORERES) THEN BLINE(53):="*";        <<dctab>>42632850
            MOVE LINE(27) := DVRNAME,(4);                      <<dctab>>42632860
            FIRSTCLASS := TRUE;                                <<dctab>>42632870
            I := 0;                                            <<dctab>>42632880
            @DCT := @DCT'HEAD+DCTH'DCT'BASE;                   <<dctab>>42632890
            @DCT'B := @DCT & LSL(1);                           <<dctab>>42632900
            WHILE (I:=I+1) <= DCTH'NUM'DCT'ENTRIES DO          <<dctab>>42632910
              BEGIN   <<SCAN DEVICE CLASSES>>                  <<dctab>>42632920
              J := -1;                                         <<dctab>>42632930
              WHILE (J:=J+1) < DCT'NUM'DEVICES DO              <<dctab>>42632940
                IF DCT(DCT'FIRST'LDEV + J) = LDEV THEN         <<dctab>>42632950
                  BEGIN    <<DEVICE IS IN THIS CLASS>>         <<dctab>>42632960
                  IF FIRSTCLASS THEN FIRSTCLASS := FALSE       <<dctab>>42632970
                  ELSE                                         <<dctab>>42632980
                    PRINTLINE;                                 <<dctab>>42632990
                  MOVE BLINE(63) := DCTB'CLASS'NAME,(8);       <<dctab>>42633000
                  END;                                         <<dctab>>42633010
              @DCT := @DCT + DCT'NEXT'ENTRY;                   <<dctab>>42633020
              @DCT'B := @DCT & LSL(1);                         <<dctab>>42633030
              END;                                             <<dctab>>42633040
            PRINTLINE;                                         <<dctab>>42633050
            END;                                               <<dctab>>42633060
          END;  << WHILE >>                                    <<dctab>>42633070
      END <<LISTIODEV>>;                                       <<dctab>>42633080
$EDIT VOID=42697999                                            <<dctab>>42634000
procedure clean'tclasses;                                      <<tclas>>42634010
   begin                                                       <<tclas>>42634020
   comment                                                     <<tclas>>42634030
     Tempclass is a integer array which contains in word zero, <<tclas>>42634040
   the number of undefined classes used as output devices and, <<tclas>>42634050
   in word 1, the size of tempclass( in words ).  The remainder<<tclas>>42634060
   of tempclass in similar to the Device Class Table except    <<tclas>>42634070
   the cyclical pointer and the access type are not included in<<tclas>>42634080
   Tempclass.  The name is followed by the number of devices   <<tclas>>42634090
   and the device number's that require this class as an output<<tclas>>42634100
   device                                                      <<tclas>>42634110
   ;                                                           <<tclas>>42634120
                                                               <<tclas>>42634130
   << Tempclass declarations >>                                <<tclas>>42634140
                                                               <<tclas>>42634150
   equate                                                      <<tclas>>42634160
      temp'first'ldev = 5;                                     <<tclas>>42634170
                                                               <<tclas>>42634180
   define                                                      <<tclas>>42634190
      num'temp'entries    = tempclass'h(0)#,                   <<tclas>>42634200
      temp'table'size     = tempclass'h(1)#,                   <<tclas>>42634210
      temp'class'name     = tempclass'b(0)#,                   <<tclas>>42634220
      num'temp'devices    = tempclass'w(4)#,                   <<tclas>>42634230
      next'temp'entry     = num'temp'devices + 5#;             <<tclas>>42634240
                                                               <<tclas>>42634250
   comment                                                     <<tclas>>42634260
     We use tempclass'h to point to the header portion of      <<tclas>>42634270
   tempclass and to access those variables associated with     <<tclas>>42634280
   the header.  Tempclass'w is used to access the current      <<tclas>>42634290
   entry and Tempclass'b to access the current class name.     <<tclas>>42634300
   ;                                                           <<tclas>>42634310
                                                               <<tclas>>42634320
   integer pointer                                             <<tclas>>42634330
      tempclass'h,                                             <<tclas>>42634340
      tempclass'w;                                             <<tclas>>42634350
                                                               <<tclas>>42634360
   byte pointer                                                <<tclas>>42634370
      tempclass'b;                                             <<tclas>>42634380
                                                               <<tclas>>42634390
   integer                                                     <<tclas>>42634400
      i,                                                       <<tclas>>42634410
      j,                                                       <<tclas>>42634420
      l,                                                       <<tclas>>42634430
      m;                                                       <<tclas>>42634440
                                                               <<tclas>>42634450
   byte array e1(0:15)=pb:="UNDEFINED CLASS ";                 <<tclas>>42634460
   byte array e2(0:41)=pb:="USED AS OUTPUT DEVICE BY ",        <<tclas>>42634470
                           "FOLLOWING DEVICES";                <<tclas>>42634480
                                                               <<tclas>>42634490
   @tempclass'h := @tclass;                                    <<tclas>>42634500
   @tempclass'w := @tempclass'h + 2;                           <<tclas>>42634510
   @tempclass'b := @tempclass'w & lsl(1);                      <<tclas>>42634520
   i := 0;                                                     <<tclas>>42634530
   while (i := i + 1 ) <= num'temp'entries do                  <<tclas>>42634540
      begin                                                    <<tclas>>42634550
      move binbuf:=e1,(16),2;                                  <<tclas>>42634560
      move * := temp'class'name,(8),2;                         <<tclas>>42634570
      move * := e2,(44);                                       <<tclas>>42634580
      print(inbuf,-67,0);                                      <<tclas>>42634590
      j :=-1;                                                  <<tclas>>42634600
      m:=l:=0;                                                 <<tclas>>42634610
      while (j := j + 1 ) < num'temp'devices do                <<tclas>>42634620
         begin                                                 <<tclas>>42634630
         l := ascii(tempclass'w(temp'first'ldev+j),            <<tclas>>42634640
                      binbuf(m));                              <<tclas>>42634650
         x := m + l;                                           <<tclas>>42634660
         binbuf(x) := ",";                                     <<tclas>>42634670
         m := x + 1;                                           <<tclas>>42634680
         if m > 69 and j < num'temp'devices then               <<tclas>>42634690
            begin                                              <<tclas>>42634700
            print(inbuf,-m+1,0);                               <<tclas>>42634710
            m := 0;                                            <<tclas>>42634720
            end;                                               <<tclas>>42634730
         end;                                                  <<tclas>>42634740
      @tempclass'w := @tempclass'w + next'temp'entry;          <<tclas>>42634750
      @tempclass'b := @tempclass'w & lsl(1);                   <<tclas>>42634760
      print(inbuf,-m+1,0);                                     <<tclas>>42634770
      end;                                                     <<tclas>>42634780
   tclassincr := -(temp'table'size);                           <<tclas>>42634790
   movedltables;                                               <<tclas>>42634800
   end;  << clean tempclass >>                                 <<tclas>>42634840
                                                               <<tclas>>42634850
                                                               <<tclas>>42634860
                                                               <<tclas>>42634870
                                                               <<tclas>>42634880
procedure cktempclass(devclass);                               <<tclas>>42634890
   byte array devclass;                                        <<tclas>>42634900
   begin                                                       <<tclas>>42634910
   comment                                                     <<tclas>>42634920
     Tempclass is a integer array which contains in word zero, <<tclas>>42634930
   the number of undefined classes used as output devices and, <<tclas>>42634940
   in word 1, the size of tempclass( in words ).  The remainder<<tclas>>42634950
   of tempclass in similar to the Device Class Table except    <<tclas>>42634960
   the cyclical pointer and the access type are not included in<<tclas>>42634970
   Tempclass.  The name is followed by the number of devices   <<tclas>>42634980
   and the device number's that require this class as an output<<tclas>>42634990
   device                                                      <<tclas>>42635000
   ;                                                           <<tclas>>42635010
                                                               <<tclas>>42635020
   << Tempclass declarations >>                                <<tclas>>42635030
                                                               <<tclas>>42635040
   equate                                                      <<tclas>>42635050
      temp'first'ldev = 5;                                     <<tclas>>42635060
                                                               <<tclas>>42635070
   define                                                      <<tclas>>42635080
      num'temp'entries    = tempclass'h(0)#,                   <<tclas>>42635090
      temp'table'size     = tempclass'h(1)#,                   <<tclas>>42635100
      temp'class'name     = tempclass'b(0)#,                   <<tclas>>42635110
      num'temp'devices    = tempclass'w(4)#,                   <<tclas>>42635120
      next'temp'entry     = num'temp'devices + 5#;             <<tclas>>42635130
                                                               <<tclas>>42635140
   comment                                                     <<tclas>>42635150
     We use tempclass'h to point to the header portion of      <<tclas>>42635160
   tempclass and to access those variables associated with     <<tclas>>42635170
   the header.  Tempclass'w is used to access the current      <<tclas>>42635180
   entry and Tempclass'b to access the current class name.     <<tclas>>42635190
   ;                                                           <<tclas>>42635200
                                                               <<tclas>>42635210
   integer pointer                                             <<tclas>>42635220
      tempclass'h,                                             <<tclas>>42635230
      tempclass'w;                                             <<tclas>>42635240
                                                               <<tclas>>42635250
   byte pointer                                                <<tclas>>42635260
      tempclass'b;                                             <<tclas>>42635270
                                                               <<tclas>>42635280
   integer                                                     <<tclas>>42635290
      i,                                                       <<tclas>>42635300
      class'counter,                                           <<tclas>>42635310
      dev'counter,                                             <<tclas>>42635320
      classindex,                                              <<tclas>>42635330
      ldev,                                                    <<tclas>>42635340
      count,                                                   <<tclas>>42635350
      dvr'index,                                               <<tclas>>42635351
      ldt'index;                                               <<tclas>>42635352
                                                               <<tclas>>42635360
   comment                                                     <<tclas>>42635370
      cktempclass is called each time a new device class is    <<tclas>>42635380
   defined. if the newly defined device class was present in   <<tclas>>42635390
   tempclass, the class index field in the ldt entry for this  <<tclas>>42635400
   device is updated appropriatly and the entry is removed     <<tclas>>42635410
   from tempclass. If the newly defined class is not present   <<tclas>>42635420
   then no action is taken.                                    <<tclas>>42635430
   ;                                                           <<tclas>>42635440
                                                               <<tclas>>42635450
                                                               <<tclas>>42635460
   @tempclass'h := @tclass;                                    <<tclas>>42635470
   @tempclass'w := @tempclass'h + 2;                           <<tclas>>42635480
   @tempclass'b := @tempclass'w & lsl(1);                      <<tclas>>42635490
   class'counter := 0;                                         <<tclas>>42635500
   while (class'counter := class'counter + 1 )                 <<tclas>>42635510
                                      <= num'temp'entries do   <<tclas>>42635520
      if devclass = temp'class'name,(8) then                   <<tclas>>42635530
         begin                                                 <<tclas>>42635540
                                                               <<tclas>>42635550
         << update ldt entry for each device in class >>       <<tclas>>42635560
                                                               <<tclas>>42635570
         classindex := clindex(devclass);                      <<tclas>>42635580
         dev'counter := -1;                                    <<tclas>>42635590
         while ( dev'counter := dev'counter + 1 )              <<tclas>>42635600
                                     < num'temp'devices do     <<tclas>>42635610
            begin                                              <<tclas>>42635620
            ldev := tempclass'w(temp'first'ldev+dev'counter);  <<tclas>>42635630
            dvr'index := ldev * dvrsize;                       <<tclas>>42635640
            ldt'index := ldev * ldtsize;                       <<tclas>>42635641
            if dvrdrtnum <> 0 then                             <<tclas>>42635650
               ldt'dflt'out'dev := classindex;                 <<tclas>>42635660
            end;                                               <<tclas>>42635680
                                                               <<tclas>>42635690
         << remove this tempclass entry               >>       <<tclas>>42635700
                                                               <<tclas>>42635710
         tclassincr := -(temp'first'ldev + num'temp'devices);  <<tclas>>42635720
                                                               <<tclas>>42635730
         << move the rest of tempclass over this entry >>      <<tclas>>42635740
                                                               <<tclas>>42635750
         count := (@tclass + temp'table'size + 1) -            <<tclas>>42635760
                        (@tempclass'w + next'temp'entry);      <<tclas>>42635770
         move tempclass'w := tempclass'w(next'temp'entry),     <<tclas>>42635780
                             (count);                          <<tclas>>42635790
         temp'table'size := temp'table'size + tclassincr;      <<tclas>>42635800
         num'temp'entries := num'temp'entries - 1;             <<tclas>>42635810
         class'counter := num'temp'entries;                    <<tclas>>42635820
         end                                                   <<tclas>>42635830
      else                                                     <<tclas>>42635840
         begin                                                 <<tclas>>42635850
         @tempclass'w := @tempclass'w + next'temp'entry;       <<tclas>>42635860
         @tempclass'b := @tempclass'w & lsl(1);                <<tclas>>42635870
         end;                                                  <<tclas>>42635880
   movedltables;                                               <<tclas>>42635890
   end;  << cktempclass >>                                     <<tclas>>42635900
                                                               <<tclas>>42635910
procedure putintempclass(devclass,ldev);                       <<tclas>>42635920
   value ldev;                                                 <<tclas>>42635930
   integer ldev;                                               <<tclas>>42635940
   byte array devclass;                                        <<tclas>>42635950
   begin                                                       <<tclas>>42635960
   comment                                                     <<tclas>>42635970
     Tempclass is a integer array which contains in word zero, <<tclas>>42635980
   the number of undefined classes used as output devices and, <<tclas>>42635990
   in word 1, the size of tempclass( in words ).  The remainder<<tclas>>42636000
   of tempclass in similar to the Device Class Table except    <<tclas>>42636010
   the cyclical pointer and the access type are not included in<<tclas>>42636020
   Tempclass.  The name is followed by the number of devices   <<tclas>>42636030
   and the device number's that require this class as an output<<tclas>>42636040
   device                                                      <<tclas>>42636050
   ;                                                           <<tclas>>42636060
                                                               <<tclas>>42636070
   << Tempclass declarations >>                                <<tclas>>42636080
                                                               <<tclas>>42636090
   equate                                                      <<tclas>>42636100
      temp'first'ldev = 5;                                     <<tclas>>42636110
                                                               <<tclas>>42636120
   define                                                      <<tclas>>42636130
      num'temp'entries    = tempclass'h(0)#,                   <<tclas>>42636140
      temp'table'size     = tempclass'h(1)#,                   <<tclas>>42636150
      temp'class'name     = tempclass'b(0)#,                   <<tclas>>42636160
      num'temp'devices    = tempclass'w(4)#,                   <<tclas>>42636170
      next'temp'entry     = num'temp'devices + 5#;             <<tclas>>42636180
                                                               <<tclas>>42636190
   comment                                                     <<tclas>>42636200
     We use tempclass'h to point to the header portion of      <<tclas>>42636210
   tempclass and to access those variables associated with     <<tclas>>42636220
   the header.  Tempclass'w is used to access the current      <<tclas>>42636230
   entry and Tempclass'b to access the current class name.     <<tclas>>42636240
   ;                                                           <<tclas>>42636250
                                                               <<tclas>>42636260
   integer pointer                                             <<tclas>>42636270
      tempclass'h,                                             <<tclas>>42636280
      tempclass'w,                                             <<tclas>>42636290
      dest,                                                    <<tclas>>42636300
      source;                                                  <<tclas>>42636310
                                                               <<tclas>>42636320
   byte pointer                                                <<tclas>>42636330
      tempclass'b;                                             <<tclas>>42636340
                                                               <<tclas>>42636350
   logical found;                                              <<tclas>>42636360
                                                               <<tclas>>42636370
   integer                                                     <<tclas>>42636380
      i,                                                       <<tclas>>42636390
      count;                                                   <<tclas>>42636400
                                                               <<tclas>>42636410
   @tempclass'h := @tclass;                                    <<tclas>>42636420
   @tempclass'w := @tempclass'h + 2;                           <<tclas>>42636430
   @tempclass'b := @tempclass'w & lsl(1);                      <<tclas>>42636440
   found := false;                                             <<tclas>>42636450
   i := 0;                                                     <<tclas>>42636460
   while (i := i + 1 ) <= num'temp'entries and not found do    <<tclas>>42636470
      if temp'class'name = devclass,(8)                        <<tclas>>42636480
         then found := true                                    <<tclas>>42636490
      else                                                     <<tclas>>42636500
         begin                                                 <<tclas>>42636510
         @tempclass'w := @tempclass'w + next'temp'entry;       <<tclas>>42636520
         @tempclass'b := @tempclass'w & lsl(1);                <<tclas>>42636530
         end;                                                  <<tclas>>42636540
                                                               <<tclas>>42636550
   if found then                                               <<tclas>>42636560
      begin                                                    <<tclas>>42636570
                                                               <<tclas>>42636580
      << must make room to insert new ldev  >>                 <<tclas>>42636590
                                                               <<tclas>>42636600
      tclassincr := 1;                                         <<tclas>>42636610
      movedltables;                                            <<tclas>>42636620
      @tempclass'h := @tclass;                                 <<tclas>>42636630
      @tempclass'w := @tempclass'w - 1;                        <<tclas>>42636640
      @tempclass'b := @tempclass'w & lsl(1);                   <<tclas>>42636650
                                                               <<tclas>>42636660
      << insert new ldev in tempclass       >>                 <<tclas>>42636670
                                                               <<tclas>>42636680
      @dest := @tclass + temp'table'size;                      <<tclas>>42636690
      @source := @dest - 1;                                    <<tclas>>42636700
      count := @dest - @ tempclass'w(next'temp'entry);         <<tclas>>42636710
      move dest := source,(-count);                            <<tclas>>42636720
      tempclass'w(next'temp'entry) := ldev;                    <<tclas>>42636730
      temp'table'size := temp'table'size + 1;                  <<tclas>>42636740
      num'temp'devices := num'temp'devices +1;                 <<tclas>>42636750
      end                                                      <<tclas>>42636760
   else                                                        <<tclas>>42636770
                                                               <<tclas>>42636780
      << new tempclass entry to be built    >>                 <<tclas>>42636790
                                                               <<tclas>>42636800
      begin                                                    <<tclas>>42636810
      tclassincr := 6;                                         <<tclas>>42636820
      movedltables;                                            <<tclas>>42636830
      @tempclass'w := @tempclass'w - 6;                        <<tclas>>42636840
      @tempclass'b := @tempclass'w & lsl(1);                   <<tclas>>42636850
      @tempclass'h := @tclass;                                 <<tclas>>42636860
      move temp'class'name := devclass,(8);                    <<tclas>>42636870
      num'temp'devices := 1;                                   <<tclas>>42636880
      tempclass'w( temp'first'ldev ) := ldev;                  <<tclas>>42636890
      num'temp'entries := num'temp'entries + 1;                <<tclas>>42636900
      temp'table'size := temp'table'size + 6;                  <<tclas>>42636910
      end;                                                     <<tclas>>42636920
   end;  << procedure putintempclass >>                        <<tclas>>42636930
                                                               <<tclas>>42636940
                                                               <<tclas>>42636950
                                                               <<tclas>>42636960
procedure remtempclass(ldev);                                  <<tclas>>42636970
   value ldev;                                                 <<tclas>>42636980
   integer ldev;                                               <<tclas>>42636990
   begin                                                       <<tclas>>42637000
   comment                                                     <<tclas>>42637010
     Tempclass is a integer array which contains in word zero, <<tclas>>42637020
   the number of undefined classes used as output devices and, <<tclas>>42637030
   in word 1, the size of tempclass( in words ).  The remainder<<tclas>>42637040
   of tempclass in similar to the Device Class Table except    <<tclas>>42637050
   the cyclical pointer and the access type are not included in<<tclas>>42637060
   Tempclass.  The name is followed by the number of devices   <<tclas>>42637070
   and the device number's that require this class as an output<<tclas>>42637080
   device                                                      <<tclas>>42637090
   ;                                                           <<tclas>>42637100
                                                               <<tclas>>42637110
   << Tempclass declarations >>                                <<tclas>>42637120
                                                               <<tclas>>42637130
   equate                                                      <<tclas>>42637140
      temp'first'ldev = 5;                                     <<tclas>>42637150
                                                               <<tclas>>42637160
   define                                                      <<tclas>>42637170
      num'temp'entries    = tempclass'h(0)#,                   <<tclas>>42637180
      temp'table'size     = tempclass'h(1)#,                   <<tclas>>42637190
      temp'class'name     = tempclass'b(0)#,                   <<tclas>>42637200
      num'temp'devices    = tempclass'w(4)#,                   <<tclas>>42637210
      next'temp'entry     = num'temp'devices + 5#;             <<tclas>>42637220
                                                               <<tclas>>42637230
   comment                                                     <<tclas>>42637240
     We use tempclass'h to point to the header portion of      <<tclas>>42637250
   tempclass and to access those variables associated with     <<tclas>>42637260
   the header.  Tempclass'w is used to access the current      <<tclas>>42637270
   entry and Tempclass'b to access the current class name.     <<tclas>>42637280
   ;                                                           <<tclas>>42637290
                                                               <<tclas>>42637300
   integer pointer                                             <<tclas>>42637310
      tempclass'h,                                             <<tclas>>42637320
      tempclass'w;                                             <<tclas>>42637330
                                                               <<tclas>>42637340
   byte pointer                                                <<tclas>>42637350
      tempclass'b;                                             <<tclas>>42637360
                                                               <<tclas>>42637370
   integer                                                     <<tclas>>42637380
      i,                                                       <<tclas>>42637390
      j,                                                       <<tclas>>42637400
      count;                                                   <<tclas>>42637410
                                                               <<tclas>>42637420
   logical                                                     <<tclas>>42637430
      found;                                                   <<tclas>>42637440
                                                               <<tclas>>42637450
   found := false;                                             <<tclas>>42637460
   @tempclass'h := @tclass;                                    <<tclas>>42637470
   @tempclass'w := @tempclass'h + 2;                           <<tclas>>42637480
   @tempclass'b := @tempclass'w & lsl(1);                      <<tclas>>42637490
   i := 0;                                                     <<tclas>>42637500
   while (i := i + 1 ) <= num'temp'entries and not found do    <<tclas>>42637510
      begin                                                    <<tclas>>42637520
      j :=-1;                                                  <<tclas>>42637530
      while (j := j + 1 ) < num'temp'devices and not found do  <<tclas>>42637540
         if ldev = tempclass'w(temp'first'ldev + j) then       <<tclas>>42637550
                                                               <<tclas>>42637560
            << found appropriate entry, remove it   >>         <<tclas>>42637570
                                                               <<tclas>>42637580
            if num'temp'devices = 1 then                       <<tclas>>42637590
               begin                                           <<tclas>>42637600
               << must remove entire class  >>                 <<tclas>>42637610
               << move the rest of tempclass over this entry >><<tclas>>42637620
                                                               <<tclas>>42637630
               count := (@tclass + temp'table'size) -          <<tclas>>42637640
                        (@tempclass'w + next'temp'entry);      <<tclas>>42637650
               move tempclass'w := tempclass'w(next'temp'entry)<<tclas>>42637660
                                    ,(count);                  <<tclas>>42637670
               found := true;                                  <<tclas>>42637680
               tclassincr := -6;                               <<tclas>>42637690
               temp'table'size := temp'table'size - 6;         <<tclas>>42637700
               num'temp'entries := num'temp'entries - 1;       <<tclas>>42637710
               movedltables;                                   <<tclas>>42637720
               end                                             <<tclas>>42637730
            else                                               <<tclas>>42637740
               begin                                           <<tclas>>42637750
               count := num'temp'devices - (j+1);              <<tclas>>42637760
               move tempclass'w(temp'first'ldev + j) :=        <<tclas>>42637770
                    tempclass'w(temp'first'ldev + j + 1),      <<tclas>>42637780
                    (count);                                   <<tclas>>42637790
               count := (@tclass + temp'table'size) -          <<tclas>>42637800
                        (@tempclass'w + next'temp'entry);      <<tclas>>42637810
               move tempclass'w(next'temp'entry - 1) :=        <<tclas>>42637820
                    tempclass'w(next'temp'entry),(count);      <<tclas>>42637830
               temp'table'size := temp'table'size - 1;         <<tclas>>42637840
               num'temp'devices := num'temp'devices - 1;       <<tclas>>42637850
               tclassincr := tclassincr - 1;                   <<tclas>>42637860
               found := true;                                  <<tclas>>42637870
               movedltables;                                   <<tclas>>42637880
               end;                                            <<tclas>>42637890
      @tempclass'w := @tempclass'w + next'temp'entry;          <<tclas>>42637900
      @tempclass'b := @tempclass'w & lsl(1);                   <<tclas>>42637910
      end;                                                     <<tclas>>42637920
   end; << remtempclassrefs >>                                 <<tclas>>42637930
$EDIT VOID=42698000                                            <<dctab>>42698000
$EDIT VOID=42701999                                            <<dctab>>42698001
$EDIT VOID=42702000                                            <<dctab>>42702000
$EDIT VOID=42805999                                            <<dctab>>42702001
$EDIT VOID=42806000                                            <<dctab>>42806000
$EDIT VOID=42807999                                            <<dctab>>42806001
$EDIT VOID=42808000                                            <<dctab>>42808000
$EDIT VOID=42858000                                            <<dctab>>42808001
    LDTX'INDEX,                                                <<*LDTX>>42860076
      LDTX'INDEX := LLDEV * LDTXSIZE;                          <<*LDTX>>42860156
      LDTX'TDT'OFFSET := INDEXOFFSET;                          <<*LDTX>>42860160
               LDTX'INDEX,                                     <<*LDTX>>42860266
       LDTX'INDEX := LDEV * LDTXSIZE;                          <<*LDTX>>42860271
       OFFSET := LDTX'TDT'OFFSET;                              <<*LDTX>>42860275
         LDTX'TDT'OFFSET := -1;   <<REMOVED>>                  <<*LDTX>>42860320
         LDTX'TDT'OFFSET := -1;   <<REMOVED>>                  <<*LDTX>>42860385
          LDTX'INDEX,                                          <<*LDTX>>42860611
     LDTX'INDEX := LDEV * LDTXSIZE;                            <<*LDTX>>42860671
     LDTX'TDT'OFFSET := -1;               <<REMOVED>>          <<*LDTX>>42860680
   PROCEDURE LISTCLASSES;                                      <<dctab>>42864010
   <<LISTS DEVICE CLASSES FOLLOWED CLASS TYPE  >>              <<dctab>>42864020
   << AND LOGICAL DEV. NUMBERS                 >>              <<dctab>>42864021
     BEGIN                                                     <<dctab>>42864030
       INTEGER ARRAY HED1(0:13)=PB:=                           <<dctab>>42864040
           "  CLASS     ACCESS  LOGICAL ";                     <<dctab>>42864050
       INTEGER ARRAY HED2(0:13)=PB:=                           <<dctab>>42864060
           "  NAME      TYPE    DEVICES ";                     <<dctab>>42864070
       INTEGER BINDX:=20;                                      <<dctab>>42864080
       INTEGER POINTER                                         <<dctab>>42864081
           DCT;                                                <<dctab>>42864082
       BYTE POINTER                                            <<dctab>>42864083
           DCT'B;                                              <<dctab>>42864084
          @DCT := @DCT'HEAD + DCTH'DCT'BASE;                   <<dctab>>42864090
          @DCT'B := @DCT & LSL(1);                             <<dctab>>42864100
          MOVE LINE := HED1,(14);                              <<dctab>>42864110
          PRINTLINE;                                           <<dctab>>42864120
          MOVE LINE := HED2,(14);                              <<dctab>>42864130
          PRINTLINE;                                           <<dctab>>42864140
          I := -1;                                             <<dctab>>42864150
          WHILE (I:=I+1) < DCTH'NUM'DCT'ENTRIES DO             <<dctab>>42864160
            BEGIN                                              <<dctab>>42864170
            LINE := "  ";                                      <<dctab>>42864180
            MOVE LINE(1) := LINE,(35);                         <<dctab>>42864190
            MOVE BLINE := DCTB'CLASS'NAME,(8);                 <<dctab>>42864200
            TOS := DCT'CLASS'ACC'TYPE;                         <<dctab>>42864210
            TOS := TOS LAND 7;                                 <<dctab>>42864220
            IF TOS <> 0 THEN                                   <<dctab>>42864230
              BEGIN <<ALL DEVICES ARE DISCS OF SOME KIND >>    <<dctab>>42864240
              IF DCT'CLASS'ACC'TYPE = 31 <<SERIAL DISC >> THEN <<dctab>>42864250
                 MOVE BLINE(12):="SD"                          <<dctab>>42864260
              ELSE                                             <<dctab>>42864270
              IF DCT'CLASS'ACC'TYPE=7 << FOREIGN DISC >> THEN  <<dctab>>42864280
                 MOVE BLINE(12):="FD"                          <<dctab>>42864290
              ELSE                                             <<dctab>>42864300
                 ASCII(DCT'CLASS'ACC'TYPE,BLINE(12))           <<dctab>>42864310
              END                                              <<dctab>>42864320
            ELSE                                               <<dctab>>42864330
              CASE DCT'ACCESS'TYPE OF                          <<dctab>>42864340
                BEGIN                                          <<dctab>>42864350
                MOVE BLINE(12):="DA";                          <<dctab>>42864360
                MOVE BLINE(12):="IN";                          <<dctab>>42864370
                MOVE BLINE(12):="I/O,C";                       <<dctab>>42864380
                MOVE BLINE(12):="I/O,NC";                      <<dctab>>42864390
                MOVE BLINE(12):="OUT";                         <<dctab>>42864400
                END;                                           <<dctab>>42864410
            IF DCT'NUM'DEVICES <> 0 THEN                       <<dctab>>42864420
              BEGIN                                            <<dctab>>42864430
              K := -1;                                         <<dctab>>42864440
              WHILE (K:=K+1) < DCT'NUM'DEVICES DO              <<dctab>>42864450
                BEGIN                                          <<dctab>>42864460
                LDEV := DCT(DCT'FIRST'LDEV + K);               <<dctab>>42864470
                IF (LDEV>99) AND (BINDX>69) OR                 <<dctab>>42864480
                   (LDEV>9) AND (BINDX>70) OR (BINDX>71)       <<dctab>>42864490
                THEN                                           <<dctab>>42864500
                  BEGIN <<WON'T FIT ON THIS LINE>>             <<dctab>>42864510
                  PRINTLINE;                                   <<dctab>>42864520
                  BINDX := 20;                                 <<dctab>>42864530
                  END;                                         <<dctab>>42864540
                M := ASCII(LDEV,BLINE(BINDX));                 <<dctab>>42864550
                BINDX := BINDX + M;                            <<dctab>>42864560
                IF K < (DCT'NUM'DEVICES-1) THEN                <<dctab>>42864570
                  BEGIN                                        <<dctab>>42864580
                  BLINE(BINDX) := ",";                         <<dctab>>42864590
                  BINDX :=BINDX+1;                             <<dctab>>42864600
                  END;                                         <<dctab>>42864610
                END;                                           <<dctab>>42864620
              PRINTLINE;                                       <<dctab>>42864630
              END;                                             <<dctab>>42864640
            @DCT := @DCT + DCT'NEXT'ENTRY;                     <<dctab>>42864650
            @DCT'B := @DCT & LSL(1);                           <<dctab>>42864660
            BINDX := 20;                                       <<dctab>>42864670
            END;                                               <<dctab>>42864680
     END  <<LISTCLASSES>>;                                     <<dctab>>42864690
$EDIT VOID=43030000                                            <<dctab>>42866000
$EDIT VOID=43042000                                            <<tclas>>43034000
          <<-------------------------------->>                 <<dctab>>43043010
          << REMOVE DEVICE CLASS REFERENCES >>                 <<dctab>>43043020
          <<-------------------------------->>                 <<dctab>>43043030
  PROCEDURE REMOVECLASSREFS;                                   <<dctab>>43043040
    OPTION PRIVILEGED,UNCALLABLE;                              <<dctab>>43043050
    COMMENT                                                    <<dctab>>43043060
      REMOVE REFERENCES TO LOGICAL DEVICE LDEV                 <<dctab>>43043070
      FROM DEVICE CLASS TABLE;                                 <<dctab>>43043080
      BEGIN                                                    <<dctab>>43043090
        INTEGER I:=0,        <<DEVICE CLASS NUMBER>>           <<dctab>>43043100
                J,                   <<INDEX WITHIN CLASS>>    <<dctab>>43043110
                K,           <<LOGICAL DEVICE NUMBER INDEX>>   <<dctab>>43043120
                COUNT,       <<NUMBER OF WORDS TO BE MOVED>>   <<dctab>>43043121
                LDT'INDEX;                                     <<dctab>>43043130
        INTEGER POINTER                                        <<dctab>>43043140
            DCT;                                               <<dctab>>43043150
        BYTE POINTER                                           <<dctab>>43043160
            DCT'B;                                             <<dctab>>43043170
          @DCT := @DCT'HEAD + DCTH'DCT'BASE;                   <<dctab>>43043180
          @DCT'B := @DCT & LSL(1);                             <<dctab>>43043190
          WHILE(I:=I+1) <= DCTH'NUM'DCT'ENTRIES DO             <<dctab>>43043200
            BEGIN                                              <<dctab>>43043210
              J := -1;                                         <<dctab>>43043220
              WHILE (J:=J+1) < DCT'NUM'DEVICES DO              <<dctab>>43043230
              IF DCT(DCT'FIRST'LDEV + J) = LDEV THEN           <<dctab>>43043240
                BEGIN   <<IN THIS CLASS>>                      <<dctab>>43043250
                  IF DCT'NUM'DEVICES = 1 THEN                  <<dctab>>43043260
                    BEGIN  <<CLASS MUST BE REMOVED>>           <<dctab>>43043270
                      MOVE DEVCLASS:=DCTB'CLASS'NAME,(8);      <<dctab>>43043280
                                                               <<dctab>>43043290
                      DCTABINCR := DCTABINCR - 7;              <<dctab>>43043300
                      DVCLSIZE := DVCLSIZE - 7;                <<dctab>>43043310
                      DCTH'SEGMENT'SIZE    :=                  <<dctab>>43043320
                           DCTH'SEGMENT'SIZE - 7;              <<dctab>>43043330
                      DCTH'NUM'DCT'ENTRIES :=                  <<dctab>>43043340
                           DCTH'NUM'DCT'ENTRIES - 1;           <<dctab>>43043350
                      DCTH'TDT'BASE :=                         <<dctab>>43043360
                           DCTH'TDT'BASE - 7;                  <<dctab>>43043370
                                                               <<dctab>>43043380
                      << MOVE THE REST OF THE TABLE >>         <<dctab>>43043390
                      << ON TOP OF THIS ENTRY       >>         <<dctab>>43043400
                                                               <<dctab>>43043401
                      COUNT := @TTDT - (@DCT + DCT'NEXT'ENTRY);<<dctab>>43043402
                                                               <<dctab>>43043403
                                                               <<dctab>>43043410
                      MOVE DCT := DCT(DCT'NEXT'ENTRY),(COUNT); <<dctab>>43043420
$EDIT VOID=43043430                                            <<dctab>>43043430
$EDIT VOID=43043440                                            <<dctab>>43043440
                                                               <<dctab>>43043450
                      MOVEDLTABLES;                            <<tclas>>43043451
                      @DCT := @DCT + 7;                        <<tclas>>43043452
                      @DCT'B := @DCT & LSL(1);                 <<tclas>>43043453
                      << SEARCH LDT FOR CLASS   >>             <<dctab>>43043460
                                                               <<dctab>>43043470
                      K := 0;                                  <<dctab>>43043480
                      WHILE (K:=K+1)<=HLDEV DO                 <<dctab>>43043490
                        BEGIN                                  <<dctab>>43043500
                        LDT'INDEX := K * LDTSIZE;              <<dctab>>43043510
                        IF LOGICAL(LDT'CLASS'INDEX) THEN       <<dctab>>43043520
                          BEGIN <<OUTPUT DEVICE IS CLASS>>     <<dctab>>43043530
                          TOS := LDT'DFLT'OUT'DEV;    <<INDEX>><<dctab>>43043540
                          IF S0=I THEN                         <<dctab>>43043550
                            BEGIN <<OUTPT DEV IS DELETD CLAS>> <<dctab>>43043560
                            LDT'DFLT'OUT'DEV := 0;             <<dctab>>43043570
                            PUTINTEMPCLASS(DEVCLASS,K);        <<tclas>>43043580
                            END                                <<dctab>>43043590
                          ELSE IF S0>I                         <<dctab>>43043600
                            THEN LDT'DFLT'OUT'DEV := S0-1;     <<dctab>>43043610
                          DEL;                                 <<dctab>>43043620
                          END;                                 <<dctab>>43043630
                      END;                                     <<dctab>>43043640
                      I := I-1;  <<ONE LESS CLASS>>            <<dctab>>43043650
                      GOTO NEXTCL;                             <<dctab>>43043660
                    END                                        <<dctab>>43043670
                  ELSE                                         <<dctab>>43043680
                    BEGIN                                      <<dctab>>43043690
                                                               <<dctab>>43043700
                    << REMOVE LDEV FROM CLASS               >> <<dctab>>43043710
                    << BY MOVING REST OF THIS CLASS OVER IT >> <<dctab>>43043720
                                                               <<dctab>>43043730
                    COUNT := DCT'NUM'DEVICES - (J + 1);        <<dctab>>43043731
                                                               <<dctab>>43043732
                      MOVE DCT(DCT'FIRST'LDEV + J) :=          <<dctab>>43043740
                           DCT(DCT'FIRST'LDEV + J + 1),        <<dctab>>43043750
                           (COUNT);                            <<dctab>>43043760
                                                               <<dctab>>43043770
                    << NOW MOVE THE REST OF THE TABLE >>       <<dctab>>43043780
                                                               <<dctab>>43043790
                      COUNT := @TTDT - (@DCT + DCT'NEXT'ENTRY);<<dctab>>43043791
                                                               <<dctab>>43043792
                      MOVE DCT(DCT'NEXT'ENTRY - 1) :=          <<dctab>>43043800
                           DCT(DCT'NEXT'ENTRY),(COUNT);        <<dctab>>43043810
$EDIT VOID=43043820                                            <<dctab>>43043820
$EDIT VOID=43043830                                            <<dctab>>43043830
                                                               <<dctab>>43043840
                      DCT'CYCLICAL'PTR := 1;                   <<dctab>>43043850
                      DVCLSIZE := DVCLSIZE-1;                  <<dctab>>43043860
                      DCTABINCR := DCTABINCR - 1;              <<dctab>>43043870
                      DCT'NUM'DEVICES := DCT'NUM'DEVICES - 1;  <<dctab>>43043880
                      DCTH'SEGMENT'SIZE :=                     <<dctab>>43043881
                                 DCTH'SEGMENT'SIZE -1;         <<dctab>>43043882
                      DCTH'TDT'BASE := DCTH'TDT'BASE - 1;      <<dctab>>43043883
                      MOVEDLTABLES;                            <<tclas>>43043884
                      @DCT := @DCT + 1;                        <<tclas>>43043885
                      @DCT'B := @DCT & LSL(1);                 <<tclas>>43043886
                      J := J-1;                                <<dctab>>43043890
                    END;                                       <<dctab>>43043900
                END;                                           <<dctab>>43043910
              @DCT := @DCT + DCT'NEXT'ENTRY;                   <<dctab>>43043920
              @DCT'B := @DCT & LSL(1);                         <<dctab>>43043930
  NEXTCL:   END;                                               <<dctab>>43043940
$EDIT VOID=43043950                                            <<tclas>>43043950
      END <<REMOVECLASSREFS>> ;                                <<dctab>>43043960
$EDIT VOID=43049999                                            <<tclas>>43044000
$EDIT VOID=43100000                                            <<tclas>>43050000
$EDIT VOID=43186000                                            <<tclas>>43100001
$EDIT VOID=43280000                                            <<tclas>>43186001
$EDIT VOID=43370000                                            <<dctab>>43300000
  INTEGER I, ENTRY'SIZE, COUNT;                                <<dctab>>43300010
                                                               <<dctab>>43300020
  LOGICAL FOUND;                                               <<dctab>>43300030
  INTEGER POINTER                                              <<dctab>>43300031
      DCT;                                                     <<dctab>>43300032
  BYTE POINTER                                                 <<dctab>>43300033
      DCT'B;                                                   <<dctab>>43300034
                                                               <<dctab>>43300040
  I := 0;                                                      <<dctab>>43300050
  FOUND := FALSE;                                              <<dctab>>43300060
  @DCT := @DCT'HEAD + DCTH'DCT'BASE;                           <<dctab>>43300070
  @DCT'B := @DCT & LSL(1);                                     <<dctab>>43300080
  WHILE (I:=I+1) <= DCTH'NUM'DCT'ENTRIES AND NOT FOUND DO      <<dctab>>43300090
    IF DCTB'CLASS'NAME = DEVCLASS,(8) THEN                     <<dctab>>43300100
      BEGIN                                                    <<dctab>>43300110
      FOUND := TRUE;                                           <<dctab>>43300120
      DELETECLASS := I;                                        <<dctab>>43300130
      END                                                      <<dctab>>43300140
    ELSE                                                       <<dctab>>43300150
      BEGIN                                                    <<dctab>>43300160
      @DCT := @DCT + DCT'NEXT'ENTRY;                           <<dctab>>43300170
      @DCT'B := @DCT & LSL(1);                                 <<dctab>>43300180
      END;                                                     <<dctab>>43300190
  IF FOUND THEN                                                <<dctab>>43300200
    BEGIN                                                      <<dctab>>43300210
    << MUST COMPACT TABLE >>                                   <<dctab>>43300220
    ENTRY'SIZE := DCT'NEXT'ENTRY;                              <<dctab>>43300230
    COUNT := (@DCT'HEAD + DCTH'DCT'BASE + DVCLSIZE)            <<dctab>>43300240
             - (@DCT + DCT'NEXT'ENTRY);                        <<dctab>>43300250
    MOVE DCT := DCT(DCT'NEXT'ENTRY),(COUNT);                   <<dctab>>43300260
    DCTH'SEGMENT'SIZE := DCTH'SEGMENT'SIZE - ENTRY'SIZE;       <<dctab>>43300265
    DCTH'NUM'DCT'ENTRIES := DCTH'NUM'DCT'ENTRIES - 1;          <<dctab>>43300270
    DCTH'TDT'BASE := DCTH'TDT'BASE - ENTRY'SIZE;               <<dctab>>43300275
    DVCLSIZE := DVCLSIZE - ENTRY'SIZE;                         <<dctab>>43300280
    DCTABINCR := -ENTRY'SIZE;                                  <<dctab>>43300290
    MOVEDLTABLES;                                              <<dctab>>43300300
    END                                                        <<dctab>>43300310
  ELSE                                                         <<dctab>>43300320
    BEGIN                                                      <<dctab>>43300330
    << NOT FOUND >>                                            <<dctab>>43300340
    MOVE BERR := "CLASS ",2;                                   <<dctab>>43300350
    MOVE *    := DEVCLASS,(8),2;                               <<dctab>>43300360
    MOVE *    := " DOESN'T EXIST";                             <<dctab>>43300370
    PRINT( ERR, -28, 0);                                       <<dctab>>43300380
    RETURNP := ERRLABEL;                                       <<dctab>>43300390
    ASSEMBLE( EXIT 2);                                         <<dctab>>43300400
    END;                                                       <<dctab>>43300410
  END;  << DELETECLASS >>                                      <<dctab>>43300420
                                                               <<dctab>>43300430
   PROCEDURE DETERMCTYP(ERRLABEL,DCT,ASKIO);                   <<dctab>>43380010
     VALUE ERRLABEL,DCT,ASKIO;                                 <<dctab>>43380020
     INTEGER ERRLABEL;                                         <<dctab>>43380030
     INTEGER POINTER DCT;                                      <<dctab>>43380040
     LOGICAL ASKIO;                                            <<dctab>>43380050
        BEGIN                                                  <<dctab>>43380060
        <<THIS PROCEDURE DETERMINES THE TYPE OF THE CLASS >>   <<dctab>>43380070
        <<TO WHICH DCT POINTS TO IN DCTAB.  DCT  POINTS  >>    <<dctab>>43380080
        << TO THE CLASS NAME.                              >>  <<dctab>>43380090
       SWITCH SW:=CER,DAC,SIP,CER,CIO,CER,SIP,CER,NCIO,CER,SIP,<<dctab>>43380100
                  CER,NCIO,CER,SIP,CER,SOU,CER,CER,CER,SOU,CER,<<dctab>>43380110
                  CER,CER,SOU,CER,CER,CER,SOU,CER,CER,CER,CER; <<dctab>>43380120
        INTEGER I,J,L,N,TEMP,DTYP,DRANGE,TYPE,SUBTYP,          <<dctab>>43380130
                CURRENT'CLASS'ACCESS'TYPE,                     <<dctab>>43380140
                LDT'INDEX,                                     <<dctab>>43380141
                LPDT'INDEX;                                    <<dctab>>43380142
        BYTE POINTER                                           <<dctab>>43380145
            DCT'B;                                             <<dctab>>43380146
        BYTE ARRAY MESSAGE'BUFFER(0:8);                        <<dctab>>43380150
        LOGICAL ALLSAME:=TRUE;                                 <<dctab>>43380160
        LOGICAL ALL'SAME'RANGE:= TRUE;                         <<dctab>>43380170
        LOGICAL CANBESERIAL:=TRUE;                             <<dctab>>43380180
          N := DCT'NUM'DEVICES;                                <<dctab>>43380190
          I := -1;                                             <<dctab>>43380200
          TEMP := 0;                                           <<dctab>>43380210
          CURRENT'CLASS'ACCESS'TYPE:= DCT'CLASS'ACC'TYPE;      <<dctab>>43380220
          LDT'INDEX := DCT(DCT'FIRST'LDEV) * LDTSIZE;          <<dctab>>43380230
          DTYP := LDT'DEVICE'TYPE;<<TYPE OF FIRST DEVICE>>     <<dctab>>43380240
          DRANGE :=LDT'ACCESS'TYPE;                            <<dctab>>43380250
          WHILE (I:=I+1) < DCT'NUM'DEVICES DO                  <<dctab>>43380260
            BEGIN                                              <<dctab>>43380270
            LDT'INDEX := DCT(DCT'FIRST'LDEV + I) * LDTSIZE;    <<dctab>>43380280
            LPDT'INDEX := DCT(DCT'FIRST'LDEV + I) * LPDTSIZE;  <<dctab>>43380281
            TYPE := LDT'DEVICE'TYPE;                           <<dctab>>43380290
            SUBTYP := LPDT'SUBTYPE;                            <<dctab>>43380300
            IF DTYP <> LDT'DEVICE'TYPE                         <<dctab>>43380310
              THEN ALLSAME := FALSE;                           <<dctab>>43380320
            IF DRANGE <> LDT'ACCESS'TYPE                       <<dctab>>43380330
              THEN ALL'SAME'RANGE:= FALSE;                     <<dctab>>43380340
            CASE LDT'ACCESS'TYPE OF                            <<dctab>>43380350
             BEGIN                                             <<dctab>>43380360
             BEGIN                                             <<dctab>>43380370
             TEMP.DIRACC:=1;                                   <<dctab>>43380380
             IF NOT SDISC'TYPE(TYPE,SUBTYP) THEN               <<dctab>>43380390
                CANBESERIAL:=FALSE;                            <<dctab>>43380400
             END;                                              <<dctab>>43380410
             TEMP.SERINP:=1;                                   <<dctab>>43380420
             TEMP.CONIO :=1;                                   <<dctab>>43380430
             TEMP.NCONIO:=1;                                   <<dctab>>43380440
             TEMP.SEROUT:=1;                                   <<dctab>>43380450
             END;                                              <<dctab>>43380460
            END;                                               <<dctab>>43380470
          GO SW(TEMP);                                         <<dctab>>43380480
   DAC:   IF CURRENT'CLASS'ACCESS'TYPE<>31 << SDISC >> AND     <<dctab>>43380490
             CURRENT'CLASS'ACCESS'TYPE<>7 << FDISC >> THEN     <<dctab>>43380500
          IF ALLSAME THEN DCT'CLASS'ACC'TYPE := DTYP           <<dctab>>43380510
          ELSE DCT'CLASS'ACC'TYPE := 0;  << DIRECT ACCESS >>   <<dctab>>43380520
          IF CANBESERIAL AND ASKIO THEN                        <<dctab>>43380530
            IF LGETYESNO(M2327) THEN   <<SERIAL DISC CLASS>>   <<dctab>>43380540
              DCT'CLASS'ACC'TYPE := 31 << SERIAL DISC >>       <<dctab>>43380550
            ELSE IF LGETYESNO(M2334) THEN<<FOREIGN DISC CLASS>><<dctab>>43380560
              DCT'CLASS'ACC'TYPE := 7; << FOREIGN DISC >>      <<dctab>>43380570
          RETURN;                                              <<dctab>>43380580
   SIP:   IF ALLSAME THEN DCT'CLASS'ACC'TYPE:=DTYP             <<dctab>>43380590
          ELSE IF ALL'SAME'RANGE OR ASKIO THEN                 <<dctab>>43380600
                 DCT'CLASS'ACC'TYPE:=1 << SERIAL'IN >> &LSL(3);<<dctab>>43380610
          RETURN;                                              <<dctab>>43380620
   CIO:   IF ASKIO THEN                                        <<dctab>>43380630
            BEGIN                                              <<dctab>>43380640
            DCT'CLASS'ACC'TYPE:= 2 << IO'CONCURRENT >> &LSL(3);<<dctab>>43380650
            GO PROMPT;                                         <<dctab>>43380660
            END;                                               <<dctab>>43380670
          IF CURRENT'CLASS'ACCESS'TYPE.(13:3)<>0 THEN          <<dctab>>43380680
            DCT'CLASS'ACC'TYPE:=2 << IO'CONCURRENT >> &LSL(3); <<dctab>>43380690
          RETURN;                                              <<dctab>>43380700
   NCIO:  DCT'CLASS'ACC'TYPE := 3 << IO'NONCONCUR >> &LSL(3);  <<dctab>>43380710
          IF ASKIO THEN GO PROMPT ELSE RETURN;                 <<dctab>>43380720
   SOU:   IF ALLSAME THEN DCT'CLASS'ACC'TYPE:=DTYP             <<dctab>>43380730
          ELSE IF ALL'SAME'RANGE OR ASKIO THEN                 <<dctab>>43380740
                 DCT'CLASS'ACC'TYPE:=4 <<SERIAL'OUT>> &LSL(3); <<dctab>>43380750
          RETURN;                                              <<dctab>>43380760
   CER:                                                        <<dctab>>43380770
          IF ALLSAME THEN                                      <<dctab>>43380780
             DCT'CLASS'ACC'TYPE := DTYP                        <<dctab>>43380790
          ELSE IF ASKIO THEN                                   <<dctab>>43380800
             BEGIN                                             <<dctab>>43380810
             MESSAGE'BUFFER(0) := " ";                         <<dctab>>43380820
             MOVE MESSAGE'BUFFER(1) := MESSAGE'BUFFER,(9);     <<dctab>>43380830
             MESSAGE'BUFFER :=                                 <<dctab>>43380840
                MOVEAN(MESSAGE'BUFFER(1),DEVCLASS,8);          <<dctab>>43380850
             MESSAGE(M123,,,,,MESSAGE'BUFFER);                 <<dctab>>43380860
             RETURNP := ERRLABEL;                              <<dctab>>43380870
             END;                                              <<dctab>>43380880
          RETURN;                                              <<dctab>>43380890
   PROMPT:MESSAGE(-M2350);                                     <<dctab>>43380900
          READINPUT;                                           <<dctab>>43380910
          M := GETSTR(BTYP,@PROMPT,1,6,"/");                   <<dctab>>43380920
          IF BTYP="IN    "                                     <<dctab>>43380930
            THEN DCT'CLASS'ACC'TYPE:=1 << SERIAL'IN >> &LSL(3) <<dctab>>43380940
          ELSE IF BTYP="OUT   "                                <<dctab>>43380950
            THEN DCT'CLASS'ACC'TYPE:=4 << SERIAL'OUT >> &LSL(3)<<dctab>>43380960
               ELSE IF BTYP<>"IN/OUT" AND BTYP<>"IO    " THEN  <<dctab>>43380970
                      BEGIN                                    <<dctab>>43380980
                      MESSAGE(M2453);                          <<dctab>>43380990
                      GO PROMPT;                               <<dctab>>43381000
                      END;                                     <<dctab>>43381010
          IF DCT'ACCESS'TYPE = 2 << IO'CONCURRENT >> THEN      <<dctab>>43381020
            BEGIN                                              <<dctab>>43381030
   NORNC:   MESSAGE(-M2351);                                   <<dctab>>43381040
            READINPUT;                                         <<dctab>>43381050
            GETSTR(BTYP,@NORNC,1,2);                           <<dctab>>43381060
            IF BTYP="NC"                                       <<dctab>>43381070
              THEN DCT'CLASS'ACC'TYPE:=3 <<NONCONCUR>> &LSL(3) <<dctab>>43381080
            ELSE IF BTYP<>"C " AND BTYP<>"CO" THEN             <<dctab>>43381090
                   BEGIN                                       <<dctab>>43381100
                   MESSAGE(M2453);                             <<dctab>>43381110
                   GO NORNC;                                   <<dctab>>43381120
                   END;                                        <<dctab>>43381130
            END;                                               <<dctab>>43381140
          END  <<DETERMCTYP>>;                                 <<dctab>>43381150
$EDIT VOID=43604000                                            <<dctab>>43382000
        EQUATE CONSOLEDRT  = 7,                                <<*DVR*>>43636000
               CONSOLEUNIT = 0;                                <<*DVR*>>43637000
        EQUATE CONSOLEDRT  = 8,                                <<*DVR*>>43640000
               CONSOLEUNIT = 0;                                <<*DVR*>>43641000
        INTEGER LEN1,LEN2;                                     <<*DVR*>>43670000
        INTEGER ACCTYPE,UNITN;                                 <<*DVR*>>43672000
        INTEGER                                                <<*LDT*>>43673000
            LDT'INDEX,                                         <<*DVR*>>43674000
            LPDT'INDEX,                                        <<*LDTX>>43675000
            LDTX'INDEX,                                        <<*DVR*>>43675100
            DVR'INDEX;                                         <<*DVR*>>43675200
        INTEGER POINTER                                        <<dctab>>43675300
            DCT;                                               <<dctab>>43675400
        BYTE POINTER                                           <<dctab>>43675500
            DCT'B;                                             <<dctab>>43675600
      CLASSNAME := MOVEAN(CLASSNAME(1),DCTB'CLASS'NAME,8);     <<dctab>>43682000
           DVR'INDEX := LDEV * DVRSIZE;                        <<*DVR*>>43696000
           IF DVRDRTNUM <> 0 AND                               <<*DVR*>>43698000
              DVRDSBIT = 0 THEN                                <<*DVR*>>43700000
              IF DVRDRTNUM > COMM(DRTNUM)                      <<CONFD>>43704000
              IF DVRDRTNUM > MAXDRT  <<CANT SUPPORT>>          <<*DVR*>>43708000
              IF COMM(DRTNUM) > MAXDRT  <<USER CHOSEN MAX>>    <<CONFD>>43712000
                 IF 125 <= DVRDRTNUM <= 127 THEN               <<*DVR*>>43726000
              LDT'INDEX := LDEV * LDTSIZE;                     <<*LDT*>>43738000
              LPDT'INDEX := LDEV * LPDTSIZE;                   <<depen>>43739000
              TYPE := LDT'DEVICE'TYPE;                         <<*LDT*>>43740000
              SUBTYP := LPDT'SUBTYPE;                          <<*LPDT>>43742000
              DRTN := DVRDRTNUM;                               <<*DVR*>>43743000
              UNITN := DVRUNITNUM;                             <<*DVR*>>43743100
              I := LDT'DFLT'OUT'DEV;     <<OUTPUT DEVICE>>     <<*LDT*>>43744000
              IF LDEV > 255 AND 0 <= TYPE <= 7 THEN            <<LIMIT>>43746100
                 BEGIN                                         <<LIMIT>>43746200
                 MESSAGE( M137, 255);                          <<LIMIT>>43746300
                 ERRORS := TRUE;                               <<LIMIT>>43746400
                 END;                                          <<LIMIT>>43746500
                                                               <<LIMIT>>43746600
              IF DRTN = CONSOLEDRT AND UNITN = CONSOLEUNIT     <<*DVR*>>43748000
                AND TYPE = 16 << TERMINAL >>                   <<*DVR*>>43750000
              IF DRTN = SYSTAPEDRT AND UNITN = SYSTAPEUNIT     <<*DVR*>>43754000
              AND (SDISC'TYPE(TYPE,SUBTYP) LOR                 <<*DVR*>>43756000
               TYPE = 24 << MAG TAPE >>) THEN                  <<*LDT*>>43758000
              IF LOGICAL(LPDT'JOB'ACCEPT) AND I=0 THEN         <<*LPDT>>43762000
              IF LOGICAL(LDT'CLASS'INDEX) THEN                 <<*LDT*>>43774000
                   @DCT := @DCT'HEAD + DCTH'DCT'BASE;          <<dctab>>43794000
                   J := 0;                                     <<dctab>>43796000
                     @DCT := @DCT + DCT'NEXT'ENTRY;            <<dctab>>43800000
$EDIT VOID=43810000                                            <<dctab>>43802000
                  LDT'INDEX :=                                 <<*LDT*>>43812000
                    DCT(DCT'FIRST'LDEV) * LDTSIZE;             <<dctab>>43813000
                  I := LDT'DEVICE'TYPE;                        <<*LDT*>>43814000
                BEGIN                                          <<*DVR*>>43837000
                DVR'INDEX := I * DVRSIZE;                      <<*DVR*>>43837100
                IF DVRDRTNUM = 0 THEN                          <<*DVR*>>43838000
                ELSE                                           <<*DVR*>>43850000
                  BEGIN                                        <<*DVR*>>43852000
                  LDT'INDEX := I * LDTSIZE;                    <<*DVR*>>43853000
                  INDEX := LDT'DEVICE'TYPE;                    <<*DVR*>>43854000
                  IF (0<=INDEX<=15) OR (24<=INDEX<=31) THEN    <<*DVR*>>43856000
                    BEGIN                                      <<*DVR*>>43860000
                    MESSAGE( M119, I);                         <<*DVR*>>43862000
                    ERRORS := TRUE;                            <<*DVR*>>43864000
                    END;                                       <<*DVR*>>43866000
                  END;                                         <<*DVR*>>43868000
                END;                                           <<*DVR*>>43869000
              BEGIN                                            <<*LDT*>>43873000
              LDT'INDEX := INDEX * LDTSIZE;                    <<*LDT*>>43874000
              DVR'INDEX := INDEX * DVRSIZE;                    <<*DVR*>>43875000
              IF DVRDRTNUM = DRTN AND DVRUNITNUM = UNITN THEN  <<*DVR*>>43876000
                TYPE2 := LDT'DEVICE'TYPE;                      <<*LDT*>>43880000
                   NOT ( TYPE = 16 << TERMINAL >> LAND         <<*LDT*>>43898000
                         TYPE2 = 16 << TERMINAL >>)            <<*LDT*>>43900000
             END;                                              <<*LDT*>>43931000
              IF TYPE = 16 << TERMINAL >> OR                   <<*LDT*>>43938000
                 TYPE = 32 << PRINTER >> AND                   <<*LDT*>>43940000
                 (SUBTYP=14 OR SUBTYP=15) THEN                 <<*LDT*>>43941000
                 LDTX'INDEX := LDEV * LDTXSIZE;                <<*LDTX>>43943000
                 BOARD := GETBOARDTYPE( DRTN);                 <<*DVR*>>43946000
$EDIT VOID=43958000                                            <<SYPTR>>43947000
                 LDTX(LDTX'INDEX+2) := BOARD;                  <<LYNX.>>43947100
                 IF BOARD = LYNX'BOARD OR BOARD = ADCC'MAIN OR <<SYPTR>>43948000
                    BOARD = ADCC'EXT THEN                      <<SYPTR>>43949000
                    MESSAGE(M132, LDEV, DRTN);                 <<*DVR*>>43964000
                    MESSAGE(M133, LDEV, DRTN);                 <<*DVR*>>43974000
                 IF BOARD = ADCC'MAIN OR                       <<SYPTR>>43980000
                    BOARD = ADCC'EXT THEN                      <<SYPTR>>43981000
                    LDTX'TERMID := BOARD;                      <<SYPTR>>43983000
                    IF LDTX'BAUD'RATE'CODE > 15 THEN           <<*LDTX>>43984000
$EDIT VOID=43986000                                            <<*LDTX>>43986000
                    IF UNITN <> 0 THEN                         <<*DVR*>>43996000
                      BEGIN                                    <<*DVR*>>44011000
                      DVR'INDEX := INDEX * DVRSIZE;            <<*DVR*>>44011100
                      IF DVRDRTNUM = DRTN                      <<*DVR*>>44012000
                        AND INDEX <> LDEV THEN                 <<*DVR*>>44014000
                      END;                                     <<*DVR*>>44023000
                    LDTX'TERMID := BOARD;                      <<SYPTR>>44035000
                    IF (LOGICAL(DRTN) LAND %7)                 <<*DVR*>>44036000
                        (LOGICAL(DRTN) LAND %770));            <<*DVR*>>44044000
          @DCT := @DCT'HEAD + DCTH'DCT'BASE;                   <<dctab>>44060000
          @DCT'B := @DCT &LSL(1);                              <<dctab>>44061000
          WHILE (I:=I+1) <= DCTH'NUM'DCT'ENTRIES DO            <<dctab>>44064000
$EDIT VOID=44068000                                            <<dctab>>44068000
              IF DCTB'CLASS'NAME = "DISC    " THEN             <<dctab>>44070000
                  NDISCDEV := DCT'NUM'DEVICES;                 <<dctab>>44074000
                  DISCLASS'X := @DCT - @DCTAB;                 <<DCLAS>>44076000
              DCT'SPOOL'QUEUES := 0;                           <<dctab>>44082000
              DCT'TERM'CLASS := 0;                             <<dctab>>44084000
              IF DCT'CLASS'ACC'TYPE = 31 << SERIAL DISC >>     <<dctab>>44085000
              THEN K := 0                                      <<dctab>>44085100
              ELSE K := DCT'ACCESS'TYPE;                       <<dctab>>44086000
$EDIT VOID=44087999                                            <<dctab>>44086001
$EDIT VOID=44088000                                            <<dctab>>44088000
$EDIT VOID=44096000                                            <<dctab>>44088001
              LDT'INDEX := DCT(DCT'FIRST'LDEV) * LDTSIZE;      <<dctab>>44099000
              DTYP :=LDT'DEVICE'TYPE;                          <<*LDT*>>44100000
              J := -1;                                         <<dctab>>44102000
              IF K = 0 << DIRECT ACCESS >> OR                  <<*LDT*>>44104000
                 K = 2 << IO'CONCURRENT >> THEN                <<*LDT*>>44105000
                WHILE (J:=J+1) < DCT'NUM'DEVICES DO            <<dctab>>44108000
                  BEGIN                                        <<*LDT*>>44109000
                  LDT'INDEX :=                                 <<*LDT*>>44109100
                    DCT(DCT'FIRST'LDEV + J) * LDTSIZE;         <<dctab>>44109200
                  LPDT'INDEX :=                                <<*LPDT>>44109300
                    DCT(DCT'FIRST'LDEV + J) * LPDTSIZE;        <<dctab>>44109400
                  IF LDT'ACCESS'TYPE <> K THEN                 <<*LDT*>>44110000
$EDIT VOID=44112000                                            <<*LDT*>>44112000
                    BEGIN  <<TYPE RANGES DIFFERENT>>           <<*LDT*>>44114000
                    MOVECLASS;                                 <<*LDT*>>44118000
                    MESSAGE( M122,,,,,CLASSNAME);              <<*LDT*>>44120000
                    ERRORS := TRUE;                            <<*LDT*>>44122000
                    GOTO NEXTINDEX;                            <<*LDT*>>44124000
                    END                                        <<*LDT*>>44126000
                  ELSE                                         <<*LDT*>>44128000
                    BEGIN                                      <<*LDT*>>44130000
                    IF DTYP <> LDT'DEVICE'TYPE THEN            <<*LDT*>>44132000
                      ALLSAME:=FALSE;                          <<*LDT*>>44134000
                    IF ACCTYPE=SDISC OR ACCTYPE=FDISC THEN     <<*LDT*>>44136000
                      BEGIN                                    <<*LDT*>>44138000
                      TYPE := LDT'DEVICE'TYPE;                 <<*LDT*>>44140000
$EDIT VOID=44142000                                            <<*LDT*>>44142000
                      SUBTYP := LPDT'SUBTYPE;                  <<*LPDT>>44144000
$EDIT VOID=44146000                                            <<*LPDT>>44146000
                      IF NOT SDISC'TYPE(TYPE,SUBTYP) THEN      <<*LDT*>>44150000
                        GOTO CLCOMER;                          <<*LDT*>>44152000
                      END;                                     <<*LDT*>>44154000
                    END;                                       <<*LDT*>>44156000
                  END;                                         <<*LDT*>>44157000
                WHILE (J:=J+1) < DCT'NUM'DEVICES DO            <<dctab>>44162000
                  LDT'INDEX :=                                 <<*LDT*>>44165000
                    DCT(DCT'FIRST'LDEV + J) * LDTSIZE;         <<dctab>>44165100
                  LDEVRANGE:=LDT'ACCESS'TYPE;                  <<*LDT*>>44166000
$EDIT VOID=44168000                                            <<*LDT*>>44168000
                  IF LDEVRANGE = 0 << DIRECT'ACCESS >> THEN    <<*LDT*>>44170000
                  IF (K = 1) << SERIAL'IN >>                   <<*LDT*>>44186000
                     AND (LDEVRANGE = 4)  << SERIAL'OUT >>     <<*LDT*>>44188000
                     OR (K = 4) << SERIAL'OUT >>               <<*LDT*>>44190000
                     AND ( LDEVRANGE = 1 ) << SERIAL'IN >>     <<*LDT*>>44192000
                     OR (K = 3) << IO'NONCONCURENT >>          <<*LDT*>>44194000
                     AND (LDEVRANGE <> 3) << IO'NONCONCUR >>   <<*LDT*>>44196000
                     AND (LDEVRANGE <> 2) << IO'CONCURRENT >>  <<*LDT*>>44198000
                  IF DTYP <> LDT'DEVICE'TYPE THEN              <<*LDT*>>44202000
                    ALLSAME:=FALSE;                            <<*LDT*>>44204000
                IF DCT'CLASS'ACC'TYPE <> K&LSL(3) AND          <<dctab>>44208000
$EDIT VOID=44216000                                            <<dctab>>44216000
                IF DCT'CLASS'ACC'TYPE = 16  <<TERMINAL>>       <<dctab>>44218000
                   AND ALLSAME THEN                            <<dctab>>44219000
                     DCT'TERM'CLASS := 1;                      <<dctab>>44219100
$EDIT VOID=44228000                                            <<dctab>>44220000
  NEXTINDEX:                                                   <<dctab>>44230000
              @DCT := @DCT + DCT'NEXT'ENTRY;                   <<dctab>>44232000
              @DCT'B := @DCT & LSL(1);                         <<dctab>>44234000
$EDIT VOID=44236000                                            <<dctab>>44236000
             MESSAGE(M102,COMM(DRTNUM));                       <<CONFD>>44246000
                DVR'INDEX := LDEV * DVRSIZE;                   <<*DVR*>>44283000
                DRTN := DVRDRTNUM;                             <<*DVR*>>44284000
                IF DRTN <> 0 AND DVRDSBIT = 0                  <<*DVR*>>44286000
$EDIT VOID=44288000                                            <<*DVR*>>44288000
                THEN IF DVRDRTNUM > COMM(DRTNUM)               <<CONFD>>44290000
                     OR DRTN > MAXDRT                          <<*DVR*>>44292000
                     THEN MESSAGE(M2411,LDEV,DRTN);            <<*DVR*>>44294000
          LDTX'INDEX := CONSOLELDEV * LDTXSIZE;                <<*LDTX>>44359000
          ELSE IF LDTX'BAUD'RATE'CODE = 0 THEN                 <<*LDTX>>44370000
          LDT'INDEX := SYSDISC * LDTSIZE;                      <<*LDT*>>44387000
          LPDT'INDEX := SYSDISC * LPDTSIZE;                    <<*LPDT>>44387100
            NOT SYSDISC'TYPE(LDT'DEVICE'TYPE,                  <<*LDT*>>44390000
                LPDT'SUBTYPE) OR                               <<*LPDT>>44392000
          DVR'INDEX := DVRSIZE;  << POINT TO LDEV 1 >>         <<*DVR*>>44403000
          IF DVRUNITNUM <> 0 THEN                              <<*DVR*>>44404000
$EDIT VOID=44528000                                            <<dctab>>44526000
$EDIT VOID=44616000                                            <<dctab>>44614000
         <<------------------------->>                         <<dctab>>44624010
         << SET POINTERS TO TABLES  >>                         <<dctab>>44624020
         <<------------------------->>                         <<dctab>>44624030
  PROCEDURE SETPOINTERS(CURRENTDL);                            <<dctab>>44624040
    VALUE CURRENTDL;                                           <<dctab>>44624050
    INTEGER CURRENTDL;   <<CURRENT UPPER LIMIT ON TABLES>>     <<dctab>>44624060
    COMMENT                                                    <<dctab>>44624070
      SETS POINTERS TO THE DEVICE TABLES BASED ON THEIR SIZES  <<dctab>>44624080
    AS FOUND IN THE CTAB0 TABLE;                               <<dctab>>44624090
      BEGIN                                                    <<dctab>>44624100
          TOS := CURRENTDL;                                    <<dctab>>44624110
          NVOL := COMM(HVOL');  << MVOL/HVOL >>                <<CONFD>>44624120
                                                               <<dctab>>44624130
          << MVOL MAY BE ZERO WHEN COMING FROM NON-PV SYSTEM>> <<dctab>>44624140
                                                               <<dctab>>44624150
          IF MVOL = 0 THEN MVOL := HVOL ELSE                   <<dctab>>44624160
          IF HVOL > MVOL THEN HVOL := MVOL;                    <<dctab>>44624170
          TOS := (MVOL+1) * VTABSIZE;                          <<dctab>>44624180
          ASSEMBLE(SUB,DUP);                                   <<dctab>>44624190
          @VTAB     := TOS;  <<PTR TO VOLUME TABLE>>           <<dctab>>44624200
          TTDTSIZE  := COMM(TTDTSIZE');                        <<CONFD>>44624210
          TOS       := TOS - TTDTSIZE;                         <<dctab>>44624220
          @TTDT     := S0;                                     <<dctab>>44624230
          DVCLSIZE  := COMM(DVCLSIZE');                        <<CONFD>>44624240
          TOS       := TOS - DVCLSIZE;                         <<dctab>>44624250
          @DCTAB    := S0;                                     <<dctab>>44624260
          TOS       := TOS - DCTHSIZE;                         <<DEVCO>>44624270
          @DCT'HEAD := S0;                                     <<dctab>>44624280
          @TCLASS   := S0;  << INITIALLY LENGTH ZERO >>        <<tclas>>44624281
          TOS       := TOS - COMM(CSTABSIZE);                  <<CONFD>>44624290
          @CSTAB := S0;                                        <<zrela>>44624300
          SET(DL);                                             <<zrela>>44624310
          PUSH(Z);                                             <<zrela>>44624320
          TOS := TOS + %15;                                    <<zrela>>44624330
          @DVRTAB := S0;                                       <<zrela>>44624340
          TOS := TOS + (MAXLDEV+1) * DVRSIZE;                  <<zrela>>44624350
          @LPDT := S0;                                         <<zrela>>44624360
          TOS := TOS + (MAXLDEV+1) * LPDTSIZE;                 <<zrela>>44624370
          @LDT := S0;                                          <<zrela>>44624380
          TOS := TOS + (MAXLDEV+1) * LDTSIZE;                  <<zrela>>44624390
          @LDTX := TOS;                                        <<zrela>>44624400
$EDIT VOID=44624430                                            <<zrela>>44624410
      END <<SETPOINTERS>>;                                     <<dctab>>44624440
$EDIT VOID=44702000                                            <<dctab>>44626000
     INTEGER                                                   <<*LDT*>>44773000
         LDT'INDEX,                                            <<*LPDT>>44773100
         LPDT'INDEX;                                           <<*LPDT>>44773200
     DOUBLE POINTER                                            <<csdec>>44773300
         DBLPTR;                                               <<csdec>>44773400
            LDT'INDEX := LDEV * LDTSIZE;                       <<*LDT*>>44900000
              LPDT'INDEX := LDEV * LPDTSIZE;                   <<*LPDT>>44906000
              IF LDT'DEVICE'TYPE = CSDEV17 THEN                <<*LDT*>>44926000
              @DBLPTR := @CSLDTXINSPEED;                       <<csdec>>44977000
              LDNTOA(DBLPTR,10,BINBUF(43));                    <<csdec>>44978000
              LPDT'INDEX := LDEV * LPDTSIZE;                   <<*LPDT>>44991000
              IF (LPDT'SUBTYPE MOD 4) = 0     << SWITCHED ? >> <<*LPDT>>44992000
                THEN SWTCHED:=TRUE                             <<*LPDT>>44993000
              ELSE IF 1 <= (LPDT'SUBTYPE MOD 4) <= 4           <<*LPDT>>44994000
                           << NON-SWITCHED >>                  <<*LPDT>>44994100
$EDIT VOID=44994200                                            <<*LPDT>>44994200
               AND SUPERVISED                                  <<*LPDT>>44995000
          IF SWTCHED THEN                                      <<*LPDT>>45002000
              BEGIN                                            <<*LDT*>>45017000
              LDT'INDEX := LDEV * LDTSIZE;                     <<*LDT*>>45017100
              LPDT'INDEX := LDEV * LPDTSIZE;                   <<*LPDT>>45017200
              IF CSDEV17 <= LDT'DEVICE'TYPE <=CSDEV19 THEN     <<*LDT*>>45018000
                IF LPDT'SUBTYPE=0 THEN                         <<*LPDT>>45020000
              END;                                             <<*LDT*>>45241000
              BEGIN                                            <<*LDT*>>45263000
              LDT'INDEX := LDEV * LDTSIZE;                     <<*LDT*>>45263100
              LPDT'INDEX := LDEV * LPDTSIZE;                   <<*LPDT>>45263200
              IF CSDEV17 <= LDT'DEVICE'TYPE <= CSDEV19 THEN    <<*LDT*>>45264000
                IF LPDT'SUBTYPE <> 0 THEN                      <<*LPDT>>45266000
                END;                                           <<*LDT*>>45403000
        LOGICAL ARRAY                                          <<*DVR*>>45440010
           DRIVW'NAME(0:3) = Q;                                <<*DVR*>>45440020
        BYTE ARRAY                                             <<*DVR*>>45440030
           DRIVB'NAME(*)   = DRIVW'NAME;                       <<*DVR*>>45440040
                                                               <<*LDT*>>45440100
        DEFINE TERMTYP      = (0:7)#;                          <<*LDT*>>45440200
                                                               <<*LDT*>>45440300
        LOGICAL WARN;                                          <<00TT3>>45441021
$EDIT                                                          <<00TT3>>45441022
                TERMTYPE,                                      <<*LDT*>>45441060
                LDT'INDEX,                                     <<*DVR*>>45441061
                LPDT'INDEX,                                    <<*LDTX>>45441062
                LDTX'INDEX,                                    <<*DVR*>>45441063
                DVR'INDEX;                                     <<*DVR*>>45441064
        INTEGER POINTER                                        <<dctab>>45441066
            DCT;                                               <<dctab>>45441067
        BYTE POINTER                                           <<dctab>>45441068
            DCT'B;                                             <<dctab>>45441069
        DOUBLE POINTER                                         <<csdec>>45441070
            DBLPTR;                                            <<csdec>>45441080
        INTEGER POINTER                                        <<dctab>>45441200
            DEST,                 << DESTINATION OF MOVE     >><<dctab>>45441210
            SOURCE;               << SOURCE OF MOVE          >><<dctab>>45441220
                                                               <<dctab>>45441230
        INTEGER                                                <<dctab>>45441240
            COUNT;                << NUMBER OF WORDS TO MOVE >><<dctab>>45441250
          TCLASSINCR := 2;  << MAKE ROOM FOR HEADER  >>        <<tclas>>45457998
          MOVEDLTABLES;                                        <<tclas>>45457999
          TCLASS(1)    := 2;  <<TEMPCASS LENGTH IS TWO WORDS >><<tclas>>45460000
          GETNEWVAL(M2010,COMM(DRTNUM),LOWESTDRT,MAXDRT);      <<CONFD>>45468000
  REQLDEV:LDEV := GETVAL(M2011,0,999,2);  <<LOGICAL DEVICE #?>><<LIMIT>>45470000
              LDT'INDEX := LDEV * LDTSIZE;                     <<*LDT*>>45543001
              LPDT'INDEX := LDEV * LPDTSIZE;                   <<*LPDT>>45543002
              DVR'INDEX := LDEV * DVRSIZE;                     <<misc*>>45543003
              LDTX'INDEX := LDEV * LDTXSIZE;                   <<misc*>>45543004
              IF LDT'DEVICE'TYPE = 16 << TERMINAL >> OR        <<*LDT*>>45543005
                 LDT'DEVICE'TYPE = 32 << PRINTER >> AND        <<*LDT*>>45543010
                 (LPDT'SUBTYPE = 14 OR                         <<*LPDT>>45543015
                 LPDT'SUBTYPE = 15) THEN                       <<*LPDT>>45543020
$EDIT VOID=45546000                                            <<misc*>>45546000
$EDIT VOID=45552000                                            <<zrela>>45552000
$EDIT VOID=45562000                                            <<zrela>>45554000
$EDIT VOID=45565999                                            <<misc*>>45563000
$EDIT VOID=45566000                                            <<misc*>>45566000
$EDIT VOID=45574000                                            <<misc*>>45566001
              TYPE := LDT'DEVICE'TYPE;                         <<misc*>>45575000
              DVRTAB(DVR'INDEX) := 0;                          <<misc*>>45576000
              MOVE DVRTAB(DVR'INDEX + 1) :=                    <<misc*>>45578000
                   DVRTAB(DVR'INDEX),(DVRSIZE-1);              <<misc*>>45580000
$EDIT VOID=45584000                                            <<misc*>>45582000
              LPDT( LPDT'INDEX ) := 0;                         <<misc*>>45585000
              MOVE LPDT(LPDT'INDEX + 1) :=                     <<misc*>>45586000
$EDIT VOID=45594000                                            <<*LPDT>>45586001
                   LPDT(LPDT'INDEX),(LPDTSIZE-1);              <<misc*>>45587000
                                                               <<*LPDT>>45588000
              LDT(LDT'INDEX) := 0;                             <<misc*>>45596000
              MOVE LDT(LDT'INDEX + 1) :=                       <<misc*>>45598000
                   LDT(LDT'INDEX),(LDTSIZE - 1);               <<misc*>>45600000
              LDTX(LDTX'INDEX) := 0;                           <<misc*>>45602000
              MOVE LDTX(LDTX'INDEX + 1) :=                     <<misc*>>45604000
                   LDTX(LDTX'INDEX),(LDTXSIZE - 1);            <<misc*>>45606000
$EDIT VOID=45610000                                            <<misc*>>45610000
              IF CSDEV17<=TYPE<=CSDEV19 THEN                   <<misc*>>45612000
$EDIT VOID=45666000                                            <<misc*>>45666000
              REMTEMPCLASS(LDEV);                              <<tclas>>45668100
$EDIT VOID=45776000                                            <<tclas>>45670000
$EDIT VOID=45810000                                            <<zrela>>45796000
              HLDEV := LDEV                                    <<zrela>>45812000
$EDIT VOID=45814000                                            <<zrela>>45814000
          BEGIN                                                <<misc*>>45816100
            LPDT'INDEX := LDEV * LPDTSIZE;                     <<misc*>>45816200
            LPDT(LPDT'INDEX) := 0;                             <<misc*>>45816300
            MOVE LPDT(LPDT'INDEX + 1) :=                       <<misc*>>45816400
                 LPDT(LPDT'INDEX),(LPDTSIZE - 1);              <<misc*>>45816500
          END;                                                 <<misc*>>45818000
          DVR'INDEX := LDEV * DVRSIZE;                         <<*DVR*>>45820000
          LDT'INDEX := LDEV * LDTSIZE;                         <<*LDT*>>45822000
          LDTX'INDEX := LDEV * LDTXSIZE;                       <<*LDTX>>45824000
          LPDT'INDEX := LDEV * LPDTSIZE;                       <<*LPDT>>45826000
$EDIT VOID=45830000                                            <<*DVR*>>45830000
            DVRDSBIT := 1;                                     <<*DVR*>>45836000
            DVRMASTERLDEV := DRTN;                             <<*DVR*>>45838000
          ELSE DVRDRTNUM := DRTN;                              <<*DVR*>>45842000
          DVRUNITNUM := UNIT;                                  <<*DVR*>>45844000
          DVRCHANNUM := GETVAL(M2014,0,4,1);<<CHAN>>           <<*DVR*>>45846000
          LDT'AVAIL'TO'SYS := 1; <<BELONGS TO FILE SYSTEM>>    <<*LDT*>>45848000
          LDT'DEVICE'TYPE := TYPE;  << PUT TYPE IN LDT >>      <<*LDT*>>45866000
            LDT'CS'DEVICE := 1;                                <<*LDT*>>45872000
          LPDT'SUBTYPE := SUBTYP;                              <<*LPDT>>45910000
          IF TYPE= 16 << TERMINAL >> OR                        <<*LDT*>>45912000
            TYPE = 32 << PRINTER >> AND                        <<*LDT*>>45914000
            LDTX'TDT'OFFSET := -1;   <<OFFSET INTO TTDT>>      <<*LDTX>>45921035
            DVR'INDEX := LDEV * DVRSIZE;                       <<*DVR*>>45921615
            LDT'INDEX := LDEV * LDTSIZE;                       <<*LDT*>>45921620
            LDTX'INDEX := LDEV * LDTXSIZE;                     <<*LDTX>>45921625
            LPDT'INDEX := LDEV * LPDTSIZE;                     <<*LPDT>>45921630
            LDT'DFLT'TERM'TYPE := TERMTYPE;                    <<*LDT*>>45921635
  SPEEDOK:  LDTX'BAUD'RATE'CODE := SPEEDCDE ;                  <<*LDTX>>45972000
            LPDT'INDEX := LDEV * LPDTSIZE;                     <<*LPDT>>46041000
            IF 3 <= (LPDT'SUBTYPE MOD 4) <= 4 THEN GO SPEEDCH; <<*LPDT>>46042000
                   << HARDWIRED >>                             <<*LPDT>>46043000
$EDIT VOID=46043100                                            <<*LPDT>>46043100
            IF NOT(0 <= (LPDT'SUBTYPE MOD 4) <= 2) << MODEM >> <<*LPDT>>46044000
              OR (LPDT'SUBTYPE MOD 4) = 0 THEN << OR SWITCHED>><<*LPDT>>46045000
            @DBLPTR := @CSLDTXINSPEED;                         <<csdec>>46154000
            DBLPTR := DS1;                                     <<csdec>>46155000
            @DBLPTR := @CSLDTXOUTSPEED;                        <<csdec>>46156000
            DBLPTR := TOS;                                     <<csdec>>46157000
          LDT'RECORD'WIDTH := GETVAL(M2019,1,255,1);           <<*LDT*>>46172000
$EDIT VOID=46174000                                            <<*LDT*>>46174000
          IF 0 <= S0 <= 999 THEN GO SETODEV;                   <<LIMIT>>46184000
          IF S0=0 THEN     <<NO SUCH CLASS>>                   <<tclas>>46198000
             PUTINTEMPCLASS(DEVCLASS,LDEV);                    <<tclas>>46199000
          LDT'CLASS'INDEX := 1;                                <<*LDT*>>46200000
  SETODEV:LDT'DFLT'OUT'DEV := TOS;                             <<*LDT*>>46202000
          LPDT'JOB'ACCEPT := LGETYESNO(M2021);                 <<*LPDT>>46206000
          LPDT'DATA'ACCEPT := LGETYESNO(M2022);                <<*LPDT>>46210000
          LPDT'INTERACTIVE := LGETYESNO(M2023);                <<*LPDT>>46214000
          LPDT'DUPLICATIVE := LGETYESNO(M2024);                <<*LPDT>>46218000
            LDTX'SEEK'AHEAD := LGETYESNO(M2029); <<SEEKAHEAD?>><<*LDTX>>46224000
          IF 8 <= LDT'DEVICE'TYPE <= 15 THEN                   <<*LDT*>>46232000
   INONLY:  LDT'SPOOL'STATE := 1   << INPUT SPOOLED >>         <<*LDT*>>46234000
          ELSE                                                 <<*LDT*>>46236000
            IF 32 <= LDT'DEVICE'TYPE <= 39 THEN                <<*LDT*>>46237000
   OUTONLY:      LDT'SPOOL'STATE := 2; << OUTPUT SPOOLED >>    <<*LDT*>>46240000
                 LDT'SPOOL'QUEUES := 1;                        <<*LDT*>>46242000
            ELSE IF 16 <= LDT'DEVICE'TYPE <= 31 THEN           <<*LDT*>>46246000
                ELSE DVRCORERES := 1;                          <<*DVR*>>46280000
          GETSTR(DRIVB'NAME,@REQDVR,1,8);  <<GET DRIVER NAME>> <<*DVR*>>46286000
          MOVE DVRNAME := DRIVW'NAME,(4);                      <<*DVR*>>46287000
     IF (LPDT'SUBTYPE MOD 4) = 0 THEN    << SWITCHED ? >>      <<*LPDT>>46292000
     IF CONTENTION OR LDT'DEVICE'TYPE = CSDEV17 THEN           <<*LDT*>>46354000
        IF (LPDT'SUBTYPE MOD 4) = 0 THEN   << SWITCHED ? >>    <<*LPDT>>46360000
          @DCT := @DCT'HEAD + DCTH'DCT'BASE;                   <<dctab>>46624000
          @DCT'B := @DCT & LSL(1);                             <<dctab>>46625000
          WHILE (I:=I+1) < DCTH'NUM'DCT'ENTRIES DO             <<dctab>>46628000
              IF DCTB'CLASS'NAME = DEVCLASS,(8) THEN           <<dctab>>46632000
              @DCT := @DCT + DCT'NEXT'ENTRY;                   <<dctab>>46636000
              @DCT'B := @DCT & LSL(1);                         <<dctab>>46638000
$EDIT VOID=46640000                                            <<dctab>>46640000
$EDIT VOID=46642000                                            <<dctab>>46642000
          DCTABINCR := 7; <<MAKE ROOM FOR NEW ENTRY>>          <<dctab>>46646000
          @DCT := @DCT - 7;                                    <<dctab>>46649000
          @DCT'B := @DCT & LSL(1);                             <<dctab>>46649100
          MOVE DCTB'CLASS'NAME := DEVCLASS,(8),2;<<CLASS NAME>><<dctab>>46650000
          DCT'CYCLICAL'PTR := 1;                               <<dctab>>46652000
$EDIT VOID=46654000                                            <<dctab>>46654000
             DCT'CLASS'ACC'TYPE:= 31;<< SERIAL DISC >>         <<dctab>>46666000
             DCT'CLASS'ACC'TYPE := 7;<< FOREIGN DISC >>        <<dctab>>46688000
               DCT'CLASS'ACC'TYPE := TYPE;                     <<dctab>>46696000
$EDIT VOID=46700000                                            <<dctab>>46700000
             DCT'CLASS'ACC'TYPE:=LDT'DEVICE'TYPE;              <<dctab>>46706000
          DCT'NUM'DEVICES := 1;                                <<dctab>>46708000
          DCT(DCT'FIRST'LDEV) := LDEV;                         <<dctab>>46710000
$EDIT VOID=46712000                                            <<dctab>>46712000
$EDIT VOID=46714000                                            <<dctab>>46714000
$EDIT VOID=46716000                                            <<dctab>>46716000
          DVCLSIZE := DVCLSIZE + 7;                            <<dctab>>46718000
          DCTH'NUM'DCT'ENTRIES := DCTH'NUM'DCT'ENTRIES + 1;    <<dctab>>46720000
          DCTH'SEGMENT'SIZE := DCTH'SEGMENT'SIZE + 7;          <<dctab>>46721000
          DCTH'TDT'BASE := DCTH'TDT'BASE + 7;                  <<dctab>>46721100
          CKTEMPCLASS(DCTB'CLASS'NAME);                        <<tclas>>46721200
  ENTEXST:I := -1;                                             <<dctab>>46724000
$EDIT VOID=46726000                                            <<dctab>>46726000
          WHILE (I:=I+1) <= DCT'NUM'DEVICES DO                 <<dctab>>46728000
          IF DCT(DCT'FIRST'LDEV + I) = LDEV THEN               <<dctab>>46730000
$EDIT VOID=46734000                                            <<dctab>>46734000
$EDIT VOID=46744000                                            <<dctab>>46744000
$EDIT VOID=46746000                                            <<dctab>>46746000
          DCTABINCR := 1;       <<ADD 1 WORD>>                 <<dctab>>46748000
          MOVEDLTABLES;                                        <<dctab>>46750000
                                                               <<dctab>>46751000
          << WE STILL NEED TO ADJUST THE ENTRIES INSIDE THE  >><<dctab>>46751100
          << DCTAB TO MAKE THE APPROPRIATE HOLE FOR THE NEW  >><<dctab>>46751200
          << LDEV NUMBER. WE WILL DO THIS NOW.               >><<dctab>>46751300
                                                               <<dctab>>46751400
          @DCT := @DCT - 1;  <<COUNT WRD HAS MOVED BY 1 WORD >><<dctab>>46752000
          @DEST := @TTDT - 1;                                  <<dctab>>46753000
          @SOURCE := @DEST - 1;                                <<dctab>>46753100
          COUNT := (@SOURCE - @DCT(DCT'NEXT'ENTRY)) + 1;       <<dctab>>46753200
          MOVE DEST := SOURCE,(-COUNT);                        <<dctab>>46753300
                                                               <<dctab>>46753400
          DCT(DCT'NEXT'ENTRY) := LDEV;                         <<dctab>>46754000
          DVCLSIZE := DVCLSIZE + 1;                            <<dctab>>46756000
          DCT'NUM'DEVICES := DCT'NUM'DEVICES + 1;              <<dctab>>46758000
          DCTH'SEGMENT'SIZE := DCTH'SEGMENT'SIZE + 1;          <<dctab>>46759000
          DCTH'TDT'BASE := DCTH'TDT'BASE + 1;                  <<dctab>>46760000
$EDIT VOID=46762000                                            <<dctab>>46762000
$EDIT VOID=46764000                                            <<dctab>>46764000
$EDIT VOID=46766000                                            <<dctab>>46766000
$EDIT VOID=46768000                                            <<dctab>>46768000
$EDIT VOID=46770000                                            <<dctab>>46770000
$EDIT VOID=46772000                                            <<dctab>>46772000
$EDIT VOID=46774000                                            <<dctab>>46774000
$EDIT VOID=46776000                                            <<dctab>>46776000
          DETERMCTYP(@SAMEPLACE,DCT,FALSE);                    <<dctab>>46778000
  PUTINCS:IF CSDEV17 <= LDT'DEVICE'TYPE <= CSDEV19 THEN        <<*LDT*>>46782000
            BEGIN                                              <<*DVR*>>46823000
            DVR'INDEX := I * DVRSIZE;                          <<*DVR*>>46823100
            IF DVRDRTNUM <> 0 OR  <<COUNT USED DRTS>>          <<*DVR*>>46824000
               DVRDSBIT = 1 THEN J:=J+1;                       <<*DVR*>>46826000
            END;                                               <<*DVR*>>46827000
$EDIT VOID=46836000                                            <<LIMIT>>46828000
          GETNEWVAL(M2352,CTAB0(MAXSPOOLF),0,1023-J);          <<LIMIT>>46840000
          IF CTAB0(MAXSPOOLF) > (1023-J) THEN                  <<LIMIT>>46842000
            I := ASCII(1023-J,BINBUF(3));                      <<LIMIT>>46858000
$EDIT                                                          <<00TT3>>46873771
            LDT'INDEX := LDEV * LDTSIZE;                       <<*LDT*>>46873989
            LPDT'INDEX := LDEV * LPDTSIZE;                     <<*LPDT>>46873990
            IF NOT (LDT'DEVICE'TYPE = 16 << TERMINAL >> LOR    <<*LDT*>>46873991
                   LDT'DEVICE'TYPE = 32 << PRINTER >> LAND     <<*LDT*>>46874000
                   (LPDT'SUBTYPE=14 LOR                        <<*LPDT>>46874010
                    LPDT'SUBTYPE=15)) THEN                     <<*LPDT>>46874020
            LDTX'INDEX := LDEV * LDTXSIZE;                     <<*LDTX>>46874131
            INDEX := LDTX'TDT'OFFSET;                          <<*LDTX>>46874140
ADDNAME:                                                       <<00TT3>>46874420
$EDIT                                                          <<00TT3>>46874430
$EDIT                                                          <<00TT3>>46874720
            BEGIN                                              <<*LDT*>>46903000
            LDT'INDEX := K * LDTSIZE;                          <<*LDT*>>46903100
            IF LOGICAL(LDT'CLASS'INDEX) THEN                   <<*LDT*>>46904000
              BEGIN <<OUTPUT DEVICE IS CLASS>>                 <<*LDT*>>46906000
              TOS := LDT'DFLT'OUT'DEV;                         <<*LDT*>>46908000
              IF S0=I THEN                                     <<*LDT*>>46910000
                BEGIN <<OUTPUT DEVICE IS DELETED CLASS>>       <<*LDT*>>46912000
                LDT'DFLT'OUT'DEV := 0;                         <<*LDT*>>46914000
                PUTINTEMPCLASS(DEVCLASS,K);                    <<tclas>>46916000
                END                                            <<*LDT*>>46918000
              ELSE                                             <<*LDT*>>46920000
                IF S0>I THEN LDT'DFLT'OUT'DEV:=S0-1;           <<*LDT*>>46921000
              DEL;                                             <<*LDT*>>46922000
              END;                                             <<*LDT*>>46924000
            END;                                               <<*LDT*>>46925000
              GO TO REQNCL;  << TRY AGAIN >>                   <<dctab>>46970000
          @DCT := @DCT'HEAD + DCTH'DCT'BASE;                   <<dctab>>46984000
          @DCT'B := @DCT & LSL(1);                             <<dctab>>46985000
          WHILE (J:=J+1) < DCTH'NUM'DCT'ENTRIES DO             <<dctab>>46988000
            IF DCTB'CLASS'NAME = DEVCLASS,(8) THEN GO OLDENT;  <<dctab>>46992000
            @DCT := @DCT + DCT'NEXT'ENTRY;                     <<dctab>>46994000
            @DCT'B := @DCT & LSL(1);                           <<dctab>>46996000
$EDIT VOID=46998000                                            <<dctab>>46998000
$EDIT VOID=47000000                                            <<dctab>>47000000
          DCTABINCR := DCT'FIRST'LDEV + I;                     <<dctab>>47004000
          @DCT := @DCT - DCTABINCR;                            <<dctab>>47006000
          @DCT'B := @DCT & LSL(1);                             <<dctab>>47008000
          MOVEDLTABLES;                                        <<dctab>>47010000
          MOVE DCTB'CLASS'NAME := DEVCLASS,(8);                <<dctab>>47012000
          DCT'CYCLICAL'PTR := 1;                               <<dctab>>47014000
          DCT'CLASS'ACC'TYPE := 0;                             <<dctab>>47016000
          DCT'NUM'DEVICES := I;                                <<dctab>>47018000
          TOS := @DCT(DCT'FIRST'LDEV);                         <<dctab>>47020000
$EDIT VOID=47022000                                            <<dctab>>47022000
$EDIT VOID=47024000                                            <<dctab>>47024000
            PS0 := IAS0(X);                                    <<dctab>>47032000
$EDIT VOID=47038000                                            <<dctab>>47038000
$EDIT VOID=47050000                                            <<dctab>>47040000
          DVCLSIZE := DVCLSIZE + I + DCT'FIRST'LDEV;           <<dctab>>47052000
          DCTH'SEGMENT'SIZE := DCTH'SEGMENT'SIZE + I +         <<dctab>>47054000
                                DCT'FIRST'LDEV;                <<dctab>>47055000
          DCTH'NUM'DCT'ENTRIES := DCTH'NUM'DCT'ENTRIES + 1;    <<dctab>>47056000
          DCTH'TDT'BASE := DCTH'TDT'BASE + I + DCT'FIRST'LDEV; <<dctab>>47058000
          DETERMCTYP(@REQLOC,DCT,TRUE); <<DETERMINE CLASS TP>> <<dctab>>47060000
          CKTEMPCLASS(DCTB'CLASS'NAME);                        <<tclas>>47061000
  OLDENT:                   <<CLASS ALREADY EXISTED>>          <<dctab>>47064000
          K := -I;                                             <<dctab>>47066000
          WHILE (K:=K+1) <= 0 DO                               <<dctab>>47068000
            M := -1;                                           <<dctab>>47072000
            WHILE (M:=M+1) <= DCT'NUM'DEVICES DO               <<dctab>>47074000
              IF IAS0(K) = DCT(DCT'FIRST'LDEV + M) THEN        <<dctab>>47076000
                TOS := I;                                      <<dctab>>47081000
                ASSEMBLE( SUBS 0 );                            <<dctab>>47082000
$EDIT VOID=47084000                                            <<dctab>>47084000
$EDIT VOID=47096000                                            <<dctab>>47096000
          DCTABINCR := I;                                      <<dctab>>47098000
                                                               <<dctab>>47100010
          << WE STILL NEED TO ADJUST THE ENTRIES INSIDE THE  >><<dctab>>47100020
          << DCTAB TO MAKE THE APPROPRIATE HOLE FOR THE NEW  >><<dctab>>47100030
          << LDEV NUMBER. WE WILL DO THIS NOW.               >><<dctab>>47100040
                                                               <<dctab>>47100050
          @DCT := @DCT - I;  <<COUNT WRD HAS MOVED BY I WORDS>><<dctab>>47100060
          @DCT'B := @DCT & LSL(1);                             <<dctab>>47100061
          @DEST := @TTDT - 1;                                  <<dctab>>47100070
          @SOURCE := @DEST - I;                                <<dctab>>47100080
          COUNT := (@SOURCE - @DCT(DCT'NEXT'ENTRY)) + 1;       <<dctab>>47100090
          MOVE DEST := SOURCE,(-COUNT);                        <<dctab>>47100100
                                                               <<dctab>>47100110
$EDIT VOID=47128000                                            <<dctab>>47102000
          TOS := @DCT(DCT'NEXT'ENTRY);                         <<dctab>>47129000
$EDIT VOID=47132000                                            <<dctab>>47132000
            PS0 := IAS0(X);                                    <<dctab>>47138000
          DCT'NUM'DEVICES := DCT'NUM'DEVICES + I;              <<dctab>>47144000
          DCTH'SEGMENT'SIZE := DCTH'SEGMENT'SIZE + I;          <<dctab>>47145000
          DCTH'TDT'BASE := DCTH'TDT'BASE + I;                  <<dctab>>47146000
          DVCLSIZE := DVCLSIZE + I;                            <<TSIZE>>47146100
          TOS := I + 1;                                        <<dctab>>47147000
   UPDODEV:                                                    <<tclas>>47156000
          CLEAN'TCLASSES;                                      <<tclas>>47158000
$EDIT VOID=47264000                                            <<tclas>>47160000
  REQADVRC:IF COMM(NUMADVRS)>0 THEN                            <<CONFD>>47272000
            CSINDX := 0;                                       <<*DVR*>>47278000
            WHILE(I:=I+1)<COMM(NUMADVRS) DO                    <<CONFD>>47280000
              WHILE(J:=J+1)<=COMM(DRTNUM) DO                   <<CONFD>>47286000
$EDIT VOID=47290000                                            <<*DVR*>>47290000
                DVR'INDEX := J * DVRSIZE;                      <<*DVR*>>47292000
                IF COMPARE'WORDS(CSDVR(CSINDX),DVRNAME,4) THEN <<*DVR*>>47294000
$EDIT VOID=47298000                                            <<*DVR*>>47298000
$EDIT VOID=47300000                                            <<*DVR*>>47300000
$EDIT VOID=47302000                                            <<*DVR*>>47302000
                  MOVE CSDVR(CSINDX) := CSDVR(CSINDX+4),       <<*DVR*>>47304000
                        (COMM(NUMADVRS) - (I+1))*CSDVRSIZE;    <<CONFD>>47305000
                  COMM(X) := COMM(NUMADVRS)-1;                 <<CONFD>>47306000
              CSINDX := CSINDX + 4;  << NEXT CS DRIVER >>      <<*DVR*>>47316000
          IF COMM(NUMADVRS)>0 THEN                             <<CONFD>>47324000
INTEGER I,        << WHILE LOOP COUNTER - DTT ENTRY # >>       <<*LDT*>>47784000
    LDT'INDEX,                                                 <<*LPDT>>47785000
    LPDT'INDEX;                                                <<*LPDT>>47785100
LDT'INDEX := LDEV * LDTSIZE;                                   <<*LDT*>>47801000
LPDT'INDEX := LDEV * LPDTSIZE;                                 <<*LPDT>>47801100
TYPE := LDT'DEVICE'TYPE;                                       <<*LDT*>>47802000
STYPE := LPDT'SUBTYPE;                                         <<*LPDT>>47804000
IF TYPE = 0 << MH DISC >> OR TYPE = 1 << FH DISC >> THEN       <<*LDT*>>47820000
INTEGER I,             << WHILE LOOP COUNTER - DTT ENTRY # >>  <<*LDT*>>47932000
    LDT'INDEX,                                                 <<*LPDT>>47933000
    LPDT'INDEX;                                                <<*LPDT>>47933100
LDT'INDEX := LDEV * LDTSIZE;                                   <<*LDT*>>47941000
LPDT'INDEX := LDEV * LPDTSIZE;                                 <<*LPDT>>47942000
TYPE := LDT'DEVICE'TYPE;                                       <<*LDT*>>47944000
STYPE := LPDT'SUBTYPE;                                         <<*LPDT>>47946000
  IF TYPE = 0 << MH DISC >> OR TYPE = 1 << FH DISC >> THEN     <<*LDT*>>48038000
   IF TYPE = 0 << MH DISC >> OR TYPE = 1 << FH DISC >> THEN    <<*LDT*>>48926000
   ELSE IF TYPE = 3 << CS80 DEVICE >> THEN                     <<*LDT*>>48936000
   DTEMP2 = DTEMP+1,    << SECOND WORD OF STATUS RETURN >>     <<*LDT*>>49022000
   LDT'INDEX,                                                  <<*LPDT>>49023000
   LPDT'INDEX;                                                 <<*LPDT>>49023100
LDT'INDEX := LDEV * LDTSIZE;                                   <<*LDT*>>49027000
LPDT'INDEX := LDEV * LPDTSIZE;                                 <<*LPDT>>49027100
   LDT'ACCESS'TYPE = 0 << DIRECT'ACCESS >> THEN                <<*LDT*>>49030000
      TYPE := LDT'DEVICE'TYPE;                                 <<*LDT*>>49054000
      SUBTYP := LPDT'SUBTYPE;                                  <<*LPDT>>49056000
   INDEX,                  << INDEX INTO SPARE'TABLE'B >>      <<*LPDT>>49730000
   LPDT'INDEX;             << INDEX INTO LPDT          >>      <<*LPDT>>49731000
LPDT'INDEX := LDEV * LPDTSIZE;                                 <<*LPDT>>49881000
SUBTYP := LPDT'SUBTYPE;                                        <<*LPDT>>49882000
        INTEGER                                                <<*LDT*>>50039000
            LDT'INDEX,                                         <<*LPDT>>50039100
            LPDT'INDEX;                                        <<*LPDT>>50039200
          LDT'INDEX := LDEV * LDTSIZE;                         <<*LDT*>>50041000
          LPDT'INDEX := LDEV * LPDTSIZE;                       <<*LPDT>>50041100
          TYPE := LDT'DEVICE'TYPE;                             <<*LDT*>>50042000
          SUBTYP := LPDT'SUBTYPE;                              <<*LPDT>>50044000
   LDEV,       << LOGICAL DEVICE NO. >>                        <<*LDT*>>50294000
   LDT'INDEX;                                                  <<*LDT*>>50295000
      LDT'INDEX := LDTSIZE;                                    <<*LDT*>>50337000
      TYPE := LDT'DEVICE'TYPE;                                 <<*LDT*>>50338000
      IF TYPE = 0 << MH DISC >> OR TYPE = 1 << FH DISC >> THEN <<*LDT*>>50342000
      ELSE IF TYPE = 3 << CS80 DEVICE >> THEN                  <<*LDT*>>50348000
$EDIT VOID=50832000                                            <<06259>>50362000
PROCEDURE BUILD'VDSMTAB;                                       <<06259>>50363000
                                                               <<06259>>50364000
COMMENT:  THIS PROCEDURE BUILDS THE 0 ENTRY, AND AN ENTRY      <<06259>>50366000
FOR EACH SYSTEM VOLUME HAVING THE VDS ATTRIBUTE IN THE         <<06259>>50368000
VDSMTAB.  DELETED TRACKS ARE REMOVED FROM VIRTUAL MEMORY       <<06259>>50370000
BY MAKING THEM UNAVAILABLE IN THE APPROPRIATE BITMAP.          <<06259>>50372000
;                                                              <<06259>>50374000
BEGIN                                                          <<06259>>50376000
DOUBLE  FSECT,         << 1ST SECTOR OF BAD TRACK >>           <<06259>>50378000
        LSECT,         << LAST   "    "    "      "   >>       <<06259>>50380000
        VDSLEN,        << VIRTUAL MEMORY LENGTH IN SECTORS >>  <<06259>>50382000
        VDSLEN'PAGES,  << "      "      "     "   PAGES >>     <<06259>>50384000
        VDSTART,       << STARTING SECTOR OF VIRTUAL MEM. >>   <<06259>>50386000
        VDSTOP;        << LAST SECTOR OF V.M. >>               <<06259>>50388000
                                                               <<06259>>50390000
LOGICAL LDEV,          << LOGICAL DEVICE NUMBER >>             <<06259>>50392000
        TYPE,          << DISC TYPE >>                         <<06259>>50394000
        STYPE,         << DISC SUB TYPE >>                     <<06259>>50396000
        VOLUME,        << VOLUME NUMBER OF DISC >>             <<06259>>50398000
        TRACKLEN,      << LENGTH OF 1 TRACK ON THIS DISC >>    <<06259>>50400000
        PAGE,          << PAGE BEING REMOVED FROM BITMAP >>    <<06259>>50402000
        FPAGE,         << 1ST PAGE TO BE "     "    "    >>    <<06259>>50404000
        LPAGE,         << LAST  "   "  " "     "    "    >>    <<06259>>50405000
        LOGON1'BAD     := FALSE,                               <<06259>>50408000
        LOGON2'BAD     := FALSE,                               <<06259>>50410000
        CURR'VOL'MAP,  << OFFSET TO CURRENT VOLUME'S BIT MAP>> <<06259>>50411000
        BMLENGTH,      << BIT MAP LENGTH >>                    <<06259>>50412000
        ENTRYSIZE,     << VDSMTAB VOLUME ENTRY SIZE >>         <<06259>>50414000
        SYSENTRY,      << SYS DB REL. ADDR FOR LDEV1 VSMT ->>  <<06259>>50416000
        SYSMAP,        << ENTRY AND BITMAP.                >>  <<06259>>50418000
        VDSLEN1        =  VDSLEN,                              <<06259>>50420000
        VDSLEN2        =  VDSLEN+1,                            <<06259>>50422000
        VDSTART1       =  VDSTART,                             <<06259>>50423000
        VDSTART2       =  VDSTART+1;                           <<06259>>50424000
                                                               <<06259>>50425000
POINTER VDSMTAB = VDSMTABIX;                                   <<06259>>50426000
                                                               <<*LDT*>>50426100
INTEGER                                                        <<*LDT*>>50426200
    LDT'INDEX,                                                 <<*LPDT>>50426300
    LPDT'INDEX;                                                <<*LPDT>>50426400
                                                               <<06259>>50427000
ARRAY VDSENTRY(0:15); <<ARRAY FOR BUILDING VOLUME ENTRIES>>    <<06259>>50429000
                                                               <<06259>>50430000
  INITTABLE(BMOFFSET, 1, BANK0ABOVE, TRUE,                     <<06259>>50432000
              VDSMDSTN, SYSVDSMTAB);                           <<06259>>50433000
  << GOT SPACE FOR ENTRY 0, NOW GET SPACE FOR EACH   >>        <<06259>>50434000
  << VOLUME AS THEY ARE FOUND.                       >>        <<06259>>50436000
  << SINCE WE DON'T YET KNOW THE SIZE OF VDSMTAB THE DST     >><<06259>>50442000
  << ENTRY WILL NEED TO BE CORRECTED AT END OF THIS PROCEDURE>><<06259>>50444000
                                                               <<06259>>50446000
<< SET UP ENTRY 0 >>                                           <<06259>>50448000
  VDSMTAB(STARTENTRYINXWORD) := BMOFFSET;                      <<06259>>50450000
  VDSMTAB(VMPAGESIZEWORD) := NWORDPAGE;                        <<06259>>50452000
  VDSMTAB(SECTPERVMPAGEWORD) := NSECTPAGE;                     <<06259>>50454000
  VDSMTAB(OFFSETTOBMWORD) := BMOFFSET;                         <<06259>>50456000
  VDSMTAB(TOTALVMPAGESWORD) := 0;  << # PAGES IN USE >>        <<06259>>50458000
                                                               <<06259>>50460000
<< MAKE VDSMTAB ENTRY FOR EACH VMS VOLUME >>                   <<06259>>50462000
<< AND CHECK VM AREA IF DELETED TRACKS    >>                   <<06259>>50464000
  VOLUME := 0;                                                 <<06259>>50466000
  CURR'VOL'MAP:= %40;                                          <<06259>>50467000
  WHILE (VOLUME := VOLUME+1) <= LOGICAL(HVOL) DO               <<06259>>50468000
    IF VTAB(VOLUME*VTABSIZE) <> 0 AND                          <<06259>>50470000
      VTAB(VOLUME*VTABSIZE+VTAB12).VMS = 1 THEN                <<06259>>50472000
      BEGIN                                                    <<06259>>50474000
                                                               <<06259>>50476000
    << COMPUTE VOLUME INFORMATION >>                           <<06259>>50478000
      VDSTART1 := VTAB(VOLUME*VTABSIZE+VTAB8);                 <<06259>>50480000
      VDSTART2 := VTAB(X:=X+1);                                <<06259>>50482000
      VDSLEN1 := VTAB(X:=X+1);                                 <<06259>>50484000
      VDSLEN2 := VTAB(X:=X+1);                                 <<06259>>50486000
      VDSLEN'PAGES := VDSLEN/DOUBLE(NSECTPAGE);                <<06259>>50488000
      VDSTOP := VDSTART + VDSLEN - 1D;                         <<06259>>50490000
      << VDSLEN IS ALREADY ROUNDED SO NO SWEAT THERE >>        <<06259>>50492000
      LDEV := GETLDEV(VOLUME);                                 <<06259>>50494000
      LDT'INDEX := LDEV * LDTSIZE;                             <<*LDT*>>50495000
      LPDT'INDEX := LDEV * LPDTSIZE;                           <<*LPDT>>50495100
      TYPE := LDT'DEVICE'TYPE;                                 <<*LDT*>>50496000
      STYPE := LPDT'SUBTYPE;                                   <<*LPDT>>50498000
      IF TYPE = MHDISCTYPE THEN                                <<06259>>50500000
        TRACKLEN := MHINFO(STYPE*MHINFOSIZE+MHSECTRK)          <<06259>>50502000
      ELSE                                                     <<06259>>50504000
        TRACKLEN := 32;  << TRACK LENGTH >>                    <<06259>>50506000
                                                               <<06259>>50508000
    << SET UP VOLUME BITMAP >>                                 <<06259>>50510000
      BMLENGTH := L'(VDSLEN'PAGES/16D);  <<DIV BY # BITS/WORD>><<06259>>50512000
      BMLENGTH := BMLENGTH+1;  << NUM BITMAP WORDS >>          <<06259>>50514000
      << EXTRA WORD IS FOR LAST PARTIAL WORD IF NEEDED >>      <<06259>>50516000
      I := L'(VDSLEN'PAGES MODD 16);  << # BITS IN LAST WORD >><<06259>>50518000
      ENTRYSIZE := ROUND(BMLENGTH+L'(VDSMTAB(OFFSETTOBMWORD)));<<06259>>50520000
      TOS := INITTABLE(ENTRYSIZE, 1, BANK0ABOVE, FALSE);       <<06259>>50522000
      DELB;                                                    <<06259>>50523000
      ABSOLUTE(SYSVDSENTRY) := S0-SYSBASE;                     <<06259>>50524000
      ABSOLUTE(SYSVDSMAP) := S0+BMOFFSET-SYSBASE;              <<06259>>50526000
      DEL;  <<SPL CAN'T DEAL WITH USING TOS IN LAST STATEMENT>><<06259>>50528000
      IF LDEV = SYSDISC THEN                                   <<06259>>50530000
        BEGIN  << SAVE SYSTEM DISC POINTERS >>                 <<06259>>50532000
        SYSENTRY := ABSOLUTE(SYSVDSENTRY);                     <<06259>>50534000
        SYSMAP := ABSOLUTE(SYSVDSMAP);                         <<06259>>50536000
        END;                                                   <<06259>>50538000
      X := CURR'VOL'MAP-1;                                     <<06259>>50540000
      WHILE LOGICAL(X:=X+1) < CURR'VOL'MAP+BMLENGTH-1  DO      <<06353>>50542000
               VDSMTAB(X):= -1;                                <<06259>>50543000
      << SET BITS REPRESENTING AVAILABLE PAGES TO 1 >>         <<06259>>50544000
      VDSMTAB(CURR'VOL'MAP+BMLENGTH-1):=                       <<06259>>50545000
                       (-1)&LSL(16-I);<<LAST WORD OF MAP>>     <<06259>>50546000
                                                               <<06259>>50548000
      VDSMTAB(VMSVOLUMECNTWORD) := VDSMTAB(VMSVOLUMECNTWORD)+1;<<06259>>50550000
    << SET UP VOLUME ENTRY HEADER AREA >>                      <<06259>>50552000
      VDSENTRY(NEXTINLISTWORD) := CURR'VOL'MAP+BMLENGTH;       <<06259>>50554000
      VDSENTRY(LDEVWORD) := LDEV;                              <<06259>>50558000
      VDSENTRY(HOSTARTSECTORWORD) := VDSTART1;  << HODA >>     <<06259>>50560000
      VDSENTRY(LOSTARTSECTORWORD) := VDSTART2;  << LODA >>     <<06259>>50562000
      VDSENTRY(HOSECTORCONTWORD) := VDSLEN1;                   <<06259>>50564000
      VDSENTRY(LOSECTORCOUNTWORD) := VDSLEN2;                  <<06259>>50566000
      VDSENTRY(TOTALPAGESWORD) := L'(VDSLEN'PAGES);            <<06259>>50568000
      VDSENTRY(AVAILPAGESWORD) := L'(VDSLEN'PAGES);            <<06259>>50570000
      VDSMTAB(TOTALVMPAGESWORD):=VDSMTAB(TOTALVMPAGESWORD)+    <<06259>>50572000
           L'(VDSLEN'PAGES);                                   <<06259>>50574000
      VDSENTRY(WORDSINBITMAPWORD) := BMLENGTH;                 <<06259>>50576000
      VDSENTRY(SMALLESTMISSWORD) := L'(VDSLEN'PAGES);          <<06259>>50578000
      VDSENTRY(DEVLEASTAVAILPAGESWORD):=L'(VDSLEN'PAGES);      <<06259>>50580000
      MTDS(VDSMDSTN, CURR'VOL'MAP-BMOFFSET, VDSENTRY,BMOFFSET);<<06259>>50581000
                                                               <<06259>>50582000
      IF TYPE = 0 << MH DISC >> OR TYPE = 1 << FH DISC >> THEN <<*LDT*>>50584000
      BEGIN                                                    <<06259>>50586000
    << CHECK FOR DELETED TRACKS IN VM >>                       <<06259>>50588000
      DISC(READ, LDEV, 1D, DTT, 128); <<READ DEF TRACKS TABLE>><<06259>>50590000
      I := 0;                                                  <<06259>>50592000
      WHILE (I:=I+1) <= DTT DO                                 <<06259>>50594000
      IF DTT(I).(14:2) = 2 THEN                                <<06259>>50596000
        BEGIN  << DELETED TRACK >>                             <<06259>>50598000
        FSECT := D'( DTT(I)&LSR(2) ) * D'(TRACKLEN);           <<06259>>50600000
        LSECT := FSECT + D'(TRACKLEN) - 1D;                    <<06259>>50602000
                                                               <<06259>>50604000
      << CONVERT FSECT AND LSECT TO THAT PORTION OF THE BAD  >><<06259>>50606000
      << TRACK THAT LIES WITHIN VIRTUAL MEMORY.              >><<06259>>50608000
        IF FSECT <= VDSTOP AND LSECT >= VDSTART THEN           <<06259>>50610000
          BEGIN  << AT LEAST PARTIALLY IN VIRTUAL MEMORY >>    <<06259>>50612000
          IF FSECT < VDSTART THEN                              <<06259>>50614000
            << BAD TRACK OVERLAPS END OF V.M. >>               <<06259>>50616000
            FSECT := VDSTART;                                  <<06259>>50618000
          IF LSECT > VDSTOP THEN                               <<06259>>50620000
            << BAD TRACK OVERLAPS END OF V.M. >>               <<06259>>50622000
            LSECT := VDSTOP;                                   <<06259>>50624000
                                                               <<06259>>50626000
        << REMOVE BAD TRACK FROM BITMAP >>                     <<06259>>50628000
          << WHEN COMPUTING THE FIRST AND LAST PAGES TO    >>  <<06259>>50630000
          << REMOVE, BOTH WILL BE ROUNDED DOWN.            >>  <<06259>>50632000
          FPAGE := L'( (FSECT-VDSTART)/D'(NSECTPAGE) );        <<06259>>50634000
          LPAGE := L'( (LSECT-VDSTART)/D'(NSECTPAGE) );        <<06259>>50636000
          PAGE := FPAGE;                                       <<06259>>50638000
          DO                                                   <<06259>>50640000
            BEGIN  << REMOVE SPACE FROM BITMAP >>              <<06259>>50642000
            TOS := VDSMTAB(CURR'VOL'MAP+PAGE.(0:12));          <<06259>>50644000
            X := PAGE.(12:4);  << BIT NUMBER >>                <<06259>>50646000
            ASSEMBLE(TRBC 0,X);  << MARK UNAVAILABLE >>        <<06259>>50648000
            IF = THEN ERRMESSAGE(M325,14);  << SPACE ERR >>    <<06259>>50650000
            VDSMTAB(CURR'VOL'MAP+PAGE.(0:12)) := TOS;          <<06259>>50652000
            END                                                <<06259>>50654000
          UNTIL (PAGE := PAGE+1) > LPAGE;                      <<06259>>50656000
                                                               <<06259>>50658000
          IF LDEV = SYSDISC AND NOT(INITLOGONDST) THEN         <<06259>>50660000
            BEGIN  << SEE IF ON DELETED TRACK >>               <<06259>>50662000
            IF INFOD(LOGONLOC1) <= LSECT AND                   <<06259>>50664000
              INFOD(LOGONLOC1)+D'(WELMESPAGES-1)>=FSECT THEN   <<06259>>50666000
              LOGON1'BAD := TRUE;                              <<06259>>50668000
            IF INFOD(LOGONLOC2) <= LSECT AND                   <<06259>>50670000
              INFOD(LOGONLOC2)+D'(WELMESPAGES-1)>=FSECT THEN   <<06259>>50672000
              LOGON2'BAD := TRUE;                              <<06259>>50674000
            END;                                               <<06259>>50676000
          END;  << AT LEAST PARTIALLY ON DELETED TRACK >>      <<06259>>50678000
        END;  << DELETED TRACK >>                              <<06259>>50680000
      END;                                                     <<06259>>50682000
                                                               <<06259>>50684000
        IF LDEV = SYSDISC THEN                                 <<06259>>50686000
          BEGIN                                                <<06259>>50688000
          IF WARMSTART THEN                                    <<06259>>50690000
            BEGIN  << SAVE ODD, IDD, JMAT >>                   <<06259>>50692000
            TOS := INFOD(ODDLOC);  << DISC ADDR OF ODD >>      <<06259>>50694000
            TOS := INFOD(IDDLOC);  << DISC ADDR OF IDD >>      <<06259>>50696000
            TOS := INFOD(JMATLOC);  << DISC ADDR OF JMAT >>    <<06259>>50698000
            I := -1;                                           <<06259>>50700000
            WHILE(I:=I+1) < 3 DO                               <<06259>>50702000
              BEGIN                                            <<06259>>50704000
              TOS := TOS - VDSTART;                            <<06259>>50706000
              DELB;                                            <<06259>>50708000
              FPAGE := TOS / NSECTPAGE;                        <<06259>>50710000
              LPAGE := FPAGE + L'(PAGES(I)) - 1;               <<06259>>50712000
              PAGE := FPAGE;                                   <<06259>>50714000
              DO                                               <<06259>>50716000
                BEGIN                                          <<06259>>50718000
                TOS := VDSMTAB(CURR'VOL'MAP+PAGE.(0:12));      <<06259>>50720000
                X := PAGE.(12:4);                              <<06259>>50722000
                ASSEMBLE(TRBC 0,X);                            <<06259>>50724000
                IF = THEN ERRMESSAGE(M231); <<BIT ALREADY 0>>  <<06259>>50726000
                VDSMTAB(CURR'VOL'MAP+PAGE.(0:12)) := TOS;      <<06259>>50728000
                END                                            <<06259>>50730000
              UNTIL (PAGE := PAGE+1) > LPAGE;                  <<06259>>50732000
              END;                                             <<06259>>50734000
            END;  << WARMSTART >>                              <<06259>>50736000
                                                               <<06259>>50738000
          IF NOT LOGON1'BAD THEN                               <<06259>>50740000
            BEGIN                                              <<06259>>50742000
            DISC(READ, SYSDISC, INFOD(LOGONLOC1), LBUF, 1);    <<06259>>50744000
            IF LBUF < 0 THEN LOGONLOC := LOGONLOC1;            <<06259>>50746000
            END;                                               <<06259>>50748000
          IF LOGONLOC = 0 AND NOT LOGON2'BAD THEN              <<06259>>50750000
            BEGIN                                              <<06259>>50752000
            DISC(READ,SYSDISC,INFOD(LOGONLOC2),LBUF,1);        <<06259>>50754000
            IF LBUF < 0 THEN LOGONLOC := LOGONLOC2;            <<06259>>50756000
            END;                                               <<06259>>50758000
                                                               <<06259>>50760000
          IF LOGONLOC = 0 AND (LOGON1'BAD OR LOGON2'BAD)       <<06259>>50762000
            THEN MESSAGE(M2244);                               <<06259>>50764000
                                                               <<06259>>50766000
          IF LOGONLOC <> 0 THEN                                <<06259>>50768000
            BEGIN  << SAVE LOGONDST VIRTUAL MEM. SPACE >>      <<06259>>50770000
            FPAGE:=L'((INFOD(LOGONLOC)-VDSTART)/D'(NSECTPAGE));<<06259>>50772000
            LPAGE := FPAGE + WELMESPAGES - 1;                  <<06259>>50774000
            PAGE := FPAGE;                                     <<06259>>50776000
            DO                                                 <<06259>>50778000
              BEGIN                                            <<06259>>50780000
              TOS := VDSMTAB(CURR'VOL'MAP+PAGE.(0:12));        <<06259>>50782000
              X := PAGE.(12:4);                                <<06259>>50784000
              ASSEMBLE(TRBC 0, X);                             <<06259>>50786000
              IF = THEN ERRMESSAGE(M325,15);                   <<06259>>50788000
                << BIT ALREADY SET >>                          <<06259>>50790000
              VDSMTAB(CURR'VOL'MAP+PAGE.(0:12)) := TOS;        <<06259>>50792000
              END                                              <<06259>>50794000
            UNTIL (PAGE := PAGE+1) > LPAGE;                    <<06259>>50796000
            END;  << LOGONLOC <> 0 - SAVE IT >>                <<06259>>50798000
          END;  << VOL = SYSTEM DISC >>                        <<06259>>50800000
      CURR'VOL'MAP:= CURR'VOL'MAP + BMOFFSET + BMLENGTH;       <<06259>>50801000
      END;  << WHILE VOL <= HVOL >>                            <<06259>>50802000
                                                               <<06259>>50804000
  VDSMTAB(TABLELENGTHWORD) := VDSENTRY(NEXTINLISTWORD);        <<06259>>50806000
  VDSMTAB(GLOBLEASTAVAILPAGE):=VDSMTAB(TOTALPAGESWORD);        <<06259>>50810000
  DST(VDSMDSTN*4) := VDSMTAB(TABLELENGTHWORD)&LSR(2);          <<06259>>50812000
    << CORRECT DST LENGTH WORD >>                              <<06259>>50814000
                                                               <<06259>>50816000
  << RESET POINTERS TO SYSTEM DISC >>                          <<06259>>50818000
  VDSENTRY(NEXTINLISTWORD) := BMOFFSET; <<PNT BACK TO 1ST ENT>><<06259>>50819000
  CURR'VOL'MAP:= CURR'VOL'MAP - (BMOFFSET + BMLENGTH);         <<06259>>50820000
  MTDS(VDSMDSTN, CURR'VOL'MAP-BMOFFSET, VDSENTRY, BMOFFSET);   <<06259>>50821000
  ABSOLUTE(SYSVDSENTRY) := SYSENTRY;                           <<06259>>50822000
  ABSOLUTE(SYSVDSMAP) := SYSMAP;                               <<06259>>50824000
END;  << BUILD'VDSMTAB >>                                      <<06259>>50826000
               I := 0,  << INDEX >>                            <<*LDT*>>50868000
               LDT'INDEX,                                      <<*LPDT>>50869000
               LPDT'INDEX;                                     <<*LPDT>>50869100
       LDT'INDEX := LDEV * LDTSIZE;                            <<*LDT*>>50875000
       LPDT'INDEX := LDEV * LPDTSIZE;                          <<*LPDT>>50875100
       TYPE := LDT'DEVICE'TYPE;                                <<*LDT*>>50876000
       STYPE := LPDT'SUBTYPE;                                  <<*LPDT>>50878000
       IF TYPE = 0 << MH DISC >> OR TYPE = 1 << FH DISC >> THEN<<*LDT*>>50880000
   I,                                                          <<*LDT*>>50966000
   LDT'INDEX,                                                  <<*LPDT>>50967000
   LPDT'INDEX;                                                 <<*LPDT>>50967100
LDT'INDEX := LDEV * LDTSIZE;                                   <<*LDT*>>50969000
LPDT'INDEX := LDEV *LPDTSIZE;                                  <<*LPDT>>50969100
TYPE := LDT'DEVICE'TYPE;                                       <<*LDT*>>50970000
STYPE := LPDT'SUBTYPE;                                         <<*LPDT>>50972000
IF TYPE = 0 << MH DISC >> OR TYPE = 1 << FH DISC >> THEN       <<*LDT*>>50976000
   IF TYPE = 0 << MH DISC >> THEN                              <<*LDT*>>50988000
ELSE IF TYPE = 3 << CS80 DEVICE >> THEN                        <<*LDT*>>51020000
        VALUE LEN;                                                      51104000
$EDIT VOID=51131010                                            <<DEVCO>>51124000
          COMPARE(VTABSECT,TABLEINFO(VTABINFOX+3)); <<VOLUME TABLE>>    51132000
$EDIT                                                                   51136000
          COMPARE(*,TABLEINFO(X:=X+3)); <<INITIAL'S STACK>>             51140000
              TOS := TCSTINFO(I*5);                                     51146000
$EDIT                                                                   51148000
              COMPARE(*,TCSTINFO(X:=X+3)); <<CST>>                      51152000
               ADD'AREA(REASSIGNED,NREASS,MAX'REASS+1,         <<SPFIX>>52786000
          TOS := DTEMP + RECNUM; <<DISC ADDRESS>>                       52940000
          TABLEINFO(INDEX+4) := TOS; << LOW ORDER >>                    52941000
          TABLEINFO(INDEX+3) := TOS; << HIGH ORDER >>                   52941100
PROCEDURE WRITEDEVFILE( TABLENR, BUF, LENGTH, INFOX);          <<DEVCO>>52942100
   VALUE TABLENR, LENGTH, INFOX;                               <<DEVCO>>52942200
   INTEGER TABLENR, LENGTH, INFOX;                             <<DEVCO>>52942300
   INTEGER ARRAY BUF;                                          <<DEVCO>>52942400
BEGIN                                                          <<DEVCO>>52942500
   INTEGER INX;                                                <<DEVCO>>52942600
   DOUBLE DISCADR;                                                      52942610
   INTEGER DISCADR1 = DISCADR,                                          52942620
           DISCADR2 = DISCADR+1;                                        52942630
                                                               <<DEVCO>>52942700
   INX := DEVTABENTRIES + TABLENR*2;                           <<DEVCO>>52942800
   DEVREC0(INX) := DEVNEXT;                                    <<DEVCO>>52942900
   DEVREC0(INX+1) := LENGTH;                                   <<DEVCO>>52943000
   FWRITE( DEVFNUM, DOUBLE(DEVNEXT), BUF, LENGTH);             <<DEVCO>>52943100
   DISCADR := DEVFILEADR+DOUBLE(DEVNEXT);                               52943150
   TABLEINFO(INFOX+3) := DISCADR1;                                      52943160
   TABLEINFO(INFOX+4) := DISCADR2;                                      52943170
   DEVNEXT := DEVNEXT + (LENGTH+127)/128;                      <<DEVCO>>52943200
END;                                                           <<DEVCO>>52943300
PROCEDURE READDEVFILE( TABLENR, BUF, LENGTH);                  <<DEVCO>>52943400
   VALUE TABLENR;                                              <<DEVCO>>52943500
   INTEGER TABLENR, LENGTH;                                    <<DEVCO>>52943600
   INTEGER ARRAY BUF;                                          <<DEVCO>>52943700
BEGIN                                                          <<DEVCO>>52943800
   INTEGER INX;                                                <<DEVCO>>52943900
                                                               <<DEVCO>>52944000
   INX := DEVTABENTRIES + TABLENR*2;                           <<DEVCO>>52944100
   LENGTH := DEVREC0(INX+1);                                   <<DEVCO>>52944200
   FREAD( DEVFNUM, DOUBLE(DEVREC0(INX)), BUF, LENGTH);         <<DEVCO>>52944300
END;                                                           <<DEVCO>>52944400
$EDIT VOID =52992000                                                    52946000
   <<-------------------------------->>                                 52947000
   <<   WRITE DEVICE TABLE TO DISC   >>                                 52948000
   <<-------------------------------->>                                 52949000
                                                                        52950000
PROCEDURE WRITEDEVTABLE( MAXSIZE, LOC, INDEX, TABSIZE);                 52951000
   VALUE MAXSIZE, INDEX, TABSIZE;                                       52952000
   INTEGER MAXSIZE, INDEX, TABSIZE;                                     52953000
   ARRAY LOC;                                                           52954000
BEGIN COMMENT                                                           52955000
                                                                        52956000
   WRITES THE SPECIFIED DEVICE TABLE TO DISC.  IF THIS IS               52957000
   A TAPE COLD LOAD, ENOUGH DISC SPACE FOR THE SPECIFIED                52958000
   SIZE OF THE TABLE IS FIRST OBTAINED;                                 52959000
                                                                        52960000
   DOUBLE                                                               52961000
      DSIZE;                                                            52962000
   DOUBLE POINTER                                                       52963000
      DISCADR;                                                          52964000
                                                                        52965000
   @DISCADR := @TABLEINFO(INDEX+3);                                     52966000
   IF LOADFROMTAPE THEN                                                 52967000
      BEGIN   << GET DISC SPACE FOR TABLE >>                            52968000
      DSIZE := D'L((MAXSIZE+127)&LSR(7)));                              52969000
      SUPERDISCSPACE(-SYSDISC,1,0,DSIZE,DISCADR);                       52970000
      IF <> THEN ERRMESSAGE( M326, SYSDISC); <<OUT DISC>>               52971000
      TOS := DISCADR;                                                   52972000
      BS1 := 0;  << ZERO VOLUME INDEX >>                                52973000
      DISCADR := TOS;                                                   52974000
      END;                                                              52975000
   DISC( WRITE, SYSDISC, DISCADR, LOC, TABSIZE);                        52976000
END;                                                                    52977000
$EDIT VOID=53024000                                                     52994000
PROCEDURE SAVE'TABLE'ADDR( TABSIZE, LOC, INDEX);                        52995000
   VALUE TABSIZE, INDEX;                                                52996000
   ARRAY LOC;                                                           52997000
   INTEGER TABSIZE, INDEX;                                              52998000
BEGIN COMMENT                                                           52999000
                                                                        53000000
   THIS PROCEDURE RECORDS THE SIZE AND LOCATION                         53001000
   OF TABLES INTO THE COLD LOAD INFORMATION TABLE;                      53002000
                                                                        53003000
   TABLEINFO(INDEX) := TABSIZE;                                         53004000
   PUSH( DB );                                                          53005000
   TOS := TOS + @LOC; << ABS ADR OF THE TABLE >>                        53006000
   TABLEINFO(INDEX+2) := TOS; << LOW ORDER >>                           53007000
   TABLEINFO(INDEX+1) := TOS; << HIGH ORDER >>                          53008000
END; << SAVE'TABLE'ADDR >>                                              53009000
    VALUE WORDS;                                                        53036000
$EDIT VOID=53048000                                            <<*DVR*>>53048000
          TOS := SYSDISCDRT;                                   <<*DVR*>>53050000
          TOS := 0;          << SYSTEM DISC ALWAYS UNIT 0>>    <<*DVR*>>53051000
          IF SYSDISCTYPE=FHDISCTYPE THEN                       <<*LDT*>>53064000
            TOS := @FHDISC                                     <<*LDT*>>53065000
          ELSE                                                 <<*LDT*>>53066000
            IF SYSDISCTYPE=MHDISCTYPE THEN                     <<*LDT*>>53067000
              IF SYSDISCSUBTYPE < 4 THEN                       <<*LDT*>>53068000
                TOS := @MHDISC                                 <<*LDT*>>53069000
              ELSE                                             <<*LDT*>>53070000
                IF SYSDISCSUBTYPE < NMHSUBTYPES THEN           <<*LDT*>>53070100
                  TOS:=@MH7905                                 <<*LDT*>>53071000
                ELSE ERRMESSAGE(M126,0)                        <<*LDT*>>53072000
            ELSE                                               <<*LDT*>>53074000
              IF SYSDISCTYPE = 3 << CS80 DEVICE >> THEN        <<*LDT*>>53074100
                TOS := @CS80'DRIVER                            <<*LDT*>>53075000
              ELSE ERRMESSAGE( M126);                          <<*LDT*>>53076000
      Z'TABLE'SIZE,         << FOR SPACE NEEDED ABOVE Z >>     <<zrela>>54171000
      DADR := DADR-D'L(COMM(MAXINITSEG')));                    <<CONFD>>54342000
   Z'TABLE'SIZE := (HLDEV + 1) * (LDTSIZE + LPDTSIZE +         <<zrela>>54397000
                  LDTXSIZE + DVRSIZE) + %15;                   <<zrela>>54397100
   STACK'ADR := GETSPACE(STACK'SIZE + Z'TABLE'SIZE);           <<zrela>>54420000
   MABS( BANK, ADR + STACK'DLZ, ABS(DBBANK),                   <<zrela>>54451000
         ABS(DB) + QIDL + STACK'DLZ, Z'TABLE'SIZE);            <<zrela>>54451100
      D'L(ADR-STACK'SIZE-Z'TABLE'SIZE));                       <<zrela>>54534000
   NSWAPSEG := SWAP'AREA // LOGICAL(COMM(MAXINITSEG'));        <<CONFD>>54542000
      ADR := %177770 - STACK'DLZ - Z'TABLE'SIZE;               <<zrela>>54584000
      DADR := DADR-D'L(STACK'DLZ+Z'TABLE'SIZE));               <<zrela>>54590000
   MABS'( DADR + D'L(STACK'DLZ)), QISBK,                       <<zrela>>54599000
          QIDB + QIDL + STACK'DLZ, Z'TABLE'SIZE);              <<zrela>>54599010
                                                               <<zrela>>54599100
        INTEGER POINTER TABLEINFO; <<TABLE INFORMATION>>                54696000
              IF TABLEINFO(I*5) = 0 THEN                                54761000
$EDIT                                                                   54761010
$EDIT                                                                   54761050
              TOS := INFO(SYSDISCDRT');                        <<*DVR*>>54764000
              TOS := 0; << UNIT # 0 >>                         <<*DVR*>>54766000
              TOS := TABLEINFO(I*5+3); <<HO DISC ADR>>                  54772000
              TOS := TABLEINFO(X:=X+1);<<LO DISC ADR>>                  54773000
              TOS := TABLEINFO(I*5+1); <<HO MEM ADR>>                   54774000
              TOS := TABLEINFO(X:=X+1);<<LO MEM ADR>>                   54775000
              TOS := TABLEINFO(I*5);   << COUNT >>                      54776000
$EDIT                                                                   54778000
              IF S0 = FHDISCTYPE THEN                          <<*LDT*>>54782000
                TOS := @FHDISC                                 <<*LDT*>>54783000
              ELSE                                             <<*LDT*>>54784000
                IF S0 = MHDISCTYPE THEN                        <<*LDT*>>54785000
                  IF S7 < 4 THEN                               <<*LDT*>>54786000
                    TOS := @MHDISC                             <<*LDT*>>54787000
                  ELSE                                         <<*LDT*>>54788000
                   IF S7 < NMHSUBTYPES THEN TOS := @MH7905     <<*LDT*>>54789000
                   ELSE ASSEMBLE(HALT 9)                       <<*LDT*>>54790000
                ELSE                                           <<*LDT*>>54792000
                  IF S0 = 3 << CS80 DEVICE >> THEN             <<*LDT*>>54793000
                    TOS := @CS80'DRIVER                        <<*LDT*>>54793100
                  ELSE ASSEMBLE( HALT 10);                     <<*LDT*>>54794000
          << BUILD DELTA P, INCLUDING MAP FLAG >>              <<06091>>54813600
          I := INFO(DISCENTRY) CAT LOGICALMAPPING'(1:15:1);    <<06091>>54813800
          SSEA( ADR+1D, I);                 << DELTA P >>      <<06091>>54814000
          IF LOGICALMAPPING THEN TOS.MAPFLAG := 1;             <<06091>>55159100
          PREL := TOS;         << PUT RELATIVE P IN MARKER >>  <<06091>>55160000
$CONTROL SEGMENT=MAINSEG3                                      <<PMBC*>>55162100
PROCEDURE INIT'PMBC;                                           <<PMBC*>>55162200
BEGIN                                                          <<PMBC*>>55162210
   << This procedure will initialize a table of lengths >>     <<PMBC*>>55162220
   << for the PMBC microcode.  This table is used by    >>     <<PMBC*>>55162230
   << the PMBC to check the instructions LST/SST to be  >>     <<PMBC*>>55162240
   << sure they are not accessing outside the bounds of >>     <<PMBC*>>55162250
   << the table.   If the sign bit is set the PMBC will >>     <<PMBC*>>55162260
   << allow negative accessing of 64 locations, this is >>     <<PMBC*>>55162270
   << needed for such tables as the ICS.  The lengths   >>     <<PMBC*>>55162280
   << are stored divided by four, this will allow       >>     <<PMBC*>>55162290
   << addressing of a full 64K of core.                 >>     <<PMBC*>>55162300
                                                               <<PMBC*>>55162310
   INTEGER ARRAY SYSTODST(*) = PB :=                           <<PMBC*>>55162320
      CSTIX,         CSTDSTN,                                  <<PMBC*>>55162330
      DSTIX,         DSTDSTN,                                  <<PMBC*>>55162340
      PCBIX,         PCBDSTN,                                  <<PMBC*>>55162350
$EDIT                                                          <<SYPTR>>55162360
      IOQIX,         IOQDSTN,                                  <<PMBC*>>55162370
      SBUFIX,        SBUFDSTN,                                 <<PMBC*>>55162380
      LPDTIX,        LPDTDSTN,                                 <<PMBC*>>55162390
      TRLIX,         TRLDSTN,                                  <<PMBC*>>55162400
      JCUTIX,        JCUTDSTN,                                 <<PMBC*>>55162410
      SIRIX,         SIRDSTN,                                  <<PMBC*>>55162420
      JPCNTIX,       JPCTDSTN,                                 <<PMBC*>>55162430
      TBUFIX,        TBUFDSTN,                                 <<PMBC*>>55162440
      SWAPTABIX,     SWAPTABDSTN,                              <<PMBC*>>55162450
      VDSMTABIX,     VDSMDSTN,                                 <<PMBC*>>55162460
      DISCREQTABIX,  DISCREQTABDSTN,                           <<PMBC*>>55162470
      CSTBLKIX,      CSTBLKDSTN,                               <<PMBC*>>55162480
      MEASINFOTABIX, MEASINFOTABDSTN,                          <<PMBC*>>55162490
      0;                                                       <<PMBC*>>55162500
$EDIT VOID=55162520                                            <<PMBC2>>55162510
   INTEGER                                                     <<PMBC*>>55162530
      PMBCADR,                                                 <<PMBC2>>55162540
      I;                                                       <<PMBC*>>55162550
                                                               <<PMBC*>>55162560
   << ONLY BUILD THE PMBC TABLE IF PMBC MIRCOCODE EXISTS >>    <<PMBC*>>55162570
   IF NOT PMBCFIRMWARE THEN RETURN;                            <<PMBC*>>55162580
                                                               <<PMBC*>>55162590
$EDIT                                                          <<PMBC2>>55162600
   PMBCADR := ABS(SYSPMBC);                                    <<PMBC2>>55162610
                                                               <<PMBC*>>55162620
   I := 0;                                                     <<PMBC*>>55162630
   WHILE SYSTODST(I) <> 0 DO                                   <<PMBC*>>55162640
      BEGIN                                                    <<PMBC*>>55162650
      ABS(PMBCADR+SYSTODST(I)) := DST(SYSTODST(I+1)*4).(3:13); <<PMBC*>>55162660
      I := I+2;                                                <<PMBC*>>55162670
      END;                                                     <<PMBC*>>55162680
                                                               <<PMBC*>>55162690
   ABS(PMBCADR) := %137777;                  << SYSGLOBAL >>   <<PMBC*>>55162700
   ABS(PMBCADR+ICSIX) := %100000;            << ICS >>         <<PMBC*>>55162710
   ABS(PMBCADR+MONBUFIX) := %100400;         << MON BUF >>     <<PMBC*>>55162720
   ABS(PMBCADR+DRTIX) := HIDRT+1;            << DRT >>         <<PMBC*>>55162730
   ABS(PMBCADR+DSTIX) := CTAB(DSTNUM)+CTAB(CSTNUM)+            <<CONFD>>55162740
      CTAB(CSTXNUM)+1;                                         <<CONFD>>55162750
   ABS(PMBCADR+SYSEXTPTR'DB) := SYSEXTSIZE/4;<< SYS EXT >>     <<PMBC*>>55162760
END; << INIT'PMBC >>                                           <<PMBC*>>55162770
$EDIT VOID=55522000                                            <<CONFD>>55514000
$EDIT VOID=55530000                                            <<CONFD>>55526000
PROCEDURE GETDSTS;                                             <<06300>>55536200
BEGIN                                                          <<06300>>55536210
   INTEGER ARRAY DSTS(0:31)=Q;                                 <<06300>>55536220
   LOGICAL LAST;                                               <<06300>>55536230
   INTEGER                                                     <<06300>>55536240
      NRDSTS,                                                  <<06300>>55536250
      CNT,                                                     <<06300>>55536260
      NUM;                                                     <<06300>>55536270
                                                               <<06300>>55536280
   GO START;                                                   <<06300>>55536290
ERROR:                                                         <<06300>>55536300
   MESSAGE(M2453);  << INVALID INPUT >>                        <<06300>>55536310
START:                                                         <<06300>>55536320
   MOVE BLINE := ("ENTER DST NUMBERS OF TABLES TO BE BUILT",   <<06300>>55536330
      " OUTSIDE OF BANK 0");                                   <<06300>>55536340
   PRINTLINE;                                                  <<06300>>55536350
   READINPUT;                                                  <<06300>>55536360
                                                               <<06300>>55536370
   LAST := FALSE;                                              <<06300>>55536380
   NRDSTS := 0;                                                <<06300>>55536390
   DO BEGIN                                                    <<06300>>55536400
      NUM := INVAL(@ERROR);                                    <<06300>>55536410
      PUSH( STATUS );                                          <<06300>>55536420
      CASE TOS.(6:2) OF                                        <<06300>>55536430
         BEGIN                                                 <<06300>>55536440
                                                               <<06300>>55536450
<<CCG>>     BEGIN                                              <<06300>>55536460
            DSTS(NRDSTS) := NUM;                               <<06300>>55536470
            LAST := TRUE;                                      <<06300>>55536480
            NRDSTS := NRDSTS+1;                                <<06300>>55536485
            END;                                               <<06300>>55536490
                                                               <<06300>>55536500
<<CCL>>     BEGIN                                              <<06300>>55536510
            DSTS(NRDSTS) := NUM;                               <<06300>>55536511
            NRDSTS := NRDSTS+1;                                <<06300>>55536512
            END;                                               <<06300>>55536513
                                                               <<06300>>55536520
<<CCE>>     LAST := TRUE;                                      <<06300>>55536530
                                                               <<06300>>55536540
         END;                                                  <<06300>>55536550
      END                                                      <<06300>>55536570
   UNTIL LAST;                                                 <<06300>>55536580
                                                               <<06300>>55536590
   CNT := 0;                                                   <<06300>>55536600
   WHILE NRDSTS > CNT DO                                       <<06300>>55536610
      BEGIN                                                    <<06300>>55536620
      SETBIT( BK1DSEG, DSTS(CNT) );                            <<06300>>55536630
      CNT := CNT+1;                                            <<06300>>55536640
      END;                                                     <<06300>>55536650
END;                                                           <<06300>>55536660
PROCEDURE SYSTAB'CH;                                           <<sytab>>55537010
BEGIN                                                          <<sytab>>55537020
   GETNEWVAL(3001,CTAB(CSTNUM),80,2048);                       <<sytab>>55537030
   GETNEWVAL(3002,CTAB(CSTXNUM),16,8191);                      <<sytab>>55537040
   GETNEWVAL(3003,CTAB(DSTNUM),70,4096);                       <<sytab>>55537050
   GETNEWVAL(3004,CTAB(PCBNUM),12,1024);                       <<sytab>>55537060
   GETNEWVAL(3005,CTAB(IOQNUM),20,1300);                       <<sytab>>55537070
   GETNEWVAL(3006,CTAB(DISCREQTABLE),20,900);                  <<sytab>>55537080
   GETNEWVAL(3007,CTAB(TBUFNUM),1,%143);                       <<sytab>>55537090
   GETNEWVAL(3008,CTAB(SBUFNUM),8,253);                        <<sytab>>55537100
   GETNEWVAL(3009,CTAB(SWAPTABLE),128,4096);                   <<sytab>>55537110
   GETNEWVAL(3010,CTAB(PRIMARYMSGTABLE),10,255);               <<sytab>>55537120
   GETNEWVAL(3011,CTAB(SECNDRYMSGTABLE),10,255);               <<sytab>>55537130
   GETNEWVAL(3012,CTAB(SPECIALREQTABLE),10,255);               <<sytab>>55537140
   GETNEWVAL(3013,CTAB(ICSSIZE),256,4096);                     <<sytab>>55537150
   GETNEWVAL(3017,CTAB(LSTSIZE),2048,32760);                   <<*LST3>>55537155
   GETNEWVAL(3014,CTAB(UCRQNUM),1,1024);                       <<sytab>>55537160
   GETNEWVAL(3015,CTAB(TRLNUM),6,1023);                        <<sytab>>55537170
   GETNEWVAL(3016,CTAB(STOPNUM),1,1024);                       <<sytab>>55537180
END;                                                           <<sytab>>55537190
        THE TAPE SIO PROGRAM OR DISC COLD LOAD BOOTSTRAP HAS   <<zrela>>55546000
      READ MOST OF THE CONFIGURATION TABLES INTO INITIAL'S DL  <<zrela>>55547000
      AREA, 4 TABLES(LDT,LDTX,LPDT,DVRTAB), HOWEVER, ARE READ  <<zrela>>55547100
      INTO THE AREA ABOVE THE Z REGISTER DUE TO THEIR LARGE    <<zrela>>55547200
      POSSIBLE CONFIGURATION SIZE.  AT THIS POINT THE          <<zrela>>55547300
$EDIT VOID=55548000                                            <<zrela>>55548000
            TCLASS   => --------------------                   <<tclas>>55565000
                        -  TEMP CLASS      -                   <<tclas>>55566000
                        -    TABLE         -                   <<tclas>>55567000
            DCTAB HEAD=>--------------------                   <<tclas>>55568000
                        -  DEVICE CLASS    -                   <<tclas>>55569000
                        -  TABLE HEADER    -                   <<tclas>>55570000
             DCTAB   => --------------------                   <<tclas>>55584000
                        -  DEVICE CLASS    -                   <<tclas>>55586000
$EDIT VOID=55589016                                            <<zrela>>55589000
$EDIT VOID=55589036                                            <<tclas>>55589021
             RECBUF  => --------------------                   <<tclas>>55606010
                        - TEMP SERIAL DISC -                   <<tclas>>55606020
                        -      BUFFER      -                   <<tclas>>55606030
             TZTBUF  => --------------------                   <<tclas>>55606040
                        - TEMP SERIAL DISC -                   <<tclas>>55606050
                        -      BUFFER      -                   <<tclas>>55606060
                  DB => --------------------                   <<zrela>>55626000
                        -    INITIAL'S     -                   <<zrela>>55627000
                        -   DB - Z AREA    -                   <<zrela>>55628000
$EDIT VOID=55629000                                            <<zrela>>55629000
                   Z => --------------------                   <<zrela>>55629100
                        - %15 WORD BUFFER  -                   <<zrela>>55629300
                        -     AREA         -                   <<zrela>>55629400
              DVRTAB => --------------------                   <<zrela>>55629500
                        -     DRIVER       -                   <<zrela>>55629600
                        -      TABLE       -                   <<zrela>>55629700
                LPDT => --------------------                   <<zrela>>55629800
                        - LOGICAL-PHYSICAL -                   <<zrela>>55629900
                        -  DEVICE TABLE    -                   <<zrela>>55629910
                 LDT => --------------------                   <<zrela>>55629920
                        -    LOGICAL       -                   <<zrela>>55629930
                        -  DEVICE TABLE    -                   <<zrela>>55629940
                LDTX => --------------------                   <<zrela>>55629950
                        - LOGICAL DEVICE   -                   <<zrela>>55629960
                        - TABLE EXTENSION  -                   <<zrela>>55629970
                        --------------------                   <<zrela>>55629980
         ;                                                     <<zrela>>55629990
        INTEGER TEMP, COUNT;                                   <<zrela>>55708000
        POINTER PTR;   << TEMP FOR PTR TO IOTABLES           >><<zrela>>55709000
               DISCADR,                                                 55745000
       INTEGER                                                 <<*LDT*>>55801000
           LDT'INDEX,                                          <<*DVR*>>55801100
           LPDT'INDEX,                                         <<*LDTX>>55801200
           LDTX'INDEX,                                         <<*DVR*>>55801300
           DVR'INDEX;                                          <<*DVR*>>55801400
          ABS(SYSTCST) := ABS(CSTP)-SYSBASE;                   <<06259>>55844000
          SYSTAPEDRT :=                                        <<*DVR*>>55918000
              THEN I.RBITE                                     <<*DVR*>>55922000
              ELSE I;                                          <<*DVR*>>55924000
          TOS := TOS-COMMSIZE;                                 <<CONFD>>55944500
          @COMM := S0;  <<SYSDUMP/INITIAL COMMUNICATION>>      <<CONFD>>55944600
          TOS := TOS-CTABSIZE;                                 <<CONFD>>55950000
          @TZTBUF := S0;                                       <<zrela>>55953100
          @RECBUF := S0;                                       <<zrela>>55953300
          TOS := TOS-COMM(OLDINFOSIZE);                        <<CONFD>>55954000
          TOS := TOS-COMM(OLDVTABSIZE);                        <<CONFD>>55958000
                                                               <<zrela>>55962001
          << INITIALIZE UNUSED TABLE ENTRIES ABOVE Z >>        <<zrela>>55962002
                                                               <<zrela>>55962003
          HLDEV := COMM(HLDEV');                               <<CONFD>>55962004
          @PTR := @DVRTAB + ((HLDEV + 1) * DVRSIZE);           <<zrela>>55962005
          COUNT  := (MAXLDEV - HLDEV) * DVRSIZE;               <<zrela>>55962006
          ZEROBUF( PTR , COUNT );                              <<zrela>>55962010
          @PTR   := @LPDT + ((HLDEV + 1) * LPDTSIZE);          <<zrela>>55962011
          COUNT  := (MAXLDEV - HLDEV) * LPDTSIZE;              <<zrela>>55962012
          ZEROBUF( PTR, COUNT );                               <<zrela>>55962020
          @PTR   := @LDT + ((HLDEV + 1) * LDTSIZE);            <<zrela>>55962021
          COUNT  := (MAXLDEV - HLDEV) * LDTSIZE;               <<zrela>>55962022
          ZEROBUF( PTR , COUNT );                              <<zrela>>55962030
          @PTR   := @LDTX + ((HLDEV + 1) * LDTXSIZE);          <<zrela>>55962031
          COUNT  := (MAXLDEV - HLDEV) * LDTXSIZE;              <<zrela>>55962032
          ZEROBUF( PTR, COUNT );                               <<zrela>>55962040
          ADDRESS(0):= SYSBASE;                                <<06259>>55964000
             IF COMM(SERIALDISCLOAD').LOADTYPE=1 THEN          <<CONFD>>56006000
                IF COMM(SERIALDISCLOAD').LOADDATE=1            <<CONFD>>56012000
                COMM(SERIALDISCLOAD'):=0; <<RESET>>            <<CONFD>>56016000
$EDIT VOID=56066000                                            <<zrela>>56050000
          TAPERECSIZE := COMM(TAPERECSIZE');                   <<CONFD>>56068000
          CLEARLINE;                                           <<PMBC>> 56069000
          IF PMBCFIRMWARE THEN                                 <<PMBC>> 56069100
             BEGIN                                             <<PMBC>> 56069200
             MOVE BLINE := "*** PMBC MICROCODE INSTALLED";     <<PMBC>> 56069300
             PRINTLINE;                                        <<PMBC>> 56069400
             END;                                              <<PMBC>> 56069500
          BPS0 := BYTE(COMM(VERSION'));                        <<CONFD>>56082000
          TOS := @COMM(UPDATEL')&LSL(1);                       <<CONFD>>56090000
          INBUF(7) := COMM(FIXLEVEL');                         <<CONFD>>56098000
          EXPFLAG := COMM(EXPFLAG');                           <<CONFD>>56101010
             CLEARBIT(BOOTSPACEMAP,INFOSECTOR+2);              <<CONFD>>56174100
             CLEARBIT(BOOTSPACEMAP,INFOSECTOR+3);<<COMM>>      <<CONFD>>56174200
             CLEARBIT(BOOTSPACEMAP,INFOSECTOR+4);<<CL-EXT>>    <<CONFD>>56174300
             CLEARBIT(BOOTSPACEMAP,INFOSECTOR+5);<<CL-EXT>>    <<CONFD>>56174400
              IF COMM(FILESDUMPED)=0 THEN                      <<CONFD>>56252000
                  ELSE IF > THEN COMM(FILESDUMPED):=0 <<NULL>> <<CONFD>>56294000
         CS80'DRIVER( 0,SYSDISCDRT,0,2,          << INIT.   >> <<*DVR*>>56422000
         CS80'DRIVER( 0,SYSDISCDRT,0,2,    << READ DEVICE   >> <<*DVR*>>56426000
                  DISCADR := D'L(INFOSECTOR));                          56529000
                  READTABLE( DISCADR, INFO, INFOSIZE);                  56530000
$EDIT VOID=56536000                                                     56534000
                  TOS := COMM(OLDINFOSIZE); <<SIZE OF TABLE IN <<CONFD>>56538000
                  TOS := COMM(OLDVTABSIZE);                    <<CONFD>>56540000
                  TOS := COMM(FIXLEVEL');                      <<CONFD>>56542000
                  TOS := COMM(UPDATEL');                       <<CONFD>>56544000
                  TOS := COMM(VERSION');                       <<CONFD>>56546000
                  TOS := COMM(MAXINITSEG');                    <<CONFD>>56548000
                  TOS := COMM(DISCENTRY');                     <<CONFD>>56550000
                  TOS := COMM(MITVERSION);                     <<CONFD>>56552000
                  TOS := COMM(MITUPDATE);                      <<CONFD>>56554000
                  TOS := COMM(MITFIX);                         <<CONFD>>56556000
                  TOS := COMM(EXPFLAG');                       <<CONFD>>56557000
                  DTEMP := COMMSECTOR;                         <<CONFD>>56557500
                  READTABLE(DTEMP,COMM,COMMSIZE);              <<CONFD>>56558000
                  COMM(EXPFLAG') := TOS;                       <<CONFD>>56559000
                  COMM(MITFIX) := TOS;                         <<CONFD>>56560000
                  COMM(MITUPDATE) := TOS;                      <<CONFD>>56562000
                  COMM(MITVERSION) := TOS;                     <<CONFD>>56564000
                  COMM(DISCENTRY') := TOS;                     <<CONFD>>56566000
                  COMM(MAXINITSEG') := TOS;                    <<CONFD>>56568000
                  COMM(VERSION') := TOS;                       <<CONFD>>56570000
                  COMM(UPDATEL') := TOS;                       <<CONFD>>56572000
                  COMM(FIXLEVEL') := TOS;                      <<CONFD>>56574000
                  COMM(OLDVTABSIZE) := TOS;                    <<CONFD>>56576000
                  COMM(OLDINFOSIZE) := TOS;                    <<CONFD>>56578000
                  READTABLE(TABLEINFO(CTAB0INFOX+3),CTAB0,     <<CONFD>>56579000
                     CTAB0SIZE);                               <<CONFD>>56579500
                  READTABLE(TABLEINFO(CTABINFOX+3),CTAB,       <<CONFD>>56580000
                     CTABSIZE);                                <<CONFD>>56580500
          HLDEV := COMM(HLDEV');                               <<CONFD>>56583000
          READTABLE(TABLEINFO(CSDEFINFOX+3),CSDEF,CSDEFSIZE);           56584000
          READTABLE(TABLEINFO(CSDVRINFOX+3),CSDVR,CSDVRTSIZE);          56586000
          READTABLE(TABLEINFO(CSTABINFOX+3),CSTAB,             <<CONFD>>56588000
             COMM(CSTABSIZE));                                 <<CONFD>>56588500
$EDIT VOID=56589200                                            <<DEVCO>>56589000
          IF TTDTSIZE <> 0 THEN                                <<DEVCO>>56589400
            READTABLE( TABLEINFO(TTDTINFOX+3), TTDT, TTDTSIZE);<<DEVCO>>56589500
          READTABLE( TABLEINFO(DCTHINFOX+3), DCT'HEAD,         <<DEVCO>>56589600
             DCTHSIZE);                                        <<DEVCO>>56589700
                  ZEROBUF( LDTX, (MAXLDEV + 1) * LDTXSIZE );   <<zrela>>56589800
                  READTABLE(TABLEINFO(LDTXINFOX+3),LDTX,                56590000
                     (HLDEV+1)*LDTXSIZE); <<LDT EXTENSION>>             56592000
$EDIT VOID=56594000                                            <<dctab>>56594000
                  READTABLE(TABLEINFO(DVCLINFOX+3),DCTAB,               56596000
                            DVCLSIZE);                         <<dctab>>56598000
                  ZEROBUF( LDT, ( MAXLDEV + 1 ) * LDTSIZE );   <<zrela>>56599000
                  READTABLE(TABLEINFO(LDTINFOX+3),LDT,                  56600000
                     (HLDEV+1)*LDTSIZE); <<LOGICAL DEVICE TABLE>>       56602000
                  ZEROBUF( LPDT, (MAXLDEV + 1 ) * LPDTSIZE );  <<zrela>>56603000
                  READTABLE(TABLEINFO(LPDTINFOX+3),LPDT,(HLDEV+1)       56604000
                  ZEROBUF( DVRTAB, ( MAXLDEV + 1 ) * DVRSIZE );<<zrela>>56607000
                  READTABLE(TABLEINFO(DVRINFOX+3),DVRTAB,(HLDEV+1)      56608000
$EDIT VOID=56645999                                            <<*DVR*>>56612000
$EDIT VOID=56652000                                            <<*DVR*>>56646000
$EDIT VOID=56664000                                            <<*DVR*>>56652001
$EDIT VOID=56712000                                            <<CONFD>>56668000
$EDIT VOID=56713700                                            <<DEVCO>>56713000
                END;  <<UPDATE>>                               <<CONFD>>56714000
$EDIT VOID=56715010                                            <<CONFD>>56715000
$EDIT VOID=56758000                                            <<CONFD>>56754000
GETDSTS; <<*************** DELETE THIS LINE ***************>>  <<06300>>56833000
          LDT'INDEX := SYSDISC * LDTSIZE;                      <<*LDT*>>56859000
          LPDT'INDEX := SYSDISC * LPDTSIZE;                    <<*LPDT>>56859100
          DVR'INDEX := SYSDISC * DVRSIZE;                      <<*DVR*>>56859200
          SYSDISCTYPE := LDT'DEVICE'TYPE;                      <<*LDT*>>56860000
          SYSDISCSUBTYPE := LPDT'SUBTYPE;                      <<*LPDT>>56862000
          SYSDISCDRT := DVRDRTNUM;                             <<*DVR*>>56864000
            LDT'INDEX := CSLDTXLDEV * LDTSIZE;                 <<*LDT*>>56917000
            IF LDT'DEVICE'TYPE = CSDEV17 THEN                  <<*LDT*>>56918000
    DVR'INDEX := DVRSIZE;  << LDEV # 1 >>                      <<*DVR*>>56933000
    IF SYSTAPEDRT=DVRDRTNUM AND                                <<*DVR*>>56934000
       LPDT'INDEX := SYSDISC * LPDTSIZE;                       <<*LPDT>>56939000
       IF LPDT'SUBTYPE=LH7906 THEN                             <<*LPDT>>56940000
        BEGIN                                                  <<*DVR*>>56993000
        DVR'INDEX := I * DVRSIZE;                              <<*DVR*>>56993100
        IF DVRDRTNUM = SYSTAPEDRT THEN                         <<*DVR*>>56994000
        END;                                                   <<*DVR*>>56997000
    LDT'INDEX := SYSTAPELDEV * LDTSIZE;                        <<*LDT*>>57021000
    LPDT'INDEX := SYSTAPELDEV * LPDTSIZE;                      <<*LPDT>>57021100
    SYSTAPESTYPE:=LPDT'SUBTYPE;                                <<*LPDT>>57022000
    SYSTAPETYPE:=LDT'DEVICE'TYPE;                              <<*LDT*>>57024000
               LDT'INDEX := I * LDTSIZE;                       <<*LDT*>>57056000
               DVR'INDEX := I * DVRSIZE;                       <<*DVR*>>57057000
                 LDT'ACCESS'TYPE = 0 << DIRECT'ACCESS >> THEN  <<*LDT*>>57060000
                  INITDRT( DVRDRTNUM);                         <<*DVR*>>57068000
                  INFO(COLD'LOAD'ID') := COMM(COLDLOADID');    <<CONFD>>57124000
$EDIT                                                                   57126000
                  INFO(DIRSECT) := CTAB(DIRSECT');             <<CONFD>>57130000
                  INFO(VIRMEMSECT) := CTAB(VIRMEMSECT');       <<CONFD>>57132000
                  INFO(RINS) := CTAB(RINS');                   <<CONFD>>57134000
                  INFO(GRINS) := CTAB(GRINS');                 <<CONFD>>57136000
                  INFO(NLOGPROCS):=CTAB(NLOGPROCS');           <<CONFD>>57138000
                  INFO(LOGIDS) := CTAB(LOGIDS');               <<CONFD>>57140000
                  << BUILD COLD LOAD EXT TABLE >>              <<CONFD>>57140100
                  ZEROBUF( LBUF, 256);                         <<CONFD>>57140200
                  LBUF( LOG'FILE'NUM') := COMM( LOGFILENUM');  <<CONFD>>57140300
                  DISC( WRITE, SYSDISC, CLEXTSECT, LBUF, 256); <<CONFD>>57140400
                    MOVE LBUF(LOWINFOWORDS+NTABLES*5):=        <<06067>>57195000
                       INFO(INFO(TCSTPTR)),(INFO(NUTCST')*5);  <<06067>>57196000
$EDIT VOID=57230000                                                     57222000
              INFO(TCSTPTR) := LOWINFOWORDS + (NTABLES * 5);<<TCST PTR>>57238000
              INFO(RINSECT) := (INFO(RINS)*3 +                 <<*RIN2>>57242000
                  DO BEGIN                                              57272000
                     TABLEINFO(X) := OLDTABLEINFO(X);                   57272100
                     TABLEINFO(X) := OLDTABLEINFO(X:=X+1);              57272200
                     X := X+4;                                          57272300
                     END                                                57272400
                  UNTIL X > J;                                          57272500
                  DO BEGIN                                              57280000
                     TCSTINFO(X) := OLDTCSTINFO(I*5+3);                 57281000
                     TCSTINFO(X) := OLDTCSTINFO(X:=X+1);                57282000
                     END                                                57283000
                  UNTIL (I:=I+1) = OLDINFO(NUTCST');                    57283500
                  READTABLE(TABLEINFO(VTABINFOX+3),VTAB,       <<RH.PV>>57318000
                LDT'INDEX := LDEV * LDTSIZE;                   <<*LDT*>>57379000
                LPDT'INDEX := LDEV * LPDTSIZE;                 <<*LPDT>>57379100
                TYPE := LDT'DEVICE'TYPE;                       <<*LDT*>>57380000
                SUBTYP := LPDT'SUBTYPE;                        <<*LPDT>>57382000
                    IF TYPE=0 << MH DISC >> OR                 <<*LDT*>>57470000
                       TYPE = 1 << FH DISC >> THEN             <<*LDT*>>57471000
            BEGIN                                              <<*LDT*>>57659000
            LDT'INDEX := LDEV * LDTSIZE;                       <<*LDT*>>57660000
            LPDT'INDEX := LDEV * LPDTSIZE;                     <<*LPDT>>57661000
               LDT'ACCESS'TYPE = 0 << DIRECT'ACCESS >> THEN    <<*LDT*>>57664000
              TYPE := LDT'DEVICE'TYPE;                         <<*LDT*>>57670000
              SUBTYP := LPDT'SUBTYPE;                          <<*LPDT>>57672000
              ELSE LPDT'NON'SYS'DOMAIN := 0;                   <<*LPDT>>57686000
  SETNSDFLAG:       LPDT'NON'SYS'DOMAIN := 1;                  <<*LPDT>>57838000
                  LPDT'NON'SYS'DOMAIN := 0;                    <<*LPDT>>57886000
                  ELSE IF TYPE = 1 << FH DISC >> THEN          <<*LDT*>>57940000
                  ELSE IF TYPE = 3 << CS80 DEVICE >> THEN      <<*LDT*>>57944000
            IF TYPE=0 <<MH DISC>> OR TYPE=1 <<FH DISC>> THEN   <<*LDT*>>57960000
            ELSE IF TYPE = 3 << CS80 DEVICE >> THEN            <<*LDT*>>58482000
              << PROCESS SUSPECT SECTORS IN DSCT >>            <<*LDT*>>58483000
              CS80'DEFECTS(LDEV,DSCT);                         <<*LDT*>>58484000
              LDT'INDEX := LDEV * LDTSIZE;                     <<*LDT*>>58495000
              LDT'VOLUME'TBL'INDEX := INDEX/VTABSIZE;          <<*LDT*>>58496000
          END;                                                 <<*LDT*>>58517000
              LDT'INDEX := LDEV * LDTSIZE;                     <<*LDT*>>58619000
              LPDT'INDEX := LDEV * LPDTSIZE;                   <<*LPDT>>58619100
              TYPE := LDT'DEVICE'TYPE;                         <<*LDT*>>58620000
              SUBTYP := LPDT'SUBTYPE;                          <<*LPDT>>58622000
              IF TYPE <> 0 << MH DISC >> AND                   <<*LDT*>>58626000
                 TYPE <> 1 << FH DISC >> THEN                  <<*LDT*>>58627000
            BEGIN                                              <<*LDT*>>58957000
            LDT'INDEX := LDEV * LDTSIZE;                       <<*LDT*>>58957100
            LPDT'INDEX := LDEV * LPDTSIZE;                     <<*LPDT>>58957200
            IF NON'DS'LDEV(LDEV) AND                           <<*LDT*>>58958000
              LDT'ACCESS'TYPE = 0 << DIRECT'ACCESS >> THEN     <<*LDT*>>58960000
            IF LPDT'NON'SYS'DOMAIN = 1 THEN                    <<*LPDT>>58962000
              BEGIN   <<ITS A NON-SYSTEM DOMAIN (PV) DISC>>    <<*LDT*>>58964000
              END;                                             <<*LDT*>>58972000
            END;                                               <<*LDT*>>58973000
          LDT'INDEX := SYSDISC * LDTSIZE;                      <<*LDT*>>58973100
          SYSVOL := LDT'VOLUME'TBL'INDEX;                      <<*LDT*>>58974000
EQUATE SYSPHYCST = 192;                                        <<06259>>59021000
INTEGER ENTRIES;                                               <<06259>>59025000
      TEMP,                                                    <<*LDT*>>59038000
      LDT'INDEX,                                               <<*DVR*>>59039000
      LPDT'INDEX,                                              <<*DVR*>>59039100
      LDTX'INDEX,                                              <<*DVR*>>59039110
      DVR'INDEX;                                               <<*DVR*>>59039200
  COMM(HLDEV') := HLDEV;                                       <<TSIZE>>59393000
   <<*******************************************************>> <<zrela>>59394010
   <<    ALLOCATE VIRTUAL DEVICES                           >> <<zrela>>59394020
   <<*******************************************************>> <<zrela>>59394030
                                                               <<zrela>>59394040
   LDEV := 0;                                                  <<zrela>>59394050
   I    := 0;                                                  <<zrela>>59394060
   WHILE I < CTAB0(MAXSPOOLF) DO                               <<zrela>>59394070
      BEGIN                                                    <<zrela>>59394080
      LDEV := LDEV + 1;                                        <<zrela>>59394090
      DVR'INDEX := LDEV * DVRSIZE;                             <<zrela>>59394100
      IF DVRDRTNUM = 0 AND DVRDSBIT = 0 THEN                   <<zrela>>59394110
         BEGIN                                                 <<zrela>>59394120
         LPDT'INDEX := LDEV * LPDTSIZE;                        <<zrela>>59394130
         LPDT(LPDT'INDEX) := 0;                                <<zrela>>59394140
         MOVE LPDT(LPDT'INDEX + 1) := LPDT(LPDT'INDEX)         <<zrela>>59394150
                                      ,(LPDTSIZE-1);           <<zrela>>59394160
         LPDT'VIRTUAL'DEVICE := 1;                             <<zrela>>59394170
         I := I + 1;                                           <<zrela>>59394180
         END;                                                  <<zrela>>59394190
      END;                                                     <<zrela>>59394200
   IF LDEV > HLDEV THEN HLDEV := LDEV;                         <<zrela>>59394210
   LDT  := HLDEV;                                              <<zrela>>59394220
   LPDT := HLDEV;                                              <<zrela>>59394230
   LDTX := HLDEV;                                              <<zrela>>59394240
             LPDT'INDEX := LDEV * LPDTSIZE;                    <<*LPDT>>59413000
             IF LPDT'NON'SYS'DOMAIN = 0 THEN                   <<*LPDT>>59414000
                LDT'INDEX := LDEV * LDTSIZE;                   <<*LDT*>>59437000
                IF LDT'DEVICE'TYPE = 3 << CS80 DEVICE >> THEN  <<*LDT*>>59438000
                  IF LGETYESNO(3000) THEN SYSTAB'CH;           <<sytab>>59467000
LDTX'INDEX := CONSOLELDEV * LDTXSIZE;                          <<*LDTX>>59537000
LDTX'BAUD'RATE'CODE := BAUDRATE;                               <<*LDTX>>59538000
          LDT'NUM'ENTRIES := HLDEV;                            <<*LDT*>>59552000
          LDT'ENTRY'SIZE := LDTSIZE;                           <<*LDT*>>59553000
$EDIT                                                          <<*LDT*>>59554000
$EDIT                                                          <<*LDT*>>59556000
          COMM(DVCLSIZE') := DVCLSIZE;                         <<CONFD>>59558000
          COMM(TTDTSIZE') := TTDTSIZE;                         <<CONFD>>59559000
$EDIT VOID=59560000                                            <<TSIZE>>59560000
          COMM(HVOL') := NVOL;                                 <<CONFD>>59562000
$EDIT                                                          <<*LDT*>>59568000
          LPDT'ENTRY'SIZE := LPDTSIZE;                         <<*LPDT>>59570000
          LPDT'MAX'ENTRIES := HLDEV;                           <<*LPDT>>59571000
              @CLDPNTR := @TABLEINFO(VTABINFOX+3);                      59587000
              DISC(WRITE,SYSDISC,CLDPNTR,VTAB,                          59588000
   SAVE'TABLE'ADDR(CSDVRTSIZE, CSDVR, CSDVRINFOX);             <<zrela>>59606010
   SAVE'TABLE'ADDR(CSDEFSIZE, CSDEF, CSDEFINFOX);              <<zrela>>59606020
   @CLDPNTR := @TABLEINFO( COMMINFOX+3);                                59606022
   CLDPNTR := COMMSECTOR;                                               59606023
   SAVE'TABLE'ADDR( COMMSIZE, COMM, COMMINFOX);                         59606025
   SAVE'TABLE'ADDR((HLDEV+1)*DVRSIZE, DVRTAB, DVRINFOX);       <<zrela>>59606030
   SAVE'TABLE'ADDR(CTAB0SIZE, CTAB0, CTAB0INFOX);              <<zrela>>59606040
   SAVE'TABLE'ADDR(CTABSIZE, CTAB, CTABINFOX);                 <<CONFD>>59606050
   SAVE'TABLE'ADDR((HLDEV+1)*LPDTSIZE, LPDT, LPDTINFOX);       <<zrela>>59606060
   SAVE'TABLE'ADDR((HLDEV+1)*LDTSIZE,                          <<zrela>>59606070
     LDT, LDTINFOX);                                           <<zrela>>59606080
   SAVE'TABLE'ADDR((HLDEV+1)*LDTXSIZE, LDTX, LDTXINFOX);       <<zrela>>59606090
   SAVE'TABLE'ADDR(DCTHSIZE,DCT'HEAD,DCTHINFOX);               <<zrela>>59606100
   SAVE'TABLE'ADDR( DVCLSIZE, DCTAB, DVCLINFOX);               <<zrela>>59606110
   SAVE'TABLE'ADDR( TTDTSIZE, TTDT, TTDTINFOX);                <<zrela>>59606120
   SAVE'TABLE'ADDR((MVOL+1)*VTABSIZE, VTAB, VTABINFOX);        <<zrela>>59606130
   SAVE'TABLE'ADDR(CSTAB, CSTAB, CSTABINFOX);                  <<zrela>>59606140
   STKNRSECT := (TABLEINFO(STACKINFOX)+127)/128;               <<zrela>>59606150
  RECBUFINCR := RECBUFLEN + 1;                                 <<depen>>59610010
  TZTBUFINCR := TZTBUFLEN + 1;                                 <<depen>>59610020
  MOVEDLTABLES;                                                <<zrela>>59610030
  IF LOADFROMTAPE THEN                                         <<zrela>>59610040
     IF SERIALDISCLOAD THEN                                    <<zrela>>59610050
        @TAPEBUF := @LBUF                                      <<zrela>>59610070
     ELSE                                                      <<zrela>>59610090
        @TAPEBUF := @RECBUF;                                   <<zrela>>59610110
            DO BEGIN                                                    59633000
               @CLDPNTR := @TCSTINFO(I*5+3);                            59634000
               TCSTDISC(I+1) := CLDPNTR;                                59635000
               END                                                      59636000
            UNTIL (I:=I+1) = NUTCST;                                    59637000
                  @CLDPNTR := @TCSTINFO(I*5+3);                         59683000
                  IF CLDPNTR > END'RESERVED(SYSDISC) THEN               59684000
$EDIT                                                                   59686000
                     NRSECT := DOUBLE((TCSTINFO(I*5)+127)/128);<<.DAN.>>59690000
$EDIT VOID=59694000                                                     59692000
                     RETDISCSPACE(SYSDISC, NRSECT, CLDPNTR);            59696000
$EDIT                                                                   59698000
$EDIT VOID=59768000                                                     59754000
              TOS := TCST(I&LSL(2)+2); << BANK OF SEGMENT >>            59755000
              TOS := TCST(X:=X+1);  << ADDRESS OF SEGMENT >>            59756000
              DCOREADDR := TOS;                                         59757000
              TOS := TCSTDISC(I);                                       59758000
              TCSTINFO((I-1)*5) := SIZE;                                59759000
              TCSTINFO(X:=X+1) := BANK;                                 59760000
              TCSTINFO(X:=X+1) := COREADDR;                             59761000
              TCSTINFO(X:=X+2) := TOS;                                  59762000
              TCSTINFO(X:=X-1) := TOS;                                  59763000
$EDIT VOID=59858000                                            <<zrela>>59832000
            STKNRSECT := (TABLEINFO(STACKINFOX)+127)/128;               59856000
$EDIT                                                                   59858000
            INFO(DISCENTRY) := COMM(DISCENTRY');               <<CONFD>>59866000
            DVR'INDEX := DVRSIZE;  << POINT TO LDEV # 1 >>     <<*DVR*>>59871000
            INFO(SYSDISCDRT') := DVRDRTNUM;                    <<*DVR*>>59872000
      IF SYSDISCTYPE=3 <<CS80 DEVICE>> THEN<<BUILD THE APPRO->><<*LDT*>>60020000
         BUILD'CS80'BOOT( CLBUF, I)      << PRIATE BOOT  >>    <<*LDT*>>60022000
            LDT'INDEX := SYSDISC * LDTSIZE;                    <<*LDT*>>60063000
            BUF(SDTYPE) := LDT'DEVICE'TYPE;                    <<*LDT*>>60064000
            <<  COMPACT TABLES RESIDING ABOVE Z >>             <<zrela>>60172010
                                                               <<zrela>>60172020
            TOS := @DVRTAB + (HLDEV + 1) * DVRSIZE;            <<zrela>>60172030
            ASSEMBLE(DUP);                                     <<zrela>>60172040
            MOVE * := LPDT, (HLDEV + 1) * LPDTSIZE;            <<zrela>>60172050
            @LPDT := TOS;                                      <<zrela>>60172060
            TOS := @DVRTAB +                                   <<zrela>>60172070
                          (HLDEV +1) * (DVRSIZE + LPDTSIZE);   <<zrela>>60172071
            ASSEMBLE(DUP);                                     <<zrela>>60172080
            MOVE * := LDT, (HLDEV + 1) * LDTSIZE;              <<zrela>>60172090
            @LDT := TOS;                                       <<zrela>>60172100
            TOS := @DVRTAB +                                   <<zrela>>60172110
                      (HLDEV + 1)*(DVRSIZE+LPDTSIZE+LDTSIZE);  <<zrela>>60172111
            ASSEMBLE(DUP);                                     <<zrela>>60172120
            MOVE * := LDTX, (HLDEV + 1) * LDTXSIZE;            <<zrela>>60172130
            @LDTX := TOS;                                      <<zrela>>60172140
                                                               <<zrela>>60172150
$EDIT VOID=60204000                                            <<06302>>60182000
$EDIT VOID=60253900                                            <<DEVCO>>60246000
                  @CLDPNTR := @TABLEINFO(VTABINFOX+3);<<DISC ADR>>      60253000
                  REMRETDSPACE( VTABSECT, CLDPNTR);                     60254000
$EDIT                                                          <<DEVCO>>60256000
                  @CLDPNTR := @TABLEINFO(STACKINFOX+3);<<DISC ADR>>     60261000
                  REMRETDSPACE( STKNRSECT, CLDPNTR);                    60262000
$EDIT                                                                   60264000
                      NRSECT :=DOUBLE((TCSTINFO(I*5)+127)/128);<<03603>>60278000
            TOS := TCSTINFO(X:=X+3);                                    60280000
            TOS := TCSTINFO(X:=X+1);                                    60281000
            DISCADR := TOS;                                             60282000
              IF S0 <> CTAB(DIRSECT') THEN MESSAGE(M2403);     <<CONFD>>60302000
              CTAB(X) := TOS;                                  <<CONFD>>60306000
              IF INFO(RINS)<>CTAB(RINS') OR INFO(GRINS)<>      <<CONFD>>60308000
                CTAB(GRINS') THEN MESSAGE(M2404);              <<CONFD>>60310000
              CTAB(RINS') := INFO(RINS);                       <<CONFD>>60314000
              CTAB(GRINS') := INFO(GRINS);                     <<CONFD>>60316000
              INFO(LOGIDS) := CTAB(LOGIDS');                   <<CONFD>>60318000
              IF INFO(NLOGPROCS) <> CTAB(NLOGPROCS') THEN      <<CONFD>>60320000
              CTAB(NLOGPROCS') := INFO(NLOGPROCS);             <<CONFD>>60324000
$EDIT VOID=60346000                                                     60328000
                <<------------------------------------------->><<SI.DR>>60351000
                << If dir. > 6112 sectors then the beginning >><<SI.DR>>60351100
                << of the dir. space starts at dir. addr - 29>><<SI.DR>>60351200
                <<------------------------------------------->><<SI.DR>>60351300
                IF LOGICAL( INFO (DIRSECT)) > 6112 THEN        <<SI.DR>>60351400
                  REMDISCSPACE (SYSDISC, D'L (INFO (DIRSECT))),<<SI.DR>>60351500
                    INFOD (DIRADR) - 29D)                      <<SI.DR>>60351600
                ELSE                                           <<SI.DR>>60351700
                <<------------------------------------------->><<SI.DR>>60403000
                << Try first to get space dir. addr - 29.    >><<SI.DR>>60403100
                <<------------------------------------------->><<SI.DR>>60403200
                REMDISCSPACE (SYSDISC, D'L (INFO (DIRSECT))),  <<SI.DR>>60403300
                   (INFOD (DIRADR) := INFOD (DIRADR) - 29D));  <<SI.DR>>60403400
                IF <> THEN                                     <<SI.DR>>60403500
                  REMDISCSPACE (SYSDISC, D'L (INFO (DIRSECT))),<<SI.DR>>60404000
                     (INFOD (DIRADR) := INFOD (DIRADR) + 29D));<<SI.DR>>60406000
                                                               <<SI.DR>>60509000
              <<--------------------------------------------->><<SI.DR>>60509100
              << If allocated directory space is > 6112 then >><<SI.DR>>60509200
              << dir. bit map is 32 sectors long and the dir.>><<SI.DR>>60509300
              << addr. must be set to the 29 sector of the   >><<SI.DR>>60509400
              << directory space.                            >><<SI.DR>>60509500
              <<--------------------------------------------->><<SI.DR>>60509600
              IF LOGICAL (INFO (DIRSECT)) > 6112 THEN          <<SI.DR>>60509700
                 INFOD (DIRADR) := INFOD (DIRADR) + 29D;       <<SI.DR>>60509800
          ADDRESS(0):= SYSBASE;                                <<06259>>60638000
          INITTABLE(SYSSIZE, 1, BANK0ABOVE, TRUE); <<SYSGLOB>> <<06259>>60640000
          ADDRESS(0):= ADDRESS(0)+FIRMWARESIZE;                <<06259>>60642000
          <<SET LOGICAL MAPPING FLAG IN SYSGLOB>>              <<06091>>60642500
          LOGICALMAPPING := LOGICALMAPPING';                   <<06091>>60643000
          INITTABLE(SYSEXTSIZE, 1, BANK0ABOVE, TRUE,,          <<06259>>60644000
                    SYSEXTPTR);          <<SYSGLOB EXT>>       <<06259>>60645000
$EDIT VOID=60650000                                            <<06259>>60646000
          ABS(SYSTCST) := ABS(CSTP)-SYSBASE;                   <<06259>>60654000
$EDIT                                                          <<06259>>60658000
             HIDRT := MAX( HI'STARFISH'DRT, COMM(DRTNUM));     <<CONFD>>60706000
             HIDRT := COMM(DRTNUM);                            <<CONFD>>60738000
          HIDRT := COMM(DRTNUM) + (DEVPERCHAN -                <<CONFD>>60746000
                   COMM(DRTNUM) MOD DEVPERCHAN) - 1;           <<CONFD>>60748000
             INITTABLE(I, DRTSIZE, BANK0ONLY, FALSE);          <<06259>>60776000
             LDT'INDEX := I * LDTSIZE;                         <<*LDT*>>60848000
             DVR'INDEX := I * DVRSIZE;                         <<*DVR*>>60849000
             IF LDT'ACCESS'TYPE = 0 << DIRECT'ACCESS >> AND    <<*LDT*>>60850000
             DVRDRTNUM <>0 AND                                 <<*DVR*>>60852000
             DVRDSBIT=0 <<NOT DS DEV>> THEN                    <<*DVR*>>60854000
                INITDRT( DVRDRTNUM );                          <<*DVR*>>60856000
$EDIT VOID=60936000    <<DST, CST AND CSTX>>                   <<06259>>60874000
   <<------------------------>>                                <<06259>>60876000
   <<   DST, CST, AND CSTX   >>                                <<06259>>60877000
   <<------------------------>>                                <<06259>>60878000
                                                               <<06259>>60879000
   << initialize DST table >>                                  <<06259>>60880000
   ENTRIES := (CTAB(DSTNUM)+7)/8*8;                            <<CONFD>>60881000
   MEMADR := INITTABLE(ENTRIES,CSTSIZE,BANK0ABOVE,TRUE,        <<06259>>60882000
      DSTDSTN,SYSDST);                                         <<06259>>60883000
   ABS(DSTP) := LOGICAL(MEMADR);                               <<06259>>60884000
   INITFREELIST(MEMADR,ENTRIES,CSTSIZE,FREEDSTN);              <<06259>>60885000
   INSERTDST(SYSBASE D,SYSDSTN,256,0);                         <<06259>>60886000
   ABS(DFC) := TABSIZE;                                        <<06259>>60887000
                                                               <<06259>>60888000
   << initialize CST table >>                                  <<06259>>60889000
   ENTRIES := IF LOGICALMAPPING THEN CTAB(CSTNUM)+SYSPHYCST    <<CONFD>>60890000
      ELSE IF CTAB(CSTNUM)>192 THEN 192 ELSE CTAB(CSTNUM);     <<CONFD>>60891000
   ENTRIES := (ENTRIES+7)/8*8;                                 <<06259>>60892000
   MEMADR := INITTABLE(ENTRIES,CSTSIZE,BANK0ABOVE,TRUE,        <<06259>>60893000
      CSTDSTN,SYSCST);                                         <<06259>>60894000
   IF LOGICALMAPPING THEN                                      <<06259>>60895000
      BEGIN         << MAPPING FIRMWARE PRESENT >>             <<06259>>60896000
      << THE FREE PHYSICALLY AND LOGICALLY MAPPED    >>        <<06259>>60897000
      << CST'S WILL BE LINKED INTO SEPARATE LISTS.   >>        <<06259>>60898000
      << THE CST HEADER WILL POINT TO THE PHYSICALLY >>        <<06259>>60899000
      << MAPPED CST'S.  JUST BEFORE INITIAL EXITS    >>        <<06259>>60900000
      << TO PROGEN THE HEADER WILL BE SWITCHED TO    >>        <<06259>>60901000
      << POINT TO THE LOGICALLY MAPPED CST'S.        >>        <<06259>>60902000
      << LINK LOGICALLY MAPPED CST'S >>                        <<06259>>60903000
      INITFREELIST(MEMADR,CTAB(CSTNUM)+SYSPHYCST,CSTSIZE,      <<CONFD>>60904000
         FREECSTN);                                            <<06259>>60905000
      << LINK PHYSICALLY MAPPED CST'S >>                       <<06259>>60906000
      INITFREELIST(MEMADR,SYSPHYCST,CSTSIZE,FREECSTN);         <<06259>>60907000
      END                                                      <<06259>>60908000
   ELSE                                                        <<06259>>60909000
      BEGIN             << NO MAPPING FIRMWARE >>              <<06259>>60910000
      <<THE CST HEADER WILL POINT TO THE CST'S>>               <<06259>>60911000
      INITFREELIST(MEMADR,CTAB(CSTNUM),CSTSIZE,FREECSTN);      <<CONFD>>60912000
      END;                                                     <<06259>>60913000
   ABS(DFS) := ABS(DFC) + TABSIZE; << OFFSET TO CSTX >>        <<06259>>60914000
                                                               <<06259>>60915000
   << initialize CSTX table >>                                 <<06259>>60916000
   ENTRIES := (CTAB(CSTXNUM)+7)/8*8;                           <<CONFD>>60917000
   MEMADR := INITTABLE(ENTRIES,CSTSIZE,BANK0ABOVE,TRUE,        <<06259>>60918000
      CSTXDSTN);                                               <<06259>>60919000
   INITFREELIST(MEMADR,ENTRIES,CSTSIZE,FREECSTXN);             <<06259>>60920000
   << zero first two words placed by initfreelist >>           <<06259>>60921000
   SDEA( MEMADR, 0D);                                          <<06259>>60922000
                                                               <<06259>>60923000
   <<----------------------------------->>                     <<06259>>60924000
   <<   INTERRUPT CONTROL STACK (ICS)   >>                     <<06259>>60925000
   <<----------------------------------->>                     <<06259>>60926000
                                                               <<06259>>60927000
   MEMADR := INITTABLE(ICSQMINUS+CTAB(ICSSIZE),1,BANK0ONLY,    <<06259>>60928000
      TRUE,ICSDSTN);                                           <<06259>>60929000
   ABS(SYSICS) := BUILDSYSPTR(MEMADR+DOUBLE(ICSQMINUS));       <<06259>>60930000
   PUSH( DB, DL, Z);                                           <<06259>>60931000
   ICS( -STDB')  := TOS;   << DB ADDRESS >>                    <<06259>>60932000
   ICS( -SBANK') := TOS;   << S-BANK     >>                    <<06259>>60933000
   ICS( -DL')    := TOS;   << DL         >>                    <<06259>>60934000
   ICS( -Z')     := TOS;   << Z          >>                    <<06259>>60935000
   ABS(QI) := LOGICAL(MEMADR)+ICSQMINUS;                       <<06259>>60936000
   ABS(ZI) := LOGICAL(MEMADR)+TABSIZE-2;                       <<06259>>60937000
                                                               <<PMBC2>>60937050
   <<----------------------------------------->>               <<PMBC2>>60937100
   <<   RESERVE MEMORY SPACE FOR PMBC TABLE   >>               <<PMBC2>>60937200
   <<----------------------------------------->>               <<PMBC2>>60937300
                                                               <<PMBC2>>60937400
   IF PMBCFIRMWARE THEN                                        <<PMBC2>>60937500
      BEGIN                                                    <<PMBC2>>60937600
      DCOREADDR := INITTABLE(256,1,BANK0ONLY,FALSE);           <<PMBC2>>60937700
      ABS(SYSPMBC) := COREADDR;                                <<PMBC2>>60937800
      END;                                                     <<PMBC2>>60937900
                                                               <<PMBC2>>60937910
$EDIT                                                          <<06259>>60954000
          INSERTDST(*, DIRDSTN, DIRLEN, 0);                    <<06259>>60956000
          DIR (TEMP-DIRY) := 3;     << System account index  >><<SI.DR>>60976000
          DIR (X).(0:8) := SYSDISC; << Set system ldev       >><<SI.DR>>60981000
$EDIT VOID=61010000                                            <<SI.DR>>60990000
$EDIT                                                          <<06259>>61026000
          INSERTDST(*, DIRSPDSTN, DIRSPSIZE', 0);              <<06259>>61028000
$EDIT VOID=61060000                                            <<SI.DR>>61030000
          << Initialize directory space mgr. control data    >><<SI.DR>>61032000
          DIRSP := 0;                                          <<SI.DR>>61033000
          MOVE DIRSP (1) := DIRSP, (127);                      <<SI.DR>>61034000
          DIRSP (15) := INFO (DIRSECT);<< Save directory size>><<SI.DR>>61035000
          <<------------------------------------------------->><<SI.DR>>61035100
          << If directory is > 6112 sectors (dir. bit map > 3>><<SI.DR>>61035200
          << sectors) then the directory size in DSM DST must>><<SI.DR>>61035300
          << be lower by 29 sectors because new directory bit>><<SI.DR>>61035400
          << map is 32 sectors long and only 3 sectors of    >><<SI.DR>>61035500
          << of the directory bit map are represented in the >><<SI.DR>>61035600
          << directory bit map.                              >><<SI.DR>>61035700
          <<------------------------------------------------->><<SI.DR>>61035800
          IF LOGICAL( DIRSP (15)) > 6112 THEN                  <<SI.DR>>61035900
             DIRSP (15) := DIRSP (15) - 29;                    <<SI.DR>>61035910
          DIRSP (14) := 1; << Requested sector               >><<SI.DR>>61036000
                                                               <<SI.DR>>61037000
$EDIT VOID=61086000                                            <<CLEXT>>61074000
          DISC( READ, SYSDISC, CLEXTSECT, LBUF, 256);          <<CLEXT>>61075000
          IF LBUF(LOG'FILE'NUM') >= 9999 THEN                  <<CLEXT>>61076000
             LBUF(LOG'FILE'NUM') := 0                          <<CLEXT>>61077000
          ELSE                                                 <<CLEXT>>61078000
             LBUF(LOG'FILE'NUM') := LBUF(LOG'FILE'NUM')+1;     <<CLEXT>>61079000
          ABSOLUTE(LOGFILENUM) := LBUF(LOG'FILE'NUM');         <<CLEXT>>61080000
          DISC( WRITE, SYSDISC, CLEXTSECT, LBUF, 256);         <<CLEXT>>61081000
    EQUATE SEED = %123456; <<STARTING VALUE FOR CHECKSUM>>     <<DEVCO>>61177000
$EDIT                                                          <<*RIN*>>61178000
$EDIT VOID=61182000                                            <<dctab>>61182000
INTEGER                                                        <<*RIN*>>61184100
   LEN,                                                        <<*RIN*>>61184200
   LENGTH,                                                     <<*RIN*>>61184300
   NRRINS,                                                     <<*RIN*>>61184400
   NRGRINS,                                                    <<*RIN*>>61184500
   GAREA,                                                      <<*RIN*>>61184600
   INX,                                                        <<*RIN*>>61184700
   OLDINX,                                                     <<*RIN*>>61184800
   CNT;                                                        <<*RIN*>>61184900
DOUBLE                                                         <<*RIN*>>61185000
   MEMADR;                                                     <<*RIN*>>61185100
INTEGER ARRAY                                                  <<*RIN*>>61185200
   RIN(*) = DB+0;                                              <<*RIN*>>61185300
INTEGER POINTER                                                <<*RIN*>>61185400
   GLAREA = DB+1;                                              <<*RIN*>>61185500
     INTEGER                                                   <<*LDT*>>61187000
         LDT'INDEX,                                            <<*DVR*>>61187100
         LPDT'INDEX,                                           <<*DVR*>>61187200
         DVR'INDEX;                                            <<*DVR*>>61187300
$EDIT VOID=61382000                                            <<*RIN*>>61212000
   <<-------------------------->>                              <<*RIN*>>61213000
   <<   INITIALIZE RIN TABLE   >>                              <<*RIN*>>61214000
   <<-------------------------->>                              <<*RIN*>>61215000
                                                               <<*RIN*>>61216000
   NRRINS := INFO(RINS);                                       <<*RIN*>>61217000
   NRGRINS := INFO(GRINS);                                     <<*RIN*>>61218000
   LENGTH := (NRRINS+1)*3+NRGRINS*12+4;                        <<*RIN*>>61219000
   MEMADR := INITTABLE(LENGTH,1,TEMPORARY'TAB,FALSE,RINTDSTN); <<*RIN*>>61220000
   IF RELOAD THEN                                              <<*RIN*>>61221000
      IF COMM(FILESDUMPED) = 0 THEN                            <<CONFD>>61222000
         BEGIN  << INITIALIZE TO NULL TABLE >>                 <<*RIN*>>61223000
         EXCHANGEDB( RINTDSTN );                               <<*RIN*>>61224000
         << INITIALIZE FREE LIST >>                            <<*RIN*>>61225000
         INX := 0;                                             <<*RIN*>>61226000
         WHILE INX < NRRINS*3 DO                               <<*RIN*>>61227000
            BEGIN                                              <<*RIN*>>61228000
            RIN( INX) := INX+3;                                <<*RIN*>>61229000
            INX := INX+3;                                      <<*RIN*>>61230000
            END;                                               <<*RIN*>>61231000
         << INITIALIZE GLOBAL AREA >>                          <<*RIN*>>61232000
         @GLAREA := (NRRINS+1) * 3;                            <<*RIN*>>61233000
         IF NRGRINS <> 0 THEN                                  <<*RIN*>>61235000
            BEGIN                                              <<*RIN*>>61236000
            << INITIALIZE HEADER ENTRY >>                      <<*RIN*>>61237000
            GLAREA := 4;                                       <<*RIN*>>61238000
            GLAREA(1) := NRGRINS;   << # ENTRIES >>            <<*RIN*>>61239000
            GLAREA(2) := NRGRINS;   << # FREE >>               <<*RIN*>>61240000
            << INITIALIZE GLOBAL FREE LIST >>                  <<*RIN*>>61241000
            INX := GLAREA;                                     <<*RIN*>>61242000
            CNT := 1;                                          <<*RIN*>>61242100
            WHILE CNT < NRGRINS DO                             <<*RIN*>>61243000
               BEGIN                                           <<*RIN*>>61244000
               GLAREA( INX) := INX+12;                         <<*RIN*>>61245000
               INX := INX+12;                                  <<*RIN*>>61246000
               CNT := CNT+1;                                   <<*RIN*>>61246100
               END;                                            <<*RIN*>>61247000
            END;                                               <<*RIN*>>61248000
         EXCHANGEDB( 0 );                                      <<*RIN*>>61249000
         END                                                   <<*RIN*>>61250000
      ELSE                                                     <<*RIN*>>61251000
         BEGIN  <<READ IT OFF THE TAPE>>                       <<*RIN*>>61252000
         INX := 0;                                             <<*RIN*>>61253000
         WHILE INX <> LENGTH DO                                <<*RIN*>>61254000
            BEGIN                                              <<*RIN*>>61255000
            LEN := IF LENGTH-INX > TAPERECSIZE THEN            <<*RIN*>>61256000
               TAPERECSIZE ELSE LENGTH-INX;                    <<*RIN*>>61257000
            COLD'LOAD'MEDIA( READ,TAPEBUF,LEN);                <<*RIN*>>61258000
            WHILE END'OF'TAPE DO                               <<*RIN*>>61259000
               BEGIN                                           <<*RIN*>>61260000
               NEXTREEL(TAPEBUF);                              <<*RIN*>>61261000
               COLD'LOAD'MEDIA( READ,TAPEBUF,LEN);             <<*RIN*>>61262000
               END;                                            <<*RIN*>>61263000
            MTDS( RINTDSTN, INX, TAPEBUF, LEN);                <<*RIN*>>61264000
            INX := INX+LEN;                                    <<*RIN*>>61265000
            END;                                               <<*RIN*>>61266000
         GO CLEANRIN;                                          <<*RIN*>>61267000
         END                                                   <<*RIN*>>61268000
   ELSE                                                        <<*RIN*>>61269000
      BEGIN  << NOT A RELOAD -- USE COPY ON DISC >>            <<*RIN*>>61270000
      DISC'(READ,SYSDISC,INFOD(RINADR),MEMADR,LENGTH);         <<*RIN*>>61271000
CLEANRIN:                                                      <<*RIN*>>61272000
      EXCHANGEDB( RINTDSTN );                                  <<*RIN*>>61273000
      OLDINX := 0;  << LAST FREE RIN >>                        <<*RIN*>>61274000
      INX := 3;                                                <<*RIN*>>61275000
      WHILE INX <= NRRINS*3 DO                                 <<*RIN*>>61276000
         BEGIN                                                 <<*RIN*>>61277000
         IF RIN( INX).(0:2) <> 2 THEN                          <<*RIN*>>61278000
            BEGIN   << NOT A GLOBAL RIN >>                     <<*RIN*>>61279000
            RIN( INX) := 0; << MAKE LAST >>                    <<*RIN*>>61280000
            RIN( OLDINX) := INX; << PT. PREV LAST TO LAST >>   <<*RIN*>>61281000
            OLDINX := INX;                                     <<*RIN*>>61282000
            END;                                               <<*RIN*>>61283000
         RIN( INX+1) := 0;                                     <<*RIN*>>61284000
         RIN( INX+2) := 0;                                     <<*RIN*>>61285000
         INX := INX + 3;                                       <<*RIN*>>61286000
         END;                                                  <<*RIN*>>61287000
      EXCHANGEDB( 0 );                                         <<*RIN*>>61288000
      END;                                                     <<*RIN*>>61289000
   ABSENT( RINTDSTN, -1, INFOD(RINADR));                       <<*RIN*>>61290000
                                                               <<*RIN*>>61291000
         IF COMM(FILESDUMPED) = 0 THEN                         <<CONFD>>61406000
$EDIT VOID=61486000                                                     61470000
$EDIT VOID=61630000                                            <<SI.DR>>61620000
          IF COMM(FILESDUMPED) = 0 THEN                        <<CONFD>>61642000
              TOS := DIRECNULL(CTAB(DIRSECT'));                <<CONFD>>61646000
$EDIT VOID=61810000                                            <<SI.DR>>61697000
              <<--------------------------------------------->><<SI.DR>>61698000
              << Read directory from tape. If dir. > 6112    >><<SI.DR>>61699000
              << then directory addr. must be adjusted. In   >><<SI.DR>>61700000
              << such case the dir. addr. does not points to >><<SI.DR>>61701000
              << the beginning of dir. space but to 29 sector>><<SI.DR>>61702000
              << of the dir. space.                          >><<SI.DR>>61703000
              <<--------------------------------------------->><<SI.DR>>61704000
              IF LOGICAL (INFO (DIRSECT)) > 6112 THEN          <<SI.DR>>61705000
                 WRITEDISC (INFOD (DIRADR) - 29D)              <<SI.DR>>61706000
              ELSE                                             <<SI.DR>>61707000
              WRITEDISC(INFOD (DIRADR));                       <<depen>>61708000
                                                               <<SI.DR>>61810000
$EDIT VOID=61984000                                            <<DEVCO>>61920000
                                                               <<DEVCO>>61921000
   CTABFNUM := FOPEN( CTABFILE);                               <<DEVCO>>61922000
   TOS := FCBDBL + D'L(FCB(FCBSECTOFF)));                      <<DEVCO>>61923000
   BS1 := 0;   << ZERO LDEV >>                                 <<DEVCO>>61924000
   DTEMP := TOS; << USED BY WRITECONFTABLE >>                  <<DEVCO>>61925000
   COMM(CSTABSIZE) := CSTAB;                                   <<CONFD>>61926000
   CTAB0(CTABVERSION) := CTABCURVERSION;                       <<CONFD>>61926100
   CTAB0(CTABCHECKSUM) := CALCULATECHECKSUM( CTAB0(1),         <<CONFD>>61926200
      127, NOT(SEED));                                         <<CONFD>>61926300
   WRITECONFTABLE( CTAB0SIZE, CTAB0RECNUM, CTAB0, CTAB0INFOX); <<DEVCO>>61927000
   WRITECONFTABLE( CTABSIZE, CTABRECNUM, CTAB, CTABINFOX);     <<CONFD>>61928000
   FCLOSE( CTABFNUM);                                          <<DEVCO>>61929000
                                                               <<DEVCO>>61930000
   << WRITE I/O CONFIGURATION TO DISC >>                       <<DEVCO>>61931000
                                                               <<DEVCO>>61932000
   DEVFNUM := FOPEN( DEVFILE);                                 <<DEVCO>>61933000
   TOS := FCBDBL + D'L(FCB(FCBSECTOFF)));                      <<DEVCO>>61934000
   BS1 := 0;   << ZERO LDEV >>                                 <<DEVCO>>61935000
   DEVFILEADR := TOS;                                          <<DEVCO>>61936000
   ZEROBUF( DEVREC0, 128);                                     <<DEVCO>>61937000
   DEVVERSION := DEVCURVERSION;                                <<DEVCO>>61938000
   DEVNEXT := 2;                                               <<DEVCO>>61939000
   DEVHLDEV := COMM(HLDEV');                                   <<TSIZE>>61940000
   DEVHDRT := HIDRT;                                           <<DEVCO>>61941000
   DEVNRADVRS := COMM(NUMADVRS); << NR. CS DRIVERS >>          <<CONFD>>61942000
                                                               <<DEVCO>>61943000
   WRITEDEVFILE( DEVDVR, DVRTAB, (HLDEV+1)*DVRSIZE, DVRINFOX); <<DEVCO>>61944000
   WRITEDEVFILE( DEVLPDT, LPDT, (HLDEV+1)*LPDTSIZE, LPDTINFOX);<<DEVCO>>61945000
   WRITEDEVFILE( DEVLDT, LDT, (HLDEV+1)*LDTSIZE, LDTINFOX);    <<DEVCO>>61946000
   WRITEDEVFILE( DEVLDTX, LDTX, (HLDEV+1)*LDTXSIZE, LDTXINFOX);<<DEVCO>>61947000
   WRITEDEVFILE( DEVDCTH, DCT'HEAD, DCTHSIZE, DCTHINFOX);      <<DEVCO>>61948000
   WRITEDEVFILE( DEVDCT, DCTAB, DVCLSIZE, DVCLINFOX);          <<DEVCO>>61949000
   WRITEDEVFILE( DEVTTDT, TTDT, TTDTTSIZE, TTDTINFOX);         <<DEVCO>>61950000
   WRITEDEVFILE( DEVCSDVR, CSDVR, CSDVRTSIZE, CSDVRINFOX);     <<DEVCO>>61951000
   WRITEDEVFILE( DEVCSDEF, CSDEF, CSDEFSIZE, CSDEFINFOX);      <<DEVCO>>61952000
   WRITEDEVFILE( DEVCSTAB, CSTAB, CSTAB, CSTABINFOX);          <<DEVCO>>61953000
   DEVCHECKSUM := CALCULATECHECKSUM( DEVREC0(1), 127, SEED);   <<DEVCO>>61954000
   FWRITE( DEVFNUM, 0D, DEVREC0, DEVREC0SIZE);                 <<DEVCO>>61955000
   FCLOSE( DEVFNUM);                                           <<DEVCO>>61956000
                                                               <<DEVCO>>61957000
   WRITEDEVTABLE( VTABTSIZE, VTAB, VTABINFOX,                  <<DEVCO>>61958000
      (MVOL+1)*VTABSIZE);                                      <<DEVCO>>61959000
   DISC( SYSDISC, WRITE, COMMSECTOR, COMM, COMMSIZE);                   61959500
$EDIT VOID=62035999                                            <<zrela>>62018000
$EDIT VOID=62036000                                            <<zrela>>62036000
$EDIT VOID=62071999                                            <<zrela>>62036001
$EDIT VOID=62072000                                            <<zrela>>62072000
$EDIT VOID=62074000                                            <<zrela>>62072001
$EDIT VOID=62078000                                            <<CONFD>>62076000
          OLDINFOINCR := -COMM(OLDINFOSIZE); <<DON'T NEED IT AN<<CONFD>>62080000
$EDIT VOID=62084000                                            <<DCLAS>>62084000
$EDIT VOID=62206000                                            <<06259>>62121000
PROCEDURE MAINSEG2;                                            <<06259>>62122000
BEGIN                                                          <<06259>>62123000
   DEFINE                                                      <<06259>>62124000
      TAPEBLOCKSIZE     = LBUF(27)#;                           <<06259>>62125000
   INTEGER POINTER                                             <<06259>>62126000
      DRIVERENT;                                               <<06259>>62127000
   LOGICAL                                                     <<06259>>62128000
      ADCCRESERVED := FALSE,                                   <<06259>>62129000
      SEEKMASK,                                                <<06259>>62130000
      DRIVERADR,     << ABS ADR OF CS DRIVER SECT >>           <<06259>>62130100
      POINTERADR,                                              <<06259>>62130200
      SECONDPASS;                                              <<06259>>62131000
   EQUATE                                                      <<06259>>62132000
      GLINKAGE     = 24, << LOCATION IN GROUP ENTRY >>         <<06259>>62133000
      GROUPLEVEL   = 1,                                        <<06259>>62134000
      PV           = 1;                                        <<06259>>62135000
   DEFINE                                                      <<06259>>62136000
      TERMTYP     = (0:7)#,                                    <<*LDT*>>62136100
      TERMSPEED   = (10:6)#,                                   <<*LDTX>>62136200
      PVF         = 0:1 #;                                     <<06259>>62137000
   BYTE POINTER                                                <<06259>>62138000
      LCNPTR;                                                  <<06259>>62139000
   DOUBLE                                                      <<06259>>62140000
      ILTLOC,         << ABSOLUTE LOCATION OF CURRENT ILT >>   <<06259>>62141000
      DITLOC,         << ABSOLUTE LOCATION OF CURRENT DIT >>   <<06259>>62142000
      TABLOC,         << ABSOLUTE ADDRESS OF CURRENT TABLE >>  <<06259>>62142100
      MEMLOC,         << ABSOLUTE MEMORY LOCATION  >>          <<06259>>62143000
      WCSADR;         << DISC ADDRESS OF WCS >>                <<06259>>62144000
   INTEGER                                                     <<06259>>62145000
      ILTADR    = ILTLOC + 1,                                  <<06259>>62146000
      DITADR    = DITLOC + 1,                                  <<06259>>62147000
      TABADR    = TABLOC + 1,                                  <<06259>>62148000
      TOTILTSIZE,    << TOTAL ILT SIZE >>                      <<06259>>62149000
      STDADR,        << ABS ADR OF CS STANDARD SECT >>         <<06259>>62150000
      CONTADR,       << ABS ADR OF CS CONTROL SECT >>          <<06259>>62151000
      DRIVERDISP,    << DVR SECT DISP OF BASE OF DIT >>        <<06259>>62154000
      RELPRI,        << RELATIVE PRIORITY >>                   <<06259>>62161000
      ABSPRI,        << ABSOLUTE PRIORITY >>                   <<06259>>62162000
      NCHANQ,        << # OF MULTI-CONTROLLER CHANS >>         <<06259>>62163000
$EDIT VOID=62164000                                            <<*DVR*>>62164000
      LCN,                                                     <<06259>>62165000
      LDEV,                                                    <<06259>>62166000
      DITSIZE,       << SIZE OF DIT >>                         <<06259>>62167000
      SIOSIZE,       << SIZE OF SIO PROGRAM >>                 <<06259>>62168000
      STATSIZE,      << SIZE OF STATUS RETURN AREA >>          <<06259>>62169000
      CHANNEL,       << SOFTWARE CHANNEL NUMBER >>             <<06259>>62170000
      UNITN,         << UNIT NUMBER >>                         <<*DVR*>>62171000
      ILTSTART,      << BASE ADDRESS OF ILT >>                 <<06259>>62172000
      MOVE'LEN,                                                <<06259>>62173000
      LDTXINDEX,                                               <<06259>>62174000
      TYPE,           << DEVICE TYPE >>                        <<06259>>62175000
      SUBTYP,         << DEVICE SUBTYP >>                      <<06259>>62176000
      DVRINDEX,                                                <<06259>>62177000
      LCMEDPDMAX,                                              <<06259>>62178000
      DEFDVRINDEX,                                             <<06259>>62179000
      CONTSECTSIZE,                                            <<06259>>62180000
      I,                                                       <<06259>>62181000
      J,                                                       <<06259>>62182000
      K,                                                       <<06259>>62183000
      N,                                                       <<*LDT*>>62184000
      LDT'INDEX,       << INDEX INTO LDT >>                    <<*DVR*>>62184100
      LPDT'INDEX,                                              <<*LDTX>>62184200
      LDTX'INDEX,                                              <<*DVR*>>62184300
      DVR'INDEX;                                               <<*DVR*>>62184400
                                                               <<06259>>62185000
   << THE FOLLOWING GROUP OF VARIABLES ARE USED TO  >>         <<06259>>62186000
   << HOLD A DIRECTORY ENTRY - DO NOT DISTURP ORDER >>         <<06259>>62187000
   DOUBLE                                                      <<06259>>62188000
      NAM1,                                                    <<06259>>62189000
      NAM2,                                                    <<06259>>62190000
      FILEADR;                                                 <<06259>>62191000
   LOGICAL                                                     <<06259>>62192000
      FILEADR1 = FILEADR,                                      <<06259>>62193000
      FILEADR2 = FILEADR+1;                                    <<06259>>62194000
   INTEGER ARRAY FILENTRY(*) = NAM1;                           <<06259>>62195000
   BYTE VOLUME = FILEADR;                                      <<06259>>62196000
                                                               <<06259>>62197000
   LOGICAL ARRAY DRIV'WNAME(0:3);  << TEMP STORAGE FOR      >> <<zrela>>62197100
   BYTE ARRAY DRIV'BNAME(*) = DRIV'WNAME;<< DRIVER NAME     >> <<*DVR*>>62197200
                                                               <<*DVR*>>62197300
   DOUBLE POINTER                                              <<csdec>>62197400
      DBLPTR;                                                  <<csdec>>62197500
   INTEGER ARRAY              <<STT #'S OF INITIALIZATION>>    <<06259>>62198000
      INIT'LIZAT'NSTT(0:31),  << ROUTINES OF ADDITIONAL  >>    <<06259>>62199000
                              << CS DRIVERS              >>    <<06259>>62200000
      ILT(0:ILTSIZE),         << TEMP BUFFER FOR ILT >>        <<06259>>62201000
      CHNUMB(0:63) = Q;       << RESOURCE QUEUE # >>           <<06259>>62202000
              FLFCBVECT := 0D;                                 <<*FLAB>>62246000
                FLFCBVECT := 0D;                               <<*FLAB>>62362000
              SYSTAPETYPE = 2 << FLOPPY DISC >> THEN           <<*LDT*>>62390000
              LDT'INDEX := LDEV * LDTSIZE;                     <<*LDT*>>62725000
              LPDT'INDEX := LDEV * LPDTSIZE;                   <<*LPDT>>62725100
              TOS := LDT'DEVICE'TYPE & LSL(2);                 <<*LDT*>>62726000
              TOS.(4:4) := LPDT'SUBTYPE;                       <<*LPDT>>62728000
              FLFCBVECT := 0D;                                 <<*FLAB>>62732000
              LDT'INDEX := LDEV * LDTSIZE;                     <<*LDT*>>62747000
              TOS.(0:8) := LDT'VOLUME'TBL'INDEX;               <<*LDT*>>62748000
   RECBUFINCR := -RECBUFLEN;                                   <<zrela>>63015000
   TZTBUFINCR := -TZTBUFLEN;                                   <<zrela>>63016000
$EDIT VOID=63070000                                            <<zrela>>63016001
   MOVEDLTABLES;                                               <<zrela>>63017000
   PUSH(DB);                                                   <<zrela>>63018000
   TOS := TOS + @DIR;                                          <<zrela>>63019000
   DST(DIRDSTN & LSL(2) + 3) := TOS;                           <<zrela>>63020000
   PUSH(DB);                                                   <<zrela>>63023000
   TOS := TOS + @DIRSP;                                        <<zrela>>63024000
   DST(DIRSPDSTN & LSL(2) + 3) := TOS;                         <<zrela>>63025000
$EDIT VOID=63740000    << BYE-BYE Grizzly Kludge!!!  >>        <<06259>>63074000
$EDIT VOID=63802000    <<PCB>>                                 <<06259>>63742000
$EDIT VOID=63832000    <<ICS, CORE SIZE>>                      <<06259>>63804000
   <<--------------->>                                         <<06259>>63821000
   <<   CORE SIZE   >>                                         <<06259>>63822000
   <<--------------->>                                         <<06259>>63823000
                                                               <<06259>>63824000
   INSERTDST(0D,COREDSTN,CTAB0(CORESIZE)&LSL(2),0);            <<06259>>63825000
                                                               <<06259>>63826000
              DO                                               <<*LDT*>>63858000
                BEGIN                                          <<*LDT*>>63858100
                LDT'INDEX := LDEV * LDTSIZE;                   <<*LDT*>>63858200
                DVR'INDEX := LDEV * DVRSIZE;                   <<*DVR*>>63858300
                IF DVRDRTNUM = DRTN                            <<*DVR*>>63859000
                LDT'DEVICE'TYPE <= CSDEV19 THEN                <<*LDT*>>63862000
                  MOVE DRIV'WNAME := DVRNAME,(4);              <<*DVR*>>63866000
$EDIT VOID=63868000                                            <<*DVR*>>63868000
$EDIT VOID=63888000                                            <<*DVR*>>63886000
                      IF COMPARE'WORDS(DRIV'WNAME,DRNAME,4)    <<*DVR*>>63890000
                        THEN GOTO NEXTCSDRT;                   <<*DVR*>>63891000
                  FORMATCSDVRENTRY(DRIV'BNAME);                <<*DVR*>>63896000
                END                                            <<*LDT*>>63899000
          WHILE(I:=I+1) < COMM(NUMADVRS) DO                    <<CONFD>>63912000
$EDIT VOID=65782000                                            <<06259>>63924000
   <<--------------------------------->>                       <<06259>>63930000
   <<   INITIALIZE TEMPROARY TABLES   >>                       <<06259>>63931000
   <<--------------------------------->>                       <<06259>>63932000
                                                               <<06259>>63933000
   NPROCQ := 0;   <<# OF TYPE 2 PROCESSES>>                    <<06259>>63934000
   NCNTRLQ := 0;  <<# OF MULTI-UNIT CONTROLLERS>>              <<06259>>63935000
   NIOPROC := 0;  <<# OF I/O PROCESSES>>                       <<06259>>63936000
   NDLT := 0;     <<# OF ENTRIES IN DLT>>                      <<06259>>63937000
   NCHANQ := 0;   <<# OF MULTI-CONTROLLER CHANNELS>>           <<06259>>63938000
   PUSH(DL);                                                   <<06259>>63939000
   TOS := TOS-HLDEV*IOPROCSIZE;                                <<06259>>63940000
   @IOPROC := S0;   <<PTR TO I/O PROCESS TABLE>>               <<06259>>63941000
   TOS := TOS-HLDEV*INTRSIZE;                                  <<06259>>63942000
   @INTR := S0&LSL(1);                                         <<06259>>63943000
   TEMP := IF HLDEV > 256 THEN 256 ELSE HLDEV;                 <<zrela>>63943100
   TOS := TOS-(TEMP+COMM(NUMADVRS))*DLTSIZE;                   <<CONFD>>63944000
   @DLT' := TOS;   <<PTR TO TEMPORARY DRIVER LINKAGE TABLE>>   <<06259>>63945000
   DLSIZE( @CSDVRAREA-@DLT');                                  <<06259>>63946000
                                                               <<06259>>63947000
   <<------------------------------->>                         <<06259>>63948000
   <<   BUILD TABLES IN DRT ORDER   >>                         <<06259>>63949000
   <<------------------------------->>                         <<06259>>63950000
                                                               <<06259>>63951000
   ILTSTART := ADDRESS;                                        <<06259>>63952000
   DRTN := LOWESTDRT;                                          <<06259>>63953000
                                                               <<06259>>63954000
   DO BEGIN                                                    <<06259>>63955000
      FIRST := TRUE;  <<FIRST LDEV FOR THIS DRT>>              <<06259>>63956000
      SECONDPASS := FALSE;                                     <<06259>>63957000
STARTPASS:                                                     <<06259>>63958000
      LDEV := 1;                                               <<06259>>63959000
      DO                                                       <<*DVR*>>63959100
        BEGIN                                                  <<*DVR*>>63959200
        DVR'INDEX := LDEV * DVRSIZE;                           <<*DVR*>>63959300
        IF DVRDSBIT = 1 <<DS DEV>>                             <<*DVR*>>63960000
         AND SECONDPASS OR                                     <<06259>>63961000
         DVRDRTNUM = DRTN                                      <<*DVR*>>63962000
         AND NOT(SECONDPASS) THEN                              <<06259>>63963000
         BEGIN<<MAY BE DEVICE ON THIS CONTROLLER>>             <<06259>>63964000
$EDIT VOID=63965000                                            <<*DVR*>>63965000
         IF SECONDPASS THEN                                    <<06259>>63966000
            BEGIN                                              <<06259>>63967000
            DVR'INDEX := DVRMASTERLDEV * DVRSIZE;              <<*DVR*>>63968000
            DRTN := DVRDRTNUM;                                 <<*DVR*>>63969000
            DVR'INDEX := LDEV * DVRSIZE;                       <<*DVR*>>63969100
            END;                                               <<06259>>63970000
         UNITN := DVRUNITNUM;   <<UNIT #>>                     <<*DVR*>>63971000
         MOVE DRIV'WNAME := DVRNAME,(4);                       <<*DVR*>>63972000
         LDT'INDEX := LDEV * LDTSIZE;                          <<*LDT*>>63972100
         LPDT'INDEX := LDEV * LPDTSIZE;                        <<*LPDT>>63972200
         TYPE := LDT'DEVICE'TYPE;                              <<*LDT*>>63973000
         SUBTYP := LPDT'SUBTYPE;                               <<*LPDT>>63974000
         DVRFNUM := FOPEN(DRIV'BNAME);  <<OPEN DRIVER FILE>>   <<*DVR*>>63975000
         FREAD(DVRFNUM,0D,REC0,128);  <<RECORD ZERO>>          <<06259>>63976000
         FREAD(DVRFNUM,D'L(REC0(3))),DBINFO,384);  <<DB AREA>> <<06259>>63977000
         RESIDENT := LOGICAL(DBINFO.CORERES) LOR LOGICAL(      <<06259>>63978000
           DVRCORERES);                                        <<*DVR*>>63979000
         DITSIZE := DBINFO.(0:8);  <<SIZE OF DIT AREA>>        <<06259>>63980000
         STATSIZE := DBINFO(DVRDB3).STRETSIZE;                 <<06259>>63981000
           <<SIZE OF STATUS RETURN AREA>>                      <<06259>>63982000
         TOS := DVRFNUM;                                       <<06259>>63983000
         TOS := 0;                                             <<06259>>63984000
         TOS := REC0(10);  <<ENTRY POINT>>                     <<06259>>63985000
         TOS := 128;                                           <<06259>>63986000
         ASSEMBLE(DIV);                                        <<06259>>63987000
         INDEX := TOS;   <<POSITION IN BUFFER>>                <<06259>>63988000
         TOS := TOS+REC0(4);  <<CODE SEG RECORD #>>            <<06259>>63989000
         FREAD(*,*,OBINFO,256);  <<OUTER BLOCK CODE>>          <<06259>>63990000
                                                               <<06259>>63991000
         <<--------------->>                                   <<06259>>63992000
         <<   BUILD ILT   >>                                   <<06259>>63993000
         <<--------------->>                                   <<06259>>63994000
                                                               <<06259>>63995000
         IF NOT SECONDPASS THEN                                <<06259>>63996000
          IF FIRST THEN                                        <<06259>>63997000
             BEGIN  <<CREATE ILT>>                             <<06259>>63998000
             ZEROBUF( ILT, ILTSIZE);                           <<06259>>63999000
             SEEKMASK := 0;                                    <<06259>>64000000
             ILT(ICNTRL).DRTN' := DRTN;                        <<06259>>64001000
             IF NOT(CSDEV) THEN                                <<06259>>64002000
                BEGIN <<NOT CS DEVICE>>                        <<06259>>64003000
                ILT(IUNIT):=DBINFO(DVRDB2);                    <<06259>>64004000
                  << UNIT EXTRACT INFO >>                      <<06259>>64004500
                ILT(IFLAG).RUNWAIT := DBINFO.RUNWAIT';         <<06259>>64005000
                TOS := DBINFO(DVRDB3).SIOPSIZE;                <<06259>>64006000
                  <<SIO PROG SIZE>>                            <<06259>>64006500
                SIOSIZE := S0&LSL(1);                          <<06259>>64007000
                ILT(IQUEUE).SIOPSIZE := TOS;                   <<06259>>64008000
                CHANNEL:=DVRCHANNUM;       <<CHANNEL #>>       <<*DVR*>>64009000
                I := 1;                                        <<06259>>64010000
                N := UNITN; <<WILL HOLD HIGHEST UNIT #>>       <<*DVR*>>64011000
                K := 0;  <<# OF DEVICES ON CONTROLLER>>        <<06259>>64012000
                                                               <<06259>>64013000
                DO                                             <<*DVR*>>64014000
                  BEGIN                                        <<*DVR*>>64014010
                  DVR'INDEX := I * DVRSIZE;                    <<*DVR*>>64014020
                  IF DVRDRTNUM = DRTN THEN                     <<*DVR*>>64014100
                    BEGIN  <<DEVICE ON THIS CONTROLLER>>       <<*DVR*>>64015000
$EDIT VOID=64015100                                            <<*DVR*>>64015100
                    TOS := DVRUNITNUM;                         <<*DVR*>>64016000
                    LDTX'INDEX := I * LDTXSIZE;                <<*DVR*>>64016100
                    IF LDTX'SEEK'AHEAD = 1 THEN                <<*DVR*>>64017000
                      BEGIN                                    <<06259>>64018000
                      X := S0;                                 <<06259>>64019000
                      TOS := SEEKMASK;                         <<06259>>64020000
                      ASSEMBLE(TSBC 0, X);                     <<06259>>64021000
                      SEEKMASK := TOS;                         <<06259>>64022000
                      END;                                     <<06259>>64023000
                    J := 0;                                    <<*DVR*>>64024000
                    WHILE (J:=J+1) < I DO                      <<*DVR*>>64025000
                      BEGIN                                    <<*DVR*>>64025100
                      DVR'INDEX := J * DVRSIZE;                <<*DVR*>>64025200
                      IF DVRDRTNUM = DRTN                      <<*DVR*>>64026000
                         AND DVRUNITNUM = S0                   <<*DVR*>>64027000
                         THEN GOTO SAMEDU;                     <<06259>>64028000
                      END;                                     <<*DVR*>>64028100
                   K := K+1;                                   <<06259>>64029000
SAMEDU:            IF S0>N THEN N := TOS ELSE DEL;             <<06259>>64030000
                   END                                         <<06259>>64031000
                ELSE                                           <<06259>>64032000
                   IF CHANNEL <> 0 AND DVRCHANNUM              <<*DVR*>>64033000
                      =CHANNEL THEN                            <<06259>>64034000
                      BEGIN <<MULTI-CONTROLLER CHANNEL>>       <<06259>>64035000
                      ILT(ICNTRL).MCHAN := 1;                  <<06259>>64036000
                      X := 0;                                  <<06259>>64037000
                      WHILE (X:=X+1)<=NCHANQ DO                <<06259>>64038000
                         IF CHNUMB(X)=CHANNEL THEN             <<06259>>64039000
                            BEGIN<<QUEUE ALREADY RESERVED>>    <<06259>>64040000
                                 <<           FOR CHANNEL>>    <<06259>>64040500
                            TOS := X;                          <<06259>>64041000
                            GO SETCHANQUE;                     <<06259>>64042000
                            END;                               <<06259>>64043000
                      TOS := NCHANQ+1;                         <<06259>>64044000
                      NCHANQ := S0;                            <<06259>>64045000
                      X := S0;                                 <<06259>>64046000
                      CHNUMB(X) := CHANNEL;                    <<06259>>64047000
SETCHANQUE:           ILT(ICNTRL).CHANQUE := TOS;              <<06259>>64048000
                      END;                                     <<*DVR*>>64049000
                  END                                          <<*DVR*>>64049100
                UNTIL (I:=I+1) > HLDEV;                        <<06259>>64050000
                                                               <<06259>>64051000
                IF K<>1 AND DBINFO(ILTSIZE).TERM'=0 THEN       <<06259>>64052000
                   BEGIN<<MULTI-UNIT, NON-TERMINAL CONTROLLER>><<06259>>64053000
                   TOS := NCNTRLQ+1; <<# OF MULTI-UNIT CNTRLS>><<06259>>64054000
                   NCNTRLQ := S0;                              <<06259>>64055000
                   ILT(IQUEUE).CNTRLRQ := TOS; <<REL Q #>>     <<06259>>64056000
                   END;                                        <<06259>>64057000
                ILT(IFLAG).HCUNIT:=N; <<SET>>                  <<06259>>64058000
                <<HIGHEST CONFIGURED UNIT #>>                  <<06259>>64059000
                INTHS'UNITS(DRTN) := N+1; <<MAX UNITS>>        <<06259>>64060000
                TOTILTSIZE := ILTSIZE+STATSIZE+SIOSIZE+N+1;    <<06259>>64061000
                IF TYPE = 0 << MH DISC >> OR                   <<*LDT*>>64061500
                   TYPE = 1 << FH DISC >> THEN                 <<*LDT*>>64061510
                   TOTILTSIZE := TOTILTSIZE + DVR'GLOBAL'VARS; <<06259>>64061600
                ILTLOC := INITTABLE(TOTILTSIZE,1,BANK0ONLY,    <<06259>>64062000
                   FALSE,ILTDSTN);                             <<06259>>64063000
$EDIT                                                          <<06336>>64064000
                I := ILTADR-SYSBASE+ILTSIZE+N+1;               <<06259>>64065000
                ILT(ISTAP) := IF STATSIZE=0 THEN 0 ELSE I;     <<06259>>64066000
                I := I + STATSIZE;                             <<06259>>64067000
                IF TYPE = 0 << MH DISC >> OR                   <<*LDT*>>64068000
                   TYPE = 1 << FH DISC >> THEN                 <<*LDT*>>64068100
                   I := I + DVR'GLOBAL'VARS;                   <<06259>>64069000
                ILT(ISIOP) := I;                               <<06259>>64070000
                MTDS( ILTDSTN, I+SYSBASE-ILTADR,               <<06259>>64071000
                   DBINFO(DITSIZE+DVRDB4), SIOSIZE);           <<06259>>64072000
$EDIT                                                          <<06336>>64073000
                IF TYPE = 0 << MH DISC >> OR                   <<*LDT*>>64074000
                   TYPE = 1 << FH DISC >>  THEN                <<*LDT*>>64074100
                   ABS(ILT(ISIOP)-1+SYSBASE) := SEEKMASK;      <<06259>>64075000
                END                                            <<06259>>64076000
             ELSE                                              <<06259>>64077000
                BEGIN <<CS DEVICE>>                            <<06259>>64078000
                RESIDENT := 0;                                 <<06259>>64079000
                ILTLOC := INITTABLE( ILTSIZE+1, 1, BANK0ONLY,  <<06259>>64080000
                   FALSE, ILTDSTN);                            <<06259>>64081000
                INTHS'UNITS(DRTN) := 1;                        <<06259>>64082000
                END;                                           <<06259>>64083000
            PUTDRT( DRTN, DBI, ILTADR); <<ADDR OF ILT>>        <<06336>>64083200
            MTDS( ILTDSTN, 0, ILT, ILTSIZE);                   <<06336>>64083300
            END                                                <<06259>>64084000
         ELSE                                                  <<06259>>64085000
            BEGIN  << --- NOT FIRST --- >>                     <<06259>>64086000
            I := 0;                                            <<06259>>64087000
            WHILE (I:=I+1) < LDEV DO                           <<06259>>64088000
               BEGIN                                           <<06259>>64089000
               DVR'INDEX := I * DVRSIZE;                       <<*DVR*>>64090000
$EDIT VOID=64091000                                            <<*DVR*>>64091000
               IF DVRDRTNUM = DRTN AND                         <<*DVR*>>64092000
                  DVRUNITNUM = UNITN THEN                      <<*DVR*>>64092100
                  BEGIN   <<SAME DRT AND UNIT>>                <<06259>>64093000
                  LPDT'INDEX := I * LPDTSIZE;                  <<*LPDT>>64094000
                  TOS := LPDT'DIT'PTR;                         <<*LPDT>>64094100
                  LPDT'INDEX := LDEV * LPDTSIZE;               <<*LPDT>>64094200
                  LPDT'DIT'PTR := TOS;                         <<*LPDT>>64094300
                  LPDT'VIRTUAL'DEVICE := 0;                    <<*LPDT>>64094400
                  IF CSDEV THEN                                <<06259>>64095000
                     BEGIN    << UPDATE CSTAB >>               <<06259>>64096000
                     LDTXINDEX := CSDEF(I);                    <<06259>>64097000
                     @CSLDTX := @CSTAB(7);                     <<06259>>64098000
                     J := -1;                                  <<06259>>64099000
                     WHILE(J:=J+1)<LDTXINDEX DO                <<06259>>64100000
                        @CSLDTX := @CSLDTX+CSLDTX;             <<06259>>64101000
                     TOS := CSLDTXDRINDEX;                     <<06259>>64102000
                     LDTXINDEX := CSDEF(LDEV);                 <<06259>>64103000
                     J := -1;                                  <<06259>>64104000
                     @CSLDTX := @CSTAB(7);                     <<06259>>64105000
                     WHILE(J:=J+1)<LDTXINDEX DO                <<06259>>64106000
                        @CSLDTX := @CSLDTX+CSLDTX;             <<06259>>64107000
                     CSLDTXLDEV := LDEV;                       <<06259>>64108000
                     CSLDTXDRINDEX:= TOS;                      <<06259>>64109000
                     GOTO NEXTLDEV;                            <<06259>>64110000
                     END                                       <<06259>>64111000
                  ELSE                                         <<06259>>64112000
                     << DON'T BUILD NEW DIT FOR DISCS >>       <<06259>>64113000
                     IF TYPE&LSR(3) = DIRACCESS THEN           <<06259>>64114000
                        GOTO NEXTLDEV                          <<06259>>64115000
                  ELSE                                         <<06259>>64116000
                     GOTO CONSOLCHECK;                         <<06259>>64117000
                  END;                                         <<06259>>64118000
               END;                                            <<06259>>64119000
            END;                                               <<06259>>64120000
                                                               <<06259>>64121000
CONSOLCHECK:                                                   <<06259>>64122000
$IF X1=ON  << ******* SERIES 33 UNIQUE ******* >>              <<06259>>64123000
         <<------------------------------------------->>       <<06259>>64124000
         <<   BUILD TERMINAL INITIALIZATION PROGRAM   >>       <<06259>>64125000
         <<------------------------------------------->>       <<06259>>64126000
                                                               <<06259>>64127000
         LDTX'INDEX := LDEV * LDTXSIZE;                        <<*LDTX>>64127100
         DVR'INDEX  := LDEV * DVRSIZE;                         <<*DVR*>>64127200
         IF NOT ADCCRESERVED THEN  << NOT DONE YET >>          <<06259>>64128000
            IF DVRDSBIT = 0 THEN                               <<*DVR*>>64129000
               IF (TYPE = 16 << TERMINAL >>  LOR               <<*LDT*>>64130000
                   TYPE = 32 << PRINTER >> LAND                <<*LDT*>>64130010
                  (SUBTYP=14 LOR SUBTYP=15))                   <<06259>>64131000
                  AND LDTX'TERMID <> LYNX'BOARD THEN           <<SYPTR>>64132000
$EDIT VOID=64133000                                            <<*LDTX>>64133000
                  BEGIN                                        <<06259>>64134000
                  << IF THERE IS AT LEAST ONE ADCC-        >>  <<06259>>64135000
                  << CONNECTED PORT CONFIGURED, SAVE ROOM  >>  <<06259>>64136000
                  << FOR CHANNEL PROGRAMS OF PRINTCHAR AND >>  <<06259>>64137000
                  << READCHAR OF HARDRES.  ALSO SAVE SPACE >>  <<06259>>64138000
                  << FOR ADCC TERMINAL INIT. CHANNEL PROG, >>  <<06259>>64139000
                  << WHICH EXISTS IN ONLY ONE PLACE        >>  <<06259>>64140000
                  INITTABLE(HARDRES'SIOAREA,1,BANK0ABOVE,0);   <<06259>>64141000
                                                               <<06259>>64142000
                  IF INITTCP'>384<<SIZE OF DBINFO ARRAY>>      <<06259>>64143000
                     THEN ERRMESSAGE(M251);                    <<06259>>64144000
                  <<TERMINAL SIOPROG IS TOO LARGE!>>           <<06259>>64145000
                  <<CAN'T EVEN GET TO INITPROG SIZEWORD>>      <<06259>>64146000
                  J := DBINFO(INITTCP'-1);                     <<06259>>64147000
                  TABLOC := INITTABLE(J, 1, BANK0ABOVE,        <<06259>>64148000
                              FALSE, TEMPDSTN);                <<06259>>64148500
                  ABSOLUTE(INITTCP):=TABADR-SYSBASE;           <<06259>>64149000
                  I := 384-(INITTCP');                         <<06259>>64150000
                  MTDS( TEMPDSTN, 0, DBINFO(INITTCP'), I);     <<06259>>64151000
                  J := J-I; << AMOUNT LEFT >>                  <<06259>>64152000
                  IF J > 384 THEN ERRMESSAGE(M250);            <<06259>>64153000
                  <<INITPROG CAN'T EXTEND INTO DBREC6>>        <<06259>>64154000
                  IF J > 0 THEN                                <<06259>>64155000
                     BEGIN <<GET REST FROM DBREC3-5>>          <<06259>>64156000
                     FREAD(DVRFNUM,D'L(REC0(3)+3)),            <<06259>>64157000
                        DBINFO,384);                           <<06259>>64158000
                     MTDS( TEMPDSTN, I, DBINFO, J);            <<06259>>64159000
                     FREAD(DVRFNUM,D'L(REC0(3))),              <<06259>>64160000
                        DBINFO,384);                           <<06259>>64161000
                     END;                                      <<06259>>64162000
                  ADCCRESERVED := TRUE; <<DON'T DO AGAIN>>     <<06259>>64163000
                  END;                                         <<06259>>64164000
$IF        << ******* RETURNING TO COMMON CODE ******* >>      <<06259>>64165000
                                                               <<06259>>64166000
         <<--------------->>                                   <<06259>>64167000
         <<   BUILD DIT   >>                                   <<06259>>64168000
         <<--------------->>                                   <<06259>>64169000
                                                               <<06259>>64170000
         IF NOT(CSDEV) THEN                                    <<06259>>64171000
            BEGIN <<  MOVE IN INITIALIZED DIT  >>              <<06259>>64172000
            DITLOC := INITTABLE(DITSIZE,1,BANK0ABOVE,FALSE,    <<06259>>64173000
               DITDSTN);                                       <<06259>>64174000
            LPDT'INDEX := LDEV * LPDTSIZE;                     <<*LPDT>>64174100
            LPDT'DIT'PTR := DITADR-SYSBASE;                    <<*LPDT>>64175000
            IF NOT SECONDPASS THEN                             <<06259>>64176000
               ABS(ILTADR+IDITP+UNITN) := DITADR-SYSBASE;      <<*DVR*>>64177000
            MTDS( DITDSTN, 0, DBINFO(DVRDB4), DITSIZE);        <<06259>>64178000
                                                               <<06259>>64179000
            <<   FILL IN DIT ENTRIES FOR ADCC    >>            <<06259>>64180000
            <<   TERMINALS, NOT FOR LYNX         >>            <<06259>>64181000
            LDTX'INDEX := LDEV * LDTXSIZE;                     <<*LDTX>>64181100
            LDT'INDEX := LDEV * LDTSIZE;                       <<*LDT*>>64181200
            IF (TYPE = 16 << TERMINAL >> LOR                   <<*LDT*>>64182000
               TYPE = 32 << PRINTER >> LAND                    <<*LDT*>>64182100
               (SUBTYP=14 LOR SUBTYP=15))                      <<06259>>64183000
$IF X1=ON   << *********** SERIES 33,44,55 UNIQUE ********* >> <<06259>>64184000
                AND LDTX'TERMID <> LYNX'BOARD                  <<SYPTR>>64185000
$EDIT VOID=64186000                                            <<*LDTX>>64186000
$IF         << ********* RETURNING TO COMMON CODE ********* >> <<06259>>64187000
               << MULTIPOINT TOO! >>                           <<06259>>64188000
               OR TYPE = 16 << TERMINAL >>  AND                <<*LDT*>>64189000
                 (LDT'DFLT'TERM'TYPE = 14 LOR                  <<*LDT*>>64190000
                  LDT'DFLT'TERM'TYPE = 17)                     <<*LDT*>>64191000
               THEN                                            <<06259>>64192000
               BEGIN                                           <<06259>>64193000
               IF DITSIZE >= 24 THEN                           <<06259>>64194000
                  BEGIN  << NOT PSEUDO TERMINAL >>             <<06259>>64195000
                  ABS(DITADR+23).TERMTYP :=                    <<06259>>64196000
                    LDT'DFLT'TERM'TYPE;                        <<*LDT*>>64197000
                  ABS(DITADR+23).TERMSPEED :=                  <<06259>>64198000
                    LDTX'BAUD'RATE'CODE;                       <<*LDTX>>64199000
                  END;                                         <<06259>>64200000
               END;                                            <<06259>>64201000
            END;                                               <<06259>>64202000
                                                               <<06259>>64203000
$EDIT VOID=64214000                                            <<06336>>64204000
            <<------------------>>                             <<06259>>64215000
            <<   BUILT CS DIT   >>                             <<06259>>64216000
            <<------------------>>                             <<06259>>64217000
                                                               <<06259>>64218000
         IF CSDEV THEN                                         <<06259>>64219000
            BEGIN                                              <<06259>>64220000
            LPDT'INDEX := LDEV * LPDTSIZE;                     <<*LPDT>>64220100
            IF LPDT'SUBTYPE = 7 THEN                           <<*LPDT>>64221000
               LCN := 7                                        <<06259>>64222000
            ELSE                                               <<06259>>64223000
               BEGIN                                           <<06259>>64224000
               TOS := LPDT'SUBTYPE;                            <<*LPDT>>64225000
               TOS := 3;                                       <<06259>>64226000
               ASSEMBLE(DIV,ADD);                              <<06259>>64227000
               LDT'INDEX := LDEV * LDTSIZE;                    <<*LDT*>>64227100
               LCN := IF LDT'DEVICE'TYPE = CSDEV19             <<*LDT*>>64228000
                   THEN TOS+4  <<LINE CONNECTION>>             <<06259>>64229000
                   ELSE TOS+1; <<NETWORK        >>             <<06259>>64230000
               END;                                            <<06259>>64231000
            LDTXINDEX := CSDEF(LDEV);<<LINE DESCRIPTOR INDEX>> <<06259>>64232000
            @CSLDTX := @CSTAB(7);                              <<06259>>64233000
            I := -1;                                           <<06259>>64234000
            WHILE (I:=I+1) < LDTXINDEX DO                      <<06259>>64235000
               @CSLDTX:= @CSLDTX+CSLDTX;                       <<06259>>64235500
            DEFDVRINDEX := 0;                                  <<06259>>64236000
            LCMEDPDMAX := 0;                                   <<06259>>64237000
            @DRIVERENTRY := @CSDVRAREA; <<PT TO DUMMY DRIVER>> <<06259>>64238000
            I := -1;                                           <<06259>>64239000
            WHILE (I:=I+1)<CSTAB(DRIVERENTNUM) DO              <<06259>>64240000
               BEGIN<<COMPUTE MAX DIT FOR COMPATIBLE DRIVERS>> <<06259>>64241000
               @LCNPTR := @DRLCN&LSL(1);                       <<06259>>64242000
               J := 0;                                         <<06259>>64243000
               DO IF INTEGER(LCNPTR(J))=LCN OR I=0 THEN        <<06259>>64244000
                  BEGIN <<COMPATIBLE DRIVER>>                  <<06259>>64245000
$EDIT VOID=64246000                                            <<*DVR*>>64246000
$EDIT VOID=64247000                                            <<*DVR*>>64247000
                  IF COMPARE'WORDS(DRNAME,DRIV'WNAME,4) THEN   <<*DVR*>>64248000
                     BEGIN                                     <<06259>>64249000
                     DEFDVRINDEX := I;                         <<06259>>64250000
                     GO SUMLENS;                               <<06259>>64251000
                     END;                                      <<06259>>64252000
                  IF LOGICAL(CSLDTXDRCHANGEABLE) OR I=0 THEN   <<06259>>64253000
                     BEGIN<<SUM SIZES OF LCM,EDT,PDT SECTIONS>><<06259>>64254000
SUMLENS:             TOS := @DRCAPSECTSIZE;                    <<06259>>64255000
                     TOS := PS0;                               <<06259>>64256000
                     ASSEMBLE(ADD,INCA);  <<PTR TO LCM LENGTH>><<06259>>64257000
                     N := 0;                                   <<06259>>64258000
                     K := 0;                                   <<06259>>64259000
                                                               <<06259>>64260000
                     DO BEGIN  <<SUM LENGTHS>>                 <<06259>>64261000
                        TOS := PS0;                            <<06259>>64262000
                        N := S0+N;                             <<06259>>64263000
                        ASSEMBLE(ADD,INCA);  <<NEW PTR>>       <<06259>>64264000
                        END                                    <<06259>>64265000
                     UNTIL (K:=K+1) = 4;                       <<06259>>64266000
                                                               <<06259>>64267000
                     IF N>LCMEDPDMAX THEN LCMEDPDMAX := N;     <<06259>>64268000
                     DEL;                                      <<06259>>64269000
                     END;                                      <<06259>>64270000
                  END                                          <<06259>>64271000
               UNTIL (J:=J+1)=3;                               <<06259>>64272000
               @DRIVERENTRY := @DRIVERENTRY+DRIVERENTRY;       <<06259>>64273000
               END;                                            <<06259>>64274000
            CONTSECTSIZE := 0;<<NO CONTROL SECTION IN DIT>>    <<06259>>64275000
            DITSIZE := MPESTDSIZE+CSSTDSIZE+CONTSECTSIZE+      <<06259>>64276000
               LCMEDPDMAX;                                     <<06259>>64277000
            DITLOC := INITTABLE( DITSIZE, 1, BANK0ABOVE,       <<06259>>64278000
               FALSE, DITDSTN);                                <<06259>>64279000
            LPDT'INDEX := LDEV * LPDTSIZE;                     <<*LPDT>>64279100
            LPDT'DIT'PTR := DITADR-SYSBASE;                    <<*LPDT>>64280000
            IF NOT SECONDPASS THEN                             <<06259>>64281000
               ABS(ILTADR+IDITP+UNITN) := DITADR-SYSBASE;      <<*DVR*>>64282000
            @DRIVERENTRY := @CSDVRAREA;                        <<06259>>64283000
            STDADR := DITADR + MPESTDSIZE;                     <<06259>>64284000
            CONTADR := STDADR + CSSTDSIZE;                     <<06259>>64285000
            DRIVERADR := CONTADR + CONTSECTSIZE;               <<06259>>64286000
            POINTERADR := DITADR + LCMP;                       <<06259>>64287000
            DRIVERDISP := MPESTDSIZE+CSSTDSIZE+CONTSECTSIZE;   <<06259>>64288000
            CONTROLP := 0;                                     <<06259>>64289000
            @DRIVERENT := @CSDVRAREA+DRINFOSIZE+DRCAPSECTSIZE; <<06259>>64290000
            K := 0;                                            <<06259>>64291000
            DVRINDEX := 0;                                     <<06259>>64292000
                                                               <<06259>>64293000
            DO BEGIN  <<MOVE IN LCM,EDT,PHYS DRIVER FOR DUMMY>><<06259>>64294000
               MTDS(DITDSTN,DRIVERDISP+DVRINDEX,               <<06259>>64295000
                  DRIVERENT(DVRINDEX+K+1),                     <<06259>>64296000
                  DRIVERENT(DVRINDEX+K));                      <<06259>>64296500
               ABSOLUTE(POINTERADR+LOGICAL(K)):=DRIVERADR      <<06259>>64297000
                        +LOGICAL(DVRINDEX)-SYSBASE;            <<06259>>64298000
               DVRINDEX := DVRINDEX+DRIVERENT(DVRINDEX+K);     <<06259>>64299000
               END UNTIL (K:=K+1) = 3;                         <<06259>>64300000
                                                               <<06259>>64301000
            MTDS(DITDSTN,DRIVERDISP+DVRINDEX,                  <<06259>>64302000
               DRIVERENT(DVRINDEX+4),DRIVERENT(DVRINDEX+3));   <<06259>>64303000
            ABS(ILTADR+ISIOP) :=                               <<06259>>64304000
                  DRIVERADR+LOGICAL(DVRINDEX)-SYSBASE;         <<06259>>64304500
            ABS(ILTADR+IQUEUE).SIOPSIZE :=                     <<06259>>64305000
                  DRIVERENT(DVRINDEX+3);                       <<06259>>64305500
            LPDT'INDEX := LDEV * LPDTSIZE;                     <<*LPDT>>64305600
            CSSUBTYPE := LPDT'SUBTYPE;                         <<*LPDT>>64306000
            LDT'INDEX := LDEV * LDTSIZE;                       <<*LDT*>>64306100
            CSDEVTYPE := LDT'DEVICE'TYPE;                      <<*LDT*>>64307000
            CSLCN := LCN;                                      <<06259>>64308000
            CSLDTXDRINDEX := DEFDVRINDEX;                      <<06259>>64309000
            CSLDTXLDEV := LDEV;                                <<06259>>64310000
            CSMODE := CSLDTXMODE;                              <<06259>>64311000
            CSCODE := CSLDTXCODE;                              <<06259>>64312000
            CSPROTOCOL := CSLDTXPROTOCOL;                      <<06259>>64313000
            CSDOPTIONS := CSLDTXDOPTIONS;                      <<06259>>64314000
            CSHSI'CHAN := CSLDTXHSI'CHAN;   <<UNIT NUMBER>>    <<06259>>64315000
            CSDUAL'SPEED := CSLDTXDUAL'SPEED;                  <<06259>>64316000
            CSHALF'SPEED := CSLDTXHALF'SPEED;                  <<06259>>64317000
            CSXMSN'MODE := CSLDTXXMSN'MODE;                    <<06259>>64318000
            CSSPEED'CHNGBLE := CSLDTXSPEEDCHNGBLE;             <<06259>>64319000
            CSANSWER := CSLDTXANSWER;                          <<06259>>64320000
            CSDIAL := CSLDTXDIAL;                              <<06259>>64321000
            CSRECV'TIMEOUT := CSLDTXRECV'TIMEOUT;              <<06259>>64322000
            CSLOCAL'TIMEOUT := CSLDTXLOCAL'TIMEOUT;            <<06259>>64323000
            CSCONCT'TIMEOUT := CSLDTXCONCT'TIMEOUT;            <<06259>>64324000
            @DBLPTR := @CSLDTXINSPEED;                         <<csdec>>64325000
            TOS := DBLPTR;                                     <<csdec>>64325100
            ASSEMBLE(XCH);                                     <<06259>>64326000
            CSINSPEED := TOS;                                  <<06259>>64327000
            ABS(X:=X+1) := TOS;                                <<06259>>64328000
            @DBLPTR := @CSLDTXOUTSPEED;                        <<csdec>>64329000
            TOS := DBLPTR;                                     <<csdec>>64329100
            ASSEMBLE(XCH);                                     <<06259>>64330000
            CSOUTSPEED := TOS;                                 <<06259>>64331000
            ABS(X:=X+1) := TOS;                                <<06259>>64332000
            CSMAXRETRIES := DRRETRIES;                         <<06259>>64333000
            END; << BUILD OF CS DIT >>                         <<06259>>64334000
                                                               <<06336>>64334100
                                                               <<06336>>64334200
         ABS(DITADR+DLDEV) := LDEV;                            <<06336>>64334300
         ABS(DITADR+DUNIT) := ABS(DITADR+DUNIT) + UNITN;       <<*DVR*>>64334400
         IF SECONDPASS THEN                                    <<06336>>64334500
            BEGIN     << NO  ILT POINTER >>                    <<06336>>64334600
            ABS(DITADR+DILTP) := DVRMASTERLDEV;                <<*DVR*>>64334700
            END                                                <<06336>>64334800
         ELSE                                                  <<06336>>64334900
            BEGIN                                              <<06336>>64335000
            ABS(DITADR+DILTP) := ILTADR-SYSBASE; <<PTR TO ILT>><<06336>>64335100
            IF ILT(IQUEUE).CNTRLRQ <> 0 THEN                   <<06336>>64335200
               ABS(DITADR+DFLAG).MUNIT := 1;                   <<06336>>64335300
            END;                                               <<06336>>64335400
                                                               <<06336>>64335500
            <<--------------------->>                          <<06259>>64336000
            <<   BUILD DLT ENTRY   >>                          <<06259>>64337000
            <<--------------------->>                          <<06259>>64338000
                                                               <<06259>>64339000
BUILDDLT:                                                      <<06259>>64340000
         I := 0;                                               <<06259>>64341000
         WHILE (I:=I+1) < HLDEV DO                             <<06259>>64342000
            BEGIN   <<SEARCH FOR DEVICE WITH SAME DRIVER>>     <<06259>>64343000
            DVR'INDEX := I * DVRSIZE;                          <<*DVR*>>64344000
            IF COMPARE'WORDS(DRIV'WNAME,DVRNAME,4) THEN        <<*DVR*>>64345000
               IF SECONDPASS THEN                              <<06259>>64346000
                  IF I < LDEV THEN                             <<06259>>64347000
                     GO USEOLD                                 <<06259>>64348000
                  ELSE                                         <<06259>>64349000
                     GO BUILDNEW                               <<06259>>64350000
            ELSE     <<NON DS DEVICE>>                         <<06259>>64351000
               IF DVRDRTNUM = DRTN                             <<*DVR*>>64352000
                  AND I < LDEV OR                              <<06259>>64353000
                  DVRDRTNUM < DRTN THEN                        <<*DVR*>>64354000
USEOLD:           BEGIN  <<DRIVER ALREADY IN DLT>>             <<06259>>64355000
                  NEWDLT := FALSE;  <<NO NEW ENTRY>>           <<06259>>64356000
                  LPDT'INDEX := I * LPDTSIZE;                  <<*LPDT>>64356100
                  TOS := LPDT'DIT'PTR;  <<DIT PTR>>            <<*LPDT>>64357000
                  TOS := ABSOLUTE(TOS+SYSBASE+DDLTP);          <<06259>>64358000
                  ASSEMBLE(DUP,DUP;STAX);  <<DLT INDEX>>       <<06259>>64359000
                  DVRTYPE := DLT'(X).DRVRTYPE;                 <<06259>>64360000
                  DLTINDEX := TOS;                             <<06259>>64361000
                  ABS(DITADR+DDLTP) := TOS;  <<SAVE IN DIT>>   <<06259>>64362000
                  TOS := DLT'(DLTINDEX).CORERES;               <<06259>>64363000
                  TOS := TOS LOR LOGICAL(RESIDENT);            <<06259>>64364000
                  RESIDENT := TOS;                             <<06259>>64365000
                  GOTO SETRES;                                 <<06259>>64366000
                  END;                                         <<06259>>64367000
            END;                                               <<06259>>64368000
                                                               <<06259>>64369000
         <<  MAKE NEW DLT ENTRY  >>                            <<06259>>64370000
BUILDNEW:NEWDLT := TRUE;                                       <<06259>>64371000
         TOS := NDLT;  <<# OF ENTRIES IN DLT TABLE>>           <<06259>>64372000
         NDLT := S0+1;                                         <<06259>>64373000
         DLTINDEX := S0*DLTSIZE;  <<INDEX TO THIS ENTRY>>      <<06259>>64374000
         INTRINDEX := (TOS*INTRSIZE)&LSL(1); <<INT TAB INDEX>> <<06259>>64375000
         TOS := (IF CSDEV17<=TYPE<=CSDEV19 THEN 1              <<06259>>64376000
                   ELSE DBINFO.DRVRTYPE); <<DRIVER TYPE>>      <<06259>>64377000
         DVRTYPE := S0;                                        <<06259>>64378000
         DLT'(DLTINDEX).DRVRTYPE := TOS;                       <<06259>>64379000
         DLT'(DLTINDEX+DMNTR) := OBINFO(INDEX).(8:8);          <<06259>>64380000
                   <<MONITOR STT #>>                           <<06259>>64381000
         DLT'(DLTINDEX+DINIT) := OBINFO(INDEX+1).(8:8);        <<06259>>64382000
                   <<INITIATOR STT #>>                         <<06259>>64383000
         DLT'(DLTINDEX+DCOMP) := OBINFO(INDEX+2).(8:8);        <<06259>>64384000
                   <<COMPLETOR STT #>>                         <<06259>>64385000
         TOS := OBINFO(INDEX+5);<<# OF INTERRUPT ROUTINES>>    <<06259>>64386000
         M := S0;                                              <<06259>>64387000
         INTR(INTRINDEX) := TOS;                               <<06259>>64388000
         J := -1;                                              <<06259>>64389000
         WHILE (J:=J+1)<M DO <<PUT INTERUPT STT'S IN INTR>>    <<06259>>64390000
            INTR(INTRINDEX+J+1) := OBINFO(INDEX+J+6).(8:8);    <<06259>>64391000
         LDT'INDEX := LDEV * LDTSIZE;                          <<*LDT*>>64391100
         DLT'(DLTINDEX+DTYPE).DEVTYPE := LDT'DEVICE'TYPE;      <<*LDT*>>64392000
$EDIT VOID=64393000                                            <<*LDT*>>64393000
         DLT'(X).DITSIZE' := DITSIZE;                          <<06259>>64394000
         IF CSDEV THEN                                         <<06259>>64395000
            DLT'(DLTINDEX+DEDITOR):=OBINFO(INDEX+3).(8:8);     <<06259>>64396000
         ABS(DITADR+DDLTP) := DLTINDEX;                        <<06259>>64397000
         DLT'(DLTINDEX+DINTPL):=OBINFO(INDEX+4).(8:8);         <<06259>>64398000
                           <<INITIALIZATION STT>>              <<06259>>64399000
                                                               <<06259>>64400000
            <<------------------------------------>>           <<06259>>64401000
            <<   SET UP I/O PROCESS TABLE ENTRY   >>           <<06259>>64402000
            <<------------------------------------>>           <<06259>>64403000
                                                               <<06259>>64404000
         IF DVRTYPE = 2 THEN                                   <<06259>>64405000
            BEGIN  <<SET UP I/O PROCESS>>                      <<06259>>64406000
            GETIOPROCNAME;   <<GET PROCESS NAME>>              <<06259>>64407000
            J := -1;                                           <<06259>>64408000
            WHILE (J:=J+1) < NIOPROC DO                        <<06259>>64409000
               BEGIN   <<SEARCH FOR NAME ALREADY IN TABLE>>    <<06259>>64410000
               TOS := @IOPROC(J*IOPROCSIZE)&LSL(1);            <<06259>>64411000
               IF * = IOPROCNAME,(16) AND IOPROC(X:=X+8)       <<06259>>64412000
                  .DRVRTYPE=2 AND IOPROC(X).NOCREATE =         <<06259>>64413000
                  DBINFO.NOCREATE THEN                         <<06259>>64414000
                  BEGIN  <<MATCHES OTHER TYPE 2 PROCESS>>      <<06259>>64415000
                  IF RESIDENT THEN IOPROC(X).CORERES:= 1;      <<06259>>64416000
                  DLT'(DLTINDEX).QNUMB := J;                   <<06259>>64417000
                  GOTO SETRES;                                 <<06259>>64418000
                  END;                                         <<06259>>64419000
               END;                                            <<06259>>64420000
            <<ADD PROCESS TO TABLE>>                           <<06259>>64421000
            ADDIOPROC;                                         <<06259>>64422000
            END;                                               <<06259>>64423000
SETRES:  DLT'(DLTINDEX).CORERES := RESIDENT;                   <<06259>>64424000
                                                               <<06259>>64425000
         IF DVRTYPE = 3 THEN                                   <<06259>>64426000
            BEGIN  <<SET UP PROCESS FOR TYPE 3 DRIVER>>        <<06259>>64427000
            GETIOPROCNAME;                                     <<06259>>64428000
            IF DBINFO.(13:1)=1 AND FIRST OR DBINFO.(13:1)=0    <<06259>>64429000
               THEN BEGIN  <<ADD ENTRY TO TABLE>>              <<06259>>64430000
               IF NEWDLT THEN                                  <<06259>>64431000
                  ADDIOPROC << ADD FROM OBINFO >>              <<06259>>64432000
               ELSE                                            <<06259>>64433000
                  BEGIN  <<COPY FROM SIMILAR ENTRY>>           <<06259>>64434000
                  ABS(DITADR+DPCBN) := NIOPROC;                <<06259>>64435000
                  MOVE IOPROC(NIOPROC*IOPROCSIZE) := IOPROC    <<06259>>64436000
                     (DLT'(DLTINDEX).QNUMB*IOPROCSIZE),        <<06259>>64437000
                     (IOPROCSIZE);                             <<06259>>64438000
                  IOPROC(NIOPROC*IOPROCSIZE+8).CORERES :=      <<06259>>64439000
                     RESIDENT;                                 <<06259>>64440000
                  NIOPROC := NIOPROC+1;                        <<06259>>64441000
                  END;                                         <<06259>>64442000
               END                                             <<06259>>64443000
            ELSE                                               <<06259>>64444000
               BEGIN  <<ENSURE  OTHER UNITS USE SAME PROCESS>> <<06259>>64445000
               I := 0;                                         <<06259>>64446000
NEXTDIT:       IF ILT(ILTSIZE+I)<>0 AND I<>UNITN THEN          <<*DVR*>>64447000
                  BEGIN  <<ANOTHER UNIT ON THIS CONTROLLER>>   <<06259>>64448000
                  X := ABSOLUTE(ILT(X)+SYSBASE+DDLTP);         <<06259>>64449000
                  TOS := DLT'(X).QNUMB; <<IOPROC INDEX>>       <<06259>>64450000
                  X := S0*IOPROCSIZE;                          <<06259>>64451000
                  K := TOS;                                    <<06259>>64452000
                  TOS := @IOPROC(X)&LSL(1);                    <<06259>>64453000
                  IF *<>IOPROCNAME,(16) THEN                   <<06259>>64454000
                     ERRMESSAGE(M252,DRTN)                     <<06259>>64455000
                  ELSE                                         <<06259>>64456000
                     BEGIN                                     <<06259>>64457000
                     IF RESIDENT THEN IOPROC(X:=X+8)           <<06259>>64458000
                        .CORERES := 1;                         <<06259>>64459000
                     ABS(DITADR+DPCBN) := K;  <<PROCESS INDEX>><<06259>>64460000
                     END;                                      <<06259>>64461000
                  END                                          <<06259>>64462000
               ELSE                                            <<06259>>64463000
                  BEGIN  <<LOOK AT NEXT UNIT>>                 <<06259>>64464000
                  I := I+1;                                    <<06259>>64465000
                  GOTO NEXTDIT;                                <<06259>>64466000
                  END;                                         <<06259>>64467000
               END;                                            <<06259>>64468000
            END; << DRIVER TYPE 3 >>                           <<06259>>64469000
                                                               <<06259>>64470000
            FIRST := FALSE;                                    <<*DVR*>>64471000
NEXTLDEV:                                                      <<06259>>64472000
            FCLOSE(DVRFNUM);                                   <<*DVR*>>64473000
         END;                                                  <<*DVR*>>64474000
      END UNTIL (LDEV:=LDEV+1) > HLDEV;                        <<06259>>64475000
                                                               <<06259>>64476000
      IF SECONDPASS THEN GO MOVEDLT;                           <<06259>>64477000
                                                               <<06259>>64478000
   END UNTIL (DRTN := DRTN+1) > HIDRT;                         <<06259>>64479000
                                                               <<06259>>64480000
                                                               <<06259>>64481000
   <<--------------------------->>                             <<06259>>64482000
   <<   BUILD DLT FOR CSDUMMY   >>                             <<06259>>64483000
   <<--------------------------->>                             <<06259>>64484000
                                                               <<06259>>64485000
   IF CSPRESENT THEN                                           <<06259>>64486000
      BEGIN <<RESERVE DLT ENTRIES FOR CSDUMMY >>               <<06259>>64487000
            << AND ADDITIONAL CS DRIVERS      >>               <<06259>>64488000
      TOS := NDLT;                                             <<06259>>64489000
      CSDUMMYINDEX := S0*DLTSIZE;                              <<06259>>64490000
      NDLT := TOS+COMM(NUMADVRS)+1;                            <<CONFD>>64491000
      I := -1;                                                 <<06259>>64492000
      WHILE (I:=I+1) < COMM(NUMADVRS) DO                       <<CONFD>>64493000
         <<PUT INITIALIZATION STT IN DLT ENTRIES>>             <<06259>>64494000
         DLT'(CSDUMMYINDEX+(I+1)*DLTSIZE+DINTPL) :=            <<06259>>64495000
           INIT'LIZAT'NSTT(I);                                 <<06259>>64496000
      END;                                                     <<06259>>64497000
   IF NOT(SECONDPASS) THEN                                     <<06259>>64498000
      BEGIN                                                    <<06259>>64499000
      FIRST := FALSE;                                          <<06259>>64500000
      SECONDPASS := TRUE;                                      <<06259>>64501000
      GO STARTPASS;                                            <<06259>>64502000
      END;                                                     <<06259>>64503000
                                                               <<06259>>64504000
   <<-------------------------->>                              <<06259>>64505000
   <<   MOVE DLT TO LOW CORE   >>                              <<06259>>64506000
   <<-------------------------->>                              <<06259>>64507000
                                                               <<06259>>64508000
MOVEDLT:                                                       <<06259>>64509000
   INSERTDST( D'L(ILTSTART)), ILTDITDSTN, ADDRESS              <<06259>>64510000
      -LOGICAL(ILTSTART), 0);                                  <<06259>>64511000
   MEMADR := INITTABLE( NDLT, DLTSIZE, BANK0ONLY, TRUE,        <<06259>>64512000
      DLTDSTN);                                                <<06259>>64513000
   MTDS( DLTDSTN, 0, DLT', TABSIZE);                           <<06259>>64514000
   DLTPTR' := LOGICAL(MEMADR) -SYSBASE;                        <<06259>>64515000
                                                               <<06259>>64516000
   <<--------------------------------->>                       <<06259>>64517000
   <<   CRUNCH TEMPORARY I/O TABLES   >>                       <<06259>>64518000
   <<--------------------------------->>                       <<06259>>64519000
                                                               <<06259>>64520000
   MOVE IOPROC(HLDEV*IOPROCSIZE-1) := IOPROC(NIOPROC*          <<06259>>64521000
     IOPROCSIZE-1),(-X-1),2;                                   <<06259>>64522000
   @IOPROC := S0+1;                                            <<06259>>64523000
   TOS := INTRSIZE*NDLT;                                       <<06259>>64524000
   TOS := S0-1;                                                <<06259>>64525000
   TOS := WORDADDRESS(INTR);    << GET WORD POINTER >>         <<06259>>64526000
   ASSEMBLE(ADD,XCH; NEG; MOVE 2);                             <<06259>>64527000
   ASSEMBLE(INCA,DUP);                                         <<06259>>64528000
   @INTR := TOS&LSL(1);                                        <<06259>>64529000
   SET(DL);                                                    <<06259>>64530000
                                                               <<06259>>64531000
   <<--------------------------->>                             <<06259>>64532000
   <<   BUILD RESOURCE TABLES   >>                             <<06259>>64533000
   <<--------------------------->>                             <<06259>>64534000
                                                               <<06259>>64535000
   NRESQ := NCNTRLQ+NCHANQ+NPROCQ+2;                           <<06259>>64536000
   TOS := INITTABLE(NRESQ, 3, BANK0ONLY, TRUE, RESQDSTN);      <<06259>>64537000
   DELB;  << DELETE BANK >>                                    <<06259>>64538000
   TOS := TOS-SYSBASE;                                         <<06259>>64539000
   ABSOLUTE(SYSBUSY) := S0;   <<BUSY TABLE PTR>>               <<06259>>64540000
   TOS := TOS+NRESQ;                                           <<06259>>64541000
   ABSOLUTE(SYSHEAD) := S0;   <<HEAD TABLE PTR>>               <<06259>>64542000
   TOS := TOS+NRESQ;                                           <<06259>>64543000
   ABSOLUTE(SYSTAIL) := TOS;  <<TAIL TABLE PTR>>               <<06259>>64544000
   I := 0;                                                     <<06259>>64545000
   DO SYS(ABS(SYSHEAD)+I) := -1 UNTIL (I:=I+1) = NRESQ;        <<06259>>64546000
   I := 0;                                                     <<06259>>64547000
   DO SYS(ABS(SYSTAIL)+I) := ABS(SYSHEAD)+I-1                  <<06259>>64548000
      UNTIL (I:=I+1) = NRESQ;                                  <<06259>>64548100
                                                               <<06259>>64549000
   <<---------------------------------------------->>          <<06259>>64550000
   <<   UPDATE DLT AND MULTI-UNIT QUEUE POINTERS   >>          <<06259>>64551000
   <<---------------------------------------------->>          <<06259>>64552000
                                                               <<06259>>64553000
   DRTN := LOWESTDRT;                                          <<06259>>64554000
   DO IF GETDRT( DRTN, DBI) <> 0 THEN                          <<06259>>64555000
      BEGIN  << DRT IS USED >>                                 <<06259>>64556000
      ILTADR := GETDRT( DRTN, DBI);                            <<06259>>64557000
                                                               <<06259>>64558000
      <<  UPDATE CONTROLLER QUEUE NUMBER  >>                   <<06259>>64559000
      IF ABS(ILTADR+IQUEUE).CNTRLRQ <> 0 THEN                  <<06259>>64560000
         ABS(X).CNTRLRQ := ABS(X).CNTRLRQ + NPROCQ + 1;        <<06259>>64561000
                                                               <<06259>>64562000
      <<  UPDATE CHANNEL QUEUE NUMBER  >>                      <<06259>>64563000
      IF ABS(ILTADR+ICNTRL).CHANQUE <> 0 THEN                  <<06259>>64564000
         ABS(X).CHANQUE := ABS(X).CHANQUE+NCNTRLQ+NPROCQ+1;    <<06259>>64565000
                                                               <<06259>>64566000
      <<  UPDATE DLT POINTER IN DIT  >>                        <<06259>>64567000
      N := INTHS'UNITS(DRTN);  <<# OF UNITS ON CONTROLLER>>    <<06259>>64568000
      I := 0;                                                  <<06259>>64569000
      DO IF ABS(ILTADR+IDITP+I) <> 0 THEN                      <<06259>>64570000
         BEGIN                                                 <<06259>>64571000
         DITADR := ABS(X) + SYSBASE;                           <<06259>>64572000
         ABS(X) := ABS(DITADR+DDLTP) + DLTPTR';                <<06259>>64573000
         END                                                   <<06259>>64574000
      UNTIL (I:=I+1) = N;                                      <<06259>>64575000
                                                               <<06259>>64576000
      END                                                      <<06259>>64577000
   UNTIL (DRTN := DRTN+1) > HIDRT;                             <<06259>>64578000
                                                               <<06259>>64579000
   <<--------------------------------------------->>           <<06259>>64580000
   <<   ASSIGN ABSOLUTE PRIORITIES TO PROCESSES   >>           <<06259>>64581000
   <<--------------------------------------------->>           <<06259>>64582000
                                                               <<06259>>64583000
   RELPRI := 0;                                                <<06259>>64584000
   ABSPRI := IOPRI;                                            <<06259>>64585000
                                                               <<06259>>64586000
   DO BEGIN  << ASSIGN PRIORITIES >>                           <<06259>>64587000
                                                               <<06259>>64588000
      I := 0;                                                  <<06259>>64589000
      DO IF IOPROC(I*IOPROCSIZE+9).(8:8) = RELPRI THEN         <<06259>>64590000
         BEGIN                                                 <<06259>>64591000
         IOPROC(X).(0:8) := ABSPRI;                            <<06259>>64592000
         ABSPRI := ABSPRI+1;                                   <<06259>>64593000
         END                                                   <<06259>>64594000
      UNTIL (I:=I+1) = NIOPROC;                                <<06259>>64595000
                                                               <<06259>>64596000
      END                                                      <<06259>>64597000
   UNTIL (RELPRI := RELPRI+1) > 255;                           <<06259>>64598000
                                                               <<06259>>64599000
   <<---------------------------->>                            <<06259>>64600000
   <<   MEMORY MANAGEMENT INFO   >>                            <<06259>>64601000
   <<---------------------------->>                            <<06259>>64602000
                                                               <<06259>>64603000
   TOS:=(CTAB0(CORESIZE)+63)&LSR(6);                           <<06259>>64604000
   TOS:=TOS-1;                                                 <<06259>>64605000
   ABSOLUTE(NBANKS):=TOS;                                      <<06259>>64606000
   TOS:=CTAB0(CORESIZE);                                       <<06259>>64607000
   TOS:=S0.(10:6); <<KWORDS IN LAST PARTIAL BANK>>             <<06259>>64608000
   IF = THEN                                                   <<06259>>64609000
      BEGIN <<LAST BANK IS COMPLETE>>                          <<06259>>64610000
      ASSEMBLE(DEL);                                           <<06259>>64611000
      ABSOLUTE(SYSLASTBASE):=%177777;                          <<06259>>64612000
      TOS:=TOS.(0:10); <<NUMBER OF COMPLETE BANKS>>            <<06259>>64613000
      TOS:=TOS-1; <<BANK NUMBER OF LAST BANK>>                 <<06259>>64614000
      ABSOLUTE(SYSLASTBANK):=TOS;                              <<06259>>64615000
      END                                                      <<06259>>64616000
   ELSE                                                        <<06259>>64617000
      BEGIN <<LAST BANK IS PARTIAL>>                           <<06259>>64618000
      TOS:=TOS&LSL(10)-1;                                      <<06259>>64619000
      ABSOLUTE(SYSLASTBASE):=TOS;                              <<06259>>64620000
      TOS:=TOS.(0:10);                                         <<06259>>64621000
      ABSOLUTE(SYSLASTBANK):=TOS;                              <<06259>>64622000
      END;                                                     <<06259>>64623000
                                                               <<06259>>64624000
   <<--------------------->>                                   <<06259>>64625000
   <<   CST BLOCK TABLE   >>                                   <<06259>>64626000
   <<--------------------->>                                   <<06259>>64627000
                                                               <<06259>>64628000
   INITTABLE(CTAB(CONPROGNUM)+9+(CTAB(CONPROGNUM)-1)&LSR(4)+2, <<06259>>64629000
      1,BANK0ONLY,TRUE,CSTBLKDSTN,SYSCSTBLK);                  <<06259>>64630000
   CSTBLK(0):=CTAB(CONPROGNUM)+8;<<USER AND SYS>>              <<06259>>64631000
   I := 0;                                                     <<06259>>64632000
   WHILE (I:=I+1) <= CSTBLK(0) DO CSTBLK(I):=-1;               <<06259>>64633000
                                                               <<06259>>64634000
$EDIT VOID=64642000                                            <<*SLL*>>64635000
   <<---------------------------->>                            <<06259>>64643000
   <<   MEASUREMENT INFO TABLE   >>                            <<06259>>64644000
   <<---------------------------->>                            <<06259>>64645000
                                                               <<06259>>64646000
   INITTABLE(MEASINFOTABSIZE,1,BANK0ONLY,TRUE,MEASINFOTABDSTN, <<06259>>64647000
      SYSMEASINFOTAB);                                         <<06259>>64648000
                                                               <<06259>>64649000
   <<----------------------------------------->>               <<06259>>64650000
   <<   VIRTUAL DISC SPACE MANAGEMENT TABLE   >>               <<06259>>64651000
   <<----------------------------------------->>               <<06259>>64652000
                                                               <<06259>>64653000
   BUILD'VDSMTAB;                                              <<06259>>64654000
                                                               <<06259>>64655000
$EDIT VOID=64667000                                            <<SYPTR>>64656000
$EDIT VOID=64679000                                            <<JPCNT>>64668000
   <<----------------------------->>                           <<JPCNT>>64668010
   <<   JOB PROCESS COUNT TABLE   >>                           <<JPCNT>>64668060
   <<----------------------------->>                           <<JPCNT>>64668110
                                                               <<JPCNT>>64668160
   TEMP := CTAB(MAXRJOB)+CTAB(MAXRSES);                        <<JPCNT>>64668210
   << HEADER 4 WDS  >>                                         <<JPCNT>>64668260
   M := (TEMP+15)/16+4;  << JPCNT BIT MAP >>                   <<JPCNT>>64668310
   MEMADR := INITTABLE(M,1,BANK0ONLY,TRUE,JPCTDSTN,SYSJPCNT);  <<JPCNT>>64668360
   JPCNT(0) := TEMP;         << MAX RUNNING JOBS >>            <<JPCNT>>64668410
   JPCNT(1) := TEMP;         << NR. OF FREE BITS >>            <<JPCNT>>64668460
   <<  INITIALIZE JPCNT BIT MAP  >>                            <<JPCNT>>64668510
   I := TEMP;                                                  <<JPCNT>>64668560
   WHILE (I:=I-1) >= 0 DO                                      <<JPCNT>>64668610
      JPCNT(4+I.(0:12)) := JPCNT(4+I.(0:12)) LOR               <<JPCNT>>64668660
         %100000 &CSR(I.(12:4));                               <<JPCNT>>64668710
                                                               <<06259>>64680000
                                                               <<PORTS>>64680100
          <<--------------------------------->>                <<PORTS>>64680200
          << INITIALIZE INCORE MESSAGE TABLE >>                <<PORTS>>64680300
          <<--------------------------------->>                <<PORTS>>64680400
          INIT'MESSAGE'SYSTEM;                                 <<PORTS>>64680500
                                                               <<PORTS>>64680600
END;    << MAINSEG2 >>                                         <<06259>>64681000
$EDIT VOID = 65614000                                          <<jb.dc>>65584000
$EDIT VOID=65796000                                            <<*DVR*>>65796000
      INTEGER POINTER                                          <<06259>>65797000
         DLTTAB,                                               <<06259>>65797100
         DLT;                                                  <<06259>>65797200
              ILTADR, << ABSOLUTE ADDRESS OF ILT >>            <<06259>>65798300
              DITADR, << AGSOLUTE ADDRESS OF DIT >>            <<06259>>65798400
              DLTLEN, << TOTAL LENGTH OF DLT TABLE >>          <<06259>>65798500
      INTEGER PCBPT;                                           <<*pcb*>>65808000
       INTEGER                                                 <<*DVR*>>65825000
            LDT'INDEX,                                         <<*DVR*>>65825010
            LPDT'INDEX,                                        <<*DVR*>>65825020
            DVR'INDEX;                                         <<*DVR*>>65825100
      LOGICAL ARRAY DRIV'WNAME(0:4)=Q; << TEMP ARRAY FOR  >>   <<*DVR*>>65827000
      BYTE ARRAY DRIV'BNAME(*) = DRIV'WNAME;<< DRIVER TABLE >> <<*DVR*>>65828000
                                                               <<*DVR*>>65829000
          ABSOLUTE(HSYSDRT) := COMM(DRTNUM);                   <<CONFD>>65852000
          << ALLOCATE DRT TABLE FROM INITTABLE>>               <<06259>>65858000
                                                               <<06259>>65860000
            SAVDRT:= INITTABLE(I, 1, ANYWHERE'TAB,             <<06259>>65916000
                       TRUE, , DRTIX);                         <<*DRT*>>65917000
                                                               <<06259>>65932001
$EDIT VOID=65932015                                            <<TBUF*>>65932002
   <<--------------------------------------->>                 <<06259>>65932100
   <<   PROCESS CONTROL BLOCK TABLE (PCB)   >>                 <<06259>>65932150
   <<--------------------------------------->>                 <<06259>>65932200
                                                               <<06259>>65932250
$EDIT VOID=65933050                                            <<*SLL*>>65932300
   INITSYSTABLE(CTAB(PCBNUM),0,PCBSIZE,PCBDSTN,SYSPCB);        <<*SLL*>>65932400
$EDIT VOID = 65932800                                          <<*pcb*>>65932500
   ABSOLUTE(PCBP) := 0;                                        <<*pcb*>>65932900
   TOS:=0;                                                     <<06259>>65933100
   TOS:=SYSBASE;                                               <<06259>>65933150
   ASSEMBLE(XCHD); <<DB TO SYSDB>>                             <<06259>>65933200
                                                               <<06259>>65933250
   <<PLACE PROGENITOR'S PCB ENTRY AT HEAD OF DISPQ>>           <<06259>>65933300
$EDIT                                                          <<*pcb*>>65933350
   PCBPT := PROGPCBN * PCBSIZE;                                <<*pcb*>>65933360
   DISPQHEAD := PROGPCBN * PCBSIZE;                            <<*pcb*>>65933400
   DISPQTAIL := PROGPCBN * PCBSIZE;                            <<*pcb*>>65933450
   <<FIX PROGENITOR'S QUEUE FIELDS>>                           <<06259>>65933500
   WAKEMASK.MEMWAITFLAG:=1;                                    <<06259>>65933550
   QUEUEINGINFO.DISPQFLAG:=1;                                  <<06259>>65933600
   ASSEMBLE(XCHD);                                             <<06259>>65933650
   ASSEMBLE(DDEL);                                             <<06259>>65933700
   GETENTRY( PCBDSTN); << RESERVE ENTRY 1 FOR PROGEN >>        <<*sll5>>65933720
                                                               <<06259>>65933750
   <<--------------->>                                         <<06259>>65933800
   <<   SWAPTABLE   >>                                         <<06259>>65933820
   <<--------------->>                                         <<06259>>65933840
                                                               <<06259>>65933860
$EDIT VOID=65933920                                            <<*SLL*>>65933870
   << MAKE SURE ENOUGH ENTRIES ARE CONFIGURED >>               <<*SLL*>>65933880
   I := IF CTAB(SWAPTABLE) < CTAB(PCBNUM) *2 THEN              <<*SLL*>>65933890
        CTAB(PCBNUM) * 2 ELSE CTAB(SWAPTABLE);                 <<*SLL*>>65933900
   INITSYSTABLE(I,0,SWAPTABSIZE,SWAPTABDSTN,SYSSWAPTAB);       <<*SLL*>>65933910
                                                               <<06259>>65933940
$EDIT VOID=65934020                                            <<*SLL*>>65933950
   <<--------------------------->>                             <<*SLL*>>65933960
   <<   SPECIAL REQUEST TABLE   >>                             <<*SLL*>>65933970
   <<--------------------------->>                             <<*SLL*>>65933980
                                                               <<*SLL*>>65933990
   I := IF CTAB(SPECIALREQTABLE) < HLDEV+CTAB(PCBNUM) THEN     <<*SLL*>>65933994
       HLDEV+CTAB(PCBNUM) ELSE CTAB(SPECIALREQTABLE);          <<*SLL*>>65933995
   INITSYSTABLE(I,HLDEV,SRTSIZE,SPECREQTABDSTN,SYSSPECREQTAB); <<*SLL*>>65934000
                                                               <<*SLL*>>65934010
$EDIT VOID=65934420                                            <<JCUT*>>65934020
   <<---------------------->>                                  <<JCUT*>>65934040
   <<   JOB CUTOFF TABLE   >>                                  <<JCUT*>>65934060
   <<---------------------->>                                  <<JCUT*>>65934080
                                                               <<JCUT*>>65934100
   M := CTAB(MAXRJOB) + CTAB(MAXRSES);                         <<JCUT*>>65934120
   INITTABLE(M+2,JCUTSIZE,ANYWHERE'TAB,TRUE,JCUTDSTN,SYSJCUT); <<JCUT*>>65934140
   JCUT(0) := M;                                               <<JCUT*>>65934160
   JCUT(1) := JCUTSIZE;                                        <<JCUT*>>65934180
   JCUT(2) := JCUTSIZE*2;                                      <<JCUT*>>65934200
   <<    INTITIALIZE FREE LIST    >>                           <<JCUT*>>65934220
   X := JCUTSIZE*2;                                            <<JCUT*>>65934240
   FOR I := 2 UNTIL M DO                                       <<JCUT*>>65934260
      X := JCUT(X) := X+JCUTSIZE;                              <<JCUT*>>65934280
   JCUT(3) := X;   << PTR TO LAST ENTRY >>                     <<JCUT*>>65934300
   ABSOLUTE(DEFAULTQUEUE) := DEFAULTJOBPRI;                    <<JCUT*>>65934320
   ABSOLUTE(MAXQUEUE) := DEFAULTJOBPRI;                        <<JCUT*>>65934340
                                                               <<06354>>65934440
                                                               <<*pcb*>>65934450
                                                               <<06354>>65934460
$EDIT VOID=65934800                                            <<*TRL*>>65934480
   <<-------------------------->>                              <<*TRL*>>65934500
   <<   TIMER REQUEST QUEUE    >>                              <<*TRL*>>65934520
   <<-------------------------->>                              <<*TRL*>>65934540
                                                               <<*TRL*>>65934560
   INITTABLE(CTAB(TRLNUM)+1,TRLSIZE,ANYWHERE'TAB,TRUE,         <<*TRL*>>65934580
      TRLDSTN,SYSTRL);                                         <<*TRL*>>65934600
   TRL(0) := CTAB(TRLNUM); << NR. ENTRIES >>                   <<*TRL*>>65934620
   TRL(1) := TRLSIZE;   << ENTRY SIZE  >>                      <<*TRL*>>65934640
   TRL(2) := 3*TRLSIZE; << FREE LIST HEAD >>                   <<*TRL*>>65934660
   << INITIALIZE FREE LIST >>                                  <<*TRL*>>65934680
   FOR I := 3 UNTIL CTAB(TRLNUM)-1 DO                          <<*TRL*>>65934700
      TRL(I*TRLSIZE) := I+1;                                   <<*TRL*>>65934720
                                                               <<06354>>65934820
   <<-------------------->>                                    <<06354>>65934840
   <<   SYSTEM BUFFERS   >>                                    <<06354>>65934860
   <<-------------------->>                                    <<06354>>65934880
                                                               <<06354>>65934900
   INITIOTABLE(CTAB(SBUFNUM),SECSBUF,SBUFSIZE,SBUFDSTN,        <<06354>>65934920
      SYSSBUF);                                                <<06354>>65934940
$EDIT VOID=65934140                                            <<TBUF*>>65934960
   <<------------------------------->>                         <<06354>>65934980
   <<   ALLOCATE TERMINAL BUFFERS   >>                         <<06354>>65935000
   <<------------------------------->>                         <<06354>>65935020
                                                               <<06354>>65935040
   << FOR ADCC- OR ATC-CONNECTED TERMINALS, ALLOCATE>>         <<06354>>65935060
   << TBUF'S IN BANK 0.  LYNX SOFTWARE ALLOCATES ITS>>         <<06354>>65935080
   << OWN TBUF'S.  NO. OF TBUF'S = TBUF'S/PORT *    >>         <<06354>>65935100
   << NO. OF TERMINALS, NOT GREATER THAN LIMIT      >>         <<06354>>65935120
                                                               <<06354>>65935140
                                                               <<06354>>65935160
          <<----------------------------->>                    <<06354>>65935180
          <<LOGICAL-PHYSICAL DEVICE TABLE>>                    <<06354>>65935200
          <<----------------------------->>                    <<06354>>65935220
                                                               <<06354>>65935240
          INITTABLE(HLDEV+1, LPDTSIZE, ANYWHERE'TAB, TRUE,     <<nomem>>65935260
                            LPDTDSTN, SYSLPDT);                <<06354>>65935280
          MTDS(LPDTDSTN, 0, LPDT, (HLDEV+1)*LPDTSIZE);         <<06354>>65935300
                                                               <<06354>>65935320
          <<--------->>                                        <<06354>>65935340
          <<I/O QUEUE>>                                        <<06354>>65935360
          <<--------->>                                        <<06354>>65935380
                                                               <<06354>>65935400
          INITIOTABLE(CTAB(IOQNUM),SECIOQ,IOQSIZE,             <<06354>>65935420
               IOQDSTN, SYSIOQ);                               <<06354>>65935440
                                                               <<06354>>65935460
          <<---------------------->>                           <<06354>>65935480
          <<DISC I/O REQUEST TABLE>>                           <<06354>>65935500
          <<---------------------->>                           <<06354>>65935520
                                                               <<06354>>65935540
          INITIOTABLE(CTAB(DISCREQTABLE),SECDISC,              <<06354>>65935560
           DISCREQSIZE,DISCREQTABDSTN,SYSDISCREQTAB);          <<06354>>65935580
   <<--------------->>                                         <<06354>>65935600
   <<   SIR TABLE   >>                                         <<06354>>65935620
   <<--------------->>                                         <<06354>>65935640
                                                               <<06354>>65935660
   M := CTAB(MAXRJOB) + CTAB(MAXRSES);                         <<06354>>65935680
   MEMADR := INITTABLE( NSIR+M, SIRSIZE, ANYWHERE'TAB, TRUE,   <<06354>>65935700
      SIRDSTN, SYSSIR);                                        <<06354>>65935720
   SSEA( MEMADR, NSIR+M);                                      <<06354>>65935740
   SSEA( MEMADR+1D, SIRSIZE);                                  <<06354>>65935760
                                                               <<06354>>65935780
   <<----------------------------------------->>               <<06354>>65935800
   <<   MEMORY MANAGEMENT MONITORING BUFFER   >>               <<06354>>65935820
   <<----------------------------------------->>               <<06354>>65935840
                                                               <<06354>>65935860
   INITTABLE( MONBUFSIZE, 1, ANYWHERE'TAB, TRUE, , SYSMONBUF); <<SYPTR>>65935880
$EDIT                                                          <<SYPTR>>65935900
$EDIT                                                          <<SYPTR>>65935920
                                                               <<06354>>65935940
   <<--------------------------->>                             <<PMBC*>>65935960
   <<   INITIALIZE PMBC TABLE   >>                             <<PMBC*>>65935964
   <<--------------------------->>                             <<PMBC*>>65935968
                                                               <<PMBC*>>65935972
   INIT'PMBC;                                                  <<PMBC*>>65935976
                                                               <<PMBC*>>65935980
$EDIT VOID=66010000                                            <<06091>>65942000
          HCST := IF LOGICALMAPPING THEN MAXPHYCST             <<06091>>65943000
             ELSE CTAB(CSTNUM);                                <<06091>>65944000
          SEGTLEN := SEGTPDB+SEGDIRLEN;                        <<06091>>65945000
          @SEGXFORM := @SEGT+SEGTLEN;                          <<06091>>65947000
          SEGT := SEGTPDB+SEGLCTLEN+128;      << @DIR >>       <<06091>>65947500
          SEGT(1) := SEGDIRLEN;               << DIR LENGTH >> <<06091>>65948000
          SEGT(2) := SEGTPDB;                 << @LCT >>       <<06091>>65949000
          SEGT(7) := SEGTPDB+SEGLCTLEN;       << @SBUF0 >>     <<06091>>65950000
          SEGT(SEG'HEAD) := 0;             << HEAD AND TAIL >> <<06091>>65951000
          MOVE SEGT(SEG'HEAD+1) := SEGT(SEG'HEAD),             <<06091>>65952000
             ((SEG'TAIL-SEG'HEAD)*2-1);       << LINKS >>      <<06091>>65952100
          SAGL := 0; << STARTING ADDRESS OF GARBAGE LIST >>    <<06091>>65953000
                                                               <<06091>>65962000
          << BUILD GARGAGE ENTRY >>                            <<06091>>65963000
                                                               <<06091>>65964000
          @SEGDIR := @SEGT+SEGTPDB+3; << LOCAL PTR >>          <<06091>>65965000
          SEGDIR := 0;                << TYPE      >>          <<06091>>65966000
          SEGDIR(-1) := SEGDIRLEN;    << RLENGTH   >>          <<06091>>65967000
          SEGDIR(-2) := 0;            << BKWDLINK  >>          <<06091>>65968000
          SEGDIR(-3) := 0;            << FWDLINK   >>          <<06091>>65969000
                                                               <<06091>>65970000
          << LINK GARBAGE ENTRY >>                             <<06091>>65971000
                                                               <<06091>>65972000
          SEGT(SEG'HEAD) := SEGTPDB+3;      << HEAD LINK >>    <<06091>>65973000
          SEGT(SEG'TAIL) := SEGT(SEG'HEAD); << TAIL LINK >>    <<06091>>65974000
          X := 0;                                              <<06091>>65975000
          DO BEGIN                                             <<06091>>65976000
             SEGXFORM(X) := %177400;                           <<06091>>65977000
             END UNTIL (X:=X+1) = HCST;                        <<06091>>65978000
            MOVE LDMAPBUF:="MPE V   U.FF.VV ";                 <<.VER.>>66032000
            LDMAPBUF(4).LBITE:=COMM(VERSION').RBITE;           <<CONFD>>66034000
            LDMAPBUF(5):=COMM(UPDATEL');                       <<CONFD>>66036000
            LDMAPBUF(6).RBITE:=COMM(FIXLEVEL').LBITE;          <<CONFD>>66038000
            LDMAPBUF(7).LBITE:=COMM(FIXLEVEL').RBITE;          <<CONFD>>66040000
          FLFCBVECT := 0D;                                     <<*FLAB>>66082000
$EDIT VOID=66112000 << KILL TRACE PLABEL >>                    <<06091>>66110000
          ABSOLUTE(FIXL) := COMM(FIXLEVEL');                   <<CONFD>>66114000
          ABSOLUTE(UPDATEL) := COMM(UPDATEL');                 <<CONFD>>66116000
          ABSOLUTE(VERSION) := COMM(VERSION');                 <<CONFD>>66118000
          SYSGLOBEXT(GLOBMITVERSION) := COMM(MITVERSION);      <<CONFD>>66120000
          SYSGLOBEXT(GLOBMITUPDATE) := COMM(MITUPDATE);        <<CONFD>>66122000
          SYSGLOBEXT(GLOBMITFIX) := COMM(MITFIX);              <<CONFD>>66124000
$EDIT VOID=66176000                                            <<06259>>66140000
          DLTLEN := NDLT * DLTSIZE;                            <<06259>>66194000
          DLSIZE( DLTLEN);                                     <<06259>>66194500
          PUSH( DL );                                          <<06259>>66195000
          @DLTTAB := TOS;                                      <<06259>>66195500
          MFDS( DLTTAB, DLTDSTN, 0, DLTLEN);                   <<06259>>66196000
                  SYS(ABS(SYSBUSY)+IOPROC(INDEX).QNUMB) := TOS;<<06259>>66232000
              ILTADR := GETDRT( DRTN, DBI);                    <<06259>>66272000
                  IF ABS(ILTADR+IDITP+I)=0 THEN GOTO NEXTDIT;  <<06259>>66304000
                  DITADR := ABS(X) + SYSBASE;                  <<06259>>66306000
                  TOS := ABS(DITADR+DDLTP);  <<DLT PTR>>       <<06259>>66308000
                  DLTINDEX := ( TOS+SYSBASE - DST(DLTDSTN&     <<06259>>66310000
                               LSL(2)+3));                     <<06259>>66311000
                  @DLT := @DLTTAB(DLTINDEX);                   <<06259>>66311100
                  DLTINDEX := DLTINDEX / DLTSIZE;              <<06259>>66311200
$EDIT VOID=66318000                                            <<06259>>66316000
                  DVR'INDEX:=ABS(DITADR+DLDEV)*DVRSIZE;        <<DVRF1>>66323000
                  MOVE DRIV'WNAME:=DVRNAME,(4);                <<*DVR*>>66324000
$EDIT VOID=66326000                                            <<*DVR*>>66326000
                    UPDATESTT(CSTINDEX,DRIV'BNAME);<<GET STT >><<*DVR*>>66334000
                  LOAD(DRIV'BNAME, CSTINDEX, DSTINDEX, 0, GLOB,<<*DVR*>>66344000
                        ERRMESSAGE(M253,                       <<06259>>66386000
                            ABS(DITADR+DLDEV));                <<06301>>66387000
                  IF DUMMYDRIVER( DLT, INTRINDEX, FIRSTCST,    <<06259>>66416000
                    LDMAP( FIRSTCST, NSEG, DRIV'BNAME);        <<*DVR*>>66452000
  SETPIN:         IF DVRTYPE=3 THEN ABS(DITADR+DPCBN) :=       <<06259>>66456000
                   IOPROC(DLT(DPROC).QNUMB*IOPROCSIZE+9).(0:8);<<06259>>66458000
                  IF ABS(DITADR+DFLAG).SPECIH=1 THEN           <<06259>>66466000
                     DLT(DINTP):=STTLABEL(INTR(INTRINDEX+1))   <<06259>>66468000
              MOVE DRIV'WNAME := DRNAME,(4);                   <<*DVR*>>66566000
              LOAD( DRIV'BNAME, CSTINDEX, DSTINDEX, 0, GLOB,   <<*DVR*>>66568000
                 @DLT := @DLTTAB(DLTINDEX:=CSDUMMYINDEX)       <<06259>>66586000
$EDIT                                                          <<06259>>66588000
                LDT'INDEX := I * LDTSIZE;                      <<*LDT*>>66597000
                DVR'INDEX := I * DVRSIZE;                      <<*DVR*>>66597100
                IF NOT(CSDEV17<=LDT'DEVICE'TYPE<=CSDEV19) THEN <<*LDT*>>66598000
$EDIT VOID=66602000                                            <<*DVR*>>66602000
$EDIT VOID=66604000                                            <<*DVR*>>66604000
                IF NOT(COMPARE'WORDS(DRNAME, DVRNAME, 4)) THEN <<*DVR*>>66606000
                   GO LOOKFORCSDRT;                            <<*DVR*>>66607000
                DRTN := DVRDRTNUM;                             <<*DVR*>>66608000
                ILTADR := GETDRT( DRTN, DBI);                  <<06259>>66610000
                DITADR := ABS(ILTADR+IDITP) + SYSBASE;         <<06259>>66612000
                TOS := ABS(DITADR+DDLTP); <<DLT PTR>>          <<06259>>66614000
$EDIT                                                          <<06259>>66616000
                @DLT := @DLTTAB(DLTINDEX);                     <<06259>>66621000
                @DLT := @DLTTAB(DLTINDEX);                     <<06259>>66680000
$EDIT                                                          <<06259>>66682000
              IF DUMMYDRIVER( DLT, INTRINDEX-1, FIRSTCST,      <<06259>>66762000
                 LDMAP( FIRSTCST, NSEG, DRIV'BNAME);           <<*DVR*>>66790000
            BEGIN                                              <<*DVR*>>66807000
            DVR'INDEX := I * DVRSIZE;                          <<*DVR*>>66807100
            IF DVRDSBIT = 1 <<DS DEV>> THEN                    <<*DVR*>>66808000
              LPDT'INDEX := I * LPDTSIZE;                      <<*LPDT>>66811000
              DITADR := LPDT'DIT'PTR + SYSBASE;                <<*LPDT>>66812000
              IF ABS(DITADR+DPROC).CORERES=INTEGER(LINKED) THEN<<06259>>66814000
                 GO NEXTDSDEV;                                 <<06259>>66815000
              TOS := ABS(DITADR+DDLTP);                        <<06259>>66816000
              TOS := S0+TEMP;  <<SYDB REL POINTER TO DLT>>     <<06259>>66818000
              ABS(X) := TOS;                                   <<06259>>66820000
              @DLT := @DLTTAB(S0);                             <<06259>>66822000
              MOVE DRIV'WNAME := DVRNAME, (4);                 <<*DVR*>>66830000
                UPDATESTT( CSTINDEX,DRIV'BNAME); << GET STT >> <<*DVR*>>66838000
              LOAD( DRIV'BNAME, CSTINDEX, DSTINDEX, 0, GLOB,   <<*DVR*>>66846000
              IF DUMMYDRIVER( DLT, INTRINDEX, FIRSTCST,        <<06259>>66898000
                 LDMAP( FIRSTCST, NSEG, DRIV'BNAME);           <<*DVR*>>66934000
            END;                                               <<*DVR*>>66939000
       MTDS(DLTDSTN, 0, DLTTAB, DLTLEN);                       <<06259>>66952100
       DLSIZE( -DLTLEN ); << RETURN SPACE FOR DLT >>           <<06259>>66952200
                                                               <<06259>>66952300
          LPDT'INDEX := SYSDISC * LPDTSIZE;                    <<*LPDT>>67029000
          ABSOLUTE(SYSDIT8) := LPDT'DIT'PTR+SYSBASE+8;         <<*LPDT>>67030000
                                                               <<PORTS>>67062100
        <<-------------------------------->>                   <<PORTS>>67062200
        << CREATE ICS PORT SERVER PROCESS >>                   <<PORTS>>67062300
        <<-------------------------------->>                   <<PORTS>>67062400
        SYSGLOBEXT(SYSPORT'PIN) := PROCREATE(SYSPORTNAME,0,    <<PORTS>>67062500
             SYSPORTPRI,SYSPORTSTACK,9<<MSG WAIT>>,4,0,1,2,0); <<PORTS>>67062600
                                                               <<PORTS>>67062700
          IF PLABEL (NMMONNAME) <> 0 THEN                      <<AL.00>>67063000
             BEGIN                                             <<AL.00>>67063100
                                                               <<AL.00>>67063200
        <<-------------------------------->>                   <<AL.00>>67063300
        <<    CREATE NM MONITOR PROCESS   >>                   <<AL.00>>67063400
        <<-------------------------------->>                   <<AL.00>>67063500
                                                               <<AL.00>>67063600
             ABSOLUTE(NMMONSTOP) := PROCREATE (NMMONNAME,      <<AL.00>>67063700
                NMMONPROC,NMMONPRI,NMMONSTACK,FATHERWAIT,      <<AL.00>>67063800
                   4,0,TRUE,2,0) & LSL(8) + NMMONBIT;          <<AL.00>>67063900
             ABSOLUTE(NMMONSTOP+1) := 4;    << AWAKE ON MSG >> <<AL.00>>67064000
             ABSOLUTE(NPROCSTOP) := 6;      << ADD TO TOTAL >> <<AL.00>>67064100
             END;                                              <<AL.00>>67064200
                                                               <<AL.00>>67064300
      END <<MAINSEG3>> ;                                       <<AL.00>>67065000
   The interim table consists of one word entries, bits (0:14) <<06203>>67098000
   contain the qualifying LDEV#, and bits (14:2) contain a "1" <<06203>>67099000
   "1" if the LDEV# specifies an actual tape type device(i.e.  <<06203>>67100000
   if Device Type = 24).                                       <<06203>>67101000
$EDIT                                                          <<06259>>67116000
INTEGER ARRAY TLT'LDEVS(*) = LBUF;                             <<06259>>67118000
$EDIT                                                          <<06259>>67122000
$EDIT VOID=67134000                                            <<06259>>67132000
  INTEGER                                                      <<*LDT*>>67141000
      LDT'INDEX,                                               <<*LPDT>>67141100
      LPDT'INDEX;                                              <<*LPDT>>67141200
      BEGIN                                                    <<*LDT*>>67151000
      LDT'INDEX := I * LDTSIZE;                                <<*LDT*>>67151100
      LPDT'INDEX := I * LPDTSIZE;                              <<*LPDT>>67151200
      IF  LDT'DEVICE'TYPE = 24 << MAG TAPE >> OR               <<*LDT*>>67152000
          (LPDT'NON'SYS'DOMAIN = 1 LAND                        <<*LPDT>>67154000
           0 <= LDT'DEVICE'TYPE <= 9) THEN                     <<*LDT*>>67156000
        TLT'LDEVS(TLT'LDEVS'INDX):= I&LSL(2);                  <<06203>>67162000
        IF LDT'DEVICE'TYPE = 24 << MAG TAPE >> THEN            <<*LDT*>>67168000
          TLT'LDEVS(TLT'LDEVS'INDX).(14:2):= 1;                <<06203>>67170000
      END;                                                     <<*LDT*>>67177000
TLTMAX := (TLT'LDEVS'INDX-1) * TLTSIZE;                        <<06259>>67184000
$EDIT VOID=67200000                                            <<06259>>67190000
INITTABLE(TLTMAX,1,TEMPORARY'TAB,0,TLTDSTN);                   <<06259>>67191000
MTDS(TLTDSTN,0,TLT'LDEVS,TLT'LDEVS'INDX);                      <<06259>>67192000
ABSENT( TLTDSTN, -1);                                          <<06259>>67193000
                                                               <<06259>>67194000
ABSOLUTE(AVR) := 1; << TURN ON AVR >>                          <<06259>>67195000
                LEN,                                           <<dctab>>67235000
                FPOINT,   <<FREE POINTER>>                     <<*LDT*>>67240000
                LDT'INDEX,                                     <<*DVR*>>67241000
                LPDT'INDEX,                                    <<*DVR*>>67241100
                DVR'INDEX;                                     <<*DVR*>>67241200
$EDIT                                                          <<06259>>67250000
   INTEGER ARRAY CMHDR(0:255); <<CMHDRUNICATION ARRAY>>                 67279000
   INTEGER COMMDSTN;        <<CMHDRUNICATION DATA SEG #>>               67279500
   ASSEMBLE( RSW );                                            <<06259>>67282000
   IF TOS.(8:8) <> CLRSW THEN HELP;                            <<06259>>67284000
   VDSTART1 := ABS(ABS(SYSVDSENTRY)+SYSBASE+HOSTARTSECTORWORD);<<06259>>67286000
   VDSTART2 := ABS(ABS(SYSVDSENTRY)+SYSBASE+LOSTARTSECTORWORD);<<06259>>67288000
$EDIT VOID=67410000    <<CS DATA SEG, RIT, UCRQ, PPCT, JPXREF>><<06259>>67290000
   <<--------------------->>                                   <<06259>>67292000
   <<   CS DATA SEGMENT   >>                                   <<06259>>67294000
   <<--------------------->>                                   <<06259>>67296000
                                                               <<06259>>67298000
   CSTAB(GROUPENTPTR) := CSTAB;                                <<06259>>67300000
   CSTAB(DRIVERENTPTR) := CSTAB;                               <<06259>>67302000
   MEMADR := INITTABLE(CSTAB+CSDVRAREASIZE,1,TEMPORARY'TAB,0,  <<06259>>67304000
      CSDSTN);                                                 <<06259>>67306000
   MTDS( CSDSTN, 0, CSTAB, CSTAB);                             <<06259>>67308000
   MTDS( CSDSTN, CSTAB, CSDVRAREA, CSDVRAREASIZE);             <<06259>>67310000
   SSEA( MEMADR, TABSIZE);                                     <<06259>>67312000
   ABSENT( CSDSTN, -1);                                        <<06259>>67314000
                                                               <<06259>>67320000
   <<----------------------------->>                           <<06259>>67322000
   <<   REPLY INFORMATION TABLE   >>                           <<06259>>67324000
   <<----------------------------->>                           <<06259>>67326000
                                                               <<06259>>67328000
   MEMADR := INITTABLE(2048,1,TEMPORARY'TAB,0,RITDSTN);        <<06259>>67330000
   SSEA( MEMADR+1D, 39);                                       <<06259>>67332000
   SSEA( MEMADR+2D, 4);                                        <<06259>>67334000
   ABSENT( RITDSTN, -1);                                       <<06259>>67336000
                                                               <<06259>>67338000
   <<------------------------------->>                         <<06259>>67340000
   <<   UCOP REQUEST QUEUE (UCRQ)   >>                         <<06259>>67342000
   <<------------------------------->>                         <<06259>>67344000
                                                               <<06259>>67346000
   MEMADR := INITTABLE(CTAB(UCRQNUM)+2,UCRQSIZE,               <<06259>>67348000
      TEMPORARY'TAB,0,UCRQDSTN);                               <<06259>>67350000
   SSEA( MEMADR, CTAB(UCRQNUM));                               <<06259>>67352000
   ABSENT( UCRQDSTN, -1);                                      <<06259>>67354000
                                                               <<06259>>67356000
   <<---------------------------------->>                      <<06259>>67358000
   <<   INIT P-P COMMUNICATION TABLE   >>                      <<06259>>67360000
   <<---------------------------------->>                      <<06259>>67362000
                                                               <<06259>>67364000
   MEMADR := INITTABLE(CTAB(PCBNUM)+1,PPCTSIZE,TEMPORARY'TAB,  <<PPCOM>>67366000
      0,PPCTDSTN);                                             <<06259>>67368000
   ABSENT(PPCTDSTN,-1);                                        <<06259>>67370000
                                                               <<06259>>67372000
   <<--------------------------------->>                       <<06259>>67374000
   <<   JOB-PROCESS CROSS REF TABLE   >>                       <<06259>>67376000
   <<--------------------------------->>                       <<06259>>67378000
                                                               <<06259>>67380000
   MEMADR := INITTABLE( CTAB(PCBNUM)+1, 1,                     <<JXREF>>67382000
               TEMPORARY'TAB, 0, JPXREFDSTN);                  <<06259>>67383000
   SSEA( MEMADR, CTAB(PCBNUM));                                <<06259>>67384000
   SSEA( MEMADR+1D, 1);                                        <<06259>>67386000
   ABSENT( JPXREFDSTN, -1);                                    <<06259>>67388000
                                                               <<06259>>67390000
$EDIT VOID=67546000                                            <<*JIT*>>67412000
   <<---------------->>                                        <<*JIT*>>67414000
   <<   SYSTEM JIT   >>                                        <<*JIT*>>67416000
   <<---------------->>                                        <<*JIT*>>67418000
                                                               <<*JIT*>>67420000
   INITTABLE(67,1,TEMPORARY'TAB,FALSE,SJITDSTN);               <<*JIT*>>67422000
   << INITIALIZATION OF JIT DONE IN PROGEN >>                  <<*JIT*>>67424000
   ABSENT( SJITDSTN, -1);                                      <<*JIT*>>67426000
                                                               <<*JIT*>>67428000
   <<---------------->>                                        <<*JIT*>>67430000
   <<   SYSTEM JDT   >>                                        <<*JIT*>>67432000
   <<---------------->>                                        <<*JIT*>>67434000
                                                               <<*JIT*>>67436000
   INITTABLE(SJDTSIZE,1,TEMPORARY'TAB,FALSE,SJDTDSTN);         <<*JIT*>>67438000
   << INITIALIZATION OF JDT DONE IN PROGEN >>                  <<*JIT*>>67440000
   ABSENT( SJDTDSTN, MAXSJDTSIZE);                             <<*JIT*>>67442000
$EDIT VOID=67568000                                                     67564000
            INSERT'ABSENT'DST(INFOD(IDDLOC),IDDDSTN,IDDSEGSIZE,         67574000
                                                  MAXIDDTSIZE);         67576000
            INSERT'ABSENT'DST(INFOD(JMATLOC),JMATDSTN,                  67582000
                                JMATSEGSIZE,MAXJMSIZE);                 67584000
$EDIT VOID=67882000                                                     67586000
            INSERT'ABSENT'DST(INFOD(ODDLOC),ODDDSTN,                    67888000
                                 ODDSEGSIZE,MAXODDTSIZE);               67890000
$EDIT VOID=68218000                                                     67892000
$EDIT VOID=68262000                                            <<JMAT*>>68230000
   <<---------------------->>                                  <<JMAT*>>68232000
   <<   JOB MASTER TABLE   >>                                  <<JMAT*>>68234000
   <<---------------------->>                                  <<JMAT*>>68236000
                                                               <<JMAT*>>68238000
   INITTABLE(JMATTSIZE,1,TEMPORARY'TAB,FALSE,JMATDSTN);        <<JMAT*>>68240000
   ZEROBUF( BUF, JMATSIZE);                                    <<JMAT*>>68242000
   BUF := MAXJMATSIZE&LSL(8) + INITJMATSIZE;                   <<JMAT*>>68244000
   BUF(1) := JMATSIZE;                                         <<JMAT*>>68246000
   BUF(2) := JMATSIZE;                                         <<JMAT*>>68248000
   BUF(SCHEDTAILP) := SCHEDHEADP;                              <<JMAT*>>68250000
   BUF(5) := %40001;                                           <<JMAT*>>68252000
   BUF(7) := %100001;                                          <<JMAT*>>68254000
   BUF(10) := CTAB(MAXRSES);                                   <<JMAT*>>68256000
   BUF(12) := CTAB(MAXRJOB);                                   <<JMAT*>>68258000
   MTDS( JMATDSTN, 0, BUF, JMATSIZE);                          <<JMAT*>>68260000
   ABSENT( JMATDSTN, MAXJMSIZE);                               <<JMAT*>>68262000
$EDIT VOID=68263900                                            <<06354>>68262100
$EDIT VOID=68484000                                            <<*XDD*>>68264000
                                                               <<*XDD*>>68265000
   <<---------------------------->>                            <<*XDD*>>68266000
   <<   INPUT DEVICE DIRECTORY   >>                            <<*XDD*>>68267000
   <<---------------------------->>                            <<*XDD*>>68268000
                                                               <<*XDD*>>68269000
   MEMADR := INITTABLE(IDDTSIZE,1,TEMPORARY'TAB,FALSE,IDDDSTN);<<*XDD*>>68270000
   SSEA( MEMADR, MAXIDDSIZE&LSL(8)+INITIDDSIZE);               <<*XDD*>>68271000
   SSEA( MEMADR+1D, XDDHEADSIZE&LSL(8)+XDDSUBSIZE);            <<*XDD*>>68272000
   SSEA( MEMADR+3D, 1);                                        <<*XDD*>>68273000
                                                               <<*XDD*>>68274000
   I := 0;                                                     <<*XDD*>>68275000
   K := 3;                                                     <<*XDD*>>68276000
   J := 12;                                                    <<*XDD*>>68277000
   WHILE (I:=I+1) <= HLDEV DO                                  <<*XDD*>>68278000
      IF LDEV'EXISTS(I) THEN                                   <<*XDD*>>68279000
         BEGIN                                                 <<*XDD*>>68280000
         << LOOK FOR INPUT/OUTPUT ACCEPTING DEVICES >>         <<*XDD*>>68281000
         LDT'INDEX := I * LDTSIZE;                             <<*XDD*>>68281100
         LPDT'INDEX := I * LPDTSIZE;                           <<*XDD*>>68281200
         IF LDT'ACCESS'TYPE = CONINOUT OR                      <<*XDD*>>68282000
            LDT'ACCESS'TYPE = NCONINOUT OR                     <<*XDD*>>68283000
            LDT'ACCESS'TYPE = DIRACCESS AND                    <<*XDD*>>68284000
            LPDT'NON'SYS'DOMAIN = 1 THEN                       <<*XDD*>>68285000
            BEGIN  << INPUT OR OUTPUT >>                       <<*XDD*>>68286000
            LDT'XDD'HEAD'ENTRY'PTR := K;                       <<*XDD*>>68287000
            K := K + 1;                                        <<*XDD*>>68288000
            SSEA(MEMADR+DOUBLE(J+2), J+1); << TAIL >>          <<*XDD*>>68289000
            SSEA(MEMADR+DOUBLE(J+3), I);   << LDEV >>          <<*XDD*>>68290000
            J := J+4;                                          <<*XDD*>>68291000
            END;                                               <<*XDD*>>68292000
         END;                                                  <<*XDD*>>68293000
                                                               <<*XDD*>>68294000
   I := 0;                                                     <<*XDD*>>68295000
   WHILE (I:=I+1) <= HLDEV DO                                  <<*XDD*>>68296000
      IF LDEV'EXISTS(I) THEN                                   <<*XDD*>>68297000
         BEGIN                                                 <<*XDD*>>68298000
         << LOOK FOR INPUT-ONLY DEVICES >>                     <<*XDD*>>68299000
         LDT'INDEX := I * LDTSIZE;                             <<*XDD*>>68299100
         IF LDT'ACCESS'TYPE = SERINPUT THEN                    <<*XDD*>>68300000
            BEGIN  << INPUT ONLY >>                            <<*XDD*>>68301000
            LDT'XDD'HEAD'ENTRY'PTR := K;                       <<*XDD*>>68302000
            K := K + 1;                                        <<*XDD*>>68303000
            SSEA(MEMADR+DOUBLE(J+2), J+1); << TAIL >>          <<*XDD*>>68304000
            SSEA(MEMADR+DOUBLE(J+3), I);   << LDEV >>          <<*XDD*>>68305000
            J := J+4;                                          <<*XDD*>>68306000
            END;                                               <<*XDD*>>68307000
         END;                                                  <<*XDD*>>68308000
                                                               <<*XDD*>>68309000
   SSEA( MEMADR+DOUBLE(SUBAREAP), J);                          <<*XDD*>>68310000
   ABSENT( IDDDSTN, MAXIDDTSIZE);                              <<*XDD*>>68311000
                                                               <<*XDD*>>68312000
   <<----------------------------->>                           <<*XDD*>>68313000
   <<   OUTPUT DEVICE DIRECTORY   >>                           <<*XDD*>>68314000
   <<----------------------------->>                           <<*XDD*>>68315000
                                                               <<*XDD*>>68316000
   MEMADR := INITTABLE(ODDTSIZE,1,TEMPORARY'TAB,FALSE,ODDDSTN);<<*XDD*>>68317000
   SSEA( MEMADR, MAXODDSIZE&LSL(8)+INITIDDSIZE);               <<*XDD*>>68318000
   SSEA( MEMADR+1D, XDDHEADSIZE&LSL(8)+XDDSUBSIZE);            <<*XDD*>>68319000
   SSEA( MEMADR+3D, %100001);                                  <<*XDD*>>68320000
   SSEA( MEMADR+4D, 1);  << OUTFENCE >>                        <<*XDD*>>68321000
   SSEA( MEMADR+10D, 9);                                       <<*XDD*>>68322000
                                                               <<*XDD*>>68323000
   I := 0;                                                     <<*XDD*>>68324000
   K := 3;                                                     <<*XDD*>>68325000
   J := 12;                                                    <<*XDD*>>68326000
   WHILE (I:=I+1) <= HLDEV DO                                  <<*XDD*>>68327000
      IF LDEV'EXISTS(I) THEN                                   <<*XDD*>>68328000
         BEGIN                                                 <<*XDD*>>68329000
         << LOOK FOR INPUT/OUTPUT ACCEPTING DEVICES >>         <<*XDD*>>68330000
         LDT'INDEX := I * LDTSIZE;                             <<*XDD*>>68330100
         LPDT'INDEX := I * LPDTSIZE;                           <<*XDD*>>68330200
         IF LDT'ACCESS'TYPE = CONINOUT OR                      <<*XDD*>>68331000
            LDT'ACCESS'TYPE = NCONINOUT OR                     <<*XDD*>>68332000
            LDT'ACCESS'TYPE = DIRACCESS AND                    <<*XDD*>>68333000
            LPDT'NON'SYS'DOMAIN = 1 THEN                       <<*XDD*>>68334000
            BEGIN   << INPUT AND OUTPUT >>                     <<*XDD*>>68335000
            <<INX TO HEAD ALREADY IN LDEVTAB FROM FIXUP OF IDD><<*XDD*>>68336000
            K := K+1;                                          <<*XDD*>>68337000
            SSEA( MEMADR+DOUBLE(J+2), J+1); << TAIL >>         <<*XDD*>>68338000
            SSEA( MEMADR+DOUBLE(J+3), I);   << LDEV >>         <<*XDD*>>68339000
            J := J+4;                                          <<*XDD*>>68340000
            END;                                               <<*XDD*>>68341000
         END;                                                  <<*XDD*>>68342000
                                                               <<*XDD*>>68343000
   I := 0;                                                     <<*XDD*>>68344000
   WHILE (I:=I+1) <= HLDEV DO                                  <<*XDD*>>68345000
      IF LDEV'EXISTS(I) THEN                                   <<*XDD*>>68346000
         BEGIN                                                 <<*XDD*>>68347000
         << LOOK FOR OUPUT-ONLY DEVICES >>                     <<*XDD*>>68348000
         LDT'INDEX := I * LDTSIZE;                             <<*XDD*>>68348100
         IF LDT'ACCESS'TYPE = SEROUTPUT THEN                   <<*XDD*>>68349000
            BEGIN   <<OUTPUT ONLY>>                            <<*XDD*>>68350000
            LDT'XDD'HEAD'ENTRY'PTR := K;                       <<*XDD*>>68351000
            K := K+1;                                          <<*XDD*>>68352000
            SSEA( MEMADR+DOUBLE(J+2), J+1); << TAIL >>         <<*XDD*>>68353000
            SSEA( MEMADR+DOUBLE(J+3), I);   << LDEV >>         <<*XDD*>>68354000
            J := J+4;                                          <<*XDD*>>68355000
            END;                                               <<*XDD*>>68356000
         END;                                                  <<*XDD*>>68357000
                                                               <<*XDD*>>68358000
   SSEA( MEMADR+DOUBLE(SUBAREAP), J);                          <<*XDD*>>68359000
   ABSENT( ODDDSTN, MAXODDTSIZE);                              <<*XDD*>>68360000
                                                               <<*XDD*>>68361000
   ABSOLUTE(NUMSSECT) := 0;                                    <<*XDD*>>68362000
   ABSOLUTE(NUMSSECT1) := 0;                                   <<*XDD*>>68363000
                                                               <<*XDD*>>68364000
COOLST:                                                        <<*XDD*>>68365000
   ABSOLUTE(INITINTLAB):=INTLABEL(ABSOLUTE(INITEXTLAB):=       <<*XDD*>>68366000
                         PLABEL(INITNAME));                    <<*XDD*>>68367000
   MOVE BINBUF:="7SPOOLIN";                                    <<*XDD*>>68368000
   ABSOLUTE(SPOOLININTLAB):=INTLABEL(ABSOLUTE(SPOOLINEXTLAB)   <<*XDD*>>68369000
                                      :=PLABEL(BINBUF));       <<*XDD*>>68370000
   MOVE BINBUF:="8SPOOLOUT";                                   <<*XDD*>>68371000
   ABSOLUTE(SPOOLOUTINTLAB):=INTLABEL(ABSOLUTE(SPOOLOUTEXTLAB) <<*XDD*>>68372000
                                      :=PLABEL(BINBUF));       <<*XDD*>>68373000
   MOVE BINBUF:="6RECLOG";                                     <<*XDD*>>68374000
   ABSOLUTE(RECLOGDELTAP):=INTLABEL(ABSOLUTE(RECLOGPLABEL)     <<*XDD*>>68375000
                                :=PLABEL(BINBUF));             <<*XDD*>>68376000
   MOVE BINBUF:="8ULOGPROC";                                   <<*XDD*>>68377000
   ABSOLUTE(ULOGDELTAP):=INTLABEL(ABSOLUTE(ULOGPLABEL)         <<*XDD*>>68378000
                                 :=PLABEL(BINBUF));            <<*XDD*>>68379000
   MOVE BINBUF:="7RESTART";                                    <<*XDD*>>68380000
   ABSOLUTE(ULOGRSTARTDELTAP) :=                               <<*XDD*>>68381000
      INTLABEL(ABSOLUTE(ULOGRSTARTPLABEL) := PLABEL(BINBUF));  <<*XDD*>>68382000
                                                               <<*XDD*>>68383000
$EDIT VOID=68504000                                            <<06261>>68486000
                                                               <<06261>>68487000
   <<------------------------------------>>                    <<06261>>68488000
   <<   FILE MULTI-ACCESS VECTOR TABLE   >>                    <<06261>>68489000
   <<------------------------------------>>                    <<06261>>68490000
                                                               <<06261>>68491000
   MEMADR := INITTABLE(192,1,TEMPORARY'TAB,FALSE,FMAVTDSTN);   <<06261>>68492000
   SSEA( MEMADR, 192);                                         <<06261>>68493000
   SSEA( MEMADR+1D, 6);                                        <<06261>>68494000
   SSEA( MEMADR+2D, 3072);                                     <<06261>>68495000
   ABSENT( FMAVTDSTN, 3072);                                   <<06261>>68496000
          X := 1000; << CONVERT FROM KILOSECTORS TO SECTORS>>  <<*LDT*>>68532000
$EDIT VOID=68543800                                            <<PORTS>>68542100
          DCOREADDR:= INITTABLE(MEMSEG, 1, TEMPORARY'TAB,      <<06259>>68552000
                                 FALSE);                       <<06259>>68553000
            INSERTDST(DCOREADDR,LOGONDSTN1,MEMSEG,0);          <<06259>>68558000
            INSERTDST(DCOREADDR,LOGONDSTN2,MEMSEG,0);          <<06259>>68560000
              INSERTDST(DCOREADDR,LOGONDSTN2,MEMSEG,0);        <<06259>>68580000
              INSERTDST(DCOREADDR,LOGONDSTN1,MEMSEG,0);        <<06259>>68594000
              TOS := SYS(ABS(SYSVDSMAP)+L.(0:12));             <<06259>>68618000
              SYS(ABS(SYSVDSMAP)+L.(0:12)) := TOS;             <<06259>>68624000
            INSERTDST(DCOREADDR,I,LBUF(1),0);                  <<06259>>68636000
$EDIT VOID=68669900                                            <<06354>>68668100
$EDIT VOID=68692000    <<C.I. LOG ON DST>>                     <<06259>>68670000
   <<--------------------->>                                   <<06259>>68672000
   <<   C.I. LOG ON DST   >>                                   <<06259>>68674000
   <<--------------------->>                                   <<06259>>68676000
                                                               <<06259>>68678000
   MEMADR := INITTABLE(4,128,TEMPORARY'TAB,0,CILOGDSTN);       <<06259>>68680000
   TEMP := (CTAB(MAXRSES)+3)&LSR(2)&LSL(2);                    <<06259>>68682000
   SSEA( MEMADR, TEMP&LSL(8)+4);  <<MAX&CUR SIZE>>             <<06259>>68684000
   SSEA( MEMADR+1D, 128);   <<ENTRY SIZE>>                     <<06259>>68686000
   ABSENT( CILOGDSTN, TEMP&LSL(7));                            <<06259>>68688000
                                                               <<06259>>68690000
$EDIT VOID=68700099                                            <<dctab>>68692500
   <<---------------------->>                                  <<dctab>>68693000
   <<   TAPE LABEL TABLE   >>                                  <<dctab>>68694000
   <<---------------------->>                                  <<dctab>>68695000
                                                               <<dctab>>68696000
   BUILD'TAPE'LABEL'TABLE;                                     <<dctab>>68697000
                                                               <<dctab>>68698000
   <<-------------------------->>                              <<dctab>>68699000
   <<   LOGICAL DEVICE TABLE   >>                              <<dctab>>68700000
$EDIT VOID=68701900                                            <<dctab>>68700100
   <<-------------------------->>                              <<dctab>>68701000
$EDIT VOID=68720099                                            <<dctab>>68701901
                                                               <<dctab>>68702000
   LEN := (HLDEV+1) * (LDTSIZE+LDTXSIZE);                      <<dctab>>68703000
   INITTABLE( LEN, 1, TEMPORARY'TAB, FALSE, LDTDSTN);          <<dctab>>68704000
   MTDS( LDTDSTN, 0, LDT, LEN);                                <<dctab>>68705000
   ABSENT( LDTDSTN, -1);                                       <<dctab>>68706000
                                                               <<dctab>>68707000
   <<----------------------------------------->>               <<dctab>>68708000
   <<   DEVICE CLASS TABLE  AND  TTDT TABLE   >>               <<dctab>>68709000
   <<----------------------------------------->>               <<dctab>>68710000
                                                               <<dctab>>68711000
   LEN := DCTHSIZE + DVCLSIZE + TTDTSIZE;                      <<dctab>>68712000
   INITTABLE( LEN, 1, TEMPORARY'TAB, FALSE, DCTDSTN);          <<dctab>>68713000
   MTDS( DCTDSTN, 0, DCT'HEAD, LEN);                           <<dctab>>68714000
   ABSENT( DCTDSTN, -1);                                       <<dctab>>68715000
                                                               <<dctab>>68716000
$EDIT VOID=68721650                                            <<dctab>>68720100
$EDIT VOID=68723100                                            <<dctab>>68721651
$EDIT VOID=68806000    <<VTAB, ASSOC TAB, MNTD VOL, PV USR>>   <<06259>>68724000
   <<------------------>>                                      <<06259>>68726000
   <<   VOLUME TABLE   >>                                      <<06259>>68728000
   <<------------------>>                                      <<06259>>68730000
                                                               <<06259>>68732000
   INITTABLE(MVOL+1, VTABSIZE, TEMPORARY'TAB, 0, VTABDSTN);    <<06259>>68734000
   MTDS( VTABDSTN, 0, VTAB, TABSIZE);                          <<06259>>68736000
   ABSENT( VTABDSTN, -1);                                      <<06259>>68738000
                                                               <<06259>>68740000
   <<----------------------->>                                 <<06259>>68742000
   <<   ASSOCIATION TABLE   >>                                 <<06259>>68744000
   <<----------------------->>                                 <<06259>>68746000
                                                               <<06259>>68748000
   INITTABLE(HLDEV+1, ASS'SIZE, TEMPORARY'TAB, 0, ASS'DST);    <<06259>>68750000
   ABSENT( ASS'DST, -1);                                       <<06259>>68752000
                                                               <<06259>>68754000
   <<-------------------------->>                              <<06259>>68756000
   <<   MOUNTED VOLUME TABLE   >>                              <<06259>>68758000
   <<-------------------------->>                              <<06259>>68760000
                                                               <<06259>>68762000
   MEMADR := INITTABLE(MVTABTSIZE,1,TEMPORARY'TAB,0,MVTABDSTN);<<32BND>>68764000
   SSEA( MEMADR, MVTABSIZE&LSL(8)+MVTABMAX);                   <<06259>>68766000
   DIRDISCADDR1.(0:8) := SYSDISC;                              <<06259>>68768000
   SSEA( MEMADR+2D, DIRDISCADDR1);  << HODA >>                 <<06259>>68770000
   SSEA( MEMADR+3D, DIRDISCADDR2);  << LODA >>                 <<06259>>68772000
   ABSENT (MVTABDSTN, MVTABTSIZE);                             <<06259>>68774000
                                                               <<06259>>68776000
   <<------------------------------->>                         <<06259>>68778000
   <<   PRIVATE VOLUME USER TABLE   >>                         <<06259>>68780000
   <<------------------------------->>                         <<06259>>68782000
                                                               <<06259>>68784000
   MEMADR:=INITTABLE(PVUSERTSIZE,1,TEMPORARY'TAB,0,PVUSERDSTN);<<06259>>68786000
   SSEA( MEMADR, PVUSERTSIZE);                                 <<06259>>68788000
   SSEA( MEMADR+3D, MAXPVUSERTSIZE);                           <<06259>>68790000
   SSEA( MEMADR+4D, 5);  << FIRST AVAILABLE WORD >>            <<06259>>68792000
   ABSENT( PVUSERDSTN, MAXPVUSERTSIZE);                        <<06259>>68794000
                                                               <<06259>>68796000
                                                               <<PORTS>>68806100
          <<-------------------------->>                       <<PORTS>>68806200
          << IOWAIT PORT VECTOR TABLE >>                       <<PORTS>>68806300
          <<-------------------------->>                       <<PORTS>>68806400
          INIT'IOWAIT'VECTOR'TABLE;                            <<PORTS>>68806500
                                                               <<PORTS>>68806600
          <<--------------------------------->>                <<PORTS>>68806700
          << PORT PROCEDURE DICTIONARY TABLE >>                <<PORTS>>68806800
          <<--------------------------------->>                <<PORTS>>68806900
          INIT'PORT'DICT'TABLE;                                <<PORTS>>68807000
                                                               <<PORTS>>68807100
$EDIT VOID=68856000                                            <<06259>>68850000
          TOS := TOS + @TABLE;                                 <<06259>>68851000
          INSERTDST(*,STOPDSTN,MEMSEG,0);                      <<06259>>68852000
$EDIT VOID=68903350                                            <<06354>>68902450
$EDIT VOID=68948000                                                     68903000
   <<------------------------------->>                                  68904000
   <<   LOG BUFFERS AND PROCESSES   >>                                  68905000
   <<------------------------------->>                                  68906000
                                                                        68907000
   MEMADR := INITTABLE( CTAB0(LOGRECSIZE), 128,                         68908000
      TEMPORARY'TAB, FALSE, LOG1DSTN);                                  68909000
   ABSENT( LOG1DSTN, -1);                                               68910000
   MEMADR := INITTABLE( CTAB0(LOGRECSIZE), 128,                         68911000
      TEMPORARY'TAB, FALSE, LOG2DSTN);                                  68912000
   ABSENT( LOG2DSTN, -1);                                               68913000
                                                                        68914000
   ABS(LOGSTOP) := CREATE( LOGFILE, LOGPROC, LOGPRI,                    68915000
      LOGSTACK, FATHERWAIT, 4, 0, 1, 2, 0)&LSL(8)+LOGSBIT;              68916000
   ABS( X:=X+1) := %20;                                                 68917000
                                                                        68918000
   << SET LOG EVENT MASKS - 3 WORDS >>                                  68919000
   ABS( LOGBITS')   := CTAB0( LOGBITS);                                 68920000
   ABS( LOGBITS'+1) := CTAB0( LOGBITS+1);                               68921000
   ABS( LOGBITS'+2) := CTAB0( LOGBITS+2);                               68922000
   TOS := LOG1DSTN;                                                     68923000
   TOS.(0:2) := 1;  << CURRENT BUFFER >>                       <<LOG2*>>68924000
   ABS( LOGBUF1) := TOS;                                                68925000
   ABS( LOGBUF2) := LOG2DSTN;                                           68926000
   ABS( LOGRECSIZE') := CTAB0( LOGRECSIZE);                             68927000
   ABS( LOGFILESIZE') := CTAB0( LOGFILESIZE);                           68928000
                                                                        68929000
$EDIT                                                          <<06259>>69086000
              TEMP := GETDRT( DRTN, DBI);                      <<06259>>69088000
$EDIT                                                          <<06259>>69108000
   <<----------------------------------------------------->>   <<06259>>69182100
   <<   ICS GLOBAL CELLS FOR DISPATCHER AND PSEUDO-INTS   >>   <<06259>>69182200
   <<----------------------------------------------------->>   <<06259>>69182300
                                                               <<06259>>69182400
   ICS(2):=SYSBASE; <<DISPATCHER DB>>                          <<06259>>69182500
   TOS:=0; <<DAMN COMPILER>>                                   <<06259>>69182600
   TOS:=PLABEL(DISPATCHNAME);                                  <<06259>>69182700
   ICS(-1):=LOGICAL(S0) LAND %100377;  <<DISP STATUS>>         <<06259>>69182800
   ICS(-2):=INTLABEL(*);<<DISPATCHER DELTA P>>                 <<06259>>69182900
   ICS(-JCUT') := ABSOLUTE(SYSJCUT)+SYSBASE;                   <<06259>>69183000
   TOS := 0;                                                   <<06259>>69183100
   TOS := PLABEL(PSINTNAME);  <<PSEUDO INTERRUPT PLABEL>>      <<06259>>69183200
   ICS(-PSTA) := LOGICAL(S0) LAND %100377;                     <<06259>>69183300
   ICS(-PADDR) := INTLABEL(*);                                 <<06259>>69183400
                                                               <<06259>>69183500
          << CHECK WHETHER SL ENTRY HAS TOO MANY >>            <<06091>>69200100
          << UNUSED SEGLIST ENTRIES              >>            <<06091>>69200200
                                                               <<06091>>69200300
          @SEGDIR := @SEGT+SEGT(SEG'HEAD+SLTYP);<<LOCAL PTR>>  <<06091>>69200400
          IF SEGDIR(4).(8:8)-SEGDIR(4).(0:8) > 20 THEN         <<06091>>69200500
             BEGIN << MORE THAN 20 UNUSED ENTRIES >>           <<06091>>69200600
             TOS := SEGDIR(-1);   << OLD LENGTH >>             <<06091>>69200700
             SEGDIR(4).(8:8) := SEGDIR(4).(0:8)+20;            <<06091>>69200800
             I := 21+SEGDIR(4).(8:8)*3; << NEW LENGTH >>       <<06091>>69200900
             SEGDIR(-1) := I+3;                                <<06091>>69201000
                                                               <<06091>>69201100
             << BUILD NEW GARBAGE ENTRY >>                     <<06091>>69201200
                                                               <<06091>>69201300
             @SEGDIR := @SEGDIR+I+3;<<LOCAL PNTR>>             <<06091>>69201400
             SEGDIR(-1) := TOS-I-3; <<LEN=OLD LEN-NEW LEN>>    <<06091>>69201500
             SEGDIR := 0;           <<TYPE = GARBAGE>>         <<06091>>69201600
                                                               <<06091>>69201700
             << LINK INTO GARGABE CHAIN >>                     <<06091>>69201800
                                                               <<06091>>69201900
             SEGDIR(-2) := 0;            <<BKWDLINK>>          <<06091>>69202000
             SEGDIR(-3) := SEGT(25);     <<FWDLINK >>          <<06091>>69202100
             SEGT(SEG'HEAD) := @SEGDIR-@SEGT;  <<HEAD LINK>>   <<06091>>69202200
             @SEGDIR := SEGDIR(-3)+@SEGT;<<NEXT GARBAGE>>      <<06091>>69202300
             SEGDIR(-2) := SEGT(SEG'HEAD); <<TAIL LINK>>       <<06091>>69202400
             END;                                              <<06091>>69202500
                                                               <<06091>>69202600
          << ADJUST LINKS IN LST ENTRIES FOR >>                <<06091>>69202700
          << LCT AND BUFFERS                 >>                <<06091>>69202800
                                                               <<06091>>69202900
          I := -1;                                             <<06091>>69203000
          WHILE (I:=I+1) <= 8 DO                               <<06091>>69203100
             BEGIN       << EACH ENTRY TYPE >>                 <<06091>>69203200
             TOS := SEGT(SEG'HEAD+I);   << HEAD LINK >>        <<06091>>69203300
             WHILE S0 <> 0 DO                                  <<06091>>69203400
                BEGIN                  << EACH CHAINED ENTRY >><<06091>>69203500
                @SEGDIR := @SEGT+TOS;   << LOCAL PTR >>        <<06091>>69203600
                TOS := SEGDIR(-3); << SAVE OLD FWD LINK >>     <<06091>>69203700
                << UPDATE FDWLINK AND BKWDLINK >>              <<06091>>69203800
                IF SEGDIR(-3) <> 0 THEN                        <<06091>>69203900
                   SEGDIR(-3) := SEGDIR(-3)+SEGLCTLEN+128;     <<06091>>69204000
                IF SEGDIR(-2) <> 0 THEN                        <<06091>>69204100
                   SEGDIR(-2) := SEGDIR(-2)+SEGLCTLEN+128;     <<06091>>69204200
                END; <<WHILE>>                                 <<06091>>69204300
             DEL;  <<LINK>>                                    <<06091>>69204400
             << UPDATE HEAD/TAIL LINKS >>                      <<06091>>69204500
             IF SEGT(SEG'HEAD+I) <> 0 THEN                     <<06091>>69204600
                SEGT(SEG'HEAD+I) := SEGT(SEG'HEAD+I)+          <<06091>>69204700
                   SEGLCTLEN+128;                              <<06091>>69204750
             IF SEGT(SEG'TAIL+I) <> 0 THEN                     <<06091>>69204800
                SEGT(SEG'TAIL+I) := SEGT(SEG'TAIL+I)+          <<06091>>69204900
                   SEGLCTLEN+128;                              <<06091>>69204950
             END; <<WHILE>>                                    <<06091>>69205000
                                                               <<06091>>69205100
          I := SEGTLEN+SEGLCTLEN+128;                          <<06091>>69205200
          MOVE SEGT(I-1) := SEGT(SEGTLEN-1),(-SEGDIRLEN);      <<06091>>69205300
          DST(SEGTDSTN&LSL(2)) := (I+3)&LSR(2);                <<.LST.>>69205400
          ABSENT(SEGTDSTN,CTAB(LSTSIZE));                      <<.LST.>>69214000
            << SETUP FOR COMMUNICATION DATA SEGMENT TO BE>>             69224500
            << USED BY PROGEN.  THE FORMAT OF THE DATA   >>             69224510
            << IS:  WORD 0   - POINTER TO START OF CTAB0 >>             69224520
            <<      WORD 1   - POINTER TO START OF CTAB  >>             69224530
            <<      WORD 2   - START UP OPTION           >>             69224540
            <<      WORD 3   - RECOVER LOST DISC SPACE FL>>             69224545
            <<      WORD 256 - CTAB0 ARRAY               >>             69224550
            <<      WORD 256+CTAB0SIZE - CTAB ARRAY      >>             69224560
            <<                                           >>             69224570
            << COMMUNICATION DATA SEGMENT DST # IS PASSED>>             69224580
            << VIA SYSGLOG EXTENTION CELL %122           >>             69224590
                                                                        69224600
            COMMDSTN := GETENTRY(DSTDSTN);                              69225000
            INITTABLE(512,1,TEMPORARY'TAB,FALSE,COMMDSTN);              69225010
            ZEROBUF(CMHDR,256);                                         69225020
            CMHDR := 256;  <<SETUP POINTER TO CTAB0>>                   69225030
            CMHDR(1) := 256+CTAB0SIZE;  <<POINTER TO CTAB>>             69225040
            CMHDR(2) := OPT;  <<START-UP OPTION>>                       69225050
            CMHDR(3) := RECOVERY;<<RECOVER LOST DISC SPAC FLAG>>        69225055
            << MOVE CMHDR, CTAB0 AND CTAB ARRAYS TO MAKE UP >>          69225060
            << THE COMMUNICATION DATA SEGMENT               >>          69225062
            MTDS(COMMDSTN,0,CMHDR,256);                                 69225080
            MTDS(COMMDSTN,CMHDR,CTAB0,CTAB0SIZE);                       69225090
            MTDS(COMMDSTN,CMHDR(1),CTAB,CTABSIZE);                      69225100
            SYSGLOBEXT(%122) := COMMDSTN;                               69225110
            ABSENT(COMMDSTN,-1);                                        69225120
                                                                        69225130
$EDIT                                                          <<06259>>69404000
          ABSOLUTE(SYSTCST) := 0;  << INITIAL'S CST POINTER >> <<06259>>69406000
$EDIT VOID=69410000                                            <<06259>>69408000
$EDIT                                                          <<06259>>69412000
          HOLELISTHEAD := 0D;                                  <<jb.dc>>69454100
          HOLELISTTAIL := 0D;                                  <<jb.dc>>69454200
          HOLECOUNT := 0;                                      <<jb.dc>>69454300
          IF LOGICALMAPPING THEN                               <<06091>>69468000
             BEGIN                                             <<06091>>69468100
             <<   FIX CST HEADER TO POINT AT THE   >>          <<06091>>69468200
             <<   LOGICALLY MAPPED CST'S           >>          <<06091>>69468300
             ABS( NRPHYCST) := CST(0);                         <<06241>>69468340
             ABS( PHYCSTHEAD) := CST(3);                       <<06241>>69468350
             TOS := (ABSOLUTE(DFS)-ABSOLUTE(DFC))&LSR(2);      <<06091>>69468400
             TOS := S0; << DUP - # CSTS >>                     <<06091>>69468500
             TOS := TOS-1;     << # CSTS -1 >>                 <<06091>>69468600
             ABSOLUTE(ABSOLUTE(CSTP)) := TOS;   <<HDR=#CSTS-1>><<06091>>69468700
             TOS := TOS-SYSPHYCST;       <<# LOG MAPPED CSTS >><<06091>>69468800
             ABSOLUTE(X:=X+2) := TOS;    <<HEADER+2=#LOG CSTS>><<06091>>69468900
             TOS := SYSPHYCST&LSL(2);    <<PTR TO 1st LOG CST>><<06091>>69469000
             ABSOLUTE(X:=X+1) := TOS; <<HDR+3=PTR 1st LOG CST>><<06091>>69469100
             END;                                              <<06091>>69469200
       ASSEMBLE( DISP );  << HELLO MPE >>                      <<06091>>69469900
$EDIT VOID=99999000                                            <<*LPDT>>70000000
