ASMB,Q,C,N
      HED DSINF: DS/1000 INFORMATION * (C) HEWLETT-PACKARD CO.
      IFN 
          NAM  DSINF,19,65 91750-16077 REV.2013 800612 MEF
          EXT  DEXEC,D#OPS
      XIF 
      IFZ 
          NAM  DSINF,19,65 91750-16078 REV.2013 800612 MEF
      XIF 
          SPC  1
          SUP 
A         EQU  0
B         EQU  1
          EXT  $LIBR,$LIBX,$OPSY,PARSE,KCVT,CNUMO,CNUMD 
          EXT  XLUEX,EXEC,RMPAR,$CLAS,$RNTB,.DFER,PGMAD 
          EXT  .MVW,.MBT,.CBT,.LAX,.LDX,.ISX,.CAX,.DSX
      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-18077
* RELOC: 91750-16077 (N OPTION)   91750-16078 (Z OPTION)
*  PGMR: DMT
      LST 
********************************************
*                                          *
*     NAME:        DSINF (DS INFORMATION)  *
*                                          *
*     SOURCE:      91750-18077             *
*                                          *
*     RELOCATABLE: 91750-16077 (N-OPTION)  *
*                  91750-16078 (Z-OPTION)  *
*                                          *
*     PROGRAMMER:  DAVID TRIBBY            *
*                                          *
*     DATE:        APRIL 1977              *
*                                          *
********************************************
      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)
      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  (N OPTION ONLY)
*              64    DS/1000 EQT ENTRIES
*             128    MESSAGE ACCOUNTING    (N OPTION ONLY)
*             256    REROUTING             (N OPTION ONLY)
*             512    REMOTE SESSIONS
* 
*           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         (N OPTION ONLY)
*   EQ        DS/1000 EQT ENTRIES 
*   EQ,N      PRINT INFORMATION ON EQT N
*   LU,N      PRINT INFORMATION ABOUT LU N
*   MA        MESSAGE ACCOUNTING           (N OPTION ONLY)
*   RR        REROUTING                    (N OPTION ONLY)
*   RS        REMOTE SESSIONS 
*   EX OR /E  TERMINATE DSINF 
* 
*ALL OTHER CHARACTERS CAUSE THE FUNCTIONS TO BE LISTED ON THE 
*OUTPUT DEVICE.;
      SPC 3 
* 
* THE LU AND EQ COMMANDS USE A THIRD PARAMETER WHICH CAN HAVE THESE VALUES: 
*         CODE       PRINT THIS INFORMATION 
*         ----       ---------------------- 
*         (NONE)     LU, EQT, AND DRIVER TYPE           \  ALWAYS 
*                    FLAG BITS IF DRIVER IS TYPE 66      >  PRINTED 
*                    LONG TERM STATISTICS IF TYPE IS 67 / 
*          IO        EQT 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:
* EQT #   4, LU #  12, TYPE  66 
*   WORD  VALUE  MEANING              WORD  VALUE  MEANING
*     1       0  I/O LIST ADDRESS       2   20461  INITIATION ADDRESS 
*     3   20464  CONTINUATION ADDR      4   30016  FLAGS/SUBCHNL/SC 
*     5   33004  AV/TYPE/STATUS         6    1102  CONWD
*     7   36203  DATA BUFFER ADDRESS    8      15  DATA BUFFER LENGTH 
*     9       0  REQUEST BUFFER ADDR   10       0  REQUEST BUFFER LEN 
*    11       0  SERVICING PROCESS     12   25113  ASSOCIATED EQT 
*    13   25150  EQT EXTENSION ADDR    14       0  NOMINAL TIMEOUT
*    15       0  TIMEOUT CLOCK         16  177766  RETRY CNTR/READ PNTR 
*    17      50  1ST READ LEN/SKIP CT  18     410  2ND READ LEN/SKIP CT 
*    19       0  FRAME LENGTH ON CARD  20   36220  WRITE POINTER
*    21       0  WRITE BUFFERS LENGTH  22    1140  MAX PSI FRAME SIZE 
*    23       0  NUM OUTPUT BUFFERS    24   21346  READ CONT ADDRESS
*    25   22071  WRITE CONT ADDRESS    26   13004  FLAG BITS
*    27  110014  MISCELLANEOUS BITS 
* 
*   FLAG BITS (EQT WORD 26) 
*     0 READ ABORTED    0 WRITE ABORTED   1 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    0 P-F RECONNECT   0 RFP WAIT
* 
*   BSC  BOARD, FIRMWARE REV.2013,  SPEED: 300 BPS , EXTERNAL CLOCK 
*   FCL DISABLED, DIAGNOSTIC HOOD NOT SENSED
* 
*   PARAMETERS/STATISTICS 
*          2147  GOOD BLOCKS SENT            2147  GOOD BLOCKS RCVD 
*             0  BAD BLOCKS RECEIVED            8  NAKS RECEIVED
*             0  WACKS SENT                     0  WACKS RECEIVED 
*             0  TTDS SENT                      0  TTDS RECEIVED
*            17  RESPONSE ERRORS                1  3 SECOND TIMEOUTS
*             0  LINE ERRORS                  608  BLOCK SIZE (BYTES) 
*             8  RETRY LIMIT                  255  CONNECT TIMER
*          2880  TRACE SIZE (BYTES)             2  MODE 
* 
* 
*     DIFFERENT STATISTICS AND PARAMETERS ARE PRINTED FOR THE HDLC BOARD
*     (THE BOARD PARAMETERS INDICATE WHICH TYPE OF FIRMWARE IS LOADED). 
* 
*     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 
*        KYWRD,       & BASE OF KEYWORD TABLE 
KYWRD     BSS  01 
*        MAXID,       & # OF ENTRIES IN KEYWORD TABLE 
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,D$BSZ,#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?
* BASE PAGE LOCATIONS 
EQTA  EQU 1650B   FIRST WORD OF EQUIPMENT TABLE 
EQT#  EQU 1651B 
DRT   EQU 1652B   1ST WORD OF DEVICE REFERENCE TABLE
LUMAX EQU 1653B   NUMBER OF LOGICAL UNITS IN DRT
KEYWD EQU 1657B   FWA OF KEYWORD BLOCK
SUSP2 EQU 1713B   "WAIT SUSPEND" LIST 
SUSP3 EQU 1714B   "UNAVAILABLE MEMORY" LIST 
* 
*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 
* 
* 
*  FOR MAPPED SYSTEMS, CONFIGURE DMS INSTRUCTIONS.
          LDA  $OPSY
          RAR,SLA 
