ASMB,L,R,C
      NAM NDTDU,19,89 DUMP NDT FILE 771104 24999-16213 REV 1902 
      SPC 1 
*  **************************************************************** 
*  * (C) COPYRIGHT HEWLETT-PACKARD COMPANY 1978.  ALL RIGHTS      * 
*  * RESERVED.  NO PART OF THIS PROGRAM MAY BE PHOTOCOPIED,       * 
*  * REPRODUCED OR TRANSLATED TO ANOTHER PROGRAM LANGUAGE WITHOUT * 
*  * THE PRIOR WRITTEN CONSENT OF HEWLETT-PACKARD COMPANY.        * 
*  **************************************************************** 
      SPC 1 
******************************* 
*                             * 
*  NAME:       NDTDU          * 
*                             * 
*  SOURCE:     24999-18213    * 
*                             * 
*  RELOCATABLE:24999-16213    * 
*                             * 
*  PROGRAMMER: DT             * 
*                             * 
*  DATE:       OCTOBER 1977   * 
*                             * 
******************************* 
      SPC 3 
*  THIS PROGRAM FORMATS AND PRINTS THE INFORMATION STORED IN A DS/1000
*  NDT (NETWORK DESCRIPTION TABLE) FILE CREATED BY NDTGN. SCHEDULE FROM 
*  RTE WITH:
*    *RU,NDTDU,<NDT FILE NAMR OR INPUT LU>,<OUTPUT LU>,<WIDTH>
* 
*  THE SCHEDULING PARAMETERS HAVE THE FOLLOWING MEANINGS: 
* 
*  <NDT FILE NAMR OR INPUT LU>
*    THE FIRST PARAMETER IS EITHER THE NAMR FOR THE NDT FILE (IN THE
*    FORMAT NAME:SECURITY:CARTRIDGE) OR THE LU OF AN INTERACTIVE DEVICE 
*    WHERE THE NAMR CAN BE READ. DEFAULT IS 1 OR THE MTM LU NUMBER. 
* 
*  <OUTPUT LU>
*    THE LU OF AN OUTPUT DEVICE WHERE INFORMATION CAN BE PRINTED. DEFAULT 
*    IS SAME AS <INPUT LU>. 
* 
*  <WIDTH>
*    THE NUMBER OF COLUMNS ON THE PRINT PAGE. DEFAULT IS 80. MINIMUM IS 
*    50. MAXIMUM IS 128.
* 
*  IF THE COMMAND  *BR,NDTDU  IS ENTERED, NDTDU STOPS PRINTING, CLOSES
*  THE NDT FILE, AND TERMINATES.
      SPC 3 
      EXT RMPAR,GETST,OPEN,CLOSE,READF,POSNT,EXEC 
      EXT CNUMD,IFBRK,IFTTY,$CVT1,$PARS,$LIBR,$LIBX 
      EXT #FWAM,#NODE 
      SPC 1 
A     EQU 0 
B     EQU 1 
      SKP 
*** START OF PROGRAM ***
      SPC 1 
NDTDU JSB RMPAR     GET SCHEDULING PARAMETERS.
      DEF *+2 
      DEF INLU
      SPC 1 
** PROCESS FIRST PARAMETER: NAMR OR INPUT LU
      LDA INLU
      SSA 
      JMP TRMN8     INPUT LU IS NEGATIVE--TERMINATE.
      SZA 
      JMP LU? 
      LDB B401      INPUT LU NOT SPECIFIED--USE 1.
      JMP STIN
LU?   AND B777C     SAVE BITS 15-6. 
      SZA,RSS       IF 1ST PARAM ISN'T LU,
      JMP TTY?
      LDA B401       SET INPUT LU 
      STA INLU        TO SYS CONSOLE. 
      JSB GETST      GET NAMR 
      DEF *+4         FROM
