* 
B56P1 DEF BE561+10
B56P2 DEF BE562+10
BE56  ASC 22,E056 DATA TRFER ERR ON SC XX, BUS SW SC VV/
BE561 ASC 14,      EXPECTED DATA YYYYYY/
BE562 ASC 14,      ACTUAL DATA   ZZZZZZ/
* 
* 
*       FLAG ERROR. CONCATENATE FLAG ERROR MESSAGE STRING 
*       & OUTPUT ERROR MESSAGE E043 
* 
T08ER NOP 
      LDA BSSCX    LOAD SWITCH SC1
      JSB N2AO     CONVERT FAILING SC TO ASCII & STUFF
      STA BE43E      INTO MESSAGE 
* 
      LDB T08CW    GET CONTR WORD & SCAN FOR INSTR SPECIFIED
      LDA B43AQ      (BITS 0-3) PUT THE APPROP. DEF STATE-
      JSB .43CN         MENT INTO THE 1. LINE OF THE ERROR
      STA DF101           MESSAGE E043
* 
      LDB T08CW    SCAN FOR PREDICATE SPECIFIED (BITS 4-7) &
      BRS,BRS        PUT INTO 1. LINE OF E043 
      BRS,BRS 
      LDA B43FQ 
      JSB .43CN 
      STA DF102 
* 
      LDB T08CW    SCAN FOR PREPOSITION SPECIFIED (BITS 8-9) &
      BLF,BLF        PUT INTO 2. LINE OF E043 
      LDA B43KQ 
      JSB .43CN 
      STA DF103 
* 
      LDB T08CW    SCAN FOR ADJECTIVE SPECIFIED (BITS 10-11)
      BLF,RBL 
      RBL 
      LDA B43MQ 
      JSB .43CN 
      LDB T08CW    GET CONTROL WORD AGAIN & CHECK IF A
      BLF,SLB        2-LINE MESSAGE IS REQUIRED 
      JMP *+4      NO 3-LINE MESSAGE
      AND P7777    YES, REMOVE INDIR. BIT IN LAST DEF STATEM. 
      STA DF104    PUT INTO 2. LINE OF E043 & 
      JMP E043-2     GO TO PRINT
* 
      SKP 
* 
      STA DF104    PUT INTO 2. LINE OF E043 
      LDA B43PQ    START WITH 3. LINE OF ERROR MESSAGE
      RBR          BRING BIT 13 TO BIT POS 0
      JSB .43CN 
      LDB T08CW    WAS THE TERM "NOT" REQUESTED (BIT 13)? 
      RBL,RBL 
      SSB 
      JMP *+2      YES, DON'T REMOVE INDIR. BIT IN DEF STATEM.
      AND P7777    NO, REMOVE INDIRECT BIT IN DEF STATEM. 
      STA DF105    STORE DEF
* 
* 
      LDA T08CW    LOAD A-REG WITH INSTR & B-REG WITH SC
      LDB BSSC1 
E043  JSB ERMS,I   PRINT ERROR MESSAGE E043 WITH
      DEF BE43,I    HALT NUMBER 
DF101 NOP            INSTRUCTION TYPE 
      DEF BE43E,I     SC & "INSTR." 
DF102 NOP              PREDICATE
      DEF BE43J,I       "EXTENDER"
DF103 NOP                 "TO"/"F." 
DF104 NOP                  "THIS/OTHER CPU" W/WO TERMIN BIT 
      DEF BE43O,I           "WITH SWITCH" 
DF105 NOP                    "NOT"/"IN NEUTRAL" 
      DEF BE43Q               "IN NEUTRAL"
      JMP T08ER,I 
      JMP T08ER,I 
* 
.43CN NOP          IS THE LSB IN THE CONTROL WORD SET?
      SLB,BRS 
      JMP *+3      YES
      INA          NO, INCREMENT DEF POINTER AND REPEAT 
      JMP *-3 
      LDA A,I      LOAD MESSAGE POINTER 
      IOR SW15     ATTACH INDIR. CONCATINATION BIT & RETURN 
      JMP .43CN,I 