RSS       RSS 
          JMP  STFLS
          LDA  MWF
          CLB 
          DST  DMS1 
          LDA  RSS
          STA  DMS2 
* 
*& 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
* 
L984      LDA  $OPSY
          CPA  $RTEL     RTE-L? 
          JMP  WRSYS       YES--PRINT ERROR.
* 
* FIND # OF PROGRAM ID SEGMENTS IN SYSTEM 
*KYWRD := IGET(KEYWD) - 1;
          CCA 
          ADA  KEYWD
          STA  KYWRD
*I := 1;
          CLA,INA 
          STA  I
*WHILE IGET(KYWRD+I)#0 DO 
L986      LDA  KYWRD
          ADA  I
          LDA  A,I
          SZA,RSS 
*    I := I + 1;
          JMP  L988 
          LDA  I
          INA 
          STA  I
          JMP  L986 
*MAXID := I - 1;
L988      CCA 
          ADA  I
          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 EQTS;
          LDA  CONWD
          AND  D64
          SZA 
          JSB  EQTS 
      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 
*   IF (CONWD AND 512)#0 THEN RMSES;
          LDA  CONWD
          AND  D512 
          SZA 
          JSB  RMSES
*   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 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
* 
$RTEL DEC -31       $OPSY FOR RTE-L 
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  D9 
*      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 LUS
          CPA  "LU" 
          RSS 
          JMP  *+3
          JSB  LUS
          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 
*    ELSE IF FNCTN="RS" THEN RMSES
          CPA  "RS" 
          RSS 
          JMP  *+3
          JSB  RMSES
          JMP  L939 
*    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 
DM11      DEC  -11
D16       DEC  16 
D64       DEC  64 
D256      EQU  B400 
D512      DEC  512
D740      DEC  740
SD1       DEF  1,I
@EXCW     DBL  EXECW
EXECW     ASC  3,EXECW
PROMP     ASC  9,/DSINF: 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,   EQ        DS/1000 EQT ENTRIES 
FUN8A     ASC 17,   EQ,N      DS/1000 EQT ENTRY # N 
FUN8B     ASC 17,   LU,N      EQT ENTRY FOR LU # N
      UNL 
      IFN 
      LST 
FUN11     ASC 16,   MA        MESSAGE ACCOUNTING
FUN12     ASC 11,   RR        REROUTING 
      UNL 
      XIF 
      LST 
FUN13     ASC 14,   RS        REMOTE SESSIONS 
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 
* 
      UNL 
      IFN 
      LST 
          JSB  PRINT
          DEF  FUN9 
          DEC  17 
* 
      UNL 
      XIF 
      LST 
          JSB  PRINT
          DEF  FUN8 
          DEC  16 
* 
          JSB  PRINT
          DEF  FUN8A
          DEC  17 
* 
          JSB  PRINT
          DEF  FUN8B
          DEC  17 
* 
      UNL 
      IFN 
      LST 
          JSB  PRINT
          DEF  FUN11
          DEC  16 
* 
          JSB  PRINT
          DEF  FUN12
          DEC  11 
* 
      UNL 
      XIF 
      LST 
          JSB  PRINT
          DEF  FUN13
          DEC  14 
* 
          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,    PT  SZ  PRGRM  T PRIOR  AMT.MEM     FATHER 
* 
B40K      OCT  40000
BIT14     EQU  B40K 
B76K      OCT  76000
B77       OCT  77 
D3        DEC  3
D6        DEC  6
HYPHN     ASC  1,-- 
"B"       ASC  1,B
WRD21     BSS  1     ID SEGMENT WORD 21 
WRD22     BSS  1     ID SEGMENT WORD 22 
FATHR     BSS  1     FATHER'S ID SEGMENT WORD 1 
BAW7      DBL  W7 
* 
AVMEM     NOP 
          JSB  BLINE
*   IF (LINK := IGET(SUSP3))#0 THEN 
          LDA  SUSP3
          STA  LINK 
          SZA,RSS 
          JMP  L383 
*      BEGIN
*      & PRINT HEADING
          JSB  PRINT
          DEF  MHED1
D15       DEC  15 
* 
          JSB  BLINE
* 
          JSB  PRINT
          DEF  MHED2
          DEC  23 
*      & PRINT A LINE OF HYPHENS
*      FILL(BUFR,"--"); 
          LDA  HYPHN
          JSB  FILL 
* 
          JSB  PRINT
          DEF  BUFR 
          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 
*         W10 := KCVT(IGET(LINK+14) AND @17);  & TYPE 
          LDA  LINK 
          ADA  D14
          LDA  A,I
          AND  B17
          JSB  KCVT1
          STA  W10