@STRG DEF STRNG        COMMAND
      DEF D12           STRING. 
      DEF LOG 
      JMP FILE       GO PARSE NAMR. 
TTY?  JSB IFTTY     CHECK FOR 
      DEF *+2        INTERACTIVE
      DEF INLU        INPUT LU. 
      SSA,RSS 
      JMP TRMN8     NON-INTERACTIVE--TERMINATE. 
      LDA INLU      SET INTERACTIVE 
      IOR B400       BIT IN 
STIN  STA INLU        INPUT LU. 
      JSB EXEC      PRINT 
      DEF *+5         "WHAT IS NDT FILE NAMR?"
      DEF D2
      DEF INLU
      DEF NAMR? 
      DEF D12 
      JSB EXEC      READ REPLY. 
      DEF *+5 
      DEF D1
      DEF INLU
      DEF STRNG 
      DEF D12 
      STB LOG 
*  NOW READY TO PARSE FILE NAMR.
FILE  LDA @STRG     MOVE STRING SO
      LDB @STG2      IT CAN BE MODIFIED 
      MVW D12         BEFORE PARSE. 
      LDB COMMA     INSURE
      LDA @STG2      COMMA AT 
      ADA LOG         END OF
      STB A,I          NAMR.
*  SET COLONS TO COMMAS FOR PARSE.
      LDA SWRD      A := ",:".
      LDB SBYTA     B := BYTE ADDRESS OF STRING.
LOOP1 SFB           SCAN FOR COLON. 
      JMP *+2       COLON FOUND.
      JMP DONE      COMMA FOUND (MUST BE END).
      ALF,ALF       REPLACE 
      SBT            COLON WITH 
      ALF,ALF          COMMA. 
      JMP LOOP1     SCAN AGAIN. 
DONE  CMB,INB       STOP SCANNING AT COMMA. 
      ADB SBYTA 
      CMB,INB       B := NO. OF CHARACTERS. 
      STB LOG 
*  CALL THE RTE PARSER. 
      LDA @STG2     A := WORD ADDRESS OF STRING.
      JSB $LIBR 
      NOP 
      JSB $PARS 
      DEF PBUF
      JSB $LIBX 
      DEF *+1 
      DEF *+1 
      SPC 1 
** PROCESS SECOND PARAMETER: OUTPUT LU
      LDA OUTLU 
      SZA,RSS 
      LDA INLU      ZERO--USE DEFAULT.
      IOR B200      SET BIT TO PRINT COL 1. 
      STA OUTLU     STORE OUTPUT LU.
      AND B77       SET UP
      IOR B1100      CONTROL WORD 
      STA CONWD       FOR PAGE EJECT. 
      SPC 1 
** OPEN THE FILE
      JSB OPEN
      DEF *+7 
      DEF DCB 
      DEF ERROR 
      DEF NAME
      DEF D0
      DEF SECU
      DEF ICR 
      JSB ERCHK     CHECK FOR FMP ERROR.
      CPA D9        TYPE = 9? 
      JMP *+2 
      JMP BADRC       NO--SOMETHING'S WRONG!
      SPC 1 
** PROCESS THIRD PARAMETER: WIDTH.
      LDA WIDTH     IF WIDTH
      SZA            IS NOT 
      JMP NOT0        PROVIDED, 
      LDA D12           NDFIT := 12 
      JMP STFIT 
NOT0  ADA N50       IF WIDTH
      SSA,RSS        IS < 50, 
      JMP NOTSM 
      LDA D7            NDFIT := 7
      JMP STFIT 
NOTSM LDA WIDTH     IF WIDTH
      ADA N129       IS > 129,
      SSA 
      JMP NOTBG 
      LDA D20           NDFIT := 20 
      JMP STFIT 
*  CALCULATE NUMBER OF NODES THAT WILL FIT IN THE GIVEN WIDTH 
NOTBG CLB 
      LDA WIDTH     NDFIT :=
      ARS                   WIDTH/2 
      ADA N4                       -4 
      DIV D3                         /3.
