ASMB,A,B,L,C HED 2100 SERIES COMPUTER POWER FAIL DIAGNOSTIC ORG 100B * ******************************************************************** * * * DIAGNOSTIC CHECKS POWER FAIL/RESTART OPERATION * * DIAGNOSTIC ASSUMES THE FOLLOWING TESTS HAVE BEEN RUN * * MEMORY REFERENCE GROUP DSN 101R00 * ALTER-SKIP GROUP DSN 101R01 * SHIFT-ROTATE GROUP DSN 101R02 * MEMORY DSN 102R00 * CONSOLE DEVICE (IF USED) * * RUNS IN 4K MEMORY * * TELETYPE MAY BE USED BUT NOT REQUIRED * * DIAGNOSTIC CONFIGURATOR IS REQUIRED * * DIAGNOSTIC SERIAL NO(DSN) 101206 * * OPERATING INSTRUCTIONS: * * 1. LOAD AND CONFIGURE DIAGNOSTIC CONFIGURATOR. * * 2. LOAD POWER FAIL DIAGNOSTIC. * * 3. SET P REGISTER = 100. * * 4. SELECT PROGRAM OPTIONS IN SWITCH REGISTER. * * 5. PRESS PRESET(INT. & EXT. IF PRESENT) AND RUN. * SKP *************** SWITCH REGISTER OPTIONS *************************** * * BIT MEANING * * 0-7 PROGRAM COUNT (2114 & LATER) * 8 RESERVED * 9 RESERVED * 10 SUPRESS NON ERROR MESSAGES * 11 SUPRESS ERROR MESSAGES * 12 LOOP ON DIAGNOSTIC.CLEAR TO HALT 102077 AND * PRINT OUT PASS COUNT * 13 RESERVED * 14 SUPPRESS ERROR HALTS * 15 HALT PROGRAM (102076) * * *************** COMPUTER HALTS ************************************* * * HALT MEANING * * 1060XX UNEXPECTED TRAP CELL HALT * 102001 COMPUTER TYPE IN ADDRESS 115 INCORRECT.RECONFIGURE * DIAGNOSTIC CONFIGURATOR * 102002 MEMORY LOC ERROR A = ADDRESS;B = CONTENTS * 102003 SHUTDOWN TIME ERROR A = EXP COUNT; B = ACT COUNT * 102005 NO PWR FAIL INTERRUPT * 102006 PWR DID NOT GO DOWN AFTER PWR FAIL * 102007 B REG ERROR A = EXP VALUE; B = ACT VALUE * 102076 SWR BIT 15 HALTED BACKGROUND ROUTINE * 102077 END OF PASS. A REGISTER = PASS COUNT * * ******************************************************************* * ************** POWER FAIL DELAY TIME ******************************* * * COMPUTER DELAY OVERHD LOOP LOOP TEST * TYPE TIME TIME TIME COUNT TIME * (MSEC) (USEC) (USEC) (MSEC) * * 2116 >1.4 32 11.2 90 1.040 * 2115 >1.4 40 14.0 70 1.020 * 2114 >1.4 40 14.0 70 1.020 * 2100 >0.5 25 9.8 45 .466 * 21MX M >0.5 29 12.64 35 .474 * 21MX E >0.5 22 12.64 50 .474 * * ******************************************************************** SKP JMP ISTRT,I OPERATOR START LOCATION SPC 1 ************* CONFIGURATOR AREA ************************************ * TTY.I BSS 1 TAPE INPUT TTY.O BSS 1 LIST OUTPUT TTY.P BSS 1 PUNCH OUTPUT TTY.K BSS 1 KEYBOARD INPUT FWAMI DEF FWAM FIRST WORD AVAILABLE MEMORY LWAM BSS 1 LAST WORD AVAILABLE MEMORY ORG 126B OCT 101206 DIAGNOSTIC SERIAL NUMBER LOSC EQU 112B CTO EQU 115B MSIZE EQU 117B ******************************************************************** * SPC 3 ORG 130B JMP IRSTR,I OPERATOR RESTART LOCATION NOP NOP ERTRN DEF PS,I RETURN LOCATION FERC ABS -FER FER DEF *+1 ERROR NUMBER TABLE DEF H0 NOP DEF E2 DEF E3 DEF H4 DEF E5 NOP DEF E7 LER DEF * SPC 2 FMI DEF *+1 MESSAGE ADDRESS TABLE DEF M0 NOP DEF M2 DEF M3 DEF M4 DEF M5 NOP DEF M7 SPC 2 FML DEF *+1 MESSAGE LENGTH TABLE DEF L0 NOP DEF L2 DEF L3 DEF L4 DEF L5 NOP DEF L7 SPC 2 A EQU 0 A REGISTER B EQU 1 B REG SWR EQU 1 SWITCH REGISTER SPC 2 AL OCT 0 AS OCT 0 BS OCT 0 CNVR OCT 0 VALUE TO BE REPORTED AT E3 COUNT OCT 0 VALUE OF B REGISTER CVT1 OCT 0 CVT2 OCT 0 CVT3 OCT 0 CYCLE OCT 0 TOTAL NUMBER OF CYCLES ELOC OCT 0 LCYCL OCT 0 LAST CYCLE COUNT OUTPUT LOCAL OCT 0 LP11 BSS 1 LOOP COUNT SAVE P4 OCT 0 P5 OCT 0 PS OCT 0 PSAVE OCT 0 SS OCT 0 SWBGN OCT 0 TEMP4 OCT 0 TEMP5 OCT 0 B2 DEC 2 B4 DEC 4 D7 DEC 7 D10 DEC 10 B16 DEC 14 B77 DEC 63 B100 DEC 64 D100 DEC 100 B377 DEC 255 D1000 DEC 1000 B3407 OCT 3407 MM1 DEC -1 MM12 OCT -12 MM10 DEC -10 MM100 DEC -100 M1000 DEC -1000 ASCZZ ASC 1,00 BIT8 OCT 400 BIT11 OCT 4000 BIT12 OCT 10000 BIT13 OCT 20000 BIT14 OCT 40000 CRLFI DEF *+1 OCT 006412 CR,LF P7400 OCT 177400 P7700 OCT 177700 THLT OCT 106002 TRAP CELL HALT BKI DEF BKGND IRSTR DEF RST ISTRT DEF START P002A DEF JP02A P002B DEF JP02B P003A DEF JP03A P003B DEF JP03B P004A DEF JP04A P007A DEF JP07A P007B DEF JP07B P1 DEF ST1 P2 DEF SAVE P3 DEF SAVE1 PFI JSB POWER,I FOR LOCATION 4 PFMI DEF FMI PFML DEF FML POWER DEF PWRFL * MEMAX OCT 0 MSMK OCT 70000 MSINC OCT 6477 TSV1 OCT 0 TSV2 OCT 0 CTM OCT 17 CTOS OCT 0 SKP OTBLS OCT 0 OTBLD DEF * POINTER TO TBL OF OVERHEAD TIME DEC 32 2116A DEC 32 2116B DEC 32 2116C DEC 40 2115A DEC 40 2114A DEC 40 2114B DEC 25 2100A DEC 29 21MX M DEC 22 LTBLS OCT 0 LTBLD DEF * POINTER TO TBL OF LOOP TIMES LTBL DEC 11 2116A DEC 11 2116B DEC 11 2116C DEC 14 2115A DEC 14 2114A DEC 14 2114B DEC 10 2100A DEC 13 21MX M DEC 11 21MX E CTBLS OCT 0 CTBLD DEF * POINTER TO TBL OF TIMER COUNTS CTBL DEC 90 2116A DEC 90 2116B DEC 90 2116C DEC 70 2115A DEC 70 2114A DEC 70 2114B DEC 45 2100A DEC 35 21MX M DEC 50 21MX E HED START * START SPC 1 * CALCULATES CORE SIZE AND FILLS EACH UNUSED * CORE LOCATION WITH THE ADDRESS OF THE CORE LOCATION * USES B10CK,TTY.O,ERR SPC 1 START CLC 0,C TURN EVERYTHING OFF LDB PFI INITIALIZE STB 4B POWER FAIL INTERRUPT LDA MSIZE AND MSMK FORM LWAM ADA MSINC STA MEMAX LDA CTO FORM ALF INDEX FOR AND CTM TABLE STA CTOS LOOK-UP ADA MM12 CHECK FOR CORRECT SSA,RSS COMPUTER TYPE JMP ERR1 WRONG TYPE-E1 LDA CTBLD ADA CTOS LDA A,I STA CTBLS LDA OTBLD FORM ADA CTOS POINTER TO STA OTBLS COMPUTER OVERHEAD TIME LDA LTBLD FORM ADA CTOS POINTER TO STA LTBLS COMPUTER LOOP TIME LDA LOSC STA SWBGN SWITCH REGISTER AT BEGINNING JSB B10CK IS TTY SUPPRESSED? JMP ST3-1 CLA H0 JSB PRINT PRINT INTRO MESSAGE LDB FWAMI INITIALIZE B TO FIRST AVAIL CORE ST3 STB B,I FILL CORE WITH ITS ADDRESS INB MOVE TO NEXT CORE LOCATION CPB MEMAX DONE ? RSS YES JMP ST3 NO CLA ZERO B-REGISTER STA COUNT COUNTER STA CYCLE STA LCYCL LDB B2 TRAP CELL LOCATION LDA THLT TRAP CELL HALT ST2 STA B,I INB INA CPB B100 TRAP CELL HALTS COMPLETE? RSS YES JMP ST2 NO,REPEAT LDB PFI INITIALIZE STB 4B POWER FAIL INTERRUPT HED BKGND SPC 1 * BKGND * THIS PROGRAM INCREMENTS THE B-REGISTER TWO OR * THREE TIMES EACH SECOND AND VERIFIES THE * CONTENTS OF ALL UNUSED CORE MEMORY ONCE EACH * INCREMENT * USES DATA,B10CK,ERR,TTY.O,SWR SPC 1 BKGND LDB COUNT INCREMENT INB B-REGISTER LDA B LIMIT AND B377 COUNT LDB A TO BITS 0-7 STB COUNT LIA SWR AND P7400 USE COUNT IOR COUNT FOR RIGHT HALF OTA SWR STA SS SAVE S-REGISTER LDA FWAMI INITIALIZE MEMORY CHECK MORE CPA A,I CHECK FOR ERROR RSS OK JMP ERR2 REPORT ERROR INA ADVANCE A CPA MEMAX DONE ? JMP WAIT YES JMP MORE NO ERR2 STA LOCAL SAVE LOCATION STA TSV1 SAVE ERROR DATA LDB P002A ADDRESS JSB CNWRT LDA LOCAL,I CONTENTS STA TSV2 SAVE ERROR DATA LDB P002B JSB CNWRT E2 JSB ERROR CHANGED CORE,ADDRESS = XXXXXX * CONTENTS = YYYYYY LDA LOCAL RESTORE STA A,I CORE JMP BKGND WAIT LDB COUNT LIA SWR AND P7400 USE COUNT IOR COUNT FOR RIGHT HALF OTA SWR STA SS SAVE SWR CLA INA,SZA JMP *-1 CPB COUNT IS B EQUAL TO COUNT? JMP JOK YES LDA B NO,CONVERT STA TSV1 SAVE ERROR DATA LDB P007A B-REGISTER JSB CNWRT AND LDA COUNT COUNT STA TSV2 SAVE ERROR DATA LDB P007B TO JSB CNWRT ASCII E7 JSB ERROR B-REGISTER NOT EQUAL TO COUNT, * B = XXXXXX COUNT = XXXXXX JOK LIA SWR SSA JMP PHLT+5 ALLOW FOR ORDERLY HALT AND BIT12 SZA HALT & PRINT PASS COUNT? JMP BKGND NO LDA CYCLE YES.WAS COUNT DONE THIS CYCLE? CPA LCYCL JMP BKGND YES STA LCYCL NO,OUTPUT MESSAGE JSB B10CK TTY SUPPRESSED? JMP H4+1 YES.GO HALT LDB P004A LDA CYCLE JSB DCIN2 SET UP MESSAGE LDA B4 H4 JSB PRINT THERE HAVE BEEN XXXX TESTS OF LDA CYCLE A = # OF PASSES HLT 77B JMP BKGND RETURN AFTER PRINTOUT * THE POWER FAIL OPTION PHLT LIA SWR RAL AND BIT11 POSITION BIT 10 SZA SUPPRESS HALT ? JMP BKGND YES LDA CYCLE HLT 76B A = # OF PASSES JMP BKGND HED PWRFL SPC 1 * PWRFL * THIS ROUTINE CALLS RSTRT IF POWER IS BEING RESTORED. * IF POWER IS FAILING,THIS ROUTINE SAVES REGISTERS AND * ESTIMATES TIME BEFORE POWER IS OFF. SPC 1 PWRFL NOP SFC 4 SKIP IF POWER IS FAILING JMP RSTRT STA AS SAVE A-REG CCA COMPUTER STA AL IS RUNNING STB BS SAVE B-REG LDA PWRFL SAVE STA PS P-REGISTER LIA SWR STA SS S-REGISTER CLA STA LP11 ST1 INA COUNTER STA LP11 FOR NOP FORMING CPA CTBLS POWER FAIL JMP *+2 DELAY JMP ST1 CLC 4 SET UP FOR RESTART HLT 6 SAVE1 JMP *-1 IN CASE OPERATOR HITS RUN SAVE INA TIMER STA LP11 IMAGE NOP USED TO RESTORE CPA CTBLS PWRFL TIMER IN JMP *+2 CASE POWER DROPS JMP ST1 OUT IN LESS TIME CLC 4 HLT 6 HED RSTRT SPC 1 * RSTRT * THIS ROUTINE IS ENTERED THROUGH THE PWRFL ROUTINE. IT * VERIFIES PROPER OPERATION OF THE PWRFL ROUTINE AND INCREMENTS * THE CYCLE COUNT. THE LAST PART OF PWRFL AND ALL THE * ASSOCIATED COUNTERS ARE REBUILT IN CASE POWER-OFF OCCURRED * DURING A CORE-FETCH. SPC 1 LL5 LDA SS OTA SWR E5 JSB ERROR POWER FAIL ROUTINE NOT ENTERED RST LDA BKI SET UP STA PS RETURN JMP ROK RSTRT LDA AL SZA,RSS WAS PWRFL ENTERED? JMP LL5 NO CLA CLEAR STA AL FLAG LDA LP11 DID DELAY TIME OUT? CPA CTBLS JMP GOK YES,EXIT STA CNVR NO,FIND ERROR JMP CONVT SPC 3 TIME NOP CALCULATE TIME TAKEN CMA LOOP COUNT STA LOCAL LDA OTBLS,I OVERHEAD TIME TM1 ISZ LOCAL DONE? RSS NO JMP TIME,I YES ADA LTBLS,I LOOP TIME JMP TM1 SPC 3 CONVT LDA CTBLS STA TSV1 SAVE ERROR DATA JSB TIME CONVERT TO LDB P003A MICROSECONDS JSB DCIN2 LDA CNVR PROGRAM COUNT STA TSV2 SAVE ERROR DATA JSB TIME CONVERT TO LDB P003B MICROSECONDS JSB DCIN2 E3 JSB ERROR SHUTDOWN ROUTINE DID NOT * COMPLETE. SHOULD COMPLETE XXXX * MICROSECONDS, COMPLETED XXXX * MICROSECONDS GOK CLA RESET STA LP11 COUNTERS ROK LDA P2 RESTORE STA P4 LAST LDB P1 PART STB P5 OF JMORE LDA P4,I POWER STA P5,I FAIL ISZ P4 INB STB P5 CPB P3 RSS JMP JMORE ISZ CYCLE BUMP CYCLE COUNT LDA SS RESTORE OTA 1 S-REGISTER LDA AS RESTORE LDB BS A AND B STC 4 JMP ERTRN,I RETURN(TWO LEVELS OF INDIRECT) HED ERROR * ERROR * REPORT ERROR MESSAGES * THE RETURN ADDRESS IS USED TO LOOK UP THE ADDRESS, * LENGTH AND NUMBER OF THE ERROR MESSAGE * USES SWR,B11CK,TTY.O SPC 2 ERROR NOP CLF 0 DISABLE INTERRUPTS CCB ADB ERROR LDA FER FIND ERROR NUMBER BASED ON RETRN ER2 EQU * CPB A,I ADDRESS AND TABLE JMP ER1 FOUND IT INA CPA LER TERMINATE IF PROGRAMMER ERRED JMP 100B PROGRAM ERROR,PAGE 0 MAY BE * WIPED OUT JMP ER2 CONTINUE SEARCH ER1 EQU * ADA FERC NORMALIZE NUMBER ADA MM1 STA ELOC JSB PRINT PRINT MESSAGE JSB B11CK TTY AVAILABLE JMP ERH1 NO CLA JSB TTY.O,I PRINT BLANK LINE ERH1 LIA SWR AND BIT14 SZA HALT? JMP ERROR,I NO LDA ERH2 YES AND P7700 BUILD IOR ELOC HALT STA ERH2 STC 4 TURN OFF RESTART LDA TSV1 EXP VALUE LDB TSV2 ACT VALUE ERH2 HLT 0 JMP ERROR,I HED B11CK - B10CK SPC 1 * B11CK - FOR ERROR MESSAGES * IF TTY SUPPRESSED RETURN * IF TTY NOT SUPPRESSED SKIP NEXT INSTRUCTION ON RETURN * USES SWR SPC 1 B11CK NOP LDA SWBGN WAS TELETYPE CONFIGURED? SZA,RSS JMP B11CK,I NO LIA SWR AND BIT11 SZA,RSS IS TTY SUPRESSED? ISZ B11CK NO JMP B11CK,I YES * * * B10CK - FOR NON ERROR MESSAGES * IF TTY SUPPRESSED RETURN * IF TTY NOT SUPPRESSED SKIP NEXT INSTRUCTION ON RETURN * USES SWR SPC 1 B10CK NOP LDA SWBGN WAS TELETYPE CONFIGURED? SZA,RSS JMP B10CK,I NO LIA SWR RAL AND BIT11 SZA,RSS ISZ B10CK JMP B10CK,I * * HED PRINT * PRINT * A = ERROR NUMBER * PRINT NOP STA PSAVE JSB B11CK JMP PRINT,I LDA PSAVE LDB A ADB PFMI,I MESSAGE ADDRESS LDB B,I ADA PFML,I MESSAGE LENGTH LDA A,I JSB TTY.O,I JMP PRINT,I HED CNWRT,CNVRT * THE CNWRT ROUTINE USES CNVRT TO CONVERT THE WORD IN THE A REG. * TO OCTAL AND MOVES THE THREE ASCII WORDS TO THE LOCATION * SPECIFIED BY THE B REG. * CNWRT NOP STB TEMP4 SAVE ADDRESS FOR OCTAL WORDS JSB CNVRT CONVERT ACTUAL WORD TO OCTAL LDA CVT1 LOAD FIRST WORD STA TEMP4,I ISZ TEMP4 BUMP ADDRESS LDA CVT2 STA TEMP4,I ISZ TEMP4 LDA CVT3 STA TEMP4,I JMP CNWRT,I * * THE CNVRT ROUTINE CONVERTS THE SINGLE WORD IN * THE A REG. TO THREE ASCII WORDS (OCTAL) IN CVT1,CVT2 AND CVT3. * CNVRT NOP STA TEMP5 SAVE WORD LDB A WORD TO B ALSO ALF AND D7 SSB IOR BIT8 ONE FOR LEFT OCTAL DIGIT IOR ASCZZ STA CVT1 LDA TEMP5 GET WORD BACK ALF,ALF RAL,RAL AND B77 LEAVE TWO DIGITS LDB A SAVE FOR A WHILE ALF,RAL LEFTMOST TO POSITION IOR B OR THE TWO TOGETHER AND B3407 IOR ASCZZ STA CVT2 LDA TEMP5 GET WORD BACK AND B77 LEAVE LAST TWO DIGITS LDB A ALF,RAL IOR B AND B3407 IOR ASCZZ STA CVT3 SAVE RIGHTMOST DIGITS JMP CNVRT,I RETURN HED ERR1 * * REPORTS E1 IF CONSOLE DEVICE PRESENT AND HALTS * ERR1 EQU * LDA 112B IS THERE AND B77 A CONSOLE SZA,RSS DEVICE? JMP E1 NO.GO HALT CLA,CLE YES.REPORT LDB L1 ERROR JSB 127B,I E1 E1 HLT 1 JMP *-1 IRRECOVERALBE HED DECIN,DCIN2 * DECIN * CONVERTS DECIMAL INTEGERS TO ASCII * A = VALUE ON INPUT * CVT1 = FIRST TWO DIGITS ON EXIT * CVT2 = SECOND TWO DIGITS ON EXIT * DECIN NOP CCB B = -1 DLP1 ADA M1000 ASSUME INTEGER LESS THAN 10000 INB COUNT UP THOUSANDS PART SSA,RSS SKIP WHEN B REG IS CORRECT JMP DLP1 ADA D1000 RESTORE BLF,BLF ADB MM1 DLP2 ADA MM100 INB COUNT UP HUNDREDS PART SSA,RSS SKIP WHEN B REG IS CORRECT JMP DLP2 ADA D100 RESTORE ADB ASCZZ STB CVT1 CCB B = -1 DLP3 ADA MM10 INB COUNT UP TENS PART SSA,RSS SKIP WHEN B REG IS CORRECT JMP DLP3 ADA D10 RESTORE BLF,BLF IOR B IOR ASCZZ STA CVT2 JMP DECIN,I * * DCIN2 * STORE TWO WORDS OF CONVERTED A STARTING AT B * DCIN2 NOP STB LOCAL SAVE POINTER JSB DECIN CONVERT TO ASCII LDA CVT1 STORE LDB LOCAL TWO STA B,I WORDS INB INTO LDA CVT2 MESSAGE STA B,I JMP DCIN2,I HED MESSAGES SPC 2 *** MESSAGES *** SPC 2 SUP M0 OCT 6412 ASC 17,H0 2100 SERIES PWR FAIL DIAGNOSTIC L0 EQU *+*-M0-M0 L1 DEF M1 M1 ASC 12,E1 WRONG COMPUTER TYPE / M2 ASC 13,E2 CHANGED CORE,ADDRESS = JP02A BSS 3 ASC 06, CONTENTS = JP02B BSS 3 L2 EQU *+*-M2-M2 M3 ASC 19,E3 SHUTDOWN ROUTINE DID NOT COMPLETE. OCT 6412 ASC 08,SHOULD COMPLETE JP03A BSS 2 ASC 09, USECS, COMPLETED JP03B BSS 2 ASC 03, USECS L3 EQU *+*-M3-M3 M4 ASC 10,H4 THERE HAVE BEEN JP04A BSS 2 ASC 17, TESTS OF THE POWER FAIL CIRCUITRY L4 EQU *+*-M4-M4 M5 ASC 17,E5 POWER FAIL ROUTINE NOT ENTERED L5 EQU *+*-M5-M5 M7 ASC 19,E7 B-REGISTER NOT EQUAL TO COUNT, B = JP07A BSS 3 ASC 05, COUNT = JP07B BSS 3 L7 EQU *+*-M7-M7 ORG 2000B RESTART FOR JMP 100B LONG DIAGNOSTIC FWAM EQU * FIRST WORD AVAILABLE MEMORY END