* 
* CHECK EOR INPUT TO EORFLG FF
* 
      JSB CLCCF     CLEAR EORFLG FF.
      JSB CONT      SET ASCIIMODE 
      OCT 603        AND REN HIGH.
      LDA B12       SHOULD
      JSB DATOT      GENERATE EOR AND EOI.
      JSB SATN      ENABLE DATA TO IB.
      JSB SINPD     CLOCK EORFLG FF HIGH. 
      LDB BIT12     EXPECTED STATUS.
      STB MASK      SET TEST MASK.
      JSB STAT      IS EORFLG FF SET? 
E206  DEF ASCIM      NO! REPORT ERROR.
* 
* CHECK ASCIIMODE INPUTS TO EOI AND EOR LOGIC.
* 
      JSB CLCCF     CLEAR EOR FF. 
      JSB CG3MC     CLEAR ASCIIMODE.
      JSB SATN      ENABLE DATA TO IB.
      LDA B12       SET ASCIIMODE EOR 
      JSB DATOT      INTO OBR.
      JSB SINPD     CLOCK EORFLG FF LOW.
      CLB           NO EORFLG 
      JSB STAT       WITH ASCIIMODE LOW?
E207  DEF ASCIM        NO! REPORT ERROR.
      SKP 
* 
* CHECK DECODE OF EOR AND EOI(ASCIIMODE)
* 
      JSB CONT      SET ASCIIMODE 
      OCT 603        AND REN HIGH.
      STB HOLDD     INITIALIZE TEST PATTERN.
ALOP1 JSB SDMOD     CLEAR ATN AND EOI.
      LDA HOLDD     GET TEST DATA.
      CPA B12       IS THIS EOR DATA? 
      JMP NXTAT      YES! DON'T TEST IT.
      CPA B33       IS THIS ASCIIMODE IFC DATA? 
      JMP NXTAT      YES! DON'T TEST IT.
      JSB DATOT     OUTPUT DATA.
      JSB SINPD     CLOCK EORFLG FF.
      STA CTLWD     SAVE OUTPUT DATA. 
      JSB STAT      DID ILLEGAL EOI GET GENERATED?
E210  DEF ASCIM      YES! REPORT ERROR. 
      JSB SATN      ENABLE DATA TO IB.
      JSB SINPD     CLOCK EORFLG FF.
      STA CTLWD     SAVE OUTPUT CONTROL WORD. 
      JSB STAT      DID ILLEGAL EOR OCCUR?
E211  DEF EOR        YES! REPORT ERROR. 
      LDA HOLDD     GET DATA TEST PATTERN.
      CPA B37       END OF DATA PATTERNS? 
      JMP NXAT       YES! GO DO NEXT TEST.
      JSB DECEC     DECREMENT 
      JSB DECEC      ERROR CODE TWICE.
NXTAT ISZ HOLDD     UPDATE DATA PATTERN.
      JMP ALOP1     GO DO ANOTHER TEST. 
* 
* CHECK UPPER DECODE BITS OF IB EOR DECODE LOGIC
* 
NXAT  LDA B52       GET EOR TEST PATTERN. 
      JSB DATOT     OUTPUT DATA TO IB.
      JSB SINPD     CLOCK EORFLG FF.
      JSB STAT      DID ILLEGAL EOR OCCUR?
E212  DEF EOR        YES! REPORT ERROR. 
      LDA B112      GET NEXT EOR TEST PATTERN.
      JSB DATOT     OUTPUT DATA TO IB.
      JSB SINPD     CLOCK EORFLG FF.
      JSB STAT      DID ILLEGAL EOR OCCUR?
E213  DEF EOR        YES! REPORT ERROR. 
      SKP 
* 
* CHECK ASCIIMODE IFC.
* 
      STB HOLDD     INITIALIZE DATA PATTERN.
      JSB CACTV     CLEAR ACTIVE. 
      LDA BIT4      SET UP
      STA MASK        TEST MASK.
ALOP2 JSB INITF     INITIALIZE OBR LOGIC FOR OUTPUT 
      LDA HOLDD     GET TEST DATA 
      CPA B33       IS THIS THE IFC ASCIIMODE DATA? 
      JMP NXATA      YES! DON'T TEST IT.
E214  JSB ASCOT     CHECK ASCII COMMAND.
      CPA B37       END OF DATA PATTERNS? 
      JMP EATST      YES! EXIT. 
      JSB DECEC      NO! DECREMENT ERROR NUMBER.
NXATA ISZ HOLDD     UPDATE DATA PATTERN.
      JMP ALOP2     DO ANOTHER PATTERN. 
