ASMB,A,B,L,C
      HED REMOTE UCKT I\F DIAGNOSTIC 09610-16001 04475 -TLD-
      ORG 100B
* 
* 
* THIS IS A DIAGNOSTIC PROGRAM DESIGNED TO VERIFY AND 
*  TROUBLESHOOT THE SERIAL REMOTE MICROCIRCUIT INTERFACE
*  HP PART NO. 09610-60044.  COMPLETE OPERATING INSTRUCTIONS
*  CAN BE FOUND IN THE APPROPRIATE MANUALS. 
* 
* 
*      ABSOLUTE TAPE      09610-16001 
*      SOURCE TAPE        09610-18001 
* 
* 
* 
* 
* 
* STARTING ADDRESS WITH CONFIGURATION IS 100(8) 
* RESTART ADDRESS WITHOUT CONFIGURATION IS 2000(8)
* 
* 
* 
* WHEN STARTING AT 100 PUT SELECT CODE OF 12665 CARD IN 
*  SWITCH REGISTER BITS 5-0 
* 
* 
* 
* 15!14!13!12!11!10!9!8!7!6!5!4!3!2!1!0 
* 
* USER CONFIGURATION (STARTING ADDRESS 100) 
* 
* BIT 5-0= SELECT CODE OF 12665 CARD
* 
* HALT DISPLAYING 107000 - PUT IN INITIAL SWITCH SETTINGS 
* 
* HALT DISPLAYING 103000 - ALLOWS DUMP - PUSH RUN TO GO 
* 
* RUN TIME SWITCH SETTINGS - USED IF BIT 0 IS 0 
* 
* BIT 15 = 1 - HALT DIAGNOSTIC AT END OF CURRENT TEST 
* BIT 14 = 1 - SUPRESS ERROR HALTS
* BIT 13 = 1 - LOOP ON CURRENT TEST 
* BIT 12 = 1 - HALT AT END OF CURRENT PASS OF ALL TESTS 
* BIT 11 = 1 - RUN BASIC TEST 
* BIT 10 = 1 - RUN LOOP TEST
* BIT  9 = 1 - RUN DEBUG TEST 
* BIT  8 = 1 - IF BIT 9 = 1 THEN GET DATA WORDS (ELSE IGNORE) 
* BIT  7 = 1 - IF BIT 9 = 1 THEN DON'T WAIT FOR RETURN WORD 
* BIT  6 = 1 - SUPRESS ERROR MESSAGES 
* BIT  5 = 1 - SUPRESS ALL MESSAGES 
* BIT  2 = 1 - TIMED MODE FOR TRANSMISSION TEST (IF 2-WORD MODE)
* BIT  1 = 1 - TWO WORD MODE (0 = 1-WORD MODE) EXCEPT FOR BASIC TEST
      SKP 
* HALT CODES: 
*       1060XX - TRAP CELL HALT IN CELL XX
*       103001 - INVALID USER SELECT CODE 
*       103007 - ATTEMPT TO ENTER DATA W/ALL MESSAGES SUPRESSED 
*       107000 - SET INITIAL SWITCH SETTING 
*       103000 - HALT TO ALLOW DUMP (END OF USER CONFIGURATION) 
*       102001 - NO RETURN WORD WHEN EXPECTED 
*       102002 - UNEXPECTED RECEPTION IN PROCESS
*       102003 - PARITY ERROR DETECTED
*       102004 - MISSED RECEPTION BUT NO PARITY INDICATION
*       102005 - DATA COMPARE ERROR 
*       102006 - NO END OF FIRST WORD FLAG
*       102007 - ERROR COUNT OVERFLOW 
*       102010 - TIMED RETURN FLAG UNEXPECTEDLY SET 
*       102011 - TIMED RETURN FLAG UNEXPECTEDLY CLEAR 
*       102012 - UNEXPECTED RETURN WORD RECEIVED
* 
*       102076 - END OF CURRENT TEST
*       102077 - END OF PASS
      SKP 
