ASMB,A,B,L,C
      HED HPIB 59310 DIAGNOSTIC 
      ORG 0  DSN 103122  20 JULY 1977    REV 1728 
      SUP 
      HED GLOSSARY OF IBI TERMS 
********************************************
* 59310 INTERFACE BUS INTERFACE DIAGNOSTIC *
********************************************
* 
*    ** DEFINITION OF MNEMONICS OR ABBREVIATIONS ** 
* 
* 
* 
*      ATN   - ATTENTION (FORMERLY MULTTIPLE RESPONSE ENABLE) 
* 
*      CRS   - CONTROL RESET ISSUED TO I-O BY A CLC INTP,C
* 
*      DAC   - DATA ACCEPTED
* 
*      DAV   - DATA VALID 
* 
*      EOI   - END OR IDENTIFY
* 
*      EOR   - END OF RECORD. 
* 
*      FLAG  - A SIGNAL GENERATED BY THE IBI TO INDICATE AT LEAST 
*               TWO CONDITIONS HAVE BEEN MET (I.E.- 
*                 IRLFLG AND IRLFLGEN)
* 
*      FLG   - SAME AS FLAG 
* 
*      GROUP 3 MODE CONTROL 
*            - IBI CONTROL VIA BITS 15-7 OF THE CONTROL WORD. 
* 
*      IBI(S)- INTERFACE BUS INTERFACE(S) 
* 
*      IB    - INTERFACE BUS
* 
*      IFC   - INTERFACE CLEAR
*               (FORMERLY BUS CLEAR OR EOP) 
* 
*      IFC OS- INTERFACE CLEAR ONE-SHOT 
* 
*      I-O FLAG 
*            - FLAG FF ON IBI SET BY SOME FLAG (SEE FLAG) 
* 
*      IRL   - INPUT REGISTER LOADED. 
* 
*      MAR   - MEMORY ADDRESS REGISTER IN DMA 
* 
*      MYADDR- THE ADDRESS ASSIGNED TO THE INTERFACE. 
* 
*      OBR   - OUTPUT BYTE REGISTER 
* 
*      OBRL  - OUTPUT BYTE REGISTER LOADED
* 
*      OWR   - OUTPUT WORD REGISTER 
* 
*      OWRL  - OWR LOADED.
* 
*      PPLEX - PARALLEL POLL ENABLE 
* 
*      PPPID - PARALLEL POLL PRIORITY IDENTIFICATION. 
* 
*      PPREQ - PARALLEL POLL REQUEST
* 
*      REN   - REMOTE ENABLE
* 
*      RFD   - READY FOR DATA 
* 
*      SC    - SELECT CODE. 
* 
*      SKF   - SKIP FLAG GENERATED FROM I-O 
* 
*      SPM   - SERIAL POLL MODE.
* 
*      SRQ   - SERVICE REQUEST FROM THE IB INDICATING A DEVICE
*               NEEDS SERVICING. ALSO, THE STANDARD DMA SERVICE 
*                REQUEST. 
* 
*      SSR   - SERVICE SELECT REGISTER IN DMA.
* 
*      WCR   - WORD COUNT REGISTER IN DMA 
* 
      SKP 
      HED GENERAL OPERATING PROCEDURE 
