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. 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 * 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. 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. * 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 .-3 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 .+4 ADD 4 RBL,SLB ROTATE IF BIT IS SET ADA .+2 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 .+4 STA TEMP+7 JMP CBNC1 * 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 HED SUBROUTINE INTON * * * ******************************************************************** * * SUBROUTINE TO TURN ON THE INTERRUPT 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 * * * SUBROUTINE TO TURN OFF THE INTERRUPT 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 MEMORY PROTECT HARDWARE * IS PRESENT. IF PRESENT EXIT TO (P+2) ELSE EXIT TO * (P+1). * 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) * * * INTERRUPT SUBROUTINE * 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 * * * * SET HALT CODE IN INVL2 ROUTINE. * * SINV2 NOP LDA PINV2,I ADA .+2 CHANGE HLT CODE TO 002B STA PINV2,I JMP SINV2,I EXIT * * * * RESTORE HALT CODE IN INVL2 ROUTINE. * * RINV2 NOP LDA PINV2,I ADA .-2 CHANGE HALT CODE BACK TO 000B STA PINV2,I JMP RINV2,I EXIT * * * HED TEST # 15 - .CFER TESTS. * ********* * .CFER * ********* * .CFER EQU 231B * TST24 EQU * XCFER NOP JSB MSGC,I OUTPUT MESSAGE. DEF MMS21 * JSB CFRCK CHECK FOR CFER ROUTINE JMP CFERT ITS THERE, OK JSB ERMS,I NO SUCH LUCK DEF RMS30 JMP XCFER,I * CFERT EQU * 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 XCFER,I NO. EXIT. * LDA PXCF5 LDB PTTB2 SET FENCE ADDRESS AND TURN ON JSB PMEMT,I 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. LDB PR311 PRINT ERROR MESSAGE. JSB PRNMP XCFR4 EQU * JMP XCFER,I EXIT TEST. PXCF5 DEF XCFR5 QMMPR DEF MEMPR * * HED SUBROUTINES * * * * SUBROUTINE TO PREPARE TEST * 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) * XCCHK NOP LDA .-4 SET COUNTER. STA TEMP LDB PTTB1 GET POINTER. XCCK1 EQU * LDA B,I GET CONTENTS. CPA .-1 =-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 * * * ROUTINE TO CHECK IF .CFER IS PRESENT * SKIPS IF NO .CFER * CFRCK NOP LDA CPTO CHECK CPU TYPE SSA,RSS IF SIGN BIT=0, 2100 OR OLDER, NOGO JMP NOCFR ALF IF BITS 14-12=0, BUT 15 SET, =>MX, NO GO AND .+7 SZA,RSS JMP NOCFR * * THE ASSUMPTION IS NOW MADE THAT WE HAVE AN E OR F SERIES CPU * THIS IMPLIES THAT IF .CFER IS NOT PRESENT, A NOP WILL * BE EXECUTED. * RAM .CFER TRY IT, YOU'LL LIKE IT, MAYBE NOP NOP, IT AINT THERE JMP NOCFR JMP CFRCK,I ITS THERE!, JUST RETURN * NOCFR ISZ CFRCK WE'RE SO SORRY, JMP CFRCK,I UNCLE ALBERT * * * * ROUTINE TO CONFIGURE STDA BASED ON PRESENCE OF .CFER * CNTST NOP JSB CFRCK TEST FOR CFER ROUTINE CCE,RSS IF SO, SET E CLE LDA STDA SET BIT 12 OF STDA IF ,CFER ALF,RAR ELA,ALF ALF,ALF STA STDA JMP CNTST,I DONE * * * PR311 DEF E311 E311 ASC 2,E311 MMS21 ASC 8,H330 .CFER TEST/ RMS29 ASC 8,E330 DATA ERROR/ RMS30 ASC 20,E331 .CFER NOT PRESENT, TEST TERMINATED/ * * * FWAA EQU * END