ASMB,R,Q,C *** SLC ***
      HED SYNC LINE CONTROL 06/01/79  HI-SPEED
      NAM HSLC,30 91741-16015 REV 2013 790601 
      SPC 2 
******************************************************* 
*                                                     * 
*    MODIFIED BY DMT ON MAY 30, 1978 TO REMOVE UNUSED * 
*    CODE, MOSTLY IN THESE AREAS                      * 
*      EBCDIC CHARACTER HANDLING                      * 
*      LCR BLOCK CHECK (CRC ONLY IS USED)             * 
*      ID SEQUENCE CHECKING/SENDING                   * 
*      CHARACTER CHECK  UPON RETURN FROM DRIVER       * 
*                                                     * 
*    FURTHER CLEANUP DONE ONE YEAR LATER.             * 
*                                                     * 
******************************************************* 
      SPC 2 
******************************************************************
*  * (C) COPYRIGHT HEWLETT-PACKARD COMPANY 1980. ALL RIGHTS      *
*  * RESERVED. NO PART OF THIS PROGRAM MAY BE PHOTOCOPIED,       *
*  * REPRODUCED OR TRANSLATED TO ANOTHER PROGRAM LANGUAGE WITHOUT*
*  * THE PRIOR WRITTEN CONSENT OF THE HEWLETT-PACKARD COMPANY.   *
******************************************************************
      SPC 2 
      ENT SLC       LOGICAL INIT ROUTINE
      EXT EQTAD 
      EXT .ENTR 
      EXT EXEC
* 
* SLC  (HSI VERSION)
* SOURCE: 91741-18015 
* BINARY: 91741-16015 
* TOM KEANE 
* JULY 1, 1975
* 
      EXT HCONT,HSND,HREC 
* 
*     SUBROUTINE SLC:  LOGICAL INITIALIZATION ROUTINE FOR SLC 
*         JSB SLC 
*         DEF *+3 
*         DEF LU              LOGICAL UNIT NUMBER 
*         DEF BUFFER          EQT EXTENSION 
* 
LU    OCT 0         PTR TO LOGICAL UNIT NUMBER
EQTXP OCT 0         ADDR OF EQT EXTENSION BUFFER
* 
SLC   NOP 
      JSB .ENTR     PROCESS PARAMETERS
      DEF LU
      LDB EQTXP     GET ADDR OF EQTX
      ADB .4        B = EQT22 ADDR
      LDA .SLCR 
      STA B,I       SET UP SLC READ ADDR
      INB 
      LDA .SLCW 
      STA B,I       SET UP SLC WRITE ADDR 
      INB 
      LDA .SLCC 
      STA B,I       SET UP SLC CONTROL ADDR 
      INB 
      ADB M5        B = EQTX3 ADDR (SYNC) 
      LDA B,I       GET SPECIFIED SYNC CHAR 
      ADB .31       B = EQTX WORD 34 ADDR 
      CPA .22       ASCII SYNC CHAR?
      JMP ASCII     YES 
      CLA,INA       NO, SET A-REG =1 AS AN ERROR IND
      JMP SLC,I       & RETURN, BYPASSING EXEC CALL 