* 
* NOTE:  ALL TESTS ASSUME THAT A DIAGNOSTIC HOOD CONNECTOR
*  IS INSTALLED ON THE MICROCIRCUIT CONNECTOR OF THE
*  REMOTE I/O BOARD.  THIS CONNECTOR HAS EACH OF ITS OUTPUT 
*  BITS STRAPPED TO ITS CORRESPONDING INPUT BITS PLUS THE DEVICE
*  COMMAND LINE STRAPPED TO THE FLAG IN LINE.  (REFER TO
*  MANUAL FOR PIN NUMBERS)
* 
* TO RUN THE FOLLOWING TESTS, SWITCH OPTIONS MUST BE ESTABLISHED
*  AT RUN TIME.  TO AVOID ERRORS, SWITCH OPTIONS FOR A PARTICULAR 
*  TEST SHOULD BE SET UP BEFORE ENABLING THAT TEST.  SEE
*  DESCRIPTION OF SWITCH OPTIONS. 
* 
* 
*BASIC REMOTE I/O TEST- 
* 
* JUMPERS:
*   W0  -  DON'T CARE - TESTS RUN FASTEST IN POSITION A 
*   W1  -  IN 
*   W2  -  SAME AS W3 (BOTH IN OR BOTH OUT) 
*   W3  -  SAME AS W2 (BOTH IN OR BOTH OUT) 
*   W4  -  IN 
*   W5  -  OUT
*   W6  -  OUT IF W10 IN, IN IF W10 OUT 
*   W7  -  DON'T CARE 
*   W8  -  SAME PARITY AS 12665 (IN-EVEN OUT-ODD) 
*   W9  -  IN IF W10 IN, OUT IF W10 OUT 
*   W10 -  DON'T CARE 
*   W11 -  IN 
* 
* TEST SEQUENCE:
*   1.OUTPUT A 0 WORD WITH ENCODE.  RETURN WORD SHOULD MATCH
*     TRANSMITTED WORD (EXCEPT BIT 14 WHICH IS NOT CHECKED.)
*   2 REPEAT STEP 1 WITH AN ALL 1'S WORD. 
*   3.REPEAT STEP 1 WITH BOTH ENCODE AND TIMED RETURN. CHECK
*     TIMED RETURN FLAG IN RETURN WORD (BIT 14).  TIMED RETURN
*     FLAG SHOULD NOT BE SET. 
*   4.REPEAT STEP 3 USING ALL 1'S WORD. 
*   5.REPEAT STEP 1 WITH TIMED RETURN ONLY. CHECK TIMED RETURN
*     FLAG IN RETURN WORD (BIT 14).  TIMED RETURN FLAG SHOULD 
*     BE SET. 
*   6.REPEAT STEP 5 USING ALL 1'S WORD. 
*   7.REPEAT STEP 1 WITH NO ENCODE OR TIMED RETURN.  NO RETURN
*     WORD SHOULD BE RECEIVED.
*   8.REPEAT STEP 7 USING ALL 1'S WORD. 
* 
* 
*TRANSMISSION LOOP TEST 
* 
* JUMPERS:
*   W0  -  DON'T CARE - TESTS RUN FASTEST IN POSITION A 
*   W1  -  DON'T CARE 
*   W2  -  SAME AS W3 (BOTH IN OR BOTH OUT) 
*   W3  -  SAME AS W2 (BOTH IN OR BOTH OUT) 
*   W4  -  OUT
*   W5  -  DON'T CARE IF W1 OUT.  IF W1 IN THEN OUT TO CHECK
*           TIMED RETURN. 
*   W6  -  OUT IF W10 IN, IN IF W10 OUT 
*   W7  -  DON'T CARE 
*   W8  -  SAME PARITY AS 12665 (IN-EVEN OUT-ODD) 
*   W9  -  IN IF W10 IN, OUT IF W10 OUT 
*   W10 -  DON'T CARE 
*   W11 -  IN 
* 
* TEST SEQUENCE:
*     1.A WORD IS TRANSMITTED TO THE REMOTE I/O BOARD WITH ENCODE 
*       OR, OPTIONALLY IN 2-WORD MODE, A TIMED RETURN REQUEST.
*     2.A RETURN WORD IS EXPECTED FROM THE REMOTE I/O CARD. 
*       WHEN IT IS RECEIVED IT IS COMPARED TO THE WORD SENT AND 
*       SHOULD BE EQUAL.
*     3.THE LAST TRANSMITTED DATA WORD IS INCREMENTED BY 1.  IF 
*       NOT EQUAL TO 0 THEN RETURN TO STEP 1.  THE DATA WORD WAS
*       INITIALLY 0 SO THIS RESULTS IN ALL 65536 BIT COMBINATIONS 
*       BEING USED AS DATA WORDS. 
*     4.EACH SEQUENCE OF 65536 DATA WORDS IS A CYCLE.  AT THE 
*       END OF A CYCLE THE CYCLE NUMBER AND A DATA SUMMARY FOR
*       THAT CYCLE ARE PRINTED. 
* 
*TROUBLESHOOTING AID
* 
* JUMPERS:
*   -NO SPECIFIC JUMPER CONFIGURATION IS REQUIRED.
*    JUMPERS HAVE THE FOLLOWING POSSIBLE POSITIONS: 
*        W0   -  A             BIT TIME=1US 
*             -  B             BIT TIME=2US 
*             -  C             BIT TIME=4US 
*             -  D             BIT TIME=8US 
*             -  E             BIT TIME=16US
*             -  F             BIT TIME=32US
*        W1   -  IN            2-WORD MODE (6940) 
*             -  OUT           1-WORD MODE (2313) 
*        W2   -  IN            + TRUE OUT 
*             -  OUT           GND TRUE OUT 
*        W3   -  IN            + TRUE IN
*             -  OUT           GND TRUE IN
*        W4   -  IN            BIT14=TIMED REQ. INDICATOR 
*             -  OUT           BIT14=DEVICE BIT 14
*        W5   -  IN            NO TIMED REQUEST 
*             -  OUT           TIMED REQ. IF NO ENCODE AND TF BIT = 1 
*        W6   -  IN            SET REQ. FF ON + EDGE OF FLAG
*             -  OUT           SET REQ. FF ON - EDGE OF FLAG
*        W7   -  IN            ALWAYS CLEAR REQ. (CLF)
*             -  OUT           CLEAR REQ. DEPENDS ON CLF BAR
*        W8   -  IN            EVEN PARITY
*             -  OUT           ODD PARITY 
*        W9   -  IN            RESET ENCODE ON + EDGE OF FLAG 
*             -  OUT           RESET ENCODE ON - EDGE OF FLAG 
*        W10  -  IN            + TRUE ENCODE
*             -  OUT           GND TRUE ENCODE
*        W11  -  IN            SYSTEM NORMALIZE DISABLE (6940)
*             -  OUT           SYSTEM NORMALIZE ENABLE  (2313)
* 
* 
* SWITCH OPTIONS: 
*   A MORE DETAILED DESCRIPTION OF SWITCH OPTIONS FOR THIS SECTION
*   IS PRESENTED HERE:
*     SWITCH 1 - SHOULD BE ON IF THE CARD IS SET FOR 2-WORD MODE, 
*                OFF IF SET FOR 1-WORD MODE 
*     SWITCH 7 - IF ON WILL NOT WAIT FOR RETURN WORD FROM REMOTE
*                I/O CARD AFTER A TRANSMISSION.  IF OFF WILL WAIT.
*     SWITCH 8 - WHEN SET ON REQUESTS SYSTEM ATTENTION.  WILL BE
*                AUTOMATICALLY TURNED OFF WHEN REQUEST FOR
*                ATTENTION IS RECOGNIZED.  SYSTEM RESPONSE WILL BE
*                TO PRINT CURRENT VALUES OF USER SPECIFIED
*                PARAMETERS AND WAIT FOR NEW VALUES TO BE ENTERED.
*                REQUEST FOR NEW PARAMETERS WILL BE OF THE FORM:
*                ZZZZ=XXXXXX >
* 
*                WHERE ZZZZ WILL BE "DATA","OPTS", OR "MASK"
*                 CORRESPONDING TO A REQUEST FOR A NEW DATA WORD
*                 A NEW OPTIONS WORD, OR A NEW MASK WORD. 
*                WHERE XXXXXX WILL BE AN OCTAL NUMBER REPRESENTING
*                 THE CURRENT VALUE OF THE SPECIFIED PARAMETER. 
*                WHERE > IS A PROMPT INDICATING THE SYSTEM IS 
*                 READY TO ACCEPT A NEW OCTAL NUMBER TO REPLACE 
*                 THE CURRENT VALUE.
*                ANY VALID OCTAL NUMBER MAY BE ENTERED.  ENTRY
*                 ERRORS WILL BE NOTED BY ? >.  ONLY BITS 1,2,
*                 AND 3 OF "OPTS" ARE SIGNIFICANT.  ALL OTHERS
*                 WILL BE MASKED BEFORE REPLACING CURRENT VALUE.
*                 IF NO NUMBER IS ENTERED (ONLY CR-LF) THEN 
*                 CURRENT VALUE IS UNDISTURBED. 
*                SINCE OPTIONS WORD IS NOT USED IN 1-WORD MODE, 
*                 IT WILL NOT BE ASKED FOR UNLESS SWITCH 1 IS 1.
* 
* 
* 
*INSTRUCTIONS FOR CHECKING OPERATION OF SYSTEM NORMALIZE TRAP AND 
* OPTIONAL INHIBIT CLEAR FLAG 
* 
* JUMPERS:
*   W0  -  DON'T CARE - TESTS RUN FASTEST IN POSITION A 
*   W1  -  OUT
*   W2  -  SAME AS W3 (BOTH IN OR BOTH OUT) 
*   W3  -  SAME AS W2 (BOTH IN OR BOTH OUT) 
*   W4  -  IN 
*   W5  -  OUT
*   W6  -  OUT IF W10 IN, IN IF W10 OUT 
*   W7  -  OUT
*   W8  -  SAME PARITY AS 12665 (IN-EVEN OUT-ODD) 
*   W9  -  IN IF W10 IN, OUT IF W10 OUT 
*   W10 -  DON'T CARE 
*   W11 -  OUT
* 
* 1. LOOP ON TROUBLESHOOTING AID TEST WITH SWITCH 1 OFF AND:
*     DATA = 140001 
*     MASK = 0
* 2. OBSERVE WITH OSCILLISCOPE SIGNAL ON TEST POINT 20. 
*     SHOULD SEE 2 PULSES ABOUT 20 NS IN DURATION SEPARATED BY ABOUT
*     4 US.  THE PULSES WILL BE PLUS TRUE IF ENCODE IS
*     SET AS PLUS TRUE, GROUND TRUE IF ENCODE IS SET AS 
*     GROUND TRUE.  PRESENCE OF THE TWO PULSES VERFIES
*     OPERATION OF THE SYSTEM NORMALIZE TRAP. 
* 
* EXIT TROUBLESHOOTING LOOP, TURN ON SWITCH 1, INSTALL JUMPERS
*  W1 AND W11, RE-ENTER TROUBLESHOOTING LOOP. 
* 
* SET OPTS=2
* 3. OBSERVE THE SIGNAL ON TEST POINT 3. SHOULD BE A GROUND 
*     TRUE PULSE WHOSE DURATION IS ONE BIT TIME (AS DETERMINED
*     BY BIT TIME JUMPER) 
* 4. SET OPTS = 12. AGAIN OBSERVE SIGNAL ON TEST POINT 3. 
*     SIGNAL SHOULD ALWAYS REMAIN HIGH. 
* 5. INSTALL W7.  SHOULD NOW AGAIN BE A GROUND TRUE 
*     PULSE OBSERVABLE AT TEST POINT 3. 
      SKP 
      SUP 
      ORG 100B
