ASMB,Q,C,N
      HED DSINF(L): DS/1000 INFORMATION -- L-SERIES VERSION (C) HP CO.
      IFN 
          NAM  DSINF,23,65 91750-16079 REV.2013 800612 L
          EXT  DEXEC,D#OPS
      XIF 
      IFZ 
*         NAM  DSINF,23,65 NO Z-OPTION FOR L VERSION! 
      XIF 
          SPC  1
          SUP 
A         EQU  0
B         EQU  1
          EXT  $LIBR,$LIBX,$OPSY,PARSE,KCVT,CNUMO,CNUMD 
          EXT  EXEC,RMPAR,$CLTA,$RNTA,.DFER,PGMAD 
          EXT  .MVW,.MBT,.CBT,.LAX,.LDX,.ISX,.CAX,.DSX
          EXT  $MM,$LUTA,$LUT#,$IDA,$ID#,$IDSZ,$LUT#
      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 HEWLETT-PACKARD COMPANY.        * 
*  **************************************************************** 
      SPC 1 
      UNL           NEXT 5 LINES ARE FOR PRODUCTION ENGINEERING 
*  NAME: DSINF
*SOURCE: 91750-18079
* RELOC: 91750-16079
*  PGMR: LYLE WEIMAN
      LST 
********************************************
*                                          *
*     NAME:     DSINF(L)                   *
*         (DS INFORMATION, L-SERIES VERSN) *
*                                          *
*     SOURCE:      91750-18079             *
*                                          *
*     RELOCATABLE: 91750-16079 (N-OPTION)  *
*                NO Z-OPTION FOR L-SERIES  *
*                                          *
*     PROGRAMMERS: DMT/LAW                 *
*                                          *
*     DATE:        JULY 1979               *
*                                          *
********************************************
      SPC 3 
* THE ORIGINAL CODE FOR THIS PROGRAM WAS WRITTEN IN HP ALGOL. 
* MODIFICATIONS HAVE BEEN INTRODUCED SINCE TRANSLATION TO 
* ASSEMBLY LANGUAGE!
      SPC 3 
* ASSEMBLY OPTIONS: 
*    N    1000-1000 AND 1000-3000 VERSION 
*    Z    1000-3000 ONLY (NO DEXEC, NRV, MA, OR REROUTING)
*     NOTES: 1)  THE "Z" OPTION IS NOT AVAILABLE ON L-SERIES COMPUTERS, 
*                BECAUSE NO HP 3000 LINK EXISTS.
*            2)  THE CODE TO CONFIGURE INSTRUCTIONS FOR MAPPED-MEMORY 
*                HAS BEEN MADE INTO COMMENTS. 
      SKP 
*RUN FROM RTE WITH
*  RU,DSINF,<INLU>,<OUTLU>,<CONWD>,<NODE>,<FLAG>
*THE RUN-TIME PARAMETERS HAVE THESE MEANINGS: 
* 
*  <INLU>   THE LOGICAL UNIT NUMBER OF THE INPUT DEVICE. THE DEFAULT
*           IS THE NUMBER OF THE SCHEDULING TERMINAL PASSED BY M-T-M
*           OR 1. IF THE INPUT DEVICE IS INTERACTIVE A PROMPT IS
*           PRINTED ON THE DEVICE BEFORE EACH READ. 
* 
*  <OUTLU>  THE LOGICAL UNIT NUMBER OF THE DEVICE WHERE INFORMATION IS
*           PRINTED. THE DEFAULT IS THE INPUT LU (IF INTERACTIVE) OR 6. 
* 
*  <CONWD>  A CONTROL WORD WHICH SPECIFIES DSINF WILL BE RUN NON- 
*           INTERACTIVELY. THE FUNCTIONS WHICH TAKE PLACE ARE 
*           DETERMINED BY THE BITS SET: 
* 
*            DECIMAL
*             VALUE  PRINT THIS INFORMATION 
*            ------- ------------------------------ 
*               1    AVAILABLE MEMORY SUSPEND LIST
*               2    I/O CLASSES
*               4    DS/1000 VALUES 
*               8    DUMP OF SAM BLOCK
*              16    DS/1000 LISTS
*              32    NODAL ROUTING VECTOR 
*              64    DS/1000 DVT ENTRIES
*             128    MESSAGE ACCOUNTING 
*             256    REROUTING
* 
*           FOR EXAMPLE, TO PRINT THE I/O CLASS AND DS/1000 VALUES
*           ON YOUR TERMINAL, TYPE RU,DSINF,,,6.
* 
*  <NODE>   THE NODE NUMBER WHERE I/O IS TO OCCUR. DEFAULT IS LOCAL 
*           NODE (-1).
* 
*  <FLAG>   SET TO A NON-ZERO VALUE WHEN THE NODE NUMBER IS 0 (TO 
*           DISTINGUISH IT FROM THE DEFAULT). 
* 
*DSINF RECOGNIZES THE FOLLOWING COMMANDS: 
*   AV        AVAILABLE MEMORY SUSPEND LIST 
*   CL        I/O CLASSES 
*   VA        DS/1000 VALUES
*   DU        DUMP OF SAM BLOCK 
*   LI        DS/1000 LISTS 
*   NR OR /N  NODAL ROUTING VECTOR
*   LU[,,XX]  DS/1000 DVT ENTRIES 
*   LU,N[,XX] PRINT INFORMATION ON LU# N
*   MA        MESSAGE ACCOUNTING
*   RR        REROUTING 
*   EX OR /E  TERMINATE DSINF 
* 
*ALL OTHER CHARACTERS CAUSE THE FUNCTIONS TO BE LISTED ON THE 
*OUTPUT DEVICE.;
      SPC 3 
* 
* THE LU COMMAND USES A THIRD PARAMETER WHICH CAN HAVE THESE VALUES:
*         CODE       PRINT THIS INFORMATION 
*         ----       ---------------------- 
*         (NONE)     LU, DVT, AND DRIVER TYPE   \  ALWAYS 
*                    FLAG BITS (DRIVER 66)      /  PRINTED
*          IO        DVT WORDS
*          PA        FOR DVA66: INTERFACE PARAMETERS
*          ST        FOR DVA66: INTERFACE PARAMETERS AND STATISTICS 
*          AL        ALL OF THE ABOVE 
* 
*  IF THE PARAMETERS OR STATISTICS ARE READ FROM A DVA66 CARD, THE
*  DRIVER IS CALLED. IF THE BOARD IS DOWN OR THE DRIVER HAS A LONG
*  QUEUE, DSINF MUST WAIT.
* 
*  HERE IS A SAMPLE PRINTOUT OF A DVA66 ENTRY:
*   LU #  23, TYPE  66
*    WORD  VALUE  MEANING              WORD  VALUE  MEANING 
*      1  177777  DVT LINK WORD          2       0  Q!RQST INITIATION LI
*      3   31000  N!CIRCULAR NODE LIST   4   31024  P!CIRCULAR DVT LIST 
*      5   31603  X!IFT REFERENCE        6   33004  AV!TYPE!STATUS
*      7       1  SYSTEM FLAGS!LU LOCK   8       0  B!BUFFER ACCUM. 
*      9   11060  S! HL-LL/16! LL/16    10       0  RESERVED
*     11  177777  T.O. LIST             12       0  DEVICE T.O. VALUE 
*     13       0  I/F T.O. VALUE        14       0  DEVICE DVR ADDR 
*     15  150101  TY!E!Z!SUBFN!RQ       16       0  RQ.PARM/ERR CODE
*     17       0  RQST PARAM2/XLOG      18      22  RQST PARAM3/EXT STAT
*     19      24  RQST PARAM4/EXT STAT  20  177766  RETRY CNTR/READ PNTR
*     21       0  1ST READ LEN/SKIP CT  22       0  2ND READ LEN/READ CT
*     23       0  READY FRAME LENGTH    24   34564  WRITE POINTER 
*     25       0  WRITE BUFFERS LENGTH  26    1000  MAX PSI FRAME SIZE
*     27       0  NUM OUTPUT BUFFERS    28   26155  READ CONT ADDRESS 
*     29   26667  WRITE CONT ADDRESS    30   53000  FLAG BITS*
*     31      27  MISCELLANEOUS BITS
* 
*     NOTE: INFORMATION BELOW IS ONLY PRINTED FOR THE FIRST DVT OF A PAIR:
* 
*    FLAG BITS (DVT WORD 30)
*      0 READ ABORTED    0 WRITE ABORTED   0 RD RQ PENDING   0 WT RQ PENDING
*      0 BKPL LOCKED RP  0 BKPL LOCKED WP  0 SHORT TO ACTIVE 0 MED. T.O ACTIVE
*      0 LONG T.O ACTIVE 1 CONNECTED       1 START OF MSG.   0 NON-DS MODE
*      1 ASKED TO CONNCT 0 SEVERE ERROR    1 P-F RECONNECT   0 RFP WAIT 
* 
*    HDLC BOARD, FIRMWARE REV.1950,  SPEED:  MAXIMUM, INTERNAL CLOCK
*    FCL DISABLED, DIAGNOSTIC HOOD NOT SENSED 
* 
*    PARAMETERS/STATISTICS
*              2  GOOD I-FRAMES RCVD            50  RR FRAMES RECEIVED
*              0  RNR FRAMES RECEIVED            0  REJECT FRAMES RCVD
*              0  RCV PROC OVERRUNS              0  CRC ERRORS
*              0  ABORT SEQ. RECEIVED            0  RECEIVER OVERRUNS 
*              0  RX BUFFER OVERFLOWS            0  FRAMES W/BAD ADDR 
*              0  CMDR FRAMES RCVD               7  UNACK FR WINDOW SIZE
*             10  N2 RETRY COUNT                15  T1 T.O. IN 0.01 SEC 
* 
* 
*     THE FORM OF THE SPEED AND CLOCK MESSAGES DEPENDS ON THE 
*     SETTING OF THE SWITCHES ON THE I/F BOARD: 
* 
*              SPEED: 300 BPS, INTERNAL CLOCK 
*                       ^       ^ 
*                       !       ! 
*                       !       +----- OR EXTERNAL
*                       ! 
*                       +---- THIS FIELD MAY HAVE ANY OF THE FOLLOWING: 
*                                300 BPS
*                                1200 BPS 
*                                2400 BPS 
*                                4800 BPS 
*                                9600 BPS 
*                                19.2KBPS 
*                                57.6KBPS 
*                                MAXIMUM
* 
*     WHEN USING EXTERNAL CLOCK, THE ACTUAL SPEED IS DETERMINED BY MODEM, 
*     BUT SETTING SHOULD MATCH, OR BE SLOWER THAN, THAT OF THE MODEM USED.
* 
      HED DSINF: DATA DECLARATION * (C) HEWLETT-PACKARD CO. 
* RUN-TIME PARAMETERS 
INLU      BSS  01 
OUTLU     BSS  01 
CONWD     BSS  01 
NODE      BSS  01 
FLAG      BSS  01 
          SPC  2
*INTEGER I,J,         & COUNTERS
I         BSS  01 
J         BSS  01 
*        MAXID,       & # OF ID SEGMENTS IN SYSTEM
MAXID     BSS  01 
*        SSIZE;       & SIZE OF SAM BLOCK 
SSIZE     BSS  01 
          SPC  2
* DS/1000 VALUES
          EXT  #CNOD,#FWAM,#TBRN,#MSTO,#SVTO,#WAIT,#QRN 
          EXT  #BREJ,#LU3K,#QZRN,#GRPM,#NRV,#TST
          EXT  #RFSZ,#LDEF,#NCNT,#NODE,#LNOD,D$LID,D$RID
          EXT  #QCLM,#RTRY,#PLOG,#TRCL,#INCV,#OTCV,#QXCL
          EXT  #RQCV,#RPCV,#CLRN,#RDLY,#PRLU,#MHCT,#LEVL
          EXT  #TRCN,#MCTR,#LCNT,#MAHC,#MARN,#RSM,#LV 
          EXT  #MDCT,#POOL
          SPC 2 
*INTEGER ARRAY BUFR[1:1];  & OUTPUT BUFFER
BUFR      EQU  *
* OUTPUT FIELDS (WORDS 1 THROUGH 39)
W1        BSS  1
W2        BSS  1
W3        BSS  1
W4        BSS  1
W5        BSS  1
W6        BSS  1
W7        BSS  1
W8        BSS  1
W9        BSS  1
W10       BSS  1
W11       BSS  1
W12       BSS  1
W13       BSS  1
W14       BSS  1
W15       BSS  1
W16       BSS  1
W17       BSS  1
W18       BSS  1
W19       BSS  1
W20       BSS  1
W21       BSS  1
W22       BSS  18 
* 
* HOLDING AREA FOR NUMBER CONVERSION
*INTEGER HOLD1,HOLD2,HOLD3; 
HOLD1     BSS  1
HOLD2     BSS  1
HOLD3     BSS  1
* 
SAMIN     BSS 1     SAM ARRAY INITIALIZED?
* 
*EQUATE  LSTRM := 10;       & LAST STREAM NUMBER
LSTRM     EQU  10 
NOSTR     ABS  LSTRM
* 
NAME      BSS  3
NAMEF     BSS  3
IDAD      NOP 
ISTAT     NOP 
IDTYP     NOP 
IFTHR     NOP 
@NAMF     DBL  NAMEF
@NAME     DBL  NAME 
      HED DSINF: MAIN PROGRAM * (C) HEWLETT-PACKARD CO. 
*+-----------------------------+
*!  BEGINNING OF MAIN PROGRAM  !
*+-----------------------------+; 
          SPC  1
* PICK UP RUN-TIME PARAMETERS 
*RMPAR(INLU); 
DSINF     JSB  RMPAR
          DEF  *+2
          DEF  INLU 
* 
* 
      IFZ      ** SPACE SAVER **
*  FOR MAPPED SYSTEMS, CONFIGURE DMS INSTRUCTIONS.
          LDA  $OPSY
          RAR,SLA 
RSS       RSS 
          JMP  STFLS
          LDA  MWF
          CLB 
          DST  DMS1 
          LDA  RSS
          STA  DMS2 
      XIF      ** END SPACE SAVER **
* 
*& SET FLAGS
*PRMPT := SAMIN := FALSE; 
STFLS     CLA 
          STA  SAMIN
          STA  PRMPT
* 
          STA  NAME 
          STA  IDAD 
          JSB  PGMAD     GET OWN NAME 
          DEF  *+6        AND FATHER'S
          DEF  NAME        ID SEGMENT.
          DEF  IDAD 
          DEF  ISTAT
          DEF  IDTYP
          DEF  IFTHR
* 
      UNL 
      IFN 
      LST 
*   DETERMINE THE NODE NUMBER:
          LDA  NODE      IF NODE
          SZA             NOT 0,
          JMP  OK            USE IT.
          LDB  FLAG      CHECK
          SZB             NODE 0
          JMP  OK          FLAG.
*   WE HAVE BEEN SCHEDULED WITH BOTH FLAG AND NODE SET TO 0.
*   IF OUR FATHER IS "EXECW", USE #CNOD AS THE NODE NUMBER. 
          LDA  IFTHR     GET FATHER'S 
          CMA,INA         ID SEGMENT ADDR.
          SSA,RSS        IF <= 0, 
          JMP  LOCAL       WE ARE LOCAL.
          STA  IFTHR
          JSB  PGMAD     GET FATHER'S 
          DEF  *+3        NAME. 
          DEF  NAMEF
          DEF  IFTHR
          LDA  @NAMF     IS HIS NAME
          LDB  @EXCW       EXECW? 
          JSB  .CBT 
          DEF  D5 
          NOP 
          JMP  NTLOC     YES--NOT LOCAL 
          NOP 
LOCAL     CCA            NODE:=-1 
          RSS 
NTLOC     LDA  #CNOD     NODE:=#CNOD
          STA  NODE 
OK        EQU  *
      UNL 
      XIF 
      LST 
          SPC  1
* GET TRUE PROGRAM NAME (USUALLY WILL BE DSINF).
          LDA  @NAME     MOVE FOR 
          LDB  @RUNL      "INITIALIZE" MESSAGE. 
          JSB  .MBT 
          DEF  D5 
          NOP 
          LDA  @NAME     MOVE FOR 
          LDB  @FINS      FINAL MESSAGE.
          JSB  .MBT 
          DEF  D5 
          NOP 
          LDA  @NAME     MOVE FOR 
          LDB  @PRMP      PROMPT. 
          JSB  .MBT 
          DEF  D5 
          NOP 
* 
*IF INLU<1 THEN 
          CCA 
          ADA  INLU 
          SSA,RSS 
          JMP  L968 
