* 
      HED FFP DIAGNOSTIC - TEST 4 
* 
* 
TST03 EQU * 
********* 
* .SETP * 
********* 
XSETP NOP 
      JSB MSGC,I    OUTPUT MESSAGE. 
      DEF MMS04 
* 
*  DO REGULAR TEST
* 
      JSB STPPR     PREPARE TEST TABLE. 
      JSB STPGO     GO TO MICRO.
      JSB STPCK     CHECK RESULTS.
* 
      JSB MEMPR     IF NO MEM. PROT. PRESENT, 
      JMP XSTP3       SKIP. ELSE
* 
*  DO MEMORY PROTECT TEST.
* 
      LDB PTTB2     SET FENCE ADDRESS ABOVE "TTB1". 
      LDA PXS15 
      JSB PMEMT,I 
      JSB STPGO     GO TO MICRO.
* 
*  RETURN FROM MICRO. 
* 
XST15 LDA MPIND 
      SZA           DID MEM. PROT. INTERRUPT OCCUR? 
      JMP XSTP3     YES. EXIT.
      JSB MTNOF     NO. TURN OFF MEM. PROTECT.
      LDB PR104     PRINT ERROR MESSAGE.
      JSB PRNMP 
* 
XSTP3 EQU * 
      JSB PINTK,I   IF NOT CONF. FOR INTERR.
      JMP XSETP,I   EXIT. 
* 
* 
* 
*  DO INTERRUPT TEST FOR COUNT > 30 
* 
      LDA PXST4     (A)=EXIT ADDRESS
      JSB INTON     TURN ON INTERR. INTERF. 
      CLA,INA       (A)=INITIAL VALUE=1 
      LDB PT18      (B)=INITIAL ADDR
      STF INTP      ENABLE INTERRUPTS 
* 
XSTP6 RAM .SETP     CALL MICRO
      DEF CNT 
* 
      CLF INTP      DISABLE INTERRUPTS
      JSB INTOF     TURN OFF INTERR. INTERF.
XSTP4 EQU * 
      JSB PCHEK,I   CHECK INTERRUPT 
      RSS 
      JMP XSTP5     INTERRUPTED 
      LDB PR105     NOT INTERRUPTED. PRINT
      JSB PPRNN,I     ERROR MESSAGE 
      JMP XSTP9     DO NEXT INTERR. TEST
* 
XSTP5 EQU * 
      LDA INTAD     WAS P-REG RESTORED? 
      CPA PXST6 
      JMP XSTP7     YES.
      LDB PR106     NO. PRINT ERROR MESSAGE 
      JSB PPNRS,I 
XSTP7 EQU * 
      LDA AREG      WAS A-REG RESTORED? 
      CPA .+1 
      JMP XSTP8     YES.
      LDB PR107     NO. PRINT ERROR MESSAGE 
      JSB PANRS,I 
XSTP8 EQU * 
      LDB BREG      WAS B-REG RESTORED? 
      CPB PT18
      JMP XSTP9     YES. DO NEXT INTERR. TEST 
      LDB PR110     NO. PRINT ERROR MESSAGE 
      JSB PBNRS,I 
* 
* 
* TEST FOR INTERRUPTIBILITY DURING PARAM. FETCHING
* 
XSTP9 EQU * 
      LDA PXS11     (A)=EXIT ADDRESS
      JSB INTON     TURN ON INTERR. INTERF. 
      CLA,INA       (A)=INITIAL VALUE 
      LDB PT18      (B)=INITIAL ADDR. 
      STF INTP      TURN ON INTERRUPTS
* 
XST10 EQU * 
      RAM .SETP     CALL MICRO
      DEF CNT1,I
* 
      CLF INTP      TURN OFF INTERRUPTS 
      JSB INTOF     TURN OFF INTERR. INTERF.
