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