*   BEGIN 
*   INLU := @401;  & DEFAULT INPUT LU IS SYS CONSOLE
          LDA  B401 
          STA  INLU 
*   PRMPT := TRUE;  & INTERACTIVE DEVICE
          CCA 
          STA  PRMPT
*   END 
* ELSE
          JMP  L977 
*   BEGIN  & GET LU INFORMATION 
      UNL 
      IFN 
      LST 
*   DEXEC(NODE,13,INLU,DVR,T1,SUB); 
L968      JSB  DEXEC
          DEF  *+7
          DEF  NODE 
      UNL 
      XIF 
      LST 
      UNL 
      IFZ 
      LST 
*   EXEC(13,INLU,DVR,T1,SUB); 
L968      JSB  EXEC 
          DEF  *+6
      UNL 
      XIF 
      LST 
          DEF  D13
          DEF  INLU 
          DEF  DVR
          DEF  T1 
          DEF  SUB
*   SUB := SUB AND @17; 
          LDA  SUB
          AND  B17
          STA  SUB
*   DVR := ROTATE DVR AND @77;
          LDA  DVR
          ALF,ALF 
          AND  B77
          STA  DVR
*   PRMPT := (DVR=00) OR (DVR=07 OR DVR=05 AND SUB=0);
          CCB 
          SZA,RSS 
          JMP  TRU
          CPA  D7 
          JMP  SUBCK
          CPA  D5 
          JMP  SUBCK
          JMP  FLS
SUBCK     EQU  *
      UNL 
      IFN 
      LST 
          LDA  D#OPS     IF REMOTE SYSTEM IS
          CPA  $RTEL      RTE-L, THERE ARE
          JMP  TRU         NO SUBCHANNELS.
      UNL 
      XIF 
      LST 
          LDA  SUB
          SZA 
FLS       CMB 
TRU       STB  PRMPT
*   IF PRMPT THEN 
          SSB,RSS 
          JMP  L977 
*      INLU:=INLU OR @400; & SET "K" BIT FOR INTERACTIVE INPUT
          LDA  INLU 
          IOR  B400 
          STA  INLU 
*   END;
* CHECK OUTPUT LU DEVICE
*IF OUTLU<1 THEN
L977      CCA 
          ADA  OUTLU
          SSA,RSS 
          JMP  L984 
*   OUTLU := IF PRMPT THEN INLU ELSE 6; 
          LDB  INLU 
          LDA  PRMPT
          SSA,RSS 
          LDB  D6 
          STB  OUTLU
*** SPECIAL FOR RTE-L: ADD NON-BUFFERED I/O OVERRIDE BIT
L984      EQU  *
          LDA  NODE      IF NODE NUMBER ISN'T 
          CMA,SZA         -1, DON'T ASSUME
          JMP  L984A       IT'S FOR AN L. 
          LDA  OUTLU     ADD BIT TO 
          IOR  BIT14      OUTPUT LU 
          STA  OUTLU
          LDA  INLU        AND INPUT LU.
          IOR  BIT14
          STA  INLU 
* 
L984A     LDA  $OPSY
          CPA  $RTEL     RTE-L? 
          RSS 
          JMP  WRSYS       NO--PRINT ERROR. 
* 
* FIND # OF PROGRAM ID SEGMENTS IN SYSTEM 
          LDA  $ID# 
          STA  MAXID
* 
*SSIZE := #NRV - #FWAM; & UNLESS THERE IS NO NRV! 
          LDA  #NRV 
          SZA 
          JMP  GTSTR
          LDA  #TST+1 
          MPY  D14
          ADA  #TST 
GTSTR     LDB  #FWAM
          CMB,INB 
          ADA  B
          STA  SSIZE
*IF SSIZE>740 THEN
          ADA  DM740
          SZA 
          SSA 
          JMP  L1001
*   & DON'T OVERRUN SAM ARRAY 
*   SSIZE := 740; 
          LDA  D740 
          STA  SSIZE
* 
* CHECK TO SEE IF NODE HAS BEEN INITIALIZED 
*IF FWAM=0 THEN 
L1001     LDA  #FWAM
          SZA 
          JMP  L1007
* 
          JSB  PRINT
          DEF  RUNL 
          DEC  13 
* ELSE
          JMP  L1037
* 
* 
* CHECK FOR NON-INTERACTIVE RUN 
*IF CONWD # 0 THEN
L1007     LDA  CONWD
          SZA,RSS 
          JMP  L1033
*   BEGIN 
*   INTEGER TMSC,SEC,MIN,HOUR;
          JMP  L1014
TMSC      BSS  01 
SEC       BSS  01 
MIN       BSS  01 
HOUR      BSS  01 
          BSS  1
TIME      ASC  8, TIME---XX:XX:XX 
COLON     ASC  1,:: 
"00"      ASC  1,00 
*   PRMPT := FALSE; 
L1014     CLA 
          STA  PRMPT
*   EXEC(11,TMSC);
          JSB  EXEC 
          DEF  *+3
          DEF  D11
          DEF  TMSC 
*   TIME[8] := KCVT(SEC); 
          LDA  SEC
          JSB  KCVT1
          IOR  "00" 
          STA  TIME+7 
*   TIME[6] := KCVT(MIN); 
          LDA  MIN
          JSB  KCVT1
          IOR  "00" 
          LDB  COLON
          RRR  8
          DST  TIME+5 
*   TIME[4] := KCVT(HOUR);
          LDA  HOUR 
          JSB  KCVT1
          STA  TIME+4 
          JSB  BLINE
* 
          JSB  PRINT
          DEF  TIME 
D8        DEC  8
      UNL 
      IFN 
      LST 
*   PRINT LOCAL NODE NUMBER 
          LDA  #NODE
          JSB  CNVTD
          DEF  LOCLN
          JSB  PRINT
          DEF  NODM2
          DEC  10 
      UNL 
      XIF 
      LST 
*   BLINE;
          JSB  BLINE
*   IF (CONWD AND  1)#0 THEN AVMEM; 
          LDA  CONWD
          AND  D1 
          SZA 
          JSB  AVMEM
*   IF (CONWD AND  2)#0 THEN CLASS; 
          LDA  CONWD
          AND  D2 
          SZA 
          JSB  CLASS
*   IF (CONWD AND  4)#0 THEN VALUS; 
          LDA  CONWD
          AND  D4 
          SZA 
          JSB  VALUS
*   IF (CONWD AND  8)#0 THEN DUMP;
          LDA  CONWD
          AND  D8 
          SZA 
          JSB  DUMP 
*   IF (CONWD AND 16)#0 THEN LISTS; 
          LDA  CONWD
          AND  D16
          SZA 
          JSB  LISTS
      UNL 
      IFN 
      LST 
*   IF (CONWD AND 32)#0 THEN DSNRV; 
          LDA  CONWD
          AND  D32
          SZA 
          JSB  DSNRV
      UNL 
      XIF 
      LST 
*   IF (CONWD AND 64)#0 THEN LUTS;
          LDA  CONWD
          AND  D64
          SZA 
          JSB  LUTS 
      UNL 
      IFN 
      LST 
*   IF (CONWD AND 128)#0 THEN MSACT;
          LDA  CONWD
          AND  D128 
          SZA 
          JSB  MSACT
*   IF (CONWD AND 256)#0 THEN RRTNG;
          LDA  CONWD
          AND  D256 
          SZA 
          JSB  RRTNG
      UNL 
      XIF 
      LST 
      IFZ      ** SPACE SAVER **
*   IF (CONWD AND 512)#0 THEN RMSES;
          LDA  CONWD
          AND  D512 
          SZA 
          JSB  RMSES
      XIF      ** END SPACE SAVER **
*   END 
* 
* 
*ELSE 
          JMP  L1037
*   SET PROGRAM NAME IN FUN1 AND FUN10
L1033     LDA  @NAME
          LDB  @FUN1
          JSB  .MBT 
          DEF  D5 
          NOP 
*   MOREC := TRUE;
          CCA 
          STA  MOREC
          LDA  @NAME
          LDB  @FN10
          JSB  .MBT 
          DEF  D5 
          NOP 
*   WHILE MOREC DO
L1034     LDA  MOREC
          SSA,RSS 
*      XEQFN; 
          JMP  L1037
          JSB  XEQFN
          JMP  L1034
* 
L1037     JSB  PRINT
          DEF  FINIS
D11       DEC  11 
* 
* DSINF REUSES PARAMETERS IF IN TIME LIST 
*   EXEC(6,0,0,INLU,OUTLU,CONWD); 
          JSB  EXEC 
          DEF  *+9
          DEF  D6 
          DEF  D0 
          DEF  D0 
          DEF  INLU 
          DEF  OUTLU
          DEF  CONWD
          DEF  NODE 
          DEF  FLAG 
D0        DEC  0
D128      DEC  128
      SPC 2 
* 
*   $OPSY SAYS THIS IS NOT AN RTE-L SYSTEM
* 
WRSYS JSB PRINT     PRINT 
      DEF BDRTE      "WRONG DSINF LOADED".
      DEC 10
      JSB EXEC      TERMINATE 
      DEF *+4        (WITH PREJUDICE).
      DEF D6
      DEF D0
      DEF D3
* 
BDRTE ASC 10, WRONG DSINF LOADED
      HED DSINF: EXECUTE A FUNCTION * (C) HEWLETT-PACKARD CO. 
*PROCEDURE XEQFN; 
* 
"AV"      ASC  1,AV 
"CL"      ASC  1,CL 
"VA"      ASC  1,VA 
"DU"      ASC  1,DU 
"LI"      ASC  1,LI 
"NR"      ASC  1,NR 
"/N"      ASC  1,/N 
*"EQ"      ASC  1,EQ
"LU"      ASC  1,LU 
"MA"      ASC  1,MA 
"RR"      ASC  1,RR 
*"RS"      ASC  1,RS
"/E"      ASC  1,/E 
"EX"      ASC  1,EX 
FNCTN     ASC  5,        FUNCTION TO BE PERFORMED 
RDLEN     BSS  1
DM10      DEC  -10
* 
XEQFN     BSS  01 
*   BEGIN 
* 
*   COMMENT 
*   +----------------------+
*   !  EXECUTE A FUNCTION  !
*   +----------------------+; 
* 
*   IF PRMPT THEN 
          LDA  PRMPT
          SSA,RSS 
          JMP  L928 
*      BEGIN  & PROMPT FOR COMMAND
      UNL 
      IFN 
      LST 
          JSB  DEXEC
          DEF  *+6
          DEF  NODE 
      UNL 
      XIF 
      LST 
      UNL 
      IFZ 
      LST 
          JSB  EXEC 
          DEF  *+5
      UNL 
      XIF 
      LST 
          DEF  D2 
          DEF  INLU 
          DEF  BLANK
          DEF  D1 
*      & PRINT THE PROMPT 
      UNL 
      IFN 
      LST 
          JSB  DEXEC
          DEF  *+6
          DEF  NODE 
      UNL 
      XIF 
      LST 
      UNL 
      IFZ 
      LST 
          JSB  EXEC 
          DEF  *+5
      UNL 
      XIF 
      LST 
          DEF  D2 
          DEF  INLU 
          DEF  PROMP
          DEF  DM21 
*      END; 
* 
* CLEAR WORDS 2 & 3 OF FNCTN
          LDA  BLANK
          STA  FNCTN+1
          STA  FNCTN+2
*     READ COMMAND FROM INPUT LU
      UNL 
      IFN 
      LST 
L928      JSB  DEXEC
          DEF  *+6
          DEF  NODE 
      UNL 
      XIF 
      LST 
      UNL 
      IFZ 
      LST 
L928      JSB  EXEC 
          DEF  *+5
      UNL 
      XIF 
      LST 
          DEF  SD1       SET NO-ABORT BIT.
          DEF  INLU 
          DEF  FNCTN
          DEF  DM10 
          JMP  EX        ERROR: TREAT AS "/E".
          STB  RDLEN     SAVE NUMBER OF BYTES READ. 
* 
*     EXECUTE COMMAND 
*   IF FNCTN="AV" THEN AVMEM
          LDA  FNCTN
          CPA  "AV" 
          RSS 
          JMP  *+3
          JSB  AVMEM
          JMP  L939 
*    ELSE IF FNCTN="CL" THEN CLASS
          CPA  "CL" 
          RSS 
          JMP  *+3
          JSB  CLASS
          JMP  L939 
*    ELSE IF FNCTN="VA" THEN VALUS
          CPA  "VA" 
          RSS 
          JMP  *+3
          JSB  VALUS
          JMP  L939 
*    ELSE IF FNCTN="DU" THEN DUMP 
          CPA  "DU" 
          RSS 
          JMP  *+3
          JSB  DUMP 
          JMP  L939 
*    ELSE IF FNCTN="LI" THEN LISTS
          CPA  "LI" 
          RSS 
          JMP  *+3
          JSB  LISTS
          JMP  L939 
      UNL 
      IFN 
      LST 
*    ELSE IF FNCTN="NR" OR FNCTN="/N" THEN DSNRV
          CPA  "NR" 
          RSS 
          JMP  *+3
TONRV     JSB  DSNRV
          JMP  L939 
          CPA  "/N" 
          JMP  TONRV
      UNL 
      XIF 
      LST 
**    ELSE IF FNCTN="EQ" THEN EQTS
*          CPA  "EQ"
*          RSS
*          JMP  *+3 
*          JSB  EQTS
*          JMP  L939
*    ELSE IF FNCTN="LU" THEN LUTS 
          CPA  "LU" 
          RSS 
          JMP  *+3
          JSB  LUTS 
          JMP  L939 
      UNL 
      IFN 
      LST 
*    ELSE IF FNCTN="MA" THEN MSACT
          CPA  "MA" 
          RSS 
          JMP  *+3
          JSB  MSACT
          JMP  L939 
*    ELSE IF FNCTN="RR" THEN RRTNG
          CPA  "RR" 
          RSS 
          JMP  *+3
          JSB  RRTNG
          JMP  L939 
      UNL 
      XIF 
      LST 
      IFZ      ** SPACE SAVER **
*    ELSE IF FNCTN="RS" THEN RMSES
          CPA  "RS" 
          RSS 
          JMP  *+3
          JSB  RMSES
          JMP  L939 
      XIF      ** END SPACE SAVER **
*    ELSE IF FNCTN="/E" OR FNCTN="EX" THEN MOREC:=FALSE 
          CPA  "/E" 
          JMP  EX 
          CPA  "EX" 
          RSS 
          JMP  BADF 
EX        CLA 
          STA  MOREC
          JMP  L939 
*    ELSE LFUNS;
BADF      JSB  LFUNS
*   END OF XEQFN; 
L939      JMP  XEQFN,I
      SPC 6 
B400      OCT  400
B401      OCT  401
DM740     DEC  -740 
DM21      DEC  -21
D16       DEC  16 
D64       DEC  64 
D256      EQU  B400 
D740      DEC  740
SD1       DEF  1,I
@EXCW     DBL  EXECW
EXECW     ASC  3,EXECW
PROMP     ASC 11,/DSINF(L): FUNCTION?_   *
RUNL      ASC 13, /DSINF: INITIALIZE NODE!
FINIS     ASC 11, *** END OF DSINF ***
STARS     EQU  FINIS+1
@RUNL     DBL  RUNL+1 
@PRMP     DBR  PROMP
@FINS     DBL  FINIS+6
SUB       BSS  1      INPUT LU'S SUBCHANNEL 
DVR       BSS  1      INPUT LU'S DRIVER TYPE
MOREC     BSS  1      MORE COMMANDS TO READ?
PRMPT     BSS  1      PROMPT FOR COMMANDS?
      HED DSINF: UTILITY SUBROUTINES * (C) HEWLETT-PACKARD CO.
*  +--------------+ 
*  !  PROCEDURES  ! 
*  +--------------+ 
          SPC 1 
* 
*   CONVERT NUMBER TO ASCII DECIMAL 
* 
CNVTD NOP 
      STA RAW       SAVE THE RAW DATA, TEMPORARILY. 
      LDA CNVTD,I   GET THE DESTINATION ADDRESS.
      STA STUFM     CONFIGURE THE CALL TO 'CNUMD'.
      JSB CNUMD     GO TO 
      DEF *+3        CONVERT
      DEF RAW         THE VALUE 
STUFM NOP              TO ASCII.
      ISZ CNVTD     ADJUST THE RETURN POINTER,
      JMP CNVTD,I    AND RETURN TO THE CALLER.
* 
RAW   BSS 1 
      SPC 2 
* 
*   CONVERT NUMBER TO ASCII OCTAL 
* 
CNVTO NOP           ENTRY.
      STA RAW       SAVE THE NUMBER.
      LDA CNVTO,I   GET DESTINATION ADDRESS.
      STA STUF1     SET ADDRESS IN CNUMO CALL.
      JSB CNUMO     CALL SYSTEM 
      DEF *+3        ROUTINE TO 
      DEF RAW         CONVERT.