* 
* CHECK ASCIIMODE IFC CAN BE TRIGGERED
* 
EATST JSB INITF     INITIALIZE OBR LOGIC FOR OUTPUT.
      LDA B33       GET IFC ASCIIMODE COMMAND.
      LDB BIT4      GET EXPECTED STATUS.
E215  JSB ASCOT     CHECK ASCII COMMAND.
* 
* CHECK ASCIIMODE REMOTE COMMAND
* 
      JSB CONT      SET 
      OCT 2          LOCAL MODE.
      LDA BIT8      SET UP
      STA MASK       TEST MASK. 
      CLB           INITIALIZE
      STB HOLDD      TEST DATA PATTERN. 
ALOP3 JSB INITF     INITIALIZE OBR LOGIC FOR OUTPUT.
      LDA HOLDD     GET DATA PATTERN. 
      CPA TWO       IS THIS A REMOTE COMMAND? 
      JMP EALP2      YES! DON'T TEST IT.
E216  JSB ASCOT     CHECK ASCII COMMAND.
      CPA B37       END OF DATA PATTERNS? 
      JMP NXAL2      YES! DO NEXT TEST. 
      JSB DECEC      NO! DECREMENT ERROR NUMBER.
EALP2 ISZ HOLDD     UPDATE TEST PATTERN.
      JMP ALOP3     GO DO NEXT PATTERN. 
      SKP 
* 
* CHECK 2B WILL SET ASCIIMODE REMOTE
* 
NXAL2 JSB INITF     INITIALIZE OBR LOGIC FOR OUTPUT.
      LDA TWO       OUTPUT ASCIIMODE REMOTE TO IB.
      LDB BIT8      GET EXPECTED STATUS.
E217  JSB ASCOT     CHECK ASCII COMMAND.
* 
* CHECK ASCIIMODE LOCAL ILLEGAL DECODE
* 
      CLA           INITIALIZE
      STA HOLDD      TEST DATA PATTERN
ALOP4 JSB INITF     INITIALIZE OBR LOGIC FOR OUTPUT.
      LDA HOLDD     GET TEST PATTERN. 
      CPA THREE     IS THIS A LOCAL COMMAND?
      JMP LOPA4      YES! DON'T TEST. 
E220  JSB ASCOT     CHECK ASCII COMMAND.
      CPA B37       END OF DATA PATTERNS? 
      JMP NXAL4      YES! GO DO NEXT TEST.
      JSB DECEC      NO! DECREMENT ERROR CODE.
LOPA4 ISZ HOLDD     UPDATE TEST PATTERN.
      JMP ALOP4     GO DO NEXT TEST PATTERN.
* 
* CHECK ASCIIMODE DECODE OF SET ATN 
* 
NXAL4 JSB SDMOD     CLEAR ATTENTION.
      LDA BIT7      SET UP
      STA MASK        TEST MASK.
      CLB           SET EXPECTED STATUS.
      STB HOLDD     INITIALIZE TEST DATA. 
ALOP5 JSB INITF     INITIALIZE OBR LOGIC FOR OUTPUT.
      LDA HOLDD     GET TEST DATA.
      CPA B33       IS THIS AN IFC COMMAND? 
      JMP NXAL5      YES! DON'T TEST DATA.
      CPA B16       IS THIS A SET ATN COMMAND?
      JMP NXAL5      YES! DON'T TEST DATA.
E221  JSB ASCOT     CHECK ASCII COMMAND.
      CPA B37       END OF DATA PATTERNS? 
      JMP NXALT      YES! GO DO NEXT TEST.
      JSB DECEC     DECREMENT ERROR COUNT.
NXAL5 ISZ HOLDD     UPDATE DATA PATTERN.
      JMP ALOP5     GO TEST NEXT PATTERN. 
      SKP 
* 
* CHECK ABILITY TO GENERATE AN ASCIIMODE
*  SET ATN. 
* 
NXALT JSB INITF     INITIALIZE OBR LOGIC FOR OUTPUT.
      LDB BIT7      SET EXPECTED STATUS.
      LDA B16       OUTPUT AN ASCIIMODE SET ATN.
E222  JSB ASCOT     CHECK ASCII COMMAND.
* 
* CHECK ASCIIMODE DECODE OF CLEAR ATN.
* 
      CLA           INITIALIZE
      STA HOLDD      TEST DATA PATTERN. 
ALOP6 JSB INITF     INITIALIZE OBR LOGIC FOR OUTPUT.
      LDA HOLDD     GET DATA PATTERN. 
      CPA B33       IS THIS AN IFC COMMAND? 
      JMP NXAL6      YES! DON'T TEST IT.
      CPA B17       IS THIS A CLEAR ATN COMMAND?
      JMP NXAL6      YES! DON'T TEST IT.
