         << LINES .001/.009 ARE RESERVED FOR SYSTEMS INTEGRATION >>     00000001
       NOT'VALID'QUANTUM=3473,  <<QUANTUMS MUST BE POSITIVE >>          02996000
DEFINE DIT'CONSOLE'MODE = 8).(11:1#; << If on, CNTL-A posted >><< 9508>>04657000
                                                               <<01274>>06945100
PROCEDURE CLEANLDEV(LDEV);                                     <<01274>>06945200
   VALUE LDEV;                                                 <<01274>>06945300
   INTEGER LDEV;                                               <<01274>>06945400
   OPTION EXTERNAL;                                            <<01274>>06945500
                                                               <<01274>>06945600
LOGICAL PROCEDURE CHK'ASS'SECURITY(JITINX,LDEV,CLASSNAME,      << 9340>>08820000
                                                  ASSFILE);    << 9340>>08821000
VALUE JITINX,LDEV,ASSFILE;                                     << 9340>>08825000
INTEGER JITINX,LDEV,ASSFILE;                                   << 9340>>08830000
   INTEGER I;                                                  << 9340>>08925000
$EDIT VOID = 09075000                                          << 9340>>09060000
$EDIT                                                          << 9340>>09140000
      OR PXG'ALLOWMASK THEN CHECKALLOW := TRUE;                << 2216>>09375000
   EQUATE SYSTEMPROCESS  = 4;                                  <<09770>>10356000
   LOGICAL PCBPT;                                              <<09770>>10357000
   PCBPT := CURPRC;      << GET CURRENT PROCESS NUMBER >>      <<09770>>10566000
   IF SPCBPTYPE = SYSTEMPROCESS THEN << system processes can>> <<09770>>10567000
     BEGIN                           << do this command w/o >> <<09770>>10568000
     CHECKJOB := 0;                  << the normal checks.  >> <<09770>>10569000
     RETURN;                                                   <<09770>>10569100
     END;                                                      <<09770>>10569200
   ELSE                                                        <<C1685>>11385000
   IF ((LDT'DEVICE'TYPE = LDT'CS80'DEVICE) LAND                <<C1685>>11385100
      (LPDT'SUBTYPE = 0 LOR    << LINUS >>                     <<l2549>>11385200
       LPDT'SUBTYPE = 3 LOR    << BUFFALO >>                   <<C2549>>11385300
       LPDT'SUBTYPE = 6)) THEN << MERLIN >>                    <<C2549>>11385400
      RETURN'VALUE := 0 << IS A CS80 DEVICE >>                 <<C1685>>11385500
$EDIT VOID=12700000                                                     11545000
$EDIT VOID=12795000                                                     12795000
$EDIT VOID=12870000                                                     12860000
$EDIT VOID=12995000                                                     12990000
         IF INTEGER(MINQUANTUM(QUEUE'INDEX)) < 0 OR                     18886000
            INTEGER(MAXQUANTUM(QUEUE'INDEX)) < 0 THEN                   18887000
            BEGIN                                                       18888000
              CIERR(ERRNUM:=NOT'VALID'QUANTUM,QUEUEPTR);                18889000
              RETURN;                                                   18889100
            END;                                                        18889200
$PAGE "DEV'IS'SDISC"                                           <<01274>>19426000
$CONTROL SEGMENT=OPLOW                                         <<01274>>19426010
LOGICAL PROCEDURE DEV'IS'SDISC(LDEV);                          <<01274>>19426020
   VALUE LDEV;                                                 <<01274>>19426030
   INTEGER LDEV;                                               <<01274>>19426040
   OPTION UNCALLABLE;                                          <<01274>>19426050
                                                               <<01274>>19426060
BEGIN                                                          <<01274>>19426070
   INTEGER LDEV'INDEX, CLASS'NO, MYDST;                        <<01274>>19426080
   LOGICAL POINTER DCT, DCT'HEAD; <<NEEDED BY INCLDCT>>        <<01274>>19426090
                                                               <<01274>>19426100
   << SET UP TO TRAVERSE DCT >>                                <<01274>>19426110
   MYDST := EXCHANGEDB(DCT'DST);                               <<01274>>19426120
   @DCT'HEAD := 0;                                             <<01274>>19426130
   @DCT      := DCTH'DCT'BASE;                                 <<01274>>19426140
                                                               <<01274>>19426150
   << SEARCH DCT FOR LDEV OF APPROPRIATE ACCESS TYPE >>        <<01274>>19426160
   DEV'IS'SDISC := FALSE;                                      <<01274>>19426170
   CLASS'NO     := 1;                                          <<01274>>19426180
   DO BEGIN                                                    <<01274>>19426190
                                                               <<01274>>19426200
      << IF CLASS ENTRY IS FOR A SERIAL DISC THEN >>           <<01274>>19426210
      <<      CHECK FOR THE SPECIFIED LDEV        >>           <<01274>>19426220
      IF DCT'ACCESS'TYPE = LDT'SERIAL'DISC THEN BEGIN          <<01274>>19426230
         LDEV'INDEX := 1;                                      <<01274>>19426240
         DO BEGIN                                              <<01274>>19426250
            IF INTEGER (DCT(LDEV'INDEX+DCT'FIRST'LDEV))        <<01274>>19426260
                   = LDEV THEN                                 <<01274>>19426270
               BEGIN                                           <<01274>>19426280
                  DEV'IS'SDISC := TRUE;                        <<01274>>19426290
                  EXCHANGEDB(MYDST);                           <<01274>>19426300
                  RETURN;                                      <<01274>>19426310
               END;                                            <<01274>>19426320
            LDEV'INDEX := LDEV'INDEX + 1;                      <<01274>>19426330
         END UNTIL LDEV'INDEX = INTEGER(DCT'NUM'DEVICES);      <<01274>>19426340
      END; << IF >>                                            <<01274>>19426350
                                                               <<01274>>19426360
      << GET THE NEXT DEVICE CLASS ENTRY >>                    <<01274>>19426370
      @DCT := @DCT + INTEGER(DCT'NEXT'ENTRY);                  <<01274>>19426380
                                                               <<01274>>19426390
   END UNTIL (CLASS'NO := CLASS'NO + 1) >                      <<01274>>19426400
             INTEGER(DCTH'NUM'DCT'ENTRIES);                    <<01274>>19426410
                                                               <<01274>>19426420
   EXCHANGEDB(MYDST);                                          <<01274>>19426430
                                                               <<01274>>19426440
END; << DEV'IS'SDISC >>                                        <<01274>>19426450
   LOGICAL SHOULD'CLEAN:=FALSE; <<TRUE => SHOULD CLEAN TLT>>   <<01274>>19532000
   INTEGER SCODE; <<CODE RETURNED BY GETSIR(TLT'SIR)>>         <<01274>>19532100
   EQUATE TLT'SIR = 39;                                        <<01274>>19532111
      DEV'IS'TAPE = ( LDT'DEVICE'TYPE = 24 ) #,                <<01274>>19556000
                                                               <<01274>>20051000
                     << DETERMINE IF THE DEVICE IS A TAPE  >>  <<01274>>20051100
                     << OR SERIAL DISC AND THEREFORE HAS   >>  <<01274>>20051200
                     << A LCB ENTRY IN THE TLT THAT SHOULD >>  <<01274>>20051300
                     <<           BE CLEANED OUT.          >>  <<01274>>20051400
                     IF DEV'IS'TAPE THEN                       <<01274>>20051500
                        SHOULD'CLEAN := TRUE                   <<01274>>20051600
                     ELSE IF DEV'IS'SDISC(LDEV) THEN           <<01274>>20051700
                        SHOULD'CLEAN := TRUE;                  <<01274>>20051800
                                                               <<01274>>20051900
                     IF SHOULD'CLEAN THEN                      <<01274>>20052000
                        BEGIN                                  <<01274>>20052100
                          << NOTE: MUST DO GETSIR HERE B/C >>  <<01274>>20052200
                          << CLEANLDEV GETS BUT DOES NOT   >>  <<01274>>20052300
                          << RELEASE THE TLT SIR.          >>  <<01274>>20052400
                          SCODE := GETSIR(TLT'SIR);            <<01274>>20052500
                          CLEANLDEV(LDEV);                     <<01274>>20052600
                          RELSIR(TLT'SIR,SCODE);               <<01274>>20052700
                        END;                                   <<01274>>20052800
                                                               <<01274>>20052900
         RETURN;                                               <<F1558>>21961000
    LOGICAL OFFSET;                                            <<01275>>28846000
    LOGICAL DB'OFFSET;                                         <<01275>>28847000
      IF SNDLEN=0 THEN    <<SNDPARM EMPTY>>                    <<01148>>28951000
         CHKVALUE:=FALSE                                       <<01148>>28952000
      ELSE                                                     <<01148>>28953000
         BEGIN                                                 <<01148>>28954000
         IVALUE:=BINARY(SNDPARM,SNDLEN);                       <<01148>>28955000
         CHKVALUE:=IF <> THEN FALSE ELSE TRUE;                 <<01148>>28956000
         END;                                                  <<01148>>28957000
                                                               <<01148>>28960000
      IF <> OR NOT (3<=PIN<=1024) THEN  << BAD PIN >>          << 9281>>29105000
        OFFSET := LOGICAL(RIT(RIT'DSTOFFSET));                 <<01275>>29666000
        IF RIT(RIT'DBREL) = 1 THEN                             <<01275>>29667000
          BEGIN                                                <<01275>>29667100
              PCBPT := RIT(RIT'PINNUM) * PCBSIZE;              <<01275>>29667200
              TOS := @DB'OFFSET;                               <<01275>>29667300
              TOS := SPCBSTKDST;                               <<01275>>29667400
              TOS := 1;                                        <<01275>>29667500
              TOS := 1;                                        <<01275>>29667600
              ASSEMBLE(MFDS 4);                                <<01275>>29667700
              OFFSET := OFFSET + DB'OFFSET;                    <<01275>>29668000
          END;                                                 <<01275>>29669000
        MOVETODSEG(RIT(RIT'REPLYPIN),OFFSET,@IVALUE,1)         <<01275>>29680000
      ELSE MOVETODSEG(RIT(RIT'REPLYPIN),OFFSET,IVALUE,         <<01275>>29685000
                      (TEMPHOLD+1)&ASR(1) + 1);                <<01275>>29690000
   INTEGER JIT'DST, FILENUM;                                   << 9340>>29990000
   LOGICAL ARRAY ASSFILENAME(0:8);                             << 9340>>29991000
      return;                                                           30081000
      <<OPEN THE ASSOCIATE FILE FIRST SO THAT FILE INTEGRITY>> << 9340>>30355010
      <<SIR IS LOCKED PRIOR TO THE ASSOCIATE SIR.  THIS IS >>  << 9340>>30355020
      <<TO AVOID A SIR DEADLOCK.                           >>  << 9340>>30355030
      IF ASSOCIATE THEN                                        << 9340>>30355040
      BEGIN                                                    << 9340>>30355050
        MOVE ASSFILENAME := "ASOCIATE.PUB.SYS ";               << 9340>>30355060
        FILENUM := FOPEN (ASSFILENAME,%2001,%306);             << 9340>>30355070
                 <<SHARE,EXECUTE,NO FILEQ>>                    << 9340>>30355080
        IF <> THEN                    <<REPORT OPEN ERROR>>    << 9340>>30355090
         BEGIN                                                 << 9340>>30355100
           FERROR'(FILENUM,I);                                 << 9340>>30355110
           CIERR(ERRNUM:=USERCANTASSDEV,FIRSTPARM);            << 9340>>30355120
           RETURN;                                             << 9340>>30355130
         END;                                                  << 9340>>30355140
      END;                                                     << 9340>>30355150
         IF ASSOCIATE THEN FCLOSE(FILENUM,0,0);                << 9340>>30511000
         IF CHK'ASS'SECURITY(JIT,DCT'I(I), CLASSNAME, FILENUM) << 9340>>30630000
            FCLOSE(FILENUM,0,0);                               << 9340>>30656000
            RETURN;                                            << 9340>>30661000
   IF ASSOCIATE THEN FCLOSE(FILENUM,0,0);                      << 9340>>30876000
         IF GET'DSDEVICE(LDEV) > 0 OR << ds terminal >>        <<09771>>31555000
         << Check to see if console in CONSOLE mode, that   >> << 9508>>31606000
         << is, see if CNTL-A has been entered on console.  >> << 9508>>31607000
         << If so, then the console is busy and we will not >> << 9508>>31608000
         << switch it.  Give a CIERR message if busy.       >> << 9508>>31609000
                + SYSGLOB + DIT'CONSOLE'MODE ) = 1 THEN        << 9508>>31615000
         OLD'CONSOLE := SYS'CONSOLE'LDEV;                      << 9185>>31690000
         SYS'CONSOLE'LDEV := LDEV;                             << 9185>>31695000
         GENMSG (CIGENERALMSGSET,CONSOLESWITCHED,%11000,       << 9185>>31700000
                 OLD'CONSOLE, LDEV,,,,                         << 9185>>31705000
                 OLD'CONSOLE,,,,2);                            << 9185>>31710000
   ABSOLUTE(VMOUNTCNTL).(13:3):=VMOUNT.(13:3);                          35235000
            BEGIN                                              <<01147>>49030000
              TOS := 0;                                        <<01147>>49030010
              TOS := JMATINX;                                  <<01147>>49030020
              ASSEMBLE (PCAL DELETEJOB);                       <<01147>>49030030
              CONSABORTJOB := TOS;                             <<01147>>49030040
            END;                                               <<01147>>49030050