STFIT CMA,INA       (NEGATE NDFIT FOR 
      STA NDFIT       USE AS COUNTER.)
      SPC 1 
** GRAB END OF PARTITION FOR BUFFER AREA. 1/3 GOES FOR FIRST RECORD,
*  2/3 GOES FOR REST OF RECORDS.
      LDA XEQT      LOOK IN ID
      ADA D23        SEGMENT FOR
      LDA A,I         HI MAIN ADDRESS + 1.
      STA @RCR1     STORE AS FIRST RECORD ADDR. 
      INA 
      STA @NODE     2ND WORD IS ADDRESS OF NODES. 
      CMA,INA       SUBTRACT FROM 
      ADA BGLWA      LAST WORD AVAILABLE FOR
      CLB             TOTAL SIZE OF BLOCK.
      DIV D3
      STA MAXND     SAVE MAX # OF NODES.
      SZA,RSS       IF ZERO,
      JMP TOMNY       NO ROOM IN PARTITION. 
      INA 
      STA LNRC1     MAX SIZE FOR RECORD 1.
      ADA MAXND 
      ADA MAXND 
      STA MAXRC     MAX SIZE FOR REST OF RECORDS. 
      LDA @RCR1     CALCULATE ADDRESS 
      ADA LNRC1      OF READ BUFFER AS
      STA @RCRD       1ST ADDR PLUS 1ST LENGTH. 
      SPC 1 
** PRINT HEADING INFORMATION
      LDA LOG       A :=
      ARS                NO. OF WORDS IN NAMR.
      ADA D18       ADD SIZE OF HEADER. 
      STA LOG 
      JSB PRINT     PRINT 
      DEF HED1       FIRST
      DEF LOG         HEADING.
      LDA #FWAM     IF NODE 
      SZA,RSS        IS INITIALIZED,
      JMP NOTIN 
      JSB CNUMD         CONVERT LOCAL 
      DEF *+3            NODE NUMBER
      DEF #NODE           TO ASCII
      DEF ATNOD+4          (DECIMAL)
      JSB PRINT             AND 
      DEF ATNOD              PRINT
      DEF D7                  IT. 
      JMP READ1       ELSE
NOTIN JSB BLINE        PRINT BLANK LINE.
READ1 JSB READF     READ NUMBER 
      DEF *+5        OF NODES AND 
      DEF DCB         FILL NODE ARRAY 
      DEF ERROR        FROM FIRST RECORD. 
@RCR1 BSS 1 
      DEF LNRC1 
      JSB ERCHK     CHECK FOR FMP ERROR.
      LDA @RCR1,I 
      STA NNODE     SAVE NUMBER OF NODES. 
      STA NDLFT     NDLFT := NNODE. 
      CMA,INA 
      STA COUNT 
      JSB CNUMD     CONVERT 
      DEF *+3        NUMBER OF
      DEF COUNT        NODES TO 
      DEF HED2          ASCII (DECIMAL).
      JSB PRINT     PRINT 
      DEF HED2       SECOND 
      DEF D13         HEADING.
      JSB BLINE     PRINT BLANK LINE. 
      SPC 1 
*  CHECK FOR TOO MANY NODES 
      LDA NNODE     IF NUMBER OF NODES
      SSA,RSS        ISN'T NEGATIVE OR IS 
      JMP TOMNY       GREATER THAN THE
      ADA MAXND         MAXIMUM NUMBER OF 
      CMA,SSA,RSS        NODES THAT WILL FIT, 
      JMP TOMNY           GO PRINT ERROR MESSAGE. 
      SPC 1 
** INITIALIZE NO. OF NODES TO SKIP := 0 FOR FIRST TIME. 
      CLA           SKNOD := 0. 
      STA SKNOD 
      SKP 
*** BEGINNING OF BIG LOOP *** 
      SPC 1 
