ASMB,R,L,C
      HED UPLIN 91700-16107 REV A * (C) HEWLETT-PACKARD CO. 1976 *
      NAM UPLIN,3,3 91700-16107 REV A 760225
      SUP 
      SPC 1 
******************************************************************
*  * (C) COPYRIGHT HEWLETT-PACKARD COMPANY 1976.  ALL RIGHTS     *
*  * RESERVED.  NO PART OF THIS PROGRAM MAY BE PHOTOCOPIED,      *
*  * REPRODUCED OR TRANSLATED TO ANOTHER PROGRAM LANGUAGE WITHOUT*
*  * THE PRIOR WRITTEN CONSENT OF HEWLETT-PACKARD COMPANY.       *
******************************************************************
      SPC 2 
* 
* 
*     NAME:   UPLIN 
*     SOURCE: 91700-18107 
*     RELOC:  91700-16107 
*     PGMR:   CHUCK WHELAN [12/5/75]
* 
* 
* 
      SPC 2 
*     EXTERNAL REFERENCES 
      EXT EXEC,$LIBR,$LIBX
      EXT MESSS 
      EXT #RSAX 
      EXT #LDEF,#RFSZ,#RXCL 
      EXT RNRQ,#BUSY,#QRN 
      SPC 3 
*  UPLIN FOR DS-1B'   UPLIN IS SCHEDULED EVERY 5 SECONDS TO PERFORM 
*  THE FOLLOWING FUNCTIONS: 
*    1.  CHECKS/WAITS FOR SYSTEM QUIESCENCE.  PRINTS OPERATOR MESSAGE 
*        WHEN QUIESCENCE IS ACHIEVED. 
*    2.  UPDATES SLAVE "TCB" TIMEOUT VALUES, AND IF A TRANSACTION HAS 
*        TIMED OUT, DOES THE FOLLOWING: 
*        A) IF MONITOR IS I/O SUSPENDED DOES NOTHING UNLESS THE EQT TIMER 
*         IS ZERO AND THE "D" BIT IS SET IN WHICH CASE IT STORES A -1 IN
*         EQT 15 TO FORCE A QUICK TIMEOUT TO THE DRIVER.
*        B) IF MONITOR IS IN ANY OTHER STATUS, THE TCB IS PURGED, AND IF
*         THE BREAK FLAG WASN'T SET AND THE EQT "AND DATA" BIT WAS SET, 
*         A STOP IS SENT VIA THE DRIVER.  IF THE MONITOR ABORT FLAG IS
*         SET, THE MONITOR IS THEN ABORTED. 
*    3.  AFTER PROCESSING EACH SLAVE TCB LIST, UPLIN CHECKS TO SEE IF 
*        THE CORRESPONDING MONITOR IS DORMANT, AND IF SO, RESCHEDULES IT. 
*    4.  UPDATES MASTER TCB TIMEOUT VALUES, AND IF A MASTER TCB TIMES-OUT,
*        IT CHECKS THE PROGRAM STATUS.  IF DORMANT, THE MASTER CLASS NUMBER 
*        AND THE TCB ARE CLEARED.  IF I/O SUSPENDED AND EQT15 IS ZERO 
*        IT STORES A -1 IN EQT15 TO FORCE A QUICK TIME-OUT TO THE DRIVER. 
*        IF IN A "WAIT" STATE AND THE I/O COMPLETION FLAG IN THE TCB
*        IS SET, IT WRITES A NULL REQUEST TO THE MASTER REQUESTER'S 
*        CLASS. 
*    5.  RESCHEDULES "GRPM","SRPM", OR "QCLM" IF THEY ARE DORMANT.
*    6.  CHECKS FOR ANY DOWNED COMMUNICATIONS EQTS, AND DOES "ENABLE
*        LISTEN" REQUESTS TO ANY FOUND. 
* 
* 
* 
EQTA  EQU 1650B     FWA OF EQUIPMENT TABLE
DRT   EQU 1652B     FWA OF DEVICE REFERENCE TABLE 
LUMAX EQU 1653B     NO OF LOGICAL UNITS (IN DRT)
INTBA EQU 1654B     FWA OF INTERRUPT TABLE
BPA1  EQU 1742B     FWA RT DISC RES BP LINK AREA
      SKP 
