ASMB,A,B,L,C HED MICROCODED MEMORY DIAGNOSTIC (DSN 102006) ORG 0 JANUARY 4, 1977 DATE CODE 1644 SUP * GENERAL OPERATING PROCEDURE * * A. LOAD DIAGNOSTIC CONFIGURATOR AND SET IT UP. * B. LOAD DIAGNOSTIC MAIN PROGRAM * C. LOAD ADDRESS 100B. * D. LOAD SWITCH REG. WITH SELECT CODE AND OPTIONS * E. PRESS RUN AND WAIT FOR HALT 102074. * F. LOAD SWITCH REGISTER * IF SET =: * 15 = HALT AT END OF EACH TEST * 14 = SUPRESS ERROR HALTS * 13 = LOOP ON LAST TEST * 12 = LOOP ON DIAGNOSTIC * 11 = SUPRESS ERROR MESSAGES * 10 = SUPRESS NON-ERROR MESSAGES * 9 = GO TO USER CONTROL SECTION * AT END OF PRESENT TEST * 8 = RESERVED * 7 * = MEMORY UNDER TEST 4K BLOCK NO. (DISPLAY ONLY) * 0 * * NOTE: STANDARD RUN SHOULD BE WITH SW. REG. = 0 * USER CONTROL WILL ASK FOR A 16 BIT WORD. * EACH BIT WILL = 1 TEST * * G. PRESS RUN. * H. RESTART - LOAD ADDRESS 2000B * I. RECONFIGURE IF TESTING I/O INTERFACE - LOAD ADDRESS 100B * * PROGRAM HALTS * * 102077 END OF DIAG (A = PASS COUNT) * 102076 END OF TEST (A = TEST #) * 102075 USER SELECTION REQUEST * 102074 SELECT CODE INPUT COMPLETE * 102073 USER SELECT CODE ERROR * 102072 INCORRECT COMPUTER TYPE (CAN'T BE USED) * 102071 WCS NOT LOADED CORRECTLY * 102070 RESERVED * * 1020XX ERROR HALTS * * 106077 TRAP CELL HALT * SKP * CONFIGURATOR LINKAGE TABLE A EQU 0 A REGISTER REFERENCE B EQU 1 B REGISTER REFERENCE SW EQU 1 SWITCH REGISTER REFERENCE INTP EQU 0 INTERRUPT CHANNEL REFERENCE WCS EQU 10B WCS SELECT CODE * ORG 2B * OCT 106077 DEF PERR LINK TO PARITY ERROR ROUTINE OCT 106077 JSB 3B,I GO TO PARITY ERROR ROUTINE REP 14 OCT 106077,106077,106077,106077 OCT 106077,106077 JMP 130B GO TO CONFIGURATION SECTION BSS 1 RESERVED BSS 1 CONSOLE OUTPUT DRIVER BSS 1 LINE PRINTER DRIVER BSS 1 CONSOLE INPUT DRIVER DEF FWAA FIRST WORD OF AVBL. MEMORY LWAA BSS 1 LAST WORD OF AVBL. MEMORY BSS 1 RESERVED BY CONFIGURATOR BSS 1 RESERVED BY CONFIGURATOR BSS 4 SC FOR CONFIGURATOR DRIVERS CPTO BSS 1 COMPUTER TYPE/OPTIONS USSC BSS 1 USER CARD TYPE AND SELECT CODE MEMO BSS 1 MEMORY SIZE AND TYPE BSS 1 RESERVED BSS 1 1 MILL SEC TIMER BSS 1 CONFIGURATOR SWITCH CK PTR BSS 1 INTEGER TO ASCII CONVERSION BSS 1 OCTAL TO ASCII CONVERSION BSS 1 ASCII CONVERSION DSN OCT 102006 DIAGNOSTIC SERIAL NUMBER BSS 1 FORMATTER (IN CONFIGURATOR) SKP * CONFIGURATION SECTION * CONF CLC INTP,C TURN I/O SYSTEM OFF LIA SW GET SELECT CODE AND OPTIONS STA USSC SAVE THEM AND B77 ELIMINATE OPTIONS LDB A CMB,INB CHECK THAT SC > 7 ADB B7 SSB ? JMP *+3 OK GO ON E073 HLT 73B NO JMP CONF TRY AGAIN LDB IOIP INITIALIZE TEST I/O STA SAVA SAVE SELECT CODE STB SAVB SAVE TABLE ADDRESS IOL LDB SAVB,I GET ADDRESS OF LOCATION CPB BM1 IS IT THE TERMINATOR JMP MCF YES CONTINUE LDA B,I NO - GET CONTENTS AND IOM MASK OFF OLD SELECT CODE IOR SAVA ADD IN NEW SELECT CODE STA B,I RESTORE IT ISZ SAVB MOVE TO NEXT ADDRESS JMP IOL DO IT MCF LDA CNSLO CHECK IF ALREADY MOVED SZA ?? JMP MCF0 YES SKIP RELOCATION LDA LWAA SAVE CONFIGURATOR ROUTINES AND B7777 LDB A LDA LWAA MVW MCCT LDA 102B SET CONSOLE LINK TO 4K AREA AND B7777 STA CNSLO LDA 124B AND CONVERSION PROGRAM AND B7777 STA O2AS MCF0 LDB CPTO CHECK WHICH MICROCODE TO USE SSB,RSS E072 HLT 72B WRONG COMPUTER TYPE BLF LDA MX.MC GET 21MX-M MICROCODE POINTER SLB MX-M OR MX-E? LDA MX.EC 21MX-E MICROCODE POINTER STA SAVA SAVE PONTER STA TMP LDA MXCC SET MICROCODE TRANSFER COUNT STA SAVB LDA USSC CHECK WHICH INTERFACE IT IS SSA JMP QKWCS IT'S 256 SMALL WCS SKP WCS00 CLC WCS PUT INTERFACE IN COMMAND LDA SAVA,I GET STARTING ADDRESS ISZ SAVA WCS01 OTA WCS LDA SAVA,I GET MODULE NUMBER WCS02 OTA WCS GIVE IT TO INTERFACE WCS03 STC WCS PUT INTF IN DATA MODE ISZ SAVA MOVE UP TO NEXT MICRO INSTRUCTION LDA SAVA,I WCS04 OTA WCS ISZ SAVB DONE LOADING? JMP *-4 NO LDA TMP RESTORE POINTER STA SAVA LDA MXCC STA SAVB AND COUNT WCS05 CLC WCS PUT INTF IN COMMAND STATE LDA SAVA,I GET STARTING ADDRESS ISZ SAVA WCS06 OTA WCS OUTPUT ADDRESS WCS07 STC WCS PUT INTF IN DATA STATE ISZ SAVA SKIP MODULE NUMBER WCS08 LIA WCS CPA SAVA,I IS IT ALRIGHT? JMP *+3 E071 HLT 71B NO BAD WCS INTERFACE JMP CONF START AGAIN ISZ SAVB DONE CHECKING? JMP *-7 NO JMP CFCMP CONFIGURATION COMPLETE SPC 4 QKWCS SLB,RSS IS THIS A 21MX-E? JMP *+3 YES OK E070 HLT 70B NO THEN STOP HERE JMP CONF TRY AGAIN WCS18 CLC WCS IF ERROR SET 1K TO MOD 17 17 CCA WCS19 OTA WCS WCS20 OTA WCS ISZ SAVA SKIP ADDRESS ISZ SAVA AND MODULE NUMBER SKP CLA SET STARTING ADDRESS STA HIADD QKLPW LDA HIADD GET ADDRESS ALF,ALF MOVE TO UPPER BYTE IOR SAVA,I GET LOWER BYTE FROM BUFFER ISZ SAVA MOVE TO NEXT WORD LDB SAVA,I ISZ SAVA WCS09 STF WCS SET DIRECTION (OUT) WCS10 OTA WCS OUTPUT MSB WCS11 OTB WCS AND LSB WCS12 STC WCS ENABLE DATA TO RAMS ISZ HIADD MOVE TO NEXT ADDRESS ISZ SAVB ISZ SAVB DONE LOADING? JMP QKLPW NO LDA TMP RESTORE POINTER FOR VERIFICATION INA INA STA SAVA LDA MXCC RESET COUNT STA SAVB CLA SET ADDRESS TO 0 STA HIADD QKLPR LDA HIADD GET ADDRESS ALF,ALF PUT IN UPPER BYTE WCS13 STF WCS SET DIR FF WCS14 OTA WCS OUTPUT ADDRESS WCS15 STF WCS RESET DIR FF WCS16 LIA WCS GET MSB WCS17 LIB WCS AND LSB AND B377 MASK OFF ADDRESS CPA SAVA,I FIRST OK? JMP *+3 HLT 71B BAD WCS JMP CONF TRY AGAIN ISZ SAVA MOVE TO NEXT WORD CPB SAVA,I IS IT OK? JMP *+3 HLT 71B NO JMP CONF TRY AGAIN ISZ SAVA ISZ HIADD ISZ SAVB ISZ SAVB DONE CHECKING? JMP QKLPR NO JMP CFCMP YES CONFIGURATION COMPLETE SKP * CHECK TO SUPPRESS ERROR HALTS * HLTS NOP ENTRY STA SAVA SAVE A REG STB SAVB AND B REG STX SAVX AND X REG STY SAVY AND Y REG LDB SW11 CHECK TO SUPPRESS ERROR MESSAGES JSB SWRT JMP HLTS0 YES SKIP OUTPUT LDA D21 OUTPUT TITLE LDB HLTS,I GET MESSAGE POINTER ISZ HLTS SKIP OVER POINTER JSB CNSLO,I LDA HLTS,I GET HALT CODE ISZ HLTS IOR SFTER SOFT ERROR FLAG STA HLT CLE CONVERT NUMBERS LDA SAVA LDB DACT JSB O2AS,I DATA READ CLE LDA SAVB LDB DEXP JSB O2AS,I DATA WRITTEN LDA SAVX ELA,CLE,ERA CLEAR BIT 15 LDB DADD CLE JSB O2AS,I DATA ADDRESS LDA SAVY ELA,CLE,ERA CLEAR BIT 15 LDB DPTAD CLE JSB O2AS,I TEST PAT ADD CCE LDA MOD GET MODULE NO. LDB DMOD JSB O2AS,I CONVERT MODULE NUMBER LDA MSGM+3 STA MSG2+12 STA MSG3+12 LDA MSGM+2 STA MSG2+11 STA MSG3+11 SKP LDA SFTER CHECK SOFT ER FLAG CLE,SZA CCE LDA CMSG0 GET MESSAGE COUNT ADA G.R.F ADD COUNT IF IN GAL.READ SEZ SOFT ERROR? ADA CMSG1 YES ADD COUNT LDB DMSG0 SEZ SOFT ERROR LDB DMSG1 YES GET DIFFERENT POINTER JSB CNSLO,I JMP *+3 * HLTS0 ISZ HLTS ISZ HLTS LDB SW14 CHECK SWR BIT 14 TO SUPPRESS JSB SWRT HALT JMP HLTS1 SKIP HALT INSTRUCTION JSB SWDB DEBOUNCE S-REG. LDA SAVX CONVERT ADDRESS AND B7777 CAX PUT IT IN X LDY SAVY LDA SAVA LDB SAVB HLT NOP CLA STA SFTER CLEAR SOFT ERROR FLAG HLTS1 LDA SAVA RESTORE A & B LDB SAVB LDX SAVX AND X LDY SAVY AND Y JMP HLTS,I RETURN TO CALLER * * * DACT DEF MSG0+12 DEXP DEF MSG1+12 DADD DEF MSG2+12 DPTAD DEF MSG3+12 DMOD DEF *+1 MSGM ASC 4,XXXXXXX CMSG0 DEC 96 CMSG1 DEC 12 DMSG0 DEF MSG0-1 DMSG1 DEF *+1 ASC 06, SOFT ERROR OCT 6412 MSG0 ASC 15,ACTUAL DATA (READ) XXXXXX OCT 6412 MSG1 ASC 15,EXPECTED DATA (WRITTEN) XXXXXX OCT 6412 MSG2 ASC 15,ADDR OF DATA FAILURE YYY ZZZZ OCT 6412 MSG3 ASC 15,TEST CELL ADDRESS YYY ZZZZ SKP * SWITCH REGISTER CHECK * SWRT NOP STA SWRTA SAVE A REGISTER LIA SW GET SWITCH REG. AND B MASK OUT BIT SZA,RSS IS IT UP? ISZ SWRT NO LDA SWRTA RESTORE A REGISTER LIB SW LET B = SWITCH REGISTER JMP SWRT,I RETURN TO CALLER * SWRTA NOP * * SWDB NOP STA SWDBA SAVE A-REG. STB SWDBB SAVE B-REG. SWDB0 LDA SWDBC SET LOOP COUNT STA SWRT LIB SW GET CURRENT S-REG. LDA B CMA OTA SW LIA SW OTB SW CMA CPA B ANY BUTTONS HELD? RSS NO JMP SWDB0 YES WAIT FOR RELEASE ISZ SWRT WAITED LONG ENOUGH? JMP SWDB0+2 NO CHECK AGAIN LDA SWDBA RESTORE A-REG. LDB SWDBB RESTORE B-REG. JMP SWDB,I RETURN * SWDBA NOP SWDBB NOP SWDBC DEC -100 SKP TSTR NOP LDA TSTR,I GET MACRO INSTRUCTION TO BE EXECUTED STA MACRO ISZ TSTR LDA TSTR,I GET MESSAGE POINTER STA TSTMS ISZ TSTR LDA TSTR,I GET HALT CODE STA TSTEX ISZ TSTR LDA LOADD GET STARING ADDRESS CAX PUT IT IN X LDA HIADD AND ENDING ADDRESS CAY PUT IT IN Y LDB BG GET BACKGROUND LDA TP AND TEST PATTERN IF APP WCSSF STF WCS TURN ON WCS MACRO NOP WCSCF CLF WCS TURN OFF WCS STA SAVA SAVE ACTUAL DATA CXA PUT X REG IN TO A REG SSA IS THIS AN ERROR? JMP TSTER YES CYA PUT Y REG IN A REG SSA,RSS IS THIS OPERATOR INTERRUPT? JMP TSTR,I NO THEN COMPLETE TSTRN LIA SW ABORT? ALF,ALF RAR,SLA JMP .USR,I YES CXA CLEAR BIT 15 IN X REG ELA,CLE,ERA CAX STA SAVA CYA NOW DO THE Y REG ELA,CLE,ERA CAY CPA HIADD LAST ADDRESS XOR SAVA SZA,RSS ? JMP TSTR,I YES LDA MACRO CHECH IF GAL READ REENTER CPA MACGL ?? LDA MACGR YES GET DIFFERENT MACRO STA MACRO CPA MACGR IS THIS A RETURN TO GAL.READ? RSS YES DONT UPDATE X REG ISX UPDATE X-REG. JMP MACRO-1 CONTINUE EXECUTION * TSTER LDA SAVA RESTORE A REGISTER JSB HLTS REPORT ERROR TSTMS NOP TSTEX NOP SET TO ERROR HALT JMP TSTRN CONTINUE SKP * PARITY INTERRUPT ROUTINE * PERR NOP STA PERRS SAVE A REGISTER LIA 5B GET VIOLATION ADDRESS SSA IS THIS A PARITY ERROR JMP *+3 E067 HLT 67B NO JMP PEREX JUST SKIP IT ELA,CLE,ERA CPA PERRA SAME ERROR? JMP PERR0 YES STA PERRA NO SAVE ADDRESS LDA PERR SAVE RETURN ADDRESS STA PERTN CYA PUT TEST PATTERN ADDRESS IN A CPB BG IS THIS THE BACKGROUND? CXA YES GET BG ADDRESS ELA,CLE,ERA CLEAR BIT 15 (IF NECESSARY) CPA PERRA DOES ADDRESS AGREE WITH TEST ADDRESS JMP *+4 YES LDA PERRA GET PARITY ERROR ADDRESS E066 HLT 66B TELL OPERATOR JMP *-1 NOT RECOVERABLE STB A,I TRY STORING IT AGAIN STF 5B ENABLE PERR AGAIN LDA A,I READ IT AGAIN LDA SW11 SET SOFT ERROR FLAG STA SFTER * PERR0 LDA PERRS GET ORIGINAL ERROR DATA CPA B IS IT DATA OR PARITY CHIP RSS JMP PEREX DATA ERROR CONTINUE JSB HLTS DEF EM65 E065 HLT 65B PARITY CHIP CXA CLEAR ERROR BIT IN X ELA,CLE,ERA CAX CYA ADD BIT TO Y IOR SW15 CAY PEREX CLA STA PERRA STF 5B ENABLE PARITY INTERRUPTS AGAIN LDA PERRS RESTORE A-REG. JMP *+1,I RETURN TO CONTINUE TESTING * PERTN NOP PERRA NOP PERRS NOP EM65 ASC 10,E065 PRTY CHIP ERROR OCT -1 SKP * SET 4K MEMORY BLOCK TO BE TESTED * ALSO SETS DMS (IF AVAILABLE) * TBLK NOP LDB SW9 CHECK FOR ABORT JSB SWRT JMP .USR,I YES ABORT SZA FIRST TIME? JMP TBLK3 NO DO NEXT BLOCK STA SYMPG CLEAR DMS FLAG LDA USADD IS USER IN MEMORY EXPANSION AND B370 SZA,RSS AREA?? JMP TBLK0 NO LDA USADD YES GET MODULE NUMBER AND B377 RAL,RAL MOVE TO BLOCK ADA BM1 MOVE BACK ONE STA SYMPG PUT IT IN SYSTEM MAP AREA JMP TBLK4 TBLK0 LDA USADD GET USER BLOCK ALF,ALF ALF AND B70K SZA,RSS IF 0 START WITH SECOND PAGE LDA B10K YES START AT 8K TBLK2 LDB A SET UPPER IOR B7777 LIMIT STA HIADD SAVE HIGH LIMIT STB LOADD AND LOW LIMIT BLF,RBL UPDATE S-REG. FOR DISPLAY RBL LDA SYMPG IN DMS? SZA LDB SYMPG-3 YES GET FIRST PAGE BRS,BRS LIA SW AND SWMM ELIMINATE OLD STATUS IOR B INCLUDE NEW OTA SW DISPLAY IT STB MOD SAVE MODULE NUMBER ISZ TBLK RETURN TO P+2 JMP TBLK,I RETURN FOR TEST SKP TBLK3 LDA USADD CHECK IF SZA,RSS ANY USER MODULES JMP *+6 NO ALF,ALF AND B377 SZA MORE THAN ONE BLOCK? CPA MOD OR END? JMP TBLK5 YES EXIT LDA MEMO DONE AND B70K ALL LDB A LDA LOADD AND B70K CPA B OF BASE MEMORY JMP *+3 YES - CHECK FOR DMS ADA B10K NO MOVE UP ONE BLOCK JMP TBLK2 NOW RETURN TBLK4 LDA USSC IS DMS PRESENT? RAL SSA,RSS ?? JMP TBLK,I NO END OF MEMORY LDA SYMPG YES IS THIS THE FIRST TIME SZA,RSS ?? LDA B37 YES SET LAST PAGE INA MOVE TO NEXT PAGE STA SYMPG-3 SET PAGE TO BE TESTED INA STA SYMPG-2 INA STA SYMPG-1 INA STA SYMPG LDA SYMT GET POINTER TO MAP TABLE SYA LOAD DMS SYSTEM MAP REGISTERS FROM TABLE CLA ZERO THE LFA BASE PAGE FENCE SJP *+2 TURN ON SYSTEM MAPS LDA B70K SET ADDRESS FOR CHECK STA LOADD LDA ALPT0 GET TEST PATTERN STA LOADD,I TRY TO STORE IT LDA B70K SET LAST PAGE FOR TEST LDB USADD SKIP CHECK IF USER SPECIFIES SZB JMP TBLK2 HE DID CLF 5B TURN OFF PAITY ERROR LDB LOADD,I GET DATA BACK STF 5B TURN PARITY CIRCUIT ON SZB WAS THERE ANY MEMORY THERE? JMP TBLK2 YES TEST IT TBLK5 LDA SYMPG CHECK TO TURN OFF DMS SZA,RSS JMP TBLK,I DJP *+2 YES SO END OF MEMORY DISABLE MAPS JMP TBLK,I RETURN SKP SYMT DEF *+1 OCT 00,01,02,03,04,05,06,07 OCT 10,11,12,13,14,15,16,17 OCT 20,21,22,23,24,25,26,27 OCT 30,31,32,33,34,35,36 SYMPG OCT 37 SKP SAVA NOP SAVB NOP SAVX NOP SAVY NOP EOLC NOP TSTA NOP SINA NOP UINA NOP STDA OCT 000077 B2 OCT 2 B3 OCT 3 B7 OCT 7 B77 OCT 77 BM1 DEC -1 BM2 DEC -2 IOM OCT 177700 SW15 OCT 100000 SW14 OCT 40000 SW13 OCT 20000 SW12 OCT 10000 SW11 OCT 4000 SW10 OCT 2000 SW9 OCT 1000 SWM9 OCT 176777 SWMM OCT 177600 TSTN NOP B10K OCT 10000 B37 OCT 37 B370 OCT 370 B377 OCT 377 B7777 OCT 7777 B70K OCT 70000 D21 DEC 21 D32 DEC 32 HIADD NOP LOADD NOP USADD NOP MOD NOP TP NOP BG NOP G.R.F NOP SFTER NOP TMP NOP MACGL OCT 105624 MACGR OCT 105627 FPMC OCT 105620 ALPT0 OCT 052525 ALPT1 OCT 125252 MX.MC DEF MX.MS MX.EC DEF MX.ES MXCC ABS MX.MS-MX.ME+2 MCCT ABS 10000B-6477B .USR DEF USR CNSLO DEF *-* O2AS DEF *-* SKP IOIP DEF *+1 DEF WCS00 DEF WCS01 DEF WCS02 DEF WCS03 DEF WCS04 DEF WCS05 DEF WCS06 DEF WCS07 DEF WCS08 DEF WCS09 DEF WCS10 DEF WCS11 DEF WCS12 DEF WCS13 DEF WCS14 DEF WCS15 DEF WCS16 DEF WCS17 DEF WCS18 DEF WCS19 DEF WCS20 DEF WCS21 DEF WCSSF DEF WCSCF DEF W.SSF DEF W.SCF DEC -1 * TSTP DEF *+1 DEF TST00 ADDRESS AND PATTERN TEST DEF TST01 GAL.READ 052525 DEF TST02 GAL.READ 125252 DEF TST03 GAL.READ 177776 DEF TST04 GAL.READ 000001 DEF TST05 MODULE 0 TEST (FIRST 4K) DEC -1 LIST TERMINATOR