* 
ASCII EQU * 
      ADB .4        B = EQTX WORD 38 DATA 
      ADB .23       B = EQTX WORD 61 ADDR 
      LDA B,I       GET ENVIR 
      IOR H4000     SET BIT 14 FOR ASCII
      STA B,I         & SAVE ENVIR
      ADB M59       B = EQTX WORD  2 ADDR 
      LDA B,I       GET EQTX2 
      AND M64       MASK OUT PARITY & CHAR SIZE 
      IOR .8        SPEC NO PARITY & 8-BIT BYTE 
      STA B,I 
      LDA EQTXP     A = ADDR OF EQTX
      ADA .61       A = ADDR OF CHAR TRACE LENGTH 
      LDA A,I 
      ADA EFIXL 
      ADA .3
      CMA,INA       A = EQTX LENGTH - (FIXED LENGTH 
      ADA EQTXP,I       + CHAR TRACE +3)
      SSA           EVENT TRACE LENGTH > 2? 
      JMP ASCII-2   NO, ERROR: BYPASS EXEC CALL 
      LDA LU,I      GET LOG UNIT #
      IOR B100      SET FUNCTION CODE =1 (INITLIZE) 
      STA LU
      LDA EQTXP     A =ADDR OF EQTX 
      ADA EFIXL     A =ADDR OF TRACE TABLE
      STA B 
      INB           INIT WORD 1 OF 1ST ENTRY
      STB A,I         IN TRACE TABLE
      ADB M2        B =ADDR OF TRACE TABLE -1 
      STA B,I       INIT OLDEST ENTRY ADDR
      ADB M1        B =ADDR OF TRACE TABLE -2 
      STA B,I       INIT NEWEST ENTRY ADDR
      JSB EXEC      MAKE CONTROL (INITIALIZE) REQ 
      DEF *+6 
      DEF .2        SPECIFY WRITE 
      DEF LU        CONTROL WORD: FUNCTION & LU 
      DEF EQTXP,I   EQT EXTENSION BUFFER
      DEF .3        DUMMY PARAMETER 
      DEF OP1 
      CLA           SET A =0 TO IND A GOOD REQ
      JMP SLC,I     RETURN
* 
.23   DEC 23        DEC 23,  OCT 27 
.61   DEC 61
M59   DEC -59 
M64   DEC -64       OCT 177700, DEC -64 
.SLCC DEF SLCC      ADDR OF SLC CONTROL ROUTINE 
.SLCR DEF SLCR                  READ ROUTINE
.SLCW DEF SLCW                  WRITE ROUTINE 
OP1   OCT 40103     OPTIONAL PARAMETER
.22   DEC 22        SYN 
      SKP 
*               SLC CONTROL ROUTINE FOR LOGICAL DRIVER
* 
SLCC  NOP 
      STB PHB       SAVE B-REG
      LDB SLCC      GET RETURN ADDRESS
      JSB SETUP     SET UP RETURN ADDR & PTRS 
      LDB PHB       GET B-REG FROM PHYSICAL 
      SSB,RSS       IS THIS A NEW REQUEST (B NEG)?
      JMP SLCER     NO, ERROR 
      LDB B300      SPECIFY CONTROL: REQ CODE OFFSET
      JSB TRAIN     GET FUNCTION & INIT TRACE ENTRY 
      CPA .1        INITIALIZE? 
      JMP CF01      YES 
      CPA .2        LINE OPEN?
      JMP CF02      YES 
      CPA .3        LINE CLOSE? 
      JMP CF02      YES 
      ADA M32       SUBTRACT OCT 40 FROM FUNCTION 
      CPA .2        CHANGE ERROR RECOVERY PARAMS? 
      JMP CF42      YES 
      CPA .3        ZERO THE LONG TERM STATISTICS?
      JMP CF43      YES 
      SSA,RSS       FUNCTION BELOW 40?
      JMP SLCER     NO,ERROR
      CLA           YES 
      CLB 
      JMP PRET,I    LET PHYSICAL (P+2) LOOK AT FUNCT
* 
CF01  CLA           SET STATE = 0 (UNOPENED)
      STA STATE,I 
*               ------------------------------------------------- 
*               COMPLETE "CONTINUATION" RETURN TO PHYSICAL
* 
SLCPC LDA PRET      SPECIFY CONTINUATION
      CLB             & COMP STATUS = 0 = OK
      JMP SLCXT+2 
*               ------------------------------------------------- 
CF02  ADA M2        GET EVENT NO. (0 OR 1)
      JMP SEA       GO TO STATE-EVENT-ACTION CIRCLE 
CF42  LDA EQT10,I   GET SPECIFIED # 
      LDA A,I 
      CMA,INA       MAKE NEGATIVE 
      STA NTRY,I    AND SAVE
      LDA EQT11,I   GET # OF 3-SEC PERIODS IN LTO 
      CMA,INA         MAKE NEG
      STA NLTO,I      & SAVE
      JMP SLCXT     EXIT WITH STATUS =OK
CF43  JSB ZSTAT     ZERO THE LONG TERM STATISTICS 
      JMP SLCXT     EXIT WITH STATUS =OK
* 
SLCER CLB,INB       COMP STATUS =INVALID REQUEST =1 
      JMP SLCXT+1 