A     EQU 0 
B     EQU 1 
SC    EQU 0 
      JMP BEGIN 
PTRDR EQU 101B
FLIST EQU 102B
LIST  EQU 103B
KYBRD EQU 104B
      ORG 105B
FWA   ABS FWAVL 
LWA   EQU 106B
ISWR  EQU 120B
TIMER EQU 121B
SWRCK EQU 122B
I2ASC EQU 123B
O2ASC EQU 124B
ASC2N EQU 125B
FRMTR EQU 127B
      SKP 
      ORG 130B
BEGIN EQU * 
      CLC 0,C       TURN OF I/O SYSTEM
GETSC EQU * 
      LIA 1         READ SELECT AND OPTIONS FROM SWR
      LDB A         SAVE IN B 
      AND B77       MASK SELECT CODE
      STA USC       SAVE USER SELECT CODE 
      ADA DM7       IS IT LESS THAN 10(BASE 8)
      SSA,RSS 
      JMP SCOK      SELECT CODE >= 10(8)
BADSC HLT 1,C       TELL OPERATOR TO TRY AGAIN
      JMP GETSC     GET NEXT TRY
SCOK  EQU * 
      LDA TCHLT     GET BASIC TRAP CELL HALT
      LDB D2        INITIALIZE STORE POINTER