*         A. LOAD THE DIAGNOSTIC CONFIGURATOR AND SET IT UP.
*         B. LOAD THE DIAGNOSTIC MAIN PROGRAM.
*         C. SET THE P-REGISTER TO 100B.
*         D. LOAD THE SWITCH REG. WITH THE TEST SELECT CODES(S) 
*             WHERE:
*               BITS 11-6=SECOND IBI SC (IF TWO IBIS ARE TESTED)
*               BITS  5-0=FIRST IBI SC
*         E. PRESS RUN AND WAIT FOR A HALT 102070.
*         F. SET THE S-REG= MYADDR WHERE: 
*               BITS 11-6=SECOND IBI MYADDR (IF TWO IBIS ARE TESTED)
*               BITS  5-0=FIRST IBI MYADDR
*         G. PRESS RUN AND WAIT FOR A HALT 102071.
*         H. SET THE S-REG= PPPID WHERE:
*               BITS 15-8=SECOND IBI PPPID (IF TWO IBIS ARE TESTED) 
*               BITS  7-0=FIRST IBI PPPID 
*         I. PRESS RUN AND WAIT FOR HALT 102074.
*         J. LOAD THE SWITCH REGISTER 
*                   IF SET BIT- 
*                   14 = SUPPRESS ERROR HALTS 
*                   12 = LOOP ON DIAGNOSTIC 
*                   11 = SUPPRESS ERROR MESSAGES
*                   10 = SUPPRESS NON-ERROR MESSAGES
*                        (EXCEPT IN THE TROUBLESHOOTING 
*                           MODULE) 
*                    8 = SUPPRESS PRESET TEST 
*                    3 = EXECUTE PARALLEL POLL REQUEST TEST 
*                    2 = ENTER THE TROUBLESHOOTING MODULE 
*                         USING THE SECOND IBI. 
*                           (IF USED, THIS BIT PRECLUDES
*                             AND OVERRIDES 
*                             SETTING SW.REG. BIT 1)
*                    1 = ENTER THE TROUBLESHOOTING MODULE 
*                         USING THE FIRST IBI.
*                    0 = EXECUTE CABLE TEST 
*         K. PRESS RUN. 
*         L. RESTART - LOAD ADDRESS 2000B AND GO TO STEP J
*         M. RECONFIGURE  - LOAD ADDRESS 100B AND GO TO STEP D
* 
*         GENERAL COMPUTER HALTS
* 
*         1020XX    E OR H  000 TO 067
*         1030XX    E OR H  100 TO 167
*         1060XX    E OR H  200 TO 267
* 
*         CONTROL HALT MESSAGES 
* 
*         102077    END OF DIAGNOSTIC (A=PASS COUNT)
*         102075-76 RESERVED
*         102074    HARDWARE CONFIGURATION INPUT COMPLETE 
*         102073    TEST SELECT CODE INPUT ERROR
*         102072    RESERVED
*         102071    MYADDR INPUT COMPLETE 
*         102070    TEST SELECT CODE INPUT COMPLETE 
* 
*         106077    ILLEGAL TRAP CELL HALT
      HED CONFIGURATOR LINKAGE
INTP  EQU 0 
A     EQU 0 
B     EQU 1 
DMAI  EQU 2 
DMA   EQU 6 
IBI   EQU 15B 
* 
* 
      ORG 100B
* 
      JMP CFIG,I    GO TO CONFIGURATION SECTION 
      BSS 1         FAST INPUT (PHOTO READER) 
      BSS 1         SLOW OUTPUT (LIST)
      BSS 1         FAST OUTPUT (DUMP OR PUNCH) 
SLOIN BSS 1         SLOW INPUT (KEYBOARD) 
      DEF FWAA      FIRST WORD OF AVBL. MEMORY
      BSS 1         LAST WORD OF AVBL. MEMORY 
      BSS 1         NOT USED (MAG TAPE) 
      BSS 1         1 MILL SEC TIME OUT COUNT 
      BSS 1         SELECT CODES FOR I/O
CONSC BSS 1         CONSOLE SELECT CODE.
      BSS 2 
CPTO  BSS 1         COMPUTER TYPE/OPTIONS 
      BSS 1         USER CARD TYPE AND SELECT CODE
      BSS 1         MEMORY SIZE AND TYPE
      BSS 1         INTERNAL SWITCH REGISTER
TMRR  BSS 1         1 MILL SEC TIMER
      BSS 1         CONFIGURATOR SWITCH CK PTR
      BSS 1         INTEGER TO ASCII CONVERSION 
O2AS  BSS 1         OCTAL TO ASCII CONVERSION 
ASCON BSS 1         ASCII CONVERSION
DSN   OCT 103122    DIAGNOSTIC SERIAL NUMBER
FMTR  BSS 1         FORMATTER 
CFIG  DEF CONFG     CONFIGURATION SECTION 
      SUP 
      SKP 
      HED CONSTANTS AND VARIABLES 