UPLIN EQU * 
* 
*     CHECK FOR SYSTEM QUIESCENCE 
* 
      LDA GLCW      GET GLOBAL RN LOCK/CLEAR COMMAND
      RAL,ARS       SET THE NO-WAIT BIT 
QRNWT STA RNCW      SAVE CONFIGURED CONTROL WORD
* 
      JSB RNRQ      GO TO RTE TO REQUEST
      DEF *+4        RESOURCE NUMBER STATUS,
      DEF RNCW        OR TO AWAIT CLEARING OF THE RN. 
      DEF #QRN      ADDR OF QUIESCENT RN
      DEF TEMP      RETURN STATUS 
      JMP SLVTS     IGNORE ERRORS 
* 
      LDA RNCW      IF PROGRAM HAS BEEN AWAITING
      CPA GLCW       THE CLEARING OF #QRN, THEN 
      JMP SLVTS      BYPASS THE MESSAGE CODE. 
* 
      LDA TEMP      QRN STATUS
      LDB #BUSY     ACTIVE TCB COUNT
      CPA K7        IF QRN WAS LOCKED GLOBALLY, 
      SZB            AND NO ACTIVE TCB'S EXIST, SKIP
      JMP SLVTS      ELSE BYPASS QUIESCENT CODE.
* 
      JSB EXEC      INFORM
      DEF *+5        THE
      DEF K2          OPERATOR
      DEF K1           THAT THE 
      DEF QMES          SYSTEM
      DEF K10            IS QUIESCENT.
* 
      LDA GLCW      RETURN TO IMMOBILIZE UPLIN
      JMP QRNWT 
      SKP 
* 
*     THIS SECTION PROCESSES SLAVE TRANSACTIONS & MONITORS
* 
SLVTS LDA BPA1
      CPA K2        IS THIS AN RTE-III OR RTE-IV? 
RSSI  RSS           YES 
      JMP SLVT2     NO
      LDB RSSI      GET "RSS" 
      STB MODI1     MODIFY TO DO CROSS-MAP STORE
      STB MODI2     MODIFY TO DO CROSS-MAP LOAD 
* 
SLVT2 LDA NAMES     ADDR OF SLAVE MONITOR NAMES 
      STA NPNT
      LDA K2
      STA ST.LS     SLAVE/STREAM ID FOR #RSAX 
      ADA #LDEF 
      STA LPNT      PNTR TO SLAVE LIST HEADER ADDRS IN RES
      LDA N10       NUMBER OF MONITORS
      STA LCNT      COUNTER= - # OF MONITORS
* 
CKLST LDB LPNT,I    GET ADDRESS OF HEADER 
      INB 
      STB MCLSA     SAVE ADDR OF MONITOR CLASS #
      INB 
      STB MSEGA     ADDR OF MONITOR'S ID SEGMENT ADDR 
      LDB LPNT,I
NXTCB STB LSTAD     SAVE ADDR OF ADDR OF NEXT TCB 
* 
*     ENTER HERE TO CHECK EACH SLAVE TCB
* 
CKTCB LDB LSTAD     PICK UP ADDR OF ADDR OF TCB 
      JSB LODWD     (CROSS)LOAD ADDR OF TCB 
      SZA,RSS       IS IT THERE?
      JMP CKMON     NO, END OF THIS LIST
      JSB TSTCB     BUMP TIMER IN TCB 
      JMP NXTCB     DIDN'T TIMEOUT, CHECK NEXT TCB
      SKP 
* 
*     SLAVE TRANSACTION HAS TIMED OUT 
* 
      INB           TCB ADDR+1
      JSB LODWD     PICK UP 2ND WORD
      STA TEMP
      AND SCMSK     ISOLATE SELECT CODE (BITS 13-8) 
      STA PRAM1 
* 
      LDA MSEGA,I   GET MONITOR'S ID SEG ADDR 
      RAL,CLE,ERA   CLEAR SIGN
      ADA K15       POINT TO STATUS 
      LDA 0,I 
      AND K15       ISOLATE STATUS
      CPA K2        IS IT IN "I/O SUSPEND"? 
      JMP SLVCK     YES, JUMP 
      INB           COMPUTE ADDR OF TIME-TAGS 
      JSB LODWD     (CROSS)LOAD 1ST TIME TAG WORD 
      STA TAGS
      INB 
      JSB LODWD     (CROSS)LOAD 2ND TIME TAG WORD 
      STA TAGS+1