** HOW MANY NODES DO WE PRINT PER LINE? 
BLOOP LDA NDFIT     NDFIT :=
      LDB NDFIT      WHICHEVER IS 
      CMB,INB         LESS IN 
      ADB NDLFT        MAGNITUDE OF 
      SSB,RSS           NDFIT AND 
      LDA NDLFT          NDLFT. 
      STA NDFIT 
      SPC 1 
** FIND # OF WORDS FOR OUTPUT 
      CMA,INA       CALCULATE 
      INA            3 WORDS PER
      MPY D3          NODE PLUS 
      INA              FRONT OF 
      STA OUTLN         LINE. 
      SPC 1 
** CONVERT "TO" NODE NUMBERS INTO LINE
      JSB CLEAR     CLEAR OUTPUT BUFFER.
      LDA @NODE     SET "TO" NODE POINTER 
      ADA SKNOD      TO FIRST NODE. 
      STA TNODE       (SKIP OVER ALREADY PRINTED NODES.)
      LDA NDFIT     COUNT := -(NUMBER OF NODES TO PRINT). 
      STA COUNT 
      LDA @LIN4     INITIALIZE
      STA PNTR2      COLUMN POINTER.
CNVRT JSB CNUMD     CONVERT NODE
      DEF *+3        NUMBER INTO
TNODE BSS 1           PROPER LINE 
PNTR2 BSS 1            COLUMNS. 
      ISZ TNODE     BUMP
      LDA PNTR2      THE
      ADA D3          TWO 
      STA PNTR2        POINTERS.
* 
      ISZ COUNT     BUMP NODE COUNT.
      JMP CNVRT     NOT DONE--CONVERT NEXT NO.
* 
      JSB PRINT       PRINT 
      DEF LINE         LINE.
      DEF OUTLN 
      SKP 
** PRINT NRV FOR EACH NODE
      LDA NNODE     CONT2:=-(NUMBER OF NODES) 
      STA CONT2      [USED FOR "FROM" NODE].
      LDA @NODE 
      STA FNODE 
      JSB PRINT     PRINT 
      DEF RULE       HORIZONTAL 
      DEF OUTLN       LINE. 
INIT1 JSB CLEAR     CLEAR LINES.
      JSB READF     READ
      DEF *+5        NDT
      DEF DCB         RECORD. 
      DEF ERROR 
@RCRD BSS 1 
      DEF MAXRC 
      JSB ERCHK     CHECK FOR RFA ERROR.
      LDA @RCRD,I   IF FIRST
      SSA,RSS        WORD >= 0, 
      JMP BADRC        SOMETHING'S WRONG. 
      JSB CNUMD     CONVERT 
      DEF *+3        "FROM" 
FNODE NOP             NODE
      DEF LINE+1       NUMBER.
      LDA @RCRD     INITIALIZE
      INA            RECORD POINTER TO
      STA RCDPT       FIRST NODE INFORMATION. 
      LDA NDFIT     COUNT:=-(NUMBER OF NODES TO PRINT)
      STA COUNT      [USED FOR "TO" NODE].
      LDA @NODE     INITIALIZE ADDRESS
      STA TNODE      OF "TO" NODE.
      LDA @LIN4     INITIALIZE
      ADA D2         LINE 
      STA PNTR2       POINTERS. 
      ADA D62 
      STA L1PNT 
* 
*  SKIP OVER PREVIOUSLY-PRINTED NODES IN THE RECORD.
      LDB SKNOD     B :=
      CMB             -(NO. OF NODES TO SKIP) - 1 
CHECK INB,SZB,RSS   IF DONE,
      JMP CNVTO      GO START CONVERTING. 
      LDA RCDPT,I 
      CPA TNODE,I   IF RECORD NODE = "TO" NODE, 
      JMP *+2 
      JMP *+3 
      ISZ RCDPT       POINT TO
      ISZ RCDPT        NEXT NODE NUMBER.
      ISZ TNODE     BUMP TNODE ADDRESS. 
      JMP CHECK     CHECK FOR END.