*               ------------------------------------------------- 
*               COMPLETION RETURN TO PHYSICAL 
* 
SLCXT CLB           COMPLETION STATUS =OK =0
      LDA PRETF     SPECIFY COMPLETION
      STA PRETV       & SET UP RETURN 
      LDA MPFLS,I 
      AND M3        CLEAR SEND-CONTINUE FLAG (BIT 1)
      STA MPFLS,I 
      LDA ET04,I
      AND HFF00     MASK OUT OLD COMP STATUS
      IOR B           & PUT NEW ONE 
      LDB BLKSP,I     PLUS THE BLOCK SPEC BITS
      BLF             (MOVED TO BITS 7-5) 
      RBL,RBL 
      SLB,RSS       IS THIS A WRITE REQ?
      IOR B         NO, PUT BLK SPEC INTO STATUS
      STA ET04,I      RIGHT HALF OF EQT 4 
*               ------------------------------------------------- 
*               ROUTINE TO COMPLETE TRACE TABLE ENTRY 
* 
      AND B377
      ALF,ALF       MOVE COMPLETION STATUS TO LEFT
      LDB TRNEW,I   B =ADDR OF CURRENT ENTRY WORD 1 
      JSB TRINC     GET ADDR OF ENTRY WORD 2
      IOR B,I       MERGE IN REQUEST & FUNCTION CODE
      STA B,I         & STORE BACK IN WORD 2
      LDB TRNEW,I 
      LDB B,I       B = ADDR OF NEXT WORD TO BE FILLD 
      STB TRTMP     SAVE IT (NOW ADDR OF NEXT ENTRY)
      JSB TRINC     GET ADDR OF WORD AFTER NEXT 
      STB A 
      JSB TRACE     INIT WORD 1 FOR NEXT ENTRY
      LDB TRNEW,I   B =ADDR OF CURRENT ENTRY WORD 1 
      LDA TRTMP     A =ADDR OF NEXT ENTRY WORD 1
      STA B,I       RESTORE PTR TO NEXT ENTRY 
      STA TRNEW,I    & SET NEXT ENTRY =CURRENT ENTRY
      CLA 
      CLB 
      JMP PRETV,I   RETURN TO PHYSICAL
      SPC 4 
*               SLC READ ROUTINE FOR LOGICAL DRIVER 
* 
SLCR  NOP 
      STB PHB       SAVE B-REG
      LDB SLCR      GET RETURN ADDRESS
      JSB SETUP     SET UP RETURN ADDR & PTRS 
      LDB PHB       GET B-REG FROM PHYSICAL 
      SSB,RSS       IS THIS A NEW REQUEST (B NEG)?
      JMP LCONT     NO, CONTINUE READ/WRITE 
      LDA NTRY,I
      STA RTCTR,I   INIT RETRY CTR
      ISZ LTCS,I    INC TOTAL # OF READ REQUESTS
      NOP           NULL IN CASE OF ROLLOVER
      LDB B100      SPECIFY READ:    REQ CODE OFFSET
      JSB TRAIN     GET FUNCTION & INIT TRACE ENTRY 
      SZA,RSS       FUNCTION = 0? 
      JMP SLCER     YES,ERROR 
      CPA .7        FUNCTION = 7? 
      JMP SLCER     YES, ERROR
      INA           GET EVENT NO. (2 THROUGH 7) 
      STA CURRQ,I   SAVE CURRENT READ REQ # 
      JMP SEA       GO TO STATE-EVENT-ACTION CIRCLE 
      SPC 4 
