ASMB,A,B,C,L HED 21MX FFP DIAGNOSTIC # 1 ORG 0 DSN 101213 30 MAY 1978 REV 1822 * * LAST CODE CHANGE 780501 * * EDITED 780530 * * * 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 107074. * 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 PROGRAM ORGANIZATION CHART * ******************************************* * * CONFIGURATOR 100B * * * LINKAGE TABLE * * ******************************************* * * EXECUTIVE 130B * * * LINKAGE * * ******************************************* * * CONSTANTS 150B * * * AND * * * STORAGE * * ******************************************* * * 2000B * * * EXECUTIVE CONTROL * * * * * ******************************************* * * IF USED * * * BASIC I/O TESTS (TEST 00) * * * ZCEND * * ******************************************* * * TABLE OF TEST POINTERS * * * TABLE OF I/O INSTR POINTERS * * ******************************************* * * * * * * * * * * * * * * * * * MAIN DIAGNOSTICS (1-31) * * * * * * * * * * * * * * * * * ******************************************* * * * * * * * * * * * * * * * * * * * * 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 CH EQU 10B I-O CHANNEL SELECT CODE * * ORG 100B * 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 BSS 1 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 DSN OCT 101213 DIAGNOSTIC SERIAL NUMBER FMTR BSS 1 FORMATTER * * * CONTROL LINKAGE AND DATA REFERENCES * 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 * * * * * * * * * * * * * HED EXECUTIVE CONTROL ORG 2000B ZSTEX CLC INTP,C TURN I/O SYSTEM OFF JSB MSGC,I DO CRLF DEF ZRTLF LDA HDMP GET INTRODUCTORY MESSAGE STA *+2 JSB MSGC,I OUT PUT IT NOP CLA CLEAR PASS STA ZEOLC COUNT LDB ZSW9 CHECK FOR USER SELECTION REQ JSB SWRT,I JMP ZUSR IT'S USERS CHOICE ZNUSR LDA STDA GET STANDARD TEST RUN LDB STDB * JMP ZEXC * ZUSR LDA ZSINA RETRIEVE PREVIOUS RUN LDB ZSINB HLT 75B WAIT FOR USER INPUT NOP NOP NOP ZEXC STA ZUINA SAVE STB ZUINB USER STA ZSINA INPUT STB ZSINB PROGRAM LDB ZSW9 CHECK IF SW9 IS DOWN JSB SWRT,I JMP ZUSR NO GO AND WAIT CCA SET TEST NUMBER STA TSTN =-1 CLA STA ZTSTA CLEAR TEST RUN FLAG * * * * * * * * * * * * * * * * SKP ZEXCL LDA ZUINA RESTORE A REG. LDB ZUINB RESTORE B REG. ERA,RAL ROTATE ERB FIRST ERA TEST BIT STA ZUINA SAVE POSITIONS STB ZUINB ISZ TSTN MOVE TEST UP ONE NOP ZXCL1 LDA TSTN ADA TSTP GET IT'S LDA A,I ADDRESS CPA Z.M1 IS IT END OF LIST JMP ZEOL YES LDB ZUINB SSB,RSS SHOULD IT BE RUN? JMP ZEXCL NO STA ZTSTA YES - SAVE TEST ADDRESS JSB ZITCH INITIALIZE TRAP CELL HALTS JSB ZTSTA,I GO DO TEST ZEXRT LDA TSTN DISPLAY TEST NUMBER IF HALTED LDB ZSW15 CHECK FOR HALT AT END OF TEST JSB SWRT,I HLT 76B YES WAIT FOR OPERATOR LDB ZSW9 CHECK FOR ABORT JSB SWRT,I JMP ZUSR YES LDB ZSW13 CHECK FOR LOOP ON ROUTINE JSB SWRT,I JMP ZXCL1 YES - LOOP JMP ZEXCL CONTINUE * ZEOL LDA ZTSTA CHECK IF ANY TESTS WERE RUN SZA,RSS ? JMP ZNUSR NO SO PICK UP STANDARD RUN LDA ZEOLC UP DATE PASS COUNT INA STA ZEOLC CCE LDB ZPSCA GET PASS COUNT ADB Z.2 ADDRESS JSB O2AS,I CONVERT IT JSB MSGC,I CALL PRINT ROUTINE ZPSCA DEF ZPSC LDB ZSW12 CHECK FOR LOOP ON DIAG. JSB SWRT,I JMP *+3 YES LDA ZEOLC HLT 77B NO WAIT AND DISPLAY PASS COUNT LDA ZSINA RESTORE ORIGINAL LDB ZSINB PROGRAM JMP ZEXC DO IT ALL AGAIN * SKP * MESSAGE OUTPUT WITH OUT HALT * ZMSGC NOP ENTRY JSB ZMSG OUTPUT MESSAGE OCT 2000 SWITCH 10 CHECK JMP ZMSGC,I RETURN TO CALLER * * MESSAGE OUTPUT WITH HALT * ZMSGH NOP ENTRY JSB ZMSG OUTPUT MESSAGE OCT 2000 SWITCH 10 CHECK LDA ZHLT GET HALT CODE STA *+2 PUT IT IN PLACE LDA ZSAVA RESTORE A REGISTER NOP HALT FOR DISPLAY JMP ZMSGH,I RETURN TO CALLER * * ERROR MESSAGE WITH HALT * ZERMS NOP ENTRY JSB ZMSG OUTPUT MESSAGE OCT 4000 SWITCH 11 CHECK CLA LDB ZSW14 CHECK SWR BIT 14 TO SUPPRESS JSB SWRT,I HALT STA *+3 PUT HALT IN PLACE LDA ZSAVA RESTORE A & B LDB ZSAVB ZHLT NOP WAIT FOR OPERATOR JMP ZERMS,I RETURN TO CALLER * * * * * * * * * * * * * SKP * OUTPUT MESSAGE * ZMSG NOP STA ZSAVA SAVE A AND B REGISTERS STB ZSAVB LDB ZMSG,I GET SWITCH REGISTER BIT LDA ZMSG ADA Z.M2 DECREMENT RETURN ADDRESS STA ZMSG JSB SWRT,I CHECK TO SUPPRESS MESSAGE JMP ZMSG0 YES LDA ZMSG,I CHECK IF ERROR LDA A,I LDA A,I IF SO ALF,ALF AND Z.177 CPA ZA.E JSB ZCFTN CHECK TO OUTPUT TEST NUMBER LDA ZMSG,I NO RETRIEVE FORMAT LDB A,I ADDRESS CLA,CLE JSB FMTR,I ZMSG0 LDA ZMSG,I CONVERT HALT CODE LDB A,I FROM ASCII STRING CCA,CCE JSB AS2N,I STA ZN2AO SAVE RESULT AND Z.300 DECODE LDB ZH2 HALT CODE CPA Z.100 LDB ZH6 CPA Z.200 LDB ZH3 CPA Z.300 LDB ZH7 LDA ZN2AO GET HALT NUMBER AND Z.77 IOR B STA ZHLT SAVE IT ISZ ZMSG,I ADJUST RETURN POINTERS ISZ ZMSG ISZ ZMSG ISZ ZMSG LDA ZSAVA RESTORE A AND B REGISTERS LDB ZSAVB JMP ZMSG,I * * * * * * SKP ZCFTN NOP LDA TSTN GET TEST NUMBER CPA ZCFTT IS IT THE SAME ONE? JMP ZCFTN,I YES SKIP OUTPUT STA ZCFTT NO - THEN UPDATE IT JSB ZN2AO CONVERT IT STA ZTSTN PUT IT IN STRING CLA DO A CRLF JSB SLOP,I CLA,CLE INDICATE START OF FORMAT LDB ZTSTF JSB FMTR,I JMP ZCFTN,I RETURN * * * * ZSAVA NOP ZSAVB NOP ZEOLC NOP ZTSTA NOP ZSINA NOP ZSINB NOP ZUINA NOP ZUINB NOP ZBTMP NOP Z.2 OCT 2 Z.7 OCT 7 Z.10 OCT 10 Z.60 OCT 60 Z.77 OCT 77 Z.177 OCT 177 Z.M1 DEC -1 Z.M2 DEC -2 ZD100 DEC -100 ZIOM OCT 177700 ZSW15 OCT 100000 ZSW14 OCT 40000 ZSW13 OCT 20000 ZSW12 OCT 10000 ZS812 OCT 010400 ZSW9 OCT 1000 Z.100 OCT 100 Z.200 OCT 200 Z.300 OCT 300 ZH2 OCT 102000 ZH6 OCT 106000 ZH3 OCT 103000 ZH7 OCT 107000 ZCFTT DEC -1 ZTSTF DEF *+1 ASC 3,TEST ZTSTN ASC 2,XX// ZRTLF ASC 1,// ZPSC ASC 6,PASS XXXXXX/ ZA.E OCT 105 HED GENERAL ROUTINES * * ZN2AO NOP STA ZIOAD SAVE NUMBER AND Z.7 CONVERT FIRST IOR Z.60 NUMBER STA B SAVE IT LDA ZIOAD GET RAR,RAR SECOND RAR NUMBER AND Z.7 CONVERT IOR Z.60 IT ALF,ALF MOVE TO UPPER HALF IOR B ADD LOWER JMP ZN2AO,I AND RETURN * * * * SWITCH REGISTER CHECK * ZSWRT NOP STA ZN2AO SAVE A REGISTER LIA SW GET SWITCH REG. AND B MASK OUT BIT SZA,RSS IS IT UP? ISZ ZSWRT NO LDA ZN2AO RESTORE A REGISTER LIB SW LET B = SWITCH REGISTER JMP ZSWRT,I RETURN TO CALLER * * * * INITIALIZE TRAP CELL HALTS * ZITCH NOP LDA ZTSH GET STARTING TRAP CELL HALT LDB Z.2 GET FIRST TRAP CELL LOCATION ZTSHL STA B,I PUT IT IN PLACE CPB Z.77 AM I FINISHED JMP ZITCH,I YES INB NEXT ADDRESS JMP ZTSHL * ZTSH OCT 106077 * * * SKP * PUT JSB INSTRUCTION IN TRAP CELL * ZTCJI NOP LDB ZJSBI GET INSTRUCTION STB ZIOSC,I PUT IT IN TRAP CELL LDA ZTCJI,I GET LOCATION STA 3B SAVE IT FOR JSB INSTRUCTION ISZ ZTCJI ADJUST RETURN JMP ZTCJI,I RETURN TO CALLER * ZJSBI JSB 3B,I JSB INSTRUCTION * * * INITIALIZE SELECT CODE I/O INSTRUCTIONS * ZISC NOP STA ZIOSC SAVE SELECT CODE STB ZIOAD SAVE TABLE ADDRESS ZIOL LDB ZIOAD,I GET ADDRESS OF LOCATION CPB Z.M1 IS IT THE TERMINATOR JMP ZISC,I YES RETURN TO CALLER LDA B,I NO - GET CONTENTS AND ZIOM MASK OFF OLD SELECT CODE IOR ZIOSC ADD IN NEW SELECT CODE STA B,I RESTORE IT ISZ ZIOAD MOVE TO NEXT ADDRESS JMP ZIOL DO IT * ZIOSC NOP ZIOAD NOP * * * * SKP * CONFIGURATION SECTION * ZCONF CLC INTP,C TURN I/O SYSTEM OFF LIA SW GET SELECT CODE AND OPTIONS STA USSC SAVE THEM AND Z.77 ELIMINATE OPTIONS LDB A CMB,INB CHECK THAT SC > 7 ADB Z.7 SSB ? JMP *+3 OK GO ON HLT 73B NO JMP ZCONF TRY AGAIN LDB IOIP INITIALIZE TEST I/O JSB ZISC INSTRUCTIONS * ZCONA JSB PNTST,I TEST FOR CFER -- CONFIGURE STDA * HLT 74B ALLOW OPERATOR TO CHANGE SWIT JMP ZSTEX GO TO EXEC CONTROL SECTION * PNTST DEF CNTST * ************************************************************************TAB 010 * TAB 020 * HP 21MX FAST FORTRAN PROCESSOR DIAGNOSTIC PROGRAM #1 * TAB 040 ************************************************************************TAB 050 * TAB 060 HED HP 21MX FFP DIAGNOSTIC BRANCH TABLE. ***** ***** TAB 350 * HP 21MX FFP DIAGNOSTIC BRANCH TABLE. * TAB 350 ***** ***** TAB 360 TSTD EQU * TAB 370 DEF TST12 ..MAP (SET BIT 0) DEF TST13 SNGL (SET BIT 1) DEF TST14 DBLE (SET BIT 2) DEF TST15 .DFER (SET BIT 3) DEF TST16 .XFER (SET BIT 4) DEF TST17 PWR2 (SET BIT 5) DEF TST18 .PACK (SET BIT 6) DEF TST19 FLUN (SET BIT 7) DEF TST20 .XPAK (SET BIT 8) DEF TST21 .XCOM (SET BIT 9) DEF TST22 ..DCM (SET BIT 10) DEF TST23 DDINT (SET BIT 11) DEF TST24 .CFER (SET BIT 12) OCT 177777 END OF TSTD MARKER * HDMS ASC 15,START 21MX FFP DIAGNOSTIC 1/ * IOID EQU * DEF STCSC DEF STFSC DEF CLCSC DEF INTSC DEC -1 HED TEST TABLE FOR PWR2 TESTS. ***** ****** TAB 070 * TEST TABLE FOR PWR2 TESTS. * TAB 080 ***** ****** TAB 090 TST1 DEC -3 NUMBER OF TEST VALUES IN THE TABLE TAB 100 TST10 EQU * TABLE ENTRY ADDRESS TAB 110 OCT 1 POWER OF 2 = N TAB 120 OCT 177776 *TEST VALUE #1 - LO MANTISSA+EXPONENT TAB 130 OCT 177400 RESULT #1 - EXPONENT OVERFLOWED TAB 140 DEC -1 POWER OF 2 = N TAB 150 OCT 177403 *TEST VALUE #2 - LO MANTISSA+EXPONENT TAB 160 OCT 177401 RESULT # 2 - EXPONENT UNDERFLOWED TAB 170 OCT 5 POWER OF 2 = N TAB 180 OCT 177476 *TEST VALUE # 3 - LO MANTISSA+EXPONENT TAB 190 OCT 177510 RESULT #3 - NORMAL TAB 200 HED TEST # 17 - PWR2 TESTS. ***** ***** PWR2 010 * TEST # 17 - PWR2 TESTS. * ***** ***** PWR2 030 TST17 EQU * NOP PWR2 050 JSB MSGC,I OUTPUT HEADER MESSAGE DEF MMS14 LDA TST1 OBTAIN LOOP COUNT PWR2 060 STA CNTR SET UP TEST LOOP COUNTER PWR2 070 LDA TSTA1 LOAD TEST TABLE POINTER PWR2 080 STA N INITIALIZE N PWR2 090 INA PWR2 100 STA LME1 PWR2 110 RPT1 LDB N PWR2 120 STB PARM1 ESTABLISH PARAMETER ADDRESS LDA LME1 TEST VALUE TABLE POINTER PWR2 140 LDB 0,I OBTAIN LO MANTISSA+EXP PWR2 150 INA ADVANCE TEST VALUE TABLE POINTER PWR2 180 STA LME1 PWR2 190 RAM PWR2 CALL TO PWR2 MICRO-ROUTINE PWR2 160 PARM1 NOP PARAMETER ADDRESS OF N STA XBUF SAVE ACTUAL VALUE PART 1 STB XBUF+1 SAVE ACTUAL VALUE PART 2 CPB LME1,I VERIFY RETURNED RESULTS PWR2 200 JMP ARD1 VERIFIED CORRECTLY PWR2 210 LDA 1 OBTAIN ACTUAL RESULT JSB ASCII,I CONVERT VALUE TO ASCII DEF ACTUL+5 LDB ACT5 STB *-2 RESTORES VALUE BUFFER POINTER LDA LME1,I OBTAIN EXPECTED VALUE JSB ASCII,I DEF EXPCT+5 LDB EXP5 STB *-2 CLA LOAD ACTUAL VALUE LDB XBUF+1 WORDS 1 AND 2 JSB ERMS,I DEF ERM14 ERROR MESSAGE BUFFER POINTER CLA LDB LME1,I EXPECTED VALUES JSB XINV2,I DISPLAY EXPECTED VALUES IN REG. A & B JSB DSPLY,I OUTPUT ACTUAL & EXPECTED VALUES ARD1 ISZ CNTR CHECK FOR EXIT CONDITION PWR2 300 JMP *+2 NOT EQUAL TO ZERO YET - SKIP AROUND PWR2 310 JMP EXT13 LDA LME1 OBTAIN EXPECTED VALUE POINTER INA POINT TO NEXT N PWR2 330 STA N N PWR2 340 INA ADJUST TABLE POINTER PWR2 350 STA LME1 POINT TO NEXT TEST VALUE PWR2 360 JMP RPT1 LOOP BACK PWR2 370 EXT13 JMP TST17,I RETURN ERM14 ASC 11,E230 PWR2 DATA ERROR/ MMS14 ASC 8,H230 PWR2 TEST/ TSTA1 DEF TST10 TABLE POINTER N BSS 1 POWER OF 2'S TEMPORARY STORAGE LME1 BSS 1 RESULT POINTER HED TEST TABLE FOR .PACK TESTS. ***** ***** TAB 320 * TEST TABLE FOR .PACK TESTS. * TAB 330 ***** ***** TAB 340 TST3 DEC -2 NUMBER OF TEST VALUES IN TABLE TST30 EQU * TABLE ENTRY ADDRESS TAB 360 OCT 077777 *TEST VALUE #1 - HI MANTISSA TAB 370 OCT 177777 - LO MANTISSA TAB 380 OCT 177777 - EXPONENT (NEG) TAB 390 OCT 040000 RESULT #1 - HI MANTISSA OCT 0 - LO MANTISSA+EXP OCT 077777 *TEST VALUE #2 - HI MANTISSA TAB 420 OCT 177252 - LO MANTISSA TAB 430 OCT 000125 - EXPONENT(POS) TAB 440 OCT 077777 RESULT #2 - HI MANTISSA TAB 450