ASMB,L,C *&FFPD2 * * THIS MODULE TESTS THE "FUNNY" FFP ROUTINES .DFER,.XFER,.CFER, * .ENTR,.ENTP,.SETP,.GOTO, AND ..MAP. * THESE ARE THE ONLY TESTS IN FFP AND SIS NOT USING TSTDI-- * IE TABLE DRIVEN. * WATCH OUT FOR .GOTO AND SOME OTHERS, AS THEY USE FORCED * BASE PAGE VALUES AND MOVE CODE AROUND.... * INTERRUPTS AND MP ARE ALSO USED IN SOME TESTS..... * EXTERNALS ARE TO TCPR, HFAUX,HFBAS. * *CREATED 781128 1615 * TO MOVE ADJ,XBUF TO BEGIN, TTB18 * TO FIX RAM .GOTO * TO MOVE PTTB'S TO .GOTO * TO MOVE TB18,TTB1... TO B4 ENTRY * EDITED 781003 1735 TO PUT PMMTN ON BASE PAGE (ITRAP TOO) * EDITED 781022 1830 TO PUT JRGOT,JNGOT ON BASE PAGE... * EDITED 781026 1550 TO USE SEPARATE CALLING SEQ. FOR GOTO IND TEST * TO MOVE M15 * TO REMOVE CVRT ,DISPL * TO REMOVE FILL,ERMES,PROVN,PROVS,DATCK,RMSSN,CFERT * EDITED 781211 1055 TO CHANGE ERROR #S * EDITED 790321 2300 TO ADD NAMES TO ERROR MSGS... * CHGES IN ANRES,BNRES,PNRES,PRNMP,PRNIN,MTNOF * EDITED 790322 1511 TO ADD END TO RMS14 MSG * * LAST CODE CHANGE 790322 1511 CC * NAM FFPD2 790322 1511 REV 1913 CC * A EQU 0 B EQU 1 CH EQU 0 INTP EQU 0 * ENT TST13 ENT STCSC,STFSC,CLCSC,INTSC * EXT CPTO,ERMS EXT MSGD,MSGI,STSTE EXT TINIT * * SUP SKP * THIS TEST TESTS FFP MICROCODE, PART 2 * *S TST13 EQU * TSTF2 NOP JSB MSGI "FFP3 TEST" DEF MSGF2 JSB TINIT INIT, CHECK CW... * JSB STSTE EXECUTE SUBTESTS OCT -1 ALL SUBTESTS ON SHORT PASS DEF TSTDF,I .DFER DEF TSTXF,I .XFER DEF TSTCF,I .CFER DEF TSTER,I .ENTR DEF TSTEP,I .ENTP DEF TSTSP,I .SETP DEF TSTGT,I .GOTO DEF TST.M ..MAP JMP TSTF2,I DONE MSGF2 ASC 6,FFP2 TEST // * * SKP HED MAPPING CODES FOR MACRO **************************************************** * MAPPING CODES FOR MACRO * **************************************************** .DFER EQU 205B .XFER EQU 220B ..MAP EQU 222B .GOTO EQU 221B .ENTR EQU 223B .ENTP EQU 224B .SETP EQU 227B * HED CONSTANTS AND STORAGE * POS2 DEC 2 POS4 DEC 4 POS5 DEC 5 NEG1 DEC -1 NEG3 DEC -3 NEG4 DEC -4 * * * OUTPUT STORED HERE * POUTP DEF OUTPT OUTPT BSS 1 BSS 1 * * MPPAR EQU 5 * DEC -1 TEMP BSS 9 INTID BSS 1 INTSC NOP * ORB THESE MUST BE ON BASE PAGE.... ITRAP JSB *+1,I INSERT IN TRAP CELL FOR DEF INTSB INTERRUPT TEST * PMMTN JSB *+1,I INSERT FOR TRAP CELL DEF MPCHK OF MEMORY PROTECT, IF MEM. * PROTECT IS USED. ORR * AREG BSS 1 BREG BSS 1 INTAD BSS 1 INTN1 BSS 1 INDIC BSS 1 * TRHLT OCT 106077 INSERT FOR TRAP CELL OF MEM. * PROTECT, IF IT IS NOT USED. MPTES BSS 1 MPIND BSS 1 PPB1 DEF PTTB1 PPPT1 DEF PTTB1 PRNTY DEF RNTY1 MPCKX BSS 1 * * * * * * * * * M15 DEC -15 M16 DEC -16 INNTR RAM .ENTR INSERTS DEF TTB1 FOR RSS .ENTR TEST * INNTP NOP INSERTS NOP FOR RAM .ENTP .ENTP DEF TTB1 TEST * PNTRP BSS 1 * * * * 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 HED TEST # - ..MAP TESTS. * ..MAP * ********* *S TST.M NOP * JSB MSGD OUTPUT MESSAGE. DEF MMS05 * * * TEST 2 DIMENSIONAL ARRAY * * * INITIATE * LDA MPHD2 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 NEG4 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 MPERR GO TO ERROR ROUTINE. XMAP3 EQU * ISZ INDIC BUMP COUNTER. RSS JMP XMAP4 2 DIM. TESTS DONE. LDA TEMP NOT DONE. MOVE POINTER ADA POS6 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 NEG6 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 MPERR GO TO ERROR ROUTINE. XMAP7 EQU * ISZ INDIC BUMP COUNTER. RSS JMP XMAP8 ALL TESTS DONE. LDA TEMP NOT DONE. MOVE POINTER TO ADA POS8 NEXT ENTRY. STA TEMP JMP XMAP5 * XMAP8 EQU * JMP TST.M,I * * POS6 DEC 6 POS8 DEC 8 NEG6 DEC -6 MMS05 ASC 6, ..MAP TEST/ PMPB2 DEF MPBS2 PMP2D DEF MAP2D PMPH3 DEF MPHD3 PMPB3 DEF MPBS3 PMP3D DEF MAP3D *ETST.M HED TEST # 15 - .DFER TESTS. * ********* * .DFER * ********* *S TSTDF NOP JSB MSGD 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 MEMPR CHECK IF MEM. PROT.PRESENT JMP TSTDF,I NO. EXIT. * LDA PXDF5 LDB PTTB2 SET FENCE ADDRESS AND TURN ON JSB MEMTN 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. LDA PR021 PRINT ERROR MESSAGE. JSB PRNMP XDFR4 EQU * JMP TSTDF,I EXIT TEST. PXDF5 DEF XDFR5 * * MMS12 ASC 6, .DFER TEST/ RMS15 ASC 9,E020 .DFER FAILED/ PR021 DEF E021 E021 ASC 5,E021 .DFER *ETSTDF HED SUBROUTINES * * * * SUBROUTINE TO PREPARE TEST * *S 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) * *S XDCHK NOP LDA NEG3 SET COUNTER. STA TEMP LDB PTTB1 GET POINTER. XDCK1 EQU * LDA B,I GET CONTENTS. CPA NEG1 =-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 * ********* *S TSTXF NOP JSB MSGD 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 TSTXF,I NO ERROR. EXIT. * JSB ERMS,I OUTPUT ERROR MESSAGE. DEF RMS16 * XXFR1 EQU * JMP TSTXF,I EXIT TEST. * * * MMS13 ASC 6, .XFER TEST/ RMS16 ASC 9,E022 .XFER FAILED/ *ETSTXF HED TEST # 15 - .CFER TESTS. * ********* * .CFER * ********* * .CFER EQU 231B * *S TSTCF NOP JSB MSGD OUTPUT MESSAGE. DEF MMS21 * JSB XCSET SET UP TEST. * * NOW EXECUTE .CFER TEST. * RAM .CFER DEF TTB1 DESTINATION. DEF TTB5 SOURCE. * JSB XCCHK CHECK RESULTS. JMP XCFR3 NO ERROR. * JSB ERMS,I OUTPUT ERROR MESSAGE. DEF RMS29 * * * CHECK MEMORY PROTECT * XCFR3 EQU * JSB QMMPR,I CHECK IF MEM. PROT.PRESENT JMP TSTCF,I NO. EXIT. * LDA PXCF5 LDB PTTB2 SET FENCE ADDRESS AND TURN ON JSB MEMTN MEM. PROTECT LOGIC. * RAM .CFER DEF TTB1 DESTINATION. DEF TTB5 SOURCE. * * RETURN FROM MICRO. * XCFR5 EQU * LDA MPIND DID MEMORY PROTECT INTERRUPT SZA OCCUR? JMP XCFR4 YES. GO TO EXIT. JSB MTNOF NO. TURN OFF MEM. PROTECT. LDA PR023 PRINT ERROR MESSAGE. JSB PRNMP XCFR4 EQU * JMP TSTCF,I EXIT TEST. * PXCF5 DEF XCFR5 QMMPR DEF MEMPR PR023 DEF E023 E023 ASC 5,E023 .CFER MMS21 ASC 6, .CFER TEST/ RMS29 ASC 11,E024 .CFER DATA ERROR/ *ETSTCF * * HED SUBROUTINES * * * * SUBROUTINE TO PREPARE TEST * *S XCSET NOP CCA STORE -1 IN SOURCE LOCATIONS. STA TTB5 STA TTB6 STA TTB7 STA TTB8 CLA STORE 0 IN DESTINATION LOCATIONS STA TTB1 STA TTB2 STA TTB3 STA TTB4 STA TTB9 JMP XCSET,I RETURN. * * * SUBROUTINE TO CHECK RESULTS * IF AN ERROR EXISTS, EXIT TO (P+2) * OTHERWISE EXIT TO (P+1) * *S XCCHK NOP LDA NEG4 SET COUNTER. STA TEMP LDB PTTB1 GET POINTER. XCCK1 EQU * LDA B,I GET CONTENTS. CPA NEG1 =-1? RSS JMP XCCK2 NO. ERROR. INB YES. BUMP POINTER. ISZ TEMP DONE? JMP XCCK1 NO. CPA TTB4 YES. IS (TTB4) STILL=-1? JMP XCCHK,I YES. EXIT TO (P+1). XCCK2 EQU * ISZ XCCHK NO. ERROR. EXIT TO (P+2). JMP XCCHK,I * * * * * * * * * * * SKP * .GOTO * ********* *S TSTGT NOP JSB MSGD OUTPUT MESSAGE. DEF MMS01 CLA RESET INDICATOR. STA INDIC * * CHECK 16 INDIRECTS (CHECKS SUBR. "GETQ1") * LDA M15 FILL LOCATIONS 1-15 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 TEMP+1 LOC 16= DEF LOC 17 STA B,I LDA JNGOT STORE "JMP RETURN" IN LOC. 17 STA TTB17 CLA,INA SET SELECTION NR. STA J * JMP XGOT1 GO TO MICRO-CODE. * RAM .GOTO EXECUTE MACRO DEF *+3 RETN DEF J NR DEF TTB1,I DEF TO RTN POINT,IND JMP RGOT JUST IN CASE THE CODE MESSES UP * * * ******************************************************************** 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 POS2 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 POS3 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 POS4 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 TSTGT,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 TSTGT,I TEST.DONE. EXIT. * * ORB JRGOT JMP RGOT USED TO JUMP TO "ERROR ROUTINE" JNGOT JMP NGOT USED TO JUMP AFTER NON-ERROR EXIT ORR * * * MMS01 ASC 6, .GOTO TEST/ J BSS 1 P40 DEC 40 P8 DEC 8 POS3 DEC 3 BIT15 OCT 100000 RMS01 ASC 21,E030 .GOTO FAILED FOR INDIRECT ADDRESSING/ RMS02 ASC 13,E031 .GOTO FAILED FOR J=0/ RMS03 ASC 14,E032 .GOTO FAILED FOR J=NEG/ RMS04 ASC 14,E033 .GOTO FAILED FOR J>16/ RMS05 ASC 13,E034 .GOTO FAILED FOR J=8/ *ETSTGT * * * 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 ********* * ******************************************************************** ****************** ****************** *S 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 * * RMS17 ASC 20,E044 .ENTR RETURN ADDRESS NOT STORED IN ASC 9,CORRECT LOCATION/ *EENTRY * * HED SUBROUTINES USED BY .ENTR AND .ENTP TESTS * * THIS SUBROUTINE IS USED BY .ENTR & .ENTP TESTS * *S 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 * * *S ENTF1 NOP LDA RNTF1 SAVE RETURN ADDRESS. STA PNTRP JSB ENTRY RNTF1 DEF *+18 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 * * *S ENTF2 NOP LDA RNTF2 SAVE RETURN ADDRESS. STA PNTRP JSB ENTRY RNTF2 DEF *+19 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 * ********* *S TSTER NOP JSB MSGD OUTPUT MESSAGE. DEF MMS02 * CLA RESET INDICATORS. STA MPTES STA INDIC * LDA NEG3 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 TSTER,I EXIT. ELSE LDB PRNTY SET UP FOR MEMORY PROTECT TEST, LDA PNTR4 JSB MEMTN 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. LDA PR043 PRINT ERROR MESSAGE. JSB PRNMP JMP TSTER,I EXIT. * * NNTR5 EQU * LDA INDIC SLA,RSS WHICH TEST? JMP TSTER,I TEST #2. EXIT. * * TEST #1 JUST DONE. NOW DO TEST #2. * SET FENCE ADDRESS ABOVE TTB1. * LDB PTTB2 SET UP MEM. PROTECT. JSB MEMTN LDA POS2 SAY THAT WE'RE DOING TEST #2. STA INDIC JSB ENTRP EXECUTE TEST. * * JMP TSTER,I EXIT. * * MMS02 ASC 6, .ENTR TEST/ PINTR DEF INNTR RMS06 ASC 21,E040 .ENTR FAILED FOR ACTUAL NR OF PARAM. ASC 7, ALLOWED NR/ PNTR4 DEF NNTR4 PR043 DEF E043 E043 ASC 5,E043 .ENTR *ETSTER * * * * * SUBROUTINE TO CHECK CONTENTS OF A- AND B-REGISTERS * ON EXIT FROM MICRO. * ENTER WITH (B)=EXPECTED CONTENTS. * *S 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. * RMS20 ASC 19,E045 .ENTR RETURN ADDR. NOT IN A-REG/ RMS21 ASC 18,E046 .ENTR INCORRECT ADDR. IN B-REG/ *ENTRCK * * * * * SUBROUTINE TO CHECK RESULTS OF EXECUTION * OF .ENTR & .ENTP TESTS. * ENTER WITH (A)=-NR. OF LOCATIONS TO BE CHECKED. * (B)=ADDRESS OF PTTB1 * *S 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. * *S 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 * ********* *S TSTEP NOP JSB MSGD 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 NEG4 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 TSTEP,I EXIT. * * MMS03 ASC 6, .ENTP TEST/ PINTP DEF INNTP RMS10 ASC 21,E047 .ENTP FAILED FOR ACTUAL NR OF PARAM. ASC 7,< ALLOWED NR/ *ETSTEP * * HED FFP DIAGNOSTIC - TEST 4 * * ********* * .SETP * ********* *S TSTSP NOP JSB MSGD 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 MEMTN 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. LDA PR054 PRINT ERROR MESSAGE. JSB PRNMP * XSTP3 EQU * JSB INTCK IF NOT CONF. FOR INTERR. JMP TSTSP,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 CHECK CHECK INTERRUPT RSS JMP XSTP5 INTERRUPTED LDA PR055 NOT INTERRUPTED. PRINT JSB PRNIN ERROR MESSAGE JMP XSTP9 DO NEXT INTERR. TEST * XSTP5 EQU * LDA INTAD WAS P-REG RESTORED? CPA PXST6 JMP XSTP7 YES. LDA PR056 NO. PRINT ERROR MESSAGE JSB PNRES XSTP7 EQU * LDA AREG WAS A-REG RESTORED? CPA POS1 JMP XSTP8 YES. LDA PR057 NO. PRINT ERROR MESSAGE JSB ANRES XSTP8 EQU * LDB BREG WAS B-REG RESTORED? CPB PT18 JMP XSTP9 YES. DO NEXT INTERR. TEST LDA PR060 NO. PRINT ERROR MESSAGE JSB BNRES * * * 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 CHECK CHECK INTERRUPT RSS JMP XST12 INTERRUPTED JSB ERMS,I NOT INTERRUPTED. PRINT DEF RM061 ERROR MESSAGE. JMP TSTSP,I EXIT * XST12 EQU * LDA INTAD WAS P-REG RESTORED? CPA PXS10 JMP XST13 YES. JSB ERMS,I NO. PRINT ERROR MESSAGE DEF RM062 * XST13 EQU * LDA AREG WAS A-REG RESTORED? CPA POS1 JMP XST14 YES. JSB ERMS,I NO. PRINT ERROR MESSAGE DEF RM063 * XST14 EQU * LDB BREG WAS B-REG RESTORED? CPB PT18 JMP TSTSP,I YES. EXIT JSB ERMS,I NO. PRINT ERROR MESSAGE DEF RM064 JMP TSTSP,I EXIT. * * POS1 DEC 1 CNT1 DEF CNT2,I CNT2 DEF CNT3,I CNT3 DEF CNT CNT DEC 31 MMS04 ASC 6, .SETP TEST/ PXS15 DEF XST15 PR054 DEF E054 E054 ASC 5,E054 .SETP PXST4 DEF XSTP4 PT18 DEF TB18 PR055 DEF E055 E055 ASC 5,E055 .SETP PXST6 DEF XSTP6 PR056 DEF E056 E056 ASC 5,E056 .SETP PR057 DEF E057 E057 ASC 5,E057 .SETP PR060 DEF E060 E060 ASC 5,E060 .SETP PXS11 DEF XST11 PXS10 DEF XST10 RM061 ASC 21,E061 .SETP NOT INTERRUPTIBLE DURING PARAM. ASC 3,FETCH/ RM062 ASC 21,E062 .SETP P-REG NOT RESTORED ON INTERR. D ASC 10,URING PARAM. FETCH/ RM063 ASC 21,E063 .SETP A-REG NOT RESTORED ON INTERR. D ASC 10,URING PARAM. FETCH/ RM064 ASC 21,E064 .SETP B-REG NOT RESTORED ON INTERR. D ASC 10,URING PARAM. FETCH/ * *ETSTSP * * * * * * SUBROUTINE TO SET UP THE PARAMETERS, EXECUTE THE * CALLING SEQUENCE FOR SETP MICRO. * *S 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 P15 DEC 15 *ESTPGO * * * SUBROUTINE TO PREPARE TEST TABLE LOCATIONS * A "0" WILL BE STORED IN EACH LOCATION * *S 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 * *S 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. * RMS11 ASC 18,E050 .SETP A-REG. NOT=0 UPON RETURN/ RMS12 ASC 20,E051 .SETP B-REG. DOES NOT CONTAIN LAST ASC 11,ADDRESS+1 UPON RETURN/ RMS13 ASC 17,E052 .SETP INCORRECT VALUE STORED/ RMS14 ASC 19,E053 .SETP MORE LOCATIONS FILLED THAN ASC 5,REQUESTED/ *ESTPCK * * * SKP * * * * * * HED SUBROUTINES * * SUBROUTINE TO TURN ON MEMORY PROTECT LOGIC. * * ENTER WITH (B)=FENCE ADDRESS. * *S 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. * * *S 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 * * ********************************************************************** * SUBROUTINE TO CHECK IF DIAGNOSTIC IS CONFIGURED FOR INTERRUPT * TEST. IF NOT THEN EXIT TO (P+1) ELSE EXIT TO (P+2). * * *S 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). * * *S 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 (A) = POINTER TO ERROR NUMBER STRING. * * *S PRNIN NOP LDB PMS25 MOVE ERROR MESSAGE MVW POS5 JSB ERMS,I PRINT ERROR MESSAGE PMS25 DEF RMS25 JMP PRNIN,I EXIT RMS25 ASC 15,XXXX XXXXX NOT INTERRUPTIBLE/ * * * * SUBROUTINE TO PRINT "A-REG NOT RESTORED ON INTERP". * ENTER WITH (A) = POINTER TO ERROR NUMBER STRING. * * *S ANRES NOP LDB PMS26 MOVE ERROR MESSAGE MVW POS5 JSB ERMS,I PRINT ERROR MESSAGE. PMS26 DEF RMS26 JMP ANRES,I EXIT RMS26 ASC 19,XXXX XXXXX A-REG NOT REST. ON INTERR/ * * * SUBROUTINE TO PRINT "B-REG NOT RESTORED ON INTERRUPT". * * ENTER WITH (A) = POINTER TO ERROR NUMBER STRING. * * *S BNRES NOP LDB PMS27 MOVE ERROR MESSAGE MVW POS5 JSB ERMS,I PRINT ERROR MESSAGE PMS27 DEF RMS27 JMP BNRES,I EXIT RMS27 ASC 19,XXXX XXXXX B-REG NOT REST. ON INTERR/ * * * SUBROUTINE TO PRINT "P-REG NOT RESTORED ON INTERP". * ENTER WITH (A) = POINTER TO ERROR NUMBER STRING. * * *S PNRES NOP LDB PMS28 MOVE ERROR MESSAGE MVW POS5 NUMBER JSB ERMS,I PRINT ERROR MESSAGE. PMS28 DEF RMS28 JMP PNRES,I EXIT RMS28 ASC 19,XXXX XXXXX P-REG NOT REST. ON INTERR/ * HED SUBROUTINES * * SUBROUTINE TO DISABLE MEMORY PROTECT LOGIC AND * TO RESTORE TRAP CELL HALT. * *S MTNOF NOP CLC MPPAR DISABLE MEM. PROTECT LOGIC. LDB TRHLT RESTORE TRAP CELL HALT. STB MPPAR CLB RESET MEM. PROTECT TEST STB 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 (A)= POINTER TO ERROR NUMBER STRING * *S PRNMP NOP JSB MTNOF TURN OFF MEM PROTECT LOGIC. LDB PMS09 MOVE ERROR MESSAGE MVW POS5 NUMBER * JSB ERMS,I PRINT ERROR MESSAGE. PMS09 DEF RMS09 JMP PRNMP,I EXIT. * RMS09 ASC 21,XXXX XXXXX NO CHECK ON MEM PROT VIOLATION/ *EPRNMP * * SKP HED SUBROUTINE MPERR * * * * 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 * *S 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 LDA P24EX (A)=POINTER TO DEST. BUFFER 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. * * RMS24 ASC 11,E065 ..MAP 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 *EMPERR * HED SUBROUTINE CBNOC * * * SUBROUTINE TO CONVERT A SET OF BINARY NUMBERS (STORED IN A * BUFFER) INTO OCTAL & INSERT THEM IN ASCII FORM INTO A * MESSAGE BUFFER. * ENTER WITH (A) = POINTER TO DESTINATION STRING * (B) = -NR OF DATA ITEMS TO BE PROCESSED * PRIOR TO ENTERING THE SUBROUTINE, LOCATION (TEMP+5) * MUST CONTAIN THE POINTER TO THE SOURCE STRING(ACTUAL OR * EXPECTED OUTPUT). * THE NUMBER TO BE PRINTED ARE ASSUMED TO BE SEPARATED BY 2 * BLANKS. * *S CBNOC NOP STA TEMP+7 SAVE POINTER STB TEMP+6 SET COUNTER CBNC1 EQU * LDB TEMP+5,I (B) = BINARY NUMBER STA TEMP+3 SET POINTER LDA NEG3 SET COUNTER STA TEMP+4 CLA (A) = 0 RBL,SLB IF BIT #15 IS SET, INA ADD 1. ADA B60 MAKE ASCII ALF,ALF ROTATE INTO UPPER WORD & STORE STA TEMP+3,I CLE (E) = 0 CBNC2 EQU * CLA (A) = 0, ROTATE RBL,SLB IF BIT IS SET, ADA POS4 ADD 4 RBL,SLB ROTATE IF BIT IS SET ADA POS2 ELSE ADD 2 RBL,SLB ROTATE IF BIT IS SET, INA ELSE ADD 1 ADA B60 MAKE ASCII ALF,ALF ROTATE 8 BITS IF LOWER CHAR. SEZ JMP CBNC3 ALF,ALF AND, IOR TEMP+3,I "OR IN" DATA. CBNC3 EQU * STA TEMP+3,I CME SEZ,RSS JMP CBNC2 ISZ TEMP+3 ISZ TEMP+4 JMP CBNC2 ISZ TEMP+6 RSS JMP CBNOC,I ISZ TEMP+5 LDA TEMP+7 ADA POS4 STA TEMP+7 JMP CBNC1 * B60 OCT 60 SKP * HED SUBROUTINE INTON * * * ******************************************************************** * * SUBROUTINE TO TURN ON THE INTERRUPT INTERFACE. * ENTER WITH (A) = EXIT ADDRESS * *S 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 * * * SUBROUTINE TO TURN OFF THE INTERRUPT INTERFACE. * *S 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 MEMORY PROTECT HARDWARE * IS PRESENT. IF PRESENT EXIT TO (P+2) ELSE EXIT TO * (P+1). * *S MEMPR NOP LDA BIT5 AND CPTO SZA MEMORY PROTECT PRESENT, THEN ISZ MEMPR EXIT TO (P+1) JMP MEMPR,I ELSE EXIT TO (P+2) * BIT5 OCT 40 * * * * INTERRUPT SUBROUTINE * *S INTSB NOP CLF INTP STOP INTERRUPT STA AREG SAVE (A) STB BREG SAVE (B) JSB INTOF TURN OFF INTERRUPT INTERFACE ISZ INTID SET INDICATOR TO 1 LDA INTSB SAVE (P) STA INTAD JMP INTN1,I EXIT * * * END