*               SLC WRITE ROUTINE FOR LOGICAL DRIVER
* 
SLCW  NOP 
      STB PHB       SAVE B-REG
      LDB SLCW      GET RETURN ADDRESS
      JSB SETUP     SET UP RETURN ADDR & PTRS 
      LDB PHB       GET B-REG FROM PHYSICAL 
      SSB,RSS       IS THIS A NEW REQUEST (B NEG)?
      JMP LCONT     NO, CONTINUE READ/WRITE 
      LDA NTRY,I
      STA RTCTR,I   INIT RETRY CTR
      LDA LTCS      A=ADDR OF WORD 1, LONG-TERM STAT
      INA 
      ISZ A,I       INC TOTAL # OF WRITE REQUESTS 
      NOP           NULL IN CASE OF ROLLOVER
      LDB B200      SPECIFY WRITE:   REQ CODE OFFSET
      JSB TRAIN     GET FUNCTION & INIT TRACE ENTRY 
      ADB B2000     SET BIT 10 TO IND WRITE 
      STB BLKSP,I   SAVE BLOCK SPEC BITS
      SLB,RSS       TRANSPARENT TEXT TO BE SENT?
      JMP *+4       NO
      LDB ENVIR,I 
      SSB           LRC SPECIFIED?
      JMP SLCER     YES, ERROR
      SZA,RSS       FUNCTION = 0? 
      JMP SLCER     YES,ERROR 
      ADA M7
      SSA,RSS       FUNCTION > 6? 
      JMP SLCER     YES, ERROR
      ADA .14       GET EVENT NO. (8 THROUGH 13)
      JMP SEA       GO TO STATE-EVENT-ACTION CIRCLE 
* 
LCONT LDB KEY,I     B = ADDR OF EDITOR ENTRY
      LDA PHA       GET A-REG PASSED BY PHYSICAL
      JMP B,I 
* 
HE000 OCT 160000    OCT 160000
      SPC 6 
*     STATE-EVENT-ACTION CIRCLE -- A STATE-TRANSITION PROCESSOR 
* 
*     CALLING SEQUENCE: 
*         (A) = EVENT # 
*         (P) = JMP SEA 
*         (A) = MESSAGE PROCESSOR FLAGS 
* 
SEA   STA EVENT     SAVE EVENT #
      LDA PRVST,I   GET PREVIOUS STATES,
      AND B377        ISOLATE PREV-1, 
      ALF,ALF         & MOVE TO LEFT HALF 
      LDB STATE,I   GET CURRENT STATE (NOW PREV)
      IOR B         MERGE IN PREV STATE 
      STA PRVST,I 
      ADB STADT     ADD STATE TABLE BASE, GET ENTRY 
      STB A 
      INA 
      LDA A,I       GET ADDR OF NEXT STATE
      STA NEXST 
      LDB B,I       GET CLUSTER HEADER ADDR 
PCLUS LDA B,I       GET CLUSTER HEADER
      INB 
      STB CLUST     SAVE ADDR OF 1ST CLUSTER WORD 
      CLB 
      RRR 8         A = 1ST EVENT IN CLUSTER
      BLF,BLF         & B = -1 + LENGTH OF CLUSTER
      CMA,INA 
      ADA EVENT     COMPUTE REAL EVENT - 1ST EVENT
      SSA           RESULTS NEG (EVENT BELOW CLUST)?
      JMP SEAER     YES, ERROR
      STA EVOFF     SAVE EVENT OFFSET 
      CMA,INA 
      ADA B         COMPUTE CLUSTER LENGTH - OFFSET 
      SSA           RESULTS NEG (EVENT ABOVE CLUST)?
      JMP EVOUT     YES 
      LDB CLUST 
      ADB EVOFF     B = ADDR OF ACTION/NEXT STATE PR
      LDA B,I 
SEAF  CLB 
      RRR 8         A = ACTION INDEX
      BLF,BLF         & B = NEXT STATE
      STB STATE,I 
      STA CURAC     SAVE ACTION 
      LDA EVENT 
      ALF,ALF       GET WORD READY FOR TRACE TABLE: 
      IOR B           EVENT & RESULTANT STATE 
      JSB TRACE 
      LDA PRVAC,I 
      AND B377      ISOLATE PREVIOUS ACTION 
      ALF,ALF 
      IOR CURAC     MERGE IN CURRENT ACTION 
      STA PRVAC,I     & SAVE
      LDA CURAC 
      ADA ACTAD     A = ADDR OF APPROPRIATE ACTION: 
      LDB A,I 
      LDA MPFLS,I 
      JMP B,I       GO TO ACTION
EVOUT ADB CLUST 
      INB           B = ADDR OF NEXT CLUSTER HEADER 
      CPB NEXST     ARE WE THROUGH WITH THIS STATE? 
      JMP SEAER     YES, ERROR SINCE EVENT NOT FOUND
      JMP PCLUS     NO, PROCESS NEXT CLUSTER