* 
      JSB #RSAX     DELETE SLAVE TCB
      DEF *+5 
      DEF K3
      DEF ST.LS     SLAVE/STREAM ID 
      DEF PRAM1     SELECT CODE 
      DEF TAGS      TIME-TAGS 
* 
      SZA           SKIP IF ENTRY DELETED 
      JMP NXLST     WHOOPS! IGNORE THIS LIST
      LDA TEMP
      RAL,SLA       TEST BREAK FLAG 
      JMP CKABT     SET, NO STOP REQUIRED 
      SSA,RSS       WAS IT A REQ. & DATA? 
      JMP CKABT     NO, NO STOP REQUIRED
* 
*     SEND A STOP TO CLEAR THE PENDING DATA REQUEST 
      JSB GTEQT     COMPUTE ADDR OF EQT 
      LDA EQTA
      CMA,INA 
      ADA 1         THIS ADDR - 1ST EQT ADDR
      CLB 
      STB LU
      DIV K15       COMPUTE RELATIVE EQT NUMBER 
      STA TEMP
      LDA LUMAX     # OF LUS
      CMA,INA 
      STA CNTR      COUNT TO CORRECT LU NUMBER
      LDB DRT       DEVICE REF TABLE ADDRESS
*     SEARCH FOR THIS EQT NUMBER IN DEVICE REFERENCE TABLE
FNDEQ ISZ LU        LU NUMBER FOR THIS DRT ENTRY
      LDA 1,I       PICK UP DRT ENTRY 
      AND B77       ISOLATE EQT # 
      CPA TEMP      IS THIS OUR EQT?
      JMP STPIT     YES 
      INB           BUMP DRT POINTER
      ISZ CNTR
      JMP FNDEQ     TRY NEXT
      JMP CKABT     SC MUST BE INVALID, IGNORE IT 
* 
*     IF MONITOR IS I/O SUSPENDED ON COMM. EQT & EQT15=0, SET EQT15=-1
SLVCK JSB GTEQT     COMPUTE EQT ADDRESS 
      LDA MSEGA,I   GET ID SEG ADDR OF MONITOR
      RAL,CLE,ERA   CLEAR SIGN
      CPA 1,I       IS MONITOR ID BSEG ADDR IN EQT1?
      JSB EQTIM     YES, CHECK/SET EQT15  
      LDB XACTA 
      JMP NXTCB     CHECK NEXT TCB
* 
*     CALL DVR TO SEND A STOP 
STPIT JSB EXEC
      DEF *+3 
      DEF K3N 
      DEF LU        MODE 0 = SEND STOP
      NOP 
* 
*      CHECK MONITOR ABORT FLAG 
CKABT LDA MSEGA,I 
      SSA,RSS       SKIP IF SET 
      JMP CKTCB     NOT SET, DON'T ABORT IT, CHECK NEXT TCB 
* 
*     ABORT THE MONITOR BY GENERATING AN "OF,(NAME),1" MESSAGE
* 
      LDA NPNT
      STA TEMP
      LDB COMMA     COMMA IN 1ST LHW
      LDA TEMP,I    1ST 2 CHARACTERS OF NAME
      LSL 8         POSITION "," AND 1ST CHARACTER IN B REG 
      STB MSNAM     MOVE TO FIELD FOR "OF"
      LSL 8 
      ISZ TEMP
      LDA TEMP,I    GET 3RD & 4TH CHARS OF NAME 
      LSL 8         POSITION 2ND & 3RD CHARS IN B REG 
      STB MSNAM+1 
      LSL 8 
      ISZ TEMP
      LDA TEMP,I    GET 5TH CHAR OF NAME
      LSL 8         POSITION 4TH & 5TH CHARS IN B REG 
      STB MSNAM+2 
* 
      JSB MESSS     CALL RTE MESSAGE PROCESSOR
      DEF *+3 
      DEF OFMES     "OF,XXXXX,1"
      DEF K10 
      NOP 
      JMP UPMON     NOW GO & RESCHEDULE IT