*         W3 := KCVT(((WRD22:=IGET(LINK+21)) AND @77)+1);  & PARTN
          LDA  LINK 
          ADA  D21
          LDA  A,I
          STA  WRD22
          AND  B77
          INA 
          JSB  KCVT1
          STA  W3 
*         W5 := KCVT((WRD22 AND @76000)\@2000 + 1);  & SIZE 
          LDA  WRD22
          AND  B76K 
          CLB 
          LSR  10 
          INA 
          JSB  KCVT1
          STA  W5 
*         CNUMD(IGET(LINK+6),W11);  & PRIORITY
          LDA  LINK 
          ADA  D6 
          LDA  A,I
          JSB  CNVTD
          DEF  W11
*         IF (WRD21 := IGET(LINK+20))<0 THEN W14:="B ";  & BATCH? 
          LDB  "B"
          LDA  LINK 
          ADA  D20
          LDA  A,I
          STA  WRD21
          SSA 
          STB  W14
*         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" BIT
*         IF (MORE := ((WRD21 AND @40000)#0)) THEN
          LDA  WRD21
          AND  B40K 
          SZA,RSS 
          JMP  L373 
*            BEGIN
*            & MOVE FATHER NAME(S)
*            FATHR := IGET(KYWRD + (WRD21 AND @377)); 
          LDA  WRD21
          AND  B377 
          ADA  KYWRD
          LDA  A,I
          STA  FATHR
*            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 
*               IF (MORE := (IGET(FATHR+20) AND @40000)#0) THEN 
          LDA  FATHR
          ADA  D20
          LDA  A,I
          AND  B40K 
          SZA,RSS 
          JMP  L373 
*                  BEGIN
*                  I := I + 3;
          LDA  I
          ADA  D3 
          STA  I
*                  FATHR:=IGET(KYWRD+(IGET(FATHR+20) AND @377));
          LDA  FATHR
          ADA  D20
          LDA  A,I
          AND  B377 
          ADA  KYWRD
          LDA  A,I
          STA  FATHR
*                  & 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 22,      CLASS  STATE   GET      POSSIBLE 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 
B174C     OCT  17400
D4        DEC  4
B17       EQU  D15
D32       DEC  32 
B40       EQU  D32
DM34      DEC  -34
DCLAS     DEF  $CLAS
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
* 
*   & GET CLASS I/O TABLE START ADDRESS & NUMBER OF ENTRIES 
*   GETCL(TADDR,TSIZE); 
CLASS     NOP 
          LDA  DCLAS    GET CLASS TABLE ADDRESS 
          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
          DEC  22 
*   & 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 
*         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 
          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
*            INTOF; 
          JSB  $LIBR
          NOP 
*            LINK := IGET(SUSP2);  & HEAD OF GENERAL WAIT QUEUE 
          LDA  SUSP2
          STA  LINK 
*            WHILE LINK#0 AND IGET(LINK+1)#ENTRY DO 
L465      LDA  LINK 
          SZA,RSS 
          JMP  L467 
          LDA  LINK 
          INA 
          LDA  A,I
          CMA,INA 
          ADA  ENTRY
          SZA,RSS 
*               LINK := IGET(LINK); 
          JMP  L467 
          LDA  LINK,I 
          STA  LINK 
          JMP  L465 
*            INTON; 
L467      JSB  $LIBX
          DEF  *+1
          DEF  *+1
*            IF LINK#0 THEN 
          LDA  LINK 
          SZA,RSS 
          JMP  L473 
*               BEGIN  & FOUND "GET" PROGRAM
*               & MOVE NAME TO OUTPUT BUFFER
          LDA  LINK 
          ADA  D12
          CLE,ELA 
          LDB  AW11 
          CLE,ELB 
          JSB  .MBT 
          DEF  D5 
          NOP 
*               END 
*             ELSE
          JMP  L476 
*               & MOVE "<NONE>" TO BUFFER 
L473      JSB  .DFER
AW11      DEF  W11
          DEF  NONE+4 
*            END; 
*         & PICK UP INDEX INTO KEYWORD TABLE, MODULO 32 
*         IDNUM := ROTATE(TWORD AND @17400);
L476      LDA  TWORD
          AND  B174C
          ALF,ALF 
*         IF IDNUM=0 THEN IDNUM:=32;
          SZA,RSS 
          LDA  D32
          STA  IDNUM
*         & FIND POSSIBLE OWNERS
*         I := 15;  & OUTPUT BUFFER POINTER 
          LDA  D15
          STA  I
*         DONE := FALSE;
          CLA 
          STA  DONE 
*         DO
*            BEGIN
*            LINK := IGET(KYWRD+IDNUM); 
L483      LDA  KYWRD
          ADA  IDNUM
          LDA  A,I
          STA  LINK 
*            IF (IGET(LINK+14) AND @20)=0 AND IGET(LINK+12)#0 THEN
          ADA  D14
          LDA  A,I
          AND  B20
          SZA 
          JMP  L490 
          LDA  LINK 
          ADA  D12
          LDA  A,I
          SZA,RSS 
          JMP  L490 
*               BEGIN  & GOOD ID SEGMENT
*               MOVII(LINK+12,AW1+I,5); 
          LDA  LINK 
          ADA  D12
          CLE,ELA 
          LDB  AW1
          ADB  I
          CLE,ELB 
          JSB  .MBT 
          DEF  D5 
          NOP 
*               IF (I := I + 4)>34 THEN 
          LDA  I
          ADA  D4 
          STA  I
          ADA  DM34 
          SZA 
          SSA 
          JMP  L490 
*                  DONE := TRUE;  & OUTPUT BUFFER IS FULL 
          CCA 
          STA  DONE 
*               END;
*            IF (IDNUM:=IDNUM+32)>MAXID THEN
L490      LDA  IDNUM
          ADA  D32
          STA  IDNUM
          CMA,INA 
          ADA  MAXID
          SSA,RSS 
          JMP  L493 
*               DONE := TRUE;  & ALL ID SEGMENTS CHECKED
          CCA 
          STA  DONE 
*            END
*            UNTIL DONE;
L493      LDA  DONE 
          SSA,RSS 
          JMP  L483 
*         & 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
DONE      BSS  1     ALL POSSIBLE CLASS OWNERS FOUND? 
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 
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:
* 
* 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 
AVH10     DBL  VHD10+13 
AVH11     DBL  VHD11+13 
DRNTB     DEF  $RNTB
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 FROM IGET(KYWRD+IDNUM)+12 
L551      LDA  KYWRD
          ADA  IDNUM
          LDA  A,I
          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 FROM IGET(KYWRD+IDNUM)+12 
L558      LDA  KYWRD
          ADA  IDNUM
          LDA  A,I
          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
          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 $OPSY     GET THE SYSTEM SPECIFICATION. 
      RAR,RAR 
      SLA           FOR NON-RTE-M SYSTEMS,
      JMP DOLVL      THE PROCESS IS COMPLETE. 
      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 
*   & 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
*      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
*   & 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; 
*   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.
          LDB  RSTAR
          JSB  .LAX 
          DEF  SAM       GET WORD 1.
          RAL            IF "HP 3000" 
          SSA             BIT IS SET, 
          STB  W4            STORE "*". 
          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 EQT INFORMATION * (C) HEWLETT-PACKARD CO.
*PROCEDURE EQTS;
* 
*   COMMENT 
*   +----------------------------------+
*   !  PRINT CONTENTS OF DS/1000 EQTS  !
*   +----------------------------------+; 
* 
*   BEGIN 
* 
EHED3     ASC 15, EQT #    , 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 (EQT WORD 26) 
          SPC  1
*  BOARD PARAMETER MESSAGE: DO NOT REARRANGE NEXT LINES.
ASTDX ASC 14,   .... BOARD, FIRMWARE REV. 
ASTD. ASC  7,YYWW,  SPEED:
SPDX  ASC  5,........,
SPD1  ASC  7,..TERNAL CLOCK 
ASTDN EQU *-ASTDX 
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
* 
*   INTEGER ARRAY EBUFR[1:22]; & HOLDS EQT WORDS
EBUFR     EQU  *-1
          BSS  27 
* 
"IN"  ASC 1,IN
"IO"  ASC 1,IO
"ST"  ASC 1,ST
"PA"  ASC 1,PA
"EN"  ASC 2,  EN
"DIS" ASC 2, DIS
"HDLC ASC 3, HDLC 
"BSC" ASC 3, BSC
@HDLC DEF "HDLC 
@BSC  DEF "BSC" 
"NOT" ASC 2, NOT
* 
@SPDX DEF SPDX
@CNVD DEF CNVTD 
@CNVO DEF CNVTO 
"0"       ASC  1, 0 
"1"       ASC  1, 1 
*   INTEGER EQNUM,  & EQT NUMBER
EQNUM     BSS  01 
* NOTE: DO NOT CHANGE ORDER OF LUNUM AND OCTAL CONSTANT!
LUNUM     BSS  01 
          OCT  3600      SUBFUNCTION FOR XLUEX
TYPE      BSS  01 
*           FPNTR,  & FORMAT ADDRESS POINTER
FPNTR     BSS  01 
* 
* 
AW20      DEF  W20
DM2       DEC  -2 
DM5       DEC  -5 
DM8       DEC  -8 
DM12      DEC  -12
DM17      DEC  -17
COL1      BSS  1
COL3      BSS  1
OLDSC     BSS  1
          SPC  1
* 
*    (LYLE WEIMAN'S 11-2-76 VERSION MODIFIED BY DAVE TRIBBY)
* 
*   RETRIEVE DS/1000 EQT CONTENTS 
* 
*       IBUF - BUFFER TO ACCOMODATE 15 WORDS OF EQT + 12 WORD EXTENT
*       EQTN - I'LL FIND THE FIRST EQT *AFTER* EQTN WHICH IS
*               DIRECTED TO DRIVER TYPE 65, 66, OR 67 AND RETURN THAT 
*               EQT NUMBER IN EQTN. IF NO EQT IS FOUND, I'LL RETURN 
*               ZERO IN EQTN. 
*   VALUES RETURNED:
*       LU   -  AN LU POINTING TO THE EQT 
*       TYPE -  DRIVER TYPE (65, 66, OR 67) 
* 
GTEQT NOP 
      LDA EQNUM    CHECK OUT THE EQT NUMBER...
      SSA           IF NEGATIVE,
      JMP DONE1       ALL DONE. 
      LDA EQT#      IF > NUMBER OF EQTS 
      CMA,INA        IN SYSTEM, ERROR!
      ADA EQNUM 
      SSA,RSS 
      JMP DONE1 
* 
LOOP1 LDA EQNUM    GET ADDRESS OF EQT.
      ISZ EQNUM    POINT TO NEXT ONE. 
      MPY D15 
      ADA EQTA
      STA EQADR     SAVE. 
      ADA D4        CHECK TYPE CODE.
      LDA A,I 
      ALF,ALF       POSITION TO RIGHT BYTE
      AND B77        AND ISOLATE. 
      STA TYPE
      CPA B65       FOR DVA65?
      JMP MOVE      YES, GO MOVE IT TO USER AREA
      CPA B66       SAME THING IF TYPE 66 
      JMP MOVE
      CPA B67        OR TYPE 67.
      JMP MOVE
      LDA EQNUM    NO, WAS IT THE LAST ONE IN 
      CPA EQT#       THE SYSTEM?
      JMP DONE1     YES, ALL DONE!
      JMP LOOP1     NO, LOOK AGAIN! 
* 
*  MOVE EQT TO USER BUFFER
MOVE  LDA EQADR     A := SOURCE ADDRESS 
      LDB EQTBF     B := DESTINATION
      JSB $LIBR     MAKE SURE EQT ISN'T CHANGED 
      NOP            BY HOLDING OFF INTERRUPTS
      JSB .MVW
      DEF D15       MOVE 15 WORDS FROM EQT. 
      NOP 
*   MOVE EQT EXTENSION
      LDA TYPE      IF TYPE IS 67,
      CPA B67 
      JMP EQEXT       SPECIAL CASE. 
      LDA EQADR     GET ADDRESS OF EQT EXTENSION
      ADA D12        IN EQT WORD 13.
      LDA A,I 
      SZA,RSS       IF THERE ISN'T ANY, 
      JMP ERTN       SKIP THE MOVE. 
MVEQX JSB .MVW      MOVE 12 WORD EXTENSION. 
      DEF D12 
      NOP 
ERTN  JSB $LIBX     RESTORE INTERRUPTS. 
      DEF *+1 
      DEF *+1 
* 
      CLA,INA       PRESET TO LU 1. 
      STA LUNUM 
      LDA LUMAX     GET DRT TABLE SIZE. 
      CMA,INA       NEGATE AS COUNTER.
      STA C0UNT 
      LDB DRT       GET DRT ADDRESS.
LOOP4 LDA B,I       GET DRT ENTRY.
      AND B77       GET EQT NUMBER. 
      CPA EQNUM    IS IT OURS?
      JMP GTEQT,I    YES. ALL DONE: RETURN. 
      ISZ LUNUM    NO. INDEX TO NEXT. 
      INB 
      ISZ C0UNT 
      JMP LOOP4     KEEP GOING TILL RUN OUT...
* 
      CLA           CAN'T FIND AN LU, SET IT = 0. 
      STA LUNUM 
      JMP GTEQT,I   RETURN TO CALLER. 
* 
*  CODE TO SET UP FOR DVG67 EQT EXTENSION 
EQEXT LDA FSTVL     RESOLVE POSSIBLE
      JSB INDR       INDIRECT.
      JMP MVEQX     GO MOVE IT. 
* 
*  GET HERE IF RUN OUT OF EQTS... 
DONE1 CLA           RETURN WITH EQTN=0. 
      STA EQNUM 
      JMP GTEQT,I   RETURN. 
* 
CNVRT BSS 1 
C0UNT BSS 1 
EQADR BSS 1 
B65   OCT 65
B66   OCT 66
B67   OCT 67
      SPC 3 
*  SUBROUTINE TO MOVE EQT DESCRIPTION WORD TO PRINT BUFFER. 
*   (A-REG CONTAINS DESTINATION ADDRESS, FPNTR CONTAINS SOURCE, 
*    AND I CONTAINS WORD NUMBER.) CNVRT CONTAINS ADDRESS OF NUMBER
*    CONVERSION ROUTINE: CNVTO (OCTAL) OR CNVTD (DECIMAL).
* 
EQMOV     NOP 
          STA  COL1 
          ADA  D2 
          STA  COL2 
          ADA  D4 
          STA  COL3 
*      COL1 := KCVT(I);  & EQT WORD NUMBER (OCTAL CONVERSION ONLY)
          LDA  I
          JSB  KCVT1
          LDB  CNVRT
          CPB  @CNVD
          LDA  BLANK
          STA  COL1,I 
*      CNVRT(EBUFR[I],COL2);  & CONTENTS
          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 EQMOV;
          JMP  EQMOV,I
      SPC 3 
*  SUBROUTINE TO PRINT WORDS IN EQT BUFFER. 
*     BEFORE CALLING, SET UP: 
*       FPNTR - POINTER TO NEXT EQT WORD DESCRIPTION
*       I     - NEXT EQT WORD NUMBER
*       A-REG - NEGATIVE NUMBER OF WORDS (CNTR) 
* 
PRWDS NOP           ENTRY.
      STA CNTR      SAVE COUNTER. 
* 
ELOOP JSB BFILL     CLEAR PRINT BUFFER. 
      LDA AW3       MOVE LEFT 
      JSB EQMOV      DESCRIPTION. 
      ISZ CNTR      IF LAST WORD
      JMP MV#2       WAS DESCRIBED, 
      CCA              FAKE COUNTER 
      STA CNTR          TO -1.
      JMP PREQI        GO PRINT.
* 
MV#2  LDA AW20      MOVE RIGHT
      JSB EQMOV      DESCRIPTION. 
* 
PREQI 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 EQT BUFFER.
* 
EQOUT NOP           ENTRY.
      LDA EQNUM     CONVERT EQT 
      JSB CNVTD      NUMBER AND 
      DEF HOLD1       STORE IN
      DLD HOLD2        PRINT BUFFER.
      DST EHED3+3 
* 
      LDA LUNUM     CONVERT LU
      JSB CNVTD      NUMBER AND 
      DEF HOLD1       STORE IN
      DLD HOLD2        PRINT BUFFER.
      DST EHED3+8 
* 
      LDA TYPE      CONVERT DRIVER
      JSB CNVTO      TYPE AND 
      DEF HOLD1       STORE IN
      LDA HOLD3        PRINT BUFFER.
      STA EHED3+14
* 
      JSB BLINE 
      JSB PRINT     PRINT 
      DEF EHED3      EQT
      DEC 15          HEADING.
* 
      LDA PBUFR+9   IF THE THIRD PARAMETER
      CPA "AL"       IS "AL" OR "IO", 
      JMP PEQHD       PRINT THE EQUIPMENT 
      CPA "IO"         TABLE INFORMATION. 
      JMP PEQHD 
* 
      LDA TYPE      GET DRIVER TYPE.
      CPA B65       IF 65,
      JMP EQORT      ALL DONE.
      CPA B66       IF 66,
      JMP PFLBT      PRINT FLAG BITS. 
      JMP LSTAT     FOR 67, DO STATS. 
* 
*  PRINT EQUIPMENT TABLE INFORMATION
* 
PEQHD JSB PRINT 
      DEF EHED4 
D29   DEC 29
* 
*   PRINT FIRST 8 WORDS OF EQT. 
* 
      LDA AEQ1      SET UP DESCRIPTION
      STA FPNTR      POINTER TO EQ1.
      CLA,INA       SET EQT WORD
      STA I          NUMBER TO 1. 
      LDB @CNVO     USE OCTAL 
      STB CNVRT      CONVERSION.
      LDA DM8       SET COUNTER TO 8. 
      JSB PRWDS     PRINT FIRST 8 WORDS.
* 
      LDB TYPE      IF TYPE 
      CPB B67        IS 67, 
      JMP LSTAT        GO DO LONG-TERM STATS. 
* 
      LDA DM2       PRINT WORDS 
      JSB PRWDS      9 AND 10.
* 
      LDA DM12      ASSUME NEXT COUNT IS 12.
      LDB TYPE
      CPB B65       IF TYPE IS 65,
      JMP DOPR2       DO 2ND PRINT. 
* 
*  MUST BE TYPE 66. 
      LDA DM17      ASSUME COUNT IS 17. 
      LDB EBUFR+13  IF NO EQT 
      SZB,RSS        EXTENSION, 
      LDA DM5          ONLY 5 WORDS LEFT. 
      LDB AEQ66     SET UP DESCRIPTION
      STB FPNTR      POINTER. 
* 
DOPR2 JSB PRWDS     PRINT REST OF EQT WORDS.
* 
      LDB TYPE      IF DRIVER TYPE
      CPB B65        IS 65, 
      JMP EQORT        ALL DONE.
* 
*  DRIVER TYPE MUST BE 66.
      LDA EBUFR+13  IF NO 
      SZA,RSS        EQT EXTENSION, 
      JMP EQORT        RETURN.
* 
*  PRINT ANNOTATION OF FLAG BITS (EQT WORD 26) FOR DVA66. 
* 
*     IF THIS IS THE 2ND EQT OF A PAIR, THEY WILL SHARE THE SAME
*     INTERFACE, SO DON'T PRINT FLAG BITS OR READ STATISTICS AGAIN. 
* 
PFLBT LDA EBUFR+4   GET EQT WORD 4. 
      AND B77       ISOLATE SELECT CODE.
      CPA OLDSC     SAME AS LAST ONE? 
      JMP EQORT     YES...RETURN. 
      STA OLDSC     SAVE SELECT CODE. 
      SPC 1 
      JSB BLINE 
      JSB PRINT     PRINT HEADING.
      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+26  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+26
      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 
* 
      LDA LUNUM     SET XLUEX "DON'T
      IOR BIT15      USE SST" BIT.
      STA LUNUM 
* 
      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 EQORT     OTHERWISE ALL DONE! 
* 
BOARD JSB XLUEX     READ
      DEF *+6        LONG-TERM
      DEF SD1         STATISTICS. 
      DEF LUNUM 
EQTBF DEF EBUFR+1 
      DEF D11 
      DEF D2
      RSS           IF RTE ABORTED CALL 
      RAR,SLA        OR IF DRIVER BURPED, 
      JMP DVERR         REPORT ERROR. 
* 
BORDP JSB XLUEX     READ
      DEF *+6        INTERNAL 
      DEF SD1         PARAMETERS. 
      DEF LUNUM 
      DEF EBUFR+12
      DEF D7
      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 DM18
      STA HOLD1 
      LDB EQTBF 
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+12  ISOLATE 
      AND B17        BOARD TYPE.
      LDB @BSC      IF 0, IT'S
      SZA            BSC. OTHERWISE 
      LDB @HDLC       IT'S HDLC.
      STB T10 
      JSB .DFER 
      DEF ASTDX+1 
T10   DEF *-* 
* 
      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 
      LDA EBUFR+12  GET BOARD 
      AND B17        TYPE.
      SZA,RSS       SET UP PROPER 
      JMP DOBSC      PARAMETERS.
* 
*   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. 
      JMP CHKPA 
* 
*   SET UP BSC CARD PARAMETERS
* 
DOBSC LDA EBUFR+18  MOVE DATA 
      STA EBUFR+12   BLOCK SIZE.
      LDA EBUFR+17  GET CONNECT 
      AND B377       TIMER AND STORE
      STA EBUFR+14    IN WORD 14. 
      XOR EBUFR+17  REMOVE FROM WORD 17,
      ALF,ALF        MOVE RETRY TO RIGHT BYTE,
      STA EBUFR+13    AND STORE IN WORD 13. 
      LDA EBUFR+16  ISOLATE MODE
      AND B377       AND STORE BACK 
      STA EBUFR+16    IN WORD 16. 
      LDA BDESC     SET DESCRIPTION 
      STA FPNTR      POINTER. 
      LDA DM16      NUMBER OF WORDS 
      STA HOLD1      IS 16. 
* 
*  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.
      JSB PRWDS     GO PRINT. 
      JMP EQORT     RETURN. 
      SPC 1 
* 
*  PRINT MESSAGE WHEN INFORMATION CALL TO DVA66 FAILS.
* 
DVERR JSB PRINT     PRINT "DRIVER 
      DEF DEVER      ERROR".
      DEC 12
      JMP EQORT     RETURN. 
* 
DEVER ASC 12,   DRIVER REPORTS ERROR
      SPC 1 
BIT9  OCT 1000
BIT15 OCT 100000
B34   OCT 34
DM4   DEC -4
DM13  DEC -13 
DM14  DEC -14 
DM16  DEC -16 
DM18  DEC -18 
D110  DEC 110 
      SPC 2 
* 
* TYPE IS 67. PRINT SLC LONG TERM STATISTICS. 
LSTAT JSB BLINE 
      JSB PRINT     PRINT 
      DEF SHEAD      HEADING. 
      DEC 13
      LDA MSGTB     INITIALIZE
      STA FPNTR      MESSAGE POINTER. 
      LDA D16       I := 16.
      STA I 
      LDA @CNVD     SET UP DECIMAL
      STA CNVRT      CONVERSION.
      LDA DM11      SET UP COUNTER FOR 11 FIELDS. 
      JSB PRWDS     PRINT STATISTICS. 
*   BLINE;
EQORT JSB BLINE 
      JMP EQOUT,I   RETURN. 
      SPC 3 
* 
*   "EQ" COMMAND STARTS HERE
* 
EQTS  NOP           ENTRY FOR EQ COMMAND. 
      CLA           CLEAR "OLD" 
      STA OLDSC      SELECT CODE. 
      JSB BLINE 
* 
      LDA CONWD     IF THIS IS A
      SZA            NON-INTERACTIVE RUN, 
      JMP L857        SET UP TO PRINT IO INFO.
* 
*  PARSE INPUT BUFFER FOR "EQ,N" AND STATISTICS OPTIONS 
* 
      JSB PARSE 
      DEF *+4 
      DEF FNCTN 
      DEF RDLEN 
      DEF PBUFR 
      LDA INEQT     IF "N" NOT
      SZA,RSS        SPECIFIED, 
      JMP L857A       PRINT ALL DS EQTS.
      SSA           IF NEGATIVE,
      JMP EQTS,I      RETURN. 
      ADA DM1 
      STA EQNUM     GET EQT 
      JSB GTEQT      INFO.
      LDA INEQT     WAS IT
      CPA EQNUM       THE ONE SPECIFIED?
      JSB EQOUT         YES--PRINT THE EQT. 
      JMP EQTS,I      RETURN. 
      SPC 1 
* PRINT ALL DS/1000 EQTS: 
* 
L857  LDA "AL"      FOR NON-INTERACTIVE RUN,
      STA PBUFR+9    PRINT EVERYTHING.
* 
*   & SEARCH ALL EQTS 
*   EQNUM := 0; 
L857A     CLA 
          STA  EQNUM
*   DO
*      BEGIN
*      GTEQT(EBUFR[1],EQNUM,LUNUM); 
L860      JSB  GTEQT
*      IF EQNUM#0 THEN
          LDA  EQNUM
          SZA,RSS 
          JMP  EQTS,I 
* CALL SUBROUTINE TO PRINT EQT INFORMATION
          JSB  EQOUT
*      END
*   UNTIL EQNUM=0;
          JMP  L860 
          SPC  2
PBUFR BSS 33        PARSE BUFFER
INEQT EQU PBUFR+5   SECOND PARAMETER
* 
*   & EQT WORDS DESCRIPTIONS--20 CHARACTERS EACH
AEQ1      DEF *+1 
          ASC 10,I/O LIST ADDRESS 
          ASC 10,INITIATION ADDRESS 
          ASC 10,CONTINUATION ADDR
          ASC 10,FLAGS/SUBCHNL/SC 
          ASC 10,AV/TYPE/STATUS 
          ASC 10,CONWD
          ASC 10,DATA BUFFER ADDRESS
          ASC 10,DATA BUFFER LENGTH 
          ASC 10,REQUEST BUFFER ADDR
          ASC 10,REQUEST BUFFER LEN 
          ASC 10,COROUTINE ADDRESS
          ASC 10,CURRENT STATUS 
          ASC 10,EQT EXTENSION ADDR 
          ASC 10,NOMINAL TIMEOUT
          ASC 10,TIMEOUT CLOCK
          ASC 10,MICROCODE COUNT
          ASC 10,LAST WORD RECEIVED 
          ASC 10,VERTICAL PARITY WORD 
          ASC 10,DIAGONAL PARITY WORD 
          ASC 10,TOTAL BLOCK TRANSFERS
          ASC 10,TOTAL WRITE RETRIES
          ASC 10,LU NUMBER
* 
*  EQT DESCRIPTIONS FOR DVA66 
AEQ66     DEF  *+1
          ASC 10,SERVICING PROCESS
          ASC 10,ASSOCIATED EQT 
          ASC 10,EQT EXTENSION ADDR 
          ASC 10,NOMINAL TIMEOUT
          ASC 10,TIMEOUT CLOCK
          ASC 10,RETRY CNTR/READ PNTR 
          ASC 10,1ST READ LEN/SKIP CT 
          ASC 10,2ND READ LEN/SKIP CT 
          ASC 10,FRAME LENGTH ON CARD 
          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 FLAG BITS (IN EXTENSION WORD # 12) 
* 
ASTDS DEF *+1 
      ASC 8, READ ABORTED            BIT 0
      ASC 8, WRITE ABORTED               1
      ASC 8, RD RQ PENDING               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 1 
* 
*  STATISTICS AND PARAMETER DESCRIPTIONS
* 
*     HDLC BOARD
* 
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,RECIVER 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
* 
*     BSC BOARD 
* 
BDESC DEF *+1 
      ASC 10,GOOD BLOCKS SENT 
      ASC 10,GOOD BLOCKS RCVD 
      ASC 10,BAD BLOCKS RECEIVED
      ASC 10,NAKS RECEIVED
      ASC 10,WACKS SENT 
      ASC 10,WACKS RECEIVED 
      ASC 10,TTDS SENT
      ASC 10,TTDS RECEIVED
      ASC 10,RESPONSE ERRORS
      ASC 10,3 SECOND TIMEOUTS
      ASC 10,LINE ERRORS
*    PARAMETERS:
      ASC 10,BLOCK SIZE (BYTES) 
      ASC 10,RETRY LIMIT
      ASC 10,CONNECT TIMER
      ASC 10,TRACE SIZE (BYTES) 
      ASC 10,MODE 
      SPC 3 
* 
SHEAD ASC 13, SLC LONG TERM STATISTICS
MSGTB DEF *+1 
      ASC 10,READ REQUESTS
      ASC 10,WRITE REQUESTS 
      ASC 10,MESSAGES TRANSMITTED 
      ASC 10,SPURIOUS INTERRUPTS
      ASC 10,LINE ERRORS
      ASC 10,NAKS RECEIVED
      ASC 10,BCC/PARITY ERRORS
      ASC 10,LONG TIMEOUTS
      ASC 10,RESPONSE ERRORS
      ASC 10,RESPONSE REJ 
      ASC 10,WACK/TTD RECEIVED
      EXT D$XS5 
FSTVL DEF D$XS5+1 
* 
      HED DSINF: PRINT LU INFORMATION * (C) HEWLETT-PACKARD CO. 
*  +---------------------------------+
*  ! PRINT INFORMATION ON DS/1000 LU !
*  +---------------------------------+
      SPC 1 
*  NOTE: THE LU COMMAND WAS ADDED FOR COMPATIBILITY WITH DSINL, 
*        THE VERSION OF DSINF FOR RTE-L (WRITTEN BY LYLE WEIMAN). 
*        THE LU MUST BE SPECIFIED IN THE COMMAND (TO GET ALL LUS, 
*        USE THE EQ COMMAND) AND IT IS NOT ACCESSABLE VIA RUN-TIME
*        PARAMETER 5. THE EQ COMMAND IS RETAINED BECAUSE IT IS
*        POSSIBLE SOME EQTS MAY NOT BE POINTED TO BY AN LU. 
      SPC 1 
LUS   NOP           ENTRY FOR LU COMMAND. 
      CLA           CLEAR "OLD" 
      STA OLDSC      SELECT CODE. 
      JSB BLINE 
* PARSE INPUT BUFFER FOR LU NUMBER AND STATISTICS OPTION
      JSB PARSE 
      DEF *+4 
      DEF FNCTN 
      DEF RDLEN 
      DEF PBUFR 
      LDA INEQT     IF "N" NOT
      SZA            SPECIFIED, 
      SSA             OR NEGATIVE,
      JMP LUS,I        RETURN.
      CMA,INA       IF GREATER
      ADA LUMAX      THAN LARGEST 
      SSA             LU NUMBER,
      JMP LUS,I        RETURN.
* 
      LDA INEQT 
      ADA DM1 
      ADA DRT       GET EQT 
      LDA A,I        NUMBER FROM
      AND B77         DRT.
      STA INEQT 
      SZA,RSS       IF ZERO,
      JMP LUS,I      RETURN.
      ADA DM1 
      STA EQNUM     GET EQT 
      JSB GTEQT      INFORMATION. 
      LDA INEQT     IF LU POINTED 
      CPA EQNUM      TO A GOOD EQT, 
      JSB EQOUT        PRINT INFO.
* 
      JMP LUS,I     RETURN. 
      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 25
* 
      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 W22 
* 
      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 W15 
* 
      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.
* 
      CMA,INA       IF LU IS
      ADA LUMAX      GREATER
      SSA,RSS         THAN MAXIMUM, 
      JMP LUINF 
      LDA STARS          PUT ASTERISKS
      STA W11             IN EQT AND
      STA W13              SUBCHANNEL FIELDS. 
      JMP PRNRV          GO PRINT.
* 
*  GOOD LU NUMBER. GET DRT INFORMATION. 
* 
LUINF CCA           CALCULATE 
      ADA DRT        DRT ENTRY
      ADA T7          ADDRESS.
      LDA A,I       GET CONTENTS. 
      STA T2
      AND B377      ISOLATE EQT NO. 
      STA T3
      JSB KCVT1     CONVERT TO DECIMAL. 
      STA W11 
* 
      LDA T2
      CLB 
      LSR 11        ISOLATE SUBCHANNEL. 
      JSB KCVT1     CONVERT TO DECIMAL. 
      STA W13 
* 
      CCA           CALCULATE 
      ADA T3         EQT ENTRY
      MPY D15          ADDRESS. 
      ADA EQTA
      ADA D4        GET WORD
      LDA A,I        FIVE.
      ALF,ALF       ISOLATE DEVICE
      AND B77        TYPE.
      JSB CNVTO     CONVERT TO
      DEF W19        OCTAL. 
* 
PRNRV JSB PRINT     PRINT NODAL 
      DEF BUFR       INFORMATION. 
      DEC 24
* 
      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 22,      NODE    LU   EQT SUB  T/O(SEC)   TYPE
      ASC  3, LEVEL 
NODM4 ASC 15,       (* INDICATES NEIGHBOR)
* 
DM256 DEC -256
* 
NCNT  NOP           NUMBER OF NODES 
NPNT  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.
*   +----------------------------------+
*   ! 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
      NOP 
* 
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. 
      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
                                                                                                                                                                                  