ASMB,Q,C
      HED <CNSLM> 3000 $STDLIST MONITOR * (C) HEWLETT-PACKARD CO. 
      NAM CNSLM,19,30 91750-16048 REV.2013 800117 MEF 
      SPC 1 
******************************************************************
*  * (C) COPYRIGHT HEWLETT-PACKARD COMPANY 1980. ALL RIGHTS      *
*  * RESERVED. NO PART OF THIS PROGRAM MAY BE PHOTOCOPIED,       *
*  * REPRODUCED OR TRANSLATED TO ANOTHER PROGRAM LANGUAGE WITHOUT*
*  * THE PRIOR WRITTEN CONSENT OF THE HEWLETT-PACKARD COMPANY.   *
******************************************************************
      SPC 2 
      EXT EXEC,XLUEX,DTACH,#QXCL,#RSAX,#GET,$OPSY 
      SPC 3 
      UNL           NEXT 5 LINES ARE FOR PRODUCTION ENGINEERING 
*  NAME: CNSLM
*SOURCE: 91750-18048
* RELOC: 91750-16048
*  PGMR: DMT
      LST 
***************************  CNSLM  ******************************
*                                                                *
*     SOURCE: 91750-18048                                        *
*                                                                *
*     BINARY: 91750-16048                                        *
*                                                                *
*     PROGRAMMR: JIM HARTSELL                                    *
*                                                                *
*     DATE: FEBRUARY 10, 1976                                    *
*                                                                *
*----------------------------------------------------------------*
*                                                                *
*         MODIFIED BY DMT BEGINNING NOVEMBER 3, 1978             *
*                                                                *
******************************************************************
      SPC 3 
*     CNSLM IS THE DS/1000 MONITOR WHICH RECEIVES "UNEXPECTED"
*     $STDLIST REQUESTS INITIATED BY AN HP 3000. THESE ARE USUALLY
*     "TELL" MESSAGES OR THE LOGOFF FROM A "KILLED" SESSION.
      SPC 2 
A     EQU 0 
B     EQU 1 
      SUP 
      SKP 