* 
*  CONVERT "TO" NODE NUMBERS. 
CNVTO LDA RCDPT,I   GET NEXT NODE'S NUMBER. 
      CPA TNODE,I   IF <> "TO" NODE,
      JMP *+2 
      JMP BUMP1       JUST BUMP OUTPUT POINTERS.
      JSB IFBRK     IF BREAK FLAG IS SET, 
      DEF *+1 
      SSA 
      JMP FINIS       TERMINATE.
*  INSERT LU INTO LINE
      ISZ RCDPT     GET NODE'S
      LDA RCDPT,I    TIMEOUT/LU INFO. 
      SSA           IF NEGATIVE,
      JMP BADRC       SOMETHING'S WRONG.
      AND B77       ISOLATE LU. 
      JSB $LIBR 
      NOP 
      CCE 
      JSB $CVT1     CONVERT.
      JSB $LIBX 
      DEF *+1 
      DEF *+1 
      STA PNTR2,I   STORE IN LINE.
*  INSERT TIMEOUT IN LINE 1 
      LDA RCDPT,I 
      AND B377C     ISOLATE BITS 13-7.
      ALF,ALF       POSITION TIMEOUT
      RAL,RAL        TO LOWER BYTE. 
      SZA           IF NOT ZERO,
      IOR N256       FILL IN UPPER BYTE.
      CMA,INA       MAKE POSITIVE.
      MPY D5        MULTIPLY BY 5.
      STA TEMP1 
      JSB CNUMD     CONVERT 
      DEF *+3        TO ASCII 
      DEF TEMP1       (DECIMAL).
      DEF L1PNT,I 
      ISZ RCDPT     POINT TO NEXT NODE IN RECORD. 
*  INCREMENT OUTPUT POINTERS
BUMP1 LDA PNTR2     PNTR2 :=
      ADA D3            PNTR2 + 3.
      STA PNTR2 
      ADA D62       L1PNT :=
      STA L1PNT         PNTR2 + 62. 
* 
      ISZ TNODE     BUMP "TO" NODE ADDRESS. 
      ISZ COUNT     IF NOT LAST "TO" NODE,
      JMP CNVTO      CONVERT NEXT ONE.
      LDA VLINE+4   PUT "!" 
      STA LINE+4     IN LINE
      STA LINE1+4     AND LINE1.
      JSB PRINT     PRINT 
      DEF LINE       LINE.
      DEF OUTLN 
      JSB PRINT     PRINT 
      DEF LINE1      LINE1. 
      DEF OUTLN 
      JSB PRINT     PRINT 
      DEF VLINE      VERTICAL 
      DEF D5          LINE. 
      ISZ FNODE     BUMP "FROM" NODE POINTER
      ISZ CONT2      AND COUNT. 
      JMP INIT1     IF NOT DONE, DO NEXT "FROM" NODE. 
      SPC 1 
*  DONE WITH THIS PAGE
      JSB EXEC      SKIP
      DEF *+4        TO 
      DEF D3          NEXT
      DEF CONWD        PAGE.
      DEF N4
      LDA NDFIT     FOR NEXT PASS, THE
      CMA,INA        NUMBER OF NODES TO 
      ADA SKNOD      SKIP IS THE PREVIOUS 
      STA SKNOD        NUMBER PLUS THE
      ADA NNODE         NUMBER JUST PRINTED.
      SZA,RSS       PRINTED THEM ALL? 
      JMP FINIS       YES! ALL DONE.
