ASMB,A,B,L,C HED GENERAL PURPOSE REGISTER DIAGNOSTIC (DSN 143300) ORG 0 DSN = 143300 MAR.31, 1977 DATE CODE 1813 SUP * GENERAL OPERATING PROCEDURE * * A. LOAD DIAGNOSTIC CONFIGURATOR AND SET IT UP. * B. LOAD DIAGNOSTIC PROGRAM * C. LOAD ADDRESS 100B. * D. LOAD SWITCH REG. WITH SELECT CODE AND OPTIONS * BIT MEANING IF SET * 15* HP 12849 IS BEING TESTED * 14* HP 12849 W10 IS IN POSITION A * 13* HP 12849 POSITIVE TRUE * 12* HP 12849 W5 IS ABSENT (W4 IS IN B) * 11 HP 12597 8 BIT DUPLEX * 10 HP 12551 RELAY REGISTER UNDER TEST * 9 HP 12551 RELAY REGISTER HAS READ BACK * 8 HP 12589 AUTOMATIC DIALER * 7 HP 12930 UNIVERSAL INTERFACE * 6 RESERVED * 5 * SELECT CODE OF INTERFACE * 0 * * *BIT 12 - 15 RELATE TO 12849 INTERFACE ONLY * * BITS 8 - 15 CLEARED DEFAULTS TO * 12554, 12566, 12602 OR 12875 * * E. PRESS RUN AND WAIT FOR HALT 102074. * F. LOAD SWITCH REGISTER * BIT MEANING IF SET * 15 HALT AT END OF EACH TEST * 14 SUPPRESS ERROR HALTS * 13 LOOP ON LAST TEST * 12 LOOP ON DIAGNOSTIC * (SUPPRESS ALL OPERATOR INTERVENTION) * 11 SUPPRESS ERROR MESSAGES * 10 SUPPRESS NON-ERROR MESSAGES * 9 GO TO USER CONTROL SECTION * AT END OF PRESENT TEST OR HALT 102034/42 * 8 SUPPRESS OPERATOR INTERVENTION TESTS * 7 RESERVED * 6 * PSEUDO OPDESIGN REFER TO TEST 08 * 0 * NOTE: STANDARD RUN SHOULD BE WITH SW. REG. = 0 * * G. PRESS RUN. * * H. RESTART - LOAD ADDRESS 2000B * I. RECONFIGURE - LOAD ADDRESS 100B SKP * GENERAL COMPUTER HALTS * * 1020XX E OR H 000 TO 054 (ERROR OR OPERATOR) * 102077 END OF DIAG (A = PASS COUNT) * 102076 END OF TEST (A = TEST #) * 102075 USER SELECTION REQUEST (SET A TO SELECTION) * 102074 SELECT CODE INPUT COMPLETE * 102073 USER SELECT CODE ERROR * 106077 TRAP CELL HALT * FOR ANY OTHER HALTS FIRST REFER TO THE * DIAGNOSTIC CONFIGURATOR MANUAL. * * * * 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-05) * * * * * * * * * * * * * * * * * ******************************************* 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 * * 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 DSNL OCT 143300 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 SKP * BASE PAGE POINTERS AND TABLES * ORG 140B IOIPL DEF IOIDL POINTER TO LOWER SC I/O INSTRUCTIONS IOIPU DEF IOIDU POINTER TO UPPER SC I/O INSTRUCTIONS TSTP DEF TSTD POINTER TO TESTS LIST HDMP DEF HDMS POINTER TO HEADER MESSAGE STDA OCT 7773 STDB OCT 0 * HDMS OCT 6412 ASC 18,GENERAL PURPOSE REGISTER DIAGNOSTIC, ASC 7, DSN XXXXXX/ * IOIDL EQU * DEF OUT+1 DEF ENCD+1 DEF WFL+2 DEF IN+1 DEF SC0 DEF SC1 DEF SC2 DEF SC3 DEF SC4 DEF SC5 DEF SC06 DEF SC07 DEF SC08 DEF SC09 DEF SC10 DEF SC11 DEF SC12 POINTERS TO ALL I-O INSTR. DEF T.SCO FOR THE LOWER SC (DATA DEF LGSFS CHANNEL) IN TESTS EXEPT DEF LGSFC BASIC I-O DEF LGS1 DEF LGS2 DEF LGS3 DEF MLS1 DEF DPRS1 DEF DPRS2 DEF DPRS3 DEF DPRS4 DEF DPRS5 DEF DPRS6 DEF STCD DEF UI2 DEF UI5 DEF UI7 DEF UI8 DEF UI17 DEF UI18 DEF UI21 DEF UI23 DEF UI24 DEF UI25 DEF UI26 DEF UI27 DEF UI27A DEF UI28 DEF UI31 DEF UI33 DEF UI34 DEF UI35 DEF UI36 DEF UI39 DEF UI40 DEC -1 * IOIDU EQU * DEF UI3 DEF UI5A DEF UI6 DEF UI9 DEF UI11 DEF UI12 POINTERS TO ALL I-O INSTR. DEF UI14 FOR THE UPPER SC (CONTROL DEF UI16 CHANNEL) IN TEST 8 & 9 DEF UI20 DEF UI22 DEF UI29 DEF UI29A DEF UI29B DEF UI30 DEF UI32 DEF UI37 DEF UI38 DEF UI41 DEF UI42 DEC -1 * TSTD EQU * DEF TST00 BASIC I/O DEF TST01 RELAY PATTERN DEF TST02 RELAY COMMAND DEF TST03 DATA BUFFER DEF TST04 CONTROL SIGNALS DEF TST05 ACU LOGIC TEST DEF TST06 ACU MULTI LINE OPERATION DEF TST07 ACU DPR (DS1) DEF TST08 UNIV. INTERFACE DEF TST09 UNIV. INTERFACE DEF TST10 UNIV. INTERFACE DEF TST11 UNIV. INTERFACE DEF TST12 PSEUDO OPDESIGN DEC -1 SKP TMP NOP CNTR NOP DM20 DEC -20 D100 DEC 100 .2000 DEC 2000 .1 OCT 1 .2 OCT 2 .4 OCT 4 .10 OCT 10 .20 OCT 20 .40 OCT 40 .77 OCT 77 .100 OCT 100 .177 OCT 177 .200 OCT 200 .377 OCT 377 B90 OCT 1001 SW010 OCT 2001 BIT11 OCT 4000 S128 OCT 10400 B13 OCT 20000 MIN1 OCT 177777 M14 OCT 177764 M201 OCT 177577 M1001 OCT 176777 B1510 OCT 176000 M4605 OCT 173173 NBT11 OCT 172000 ZTSH OCT 106077 STCD OCT 102700 B15 OCT 100000 D22 DEC 22 SKP * COMMON SUBROUTINES * INCREMENT PATTERN * * INPT NOP LDA PTRN GET PATTERN INA INCREMENT PATTERN STA PTRN AND BTMSK MASK UNWANTED BITS STA EXP JMP INPT,I RETURN BTMSK NOP PTRN NOP * * OUTPUT PATTERN * OUT NOP OTA SC JMP OUT,I * * ENCODE PATTERN * ENCD NOP STC SC,C JMP ENCD,I * * WAIT FOR FLAG * WFL NOP LDA WFLT SET WAIT TIME SFC SC IS FLAG SET JMP WFL,I YES - RETURN INA,SZA NO COUNT TIME JMP *-3 E042 JSB ERMS,I TELL OPERATOR DEF WFLM FLAG DID NOT SET LDB BIT9 CHECK TO ABORT JSB SWRT,I JMP EXRT,I JMP WFL,I * WFLT DEC -200 WFLM ASC 11,E042 FLAG DID NOT SET/ BIT9 OCT 1000 BIT10 OCT 2000 BT108 OCT 2400 SKP * INPUT PATTERN * IN NOP LIA SC GET DATA STA B AND BTMSK MASK UNWANTED BITS STA ACT SAVE IT LDA B JMP IN,I * * COMPARE INPUT WITH OUTPUT * CMPR NOP LDA EXP GET EXPECTED CPA ACT DOES IT COMPARE WITH ACTUAL JMP CMPR,I LDB EXPP CLE JSB O2AS,I PUT EXPECTED IN MESSAGE LDA ACT LDB ACTP CLE JSB O2AS,I PUT ACTUAL IN MESSAGE LDA EXP LDB ACT E034 JSB ERMS,I TELL OPERATOR DEF MS034 OF NON-COMPARE LDB BIT9 CHECK TO ABORT JSB SWRT,I JMP EXRT,I YES - RETURN TO EXEC JMP CMPR,I NO CONTINUE * EXP NOP ACT NOP * MS034 ASC 11,E034 DATA NON-COMPARE OCT 6412 ASC 05,EXPECTED MSE34 ASC 03,XXXXXX OCT 6412 ASC 05,ACTUAL MSA34 ASC 04,XXXXXX// EXPP DEF MSE34 ACTP DEF MSA34 SKP * OUTPUT A REG TO ACU * ACU EQU 10B A2ACU NOP T.SCO OTA ACU CLA,INA JSB TMRR,I JMP A2ACU,I * * CALL: * * JSB SWLK GOTO SWITCH LOCK UP * OCT XXXXXX SWITCH MASK * JMP . RETURN AFTER SWITCH UP-DOWN * . NORMAL RETURN * SWLK NOP LDB SWLK,I GET SWITCH MASK JSB SWRT,I JMP *+3 SWITCH UP ISZ SWLK SWITCH DOWN JMP SWLK0 LDA .2 WAIT FOR SWITCH BOUNCE JSB TMRR,I LDB SWLK,I GET MASK JSB SWRT,I WAIT TILL SW IS DOWN JMP *-2 SWLK0 ISZ SWLK ADJUST RETURN JMP SWLK,I RETURN SKP * * SUBROUTINES FOR TESTS 08, 09 AND 10 * * * * ASSEMBLES THE 3 LINE ERROR MESSAGE * EMR3L NOP JSB EXCNV CONVERT EXPEC WORD FROM OCTAL TO ASCII JSB ACCNV " ACTUAL " " " " " LDA EXPWD LOAD A-REG WITH EXPECTED & LDB INPAT B-REG WITH ACUAL WORD & JSB ERMS,I GO TO ERROR MESSAGE MSXYZ NOP POINTER TO ERROR MESSAGE, SUPPLIED * BEFOR SUBR. WAS CALLED DEF MSE54,I POINTER TO EXPECTED DATA MESSAGE DEF MSI54 " " ACTUAL " " JSB ABRT CHECK S-REG IF TEST SHALL BE ABORTED JMP EMR3L,I RETURN TO CALLER * * * * CONVERT EXPECTED WORD FROM OCTAL TO ASCII * EXCNV NOP LDA EXPWD LOAD A-REG WITH EXPECTED WORD TO BE CONVERTED LDB EXMSP GET POINTER TO STORE CONVERTED ASCII STRING CLE AND GO TO CONVERTION ROUTINE. JSB O2AS,I JMP EXCNV,I RETURN TO CALLER * EXMSP DEF MSE54+7 MSE54 ASC 11, EXPECTED XXXXXX/ * * * * CONVERT ACTUAL WORD FROM OCTAL TO ASCII * ACCNV NOP LDA INPAT LOAD A-REG WITH ACTUAL WORD TO BE CONVERTED LDB INMSP GET POINTER TO STORE CONVERTED ASCII STRING CLE AND GO TO CONVERTION ROUTINE. JSB O2AS,I JMP ACCNV,I RETURN TO CALLER * INMSP DEF MSI54+7 MSI54 ASC 11, ACTUAL XXXXXX/ SKP * * RESET 3 LOCATIONS TO NOP'S * NOP NOP CLA ASSURE THAT THE 3 LOC. WHICH MAY STA STCDX,I HAVE BEEN MODIFIED BY TST09 STA STCDY,I ARE RESET TO NOP'S. STA STCDZ,I JMP NOP,I * STCDX DEF STCD1 STCDY DEF STCD2 STCDZ DEF STCD3 * * * * STORAGE LOCATIONS FOR TESTS 08, 09 AND 10 * DARFL OCT 0 OTPAT OCT 0 INPAT OCT 0 EXPWD OCT 0 * CFTN DEF ZCFTN * * * * CREATE EXPECTED STATUS BIT PATTERN FROM CONTROL * WORD IF U85S3 IN POS 10, U85S2 IN POS 6 AND * U102S3 IN POS 11. * EXPAT NOP LDA OTPAT LOAD A-REG WITH PATTERN OUTPUT, AND B1510 MASK OUT BIT 0-9 & TRANSFER LDB A TO B-REG. BLF,BLF ROTATE B-REG 7 POS TO THE LEFT & RBR IOR WHITH A-REG WHICH CONVERTS IOR B COMMAND TO PARTIAL STATUS WORD. LDB A CHECK IF B-REG BIT 10 IS SET. IF YES BLF,RBL COPY BIT 10 INTO BIT 0 & 9 SSB IOR B90 YES, IOR BIT 9 & 0 ELB STORE THE COMPLEMENT OF B-REG CLB,CME BIT 10 (WHICH HAS BEEN ROTATED TO ELB,BLF B-REG BIT 15) INTO A-REG BIT 7 BLF,BRS (TEST HOOD REVERSES POLARITY) IOR B STA EXPWD STORE EXPECTED STATUS WORD JMP EXPAT,I RETURN TO CALLER. * SKP * * * CHECK IF TEST SHALL BE ABORTED * ABRT NOP LDB BIT9 LOAD MASK TO TEST S-REG BIT 9 JSB SWRT,I TEST S-REG JMP EXRT,I YES, ABORT TEST & RETURN TO EXEC JMP ABRT,I NO, CONTINUE * * * * CHECK COMMAND AND STATUS REGISTER * OUTPUT ALL POSSIBLE COMMAND WORD COMBINATIONS, READ THE * APPROPR. STATUS WORD, THEN COMPARE THE EXPEC. W THE ACTUAL * STATUS WORD. * CSDCH NOP CLC INTP SET CRS OS FOR U75B TESTING CLA STA DARFL DATA REG FLAG INDICATES 1.EXEC OF THIS ROUT STA OTPAT STORE COMMAND WORD TO BE OUTPUTTED UI5 OTA SC CLEAR OUTPUT DATA REG STCD1 NOP WILL BE OVERLAYED IN TST09 W STC SC CSWCH LDA OTPAT SET COMMAND REG TO OUTPAT UI5A OTA SC+1 UI6 LIB SC+1 READ STATUS WORD STB INPAT STORE STATUS WORD READ JSB EXPAT COMPUTE EXPECD STATUS WORD. A-REG=EXPECTED CPA INPAT COMPARE EXPECTED WITH ACTUAL WORD JMP CSOK COMPARE OK. LDA MP54X,I ERROR,DOES NOT COMPARE. READ MESSAGE PONT IOR B15 IOR BIT 15 TO LINK TO MULTIPLE MESSAGE & STA MSXYZ STORE INTO ERROR MESSAGE SUBROUTINE E054 JSB EMR3L GO TO ERROR MESSAGE SUBR. CSOK ISZ OTPAT INCREMENT COMMAND WORD & JMP CSWCH RETURN TO REPEAT OUTPUT JMP STCDI,I * MP54X DEF MP54 STCDI DEF STCD3 SKP * OUTPUT DATA WORD AND READ IMMEDIATELY BACK * USED IN TST08 * TST8X NOP UI17 OTA SC UI18 LIB SC JMP TST8X,I * * * * OUTPUT DATA WORD AND READ IMMEDIATELY BACK * USED IN TST09 * TST9X NOP UI23 OTA SC UI24 STC SC UI25 LIB SC JMP TST9X,I * * * * LINKAGES FOR POWER FAIL ROUTINE * PUJP JMP *+1,I OCT 0 * POWF DEF POWOF PU09 DEF MSET9 PU10 DEF UN10 PU11 DEF UN11 * * * * POWER UP ROUTINE FOR TESTS 09, 10 AND 11 * POWUP NOP LDA SWRPR RESTORE S-REG OTA 1B STC 4,C RESET POWER FAIL UI31 CLC SC,C UI32 CLC SC+1,C JMP POWUP,I * SWRPR OCT 0 * * * * PCB DEF *+1 STORE DEC TEST OCT 0 NUMBER INTO OCT 0 STRING PCBX ASC 1,XX SKP * EXECUTIVE CONTROL ORG 2000B * ZSTEX CLC INTP,C TURN I/O SYSTEM OFF LDA DSNL ADD DSN TO DIAGN HEADER MESSAGE, CLE LOAD DSN, (UPPER BYTE), LDB HDMP DETERMEN STORAGE LOCATION ADB D22 OF CONVERTED DSN & JSB O2AS,I GO TO OCTAL-ASCII CONVERSION. JSB MSGC,I OUTPUT HEADER MESSAGE DEF HDMS CLA CLEAR PASS STA ZEOLC COUNT CCA RESET TEST NUMBER STA ZCFTT COMPARATOR ZNUSR LDA STDA GET STANDARD TEST RUN ZEXCZ LDB ZSW9 CHECK FOR USER SELECTION REQ JSB SWRT,I JMP ZUSR IT'S USERS CHOICE JMP ZEXC * ZUSR LIA SW CLEAR BIT 9 AND ZSWM9 OTA SW LDA ZSINA RETRIEVE PREVIOUS RUN HLT 75B WAIT FOR USER INPUT ZEXC STA ZUINA SAVE CLB STB ZUINB USER STA ZSINA INPUT STB ZSINB PROGRAM 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 (USER SELECTION) JSB SWRT,I JMP ZUSR YES LDB ZSW13 CHECK FOR LOOP ON TEST JSB SWRT,I JMP ZXCL1 YES - LOOP JMP ZEXCL NO - MOVE TO NEXT TEST * ZEOL LDA ZTSTA CHECK IF ANY TESTS WERE RUN SZA,RSS ? JMP ZNUSR NO SO PICK UP STANDARD RUN LDA ZEOLC YES - UP DATE PASS COUNT INA STA ZEOLC CCE LDB ZPSCA GET PASS COUNT ADB Z.3 ADDRESS JSB O2AS,I CONVERT IT FOR MESSAGE 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 CLC INTP,C TURN I/O SYSTEM OFF JMP ZEXCZ DO IT ALL AGAIN SKP * MESSAGE OUTPUT WITHOUT 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 * * CHECK TO OUTPUT TEST NUMBER * 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 CLE CONVERT OCTAL NUMBER LDB PCB TO THE DEC EQUIVALENT JSB I2AS,I LDB PCBX STB ZTSTN CLA DO CR/LF JSB SLOP,I CLA,CLE INDICATE START OF FORMAT LDB ZTSTF POINT TO STRING JSB FMTR,I OUTPUT IT JMP ZCFTN,I RETURN 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 ELA,CLE,ERA 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 ELB,CLE,ERB CLA,CLE JSB FMTR,I ZMSG0 LDA ZMSG,I CONVERT HALT CODE LDB A,I FROM ASCII STRING ELB,CLE,ERB 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 ZMSG1 LDA ZMSG,I LDA A,I SSA,RSS JMP ZMSG2 ISZ ZMSG,I LDB ZMSG ADB Z.2 LDB B,I JSB SWRT,I JMP ZMSG1 LDA ZMSG,I LDB A,I ELB,CLE,ERB CLA,CLE JSB FMTR,I JMP ZMSG1 ZMSG2 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