STUF1 NOP 
      ISZ CNVTO     ADJUST RETURN ADDRESS 
      JMP CNVTO,I    AND RETURN TO CALLER.
      SPC 2 
* 
*   CONVERT DECIMAL NUMBER TO ASCII, TWO DIGITS 
*     (VALUE GOES IN A-REGISTER)
* 
KCVT1 NOP 
      STA T1        SAVE DATA TEMPORARILY.
      JSB KCVT      CALL SYSTEM ROUTINE 
      DEF *+2        FOR CONVERSION.
      DEF T1
      JMP KCVT1,I   RETURN. 
      SKP 
* 
* CHASE DOWN INDIRECTS
* 
INDR  NOP 
      RSS 
N     LDA A,I 
      RAL,CLE,SLA,ERA 
      JMP N 
      JMP INDR,I
      SPC 3 
* 
*   FILL BUFR ARRAY WITH A-REGISTER CONTENTS
* 
FILL      NOP           ENTRY POINT 
          STA  BUFR     STORE IN FIRST WORD.
          LDA  AW1      PROPAGATE THROUGH 
          LDB  A         ENTIRE FIELD 
          INB             WITH A
          JSB .MVW         MOVE.
          DEF D38 
          NOP 
* 
          JMP  FILL,I   RETURN
          SPC 2 
*     SUBROUTINE TO FILL PRINT BUFFER WITH BLANKS 
BFILL     NOP 
          LDA  BLANK
          JSB  FILL 
          JMP  BFILL,I  RETURN
          SKP 
* 
*  PRINT A STRING 
* 
MSG       BSS  1          STRING ADDRESS
LEN       BSS  1          LENGTH
* 
PRINT     NOP           ENTRY POINT 
          LDA  PRINT,I  GET PARAMETERS
          STA  MSG
          ISZ  PRINT
          LDA  PRINT,I
          STA  LEN
          ISZ  PRINT
* 
      UNL 
      IFN 
      LST 
          JSB  DEXEC     CALL DEXEC FOR WRITE 
          DEF  *+6
          DEF  NODE 
      UNL 
      XIF 
      LST 
      UNL 
      IFZ 
      LST 
          JSB  EXEC      CALL EXEC FOR WRITE
          DEF  *+5
      UNL 
      XIF 
      LST 
          DEF  D2 
          DEF  OUTLU
          DEF  MSG,I
          DEF  LEN
* 
          JMP  PRINT,I  RETURN
          SPC  2
*  PROCEDURE TO PRINT A BLANK LINE
BLINE     NOP 
          JSB  PRINT
          DEF  BLANK
D1        DEC  1
          JMP  BLINE,I
          SKP 
* 
*  MOVE THE DS/1000 BLOCK OF SAM
* 
DEST      DEF  SAM      DESTINATION ADDRESS 
PONTR     NOP           ADDRESS WHERE POINTER IS STORED 
          DEF  PNTR-3   POINTERS' ARRAY 
* 
GTSAM     NOP           ENTRY POINT 
          JSB  $LIBR    INSURE NOBODY CHANGES SAM 
          NOP            BY GOING PRIVILEGED
* 
          LDA  #FWAM    A-REG := SOURCE ADDR IN SAM 
          LDB  DEST     B-REG := DESTINATION
          JSB  .LDX     X-REG := # OF WORDS TO MOVE 
          DEF  SSIZE
DMS1      JSB  .MVW     MOVE WORDS [IN DMS: MWF]
          DEF  SSIZE
          NOP 
* 
          LDA  PONTR+1
          STA  PONTR
          CCA           \ GET ADDRESS 
          ADA  #LDEF    /  OF FIRST POINTER 
          JSB  .LDX     INITIALIZE COUNTER
          DEF  D14
LOOP2     LDB  A,I      PICK UP POINTER 
          LDB  B,I
          STB  PONTR,I  STORE POINTER 
          INA           INCREMENT SOURCE ADDR 
          ISZ  PONTR    INCREMENT DEST ADDR 
          JSB  .DSX     DONE? 
          JMP  LOOP2      NO--MOVE NEXT POINTER 
* 
          JSB  $LIBX    RESTORE SYSTEM
          DEF  GTSAM      AND RETURN
* 
*MWF      MWF           INSTRUCTION FOR DMS OPERATING SYS 
          SPC  3
* 
*  PLACE THE CONTENTS OF A LOCATION IN ALTERNATE MAP (IF MAPPED SYS)
*   INTO THE A-REGISTER 
* 
IXGET     NOP           ENTRY POINT 
DMS2      LDA  B,I      [RSS IF DMS SYSTEM] 
          JMP  IXGET,I  RETURN IF NON-MAPPED. 
* 
*         XLA  B,I
*         JMP  IXGET,I  RETURN. 
      HED DSINF: LIST FUNCTIONS * (C) HEWLETT-PACKARD CO. 
*PROCEDURE LFUNS; 
*   BEGIN 
* 
*   COMMENT 
*      +------------------------------------+ 
*      !  LIST FUNCTIONS PROVIDED BY DSINF  ! 
*      +------------------------------------+;
* 
@FUN1     DBL  FUN1+1 
FUN1      ASC 13, /DSINF: VALID FUNCTIONS-- 
FUN2      ASC 21,   AV        AVAILABLE MEMORY SUSPEND LIST 
FUN3      ASC 12,   CL        I/O CLASSES 
FUN5      ASC 14,   VA        DS/1000 VALUES
FUN6      ASC 17,   DU        DUMP OF DS SAM BLOCK
FUN7      ASC 13,   LI        DS/1000 LISTS 
      UNL 
      IFN 
      LST 
FUN9      ASC 17,   NR OR /N  NODAL ROUTING VECTOR
      UNL 
      XIF 
      LST 
FUN8      ASC 16,   LU        DS/1000 LUT ENTRIES 
FUN8A     ASC 17,   LU,N      DS/1000 LU # N
      UNL 
      IFN 
      LST 
FUN11     ASC 16,   MA        MESSAGE ACCOUNTING
FUN12     ASC 11,   RR        REROUTING 
      UNL 
      XIF 
      LST 
FUN10     ASC 14,   EX OR /E  TERMINATE DSINF 
@FN10     DBR  FUN10+11 
* 
LFUNS     NOP 
* 
          JSB  BLINE
* 
          JSB  PRINT
          DEF  FUN1 
          DEC  13 
* 
          JSB  PRINT
          DEF  FUN2 
          DEC  21 
* 
          JSB  PRINT
          DEF  FUN3 
          DEC  12 
* 
          JSB  PRINT
          DEF  FUN5 
          DEC  14 
* 
          JSB  PRINT
          DEF  FUN6 
          DEC  17 
* 
          JSB  PRINT
          DEF  FUN7 
          DEC  13 
* 
          JSB  PRINT
          DEF  FUN9 
          DEC  17 
* 
          JSB  PRINT
          DEF  FUN8 
          DEC  16 
* 
          JSB  PRINT
          DEF  FUN8A
          DEC  17 
* 
          JSB  PRINT
          DEF  FUN11
          DEC  16 
* 
          JSB  PRINT
          DEF  FUN12
          DEC  11 
* 
          JSB  PRINT
          DEF  FUN10
          DEC  14 
* 
          JSB  BLINE
*   END OF LFUNS; 
          JMP  LFUNS,I
      HED DSINF: PRINT AVAILABLE MEM LIST * (C) HEWLETT-PACKARD CO. 
*PROCEDURE AVMEM; 
*   BEGIN 
*   COMMENT 
*   +---------------------------------------+ 
*   !  PRINT AVAILABLE MEMORY SUSPEND LIST  ! 
*   +---------------------------------------+;
* 
MHED1     ASC 20, AVAILABLE MEMORY SUSPEND LIST IS EMPTY
MHED2     ASC 23,         C  PRGRM  R PRIOR  AMT.MEM     FATHER 
* 
B40K      OCT  40000
BIT14     EQU  B40K 
B77       OCT  77 
D3        DEC  3
D6        DEC  6
HYPHN     ASC  1,-- 
FATHR     BSS  1     FATHER'S ID SEGMENT WORD 1 
BAW7      DBL  W7 
* 
AVMEM     NOP 
          JSB  BLINE
*   IF (LINK := $MM )    #   0 THEN 
          LDA  $MM
          STA  LINK 
          SZA,RSS 
          JMP  L383 
*      BEGIN
*      & PRINT HEADING
          JSB  PRINT
          DEF  MHED1
D15       DEC  15 
* 
          JSB  BLINE
* 
          JSB  PRINT
          DEF  MHED2
D23       DEC  23 
*      & PRINT A LINE OF HYPHENS
*      FILL(BUFR,"--"); 
          LDA  HYPHN
          JSB  FILL 
* 
          JSB  PRINT
          DEF  BUFR 
D35       DEC  35 
*      & PRINT ID INFORMATION FOR EACH PROGRAM IN LIST
*      DO 
*         BEGIN 
*         & POINT TO NEXT LINK IN "AVAILABLE MEMORY" LIST 
*         FILL(BUFR,BLANK);  & CLEAR OUTPUT BUFR
L338      JSB  BFILL
*         & MOVE PROGRAM NAME 
          LDA  LINK 
          ADA  D12
          CLE,ELA 
          LDB  BAW7 
          JSB  .MBT 
          DEF  D5 
          NOP 
*     STORE "MR" IF PROGRAM IS MEMORY-RESIDENT
      LDB LINK      GET ITS ID SEGMENT ADDRESS
      ADB D15       ADVANCE TO MR/NA/SC, ETC. WORD
      LDA B,I       LOAD THAT WORD
      SSA,RSS         BIT SET?
      JMP *+3       NO, LEAVE FIELD BLANK 
      LDA =AMR
      STA W10       STORE "MR" IN PRINT LINE
      LDA B,I       LOAD WORD AGAIN 
      AND =B4000    MASK "SYSTEM COMMON" BIT
      SZA,RSS        BIT SET? 
      JMP *+3       NO, LEAVE FIELD BLANK 
      LDA =ASC
      STA W15 
*         CNUMD(IGET(LINK+6),W11);  & PRIORITY
          LDA  LINK 
          ADA  D6 
          LDA  A,I
          JSB  CNVTD
          DEF  W11
*         CNUMD(IGET(LINK+1),W15);  & AMOUNT OF MEMORY REQUESTED
          LDA  LINK 
          INA 
          LDA  A,I
          JSB  CNVTD
          DEF  W15
*         & PUT LINE LENGTH IN "I"
*         I := 20;
          LDA  D20
          STA  I
*         & CHECK "FATHER WAITING"
      LDA LINK      GET ID SEGMENT ADDRESS
      ADA D14         COMPUTE ADDRESS OF "FATHER" WORD
      LDA A,I       LOAD THE "FATHER" WORD
      AND B377      MASK FATHER'S ID SEGMENT #, IF ANY
      SZA,RSS       IS THERE A FATHER?
      JMP L373      NO
      ADA DM1       CONVERT TO AN 
      MPY $IDSZ       ID SEGMENT
      ADA $IDA         ADDRESS
      STA FATHR     ...BECOMES NEW 'FATHER' 
*            & MOVE FATHER NAME(S)
*            WHILE MORE DO
*               BEGIN 
*               & MOVE THE NAME 
L354      LDA  FATHR
          ADA  D12
          CLE,ELA 
          LDB  AW1
          ADB  I
          CLE,ELB 
          JSB  .MBT 
          DEF  D5 
          NOP 
*               & CHECK FOR GRANDFATHER WAITING 
          LDA  FATHR
          ADA  D14
          LDA  A,I
          AND  B377 
          SZA,RSS 
          JMP  L373 
          CCB 
*         STB  MORE 
*                  BEGIN
      ADA DM1       CONVERT TO ID SEGMENT ADDRESS 
      MPY $IDSZ 
      ADA $IDA
      STA FATHR 
*                  I := I + 3;
          LDA  I
*         ADA  D3 
*         STA  I
*                  & CHECK FOR FULL OUTPUT BUFFER 
*                  IF I > 35 THEN 
          LDA  I
          ADA  DM34 
          SSA 
          JMP  L354 
*                     BEGIN  & WRITE LINE, THEN CLEAR BUFFER
* 
          JSB  PRINT
          DEF  BUFR 
D38       DEC  38 
*                     FILL(BUFR,BLANK); 
          JSB  BFILL
*                     I := 20;
          LDA  D20
          STA  I
*                     END;
*                  END; 
*               END;
          JMP  L354 
*            END; 
*         & PRINT OUTPUT BUFFER 
*         PRINT1(I+3);
L373      LDA  I
          ADA  D3 
          STA  T1 
          JSB  PRINT
          DEF  BUFR 
T1        DEC  0
*         LINK := IGET(LINK);  & NEXT ID SEGMENT IN LIST OR 0 
          LDA  LINK,I 
          STA  LINK 
*         END 
*      UNTIL LINK=0;
          SZA 
          JMP  L338 
*      & PRINT LINE OF HYPHENS
*      FILL(BUFR,"--"); 
          LDA  HYPHN
          JSB  FILL 
* 
          JSB  PRINT
          DEF  BUFR 
          DEC  35 
*      END
*    ELSE 
          JMP  L384 
*      & NO PROGRAMS IN "AVAILABLE MEMORY" LIST 
* 
L383      JSB  PRINT
          DEF  MHED1
D20       DEC  20 
*   BLINE;
L384      JSB  BLINE
*   END OF AVMEM; 
          JMP  AVMEM,I
      HED DSINF: PRINT I/O CLASS INFORMATION * (C) HEWLETT-PACKARD CO.
*PROCEDURE CLASS; 
*   BEGIN 
* 
*   COMMENT 
*   +-------------------------------+ 
*   !  PRINT I/O CLASS INFORMATION  ! 
*   +-------------------------------+;
* 
*INTEGER    NBLCK,   & NUMBER OF BLOCKS WAITING IN SAM
NBLCK     BSS  01 
*           TBLCK;   & TOTAL SIZE OF SAM BLOCKS FOR A CLASS 
TBLCK     BSS  01 
* 
CHED1     ASC 11, I/O CLASS INFORMATION 
CHED2     ASC 12,       CLASSES IN SYSTEM 
CHED3     ASC 10,    CLASSES IN USE:
CHED4     ASC 18,      CLASS  STATE   GET      OWNER
CHED5     ASC 12,       CLASSES AVAILABLE 
CHED6     ASC 11, BLOCK(S)      WORDS]
"["       BYT  133,0
* 
ACHD6     DEF  CHED6
"BU"      ASC  1,BU 
"AL"      ASC  1,AL 
"GT"      ASC  1,GT 
D4        DEC  4
B17       EQU  D15
D32       DEC  32 
DM31      DEC  -31
$RTEL     EQU DM31  $OPSY CODE FOR RTE-L
DM34      DEC  -34
DCLAS     DEF  $CLTA
AVLBL     BSS  1     NUMBER OF CLASSES AVAILABLE
TADDR     BSS  1     I/O CLASS OR RN TABLE ADDRESS
TSIZE     BSS  1     TABLE SIZE 
ENTRY     BSS  1     TABLE ENTRY NUMBER 
TWORD     BSS  1     CONTENTS OF TABLE ENTRY
LINK      BSS  1     ID SEGMENT WORD 1
LASTI     BSS  1
AW11      DEF  W11
* 
*   & GET CLASS I/O TABLE START ADDRESS & NUMBER OF ENTRIES 
*   GETCL(TADDR,TSIZE); 
CLASS     NOP 
          LDA  DCLAS    GET CLASS TABLE ADDRESS 
          LDA  A,I
          JSB  INDR      CHASE INDIRECT ADDRESS 
          STA  TADDR
          LDA  A,I      GET NUMBER OF ENTRIES 
          STA  TSIZE
*   & PRINT HEADINGS
*   BLINE;
          JSB  BLINE
* 
          JSB  PRINT
          DEF  CHED1
          DEC  11 
*   & PRINT NUMBER OF CLASSES 
*   CNUMD(TSIZE,CHED2); 
          LDA  TSIZE
          JSB  CNVTD
          DEF  CHED2
* 
          JSB  PRINT
          DEF  CHED2
D12       DEC  12 
*   BLINE;
          JSB  BLINE
*   & PRINT HEAD FOR CLASSES IN USE 
* 
          JSB  PRINT
          DEF  CHED3
D10       DEC  10 
* 
          JSB  PRINT
          DEF  CHED4