*  NEED TO PASS THROUGH FILE AGAIN. 
      STA NDLFT     SAVE NUMBER OF NODES LEFT.
      JSB POSNT     SPACE 
      DEF *+5        THE
      DEF DCB         NDT 
      DEF ERROR        FILE 
      DEF D2            TO
      DEF D1             REC # 2. 
      JSB ERCHK     CHECK FOR FILE ERROR. 
      JSB EXEC      SKIP
      DEF *+4        FOUR 
      DEF D3          LINES.
      DEF CONWD 
      DEF D4
      JMP BLOOP     GO BACK IN THE BIG LOOP 
      SPC 2 
** DONE **
FINIS JSB CLOSE     CLOSE 
      DEF *+2        THE
      DEF DCB         NDT FILE. 
TRMN8 JSB EXEC      TERMINATE.
      DEF *+2 
      DEF D6
      SKP 
*** SUBROUTINE TO PRINT A MESSAGE ON OUTLU ***
*  CALLING SEQUENCE: JSB PRINT
*                    DEF <MESSAGE>
*                    DEF <LENGTH> 
* 
PRINT NOP 
      LDA PRINT,I   PICK
      STA MSG        UP 
      ISZ PRINT       PARAMETERS. 
      LDA PRINT,I 
      STA LEN 
      ISZ PRINT     SET RETURN ADDRESS. 
      JSB EXEC      CALL
      DEF *+5        EXEC 
      DEF D2          FOR 
      DEF OUTLU        WRITE. 
      DEF MSG,I 
      DEF LEN,I 
      JMP PRINT,I   RETURN. 
MSG   BSS 1 
LEN   BSS 1 
      SPC 3 
*** SUBROUTINE TO PRINT A BLANK LINE ***
* CALLING SEQUENCE: JSB BLINE 
* 
BLINE NOP 
      JSB PRINT 
      DEF BLANK 
      DEF D1
      JMP BLINE,I 
      SPC 3 
*** SUBROUTINE TO SET LINE & LINE1 TO BLANKS ***
*  CALLING SEQUENCE: JSB CLEAR
* 
CLEAR NOP 
      LDA @BLNK     SOURCE := BLANK.
      LDB @LINE     DESTINATION := LINE.
      MVW D129      MOVE BLANK THROUGH 128 WORDS. 
      JMP CLEAR,I   RETURN
      SPC 3 
*** SUBROUTINE TO CHECK FOR FMP ERROR *** 
*  CALLING SEQUENCE: JSB ERCHK
ERCHK NOP 
      LDA ERROR     IF NO 
      SSA,RSS        ERROR, 
      JMP ERCHK,I     RETURN. 
      CMA,INA       MAKE ERROR
      STA ERROR      POSITIVE.
      JSB CNUMD     CONVERT 
      DEF *+3        ERROR
      DEF ERROR       TO ASCII
      DEF ERMSG+8      (DECIMAL). 
      JSB PRINT     PRINT 
      DEF ERMSG      ERROR
      DEF D13         MESSAGE.
      JMP FINIS     DONE. 
      SUP 
ERMSG ASC 13, *** FMP ERROR -NNNNNN *** 
      SPC 3 
*** ROUTINE CALLED WHEN TOO MANY NODES ARE IN FILE ***
*  CALLING SEQUENCE: JMP TOMNY
* 
TOMNY JSB CNUMD     CONVERT NUMBER
      DEF *+3        OF NODES ALLOWED 
      DEF MAXND       TO ASCII (DECIMAL). 
      DEF ASCMX 
      JSB PRINT     PRINT 
      DEF EMSG1      ERROR
      DEF D18         MESSAGE.
      JMP FINIS     TERMINATE.
* 
EMSG1 ASC 13, *** TOO MANY NODES. MAX = 
ASCMX ASC 5,NNNNNN ***
      SPC 3 
*** ROUTINE CALLED WHEN BAD DATA IS READ
*  CALLING SEQUENCE: JMP BADRC
* 
BADRC JSB PRINT     PRINT 
      DEF EMSG2      ERROR
      DEF D13         MESSAGE.
      JMP FINIS     TERMINATE.
