* * * * 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 * ********* * ..MAP * ********* TST04 EQU * XMAP NOP * JSB MSGC,I OUTPUT MESSAGE. DEF MMS05 * * * TEST 2 DIMENSIONAL ARRAY * * * INITIATE * LDA PMPH2,I SET CMA,INA STA INDIC COUNTER. LDA PMPB2 SET STA TEMP POINTER. * * SET UP FOR SUBTEST * XMAP1 EQU * STA TEMP+1 SET LDA PMP2D POINTERS STA TEMP+2 LDB .-4 TO XMAP2 EQU * LDA TEMP+1 PARAMETERS STA TEMP+2,I ISZ TEMP+2 INTO ISZ TEMP+1 INB,SZB CALLING JMP XMAP2 SEQUENCE. * LDB TEMP+1,I (B)=NR. OF WORDS. ISZ TEMP+1 SAVE POINTER TO EXPECTED OUTPUT. CLA (A)=0 * * CALL MICRO * RAM ..MAP CALLING SEQUENCE FOR 2 DIM. MAP2D EQU * BSS 1 POINTER TO BASE ADDRESS BSS 1 POINTER TO 1ST SUBSCRIPT BSS 1 POINTER TO 2ND SUBSCRIPT BSS 1 POINTER TO 1ST DIMENSION * * * EXIT FROM MICRO. CHECK RESULTS. * CPA TEMP+1,I RESULT AS EXPECTED? JMP XMAP3 YES. STA POUTP,I NO. ERROR! JSB PMPER,I GO TO ERROR ROUTINE. XMAP3 EQU * ISZ INDIC BUMP COUNTER. RSS JMP XMAP4 2 DIM. TESTS DONE. LDA TEMP NOT DONE. MOVE POINTER ADA .+6 TO NEXT ENTRY. STA TEMP JMP XMAP1 * * * TEST 3 DIMENSIONAL ARRAY * * * INITIATE * XMAP4 EQU * LDA PMPH3,I SET CMA,INA STA INDIC COUNTER. LDA PMPB3 SET STA TEMP POINTER. * * SET UP FOR SUBTEST * XMAP5 EQU * STA TEMP+1 SET LDA PMP3D POINTERS STA TEMP+2 LDB .-6 TO XMAP6 EQU * LDA TEMP+1 PARAMETERS STA TEMP+2,I ISZ TEMP+2 INTO ISZ TEMP+1 INB,SZB CALLING JMP XMAP6 SEQUENCE. * LDB TEMP+1,I (B)=NR. OF WORDS. ISZ TEMP+1 SAVE POINTER TO EXPECTED OUTPUT. CCA (A)=-1 * * CALL MICRO * RAM ..MAP CALLING SEQUENCE FOR 3 DIM. MAP3D EQU * BSS 1 POINTER TO BASE ADDRESS BSS 1 POINTER TO 1ST SUBSCRIPT BSS 1 POINTER TO 2ND SUBSCRIPT BSS 1 POINTER TO 3RD SUBSCRIPT BSS 1 POINTER TO 1ST DIMENSION BSS 1 POINTER TO 2ND DIMENSION * * * EXIT FROM MICRO. CHECK RESULTS. * CPA TEMP+1,I RESULT AS EXPECTED? JMP XMAP7 YES. STA POUTP,I NO. ERROR! JSB PMPER,I GO TO ERROR ROUTINE. XMAP7 EQU * ISZ INDIC BUMP COUNTER. RSS JMP XMAP8 ALL TESTS DONE. LDA TEMP NOT DONE. MOVE POINTER TO ADA .+8 NEXT ENTRY. STA TEMP JMP XMAP5 * XMAP8 EQU * JMP XMAP,I HED FFP DIAGNOSTIC - TEST 6 * ********* * SNGL * ********* TST05 EQU * XSNGL NOP JSB MSGC,I OUTPUT MESSAGE. DEF MMS06 * * * DO STANDARD TEST TABLE * LDA PSGHD,I CMA,INA SET STA INDIC COUNTER. LDA PSGBS SET STA TEMP POINTER. * XSNG1 EQU * JSB SNSUB DO SUBTEST. * * EXIT FROM MICRO. CHECK RESULTS. * STA OUTPT SAVE OBTAINED VALUE. STB OUTPT+1 JSB SNPRC JMP XSNG1 DO NEXT SUBTEST. * * DO SPECIAL TEST TABLE * LDA PSGH1,I CMA,INA SET STA INDIC COUNTER. LDA PSGB1 SET STA TEMP POINTER. * XSNG5 EQU * CLO CLEAR OVERFLOW. JSB SNSUB DO SUBTEST. STA OUTPT SAVE OBTAINED VALUE. STB OUTPT+1 SOC CHECK OVERFLOW. JMP XSNG6 IF SET, CONTINUE. LDB PR121 IF NOT SET, OUTPUT JSB PPROV,I ERROR MESSAGE. LDA OUTPT RESTORE REGISTERS. LDB OUTPT+1 XSNG6 EQU * JSB SNPRC JMP XSNG5 DO NEXT SUBTEST. * * DO SECOND SPECIAL TEST TABLE * LDA PSGH2,I SET CMA,INA STA INDIC COUNTER. LDA PSGB2 SET STA TEMP POINTER. * XSNG7 EQU * STO SET OVERFLOW. JSB SNSUB DO SUBTEST. STA OUTPT SAVE OBTAINED VALUE. STB OUTPT+1 SOS CHECK OVERFLOW. JMP XSNG8 IF CLEAR, CONTINUE. LDB PR123 IF SET, OUTPUT JSB PROVS ERROR MESSAGE. LDA OUTPT RESTORE REGISTERS. LDB OUTPT+1 XSNG8 EQU * JSB SNPRC JMP XSNG7 DO NEXT SUBTEST. * * TEST IF FENCE REGISTER IS SAVED AND RESTORED * LDB PMTRY SET FENCE ABOVE LOC. "MTRY". JSB PMEMT,I TURN ON MEM. PROT. * * NOW DO A SUBTEST * LDA PDBBS SET POINTER TO INPUT. JSB DBSUB DO SUBTEST. * * DO NOT BOTHER TO CHECK RESULT * TRY TO STORE SOMETHING IN LOC. "MTRY" * CCA STA MTRY * LDA MPIND CHECK IF MEM. PROT. INTERRUPT SZA OCCURRED. JMP XSN10 YES. CONTINUE. JSB MTNOF NO. TURN OFF MEM. PROTECT LOGIC. JSB ERMS,I OUTPUT ERROR MESSAGE. DEF RMS27 * XSN10 EQU * JMP XSNGL,I EXIT. * * * * * SUBROUTINE TO SET UP SUBTEST AND CALL MICRO. * ENTER WITH (A)=POINTER TO INPUT * SNSUB NOP * SET UP FOR SUBTEST * STA SGINP INTO MICRO CALL. ADA .+3 STORE POINTER TO EXPECTED STA TEMP+1 OUTPUT. STA TEMP+2 * * CALL MICRO * RAM SNGL CALLING SEQUENCE. DEF *+2 SGINP BSS 1 POINTER TO INPUT LOCATION. * JMP SNSUB,I EXIT. * * * SUBROUTINE TO CHECK RESULTS * IF MORE SUBTESTS ARE TO BE MADE, EXIT TO (P+1) * OTHERWISE EXIT TO (P+2) * SNPRC NOP CPA TEMP+2,I 1ST WORDS COMPARE? RSS JMP SNPR2 NO. ERROR. ISZ TEMP+2 YES. 2ND WORDS COMPARE? CPB TEMP+2,I RSS JMP SNPR2 NO. ERROR. SNPR1 EQU * ISZ INDIC YES. BUMP COUNTER. JMP *+3 ISZ SNPRC DONE. EXIT TO (P+2). JMP SNPRC,I LDA TEMP NOT DONE. MOVE POINTER ADA .+5 TO NEXT ENTRY. STA TEMP JMP SNPRC,I EXIT TO (P+1). * SNPR2 EQU * JSB PRMSN,I OUTPUT ERROR MESSAGE. JMP SNPR1 * * HED FFP DIAGNOSTIC - TEST 7 * ********* * DBLE * ********* TST06 EQU * XDBL NOP * JSB MSGC,I OUTPUT MESSAGE. DEF MMS07 * * INITIATE * LDA PDBHD,I CMA,INA SET STA INDIC COUNTER. LDA PDBBS SET STA TEMP POINTER. XDBL1 EQU * JSB DBSUB DO SUBTEST. * * EXIT FROM MICRO. CHECK RESULTS. * LDA TEMP+1 SET POINTER TO EXPECTED OUTPUT. JSB PDATC,I CHECK RESULTS. JMP XDBL3 ERROR. XDBL2 EQU * ISZ INDIC BUMP COUNTER. RSS JMP XDBL4 ALL REGULAR TESTS DONE. LDA TEMP NOT DONE. MOVE POINTER ADA .+5 TO NEXT ENTRY. STA TEMP JMP XDBL1 DO NEXT SUBTEST. * XDBL3 EQU * LDB PERN1 JSB PERMS,I OUTPUT ERROR MESSAGE. JMP XDBL2 DO NEXT SUBTEST. * * * NOW DO A MEM. PROTECT TEST. * XDBL4 EQU * LDB POUT1 TURN ON MEM. PROTECT WITH FENCE JSB PMEMT,I ADDRESS ABOVE 1ST OUTPUT LOC. LDA PDBBS DO SUBTEST. JSB DBSUB LDA MPIND RETURN FROM MICRO. SZA DID MEM. PROT. VIOL. OCCUR? JMP XDBL5 YES. GO TO EXIT. JSB MTNOF NO. TURN OFF MEM. PROTECT. LDB PR131 PRINT ERROR MESSAGE. JSB PRNMP * * * END OF TESTS. EXIT. * XDBL5 EQU * JMP XDBL,I EXIT. * * * SUBROUTINE TO SET UP A SUBTEST AND CALL MICRO. * ENTER WITH (A)=POINTER TO INPUT DATA. * DBSUB NOP * * SET UP FOR SUBTEST * STA DBINP INTO MICRO CALL. ADA .+2 STORE POINTER TO EXPECTED STA TEMP+1 OUTPUT. * * CALL MICRO * RAM DBLE CALLING SEQUENCE. DEF *+3 DEF OUTPT POINTER TO OUTPUT LOCATION DBINP BSS 1 POINTER TO INPUT LOCATION JMP DBSUB,I 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 INTERRUPT TEST. * LDA TBGSC IF NOT CONFIG. SZA,RSS FOR TBG, EXIT. JMP XADD3 LDA PADB1 SET STA XADP3 POINTERS ADA .+3 IN STA XADP4 MICRO CALL. LDA PXAD2 SET ENTRY ADDRESS STA TBGAD INTO MICRO. ADA .+4 STA TBGN1 SET EXIT ADDRESS. JSB TBGTN TURN ON TBG. XADD2 EQU * RAM .XADD CALL MICRO. DEF OUTPT XADP3 BSS 1 XADP4 BSS 1 * CLF INTP JSB PTBCK,I CHECK ON INTERRUPT. RSS JMP XADD3 INTERRUPTED. EXIT. JSB PTBST,I NOT INTERRUPTED. STOP TBG. LDB PR142 JSB PPRNN,I OUTPUT ERROR MESSAGE. * * END OF TESTS. EXIT. * XADD3 EQU * 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 * * 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. * XMPY5 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 XMPY5 DO NEXT SUBTEST. * * DO INTERRUPT TEST * LDA TBGSC IF NOT CONFIGURED FOR SZA,RSS TBG, EXIT. JMP XMPY3 LDA PMLB1 SET STA XMLP3 POINTERS ADA .+3 IN STA XMLP4 MICRO CALL. LDA PXMP4 SET ENTRY ADDRESS STA TBGAD INTO MICRO. ADA .+4 STA TBGN1 SET EXIT ADDRESS. JSB TBGTN TURN ON TBG. XMPY4 EQU * RAM .XMPY CALL MICRO. DEF OUTPT XMLP3 BSS 1 XMLP4 BSS 1 * CLF INTP JSB PTBCK,I CHECK ON INTERRUPT. RSS JMP XMPY3 INTERRUPTED. EXIT. JSB PTBST,I NOT INTERRUPTED. STOP TBG. LDB PR162 JSB PPRNN,I OUTPUT ERROR MESSAGE. * * END OF TEST. EXIT. * XMPY3 EQU * JMP XXMPY,I EXIT. * * * * SUBROUTINE TO SET UP SUBTEST AND CALL MICRO. * ENTER WITH (A)=POINTER TO INPUT * MPSUB NOP STA XMLP1 IN MICRO CALL. ADA .+3 SET POINTER TO 2ND OPERAND STA XMLP2 IN MICRO CALL. ADA .+3 SET POINTER TO EXPECTED STA TEMP+1 OUTPUT. * * CALL MICRO * RAM .XMPY CALLING SEQUENCE. DEF OUTPT POINTER TO OUTPUT LOCATION XMLP1 BSS 1 POINTER TO 1ST OPERAND XMLP2 BSS 1 POINTER TO 2ND OPERAND * JMP MPSUB,I EXIT. * *