SEAER LDA BLOUT     SET ACTION/NEXT STATE TO HANDLE 
      JMP SEAF        IMPROBABLE SITUATION
* 
CLUST OCT 0         ADDR OF 1ST CLUSTER ENTRY 
CURAC OCT 0         CURRENT ACTION
EVENT OCT 0         CURRENT EVENT # 
EVOFF OCT 0         OFFSET OF EVENT FROM CLUSTER
NEXST OCT 0         ADDR OF ENTRY FOR NEXT STATE
      SKP 
*     SUBROUTINE SCM:  SEND CONTROL MESSAGE  (ID, IF ANY, HAS 
*                      BEEN SENT ALREADY) 
*         (A) = INDEX OF MESSAGE TO BE SENT:
*                   0 = ENQ     5 = WACK
*                   1 = NAK     6 = RVI 
*                   2 = EOT     7 = DLE EOT 
*                   3 = ACK0    8 = TTD (STX ENQ) 
*                   4 = ACK1    9 = SOH ENQ 
* 
SCM   NOP 
      STA SCMTP 
      LDB SCM 
      STB CMRET,I   SAVE SCM RETURN 
      ADA ASCMA 
      LDA A,I       A = ADDR OF MESSAGE 
      JSB HCONT 
      NOP 
      SZA           SEND OK?
      JMP LOW       NO, SET EVENT =LINE ERROR (LOW) 
      LDA CMRET,I   GET RETURN FROM SCM 
      JMP STXT4     INC # OF MESSAGES SENT
SCMTP OCT 0         TEMP FOR SCM
      SKP 
*     SUBROUTINE SETUP:  SET UP RETURN ADDRESSES TO PHYSICAL
*                        DRIVER & EQTX POINTERS 
*         (A) = A-REG PASSED BY PHYSICAL
*         (B) = P+1 RETURN OF CURRENT SLC ROUTINE 
*         (P) = JSB SETUP 
* 
SETUP NOP 
      STA PHA       SAVE A-REG PADDED BY PHYSICAL 
      STB PRETF     SAVE P+1 (COMPLETION) ADDR
      INB 
      STB PRET      SAVE P+2 (CONTINUATION) ADDR
      LDB EQTAD     B = EQT 1 ADDR
      ADB .3        B = EQT 4 ADDR
      CPB ET04      ALREADY CONFIGURED FOR THIS EQT?
      JMP SETUP,I   YES 
      STB ET04
      ADB .6        B = EQT 10 ADDR 
      STB ET10
      INB           B = EQT 11 ADDR 
      STB ET11
      ADB .3        B = EQT 14 ADDR 
      STB ET14
      ADB .3        B = EQT 17 ADDR 
      LDB B,I       B = EQTX 1 ADDR 
      LDA B,I       COMPUTE TOTAL EQTX LENGTH 
      ADA EFIXC       -(1 + FIXED LENGTH) 
      ADB .22       EQTX 23 
      STB BLKSP             BLOCK SPEC BITS 
      INB           EQTX 24 
      STB EBUFA             EDITOR BUFFER ADDR
      INB           EQTX 25 
      STB EBUFL             EDITOR BUFFER LENGTH
      ADB .2        EQTX 27 
      STB ERET              EDITOR RETURN ADDR
      ADB .6        EQTX 33 
      STB KEY               ENTRY AFTER PHYS RECALL 
      ADB .2        EQTX 35 
      STB MPFLS             MESSAGE PROCESSOR FLAGS 
      INB           EQTX 36 
      STB NTRY              NUMBER OF RETRIES 
      INB           EQTX 37 
      STB RTCTR             RETRY CTR 
      ADB .2        EQTX 39 
      STB CONVL              CONVERSTNL BUFFER LENGTH 
      INB           EQTX 40 
      STB CURRQ             CURRENT READ REQ #
      ADB .2        EQTX 42 
      STB NLTO              # OF 3-SECS IN LONG T/O 
      INB           EQTX 43 
      STB PRVAC             PREV & CURRENT ACTIONS
      INB           EQTX 44 
      STB PRVST             PREV-1 & PREV STATES
      INB           EQTX 45 
      STB PVACK             CODE FOR PREV ACK 
      ADB .3        EQTX 48 
      STB STATE             MAIN SLC STATE NUMBER 
      INB           EQTX 49 
      STB TOCTR             LONG-TIMEOUT CTR
      INB           EQTX 50 
      STB CMBUF             CONTROL MESSAGE BUFFER
      ADB .8        EQTX 58 
      STB CMRET             SCM RETURN ADDR 
      INB           EQTX 59 
      STB TXRET             STXT RETURN ADDR
      INB           EQTX 60 
      STB TLOG              TRANSMISSION LOG (POSTV)
      INB           EQTX 61 
      STB ENVIR             SPECIFIED ENVIRONMENT 
      INB           EQTX 62 
      STB CTLEN             CHAR TRACE LENGTH 
      INB           EQTX 63 
      STB LTCS              LONG-TERM COMM STATISTCS
      ADB .12       EQTX 75 
      STB TRNEW             ADDR OF NEWST TRACE NTRY
      INB           EQTX 76 
      STB TROLD             ADDR OF OLDST TRACE NTRY
      INB           EQTX 77 
      STB TRFWA             TRACE TABLE 1ST WORD
      ADB A         EQTX LWA
      STB CTLWA             CHAR TRACE LAST WORD
      LDA CTLEN,I 
      CMA,INA 
      ADB A 
      STB TRLWA             EVENT TRACE LAST WORD 
      JMP SETUP,I 