* 
*     THIS CODE CHECKS MONITOR STATUS TO SEE IF IT HAS ABORTED
CKMON LDA MSEGA,I   MONITORS ID SEGMENT ADDRESS 
      RAL,CLE,ERA   CLEAR OFF SIGN BIT
      SZA,RSS       ADDR SPECIFIED? 
      JMP NXLST     NO
      ADA K15       COMPUTE ADDR OF STATUS
      LDA 0,I 
      AND K15       ISOLATE STATUS BITS 
      SZA           SKIP IF DORMANT 
      JMP NXLST     ELSE MONITOR IS STILL GOING 
* 
*     RESCHEDULE MONITOR
UPMON LDA MCLSA,I   GET CLASS NUMBER OF MONITOR 
      RAL,CLE,ERA   CLEAR SIGN BIT
      STA PRAM1 
      LDB NPNT,I    1ST 2 CHARS OF MONITOR NAME 
      CPB RFASC     IS IT "RF"
      JMP RFAGO     DO "RFAM" SCHEDULE
* 
      JSB EXEC      SCHEDULE MONITOR, PASS CLASS NUMBER 
      DEF *+4 
      DEF K10N
NPNT  NOP           ADDR OF MONITOR NAME
      DEF PRAM1 
      NOP 
      JMP NXLST 
* 
RFAGO JSB EXEC      SCHEDULE "RFAM" 
      DEF *+7 
      DEF K10N      SCHEDULE WITH "NO ABORT"
      DEF RFASC 
      DEF K99 
      DEF #RFSZ     NUMBER OF RFA ENTRIES FROM "RES"
      DEF PRAM1     CLASS NUMBER
      DEF #RXCL     RFAEX CLASS 
      NOP 
* 
*     DONE WITH THIS SLAVE LIST, START ON NEXT
NXLST ISZ NPNT
      ISZ NPNT
      ISZ NPNT      UPDATE POINTER TO MONITOR NAME
      ISZ LPNT      POINT TO NEXT LIST HEADER ADDRESS 
      LDA ST.LS 
      ADA B400      NEXT SLAVE/STREAM ID
      STA ST.LS 
      ISZ LCNT      COUNT # OF MONITORS 
      JMP CKLST     PROCESS NEXT LIST 
* 
*     DONE WITH SLAVE MONITOR/TRANSACTION PROCESSING
* 
      SKP 
* 
*     PROCESS MASTER TCBS 
* 
      LDB #LDEF     ADDR OF LIST HEADER ADDRS 
      INB 
      LDB 1,I       GET ADDR OF MASTER HEADER 
CKMST STB LSTAD     SAVE ADDR OF NEXT TCB'S ADDR
CKMS2 LDB LSTAD     PICK-UP ADDR OF ADDR OF NEXT TCB
      JSB LODWD     (CROSS)LOAD ADDR OF NEXT TCB
      SZA,RSS 
      JMP RSCHD     NO MORE MASTER TCBS TO PROCESS
* 
      JSB TSTCB     UPDATE THIS TCB'S TIME
      JMP CKMST     DIDN'T TIME-OUT, DO NEXT TCB
* 
*     MASTER TCB HAS TIMED OUT
* 
      ADB K2        POINT TO 3RD WORD OF MASTER TCB 
      JSB LODWD     (CROSS)LOAD CLASS NUMBER
      IOR BIT15     CLASS # WITH "NO WAIT" BIT SET
      STA PRAM1 
* 
      INB           POINT TO 4TH WORD OF MASTER TCB 
      JSB LODWD     (CROSS)LOAD ID SEGMENT ADDRESS
      RAL,CLE,ERA   CLEAR OFF SIGN BIT
      ADA K15       POINT TO STATUS 
      LDA 0,I 
      AND K15       ISOLATE STATUS
      SZA,RSS       DORMANT?
      JMP CREPT     YES, CLEAR IT ALL 
      CPA K3        IS IT "WAIT" STATE? 
      JMP MWAIT     YES 
      CPA K2        IS IT IN I/O SUSPEND? 
      JSB EQTIM     YES, CHECK/SET EQT15
      JMP NXMST 