XST11 EQU * 
      JSB PCHEK,I   CHECK INTERRUPT 
      RSS 
      JMP XST12     INTERRUPTED 
      JSB ERMS,I    NOT INTERRUPTED. PRINT
      DEF RM111       ERROR MESSAGE.
      JMP XSETP,I   EXIT
* 
XST12 EQU * 
      LDA INTAD     WAS P-REG RESTORED? 
      CPA PXS10 
      JMP XST13     YES.
      JSB ERMS,I    NO. PRINT ERROR MESSAGE 
      DEF RM112 
* 
XST13 EQU * 
      LDA AREG      WAS A-REG RESTORED? 
      CPA .+1 
      JMP XST14     YES.
      JSB ERMS,I    NO. PRINT ERROR MESSAGE 
      DEF RM113 
* 
XST14 EQU * 
      LDB BREG      WAS B-REG RESTORED? 
      CPB PT18
      JMP XSETP,I   YES. EXIT 
      JSB ERMS,I    NO. PRINT ERROR MESSAGE 
      DEF RM114 
      JMP XSETP,I   EXIT. 
* 
* 
* 
* 
* 
* 
* 
*  SUBROUTINE TO SET UP THE PARAMETERS, EXECUTE THE 
*  CALLING SEQUENCE FOR SETP MICRO. 
* 
STPGO NOP 
      LDB P15       SET COUNT.
      STB K 
      LDB PTTB1     SET POINTER.
      CLA           SET (A)=0.
* 
      RAM .SETP     CALLING SEQUENCE. 
      DEF K 
* 
      JMP STPGO,I   EXIT. 
* 
K     BSS 1 
* 
* 
*  SUBROUTINE TO PREPARE TEST TABLE LOCATIONS 
*  A "0" WILL BE STORED IN EACH LOCATION
* 
STPPR NOP 
      LDB M16       SET COUNTER.
      STB TEMP
      CLA           (A)=0.
      LDB PTTB1     SET POINTER.
STPP1 EQU * 
      STA B,I       STORE.
      INB           BUMP POINTER. 
      ISZ TEMP      DONE? 
      JMP STPP1     NO. 
      JMP STPPR,I   YES. EXIT.
* 
* 
* 
*  SUBROUTINE TO CHECK RESULTS
* 
STPCK NOP 
      STB TEMP      SAVE (B). 
      SZA,RSS       (A)=0?
      JMP STPC1     YES.
      JSB ERMS,I    OUTPUT ERROR MESSAGE. 
      DEF RMS11 
STPC1 EQU * 
      LDB TEMP      RESTORE (B).
      CPB PTB16     (B)=LAST ADDRESS+1? 
      JMP STPC2     YES.
      JSB ERMS,I    OUTPUT ERROR MESSAGE. 
      DEF RMS12 
* 
*  CHECK RESULTS
* 
STPC2 EQU * 
      CLA           SET FOR INITIAL VALUE.
      STA TEMP
      LDA M15       SET COUNTER.
      STA TEMP+1
      LDB PTTB1     SET POINTER.
STPC3 EQU * 
      LDA B,I       GET CELL CONTENTS.
      CPA TEMP      OK? 
      JMP STPC4     YES.
      JSB ERMS,I    OUTPUT ERROR MESSAGE. 
      DEF RMS13 
      JMP STPCK,I   EXIT. 
STPC4 EQU * 
      ISZ TEMP      BUMP VALUE. 
      INB           BUMP POINTER. 
      ISZ TEMP+1    DONE? 
      JMP STPC3     NO. 
      LDA TTB16     YES. CHECK FOR "OVERRUN". 
      SZA,RSS 
      JMP STPCK,I   OK! EXIT. 
      JSB ERMS,I    OUTPUT ERROR MESSAGE. 
      DEF RMS14 
      JMP STPCK,I   EXIT. 
* 
* 
* 
      HED FFP DIAGNOSTIC - TEST 5 
* 
********* 
* XADD  * 
********* 
TST04 EQU * 
XXAD  NOP 
      JSB MSGC,I    OUTPUT MESSAGE
      DEF MMS05 
