* OCT 116412 -0.900016501999E-10 OCT 144640 OCT 106677 * OCT 074541 +0.333650123667E+14 OCT 113327 OCT 013132 * OCT 113645 -0.269748589362E-23 OCT 062306 OCT 111545 * * * ******************************************************************** * * HED SUBROUTINES * * SUBROUTINE TO TURN ON THE INTERR. INTERFACE * ENTER WITH (A)=EXIT ADDRESS * INTON NOP STA INTN1 SAVE EXIT ADDRESS LDA ITRAP SET TRAP CELL STA INTSC,I CLA CLEAR INDICATOR STA INTID CLC INTP STCSC STC CH EXECUTE "STC SC" INSTRUCTION STFSC STF CH EXECUTE "STF SC" INSTRUCTION JMP INTON,I EXIT * * * * * SUBROUTINE TO TURN OFF THE INTERR. INTERFACE * INTOF NOP CLCSC CLC CH EXECUTE "CLC SC" INSTRUCTION LDA TRHLT SET HALT IN STA INTSC,I TRAP CELL JMP INTOF,I EXIT * * * * * SUBROUTINE TO CHECK IF MEM. PROTECT HARDWARE * IS PRESENT * * IF NOT PRESENT EXIT TO (P+1) * OTHERWISE EXIT TO (P+2) * MEMPR NOP LDA BIT5 IF MEM. PROTECT NOT AND CPTO PRESENT, SZA EXIT TO ISZ MEMPR (P+1) JMP MEMPR,I ELSE EXIT TO (P+2) ORG 4000B HED FFP DIAGNOSTIC - TEST TABLE * TSTD EQU * DEF TST00 .GOTO TEST DEF TST01 .ENTR TEST DEF TST02 .ENTP TEST DEF TST03 .SETP TEST DEF TST04 XADD TEST DEF TST05 XSUB TEST DEF TST06 XMPY TEST DEF TST07 .XADD TEST DEF TST08 .XSUB TEST DEF TST09 .XMPY TEST DEF TST10 .XDIV TEST DEF TST11 XDIV TEST DEC -1 * HED FFP DIAGNOSTIC - TEST 1 * ********* * .GOTO * ********* TST00 EQU * XGOTO NOP JSB MSGC,I OUTPUT MESSAGE. DEF MMS01 CLA RESET INDICATOR. STA INDIC * * CHECK 16 INDIRECTS (CHECKS SUBR. "GETQ1") * LDA M16 FILL LOCATIONS 1-16 OF STA TEMP LDB PTTB1 TEST TABLE WITH LDA PTTB2 STA TEMP+1 "DEF NEXT LOCATION,I". XGOT3 EQU * LDA TEMP+1 IOR BIT15 STA B,I INB ISZ TEMP+1 ISZ TEMP JMP XGOT3 LDA JNGOT STORE "JMP RETURN" IN LOC. 17 STA TTB17 CLA,INA SET SELECTION NR. STA J JMP XGOT1 GO TO MICRO-CODE. * * ******************************************************************** XGOT1 EQU * RAM .GOTO CALLING SEQUENCE FOR DEF *+18 ".GOTO" FIRMWARE. DEF J PTTB1 DEF TTB1 PTTB2 DEF TTB2 PTTB3 DEF TTB3 PTTB4 DEF TTB4 PTTB5 DEF TTB5 PTTB6 DEF TTB6 PTTB7 DEF TTB7 PTTB8 DEF TTB8 PTTB9 DEF TTB9 PTB10 DEF TTB10 PTB11 DEF TTB11 PTB12 DEF TTB12 PTB13 DEF TTB13 PTB14 DEF TTB14 PTB15 DEF TTB15 PTB16 DEF TTB16 ******************************************************************** ******************************************************************** PTB17 DEF TTB17 PTB18 DEF TTB18 TTB18 EQU * * * AFTER COMPLETION OF A SUBTEST, CONTROL WILL COME HERE TO * DETERMINE WHICH SUBTEST HRS TO BE EXECUTED NEXT. * NGOT EQU * LDA INDIC ADA DNGOT LDA A,I JMP A,I * DNGOT DEF *+1 DEF NGOT1 DEF NGOT2 DEF NGOT3 DEF NGOT4 DEF NGOT5 * * NGOT1 EQU * TEST FOR 16 INDIRECTS IS OK. CLA,INA SET INDIC=1. STA INDIC * * NOW CHECK FOR J=0 * LDA JRGOT FILL LDB M16 STB TEMP LOCATIONS OF LDB PTTB1 NGT11 EQU * TEST TABLE WITH STA B,I INB "JMP TO ERROR". ISZ TEMP JMP NGT11 * LDA JNGOT STORE "JMP TO RETURN" STA TTB1 IN LOC. 1. CLA SET SEL. NR AND STA J GO TO MIRCO-CODE. JMP XGOT1 * NGOT2 EQU * TEST FOR J=0 IS O.K. LDA .+2 SET INDIC=2. STA INDIC * * NOW CHECK FOR J<0 * CCA SET SEL. NR. AND STA J GO TO MICRO-CODE. JMP XGOT1 * NGOT3 EQU * TEST FOR J<0 IS O.K. LDA .+3 SET INDIC=3. STA INDIC * * NOW CHECK FOR J>16 * LDA JRGOT STORE "JMP ERROR" IN LOC. 1. STA TTB1 LDA JNGOT STORE "JMP RETURN" IN LOC. 16. STA TTB16 LDA P40 SET LOC. OF SEL. NR. AND STA J GO TO MIRCO-PROGRAM. JMP XGOT1 * NGOT4 EQU * TEST FOR J>16 IS OK. LDA .+4 SET INDIC=4. STA INDIC * * NOW CHECK FOR J=8 * LDA JRGOT STORE "JMP ERROR" IN LOC. 16. STA TTB16 LDA JNGOT STORE "JMP RETURN" IN LOC. 8 STA TTB8 LDA P8 GET SEL. NR. AND STA J GO TO MICRO. JMP XGOT1 * * NGOT5 EQU * JMP XGOTO,I RETURN. * * * * UPON DETECTING AN ERROR(IF FIRMWARE RETURNS TO * A TEST TABLE LOCATION!!!), CONTROL WILL COME HERE * TO DETERMINE WHICH ERROR MESSAGE HAS TO BE PRINTED. * RGOT EQU * LDA INDIC ADA DRGOT LDA A,I JMP A,I * DRGOT DEF *+1 DEF RGOT1 DEF RGOT2 DEF RGOT3 DEF RGOT4 DEF RGOT5 * RGOT1 EQU * * * TEST FAILED FOR 16 INDIRECTS * JSB ERMS,I PRINT ERROR MESSAGE. DEF RMS01 JMP NGOT1 GO DO NEXT SUBTEST. * RGOT2 EQU * * * TEST FAILED FOR J=0 * JSB ERMS,I PRINT ERROR MESSAGE. DEF RMS02 JMP NGOT2 DO NEXT SUBTEST. * RGOT3 EQU * * * TEST FAILED FOR J<0 * JSB ERMS,I PRINT ERROR MESSAGE. DEF RMS03 JMP NGOT3 DO NEXT SUBTEST. * RGOT4 EQU * * * TEST FAILED FOR J>16 * JSB ERMS,I PRINT ERROR MESSAGE. DEF RMS04 JMP NGOT4 DO NEXT SUBTEST. * RGOT5 EQU * * * TEST FAILED FOR J=8 * JSB ERMS,I PRINT ERROR MESSAGE. DEF RMS05 JMP XGOTO,I TEST.DONE. EXIT. * JRGOT JMP RGOT USED TO JUMP TO "ERROR ROUTINE" JNGOT JMP NGOT USED TO JUMP AFTER NON-ERROR EXIT * * * HED TEST TABLE * * * * ****************** *** TEST TABLE *** ****************** * TB18 BSS 1 BSS 1 BSS 1 BSS 1 BSS 1 BSS 1 BSS 1 BSS 1 BSS 1 BSS 1 BSS 1 BSS 1 BSS 1 BSS 1 * * 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 TTB17 BSS 1 * ******************************************************************** ****************** ****************** ENTRY NOP THE TEST TABLE + THE FOLLOWING * 4 LOCATIONS FORM THE CALLING * SEQUENCE FOR .ENTR AND .ENTP RNTY1 BSS 1 "RAM .ENTR" INSERTED BSS 1 "DEF TTB1" INSERTED FOR .ENTR * NOP'S FOR .ENTP BSS 1 "RSS" FOR .ENTR * "RAM .ENTP" INSERTED BSS 1 "DEF TTB1" INSERTED FOR .ENTP * ******************************************************************** ******************************************************************** ******************************************************************** STA TEMP+2 SAVE (A). STB TEMP+3 SAVE (B). LDA MPTES MEM. PROTECT TEST? SZA JMP NNTR4 YES. LDA ENTRY GET CONTENTS OF "ENTRY". CPA PNTRP CORRECT RETURN ADDRESS? JMP ENTRY,I YES. GO ON. JSB ERMS,I NO. OUTPUT ERROR MESSAGE. DEF RMS17 JMP PNTRP,I EXIT TO CORRECT RETURN ADDRESS * * HED SUBROUTINES USED BY .ENTR AND .ENTP TESTS * * THIS SUBROUTINE IS USED BY .ENTR & .ENTP TESTS * ENTRP NOP LDA RENTR SAVE RETURN ADDRESS. STA PNTRP JSB ENTRY RENTR DEF *+17 PPTB1 DEF PTTB1 DEF PTTB2 DEF PTTB3 DEF PTTB4 DEF PTTB5 DEF PTTB6 DEF PTTB7 DEF PTTB8 DEF PTTB9 DEF PTB10 DEF PTB11 DEF PTB12 DEF PTB13 DEF PTB14 DEF PTB15 DEF PTB16 JMP ENTRP,I * * ENTF1 NOP LDA RNTF1 SAVE RETURN ADDRESS. STA PNTRP JSB ENTRY RNTF1 DEF *+18 PPB1 DEF PTTB1 DEF PTTB2 DEF PTTB3 DEF PTTB4 DEF PTTB5 DEF PTTB6 DEF PTTB7 DEF PTTB8 DEF PTTB9 DEF PTB10 DEF PTB11 DEF PTB12 DEF PTB13 DEF PTB14 DEF PTB15 DEF PTB16 DEF PTB17 JMP ENTF1,I * * ENTF2 NOP LDA RNTF2 SAVE RETURN ADDRESS. STA PNTRP JSB ENTRY RNTF2 DEF *+19 PPPT1 DEF PTTB1 DEF PTTB2 DEF PTTB3 DEF PTTB4 DEF PTTB5 DEF PTTB6 DEF PTTB7 DEF PTTB8 DEF PTTB9 DEF PTB10 DEF PTB11 DEF PTB12 DEF PTB13 DEF PTB14 DEF PTB15 DEF PTB16 DEF PTB17 DEF PTB18 JMP ENTF2,I * * HED FFP DIAGNOSTIC - TEST 2 * ********* * .ENTR * ********* TST01 EQU * XENTR NOP JSB MSGC,I OUTPUT MESSAGE. DEF MMS02 * CLA RESET INDICATORS. STA MPTES STA INDIC * LDA .-3 SET UP CALLING SEQUENCE. LDB PINTR JSB SETUP * * TEST FOR ACTUAL NR. OF PARAMETERS < ALLOWED NR. * OF PARAMETERS. * TEST ALSO IF RETURN ADDRESS IS PROPERLY STORED * IN CORRECT LOCATION. MICRO PROGRAM SHOULD PROPERLY * PROCESS B-REG. ON ENTRY. * CLB RESET ENTRY LOCATION. STB TTB17 RESET LPST LOCATION OF TEST TABL STB ENTRY GO TO MICRO CODE WITH (B)=0. JSB ENTRP EXECUTE TEST. LDB PTB17 CHECK REGISTERS. JSB NTRCK LDA M16 LDB PPTB1 JSB ERPCK CHECK RESULTS. JMP RNTR1 ERROR. * LDB TTB17 NO ERROR. SZB,RSS LAST LOCATION CHANGED? JMP NNTR1 NO. RNTR1 EQU * JSB ERMS,I YES. ERROR. DEF RMS06 * * TEST FOR ACTUAL NR. OF PARAMETERS = ALLOWED NR. * OF PARAMETERS. * NNTR1 EQU * JSB ENTF1 EXECUTE TEST. LDB PNTRY CHECK REGISTERS. JSB NTRCK LDA M17 LDB PPB1 JSB ERPCK CHECK RESULTS. RSS JMP NNTR2 NO ERROR. JSB ERMS,I ERROR. DEF RMS07 * * TEST FOR ACTUAL NR. OF PARAMETERS > ALLOWED NR. * OF PARAMETERS. * NNTR2 EQU * JSB ENTF2 EXECUTE TEST. LDB PNTRY CHECK REGISTERS. JSB NTRCK LDA M17 LDB PPPT1 JSB ERPCK CHECK RESULT. RSS JMP NNTR3 NO ERROR. JSB ERMS,I ERROR. DEF RMS08 * * TEST WITH MEMORY PROTECT VIOLATION. * SET FENCE ADDRESS ABOVE "ENTRY". NNTR3 EQU * JSB MEMPR IF NO MEM. PROT. PRESENT, JMP XENTR,I EXIT. ELSE LDB PRNTY SET UP FOR MEMORY PROTECT TEST, LDA PNTR4 JSB PMEMT,I CLA,INA SAY THAT WE ARE DOING MEM. PROT. STA INDIC TEST #1. JSB ENTRP EXECUTE TEST. * * * RETURN CODE FROM MEMORY PROTECT TESTS. * NNTR4 EQU * LDA MPIND SZA DID MEM. PROT. INTERRUPT OCCUR? JMP NNTR5 YES. JSB MTNOF NO. TURN OFF MEM. PROTECT. LDB PR053 PRINT ERROR MESSAGE. JSB PRNMP JMP XENTR,I EXIT. * * NNTR5 EQU * LDA INDIC SLA,RSS WHICH TEST? JMP XENTR,I TEST #2. EXIT. * * TEST #1 JUST DONE. NOW DO TEST #2. * SET FENCE ADDRESS ABOVE TTB1. * LDB PTTB2 SET UP MEM. PROTECT. JSB PMEMT,I LDA .+2 SAY THAT WE'RE DOING TEST #2. STA INDIC JSB ENTRP EXECUTE TEST. * * JMP XENTR,I EXIT. * * * * * SUBROUTINE TO CHECK CONTENTS OF A- AND B-REGISTERS * ON EXIT FROM MICRO. * ENTER WITH (B)=EXPECTED CONTENTS. * NTRCK NOP STB TEMP+4 SAVE EXPECTED CONTENTS OF B. LDA TEMP+2 GET ORIGINAL CONTENTS OF A. CPA PNTRP =RETURN ADDRESS? JMP NTCK1 YES. JSB ERMS,I NO. OUTPUT ERROR MESSAGE. DEF RMS20 NTCK1 EQU * LDB TEMP+3 GET ORIGINAL CONTENTS OF B. CPB TEMP+4 CORRECT? JMP NTRCK,I YES. EXIT. JSB ERMS,I NO. OUTPUT ERROR MESSAGE. DEF RMS21 JMP NTRCK,I EXIT. * * * * * SUBROUTINE TO CHECK RESULTS OF EXECUTION * OF .ENTR & .ENTP TESTS. * ENTER WITH (A)=-NR. OF LOCATIONS TO BE CHECKED. * (B)=ADDRESS OF PTTB1 * ERPCK NOP STA TEMP SET COUNTER. LDA PTTB1 (A) POINTS TO TTB1. ERPK1 EQU * CPB A,I EQUAL? RSS JMP ERPCK,I NO. ERROR. INB YES. BUMP ADDRESS. INA BUMP POINTER. ISZ TEMP DONE? JMP ERPK1 NO. ISZ ERPCK YES. BUMP RETURN ADDRESS AND JMP ERPCK,I EXIT. * * * * * SUBROUTINE TO SET UP CALLING SEQUENCE FOR * .ENTR & .ENTP TEST * * ENTER WITH (A)=-NR. OF WORDS TO BE INSERTED * AND (B)=STARTING ADDRESS OF INSERTIONS. * SETUP NOP STA TEMP SET COUNTER. LDA PRNTY SET DESTINATION POINTER. STA TEMP+1 STUP1 EQU * LDA B,I STORE FROM SOURCE INTO STA TEMP+1,I DESTINATION. INB BUMP POINTERS. ISZ TEMP+1 ISZ TEMP DONE? JMP STUP1 NO. JMP SETUP,I YES. * * * HED FFP DIAGNOSTIC - TEST 3 * ********* * .ENTP * ********* TST02 EQU * XENTP NOP JSB MSGC,I OUTPUT MESSAGE. DEF MMS03 CLA CLEAR INDICATOR STA MPTES * * * * .ENTP SUBROUTINE IS THE SAME SUBROUTINE AS .ENTR * BUT WITH A DIFFERENT ENTRY POINT. * SO DO JUST ONE TEST. * TEST FOR ACTUAL NR. OF PARAMETERS < ALLOWED NR. * OF PARAMETERS. * LDA .-4 SET UP CALLING SEQUENCE. LDB PINTP JSB SETUP CLB RESET RETURN ADDRESS LOCATION. STB TTB17 RESET LAST TEST TABLE LOCATION. STB ENTRY GO TO MICRO WITH (B)=0 JSB ENTRP EXECUTE TEST. * LDA M16 LDB PPTB1 JSB ERPCK CHECK RESULTS. JMP RNTP1 ERROR. * LDB TTB17 NO ERROR. SZB,RSS LAST LOCATION CHANGED? JMP RNTP2 NO. O.K. GO TO EXIT. RNTP1 EQU * JSB ERMS,I YES. OUTPUT ERROR MESSAGE. DEF RMS10 RNTP2 EQU * JMP XENTP,I EXIT. *