ASMB,R,Q,C
HED <#MAUP> MA INITIALIZATION * (C) HEWLETT-PACKARD CO. 1980
NAM #MAUP,7 91750-1X135 REV 2013 800415 ALL
ENT #MA1,#MA2,#MA3
*
EXT $LIBR,$LIBX,.MVW,.LDX
EXT #PRNT,#ABRT,#READ,#SYSR,#NODE,#PRSB,#EXFR,$OPSY
EXT #MARN,#MARL,#MCTR,#MTBL
EXT #MA1.,#MA2.,#RNSB,#CLSB
PRINT EQU #PRNT
ABORT EQU #ABRT
READ EQU #READ
ERMSG EQU #SYSR
QUERY EQU #EXFR
RNSUB EQU #RNSB
CLSUB EQU #CLSB
*
@NODE DEF #PRSB
@RL DEF #PRSB+4 RETRY LIMIT
@MTO DEF #PRSB+8
@MA DEF #PRSB+20 "MA" (MA INDICATOR)
@MATO DEF #PRSB+24 (OPTIONAL) MA TIMEOUT
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 THE HEWLETT-PACKARD COMPANY. *
******************************************************************
SPC 1
* #MAUP
* -------------
* SOURCE PART # 91750-18135
* REL. PART # 91750-1X135
* PROGRAMMER TOM MILNER
* WRITTEN 07.12.79
*
* USED AS 3 SUBROUTINES FOR 'DINIT'. IF MA IS GENERATED
* IN THE SYSTEM, THESE THREE ROUTINES (THRU DINIT) INITIALIZES THE
* MA TABLE, AND ATTEMPTS TO BRING ALL CHANNELS UP.
*
* INITIAL CALL TO DETERMINE SPACE REQUIREMENTS
*
* JSB #MA1
* < A-REG RETURNS WITH #WORDS REQUIRED >
*
*
* CALL TO INITIALIZE INTERNAL MA VALUES
*
* < #MTBL CONTAINS ADDRESS OF ALLOCATED SAM>
* < = NUMBER OF NRV ENTRIES >
* JSB #MA2
*
* CALL FOR EACH NRV ENTRY (DETERMINES IF MA REQUIRED FOR THIS NODE)
*
* < #PRSB HAS PARSE BUFFER = CPU#,LU,TIMEOUT,LEVEL,'N','MA',MATO >
* < = MASTER TIMEOUT VALUE >
* JSB #MA3
*
*
#SIZE EQU 10 MA TABLE ENTRY SIZE (IN WORDS)
SKP
#MA1 NOP
CLB
STB M CLEAR NODE COUNTER
LDA $OPSY TEST FOR DMS
RAR,SLA
STB DMS1
JSB PRINT "HOW MANY NODES NEED MA?"
DEF MAMS1
JMP *+3
MA1.A JSB QUERY REPEAT QUESTION AFTER PRINTING ERROR
DEF ERMS6 "BAD NUMBER OF NODES"
JSB READ ANY?
CPA D1 NUMERIC?
RSS . YEP OK
JMP MA1.A . NO ASK AGAIN
SSB POSITIVE?
JMP MA1.A . NO ASK AGAIN
STB M SAVE NODE COUNT
*
DLD @RL,I GET RETRY LIMIT - IF NONE USE DEFAULT
SZA,RSS RETRY LIMIT SPECIFIED?
JMP DRL . NO GET DEFAULT
CPA D1 NUMERIC INPUT
JMP DRL+1 . YEP GO FOR IT
CPB "/D" DEFAULT REQUESTED?
JMP DRL . YEP DO IT
JSB QUERY "INVALID RETRY LIMIT"
DEF ERMS3
JMP MA1.A+2
DRL LDB MARL DEFAULT RETRY LIMIT
STB RL SAVE FOR NOW
CMB,INB
ADB D15 RANGE LESS THAN OR EQUAL 15?
SSB
JMP DRL-3 . NO BADO BADO...
LDB RL
ADB N1 RANGE GREATER THAN OR EQUAL 1?
SSB
JMP DRL-3 . NO BADO BADO...
*
LDB M
LSR 16 := , := 0
MPY ESIZE TIMES WORDS PER ENTRY
JMP #MA1,I RETURN W/ = NUMBER WORDS NEEDED
SPC 2
#MA2 NOP
STA N SAVE NUMBER OF NRV ENTRIES
LDA M MA NEEDED?
SZA,RSS
JMP #MA2,I . NO
CMA,INA
STA #MCTR SAVE NUMBER OF MA ENTRIES
LDA RL
STA #MARL SAVE MA RETRY LIMIT
LDA #MTBL
STA PTR TEMPORARY PTR FOR #MA3
*
JSB RNSUB ALLOCATE RN
DEF #MA1.
*
CCA
JSB CLSUB ALLOCATE CLASS
DEF #MA2.
JMP #MA2,I
SPC 2
SPC 1
* FILL IN MA TABLE. 'M' HAS REMAINING MA ENTRIES. 'N' HAS
* REMAINING NRV ENTRIES. 'PTR' CONTAINS NEXT MA ENTRY LOCATION.
*
#MA3 NOP
IOR UPPER
CMA,INA MAKE POSITIVE # OF UPLIN TICKS
MPY D5 CONVERT UPLIN TICKS TO SECONDS
STA MSTO SAVE MASTER TIMEOUT
*
CCA
ADA N DECREMENT # REMAINING NRV ENTRIES
STA N
*
DLD @MA,I CHECK IF MA SPECIFIED
SZA,RSS
JMP CKCNT NOT SPECIFIED, CHECK COUNTS
CPB "MA" CORRECT REQUEST
JMP *+3
JSB ERMSG "INVALID MA SPECIFICATION"
DEF ERMS1
*
CCA
ADA M DECREMENT REMAINING MA NODES
STA M
SSA,RSS COUNT ROLLED OVER?
JMP *+3 . NO OK
JSB ERMSG "INCORRECT NUMBER OF MA NODES"
DEF ERMS6
*
DLD @NODE,I SAVE NODE #
STB @TBL+1
CPB #NODE MA SPECIFIED TO LOCAL NODE?
RSS
JMP *+3 . NO OK
JSB ERMSG "CANNOT HAVE MA TO LOCAL NODE"
DEF ERMS5
*
DLD @MATO,I GET OPTIONAL TIMEOUT
SZA,RSS
JMP DTO NOT GIVEN, GET DEFAULT
CPA D1 NUMERIC?
JMP DTO+1 . YEP USE IT
CPB "/D" DEFAULT REQUESTED?
JMP DTO
JSB ERMSG "INVALID MA TIMEOUT"
DEF ERMS2
DTO LDB MATL DEFAULT TIMEOUT
SSB CHECK FOR NEGATIVE NUMBER
JMP DTO-2 BADO BADO
RBL,RBL ALLOW FOR STATE WORD
STB @TBL+2
*
* VERIFY THAT # RETRYS * MA TIMEOUT <= MASTER TIMEOUT
*
RBR,RBR
LDA B
MPY #MARL RETRYS * MATO
CMA,INA
STA TMP SAVE FOR NOW
DLD @MTO,I GET MASTER TIMEOUT FROM STRING
SZA,RSS GET DEFAULT IF
LDB MSTO NONE SPECIFIED
SZB,RSS GET MASTER TIMEOUT IF
LDB MSTO ZERO SPECIFIED
CPB "/D" OR GET MASTER TIMEOUT
LDB MSTO IF DEFAULT SPECIFIED
ADB TMP
SSB
JMP BADTO BAD TIMEOUT
*-- MOVE MA TABLE ENTRY INTO SAM
LDA @TBL
LDB PTR
JSB MOVE
STB PTR --> NEXT MA ENTRY
*
* CHECK FOR VALID NUMBER OF REMAINING MA ENTRIES
* (IE., N >= M)
*
CKCNT LDA N
CMA
ADA M
SSA
JMP #MA3,I
JSB ERMSG "INCORRECT NUMBER OF MA NODES"
DEF ERMS6
SPC 2
BADTO JSB ERMSG "MA TIMEOUT * RETRYS > MASTER TIMEOUT"
DEF ERMS4
SPC 2
MOVE NOP
JSB $LIBR TURN OFF INTERRUPTS
NOP
DMS1 JMP MOVE2 'NOP'ED IF DMS
JSB .LDX
DEF ESIZE
MWI MOVE BACK INTO SAM
JMP MOVE3
MOVE2 JSB .MVW MOVE BACK INTO SAM
DEF ESIZE
NOP
MOVE3 JSB $LIBX TURN INTERRUPTS ON
DEF *+1
DEF *+1
JMP MOVE,I
SKP
*----------------------------------------------------------*
* CONSTANTS
*----------------------------------------------------------*
A EQU 0
B EQU 1
*
"/D" ASC 1,/D
"MA" ASC 1,MA
N1 DEC -1
D1 DEC 1
D5 DEC 5
D15 DEC 15
MATL DEC 3 DEFAULT TIMEOUT SECONDS
MARL DEC 13 DEFAULT MAX RETRY LIMIT
BIT13 OCT 020000
ESIZE ABS #SIZE
UPPER OCT 177400
ALRN OCT 040020
ALHC OCT 000001
@TBL DEF *+1 INITIAL MA TABLE ENTRY
OCT 0 +0 NODE NUMBER WILL BE FILLED IN
OCT 0 +1 MASW
OCT 1 +2 VA
OCT 2 +3 VT1/VT2
OCT 1 +4 VR
OCT 0 +5 VF
OCT 0 +6 VC
OCT 0 +7 VCC/VCD
OCT 0 +8 LERC
OCT 0 +9 LERN
SUP
MAMS1 DEF *+3
DEF *+1
ABS ERMS1-*-1
ASC 19,ENTER # OF MA NODES [,RETRY LIMIT]? _
ERMS1 DEF *+3
DEF *+1
ABS ERMS2-*-1
ASC 13,INVALID MA SPECIFICATION!
ERMS2 DEF *+3
DEF *+1
ABS ERMS3-*-1
ASC 10,INVALID MA TIMEOUT!
ERMS3 DEF *+3
DEF *+1
ABS ERMS4-*-1
ASC 21,INVALID MA RETRY LIMIT! EXCEEDS RANGE 1-15
ERMS4 DEF *+3
DEF *+1
ABS ERMS5-*-1
ASC 20,(MA TIMEOUT * RETRYS) > MASTER TIMEOUT!
ERMS5 DEF *+3
DEF *+1
ABS ERMS6-*-1
ASC 15,CANNOT HAVE MA TO LOCAL NODE!
ERMS6 DEF *+3
DEF *+1
ABS ERMS7-*-1
ASC 15,INCORRECT NUMBER OF MA NODES!
ERMS7 EQU *
UNS
*----------------------------------------------------------*
* STORAGE
*----------------------------------------------------------*
PTR BSS 1
M BSS 1
N BSS 1
RL BSS 1
TMP BSS 1
MSTO BSS 1
SIZE EQU *
END