ASMB,L,C,Q
*     NAME:   SELUR 
*     SOURCE: 92067-18180 
*     RELOC:  92067-16125 
*     PGMR:   G.A.A.,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 SELUR,7 92067-16125 REV.1903 790322 
      ENT SELUR 
      EXT MESSS,.ENTR,LUTRU,.DFER,PTERR 
* 
* 
*     THE FUNCTION OF THIS SUBROUTINE IS TO FORMAT THE FOLLOWING
*     MESSAGE:
* 
*     SELU UUU= LU#YYY EQQ S X D
* 
*     WHERE: UUU  IS A GIVEN SESSION LU 
*            YYY  IS THE RELATED SYSTEM LU
*            QQ   IS THE RELATED EQT NUMBER 
*            X    IS THE SUBCHANNEL (IF NOT 0)
*            D    IS THE DECICE STATUS (D=DOWN ELSE BLANK)
* 
*     THE MESSAGE BEYOND THE "=" IS FORMATED BY THE SYSTEM LU PROCESSOR 
*     AND MAY VARY AS THE SYSTEM LU PROCESSOR CHANGES.  IF THE LU IS
*     NOT  DEFINED (AS PER LUTRU) THE RESULT IS : 
*     SLU UUU= NOT DEFINED
* 
*     CALLING SEQUENCE: 
* 
*     ILOG=SELUR(UUU,WBUF)
*  OR 
*     ILOG=SELUR(UUU,WBUF,ISCB) 
* 
*     WHERE: UUU  IS THE LU TO BE REPORTED
*            WBUF IS THE BUFFER WHICH IS TO CONTAIN THE MESSAGE.
*                 (IT IS ASSUMED THAT THIS BUFFER IS LARGE ENOUGH 
*                 I.E. NO ERROR CHECKS ARE MADE ON POSSIBLE BUFFER
*                 OVERRUN.) 
*            ILOG IS THE RETURN BUFFER LENGTH IN CHARACTRERS. 
*                 ILOG WILL BE NEGATIVE (I.E. IT MAYBE USED IN
*                 THE EXEC I/O CALL). 
* 
*            ISCB IS THE SCB TO SCAN. DEFAULT IS TO USE XEQT'S SCB. 
* 
LU    NOP 
BUF   NOP 
ISCB  DEF NOP 
SELUR NOP 
      JSB .ENTR     GET THE PRAMS.
      DEF LU
      JSB LUTRU     TRANSLATE THE LU
      DEF LUT.1 
      DEF LU,I
      DEF SYSLU     AND SAVE THE RESULT 
      DEF ISCB,I      SCAN SPECIFIED SCB (OPTIONAL) 
LUT.1 EQU * 
* 
      DLD "SLU"     MOVE "SLU " TO THE
      DST BUF,I     SUPPLIED BUFFER 
      ISZ BUF       STEP THE POINTER
      ISZ BUF       STEP THE POINTER
      LDA LU,I      GET THE NUMBER AND
      AND B377      ISOLATE THE BITS
      JSB CNUM      CONVERT THE NUMBER TO ASCII 
      RRL 8         AB = 123B  (B=ASCII BLANK)
      ADB B35       AB = 123= 
      DST BUF,I     PUT IT IN THE BUFFER
      ISZ BUF       STEP ALONG
      ISZ BUF       STEP ALONG
      LDA "LU"      BUILD A 
      STA BUF,I     LU,XXX
      LDA BUF       COMMAND 
      STA CALL      SAVE THE ADDRESS FOR MESSS
      LDA SYSLU     GET THE RETURN FROM LUTRU 
      SSA           IF ERROR
      JMP ILLU      GO PROCESS THE "NOT DEFINED"
* 
      CPA B377      THIS THE MAGIC LU?? 
      JMP IO26E     YES GO REPORT IT AS SUCH