* 
*  DO JUST ONE TEST, SINCE XADD SUBROUTINE USES THE 
*  SAME CODE AS .XADD SUBROUTINE
* 
* 
      LDA PADBS     SET POINTER TO INPUT
      STA TEMP
      STA XAD1      SET POINTER TO 1ST OPERAND
      ADA .+3         IN
      STA XAD2          CALLING SEQUENCE
      ADA .+3       SET POINTER TO 2ND OPERAND
      STA TEMP+1      IN CALLING SEQUENCE 
* 
*  CALL MICRO 
* 
      RAM XADD
      DEF *+4 
      DEF OUTPT     POINTER TO OUTPUT 
XAD1  BSS 1         POINTER TO 1ST OPERAND
XAD2  BSS 1         POINTER TO 2ND OPERAND
* 
*  EXIT FROM MICRO
* 
      LDA TEMP+1    CHECK 
      JSB PDATC,I     RESULT
      RSS 
      JMP XXAD,I    OK. 
* 
      LDB PERN6     ERROR. OUTPUT ERROR 
      JSB PERMS,I     MESSAGE 
      JMP XXAD,I    EXIT
* 
* 
      HED FFP DIAGNOSTIC - TEST 6 
* 
********* 
* XSUB  * 
********* 
TST05 EQU * 
XXSB  NOP 
      JSB MSGC,I    OUTPUT MESSAGE
      DEF MMS06 
* 
*  DO JUST ONE TEST, SINCE XSUB SUBROUTINE USES THE 
*  SAME CODE AS .XSUB SUBROUTINE
* 
* 
      LDA PSBBS     SET POINTER TO INPUT
      STA TEMP
      STA XSB1      SET POINTER TO 1ST OPERAND
      ADA .+3         IN CALLING SEQUENCE 
      STA XSB2
      ADA .+3       SET POINTER TO 2ND OPERAND
      STA TEMP+1      IN CALLING SEQUENCE 
* 
*  CALL MICRO 
* 
      RAM XSUB
      DEF *+4 
      DEF OUTPT     POINTER TO OUTPUT 
XSB1  BSS 1         POINTER TO 1ST OPERAND
XSB2  BSS 1         POINTER TO 2ND OPERAND
* 
*  EXIT FROM MICRO
* 
      LDA TEMP+1    CHECK RESULT
      JSB PDATC,I 
      RSS 
      JMP XXSB,I    OK. 
* 
      LDB PERN7     ERROR. OUTPUT ERROR 
      JSB PERMS,I     MESSAGE 
      JMP XXSB,I    EXIT
* 
* 
      HED FFP DIAGNOSTIC - TEST 7 
* 
********* 
* XMPY  * 
********* 
* 
TST06 EQU * 
XXMP  NOP 
      JSB MSGC,I    OUTPUT MESSAGE
      DEF MMS07 
* 
*  DO JUST ONE TEST, SINCE XMPY SUBROUTINE USES THE 
*  SAME CODE AS .XMPY SUBROUTINE
* 
* 
      LDA PMLBS     SET POINTER TO INPUT
      STA TEMP
      STA XMP1      SET POINTER TO 1ST OPERAND
      ADA .+3       SET POINTER TO 2ND OPERAND
      STA XMP2        IN CALLING SEQUENCE 
      ADA .+3 
      STA TEMP+1
* 
*  CALL MICRO 
* 
      RAM XMPY
      DEF *+4 
      DEF OUTPT     POINTER TO OUTPUT 
XMP1  BSS 1         POINTER TO 1ST OPERAND
XMP2  BSS 1         POINTER TO 2ND OPERAND
* 
*  EXIT FROM MICRO
* 
      LDA TEMP+1    CHECK RESULT
      JSB PDATC,I 
      RSS 
      JMP XXMP,I    OK. 