* 
*     MASTER REQUESTER IS IN STATE 3 AFTER TCB TIMEOUT
MWAIT ADB N2        POINT TO 2ND TCB WORD 
      JSB LODWD     (CROSS)LOAD IT
      SSA,RSS       TEST ITS I/O COMPLETION FLAG
      JMP NXMST     NOT SET, DO NOTHING 
* 
*     WRITE A NULL REQUEST INTO THE MASTER REQUESTERS CLASS 
      JSB EXEC
      DEF *+8 
      DEF K20N      CLASS WRITE/READ, NO ABORT
      DEF K0
      DEF DUMMY 
      DEF K0        ZERO LENGTH 
      DEF DUMMY 
      DEF DUMMY 
      DEF PRAM1     CLASS NUMBER
* 
K0    NOP 
* 
NXMST LDB XACTA     GET ADDR OF NEXT TCB ADDR 
      JMP CKMST     GO CHECK FOR NEXT TCB 
* 
*     MASTER REQUESTER IS DORMANT, CLEAR CLASS AND TCB
* 
CREPT CCA           SET THE RELEASE RE-TRY SWITCH 
      STA TEMP       TO -1
* 
CLRTN JSB EXEC      GO TO RTE TO RELEASE CLASS NUMBER 
      DEF *+5 
      DEF K21N      CLASS GET/NO ABORT
      DEF PRAM1     MASTER CLASS/RELEASE/NO WAIT
      DEF K0
      DEF K0
      RSS           IGNORE ERRORS 
      ISZ TEMP      RELEASE PROCESSING COMPLETED? 
      JMP CLRES      YES. GO TO CLEAR THE TCB 
      INA,SZA        NO. ARE ALL PENDING REQUESTS CLEARED?
      JMP CREPT         NO. CONTINUE TO CLEAR REQUESTS