* 
      ISZ BUF       STEP ALONG
      SZA,RSS       IF RESULT IS ZERO 
      JMP ZERO      GO SET UP A ZERO RETURN (MESSS WON'T DO IT) 
* 
      JSB CNUM      AB=B123  CONVERT THE NUMBER 
      ADA HCOMA     AB=,123  PUT IN THE COMMA 
      DST BUF,I     PUT RESULT IN THE BUFFER
      LDA XEQT      GET THE KEY TO PASS TO
      ADA D32       TO MESSS TO GET THE 
      XLA A,I       DESIRED RESULT
      CMA,INA       SET NEG TO OVER-RIDE
      STA SCB       SET FOR MESSS 
      JSB MESSS     DO THE CALL 
      DEF MRTN
CALL  NOP           USER BUFFER ADDRESS 
      DEF D6        6 CHARS IN
      DEF D1        CONSOUL LU
      DEF SCB       KEY 
MRTN  ADA N8        ADD THE "SLU UUU= " LENGTH
      LDB DNOP      RESET OPTIONAL SCB PARAMETER
      STB ISCB
      JMP SELUR,I   AND RETURN
* 
IO26E DLD IO26      GET THE "IO26" CODE 
      DST BUF,I     PUT IT IN THE BUFFER
      JSB PTERR     NOW PUT IT IN THE SCB SO HE 
      DEF *+3       CAN FIGURE IT OUT 
      DEF IO26
      DEF LU        DUMMY ERROR PRAM
      LDA N4        GET LENGTH
      JMP MRTN      AND GO EXIT 
* 
N4    DEC -4
* 
ILLU  DLD "NOT"     LU NOT DEFINED
      DST BUF,I     SET "NOT DEFINED" 
      ISZ BUF 
      ISZ BUF 
      JSB .DFER     IN THE BUFFER 
      DEF BUF,I 
      DEF "DEF" 
      LDA N10 
      JMP MRTN      GO RETURN 
* 
ZERO  DLD ZIP       SET UP THE RETURN FOR EQ0 
      DST BUF,I     AND 
      LDA N6        GET ITS CHAR LENGTH 
      JMP MRTN      GO RETURN 
* 
IO26  ASC 2,IO26    PTERR REALLY PUTS "IO26 # 0" BUT HELP KNOWS 
ZIP   ASC 2, # 0
N6    DEC -6
N10   DEC -10 
HCOMA BYT 14        CONVERTS HIGH BLANK TO COMMA
"NOT" ASC 2,NOT 
"DEF" ASC 3,DEFINED 
"LU"  ASC 1,LU
"SLU" ASC 2,SLU 
B377  OCT 377 
B35   OCT 35
D6    DEC 6 
N8    DEC -8
D1    DEC 1 
D32   DEC 32
SCB   NOP 
SYSLU NOP 
DNOP  DEF NOP 
NOP   NOP 
* 
CNUM  NOP           A 4-DIGIT LEADING ZERO SUPPRESS BINARY
      CLB,CLE       TO ASCII NUMBER CONVERTER 
      DIV D100      SEPERATE N INTO HIGH & LOW DIGITS 
      STB LOWD      SAVE THE LOW ONES 
      JSB TWOD      CONVERT THE HIGH ONES (E=0 => SUP 0'S)
      STB HIAS      SAVE THE RESULTS
      LDA LOWD      NOW LOW ONES
      JSB TWOD
      LDA HIAS      SET AB TO 1234  (DIGITS)
      SEZ,RSS       IF NO NON-ZERO THEN 
      ADB B20       FOURCE A ZERO TO 4'TH DIGIT 
      JMP CNUM,I    RETURN
* 
B20   OCT 20
LOWD  NOP 
HIAS  NOP 
D100  DEC 100 
* 
TWOD  NOP           ENTRY A=#,E=0 IF NO # YET 
      LDB BLK       ASSUME NO # YET 
      SEZ,SZA,RSS   IF NO # AND STILL ZERO
      JMP TWOD,I    RETURN TWO BLANKS (E=0) 
* 
      CLB           AT LEAST ON DIGIT HERE
      DIV D10       SEPERATE THEM 
      ALF,ALF       ROTATE HIGH TO PROPER PLACE 
      SEZ,CCE,SZA,RSS IF NO HIGHER DIGITS AND NONE YET
      LDA NB20      FOURCE A BLANK HIGH DIGIT 
      ADB A         COMBINE BOTH DIGITS 
      ADB "00"      CONVERT TO ASCII #S 
      JMP TWOD,I    RETURN B=ASCII,E=1
* 
D10   DEC 10
NB20  BYT -20 
"00"  ASC 1,00
BLK   ASC 1,
XEQT  EQU 1717B 
A     EQU 0 
B     EQU 1 
      END 
                