* * SUBROUTINE TO DO SOME PROCESSING * IF MORE SUBTESTS ARE TO BE MADE, EXIT TO (P+1) * OTHERWISE EXIT TO (P+2) * MPPRC NOP LDA TEMP+1 CHECK JSB PDATC,I RESULTS. JMP MPPR2 ERROR. MPPR1 EQU * ISZ INDIC BUMP COUNTER. JMP *+3 ISZ MPPRC DONE. EXIT TO (P+2). JMP MPPRC,I LDA TEMP NOT DONE. MOVE POINTER ADA .+9 TO NEXT ENTRY. STA TEMP JMP MPPRC,I EXIT TO (P+1). * MPPR2 EQU * LDB PERN4 JSB PERMS,I OUTPUT ERROR MESSAGE. JMP MPPR1 * * * HED FFP DIAGNOSTIC - TEST 11 * ********* * .XDIV * ********* TST10 EQU * XXDIV NOP * JSB MSGC,I OUTPUT MESSAGE. DEF MMS11 * * DO STANDARD TEST TABLE * LDA PDVHD,I SET CMA,INA STA INDIC COUNTER. LDA PDVBS SET STA TEMP POINTER. * XDIV1 EQU * JSB DVSUB DO SUBTEST. * JSB DVPRC JMP XDIV1 DO NEXT SUBTEST. * * DO SPECIAL TEST TABLE * LDA PDVH1,I SET CMA,INA STA INDIC COUNTER. LDA PDVB1 SET STA TEMP POINTER. * XDIV5 EQU * CLO CLEAR OVERFLOW. JSB DVSUB DO SUBTEST. SOC CHECK OVERFLOW. JMP XDIV2 SET! CONTINUE. LDB PR201 NOT SET! OUTPUT JSB PPROV,I MESSAGE. XDIV2 EQU * JSB DVPRC JMP XDIV5 DO NEXT SUBTEST. * * END OF TEST. EXIT. * JMP XXDIV,I EXIT. * * * * SUBROUTINE TO SET UP SUBTEST AND CALL MICRO * ENTER WITH (A)=POINTER TO INPUT * DVSUB NOP STA XDVP1 SET POINTER TO 1ST OPERAND IN ADA .+3 MICRO CALL. SET POINTER TO STA XDVP2 2ND OPERAND IN MICRO CALL. ADA .+3 SET POINTER TO EXPECTED STA TEMP+1 OUTPUT. * * CALL MICRO * RAM .XDIV CALLING SEQUENCE. DEF OUTPT POINTER TO OUTPUT LOCATION XDVP1 BSS 1 POINTER TO 1ST OPERAND XDVP2 BSS 1 POINTER TO 2ND OPERAND * JMP DVSUB,I EXIT. * * * * SUBROUTINE TO DO SOME PROCESSING * IF MORE SUBTESTS ARE TO BE MADE, EXIT TO (P+1). * OTHERWISE EXIT TO (P+2) * DVPRC NOP LDA TEMP+1 CHECK JSB PDATC,I RESULTS. JMP DVPR2 ERROR. DVPR1 EQU * ISZ INDIC BUMP COUNTER. JMP *+3 ISZ DVPRC DONE. EXIT TO (P+2). JMP DVPRC,I LDA TEMP NOT DONE. MOVE POINTER ADA .+9 TO NEXT ENTRY. STA TEMP JMP DVPRC,I EXIT TO (P+1). * DVPR2 EQU * LDB PERN5 JSB PERMS,I OUTPUT ERROR MESSAGE. JMP DVPR1 * * * HED FFP DIAGNOSTIC - TEST 12 * ********* * .DFER * ********* TST11 EQU * XDFER NOP JSB MSGC,I OUTPUT MESSAGE. DEF MMS12 * JSB XDSET SET UP TEST. * * NOW EXECUTE .DFER TEST. * RAM .DFER DEF TTB1 DESTINATION. DEF TTB4 SOURCE. * JSB XDCHK CHECK RESULTS. JMP XDFR3 NO ERROR. * JSB ERMS,I OUTPUT ERROR MESSAGE. DEF RMS15 * * * CHECK MEMORY PROTECT * XDFR3 EQU * LDB PTTB2 SET FENCE ADDRESS AND TURN ON JSB PMEMT,I MEM. PROTECT LOGIC. * RAM .DFER DEF TTB1 DESTINATION. DEF TTB4 SOURCE. * * RETURN FROM MICRO. * LDA MPIND DID MEMORY PROTECT INTERRUPT SZA OCCUR? JMP XDFR4 YES. GO TO EXIT. JSB MTNOF NO. TURN OFF MEM. PROTECT. LDB PR211 PRINT ERROR MESSAGE. JSB PRNMP XDFR4 EQU * JMP XDFER,I EXIT TEST. * * * * SUBROUTINE TO PREPARE TEST * XDSET NOP CCA STORE -1 IN SOURCE LOCATIONS. STA TTB4 STA TTB5 STA TTB6 CLA STORE 0 IN DESTINATION LOCATIONS STA TTB1 STA TTB2 STA TTB3 STA TTB7 JMP XDSET,I RETURN. * * * SUBROUTINE TO CHECK RESULTS * IF AN ERROR EXISTS, EXIT TO (P+2) * OTHERWISE EXIT TO (P+1) * XDCHK NOP LDA .-3 SET COUNTER. STA TEMP LDB PTTB1 GET POINTER. XDCK1 EQU * LDA B,I GET CONTENTS. CPA .-1 =-1? RSS JMP XDCK2 NO. ERROR. INB YES. BUMP POINTER. ISZ TEMP DONE? JMP XDCK1 NO. CPA TTB4 YES. IS (TTB4) STILL=-1? JMP XDCHK,I YES. EXIT TO (P+1). XDCK2 EQU * ISZ XDCHK NO. ERROR. EXIT TO (P+2). JMP XDCHK,I * * HED FFP DIAGNOSTIC - TEST 13 * ********* * .XFER * ********* TST12 EQU * XXFER NOP JSB MSGC,I OUTPUT MESSAGE. DEF MMS13 * JSB XDSET SET UP TEST. * * EXECUTE * LDA PTTB4 (A)=SOURCE ADDRESS. LDB PTTB1 (B)=DESTINATION ADDRESS. RAM .XFER * JSB XFCHK WRONG RETURN. ERROR! JSB XDCHK CHECK RESULTS. JMP XXFER,I NO ERROR. EXIT. * JSB ERMS,I OUTPUT ERROR MESSAGE. DEF RMS16 * XXFR1 EQU * JMP XXFER,I EXIT TEST. * * * * SUBROUTINE TO PRINT "RETURN AT INCORR LOC" * XFCHK NOP JSB ERMS,I OUTPUT ERROR MESSAGE. DEF RMS23 JMP XFCHK,I EXIT. * RMS23 ASC 13,E221 RETURN AT INCORR LOC/ * * HED SUBROUTINES * * SUBROUTINE TO DISABLE MEMORY PROTECT LOGIC AND * TO RESTORE TRAP CELL HALT. * MTNOF NOP CLC MPPAR DISABLE MEM. PROTECT LOGIC. LDA TRHLT RESTORE TRAP CELL HALT. STA MPPAR CLA RESET MEM. PROTECT TEST STA MPTES INDICATOR. CLF INTP TURN OFF INTERRUPT SYSTEM. JMP MTNOF,I EXIT. * * * * SUBROUTINE TO PRINT "NO CHECK ON MEM PROT VIOLATION". * ALSO TO TURN OFF MEM PROTECT LOGIC. * ENTER WITH (B)= POINTER TO ERROR NUMBER STRING * PRNMP NOP JSB MTNOF TURN OFF MEM PROTECT LOGIC. LDA B,I MOVE STA RMS09 ERROR INB NUMBER LDA B,I INTO STA RMS09+1 MESSAGE BUFFER. * JSB ERMS,I PRINT ERROR MESSAGE. DEF RMS09 JMP PRNMP,I EXIT. * * SKP * ORG 6000B * * * SUBROUTINE TO PROCESS DATA ERROR MESSAGES FOR * DBLE XADD XSUB * XMPY XDIV * TESTS. * * ENTER WITH (B)= POINTER TO ERROR NUMBER STRING. * PRIOR TO ENTERING THE FOLLOWING SHOULD BE SET UP: * (TEMP+1)=POINTER TO EXPECTED OUTPUT * (POUTP)= POINTER TO OBTAINED OUTPUT * ERMES NOP LDA B,I MOVE STA RMS00 ERROR NUMBER INB LDA B,I I INTO STA RMS00+1 MESSAGE BUFFER. * * MOVE ACTUAL DATA INTO BUFFER * LDA POUTP SET POINTER STA TEMP+5 TO OBTAINED OUTPUT. LDB .-3 LDA PRAC1 JSB CBNOC MOVE DATA. * * MOVE EXPECTED DATA INTO BUFFER * LDA TEMP+1 SET POINTER STA TEMP+5 TO EXPECTED OUTPUT. LDB .-3 LDA PREX1 JSB CBNOC MOVE DATA. * * OUTPUT MESSAGE * LDB POUTP INB STB TEMP+6 LDA POUTP,I (A)=1ST WORD OF OBTAINED OUTPUT. LDB B,I (B)=2ND WORD OF OBTAINED OUTPUT. JSB ERMS,I GO TO ERROR PRINTING ROUTINE. DEF RMS00 LDB BIT14 IF BIT#14 IS NOT SET, JSB SWRT,I JMP ERMES,I EXIT. ISZ TEMP+6 OTHERWISE SET (A)=3RD WORD LDB TEMP+6,I OF OBTAINED OUTPUT, CLB SET (B)=0 AND OCT 107000 HALT. * LDA TEMP+1,I SET (A)=1ST WORD OF EXPECTED ISZ TEMP+1 OUTPUT. LDB TEMP+1,I SET (B)=2ND WORD OF EXPECTED OCT 107001 OUTPUT AND HALT. * ISZ TEMP+1 SET (A)=3RD WORD OF EXPECTED LDA TEMP+1,I OUTPUT. CLB SET (B)=0 OCT 107002 AND HALT. JMP ERMES,I EXIT. * * * * SUBROUTINE TO CONVERT A SET OF BINARY NUMBERS * (STORED IN A BUFFER) INTO OCTAL AND INSERT THEM * IN ASCII FORMAT INTO A MESSAGE BUFFER. * * ENTER WITH (A)= POINTER TO DESTINATION STRING * ENT (B)= -NR OF DATA ITEMS TO BE PROCESSED * * PRIOR TO ENTERING THE SUBROUTINE,LOCATION * (TEMP+5)MUST CONTAIN THE POINTER TO THE SOURCE STRING * (OBTAINED OR EXPECTED OUTPUT). * THE NUMBERS TO BE PRINTED ARE ASSUMED TO BE * SEPERATED BY TWO BLANKS. * CBNOC NOP STA TEMP+7 SAVE POINTER. STB TEMP+6 SET COUNTER. CBNC1 EQU * LDB TEMP+5,I (B)=BINARY NUMBER * * CONVERT AND INSERT. * STA TEMP+3 SET POINTER. LDA .-3 SET COUNTER. STA TEMP+4 * * FIRST PROCESS BIT#15. * CLA (A)=0. RBL,SLB IF BIT#15 IS SET, INA ADD 1. ADA B60 MAKE ASCII. ALF,ALF ROTATE INTO UPPER AND STORE. STA TEMP+3,I * * NOW PROCESS THE OTHER BITS. * CLE (E)=0. CBNC2 EQU * CLA (A)=0. ROTATE. RBL,SLB IF BIT IS SET, ADA .+4 ADD 4. RBL,SLB ROTATE. IF BIT IS SET, ADA .+2 ADD 2. RBL,SLB ROTATE. IF BIT IS SET, INA ADD 1. ADA B60 MAKE ASCII. ALF,ALF ROTATE 8 BITS. SEZ IF LOWER CHAR., JMP CBNC3 ROTATE 8 BITS ALF,ALF AND IOR TEMP+3,I "OR IN" DATA. CBNC3 EQU * STA TEMP+3,I * CME COMPLEMENT (E). SEZ,RSS IF UPPER CHAR. JUST DONE, JMP CBNC2 GO BACK. ISZ TEMP+3 IF LOWER CHAR. JUST DONE, ISZ TEMP+4 BUMP POINTER AND GO BACK. JMP CBNC2 NOT ALL BITS PROCESSED YET. * * ISZ TEMP+6 ALL DATA ITEMS PROCESSED? RSS JMP CBNOC,I YES. EXIT. ISZ TEMP+5 NO. BUMP LDA TEMP+7 POINTERS ADA .+4 AND STA TEMP+7 GO JMP CBNC1 BACK. * * * SUBROUTINE TO PRINT "OVERFLOW NOT SET". * ENTER WITH (B)= POINTER TO ERROR NUMBER STRING * PROVN NOP LDA B,I MOVE STA RMS18 ERROR INB NUMBER LDA B,I INTO STA RMS18+1 MESSAGE BUFFER. * JSB ERMS,I PRINT ERROR MESSAGE. DEF RMS18 JMP PROVN,I EXIT. * * * SUBROUTINE TO STOP TBG AND RESTORE * TRAP CELL HALT * TBGST NOP CLF INTP STOP INTERRUPTS. CLCTB CLC CH STOP TBG. LDA TRHLT RESTORE TRAP STA TBGSC,I CELL HALT. JMP TBGST,I EXIT. * * * SUBROUTINE TO DETERMINE IF TBG INTERRUPTED * IN MICRO CODE. IF SO, EXIT TO (P+2). * OTHERWISE EXIT TO (P+1). * TBCHK NOP LDA TBIND CHECK FOR THE(ALMOST IMPOSSIBLE) SZA CASE,THAT TBG DID NOT INTERRUPT. JMP TBCK1 INTERRUPTED. JSB TBGST DID NOT INTERRUPT YET. STOP TBG. JMP TBCHK,I EXIT TO (P+1). TBCK1 EQU * SLA,RSS INTERRUPTED IN MICRO? JMP TBCHK,I NO. EXIT TO (P+1). * ISZ TBCHK YES. EXIT TO (P+2). LDA TEMP+8 RESTORE (A). JMP TBCHK,I * * * * SUBROUTINE TO CHECK RESULTS OBTAINED BY * DBLE XADD XSUB * * XMPY XDIV * * MICRO CODE. * * ENTER WITH (A)=POINTER TO EXPECTED OUTPUT. * IF NO COMPARISON, EXIT TO (P+1). * OTHERWISE EXIT TO (P+2). DATCK NOP STA TEMP+2 SAVE POINTER EXPECTED OUTPUT. LDA POUTP STA TEMP+3 SET POINTER TO OBTAINED OUTPUT. LDB .-3 (B)=COUNTER DTCK1 EQU * LDA TEMP+2,I CPA TEMP+3,I COMPARE? RSS JMP DATCK,I NO. ERROR. EXIT TO (P+1). ISZ TEMP+2 YES. BUMP POINTERS. ISZ TEMP+3 INB,SZB DONE? JMP DTCK1 NO. ISZ DATCK YES. EXIT TO (P+2). JMP DATCK,I * * * TBG INTERRUPT SUBROUTINE * TBGIN NOP ISZ TBIND SET INDICATOR=1. STA TEMP+8 SAVE (A). JSB TBGST STOP TBG. RESTORE TRAP CELL HALT LDA TBGIN INTERRUPTED IN MICRO CODE? CPA TBGAD RSS YES. EXIT WITH INDICATOR=1. ISZ TBIND NO. SET INDICATOR=2. EXIT. JMP TBGN1,I EXIT. * * * * * SUBROUTINE TO PROCESS DATA ERROR MESSAGES * FOR SNGL TESTS. * * PRIOR TO ENTERING THE FOLLOWING SHOULD BE SET UP. * (TEMP+1)=POINTER TO EXPECTED OUTPUT * (POUTP)=POINTER TO OBTAINED OUTPUT * RMSSN NOP * * MOVE ACTUAL DATA INTO BUFFER * LDA POUTP SAVE POINTER STA TEMP+5 TO OBTAINED OUTPUT. LDB .-2 (B)=-2 LDA P19AC (A)=POINTER TO DESTINATION BUFR. JSB CBNOC MOVE DATA. * * MOVE EXPECTED DATA INTO BUFFER * LDA TEMP+1 SAVE POINTER STA TEMP+5 TO EXPECTED OUTPUT. LDB .-2 (B)=-2 LDA P19EX (A)=POINTER TO DESTINATION BUFR. JSB CBNOC MOVE DATA. * * OUTPUT MESSAGE * LDB POUTP LDA B,I (A)=1ST WORD OF OBTAINED OUTPUT. INB LDB B,I (B)=2ND WORD OF OBTAINED OUTPUT. JSB ERMS,I PRINT ERROR MESSAGE. DEF RMS19 LDB BIT14 IF BUT#14 IS NOT SET, JSB SWRT,I JMP RMSSN,I EXIT. LDB TEMP+1 OTHERWISE SET (A)=1ST WORD LDA B,I OF EXPECT OUTPUT. INB SET (B)=2ND WORD OF EXPECTED LDB B,I OUTPUT AND OCT 107000 HALT. JMP RMSSN,I EXIT. * * * * SUBROUTINE TO PROCESS DATA ERROR MESSAGES * FOR ..MAP TESTS * * PRIOR TO ENTERING THE FOLLOWING SHOULD BE SET UP. * (TEMP+1)= POINTER TO EXPECTED OUTPUT * (POUTP) = POINTER TO OBTAINED OUTPUT * MPERR NOP * * MOVE ACTUAL DATA INTO BUFFER * LDA POUTP SAVE POINTER STA TEMP+5 TO OBTAINED OUTPUT. CCB (B)=-1 LDA P24AC (A)=POINTER TO DESTINATION BUFR. JSB CBNOC MOVE DATA. * * MOVE EXPECTED DATA INTO BUFFER * LDA TEMP+1 SAVE POINTER STA TEMP+5 TO EXPECTED OUTPUT. CCB (B)=-1 LDB P24EX (A)=POINTER TO DESTINATION BUFR. JSB CBNOC MOVE DATA. * * OUTPUT MESSAGE * LDA POUTP,I (A)=OBTAINED OUTPUT. LDB TEMP+1,I (B)=EXPECTED OUTPUT. JSB ERMS,I PRINT ERROR MESSAGE. DEF RMS24 JMP MPERR,I EXIT. * * * * SUBROUTINE TO PRINT "NOT INTERRUPTABLE". * ENTER WITH (B)= POINTER TO ERROR NUMBER STRING. * PRNIN NOP LDA B,I MOVE STA RMS25 ERROR INB NUMBER LDA B,I INTO STA RMS25+1 MESSAGE BUFFER. * JSB ERMS,I PRINT ERROR MESSAGE. DEF RMS25 JMP PRNIN,I EXIT. * * * BUFFER TO OUTPUT "NOT INTERRUPTIBLE" * RMS25 ASC 12,XXXX NOT INTERRUPTIBLE/ E142 ASC 2,E142 E162 ASC 2,E162 * HED TEST DATA TABLES * * ******************************************************************** * TABLES FOR ..MAP TESTS ******************************************************************** * USED FOR 2 DIMENSIONAL ARRAY TESTS. ******************************************************************** * MPHD2 EQU * DEC 4 NR. OF TABLE ENTRIES. EACH ENTRY * CONSISTS OF 6 WORDS. * * WORD 1 - BASE ADDRESS * WORD 2 - 1ST SUBSCRIPT * WORD 3 - 2ND SUBSCRIPT * WORD 4 - LENGTH OF 1ST DIMENSION * WORD 5 - NR. OF WORDS/VARIABLE * WORD 6 - EXPECTED OUTPUT * MPBS2 EQU * OCT 4000 DEC 1 DEC 1 DEC 10 DEC 2 OCT 4000 * OCT 6000 DEC 1 DEC 10 DEC 10 DEC 2 OCT 6264 * OCT 7777 DEC 10 DEC 1 DEC 10 DEC 3 OCT 10032 * OCT 6500 DEC 10 DEC 10 DEC 10 DEC 1 OCT 6643 * * * * * ******************************************************************** * USED FOR 3 DIMENSIONAL ARRAY TEST. ******************************************************************** * MPHD3 EQU * DEC 8 NR. OF TABLE ENTRIES. EACH ENTRY * CONSISTS OF 8 WORDS. * * WORD 1 - BASE ADDRESS * WORD 2 - 1ST SUBSCRIPT * WORD 3 - 2ND SUBSCRIPT * WORD 4 - 3RD SUBSCRIPT * WORD 5 - LENGTH OF 1ST DIMENSION * WORD 6 - LENGTH OF 2ND DIMENSION * WORD 7 - NR. OF WORDS/VARIABLE * WORD 8 - EXPECTED OUTPUT * MPBS3 EQU * OCT 4000 DEC 1 DEC 1 DEC 1 DEC 10 DEC 10 DEC 3 OCT 4000 * OCT 4000 DEC 10 DEC 1 DEC 1 DEC 10 DEC 10 DEC 3 OCT 4033 * OCT 4000 DEC 1 DEC 10 DEC 1 DEC 10 DEC 10 DEC 3 OCT 4416 * OCT 4000 DEC 10 DEC 10 DEC 1 DEC 10 DEC 10 DEC 3 OCT 4451 * OCT 4000 DEC 1 DEC 1 DEC 10 DEC 10 DEC 10 DEC 3 OCT 11214 * OCT 4000 DEC 1 DEC 10 DEC 10 DEC 10 DEC 10 DEC 3 OCT 11632 * OCT 4000 DEC 10 DEC 1 DEC 10 DEC 10 DEC 10 DEC 3 OCT 11247 * OCT 4000 DEC 10 DEC 10 DEC 10 DEC 10 DEC 10 DEC 3 OCT 11665 * * * ******************************************************************** * * * FWAA EQU * END