* 
      LDA PRAM1     GET THE CLASS NUMBER AGAIN
      AND CLMSK     EXCLUDE THE NO-DE-ALLOCATION BIT(#13) 
      STA PRAM1     RESTORE THE MODIFIED CLASS WORD 
      JMP CLRTN     RETURN FOR FINAL DE-ALLOCATION
* 
*     NOW CLEAR OUT THE MASTER REQUESTERS TCB 
CLRES JSB #RSAX     CALL #RSAX TO PURGE MASTER TCB
      DEF *+4 
      DEF K3
      DEF K1        STREAM-LIST = MASTER
      DEF PRAM1     CLASS NUMBER
* 
      SZA,RSS       SKIP IF TCB NOT DELETED, IGNORE REST
      JMP CKMS2     CONTINUE WITH NEXT TCB ON CHAIN 
* 
      SKP 
* 
*     RESCHEDULE "GRPM","SRPM", "QCLM", OR "RFAEX" IF THEY ARE DORMANT
* 
RSCHD JSB EXEC      TRY TO SCHEDULE GRPM (IF DORMANT) 
      DEF *+3 
      DEF K10N
      DEF NGRPM 
      NOP 
* 
      JSB EXEC      TRY TO SCHEDULE SRPM (IF DORMANT) 
      DEF *+3 
      DEF K10N
      DEF NSRPM 
      NOP 
* 
      JSB EXEC      TRY TO SCHEDULE QCLM (IF DORMANT) 
      DEF *+3 
      DEF K10N
      DEF NQCLM 
      NOP 
* 
      SKP 
* 
*     CHECK FOR DOWNED COMMUNICATION LINES
* 
      LDA LUMAX     NUMBER OF LOGICAL UNITS 
      CMA,INA 
      STA LCNT      SET COUNTER 
      LDA B101
      STA LU        MODE= 1 FOR "ENABLE LISTEN" 
      LDA DRT       ADDR OF DEVICE REFERENCE TABLE
UPEQ2 STA LPNT
      LDA 0,I       PICK-UP DRT ENTRY 
      AND B77       ISOLATE EQT NUMBER
      ADA N1
      MPY K15       REL.POS. IN EQT 
      ADA EQTA      POINT TO 1ST WORD OF EQT
      ADA K4        ADDR OF EQT5
      LDB 0 
      LDA 0,I       CONTENTS OF EQT 5 
      ALF,ALF 
      AND B77       ISOLATE EQUIPMENT TYPE CODE 
      CPA B65       DVR65?
      JMP UPEQ4     YES, SEE IF IT'S UP 
* 
UPEQ3 ISZ LU        BUMP LU IN CONTROL WORD 
      LDA LPNT
      INA           INCREMENT DRT POINTER 
      ISZ LCNT
      JMP UPEQ2     PROCESS NEXT DRT ENTRY
* 
*     ALL LU'S HAVE BEEN CHECKED, EXIT UPLIN
* 
      JSB EXEC
      DEF *+2 
      DEF K6N 
* 
*     PROCESS COMMUNICATIONS EQT
* 
UPEQ4 ADB K7        POINT TO EQT12
      DLD 1,I       GET CONTENTS OF EQT12 & EQT13 
      RAL,RAL 
      ALF,SLA       IS IT IN LISTEN MODE(BIT 10)? 
      JMP UPEQ3     YES, OK 
      ADB K5        COMPUTE ADDR OF EQTX6 
      LDA 1,I 
      SZA,RSS       HAS THIS EQT BEEN INITIALIZED?
      JMP UPEQ3      NO 
* 
*  ISSUE AN "ENABLE LISTEN" REQUEST 
      JSB EXEC
      DEF *+3 
      DEF K3N 
      DEF LU        CONTROL MODE = 1
      NOP 
      JMP UPEQ3 
      SKP 
* 
*     SUBROUTINES 
* 
      SPC 2 
* 
*     THIS ROUTINE BUMPS THE TIMEOUT IN A TCB 
* 
TSTCB NOP 
      LDB 0 
      STB XACTA     SAVE ADDRESS OF THIS TRANSACTION
      IFZ 
      LIA 1 
      ALF,SLA       IS SW REG BIT 12 SET? 
      JSB LOGER     YES, LOG TCB ON LU #6 
      XIF 
      INB           POINT TO 2ND WORD OF TCB
      JSB LODWD     (CROSS)LOAD TIMER 
      AND B377      ISOLATE IT
      CPA B377      IS IT ABOUT TO ROLL OVER? 
      JMP TSTC5     YES, DON'T BUMP IT, RETURN + 2
* 
      JSB LODWD     (CROSS)LOAD TIMER AGAIN 
      INA           BUMP TIMER
      JSB $LIBR     LOWER FENCE 
      NOP 
MODI1 NOP           RSS HERE IF RTE-III OR RTE-IV 
      JMP TSTC3 
      XSA 1,I       STORE INTO SYSTEM MAPPED LOCATION 
      RSS 
* 
*     BELOW INSTRUCTION IS EXECUTED FOR RTE-II SYSTEMS ONLY 
TSTC3 STA 1,I       STORE UPDATED TIMER IN TCB
      JSB $LIBX     RAISE FENCE 
      DEF *+1 
      DEF *+2 
* 
TSTC5 ISZ TSTCB     RETURN +2 FOR TCB TIMED-OUT 
      LDB XACTA     TCB ADDR INTO B REG 
      JMP TSTCB,I   RETURN
      SPC 3 
* 
*     IF EQT15 IS ZERO, SET IT TO -1 TO FORCE A QUICK DRIVER TIMEOUT
* 
EQTIM NOP 
      JSB GTEQT     COMPUTE EQT ADDRESS 
      ADB K14       POINT TO EQT15
      LDA 1,I       PICK-UP CURRENT TIMER 
      SZA           IS IT RUNNING?
      JMP EQTIM,I   YES, LEAVE IT ALONE 
      CCA 
      JSB $LIBR     LOWER FENCE 
      NOP 
      STA 1,I       SET QUICK TIMEOUT (-1) IN EQT15 
      JSB $LIBX     RAISE FENCE 
      DEF EQTIM 
      SPC 3 
* 
*     THIS ROUTINE COMPUTES EQT ADDRESS FROM SELECT CODE
* 
GTEQT NOP 
      LDB XACTA     ADDR OF TRANSACTION 
      INB 
      JSB LODWD     (CROSS)LOAD 2ND WORD
      ALF,ALF       RIGHT JUSTIFY SELECT CODE 
      AND B77       ISOLATE IT
      ADA INTBA     USE IT TO INDEX INTERRUPT TABLE 
      ADA N6        TABLE STARTS AT 6 
      LDB 0,I       LOAD EQT ADDRESS
      JMP GTEQT,I   RETURN IT IN B REG
      SPC 3 
* 
*     SUBROUTINE TO LOAD WORD FROM ALTERNATE MAP (IF RTE-III OR IV) 
* 
LODWD NOP 
MODI2 LDA 1,I       GET WORD FROM TCB (RSS IF DMS SYSTEM) 
      JMP LODWD,I   RETURN IF RTE-II
      XLA 1,I       LOAD WORD FROM ALTERNATE MAP
      JMP LODWD,I 
      SKP 
* 
*     DATA AREA 
* 
PRAM1 NOP 
LU    NOP 
RNCW  NOP 
LPNT  NOP 
LCNT  NOP 
CNTR  NOP 
ST.LS NOP 
XACTA NOP 
LSTAD NOP 
MCLSA NOP 
MSEGA NOP 
TEMP  NOP 
TAGS  DEC 0,0 
DUMMY NOP 
* 
K1    DEC 1 
K2    DEC 2 
K3    DEC 3 
K4    DEC 4 
K5    DEC 5 
K7    DEC 7 
K10   DEC 10
K14   DEC 14
K15   DEC 15
K99   DEC 99
B65   OCT 65
B77   OCT 77
COMMA OCT 54
B101  OCT 101 
B377  OCT 377 
B400  OCT 400 
BIT15 OCT 100000
K3N   OCT 100003
K6N   OCT 100006
K10N  OCT 100012
K20N  OCT 100024
K21N  OCT 100025
GLCW  OCT 40006     GLOBAL RN LOCK/CLEAR - NO ABORT 
SCMSK OCT 037400
CLMSK OCT 157777
N1    DEC -1
N2    DEC -2
N6    DEC -6
N10   DEC -10 
* 
OFMES ASC 1,OF
MSNAM BSS 3 
      ASC 1,,1
* 
QMES  ASC 10, SYSTEM IS QUIESCENT 
* 
NGRPM ASC 3,GRPM
NSRPM ASC 3,SRPM
NQCLM ASC 3,QCLM
* 
NAMES DEF *+1       LIST OF SLAVE MONITOR NAMES 
      ASC 3,SMON    0 
      ASC 3,DLIST   1 
      ASC 3,PLOS    2 
      ASC 3,NPRGL   3 
      ASC 3,PTOPM   4 
      ASC 3,EXECM   5 
RFASC ASC 3,RFAM    6 
      ASC 3,OPERM   7 
      ASC 3,PLOSB   8 
      ASC 3,PROGL   9 
* 
      IFZ 
* 
NEND  DEF * 
      SKP 
* 
*  THIS ROUTINE IS CALLED TO LOG AN ACTIVE TCB ON LU 6
* 
LOGER NOP 
      INB           2ND WORD OF TCB 
      JSB LODWD 
      ALF,ALF       RIGHT JUSTIFY SELECT CODE 
      JSB CVOCT     CONVERT IT TO ASCII 
      STA SC        STORE IN PRINT LINE 
* 
      JSB LODWD     CONVERT LOW 2 DIGITS OF TIMER 
      JSB CVOCT      TO OCTAL ASCII 
      STA TIMER+1 
      JSB LODWD 
      ALF,ALF 
      RAL,RAL       RIGHT JUSTIFY HIGH DIGIT
      AND K3
      IOR ASC.0     CONVERT IT TO ASCII 
      STA TIMER 
* 
      LDA NPNT      ADDR OF CURRENT MONITOR NAME
      CPA NEND      IS IT A MASTER TCB? 
      JMP LOG5      YES, USE NAME OF MASTER REQUESTER 
* 
      JSB LODWD     SLAVE TCB, NOW GET BREAK FLAG 
      RAL           INTO BIT 0
      AND K1
      IOR ASC.0     ASCII 0 OR 1
      STA BREAK     STORE IN PRINT LINE 
* 
      JSB LODWD     GET "D" BIT 
      RAL,RAL 
      AND K1
      IOR ASC.0     ASCII 0 OR 1
      STA DBIT      STORE IN PRINT LINE 
* 
      INB           POINT TO TIME TAGS IN TCB 
      LDA T1AD
      STA PNT1      POINT TO PRINT LINE FIELD 
      JSB OCT3      CONVERT TO OCTAL ASCII
      INB           NOW 2ND WORD OF TIME TAGS 
      ISZ PNT1
      ISZ PNT1
      JSB OCT3       TO OCTAL ASCII 
* 
      LDB NPNT      ADDR OF MONITOR NAME
      LDA K35       LENGTH OF PRINT LINE
      JMP LOG8
* 
*  ENTER HERE FOR MASTER TCB
LOG5  ADB K2        POINT TO ID SEG ADDR IN TCB 
      JSB LODWD     PICK-UP ID SEG ADDR 
      LDB 0 
      RBL,CLE,ERB   CLEAR OFF BIT 15
      ADB K12       POINT TO NAME FIELD 
      LDA K14       PRINT SHORT RECORD FOR MASTER TCB 
* 
LOG8  STA RECL      SAVE PRINT LINE LENGTH (WORDS)
      LDA 1,I 
      STA NAMER     1ST 2 CHARS OF NAME TO PRINT LINE 
      INB 
      LDA 1,I 
      STA NAMER+1   3RD & 4TH CHARS OF NAME 
      INB 
      LDA 1,I 
      AND HIBYT 
      IOR LBLNK     FORCE BLANK IN RHW
      STA NAMER+2   5TH WORD OF NAME + BLANK
* 
      JSB EXEC      LOG PRINT LINE TO LU #6 
      DEF *+5 
      DEF K2
      DEF K6
      DEF LOGL
      DEF RECL
* 
      LDB XACTA     RESTORE TCB ADDR
      JMP LOGER,I   RETURN TO NORMAL PROCESSING 
* 
*  CONVERT BINARY WORD TO 6 OCTAL ASCII DIGITS
* 
OCT3  NOP 
      JSB LODWD 
      ALF           RIGHT JUSTIFY BITS 15-12
      AND K15 
      JSB CVOCT     CONVERT 1ST TWO TO ASCII
      STA PNT1,I    STORE IN PRINT LINE 
      ISZ PNT1
      JSB LODWD 
      ALF,ALF 
      RAL,RAL       RIGHT JUSTIFY BITS 11-6 
      JSB CVOCT     CONVERT 3RD & 4TH DIGITS
      STA PNT1,I
      ISZ PNT1
      JSB LODWD 
      JSB CVOCT     CONVERT 5TH & 6TH DIGITS
      STA PNT1,I
      JMP OCT3,I    RETURN
* 
*  CONVERT LEAST SIGNIFICANT 6 BITS IN A REG TO OCTAL ASCII 
* 
CVOCT NOP 
      STA TEMP1 
      AND B70 
      ALF,RAL       BITS 5-3 IN LHW 
      STA TEMP2 
      LDA TEMP1 
      AND K7        ISOLATE LOWER OCTAL DIGIT 
      IOR TEMP2     INCLUDE LHW 
      IOR ASC00     FORM ASCII NUMERICS 
      JMP CVOCT,I 
* 
*  DATA FOR "LOGER" 
* 
TEMP1 NOP 
TEMP2 NOP 
RECL  NOP 
PNT1  NOP 
K6    DEC 6 
K12   DEC 12
K35   DEC 35
B70   OCT 70
LBLNK OCT 40
HIBYT OCT 177400
ASC.0 ASC 1, 0
ASC00 ASC 1,00
T1AD  DEF TAG1
* 
*  THIS IS THE PRINT LINE 
LOGL  ASC 01, 
NAMER BSS 3 
      ASC 03,S.C.=
SC    BSS 1 
      ASC 04,  TIMER= 
TIMER BSS 2 
      ASC 03,  BRK= 
BREAK BSS 1 
      ASC 03, DBIT= 
DBIT  BSS 1 
      ASC 06,  TIME-TAG=
TAG1  BSS 3 
      ASC 01, / 
      BSS 3 
* 
      XIF 
* 
      END UPLIN 
                                                                                                                                                          