* 
EFLEN EQU 76        LENGTH OF EQTX - TRACE TABLE
EFIXC ABS -1-EFLEN  -1( + FIXED-LENGTH PART OF EQTX)
EFIXL DEF EFLEN     FIXED LENGTH OF EQT EXTENSION 
      SPC 4 
*     SUBROUTINE STXT:  SEND TEXT 
* 
STXT  NOP 
      LDA MPFLS,I 
      AND HFFBF     CLEAR MP TIMEOUT FLAG (BIT 6) 
      STA MPFLS,I 
      LDA STXT
      STA TXRET,I   SAVE STXT RETURN
      CLA 
      STA TLOG,I    ZERO TRANSMISSION LOG 
      LDA ET10,I    A = BUFFER ADDR 
      LDB ET11,I
      JSB HSND
      NOP 
      NOP 
      SZA           SEND OK?
      JMP LOW       NO, SET EVENT =LINE ERROR(LOW)
      LDA NLTO,I
      STA TOCTR,I   RESET LONG-TIME-OUT CTR 
      LDA MPFLS,I 
      AND M3        CLEAR SEND-CONTINUE FLAG
      STA MPFLS,I 
      LDA TXRET,I   GET RETURN FROM STXT
STXT4 LDB .2        INC # OF MESSAGES SENT; 
      ADB LTCS        WORD 3 OF LONG-TERM STAT
      ISZ B,I 
      NOP           NULL IN CASE OF ROLLOVER
      JMP A,I       RETURN
HFFBF OCT 177677    REVERSE MASK BIT 6
      SPC 2 