SAVEA NOP 
SAVEB NOP 
TSTSC NOP 
RSAVB NOP 
MESPT NOP 
IBH1  OCT 15
IBH2  OCT 15
SDATA NOP 
SAVPA NOP 
SAVPB NOP 
MASK  NOP 
ERRCD NOP 
HOLDD NOP 
MIN2  DEC -2
MIN6  DEC -6
HLT00 HLT 0 
B6    OCT 6 
B12   OCT 12
B16   OCT 16
B17   OCT 17
B30   OCT 30
B33   OCT 33
B37   OCT 37
B43   OCT 43
B52   OCT 52
B77   OCT 77
ASCA  OCT 101 
B103  OCT 103 
ASCD  OCT 104 
ASCE  OCT 105 
ASCI  OCT 111 
B112  OCT 112 
ASCS  OCT 123 
B125  OCT 125 
B140  OCT 140 
B170  OCT 170 
B177  OCT 177 
B250  OCT 250 
B252  OCT 252 
B257  OCT 257 
B377  OCT 377 
B760  OCT 760 
B3000 OCT 3000
B7000 OCT 7000
B7760 OCT 7760
UPASC OCT 30060 
PSCW2 OCT 40001 
PSCAE OCT 140001
HIBYT OCT 177400
ISTAT OCT 3020
BIT3  OCT 10
BIT4  OCT 20
BIT8  OCT 400 
BIT9  OCT 1000
BIT10 OCT 2000
BIT11 OCT 4000
BIT12 OCT 10000 
B8A12 OCT 10400 
BIT13 OCT 20000 
BIT14 OCT 40000 
BIT15 OCT 100000
HALTC OCT 106077
JMPT3 JMP 3,I 
BCCOM OCT 130000
NB77  OCT 177700
NBIT8 OCT 177377
PATTN NOP 
PNTR  NOP 
SAVIN NOP 
SAVPT NOP 
LPNTR NOP 
CTLWD NOP 
PASCT NOP 
SAVIO NOP 
SAVAH NOP 
PSIND NOP 
PARAM NOP 
WSCOD NOP 
NOLSN NOP 
NOTAK NOP 
CW2   DEF *+1 
      NOP 
PID1  NOP 
PID2  NOP 
MYA1  NOP 
MYA2  NOP 
EXPID NOP 
EXMYA NOP 
SAVSR NOP 
STAR  DEF CKTSM 
MANL  DEF MAINL 
TSMOD DEF IBTSM 
CHRIN DEF PARAM 
      SKP 
* 
* DO NOT SEPERATE ANY CODE IN THESE TABLES
* 
CTAB1 NOP 
CTABL DEF *+1 
FOUR  OCT 4,5 
THREE OCT 3 
TWO   OCT 2 
B60   OCT 60
B40   OCT 40,60,4,5,40
      OCT 110 
B100  OCT 100 
      OCT 120,100 
MIN1  DEC -1
* 
ETAB1 NOP 
ETABL DEF *+1 
B11   OCT 11
B31   OCT 31
      OCT 431,31
      OCT 231,31,231,11,231,31
      OCT 71,31 
      OCT 131,31
MTAB1 NOP 
MTABL DEF *+1 
      DEF ACTF
      DEF RENF
      DEF ATNF
      DEF ATNF
      DEF ATNF
      DEF TALKF 
      DEF LSTNF 
INPUT DEF *+1 
      BSS 6 
EOBUF DEF * 
BUFFR DEF *+1 
      BSS 3 
      ASC 1,/ 
      HED DIAGNOSTIC SUBROUTINES
* 
* IFCMD SETS ACTIVE AND CLEARS ATN AND EOI ON THE ISSUING 
* IBI. SETS IFCFLG AND CLEARS SPMFLG ON ANY IB DEVICE 
* AND CLEARS ACTIVE ON ANY DEVICE BUT THE ISSUING ONE.
* 
IFCMD NOP 
      JSB CONT      EXECUTE COMMAND.
      OCT 1 
      JMP IFCMD,I 
      SPC 3 