* 
      LDB PERN8     ERROR. OUTPUT ERROR 
      JSB PERMS,I     MESSAGE 
      JMP XXMP,I    EXIT
* 
* 
      HED FFP DIAGNOSTIC - TEST 8 
* 
********* 
* .XADD * 
********* 
TST07 EQU * 
* 
* 
XXADD NOP 
      JSB MSGC,I    OUTPUT MESSAGE. 
      DEF MMS08 
* 
*  DO STANDARD TEST TABLE 
* 
      LDA PADHD,I   SET 
      CMA,INA 
      STA INDIC       COUNTER.
      LDA PADBS     SET 
      STA TEMP        POINTER.
* 
XADD1 EQU * 
      JSB ADSUB     DO SUBTEST. 
* 
      JSB ADPRC 
      JMP XADD1     DO NEXT SUBTEST.
* 
*  NOW DO SPECIAL TEST TABLE. 
* 
      LDA PADH1,I   SET 
      CMA,INA 
      STA INDIC       COUNTER.
      LDA PADB1     SET 
      STA TEMP        POINTER.
* 
XADD5 EQU * 
      CLO           CLEAR OVERFLOW. 
      JSB ADSUB     DO SUBTEST. 
      SOC           CHECK OVERFLOW. 
      JMP XADD6     SET! CONTINUE.
      LDB PR141     NOT SET! OUTPUT 
      JSB PPROV,I     MESSAGE.
XADD6 EQU * 
      JSB ADPRC 
      JMP XADD5     DO NEXT SUBTEST.
* 
*  DO SECOND SPECIAL TEST TABLE 
* 
      LDA PADH2,I   SET 
      CMA,INA 
      STA INDIC       COUNTER.
      LDA PADB2     SET 
      STA TEMP        POINTER.
* 
XADD7 EQU * 
      STO           SET OVERFLOW. 
      JSB ADSUB     DO SUBTEST. 
      SOS           CHECK OVERFLOW. 
      JMP XADD8     IF CLEAR, CONTINUE. 
      LDB PR143     IF SET, OUTPUT
      JSB PROVS       ERROR MESSAGE.
XADD8 EQU * 
      JSB ADPRC 
      JMP XADD7     DO NEXT SUBTEST.
* DO MEMORY PROTECT TEST
* 
      JSB MEMPR     SKIP IF NO MEM. PROTECT 
      JMP XAD11       PRESENT 
* 
      LDA PADB1     SET 
      STA XADP5       POINTERS
      ADA .+3           IN
      STA XADP6           MICRO CALL
      LDA PXD12     (A)=EXIT ADDRESS
      LDB POUTP     (B)=FENCE ADDRESS 
      JSB PMEMT,I   TURN ON MEM. PROTECT
* 
      RAM .XADD     CALL MICRO
      DEF OUTPT 
XADP5 BSS 1 
XADP6 BSS 1 
* 
XAD12 EQU * 
      LDA MPIND     DID MEM. PROTECT OCCUR? 
      SZA 
      JMP XAD11     YES.
      JSB MTNOF     NO. TURN OFF MEM. PROTECT 
      LDB PR145     PRINT ERROR 
      JSB PRNMP       MESSAGE 
* 
*  DO INTERRUPT TEST. 
* 
XAD11 EQU * 
      JSB PINTK,I   IF NOT CONF. FOR INTERR., EXIT
      JMP XXADD,I 
* 
      LDA PADB1     SET 
      STA XADP3       POINTERS
      ADA .+3           IN
      STA XADP4           MICRO CALL. 
      LDA PXAD9     (A)=EXIT ADDRESS
      JSB INTON     TURN ON INTERR. INTERFACE 
      JSB ADDSB     CALL MICRO
      JSB PCHEK,I   CHECK INTERRUPT 
      RSS 
      JMP XAD10     INTERRUPTED 
      LDB PR142     NOT INTERRUPTED. OUTPUT 
      JSB PPRNN,I     ERROR MESSAGE 
      JMP XXADD,I   EXIT