* 
EMSG2 ASC 13, *** BAD DATA IN FILE ***
      SKP 
*** BASE PAGE VALUES ***
XEQT  EQU 1717B     ID SEG ADDR 
BGLWA EQU 1777B     LAST WORD IN PARTITION
      SPC 1 
*** DATA STORAGE AREA *** 
      SPC 1 
*  RUN-TIME PARAMETERS
INLU  BSS 1         INPUT LU
OUTLU BSS 1         OUTPUT LU 
WIDTH BSS 1         LINE WIDTH
      BSS 2         LAST 2 NOT USED 
      SPC 1 
COMMA ASC 1,,,
SWRD  ASC 1,,:      SCAN WORD 
SBYTA DBL STRG2     FIRST BYTE OF COMMAND STRING
@STG2 DEF STRG2     FIRST WORD OF COMMAND STRING
      SPC 1 
*  PARSE BUFFER FOR FILE NAMR 
PBUF  BSS 1 
NAME  BSS 3 
      BSS 1 
SECU  BSS 3 
      BSS 1 
ICR   BSS 3 
      BSS 21
      SPC 1 
*  NDT FILE'S DATA CONTROL BLOCK
DCB   BSS 144 
      SPC 1 
*  NUMERIC CONSTANTS: 
B777C OCT 77700 
B377C OCT 37700 
B1100 OCT 1100
B401  OCT 401 
B400  OCT 400 
B200  OCT 200 
B77   OCT 77
D129  DEC 129 
D62   DEC 62
D23   DEC 23
D20   DEC 20
D18   DEC 18
D13   DEC 13
D12   DEC 12
D9    DEC 9 
D7    DEC 7 
D6    DEC 6 
D5    DEC 5 
D4    DEC 4 
D3    DEC 3 
D2    DEC 2 
D1    DEC 1 
D0    DEC 0 
N4    DEC -4
N50   DEC -50 
N256  DEC -256
N129  DEC -129
      SPC 1 
*  ALPHABETIC STRINGS FOR I/O 
NAMR? ASC 13,/NDTDU: NDT FILE NAMR? _ 
HED1  ASC 18, NETWORK DESCRIPTION TABLE IN FILE 
STRNG BSS 12        [COMMAND STRING]
STRG2 BSS 12
ATNOD ASC 7, AT NODE NNNNN
HED2  ASC 12,NNNNNN NODES IN NETWORK
BLANK ASC 1,
LINE  BSS 64
LINE1 BSS 64
      SPC 1 
LNRC1 BSS 1         MAX LENGTH FOR RECORD 1.
MAXRC BSS 1         MAX LENGTH FOR OTHER RECORDS. 
MAXND BSS 1         MAX NO OF NODES.
NNODE BSS 1         NUMBER OF NODES IN NDT. 
@NODE BSS 1 
@LIN4 DEF LINE+4
@LINE DEF LINE
@BLNK DEF BLANK 
RCDPT BSS 1         ADDRESS IN RECORD.
ERROR BSS 1         FMP ERROR 
CONWD BSS 1         I/O CONTROL WORD FOR PAGE EJECT.
COUNT BSS 1         COUNTERS
CONT2 BSS 1 
TEMP1 BSS 1 
L1PNT BSS 1         POINTER INTO LINE1. 
LOG   BSS 1 
VLINE ASC 5,        ! 
OUTLN BSS 1         OUTPUT LENGTH.
NDFIT BSS 1         NUMBER OF NODES WHICH WILL FIT ON LINE. 
SKNOD BSS 1         NUMBER OF NODES TO SKIP.
NDLFT BSS 1         NUMBER OF NODES LEFT TO PROCESS.
RULE  ASC 4,   -----
      REP 20
      ASC 3,+-----
      BSS 0         SIZE OF NDTDU 
      END NDTDU 
                                                                                                                                                                          