D18       DEC  18 
*   & LOOK AT EACH CLASS TO DETERMINE STATE AND POSSIBLE OWNER
*   AVLBL := 0; 
          CLA 
          STA  AVLBL
*   FOR ENTRY := TADDR+1 TO TADDR+TSIZE DO
          LDA  TADDR
          INA 
          STA  ENTRY
          LDB  TADDR
          ADB  TSIZE
          STB  LASTI
L424      CMA,INA 
          ADA  LASTI
          SSA 
          JMP  L498 
*      BEGIN
*      INTOF; 
          JSB  $LIBR
          NOP 
*      IF (TWORD := IGET(ENTRY))=0 THEN 
          LDA  ENTRY,I
          STA  TWORD
          SZA 
          JMP  L434 
*         BEGIN 
*         INTON;
          JSB  $LIBX
          DEF  *+1
          DEF  *+1
*         AVLBL := AVLBL + 1;  & CLASS IS AVAILABLE 
          ISZ  AVLBL
*         END 
*       ELSE
          JMP  L497 
*         BEGIN 
*         FILL(BUFR,BLANK); 
L434      JSB  BFILL
*         CNUMD(ENTRY-TADDR,W3);
          LDA  TADDR
          CMA,INA 
          ADA  ENTRY
          JSB  CNVTD
          DEF  W3 
* 
*     MOVE NAME OF OWNER PROGRAM, OR <GLOBAL> IF NO OWNERSHIP ASSIGNED
* 
      LDA ENTRY 
      ADA TSIZE 
      LDA A,I       LOAD 2ND CLASS WORD 
      SSA,RSS       CLASS BEING FLUSHED?
      JMP L435      NO, CONTINUE
* 
*     THIS CLASS NUMBER IS CURRENTLY BEING FLUSHED BY 
*     THE SYSTEM. 
      LDA =AFL
      STA W8
      JSB $LIBX     RESTORE INTERRUPTS
      DEF *+1 
      DEF *+1 
      JMP L476
* 
L435  EQU * 
      AND B377      MASK LOW 8 BITS 
      SZA,RSS       GLOBAL? 
      JMP L442      YES,... 
      ADA DM1       CONVERT TO
      MPY $IDSZ       AN ID 
      ADA $IDA          SEGMENT ADDRESS 
      ADA D12               NAME
      CLE,ELA       CONVERT TO BYTE ADDRESS 
      LDB AW16
      CLE,ELB 
      JSB .MBT      MOVE TO PRINT BUFFER
      DEF D5
      NOP 
      JMP L443
* 
*     MOVE <NONE> 
* 
L442  JSB .DFER 
AW16  DEF W16 
      DEF NONE+4
* 
L443  EQU * 
*         IF TWORD>0 THEN 
          LDA  TWORD
          SZA 
          SSA 
          JMP  L456 
*            BEGIN  & STATE 2--BUFFERED REQUESTS
*            & FOLLOW LINKS TO BLOCKS OF SAM
*            NBLCK := TBLCK := 0; 
          CLA 
          STA  TBLCK
          STA  NBLCK
*            WHILE TWORD>0 DO 
L441      LDA  TWORD
          SZA 
          SSA 
*               BEGIN 
          JMP  L447 
*               NBLCK := NBLCK + 1; 
          ISZ  NBLCK
*               TBLCK := TBLCK + IXGET(TWORD+3);
          LDB  TWORD
          ADB  D3 
          JSB  IXGET
          ADA  TBLCK
          STA  TBLCK
*               TWORD := IXGET(TWORD);
          LDB  TWORD
          JSB  IXGET
          STA  TWORD
*               END;
          JMP  L441 
*            INTON; 
L447      JSB  $LIBX
          DEF  *+1
          DEF  *+1
*            & PRINT INFORMATION
*            & MOVE # OF BLOCKS AND WORDS HEAD TO OUTPUT BUFFER 
          LDA  ACHD6
          LDB  AW11 
          JSB  .MVW 
          DEF  D11
          NOP 
*            & MOVE THE TOTAL (3 DIGITS)
          LDA  NBLCK
          JSB  CNVTD
          DEF  W8 
          LDA  "BU" 
          STA  W8 
          LDA  W9 
          AND  B377 
          IOR  "["
          STA  W9 
*            CNUMD(TBLCK,HOLD1);
          LDA  TBLCK
          JSB  CNVTD
          DEF  HOLD1
*            MOVE(HOLD2,W16,4); 
          DLD  HOLD2
          DST  W16
* 
          JSB  PRINT
          DEF  BUFR 
D22       DEC  22 
*            FILL(BUFR,BLANK);
          JSB  BFILL
*            END
*          ELSE INTON;
          JMP  L457 
L456      JSB  $LIBX
          DEF  *+1
          DEF  *+1
*         IF (TWORD AND @40000)=0 THEN
L457      LDA  TWORD
          AND  B40K 
          SZA 
          JMP  L461 
*            W8 := "AL"  & ALLOCATED
*          ELSE 
          LDA  "AL" 
          STA  W8 
          JMP  L476 
*            BEGIN
*            W8 := "GT"; & GET
L461      LDA  "GT" 
          STA  W8 
*            & SOMEONE MUST BE WAITING ON THIS CLASS'S GET
      LDA $ID#      SET UP LOOP TO SEARCH ALL ID SEGMENTS,
      CMA,INA         LOOKING FOR ONE WITH ADDRESS OF CLASS 
      STA PRINT        NUMBER IN 1ST TEMP WORD
      LDA $IDA           STORE POINTER TO ID SEGMENTS 
      STA LINK
*            WHILE IGET(LINK+1)#ENTRY DO
L465      LDA  LINK 
      INA 
      LDA A,I 
      CPA ENTRY     MATCH ADDRESS OF CLASS # ENTRY? 
      RSS 
      JMP L475      NO
      LDA LINK      YES, MOVE PROGRAM NAME
      ADA D12 
      CLE,ELA       CONVERT TO BYTE ADDRESS 
      LDB AW11
      CLE,ELB 
      JSB .MBT      MOVE PROGRAM NAME 
      DEF D5
      NOP 
      JMP L476
* 
L475  EQU * 
      LDA LINK      ADVANCE TO NEXT ID SEGMENT
      ADA $IDSZ 
      STA LINK
      ISZ PRINT     END OF LOOP?
      JMP L465      NO, CONTINUE
      JMP L476      YES, PRINT
*            END; 
L476  EQU * 
*         I := 18;  & OUTPUT BUFFER POINTER 
          LDA  D18
          STA  I
*         & PRINT LINE OF INFORMATION FOR THIS CLASS
          LDA  I
          STA  T4 
          JSB  PRINT
          DEF  BUFR 
T4        DEC  0
*         END;
*      END; 
L497      LDA  ENTRY
          INA 
          STA  ENTRY
          JMP  L424 
*   IF AVLBL=TSIZE THEN 
L498      LDA  TSIZE
          CMA,INA 
          ADA  AVLBL
          SZA 
          JMP  L502 
* 
          JSB  PRINT
          DEF  NONE 
          DEC  7
*    ELSE 
          JMP  L507 
*      BEGIN  & PRINT NUMBER OF AVAILABLE CLASSES 
*      BLINE; 
L502      JSB  BLINE
*      CNUMD(AVLBL,CHED5);
          LDA  AVLBL
          JSB  CNVTD
          DEF  CHED5
* 
          JSB  PRINT
          DEF  CHED5
          DEC  12 
*      END; 
*   BLINE;
L507      JSB  BLINE
*   END OF CLASS; 
          JMP  CLASS,I
          SPC  3
IDNUM     BSS  1     INDEX INTO KEYWORD TABLE 
NONE      ASC  7,        <NONE> 
      HED DSINF: PRINT DS/1000 VALUES * (C) HEWLETT-PACKARD CO. 
*PROCEDURE VALUS; 
*   BEGIN 
* 
*   COMMENT 
*   +------------------------+
*   !  PRINT DS/1000 VALUES  !
*   +------------------------+; 
* 
*     HEADINGS: 
VHED1     ASC  8, DS/1000 VALUES: 
VHED2     ASC 20,  RESOURCE NUMBERS:     OWNER     LOCKER 
VHED3     ASC 13,  MAXIMUM HOP COUNT
VHD19     ASC 14,  MAX LINK DOWN COUNT
VHED4     ASC 11,  PROGL MESSAGE LU 
VHED5     ASC  9,  UPGRADE LEVEL
APMSG     ASC 11,  LAST APLDR LOAD-NODE 
APNOD     ASC  3, NONE
VHD17     ASC 16,  CLASSES ASSIGNED TO PROGRAMS:
VHD12     ASC 12,  TIMEOUT VALUES (SEC):
VHD13     ASC 13,    MASTER T/O 
VHD14     ASC 13,    SLAVE T/O
VHD15     ASC 13,    REMOTE BUSY RETRIES
VHD16     ASC 13,    REMOTE QUIET WAIT
VHD18     ASC 13,    MAX RETRY DELAY
VHED7     ASC 15,         RFA FILES MAY BE OPEN 
      IFZ      ** SPACE SAVER **
VHED9     ASC 15,  HP 3000 IS ON LU     *DOWN*
VHD20     ASC 12,      BUFFER SIZE XXXXXX 
VHD10     ASC 21,      LOCAL  ID SEQUENCE:
VHD11     ASC 21,      REMOTE ID SEQUENCE:
      XIF      ** END SPACE SAVER **
* 
* TABLES FOR RESOURCE NUMBER INFORMATION: 
* 
RNTAB     DEF  *+1,I
          DEF  #MARN
          DEF  #PLOG+1
          DEF  #TRCN
          DEF  #CLRN
          DEF  #QZRN
          DEF  #QRN 
          DEF  #TBRN
NUMRN     ABS  RNTAB+1-*
* 
RNDES     DEF  *+1
          ASC  8,MA TABLE ACCESS
          ASC  8,PLOG SYNCH.
          ASC  8,TRC65 TRACE
          ASC  8,QUEX CLEANUP 
          ASC  8,QUEZ "LISTEN"
          ASC  8,QUIESCENT
          ASC  8,TCB ACCESS 
* 
* TABLES FOR I/O CLASS INFORMATION: 
* 
CLTAB     DEF  *+1,I    I/O CLASSES 
          DEF  #MAHC
          DEF  #TRCL
          DEF  #PLOG
          DEF  #RSM 
          DEF  #OTCV
          DEF  #INCV
          DEF  #QCLM
          DEF  #RTRY
          DEF  #GRPM
          DEF  #RPCV
          DEF  #RQCV
          DEF  #QXCL
NUMCL     ABS  CLTAB+1-*
* 
CLPRG     DEF  *+1      PROGRAM NAMES 
          ASC  3, M. A. 
          ASC  3,TRC65
          ASC  3,PLOG 
          ASC  3,RSM
          ASC  3,OTCNV
          ASC  3,INCNV
          ASC  3,QCLM 
          ASC  3,RTRY 
          ASC  3,GRPM 
          ASC  3,RPCNV
          ASC  3,RQCNV
          ASC  3,QUEX 
* 
B377      OCT  377
UPMSK     OCT  177400 
PERID     BYT  56,0     PERIOD, LEFT BYTE 
MASK2     OCT  177760 
D5        DEC  5
D26       DEC  26 
      IFZ      ** SPACE SAVER **
AVH10     DBL  VHD10+13 
AVH11     DBL  VHD11+13 
      XIF      ** END SPACE SAVER **
DRNTB     DEF  $RNTA
RN        BSS  1
FMTAD     BSS  1
POINT     BSS  1
CNTR      BSS  1
GLBAL     ASC  5, <GLOBAL>
AGLBL     DEF  GLBAL
AW3       DEF  W3 
* 
*   PROCEDURE RNOUT(RN,FMTAD);
RNOUT     BSS  01 
*      VALUE RN,FMTAD; INTEGER RN,FMTAD;
*      BEGIN  & PRINT RN INFORMATION
          AND  B377     ISOLATE RESOURCE
          STA  RN        NUMBER.
          LDB  RNOUT,I
          ISZ  RNOUT
          STB  FMTAD
          SZA,RSS       IF RN NOT ASSIGNED, 
          JMP  RNOUT,I     RETURN.
*      FILL(BUFR,BLANK);
          JSB  BFILL
*      & MOVE TITLE 
          LDA  FMTAD
          LDB  AW3
          JSB  .MVW 
          DEF  D8 
          NOP 
*      & CONVERT RN NUMBER
*      W11 := KCVT(RN); 
          LDA  RN 
          JSB  KCVT1
          STA  W11
*      & FIND LOCKER
*      TWORD := IGET(TADDR+RN); 
          LDA  TADDR
          ADA  RN 
          LDA  A,I
          STA  TWORD
*      IF (IDNUM := TWORD AND @377)=@377 THEN 
          AND  B377 
          STA  IDNUM
          CPA  B377 
          RSS 
          JMP  L548 
*         & MOVE "<GLOBAL>" 
          LDA  AGLBL
          LDB  AW17 
          JSB  .MVW 
          DEF  D5 
          NOP 
*       ELSE IF IDNUM=0 THEN
          JMP  L553 
L548      LDA  IDNUM
          SZA 
          JMP  L551 
*         & MOVE "<NONE>" 
          JSB  .DFER
AW18      DEF  W18
          DEF  NONE+4 
*       ELSE
          JMP  L553 
*         & MOVE THE PROGRAM NAME 
L551      CCA 
          ADA  IDNUM
          MPY  $IDSZ
          ADA  $IDA 
          ADA  D12
          CLE,ELA 
          LDB  AW18 
          CLE,ELB 
          JSB  .MBT 
          DEF  D5 
          NOP 
*      & FIND OWNER 
*      IF (IDNUM := ROTATE(TWORD) AND @377)=@377 THEN 
L553      LDA  TWORD
          ALF,ALF 
          AND  B377 
          STA  IDNUM
          CPA  B377 
          RSS 
          JMP  L555 
*         & MOVE "<GLOBAL>" 
          LDA  AGLBL
          LDB  AW11 
          INB 
          JSB  .MVW 
          DEF  D5 
          NOP 
*       ELSE IF IDNUM=0 THEN
          JMP  L560 
L555      LDA  IDNUM
          SZA 
          JMP  L558 
*         & MOVE "<NONE>" 
          JSB  .DFER
AW13      DEF  W13
          DEF  NONE+4 
*       ELSE
          JMP  L560 
*         & MOVE THE PROGRAM NAME 
L558      CCA 
          ADA  IDNUM
          MPY  $IDSZ
          ADA  $IDA 
          ADA  D12
          CLE,ELA 
          LDB  AW13 
          CLE,ELB 
          JSB  .MBT 
          DEF  D5 
          NOP 
*      & PRINT INFORMATION
L560      JSB  PRINT
          DEF  BUFR 
D21       DEC  21 
*      END OF RNOUT;
          JMP  RNOUT,I
AW17      DEF  W17
* 
* SUBROUTINE TO PRINT CLASS NUMBER AND ASSIGNED PROGRAM NAME. 
*  CALLING SEQUENCE: <PRGM POINTS TO PROGRAM NAME>
*                    LDA  <CLASS NUMBER>
*                    JSB  PRCLS 
* 
PRCLS     NOP           ENTRY.
          AND B377      ISOLATE NUMBER. 
          SZA,RSS       IF NOT ALLOCATED, 
          JMP PRCLS,I     RETURN. 
          JSB CNVTD     CONVERT TO
AW1       DEF W1         ASCII DECIMAL. 
          JSB .DFER     MOVE
          DEF W5         PROGRAM
PRGM      NOP             NAME. 
          JSB PRINT     PRINT 
          DEF BUFR       INFORMATION. 
          DEC 7 
          JMP PRCLS,I   RETURN. 
* 
*   & PRINT HEADINGS
VALUS     NOP 
*   BLINE;
          JSB  BLINE
* 
          JSB  PRINT
          DEF  VHED1
          DEC  8
*   BLINE;
          JSB  BLINE
*   & RESOURCE NUMBERS
          JSB  PRINT
          DEF  VHED2
          DEC  20 
*   GETRN(TADDR,TSIZE); 
          LDA  DRNTB    GET RN TABLE ADDRESS
          LDA  A,I
          JSB  INDR      CHASE INDIRECT ADDRESS 
          STA  TADDR
          LDA  A,I      GET NUMBER OF ENTRIES 
          STA  TSIZE
*   PRINT ASSIGNED RESOURCE NUMBER INFORMATION
          LDA  RNDES    SET UP
          STA  DESCR     DESCRIPTION POINTER. 
          LDA  RNTAB    SET UP RESOURCE 
          STA  POINT     NUMBER POINTER.
          LDA  NUMRN    SET UP LOOP 
          STA  CNTR      COUNTER. 