* 
XAD10 EQU * 
      LDA INTAD     WAS P RESTORED? 
      CPA PXAD2 
      JMP XXADD,I   YES. EXIT.
      LDB PR144     NO. OUTPUT ERROR
      JSB PPNRS,I     MESSAGE 
      JMP XXADD,I   EXIT
* 
* 
*  SUBROUTINE TO SET UP SUBTEST AND CALL MICRO. 
*  ENTER WITH (A)=POINTER TO INPUT. 
* 
ADSUB NOP 
      STA XADP1       IN MICRO CALL.
      ADA .+3       SET POINTER TO 2ND OPERAND
      STA XADP2       IN MICRO CALL.
      ADA .+3       STORE POINTER TO EXPECTED 
      STA TEMP+1      OUTPUT. 
* 
* 
*  CALL MICRO 
* 
      RAM .XADD     CALLING SEQUENCE. 
      DEF OUTPT     POINTER TO OUTPUT LOCATION
XADP1 BSS 1         POINTER TO 1ST OPERAND
XADP2 BSS 1         POINTER TO 2ND OPERAND
* 
      JMP ADSUB,I   EXIT
* 
* 
* 
*  SUBROUTINE TO DO SOME PROCESSING 
*  IF MORE SUBTESTS ARE TO BE MADE, EXIT TO (P+1) 
*  OTHERWISE EXIT TO (P+2)
* 
ADPRC NOP 
      LDA TEMP+1    CHECK 
      JSB PDATC,I     RESULTS.
      JMP ADPR2     ERROR.
ADPR1 EQU * 
      ISZ INDIC     BUMP COUNTER. 
      JMP *+3 
      ISZ ADPRC     DONE. EXIT TO (P+2).
      JMP ADPRC,I 
      LDA TEMP      NOT DONE. MOVE POINTER
      ADA .+9         TO NEXT ENTRY.
      STA TEMP
      JMP ADPRC,I   EXIT TO (P+1).
* 
ADPR2 EQU * 
      LDB PERN2 
      JSB PERMS,I   OUTPUT ERROR MESSAGE. 
      JMP ADPR1 
* 
* 
* 
*  SUBROUTINE USED FOR INTERRUPT TEST 
* 
ADDSB NOP 
      STF INTP      ENABLE INTERRUPTS 
XADD2 EQU * 
      RAM .XADD     CALL MICRO
      DEF OUTPT 
XADP3 BSS 1 
XADP4 BSS 1 
* 
      CLF INTP      DISABLE INTERRUPTS
      JSB INTOF     TURN OFF INTERR. INTERFACE
XADD9 EQU * 
      JMP ADDSB,I   EXIT
* 
* 
* 
PXAD9 DEF XADD9 
PR144 DEF E144
PXD12 DEF XAD12 
* 
* 
* 
      HED FFP DIAGNOSTIC - TEST 9 
* 
********* 
* .XSUB * 
********* 
* 
TST08 EQU * 
XXSUB NOP 
* 
      JSB MSGC,I    OUTPUT MESSAGE. 
      DEF MMS09 
* 
*  INITIATE 
* 
      LDA PSBHD,I   SET 
      CMA,INA 
      STA INDIC       COUNTER.
      LDA PSBBS     SET 
      STA TEMP        POINTER.
* 
* 
*  SET UP FOR SUBTEST 
* 
XSUB1 EQU * 
      STA XSBP1       IN MICRO CALL.
      ADA .+3       SET POINTER TO 2ND OPERAND
      STA XSBP2       IN MICRO CALL.
      ADA .+3       SET POINTER TO EXPECTED 
      STA TEMP+1      OUTPUT. 
* 
* 
* 
*  CALL MICRO 
* 
      RAM .XSUB     CALLING SEQUENCE. 
      DEF OUTPT     POINTER TO OUTPUT LOCATION
