* 
      OCT 116412    -0.900016501999E-10 
      OCT 144640
      OCT 106677
* 
      OCT 074541    +0.333650123667E+14 
      OCT 113327
      OCT 013132
* 
      OCT 113645    -0.269748589362E-23 
      OCT 062306
      OCT 111545
* 
* 
* 
********************************************************************
* 
* 
      HED SUBROUTINES 
* 
*  SUBROUTINE TO TURN ON THE INTERR. INTERFACE
*  ENTER WITH (A)=EXIT ADDRESS
* 
INTON NOP 
      STA INTN1     SAVE EXIT ADDRESS 
      LDA ITRAP     SET TRAP CELL 
      STA INTSC,I 
      CLA           CLEAR INDICATOR 
      STA INTID 
      CLC INTP
STCSC STC CH        EXECUTE "STC SC" INSTRUCTION
STFSC STF CH        EXECUTE "STF SC" INSTRUCTION
      JMP INTON,I   EXIT
* 
* 
* 
* 
*  SUBROUTINE TO TURN OFF THE INTERR. INTERFACE 
* 
INTOF NOP 
CLCSC CLC CH        EXECUTE "CLC SC" INSTRUCTION
      LDA TRHLT     SET HALT IN 
      STA INTSC,I     TRAP CELL 
      JMP INTOF,I   EXIT
* 
* 
* 
* 
*  SUBROUTINE TO CHECK IF MEM. PROTECT HARDWARE 
*  IS PRESENT 
* 
*  IF NOT PRESENT EXIT TO (P+1) 
*  OTHERWISE EXIT TO (P+2)
* 
MEMPR NOP 
      LDA BIT5      IF MEM. PROTECT NOT 
      AND CPTO        PRESENT,
      SZA               EXIT TO 
      ISZ MEMPR           (P+1) 
      JMP MEMPR,I   ELSE EXIT TO (P+2)
      ORG 4000B 
      HED FFP DIAGNOSTIC - TEST TABLE 
* 
TSTD  EQU * 
      DEF TST00     .GOTO TEST
      DEF TST01     .ENTR TEST
      DEF TST02     .ENTP TEST
      DEF TST03     .SETP TEST
      DEF TST04     XADD TEST 
      DEF TST05     XSUB TEST 
      DEF TST06     XMPY TEST 
      DEF TST07     .XADD TEST
      DEF TST08     .XSUB TEST
      DEF TST09     .XMPY TEST
      DEF TST10     .XDIV TEST
      DEF TST11     XDIV TEST 
      DEC -1
* 
      HED FFP DIAGNOSTIC - TEST 1 
* 
********* 
* .GOTO * 
********* 
TST00 EQU * 
XGOTO NOP 
      JSB MSGC,I    OUTPUT MESSAGE. 
      DEF MMS01 
      CLA           RESET INDICATOR.
      STA INDIC 
* 
*  CHECK 16 INDIRECTS (CHECKS SUBR. "GETQ1")
* 
      LDA M16       FILL LOCATIONS 1-16 OF
      STA TEMP
      LDB PTTB1       TEST TABLE WITH 
      LDA PTTB2 
      STA TEMP+1        "DEF NEXT LOCATION,I".
XGOT3 EQU * 
      LDA TEMP+1
      IOR BIT15 
      STA B,I 
      INB 
      ISZ TEMP+1
      ISZ TEMP
      JMP XGOT3 
      LDA JNGOT     STORE "JMP RETURN" IN LOC. 17 
      STA TTB17 
      CLA,INA       SET SELECTION NR. 
      STA J 
      JMP XGOT1     GO TO MICRO-CODE. 
* 
* 
********************************************************************
XGOT1 EQU * 
      RAM .GOTO     CALLING SEQUENCE FOR
      DEF *+18       ".GOTO" FIRMWARE.
      DEF J 
PTTB1 DEF TTB1
PTTB2 DEF TTB2
PTTB3 DEF TTB3
PTTB4 DEF TTB4
PTTB5 DEF TTB5
PTTB6 DEF TTB6
PTTB7 DEF TTB7
PTTB8 DEF TTB8
PTTB9 DEF TTB9
PTB10 DEF TTB10 
PTB11 DEF TTB11 
PTB12 DEF TTB12 
PTB13 DEF TTB13 
PTB14 DEF TTB14 
PTB15 DEF TTB15 
PTB16 DEF TTB16 
********************************************************************
********************************************************************
PTB17 DEF TTB17 
PTB18 DEF TTB18 
TTB18 EQU * 
* 
*  AFTER COMPLETION OF A SUBTEST, CONTROL WILL COME HERE TO 
*  DETERMINE WHICH SUBTEST HRS TO BE EXECUTED NEXT. 
* 
NGOT  EQU * 
      LDA INDIC 
      ADA DNGOT 
      LDA A,I 
      JMP A,I 