* 
* SATN SETS ATN AND CLEARS EOI
* 
SATN  NOP 
      JSB CONT      EXECUTE COMMAND.
      OCT 60
      JMP SATN,I
      SPC 3 
* 
* SACTV SETS ACTIVE 
* 
SACTV NOP 
      JSB CONT      EXECUTE COMMAND.
      OCT 5 
      JMP SACTV,I 
      SPC 3 
* 
* CACTV CLEARS ACTIVE 
* 
CACTV NOP 
      JSB CONT      EXECUTE COMMAND.
      OCT 4 
      JMP CACTV,I 
      SPC 3 
* 
* SINPD CLOCKS THE RFD AND IRL FF'S WITH THE CONTENTS 
* OF THE INPUT BYTE CNTR. WHEN COMMAND IS DISABLED THE
* INPUT BYTE CNTR IS CLOCKED LOW. 
* 
SINPD NOP 
      JSB CONT      EXECUTE COMMAND.
      OCT 6 
      JMP SINPD,I 
      SKP 
* 
* STFIB SETS THE COMMAND MODE ON THE IBI. 
* 
STFIB NOP 
IO.13 STF IBI       EXECUTE COMMAND.
      JMP STFIB,I 
      SPC 3 
* INITF IS THE INITIALIZE FLAGS COMMAND WHICH 
* CLEARS THE DMAOUTREQFLG,OUTBYTE CNTR AND OBRL FF'S, AND 
*  SETS THE OWRL AND RFD FF'S.
* 
INITF NOP 
      JSB CONT      EXECUTE COMMAND.
SEVEN OCT 7 
      JMP INITF,I 
      SPC 3 
* SDMOD SETS THE DATA MODE BY 
* CLEARING THE ATN AND EOI FF'S.
* 
SDMOD NOP 
      JSB CONT      EXECUTE COMMAND.
      OCT 40
      JMP SDMOD,I 
      SPC 3 
* SEOI SETS THE END OR IDENTIFY MODE BY 
* CLEARING THE ATN FF AND SETTING THE EOI FF. 
* 
SEOI  NOP 
      JSB CONT      EXECUTE COMMAND.
      OCT 50
      JMP SEOI,I
      SPC 3 
* CLCCF ISSUES A CLC IBI,C WHICH
* ISSUES A CLRINTFLG TO THE 
*  IBI WHICH CLEARS THE IBI FLAG,FLAG BUFFER, CONTROL,
*   EOR AND IFCFLG FF'S.
* 
CLCCF NOP 
IO.07 CLC IBI,C 
      JMP CLCCF,I 
      SKP 
* STALK SETS TALK WHICH 
* SETS THE TALK FF AND CLEARS THE LISTEN FF.
* 
STALK NOP 
      JSB CONT      EXECUTE COMMAND.
      OCT 110 
      JMP STALK,I 
      SPC 3 
* 
* CTLSN CLEARS THE TALK AND LISTEN FF'S.
* 
CTLSN NOP 
      JSB CONT      EXECUTE COMMAND.
      OCT 100 
      JMP CTLSN,I 
      SPC 3 
* SLSTN SETS THE LISTEN MODE BY 
* CLEARING THE TALK FF AND SETTING THE LISTEN FF. 
* 
SLSTN NOP 
      JSB CONT      EXECUTE COMMAND.
      OCT 120 
      JMP SLSTN,I 
      SPC 3 
* SFSIB SIMULATES A SFS IBI 
* 
*  CALLING FORMAT:
* 
*    JSB SFSIB       SKIP CONDITION.
*    DEF ERR MESG    MESG TO BE PRINTED IF
*                     NO SKIP OCCURS. 
* 
SFSIB NOP 
      STA SAVAH     SAVE A-REG. 
IO.09 SFC IBI       EXECUTE OPPOSITE SKIP INST. 
      JMP SKIP      FLAG SET. EXIT NORMALLY.
      LDA SFSIB,I   FLAG NOT SET. GET ERROR MESG PNTR.
      STA SK1       PUT IT IN LINE. 
      JSB SENDM     SEND ERROR MESSAGE. 