* 
RLOOP     LDA  POINT,I  PRINT RN
          JSB  RNOUT     INFORMATION. 
DESCR     DEF  *-*
          ISZ  POINT    BUMP
          LDA  DESCR     POINTERS.
          ADA  D8 
          STA  DESCR
          ISZ  CNTR     IF MORE RNS,
          JMP  RLOOP     STAY IN LOOP.
* 
*   BLINE;
          JSB  BLINE
*   ASSIGNED I/O CLASSES
          JSB  PRINT    PRINT 
          DEF  VHD17     HEADING. 
B20       DEC  16 
          LDA  CLPRG    SET UP PROGRAM
          STA  PRGM      NAME POINTER.
          LDA  CLTAB    SET UP CLASS
          STA  POINT     NUMBER POINTER.
          LDA  NUMCL    SET UP LOOP 
          STA  CNTR      COUNTER. 
          JSB  BFILL
* 
CLOOP     LDA  POINT,I  PRINT CLASS 
          JSB  PRCLS     INFORMATION. 
          ISZ  POINT    BUMP
          LDA  PRGM      POINTERS.
          ADA  D3 
          STA  PRGM 
          ISZ  CNTR     IF MORE CLASSES,
          JMP  CLOOP     STAY IN LOOP.
          JSB  BLINE
*   & TIMEOUT VALUES
          JSB  PRINT
          DEF  VHD12
          DEC  12 
*   CNUMD(-(MSTO OR @177400)*5,VHD13[10]);
          LDA  #MSTO
          IOR  UPMSK
          CMA,INA 
          MPY  D5 
          JSB  CNVTD
          DEF  VHD13+10 
* 
          JSB  PRINT
          DEF  VHD13
D13       DEC  13 
*   CNUMD(-(SVTO OR @177400)*5,VHD14[10]);
          LDA  #SVTO
          IOR  UPMSK
          MPY  D5 
          CMA,INA 
          JSB  CNVTD
          DEF  VHD14+10 
* 
          JSB  PRINT
          DEF  VHD14
          DEC  13 
*   HOLD1 := KCVT(NOT(ROTATE(BREJ) OR @177760));
          LDA  #BREJ
          ALF,ALF 
          IOR  MASK2
          CMA 
          JSB  KCVT1
          STA  VHD15+12 
* 
          JSB  PRINT
          DEF  VHD15
          DEC  13 
*   CNUMD(-WAIT,HOLD1); 
          LDA  #WAIT
          CMA,INA 
          JSB  CNVTD
          DEF  HOLD1
*   MOVII(AHLD2,FADDRESS(VHD16)+12,4);
          LDA  HOLD2
          STA  VHD16+11 
          LDA  HOLD3
          STA  VHD16+12 
* 
          JSB  PRINT
          DEF  VHD16
          DEC  13 
* 
          LDA  #RDLY    GET MAX RETRY DELAY.
          CMA,INA 
          JSB  CNVTD
          DEF  VHD18+10 
          DLD  VHD18+10 INCLUDE 
          AND  B377      DECIMAL PT.
          IOR  PERID
          RRL  8        ROTATE INTO POSITION. 
          DST  VHD18+10 STORE.
          JSB  PRINT
          DEF  VHD18
          DEC  13 
* 
*   BLINE;
          JSB  BLINE
* 
*  MAXIMUM HOP COUNT
          LDA  #MHCT
          CMA,INA 
          JSB  CNVTD
          DEF  VHED3+10 
          JSB  PRINT
          DEF  VHED3
          DEC  13 
*  MAXIMUM LINK DOWN COUNT
          LDA  #MDCT
          CMA,INA 
          JSB  CNVTD
          DEF  VHD19+11 
          JSB  PRINT
          DEF  VHD19
          DEC  14 
*  PROGL MESSAGE LU 
          LDA  #PRLU
          JSB  CNVTD
          DEF  HOLD1
          DLD  HOLD2
          DST  VHED4+9
          JSB  PRINT
          DEF  VHED4
          DEC  11 
* 
*  APLDR DOWN-LOAD NODE 
      LDA #LNOD     GET THE DOWN-LOAD NODE NUMBER.
      CPA DM1       IF IT HAS NOT BEEN USED,
      JMP PRAPM      THEN IGNORE THE CONVERSION.
      JSB CNVTD     CONVERT TO ASCII, 
      DEF APNOD      AND CONFIGURE THE MESSAGE. 
PRAPM JSB PRINT     PRINT <APLDR> NODE NUMBER (OR "NONE").
      DEF APMSG 
      DEC 14
* 
*  UPGRADE LEVEL
DOLVL     LDA  #LEVL
          JSB  KCVT1
          STA  VHED5+8
          JSB  PRINT
          DEF  VHED5
          DEC  9
* 
*   & NUMBER OF FILES WHICH MAY BE OPEN AT ONCE 
*   CNUMD(RFSZ,VHED7[2]); 
          LDA  #RFSZ
          JSB  CNVTD
          DEF  VHED7+1
* 
          JSB  PRINT
          DEF  VHED7
          DEC  15 
* 
      IFZ      ** SPACE SAVER **
*   & CHECK FOR HP3000 AGAIN
*   IF LU3K#0 THEN
          LDA  #LU3K
          SZA,RSS 
          JMP  L611 
*      BEGIN
*      BLINE; 
          JSB  BLINE
*      & HP3000 LU
*      VHED9[10] := KCVT(LU3K); 
          LDA  #LU3K
          JSB  CNVTD
          DEF  HOLD1
          DLD  HOLD2
          DST  VHED9+9
          LDB  D11      IF SIGN BIT 
          LDA  #QXCL     SET IN QUEX
          SSA             CLASS WORD, 
          LDB  D15          INCLUDE "DOWN". 
          STB  QLULN
* 
          JSB  PRINT
          DEF  VHED9
QLULN     DEF  *-*
*      & BUFFER SIZE
          LDA  D$BSZ
          JSB  CNVTD
          DEF  VHD20+9
          JSB  PRINT
          DEF  VHD20
          DEC  12 
*      & LOCAL ID SEQUENCE
          LDA  D$LID    LOCAL ID POINTER IN "RES" 
          LDB  A,I      B := NUMBER OF CHARACTERS 
          STB  I        STORE IN I
          SZB,RSS       IF # 0
          JMP  L603 
          INA             A := ADDR OF CHARACTERS 
          CLE,ELA         CHANGE TO BYTE ADDR 
          LDB  AVH10      B := DEST ADDRESS 
          JSB  .MBT 
          DEF  I          MOVE CHARACTERS 
          NOP 
L603      LDA  I        A := NUMBER OF CHARACTERS 
*      IF I>0 THEN
          SZA 
          SSA 
          JMP  L607 
*         PRINT(VHD10,26+I);
          ADA  D26
          CMA,INA 
          STA  T3 
          JSB  PRINT
          DEF  VHD10
T3        DEC  0
*      & REMOTE ID SEQUENCE 
L607      LDA  D$RID    GET REMOTE POINTER IN "RES" 
          INA 
          LDB  A,I      B := NUMBER OF CHARACTERS 
          STB  I        STORE IN I
          SZB,RSS       IF # 0, 
          JMP  L603A
          INA             A := ADDR OF CHARACTERS 
          CLE,ELA         CHANGE TO BYTE ADDR 
          LDB  AVH11      B := DESTINATION ADDR 
          JSB  .MBT 
          DEF  I          MOVE CHARACTERS 
          NOP 
L603A     LDA  I        A := NUMBER OF CHARACTERS 
*      IF I>0 THEN
          SZA 
          SSA 
          JMP  L611 
*         PRINT(VHD11,26+I);
          ADA  D26
          CMA,INA 
          STA  T7 
          JSB  PRINT
          DEF  VHD11
T7        DEC  0
      XIF      ** END SPACE SAVER **
*      END; 
*   BLINE;
L611      JSB  BLINE
*END OF VALUS;
          JMP  VALUS,I
      HED DSINF: DUMP CONTENTS OF DS SAM BLOCK * (C) HEWLETT-PACKARD CO.
*PROCEDURE DUMP;
*   BEGIN 
* 
*   COMMENT 
*   +--------------------------------------+
*   !  DUMP CONTENTS OF DS/1000 SAM BLOCK  !
*   +--------------------------------------+; 
* 
*   INTEGER BADDR,    & DUMP BEGINNING ADDRESS
BADDR     BSS  01 
*           EADDR,    & DUMP ENDING ADDRESS 
EADDR     BSS  01 
*           INCR;     & ADDRESS INCREMENT 
INCR      BSS  01 
* 
DHED1     ASC  9, DUMP OF TCB BLOCK 
DHED2     ASC 25,    LOC        OCTAL CONTENTS OF LOC THROUGH LOC+6 
DHED3     ASC 20, DUMP OF HP3000 TRANSACTION STATUS TABLE 
PLUS5     ASC  1,+5 
PLUS6     ASC  1,+6 
* 
D33       DEC  33 
DM1       DEC  -1 
*   PROCEDURE DODMP;
DODMP     BSS  01 
*      BEGIN
*      FILL(BUFR,BLANK);
          JSB  BFILL
*      FOR I := BADDR STEP INCR UNTIL EADDR DO
          LDA  BADDR
          STA  I
L637      CMA,INA 
          ADA  EADDR
          LDB  INCR 
          SSB 
          CMA,INA 
          SSA 
          JMP  L647 
*         BEGIN 
*         & CONVERT ADDRESS 
*         CNUMO(I,W2);
          LDA  I
          JSB  CNVTO
          DEF  W2 
*         FOR J := 0 TO INCR-1 DO 
          CLA 
          STA  J
          CCB 
          ADB  INCR 
          STB  T1 
L641      CMA,INA 
          ADA  T1 
          SSA 
          JMP  L645 
*            & CONVERT CONTENTS 
*            CNUMO(SAM[I+J-FWAM],BUFR[7+4*J]);
          LDA  I
          ADA  J
          CMA 
          ADA  #FWAM
          CMA 
          JSB  .CAX 
          JSB  .LAX 
          DEF  SAM
          LDB  J
          RBL,RBL 
          ADB  D6 
          ADB  AW1
          STB  T8 
          JSB  CNVTO
T8        DEF  *-*
          LDA  J
          INA 
          STA  J
          JMP  L641 
*         & PRINT 
L645      JSB  PRINT
          DEF  BUFR 
LEN1      NOP 
*         END;
          LDA  I
          ADA  INCR 
          STA  I
          JMP  L637 
*      BLINE; 
L647      JSB  BLINE
*      END OF DODMP;
          JMP  DODMP,I
* 
*   & GET DS/1000 SAM BLOCK 
DUMP      NOP 
*   GTSAM(SAM[0],SSIZE,PNTR[-3]); 
          JSB  GTSAM
*   SAMIN := TRUE;
          CCA 
          STA  SAMIN
*   BLINE;
          JSB  BLINE
*   & DUMP TCB AREA IN SAM
          JSB  PRINT
          DEF  DHED1
D9        DEC  9
* 
          LDA  PLUS5
          STA  DHED2+24 
          JSB  PRINT
          DEF  DHED2
          DEC  25 
*   & SET UP START, STOP, AND INCREMENT OF ADDRESS
*   BADDR := FWAM;
          LDA  #FWAM
          STA  BADDR
