ASMB,R,L,C,Q
      HED PRMPT - PART OF THE SESSION TERMINAL HANDLERS 
*     NAME:   PRMPT 
*     SOURCE: 92067-18262 
*     RELOC:  PART OF 92067-16260 
*     PGMR:   G.A.A.,C.M.M.,G.L.M.
* 
*  ***************************************************************
*  * (C) COPYRIGHT HEWLETT-PACKARD COMPANY 1978.  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.       *
*  ***************************************************************
* 
       NAM PRMPT,129,5 92067-16260 REV.2026 800416
       SUP PRESS ALL EXTRANEOUS  LISTING
       EXT EXEC,FNDLU,$LIBR,$LIBX,IDGET 
       EXT XLUEX,LUSES,$LGON,$DSCS,$LGOF
       EXT $LME$,$STH,.SETB,.CLRB 
* 
* THIS INTERRUPT ROUTINE PROVIDES FOR THE INITIATION OF SESSIONS
* AND THE INITIATION OF "BREAK" PROCESSING. 
* IT IS SCHEDULED ON INTERRUPT BY DVR00(05,07) IF THAT TERMINAL HAS BEEN
* PROPERLY ENABLED (ON,CNTRL,LU,20) 
* 
* 2026 PCO: CHANGED TO PERFORM ALL I/O VIA CLASS. THIS IS TO PREVENT
*           PRMPT FROM HANGING IF A DEVICE GOES DOWN AS A RESULT
*           OF A PRMPT I/O REQUEST (DVA05 AND MODEM PROBLEMS).
* 
      SPC 5 
* 
* 
PRMPT EQU * 
      STB EQT4
* 
* 
* 
      JSB FNDLU     FIND THE LU FOR THIS EQU
      DEF *+1 
      SZA,RSS       FIND ONE? 
      JMP EXIT      NOPE
* 
      SEZ           IS THE DEVICE UP? 
      JMP EXIT      NO- SO GET OUT
* 
      STA LU        SAVE THE DEVICE LU
* 
      ADA MD100     SESSION LU MAX IS 99
      SSA,RSS       IS THIS ONE > 99
      JMP ERLU      YES, ISSUE ERROR MESSAGE AND EXIT 
* 
* 
      STB ASCLU     SAVE ASCII LU 
      STX RN#       SAVE POSSIBLE RN BYPASS WORD
      CYB           GET DEVICE TYPE WHERE IT CAN BE CHECKED 
      STB DVTYP     AND SAVE FOR ERROR RECOVERY 
* 
* 
* 
*  VERIFY THAT THE SESSION ENVIRONMENT HAS BEEN DEFINED.
* 
* 
      XLA $DSCS     FETCH SESSION FLAG
      CPA N1        IF =-1 THEN WE ARE NOT READY TO CONTINUE
      JMP NOTIN 
* 
      LDA $LGON     FETCH LOGON CLASS # 
      SZA,RSS       IF NOT DEFINED, 
      JMP NOTIN        ERROR
      STA CLASS 
* 
      LDA $LGOF     FETCH LGOFF CLASS # 
      SZA,RSS         IF NOT DEFINED, 
      JMP NOTIN       ERROR 
* 
      LDA $STH      FETCH R$PN$ CLASS # 
      SZA,RSS       IF NOT DEFINED, 
      JMP NOTIN       ERROR 
      STA CLAS2 
* 
*  NOTE: (B) STILL CONTAINS THE DEVICE TYPE 
* 
      CPB DVR07     IF MULTIPOINT 
      RSS           GO SET EDIT-MODE FLAGS
      JMP LUDIS     GO DO LU DISABLE
* 
      LDA B2300     FETCH CONTROL PORTION 
      STA CONWD     AND SAVE FOR CONTROL REQUEST
      JSB XLUEX 
      DEF ED.TF 
      DEF DS19      CONTROL REQUEST WITH NO-ABORT 
      DEF LU
      DEF IM        EDIT MODE FLAGS 
      DEF CLAS2 
      DEF NOP 
      DEF NOP 
      DEF NOP 
      DEF NOP 
      DEF RN#       WATCH OUT FOR LU LOCKS
ED.TF EQU * 
      NOP           POSSIBLE ERROR RETURN 
* 
      SPC 5 
* 
* 
*  DISABLE TERMINAL BY SETTING BIT IN BIT MAP 
* 
LUDIS LDA LU        FETCH LU
      JSB .SETB     GO SET BIT
      SEZ           WAS IT ALREADY SET ?
      JMP BSY       YES,GO MAKE SURE EVERYONE IS STILL SCHEDULED
* 
* 
* 
      CLA           CLEAR CON WD SO 
      STA CONWD         WE GET CRLF 
* 
      JSB XLUEX     RESPOND WITH
      DEF ZROTN      ZERO LENGTH RECORD 
      DEF DS18
      DEF LU
      DEF BUFF
      DEF D0
      DEF NOP 
      DEF NOP 
      DEF CLAS2 
      DEF NOP 
      DEF RN# 