E223  JSB ASCOT     CHECK ASCII COMMAND.
      CPA B37       END OF DATA PATTERNS? 
      JMP NXTS6      YES! GO DO NEXT TEST.
      JSB DECEC      NO! DECREMENT ERROR COUNT. 
NXAL6 ISZ HOLDD     UPDATE DATA PATTERN.
      JMP ALOP6     DO NEXT DATA PATTERN. 
* 
* CHECK ABILITY TO GENERATE AN ASCIIMODE
*  CLEAR ATN
* 
NXTS6 JSB INITF     INITIALIZE OBR LOGIC FOR OUTPUT.
      CLB           EXPECTED STATUS.
      LDA B17       OUTPUT A CLEAR ATN COMMAND. 
E224  JSB ASCOT     CHECK ASCII COMMAND.
      SKP 
* 
* THIS SECTION CHECKS THE ASCIIMODE DAV OPERATION 
* 
* CHECK ILLEGAL DECODE OF DAV 
* 
      JSB CLCCF     CLEAR IFCFLG FF.
      JSB CTLSN     CLEAR TALK AND LISTEN.
      LDA BIT15     SET UP
      STA MASK       TEST MASK. 
      JSB CONT      SET ACTIVE,GENSRQEN 
      OCT 1605       AND ASCIIMODE. 
      STB HOLDD     INITIALIZE DATA PATTERN.
      LDB BIT15     GET EXPECTED STATUS(SRQFLG SET) 
ALOP7 JSB INITF     INITIALIZE OBR LOGIC FOR OUTPUT.
      LDA HOLDD     GET TEST PATTERN
      CPA TWO       IS THIS A REMOTE COMMAND? 
      JMP NXAL7      YES! DON'T TEST IT.
      CPA THREE     IS THIS A LOCAL COMMAND?
      JMP NXAL7      YES! DON'T TEST IT.
      CPA B16       IS THIS AN ATN COMMAND? 
      JMP NXAL7      YES! DON'T TEST IT 
      CPA B17       IS THIS A CLEAR ATN COMMAND?
      JMP NXAL7      YES! DON'T TEST IT.
      CPA B33       IS THIS AN IFC COMMAND? 
      JMP NXAL7      YES! DON'T TEST IT.
E225  JSB ASCOT     CHECK ASCII COMMAND.
      CPA B37       END OF DATA PATTERNS? 
      JMP NXTS7      YES! EXIT. 
      JSB DECEC      NO! DECREMENT ERROR CODE.
NXAL7 ISZ HOLDD     UPDATE DATA PATTERN.
      JMP ALOP7     GO TEST NEXT PATTERN. 
* 
* CHECK ASCIIMODE DAV AND BE GENERATED
* 
NXTS7 LDA BIT11     SET UP
      STA MASK        TEST MASK.
      CLB           GET EXPECTED STATUS.
      LDA TWO       OUTPUT AN ASCIIMODE REMOTE. 
E226  JSB CKDAV     GO CHECK FOR DAV. 
      LDA THREE     FORM AN ASCIIMODE LOCAL 
E227  JSB CKDAV     GO CHECK DAV EXECUTED.
      LDA B16       FORM ASCIIMODE SET ATN. 
E230  JSB CKDAV     CHECK DAV EXECUTED. 
      LDA B17       FORM ASCIIMODE CLEAR ATN. 
E231  JSB CKDAV     CHECK DAV EXECUTED. 
      LDA B33       FORM ASCIIMODE IFC. 
E232  JSB CKDAV     CHECK DAV EXECUTED. 
      JSB TIMOT     ALLOW TIME FOR IFC TO SETTLE. 
      JMP *+1,I     CONTINUE TESTING
      DEF NXPAG      ON THE NEXT MEMORY PAGE. 
      SKP 
      ORG 4000B 
* 
* THIS SECTION TESTS THE ABILITY OF THE IBI 
*  TO TRANSMIT DATA TO AND FROM THE IB USING
*   THE TALK-LISTEN MODE. 
* 
NXPAG JSB CLCCF     CLC IBI,C.
      JSB NOTWM     SET ERROR REPORTING MODE. 
      JSB CONT      SET ATN,TALK,LISTEN 
      OCT 20375      AND ORAFLGEN.
      JSB INITF     INITIALIZE OBR LOGIC. 
      LDA B252      GET DATA PATTERN. 
      JSB DATOT     TALK-LISTEN SHOULD SET ORAFLAG. 
      JSB SDMOD     SET DATA MODE.
      JSB SFSIB     DID ORA FLAG SET? 