*   EADDR := (IF TST#0 THEN TST ELSE NRV) - 1;
          LDA  #TST 
          SZA,RSS 
          LDA  #NRV 
          ADA  DM1
          STA  EADDR
*   INCR := 6;
          LDA  D6 
          STA  INCR 
          LDA  D29       SET LEN1 
          STA  LEN1       TO 29.
*   DODMP;
          JSB  DODMP
      IFZ      ** SPACE SAVER **
*   & HP3000 CONNECTED? 
*   IF LU3K#0 THEN
          LDA  #LU3K
          SZA,RSS 
          JMP  L674 
*      BEGIN
*      & DUMP TST AREA IN SAM 
* 
          JSB  PRINT
          DEF  DHED3
          DEC  20 
* 
          LDA  PLUS6
          STA  DHED2+24 
          JSB  PRINT
          DEF  DHED2
          DEC  25 
*      & SET UP START, STOP, AND INCREMENT OF ADDRESS 
*      BADDR := TST;
          LDA  #TST 
          STA  BADDR
*      EADDR := FWAM + SSIZE - 1; 
          CCA 
          ADA  #FWAM
          ADA  SSIZE
          STA  EADDR
*      INCR := 7; 
          LDA  D7 
          STA  INCR 
          LDA  D33       SET LEN1 
          STA  LEN1       TO 33.
*      DODMP; 
          JSB  DODMP
*      END; 
      XIF      ** END SPACE SAVER **
*   END OF DUMP;
L674      JMP  DUMP,I 
      HED DSINF: PRINT DS/1000 LISTS * (C) HEWLETT-PACKARD CO.
*PROCEDURE LISTS; 
*   BEGIN 
* 
*   COMMENT 
*   +----------------------------------+
*   !  PRINT DS/1000 LIST INFORMATION  !
*   +----------------------------------+; 
* 
*   INTEGER COUNT,       & # OF ENTRIES IN A LIST 
COUNT     BSS  01 
*           STCB,        & # OF SLAVE TCB ENTRIES 
STCB      BSS  01 
*           HEAD,        & LIST HEAD
HEAD      BSS  01 
*           NEXT;        & NEXT LIST ELEMENT
NEXT      BSS  01 
* 
LHED1     ASC  7, DS/1000 LISTS 
LHED2     ASC 20,         ENTRIES IN MASTER REQUEST LIST, 
          ASC  9, STARTING AT 
LHED3     ASC 24,  ACTIVE SLAVE MONITORS:                1ST TCB
LHED4     ASC 24,      STREAM  CLASS  MONITOR  ENTRIES  LOCATION
LHED5     ASC 24,         ENTRIES IN NULL LIST, STARTING AT 
LHED7     ASC 20,         ENTRIES IN PROCESS NUMBER LIST, 
          ASC  9, STARTING AT 
LHED8     ASC 16,         ENTRIES IN SLAVE LISTS
LHED9     ASC 14,        PROG  CLASS  T/O CTR 
LHD10     ASC 10,        PROG  LOGLU
BAW5      DBL  W5 
NOT15     OCT  77777
D2        DEC  2
D19       DEC  19 
D39       DEC  39 
RSTAR     ASC  1, * 
* 
*   PROCEDURE CHASE;
CHASE     BSS  01 
*      BEGIN
*      COMMENT   CHASE A LIST TO ITS END; 
*      COUNT := 0;
          CLA 
          STA  COUNT
*      WHILE NEXT#0 DO
L705      LDA  NEXT 
          SZA,RSS 
*         BEGIN 
          JMP  L710 
*         NEXT := SAM[NEXT-FWAM]; 
          LDA  #FWAM
          CMA,INA 
          ADA  NEXT 
          JSB  .CAX 
          JSB  .LAX 
          DEF  SAM
          STA  NEXT 
*         COUNT := COUNT + 1; 
          ISZ  COUNT
* 
          LDA  LFLAG     LONG FORMAT? 
          SZA,RSS        NO-- 
          JMP  L705        GET NEXT.
* 
          JSB  BFILL
          JSB  .ISX      GET TCB
          JSB  .LAX       WORD 1. 
          DEF  SAM
          AND  B377      ISOLATE TIMEOUT. 
          CMA,INA        SUBTRACT FROM
          ADA  B377       OCTAL 377.
          MPY  D5        MULTIPLY BY 5. 
          STA  T1        SAVE.
      IFZ      ** SPACE SAVER **
          LDB  RSTAR
          JSB  .LAX 
          DEF  SAM       GET WORD 1.
          RAL            IF "HP 3000" 
          SSA             BIT IS SET, 
          STB  W4            STORE "*". 
      XIF      ** END SPACE SAVER **
          JSB  .ISX      GET TCB
          JSB  .ISX       WORD 3. 
          JSB  .LAX 
          DEF  SAM       ISOLATE
          AND  B377       CLASS #/LOG LU. 
          STA  T2        SAVE.
          JSB  .ISX      POINT TO WORD 4. 
          JSB  .LAX 
          DEF  SAM       GET ID SEG ADDR. 
          ADA  D12       POINT TO 
          CLE,ELA         NAME (BYTE).
          LDB  BAW5      GET DESTINATION. 
          JSB  .MBT 
          DEF  D5        MOVE 5 CHARACTERS. 
          NOP 
          LDA  T1        CONVERT T/O
          JSB  CNVTD      CNTR OR DEST. NODE
          DEF  W11         TO DECIMAL.
          LDA  T2        CONVERT
          JSB  CNVTD      CLASS NUMBER OR LU
          DEF  HOLD1       TO DECIMAL.
          DLD  HOLD2
          DST  W8 
          JSB  PRINT     PRINT LINE OF
          DEF  BUFR       INFORMATION.
LFLAG     NOP 
* 
*         END;
          JMP  L705 
*      END; 
L710      LDA  COUNT     PUT COUNT IN A-REG.
          JMP  CHASE,I   RETURN.
* 
* 
LISTS     NOP 
*   & PRINT HEADINGS
*   BLINE;
          JSB  BLINE
* 
          JSB  PRINT
          DEF  LHED1
D7        DEC  7
*   BLINE;
          JSB  BLINE
*   & DO WE NEED TO GET SAM AND POINTERS? 
*   IF NOT SAMIN THEN 
          LDA  SAMIN
          SSA 
          JMP  L721 
*      GTSAM(SAM[0],SSIZE,PNTR[-3]);
          JSB  GTSAM
*   & CHECK OUT MASTER REQUEST LIST 
*   HEAD := NEXT := PNTR[-1]; 
L721      LDA  PNTR-1 
          STA  NEXT 
          STA  HEAD 
          CLA            CLEAR "LONG" 
          STA  LFLAG      FLAG (FOR CHASE). 
*   CHASE;
          JSB  CHASE
*   CNUMD(COUNT,LHED2[1]);
          JSB  CNVTD
          DEF  LHED2+1
*   CNUMO(HEAD,LHED2[26]);
          LDA  HEAD 
          JSB  CNVTO
          DEF  LHED2+26 
*   PRINT(LHED2,39+19*SIGN(HEAD));
          LDB  D39
          LDA  HEAD 
          SZA 
          ADB  D19
          CMB,INB 
          STB  T2 
          JSB  PRINT
          DEF  LHED2
T2        DEC  0
* 
          LDA  HEAD      GET HEAD OF LIST.
          SZA,RSS        IF NOTHING THERE,
          JMP  PRBL1       SKIP THE 2ND CHASE.
          STA  NEXT      SET UP CHASE POINTER.
          JSB  PRINT     PRINT
          DEF  LHED9      HEADING.
D14       DEC  14 
          LDA  D13       SET "LONG" 
          STA  LFLAG      FLAG (FOR CHASE). 
          JSB  CHASE     DO "LONG" CHASE. 
* 
*   BLINE;
PRBL1     JSB  BLINE
*   & CHECK SLAVE STREAMS 
          CLA            CLEAR "LONG" 
          STA  LFLAG      FLAG (FOR CHASE). 
          JSB  PRINT
          DEF  LHED3
          DEC  24 
          JSB  PRINT
          DEF  LHED4
          DEC  24 
*   STCB := 0;
          CLA 
          STA  STCB 
*   FOR I := 0 TO LSTRM DO
          CLA 
          STA  I
L733      CMA,INA 
          ADA  NOSTR
          SSA 
          JMP  L753 
*      BEGIN
*      HEAD := IGET(LDEF+2+I);
          LDA  #LDEF
          ADA  D2 
          ADA  I
          LDA  A,I
          STA  HEAD 
*      NEXT := PNTR[I]; 
          JSB  .LDX 
          DEF  I
          JSB  .LAX 
          DEF  PNTR 
          STA  NEXT 
*          FILL(BUFR,BLANK);
          JSB  BFILL
*         &  GET MONITOR NAME FROM ID SEGMENT 
          LDA  HEAD 
          ADA  D2 
          LDB  A,I
*             (CHECK FOR INACTIVE MONITOR:) 
          SZB,RSS 
          JMP  L751A
          LDB  AW11 
          JSB  .MVW 
          DEF  D3 
          NOP 
*  TURN OFF POSSIBLE "NO-ABORT" BIT 
          LDA  W11
          AND  NOT15
          STA  W11
*         W5 := KCVT(I);  & STREAM NUMBER 
          LDA  I
          JSB  KCVT1
          STA  W5 
*         W9 := KCVT(IGET(HEAD+1) AND @377);  & CLASS NUMBER
          LDA  HEAD 
          INA 
          LDA  A,I
          AND  B377 
          JSB  CNVTD
          DEF  W7 
*      IF NEXT>0 THEN 
          LDA  NEXT 
          SZA 
          SSA 
          JMP  L751 
*         BEGIN 
*         & WE HAVE AN ACTIVE STREAM
*         CNUMO(NEXT,W21);  & STARTING LOCATION 
          JSB  CNVTO
          DEF  W21
*         CHASE;
          JSB  CHASE
*         CNUMD(COUNT,W16);  & NUMBER OF ENTRIES
          JSB  CNVTD
          DEF  W16
* 
          JSB  PRINT
          DEF  BUFR 
          DEC  23 
*         STCB := STCB + COUNT; 
          LDA  STCB 
          ADA  COUNT
          STA  STCB 
          JMP  L751A
*         END;
*  EMPTY SLAVE LIST-- W18:="0"
L751      LDA  "0"
          STA  W18
          JSB  PRINT
          DEF  BUFR 
          DEC  18 
*** 
*      END; 
L751A     LDA  I
          INA 
          STA  I
          JMP  L733 
*   & TOTAL NUMBER OF SLAVE TCBS
*      CNUMD(STCB,LHED8[1]);
L753      LDA  STCB 
          JSB  CNVTD
          DEF  LHED8+1
* 
          JSB  PRINT
          DEF  LHED8
          DEC  16 
*   BLINE;
          JSB  BLINE
*   & NULL LIST 
*   HEAD := NEXT := PNTR[-2]; 
          LDA  PNTR-2 
          STA  NEXT 
          STA  HEAD 
*   CHASE;
          JSB  CHASE
*   CNUMD(COUNT,LHED5[1]);
          JSB  CNVTD
          DEF  LHED5+1
*   CNUMO(HEAD,LHED5[21]);
          LDA  HEAD 
          JSB  CNVTO
          DEF  LHED5+21 
*   PRINT(LHED5,29+19*SIGN(HEAD));
          LDB  D29
          LDA  HEAD 
          SZA 
          ADB  D19
          CMB,INB 
          STB  T5 
          JSB  PRINT
          DEF  LHED5
T5        DEC  0
*      & PROCESS NUMBER LIST
*      HEAD := NEXT := PNTR[-3];
          LDA  PNTR-3 
          STA  NEXT 
          STA  HEAD 
*      CHASE; 
          JSB  CHASE
*      CNUMD(COUNT,LHED7[1]); 
          JSB  CNVTD
          DEF  LHED7+1
*      CNUMO(HEAD,LHED7[26]); 
          LDA  HEAD 
          JSB  CNVTO
          DEF  LHED7+26 
*      PRINT(LHED7,39+19*SIGN(HEAD)); 
          LDB  D39
          LDA  HEAD 
          SZA 
          ADB  D19
          CMB,INB 
          STB  T6 
          JSB  PRINT
          DEF  LHED7
T6        DEC  0
* 
          LDA  HEAD      GET HEAD OF LIST.
          SZA,RSS        IF NOTHING THERE,
          JMP  PRBL2       SKIP THE 2ND CHASE.
          STA  NEXT      SET UP CHASE POINTER.
          JSB  PRINT     PRINT
          DEF  LHD10      HEADING 
          DEC  10 
          LDA  D10       SET "LONG" 
          STA  LFLAG      CHASE FLAG. 
          JSB  CHASE     DO THE CHASE.
* 
*   BLINE;
PRBL2     JSB  BLINE
*   SAMIN := FALSE; 
          CLA 
          STA  SAMIN
*   END OF LISTS; 
          JMP  LISTS,I
      HED DSINF: PRINT DVT INFORMATION * (C) HEWLETT-PACKARD CO.
*PROCEDURE LUTS;
* 
*   COMMENT 
*   +----------------------------------+
*   !  PRINT CONTENTS OF DS/1000 LUS   !
*   +----------------------------------+; 
* 
*   BEGIN 
* 
EHED3     ASC 10,  LU #    , TYPE 
EHED4     ASC 18,   WORD  VALUE  MEANING
          ASC 11, WORD  VALUE  MEANING
BLANK     EQU  EHED4
EHED6     ASC 12,   PARAMETERS/STATISTICS 
EHED7     ASC 13,   FLAG BITS (DVT WORD 30) 
* 
*   & DVT WORDS DESCRIPTIONS--20 CHARACTERS EACH
ADV1      DEF *+1 
          ASC 10,DVT LINK WORD
          ASC 10,Q!RQST INITIATION LIST 
          ASC 10,N!CIRCULAR NODE LIST 
          ASC 10,P!CIRCULAR DVT LIST
          ASC 10,X!IFT REFERENCE
          ASC 10,AV!TYPE!STATUS 
          ASC 10,SYSTEM FLAGS!LU LOCK!A!RS
          ASC 10,B!BUFFER ACCUM.
          ASC 10,S! HL-LL/16! LL/16 
          ASC 10,RESERVED 
          ASC 10,T.O. LIST
          ASC 10,DEVICE T.O. VALUE
          ASC 10,I/F T.O. VALUE 
          ASC 10,DEVICE DVR ADDR
          ASC 10,TY!E!Z!SUBFN!RQ
          ASC 10,RQ.PARM/ERR CODE 
          ASC 10,RQST PARAM2/XLOG 
          ASC 10,RQST PARAM3/EXT STAT1
          ASC 10,RQST PARAM4/EXT STAT2
          ASC 10,RETRY CNTR/READ PNTR 
          ASC 10,1ST READ LEN/SKIP CT 
          ASC 10,2ND READ LEN/READ CT 
          ASC 10,READY FRAME LENGTH 
          ASC 10,WRITE POINTER
          ASC 10,WRITE BUFFERS LENGTH 
          ASC 10,MAX PSI FRAME SIZE 
          ASC 10,NUM OUTPUT BUFFERS 
          ASC 10,READ CONT ADDRESS
          ASC 10,WRITE CONT ADDRESS 
          ASC 10,FLAG BITS* 
          ASC 10,MISCELLANEOUS BITS 
* 
* 
*     DESCRIPTION OF PARAMETERS & ERROR STATISTICS
* 
ADESC DEF *+1 
      ASC 10,GOOD I-FRAMES RCVD 
      ASC 10,RR FRAMES RECEIVED 
      ASC 10,RNR FRAMES RECEIVED
      ASC 10,REJECT FRAMES RCVD 
      ASC 10,RCV PROC OVERRUNS
      ASC 10,CRC ERRORS 
      ASC 10,ABORT SEQ. RECEIVED
      ASC 10,RECEIVER OVERRUNS
      ASC 10,RX BUFFER OVERFLOWS
      ASC 10,FRAMES W/BAD ADDR
      ASC 10,CMDR FRAMES RCVD 
*                   PARAMETERS
      ASC 10,UNACK FR WINDOW SIZE 
      ASC 10,N2 RETRY COUNT 
      ASC 10,T1 T.O. IN 0.01 SEC
* 
* 
*     DESCRIPTION OF STATUS BITS (IN DVT EXT WORD # 12) 
* 
ASTDS DEF *+1 
      ASC 8, READ ABORTED            BIT 0
      ASC 8, WRITE ABORTED           BIT 1
      ASC 8, RD RQ PENDING           BIT 2
      ASC 8, WT RQ PENDING               3
      ASC 8, BKPL LOCKED RP              4
      ASC 8, BKPL LOCKED WP              5
      ASC 8, SHORT TO ACTIVE             6
      ASC 8, MED. T.O ACTIVE             7
      ASC 8, LONG T.O ACTIVE             8
      ASC 8, CONNECTED                   9
      ASC 8, START OF MSG.               10 
      ASC 8, NON-DS MODE                 11 
      ASC 8, ASKED TO CONNCT             12 
      ASC 8, SEVERE ERROR                13 
      ASC 8, P-F RECONNECT               14 
      ASC 8, RFP WAIT                    15 
      SPC 2 
*  BOARD PARAMETER MESSAGE: DO NOT REARRANGE NEXT LINES.
ASTDX ASC 14,   HDLC BOARD, FIRMWARE REV. 
ASTD. ASC  7,YYWW,  SPEED:
SPDX. ASC  5,........,
SPD1  ASC  7,..TERNAL CLOCK 
ASTDN EQU *-ASTDX   SIZE OF MESSAGE 
BPLN2 ASC  3,   FCL 
SPD2  ASC 13, ...ABLED, DIAGNOSTIC HOOD 
DGH   ASC  6, ... SENSED
PRLN2 EQU *-BPLN2 
      SPC 2 
*     "SPEED SETTING" TABLE FOR FIRMWARE
SPTBL DEF *+1 
      ASC 4,300 BPS 
      ASC 4,1200 BPS
      ASC 4,2400 BPS
      ASC 4,4800 BPS
      ASC 4,9600 BPS
      ASC 4,19.2KBPS
      ASC 4,57.6KBPS
      ASC 4, MAXIMUM
* 
@SPDX DEF SPDX. 
"EN"  ASC 2,  EN
"DIS" ASC 2, DIS
"IN"  ASC 1,IN
"ST"  ASC 1,ST
"PA"  ASC 1,PA
"NOT" ASC 2, NOT
LUNUM     BSS  01 
TYPE      BSS  01 
*           FPNTR,  & FORMAT ADDRESS POINTER
FPNTR     BSS  01 
* 
*   INTEGER ARRAY EBUFR[1:22]; & HOLDS DVT WORDS
EBUFR     EQU  *-1
          BSS  31 
* 
"0"       ASC  1, 0 
"1"       ASC  1, 1 
AW20      DEF  W20
COL1      BSS  1
COL3      BSS  1
      SKP 
*   RETRIEVE DS/1000 DVT CONTENTS 
* 
*       EBUFR+1 - BUFFER TO ACCOMODATE 19 WORDS OF DVT + 12 WORD EXTENT 
*       LUNUM- LU NUMBER TO PRINT DVT INFORMATION ON (IF DEVICE TYPE
*              IS FOR DS LINK DRIVER) 
* 
* 
GTDVT NOP 
      CCB 
      STB TYPE
      LDA $LUT#     IF REQUEST IS FOR N> NUMBER 
      CMA,INA       OF LUS IN SYSTEM, ERROR!
      ADA LUNUM 
      SSA,RSS 
      JMP GTDVT,I 
* 
      CCA          FIND 
      ADA LUNUM       ADDRESS OF
      ADA $LUTA          LU TABLE ENTRY 
      LDA A,I       LOAD DVT ADDRESS
      SZA,RSS       LU EMPTY? 
      JMP GTDVT,I   YES, RETURN 
      STA DVADR     SAVE
      ADA D5       CHECK TYPE CODE
      LDA A,I 
      ALF,ALF       POSITION TO RIGHT BYTE
      AND B77        AND ISOLATE. 
      STA TYPE
      CPA B66        TYPE 66??
      JMP MOVE
      JMP GTDVT,I   NO, EXIT
* 
*  MOVE DVT TO LOCAL BUFFER 
MOVE  LDA DVADR     A := SOURCE ADDRESS 
      LDB DVTBF     B := DESTINATION
      JSB $LIBR     MAKE SURE DVT ISN'T CHANGED 
      NOP            BY HOLDING OFF INTERRUPTS
      JSB .MVW     MOVE 19 WORDS FROM DVT 
      DEF D19 
      NOP 
*   MOVE DVT EXTENSION
      LDA DVADR     GET ADDRESS OF IFT EXTENSION
      ADA D4      (IT'S IN DVT WORD 5)
      LDA A,I 
      SZA,RSS       IF THERE AIN'T NONE,
      JMP ERTN       SKIP THE MOVE. 
      ADA D7        ADVANCE TO IFT EXTENSION AREA 
      JSB .MVW     MOVE 12 WORD EXTENSION 
      DEF D12 
      NOP 
ERTN  JSB $LIBX     RESTORE INTERRUPTS. 
      DEF *+1 
      DEF *+1 
* 
      JMP GTDVT,I 
* 
DVADR BSS 1 
CNVRT NOP           ADDRESS OF CONVERSION ROUTINE TO BE USED. 
B66   OCT 66
      SPC 3 
*  SUBROUTINE TO MOVE DVT DESCRIPTION WORD TO PRINT BUFFER. 
*   (A-REG CONTAINS DESTINATION ADDRESS, FPNTR CONTAINS SOURCE, 
*    AND I CONTAINS WORD NUMBER. "CNVRT" MUST CONTAIN ADDRESS 
*    OF CONVERSION ROUTINE TO BE USED--EITHER CNVTO OR CNVTD).
* 
DVMOV     NOP 
          STA  COL1 
          ADA  D2 
          STA  COL2 
          ADA  D4 
          STA  COL3 
*      COL1 := KCVT(I);  & DVT WORD NUMBER
          LDA  I
          JSB  KCVT1
          LDB  CNVRT      DO WE WANT TO PRINT THE WORD #? 
          CPB  @CNVD       (WE PRINT DECIMAL WHEN WE DON'T) 
          LDA  BLANK        USE BLANKS INSTEAD
          STA  COL1,I 
*      CONVERT ACCORDING TO REQUIRED NUMBER BASE (OCTAL OR DECIMAL) 
          JSB  .LDX 
          DEF  I
          JSB  .LAX 
          DEF  EBUFR
          JSB  CNVRT,I
COL2      DEF  *-*
*      & MOVE MEANING 
          LDA  FPNTR
          LDB  COL3 
          JSB  .MVW 
          DEF  D10
          NOP 
*      I := I + 1;
          ISZ  I
*      POINT TO NEXT MEANING
          LDA  FPNTR
          ADA  D10
          STA  FPNTR
*      END OF DVMOV;
          JMP  DVMOV,I
      SPC 3 
*  SUBROUTINE TO PRINT WORDS IN DVT BUFFER. 
*     BEFORE CALLING, SET UP: 
*       FPNTR - POINTER TO NEXT DVT WORD DESCRIPTION
*       I     - NEXT DVT WORD NUMBER
*       A-REG - NEGATIVE NUMBER OF WORDS (CNTR) 
*       B-REG - ADDRESS OF CONVERSION ROUTINE (CNVTO OR CNVTD)
* 
PRWDS NOP           ENTRY.
      STB CNVRT     SAVE CONVERSION ROUTINE ADDRESS 
      STA CNTR      SAVE COUNTER. 
* 
ELOOP JSB BFILL     CLEAR PRINT BUFFER. 
      LDA AW3       MOVE LEFT 
      JSB DVMOV      DESCRIPTION. 
      ISZ CNTR      IF LAST WORD
      JMP MV#2       WAS DESCRIBED, 
      CCA              FAKE COUNTER 
      STA CNTR          TO -1.
      JMP PRDVI        GO PRINT.
* 
MV#2  LDA AW20      MOVE RIGHT
      JSB DVMOV      DESCRIPTION. 
* 
PRDVI JSB PRINT     PRINT 
      DEF BUFR       BOTH 
      DEC 36          DESCRIPTIONS. 
* 
      ISZ CNTR      IF MORE TO DO,
      JMP ELOOP      STAY IN LOOP.
* 
      JMP PRWDS,I   RETURN. 
      SPC 3 
* 
*  SUBROUTINE TO PRINT THE CONTENTS OF THE DVT BUFFER.
* 
DVOUT NOP           ENTRY.
      LDA TYPE      WAS TYPE
      CPA B66         VALID LINK? 
      RSS 
      JMP DVOUT,I 
      LDA LUNUM     CONVERT LU
      JSB CNVTD      NUMBER AND 
      DEF HOLD1       STORE IN
      DLD HOLD2        PRINT BUFFER.
      DST EHED3+3 
* 
      LDA TYPE      CONVERT DRIVER
      JSB CNVTO      TYPE AND 
      DEF HOLD1       STORE IN
      LDA HOLD3        PRINT BUFFER.
      STA EHED3+9 
* 
      JSB BLINE 
      JSB PRINT     PRINT 
      DEF EHED3 
      DEC 10          HEADING.
* 
      LDA PBUFR+9   DID USER WANT 
      CPA "AL"         EVERYTHING?
      RSS                 OR
      CPA "IO"          JUST DVT INFORMATION? 
      RSS           YES, CONTINUE 
      JMP PRLBT     NO, SKIP DVT INFO PRINTOUT
* 
      JSB PRINT 
      DEF EHED4 
D29   DEC 29
* 
*   PRINT FIRST 31 WORDS OF DVT.
* 
      LDA ADV1      SET UP DESCRIPTION
      STA FPNTR      POINTER TO DV1.
      CLA,INA       SET DVT NUMBER
      STA I          TO 1.
      LDB @CNVO     (WE WANT OCTAL CONVERSION)
      LDA DM31      SET COUNTER TO 31.
      JSB PRWDS     PRINT FIRST 31 WORDS. 
* 
* 
*     IF THIS IS THE 2ND DVT OF A PAIR, THEN THE INFORMATION
*     IN THE DVT EXTENSION, COMMUNICATION STATISTICS, FIRMWARE
*     REV, SPEED, ETC., WILL ALL BE THE SAME.  THIS SITUATION 
*     IS DETECTED BY NOTING THAT THE IFT WILL BE THE SAME.
* 
PRLBT LDA EBUFR+5   DOES THIS ENTRY HAVE THE
      CPA LIFT       SAME IFT AS THE LAST ONE WE DID? 
      JMP DVORT     YES, EXIT THIS ROUTINE
      STA LIFT      SAVE "LAST IFT" ADDRESS 
* 
*     SET UP TO ANNOTATE STATUS BITS IN DVT EXT (WORD 12) 
* 
* THE CODE BELOW FORMATS ALL 16 BITS INTO FOUR LINES OF FOUR FIELDS EACH. 
* 
      JSB BLINE 
      JSB PRINT     PRINT ANNOTATION HEADER 
      DEF EHED7 
      DEC 13
      LDA DM4       SET LINE COUNT
      STA CNTR       FOR OUTER LOOP.
      LDA ASTDS     SET DESCRIPTION 
      STA HOLD1      POINTER. 
* 
IO02  LDB AW3       INITIALIZE INNER LOOP.
      STB HOLD1+1 
      LDA DM4       SET BIT COUNT 
      STA T6         FOR INNER LOOP.
      JSB BFILL     FILL THE PRINT LINE WITH BLANKS.
* 
IO03  LDB EBUFR+30  PICK UP THE FLAG BITS.
      LDA "0"       SET A-REGISTER TO "0" 
      SLB            OR "1" DEPENDING ON
      LDA "1"         RIGHTMOST BIT.
      RBR           SET UP TO TEST NEXT BIT.
      STB EBUFR+30
      STA HOLD1+1,I STORE "0" OR "1" IN PRINT BUFFER. 
      ISZ HOLD1+1   BUMP DESTINATION ADDRESS FOR MOVE.
      DLD HOLD1     PICK UP POINTERS. 
      JSB .MVW
      DEF D8        MOVE DESCRIPTION TO PRINT LINE. 
      NOP 
      DST HOLD1     RESET POINTERS. 
* 
      ISZ T6        HAVE 4 FIELDS BEEN MOVED? 
      JMP IO03       NO. STAY IN INNER LOOP.
* 
      JSB PRINT     PRINT THE FOUR DESCRIPTIONS.
      DEF BUFR
      DEC 38
* 
      ISZ CNTR      HAVE ALL 16 BITS BEEN CONVERTED?
      JMP IO02       NO. STAY IN OUTER LOOP.
      SPC 2 
      JSB BLINE 
* 
*     CHECK FOR OPTIONAL THIRD PARAMETER.  IF ANY VALUE SPECIFIED,
*     PICK UP INTERFACE PARAMETERS & ERROR STATISTICS.
*     STATISTICS ARE CLEARED BY THE I/F AFTER BEING READ. 
* 
      LDA LUNUM     SET UP SUB-FUNCTION 
      IOR =B3600
      STA BLINE 
* 
      LDA PBUFR+9   IF THIRD PARAMETER
      CPA "AL"       IS "AL" OR "ST", 
      JMP BOARD       READ STATISTICS 
      CPA "ST"         FROM THE BOARD.
      JMP BOARD 
      CPA "PA"      IF "PA", READ JUST
      JMP BORDP      THE PARAMETERS.
      JMP DVORT     OTHERWISE ALL DONE. 
* 
BOARD JSB EXEC      READ
      DEF *+6        LONG-TERM
      DEF SD1         STATISTICS. 
      DEF BLINE 
DVTBF DEF EBUFR+1 
      DEF D11 
      DEF D2
      RSS           IF RTE ABORTED CALL 
      RAR,SLA        OR IF DRIVER BURPED, 
      JMP DVERR         REPORT ERROR. 
* 
BORDP JSB EXEC      READ
      DEF  *+6       INTERNAL 
      DEF SD1         PARAMETERS. 
      DEF BLINE     (LU + SUBFUNCTION)
      DEF EBUFR+12
      DEF D5
      DEF D1
      RSS            IF RTE ABORTED CALL
      RAR,SLA         OR IF DRIVER BURPED,
      JMP DVERR          REPORT ERROR.
      SPC 1 
*     THE 16-BIT QUANTITIES RETURNED BY THE DRIVER ARE IN 
*     INVERTED-BYTE ORDER.  REVERSE THEM. 
* 
REVRS LDA DM16
      STA HOLD1 
      LDB DVTBF     INITIALIZE BUFFER POINTER 
LOOPC LDA B,I       LOAD THE DATA WORD, 
      ALF,ALF         REVERSE THE BYTES 
      STA B,I          AND PUT IT BACK. 
      INB           BUMP POINTER. 
      ISZ HOLD1     END OF LOOP?
      JMP LOOPC       NO. CONTINUE REVERSING. 
* 
      SPC 1 
* 
*  PRINT BOARD TYPE, FIRMWARE REVISION CODE, AND SPEED. 
* 
      LDA EBUFR+13  CONVERT 
      JSB CNVTD      REVISION 
      DEF HOLD1       CODE. 
      DLD HOLD2 
      DST ASTD. 
* 
      LDA EBUFR+14  GET SPEED INDICATOR 
      ASR 11         FROM ON-BOARD
      AND B34         SWITCH REGISTER.
      ADA SPTBL     ADD SPEED TABLE ADDRESS.
      LDB @SPDX     DESTINATION ADDRESS.
      JSB .MVW
      DEF D4        MOVE SPEED. 
      NOP 
* 
      LDA EBUFR+14  GET INTERNAL/EXTERNAL 
      AND BIT9       CLOCK INDICATOR. 
      LDB "IN"      ASSUME INTERNAL CLOCK.
      SZA           IF EXTERNAL,
      LDB "EX"        MAKE MESSAGE "EXTERNAL".
      STB SPD1      STORE "IN" OR "EX". 
* 
      JSB PRINT     PRINT.
      DEF ASTDX 
      ABS ASTDN 
* 
*  DETERMINE FORCE COLD LOAD AND DIAGNOSTIC HOOD STATUS.
* 
      DLD "DIS"     ASSUME FCL
      DST SPD2       DISABLED.
      LDA EBUFR+14  IF IT'S ENABLED,
      ALF,ALF 
      SLA,RSS 
      JMP CKDGH 
      DLD "EN"        REFORMAT
      DST SPD2         THE MESSAGE. 
* 
CKDGH LDA BLANK     ASSUME HOOD 
      LDB A          SENSED.
      DST DGH 
      LDA EBUFR+14  IF IT'S 
      SLA            NOT THERE, 
      JMP PRP#2 
      DLD "NOT"       REFORMAT
      DST DGH          THE MESSAGE. 
* 
PRP#2 JSB PRINT 
      DEF BPLN2 
      DEF PRLN2 
      SPC 1 
* 
*   SET UP HDLC CARD PARAMETERS 
* 
      LDA EBUFR+16  MAKE T1 TIME-OUT
      CMA,INA        POSITIVE.
      STA EBUFR+14
      LDA EBUFR+15  GET "N2" VALUE
      AND B377       AND STORE IT 
      STA EBUFR+13    IN WORD 13. 
      XOR EBUFR+15  REMOVE IT FROM
      ALF,ALF        WORD 15. 
      STA EBUFR+12  STORE "K" VALUE.
      LDA ADESC     SET UP
      STA FPNTR      DESCRIPTION PNTR.
      LDA DM14      NUM OF WORDS
      STA HOLD1      IS 14. 
* 
*  PRINT PARAMETERS AND (POSSIBLY) STATISTICS 
* 
CHKPA JSB BLINE 
      LDA @CNVD     USE DECIMAL 
      STA CNVRT      CONVERSION.
      LDA PBUFR+9   IF ONLY THE PARAMETERS
      CPA "PA"       ARE NEEDED, USE
      JMP IOX2         THE SHORT SETUP. 
* 
*  SET UP TO PRINT BOTH 
* 
      CLA,INA       WORD NUMBER 
      STA I          IS SET TO 1. 
      LDA D12       HEADING IS
      STA T9         24 CHARACTERS. 
      JMP IOX3      GO PRINT. 
* 
*  SET UP TO PRINT JUST PARAMETERS
* 
IOX2  LDA D12       START WITH
      STA I          WORD 12. 
      LDA DM13      HEADING IS
      STA T9         13 CHARACTERS. 
      LDA FPNTR     ADD 110 TO
      ADA D110       PARAMETER
      STA FPNTR       POINTER 
      LDA HOLD1        AND 11 TO
      ADA D11           LOOP
      STA HOLD1          COUNTER. 
* 
IOX3  JSB PRINT     PRINT 
      DEF EHED6      HEADING. 
T9    DEF *-* 
      LDA HOLD1     LOAD WORD COUNT.
      LDB @CNVD     (USE DECIMAL CONVERSION)
      JSB PRWDS     GO PRINT. 
* 
DVORT JSB BLINE 
      JMP DVOUT,I   RETURN. 
"IO"  ASC 1,IO
@CNVO DEF CNVTO 
@CNVD DEF CNVTD 
      SPC 2 
* 
*  PRINT MESSAGE WHEN INFORMATION CALL TO DVA66 FAILS.
* 
DVERR JSB PRINT     PRINT "DRIVER 
      DEF DEVER      ERROR".
      DEC 12
      JMP DVORT     RETURN. 
* 
DEVER ASC 12,   DRIVER REPORTS ERROR
      SPC 1 
BIT9  OCT 1000
B34   OCT 34
DM4   DEC -4
DM13  DEC -13 
DM14  DEC -14 
DM16  DEC -16 
D110  DEC 110 
      SKP 
*     SUBROUTINE TO PROCESS "LU" COMMAND
      SPC 2 
LUTS  NOP           ENTRY FOR LU COMMAND. 
      JSB BLINE     PRINT BLANK LINE
* PARSE INPUT BUFFER FOR "LU,N" OPTION
      JSB PARSE 
      DEF *+4 
      DEF FNCTN 
      DEF RDLEN 
      DEF PBUFR 
* 
      LDB "AL"
      LDA CONWD 
      SZA           NON-INTERACTIVE MODE? 
      STB PBUFR+9   YES, PRINT ALL DVT INFO 
* 
      LDA INDVT 
      STA LIFT      CLEAR LAST IFT ENTRY
      SZA,RSS       IF "N" NOT SPECIFIED, 
      JMP L857A       PRINT ALL DS LUS. 
      STA LUNUM     GET LU# 
      JSB GTDVT      INFO.
      JSB DVOUT         PRINT THE DVT INFO, IF IT'S A VALID LINK
      JMP LUTS,I      RETURN. 
      SPC 1 
* PRINT ALL DS/1000 LUS:
* 
*   LUNUM := 1; 
L857A     CLA,INA 
          STA  LUNUM
L860      JSB  GTDVT   GATHER INFORMATION ON THIS LU
          JSB  DVOUT   PRINT INFO ON THIS LU, IF A VALID DS LINK
      LDA LUNUM 
      CPA $LUT#     LAST LU?
      JMP LUTS,I    YES, RETURN TO CALLER 
      ISZ LUNUM     NO, GO AROUND AGAIN 
      JMP  L860  NO, PRINT MORE 
          SPC  2
LIFT  NOP           LAST IFT ENTRY ADDRESS
PBUFR BSS 33        PARSE BUFFER
INDVT EQU PBUFR+5   SECOND PARAMETER
          SPC 2 
      UNL 
      IFN 
      LST 
      HED DSINF: PRINT NRV * (C) HEWLETT-PACKARD CO.
*  NRV DISPLAY ROUTINE. 
* 
DSNRV NOP           ENTRY.
      LDA #NCNT     GET NEGATIVE NO. OF NODES.
      STA NCNT      SAVE THE NUMBER OF NODES. 
      CMA,INA,SZA,RSS  ANYTHING SPECIFIED?
      JMP DSNRV,I    NO--IGNORE THE REQUEST!
* 
      JSB CNVTD     CONVERT TO ASCII. 
      DEF NNODS 
* 
      JSB BLINE 
* 
      LDA #NODE     GET LOCAL NODE NUMBER.
      JSB CNVTD     CONVERT IT TO ASCII.
      DEF LOCLN 
      JSB PRINT     PRINT THE FIRST MESSAGE.
      DEF NODM1 
      DEC 10
      JSB PRINT 
      DEF NODM2 
      DEC 21
      JSB BLINE 
      JSB PRINT 
      DEF NODM3 
      DEC 21
* 
      LDA #NRV      GET THE NRV ADDRESS,
      STA NPNT        AND SAVE THE POINTER. 
* 
DLOOP JSB BFILL     CLEAR THE PRINT BUFFER. 
* 
      LDB NPNT      GET A NODE NUMBER.
      JSB IXGET 
      ISZ NPNT      ADVANCE THE POINTER.
      SSA           IF < 0, 
      JMP BLENT       IT'S A BLANK ENTRY. 
      JSB CNVTD     CONVERT.
      DEF W3
* 
      LDB NPNT      GET TIMEOUT/UPGRADE.
      JSB IXGET 
      AND B17       ISOLATE THE UPGRADE.
      JSB CNVTD     CONVERT.
      DEF W17 
* 
      LDB NPNT      GET TIMEOUT/UPGRADE, AGAIN. 
      JSB IXGET 
      ISZ NPNT      ADVANCE POINTER.
      ALF,ALF       POSITION THE TIMEOUT
      AND B377       TO THE LOWER BYTE. 
      SZA           IF =0, THEN NO FILLING NEEDED.
      IOR DM256     FILL-IN THE UPPER BYTE. 
      CMA,INA       MAKE THE VALUE POSITIVE (OR 0). 
      MPY D5        MULTIPLY BY FIVE. 
      JSB CNVTD     CONVERT.
      DEF W9
* 
      LDB NPNT      GET NEIGHBOR/LU.
      JSB IXGET 
      AND B377      ISOLATE THE LU. 
      STA T7
      JSB CNVTD     CONVERT.
      DEF W6
* 
      LDB NPNT      GET NEIGHBOR/LU 
      JSB IXGET      AGAIN. 
      ISZ NPNT
      AND NBIT      ISOLATE NEIGHBOR BIT. 
      LDB LSTAR     IF SET, PUT A 
      SZA            STAR NEXT TO 
      STB W6          THE NODE NUMBER.
* 
      LDA T7        IF LU IS
      SZA,RSS        ZERO (LOCAL),
      JMP PRNRV        READY TO PRINT.
* 
* 
*  GOOD LU NUMBER. GET DRT INFORMATION. 
* 
      JSB EXEC       GET DEVICE TYPE
      DEF *+4 
      DEF D13 
      DEF T7        LU
      DEF #UNAK     DEVICE TYPE 
      LDA #UNAK     LOAD DEVICE TYPE
      ALF,ALF       ISOLATE DEVICE
      AND B77        TYPE.
      JSB CNVTO     CONVERT TO
      DEF W15        OCTAL. 
* 
PRNRV JSB PRINT     PRINT NODAL 
      DEF BUFR       INFORMATION. 
      DEC 20
* 
      ISZ NCNT      ANY MORE TO PROCESS?
      JMP DLOOP      YES, CONTINUE. 
* 
      JSB BLINE 
      JSB PRINT     PRINT BOTTOM
      DEF NODM4      LINE.
      DEC 15
      JSB BLINE 
* 
      JMP DSNRV,I   PROCESS COMPLETE--CHECK FOR NEW REQUEST.
      SPC 1 
BLENT LDA @BLNK     SET UP
      LDB AW3        "BLANK"
      JSB .MVW
      DEF W9          MESSAGE.
      NOP 
      ISZ NPNT      BUMP POINTER. 
      ISZ NPNT
      JMP PRNRV     GO PRINT. 
      SPC 2 
@BLNK DEF *+1 
      ASC 9,** BLANK ENTRY ** 
LSTAR ASC 1,* 
NBIT  BYT 1,0 
NODM1 ASC 10, NRV SPECIFICATIONS: 
NODM2 ASC 7, LOCAL NODE#: 
LOCLN ASC 3,
      ASC 8,, NO. OF NODES= 
NNODS ASC 3,
* 
NODM3 ASC 18,      NODE    LU    T/O(SEC)   TYPE
      ASC  3, LEVEL 
NODM4 ASC 15,       (* INDICATES NEIGHBOR)
* 
DM256 DEC -256
* 
NCNT  NOP           NUMBER OF NODES 
NPNT  NOP 
T7    NOP 
      HED DSINF: MESSAGE ACCOUNTING * (C) HEWLETT-PACKARD CO. 
*  +--------------------------------------+ 
*  ! PRINT MESSAGE ACCOUNTING INFORMATION ! 
*  +--------------------------------------+ 
      SPC 1 
MAHD1 ASC 16, MESSAGE ACCOUNTING INFORMATION
MAHD2 ASC 22,  NODE STATE  # UNACK   # LINEDOWNS  TIMEOUT 
* 
@STBL DEF *+1       MA STATE TABLE
"DOWN ASC  8,DOWNNONEUP  PEND 
* 
NODE# NOP 
#DOWN NOP 
#UNAK NOP 
#TMAX NOP 
      SPC 2 
MSACT NOP           ENTRY.
      JSB BLINE 
      JSB PRINT     PRINT HEAD. 
      DEF MAHD1 
      DEC 16
* 
      LDA #MCTR     GET # OF ENTRIES. 
      SZA,RSS       IF NONE,
      JMP NOMA        REPORT THE FACT.
      STA CNTR
* 
      JSB BFILL     CLEAR PRINT BUFFER. 
* 
      JSB BLINE 
      JSB PRINT     PRINT HEAD. 
      DEF MAHD2 
      DEC 22
* 
      LDB #MCTR+1   GET ADDRESS OF TABLE. 
      ELB,CLE,ERB   CLEAR DEBUG BIT.
* 
CYCLE STB PNTR      STORE ENTRY ADDRESS.
      JSB IXGET     GET NODE #. 
      SSA           IF NEGATIVE,
      JMP EOC        IT'S A DUMMY.
      STA NODE#     SAVE NODE #.
* 
      INB           GET STATE 
      JSB IXGET      WORD.
      CLB 
      LSL 4         SHIFT IN #
      STB #UNAK      UNACKNOWLEDGED.
      LSL 2         THROW AWAY
      CLB            TWO BITS.
      LSL 8         MOVE IN 
      STB #TMAX      TIMEOUT. 
* 
      ALF,RAR       A-REG = OFFSET INTO TABLE.
      ADA @STBL     GET ADDRESS OF STATE. 
      DLD A,I       GET 4-CHAR DESCRIPTION. 
      DST W5        STORE IN PRINT BUFFER.
* 
      LDB PNTR      GET WORD
      ADB D7         NUMBER 7 
      JSB IXGET       (DOWN). 
      LSL 4 
      CLB 
      LSR 4 
      STA #DOWN 
* 
      LDA NODE#     CONVERT 
      JSB CNVTD      INFORMATION
      DEF W1          TO
      LDA #DOWN        ASCII. 
      JSB CNVTD 
      DEF W14 
      LDA #UNAK 
      JSB CNVTD 
      DEF W8
      LDA #TMAX 
      JSB CNVTD 
      DEF W19 
* 
      JSB PRINT     PRINT 
      DEF BUFR       INFORMATION. 
      DEC 21
* 
EOC   LDB PNTR      ADVANCE 
      ADB D10        POINTER. 
      ISZ CNTR      IF MORE ENTRIES,
      JMP CYCLE      STAY IN LOOP.
* 
      JMP EOMA      ALL DONE. 
      SPC 2 
NOMA  JSB PRINT     PRINT 
      DEF NOENT      "NO ENTRIES" 
      DEC 6           MESSAGE.
      SPC 1 
EOMA  JSB BLINE 
      JMP MSACT,I   RETURN. 
      HED DSINF: NODAL REROUTING * (C) HEWLETT-PACKARD CO.
*  +-----------------------------------+
*  ! PRINT NODAL REROUTING INFORMATION !
*  +-----------------------------------+
      SPC 1 
RRHD1 ASC 13, REROUTING SPECIFICATIONS: 
RRHD2 ASC 11,              UP/DOWN
RRHD3 ASC 15,    LU  COST  COUNTER  STATUS
"UP"  ASC 2, UP 
      SPC 2 
RRTNG NOP           ENTRY.
      JSB BLINE 
      JSB PRINT     PRINT HEAD. 
      DEF RRHD1 
      DEC 13
* 
      LDA #LCNT     GET # OF ENTRIES. 
      SZA,RSS       IF NONE,
      JMP NORR        REPORT THE FACT.
      CMA,INA       MAKE NEGATIVE 
      STA CNTR       LOOP COUNTER.
* 
      JSB PRINT     PRINT HEADS.
      DEF RRHD2 
      DEC 11
      JSB PRINT 
      DEF RRHD3 
      DEC 15
* 
      JSB BFILL     CLEAR PRINT BUFFER. 
* 
      LDB #LV       GET ADDRESS OF TABLE. 
      STB PNTR      STORE POINTER.
* 
LOOPR LDB PNTR      GET 
      JSB IXGET      BITS/LU #. 
      CLE,ELA       POSITION <STATUS> IN E. 
      DLD "UP"      SET PROPER MESSAGE IN 
      SEZ            PRINT BUFFER.
      JMP SUD 
      DLD "DOWN 
SUD   DST W13 
* 
      LDB PNTR
      JSB IXGET     GET LU AGAIN. 
      AND B377      ISOLATE IT. 
      JSB CNVTD     CONVERT TO ASCII. 
      DEF W1
* 
      ISZ PNTR
      LDB PNTR      GET 
      JSB IXGET      COST.
      JSB CNVTD     CONVERT TO ASCII. 
      DEF W4
* 
      LDB PNTR
      ADB D3
      JSB IXGET     GET UP/DOWN COUNTER.
      ADB D2        POINT TO
      STB PNTR       NEXT ENTRY.
      CMA,INA       MAKE COUNTER POSITIVE.
      JSB CNVTD     CONVERT TO ASCII. 
      DEF W8
* 
      JSB PRINT     PRINT 
      DEF BUFR       THE
      DEC 14          LINE. 
* 
      ISZ CNTR      IF MORE TO DO,
      JMP LOOPR      STAY IN LOOP.
      JMP EORR
      SPC 2 
NORR  JSB PRINT     PRINT 
      DEF NOENT      "NO ENTRIES".
      DEC 6 
      SPC 1 
EORR  JSB BLINE 
      JMP RRTNG,I   RETURN. 
      UNL 
      XIF 
      LST 
      HED DSINF: REMOTE SESSIONS * (C) HEWLETT-PACKARD CO.
      IFZ      ** SPACE SAVER **
*   +----------------------------------+
*   ! PRINT REMOTE SESSION INFORMATION !
*   +----------------------------------+
      SPC 1 
RSHD1 ASC 21, REMOTE SESSIONS ESTABLISHED AT THIS NODE
RSHD2 ASC 11,   SOURCE   SESSION ID 
RSHD3 ASC 20,    NODE   SOURCE LOCAL  TIMER   PROGRAM 
RSHD4 ASC 10,       EMPTY ENTRIES 
CLONE ASC  4,(CLONE)
@CLON DEF CLONE 
HFLAG NOP 
NOTUS NOP 
CLONI NOP 
AW21  DEF W21 
D60   DEC 60
      SPC 2 
RMSES NOP           ENTRY.
      JSB BLINE 
      JSB PRINT     PRINT HEAD. 
      DEF RSHD1 
      DEC 21
      JSB BLINE 
* 
      CLA           CLEAR 
      STA HFLAG      HEADING FLAG 
      STA NOTUS       AND REM SES COUNT.
      LDB #POOL     GET # OF REMOTE 
      JSB IXGET      SESSION ENTRIES. 
      SZA,RSS       IF NONE,
      JMP NORS       REPORT "NO ENTRIES". 
      STA CNTR      STORE # OF ENTRIES. 
      INB           SET POINTER TO 1ST ENTRY. 
      STB PNTR
* 
RSMLP LDB PNTR
      JSB IXGET     GET FIRST WORD OF ENTRY.
      SSA           IF SIGN BIT IS SET, 
      JMP USED       ENTRY IS IN USE. 
* 
*   EMPTY ENTRY FOUND 
* 
      ISZ NOTUS     BUMP UNUSED ID COUNTER. 
      LDB PNTR      POINT TO
      ADB D7         NEXT ENTRY.
      STB PNTR
      JMP ENRLP     GO TO END OF LOOP.
      SPC 1 
* 
*   ENTRY FOUND IN USE. PRINT INFORMATION.
* 
USED  LDA HFLAG     GET HEADING FLAG. 
      SZA           IF SET, PRINT ENTRY.
      JMP PRENT 
* 
      ISZ HFLAG     SET HEADING FLAG. 
      JSB PRINT     PRINT HEADINGS. 
      DEF RSHD2 
      DEC 11
      JSB PRINT 
      DEF RSHD3 
      DEC 20
* 
PRENT JSB BFILL     FILL PRINT LINE WITH BLANKS.
* 
      JSB IXPTR     GET FIRST WORD. 
      STA CLONI     SAVE TEMPORARILY. 
      AND B377      ISOLATE LOCAL SESSION ID. 
      JSB CNVTD     CONVERT TO DECIMAL
      DEF W9         AND PUT IN PRINT LINE. 
* 
      JSB IXPTR     GET SOURCE NODE.
      JSB CNVTD     CONVERT TO DECIMAL
      DEF W2         AND PUT IN PRINT LINE. 
* 
      LDA CLONI     GET CLONE INDICATOR.
      AND BIT14 
      SZA,RSS       IF NOT SET, 
      JMP GTSRC      GO GET SOURCE ID.
* 
      LDA @CLON     MOVE
      LDB AW21       "(CLONE)". 
      JSB .MVW
      DEF D4
* 
GTSRC JSB IXPTR     GET NEXT WORD.
      AND B377      ISOLATE SOURCE ID WORD. 
      JSB CNVTD     CONVERT TO DECIMAL
      DEF W6         AND PUT IN PRINT BUFFER. 
* 
      JSB IXPTR     GET PROGRAM 
      SZA            NAME. IF NON-0,
      STA W18          STORE CHAR 1 & 2.
      JSB IXPTR 
      SZA 
      STA W19       STORE CHAR 3 & 4. 
      JSB IXPTR 
      SZA,RSS 
      JMP GTIMR 
      AND UPMSK 
      IOR B40 
      STA W20       STORE CHAR 5. 
* 
GTIMR JSB IXPTR     GET # SEC/5.
      CLB           DIVIDE BY 12
      DIV D12        FOR MINUTES. 
      STB SEC       MULTIPLY REMAINDER
      CLE,ELB        BY 5 FOR # OF
      ELB             SECONDS.
      ADB SEC 
      STB SEC 
      CLB 
      DIV D60       DIVIDE BY 60
      STB MIN        FOR HOURS. 
      STA HOUR
* 
      LDA SEC       CONVERT 
      JSB KCVT1      SECONDS
      IOR "00"        TO
      STA W16          ASCII
      LDA MIN       CONVERT 
      JSB KCVT1      MINUTES. 
      IOR "00"
      LDB COLON 
      RRR 8 
      DST W14 
      LDA HOUR      CONVERT 
      JSB KCVT1      HOURS. 
      STA W13 
* 
      JSB PRINT     PRINT ENTRY 
      DEF BUFR       INFORMATION. 
      DEC 24
* 
*   END OF REMOTE SESSION LOOP
* 
ENRLP ISZ CNTR      IF MORE TO DO,
      JMP RSMLP      STAY IN LOOP.
* 
      JSB BLINE 
      LDA NOTUS 
      JSB CNVTD 
      DEF RSHD4 
      JSB PRINT     PRINT NUMBER
      DEF RSHD4      OF FREE REMOTE 
      DEC 10          SESSION ENTRIES.
      JMP EORS
      SPC 2 
NORS  JSB PRINT     PRINT 
      DEF NOENT      "NO ENTRIES".
      DEC 6 
      SPC 1 
EORS  JSB BLINE 
      JMP RMSES,I   RETURN. 
      SPC 3 
* SUBROUTINE TO LOAD CONTENTS OF PNTR FROM SYSTEM MAP INTO A-REG. 
IXPTR NOP           ENTRY.
      LDB PNTR      LOAD ADDRESS. 
      JSB IXGET     (CROSS) LOAD CONTENTS.
      ISZ PNTR      BUMP PNTR.
      JMP IXPTR,I   RETURN. 
      XIF      ** END SPACE SAVER **
      HED DSINF: LARGE BUFFER FOR SAM * (C) HEWLETT-PACKARD CO. 
NOENT ASC  6,  NO ENTRIES 
* 
SAM       BSS  740
          SPC  2
PNTR      EQU  *+3         POINTERS INTO SAM
          BSS  LSTRM+4
          SPC  1
          BSS  0           SIZE OF DSINF
          SPC  1
          UNS 
          END  DSINF
                                                                                                      