ASMB,R,L
      NAM CONFG,3 91711-16203 REV.2001 791102 
      EXT EXEC,$LIBR,$LIBX
B     EQU 1 
* 
* 
* THIS IS THE RTE-M1 START UP PROGRAM 
* 
* IT ALTERS THE SYSTEM TABLES FOR THE CORRECT 
* CONSOLE AND DIAGNOSTIC TARGET DEVICE
* SELECT CODES AS FOUND IN THE SWITCH REGISTER
* (0-5)= CONSOLE , TARGET DEV =(6-11).
* 
* WHEN EVERYTHING IS READY TO GO, THE DIAGNOSTIC
* PROGRAM IS SCHEDULED. IF THE DIAGNOSTIC PROGRAM 
* TERMINATES,THIS PROGRAM CONTINUES.
CONFG NOP 
      JSB $LIBR     TURN INTERUPT SYSTEM OFF
      NOP 
      LIA 1         GET CONSOLE & TARGET DEVICE S.C. ALSO 
      AND B77       MASK FOR CONSOLE ONLY 
      STA CONSL     SAVE IT IN CONSL
      LIA 1         GET THE SAME WORD AGAIN 
      AND MSK2      MASK FOR TARGET DEVICE THIS TIME
      CLB           RIGHT JUSTIFY IT
      LSR 6 
      STA DEVSC     SAVE IT IN DEVSC
* 
* NOW FIX TABLES (EQT,INT,DRT) FOR WHERE CONSOLE
* ACTUALLY IS AND WHAT DRIVER IT NEEDS
* 
* 
RR    JSB FIXC      FIX CONSOLE 
      LDA DEVSC     ANY DEVICE S.C. ENTERED?
      SZA 
      JSB FDEV      YES 
      JSB $LIBX     TURN INT SYS BACK ON
      DEF *+1 
      DEF *+1 
*         NOW 
* 
* RUN DIAGNOSTIC
* 
* 
      JSB SON       SCHEDULE DIAG. FATHER-SON 
* 
      JSB EXEC      TERMINATE PROGRAM 
      DEF *+3 
      DEF D6
      DEF ZERO
      NOP 
D6    DEC 6 
ZERO  NOP 
*  PROGRAM CONSTANTS
* 
CONSL NOP           CONSOLE S.C.
FLAG  NOP           NON-ZERO IF CONSOLE S.C. <10 OR >77 
EQT   OCT 1650      BASE PAGE POINTER TO EQT TABLE
DRT   OCT 1652      BASE PAGE POINTER TO DRT TABLE
INT   OCT 1654      BASE PAGE POINTER TO INTERUPT TABLE 
B22   OCT 22
MSK1  OCT 177700
B77   OCT 77
MSK2  OCT 7700
DEVSC NOP           DIAGNOSTIC TARGET DEVICE S.C. 
* 
* 
* 
      NOP 
      SKP 
SON   NOP 
* 
* PROGRAM "SON" SCHEDULES THE DIAGNOSTIC OR VERIFICATION
* PROGRAM WITH A FATHER-SON RELATIONSHIP. 
* WHEN THE PROGRAM TERMINATES IT WILL RETURN HERE 
* 
      JSB EXEC      SCHEDULE PROGRAM
      DEF RTN       WHERE TO RETURN TO
      DEF ICODE     SCHEDULE WITHOUT WAIT 
      DEF NAME      PROGRAM NAME
      DEF IPRM1     1ST PARAMETER TO PASS 
      DEF IPRM2     2ND   "        "  " 
*     DEF IPRM3     3RD 
*     DEF IPRM4     4TH 
*     DEF IPRM5     5TH 
* 
* 
RTN   JMP SON,I     RETURN TO CONFG 
* 
* 
ICODE DEC 9 
NAME  ASC 3,DIAG    PROGRAM TO BE SCHEDULED 
IPRM1 OCT 1         LOG  LU 
IPRM2 OCT 2         TEST LU 
*IPRM3
*IPRM4
*IPRM5
* 
* 
      SKP 
FDEV  NOP 
* 
* 
* FIX EQT,INTERUPT TABLES FOR CORRECT S.C. ON EQT3,LU4
* 
* 
      NOP 
      LDB EQT,I     GET ADDRESS OF EQT1 WD1 
      ADB D33       OFFSET FOR EQT3 WD4 
      LDA B,I       GET THE CONTENTS
      AND MSK1      MASK OFF THE S.C. 
      ADA DEVSC     ADD NEW S.C.
      STA B,I       PUT IT BACK 
* 
* FIX INT TABLE 
* 
      NOP 
      LDB INT,I     ADDRESS OF S.C. 6 INT. TABLE
      ADB B2        OFFSET FOR S.C. 10
      ADB DEVSC     OFFSET FOR DEVICE S.C. +10
      ADB MB10      BACK OFF TO CORRECT INT ENTRY 
      LDA EQT,I     GET ADDRESS OF EQT1 WD1 
      ADA F5        OFFSET FOR EQT3 WD1 
      STA B,I       PUT IT IN THERE 
* 
* 
      NOP 
      JMP FDEV,I