E233  DEF ORAFL      NO! REPORT ERROR.
      JSB CONT      SET 
      OCT 40200       IRLFLGEN. 
      JSB CLCCF     CLC IBI,C.
      JSB SFSIB     IRL FLAG SHOULD SET FLAG. 
E234  DEF IRLFL      NO! REPORT ERROR.
      JSB PRWMS     SET ERROR REPORTING MODE. 
      JSB SINPD     CLOCK DATA IN FROM IB.
      LDB B252      GET EXPECTED DATA.
      STB CTLWD     SAVE DATA OUTPUT WORD.
      JSB CDATA     WAS DATA TRANSFERRED? 
E235  DEF HANDS      NO! REPORT ERROR.
      JSB NOTWM     SET ERROR REPORTING MODE. 
      JSB STALK     CLEAR LISTEN ONLY.
      LDA B125      DATA SHOULD 
      JSB DATOT      NOT TRANSFER WITH NO LISTEN. 
      JSB CLCCF     CLC IBI,C.
      JSB SFCIB     IRL FLAG SHOULD NOT SET.
E236  DEF IRLFL      IT DID! REPORT ERROR.
      JSB CONT      SET 
      OCT 20200      ORAFLGEN.
      JSB SFCIB     ORA FLAG SHOULD NOT SET.
E237  DEF ORAFL      IT DID! REPORT ERROR.
      JSB PRWMS     SET ERROR REPORTING MODE. 
      JSB CDATA     OBR SHOULD BE UNCHANGED.
E240  DEF HANDS      NO! REPORT ERROR.
      JSB CTLSN     CLEAR TALK AND LISTEN.
      JSB SLSTN     SET LISTEN,CLEAR TALK.
      JSB DATOT     OUTPUT COMPLEMENTED PATTERN.
      JSB CDATA     CHECK NO XFER OCCURRED. 
E241  DEF HANDS      IT DID! REPORT ERROR.
      SKP 
* 
* THIS SECTION CHECKS FOR A SHORT BETWEEN REN AND DIO8
* 
      LDA BIT8      FORM
      STA MASK       TEST MASK. 
      JSB CONT      SET ATN 
      OCT 65         AND ACTIVE.
      CCA           PUT ZEROS ONTO
      JSB DATOT       THE IB (ONES IN THE OBR). 
      CLB           EXPECTED STATUS.
      JSB STAT      DOES DIO8 DRAG REN LOW? 
E242  DEF RENF       YES! REPORT FAILURE. 
      SKP 
* 
* THIS SECTION TESTS THE
*  DMA RELATED LOGIC OF THE IBI.
* 
      JSB NOTWM     SET ERROR REPORTING MODE. 
      LDA CPTO      GET COMPUTER OPTIONS WORD.
      AND FOUR      MASK TO DMA OPTION BIT. 
      SZA,RSS       IS DMA PRESENT? 
      JMP NODMA      NO! DON'T RUN THIS SECTION.
      JSB LIAIB     CLEAR IRL FF. 
      JSB INITF     CLEAR DMAOUTREQFLG. 
      JSB CG3MC     CLEAR DMARWSEL FF. SRQ NOW HIGH.
      JSB ITDMA     INITIALIZE DMA. 
      SFS DMA       DMA DONE? 
E243  JSB DMAER      NO! NO SRQ FROM IBI. 
      ISZ ERRCD     UPDATE ERROR CODE.
      JSB CLCCF     SET DMAOUTREQFLG. 
      JSB ITDMA     INITIALIZE DMA. 
      SFC DMA       NO XFER WITH NO SRQ?
E244  JSB DMAER      NO! ILLEGAL SRQ. 
      ISZ ERRCD     UPDATE ERROR CODE.
      JSB CONT      SET 
      OCT 2200        DMARWSEL. 
      JSB INITF     CLEAR DMAOUTREQFLG. 
      SFC DMA       NO XFER SHOULD'VE OCCURRED. 
E245  JSB DMAER      IT DID! ILLEGAL SRQ. 
      ISZ ERRCD     UPDATE ERROR CODE.
      JSB CLCCF     SET DMAOUTREQFLG. 
      JSB CG3MC     CLEAR DMARWSEL. 
      JSB SINPD     SET IRL FLAG. 
      SFC DMA       NO XFER SHOULD OCCUR. DID IT? 
E246  JSB DMAER      YES! ILLEGAL SRQ.
      ISZ ERRCD     UPDATE ERROR CODE.
      JSB CONT      SET 
      OCT 2200       DMARWSEL.
      SFS DMA       FLAG SHOULD BE SET FROM SRQ.
E247  JSB DMAER     NO SRQ. 
      ISZ ERRCD     UPDATE ERROR CODE.
      SKP 
