ASMB,A,B,L,C HED *** MEMORY EXPANSION MODULE DIAGNOSTIC *** ORG 0 SUP SPC 10 * ************************************************** * ************************************************** * ** ** * ** ** * ** ** * ** ** * ** MEMORY ** * ** EXPANSION ** * ** MODULE ** * ** DIAGNOSTIC ** * ** ** * ** ** * ** JULY 6, 1978 ** * ** ** * ************************************************** * ************************************************** SKP * 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 * (SUPPRESS ALL OPERATOR INTERVENTION) * 11 = SUPRESS ERROR MESSAGES * 10 = SUPRESS NON-ERROR MESSAGES * 9 = GO TO USER CONTROL SECTION * AT END OF PRESENT TEST * 8= SUPPRESS OPERATOR INTERVENTION TESTS * 7 * = DIAGNOSTIC OPTIONS * 0 * NOTE: STANDARD RUN SHOULD BE WITH SW. REG. = 0 * USER CONTROL WILL ASK FOR A 32 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 * * GENERAL COMPUTER HALTS * * 1020XX E OR H 000 TO 067 * 1060XX E OR H 100 TO 167 * 1030XX E OR H 200 TO 267 * 1070XX E OR H 300 TO 367 * * CONTROL PROGRAM HALT MESSAGES * * 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 RESERVED * 102071 RESERVED * 102070 RESERVED * * 106077 TRAP CELL HALT * * * HED 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 MEMSC EQU 5 DVICE EQU 0 SPC 1 ORG 100B SPC 1 JMP CFIG,I GO TO CONFIGURATION SECTION FAIN BSS 1 FAST INPUT (PHOTO READER) SLOP BSS 1 SLOW OUTPUT (LIST) FAOP BSS 1 FAST OUTPUT (DUMP OR PUNCH) SLIN BSS 1 SLOW INPUT (KEYBOARD) FWAM DEF FWAA FIRST WORD OF AVBL. MEMORY LWAM BSS 1 LAST WORD OF AVBL. MEMORY BSS 1 NOT USED (MAG TAPE) OTMC 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 ISWR BSS 1 INTERNAL SWITCH REGISTER TMRR BSS 1 1 MILL SEC TIMER SWRC 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 DSNL OCT 102103 FMTR BSS 1 FORMATTER SPC 1 * CONTROL LINKAGE AND DATA REFERENCES SPC 1 CFIG DEF ZCONF CONFIGURATION SECTION MSGC DEF ZMSGC MESSAGE WITH NO HALT MSGH DEF ZMSGH MESSAGE WITH HALT ERMS DEF ZERMS ERROR MESSAGE SWRT DEF ZSWRT SWITCH REGISTER CHECK ROUTINE TSTN OCT 0 CURRENT TEST NUMBER EXRT DEF ZEXRT RETURN TO CONTROL PROGRAM NOP RESERVED SPC 1 * TABLE OF POINTERS SPC 1 IOIP DEF IODP TSTP DEF TSTD HDMP DEF HDMS HDMP1 DEF HDMS+21 MSP23 DEF H327+2 STDA OCT -1 STDB OCT 7 NOP NOP NOP HED *** MEM DIAGNOSTIC LINKAGE SPC 1 HDMS ASC 25,MEMORY EXPANSION MODULE DIAGNOSTIC, DSN = XXXXXX/ SPC 2 * TEST POINTER TABLE SPC 3 TSTD DEF TST00 TRANSFER MAP OR MEMORY A 0 DEF TST01 TRANSFER MAP SEQUENTIALLY A 1 DEF TST02 TRANSFER MAPS INTERNALLY A 2 DEF TST03 LOAD/STORE MAPS A 3 DEF TST04 STATUS - FENCE REGISTER A 4 DEF TST05 CROSS LOAD/STORE/COMPARE A 5 DEF TST06 MOVE WORDS INSTRUCTIONS A 6 DEF TST07 MOVE BYTES INSTRUCTIONS A 7 DEF TST10 PROTECTED MODE PRESET TEST A 8 DEF TST11 READ/WRITE-BP VIOLATIONS A 9 DEF TST12 WRITE VIOLATIONS A10 DEF TST13 PRIVILEGED INSTRUCTIONS 1 A11 DEF TST14 PRIVILEGED INSTRUCTIONS 2 A12 DEF TST15 DCPC PORTS ENABLE TEST A13 DEF TST16 READ VIOLATIONS A14 DEF TST17 INTERRUPTABLE INSTRUCTIONS A15 DEF TST20 DCPC INTERFERENCE TEST B 0 DEF TST21 VIOLATION REGISTER MAP BITS B 1 DEF TST22 MAP-LOAD REGISTER INCREMENT B 2 DEF TST23 EXTENDED MEMORY TEST B 3 DEF TST24 BASIC I/O (TCP) B 4 DEF TST25 MAP REGISTER CRUSHER B 5 DEC -1 SKP * I/O INSTRUCTION POINTER TABLE SPC 2 IODP DEF EIO01 DEF EIO02 DEF EIO03 DEF EIO04 DEF EIO4A DEF EIO05 DEF EIO06 DEF EIO07 DEF EIO08 DEF EIO09 DEF EIO10 DEF DVSC1 DEF DMACW DEF RDVC1 DEF NNIO1 DEF NNIO2 DEF NNIO4 DEF NNIO5 DEF JIO01 DEF PIO01 DEF PIO02 DEF PIO03 DEF PIO04 DEF QQIO1 DEF PTBCW DEC -1 SPC 3 * LINK ADDRESSES SPC 1 ADLNK OCT 0 M5LNK OCT 0 HED MEM/MPT VIOLATION CHECK SUBROUTINES RDVCK NOP SFC MEMSC JMP *+5 LDY RDVCK JSB ERMS,I DEF E120 RVA SSA CHECK TO SEE THAT IT WAS JMP RDVCK,I A READ VIOLATION ISZ RDVCK JMP RDVCK,I SPC 1 WTVCK NOP SFC MEMSC JMP *+5 LDY WTVCK JSB ERMS,I DEF E121 RVA AND BIT14 SZA JMP WTVCK,I ISZ WTVCK JMP WTVCK,I SPC 1 PIVCK NOP SFC MEMSC MEMV? JMP *+5 LDY PIVCK JSB ERMS,I DEF E300 RVA GET THE VIOLATION REGISTER AND BIT12 AND MAKE SURE CPA BIT12 THAT THE PRIV. INST BIT IS SET JMP PIVCK,I OK, USE CORRECT EXIT ISZ PIVCK NOT SET, USE THE JMP PIVCK,I ERROR EXIT SPC 3 E120 ASC 13,E120 RDV - MPT VIOLATION/ E121 ASC 13,E121 WTV - MPT VIOLATION/ E300 ASC 13,E300 PIV - MPT VIOLATION/ HED *** MEM DIAGNOSTIC - MAPS LOADER LODUP NOP CLA MAKE A SEQUENCE JSB MKSTB TABLE LDA LTPTB AND LDB A LOAD THE USA USER AND SYB SYSTEM MAPS LDA OCT10 NOW PUT LDB .STB. THE SPECIAL LDX OCT05 TABLE VALUES XMM IN THE SYSTEM LDA OCT50 AND THE LDB .UTB. SPECIAL LDX OCT05 VALUES XMM IN THE USER JMP LODUP,I SPC 1 .STB. DEF *+1 OCT 11,13,14,15,16 .UTB. DEF *+1 OCT 10,12,14,15,16 SPC 2 JLOAD NOP JSB LODUP LDA OCT10 LDB .JLS. LDX OCT05 XMM LDA OCT50 LDB .JLS. LDX OCT05 XMM JMP JLOAD,I SPC 2 .JLS. DEF *+1 OCT 100010,040011,140012,13,14 HED REGISTER SAVE ROUTINES RGSVE NOP STA SVPD1 SAVE THE REGISTERS STB SVPD2 FOR STX SVPD3 ERROR STY SVPD4 REPORTING JMP RGSVE,I SPC 3 RGRS1 NOP LDA SVPD1 RESTORE THE REGISTERS LDB SVPD2 FOR ERROR REPORTING JMP RGRS1,I EXIT SPC 3 RGRS2 NOP LDX SVPD3 RESTORE LDY SVPD4 X AND Y JMP RGRS2,I SPC 3 RGRST NOP JSB RGRS1 RESTORE JSB RGRS2 ALL JMP RGRST,I REGISTERS SPC 3 SVPD1 OCT 0 SVPD2 OCT 0 SVPD3 OCT 0 SVPD4 OCT 0 HED *** MEM DIAGNOSTIC - COMMON SUBROUTINES XMMSY NOP ******************************** CLA * * LDB LTSYS * LOAD THE PATTERN FOUND IN * LDX OCT40 * LTSYS INTO THE SYSTEM MAP * XMM * * JMP XMMSY,I ******************************** SPC 3 XMMUS NOP ******************************** LDA OCT40 * * LDB LTUSR * LOAD THE PATTERN FOUND IN * LDX OCT40 * LTUSR INTO THE USER MAP * XMM * * JMP XMMUS,I ******************************** SPC 3 P1XMM NOP ******************************** LDA OC100 * * LDB RTPTA * READ THE CONTENTS OF THE * LDX NON40 * PORT A MAP INTO RTPT1 * XMM * * JMP P1XMM,I ******************************** SPC 3 P2XMM NOP ******************************** LDA OC140 * * LDB RTPTB * READ THE CONTENTS OF THE * LDX NON40 * PORT B MAP INTO RTPT2 * XMM * * JMP P2XMM,I ******************************** SPC 3 PMON NOP CLC INTP,C PROHIBIT INTPS BEFORE WERE READY STF INTP PLACE THE SJP *+2 MEM IN ITS STC MEMSC PROTECTED JMP PMON,I MODE W/SYSTEM ENABLED SPC 2 PMONU NOP CLC INTP,C PROHIBIT INTPS BEFORE WE ARE READY STF INTP PLACE THE UJP *+2 MEM IN ITS STC MEMSC PROTECTED JMP PMONU,I MODE W/THE USER ENABLED SKP ZORCH NOP LDA MPJSB WRITE OVER STA MEMSC TCP'S SELECT LDA DVJSB CODE HALT-FILL DVSC1 STA DVICE ROUTINES JMP ZORCH,I AND EXIT SPC 1 MPJSB JSB M5LNK,I DVJSB JSB ADLNK,I SPC 2 CAINT NOP CLF INTP CAUSE AN INTRRUPT EIO06 STF DVICE ON THE DEVICE EIO07 STC DVICE CONFIGURED AT STF INTP START-UP TIME NOP WAIT FOR INTERRUPT NOP WAIT FOR INTERRUPT JSB ERMS,I NO INTERRUPT HAS DEF E066 OCCURRED, REPORT TO OPERATOR JMP CAINT,I THEN EXIT SPC 2 TRNOF NOP CLF INTP OFF THE INTERRUPT DJP *+2 AND MEM JMP TRNOF,I SPC 1 KFNCE NOP LDA OC100 MADE THE M.E.M. AND LFA M.P.T. FENCE REGISTER OTA MEMSC VALUES OCTAL 100 JMP KFNCE,I EXIT SPC 1 OFFPM NOP LDA KERR1 PUT RECOVERY ROUTINE'S STA M5LNK ADDRESS IN THE LINK STA MEMSC CAUSE THE INTERRUPT NOP KERRA NOP TO HERE, JSB TRNOF OFF MEM AND INTP JMP OFFPM,I AND EXIT SPC 1 KERR1 DEF KERRA SKP LTZRO NOP CLA ZERO CLB THE JSB MKTBL LOAD MAP OCT 074000 TABLE JMP LTZRO,I SPC 3 RDZRO NOP CLA ZERO CLB THE JSB MKTBL READ MAP OCT 174000 TABLE JMP RDZRO,I EXIT SPC 3 LTONE NOP CCA LOAD THE LOAD CCB TABLE WITH ALL JSB MKTBL ONES AND OCT 074000 JMP LTONE,I EXIT SPC 3 CLTBL NOP JSB LTZRO ZERO BOTH JSB RDZRO TABLES JMP CLTBL,I SPC 2 BIT12 OCT 10000 BIT14 OCT 40000 SKP TBCMP NOP STA MKTB1 SAVE THE DATA PATTERN STB MKTB2 ADDRESSES FOR POINTERS LDA RTSYS CALCULATE THE CMA,INA STARTING REGISTER ADA MKTB2 AND PUT IN STA REGNR REGNR LDY NON40 XTHRU = 40 TBCM. LDA MAPSK MASK OFF AND AND MKTB2,I STORE THE READ TABLE STA B PATTERN LDA MAPSK DO THE SAME TO AND MKTB1,I LOAD TABLE PATTERN CPA B SAME PATTERN? JMP *+3 YES, OVER THE ERROR JMP TBCMP,I NO, USE ERROR EXIT TCPHR NOP RETURN CONTINUATOR ISZ REGNR BUMP THE REGISTER NUMBER ISZ MKTB1 THE LOAD TABLE POINTER ISZ MKTB2 THE READ TABLE POINTER ISY AND THRU? JMP TBCM. NO XTHRU YET, DO ANOTHER ISZ TBCMP XTHRU COMPLETE, SET UP FOR JMP TBCMP,I RETURN AND EXIT. SPC 1 MASKO OCT 100000 BIT STRIPPER MASK7 OCT 7 REGNR OCT 0 MAPSK OCT 141777 SKP MKTBL NOP STA MKTB1 PLACE PATTERNS STB MKTB2 IN SAVE SCRATCH PADS LDA MKTBL,I GET AND STORE STA MKPD1 THE COMMAND WORD ISZ MKTBL UPDATE THE RETURN ADDRESS SSA WHICH TABLE? JSB GTRTA GO GET READ TABLE ADDRESS LDA LTSYS OR GET LOAD TABLE ADDRESS STA ADCAL STORE IN ADDRESS CALC. STA MKPNT SET UP POINTER FOR MARK LDA MKPD1 GET THE COMMAND WORD AND SYTBC WANT TO DO SZA THE SYSTEM MAP TABLE? JSB MAKR YES LDA ADCAL GET AND UPDATE ADA OCT40 THE TABLE POINTER STA MKPNT FOR NEXT TIME THRU MAKR LDA MKPD1 GET THE COMMAND WORD AND USTBC WANT TO DO SZA THE USER MAP TABLE? JSB MAKR YES LDA ADCAL GET AND UPDATE ADA OC100 THE TABLE POINTER STA MKPNT FOR NEXT TIME THRU MAKR LDA MKPD1 GET THE COMMAND WORD AND P1TBC WANT TO DO THE SZA PORT1 MAP TABLE? JSB MAKR YES LDA ADCAL GET AND UPDATE ADA OC140 THE TABLE POINTER STA MKPNT FOR NEXT TIME THRU MAKR LDA MKPD1 GET THE COMMAND WORD AND P2TBC WANT TO DO THE SZA PORT2 MAP TABLE? ?y JSB MAKR YES JMP MKTBL,I EXIT SPC 1 MKPD1 OCT 0 MAKE TABLE SCRATCH PAD REGISTER ADCAL OCT 0 ADDRESS CALCULATION REGISTER SYTBC OCT 40000 SYSTEM MAP TABLE CODE USTBC OCT 20000 USER MAP TABLE CODE P1TBC OCT 10000 PORT 1 MAP TABLE CODE P2TBC OCT 4000 PORT 2 MAP TABLE CODE MKTB1 OCT 0 MKTB2 OCT 0 SKP GTRTA NOP LDA RTSYS GET THE READ TABLE ADDRESS ISZ GTRTA SKIP OVER THE LOAD TABLE ADDRESS JMP GTRTA,I AND RETURN SPC 3 MAKR NOP LDY NON20 INITIALIZE THE XTHRU LDA MKTB1 GET PATTERNS LDB MKTB2 ONE AND TWO STMPT STA MKPNT,I PLACE THE ISZ MKPNT PATTERNS STB MKPNT,I INTO THE ISZ MKPNT TABLE ISY XTHRU? JMP STMPT DO AGAIN JMP MAKR,I XTHRU COMPLETE, EXIT SPC 1 MKPNT OCT 0 ADDRESS POINTER PTRN1 OCT 125252 PTRN2 OCT 052525 SPC 4 LDTBL BSS 128 LOAD TABLE ***** LTSYS DEF LDTBL LTUSR DEF LDTBL+32 LTPTA DEF LDTBL+64 LTPTB DEF LDTBL+96 LTBSU DEF LDTBL+26 LTBUA DEF LDTBL+58 LTBAB DEF LDTBL+90 SPC 1 RDTBL BSS 128 READ TABLE ***** RTSYS DEF RDTBL RTUSR DEF RDTBL+32 RTPTA DEF RDTBL+64 RTPTB DEF RDTBL+96 RTBSU DEF RDTBL+26 RTBUA DEF RDTBL+58 RTBAB DEF RDTBL+90 SKP MKSTB NOP MAKE THE SEQUENCE TABLE LDB NON40 INITIALIZE STB MKST2 XTHRU COUNTER LDB LTPTB INITIALIZE STB MKST1 ADDRESS POINTER .MKST STA MKST1,I LOAD UP INA THE SEQUENCE ISZ MKST1 TABLE ISZ MKST2 FINISHED? JMP .MKST NO, DO AGAIN JMP MKSTB,I YES, EXIT SPC 1 MKST2 OCT 0 MKST1 OCT 0 SPC 3 SQALL NOP LDA NO177 STA SQAL1 XTHRU LDA LTSYS INITIALIZE STA SQAL2 ADDRESS POINTER CLA START W/ ZERO .SQAL STA SQAL2,I AND SEQUENTIALLY INA BUILD A ISZ SQAL2 COMPARE ISZ SQAL1 TABLE JMP .SQAL AND JMP SQALL,I EXIT SPC 1 SQAL1 OCT 0 SQAL2 OCT 0 HED PAGE ZERO CONSTANTS OCT01 OCT 01 OCT02 OCT 02 OCT03 OCT 03 OCT04 OCT 04 OCT05 OCT 05 OCT06 OCT 06 OCT10 OCT 10 OCT11 OCT 11 OCT12 OCT 12 OCT14 OCT 14 OCT15 OCT 15 OCT30 OCT 30 OCT33 OCT 33 OCT37 OCT 37 OCT40 OCT 40 OCT50 OCT 50 OCT73 OCT 73 OC100 OCT 100 OC140 OCT 140 OC177 OCT 200 OCT1K OCT 1000 OCT2K OCT 2000 FOURK OCT 4000 OC10K OCT 10000 TWNTK OCT 20000 TWN1K OCT 21000 TWN2K OCT 22000 TWN3K OCT 23000 TWN4K OCT 24000 TWN6K OCT 26000 TWN7K OCT 27000 THR2K OCT 32000 FORTK OCT 40000 FOR2K OCT 42000 FOR4K OCT 44000 FOR6K OCT 46000 OCTWO OCT 02 SPC 2 NEG01 OCT -1 NEG02 OCT -2 NEG03 OCT -3 NON05 OCT -5 NDN08 DEC -8