SK1   DEF *         MESSAGE POINTER.
SKIP  ISZ ERRCD     UPDATE ERROR NUMBER AND 
      ISZ SFSIB       RETURN ADDRESS. 
      LDA SAVAH     RESTORE A-REG.
      JMP SFSIB,I   RETURN. 
      SKP 
* SPPMD SETS THE PARALLEL POLL MODE BY
* SETTING THE ATN FF AND EOI FF.
* 
SPPMD NOP 
      JSB CONT      EXECUTE COMMAND.
B70   OCT 70
      JMP SPPMD,I 
      SPC 3 
* SFCIB SIMULATES A SFC IBI.
* 
*  CALLING FORMAT:
* 
*     JSB SFCIB      SKIP CONDITION.
*     DEF ERR MSG    ERROR MESSAGE TO BE REPORTED 
*                     IF NO SKIP OCCURS.
* 
SFCIB NOP 
      STA SAVAH     SAVE A-REG. 
IO.10 SFS IBI       EXECUTE OPPOSITE SKIP INST. 
      JMP SKPOK     FLAG CLEAR. NO ERROR. 
      LDA SFCIB,I   FLAG SET. GET ERROR MESG. PNTR. 
      STA SK2       PUT IT IN LINE. 
      JSB SENDM     SEND ERROR MESSAGE. 
SK2   DEF *         ERROR MESSAGE POINTER.
SKPOK ISZ ERRCD     UPDATE ERROR NUMBER AND 
      ISZ SFCIB       RETURN ADDRESS. 
      LDA SAVAH     RESTORE A-REG.
      JMP SFCIB,I   RETURN. 
      SPC 3 
* CDATA CHECKS THE DATA INPUT WHICH 
* VERIFIES THE INPUT DATA EQUALS THE EXPECTED DATA(FOUND
*   IN THE B-REG) 
* 
CDATA NOP 
      STA SAVAH     SAVE A-REG. 
      JSB LIAIB     GET INPUT DATA. 
      STA NOLSN     SAVE ACTUAL DATA. 
      CPA B         DOES ACTUAL=EXPECTED? 
      JMP CRETN      YES! EXIT NORMALLY.
      LDA CDATA,I    NO! GET ERROR MESG POINTER.
      STA SK3       PUT IT IN LINE. 
      LDA NOLSN     RETRIEVE ACTUAL DATA. 
      JSB SENDM     SEND ERROR MESSAGE. 
SK3   DEF *         MESSAGE POINTER.
CRETN ISZ CDATA     UPDATE RETURN ADDRESS.
      ISZ ERRCD     UPDATE ERROR NUMBER.
      LDA SAVAH     RESTORE A-REG.
      JMP CDATA,I   RETURN. 
      SKP 
* DATOT OUTPUTS A DATA WORD TO THE IBI(ASSUMES IBI IS IN
*  THE DATA MODE).
* 
DATOT NOP 
IO.11 OTA IBI       OUTPUT DATA TO IBI. 
      STA CTLWD     SAVE OUTPUT DATA FOR ANY MESG.
      JMP DATOT,I 
      SPC 3 
* LIAIB LOADS A DATA WORD FROM THE IBI INTO THE A-REG 
*  (ASSUMES THE IBI IS IN THE DATA MODE). 
* 
LIAIB NOP 
IO.12 LIA IBI       GET DATA WORD.
      JMP LIAIB,I   EXIT. 
      SPC 3 
* 
* STLAT SETS THE TALK AND LISTEN FF'S 
* 
STLAT NOP 
      JSB CONT      EXECUTE COMMAND.
      OCT 130 
      JMP STLAT,I   EXIT. 
      SPC 3 
* 
* CG3MC CLEARS THE GROUP 3 MODE CONTROL 
* 
CG3MC NOP 
      JSB CONT      EXECUTE COMMAND.
BIT7  OCT 200 
      JMP CG3MC,I 
      SPC 3 
