LDB OCT14 PORT A LDX OCT30 REGISTER 1 XMS SPC 1 LDA O1C41 AND LOAD THE LDB OCT15 PORT B LDX OCT30 XMS REGISTER 1 SPC 1 LDB THRTK GET THE PATTERN TABLE POINTER LDY NDN10 INITIALIZE A XTHRU = 10 LDA PTRN1 PUT A PATTERN LDX PTRN2 STA B,I INTO THE INB DCPC SOURCE STX B,I INB ISY ADDRESSES JMP *-6 SPC 1 LDY NDN10 MAKE A XTHRU=10 LDB TWNTK LOGICAL ADDRESS POINTER STB NPONT SET THE POINTER LDB THRTK INITIALIZE A STB XPONT PHYSICAL ADDRESS POINTER SPC 1 NOP CHANGE TO JMP *-N FOR LOOP/ T.NN1 LDA DMACW GET CONTROL WORD 1 OTA DMA.6 OUTPUT TO CHANNEL 1 CLC DMA.2 SETUP TO LOWER CHANNEL LDA NPONT GET THE TRANSFER ADDRESS OTA DMA.2 OUTPUT TO LOW CHANNEL STC DMA.2 HIT IT CCA MAKE A NEGATIVE 1 OTA DMA.2 OUTPUT WORD COUNT NOP CHANGE TO JMP *-N FOR LOOP/ SJP *+2 ON THE SYSTEM CCA SET FIRST TIME STA NFLAG THRU FLAG SKP NNIO4 STC DVICE,C HIT THE BOARD STC DMA.6,C OUTPUT TRANSFER COMMAND SPC 1 NSFS1 SFS DMA.6 WAIT JMP *+2 LOOP W/TIMER JMP NCTU1 DONE, NOW GO CHECK THE XFR LDA NFLAG GET FIRST TIME THRU FLAG NOP CHANGE TO JMP *-N FOR LOOP/ SZA FIRST TIME THRU? JMP *+6 YEP, GO THRU THE TIMER JSB TRNOF JSB ERMS,I NO, TELL THE OPERATOR DEF E242 SOMETHING IS WRONG, THEN OCT 103042 DO THE NON-CONTINUE JMP *-1 THING LDA NTMGC DO AN 8 MILLISECOND TIMER JSB TMRR,I CLA AND CLEAR THE STA NFLAG FIRST TIME THRU FLAG JMP NSFS1 NOW GO BACK AND CHECK THE FLAG NCTU1 DJP *+2 OFF THE SYSTEM AREA NOP CHANGE TO JMP *-N FOR LOOP JSB RDFDV GO GET THE WORD FROM DVICE NTPD1 CPA XPONT,I SAME AS THE ONE DCPC SENT OUT? JMP N.CT1 YES, OVER THE ERROR JSB RGSVE LDB XPONT,I NO, GET THE EXPECTED PATTERN LDX XPONT THE ADDRESS OF THE FAILURE LDY NTPA1 AND THE FAILURE FLAG JSB ERMS,I NO, TELL OPERATOR DEF E243 JSB RGRS2 RESTORE X AND Y N.CT1 ISZ NPONT BUMP THE ADDRESS POINTER ISZ XPONT BUMP COMPARE POINTER ISY THEN THE XTHRU COUNTER JMP T.NN1 AND DO AGAIN UNTIL ROLLOVER SKP LDY NDN10 ZERO CLA THE FIRST LDB THR2K TEN STA B,I LOCATIONS INB OF ISY PAGE JMP *-3 SPC 1 LDY NDN10 INITIALIZE AN XTHRU COUNTER LDB TWNTK SETUP AN INPUT STB NPONT ADDRESS POINTER LDB THR2K INITIALIZE STB XPONT COMPARE POINTER LDA PTRN1 GET THE PATTERN JSB WRTDV OUTPUT AND CLOCK THRU DVICE SPC 1 T.NN2 LDA DMACW GET THE CONTROL WORD OTA DMA.7 OUTPUT TO #7 CLC DMA.3 SWITCH ON TO ACCEPT LDA NPONT IOR DMAIW DIRECTION OTA DMA.3 CONTROL WORD STC DMA.3 HIT IT CCA NOW, OUTPUT OTA DMA.3 THE WORD COUNT SPC 1 STA NFLAG SET THE FIRST TIME THRU FLAG SJP *+2 ENABLE SYSTEM NNIO5 STC DVICE,C STC DMA.7,C START XFER NSFS2 SFS DMA.7 WAIT JMP *+2 LOOP JMP NCTU2 DONE, GO EXIT LDA NFLAG FIRST TIME SZA THRU SFS LOOP? JMP *+6 YES, OVER THE ERROR JSB TRNOF JSB ERMS,I NO, TELL THE OPERATOR DEF E242 TO CHECK DCPC OCT 103042 THEN JMP *-1 HANG LDA NTMGC OFF TO THE JSB TMRR,I TIMER CLA CLEAR THE STA NFLAG FIRST TIME THRU LOOP JMP NSFS2 AND CHECK THE FLAG AGAIN SKP NCTU2 DJP *+2 LDA XPONT,I CPA PTRN1 NTPD2 JMP N.CT2 LDB PTRN1 LDX XPONT LDY NTPA2 JSB ERMS,I REPORT DEF E244 SPC 2 N.CT2 ISZ NPONT INCREMENT ISZ XPONT POINTERS ISY AND XTHRU JMP T.NN2 DO AGAIN UNTIL ROLLOVER NOP JMP TST15,I SPC 3 RDFDV NOP RDVC1 LIA DVICE READ FROM THE DEVICE JMP RDFDV,I SPC 3 WRTDV NOP NNIO1 OTA DVICE NNIO2 STC DVICE,C JMP WRTDV,I SKP THRTK OCT 30000 NPONT OCT 0 XPONT OCT 0 O1C01 OCT 110 O1C41 OCT 150 DMA.2 EQU 2 DMA.3 EQU 3 DMA.6 EQU 6 DMA.7 EQU 7 DMACW OCT 100000 NFLAG OCT 0 NTMGC OCT 10 DMAIW OCT 100000 NTPA1 DEF NTPD1 NTPA2 DEF NTPD2 E242 ASC 15,E242 NO DCPC FLAG AFTER 10 MS/ E243 ASC 17,E243 PORT A NOT ENABLED BY DCPC6/ E244 ASC 17,E244 PORT B NOT ENABLED BY DCPC7/ E236 ASC 5,E236 PAA/ E237 ASC 5,E237 PAA/ HED **MEM DIAGNOSTIC** - CROSS STORE/LOAD/COMPARE * * TEST 05 - * * TEST 05 WILL TEST THE FOLLOWING INSTRUCTIONS: * * XSA/B CROSS STORE * XLA/B CROSS LOAD * XCA/B CROSS COMPARE * * THESE INSTRUCTIONS FUNCTION THE SAME AS THE BASE SET STORE * LOAD AND COMPARE INSTRUCTIONS. A STORE, LOAD OR COMPARE * OPERATION IS PERFORMED USING THE A OR B REGISTER AND AN * ADDRESS FROM THE ALTERNATE MAP. IF MEM IS DISABLED, XSA/B, * XLA/B AND XCA/B ACCESS PHYSICAL MEMORY * * SINCE THE DEFAULT CASE IS A LOAD/STORE/COMPARE, THE MEMORY MAP * IS CHANGED PRIOR TO EXECUTION OF TST05, SUCH THAT THE MAPPED * ADDRESS AND THE LOGICAL ADDRESS WILL BE ON TWO DIFFERENT PAGES * THE MEMORY MAP WILL BE REINSTATED AT THE CONCLUSION OF THIS * TEST * * CALLING SEQUENCE: XSA * DEF ADDR(I) * * * IF AN ERROR IS DETECTED WHILE EXECUTING TST05, THE ERROR CODE * AND FAILING INSTRUCTION WILL BE OUTPUT TO THE CONSOLE, AND THE * PROGRAM WILL HALT THE COMPUTER. AT THIS TIME, THE REGISTERS * CAN BE INTERROGATED TO DETERMINE THE CAUSE, LOCATION, ETC. OF * THE ERROR. * * THE FORMAT FOR DETERMINING THESE CONDITIONS IS AS FOLLOWS: * * T REGISTER = HALT CODE * * A REGISTER = PATTERN * * B REGISTER = PATTERN * X REGISTER = PHYSICAL TARGET ADDRESS OF INSTRUCTION * Y REGISTER = ADDRESS OF FAILURE * * * * NOTE: * THE ACTUAL PATTERN WILL BE FOUND IN THE REGISTER * REFERENCED BY THE CROSS INSTRUCTION, AND THE EXPECTED * PATTERN WILL BE FOUND IN THE OTHER REGISTER. SKP ORG 10000B TST05 EQU * SPC 1 NOP JSB LODUP LDA TWNTK CONFIGURE TEST FOR DESTINATION STA .USA1 ADDRESS = 1. LOCATION IN STA T5EAD PAGE 8(DEC) LDA TWN2K & 1. LOCATION IN STA .SSA1 PAGE 9(DEC) STA T5EA2 LDA CLA RESTORE ALL CLA INSTR. FOR THIS STA FHREA+2 TEST RUN STA FHRED STA FHREG+2 STA FHREJ+2 IOR OCT1K RESTORE ALL CLB INSTR. STA FHREM+2 STA FHREJ+2 JSB TEST5 GO DO TEST * CLA CLA CONFIGURE TEST FOR DESTINATION STA .USA1 ADDRESS = A-REG STA T5EAD STA .SSA1 STA T5EA2 STA FHREA+2 CHANGE CLA INSTR. TO NOP'S STA FHRED STA FHREG+2 STA FHREJ+2 STA FHREM+2 CHANGE CLB INSTR. TO NOP JSB TEST5 GO DO TEST * CLA,INA CONFIGURE TEST FOR DESTINATION STA .USA1 ADDRESS = B-REG STA T5EAD STA .SSA1 STA T5EA2 LDA CLA RESTORE CLA INSTR. FOR THIS TEST STA FHREA+2 RUN STA FHRED STA FHREG+2 STA FHREJ+2 CLA CHANGE CLB INSTR. TO NOP STA FHREP+2 JSB TEST5 GO DO TEST JMP TST05,I THEN EXIT TEST * SPC 1 TEST5 NOP SJP *+2 ENABLE SYSTEM MAP REGISTERS LDA PTRN1 GET A RECOGNIZABLE PATTERN AND FERRA XSA .USA1,I XSTORE PTRN1 ON PAGE 10 NOP CHANGE TO JMP *-N FOR LOOP/ DJP *+2 DISABLE THE MEM LDA .USA1,I GO GET WHAT WAS XSTORED CPA PTRN1 GET IT BACK RIGHT? JMP FHREA YES, OVER THE ERROR LDB PTRN1 NO, GET THE EXPECTED LDX T5EAD PUT ADDRESS OF ERROR IN X LDY FERDA GET FAIL FLAG JSB ERMS,I AND REPORT THE FAILURE DEF E100 NOP SPC 1 FHREA SJP *+2 REENABLE THE SYSTEM MAP CLA CHANGE THE VALUE OF A AND FERRB XLA .USA1,I XLOAD FROM USER AREA CPA PTRN1 DID THE XLOAD SUCCESSFULLY? JMP FHREB YES, OVER THE ERROR DJP *+2 LDB PTRN1 GET THE EXPECTED PATTERN LDX T5EAD THE ADDRESS OF THE FAILURE LDY FERDB AND ERROR FLAG JSB ERMS,I NOW REPORT USING DEF E101 XLA FAILURE MESSAGE SJP *+2 REENABLE THE SYSTEM SPC 1 FHREB LDA PTRN1 GET THE PATTERN TO COMPARE FERRC XCA .USA1,I XCOMPARE WITH WORD XSTORED JMP FHREC XCOMPARE OK, OVER THE ERROR DJP *+2 DISABLE MEM TO REPORT ERROR LDX T5EAD ADDRESS OF FAILURE LDY FERDC FAILURE FLAG JSB ERMS,I REPORT THE DEF E102 ERROR SPC 1 SJP *+2 SYS BACK ON FHREC LDA PTRN2 GET A DIFFRENT PATTERN TO XSTORE FERRD XSA .USA1,I XSTORE PATTERN 2 NOP CHANGE TO JMP *-N FOR LOOP/ DJP *+2 DISABLE THE MAP TO GET AT WHAT LDA .USA1,I WAS STORED BY THE XSA INTSR. CPA PTRN2 COMPARE THE WORD WITH PATTERN 2 JMP FHRED COMPARED OK, JUMP OVER THE ERROR LDB PTRN2 GET THE EXPECTED LDX T5EAD THE FAILING ADDRESS LDY FERDD AND THE FAIL FLAG JSB ERMS,I REPORT THE DEF E100 ERROR SPC 1 SJP *+2 SYS BACK ON FHRED CLA CHANGE THE A REGISTER VALUE FERRE XLA .USA1,I AND CROSS LOAD FROM THE USER MAP NOP CHANGE TO JMP *-N FOR LOOP/ CPA PTRN2 WAS THE PROPER PATTERN FOUND? JMP FHREE OVER THE ERROR DJP *+2 OFF SYSTEM LDB PTRN2 GET THE EXPECTED PATTERN LDY FERDE AND THE ERROR FLAG LDX T5EAD THE ADDRESS OF THE ERROR JSB ERMS,I AND REPORT THE ERROR DEF E101 SPC 1 FHREE LDA PTRN2 GET THE EXPECTED PATTERN AND FERRF XCA .USA1,I XCOMPARE TO THE STORED PATTERN JMP FHREF OVER THE ERROR DJP *+2 DISABLE LDX T5EAD GET FAILURE ADDRESS LDY FERDF AND THE ERROR FLAG JSB ERMS,I NOW REPORT THE DEF E102 FAILURE SPC 1 FHREF UJP *+2 ENABLE THE USER LDA PTRN1 GET A RECOGNIZABLE PATTERN IN A, FERRG XSA .USA1,I AND XSTORE INTO THE SYSTEM AREA NOP CHANGE TO JMP *-N FOR LOOP/ DJP *+2 DISABLE MAPS LDA .SSA1,I GET THE STORED PATTERN CPA PTRN1 IS IT THE SAME PATTERN? JMP FHREG YES, OVER THE ERROR LDB PTRN1 NO, GET THE EXPECTED PATTERN LDX T5EA2 THE FAILURE ADDRESS LDY FERDG GET THE FLAG JSB ERMS,I REPORT THE DEF E103 ERROR SPC 1 FHREG UJP *+2 REENABLE THE SYSTEM MAP CLA CHANGE THE PATTERN IN A FERRH XLA .USA1,I XLOAD FROM THE SYSTEM AREA NOP CHANGE TO JMP *-N FOR LOOP/ CPA PTRN1 COMPARE THE XLOADED PATTERN JMP FHREH COMPARE OK, OVER THE ERROR DJP *+2 COMPARE FAILED LDB PTRN1 REPORT LDX T5EA2 THE LDY FERDH ERROR JSB ERMS,I DEF E104 SPC 1 UJP *+2 FHREH LDA PTRN1 GET THE PATTERN FERRI XCA .USA1,I XCOMPARE IT TO THE SYSTEM AREA JMP FHREI OK, OVER THE ERROR DJP *+2 DISABLE TO REPORT LDX T5EA2 GET DATA FOR LDY FERDI DISPLAY JSB ERMS,I REPORT THE DEF E105 ERROR UJP *+2 REENABLE SPC 1 FHREI LDA PTRN2 GET A NEW PATTERN FERRJ XSA .USA1,I AND STORE IT IN THE SYSTEM MAP NOP CHANGE TO JMP *-N FOR LOOP/ DJP *+2 DISABLE THE MAPS LDA .SSA1,I GET THE PATTERN XSTORED CPA PTRN2 SAME AS THE XSTORED PATTERN? JMP FHREJ LDB PTRN2 LDX T5EA2 LDY FERDJ JSB ERMS,I DEF E103 SPC 1 FHREJ UJP *+2 CLA CHANGE THE A REGISTER VALUE FERRK XLA .USA1,I XLOAD FROM SYSTEM AREA NOP CHANGE TO JMP *-N FOR LOOP/ CPA PTRN2 PATTERN THE SAME? JMP FHREK DJP *+2 LDB PTRN2 LDX T5EA2 LDY FERDK JSB ERMS,I DEF E104 UJP *+2 SPC 1 FHREK LDA PTRN2 FERRL XCA .USA1,I XCOMPARE IT TO SYSTEMS MAP JMP FHREL DJP *+2 LDX T5EA2 LDY FERDL JSB ERMS,I DEF E105 SPC 2 FHREL SJP *+2 LDB PTRN1 GET A RECOGNIZABLE PATTERN IN B FERRM XSB .USA1,I XSTORE B TO USER AREA NOP CHANGE TO JMP *-N FOR LOOP/ DJP *+2 DISABLE THE SYSTEM MAP REGISTERS LDB .USA1,I AND LOAD B WITH THE XSTORED CPB PTRN1 CONTENTS. COMPARE OK? JMP FHREM LDA PTRN1 LDY FERDM LDX T5EAD JSB ERMS,I DEF E106 SPC 1 FHREM SJP *+2 CLB CHANGE THE VALUE OF B REGISTER FERRN XLB .USA1,I XLOAD B FROM THE USER MAP NOP CHANGE TO JMP *-N FOR LOOP/ CPB PTRN1 COMPARE TO XSTORED ADDRESS VALUE JMP FHREN DJP *+2 LDA PTRN1 LDY FERDN LDX T5EAD JSB ERMS,I DEF E107 SJP *+2 SPC 1 FHREN LDB PTRN1 FERRO XCB .USA1,I COMPARE TO USER MAP AREA JMP FHREO DJP *+2 LDY FERDO LDX T5EAD JSB ERMS,I DEF E110 SPC 1 FHREO UJP *+2 LDB PTRN1 GET A NEW PATTERN FERRP XSB .USA1,I XSTORE INTO THE SYSTEM AREA NOP CHANGE TO JMP *-N FOR LOOP/ DJP *+2 DISABLE THE MAPS LDB .SSA1,I GET THE XSTORED VALUE CPB PTRN1 AND COMPARED TO PATTERN 1 JMP FHREP LDA PTRN1 LDY FERDP LDX T5EA2 JSB ERMS,I DEF E111 SPC 1 FHREP UJP *+2 CLB CHANGE THE B REGISTER VALUE FERRQ XLB .USA1,I XLOAD B FROM THE SYSTEM AREA NOP CHANGE TO JMP *-N FOR LOOP/ CPB PTRN1 WAS THE CROSS LOAD SUCCESSFUL? JMP FHREQ DJP *+2 LDA PTRN1 LDY FERDQ LDX T5EA2 JSB ERMS,I DEF E112 SPC 1 UJP *+2 FHREQ LDB PTRN1 FERRR XCB .USA1,I XCOMPARE TO THE SYSTEM AREA JMP FHRER DJP *+2 LDY FERDR LDX T5EA2 JSB ERMS,I DEF E113 FHRER NOP DJP *+2 NOP CHANGE TO JMP *-N FOR LOOP/ JMP TEST5,I AND EXIT SUBROUTINE SKP .USA1 DEF USSA1 .SSA1 DEF SSSA1 T5EAD OCT 0 T5EA2 OCT 0 NDN25 DEC -25 FERDA DEF FERRA FERDB DEF FERRB FERDC DEF FERRC FERDD DEF FERRD FERDE DEF FERRE FERDF DEF FERRF FERDG DEF FERRG FERDH DEF FERRH FERDI DEF FERRI FERDJ DEF FERRJ FERDK DEF FERRK FERDL DEF FERRL FERDM DEF FERRM FERDN DEF FERRN FERDO DEF FERRO FERDP DEF FERRP FERDQ DEF FERRQ FERDR DEF FERRR SPC 3 FLOAD NOP LDA OCT10 LDB FLTBL LDX OCTWO XMM JMP FLOAD,I SPC 2 FLTBL DEF FLTBX FLTBX OCT 11,10 E100 ASC 5,E100 XSA/ E101 ASC 5,E101 XLA/ E102 ASC 5,E102 XCA/ E103 ASC 5,E103 XSA/ E104 ASC 5,E104 XLA/ E105 ASC 5,E105 XCA/ E106 ASC 5,E106 XSB/ E107 ASC 5,E107 XLB/ E110 ASC 5,E110 XCB/ E111 ASC 5,E111 XSB/ E112 ASC 5,E112 XLB/ E113 ASC 5,E113 XCB/ HED *** XMS *** - EXCHANGE MAPS AND MEMORY SEQUENTIALLY * * * * * XMS - EXCHANGE MAPS AND MEMORY SEQUENTIALLY * * CALLING SEQUENCE: * * LDA WORD1 * LDB WORD2 * LDX WORD3 * XMS * * * WORD FORMATS: * * WORD1 - MAP ADDRESS OF THE FIRST REGISTER TO BE * LOADED BY THE XMS INSTRUCTION * * WORD2 - STARTING VALUE OF THE SEQUENTIALLY LOADED * VALUE * * WORD3 - NUMBER OF REGISTERS TO BE LOADED. WORD3 * CAN ONLY BE A POSITIVE VALUE. * * * * * TST01 VERIFIES PROPER OPERATION OF THE XMS * (EXCHANGE MAP AND MEMORY) MACRO INSTRUCTION. * * EACH MAP IS SEQUENTIALLY LOADED, READ AND * COMPARED FOR ACCURACY OF LOAD/READ OPERATION * AND THEN ALL FOUR MAPS SEQUENTIALLY LOADED * AND VERIFIED * * * IF AN ERROR IS DETECTED IN RUNNING TST01, THE MESSAGE * "E030 XMS" IS REPORTED AND THE COMPUTER HALTS WITH 102030 * DISPLAYED, AND THE A,B,X AND Y REGISTERS CONTAINING THE * FOLLOWING INFORMATION: * * A=GOOD PATTERN * B=BAD PATTERN * X=FAILING REGISTER NUMBER * Y=ADDRESS OF FAILURE * * SKP TST01 EQU * SPC 1 NOP JSB RDZRO ZERO THE READ TABLE CLA SEQUENTIALLY CLB LOAD THE SYSTEM LDX OCT40 MAP REGISTERS XMS USING THE XMS INSTRUCTION NOP CHANGE TO JMP *-N FOR LOOP/ SPC 1 CLA SET UP A TABLE JSB MKSTB FOR COMPARISON CLA DO THE XMS LDB RTSYS TO MEMORY USING LDX NON40 RTSYS AS A CATCHER XMM NOP CHANGE TO JMP *-N FOR LOOP/ SPC 2 LDA LTPTB POINT TO READ LDB RTSYS AND SEQUENCE CONTROL TABLES JSB TBCMP AND COMPARE THE TWO. JSB XMSER GO REPORT THE ERROR SPC 2 LDA OCT40 SEQUENTIALLY (FROM OCTAL 40) CLB LOAD UP THE USER LDX OCT40 MAP REGISTERS XMS SPC 1 NOP CHANGE TO JMP *-N FOR LOOP/ LDA OCT40 READ LDB RTUSR BACK THE USER LDX NON40 MAP REGISTERS USING XMM THE XMM INSTRUCTION NOP CHANGE TO JMP *-N FOR LOOP/ SPC 1 LDA LTPTB COMPARE LDB RTUSR THE TWO JSB TBCMP TABLES JSB XMSER GO REPORT THE ERROR SPC 1 NOP CHANGE TO JMP *-N FOR LOOP/ LDA OC100 FROM OCTAL 100 CLB SEQUENTIALLY LOAD LDX OCT40 THE PORT 1 MAP XMS WITH THE XMS INSTRUCTION SPC 1 NOP CHANGE TO JMP *-N FOR LOOP/ LDA OC100 NOW READ LDB RTPTA THE PORT 1 MAP INTO LDX NON40 RTPTA USING THE XMM XMM INSTRUCTION NOP CHANGE TO JMP *-N FOR LOOP/ SKP LDA LTPTB COMPARE LDB RTPTA THE TWO TABLES JSB TBCMP JSB XMSER GO REPORT THE ERROR SPC 1