LDTCS EQU * 
      STA B,I       STORE TRAP CELL HALT
      INA           MOVE
      INB            TO NEXT CELL 
      CPB B100      DONE? 
      RSS           YES - SKIP
      JMP LDTCS     NO - DO NEXT CELL 
      LDB IOADR     FETCH ADDRESS OF I/O TABLE
      STB PNTR      SET UP POINTER
SLOOP EQU *         I/O CONFIGURATION LOOP (USER CARD - 12771)
      LDB PNTR,I    GET I/O INSTRUCTION ADDR
      SZB,RSS       IF 0 THEN 
      JMP SDONE       DONE
      LDA B,I       GET I/O INSTRUCTION 
      AND SCMSK     MASK OUT S.C. 
      IOR USC       PUT IN USER SELECT CODE 
      STA B,I       PUT INSTRUCTION BACK
      ISZ PNTR      MOVE ON TO NEXT 
      JMP SLOOP     DO NEXT 
SDONE EQU * 
      CLA 
      OTA 1         CLEAR SWR 
      OCT 107000    HALT WAITING FOR INITIAL SWR
      LIA 1         FETCH SWR 
      STA ISWR      SET AS INITIAL FOR DUMP 
      CLA 
      OTA 1         CLEAR SWR 
      HLT 0,C       HALT TO ALLOW FOR DUMP
      JMP *+1,I 