* 
DNGOT DEF *+1 
      DEF NGOT1 
      DEF NGOT2 
      DEF NGOT3 
      DEF NGOT4 
      DEF NGOT5 
* 
* 
NGOT1 EQU *         TEST FOR 16 INDIRECTS IS OK.
      CLA,INA       SET INDIC=1.
      STA INDIC 
* 
*  NOW CHECK FOR J=0
* 
      LDA JRGOT     FILL
      LDB M16 
      STB TEMP        LOCATIONS OF
      LDB PTTB1 
NGT11 EQU *             TEST TABLE WITH 
      STA B,I 
      INB                 "JMP TO ERROR". 
      ISZ TEMP
      JMP NGT11 
* 
      LDA JNGOT     STORE "JMP TO RETURN" 
      STA TTB1        IN LOC. 1.
      CLA           SET SEL. NR AND 
      STA J           GO TO MIRCO-CODE. 
      JMP XGOT1 
* 
NGOT2 EQU *         TEST FOR J=0 IS O.K.
      LDA .+2       SET INDIC=2.
      STA INDIC 
* 
*  NOW CHECK FOR J<0
* 
      CCA           SET SEL. NR. AND
      STA J           GO TO MICRO-CODE. 
      JMP XGOT1 
* 
NGOT3 EQU *         TEST FOR J<0 IS O.K.
      LDA .+3       SET INDIC=3.
      STA INDIC 
* 
*  NOW CHECK FOR J>16 
* 
      LDA JRGOT     STORE "JMP ERROR" IN LOC. 1.
      STA TTB1
      LDA JNGOT     STORE "JMP RETURN" IN LOC. 16.
      STA TTB16 
      LDA P40       SET LOC. OF SEL. NR. AND
      STA J           GO TO MIRCO-PROGRAM.
      JMP XGOT1 
* 
NGOT4 EQU *         TEST FOR J>16 IS OK.
      LDA .+4       SET INDIC=4.
      STA INDIC 
* 
*  NOW CHECK FOR J=8
* 
      LDA JRGOT     STORE "JMP ERROR" IN LOC. 16. 
      STA TTB16 
      LDA JNGOT     STORE "JMP RETURN" IN LOC. 8
      STA TTB8
      LDA P8        GET SEL. NR. AND
      STA J           GO TO MICRO.
      JMP XGOT1 
* 
* 
NGOT5 EQU * 
      JMP XGOTO,I   RETURN. 
* 
* 
* 
*  UPON DETECTING AN ERROR(IF FIRMWARE RETURNS TO 
*  A TEST TABLE LOCATION!!!), CONTROL WILL COME HERE
*  TO DETERMINE WHICH ERROR MESSAGE HAS TO BE PRINTED.
* 
RGOT  EQU * 
      LDA INDIC 
      ADA DRGOT 
      LDA A,I 
      JMP A,I 
* 
DRGOT DEF *+1 
      DEF RGOT1 
      DEF RGOT2 
      DEF RGOT3 
      DEF RGOT4 
      DEF RGOT5 
* 
RGOT1 EQU * 
* 
*  TEST FAILED FOR 16 INDIRECTS 
* 
      JSB ERMS,I    PRINT ERROR MESSAGE.
      DEF RMS01 
      JMP NGOT1     GO DO NEXT SUBTEST. 
* 
RGOT2 EQU * 
* 
*  TEST FAILED FOR J=0
* 
      JSB ERMS,I    PRINT ERROR MESSAGE.
      DEF RMS02 
      JMP NGOT2     DO NEXT SUBTEST.
* 
RGOT3 EQU * 
* 
*  TEST FAILED FOR J<0
* 
      JSB ERMS,I    PRINT ERROR MESSAGE.
      DEF RMS03 
      JMP NGOT3     DO NEXT SUBTEST.
* 
RGOT4 EQU * 
* 
*  TEST FAILED FOR J>16 
* 
      JSB ERMS,I    PRINT ERROR MESSAGE.
      DEF RMS04 
      JMP NGOT4     DO NEXT SUBTEST.