* 
* 
T08CW OCT 0 
T08A  OCT 0 
T08B  OCT 0 
* 
B43AQ DEF B43AP    POINTERS TO MESSAGE POINTERS 
B43FQ DEF B43FP 
B43KQ DEF B43KP 
B43MQ DEF B43MP 
B43PQ DEF B43PP 
* 
      SKP 
* 
B43AP DEF BE43A    MESSAGE POINTERS 
      DEF BE43B 
      DEF BE43C 
      DEF BE43D 
B43FP DEF BE43F 
      DEF BE43G 
      DEF BE43H 
      DEF BE43I 
B43KP DEF BE43K 
      DEF BE43L 
B43MP DEF BE43M 
      DEF BE43N 
B43PP DEF BE43P 
      DEF BE43Q 
* 
BE43  ASC 3,E043 _
BE43A ASC 3,STC _ 
BE43B ASC 3,CLC _ 
BE43C ASC 3,CLF _ 
BE43D ASC 3,SFC _ 
BE43E ASC 6,XX INSTR. _ 
BE43F ASC 8,DID NOT CONNECT/
BE43G ASC 5,CONNECTED/
BE43H ASC 8,DID NOT RELEASE/
BE43I ASC 5,RELEASED/ 
BE43J ASC 8,     EXTENDER _ 
BE43K ASC 2,TO _
BE43L ASC 2,F. _
BE43M ASC 5,THIS CPU /
BE43N ASC 5,OTHER CPU/
BE43O ASC 9,     WITH SWITCH _
BE43P ASC 3,NOT _ 
BE43Q ASC 6,IN NEUTRAL/ 
* 
      SKP 
* 
*        THIS SUBROUTINE TESTS THAT THE UNDEFINED I/O INSTRUCTIONS
*        WITH THE BUS SWITCH SC OF THE EXTENDER DO NOT MODIFY 
*        THE SWITCH SETTINGS IN THE EXTENDER. 
* 
NQI   NOP 
CPU27 STC BSC1       THROW SWITCH TO THIS CPU & CHECK 
      LDA CW01         THAT EXTENDER IS CONNECTED 
      JSB FLDTC 
      LDA LDA01      STORE A LDA .+1 INSTR INTO THE 
      STA T8LDA        VERIFY SUBROUTINE
      JSB NQITS      EXECUTE UNDEFINED I/O INSTRS.
* 
CPU28 CLC BSC1       THROW SWITCH TO OTHER CPU & CHECK
      LDA CW05         THAT EXTENDER IS REMOVED 
      JSB FLDTC 
      LDA LDA10      STORE A LDA SW150 INSTR INTO THE 
      STA T8LDA        VERIFY SUBROUTINE
      JSB NQITS      EXECUTE UNDEFINED I/O INSTRS.
* 
CPU29 STC BSC1       THROW SWITCH TO NEUTRAL POS &
CPU30 CLF BSC1         CHECK THAT EXTENDER IS REMOVED 
      LDA CW03
      JSB FLDTC 
      JSB NQITS      EXECUTE UNDEFINED I/O INSTRS.
      JMP NQI,I      RETURN 
* 
* 
*        EXERCICE THE UNDEFINED I/O INSTR. STF, SFS, MIA/B, 
*        LIA/B ANS OTA/B ON THE BUS SWITCH SC 
* 
NQITS NOP 
      LDA .-8        SET LOOP COUNTER TO -8 FOR THE 8 
      STA T8CNT        INSTR. TO BE TESTED. EXERCISE
CPU31 STF BSC1           EACH INSTR. & GO TO CHECK THAT 
      JSB NQISB            THE INSTR. DID NOT CHANCE
CPU32 SFS BSC1               THE SWITCH 
      JSB NQISB 
CPU33 MIA BSC1
      JSB NQISB 
CPU34 MIB BSC1
      JSB NQISB 
CPU35 LIA BSC1
      JSB NQISB 
CPU36 LIB BSC1
      JSB NQISB 
CPU37 OTA BSC1
      JSB NQISB 
CPU38 OTB BSC1
      JSB NQISB 
* 
      SKP 