ASTRT ABS 2000B 
      SKP 
OUTWT NOP 
      STA CDATA     SAVE DATA AS CURRENT DATA 
      LDB MODE      CHECK FOR 2 WORD OR 1 WORD MODE 
      SSB 
      JMP TWORD     2-WORD MODE 
OWORD EQU *         1-WORD MODE 
SC001 CLC SC,C      PUT 12771 IN REC. MODE
SC002 LIB SC,C      INITIALIZE CARD 
SC003 LIB SC         .....
SC004 OTA SC        OUTPUT DATA 
      JSB WAIT2     WAIT 2 MS 
      LDB WAIT?     SEE IF WAITING FOR FLAG 
      SSB,RSS       (-1=WAITING)
      JMP OUTWT,I   NOT WAITING FOR FLAG SO RETURN
SC005 SFS SC        CHECK FOR RETURN WORD 
      JMP NRTRN     NO RETURN WORD - ERROR
      JSB CKRTN     CHECK RETURN WORD FOR PARITY,ETC
      JMP OUTWT,I   RETURN
NRTRN EQU * 
      JSB NRTN      DO ERROR THING
      JMP OUTWT,I   RETURN
TWORD EQU * 
      LDA CDATA     PICK UP CURRENT DATA
      CLB           SET DATA BIT 15 IN WORD 1 
      SSA            .....
      INB             ..... 
      IOR SIGN      TURN ON BIT 15 IN WORD 2
      STA WORD2     SAVE TO SEND LATER
      LDA B         FORM WORD 1 
      IOR OPTNS     PUT IN OPTION BITS
SC006 CLC SC,C      PUT 12771 IN REC. MODE
SC007 LIB SC,C      INITIALIZE CARD (CLEARS FLAG) 
SC008 LIB SC         .....
SC009 CLC SC        PUT 12771 IN XMIT MODE
SC010 SFS SC        WAIT FOR FLAG 
      JMP *-1 