* 
RGOT5 EQU * 
* 
*  TEST FAILED FOR J=8
* 
      JSB ERMS,I    PRINT ERROR MESSAGE.
      DEF RMS05 
      JMP XGOTO,I   TEST.DONE. EXIT.
* 
JRGOT JMP RGOT      USED TO JUMP TO "ERROR ROUTINE" 
JNGOT JMP NGOT     USED TO JUMP AFTER NON-ERROR EXIT
* 
* 
* 
      HED TEST TABLE
* 
* 
* 
* 
******************
*** TEST TABLE ***
******************
* 
TB18  BSS 1 
      BSS 1 
      BSS 1 
      BSS 1 
      BSS 1 
      BSS 1 
      BSS 1 
      BSS 1 
      BSS 1 
      BSS 1 
      BSS 1 
      BSS 1 
      BSS 1 
      BSS 1 
* 
* 
TTB1  BSS 1 
TTB2  BSS 1 
TTB3  BSS 1 
TTB4  BSS 1 
TTB5  BSS 1 
TTB6  BSS 1 
TTB7  BSS 1 
TTB8  BSS 1 
TTB9  BSS 1 
TTB10 BSS 1 
TTB11 BSS 1 
TTB12 BSS 1 
TTB13 BSS 1 
TTB14 BSS 1 
TTB15 BSS 1 
TTB16 BSS 1 
TTB17 BSS 1 
* 
********************************************************************
******************
******************
ENTRY NOP           THE TEST TABLE + THE FOLLOWING
*                                   4 LOCATIONS FORM THE CALLING
*                                   SEQUENCE FOR .ENTR AND .ENTP
RNTY1 BSS 1         "RAM .ENTR" INSERTED
      BSS 1         "DEF TTB1" INSERTED FOR .ENTR 
*                                 NOP'S FOR .ENTP 
      BSS 1         "RSS"         FOR .ENTR 
*                                   "RAM .ENTP" INSERTED
      BSS 1         "DEF TTB1" INSERTED FOR .ENTP 
* 
********************************************************************
********************************************************************
********************************************************************
      STA TEMP+2    SAVE (A). 
      STB TEMP+3    SAVE (B). 
      LDA MPTES     MEM. PROTECT TEST?
      SZA 
      JMP NNTR4     YES.
      LDA ENTRY     GET CONTENTS OF "ENTRY".
      CPA PNTRP     CORRECT RETURN ADDRESS? 
      JMP ENTRY,I   YES. GO ON. 
      JSB ERMS,I    NO. OUTPUT ERROR MESSAGE. 
      DEF RMS17 
      JMP PNTRP,I   EXIT TO CORRECT RETURN ADDRESS
* 
* 
      HED SUBROUTINES USED BY .ENTR AND .ENTP TESTS 
* 
*  THIS SUBROUTINE IS USED BY .ENTR & .ENTP TESTS 
* 
ENTRP NOP 
      LDA RENTR     SAVE RETURN ADDRESS.
      STA PNTRP 
      JSB ENTRY 
RENTR DEF *+17
PPTB1 DEF PTTB1 
      DEF PTTB2 
      DEF PTTB3 
      DEF PTTB4 
      DEF PTTB5 
      DEF PTTB6 
      DEF PTTB7 
      DEF PTTB8 
      DEF PTTB9 
      DEF PTB10 
      DEF PTB11 
      DEF PTB12 
      DEF PTB13 
      DEF PTB14 
      DEF PTB15 
      DEF PTB16 
      JMP ENTRP,I 
* 
* 
ENTF1 NOP 
      LDA RNTF1     SAVE RETURN ADDRESS.
      STA PNTRP 
      JSB ENTRY 
RNTF1 DEF *+18
PPB1  DEF PTTB1 
      DEF PTTB2 
      DEF PTTB3 
      DEF PTTB4 
      DEF PTTB5 
      DEF PTTB6 
      DEF PTTB7 
      DEF PTTB8 
      DEF PTTB9 
      DEF PTB10 
      DEF PTB11 
      DEF PTB12 
      DEF PTB13 
      DEF PTB14 
      DEF PTB15 
      DEF PTB16 
      DEF PTB17 
      JMP ENTF1,I 
* 
* 
ENTF2 NOP 
      LDA RNTF2     SAVE RETURN ADDRESS.
      STA PNTRP 
      JSB ENTRY 