ZROTN NOP 
* 
      SKP 
* 
* 
* THIS IS WHAT WE WANT TO DO: 
* 
* 1) SEE IF A SESSION IS DEFINED FOR THIS TERMINAL (NODE ?) 
* 2) IF YES- THIS IS A "BREAK" MODE REQUEST 
* 3) OTHERWISE- 
*    A) FIND "LOGON" OR GIVE ERROR AND QUIT 
*    B) ISSUE LOGON MESSAGE TO TERMINAL ( GET THIS FROM 
*       SYS MAP BUFFER) 
*    C) START CLASS READ FOR RESPONSE AND GET "LOGON" STARTED.
*    D) TERMINATE, SAVING RESOURCES 
      SPC 5 
* 
      JSB LUSES     GO SEE
      DEF *+2         IF A
      DEF LU            SESSION IS DEFINED
      STA SESID     SAVE THE SCB INFO 
      SZA                   FOR THIS REQUEST
      JMP PROMT     YES--BREAK MODE 
      SKP 
* 
* LOG-ON REQUEST
* 
* CHECK FOR SHUTDOWN STATUS 
* 
      LDA $DSCS 
      CPA N2        IF SHUTDOWN 
      JMP SHDN        ISSUE MESSAGE AND TERMINATE 
* 
* 
* 
      LDA RN#       IF THIS LU IS LOCKED
      SZA             PUNT  ! 
      JMP LULCK 
* 
* 
      JSB IDGET    LOOK UP THE ID ADDRESS 
      DEF *+2        OF LOGON EVERY TIME
      DEF LOGON         TO PREVENT PROMPTING USER WHEN YOU CAN'T CONTINUE 
      SEZ 
      JMP LGERR     NOT FOUND-- ISSUE LOGON NOT FOUND ERROR!
* 
*    MOVE IN LOG-ON PROMPT
* 
      LDA $LME$     FETCH ADDR OF LOG-ON PROMPT 
      LDB DLGON     FETCH ADDR OF LOCAL BUFFER
      LDX D11 
      MWF           MOVE WORDS FROM SYSTEM MAP INTO USER MAP
* 
      JSB XLUEX     PROMPT FOR LOGON STRING (USER.GROUP)
      DEF LG.1
      DEF DS18
      DEF LU
      DEF LOGMS+1 
      DEF LOGMS 
      DEF NOP 
      DEF NOP 
      DEF CLASS     USE LOGON'S CLASS # 
LG.1  NOP 
* 
*  IF SHUT-DOWN IN PROGRESS, GET OUT
* 
     LDA $DSCS+1
     SSA
     JMP ENBL 
* 
      LDA B400      SET  FOR ECHO 
      STA CONWD        ON READ OF USER.GROUP NAME 
* 
      JSB XLUEX     START CLASS READ OF USER INPUT
      DEF LG.2
      DEF DS17
      DEF LU
      DEF * 
      DEF DM80
      DEF NOP 
      DEF LU
      DEF CLASS 
LG.2  NOP 
* 
* 
*  ATTEMPT TO SCHEDULE LOGON PASSING THE COMMUNICATION CLASS# IN TEMP 1 
* 
      JSB EXEC
      DEF RTSCH 
      DEF DS10      SCHEDULE NO WAIT
      DEF LOGON 
      DEF LU
      DEF CLASS 
RTSCH NOP           ERROR RETURN
* 
* 
* 
* 
      JMP EXIT
* 
      SKP 
* 
* 
*  BREAK MODE PROCESSING
* 
* 
PROMT JSB XLUEX 
      DEF *+10       "S=LU COMMAND?_" 
      DEF DS18
      DEF LU
      DEF BUFF
      DEF D8
      DEF NOP 
      DEF NOP 
      DEF CLAS2     USE R$PN$'S CLASS NUMBER
      DEF NOP 
      DEF RN# 
      NOP            ERROR RETURN 
      SPC 1 
      LDA B400      ALLOW ECHO ON INPUT 
      STA CONWD 
* 
      JSB XLUEX     PERFORM CLASS I/O READ
      DEF *+10
      DEF DS17
      DEF LU
      DEF * 
      DEF DM80
      DEF SESID 
      DEF EQT4
      DEF CLAS2 
      DEF NOP 
      DEF RN# 
      NOP            ERROR RETURN 
      SSA           ERROR RETURN? 
      JMP EXIT      YES-BEAT IT ! 
* 
      SPC 1 
      JSB EXEC      SCHEDULE R$PN$ W/O WAIT 
      DEF SCRPN     IGNORE SCHEDULE ERRORS SINCE
      DEF DS10      R$PN$ IN CLASS 'GET' SUSPEND
      DEF R$PN$ 
      DEF CLAS2 
SCRPN NOP           ERROR RETURN
* 
* 
      SKP 