* 
*        TEST THAT UNDEFINED I/O INSTRS. DO NOT MODIFY SWITCH 
* 
NQISB NOP 
T8LDA NOP         LDA .+1 OR LDA SW150 IS STORED AS 
      JSB DAFSR      CONTROL WORD FOR SUBROUT DAFSR 
      JMP *+4     ERROR, SUBROUT DID NOT TIME OUT 
      ISZ T8CNT   CORRECT RETURN, INCREMENT COUNTER 
      JMP NQISB,I   & RETURN
      JMP NQITS,I 
* 
      LDA T8CNT   UNDEF. I/O INSTR MODIFIED SWITCH
      ADA .+8     (LOOP CNT + 8).2 + START ADDR OF
      ALS           ASCII STRING = START ADDR OF
      ADA ER51        ASCII STRING SPECIFING
      LDB A,I           INTERFERING INSTR.
      STB BE51+3  GET 1.& 2. PAIR OF ASCII CHAR & 
      INA           STORE IN ERR MESSAGE
      LDB A,I 
      STB BE51+4
* 
      LDA BSSCX   GET BUS SWITCH SC & STORE IN MESSAGE
      JSB N2AO
      STA BE51+5
* 
      LDA T8LDA   DETERMEN FROM OPERAND OF SPECIFIED
      STA *+1       LDA BY EXAMINING BIT 15 WHICH 
      NOP             ERR MESSAGE HAS TO BE APPENDED
      LDB B51AP 
      SSA 
      LDB B51BP 
      STB *+3 
      JSB ERMS,I
      DEF BE51,I
      NOP 
      JMP T08,I 
* 
* 
LDA01 LDA .+1 
LDA10 LDA SW150 
* 
ER51  DEF *+1 
      ASC 16,STF SFS MIA MIB LIA LIB OTA OTB
* 
B51AP DEF BE51A 
B51BP DEF BE51B 
BE51  ASC 07,E051  XXXXYY _ 
BE51A ASC 16,REMOVED EXTENDER FROM THIS CPU/
BE51B ASC 15,SWITCHED EXTENDER TO THIS CPU/ 
* 
* 
* 
*************************************************************** 
      SKP 
      HED TEST 09 
* 
* 
*        TEST 09
*        -------
*        THIS TEST PERFORMS A CURSORY CHECK ON DMA ON 12979B
*        EXTENDERS. THIS TEST IS AUTOMATICALLY EXECUTED IF
*        TEST 08 WAS SELECTED VIA S-REG BIT 15, BIT 13 IS SET 
*        TO INDICATE THAT THE 12898-60001 BOARD IS INSTALLED
*        AND THE CPU HAS DMA. THE TEST REQUIRES ONE OF THE TWO
*        HARDWARE SETUPS SPECIFIED IN TEST 08 (ONE 12979B EX- 
*        TENDER UNDER PROGRAM CONTROL OF TWO CPU'S OR TWO EX- 
*        TENDERS UNDER PROGRAM CONTROL OF ONE CPU). 
* 
* 
      ORG 10000B
TST09 EQU * 
      NOP 
      JSB T09 
      CLC INTP,C
      JMP TST09,I 
* 
T09   NOP 
      CLC INTP,C
      JSB CPTPY,I     CHECK IF 21MX/XE
      LDA USSC        DID OPERATOR SPECIFY THAT DMA IS
      RAL,RAL           INSTALLED IN EXTENDER?
      SSA,RSS 
      JMP T09,I       NO, EXIT
      LDA CPTO        IS DMA INSTALLED IN CPU?
      ARS,ARS 
      SLA 
      JMP *+4         YES, OK 
      JMP ERMS,I      NO, ERROR E053
      DEF ER53
      JMP T09,I       EXIT TEST 
* 
      LDA BSSC1       CONFIGURE BUS SWITCH SC1
      LDB BSCP1 
      JSB ISC 
      LDA BSSC1       TRANSFER CURRENT BUS SW SC
      STA BSSCX         INTO BUFFER 
      LDA USSC        IS TEST REQUESTED ON REDUNDANT CPU'S? 
      RAL 
      SSA 
      JMP T9EXT       NO, REDUNDANT EXTENDERS 
* 
      SKP 