RNTF2 DEF *+19
PPPT1 DEF PTTB1 
      DEF PTTB2 
      DEF PTTB3 
      DEF PTTB4 
      DEF PTTB5 
      DEF PTTB6 
      DEF PTTB7 
      DEF PTTB8 
      DEF PTTB9 
      DEF PTB10 
      DEF PTB11 
      DEF PTB12 
      DEF PTB13 
      DEF PTB14 
      DEF PTB15 
      DEF PTB16 
      DEF PTB17 
      DEF PTB18 
      JMP ENTF2,I 
* 
* 
      HED FFP DIAGNOSTIC - TEST 2 
* 
********* 
* .ENTR * 
********* 
TST01 EQU * 
XENTR NOP 
      JSB MSGC,I    OUTPUT MESSAGE. 
      DEF MMS02 
* 
      CLA           RESET INDICATORS. 
      STA MPTES 
      STA INDIC 
* 
      LDA .-3       SET UP CALLING SEQUENCE.
      LDB PINTR 
      JSB SETUP 
* 
*  TEST FOR ACTUAL NR. OF PARAMETERS < ALLOWED NR.
*  OF PARAMETERS. 
*  TEST ALSO IF RETURN ADDRESS IS PROPERLY STORED 
*  IN CORRECT LOCATION. MICRO PROGRAM SHOULD PROPERLY 
*  PROCESS B-REG. ON ENTRY. 
* 
      CLB           RESET ENTRY LOCATION. 
      STB TTB17     RESET LPST LOCATION OF TEST TABL
      STB ENTRY     GO TO MICRO CODE WITH (B)=0.
      JSB ENTRP     EXECUTE TEST. 
      LDB PTB17     CHECK REGISTERS.
      JSB NTRCK 
      LDA M16 
      LDB PPTB1 
      JSB ERPCK     CHECK RESULTS.
      JMP RNTR1          ERROR. 
* 
      LDB TTB17     NO ERROR. 
      SZB,RSS       LAST LOCATION CHANGED?
      JMP NNTR1     NO. 
RNTR1 EQU * 
      JSB ERMS,I    YES. ERROR. 
      DEF RMS06 
* 
*  TEST FOR ACTUAL NR. OF PARAMETERS = ALLOWED NR.
*  OF PARAMETERS. 
* 
NNTR1 EQU * 
      JSB ENTF1     EXECUTE TEST. 
      LDB PNTRY     CHECK REGISTERS.
      JSB NTRCK 
      LDA M17 
      LDB PPB1
      JSB ERPCK     CHECK RESULTS.
      RSS 
      JMP NNTR2     NO ERROR. 
      JSB ERMS,I    ERROR.
      DEF RMS07 
* 
*  TEST FOR ACTUAL NR. OF PARAMETERS > ALLOWED NR.
*  OF PARAMETERS. 
* 
NNTR2 EQU * 
      JSB ENTF2     EXECUTE TEST. 
      LDB PNTRY     CHECK REGISTERS.
      JSB NTRCK 
      LDA M17 
      LDB PPPT1 
      JSB ERPCK     CHECK RESULT. 
      RSS 
      JMP NNTR3     NO ERROR. 
      JSB ERMS,I    ERROR.
      DEF RMS08 
* 
*  TEST WITH MEMORY PROTECT VIOLATION.
*  SET FENCE ADDRESS ABOVE "ENTRY". 
NNTR3 EQU * 
      JSB MEMPR     IF NO MEM. PROT. PRESENT, 
      JMP XENTR,I     EXIT. ELSE
      LDB PRNTY     SET UP FOR MEMORY PROTECT TEST, 
      LDA PNTR4 
      JSB PMEMT,I 
      CLA,INA       SAY THAT WE ARE DOING MEM. PROT.
      STA INDIC       TEST #1.
      JSB ENTRP     EXECUTE TEST. 
* 
* 
*  RETURN CODE FROM MEMORY PROTECT TESTS. 
* 
NNTR4 EQU * 
      LDA MPIND 
      SZA           DID MEM. PROT. INTERRUPT OCCUR? 
      JMP NNTR5     YES.
      JSB MTNOF     NO. TURN OFF MEM. PROTECT.
      LDB PR053     PRINT ERROR MESSAGE.
      JSB PRNMP 
      JMP XENTR,I   EXIT. 
* 
* 
NNTR5 EQU * 
      LDA INDIC 
      SLA,RSS       WHICH TEST? 
      JMP XENTR,I   TEST #2. EXIT.
* 
*  TEST #1 JUST DONE. NOW DO TEST #2. 
*  SET FENCE ADDRESS ABOVE TTB1.
* 
      LDB PTTB2     SET UP MEM. PROTECT.
      JSB PMEMT,I 
      LDA .+2       SAY THAT WE'RE DOING TEST #2. 
      STA INDIC 
      JSB ENTRP     EXECUTE TEST. 