* 
* ITDMA INITIALIZES DMA CHANNEL ONE FOR A ONE WORD OUTPUT 
*  TRANSFER FROM ADDR 246B. 
* 
ITDMA NOP 
      LDA WSCOD     GET WORKING SELECT CODE.
      OTA DMA       OUTPUT TO DMA SSR.
      LDA CW2       GET DMA ADDRESS.
      CLC DMAI      READY DMA MAR.
      OTA DMAI      OUTPUT ADDRESS TO DMA MAR.
      CCA           FORM -1 WORD COUNT. 
      STC DMAI      READY DMA WCR.
      OTA DMAI      OUTPUT TO DMA WCR.
      STC DMA,C     TURN ON DMA CH1.
      JMP ITDMA,I   RETURN. 
      SKP 
* 
* *SWAP* IS RESPONSIBLE FOR INITIALIZING POINTERS 
*  TO I-O ROUTINES BASED ON THE FIRST OR SECOND PASS
*   OF THE DIAGNOSTIC.
* 
* 
SWAP  NOP 
      LDA PSIND     GET PASS INDICATOR. 
      LDB MYA1      GET FIRST IBI MYADDR. 
      SZA,RSS       FIRST PASS? 
      LDB MYA2       NO! GET SECOND IBI MYADDR. 
      STB EXMYA     SAVE MYADDR FOR TESTING.
      LDB PID1      GET FIRST IBI PPPID.
      SZA,RSS       FIRST PASS? 
      LDB PID2       NO! GET SECOND IBI PPPID.
      STB EXPID     SAVE PPPID FOR TESTING. 
      LDB IBH1      GET FIRST SELECT CODE.
      CMA,SZA       COMPLEMENT PASS IND. FIRST PASS?
      LDB IBH2       NO! GET SECOND SELECT CODE.
      STA PSIND     UPDATE PASS INDICATOR.
      LDA IOTBL     GET I-O INST. POINTER.
      JSB INTIO     INITIALIZE I-O INSTRUCTIONS.
      LDB PSIND     RESTORE PASS INDICATOR. 
      JMP SWAP,I    EXIT SWAP.
      SPC 3 
* 
* CONX ISSUES CONTROL WORDS TO THE IBI DURING THE CABLE TEST. 
* 
CONX  NOP 
IO.X1 STF IBI       READY COMMAND MODE. 
      LDA CONX,I    GET CONTROL WORD. 
IO.X2 OTA IBI       OUTPUT IT TO IBI. 
      ISZ CONX      UPDATE RETURN.
      JMP CONX,I    RETURN. 
      SPC 3 
* 
* CMORG COMPLEMENTS THE O-REG AS AN INDICATOR ONLY. 
* 
CMORG SOC           OVERFLOW CLEAR? 
      JMP SKX        NO! GO CLEAR IT. 
      STO            YES! SET IT. 
      JMP STAR,I    RETURN TO START OF TEST.
SKX   CLO           CLEAR OVERFLOW. 
      JMP STAR,I    RETURN TO START OF TEST.
      SKP 
* 
* GETTM CHECKS SW.REG. BITS 1 & 2 TO DETERMINE IF THE 
*  OPERATOR WANTS TO ENTER THE TS MODULE. 
* 
GETTM NOP 
      LDB B6        LOOK FOR SW.REG. BIT 1 OR 2.
      JSB SWRT      IS EITHER ONE SET?
      JMP TSMOD,I    YES! GO TO TS MODULE.
      JMP GETTM,I    NO! RETURN NORMALLY. 
      SPC 2 
* 
* INTIO INITIALIZES THE I-O INSTRUCTIONS IN THE TABLE 
*  DESIGNATED IN THE A-REG TO THE SC DESIGNATED IN THE B-REG. 
* 
INTIO NOP 
      STB WSCOD     SAVE SELECT CODE. 
      LDB A         GET I-O INST. TABLE POINTER.
      STB SAVIO     SAVE POINTER. 
IOLOP LDB SAVIO     GET I-O INST. PNTR (1ST LEVEL). 
      LDA B,I       GET I-O INST. PNTR (2ND LEVEL). 
      CPA MIN1      END OF LIST?
      JMP INTIO,I    YES! EXIT. 
      STA B          NO! PUT POINTER IN B-REG.
      LDA B,I       GET I-O INSTRUCTION.
      AND NB77      MASK OFF OLD SC.
      IOR WSCOD     MERGE IN NEW SELECT CODE. 
      STA B,I       PUT NEW INSTRUCTION BACK. 
      ISZ SAVIO     UPDATE POINTER. 
      JMP IOLOP     TRY NEXT I-O INSTRUCTION. 
      SPC 2 