SC011 OTA SC        OUTPUT WORD 1 
      JSB WAIT2     WAIT 2 MS 
SC012 SFS SC        CHECK FOR END OF XMIT FLAG
      JMP NOFST     SOMETHING HAPPENED TO FIRST WORD
      LDA WORD2     GET SECOND WORD 
      JMP OWORD     OUTPUT IT LIKE 1 WORD 
NOFST EQU * 
      JSB NFRST     DO ERROR THING
      JMP OUTWT,I   RETURN
      SKP 
CKRTN NOP 
SC013 LIA SC,C      GET STATUS
SC014 LIB SC        GET DATA
      STB RDATA     SAVE READ DATA
      STA STATS     SAVE STATUS 
      AND D4        CHECK RECEPTION IN PROCESS BIT
      SZA            BETTER BE ZERO 
      JSB UXRIP     UNEXPECTED RECEPTION IN PROCESS 
      LDA STATS     FETCH SAVED STATUS
      SSA           CHECK FOR PARITY ERROR
      JSB PRITY     DO ERROR THING
      LDA STATS     FETCH SAVED STATUS
      RAR,SLA       CHECK MISSED RECEPTION BIT
      JSB MISSD     DO ERROR THING
      LDA RDATA     GET READ DATA 
      XOR CDATA     COMPARE WITH SENT DATA
      AND DCMP?       UNDER MASK
      SZA           BETTER BE EQUAL 
      JSB DCMP      DO ERROR THING
      JMP CKRTN,I   RETURN
      SPC 5 
WAIT2 NOP 
      LDA D2        SET TIMER FOR 2 MS
      JSB TIMER,I   CALL TIMER
      JMP WAIT2,I   RETURN
      SPC 5 
ERROR NOP           ERROR PROCESSOR 
      LDB A         SAVE (A) IN (B) (ERROR NUMBER)
      ADB EMT       GET ERROR MESSAGE POINTER 
      STB TEMP      SAVE ERROR MESSAGE POINTER
      LDB A         GET ERROR NUMBER
      ADB EHLT      FORM ERROR HALT 
      STB EHALT     PUT AWAY HALT 
      STA MSG#
      LDB BIT05     GET BIT 5 MASK
      JSB SWRCK,I   CHECK BIT 5 
      JMP NOMSG     IF SET SUPRESS MESSAGE
      LDB BIT06     GET BIT 6 MASK
      JSB SWRCK,I   CHECK BIT 6 
      JMP NOMSG     IF SET SUPPRESS MESSAGE 
MSG   EQU * 
      LDA PPNTR     GET PARAMETER AREA ADDRESS
      STA PNTR      SAVE AS PARAMETER POINTER 
      CLA,CLE       SET START OF FORMATTED OUTPUT 
      LDB TEMP      GET ERROR MESSAGE POINTER 
      LDB B,I       GET FORMAT ADDRESS
      JSB FRMTR,I   CALL FORMATTER
      SZA,RSS       SEE IF NEED A PARAMETER 
      JMP NOPRM     NO PARAMS NEEDED
PRMOT EQU *         NEED NUMBER TO OUTPUT 
      CCA           SET OCTAL OUT MODE
      LDB PNTR,I    GET NUMBER TO OUTPUT
      ISZ PNTR      BUMP POINTER
      JSB FRMTR,I   CALL FORMATTER
      SZA           SEE IF NEED ANOTHER PARAMETER 
      JMP PRMOT     GO OUTPUT NEXT PARAM
NOPRM EQU *         OUTPUT LAST SENT AND RCV'D WORDS
      LDA D7
      CPA MSG#      ERROR 7?
      JMP NOMSG     YES - SKIP SENT-RCVD PRINT
      CLA,CLE       SET START OF FORMATTED OUTPUT 
      LDB AERR      GET FORMAT ADDRESS
      JSB FRMTR,I   CALL FORMATTER
      CCA           SET OCTAL OUT MODE
      LDB CDATA     GET LAST WORD SENT
      JSB FRMTR,I   CALL FORMATTER
      CCA           SET OCTAL OUT MODE
      LDB RDATA     GET LAST RCV'D WORD 
      JSB FRMTR,I   CALL FORMATTER