* 
* 
      JMP XENTR,I   EXIT. 
* 
* 
* 
* 
*  SUBROUTINE TO CHECK CONTENTS OF A- AND B-REGISTERS 
*  ON EXIT FROM MICRO.
*  ENTER WITH (B)=EXPECTED CONTENTS.
* 
NTRCK NOP 
      STB TEMP+4    SAVE EXPECTED CONTENTS OF B.
      LDA TEMP+2    GET ORIGINAL CONTENTS OF A. 
      CPA PNTRP     =RETURN ADDRESS?
      JMP NTCK1     YES.
      JSB ERMS,I    NO. OUTPUT ERROR MESSAGE. 
      DEF RMS20 
NTCK1 EQU * 
      LDB TEMP+3    GET ORIGINAL CONTENTS OF B. 
      CPB TEMP+4    CORRECT?
      JMP NTRCK,I   YES. EXIT.
      JSB ERMS,I    NO. OUTPUT ERROR MESSAGE. 
      DEF RMS21 
      JMP NTRCK,I   EXIT. 
* 
* 
* 
* 
*  SUBROUTINE TO CHECK RESULTS OF EXECUTION 
*  OF .ENTR & .ENTP TESTS.
*  ENTER WITH (A)=-NR. OF LOCATIONS TO BE CHECKED.
*             (B)=ADDRESS OF PTTB1
* 
ERPCK NOP 
      STA TEMP      SET COUNTER.
      LDA PTTB1     (A) POINTS TO TTB1. 
ERPK1 EQU * 
      CPB A,I       EQUAL?
      RSS 
      JMP ERPCK,I   NO. ERROR.
      INB           YES. BUMP ADDRESS.
      INA           BUMP POINTER. 
      ISZ TEMP      DONE? 
      JMP ERPK1     NO. 
      ISZ ERPCK     YES. BUMP RETURN ADDRESS AND
      JMP ERPCK,I     EXIT. 
* 
* 
* 
* 
*  SUBROUTINE TO SET UP CALLING SEQUENCE FOR
*  .ENTR & .ENTP TEST 
* 
*  ENTER WITH (A)=-NR. OF WORDS TO BE INSERTED
*  AND (B)=STARTING ADDRESS OF INSERTIONS.
* 
SETUP NOP 
      STA TEMP      SET COUNTER.
      LDA PRNTY     SET DESTINATION POINTER.
      STA TEMP+1
STUP1 EQU * 
      LDA B,I       STORE FROM SOURCE INTO
      STA TEMP+1,I    DESTINATION.
      INB           BUMP POINTERS.
      ISZ TEMP+1
      ISZ TEMP      DONE? 
      JMP STUP1     NO. 
      JMP SETUP,I   YES.
* 
* 
* 
      HED FFP DIAGNOSTIC - TEST 3 
* 
********* 
* .ENTP * 
********* 
TST02 EQU * 
XENTP NOP 
      JSB MSGC,I    OUTPUT MESSAGE. 
      DEF MMS03 
      CLA           CLEAR INDICATOR 
      STA MPTES 
* 
* 
* 
*  .ENTP SUBROUTINE IS THE SAME SUBROUTINE AS .ENTR 
*  BUT WITH A DIFFERENT ENTRY POINT.
*  SO DO JUST ONE TEST. 
*  TEST FOR ACTUAL NR. OF PARAMETERS < ALLOWED NR.
*  OF PARAMETERS. 
* 
      LDA .-4       SET UP CALLING SEQUENCE.
      LDB PINTP 
      JSB SETUP 
      CLB           RESET RETURN ADDRESS LOCATION.
      STB TTB17     RESET LAST TEST TABLE LOCATION. 
      STB ENTRY     GO TO MICRO WITH (B)=0
      JSB ENTRP     EXECUTE TEST. 
* 
      LDA M16 
      LDB PPTB1 
      JSB ERPCK     CHECK RESULTS.
      JMP RNTP1     ERROR.
* 
      LDB TTB17     NO ERROR. 
      SZB,RSS       LAST LOCATION CHANGED?
      JMP RNTP2     NO. O.K. GO TO EXIT.
RNTP1 EQU * 
      JSB ERMS,I    YES. OUTPUT ERROR MESSAGE.
      DEF RMS10 
RNTP2 EQU * 
      JMP XENTP,I   EXIT. 
* 
                                