* 
******************************************************************
*                                                                *
*     G L O B A L   B L O C K               REV XXXX 790531      *
*                                                                *
*     GLOBAL OFFSETS INTO DS/1000 MESSAGE BUFFERS, USED BY:      *
*                                                                *
*         REMAT, RFMST, DEXEC, DMESS, FLOAD, POPEN, #MAST        *
*         GET,   #SLAV, RQCNV, RPCNV, GRPM,  LSTEN, PTOPM        *
*         EXECM, EXECW, OPERM, RFAM1, RFAM2, DLIST, DLIS3        *
*                                                                *
******************************************************************
* 
***!!!!! THE FIRST 7 WORDS (#STR THRU #ENO) MUST BE FIXED !!!!!***
#STR  EQU 0         STREAM WORD.
#SEQ  EQU #STR+1    SEQUENCE NUMBER.
#SRC  EQU #SEQ+1    SOURCE NODE #.
#DST  EQU #SRC+1    DEST. NODE #. 
#EC1  EQU #DST+1    REPLY ECOD1.
#EC2  EQU #EC1+1    REPLY ECOD2.
#ENO  EQU #EC2+1    NUMBER OF NODE REPORTING ERROR. 
* 
#ECQ  EQU #ENO+1    ERROR CODE QUALIFIER (BITS 4 TO 7)
#LVL  EQU #ECQ      MESSAGE FORMAT LEVEL (BITS 0 TO 3)
#MAS  EQU #LVL+1    MA "SEND" SEQ. #
#MAR  EQU #MAS+1    MA "RECV" SEQ. #
#MAC  EQU #MAR+1    MA "CANCEL" FLAGS 
#HCT  EQU #MAC+1    HOP COUNT 
#SID  EQU #HCT+1    SESSION ID WORD 
* 
#EHD  EQU #SID      LAST ITEM OF HEADER 
#MHD  EQU #EHD+1    MINIMUM HEADER SIZE 
#REQ  EQU #MHD      START OF REQUEST SPECIFIC AREA
#REP  EQU #MHD      START OF REPLY SPECIFIC AREA
* 
#MXR  EQU #MHD+24   <<< MAXIMUM DS REQ/REPLY BUFFER SIZE >>>
#LSZ  EQU 2         <<< SIZE OF LOCAL APPENDAGE AREA >>>
* 
******************************************************************
* 
      SKP 
CNSLM LDA $OPSY     CHECK FOR OPERATING 
      RAR            SYSTEM TYPE. 
      SLA,RSS 
      JMP LDABI 
      XLA B,I       DMS LOAD. 
      RSS 
LDABI LDA B,I       NON-DMS LOAD. 
      STA CLSN      SAVE CLASS NUMBER.
* 
      JSB DTACH     DETACH FROM POSSIBLE SESSION. 
      DEF *+1 
* 
GET   JSB #GET      DO A CLASS GET AND WAIT FOR REQUEST 
      DEF *+6 
      DEF CLSN      CLASS # 
      DEF DS1KH     DS/1000 HEADER
      DEF MINLN 
      DEF RQBUF     REQUEST BUFFER
      DEF D80       MAX LENGTH = 80 WORDS.
      JMP GET       ERROR RETURN. 
* 
      LDA RQBUF     GET LENGTH/CLASS WORD.
      AND B77       ISOLATE CLASS.
      CPA D5        IS IT 5?
      RSS 
      JMP GET        NO. IGNORE.
* 
      LDA RQBUF+2   GET STREAM TYPE WORD. 
      AND B77       ISOLATE STREAM TYPE.
      CPA B23       STREAM 23 IS CONTROL. 
      JMP REPLY      (JUST REPLY.)
      CPA B20 
      RSS           STREAM 20 IS $STDLIST.
      JMP REJCT     REJECT ALL OTHERS.
* 
      LDA RQBUF+4 
      AND B377
      STA TONUM     STORE "TO" NUMBER (LU # OR 0) 
* 
      LDA RQBUF+7   GET BYTE LENGTH.
      ADA MD4       OMIT CONTROL WORDS FROM COUNT.
      CMA,INA       NEGATE MESSAGE BYTE LENGTH. 
      STA BUFL      SAVE NEGATIVE LENGTH. 
* 
      LDA TONUM     IF DIRECTED TO USER,
      SZA 
      JSB OTPUT      DISPLAY ON THAT LOG LU.
      CLA,INA       IF USER CONSOLE 
      CPA TONUM      IS NOT 1,
      RSS             DISPLAY ON
      JSB OTPUT        SYSTEM CONSOLE.
* 
* BUILD A REPLY FOR THE $STDLIST REQUEST. 
* 
REPLY LDA RQBUF     STORE COUNT WORD. 
      AND B377
      IOR LB9 
      STA RQBUF 
      LDA RQBUF+2   SET REPLY BIT.
      AND B77 
      IOR BIT15 
      STA RQBUF+2   SET APPENDAGE 
      LDA D2        SET APPENDAGE 
      STA RQBUF+7    LENGTH (2 BYTES).
      LDA CCE       STORE STATUS WORD.
      STA RQBUF+8 
* 
*  SEND THE REPLY OR  REJECT
* 
SEND  LDA RQBUF+4   REVERSE PROCESS NUMBERS.
      ALF,ALF 
      STA RQBUF+4 
      AND B377      IF NO REPLY TO BE SENT, 
      SZA,RSS 
      JMP CNSL1      GO RELEASE SLAVE TCB.
* 
      LDA RQBUF+7   GET BYTE COUNTER. 
      INA 
      CLE,ERA 
      ADA D8
      STA RQLEN     LENGTH OF REPLY.
* 
      LDA #QXCL     IS 3000 LINK DOWN?
      SSA 
      JMP CNSL1     YES. IGNORE REPLY.
* 
      JSB EXEC      WRITE REPLY TO QUEX.
      DEF *+8 
      DEF CLS20 
      DEF D0
      DEF RQBUF 
      DEF RQLEN 
      DEF RQLEN 
      DEF D0
      DEF #QXCL 
      NOP           IGNORE ERROR RETURN.
* 
CNSL1 JSB #RSAX     DELETE SLAVE TCB. 
      DEF *+4 
      DEF D7         CODE FOR "CLEAR".
      DEF DS1KH+#SEQ LOCAL SEQUENCE #.
      DEF D2         CNSLM STREAM TYPE. 
* 
      JMP GET       GO WAIT FOR ANOTHER REQUEST.
      SKP 
* SUBROUTINE TO PERFORM $STDLIST ON LU IN A-REGISTER
* 
OTPUT NOP           ENTRY POINT 
      STA LU        STORE LU NUMBER 
* 
      JSB XLUEX     DISPLAY MESSAGE 
      DEF *+5 
      DEF SD2 
      DEF LU
      DEF RQBUF+10
      DEF BUFL
      NOP           IGNORE ERRORS 
* 
      LDA RQBUF+8   IF DOUBLE 
      CPA B60        SPACE WAS
      RSS             SPECIFIED,
      JMP OTPUT,I 
* 
      JSB XLUEX     PRINT A 
      DEF *+5        BLANK
      DEF SD2         LINE. 
      DEF LU
      DEF BLANK 
      DEF D1
      NOP 
      JMP OTPUT,I   RETURN. 
* 
B60   OCT 60
BLANK ASC 1,
* 
*  DO NOT CHANGE THE ORDER OF THE FOLLOWING TWO STATEMENTS. 
LU    BSS 1         LU NUMBER 
      OCT 200       CONTROL BIT TO PRINT COL 1
      SPC 5 
* 
* SEND "REJECT" REPLY FOR ILLEGAL REQUESTS. 
* 
REJCT LDA RQBUF     TOTAL 
      AND B377       LENGTH 
      IOR LB8         IS 8. 
      STA RQBUF 
      LDA RQBUF+2   SET REJECT BIT. 
      IOR BIT14 
      STA RQBUF+2 
      CLA           DATA LENGTH = 0.
      STA RQBUF+7 
      JMP SEND      SEND REJECT TO QUEX.
      SPC 5 
* 
* CONSTANTS AND WORKING STORAGE.
* 
D0    OCT 0 
D1    DEC 1 
D2    DEC 2 
D5    DEC 5 
D7    DEC 7 
D8    DEC 8 
D80   DEC 80
B20   OCT 20
B23   OCT 23
B77   OCT 77
B377  OCT 377 
CLS20 DEF 20,I
MD4   DEC -4
SD2   DEF 2,I 
LB8   BYT 10,0      DECIMAL 8, LEFT BYTE. 
LB9   BYT 11,0      DECIMAL 9, LEFT BYTE. 
BIT14 OCT 40000     REJECT BIT
BIT15 OCT 100000    REPLY BIT 
CLSN  NOP 
RQLEN NOP 
CCE   OCT 1000
BUFL  NOP 
TONUM NOP 
MINLN ABS #MHD
DS1KH BSS #MHD+#LSZ DS/1000 HEADER
RQBUF BSS 80        DS/3000 MESSAGE 
* 
      BSS 0         SIZE OF CNSLM 
* 
      END CNSLM 
                                                                                                                                                                                                                                                  