ASMB,R,Q,C
      HED <#RRX> REROUTING INIT. ROUTINE * (C) HEWLETT-PACKARD CO. 1979*
      NAM #RRX,7 91750-1X029 REV 2013 800328 ALL W/ RR
      SPC 1 
      EXT $OPSY,$LIBR,$LIBX 
      EXT .LDX,.MVW,PGMAD 
      EXT #PRNT,#READ,#SYSR,#PRSB,#RR4
      EXT #LV,#LCNT,#CM,#NODE 
      ENT #RR1,#RR2,#RR3
* 
*    NAME:   #RRX 
*    SOURCE: 91750-18029
*    RELOC:  91750-1X029
*    PGMR:   DOUG W. TSUI   JULY 1979 
**
* 
******************************************************************
*  * (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.       *
******************************************************************
* 
* 
* 
* 
      SKP 
* 
*  #RR1 CALLING SEQUENCE: 
* 
*    < B REG. = #NCNT > 
*     JSB #RR1
*    < A REG. = SAM SIZE FOR REROUTING >
* 
#RR1  NOP 
      CMB,INB       MAKE #NCNT POSITIVE 
      STB NCNT      SAVE IT 
      JSB #PRNT     ASK FOR # OF LINKS
       DEF LINK?
      JSB #READ 
      CPA =B1       NUMERIC RESPONSE? 
      RSS 
      JMP ERROR     .NO, ERROR
      SSB           POSITIVE? 
      JMP ERROR     .NO, ERROR
      STB LCNT      STORE ANSWER AS LINK COUNT
      SZB,RSS       RR ENABLE?
      JMP NORR      .NO 
      JSB PGMAD     .YES, CHECK IF #SEND IS AROUND
       DEF *+2
       DEF #SEND
      SZA,RSS       MISSING ID SEGMENT? 
      JMP ERR1      .YES
NORR  EQU * 
      LDA NCNT
      MPY LCNT
      ALS           MULT BY TWO FOR 2 WORD CM ENTRIES 
      STA CMLEN     STORE THIS AS SAM SIZE FOR CM 
      LDA LCNT
      MPY LVSZ      SAM SIZE FOR LV 
      ADA CMLEN     TOTAL SAM SIZE FOR RR IN REG. A 
      JMP #RR1,I    RETURN
* 
ERROR JSB #SYSR     WRITE ERROR MESG TO USER
       DEF LKERR
ERR1  JSB #SYSR 
       DEF SDERR
      SKP 
* 
*  #RR2 CALLING SEQUENCE: 
* 
*    < A REG. = NODE #, B REG. = LU PARSE TYPE >
*     JSB #RR2      SETS INITIAL VALUES IN COST MATRIX
* 
#RR2  NOP 
      DST NODE
NOP2  JSB INIT2     INIT #CM,#LCNT
      LDA LCNT
      SZA,RSS 
      JMP #RR2,I
      DLD NODE
      CPA #NODE     LOCAL NODE? 
      JMP ZERO      .YES, ZERO OUT CM ENTRIES 
      CPB =D1       LU GIVEN? 
      JMP ZERO      .YES, ZERO OUT CM ALSO
      DLD MAX       RR NODES, SET CM ENTRIES TO INFINITE
      DST CMVAL 
      JMP SETCM 
ZERO  CLA           NON-RR NODES, CM ENTRIES = 0
      STA CMVAL 
      STA CMVAL+1 
* 
*  SET CM ROW TO MAX VALUE OR ZERO
* 
SETCM LDA LCNT      GET # OF LINKS
      CMA,INA 
      STA J 
LOOP  LDA @CMVA 
      LDB @CM 
      JSB STWS
      ISZ @CM 
      ISZ @CM 
      ISZ J 
      JMP LOOP
      JMP #RR2,I
* 
*  CONFIGURE THE SYSTEM ENVIRONMENT & INIT. GLOBAL VARIABLES
* 
INIT2 NOP 
      CLB 
      STB NOP2      CLEAR CALL TO THIS ROUTINE
      STB #LCNT 
      LDA $OPSY     GET SYS TYPE
      RAR,SLA       DMS?
      STB SSMOD     .YES, MOD INST
* 
      LDA LCNT
      MPY LVSZ
      ADA #LV 
      STA #CM       CM STARTS AFTER LV
      STA @CM 
      JMP INIT2,I 
      SKP 
* 
*  #RR3 CALLING SEQUENCE: 
* 
* 
*    #PRSB = PARSED BUFFER
*     JSB #RR3      SETS LU AND COST IN LINK VECTOR 
* 
#RR3  NOP 
NOP3  JSB INIT3 
      LDA LCNT      GET # OF RR LINKS REQUESTED BY USER 
      CPA #LCNT     HAVE WE USED IT ALL UP? 
      JMP #RR3,I    .YES, JUST RETURN 
      LDA #PRSB+1   GET LU FROM USER BUFFER 
      STA L.LU      SAVE IT 
      JSB #RR4      CHECK OLD LINK
      LDA #PRSB+4   GET COST TYPE 
      SZA,RSS       DEFAULT COST? 
      JMP DEFAU     .YES
      LDA #PRSB+5   .NO, PICK UP USER SPECIFIED LINK COST 
      SZA,RSS       ZERO COST?
      JMP ERR3      .YES, ERROR 
      SSA           < ZERO? 
      JMP ERR3      .YES, ERROR 
      RSS 
DEFAU INA           DEFAULT COST = 1
      STA L.CST     SAVE COST 
      ADA =D-100
      SSA,RSS 
      JMP ERR3
* 
      LDA @LVAL 
      LDB @LV 
      JSB STWS
      LDA @LV 
      ADA LVSZ      UP LINK POINTER 
      STA @LV 
      ISZ #LCNT     UP # OF RR LINKS
      NOP 
      JMP #RR3,I
* 
ERR3  EQU * 
      JSB #SYSR 
       DEF CTERR
INIT3 NOP 
      CLA 
      STA NOP3      CLEAR CALL TO THIS ROUTINE
      STA L.TM
      STA L.TM+1
      STA L.CNT 
      CCA 
      STA L.NBR 
      LDA #LV 
      STA @LV 
      LDA LVSZ
      STA SSLEN     SET LDWS TO MOVE LVSZ WORDS 
      JMP INIT3,I 
      SKP 
      SKP 
*** 
* 
*  STWS MOVES WORDS FROM LOCAL BUFFER TO SAM BUFFER 
* 
*  CALLING SEQUENCE:
* 
*     <A> ==> LOCAL BUFFER
*     <B> ==> SAM BUFFER
* 
STWS  NOP 
      JSB $LIBR 
       NOP
SSMOD JMP SSMVW 
      JSB .LDX
       DEF SSLEN
      MWI 
      JMP SSJSB 
SSMVW JSB .MVW
       DEF SSLEN
      NOP 
SSJSB JSB $LIBX 
       DEF STWS 
* 
SSLEN DEC 2         2 WORD MOVE 
* 
*** 
      SKP 
* 
*  DATA AREA
* 
MAX   OCT 77777     THIS 2 WORDS MUST 
NCNT  NOP            BE TOGETHER
LCNT  NOP           NOP 
* 
CMVAL BSS 2 
@CMVA DEF CMVAL 
@CM   NOP 
CMLEN NOP 
* 
D6    DEC 6 
D9    DEC 9 
D11   DEC 11
D21   DEC 21
* 
LINK? DEF *+2 
      DEF D11 
      ASC 11,# OF REROUTING LINKS?_ 
LKERR DEF *+2 
      DEF D9
      ASC 9,LINK SPEC. ERROR! 
SDERR DEF *+2 
      DEF D21 
      ASC 21,REROUTING IS ENABLED BUT #SEND IS MISSING
CTERR DEF *+2 
      DEF D6
      ASC 6,COST ERROR! 
* 
NODE  BSS 2 
J     NOP 
#SEND ASC 3,#SEND 
* 
@LV   NOP 
LVSZ  DEC 6 
LVAL  BSS 6 
L.LU  EQU LVAL
L.CST EQU LVAL+1
L.TM  EQU LVAL+2
L.CNT EQU LVAL+4
L.NBR EQU LVAL+5
@LVAL DEF LVAL
      END 
                                                                                                                                              