* EXECUTE THE PRESET IBI TEST 
* 
NODMA LDA B257      UPDATE
      STA ERRCD      ERROR CODE.
      LDB B8A12     SUPPRESS OPERATOR 
      JSB SWRT       INTERVENTION TESTS?
      JMP CHK2I-1    YES! GO HALT.
      LDB BIT10      NO! SUPPRESS NON-
      JSB SWRT            ERROR MESSAGES? 
      JMP DOPRE           YES! GO HALT. 
      CLA,CLE       READY FORMATTER.
      LDB PRMSG     PRESET MESG POINTER.
      JSB FMTR,I    PRINT MESSAGE.
DOPRE JSB CONT      SET 
      OCT 3          REN. 
      JSB DEBON     DEBOUNCE SW.REG.
H256  OCT 106056    PRESS PRESET,RUN. 
      LDB B31       GET EXPECTED STATUS.
      JSB STAT      PRESET WORK?
E257  DEF PRERR      NO! REPORT ERROR.
      RSS 
      SKP 
* THIS SECTION VERIFIES PROPER OPERATION OF THE 
*  PPREQ AND PPLEX LOGIC. 
* 
      ISZ ERRCD     UPDATE ERROR CODE.
CHK2I LDB BIT3
      JSB SWRT      NEW IBI?
      RSS            YES! DO PPREQ TEST.
      JMP FINIT      NO! EXIT.
      JSB CLCCF     CLEAR IBI FLAG. 
      JSB IFCMD     SET IFCFLG. 
      JSB TIMOT     ALLOW TIME FOR IFC TO SETTLE. 
      JSB CG3MC     CLEAR ALL FLG ENABLES.
      JSB SACTV     SET ACTIVE. 
      JSB SPPMD     SET PPLEX.
      JSB SFSIB     PPLEX+PPREQ SHOULD SET FLAG.
E260  DEF PPREQ      NO? REPORT ERROR.
      JSB CACTV     CLEAR ACTIVE. 
      JSB CLCCF     CLEAR IBI FLAG. 
      JSB IFCMD     SET IFCFLG. 
      JSB TIMOT     ALLOW TIME FOR IFC TO SETTLE. 
      JSB CACTV     CLEAR ACTIVE. 
      JSB SPPMD     SET ATN AND EOI.
      JSB SFCIB     DID ILLEGAL PPLEX OCCUR?
E261  DEF PPREQ      YES! REPORT ERROR. 
      JSB SEOI      CLEAR ATN.
      JSB SACTV     SET ACTIVE. 
      JSB SFCIB     PPLEX LOW WITH ATN LOW? 
E262  DEF PPREQ      NO! REPORT ERROR.
      JSB SATN      SET ATN. CLEAR EOI. 
      JSB SFCIB     PPLEX LOW WITH EOI LOW? 
E263  DEF PPREQ      NO! REPORT ERROR.
      JSB CLCCF     CLEAR IFCFLG. 
      JSB SPPMD     SET ATN AND EOI.
      JSB SFCIB     PPREQ LOW WITH PPPID=0? 
E264  DEF PPREQ      NO! REPORT ERROR.
      SKP 
* END OF TEST 
* 
FINIT LDA IBH1      GET FIRST SC. 
      CPA IBH2      ONLY ONE SC UNDER TEST? 
      JMP CABTS      YES! GO TO CABLE TEST. 
      LDA PSIND     GET PASS INDICATOR. 
      SZA,RSS       IS THIS THE LAST PASS?
      JMP MANL,I     NO! GO DO SECOND PASS. 
      HED CABLE TEST
* 
* CABLE TEST SECTION
* 
*  SINCE ANY SHORTS IN THE CABLE WOULD HAVE BEEN CAUGHT 
*   BY THE PREVIOUS SECTION OF DIAGNOSTIC, THIS TEST SECTION
*    ONLY TESTS THE CABLE'S ABILITY TO TRANSMIT A ZERO LOGIC
*     LEVEL FOR EACH SIGNAL.
* 
CABTS LIA 1         GET SW. REG. OPTIONS. 
      SLA,RSS       IS BIT 0 SET? 
      JMP CKH77      NO! GO CHECK FOR END OF TEST.
      LDA B250      UPDATE
      STA ERRCD      ERROR CODE.
      LDB IBH1      GET FIRST SC. 
      CPB IBH2      ARE THE SC'S THE SAME?
      RSS            YES! GO HALT.
      JMP DOCTS      NO! DO CABLE TEST. 
      JSB DEBON     INSURE NO SR BITS ARE PRESSED.
E250  OCT 106050    NO TEST WITH ONE SC.
      JMP CABTS     GO CHECK AGAIN. 