* 
* 
* TERMINATION PROCESSING
* 
*  CHECK FOR POSSIBLE STRING FROM SYS/SES CONSOLE 
* 
* 
* 
EXIT  JSB EXEC      TERMINATE 
      DEF *+1+3      & SAVE 
      DEF D6          RESOURCES 
      DEF D0
      DEF D1
      JMP PRMPT     RESTART HERE ON INTERRUPT 
* 
* 
ERLU  LDA CONF      TERM LU TOO BIG 
      JMP EMES      ISSUE MESSAGE 
* 
NOTIN LDA NIERR     NOT-INITIALIZED ERROR 
      JMP EMES
* 
LULCK LDA LKERR     LU LOCKED ERROR 
      JMP EMES
* 
LGERR LDA NFND      CAN'T FIND LOGON
      JMP EMES
* 
SHDN  LDA SDERR     SHUT-DOWN MESSAGE 
* 
* 
EMES  STA ELEN
      INA           ADVANCE TO BUF ADDR 
      STA EBUF
* 
      CLA           CLEAR CON WORD
      STA CONWD 
* 
*  WRITE ERROR VIA CLASS I/O. WE MUST FIRST ALLOCATE A CLASS
*  AND THEN GET IT RELEASED.
* 
      JSB XLUEX 
      DEF ERRTN 
      DEF DS18
      DEF LU
EBUF  DEF * 
ELEN  DEF * 
      DEF NOP 
      DEF NOP 
      DEF TCLAS 
      DEF NOP 
      DEF RN# 
ERRTN NOP           ERROR RETURN
* 
NGET  JSB XLUEX 
      DEF GRTN
      DEF DS21
      DEF TCLAS 
      DEF *         DUMMY BUFFER
      DEF NOP       ZERO LENGTH TRANSFER
GRTN  NOP           THIS GET WILL RELEASE THE CLASS # 
* 
      CLA 
      STA TCLAS 
* 
*  ERROR CONDITIONS CAUSE THE DISABLE BIT TO BE CLEARED 
* 
ENBL  LDA LU
      JSB .CLRB     THIS ROUTINE CHECKS THE VALUE OF A
      JMP EXIT
* 
      JMP EXIT
      SKP 
*  THE BUSY BIT WAS SET AND THE TERMINAL INTERRUPTED AGAIN. 
*  MAKE SURE ALL THE MONITORS ARE SCHEDULED AND EXIT. 
* 
BSY   JSB EXEC
      DEF SC1 
      DEF DS10
      DEF R$PN$ 
SC1   NOP 
* 
      JSB EXEC
      DEF SC2 
      DEF DS10
      DEF LOGON 
SC2   NOP 
* 
      JSB EXEC
      DEF SC3 
      DEF DS10
      DEF LGOFF 
SC3   NOP 
      JMP EXIT
      SKP 
DS3   OCT 100003
DS10  OCT 100012
DVR07 OCT 3400
IM    OCT 71401 
B2300 OCT 2300
EQT4  BSS 1 
MD100 DEC -100
DVTYP NOP 
************* 
LU    BSS 1 *        NOTE: 2 WORD PARM
CONWD BSS 1 * 
************* 
SESID NOP 
B400  OCT 400 
DS18  OCT 100022
DS19  OCT 100023
DS21  OCT 100025
TCLAS NOP 
********************************* 
BUFF  ASC 7,S=LU COMMAND ?
      OCT 3537      BELL AND BACK ARROW 
ASCLU EQU BUFF+1    PROMPT MESSAGE
**********************************
* 
LOGMS BSS 11            NOTE: THIS BUFFER IS LOADED FROM THE SYS MAP
********************************************* 
D22   DEC 22                                * 
MCONF ASC 22,PRMPT\  TERMINAL LU > SESSION MAXIMUM OF 99
CONF  DEF MCONF-1                           * 
********************************************* 
D12   DEC 12                                * 
MFND  ASC 12,PRMPT\  LOGON NOT FOUND        * 
NFND  DEF MFND-1                            * 
********************************************* 
      DEC 8                                 * 
LKER  ASC 8,PRMPT\ LU LOCKED                * 
LKERR DEF LKER-1                            * 
********************************************* 
D15   DEC 15                                 *
NIER  ASC 15,PRMPT\ SESSION NOT INITIALIZED  *
NIERR DEF NIER-1                               *
***************************************************** 
      DEC 8                                         * 
SDER  ASC 8         PRMPT\ SHUTDOWN                 * 
SDERR DEF SDER-1                                    * 
***************************************************** 
* 
DLGON DEF LOGMS 
D11   DEC 11
D8    DEC 8 
D6    DEC 6 
D0    DEC 0 
D1    DEC 1 
N1    DEC -1
N2    DEC -2
CLASS NOP 
CLAS2 NOP 
NOP   NOP 
DM80  DEC -80 
R$PN$ ASC 3,R$PN$ 
DS17  OCT 100021
RN#   NOP 
LOGON ASC 3,LOGON 
LGOFF ASC 3,LGOFF 
A     EQU 0 
B     EQU 1 
      END PRMPT 
                                                                                