XSBP1 BSS 1         POINTER TO 1ST OPERAND
XSBP2 BSS 1         POINTER TO 2ND OPERAND
* 
* 
*  EXIT TO MICRO. CHECK RESULTS.
* 
      LDA TEMP+1    CHECK 
      JSB PDATC,I     RESULTS.
      JMP XSUB3     ERROR.
XSUB2 EQU * 
      ISZ INDIC     BUMP COUNTER. 
      RSS 
      JMP XSUB4     ALL TESTS DONE. 
      LDA TEMP      NOT DONE. MOVE POINTER
      ADA .+9         TO NEXT ENTRY.
      STA TEMP
      JMP XSUB1     DO NEXT SUBTEST.
* 
XSUB3 EQU * 
      LDB PERN3 
      JSB PERMS,I   OUTPUT ERROR MESSAGE. 
      JMP XSUB2 
* 
*  END OF TESTS. EXIT.
* 
XSUB4 EQU * 
      JMP XXSUB,I   EXIT. 
      HED FFP DIAGNOSTIC - TEST 10
* 
********* 
* .XMPY * 
********* 
TST09 EQU * 
XXMPY NOP 
* 
      JSB MSGC,I    OUTPUT MESSAGE. 
      DEF MMS10 
* 
*  DO STANDARD TEST TABLE 
* 
      LDA PMLHD,I   SET 
      CMA,INA 
      STA INDIC       COUNTER.
      LDA PMLBS     SET 
      STA TEMP        POINTER.
* 
XMPY1 EQU * 
      JSB MPSUB     DO SUBTEST. 
* 
      JSB MPPRC 
      JMP XMPY1     DO NEXT SUBTEST.
* 
*  DO SPECIAL TEST TABLE
* 
      LDA PMLH1,I   SET 
      CMA,INA 
      STA INDIC       COUNTER.
      LDA PMLB1     SET 
      STA TEMP        POINTER.
* 
XMPY3 EQU * 
      CLO           CLEAR OVERFLOW. 
      JSB MPSUB     DO SUBTEST. 
* 
      SOC           CHECK OVERFLOW. 
      JMP XMPY2     SET! CONTINUE.
      LDB PR161     NOT SET! OUTPUT 
      JSB PPROV,I     MESSAGE.
XMPY2 EQU * 
      JSB MPPRC 
      JMP XMPY3     DO NEXT SUBTEST 
* 
*  DO INTERRUPT TEST
* 
      JSB PINTK,I   IF NOT CONF. FOR INTERRUPT, 
      JMP XXMPY,I     EXIT
* 
      CLA           CLEAR INDICATOR 
      STA INTID 
      LDA PMLB1     SET 
      STA XMLP3       POINTERS
      ADA .+3           IN
      STA XMLP4           MICRO CALL. 
      LDA PXMP5     SET EXIT ADDRESS
      STA INTN1 
      JSB INTON     TURN ON INTERR. INTERF. 
      STF INTP      ENABLE INTERRUPTS 
XMPY4 EQU * 
      RAM .XMPY     CALL MICRO. 
      DEF OUTPT 
XMLP3 BSS 1 
XMLP4 BSS 1 
* 
      CLF INTP      DISABLE INTERRUPTS
      JSB INTOF     TURN OFF INTERR. INTERF.
XMPY5 EQU * 
      JSB PCHEK,I   CHECK INTERRUPT 
      RSS 
      JMP XMPY6     INTERRUPTED 
      LDB PR162     NOT INTERRUPTED. OUTPUT 
      JSB PPRNN,I     ERROR MESSAGE 
      JMP XXMPY,I   EXIT
* 
XMPY6 EQU * 
      LDA INTAD     WAS P RESTORED? 
      CPA PXMP4 
      JMP XXMPY,I   YES. EXIT 
      LDB PR163     NO.OUTPUT ERROR MESSAGE 
      JSB PPNRS,I     AND 
      JMP XXMPY,I       EXIT
* 
* 
                                                                                                                