DOCTS LDA NIOTB     GET I-O INST. TABLE POINTER.
      JSB INTIO     GO UPDATE I-O INSTRUCTIONS. 
      ISZ ERRCD     UPDATE ERROR NUMBER.
* 
* THIS SECTION TESTS THE ABILITY OF THE 
*  CABLE TO TRANSMIT IFC. 
* 
      JSB PRWMS     SET ERROR REPORTING MODE. 
      JSB CONX      SET ACTIVE ON THE 
      OCT 5          FIRST IBI. 
      JSB IFCMD     SHOULD CLEAR ACTIVE ON FIRST IBI. 
      JSB TIMOT     ALLOW TIME FOR IFC TO SETTLE. 
      LDB BIT4      SET UP TEST 
      STB MASK        MASK. 
      CLB           FORM EXPECTED STATUS. 
      JSB STAT      DID IFC CLEAR ACTIVE? 
E251  DEF CABLF      NO! REPORT ERROR.
      SKP 
* 
* THIS SECTION TESTS THE ABILITY OF THE 
*  CABLING TO XMIT DATA AND TO HANDSHAKE. 
* 
      JSB LIAIB     INITIALIZE THE
      JSB CONX       SECOND IBI 
      OCT 7            FLAGS FOR DATA TRANSFER. 
      JSB CONT      SET ATN 
      OCT 65         AND ACTIVE ON SECOND IBI.
      LDA MYA2      GET SECOND IBI MYADDR.
      IOR B100      FORM TALK ADDRESS.
      JSB DATOT     OUTPUT IT TO THE IB.
      LDA MYA1      GET FIRST IBI MYADDR. 
      IOR B40       FORM LISTEN ADDRESS.
      JSB DATOT     OUTPUT IT TO THE IB.
      JSB SDMOD     SET DATA MODE.
      LDA MIN2      GET TEST PATTERN. 
CABLP STA PATTN     SAVE THE PATTERN. 
      AND B377      MASK TO LOWER 8 BITS. 
      STA SAVAH     SAVE BYTE FOR COMPARISON LATER. 
      JSB DATOT     OUTPUT PATTERN TO IB. 
      JSB LIAIB     SYNC DATA TRANSMISSION. 
      JSB LIAIB     BRING IN DATA FROM FIRST IBI. 
      CPA SAVAH     WAS IT THE SAME AS XMITTED? 
      JMP SK12       YES! CONTINUE NORMALLY.
      LDB SAVAH      NO! GET EXPECTED DATA. 
      JSB SENDM     REPORT ERROR. 
E252  DEF CABLF     DATA DIDN'T XMIT. 
SK12  LDA PATTN     GET TEST PATTERN. 
      RAL           ROTATE IT.
      CPA NBIT8     IS TEST DONE? 
      RSS            YES! SKIP TO NEXT TEST.
      JMP CABLP      NO! GO TEST NEXT PATTERN.
* 
* THIS SECTION TESTS THE ABILITY OF THE CABLING 
*  TO TRANSMIT REN. 
* 
      ISZ ERRCD     UPDATE ERROR CODE.
      LDB BIT8      GET EXPECTED STATUS.
      STB MASK      SET TEST MASK.
      JSB CONT      SET 
      OCT 3          REN ON SECOND IBI. 
      JSB STAT      DID FIRST IBI RECEIVE IT? 
E253  DEF CABLF      NO! REPORT ERROR.
      SKP 
* 
* THIS SECTION TESTS THE ABILITY OF THE 
*  CABLING TO TRANSMIT SRQ. 
* 
      JSB CLCCF     CLEAR SECOND IBI FLAG.
      JSB NOTWM     SET ERROR REPORTING MODE. 
IO.X3 CLC IBI,C     CLEAR IFCFLG ON FIRST IBI.
      JSB CONX      SET TALK AND LISTEN TO CLEAR
      OCT 100335     SRQFLG ON FIRST IBI. 
      JSB CONT      SET SRQEN AND OBRLFLG 
      OCT 1307       AND CLEAR TALK-LISTEN ON SECOND IBI. 
      JSB DATOT     SET OBRLFLG.
      JSB SFSIB     FIRST IBI FLAG SHOULD SET.
E254  DEF CABLF      NO! SRQ DID NOT XMIT.
* 
* THIS SECTION TESTS THE ABILITY OF THE 
*  CABLING TO TRANSMIT ATN. 
* 
      JSB PRWMS     SET ERROR REPORTING MODE. 
      LDB BIT7      SET UP TEST 
      STB MASK       MASK AND EXPECTED STATUS.
      JSB CONT      SET ATN ON
      OCT 65          SECOND IBI. 
      JSB STAT      DID FIRST IBI RECEIVE ATN?
