* * SUBROUTINE TO TURN ON MEMORY PROTECT LOGIC. * * ENTER WITH (B)=FENCE ADDRESS. * MEMTN NOP STA MPCKX STORE EXIT ADDRESS LDA PMMTN SET INTERRUPT ADDRESS. STA MPPAR CLA STA MPIND RESET INDICATOR. INA ANNOUNCE THAT WE ARE DOING STA MPTES A MEM. PROTECT TEST. OTB MPPAR LOAD FENCE REGISTER. STF INTP STC MPPAR TURN ON MEM. PROTECT LOGIC. JMP MEMTN,I * * * * MEMORY PROTECT VIOLATION ROUTINE. * * MPCHK NOP CLF INTP LIA MPPAR GET VIOLATION REGISTER. SSA JMP MPCK1 PARITY ERROR! CLF MPPAR TURN OFF PARITY LOGIC LDA TRHLT MEMORY PROTECT VIOLATION! STA MPPAR RESTORE TRAP CELL HALT. CLA,INA SET INDICATOR. STA MPIND STF MPPAR TURN ON PARITY LOGIC. JMP MPCKX,I RETURN * MPCK1 EQU * OCT 106077 HALT ON PARITY ERROR. JMP *-1 MPCKX BSS 1 * * ********************************************************************** * SUBROUTINE TO CHECK IF DIAGNOSTIC IS CONFIGURED FOR INTERRUPT * TEST. IF NOT THEN EXIT TO (P+1) ELSE EXIT TO (P+2). * * INTCK NOP LDA INTSC IF NOT CONFIGURED FOR INTERRUPTS SZA THEN EXIT TO (P+1) ISZ INTCK JMP INTCK,I ELSE EXIT TO (P+2) * * * *********************************************************************** * SUBROUTINE TO CHECK IF INTERRUPT OCCURRED IN MICROCODE. IF NOT * THEN EXIT TO (P+1) ELSE EXIT TO (P+2). * * CHECK NOP LDA INTID CHECK INDICATOR SZA IF = 0 THEN EXIT TO (P+1) ISZ CHECK ELSE EXIT TO (P+2) JMP CHECK,I * * * * SUBROUTINE TO PRINT " NOT INTERRUPTIBLE" MESSAGE. * 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 RMS25 ASC 12,XXXX NOT INTERRUPTIBLE/ * * * * SUBROUTINE TO PRINT "A-REG NOT RESTORED ON INTERP". * ENTER WITH (B) = POINTER TO ERROR NUMBER STRING. * * ANRES NOP LDA B,I MOVE STA RMS26 ERROR NUMBER INB INTO LDA B,I MESSAGE STA RMS26+1 BUFFER. JSB ERMS,I PRINT ERROR MESSAGE. DEF RMS26 JMP ANRES,I EXIT RMS26 ASC 16,XXXX A-REG NOT REST. ON INTERR/ * * * SUBROUTINE TO PRINT "B-REG NOT RESTORED ON INTERRUPT". * * ENTER WITH (B) = POINTER TO ERROR NUMBER STRING. * * BNRES NOP LDA B,I MOVE STA RMS27 ERROR INB NUMBER LDA B,I INTO STA RMS27+1 MESSAGE BUFFER JSB ERMS,I PRINT ERROR MESSAGE DEF RMS27 JMP BNRES,I EXIT RMS27 ASC 16,XXXX B-REG NOT REST. ON INTERR/ * * * SUBROUTINE TO PRINT "P-REG NOT RESTORED ON INTERP". * ENTER WITH (B) = POINTER TO ERROR NUMBER STRING. * * PNRES NOP LDA B,I MOVE STA RMS28 ERROR INB NUMBER LDA B,I INTO STA RMS28+1 MESSAGE BUFFER JSB ERMS,I PRINT ERROR MESSAGE. DEF RMS28 JMP PNRES,I EXIT RMS28 ASC 16,XXXX P-REG NOT REST. ON INTERR/ * * ******************************************************************** * HED CONSTANTS AND STORAGE ORG 300B MTRY BSS 1 TO CHECK IF FENCE IS RESTORED PMTRY DEF * * * * OUTPUT STORED HERE * POUTP DEF OUTPT OUTPT BSS 1 OUTP1 BSS 1 BSS 1 POUT1 DEF OUTP1 PINV2 DEF INVL2+6 SHLTC DEF SINV2 RHLTC DEF RINV2 * * MPPAR EQU 5 ZPSTX DEF ZSTEX CONTROL SECTION POINTER * DEC -1 TEMP BSS 9 DEC -6,-5,-4,-3,-2,-1 . DEC 0,1,2,3,4,5,6,7,8,9 BIT5 OCT 40 BIT14 OCT 40000 INTID BSS 1 INTSC NOP ITRAP JSB *+1,I INSERT IN TRAP CELL FOR DEF INTSB INTERRUPT TEST AREG BSS 1 BREG BSS 1 INTAD BSS 1 INTN1 BSS 1 INDIC BSS 1 OTTB0 OTA 0 PPROV DEF PROVN * PMMTN JSB *+1,I INSERT FOR TRAP CELL DEF MPCHK OF MEMORY PROTECT, IF MEM. * PROTECT IS USED. TRHLT OCT 106077 INSERT FOR TRAP CELL OF MEM. * PROTECT, IF IT IS NOT USED. MPTES BSS 1 MPIND BSS 1 TBTIM BSS 1 PSGHD DEF SGHED PSGBS DEF SGBAS PSGH1 DEF SGHD1 PSGB1 DEF SGBS1 PSGH2 DEF SGHD2 PSGB2 DEF SGBS2 PMPH2 DEF MPHD2 PMPB2 DEF MPBS2 PDBHD DEF DBHED PDBBS DEF DBBAS PMPH3 DEF MPHD3 PMPB3 DEF MPBS3 PMP2D DEF MAP2D PMP3D DEF MAP3D PERMS DEF ERMES PRMSN DEF RMSSN PMPER DEF MPERR PDATC DEF DATCK PMEMT DEF MEMTN B60 OCT 60 B77 OCT 77 * * ERROR AND NON-ERROR MESSAGES * MMS05 ASC 8,H110 ..MAP TEST/ MMS06 ASC 8,H120 SNGL TEST/ MMS07 ASC 8,H130 DBLE TEST/ MMS12 ASC 8,H210 .DFER TEST/ MMS13 ASC 8,H220 .XFER TEST/ * * * BUFFER FOR DATA ERROR MESSAGES FOR * DBLE XADD XSUB * XMPY XDIV * TESTS. * RMS00 ASC 8,XXXX DATA ERROR OCT 6412 CR-LF ASC 2,ACT RMAC1 ASC 11,XXXXXX XXXXXX XXXXXX OCT 6412 ASC 2,EXP RMEX1 ASC 12,XXXXXX XXXXXX XXXXXX/ PRAC1 DEF RMAC1 PREX1 DEF RMEX1 PERN1 DEF ERNR1 ERNR1 ASC 2,E130 * * BUFFER TO OUTPUT ERROR MESSAGE "NO CHECK ON MEM PROT VIOLATION" * * RMS09 ASC 18,XXXX NO CHECK ON MEM PROT VIOLATION/ E131 ASC 2,E131 PR131 DEF E131 E211 ASC 2,E211 PR211 DEF E211 RMS15 ASC 6,E210 FAILED/ RMS16 ASC 6,E220 FAILED/ * * BUFFER TO OUTPUT "OVERFLOW NOT SET". * RMS18 ASC 11,XXXX OVERFLOW NOT SET/ E121 ASC 2,E121 PR121 DEF E121 * * * BUFFER FOR DATA ERROR MESSAGES FOR SNGL * RMS19 ASC 8,E120 DATA ERROR OCT 6412 CR-LF ASC 2,ACT R19AC ASC 7,XXXXXX XXXXXX OCT 6412 ASC 2,EXP R19EX ASC 8,XXXXXX XXXXXX/ P19AC DEF R19AC P19EX DEF R19EX * * * BUFFER TO OUTPUT "OVERFLOW SET" * RMS22 ASC 9,XXXX OVERFLOW SET/ E123 ASC 2,E123 E143 ASC 2,E143 PR123 DEF E123 * ****************RMS23 MESSAGE ON OTHER PAGE * * BUFFER FOR ERROR MESSAGES FOR ..MAP TESTS * RMS24 ASC 8,E110 DATA ERROR OCT 6412 CR-LF ASC 2,ACT R24AC ASC 3,XXXXXX OCT 6412 CR-LF ASC 2,EXP R24EX ASC 4,XXXXXX/ P24AC DEF R24AC P24EX DEF R24EX * PTTB1 DEF TTB1 PTTB2 DEF TTB2 PTTB4 DEF TTB4 ******************************************************************** ******************************************************************** ****************** *** TEST TABLE *** ****************** * 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 ********* HED TEST # 12 - ..MAP TESTS. * ..MAP * ********* TST12 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 SUBROUTINE PROVS * SUBROUTINE TO PRINT "OVERFLOW SET" MESSAGE * ENTER WITH (B) = POINTER TO ERROR NUMBER STRING * PROVS NOP LDA B,I MOVE STA RMS22 ERROR INB NUMBER LDA B,I INTO STA RMS22+1 MESSAGE BUFFER. JSB ERMS,I PRINT ERROR MESSAGE. DEF RMS22 JMP PROVS,I EXIT. HED TEST # 13 - SNGL TESTS. * ********* * SNGL * ********* TST13 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. JMP XSNGL,I EXIT. HED SUBROUTINE SNSUB * * * 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. HED SUBROUTINE SNPRC * * * 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 TEST # 14 - DBLE TESTS. * ********* * DBLE * ********* TST14 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 XDBL5 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. XDBL5 EQU * JMP XDBL,I EXIT. HED SUBROUTINE DBSUB * * * 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 TEST # 15 - .DFER TESTS. * ********* * .DFER * ********* TST15 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 * JSB PMMPR,I CHECK IF MEM. PROT.PRESENT JMP XDFER,I NO. EXIT. * LDA PXDF5 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. * XDFR5 EQU * 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. PXDF5 DEF XDFR5 PMMPR DEF MEMPR * * HED SUBROUTINES * * * * 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 TEST # 16 - .XFER TESTS. * ********* * .XFER * ********* TST16 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 XDCHK CHECK RESULTS. JMP XXFER,I NO ERROR. EXIT. * JSB ERMS,I OUTPUT ERROR MESSAGE. DEF RMS16 * XXFR1 EQU * JMP XXFER,I EXIT TEST. 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. HED SUBROUTINE MTNOF * * * * * 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. HED SUBROUTINE DATCK * * * * * * 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 HED SUBROUTINE RMSSN * * * * * 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.