* CAUSE OF THE ERROR BY CHECKING THE T REGISTER WHICH WILL * CONTAIN THE ERROR CODE, AND THE Y REGISTER, WHICH WILL CONTAIN * THE ADDRESS OF THE ERROR SKP ORG 16000B TST17 EQU * SPC 1 NOP JSB KFNCE LOAD FENCE REGISTERS JSB ZORCH JSB'S INTO TRAP CELLS JSB LODUP AND MAP REGISTERS SPC 1 LDB TWNTK CHANGE THE SOURCE JSB PEMAD,I ADDRESS'S PATTERN LDB TWN2K AND ZERO JSB PZERO,I THE DESTINATION LDA PRET1 PUT INTERRUPT RETURN STA ADLNK IN TRAP CELL CCA SET INTERRUPT STA PHLAG CHECK FLAG JSB PSTUP SET UP FOR INTERRUPT JSB PINIT,I RESET TESTGG PATTERN TABLE LDA FORTK NOW SETUP LDB FORTK TO EXECUTE LDX FOURK MOVE BYTES FROM INSTRUCTION SJP *+2 ENABLE THE SYSTEM STF INTP START THE INTERRUPT MBF AND EXECUTE. NOP CHANGE TO JMP *-N FOR LOOP/ CAY SAVE THE A REGISTER JSB TRNOF LDA PHLAG GET THE FLAG SZA WAS THE INTERRUPT PROCESSED? JSB CRASH NO, GO ABORT TST17 LDA TWN2K NOW MAKE LDB TWNTK SURE THAT LDX NON2K THE INSTRUCTION JSB PCOMP,I COMPLETED EXECUTION JSB *+2 WHOOPS, FOUND AN ERROR, JMP PNXT1 TBCMP OK, CONTINUE NOP JSB ADDRESS HOLDER JSB RGSVE SAVE THE RESISTERS LDY *-2 GET THE ERROR FLAG JSB ERMS,I AND REPORT DEF E255 JSB RGRS2 RESTORE X AND Y SPC 1 JMP .PCOM,I PNXT1 CCA RESET THE STA PHLAG INTP FLAG LDB TWN2K CHANGE JSB C.PTN,I PATTERNS LDB TWNTK IN SOURCE JSB PZERO,I AND DESTINATION JSB PSTUP SET UP TO INTERRUPT LDA FORTK NOW SET UP LDB FORTK TO EXECUTE LDX FOURK MOVE BYTES INTO INSTRUCTION SJP *+2 ENABLE THE SYSTEM STF INTP START THE INTERRUPT MBI AND EXECUTE MBI NOP CHANGE TO JMP *-N FOR LOOP/ CAY SAVE A LDA PHLAG GET THE FLAG SZA DID IT INTERRUPT? JSB CRASH NO, CRASH JSB TRNOF LDA TWNTK VERIFY LDB TWN2K THAT LDX NON2K THE CORRECT JSB PCOMP,I NUMBER OF BYTES WERE MOVED JSB *+2 NO, REPORT JMP PNXT2 YES, OVER THE ERROR NOP STY SVPD4 SAVE Y LDY *-3 AND GET FAIL FLAG JMP .PCOM,I SPC 1 JSB ERMS,I REPORT DEF E265 LDY SVPD4 RESTORE Y JMP .PCOM,I AND FINISH TBCMP SPC 1 PNXT2 CCA RESET THE STA PHLAG INTERRUPT FLAG LDA FORTK SET UP LDB FOR4K FOR A LDX FOURK MBI INSTRUCTION JSB PSTUP SET UP FOR INTERRUPT SJP *+2 TURN ON SYSTEM STF INTP INITIATE AN INTERRUPT MBW AND EXECUTE NOP CAY SAVE A LDA PHLAG GET INTP FLAG SZA INTERRUPT PROCESSED? JSB CRASH NO, CRASH JSB TRNOF LDA TWNTK VERIFY LDB TWN4K MBW LDX NON2K JSB PCOMP,I COMPLETED CORRECTLY JSB *+2 NO, REPORT THE ERROR JMP PNXT3 YES, CONTINUE NOP STY SVPD4 SAVE Y LDY *-3 GET FAIL FLAG JSB ERMS,I REPORT THE DEF E256 ERROR LDY SVPD4 RESTORE Y JMP .PCOM,I AND CONTINUE SPC 1 PNXT3 CCA RESET INTP STA PHLAG CHECK FLAG LDA TWNTK CHANGE JSB C.PTN,I SOURCE PATTERN LDA TWNTK SET UP TO LDB TWNTK EXECUTE AN LDX OCT2K MWF INSTRUCTION JSB PSTUP SET UP TO INTERRUPT STF INTP INITIATE AN INTERRUPT MWF AND EXECUTE THE NOP DEBUG CAY SAVE A LDA PHLAG GET THE INTP CHECK FLAG SZA WAS THE INTERRUPT PROCESSED? JSB CRASH NO, ABORT TST17 JSB TRNOF LDA TWN2K AND MAKE SURE LDB TWNTK THAT MWF LDX NON2K COMPLETED CORRECTLY JSB PCOMP,I JSB *+2 ERROR FOUND, REPORT IT JMP PNXT4 GCOMP COMPLETE, OVER THE ERROR NOP STY SVPD4 SAVE Y LDY *-3 GET FAIL FLAG JSB ERMS,I AND REPORT DEF E257 LDY SVPD4 RESTORE Y JMP .PCOM,I AND CHECK MORE SPC 1 PNXT4 CCA RESET STA PHLAG PHLAG LDA TWN2K CHANGE THE SOURCE JSB C.PTN,I PATTERN LDA TWNTK SET UP TO LDB TWNTK EXECUTE A LDX OCT2K MWI INST. JSB PSTUP SETUP TO INTERRUPT STF INTP ON INTP MWI EXECUTE MWI NOP DEBUG CAY SAVE A LDA PHLAG WAS INTERRUPT SZA PROCESSED? JSB CRASH NO, ABORT THE TEST JSB TRNOF LDA TWNTK CHECK LDB TWN2K COMPLETION LDX NON2K OF THE JSB PCOMP,I MWI INSTRUCTION JSB *+2 FAILURE DETECTED, REPORT JMP PNXT5 COMPLETED OK, CONTINUE NOP STY SVPD4 SAVE Y LDY *-3 AND GET THE FAILURE FLAG JSB ERMS,I THEN REPORT DEF E260 LDY SVPD4 RESTORE Y JMP .PCOM,I AND BACK FOR MORE SPC 1 PNXT5 CCA RESET STA PHLAG PHLAG LDA TWNTK CHANGE THE JSB C.PTN,I SOURCE PATTERN LDA TWNTK NOW SET UP LDB TWN2K TO EXECUTE LDX OCT2K AN MWW INST JSB PSTUP PRESET FOR AN INTERRUPT STF INTP NOW INITIATE AN INTERRUPT MWW AND EXECUTE THE INSTRUCTION NOP CAY SAVE A LDA PHLAG GET INT PROCESS FLAG SZA WAS INTERRUPT PROCESSED? JSB CRASH NO, CRASH JSB TRNOF LDA TWNTK LDB TWN4K VERIFY LDX NON2K MWW COMPLETED JSB PCOMP,I AFTER THE INTERRUPT JSB *+2 WHOOPS, SOMETHING'S WRONG JMP PNXT6 MWW WAS SUCCESSFUL, CONTINUE NOP STY SVPD4 SAVE GCOMP'S XTHRU COUNTER LDY *-3 GET FAIL-FLAG JSB ERMS,I AND REPORT DEF E261 LDY SVPD4 RESTORE Y JMP .PCOM,I AND BACK FOR MORE SPC 1 PNXT6 CCA SET INTP STA PHLAG CHECK FLAG CLA SET UP CLB TO TRY LDX OC177 XMS JSB PSTUP SET UP FOR AN INTERRUPT STF INTP TURN INTERRUPT SYSTEM ON XMS AND EXECUTE XMS NOP LDA PHLAG MAKE SURE SZA INT WAS PROCESSED JSB CRASH NO, ABORT THE TEST JSB TRNOF CLA READ LDB RTSYS BACK LDX NO177 THE MAP XMM REGISTERS JSB SQALL MAKE A TABLE TO COMPARE SPC 1 JSB .ALCP,I MAKE SURE XMSW COMPLETED JSB *+2 ERROR DETECTED JMP PNXT7 COMPARE OK, CONTINUE NOP STY SVPD4 SAVE Y LDY *-3 GET THE ERROR FLAG JSB ERMS,I DEF E262 LDY SVPD4 NOW RESTORE Y JMP TCPHR AND BACK FOR MORE SPC 1 PNXT7 CCA SET STA PHLAG PHLAG JSB RDZRO ZERO THE READ TABLE CLA NOW XMM LDB RTSYS MAPS TO LDX NO177 MEMORY JSB PSTUP PRESET INTP STF INTP ON INTP AND SYS XMM AND EXECUTE NOP CAY SAVE A LDA PHLAG INTP PROCESSED SZA ??? JSB CRASH NO, ABORT JSB TRNOF JSB SQALL VERIFY COMPLETION JSB .ALCP,I JSB *+2 ERROR DISCOVERED JMP PNXT8 NO ERROR DISCOVERED, GO ON NOP STY SVPD4 SAVE Y LDY *-3 GET ERROR FLAG JSB ERMS,I REPORT DEF E263 LDY SVPD4 RESTORE PNXT8 NOP JMP TST17,I SKP SPC 3 SPC 3 PRET1 DEF PRED1 PHLAG OCT 0 .ALCP DEF ALCMP PCOMP DEF GCOMP .PCOM DEF .GCOM PEMAD DEF MEMAD PZERO DEF GZERO PINIT DEF GINIT C.PTN DEF CHPTN SPC 3 CRASH NOP JSB TRNOF LDY CRASH GET FAIL FLAG JSB ERMS,I REPORT NO DEF E266 INTERRUPT OCCURRED JMP TST17,I AND ABORT TST17 SPC 2 PRED1 NOP CLF INTP OFF INTP PIO01 CLC DVICE CLEAR PIO02 CLF DVICE DEVICE SC JSB RGSVE SAVE ABX&Y CLA CLEAR STA PHLAG PHLAG NOP JSB RGRS1 JMP PRED1,I EXIT SPC 1 PSTUP NOP PIO03 STF DVICE TURN DVICE PIO04 STC DVICE READY, AND SJP PSTUP,I TURN SYSTEM ON & EXIT E255 ASC 5,E255 MBF/ E256 ASC 5,E256 MBW/ E257 ASC 5,E257 MWF/ E260 ASC 5,E260 MWI/ E261 ASC 5,E261 MWW/ E262 ASC 5,E262 XMS/ E263 ASC 5,E263 XMM/ E265 ASC 5,E265 MBI/ E266 ASC 14,E266 NO INTP, ABORTING TEST/ HED EXTENDED MEMORY TEST * * TST23 * * TEST 23 IS A UTILITY PROGRAM OFFERED AS A QUICK CHECK OF * EXTENDED MEMORY. IT IS NOT INTENDED TO BE USED AS A THOROUGH * MEMORY DIAGNOSTIC, MERELY A VERIFICATION OF THE HARDWARE * AND FIRMWARE REQUIRED TO ACCESS MEMORY SIZES GREATER THAN * 32K WORDS. * * TEST 23 STARTS BY CALCULATING MEMORY SIZE, BUILDS A TABLE * OF STARTING PAGE NUMBERS, AND THEN EXECUTING ONE PASS OF THE * DIAGNOSTIC ON ALL OF EXTENDED MEMORY, THEN EXITS BACK TO THE * CONTROL PROGRAM. * * IF AN ERROR IS DETECTED DURING THE EXECUTION OF THIS TEST, AN * ERROR MESSAGE WILL BE OUTPUT ON THE CONSOLE, OR, A CODED * HALT WILL OCCUR SO THE OPERATOR WILL BE AWARE OF THE ERROR * AND CAN DETERMINE THE CAUSE OF THE ERROR BY EXAMINING THE A,B * AND X REGISTERS WHICH WILL CONTAIN THE FOLLOWING INFORMATION: * * T REGISTER = ERROR CODE * A RESISTER = EXPECTED VALUE * B RESISTER = ACTUAL VALUE * * X RESISTER = LOGICAL ADDRESS OF ERROR * * * TO CONVERT THE LOGICAL MEMORY ADDRESS TO A PHYSICAL MEMORY * ADDRESS, THE OPERATOR MUST REMBER THE FOLLOWING STEPS: * * 1. THE LOGICAL PAGE NUMBER IS CONTAINED IN THE * MEMORY ADDRESS BITS 10-14. CONVERT TO OCTAL * FOR LOGICAL PAGE NUMBER. * * 2. SELECT THE CORRESPONDING MAP REGISTER. THIS * CAN BE DONE BY SELECTING THE M-REGISTER, * SETTING M-REGISTER BITS 14 AND 15 TO ONE, AND * M-REGISTER BITS 0-9 TO THE ADDRESS OF THE * MAP REGISTER DESIRED. WITHOUT PRESSING THE * STORE SWITCH, SELECT THE T-REGISTER * AT THIS TIME, THE T-REGISTER WILL CONTAIN * THE CONTENTS OF THE MAP ADDRESSED BY THE * M-REGISTER. THE CONTENTS OF THIS MAP REGISTER * IS THE PHYSICAL MEMORY PAGE NUMBER. SKP TST23 EQU * SPC 1 NOP LDA MEMO GET MEMORY SIZE FROM THE CONFG. AND XMASK ELIMINATE OTHER OPTIONS CPA XMASK AT LEAST 32K? JMP *+4 YEP, CONTINUE BOMBX JSB MSGC,I NOPE, TELL OPERATOR HE CANT DEF H317 RUN THIS TEST WITH LESS THAN 32K JMP TST23,I AND EXIT JSB LODUP LOAD UP MAPS 0-37 SPC 1 LDA OCT40 INITIALIZE MAXIMUM STA MAXPG PAGE COUNTER NOP DEBUG TSTX1 LDA OCT10 STARTING W/REGISTER TEN, LDB MAXPG AND FOR THE NEXT 24 LDX DEC24 PAGES, DEFINE MORE XMS MEMORY SPC 1 LDY NEG24 INITIALIZE A PAGE COUNTER OF 24 LDB TWNTK GET A PAGE 10 STARTING ADDRESS LDA PTRN1 AND A RECOGNIZABLE PATTERN SJP *+2 NOW ENABLE THE SYSTEM T23MS STA B,I STORE PATTERN INTO 1. LOC OF LDA B,I PAGE, READ IT BACK & CHECK THAT SZA,RSS IT IS NOT 000000 OR 177777 JMP PATMS PATTERN RETURNED IS 000000 CMA SZA,RSS JMP PATMS PATTERN STORED IS 177777 ADB OCT2K UPDATE B-REG TO BEGINNING OF NEXT PAGE LDA PTRN1 LOAD A-REG WITH PATTERN AGAIN ISY & INCREMENT PAGE COUNTER JMP T23MS DJP *+2 DISABLE MEMORY LDA MAXPG INCREASE STARTING ADDRESS OF MEMORY ADA OCT30 BLOCK BY 24 PAGES & GO TO REDE- STA MAXPG FINE MEMORY BLOCK JMP TSTX1 GO REDEFINE MEMORY * PATMS DJP *+1 DISABLE MEMORY LDA TWNTK DEDUCT THE 8K OF MEM ADDRESS IN THE CMA,INA BASE MEMORY, ATTACHED TO EVERY 24K ADB A IN THE MEM MAP TO GET TRUE DISPLM ADDR BLF CONVERT IT TO A TRUE PAGE DISPLM. RBL,RBL IN THE 24 PAGE BLOCK ADB MAXPG ADD THE PAGE NUMBER SUPPLIED BY 24K MODULE LDA B LOAD VALUE TO A-REG & CONVERT IT TO CLE ASCII FOR MESSAGE PRINT OUT LDB MSP23 JSB I2AS,I JSB MSGC,I PRINT MESSAGE TO CONSOLE DEF H327 * CMPLT DJP *+2 OFF THE SYSTEM LDA MAXPG GET DETECTED MAX+1 VALUE CMA,INA MAKE IT CMA MAXIMUM PAGE STA MAXPG SAVE THE MAXIMUM PAGE VALUE STB XERRA AND THE 'TOO BIG' VALUE IN B LDB NXTBL GET THE LAST TEMP TABLE ADDRESS OTRLP STA B,I STORE IN TEMPTABLE ADA NEG24 SUBTRACT 24 FOR NEXT TIME THRU STA XXTMP SAVE IN CASE NO END ADA NON40 USED UP? SSA YES, ALL GONE JMP XXARO GO FINISH UP LDA XXTMP NO, GET VALUE BACK ADB NEG01 UPDATE THE POINTER JMP OTRLP AND DO AGAIN XXARO LDA TABLE SET UP A POINTER STA XTABL TO THE FIRST PAGE TABLE LDA OCT40 START WITH PAGE 40 STA XTABL,I PUT IN THE TABLE ISZ XTABL BUMP TABLE POINTER LDA B,I CHECK IF ONLY 64K CPA MAXPG IS PRESENT JMP MRKER PUT END OF TABLE MARKER INRLP INB BUMP POINTER TO NEXT PAGE LDA B,I GET THE NEXT STARTING PAGE STA XTABL,I AND PLACE IT IN THE TABLE CPA MAXPG COMPLETE? JMP *+3 YES, FINISH OFF ISZ XTABL NO, BUMP TABLE POINTER JMP INRLP THEN DO AGAIN MRKER CCA MAKE AN END OF TABLE MARKER, STA XTABL,I PUT END MARKER IN TABLE SPC 1 LDB XERRA GET THE 'TOO BIG' VALUE LDA ITABL INITIALIZE A STA SVPD1 VALUE TABLE POINTER CPB FORTK IS IT EXTRA EIGHT K? JMP YDOIT YES, FINISH ISZ SVPD1 NO, BUMP THE POINTER CPB SIXTK EXTRA SIXTEEN K? JMP YDOIT YES ISZ SVPD1 NO, BUMP AGAIN YDOIT LDB SVPD1,I AND PUT CORRECT ENDING STB UBOU VALUE IN UPPER BOUNDARY. SKP CLA ZERO THE MEM LFA BASE PAGE FENCE LDA OCT40 LOAD USER LDB TBLDF MAP REGISTERS LDX OCT05 FOR BITS 13-19 (ME BUS) XMM CHECK SPC 1 LDY NON05 INIT. XTHRU = 5 LDA PTRN2 GET LDX PTRN1 PATTERNS LDB OCT10 AND POINTER STX B,I PUT CONTROL PATTERN IN 10 SPC 1 SJP *+2 ON THE SYSTEM AREA XDOIT XSA B,I CROSS STORE CPA OCT10,I CLOBBER ADDRESS 10? JSB XERRA YES, GO AND CRASH!! ADB OCT2K NO, UPDATE POINTER TO NEXT PAGE ISY DONE?? JMP XDOIT NO, GO DO IT AGAIN JMP JACK-1 YES, GO DO MEM TESTING SPC 1 XERRA NOP DJP *+2 OFF SYSTEM JSB RGSVE SAVE THE REGISTERS LDY XERRA GET THE FAIL FLAG JSB ERMS,I AND REPORT THE DEF E325 PROBLEM OF ME BUS SJP *+2 BACK ON THE SYSTEM JMP XERRA,I AND RETURN SPC 1 TBLDF DEF *+1 OCT 40 OCT 100 OCT 200 OCT 400 OCT 1000 SPC 2 JSB RESET SET TABLE POINTER TO FIRST ADDR JACK DJP *+2 DISABLE THE SYSTEM LDA OCT10 STARTING REGISTER IS 10 LDB XTABL,I GET THE NEXT STARTING PAGE CPB NEG01 LAST ONE? JMP ENDXX YES, GO EXIT THE TEST LDX OCT37 NO, GET THE COUNT XMS AND REDEFINE THE MAP REGISTERS SKP ISZ XTABL BUMP THE TABLE POINTER SJP *+2 TURN THE SYSTEM ON JMP ACT AND DO THE MEMORY DIAGNOSTIC SPC 2 RESET NOP LDA TABLE RESET THE STA XTABL STARTING PAGE LDB XTABL,I TABLE POINTER, JMP RESET,I AND EXIT XMASK OCT 70000 SPC 3 ENDXX NOP JMP TST23,I EXIT TST23 SPC 2 E321 DEF ERROR H317 ASC 16,H317 MUST HAVE GREATER THAN 32K/ H327 ASC 22,H327 XXXXK OF CONTIGUOUS MEMORY INSTALLED/ SPC 2 DEC24 DEC 24 SIXTK OCT 60000 MAXPG OCT 0 NEG24 DEC -24 XXTMP OCT 0 XTABL OCT 0 TABLE DEF *+1 BSS 7 NXTBL DEF *+7 BSS 7 ITABL DEF *+1 OCT 37777 OCT 57777 OCT 77777 SKP ACT LDA MTIME STA MCNT CCE LOOP CME LDA LBOU THIS TEST DOES A MEMORY ADDRESS FILL LDB A AND DOES A MEMORY COMPLEMENT SEZ TEST THUS ASSURING OF DETECTING CMB ANY FAILURE REGARDLESS OF WHERE STB A,I IT IS LOCATED CPA UBOU JMP CMP-1 THIS TEST DOES THE ADRS TEST WHEN INA E IS CLEAR AND DOES THE ADRS JMP FILL COMPLEMENT TEST WHEN E IS SET LDA LBOU CMP CAX LDB A,I SEZ A = GOOD DATA CMA B = BAD DATA CPA B RSS E320 OCT 107020 SEZ CMA CPA UBOU JMP DOWN INA JMP CMP DOWN SEZ ISZ MCNT JMP LOOP NOP HED WALKING ONES TEST W1 LDA MTIME WALKING ONE TEST STA MCNT INITIALIZE REPEAT COUNTER LDA IPAT1 STA PAT1 LDA IPAT2 STA PAT2 CLA,INA STA BITPT FOR ROTATING BIT PATTERN CAX BEGW CLO LDA LBOU STA ADDRS INITIALIZE ADDRESS POINTER WPAT1 LDB PAT1 JSB WRITE LDB PAT2 JSB WRITE JMP WPAT1 SPC 2 * THE WRITE SUBROUTINE IS ENTERED WITH THE * PATTERN TO BE STORED IN THE B-REG. IT IS *STORED IN 32 LOCATIONS BEGINNING AT THE * ADDRESS POINTER OR UNTIL THE UPPER ADDRESS * BOUND IS REACHED. THE RETURN ADDRESS IS * THEN MODIFIED TO GET THE ALTERNATE PATTERN. SPC 2 WRITE NOP STB ADDRS,I STORE B THRU THE ADDRESS POINTER LDA ADDRS CPA UBOU HAS UPPER BOUND BEEN REACHED? JMP BEGR YES, GO READ. INA NO, STA ADDRS MODIFY ADDRESS POINTER AND XXMSK SZA AT 32 WORD BOUNDARY JMP WRITE+1 NO CONTINUE WITH PRESENT PATTERN JMP WRITE,I SPC 2 * THE MEMORY WHICH HAS BEEN WRITTEN WITH * 32 WORDS OF PATTERN ONE INTERLEAVED WITH * 32 WORDS OF PATTERN TWO WILL NOW BE * TESTED. IF THE DATA IN A MEMORY CELL * TESTS VALID, IT WILL BE COMPLEMENTED * AND TESTED AGAIN. IF IT IS STILL VALID IT * WILL BE RECOMPLIMENTED AND THE * NEXT MEMORY CELL WILL BE TESTED. ANY * INVALID TEST WILL RESULT IN A 107021 WITH THE * GOOD DATA IN THE A-REG AND THE BAD DATA * IN THE B-REG. PUSH RUN AND A 107022 * WILL OCCUR WITH THE ADDRESS IN THE A-REG * AND THE BAD DATA IN THE B-REG. SKP BEGR STO LDA LBOU STA ADDRS INITIALIZE THE ADDRESS POINTER. RPAT1 LDA PAT1