ASMB,R,L,C,Q
*     NAME:   .LGON 
*     SOURCE: 92067-18091 
*     RELPC:  92067-16125 
*     PGMR:   G.L.M.
* 
*  ***************************************************************
*  * (C) COPYRIGHT HEWLETT-PACKARD COMPANY 1979.  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 .LGON,7 92067-16125 REV.2001 791028 
* 
*     MODIFIED 701028 TO ISSUE ONLY ERROR MESSAGES RETURNED 
*     FROM LOGON. GLM 
* 
* 
* 
      ENT .LGON 
* 
      EXT .CLGN,EXEC,$LIBR,$LIBX
* 
* 
A     EQU 0 
B     EQU 1 
* 
* 
*  PURPOSE: GIVEN ACCOUNT DIRECTORY ENTRY NUMBER, PERFORM LOGON 
*  CALLING SEQUENCE: (A)=DIRECTORY ENTRY NUMBER 
*                    JSB .LGON
*                    DEF BUFFER(128 WORDS) FOR POSSIBLE ERROR RETURN
* 
*            RTN (A) 0= LOGON OK   (B)=0
*                   -1= SESSION NOT INITIALIZED OR NOT INSTALLED
*                   (B) NOT DEFINED 
*            ELSE (A) = - TRANS LOG (BYTES) OF TERMINATING ERROR MSG
*                       (ERROR STRING IN BUFFER)
*                 (B) = ERROR CODE
* 
*  NOTE: THE CALLING PROGRAM IS PLACED IN THE SESSION CREATED 
*        BY THIS CALL ( IF GOOD LOG-ON ). 
* 
*        ERROR DIAGNOSTIC MESSAGES RETURNED BY LOGON WILL BE
*        ISSUED TO THE SYSTEM CONSOLE.
* 
* 
      SKP 
* 
* 
* 
.LGON NOP 
      STA TEMP      SAVE DIRECTORY ENT #
      LDA .LGON,I   FETCH ERROR RETURN BUFFER ADDR
      STA BUFA
      CLA,INA       SEND 1 WORD 
      LDB DTEMP      TO LOGON (ADDR OF DENT IN (B)) 
      JSB .CLGN 
DM2   DEC -2        LOGON REQUEST 
* 
      SSA           ERROR ? 
      JMP ERR1        YES GET OUT 
* 
      STA CCLAS     SAVE COMMUNICATION CLASS
* 
GETIT LDA DM256     FETCH BUFFER SIZE 
      JSB GETR      GO DO A GET 
       JMP ERR1     ERROR ON GET REQUEST
* 
      LDA CALL      FETCH CALL TYPE ( THAT THE GET FETCHED) 
      CPA D1        MUST BE READ OR WRITE\READ
      RSS 
      JMP GETIT     TRY AGAIN 
* 
      LDA IOP2      FETCH LOGON STATUS
      STA TEMP3     SAVE POSSIBLE ERROR CODE
      SSA,RSS       IF NEGATIVE (ERROR TERMINATION) 
      SZA,RSS        OR ZERO (GOOD LOGON RETURN)
      CMB,INB,RSS        CONTINUE  (SET BYTE COUNT NEG) 
      JMP ISSUE     GO PRINT DIAGNOSTIC THEN GET NEXT MESSAGE 
* 
      SZA           IF BAD RETURN 
      LDA B         FETCH NEGATIVE TRANS LOG OF ERROR MESSAGE 
EXIT  STA TEMP      SAVE RETURN STATUS
      LDA CCLAS 
      XOR SAVC      REMOVE SAVE CLASS BIT 
      STA CCLAS 
* 
AGAIN CLA           BUFFER LEN IS ZERO
      JSB GETR      MAKE SURE COMMUNICATION CLASS IS RELEASED 
       CLB,RSS      ERROR RETURN= CLASS RELEASED
      JMP AGAIN 
* 
      ISZ .LGON     BUMP RETURN ADDR
      LDA TEMP3      FETCH POSSIBLE ERROR CODE
      ALF           POSITION IT TO (B). (B) MUST BE ZERO FIRST
      ASL 6 
      LDA TEMP      RESTORE RETURN STATUS 
      SZA           IF GOOD LOG-ON, APPEND THIS PROG TO THE SESSION 
      JMP .LGON,I   EXIT
* 
* 
*  THE CALLING PROGRAM IS PLACED IN SESSION BY INSERTING THE
*  SCB ADDRESS (RETURNED IN CLASS BUFFER BY LOGON) INTO XEQT+32.
* 
      LDA XEQT      FETCH ID ADDR 
      ADA D32       ADVANCE TO SESSION WORD 
      LDB BUFA,I    FETCH SCB ADDRESS 
      JSB $LIBR 
      NOP 
      XSB A,I       STORE IN ID SEGMENT 
      LDA TEMP      RESTORE RETURN STATUS 
      CLB           NO ERROR TO REPORT
      JSB $LIBX 
      DEF .LGON     RETURN
* 
XEQT  EQU 1717B 
* 
* 
* 
* 
* 
GETR  NOP 
      STA TEMP2 
      JSB EXEC
      DEF GET1
      DEF DS21
      DEF CCLAS 
      DEF BUFA,I   RESULT BUFFER
      DEF TEMP2 
      DEF IOP1
      DEF IOP2
      DEF CALL
GET1  EQU * 
      RSS 
      ISZ GETR
      JMP GETR,I
* 
* 
ERR1  CCA           SET ERROR STATUS TO -1
      JMP EXIT
* 
* 
ISSUE CMB,INB       SET BYTE COUNT NEGATIVE 
      STB TEMP      SAVE TRANS LOG
* 
      AND B7700     CHECK FOR ERROR FLAG    (791028 2001) 
      SZA,RSS        AND CONTINUE IF NON-ERROR
      JMP GETIT        MESSAGE FROM LOGON 
* 
      JSB EXEC      ISSUE LOG-ON DIAGNOSTIC TO SYSTEM CONSOLE 
      DEF IS.1
      DEF D2        WRITE 
      DEF D1          LU 1
      DEF BUFA,I        BUFFER LOCATION 
      DEF TEMP            LENGTH
IS.1  EQU * 
      JMP GETIT     GO MAKE NEXT GET REQUEST
* 
* 
* 
* 
BUFA  NOP 
B7700 OCT 7700
CALL  NOP 
SAVC  OCT 20000 
D1    DEC 1 
D2    DEC 2 
D32   DEC 32
TEMP  NOP 
DTEMP DEF TEMP
TEMP2 NOP 
TEMP3 NOP 
DM256 DEC -256
DS21  OCT 100025
IOP1  NOP 
IOP2  NOP 
CCLAS NOP 
      END 
                  