* 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 * *