ASMB,A,B,L,C HED 2100 OR 12892A/B MEMORY PROTECT-PARITY ERROR DIAGNOSTIC ORG 0 DSN 102305 20 JANUARY 77 REV 1705 SUP * GENERAL OPERATING PROCEDURE * * A. LOAD THE DIAGNOSTIC CONFIGURATOR AND CONFIGURE IT. * B. LOAD THE DIAGNOSTIC MAIN PROGRAM * C. LOAD ADDRESS 100B. * D. LOAD THE SWITCH REG. WITH SELECT CODE & OPTIONS * E. PRESS RUN AND WAIT FOR HALT 102074. * F. LOAD SWITCH REGISTER * IF SET, BIT * 15 = HALT AT END OF EACH TEST SECTION * 14 = SUPPRESS ERROR HALTS * 13 = LOOP ON LAST TEST SECTION * 12 = LOOP ON DIAGNOSTIC * (SUPPRESS ALL OPERATOR INTERVENTION) * 11 = SUPPRESS ERROR MESSAGES * 10 = SUPPRESS NON-ERROR MESSAGES * 9 = GO TO USER TEST SELECTION * AT END OF PRESENT TEST * 8 = SUPPRESS OPERATOR INTERVENTION TESTS * 7-0 = RESERVED * * * * G. PRESS RUN. * H. TO RESTART - LOAD ADDRESS 2000B * I. TO RECONFIGURE - LOAD ADDRESS 100B * AND GO TO STEP D. * * GENERAL COMPUTER HALTS * * 1020XX E OR H 000 TO 060 * 1060XX E OR H 100 TO 115 ** 1070XX E OR H 300 TO 314 * * CONTROL PROGRAM HALT MESSAGES * * 102077 END OF DIAG (A = PASS COUNT) * 102076 END OF TEST (A = TEST #) * 102075 USER TEST SELECTION REQUEST * 102074 SELECT CODE INPUT COMPLETE * 102073 USER SELECT CODE ERROR * 102072 RESERVED * 102071 RESERVED * 102070 RESERVED * * 106077 TRAP CELL HALT * * 106070 - * 106076 CONFIGURATOR HALTS. SEE DIAG CONFIG. MANUAL. HED CONFIGURATOR LINKAGE AREA A EQU 0 A REGISTER REFERENCE INTP EQU 0 B EQU 1 B REGISTER REFERENCE SR EQU 1 SWITCH REGISTER REFERENCE DMAIN EQU 2 PFCNT EQU 4 VREG EQU 5 MPT EQU 5 PERR EQU 5 FENC EQU 5 MTRAP EQU 5 PTRAP EQU 5 DMACH EQU 6 CH EQU 10B SPC 2 ORG 100B JMP CFIG,I GO TO CONFIGURATION SECTION BSS 1 FAST INPUT (PHOTO READER) SLOP BSS 1 SLOW OUTPUT (LIST) BSS 1 FAST OUTPUT (DUMP OR PUNCH) BSS 1 SLOW INPUT (KEYBOARD) DEF FWAA FIRST WORD OF AVBL. MEMORY BSS 1 LAST WORD OF AVBL. MEMORY BSS 1 NOT USED (MAG TAPE) BSS 1 1 MILL SEC TIME OUT COUNT BSS 4 SELECT CODES FOR I/O CPTO BSS 1 COMPUTER TYPE/OPTIONS USSC NOP USER CARD TYPE AND SELECT CODE MEMO BSS 1 MEMORY SIZE AND TYPE BSS 1 INTERNAL SWITCH REGISTER BSS 1 1 MILL SEC TIMER BSS 1 CONFIGURATOR SWITCH CK PTR I2AS BSS 1 INTEGER TO ASCII CONVERSION O2AS BSS 1 OCTAL TO ASCII CONVERSION AS2N BSS 1 ASCII CONVERSION DSN OCT 102305 DIAGNOSTIC SERIAL NUMBER FMTR BSS 1 FORMATTER * * CONTROL LINKAGE AND DATA REFERENCES * CFIG DEF ZCONF CONFIGURATION SECTION MSGC DEF ZMSGC MESSAGE WITH NO HALT ERMS DEF ZERMS ERROR MESSAGE SWRT DEF SWRTX TSTN OCT 0 CURRENT TEST NUMBER IOIP DEF IODP TSTP DEF TSTD STDA OCT 033777 STANDARD TEST RUN STDB OCT 0 HED DIAGNOSTIC DATA TSTD DEF TST00 DEF TST01 DEF TST02 DEF TST03 DEF TST04 DEF TST05 DEF TST06 DEF TST07 TS08D DEF TST08 DEF TST09 DEF TST10 DEF TST11 DEF TST12 DEF TST13 M1 DEC -1 SPC 3 RTNPJ JMP CHKIN+1 RTNJS JSB CHKIN JMP35 JMP ERR35 JMP37 JMP ERR37 JMP42 JMP E42 JMP43 JMP E43 JSB51 JSB ERR51 JMP52 JMP ERR52 JS102 JMP JX102,I JX102 DEF ER102 DEF ER103 DEF ER104 DEF ER105 DEF ER106 JS107 JMP JX107,I JX107 DEF ER107 DEF ER110 JS112 JMP JX112,I JX112 DEF ER112 JS113 JMP JX113,I JX113 DEF ER113 JS301 JMP JX301,I JX301 DEF ER301 JS302 JMP JX302,I JX302 DEF ER302 JS305 JMP JX305,I JX305 DEF ER305 DEF ER306 JS307 JMP JX307,I JX307 DEF ER307 JS313 JMP JX313,I JX313 DEF ER313 JS314 JMP JX314,I JX314 DEF ER314 GOD12 JMP RTN12,I RTN12 DEF RET12 VIJSB DEF VAJSB VIJSX DEF VIJS2 INLN2 DEF LINE2 MPX30 DEF MSP30+4 MXPTR DEF MX2+8 SAVEA NOP SAVEB NOP SAVED BSS 2 ADMOD NOP LASTA OCT 77777 SPSP ASC 1, RTLF ASC 1,// HOLDI NOP MCNTR NOP EXPVR NOP TMODE NOP INPNT NOP BUFPT NOP FENCE NOP USRSC NOP PTRIN NOP MLIMT NOP PECHG NOP SAVSR NOP SAVS2 NOP B5000 OCT 5000 BIT0 OCT 1 BIT1 OCT 2 BIT2 OCT 4 BIT6 OCT 100 B1777 OCT 1777 B4000 OCT 4000 BIT12 OCT 10000 BIT13 OCT 20000 BIT14 OCT 40000 BIT15 OCT 100000 B1512 OCT 110000 B170K OCT 170000 M2 DEC -2 M10 DEC -10 M100 DEC -100 STCOV OCT 103000 SAVA BSS 2 CFMEM OCT 6000 MOMSK OCT 70000 ZS812 OCT 10400 FIVE OCT 5 JARTN JMP A,I SPTST NOP JBRTN JMP B,I IPNTR DEF VILST FENP1 NOP B1000 OCT 1000 MAXMT NOP RTNJP JMP PETST,I RTNJX JMP PFAR1,I RTNJY JMP PFAR2,I PFAR1 DEF RTNX PFAR2 DEF RTNY VIINS DEF VIOLT PETST DEF PECON MBX1 DEF MX1+5 MBX2 DEF MX2+5 MBX3 DEF MX3+12 MX53 DEF MS053+17 PX103 DEF MX103 MEMVL DEF VIOLM LECOD DEF LENCD TPNT1 DEF PETD1 TPNT2 DEF PETD2 TPNT6 DEF PETD6 EA001 DEF TH001 EA002 DEF TH002 EA003 DEF TH003 EXA01 DEF THT10 EXT20 JMP TSI20,I TSI20 DEF RET20 J4 JSB *+1,I DEF INT4 SPC 3 IODP DEF IO.01 DEF IO.02 DEF IO.03 DEC -1 * BUF DEF *+1 BUFFER FOR DMA BSS 20 TRANSFER IN TEST 12 SKP * * VIOLATING INSTRUCTION LIST * VILST ISZ 2 JSB 2 JMP 2 STA 2 STB 2 OCT 104400 DST OCT 101740 SAX OCT 101750 SAY OCT 105740 SBX OCT 105750 SBY OCT 105743 STX OCT 105753 STY OCT 105772 JPY OCT 105762 JLY OCT 105774 CBS OCT 105773 SBS OCT 105777 MVW OCT 105765 MBT OCT 105764 SBT VIOLT CLC 2 CLF 2 LIA 2 LIB 2 MIA 2 MIB 2 OTA 2 OTB 2 SFC 2 SFS 2 STC 2 STF 2 MIN1 DEC -1 END OF LIST SPC 3 * PARITY TEST ADDRESSES INPTR DEF *+1 DEF PEAD1 DEF PEAD2 DEF CHKP1 DEF INHLT DEC -1 HED DIAGNOSTIC SUBROUTINES ******************************************************************** * *CHKIN* CHECKS MEMORY PROTECT AND PARITY ERROR * INTERRUPT INFORMATION TO DETERMINE IF THE * VIOLATION REGISTER CONTENTS IS CORRECT. * * PARAMETERS PASSED: * * A-REG = EXPECTED VIOLATION REGISTER * (BIT 15 ALWAYS CLEAR). * CHKIN NOP CLF 0 TURN OFF INTERRUPT SYSTEM. DST SAVA SAVE A AND B REG LDB TMODE TMODE=0 IF MPT TEST. LDA EXPVR GET EXPECTED VIOLATION REG. CLE,SZB IS THIS THE MPT TEST? IOR BIT15 NO! SET BIT 15 FOR PE VR CHECK. LIB VREG GET ACTUAL VIOLATION REGISTER. CPB A ACTUAL VR = EXPECTED VR? JMP CHKRN YES! GO SETUP RETURN ADDRESS. DST SAVEA NO! SAVE EXPECTED/ACTUAL VR. LDB SPSP GET ASCII DOUBLE SPACE. CLE,SSA MPT VIOLATION? LDB RTLF NO! FORM CR-LF. STB MXPTR,I PUT ASCII IN MESSAGE. SSA PARITY ERROR EXPECTED? JMP SETBF YES! GO PRINT VR DATA. LDB SAVEB NO! GET LDB B,I VIOLATING INSTRUCTION. CPB HLT31 WAS IT A HLT 31B ? JMP NOMPV YES! GO PRINT NO MPV. LDA FENCE NO! GET FENCE VALUE AND LDB MPX30 CONVERT IT TO JSB O2AS,I ASCII. SETBF LDA SAVEA GET EXPECTED VR. LDB MBX1 BUFFER ADDRESS IN ERROR MESSAGE. JSB O2AS,I CONVERT EXPECTED VR TO BUFFER LDA SAVEB GET ACTUAL VR VALUE LDB MBX2 BUFFER ADDR IN ERROR MESSAGE. JSB O2AS,I CONVERT ACTUAL VR INTO BUFFER. DLD SAVEA RESTORE EXPECTED-ACTUAL VR. E030 JSB ERMS,I PRINT MESSAGE WITH DEF MS030 RESPECTIVE HALT CODE. SSA EXPECT MPT VIOLATION? JMP NOMPT NO! SKIP FENCE HALT. DOFEN LDA FENCE GET FENCE REG SETTING. LDB B4000 SUPPRESS ERROR JSB SWRT,I MESSAGES? RSS YES! CHECK SUPPRESS. JMP NOMPT NO! SKIP HALT LDB BIT14 SUPPRESS JSB SWRT,I ERROR HALTS? RSS YES! DON'T HALT. E060 HLT 60B NO! HALT(A=FENCE) NOMPT LDA SAVEA SETUP SSA PARITY ERROR TEST MODE? JMP NOINC YES! DON'T ALTER CHKIN RETURN. AND LASTA NO! SETUP RETURN INA ADDRESS. STA CHKIN SAVE IT. CHKRN LDB SPTST GET SPECIAL TEST INDICATOR. SZB IS THIS A SPECIAL TEST? JMP INCRT YES! GO UPDATE RETURN. SSA,RSS PARITY ERROR TEST? ISZ CHKIN NO! INC CHKIN PAST HLT 31. JMP NOINC YES! GO RETURN. INCRT LDA CHKIN GET RETURN NOP CONTENTS. ADA BIT2 ADD 4 TO GET PAST INST. CONSTANTS. STA CHKIN SAVE NEW NOP VALUE. NOINC DLD SAVA RESTORE A AND B REGISTERS. JMP CHKIN,I RETURN TO TESTING. NOMPV LDB MBX3 BUFFER POINTER IN MESSAGE. JSB O2AS,I CONVERT A-REG TO ASCII. LDA SAVEA GET EXPECTED VIOLATION ADDR. JSB ERMS,I PRINT ERROR MESSAGE FOR DEF MS032 NO MPT INTERRUPT. * A=EXPECTED VIOLATION ADDRESS JMP DOFEN RETURN TO TESTING **************************************************************** * *INTMP* INITIALIZES MEMORY PROTECT BY SETTING THE * FENCE REGISTER AND RETURN JUMP IN THE TRAP CELL. * * PARAMETERS PASSED: * * A-REG = DESIRED MEMORY PROTECT TRAP * CELL CONTENTS. * * B-REG = FENCE VALUE TO BE OUTPUT. * * INTMP NOP CLC 0,C CLEAR I-O. OTB FENC OUTPUT TO FENCE REGISTER. STA MTRAP SET UP MP TRAP CELL. STB FENCE SAVE ACTUAL FENCE VALUE. STF 0 TURN ON INTERRUPT SYSTEM. JMP INTMP,I RETURN TO TEST. * ******************************************************************** SKP **************************************************************** * * INITIALIZE MEMORY LOCATIONS USED IN * THE PARITY ERROR TEST. * CHPAR NOP CLA CLEAR PE STA PTRAP TRAP CELL. LDA PEBUF GET INITIAL ADDRESS. DSLOP LDB A,I GET A DATA WORD. STB A,I STORE CURRENT PARITY. CPA B1777 END OF TEST BLOCK? JMP DSBLK-1 YES! GO STORE INDIVIDUAL DATA INA NO! MOVE ADDRESS POINTER AND JMP DSLOP UPDATE MORE DATA. INA DSBLK ADA B1000 MOVE TO NEXT HALF PAGE. LDB A,I GET A DATA WORD. STB A,I STORE CURRENT PARITY. CPA MAXMT END OF CONSTANTS? RSS YES! GO CHANGE INDIVIDUAL WORDS. JMP DSBLK NO! CHANGE MORE ADDRESSES. LDA INPTR GET INDIVIDUAL LIST PNTR. STA PTRIN SAVE IT. INLOP LDA PTRIN,I GET A WORD FOR PARITY CHANGE. CPA MIN1 END OF LIST? JMP CHPAR,I YES! RETURN TO TESTING. LDB A,I GET WORD TO BE INITIALIZED. STB A,I STORE CURRENT PARITY. ISZ PTRIN MOVE POINTER. JMP INLOP GO CHANGE ANOTHER WORD. *************************************************************** CHKDO NOP LDA CPTO GET COMPUTER TYPE SSA,RSS SKIP IF 2100 JMP CHKDO,I EXIT CURRENT TEST LDA USSC IS THIS A SSA 12892B UNDER TEST? ISZ CHKDO INCR RTN ADDR JMP CHKDO,I RETURN TO TEST. SKP * TONIO CALLING FORMAT- * * A=I-O SELECT CODE * JSB TONIO * TONIO NOP STA USRSC,I SET UP I-O TRAP CELL. IO.01 STC CH TURN ON I-O IO.02 STF CH TO INTERRUPT. STF 0 TURN ON INTERRUPT SYSTEM. JMP TONIO,I RETURN. * IO.03 CLF CH * * EXIT CURRENT TEST IF SR 8 OR 12=1 * CHKSW NOP LDB ZS812 YES! CHECK IF OPERATOR NEEDED. JSB SWRT,I IS SW.REG. 8 OR 12 SET? JMP CHKSW,I YES! EXIT P+1 ISZ CHKSW NO! INCR RTN ADDR JMP CHKSW,I RTN P+2 ***************************************************************** PEBUF DEF *+1 PETD1 NOP PETD2 NOP PETD3 NOP PETD4 NOP PETD5 NOP PETD6 OCT 100644 INDIRECT POINTER. * END OF PARITY ERROR TESTS CONSTANTS. HED MEMORY PROTECT TESTS SKP * * TEST THAT A HALT IS NOT ALLOWED BY MPT. * TST00 EQU * NOP CLB FENCE WILL BE ZERO. LDA RTNJS PREPARE TRAP CELL INSTRUCTION. JSB INTMP INITIALIZE MPT. LDA EA001 GET EXPECTED VIOLATION ADDRESS. STA EXPVR SAVE IT. STC5 STC MPT TURN ON MPT. NOP SHOULD NOT INTERRUPT HERE. LDB BIT14 SUPPRESS JSB SWRT,I ERROR HALTS? RSS YES! DON'T HALT. TH001 HLT 26B MPT SHOULD NOT ALLOW HALT HERE. CLC 0,C TRY INT HERE IF NO MPV ON HALT. JMP TST00,I SKP * * TRY TO STORE AT AND BELOW FENCE. * TST01 EQU * NOP LDA 3 SAVE CONTENTS OF ADDR 3 STA SAVED FOR TEST COMPARISON. LDA RTNJS PREPARE TRAP CELL JSB. LDB BIT2 FENCE WILL BE SET TO 4 JSB INTMP INITIALIZE MPT. LDA EA002 GET EXPECTED VIOLATION ADDRESS. STA EXPVR SAVE IT. LDB 4 TEST PATTERN IN B-REG. STC MPT TURN ON MPT. STB 4 NO VIOLATION SHOULD OCCUR HERE. TH002 STB 3 VIOLATION OCCURS HERE. HLT31 HLT 31B SHOULD NEVER HALT HERE. LDB 3 GET ADDR 3 DATA. CPB SAVED WAS ADDRESS STORED? JMP TST01,I NO! GO DO NEXT TEST LDA EA002 YES! GET STB LOCATION. JSB ERMS,I REPORT FAILURE. DEF MS033 MEMORY ALTERED BY ILLEGAL STB. * A=VIOLATION ADDRESS. JMP TST01,I SKP * * INSURE AN I/O INSTRUCTION (NOT A HALT) IS NOT ALLOWED. * TST02 EQU * NOP LDA RTNJS GET JSB TO CHKIN. JSB INTMP GO INITIALIZE MPT. LDA EA003 GET EXPECTED VIOLATION ADDRESS. STA EXPVR SAVE IT. CCB PREPARE FOR TEST. STF 0 TURN ON INT SYSTEM. STC MPT TURN ON MPT. TH003 LIB 0 SHOULD CAUSE INTERRUPT. HLT 31B SHOULD NEVER HALT HERE. SZB,RSS WAS B-REG ALTERED? JMP TST02,I YES! CONTINUE TESTING. LDA EA003 NO! GET LIB ADDRESS. JSB ERMS,I REPORT ERROR. DEF MS034 B-REG ALTERED BY ILLEGAL LIB. * A=LIB ADDRESS. JMP TST02,I SKP SKP * * INSURE NO VIOLATION OCCURS WITHOUT A STC 5 AND * VERIFY SELECT CODE 5 IS DECODED PROPERLY. * TST03 EQU * NOP CLB FENCE WILL BE ZERO. LDA JMP35 ERROR RETURN JSB. JSB INTMP INITIALIZE MPT. LIA 0 NO INTERRUPT - MPT OFF. SZA DID LIA 0 EXECUTE. JMP ERR36 NO! REPORT ERROR. JMP CON03 YES! START SC 5 TEST. ERR35 JSB ERMS,I REPORT ERROR. DEF MS035 INTERRUPT WITH MPT OFF. JMP CON03 CONTINUE TEST. ERR36 JSB ERMS,I REPORT ERROR. DEF MS036 LIA NOT ALLOWED WITH MPT OFF. CON03 CLC 0,C CLEAR I-O. CLA CLEAR OTA 6 DMA OTA 7 SELECT CODES STF 0 INTERRUPT SYSTEM ON. LDA JMP37 SET UP MPT STA MTRAP TRAP CELL. DLD IOSTC GET STC AND CLC INSTRUCTIONS. DST INLIN PUT THEM IN LINE. LDB STCOV SET UP COMPLETION INDICATOR. SCLOP LDA INLIN GET STC INSTRUCTION. CPA STC5 IS IT A STC 5? JMP INCIO YES! SKIP TO NEXT SELECT CODE. INLIN STC 1 NO! EXECUTE TO VERIFY NO SC5. INLI2 CLC 1 INTERRUPT IF ILLEGAL SC 5. INCIO ISZ INLIN MOVE TO NEXT SELECT CODE ISZ INLI2 FOR STC AND CLC. CPB INLIN WAS THAT THE LAST SELECT CODE? JMP TST03,I YES! GO TO NEXT TEST. JMP SCLOP NO! CONTINUE SC TEST. ERR37 LDA INLIN GET INSTRUCTION THAT TURNED ON JSB ERMS,I MPT LIKE A STC 5. DEF MS037 ILLEGAL DECODE OF SELECT CODE 5. * A=STC INSTRUCTION THAT ENABLED MPT. JMP TST03,I SKP * * TEST ABILITY OF AN I/O INSTRUCTION IN A TRAP * CELL NOT TO SHUT OFF MPC * TST04 EQU * NOP CLC 0,C TURN OFF I-O LDA J4 SET UP JSB STA MTRAP IN MPT TRAP CELL LDA TSTD SET OTA FENC UP STA FENCE FENCE LDA IO.03 CLF CH JSB TONIO TURN ON I-O DEVICE STC MTRAP TURN ON MPT NOP NOP CLF0 CLF 0 MPT SHOULD OCCUR HERE JMP E054 CLF 0 DID'NT CAUSE MPT VIOLATION SPC 3 INT4 NOP MPT ROUTINE CLF 0 TURN OFF INTP SYST CLC 0,C TURN OFF I-O LIA MTRAP READ VIOLATION REG LDA A,I GET VIOLATING INSTR CPA CLF0 COMPARE WITH EXPECTED VIOLATING INSTR JMP TST04,I OK - EXIT TEST E054 JSB ERMS,I REPORT ERR DEF MS054 JMP TST04,I EXIT TEST SKP * * * THIS SECTION VERIFIES A MULTI-LEVEL INDIRECT * INSTRUCTION WILL BE INTERRUPTED DURING THE * THIRD LEVEL. * TST05 EQU * NOP LDA JMP43 I-O TRAP CELL VALUE JSB TONIO TURN ON I-O. JMP *+1,I START MULTI-LEVEL DEF *+1 INDIRECT. NO INTERRUPT. CLC 0,C CLEAR INT SYSTEM. LDA JMP42 I-O TRAP CELL VALUE. JSB TONIO TURN ON I-O. JMP *+1,I MULTI-LEVEL INDIRECT DEF *+1,I (TWO LEVELS-NO INTERRUPT). DEF *+1 CLC 0,C CLEAR INT. SYSTEM. LDA EXIT6 I-O TRAP CELL VALUE. JSB TONIO TURN ON I-O. JMP *+1,I THREE DEF *+1,I LEVEL DEF *+1,I INDIRECT. DEF *+1 INTERRUPT HERE. CLC 0,C NO INTERRUPT OCCURRED. JSB ERMS,I PRINT ERROR MESSAGE. DEF MS044 NO I/O INT ON INDIRECT CHAIN. JMP TST05,I GO DO NEXT TEST. E42 JSB ERMS,I REPORT ERROR. DEF MS042 INT AFTER 2ND LEVEL INDIRECT. JMP TST05,I E43 JSB ERMS,I REPORT ERROR. DEF MS043 INT AFTER 1ST LEVEL INDIRECT. EXIT6 JMP TST05,I