SKP * * THIS SECTION CHECKS THE MEMORY EXPANSION LOGIC ASSOCIATED * WITH MPT * TST06 EQU * NOP LDA CPTO GET COMPUTER TYPE. SSA,RSS IS THIS A 2100? JMP TST06,I YES! DON'T EXECUTE TEST. LDA USSC GET OPTIONS AND BIT14 TEST FOR DMS SZA,RSS IS DMS AVAIB. JMP AUXME NO! GO DO AUXILIARY TEST. LDA JMP52 SET UP RETURN STA MTRAP IN TRAP CELL. CLA CLEAR FOR MAPPING. STF 0 INTERRUPT SYSTEM ON. STC MPT TURN ON MPT. VIOLM XMA MEM VIOLATION. HLT 27B SHOULD FORCE INTERRUPT ERR52 LIA VREG GET VIOLATION ADDRESS. CPA MEMVL VIOLATION IN RIGHT PLACE? JMP MORME YES! PROCESS FURTHER. JSB ERMS,I NO! REPORT ERROR DEF MS052 NO MEM VIOLATION. MORME SFS MPT SHOULD SKIP ON MEM VIOLATION. JMP ERR46 NO SKIP? REPORT ERROR. SFC MPT SHOULD NOT SKIP. JMP NOSKP NO SKIP? CONTINUE TEST. JSB ERMS,I SKIP? REPORT ERROR. DEF MS047 SKF ON SFC 5 AFTER MEM VIOL. NOSKP CLA CLEAR STA MTRAP MPT TRAP CELL. STF 0 INTERRUPT SYSTEM ON. STC MPT CLEAR MEM/MPT VIOLATION FF. HLT 27B FORCE INTERRUPT. MEM LOGIC CLEAR JMP AUXME CONTINUE TESTING. ERR46 JSB ERMS,I REPORT ERROR. DEF MS046 NO SKF ON SFS 5 AFTER MEM VIOL. AUXME SFS MPT SHOULD NOT SKIP. JMP SKPOK DIDN'T SKIP. CHECK NEXT SKIP. JSB ERMS,I REPORT ERROR. DEF MS050 ILLEGAL SKF ON SFS 5 - NO MEM SKPOK SFC MPT SHOULD SKIP. RSS DIDN'T SKIP. REPORT FAILURE JMP TST06,I SKIP OK! GO CONTINUE TEST. JSB ERMS,I REPORT ERROR. DEF MS051 NO SKF ON SFC 5 WITH NO MEM VIOL JMP TST06,I SKP * * THIS SECTION TESTS THE VIOLATION AND FENCE REGISTERS * AND THE MEMORY VIOLATION LOGIC. * TST07 EQU * NOP LDA MAXMT GET MEMORY MODULE SIZE. RAL IS MEMORY > 16K? SSA CHECK BIT 14 OF ADDR. LDA BIT15 SET MEMORY TO 20K LIMIT. RAR RESTORE MODULE VALUE. STA MLIMT SAVE IT. LDA RTNJS SET UP TRAP STA MTRAP CELL RETURN. LDA TS08D SET UP INITIAL FENCE STA FENCE REGISTER SETTING. TLOOP LDA FENCE GET PRESENT FENCE. ADA LECOD ADD LENGTH OF TEST MODULE. CPA MLIMT END OF MEMORY? JMP EXITT YES! REPLACE ORIGINAL DATA. LDB NLNCD NO! MOVE DATA OUT OF AREA STB MCNTR SAVE MOVE COUNT IN WORDS. LDB BUFAD GET ADDRESS OF SAVE BUFFER STB BUFPT SAVE IT. ADA NLNCD RESET FENCE VALUE. JSB MOVE MOVE DATA BLOCK. LDA STCOD MOVE TEST MODULE IN AREA LDB FENCE JUST REMOVED. STB BUFPT SAVE MODULE ADDRESS. LDB NLNCD GET MOVE COUNT. STB MCNTR SAVE IT. JSB MOVE MOVE DATA BLOCK. JMP FENCE,I TRANSFER CONTROL TO TEST. RLOOP LDA BUFAD RESTORE DATA WHERE TEST MODULE LDB FENP1 IS RESIDING. STB BUFPT SAVE IT. LDB NLNCD GET MOVE COUNT. STB MCNTR SAVE IT. JSB MOVE MOVE DATA BLOCK. JMP TLOOP CONTINUE TEST. EXITT JMP TST06,I CONTINUE TO NEXT TEST SECTION. * * MOVE SUBROUTINE * MOVE NOP MLOOP LDB A,I GET A WORD. STB BUFPT,I STORE IT. INA MOVE ISZ BUFPT POINTERS. ISZ MCNTR DONE YET? JMP MLOOP NO! GO MOVE ANOTHER WORD. JMP MOVE,I YES! EXIT. SKP ***************************************************************** * * TEST MODULE * STCOD DEF *+1 BELOW LDA FENCE GET OLD FENCE VALUE. STA FENP1 SAVE IT. INA INCREMENT AND STA FENCE SAVE NEW VALUE. OTA FENC OUTPUT TO FENCE REGISTER. ADA OFSTM GET EXPECTED INTERRUPT ADDRESS. STA EXPVR SAVE IT. STF 0 INTERRUPT SYSTEM ON. STC MPT TURN ON MPT. STA FENCE,I STORE AT FENCE. NO INTERRUPT. MPTVL STA FENP1,I STORE BELOW FENCE. INTERRUPT. HLT 31B FORCE INT IN CASE OF BAD FENCE. JMP RLOOP TRANSFER CONTROL BACK TO TEST. ***************************************************************** ENCOD EQU * LENCD EQU ENCOD-BELOW NLNCD ABS BELOW-ENCOD OFSET EQU MPTVL-BELOW-1 OFSTM DEF OFSET BUFAD DEF *+1 BSS LENCD SUP * * MESSAGES WHICH CANNOT BE ALTERED * BY THE TEST MODULE. * MS030 ASC 16,E030 INVALID VIOLATION REGISTER OCT 6412 MX1 ASC 08,EXPECTED= XXXXXX OCT 6412 MX2 ASC 09,ACTUAL = XXXXXX/ MSP30 ASC 08,FENCE = XXXXXX/ MS032 ASC 16,E032 NO MEMORY PROTECT INTERRUPT ASC 07, ON VIOLATING OCT 6412 MX3 ASC 16,INSTRUCTION AT ADDRESS XXXXXX/ SKP * * TEST ALL NON-VIOLATING INSTRUCTIONS * * TST08 EQU * NOP LDB FIVE FENCE VALUE. LDA JSB51 TRAP CELL RETURN JSB. JSB INTMP INITIALIZE MPT. STC MPT TURN ON MPT. * * TEST MEMORY REFERENCE INSTRUCTIONS. * IOR B NO INTERRUPT SHOULD OCCUR ADA B UNTIL HLT31 AT THE END OF ADB A THIS LIST OF NON-VIOLATING AND B INSTRUCTIONS. CPA A CPB B CLA ISZ A CLB ISZ B LDB B LDB A STA B STB A XOR B * * TEST SHIFT-ROTATE FUNCTIONS * ALS,ALS NOP BLS,BLS ARS,ARS BRS,BRS RAL,RAL RBL,RBL RAR,RAR RBR,RBR ALR,ALR BLR,BLR ERA,ERA ERB,ERB ELA,ELA ELB,ELB ALF,ALF BLF,BLF * * TEST ALTER-SKIP FUNCTIONS * CMA B7000 CMB CME CLE CCE INA INB CCA CCB RSS NOP SEZ SLA SLB SSA SSB SZA SZB * * TEST I/O INSTRUCTIONS * CLO SOS STO SOC LIA 1 LIB 1 MIA 1 MIB 1 OTA 1 OTB 1 IOSTC STC 1 CLC 1 * * TEST EAU INSTRUCTIONS * DIV FIVE DLD SAVEA MPY FIVE ASL 5 ASR 5 LSL 5 LSR 5 RRL 5 RRR 5 * * TEST EXTENDED INSTRUCTION GROUP * LDA CPTO GET COMPUTER TYPE. SSA,RSS IS THIS A 2100? JMP TOFLT YES! SKIP EIG TEST. ADX FIVE ADY FIVE CAX CAY CBX CBY CXA CXB CYA CYB DSX DSY ISX ISY LAX FIVE LAY FIVE LBX FIVE LBY FIVE LDX FIVE LDY FIVE XAX XAY XBX XBY LBT SFB NOP OCT 105775 TBS DEF BIT2 DEF BIT2 CLA,INA CLB,INB CMW FIVE COMPARE WORDS NOP JMP FLTCK * * TEST FLOATING POINT INSTRUCTIONS * TOFLT LDA CPTO GET OPTIONS WORD. AND BIT6 STRIP TO FLT PT BIT. SZA,RSS FLOATING POINT AVAILABLE? JMP JSBCK NO! SKIP TEST FOR 2100. FLTCK OCT 105000 FAD DEF BIT0 OCT 105060 FDV DEF BIT0 OCT 105100 FIX OCT 105120 FLT OCT 105040 FMP DEF BIT0 OCT 105020 FSB DEF BIT0 * * NOW TEST JSB 0 AND JSB 1 * JSBCK CLA STA MTRAP NOP MPT TRAP CELL. HLT 31B FORCE INTERRUPT. MPC OFF. LDB JARTN SET UP RETURN IN CASE OF ERROR. LDA JSB51 REINITIALIZE STA MTRAP TRAP CELL. STC MPT MPC ON. JSB A SHOULD RETURN TO NEXT INST. CLA STA MTRAP CLEAR TRAP AND HLT 31B FORCE INTERRUPT. MPC OFF. LDA JBRTN SET UP STA 2 RETURN. LDA JSB51 REINITIALIZE MPT STA MTRAP TRAP CELL. STC MPT MPC TURNED ON. JSB B SHOULD RETURN TO NEXT INST. CLA CLEAR MPT STA MTRAP TRAP CELL AND HLT 31B SHUT OFF MPC. JMP TST08,I CONTINUE WITH NEXT TEST. ERR51 NOP CLE FOR O2AS ROUTINE. LIA VREG GET VIOLATION ADDRESS. LDB MX53 GET DESTINATION BUFFER ADDRESS JSB O2AS,I CONVERT A-REG TO ASCII LIB VREG GET VIOLATION ADDRESS. LDA B,I GET INSTRUCTION. JSB ERMS,I REPORT ERROR. DEF MS053 LEGAL INSTRUCTION CAUSED MPV * A=VIOLATING LEGAL INSTRUCTION. * B=ADDRESS OF VIOLATING INSTRUCTION. LIA VREG GET VIOLATING ADDRESS INA NEXT INSTRUCTION STA ERR51 STC MPT TURN ON MPT JMP ERR51,I RETURN TO TEST SKP * TEST ALL VIOLATING INSTRUCTIONS * * * IN THE 2100/21MX WHEN A MPT VIOLATION OCCURES WITH * A "P-REG" MODIFING INSTRUCTION, THAT IS "JSB" "JMP" ETC. * THE P-REG IS CARRIED TO THE INTERRUPT ROUTINE, HOWEVER, * IN A 21MX-E THE P-REG IS LOST AND THE TARGET ADDRESS * OF THE VIOLATING INSTRUCTION IS STORED INTO THE * INTERRUPT ROUTINE. IN A 21MX-E THE ADDRESS OF THE * VIOLATING INSTRUCTION MUST BE OBTAIN FROM THE * VIOLATION REGISTER.. * TST09 EQU * NOP LDA RTNJS TRAP CELL RETURN TO ERR 32. STA SPTST SPECIAL TEST MARKER. LDB FIVE FENCE REGISTER WILL EQUAL FIVE JSB INTMP INITIALIZE MPT. LDA IPNTR GET INSTRUCTION LIST POINTER. STA INPNT SAVE IT. LDA CPTO GET COMPUTER TYPE. SSA,RSS 2100? JMP NOEIG YES! DON'T CLEAR INDEX REGISTERS. CLA CLEAR CAX INDEX CAY REGISTERS. NOEIG LDA HLT31 PUT STA 2 HALTS IN STA 3 VIOLATED MEMORY. VILOP STF 0 TURN ON INTERRUPT SYSTEM. LDA INPNT,I GET AN INSTRUCTION. CPA MIN1 END OF LIST? JMP EXT10 YES! GO TO END OF MPT TEST, STA THT10 NO! PUT INSTRUCTION IN LINE. LDA CPTO GET COMPUTER TYPE WORD. SSA 2100? JMP DOCHK NO! GO DO TEST. LDA INPNT,I GET INSTRUCTION AGAIN. AND B7000 MASK TO IR 9-11. CPA B5000 EIG INSTRUCTION? JMP MOVLT YES! SKIP IT. CPA B1000 EIG INSTRUCTION? JMP MOVLT YES! SKIP IT. DOCHK LDA EXA01 EXPECTED VIOLATION ADDRESS. STA EXPVR SAVE IT. LDA CPTO TEST FOR 21MX-E AND B170K SEE NOTE ABOVE: XOR B1512 SZA * JMP CHK1 * LDA EXPVR * INA * STA CHKIN * LDA RTNPJ * LDB FIVE * JSB INTMP * CHK1 LDA BIT1 GET VALUE = 2. STA THT10+1 STORE IT IN STA THT10+2 LINE. STC MPT TURN ON MPT. LDA BIT2 SET A TO BYTE ADDR 4. LDB BIT2 SET B TO BYTE ADDR 4. THT10 NOP VIOLATION SHOULD OCCUR HERE. OCT 2 CONSTANT IF NEEDED BY INST. OCT 2 CONSTANT IF NEEDED BY INST. NOP NOP IF NEEDED BY INST. HLT 31B FORCE INT. IF NONE OCCURRED. NOP SPACE FOR INSTRUCTIONS THAT NOP RETURN HERE. MOVLT ISZ INPNT MOVE INSTRUCTION POINTER. JMP VILOP TEST MORE INSTRUCTIONS. EXT10 CLA CLEAR SPECIAL STA SPTST TEST INDICATOR. JMP TST09,I SPC 4 * TEST PATTERNS FOR PE TEST * ORG 1770B NOP OCT 125252 OCT 52525 OCT 111111 OCT 21444 OCT 156333 OCT 66666 DEC -1 HED DIAGNOSTIC CONTROL ORG 2000B ZSTEX CLC INTP,C TURN INT SYSTEM OFF CLA CLEAR THE PE STA PTRAP TRAP CELL. STA MFLAG CLEAR MESSAGE FLAG STA XFLAG STA HLT74 INSURE H74 FOR ANY RECONFIGURATION JSB MSGC,I OUTPUT HEADER MESSAGE DEF HDMS CLA CLEAR PASS STA ZEOLC COUNT LDB B1000 CHECK FOR USER JSB SWRT,I SELECTION REQUEST. JMP ZUSR YES? GO HALT. ZNUSR LDA STDA GET STANDARD TEST LDB STDB SELECTION. JMP ZEXC ZUSR LIA SR GET SW REG AND SRM MASK OFF BIT 9 OTA SR OUTPUT TO SW REG LDA ZSINA RETRIEVE PREVIOUS LDB ZSINB TEST SELECTION. HLT 75B WAIT FOR USER INPUT ZEXC STA ZUINA SAVE STB ZUINB USER STA ZSINA TEST STB ZSINB SELECTION. JSB CHPAR CHANGE PARITY STATE. CLA CLEAR TEST INDICATOR TO STA TMODE MPT TEST MODE. CCA SET TEST NUMBER STA TSTN =-1 STA ZCFTT CLA CLEAR STA ZTSTA TEST RUN FLAG ZEXCL LDA ZUINA RESTORE A REG. LDB ZUINB RESTORE B REG. ERA,RAL ROTATE ERB FIRST ERA TEST BIT STA ZUINA SAVE POSITIONS STB ZUINB ISZ TSTN MOVE TEST UP ONE NOP ZXCL1 LDA TSTN GET TEST NUMBER. ADA TSTP GET IT'S LDA A,I ADDRESS CPA M1 IS IT THE END OF TESTS? JMP ZEOL YES! EXIT. LDB ZUINB GET TEST INDICATOR. SSB,RSS SHOULD TEST BE RUN? JMP ZEXCL NO! CHECK NEXT TEST. STA ZTSTA YES! SAVE TEST ADDRESS JSB ZITCH INITIALIZE TRAP CELL HALTS CLC 0,C CLEAR I-O. CLA CLEAR MPT-PE STA PTRAP TRAP CELL. STF PERR ENABLE PARITY ERROR LOGIC. JSB ZTSTA,I GO DO TEST JSB ZITCH INITIALIZE TRAP CELLS. CLF 0 TURN OFF INT SYSTEM LDA TSTN DISPLAY TEST NUMBER IF HALTED LDB BIT15 CHECK FOR HALT AT JSB SWRT,I THE END OF TEST. HLT 76B YES? WAIT FOR OPERATOR LDB B1000 CHECK FOR JSB SWRT,I USER SELECTION REQUEST. JMP ZUSR YES? GO HALT. LDB BIT13 CHECK FOR LOOP ON JSB SWRT,I TEST SECTION. JMP ZXCL1 YES? GO LOOP. JMP ZEXCL NO? CONTINUE. ZEOL CLA CLEAR STA PECHG TEST LDA ZTSTA CHECK IF ANY TESTS SZA,RSS WERE RUN. JMP ZNUSR NO? PICK UP STANDARD RUN LDA ZEOLC UPDATE INA PASS STA ZEOLC COUNT. CCE LDB ZPSCA GET PASS COUNT ADB BIT1 ADDRESS JSB O2AS,I CONVERT IT TO ASCII JSB MSGC,I CALL PRINT ROUTINE ZPSCA DEF ZPSC LDB BIT12 CHECK FOR LOOP JSB SWRT,I ON DIAGNOSTIC. JMP ZEOL1 YES? GO LOOP. JSB CHPAR NO? INITIALIZE PARITY. JSB JMG TELL OPERATOR TO CHANGE JUMPERS LDA ZEOLC GET PASS COUNT. HLT 77B HALT AND DISPLAY PASS COUNT ZEOL1 LDA ZSINA RESTORE ORIGINAL LDB ZSINB PROGRAM JMP ZEXC GO DO ANOTHER PASS. * JMG NOP LDA MFLAG HAS TEST(S) 11,12,13 BEEN EXECUTED ? SZA,RSS JMP JMG,I NO! EXIT CLA YES! CLEAR STA MFLAG FLAG STA XFLAG LIA SR GET SW-REG STA SAVSR STORE SW-REG LDA RTNJY PUT RETURN JUMP STA PFCNT PFAR TRAP CELL JSB MSGC,I PRINT DEF MS062 MESSAGE HLT 62B HALT FOR OPERATOR RTNY LDA SAVSR RESTORE OTA 1 SW-REG STC PFCNT SET CNTL 4 FF JMP JMG,I EXIT * * MESSAGE OUTPUT WITH OUT HALT * ZMSGC NOP ENTRY JSB ZMSG OUTPUT MESSAGE OCT 2000 SWITCH REG 10 CHECK JMP ZMSGC,I RETURN TO CALLER SKP * * ERROR MESSAGE WITH HALT * ZERMS NOP JSB ZMSG OUTPUT MESSAGE OCT 4000 SWITCH REG 11 CHECK CLA LDB BIT14 CHECK SWR BIT 14 TO JSB SWRT,I SUPPRESS HALT. STA *+3 NO? PUT HALT IN PLACE LDA ZSAVA RESTORE A & B LDB ZSAVB ZHLT NOP WAIT FOR OPERATOR. JMP ZERMS,I RETURN TO CALLER ZMSG NOP STA ZSAVA SAVE A AND STB ZSAVB B-REG CLA SFS 0 CCA STA HOLDI CLF 0 TURN OFF INT SYSTEM LDB ZMSG,I GET SWITCH REGISTER BIT LDA ZMSG ADA M2 DECREMENT RETURN ADDRESS STA ZMSG JSB SWRT,I CHECK TO SUPPRESS MESSAGE JMP ZMSG0 YES? DON'T PRINT. LDA ZMSG,I CHECK IF ERROR LDA A,I MESSAGE LDA A,I IS HEADED ALF,ALF BY AN AND Z.177 EXXX. CPA ZA.E IS IT? JSB ZCFTN YES! OUTPUT TEST NUMBER LDA ZMSG,I NO! RETRIEVE FORMAT LDB A,I ADDRESS CLA,CLE JSB FMTR,I PRINT MESSAGE ZMSG0 LDA ZMSG,I CONVERT HALT CODE LDB A,I FROM ASCII STRING CCA,CCE JSB AS2N,I STA ZEXTA SAVE RESULT AND Z.300 DECODE LDB ZH2 HALT CODE CPA BIT6 LDB ZH6 CPA Z.200 LDB STCOV CPA Z.300 LDB ZH7 LDA ZEXTA GET HALT NUMBER AND Z.77 IOR B STA ZHLT SAVE IT ISZ ZMSG,I ADJUST RETURN POINTERS ISZ ZMSG ISZ ZMSG ISZ ZMSG LDA HOLDI SZA,RSS STF 0 LDA ZSAVA RESTORE A AND B REGISTERS LDB ZSAVB JMP ZMSG,I RETURN. ZCFTN NOP LDA TSTN GET TEST NUMBER CPA ZCFTT IS IT THE SAME ONE? JMP ZCFTN,I YES! SKIP OUTPUT STA ZCFTT NO! THEN UPDATE IT CLE LDB ZBUFI JSB I2AS,I LDB ZBUF1 STB ZTSTN CLA DO A CRLF JSB SLOP,I CLA,CLE INDICATE START OF FORMAT LDB ZTSTF JSB FMTR,I PRINT TEST NUMBER. JMP ZCFTN,I RETURN