*     SUBROUTINE STXCH:  SEND TEXT CHARACTERS 
*         (A) = INDEX OF MESSAGE TO BE SENT 
*                  10 = SOH      11 = STX     )  ONE CHAR 
*                  12 = ETX      13 = ETB     ) 
*                  14 = DLE STX  15 = DLE ETX   )  TWO CHAR 
*                  16 = DLE ETB                 ) 
STXCH NOP 
      STA SCMTP 
      ADA ASCMA 
      LDA A,I       A = ADDR OF CHARS 
      LDB SCMTP 
      ADB M14       COMPUTE INDEX - 14
      SSB           INDEX 14 OR MORE? 
      JMP *+3       NO
      LDB M3        YES:  IN EITHER CASE, 
      RSS 
      LDB M2        B = - (1 + # OF CHARS)
      JMP STXCH,I   RETURN
      SKP 
*     SUBROUTINE TRACE:  PUT WORD INTO TRACE TABLE
*         (A) = WORD TO BE STORED 
* 
TRACE NOP 
      LDB TRNEW,I   A =ADDR OF CURRENT ENTRY, WORD 1
      LDB B,I       B =ADDR OF NEXT WORD TO BE FILLD
      CPB TROLD,I   MATCH ADDR OF OLDEST ENTRY? 
      RSS           YES 
      JMP *+5       NO
      LDB B,I       B =ADDR OF NEXT-TO-OLDEST ENTRY 
      STB TROLD,I   UPDATE PTR TO OLDEST ENTRY
      LDB TRNEW,I 
      LDB B,I       B=ADDR OF NEXT WORD TO BE FILLED
      STA B,I       STORE WORD IN TRACE TABLE 
      JSB TRINC     GET ADDR OF NEXT WORD TO FILL 
      LDA TRNEW,I 
      CPB A         IS NEXT WORD = CURRENT ENTRY? 
      RSS           YES, SET NEXT WORD = ENTRY START
      JMP  *+3
      JSB TRINC     ADVANCE TO 2ND WORD OF ENTRY
      JSB TRINC     ADVANCE TO 3RD WORD OF ENTRY
      STB A,I       UPDATE WORD 1 OF CURRENT ENTRY
      JMP TRACE,I 
      SPC 2 
*     SUBROUTINE TRAIN: GET FUNCTION & INITIALIZE TRACE ENTRY 
*         (B) = REQUEST CODE (OFFSET 6 BITS TO LEFT)
*         (P) = JSB TRAIN 
*         (A) = FUNCTION CODE 
*         (B) = BLOCK SPEC BITS 
* 
TRAIN NOP 
      LDA EQT09,I   GET CONTROL WORD
      ALF,ALF         & POSITION FUNCTION 
      RAL,RAL 
      CPB B300      IS THIS A CONTROL REQUEST?
      RSS           YES 
      AND .7        ISOLATE READ/WRITE FUNCTION 
      AND B77       ISOLATE CONTROL FUNCTION
      STA TRTMP       & SAVE IT 
      IOR B         MERGE IN REQUEST CODE (OFFSET)
      JSB TRACE     STORE REQ & FUNCT IN TRACE TABLE
      CLA 
      STA TLOG,I
      STA BLKSP,I 
      LDA EQT09,I   GET CONTROL WORD
      ALF           POSITION BLOCK SPEC BITS
      AND HE000       & ISOLATE THEM
      RAL,RAL       NOW IN BITS 1,0, & 15 
      STA B 
      LDA TRTMP     GET FUNCTION
      JMP TRAIN,I 
TRTMP OCT 0         TRACE TABLE TEMPORARY 
      SKP 
*     SUBROUTINE TRINC:  INCREMENTS ADDRESS IN EVENT TRACE, 
*         CHECKING FOR WRAPAROUND 
*         (B) = ADDR TO BE INC
* 
TRINC NOP 
      CPB TRLWA     IS IT LAST WORD OF TABLE? 
      JMP *+3       YES 
      INB 
      JMP TRINC,I 
      LDB TRFWA     WRAPAROUND TO 1ST OF TABLE
      JMP TRINC,I 
      SPC 3 
*     SUBROUTINE ZSTAT:  ZERO LONG TERM COMM. STATISTICS
* 
ZSTAT NOP 
      LDA M11 
      STA MPCTR     SET COUNTER = 11
      LDA LTCS      A=ADDR OF WORD 1, LONG-TERM STAT
      CLB 
ZLOOP STB A,I       ZERO TABLE ENTRY
      INA 
      ISZ MPCTR 
      JMP ZLOOP 
      JMP ZSTAT,I 
* 
MPCTR OCT 0         COUNTER 
      SKP 
*     CONSTANTS & STORAGE FOR MESSAGE PROCESSOR ONLY
* 
.16   DEC 16        DEC 16,  OCT 20 
.20   DEC 20        DEC 20,  OCT 24 
.27   DEC 27        DEC 27,  OCT 33 
.29   DEC 29        DEC 29,  OCT 35 
.30   DEC 30        DEC 30,  OCT 34 
.31   DEC 31        DEC 31,  OCT 37 
.32   DEC 32        DEC 32,  OCT 40,  BIT 5 
B200  OCT 200       OCT 200, DEC 128
B300  OCT 300       OCT 300, DEC 192
B2000 OCT 002000    OCT 2000,         BIT 10, LEFT 4
H1400 OCT 012000                  LEFT HALF = DEC 20
HBFFF OCT 137777    OCT 137777,    REVERSE BIT 14 
HEFFF OCT 167777    OCT 167777,       REVERSE BIT 12
HFF00 OCT 177400
M11   DEC -11       DEC -11, OCT 177765 
M14   DEC -14       DEC -14, OCT 177762 
M17   DEC -17       DEC -17, OCT 177757, REV BIT 4
M20   DEC -20       DEC -20, OCT 177754, OCT -24
M32   DEC -32       DEC -32, OCT 177740, OCT -40
* 
PHA   OCT 0         A-REG ON ENTRY FROM PHYSICAL
PHB   OCT 0         B-REG ON ENTRY FROM PHYSICAL
PRETV OCT 0         VARIABLE RETURN TO PHYSICAL 
* 
*                     EQT POINTERS
ET04  OCT 0         PTR TO COMPLETION STATUS IN EQT 
ET11  OCT 0         PTR TO EQT 11: REQ BUFFER LENGTH
ET14  OCT 0         PTR TO TRANS LOG IN EQT 14
* 
*                     EQT EXTENSION POINTERS
* 
CMRET OCT 0         PTR TO SCM RETURN 
CONVL OCT 0         PTR TO WRITE-CONV BUFFER LENGTH 
CURRQ OCT 0         PTR TO CURRENT READ REQ # 
NLTO  OCT 0         PTR TO # OF 3-SECS IN LONG TMOUT
PRVAC OCT 0         PTR TO PREV ACTION: PREV,CURRENT
PRVST OCT 0         PTR TO PREV STATES: PREV-1,PREV 
PVACK OCT 0         PTR TO CODE FOR PREV ACK
STATE OCT 0         PTR TO MAIN SLC STATE NUMBER
TOCTR OCT 0         PTR TO LONG-TIMEOUT CTR 
CMBUF OCT 0         ADDR OF CONTROL MESSAGE RECV BUF
LTCS  OCT 0         ADDR OF LONG-TERM COMM STATISTCS
TRNEW OCT 0         ADDR OF NEWEST TRACE TABLE ENTRY
TROLD OCT 0         ADDR OF OLDEST TRACE TABLE ENTRY
TRFWA OCT 0         FIRST WORD ADDR OF TRACE TABLE
TRLWA OCT 0         LAST WORD ADDR OF TRACE TABLE 
TXRET OCT 0         PTR TO STXT RETURN
      SKP 
*                     ASCII CONTROL MESSAGES -- WITH ODD PARITY 
* 
ASCM  OCT 77776     ENQ  0
      OCT 000576    NAK      1
      OCT 001176    EOT      2
      OCT 002176    ACK0     3
      OCT 77577                PAD PAD
      OCT 004176    ACK1     4
      OCT 77577                PAD PAD
      OCT 003576    WACK     5
      OCT 77577                PAD PAD
      OCT 000376    RVI      6
      OCT 77577                PAD PAD
      OCT 016177    EOT      7
      OCT 77577                PAD PAD
      OCT 007176    TTD      8
      OCT 00605     SOH ENQ  9
      OCT 00400     SOH      10 
      OCT 01000     STX      11 
      OCT 101400    ETX      12 
      OCT 113400    ETB      13 
      OCT 10002     DLE STX  14 
      OCT 010203    DLE ETX  15 
      OCT 010227    DLE ETB  16 
* 
ASCMA DEF *+1       ASCII CONTROL MESSAGE ADDR PTR
      DEF ASCM      ENQ       0 
      DEF ASCM+1    NAK 
      DEF ASCM+2    EOT 
      DEF ASCM+3    ACK0
      DEF ASCM+5    ACK1
      DEF ASCM+7    WACK
      DEF ASCM+9    RVI 
      DEF ASCM+11   DLE EOT 
      DEF ASCM+13   TTD 
      DEF ASCM+14   SOH ENQ 
      DEF ASCM+15   SOH      10    TEXT 
      DEF ASCM+16   STX      11 
      DEF ASCM+17   ETX      12 
      DEF ASCM+18   ETB      13 
      DEF ASCM+19   DLE STX  14 
      DEF ASCM+20   DLE ETX  15 
      DEF ASCM+21   DLE ETB  16 
      SPC 2 
                                      