E255  DEF CABLF      NO! REPORT ERROR.
CKH77 ISZ PASCT     UPDATE PASS COUNT.
      NOP           ROLLOVER PROTECTION.
* 
* END OF TEST 
* 
      LDB BIT10     SUPPRESS NON- 
      JSB SWRT        ERROR MESSAGES? 
      JMP CKIB         YES! GO HALT.
      CLE           FOR CONVERSION ROUTINE. 
      LDA PASCT     GET PASS COUNT. 
      LDB PASPT     GET STRING POINTER. 
      JSB O2AS,I    CONVERT PASS COUNT TO ASCII.
      CLA,CLE       READY FORMATTER.
      LDB PASSN     GET MESSAGE POINTER.
      JSB FMTR,I    PRINT PASS COUNT. 
CKIB  LDB BIT12     DOES OPERATOR WANT TO 
      JSB SWRT       LOOP ON TEST?
      JMP CMORG       YES! GO FLASH OVERFLOW. 
      JSB GETTM     SEE IF OPERATOR WANTS TS MODULE.
      LDA PASCT     GET PASS COUNT. 
HLT77 HLT 77B       END OF TEST.
      JMP STAR,I    GO TO START OF TEST.
      HED HPIB TROUBLESHOOTING MODULE 
* 
* THIS SECTION IS INCLUDED TO AID THE OPERATOR
*  IN TROUBLESHOOTING EITHER AN IBI OR AN IB DEVICE 
*   USING THE IBI AS SYSTEM CONTROLLER. 
* 
      ORG 5000B 
IBTSM LDB CONSC     GET CONSOLE SC. 
      SZB,RSS       IS THERE A CONSOLE? 
      JMP GOHT7      NO! GO HALT 77 FOR END OF TEST.
      LDB FOUR      DOES OPERATOR WANT TO 
      JSB SWRT      USE THE SECOND IBI SC?
      JMP GSCSC      YES! GET SECOND IBI SC.
      LDB IBH1       NO! GET FIRST IBI SC.
      RSS           SKIP SECOND SELECT CODE.
GSCSC LDB IBH2      GET SECOND SELECT CODE. 
      LDA IOTBL     GET IBI I-O INST TABLE PNTR.
      JSB INTIO     GO INITIALIZE IBI I-O INST'S. 
      CLA,CLE       READY FORMATTER.
      LDB TSINM     GET INTRODUCTION MESSAGE. 
      JSB FMTR,I    PRINT MESSAGE.
ESCRN JSB PCRLF     GO PRINT CR-LF. 
TYINL CLA,CLE       READY FORMATTER.
      LDB PRMPT     PRINT 
      JSB FMTR,I     PROMPT MESSAGE.
      JSB GCHAR     GO GET A CHARACTER. 
      CPA ASCA      IS IT AN "A" FOR ABORT? 
      JMP GOHT7      YES! GO HALT 77 FOR END OF TEST. 
      CPA ASCS      IS IT A "S" FOR STATUS REPORT?
      JMP PSTAT      YES! GO PRINT IBI STATUS.
      CPA ASCI      IS IT AN "I" FOR INPUT DATA?
      JMP PDATA      YES! GO GET DATA WORD FROM IBI.
      CPA B103      IS IT A "C" FOR CONTROL IBI.
      JMP GOCWD      YES! GO GET THE CONTROL WORD.
      CPA ASCD      IS IT A "D" FOR DATA OUTPUT?
      JMP GODWD      YES! GO GET DATA WORD. 
INPER CLA,CLE        NO! READY FORMATTER. 
      LDB ERMSG     PRINT 
      JSB FMTR,I     "INPUT ERROR" MESSAGE. 
      JMP TYINL     GO GET ANOTHER CHARACTER. 
      SPC 3 
GOCWD JSB FORMD     GO FORM THE CONTROL WORD FROM OPERATOR. 
      JSB STFIB     READY CONTROL MODE ON IBI.
      JSB DATOT     OUTPUT CONTROL TO IBI.
      JMP TYINL     GET NEXT CHARACTER. 
      SPC 3 
GODWD JSB FORMD     GO FORM DATA WORD FROM OPERATOR.
      JSB DATOT     OUTPUT DATA TO IBI. 
      JMP TYINL     GET NEXT CHARACTER. 
      SKP 
PSTAT JSB STFIB     SET IBI TO CONTROL MODE.
      JSB LIAIB     GET STATUS WORD FROM IBI. 
      JSB PRINT     GO PRINT IT ON TTY. 
      JMP TYINL     GET NEXT CHARACTER. 
      SPC 3 
PDATA JSB LIAIB     GET DATA WORD FROM IBI. 
      JSB PRINT     GO PRINT IT ON TTY. 
      JMP TYINL     GET NEXT CHARACTER. 
      SPC 3 