NOMSG EQU * 
      LDB BIT14     GET BIT 14 MASK 
      JSB SWRCK,I   CHECK SWR 
      RSS           SUPRESS HALT
EHALT HLT 0         ERROR HALT GOES HERE
      JMP ERROR,I   RETURN
      SPC 5 
NRTN  NOP           NO RETURN WORD WHEN EXPECTED
      LDA ANFLG     GET ERROR COUNT ADDRESS 
      JSB INC       INCREMENT ERROR COUNT 
      CLA,INA       GET ERROR NUMBER
      JSB ERROR     DO ERROR PROCESSING 
      JMP NRTN,I    RETURN
      SPC 5 
UXRIP NOP           UNEXPECTED RECEPTION IN PROCESS 
      LDA D2        GET ERROR NUMBER
      JSB ERROR     DO ERROR PROCESSING 
      JMP UXRIP,I   RETURN
      SPC 5 
PRITY NOP           PARITY ERROR
      LDA APRTY     GET ERROR COUNT ADDRESS 
      JSB INC       INCREMENT ERROR COUNT 
      LDA D3        GET ERROR NUMBER
      JSB ERROR     DO ERROR PROCESSING 
      JMP PRITY,I   RETURN
      SPC 5 
MISSD NOP           MISSED RECEPTION BIT SET
      LDA D4        GET ERROR NUMBER
      JSB ERROR     DO ERROR PROCESSING 
      JMP MISSD,I   RETURN
      SPC 5 
DCMP  NOP           SENT-RCVD COMPARE ERROR 
      LDA ADTAC     GET ERROR COUNT ADDRESS 
      JSB INC       INCREMENT ERROR COUNT 
      LDA D5        GET ERROR NUMBER
      JSB ERROR     DO ERROR PROCESSING 
      JMP DCMP,I    RETURN
      SPC 5 
NFRST NOP           FIRST WORD FLAG NOT RETURNED
      LDA D6        GET ERROR NUMBER
      JSB ERROR     DO ERROR PROCESSING 
      JMP NFRST,I   RETURN
      SPC 5 
EOT   NOP           END OF TEST HALT CHECKER
      LDB BIT15     GET BIT 15 MASK 
      JSB SWRCK,I   CHECK SWR 
      HLT 76B       END OF TEST HALT (ON) 
      LDB BIT13     GET BIT 13 MASK 
      JSB SWRCK,I   CHECK SWR 
      JMP EOT,I     REPEAT LAST TEST EXIT (ON)
      ISZ EOT       BUMP RETURN ADDR (OFF)
      JMP EOT,I     CONTINUE EXIT 
      SPC 5 
INC   NOP           ERROR COUNT INCREMENTER (CHECKS FOR OVERFLOW) 
      LDB A,I       GET ERROR COUNT (A=ADDR)
      INB           INCREMENT ERROR COUNT 
      STB A,I       SAVE ERROR COUNT
      SSB,RSS       CHECK FOR OVERFLOW
      JMP INC,I     RETURN FOR NO OVERFLOW
      CLB           IF OVERFLOW - SET TO 0
      STB A,I       SAVE IT 
      CLB 
      STB KOUNT     INITIALIZE COUNTER
LOOK  EQU * 
      LDB OVTBL     GET TABLE ORIGIN
      ISZ KOUNT     UPDATE COUNT
      ADB KOUNT     GET ADDR POINTER
      CPA B,I       COMPARE ADDRESSES 
      RSS           EQUAL SO FOUND
      JMP LOOK      LOOK AT NEXT ENTRY FOR MATCH
      LDB OMSGS     GET MESSAGE TABLE ORIGIN
      ADB KOUNT     GET POINTER 
      LDB B,I       GET ADDRESS OF CHARS
      LDA ANAME     GET DESTINATION ADDR
      STA DEST      SAVE
      LDA DM4       MOVE 4 WORDS
      STA KOUNT 