F5    DEC 30
D33   DEC 33
      SKP 
FIXC  NOP 
* 
* 
* THIS SUBROUTINE FINDS OUT WHAT KIND OF CONSOLE
* IS AT THE GIVEN SELECT CODE AND THEN ALTERS 
* THE EQT,DRT AND INT TABLES FOR THAT DRIVER
* AND SELECT CODE 
* 
* 
      NOP 
      CLA 
      OTA 1         CLEAR S.R.
* 
* CHECK FOR CORRECT S.C. BOUNDS 
* 
      LDA CONSL     GET CONSOLE S.C.
      ADA MB10      <10 ? 
      SSA,RSS 
      JMP AA        NO, GO AROUND 
* 
      STA FLAG      YES, SET FLAG <=> 0 
      JMP FIXC,I    EXIT
* 
AA    LDA CONSL     GET CONSOLE S.C.
      ADA MB1C      >77 ? 
      SSA 
      JMP BB        NO, GO AROUND 
* 
      STA FLAG      YES, SET FLAG <=> 0 
      JMP FIXC,I    EXIT
* 
* RECONFIGURE TEST I/O INSTRUCTIONS 
* FOR THE CORRECT S.C.
* 
BB    LDA CN1 
      ADA CONSL 
      STA CN1 
      LDA CN2 
      ADA CONSL 
      STA CN2 
      LDA CN3 
      ADA CONSL 
      STA CN3 
      LDA CN4 
      ADA CONSL 
      STA CN4 
      LDA CN5 
      ADA CONSL 
      STA CN5 
      NOP 
* 
* EXECUTE TEST I/O INSTRUCTIONS 
* 
      LDA MRSET 
CN1   CLF 0 
CN2   OTA 0 
CN3   SFS 0         IS THIS A DVR00 CONSOLE ? 
* 
      JMP SKP       YES , MAKE NO DRT TBL CHANGE
* 
DVR05 LDB DRT,I     NO, CHANGE DRT TBL FOR LU1 = EQT2 
      LDA B,I 
      AND .3700     MASK OFF EQT REFERENCE
      ADA D2        ADJUST TO EQT 2 
      STA B,I       PUT IT BACK 
* 
      LDA D5        SAVE CONSOLE DRIVER TYPE
      STA CNDVR 
* 
SKP   LDA C120K     CLEAN UP CONSOLE INTF.
CN4   OTA 0,C 
CN5   STC 0,C 
* 
* NOW PLACE CORRECT CONSOLE S.C. IN EQT TABLE 
* 
      NOP 
      LDA CNDVR     GET CONSOLE DRIVER TYPE 
      SZA,RSS       DVR00 CONSOLE?
      JMP D00       YES 
* 
      LDA B22       NO, SET OFFSET TO 22B 
      STA TEMP
      LDA EQT,I     GET ADDRESS OF EQT1 WD1 
      ADA B17       OFFSET TO EQT2 WD1
      STA TEMP2     SAVE IN TEMP2 FOR LATER 
      JMP II
* 
D00   LDA B3        SET OFFSET TO WD4 
      STA TEMP      SAVE IT 
      LDA EQT,I     GET ADDRESS OF EQT1 WD1 
      STA TEMP2     SAVE IT 
* 
* 
* PLACE ADDRESS OF SYS. CONSOLE EQT WD1 INTO
* BASE PAGE LOCATION 1675B
* 
II    LDB SCON      GET ADDRESS 
      LDA TEMP2     GET WD1 ADDRESS OF PROPER EQT 
      STA B,I       PUT IT IN 
* 
* 
      LDB EQT,I     GET ADDRESS OF EQT1 WD1 
      ADB TEMP      OFFSET BY TEMP (22 OR 3)
*                   TO WD4 OF CORRECT EQT 
      LDA B,I       PICK OUT WD4
      AND MSK1      MASK OFF S.C. 
      ADA CONSL     ADD NEW S.C.
      STA B,I       PUT IT BACK 
* 
* NOW CHANGE INT TABLE
* 
      NOP 
      LDB INT,I     GET ADDRESS OF S.C. 6 INT. TBL
      ADB B2        OFFSET FOR S.C. 10
      ADB CONSL     OFFSET FOR S.C. + 10
      ADB MB10      BACK OFFSET TO S.C. 
* 
      LDA TEMP2     WD1 ADDRESS OF CORRECT EQT
      STA B,I       PUT IT INTO CORRECT INT. TBL WD 
* 
      JMP GO        EXIT
* 
*CONSTANTS
* 
MB1C  OCT -100
MB10  OCT -10 
MRSET OCT 150077
.3700 OCT 3700
D2    OCT 2 
C120K OCT 120001
CNDVR NOP           CONSOLE DRIVER TYPE 
D5    OCT 5 
SCON  OCT 1675      SYS CON. BASE PG POINTER
B17   OCT 17
B2    OCT 2 
TEMP  NOP 
B3    OCT 3 
TEMP2 NOP 
* 
* 
GO    JMP FIXC,I    EXIT
      END CONFG 
                                                                                                                  