PRINT NOP 
      CLE           READY CONVERSION ROUTINE. 
      LDB BUFFR     SET BUFFER POINTER. 
      JSB O2AS,I    CONVERT NUMBER TO ASCII.
      CLA,CLE       READY FORMATTER.
      LDB BUFFR     SET BUFFER POINTER. 
      JSB FMTR,I    GO PRINT NUMBER.
      JMP PRINT,I   RETURN
      SPC 3 
FORMD NOP 
      LDA INPUT     GET INPUT BUFFER POINTER. 
      STA PNTR      SAVE IT.
      CLA           PUT 
      LDB MIN6       ZEROS
      STA PNTR,I      IN
      ISZ PNTR         THE
      INB,SZB           INPUT 
      JMP *-3            BUFFER.
      LDB MIN6      GET CHARACTER INPUT COUNT.
BADIN STB SAVPB     SAVE CHARACTER COUNT. 
      JSB GCHAR     GO GET A CHARACTER. 
      LDB SAVPB     RESTORE CHARACTER COUNT.
      SZA,RSS       DID OPERATOR PRESS LINE FEED? 
      JMP PRCES      YES! GO PROCESS INPUT NUMBER.
      CPA ASCE       NO! WAS E KEY PRESSED? 
      JMP ESCRN           YES! EXIT INPUT.
      STA SAVIN           NO! SAVE INPUT. 
      AND B170      IS INPUT
      CPA B60         A NUMBER <=7? 
      RSS            YES! GO PUT IT IN BUFFER.
      JMP INPER      NO! INPUT ERRORAND GET NEXT INPUT. 
      LDA SAVIN     RESTORE INPUT.
      STB SAVPT     SAVE CHAR. COUNT. 
      ADB EOBUF     FORM CHAR POINTER IN BUFFER.
      STA B,I       PUT CHAR IN BUFFER. 
      LDB SAVPT     RESTORE CHARACTER COUNT.
      INB,SZB       SIX CHARACTERS ENTERED? 
      JMP BADIN      NO! GO GET ANOTHER NUMBER. 
      JSB PCRLF     PRINT A CR-LF ON CONSOLE. 
      SKP 
PRCES LDB BUFFR     GET THE DESTINATION BUFFER PNTR.
      LDA INPUT     GET THE SOURCE BUFFER POINTER.
      STA LPNTR     SAVE IT.
      JSB STUFA     GO PACK SIX 
      JSB STUFA       ASCII CHARACTERS INTO 
      JSB STUFA        A THREE WORD BUFFER. 
      CCA,CLE       READY ASCII TO OCTAL CONVERSION.
      LDB BUFFR     GET ASCII BUFFER POINTER. 
      JSB ASCON,I   CONVERT.
      JMP FORMD,I   EXIT ROUTINE. 
      SPC 3 
STUFA NOP 
      LDA LPNTR,I   GET AN ASCII NUMBER.
      ALF,ALF       SHIFT IT TO UPPER BYTE. 
      ISZ LPNTR     UPDATE SOURCE BUFFER PNTR.
      IOR LPNTR,I   MERGE IN NEXT ASCII NUMBER. 
      STA B,I       PUT PACKED DATA IN DEST. BUFFER.
      ISZ LPNTR     UPDATE SOURCE BUFFER POINTER. 
      INB           UPDATE DESTINATION BUFFER POINTER.
      JMP STUFA,I   RETURN. 
      SPC 3 
GCHAR NOP 
      CLA,INA       SET UP FOR ONE CHAR. INPUT. 
      STA PARAM     CLEAR UPPER BYTE OF INPUT BUFFER. 
      LDB CHRIN     GET POINTER TO INPUT BUFFER.
      JSB SLOIN,I   GO GET A CHARACTER FROM CONSOLE.
      LDA PARAM     GET INPUT CHARACTER.
      ALF,ALF       SHIFT IT TO LOWER BYTE. 
      AND B177      STRIP OFF ANY PARITY. 
      JMP GCHAR,I   RETURN. 
      SPC 3 
GOHT7 LDB BIT12     TEST FOR LOOP 
      JSB SWRT       ON DIAGNOSTIC. 
      JMP CMORG      YES? GO LOOP.
      JMP HLT77      NO? GO HALT 77B. 
FWAA  EQU * 
      END 
FWAA  EQU * 
      END 
      STA *+1       PUT HALT IN LINE. 
      HLT 0         ERROR HALT. 
      ISZ SENDM     MOVE PAST CONTROL WORD
      JMP SENDM,I    OF JSB AND RETURN. 
                                                                                                                                                                                                                