SLP   EQU * 
      LDA B,I       GET 2 CHARS 
      INB           INCREMENT POINTER 
      STA DEST,I    STORE CHARS 
      ISZ DEST      UPDATE STORE POINTER
      ISZ KOUNT     DONE? 
      JMP SLP       NO-DO NEXT 2 CHARS
      LDA D7        GET ERROR NUMBER
      JSB ERROR     DO ERROR THING
      JMP INC,I     RETURN
      SPC 5 
TFSET NOP           TIMED RETURN FLAG SET UNEXPECTLY
      LDA D8        GET ERROR NUMBER
      JSB ERROR     DO ERROR PROCESSING 
      JMP TFSET,I   RETURN
      SPC 5 
TFCLR NOP           TIMED RETURN FLAG CLEAR (EXP. SET)
      LDA D9        GET ERROR NUMBER
      JSB ERROR     DO ERROR PROCESSING 
      JMP TFCLR,I   RETURN
      SPC 5 
UXRTN NOP           RETURN WORD WHEN NONE EXPECTED
      LDA D10       GET ERROR NUMBER
      JSB ERROR     DO ERROR PROCESSING 
      JMP UXRTN,I   RETURN
      SPC 5 
TFCHK NOP           CHECK TIMED RETURN BIT (BIT 14) 
      LDA RDATA     GET RCVD WORD 
      AND BIT14     MASK BIT 14 
      SZA,RSS       CHECK BIT 
      ISZ TFCHK     RETURN (P+2) FOR CLEAR
      JMP TFCHK,I   RETURN (P+1)FOR SET 
      SPC 5 
ZERO  NOP           ERROR COUNT ZEROER
      CLA 
      STA #NFLG     ZERO NO RETURN WORD ERROR COUNT 
      STA #DTAC     ZERO DATA COMPARE ERROR COUNT 
      STA #PRTY     ZERO PARITY ERROR COUNT 
      JMP ZERO,I    RETURN
      SPC 5 
MSET  NOP           MODE SETTER 
      LDB BIT01     GET BIT 01 MASK 
      JSB SWRCK,I    CHECK SWR
      RSS           ON - 2-WORD MODE (-1) 
      CLA,RSS       OFF - 1-WORD MODE (0) 
      CCA 
      STA MODE      SAVE MODE 
      JMP MSET,I    RETURN
      SPC 5 
ABORT NOP 
      LDB BIT05     GET BIT05 MASK
      JSB SWRCK,I   CHECK SWR BIT 05
      JMP ABORT,I   SUPPRESS MESSAGE
      CLA,CLE       PRINT 
      LDB AABRT      ABORT TEST 
      JSB FRMTR,I     MESSAGE 
      JMP ABORT,I      AND RETURN 
      SKP 
* 
* THIS ROUTINE GETS A NUMERIC PARAMETER FROM THE KEYBOARD 
*  AND RETURNS THE NUMERIC VALUE IN (A).  ENTER WITH: 
*   (A)=ADDRESS OF PARAMETER TO BE FETCHED
*   "PRMPT"=ADDRESS OF PROMPTING CHARACTER STRING 
*    (SHOULD CONTAIN "#" TO PRINT THE CURRENT VALUE OF THE
*     PARAMETER.) 
* 
*  CHARACTERS INPUT FROM THE KEYBOARD WILL BE CHECKED 
*   FOR VALID OCTAL DIGITS.  IF NO CHARACTERS ARE ENTERED 
*   THEN LAST VALUE OF THE PARAMETER WILL BE RETURNED AS
*   THE NEW VALUE.
* 
GTVAL NOP 
GETVL EQU * 
      STA PARAM     SAVE PARAMETER ADDRESS
      LDB BIT05     GET BIT 5 MASK
      JSB SWRCK,I   CHECK BIT 5 
      JMP THALT     IF SET THEN NON-VALID REQUEST 
      CLA,CLE       SET START OF FORMATTED OUTPUT 
      LDB PRMPT     GET FORMAT ADDRESS OF PROMPTING STRING
                                                                                                                                    