NIOTB DEF CATAB 
IOTBL DEF *+1 
      DEF IO.02 
      DEF IO.03 
      DEF IO.04 
      DEF IO.06 
      DEF IO.07 
      DEF IO.10 
      DEF IO.11 
      DEF IO.13 
      DEF IO.15 
      DEF IO.16 
CATAB DEF IO.01 
      DEF IO.X1 
      DEF IO.X2 
      DEF IO.X3 
      DEF IO.09 
      DEF IO.12 
      DEC -1        END OF LIST 
      SPC 3 
      SKP 
* 
* 
* 
*  *SENDM* FORMS AN  ERROR MESSAGE FROM THE 
*   PARAMETERS PASSED TO IT AS FOLLOWS: 
*     A-REG = INPUT (ACTUAL) DATA OR STATUS  WORD 
*     B-REG = EXPECTED DATA OR STATUS WORD
*     CTLWD = CONTROL OR DATA WORD LAST OUTPUT TO THE IBI 
*     ERRCD = ERROR NUMBER
*     PARAM = SUBROUTINE CONTROL (SEE BELOW)
* 
* 
*  CALLING FORMAT:
* 
*       JSB SENDM 
* 
*       DEF MSG (MESSAGE STRING POINTER)
* 
* 
*  PARAM FORMAT:
* 
*     BIT 15=1  SUPPRESS OUTPUT MESSAGE 
*     BIT 14=1  PRINT ENTIRE ERROR MESSAGE
*     BIT  0=1  PRINT FAILING SELECT CODE 
* 
SENDM NOP 
      CLF INTP      TURN OFF INTERRUPT SYSTEM.
      STA SAVPA     SAVE ACTUAL 
      STB SAVPB      AND EXPECTED DATA. 
      LDB SENDM,I   GET MESSAGE STARTING ADDRESS. 
      STB MESPT     SAVE IT.
      LDA IO.X1     STRIP TO OUTPUT 
      AND B77        TEST SELECT CODE.
      STA TSTSC     SAVE OUTPUT TEST SC.
      JSB CNVRT     CONVERT SC TO ASCII.
      STA OSTR2,I   PUT SC IN OUTPUT MESSAGE. 
      LDA IO.07     STRIP TO INPUT
      AND B77        TEST SELECT CODE.
      JSB CNVRT     CONVERT SC TO ASCII.
      STA FALSC,I   PUT SC IN SC MESSAGE. 
      STA ISTR2,I   PUT SC IN INPUT MESSAGE.
      LDB BIT11     CHECK FOR 
      JSB SWRT       SUPPRESS ERROR MESSAGES. 
      JMP HONLY     NO PRINTOUT. GO HALT ONLY.
* 
* FORM EXXX MESSAGE AND PRINT IT. 
* 
      LDA EMESG     GET EXXX STRING.
      AND HIBYT     STRIP X OFF.
      STA EMESG     RESTORE.
      LDA ERRCD     GET ERROR CODE VALUE. 
      ALF,ALF       SHIFT UPPER DIGIT OF ERROR
      RAL,RAL        CODE INTO BITS 2-0.
      AND SEVEN     STRIP DIGIT.
      ADA B60       ADD ASCII ZERO. 
      IOR EMESG     MERGE NUMBER INTO 
      STA EMESG      MESSAGE STRING.
      LDA ERRCD     GET ERROR CODE. 
      JSB CNVRT     CONVERT LOWER 2 DIGITS TO ASCII.
      STA EMESG+1   PUT THEM IN MESSAGE.
      JSB PCRLF     GO PRINT CR-LF. 
      CLA,CLE 
      LDB ERMES     GET MESSAGE POINTER 
      JSB FMTR,I    PRINT EXXX
                                                                                                                                                                                      