* 
* 
*   *** TEST ONE EXTENDER CONNECTED TO TWO CPU'S ***
* 
      LDA .-4         SET LOOP COUNT TO -4
      STA T9CNT 
CPU50 STC BSC1        TAKE SWITCH & WAIT UP TO 5 SEC
      LDA T5S 
      JSB DAFRS,I 
      JMP DMANT       OTHER CPU TOOK SWITCH 
* 
* 
*       TRANSFER TIMED OUT ON THIS CPU. (CPU#2) 
* 
      JSB T9TST       TEST DMA TRANSFER FROM/TO THIS CPU
CPU51 CLC BSC1        THROW SWITCH TO OTHER CPU 
      LDA .+1         WAIT 1 MSEC TO ASSURE OTHER CPU EXITED
      JSB TMRR,I        SUBROUTINE DAFSR
      LDA S1587       WAIT UP TO .38 SEC TO LET OTHER 
      JSB DAFRS,I       CPU TEST DMA
      JMP *+4         OK, OTHER CPU REPLIED 
      JSB ERMS,I      TIME OUT ERROR
      DEF EM50
      JMP T09,I 
      ISZ T9CNT       INCREMENT LOOP COUNT
      JMP CPU50 
      JMP T09,I 
* 
* 
*       TRANSFER DID NOT TIME OUT ON THIS CPU. (CPU#1)
* 
DMANT LDA T6S15       WAIT UP TO 6 SEC TO LET OTHER 
      JSB DAFRS,I       CPU TEST DMA
      JMP *+4         OK, OTHER CPU FINISHED
      JSB ERMS,I      TIME OUT ERROR
      DEF EM50
      JMP T09,I 
      JSB T9TST       TEST DMA TRANSFER FROM/TO CPU 
CPU52 CLC BSC1        THROW SWITCH TO OTHER CPU FOR 
      LDA .+3           RESINC, THEN WAIT 3 MSEC TO 
      JSB TMRR,I          LET OTHER CPU BECOME CPU#1
      ISZ T9CNT       INCREMENT LOOP COUNT
      JMP CPU50 
      JMP T09,I 
* 
T9CNT OCT 0 
* 
      SKP 
* 
* 
*   *** TEST TWO REDUNDANT EXTENDERS CONNECTED TO ONE CPU *** 
* 
T9EXT LDA .-4          SET LOOP COUNTER TO -4 
      STA T9CNT 
      JSB DISCO        CHECK IF BOTH EXT'S CAN BE DISCONN 
* 
EXT08 STC BSC1         TAKE SWITCH
      JSB T9TST        TEST DMA 
      ISZ T9CNT        TEST 4 TIMES?
      JMP EXT08        YES, EXIT
* 
      LDA EXT08        SEPARATE SC & CHECK IF TEST HAS
      AND .77            BEEN RUN ON BSC2 
      CPA BSSC2 
      JMP T09,I        YES, EXIT TEST 
      LDA BSSC2        NO, RECONFIGURE THIS PART OF 
      LDB BSCP2          TEST WITH BUS SWITCH SC 2, 
      JSB ISC              CHANGE BUS SW SC BUFFER
      LDA BSSC2              & REPEAT PROCESS ON
      STA BSSCX                2. EXTENDER
      JMP T9EXT 
* 
      SKP 
* 
*       SUBROUTINE TO PERFORM DMA TRANSFER & VERIFY DATA
* 
T9TST NOP 
      LDA .+2         CHECK DMA OUTPUT ON CHANNEL 1 
      JSB T9DCF 
      CLA 
      JSB T9DIR 
      JSB T9DMA 
      JSB T9IN
* 
      LDA .+3         CHECK DMA OUTPUT ON CHANNEL 2 
      JSB T9DCF 
      CLA 
      JSB T9DIR 
      JSB T9DMA 
      JSB T9IN
* 
      JSB T9OUT       CHECK DMA INPUT ON CHANNEL 1
      LDA .+2 
      JSB T9DCF 
      LDA .+1 
      JSB T9DIR 
      JSB T9DMA 
      JSB T9VRF 
* 
      JSB T9OUT       CHECK DMA INPUT ON CHANNEL 2
      LDA .+3 
      JSB T9DCF 
      LDA .+1 
      JSB T9DIR 
      JSB T9DMA 
      JSB T9VRF 
      JMP T9TST,I 
* 
ER53  ASC 11,E053 CPU WITHOUT DMA/
* 
      SKP 
* 
*        SUBROUTINE TO CONFIGURE DMA SC 2 & 6 OR 3 & 7
* 
T9DCF NOP             CONFIGURE THE 6 I-O INSTR. IN 
      LDB DMAPT         DMA SUBROUTINE TO SC 2 OR 3 
      JSB ISC 
      LDA DMA1        RECONFIGURE 1.& 6. DMA COMMAND
      ADA .+4           TO SC 6 OR 7
      STA DMA1
      LDA DMA6
      ADA .+4 
      STA DMA6
      JMP T9DCF,I 
* 
* 
* 
*        SUBROUTINE TO CREATE DMA ADDRESS WORD, PREPARE 
*        2-WORD DATA BUFFER & SET UP LOC "DMAXZ"
* 
T9DIR NOP 
      RAR             ROTATE DIRECTION BIT TO BIT POS 15
      AND SW15          CONCATENATE BUFFER ADDRESS & STORE
      IOR AW
      STA AWLC
      SSA             WAS DMA OUTPUT REQUESTED? 
      JMP *+8         NO, INPUT 
      LDA .1252       YES, LOAD OUTPUT BUFFER 
      STA AW+1
      LDA .0525 
      STA AW+2
      LDA T9.02       INSERT STC CH,C INSTR FOR DMA OUTPUT
      STA DMAXY 
      JMP T9DIR,I 
      CLA             CLEAR INPUT BUFFER
      STA AW+1
      STA AW+2
      CLA             REMOVE STC CH,C INSTR FOR DMA INPUT 
      STA DMAXY 
      JMP T9DIR,I 
* 
      SKP 
* 
*        SUBROUTINE TO TRANSFER DATA VIA DMA
* 
T9DMA NOP 
      LDA T9.01       LOAD CONTROL WORD WITH INTERF. BOARD
DMA1  OTA DMASC         SC & OUTPUT 
DMA2  CLC DMASC       OUTPUT MEM ADDRESS WORD 
      LDA AWLC
DMA3  OTA DMASC 
DMA4  STC DMASC       OUTPUT BLOCK LENGTH 
      LDA .-2 
DMA5  OTA DMASC 
DMAXY NOP             TURN I/O BOARD ON IF DMA OUTPUT 
DMA6  STC DMASC,C     TURN DMA ON 
      JMP T9DMA,I 
* 
T9.02 STC CH,C
T9.01 OCT 120000      CONTROL WORD WITH INTRF. BOARD SC 
AWLC  OCT 0           ADDR WORD WITH BUFF ADDR & DIRECTION
AW    DEF *+1 
      BSS 2 
* 
* 
* 
*        SUBROUTINE TO READ DATA FROM INTERF BOARD & COMPARE IT 
* 
T9IN  NOP 
      CLB             SET DMA ERR FLAG TO 0 
      NOP             ALLOW 12554 BOARD TO FINISH DMA 
      NOP               TRANF. BEFORE CHECKING
T9.03 LIA CH          READ 2 WORDS TRANSFERED TO INTF.
      CPA .1252         BOARD BY DMA BACK IN & COMPARE
      RSS 
      JSB T9DER       1. WORD TRANSFERED FAILED 
      INB             SET DMA ERROR FLAG TO 1 
T9.04 STC CH,C
      LDA .-4         ALLOW TIME FOR 12554 BOARD TO REPLY 
      ISZ A 
      JMP *-1 
T9.05 LIA CH
      CPA .0525 
      JMP T9IN,I
      JSB T9DER       2. WORD TRANSFERED FAILED 
* 
      SKP 
* 
*        SUBROUTINE TO PREPARE OUTPUT BUFFER FOR DMA TRANSFER 
* 
T9OUT NOP 
      LDA .1252       OUTPUT 2 WORDS TO INTF. BOARD 
T9.06 OTA CH
T9.07 STC CH,C
      LDA .-4         ALLOW TIME FOR 12554 BOARD TO REPLY 
      ISZ A 
      JMP *-1 
      LDA .0525 
T9.08 OTA CH
      JMP T9OUT,I 
* 
* 
* 
*        SUBROUTINE TO CHECK INPUT BUFFER FOR CORRECT DATA
* 
T9VRF NOP 
      LDB .+2         SET DMA ERROR FLAG TO 2 
      LDA AW+1        COMPARE THE 2 INPUTTED WORDS VIA
      CPA .1252         DMA INTO THE MEMORY BUFFER WITH 
      RSS                 THE EXPECTED VALUE
      JSB T9DER       ERROR 
      INB             SET DMA ERROR FLAG TO 3 
      LDA AW+2
      CPA .0525 
      JMP T9VRF,I     2. WORD OK, RETURN
      JSB T9DER 
* 
* 
* 
*        ERROR SUBROUTINE FOR DMA TRANSFER
* 
T9DER NOP 
      STA T9ARG       STORE DATA RECEIVED FROM DMA
      STB T9BRG         TRANSFER & ERROR FLAG 
      LDA BSSCX       STORE BUS SW SC INTO ERR MSG. 
      JSB N2AO
      STA ER54+17 
      STA ER55+17 
      LDA ER54P       ASSUME THAT DMA OUTPUT ERR
      LDB T9BRG       GET ERROR FLAG AGAIN
      RBR,SLB         WAS THIS A DMA OUTPUT?
      LDA ER55P       NO, INPUT ERR 
      IOR SW15        YES, ADD CONCATENATION BIT
      STA E5X1          & STORE IN MESSAGE
* 
      LDA ER5P1       ASSUME THAT 1.WORD FAILED 
      RBL,SLB         IS THAT TRUE? 
      LDA ER5P2       NO, 2. WORD FAILED
      IOR SW15        YES, ADD CONCATENATION BIT
      STA E5X2          & STORE IN MESSAGE
* 
      SKP 
* 
      LDA DMA1        DETERMEN FAILING DMA SC, CONVERT
      AND .77           TO ASCII & STORE IN MESSAGE 
      JSB N2AO
      STA ER5XC+13
* 
      LDA .1252       ASSUME THAT 1. WORD FAILED
      LDB T9BRG 
      SLB             IS THAT TRUE? 
      LDA .0525       NO, 2. WORD FAILED
      CLE             CONVERT EXPECTED WORD TO ASCII
      LDB ER5PE         & STUFF IN MESSAGE
      JSB O2AS,I
* 
      CLE             CONVERT ACTUAL WORD TO ASCII
      LDB ER5PA 
      LDA T9ARG 
      JSB O2AS,I
* 
      LDA .1252      LOAD A-REG WITH EXPECTED & B-REG 
      LDB T9BRG        WITH ACTUAL DATA WORD
      SLB            IS EXPECTED WORD = 125252? 
      LDA .0525      NO, IT'S 052525
      LDB T9ARG      ACTUAL WORD
      JSB ERMS,I
E5X1  NOP 
E5X2  NOP 
      DEF ER5XC,I 
      DEF ER5XE 
      JMP T09,I      EXIT TEST
* 
T9ARG OCT 0 
T9BRG OCT 0 
* 
ER54P DEF ER54
ER55P DEF ER55
ER5P1 DEF ER5X1 
ER5P2 DEF ER5X2 
* 
ER5PE DEF ER5XE+7 
ER5PA DEF ER5XA+7 
ER54  ASC 19,E054 DMA OUTPUT ERR, ON BUS SW SC VV/
ER55  ASC 19,E055 DMA INPUT ERR,  ON BUS SW SC VV/
ER5X1 ASC 04,     1._ 
ER5X2 ASC 04,     2._ 
ER5XC ASC 15, WORD TRANSF FAILED ON SC ZZ/
ER5XE ASC 10,     EXPECTED XXXXXX 
      OCT 6412
ER5XA ASC 11,     ACTUAL   YYYYYY/
* 
* 
* 
*************************************************************** 
      HED MESSAGES
FWAA  EQU *         FIRST WORD OF AVAL. MEMORY
      END 
                                            