DataMuseum.dk

Presents historical artifacts from the history of:

CR80 Hard and Floppy Disks

This is an automatic "excavation" of a thematic subset of
artifacts from Datamuseum.dk's BitArchive.

See our Wiki for more about CR80 Hard and Floppy Disks

Excavated with: AutoArchaeologist - Free & Open Source Software.


top - download

⟦6dc718867⟧ TextFile

    Length: 43008 (0xa800)
    Types: TextFile
    Names: »EDOSOD«

Derivation

└─⟦01dc7a003⟧ Bits:30005073 8" CR80 Floppy CR80FD_0011 ( EDO SYS 1 PJ DEC, 3, 80 )
    └─⟦460440515⟧ 
        └─ ⟦this⟧ »EDOSOD« 

TextFile

LIST
;-----------------------------------------------------------------------
;
;  PROJECT:  NICS-TARE/CP
;
;  MODULE IDENTIFICATION:  NIC/292
;  DISK IDENTIFICATION:    CR/D/1227
;
;  CPS NAME:     ERROR DETECTION AND CORRECTION (EDC) SUBMODULE
;                EDC OUTPUT PROGRAM SECTION (EDO)
;  CPS VERSION:  0100
;
;  MERGE FILES:  SYSNOD,MNNNOD,GDSNOD,LETNOD,PCFNOD,CDTNOD,ECFNOD,EOCNOD
;                CSTNOD,GSTNOD,MQXNOD,BINNOD,MSBNOD
;                EDCNOD,TSTNOD,XPDNOD
;  MODULE FILES: EDOSOD,EDOMOD,EDOHOD,EDOVOD,EDONOD
;
;  REFERENCES:   NIC/200/PSP/0006
;
;  DATE:         791115
;  AUTHOR:       HM
;
;-----------------------------------------------------------------------
BEGIN MODULE EDOSYS
USE BASE
LOC=0
XDATE:=#$OC
;-----------------------------------------------------------------------
;
NOLIST
MESSAGE <:CALL SYSNOD:> $SYSNOD
MESSAGE <:CALL MNNNOD:> $MNNNOD
MESSAGE <:CALL GDSNOD:> $GDSNOD
MESSAGE <:CALL LETNOD:> $LETNOD
MESSAGE <:CALL PCFNOD:> $PCFNOD
MESSAGE <:CALL CDTNOD:> $CDTNOD
MESSAGE <:CALL ECFNOD:> $ECFNOD
MESSAGE <:CALL EOCNOD:> $EOCNOD
MESSAGE <:CALL CSTNOD:> $CSTNOD
MESSAGE <:CALL GSTNOD:> $GSTNOD
MESSAGE <:CALL MQXNOD:> $MQXNOD
MESSAGE <:CALL BINNOD:> $BINNOD
MESSAGE <:CALL EDCNOD:> $EDCNOD
MESSAGE <:CALL XPDNOD:> $XPDNOD
MESSAGE <:CALL TSTNOD:> $TSTNOD
MESSAGE <:CALL MSBNOD:> $MSBNOD
MESSAGE <:CALL DBPNOD:> $DBPNOD
LIST
;-----------------------------------------------------------------------
;
; RETURN LINKS (RL)
;
;-----------------------------------------------------------------------
LOC=EOBASE
RL6230: LOC=LOC+1
RL6320: LOC=LOC+1
RL6410: LOC=LOC+1
RL6420: LOC=LOC+1
RL6430: LOC=LOC+1
RL6440: LOC=LOC+1
RL6520: LOC=LOC+1
RL6820: LOC=LOC+1
RL7160: LOC=LOC+1
RL7200: LOC=LOC+1
RL7290: LOC=LOC+1
RL7300: LOC=LOC+1
RL7400: LOC=LOC+1
RL8100: LOC=LOC+1
RL8400: LOC=LOC+1
RLMQIS: LOC=LOC+1
RLMQOS: LOC=LOC+1
                                    ;
;-----------------------------------------------------------------------
;
; ASSIGNMENTS
;
;-----------------------------------------------------------------------
                                    ; BITS:
BIT7:=  7                           ;
;-----------------------------------------------------------------------
;FF\f


USE PROG
;-----------------------------------------------------------------------
;
;
; EDC OUTPUT PROGRAM SECTION
;
;
;-----------------------------------------------------------------------
LOC=EOPROG
;-----------------------------------------------------------------------

; PROCEDURE ED6200.
; READBUF(BUFP,OFFS,WORD)
;
; REGISTERS          ENTRY              EXIT
; R0                 OFFS               OFFS
; R1                 -                  WORD
; R3                 -                  BMSA
; R4                 LINK               DESTROYED
; R5                 BUFP (ABS)         BUFP (ABS)
; R7                 -                  DESTROYED
;
; INPUTS:  BUF
; OUTPUTS: -
;
; CALL BY: ED7070,ED8400
; CALL TO: GBSM
;-----------------------------------------------------------------------
ED6200:                             ; BEGIN READBUF(BUFP,OFFS,WORD)
        MOV   XBASE             R1  ;
        MON   GBSM                  ;   GET_PAGE(BUFP,BMSA)
        SVS          R7             ;   MASK:=PSW
        LDS          R3             ;   PSW:=BMSA
        MODN         R1             ;
        MOD          R0             ;
        MOV   0.     X5         R1  ;   WORD:=OFFS.BUFP
        LDS          R7             ;   PSW:=MASK
        JMP              0.     X4  ;   RETURN
                                    ; END
;----------------------------------------------------------------------

; PROCEDURE ED6210.
; PROCEDURE INDEX(IDENT.)
;
; REGISTERS:         ENTRY          EXIT
; R0                 IDENT.         UNCH
; R4                 LINK           UNCH
; R7                 -              INDEX
;
; CALL BY: ?
;----------------------------------------------------------------------
ED6210:                             ; BEGIN INDEX.
        MOV          R0         R7  ;
        XTR          R7  ECOADC     ;   X.OSTA:=(INDEX)MOD 32
        MOD          R7             ;
        MOD   ECRPTR                ;
        MOVC  ECOSTA            R7  ;   INDEX:=OSTA+X.OSTA
        JMP              0.     X4  ;   RETURN
                                    ; END INDEX.
;----------------------------------------------------------------------

; PROCEDURE ED6220.
; PROCEDURE UPDATE_ONTX.
;
; REGISTERS:         ENTRY          EXIT
;       R0           BID            UNCH
;       R4           LINK           UNCH
;       R6           ECRP           UNCH
;       R7           -              DEST
;----------------------------------------------------------------------
ED6220:                             ; BEGIN UPDATE_ONTX.
        MOV   ECONTX.X6         R7  ;
        SUB          R0         R7  ;   DIF:=(ONTX-BID)MOD128
        XTR          R7  EOCBDX     ;
        ILT          R7  ECOSAZ     ;   IF DIF .LT. OSAZ I.E.
                                    ;     (BID PREVIOUS TO ONTX)  THEN
        MOV          R0  ECONTX.X6  ;     ONTX:=BID
        JMP              0.     X4  ;   RETURN LINK+0
                                    ; END UPDATE_ONTX.
;-----------------------------------------------------------------------

; PROCEDURE ED6230.
; RELEASE_IEB
;
; REGISTERS          ENTRY              EXIT
; R0,R1,R2,R3,R5,R7  -                  DESTROYED
; R4                 LINK               DESTROYED
; R6                 ECRP (REL)         ECRP (REL)
;
; INPUTS:  ECCIQH
; OUTPUTS: ECCIQH
;
; CALL BY: ED7040,ED7050,ED7060,ED7070,ED7080
; CALL TO: LNOQ,RNBN
;
; RETURNS:
; LINK   - DONE
;-----------------------------------------------------------------------
ED6230:                             ; BEGIN RELEASE_IEB.
        MOV          R4  RL6230     ;
        MOVC  255               R3  ;   N:=255
        MOD   ECRPTA                ;
        MOVC  ECCIQH            R4  ;   QCB:=IQH
        MON   LNOQ                  ;   DEQUEUE(N,QCB,FBUF,LBUF)
        NOP                         ;
        MON   RNBN                  ;   RELEASE(N,FBUF)
        MOV   ECRPTR            R6  ;
        JMPI             RL6230     ;   RETURN
                                    ; END
;-----------------------------------------------------------------------

; PROCEDURE ED6240.
; BOOLEAND OUT_OF_RANGE(BID).
;
; REGISTERS          ENTRY              EXIT
; R0                 BID                BID
; R4                 LINK               LINK
; R6                 ECRP (REL)         ECRP (REL)
; R7                 -                  DESTROYED
;
; CALL BY: ED7060,ED7070,ED7080.
; CALL TO: -
; RETURNS:
; LINK+0: TRUE
; LINK+1: FALSE
;-----------------------------------------------------------------------
ED6240:                             ; BEGIN OUT_OF_RANGE.
        MOV          R0         R7  ;
        MODN             ECOPSB.X6  ;
        ADDC  -1                R7  ;   N:=(BID-OPSB-1)MOD 128
        XTR          R7  EOCBDX     ;
        IHS          R7  ECOSAZ     ;   IF N >= ARRAY_SIZE  THEN
        JMP              0.     X4  ;     TRUE
                                    ;   ELSE
        JMP              1.     X4  ;     FALSE
                                    ; END OUT_OF_RANGE.
;-----------------------------------------------------------------------

; PROCEDURE ED6320.
; GENERATE_OEB
;
; REGISTERS          ENTRY              EXIT
; R0,R1,R2,R3        -                  DESTROYED
; R4                 LINK               DESTROYED
; R5                 -                  BUFP (ABS)
; R6,R7              -                  DESTROYED
;
; INPUTS:  COEBCC,COBID,CSTOSC,CSTPTR
; OUTPUTS: COEBBT,EBCNT,EBTAB,BINSTA
;
; CALL BY: ED8610
; CALL TO: GNOB,PUTBUF,ED1960
;
; ENTRIES:
; ED6320: RR
; ED6322: SETB
;
; RETURNS: LINK+0 NO OUTPUT BINS
;          LINK+1 COMPLETE
;-----------------------------------------------------------------------
                                    ; BEGIN GENERATE_OEB
ED6320: MODC  BTRR-BTSETB           ;
ED6322: MOVC  BTSETB            R0  ;   EB_TYPE:=FUNC(ENTRY)
        MOV          R0  COEBBT     ;
        MOV          R4  RL6320     ;
        MOVC  1                 R3  ;   N:=1
        MON   GNOB                  ;   GET_BUFFER(N,FBUF)
        JMP              ED6325     ;   NO BINS
        MOV   RL6320            R0  ;   SET UP FOR NORMAL RETURN
        ADDC  1                 R0  ;
        MOV          R0  RL6320     ;
        MOVC  EBCNTX            R0  ;
        MOVC  BINCNM            R1  ;
        MOV   COEBCC            R2  ;   (WRITE EB_COUNT INTO BUFFER)
        MON   PUTBUF                ;   PUT_BUFFER(BUFP,OFFS,MASK,WORD)
        MOV   CSTPTR            R7  ;
        MOV   CSTCS2.X7         R0  ;
        MOVC  CSTOSF            R3  ;
        AND          R3         R0  ;
                                        IF BINSEC-CSTOSC GT 0 THEN
        SLL   R0     BINSEC-CSTOSC      FI
                                        IF BINSEC-CSTOSC LT 0 THEN
        SRL   R0     CSTOSC-BINSEC      FI
        MOV   COEBCC            R2  ;
        ADD          R0         R2  ;
        MOVC  BINSTA            R0  ;
        MOVC  BINSEM+BINCNM     R1  ;   (WRITE SEC,CNT INTO BUFFER)
        MON   PUTBUF                ;   PUT_BUFFER(BUFP,OFFS,MASK,WORD)
        MOVC  EBTABX            R0  ;
        MOVC  #FFFF             R1  ;
        MOV   COEBBT            R2  ;
        MOV   COBID             R3  ;
        SWP          R3             ;
        IOR          R3         R2  ;   (WRITE TYPE,BID INTO BUFFER)
        MON   PUTBUF                ;   PUT_BUFFER(BUFP,OFFS,MASK,WORD)
        JMPI             RL6320     ;   RETURN
ED6325:                             ;   NO BINS
        MOV   CSTPTR            R4  ;   SET FLAG TO MP TO INDICATE
        MOVC  1<CSTLAC          R5  ;   THAT WE'RE OUT OF BINS
        IOR          R5  CSTVF1.X4  ;
        JMPI             RL6320     ;   ABNORMAL EXIT
                                    ; END
;-----------------------------------------------------------------------

; PROCEDURE ED6400
; VALID(IEST,IBID)
;
; REGISTERS          ENTRY              EXIT
; R0                 -                  BID
; R4                 LINK               DESTROYED
;
; INPUTS:  CIEST,CIBID
; OUTPUTS: -
;
; CALL BY: ED7040,ED7050,ED7060,ED7070,ED7080
; CALL TO: -
;
; RETURNS:
; LINK+0 - NON-VALID
; LINK+1 - VALID
;-----------------------------------------------------------------------
ED6400:                             ; BEGIN VALID(IEST,IBID)
        MOV   CIEST             R0  ;
        IBN          R0  CDICFE     ;   IF TEST(IEST,CRC_ERROR)
        JMP              0.     X4  ;     THEN RETURN(0)
        MOV   CIBID             R0  ;
        IBN          R0  BIT7       ;   IF TEST(BID,PARITY_ERROR)
        JMP              0.     X4  ;     THEN RETURN(0)
        JMP              1.     X4  ;   ELSE RETURN(1)
                                    ; END
;----------------------------------------------------------------------
;FF\f


;-----------------------------------------------------------------------
; PROCEDURE ED6410/ED6412.
; ACTIVATE(ACKTO-TYPE1/TYPE2)
;
; REGISTERS          ENTRY              EXIT
; R0,R1,R2,R3        -                  DESTROYED
; R4                 LINK               DESTROYED
; R5                 -                  FQE (ABS)
; R6                 ECRP (REL)         ECRP (REL)
; R7                 -                  DESTROYED
;
; INPUTS:  CSTPTR,CSTLAD,GSTPTA,ECRPTR
; OUTPUTS: ECOFLG,ECOAFP
;
; CALL BY: ED7290,ED7410/ED7290.
; CALL TO: ED6420,RFTA
;-----------------------------------------------------------------------
ED6410:                             ; BEGIN ACTIVATE(ACTO-TYPE1)
        MODC  1<ECOPAT1-1<ECOPAT2   ;
ED6412:                             ; BEGIN ACTIVATE(ACKTO-TYPE2)
        MOVC  1<ECOPAT2         R0  ;   TYPE:=ACKTO-TYPETO-TYPE2)
        MOV          R0  EDWRK0     ;
        MOV          R4  RL6410     ;
        JMP          S4  ED6420     ;   DEACTIVATE(ACKTO)
        MOV   EDWRK0            R0  ;
        IOR          R0  ECOFLG.X6  ;   SET OFLG(OPAT1/OPAT2)
        MOVC  EDLLPN            R2  ;   LPN:=PID_EDL_PROCESS
        MOV   CSTPTR            R4  ;
        MOV   CSTCS1.X4         R3  ;
        SWP          R3             ;
        XTR          R3  CSTLAX     ;   DATA:=LCN
        SETS         R3  EOCATF     ;   DATA:=DATA SET(ACKTO_DESIGNATOR)
        MOD   GSTPTA                ;
        MOVC  GSTF5             R4  ;   FQCB:=FIFO_QCB_ADDR (5SEC)
        MON   RFTA                  ;   RESERVE_FTMO(LPN,DATA,FQCB,FQE)
        NOP                         ;
        MOV   ECRPTR            R6  ;
        MOV          R5  ECOAFP.X6  ;   AFP.ECRP:=FQE
        JMPI             RL6410     ;   RETURN
                                    ; END
;-----------------------------------------------------------------------

; PROCEDURE ED6420
; DEACTIVATE(ACKTO)
;
; REGISTERS          ENTRY              EXIT
; R0,R1,R3,R5,R7     -                  DESTROYED
; R2                 -                  LPN
; R4                 LINK               DESTROYED
; R6                 ECRP (REL)         ECRP (REL)
;
; INPUTS:  ECOFLG,ECOAFP
; OUTPUTS: -
;
; CALL BY: ED7040,ED7060,ED7070,ED7080,ED6410
;          ED3301,ED3360,ED7160,ED7290
; CALL TO: DFTA
;-----------------------------------------------------------------------
ED6420:                             ; BEGIN DEACTIVATE(ACKTO)
        MOV          R4  RL6420     ;
        MOV   ECRPTR            R6  ;
        MOV   ECOFLG.X6         R0  ;
        IBZP         R0  ECOPAT1    ; IF OFLG(OPAT1)
        IBZ          R0  ECOPAT2    ;   .OR. OFLG(OPAT2) THEN
        JMP              ED6422     ;  BEGIN
        MOVC  EDLLPN            R2  ;   LPN:=PID_EDL_PROCESS
        MOV   ECOAFP.X6         R5  ;   FQE:=AFP.ECRP
        MON   DFTA                  ;   DEACTIVATE_FTMO(LPN,FQE)
        INC              ECOXAT.X6  ;     -DEAC, INC OXAT.ECRP
ED6422:                             ;  END
        MOVC  NT(1<ECOPAT1+%        ;
            1<ECOPAT2+1<ECOATO) R0  ;
        AND          R0  ECOFLG.X6  ;   CLEAR OFLG(OPAT1,OPAT2,OATO)
        JMPI             RL6420     ;   RETURN
                                    ; END
;-----------------------------------------------------------------------

; PROCEDURE ED6430
; ACTIVATE(ACKLTO)
;
; REGISTERS          ENTRY              EXIT
; R0,R1,R2,R3        -                  DESTROYED
; R4                 LINK               DESTROYED
; R5                 -                  FQE (ABS)
; R6                 ECRP (REL)         ECRP (REL)
; R7                 -                  DESTROYED
;
; INPUTS:  CSTPTR,CSTLAD,GSTPTA,ECRPTR
; OUTPUTS: ECOFLG,ECOLFP
;
; CALL BY: ED7120
; CALL TO: ED6440,RFTA
;-----------------------------------------------------------------------
ED6430:                             ; BEGIN ACTIVATE(ACKLTO)
        MOV          R4  RL6430     ;
        JMP          S4  ED6440     ;   DEACTIVATE(ACKLTO)
        MOVC  EDLLPN            R2  ;   LPN:=PID_EDL_PROCESS
        MOV   CSTPTR            R4  ;
        MOV   CSTCS1.X4         R3  ;
        SWP          R3             ;
        XTR          R3  CSTLAX     ;   DATA:=LCN
        SETS         R3  EOCLTF     ;   DATA:=DATA SET(ACKLTO_DESIGNATOR
        MOD   GSTPTA                ;
        MOVC  GSTF5             R4  ;   FQCB:=FIFO_QCB_ADDR (5SEC)
        MON   RFTA                  ;   RESERVE_FTMO(LPN,DATA,FQCB,FQE)
        NOP                         ;
        MOV   ECRPTR            R6  ;
        MOV          R5  ECOLFP.X6  ;   LFP.ECRP:=FQE
        MOVC  1<ECOPALT         R0  ;
        IOR          R0  ECOFLG.X6  ;   SET(OFLG,OPTL)
        JMPI             RL6430     ;   RETURN
                                    ; END
;-----------------------------------------------------------------------

; PROCEDURE ED6440
; DEACTIVATE(ACKLTO)
;
; REGISTERS          ENTRY              EXIT
; R0,R1,R3,R5,R7     -                  DESTROYED
; R2                 -                  LPN
; R4                 LINK               DESTROYED
; R6                 ECRP (REL)         ECRP (REL)
;
; INPUTS:  ECOFLG,ECOLFP
; OUTPUTS: -
;
; CALL BY: ED3301,ED3360,ED6430,ED7050
; CALL TO: DFTA
;-----------------------------------------------------------------------
ED6440:                             ; BEGIN DEACTIVATE(ACKLTO)
        MOV          R4  RL6440     ;
        MOV   ECOFLG.X6         R0  ;
        IBZ          R0  ECOPALT    ; IF OFLG(OPALT)  THEN
        JMP              ED6442     ;  BEGIN
        MOVC  EDLLPN            R2  ;   LPN:=PID_EDL_PROCESS
        MOV   ECOLFP.X6         R5  ;   FQE:=LFP.ECRP
        MON   DFTA                  ;   DEACTIVATE_FTMO(LPN,FQE)
        INC              ECOXLT.X6  ;   -DEACT. , OXLT:=OXLT+1
ED6442:                             ;  END
        MOVC  NT%                   ;
         1<ECOPALT+1<ECOALTO    R0  ;
        AND          R0  ECOFLG.X6  ;   CLAER OFLG(OPALT,OALT)
        JMPI             RL6440     ;   RETURN
                                    ; END
;----------------------------------------------------------------------
;FF\f


;----------------------------------------------------------------------
; PROCEDURE ED6520.
; REMOVE(OSTA,OEBA,X0,X1)
;
; REGISTERS:         ENTRY          EXIT
; R0                 X0             DEST
; R1                 X1             DEST
; R0,R3,R5,R7        -              DEST
; R4                 LINK           DEST
; R6                 ECRP (REL)     UNCH
;
; CALL TO: ED6210,RNBN
; CALL BY: ED1260,ED7040
; RETURNS:
; LINK+0: DONE
;----------------------------------------------------------------------
ED6520:                             ; BEGIN REMOVE
        MOV          R4  RL6520     ;
        SUB          R0         R1  ;   N:=(X1-X0)MOD OSAZ
                                    ;
                                    ;   FOR J:=X0 UNTIL X0+N DO
ED6522:                             ;     BEGIN
        ADDC  1                 R0  ;       J:=J+1
        JMP          S4  ED6210     ;       STATUS:=OSTA(J)
        MOV          X7         R4  ;
        MOVC  1<ECOARQ          R3  ;       OSTA(J):=OSTA(J) AND (OARQ)
        AND          R3  0.     X7  ;
        IBZ          R4  ECOFUL     ;       IF STATUS(OFUL) THEN
        JMP              ED6526     ;         BEGIN
        IBN          R4  ECOITX     ;           IF STATUS(-OITX) THEN
        JMP              ED6524     ;             BEGIN
        MOV          R0  EDWRK0     ;
        MOV          R1  EDWRK1     ;
        MOV   ECOEBA-ECOSTA.X7  R5  ;               BUFP:=OEBA(J)
        MOVC  -1                R3  ;               K:=00
        MON   RNBN                  ;               RELEASE(BUFP,K)
        MOV   EDWRK0            R0  ;
        MOV   EDWRK1            R1  ;
        MOV   ECRPTR            R6  ;
        JMP              ED6526     ;             END
ED6524:                             ;           ELSE
                                    ;             BEGIN
        MOV   ECOEBA-ECOSTA.X7  R3  ;
        MOVC  EOCTDC            R2  ;               TYPE:=DISCARD
        IBN          R4  ECOTQS     ;               OTQI:=FUNC(OTQS)
        MODC  ECOTQI1-ECOTQI0       ;               0.OTQI:=TYPE
        MOVL         R23 ECOTQI.X6  ;               1.OTQI:=EBP
                                    ;             END
ED6526:                             ;         END
        XTR          R1  ECOADC     ;
        SOB          R1  ED6522     ;     END
        JMPI             RL6520     ;   RETURN
                                    ; END REMOVE.
;----------------------------------------------------------------------

; PROCEDURE ED6810.
; BOOLEAN TX_OPEN.
;
; REGISTERS:         ENTRY          EXIT
; R0                 -              DEST
; R4                 LINK           UNCH
; R5                 OFLG (REL)     UNCH
; R6                 ECRP (REL)     UNCH
; R7                 -              DEST
;
; RETURNS:
; LINK+0: FALSE
; LINK+1: TRUE
;----------------------------------------------------------------------
ED6810:                             ; BEGIN TX_OPEN.
        MOV   CSTPTR            R7  ;
        MOV   CSTCDT.X7         R7  ;
        SUB   XBASE             R7  ;
        MOV   ECOTEC.X6         R0  ;
        ILT          R0  2          ;   IF OTEC >=2
        ION              CDONEB.X7  ;     .OR. ONEB<>0  THEN
        JMP              0.     X4  ;     FALSE
                                    ;   ELSE
        JMP              1.     X4  ;     TRUE
                                    ; END TX_OPEN.
;----------------------------------------------------------------------

; PROCEDURE ED6820.
; PROCEDURE QUEUE(EBP,QID,EBP/OSTAX)
;
; REGISTERS          ENTRY          EXIT
;       R0           -              DEST
;       R1           EBP            DEST
;       R2           QID            DEST
;       R3           EBP/OSTAX      DEST
;       R4           LINK           DEST
;       R5           -              DEST
;       R6           ECRP           UNCH
;       R7           -              DEST
;----------------------------------------------------------------------
ED6820:                             ; BEGIN QUEUE.
        MOV          R4  RL6820     ;
        MOV   ECOFLG.X6         R5  ;   IF OFLG(OTXO) THEN
        IBZ          R5  ECOTXO     ;     SIM QUEUED
        MON   EDOTST                ;   EDC_OUTPUT_TEST
        JMP              ED6824     ;   X0: SIM_QUEUED,GOTO SIM_MQO.
        MOV   ECOTEC.X6         R0  ;
        IGE          R0  2          ;   IF OTEC .GE. 2  THEN
        JMPI         S4  EI1990     ;     CP_ERROR.
        ION              ECOISW.X6  ;   ITQI:=FUNC(OISW)
        MODC  ECOTQI1-ECOTQI0       ;   1.OTQI:=QID
        MOVL         R23 ECOTQI.X6  ;   2.OTQI:=N/X
        INV              ECOISW.X6  ;   SHIFT OISW
        INC              ECOTEC.X6  ;   OTEC:=OTEC+1
        MOV   CSTPTR            R6  ;
        MON   RS0CDT                ;   RESERVE_CDT(CSTP)
        JMPI         S4  EI19A0     ;
        ION              CDONEB.X5  ;   IF CDONEB <> 0  THEN
        JMPI         S4  EI1990     ;     CP_ERROR
        MOV          R1  CDONEB.X5  ;   CDONEB:=EBP
        MOV          R5         R7  ;
        IOZP             CDOCEB.X5  ;   IF OCEB = 0 I.E.
        ADDC  CDOEST            R7  ;      (LINE IDLE.) THEN
        SETS         X7  CDOEDS     ;     SETS CDOEST(EDS)
        MOVC  0                 R3  ;   EST:=0
        MOV   CSTCS7.X6         R0  ;
        IBNP         R0  CSTEMM     ;   IF EDC_MONITORING_MODE  THEN
        MON   EDCTMO                ;     EDC_MONITORING_OUTPUT
        JMPI         S4  EI1900     ;
        MON   RL1CDT                ;   RELEASE_CDT(CDTP)
        NOP                         ;
        MOV   ECRPTR            R6  ;
        JMPI         RL6820         ;   RETURN
                                    ;
ED6824:                             ; SIM_MQO.
        MOV          R3         R1  ;
        MOD          R2             ;
        JMPI         S4  ED0500     ;   MQO_SERVICE(EBP,QID,N/X)
        MOV   ECRPTR            R6  ;
        JMPI             RL6820     ;   RETURN
                                    ; END QUEUE.
;-----------------------------------------------------------------------
;FF\f


;----------------------------------------------------------------------
; ED7040/ED7050/ED7060/ED7070/ED7080.
;
; MQI SERVICE PROCEDURES.
;
; REGISTERS:         ENTRY          EXIT
; R1,R2,R3,R5,R7     -              DEST
; R4                 LINK           DEST
; R6                 ECRP (REL)     DEST
;
; ENTRY:
; ED7040: ACK_RX.
; ED7050: ACKL_RX.
; ED7060: NAK_RX.
; ED7070: NAK2_RX.
; ED7080: NAKF_RX.
; RETURNS:
; LINK+0: DONE
;
; CALL TO: ED6200,ED6210,ED6220,ED6230,ED6400,ED6420,
;          ED6430,ED6520,ED7200.
; CALL BY: MAIN_INT.
;
;----------------------------------------------------------------------
ED7040:                             ; BEGIN ACK_RX.
                                    ;----------------------------------
        MOV          R4  RLMQIS     ;
        MOD          R6             ;
        MOVC  ECOFLG            R5  ;
        IBN          X5  ECOATO     ;   IF OFLG(OATO)  THEN
        JMP              ED7099     ;     GOTO RETURN (IGNORE_EB)
        JMP          S4  ED6400     ;   IF NOT VALID(CRC,BID) THEN
        JMP              ED7088     ;     REPORT(CRC_ERROR)
        JMP          S4  ED6210     ;   STATUS:=OSTA(CIBID)
        IEQ          R0  ECOPSB.X6  ;   IF CIBID<>OPSB
        JMP              ED7044     ;     .AND. OFLG(-OTXD)  THEN
        IBZ          X7  ECOTXD     ;     REPORT(UNEXP_ACK)
        JMP              ED7086     ;   ELSE
        IEQ          R0  ECOFSB.X6  ;     CASE OF CIBID
        JMP              ED7042     ;       BEGIN
        INE          R0  ECOSSB.X6  ;         0. UNEXPECTED_ACK
        JMP              ED7086     ;           REPORT(UNEXP_ACK)
                                    ;
                                    ;         1. CIBID:=OSSB
        MOV          R0  ECOFSB.X6  ;           OFSB:=OSSB
        MOV   ECOS2S.X6         R1  ;
        MOV          R1  ECOS1S.X6  ;           OS1S:=OS2S
        CLR              ECOS2S.X6  ;           OS2S:=0
        DEC              ECOCSC.X6  ;           OCSC:=OCSC-1
                                    ;
ED7042:                             ;         2. CIBID:=OFSB
        MOVL  ECOS1S.X6         R01 ;
        MOV          R1  ECOS1S.X6  ;           OS1S:=OS2S
        CLR              ECOS2S.X6  ;           OS2S:=0
        DEC              ECOCSC.X6  ;           OCSC:=OCSC-1
        MOD   CSTPTR                ;           CSTLAS:=OS1S
        MOV          R0  CSTLAS     ;
        MOV   ECOPSB.X6         R0  ;           X0:=OPSB
        MOVL  ECOFSB.X6         R12 ;           X1:=OFSB
        MOVL         R12 ECOPSB.X6  ;           OPSB:=OFSB
                                    ;           OFSB:=OSSB
        JMP          S4  ED6520     ;           REMOVE(OSTA,OEBA,X0,X1)
        MOVC  NT%                   ;
        (1<ECORAQ+1<ECOEAF)     R0  ;
        AND          R0  ECOFLG.X6  ;           CLEAR OFLG(ORAQ,OEAF)
        MOD          R6             ;
        MOVC  ECOFLG            R5  ;
        IBN          X5  ECOPAT1    ;
        JMP          S4  ED6420     ;           DEACTIVATE(ACKTO)
        JMP          S4  ED7200     ;           INSERT_EB(OEBA)
        JMP              ED7099     ;           GOTO RETURN
                                    ;         END 1/2.
ED7044:                             ;         3. CIBID:=OPSB
        IBZ          X5  ECORAQ     ;           IF OFLG(-ORAQ)  THEN
        JMP              ED7086     ;             REPORT(UNEXP_ACK)
        IBZ          X5  ECOSBM     ;           IF OFLG(OSBM)  THEN
        JMP              ED7046     ;             BEGIN
        RELS         X5  ECOALTO    ;               CLEAR OFLG(OALTO)
        MOD   CSTPTR                ;
        MOVC  CSTVF4            R7  ;
        RELS         X7  EECSRA     ;               CLEAR VF4(EECSRA)
ED7046:                             ;             END
        MOVC  NT%                   ;
        (1<ECORAQ+1<ECOSBM)     R0  ;
        AND          R0  ECOFLG.X6  ;           CLEAR OFLG(ORAQ,OSBM)
        MOVC  1<ECOPCQ          R0  ;
        IOR          R0  ECOFLG.X6  ;           SETS OFLG(OPCQ)
        IBN          X5  ECOPAT1    ;
        JMP          S4  ED6420     ;           DEACTIVATE(ACKTO)
        JMP              ED7099     ;           GOTO RETURN
                                    ;         END 3.
;----------------------------------------------------------------------
                                    ;
ED7050:                             ; BEGIN ACKL_RX.
                                    ;----------------------------------
        MOV          R4  RLMQIS     ;
        MOV   ECOFLG.X6         R0  ;
        IBN          R0  ECOALTO    ;   IF OFLG(OALTO)  THEN
        JMP              ED7099     ;     GOTO RETURN (IGNORE EB)
        MOD          R6             ;
        MOVC  ECOQCW            R5  ;
        IBZ          X5  ECOLTX     ;   IF OQCW(-OLTX) I.E. UNEXP.
        JMP              ED7087     ;     .OR.
        JMP          S4  ED6400     ;     CRC_ERROR
        JMP              ED7089     ;     .OR.
        INE          R0  ECOCLB.X6  ;     CIBID<>OCLB  THEN
        JMP              ED7087     ;     REPORT(ERROR)
                                    ;   ELSE
                                    ;     BEGIN
        RELS         X5  ECOLTX     ;       CLEAR OQCW(OLTX)
        JMP          S4  ED6440     ;       DEACTIVATE(ACKLTO)
        MOV   ECOLER.X6         R5  ;
        MOVC  -1                R3  ;
        MON   RNBN                  ;       RELEASE LCB
                                    ;     END
        JMP              ED7099     ;   GOTO RELEASE_IEB
;----------------------------------------------------------------------
                                    ;
ED7060:                             ; BEGIN NAK_RX.
                                    ;----------------------------------
        MOV          R4  RLMQIS     ;
        MOD          R6             ;
        MOVC  ECOFLG            R5  ;
        IBZ          X5  ECOATO     ;   IF OFLG(OATO)
        IBN          X5  ECOSBM     ;     .OR. OFLG(OSBM) THEN
        JMP              ED7099     ;     GOTO RETURN
        JMP          S4  ED6400     ;   IF NOT VALID(IEST,BID)
        JMP              ED7090     ;     .OR.
        JMP          S4  ED6240     ;     OUT_OF_RANGE(BID)  THEN
        JMP              ED7096     ;     GOTO REPORT
        JMP          S4  ED6220     ;   UPDATE_ONTX
        JMP          S4  ED6210     ;   STATUS:=OSTA(CIBID)
        IBZ          X7  ECOTXD     ;   IF STATUS(-OTXD)THEN
        JMP              ED7096     ;     REPORT
        IBN          X7  ECOITX     ;   IF STATUS(OITX) THEN
        JMP              ED7099     ;     IGNORE BLOCK
        MOD   ECFPTR                ;
        MOV   ECGRCL            R4  ;
        SLL          R4  ECONCT     ;
        IHS          X7         R4  ;   IF NAK COUNT LIMIT EXCEEDED THEN
        JMP              ED7093     ;     GOTO REPORT
        SETS         X7  ECONKD     ;   SETS OSTA(CIBID,ONKD)
        RELS         X5  ECORAQ     ;   CLEAR OFLG(ORAQ)
        IBN          X5  ECOPAT1    ;
        JMP          S4  ED6420     ;   DEACTIVATE(ACKTO)
        JMPI         S4  EI1600     ;   SCHEDULE(D_TX)
        JMP              ED7099     ;   GOTO RETURN
;----------------------------------------------------------------------
                                    ;
ED7070:                             ; BEGIN NAK2_RX.
                                    ;----------------------------------
        MOV          R4  RLMQIS     ;
        MOD          R6             ;
        MOVC  ECOFLG            R5  ;
        IBZ          X5  ECOATO     ;   IF OFLG(OATO)
        IBN          X5  ECOSBM     ;     .OR. OFLG(OSBM) THEN
        JMP              ED7099     ;     GOTO RETURN
        MOV   CIBUF             R5  ;   BUFP:=CIBUF
        MOVC  EBBD2X            R0  ;   OFFS:=BD2X
        JMP          S4  ED6200     ;   READBUF(BUFP,OFFS,BID)
        XTR          R1  EOCBDX     ;
        MOV          R1  CIBID2     ;   CIBID2:=BID
        MOV   CIBID2            R0  ;
        IBN          R0  BIT7       ;   IF BID2 PARITY_ERROR
        JMP              ED7091     ;     .OR.
        JMP          S4  ED6240     ;     OUT_OF_RANGE(BID2)
        JMP              ED7097     ;     .OR.
        JMP          S4  ED6400     ;     NOT VALID(IEST,BID1)
        JMP              ED7091     ;     .OR.
        JMP          S4  ED6240     ;     OUT_OF_RANGE(BID1)
        JMP              ED7097     ;     .OR.
        MOV   CIBID2            R1  ;     NBID1,BID2 NOT IN CORRECT
        SUB          R0         R1  ;      ORDER I.E.
        XTR          R1  EOCBDX     ;     (BID2-BID1)MOD128<OSAZ )
        IHS          R1  ECOSAZ     ;                              THEN
        JMP              ED7097     ;     GOTO REPORT
        JMP          S4  ED6220     ;   UPDATE_ONTX
                                    ;
        ADDC  1                 R1  ;   FOR N:=BID1 UNTIL BID2  DO
ED7072:                             ;     BEGIN
        JMP          S4  ED6210     ;       STATUS:=OSTA(N)
        MOD   ECFPTR                ;
        MOV   ECGRCL            R4  ;
        SLL          R4  ECONCT     ;
        IHS          X7         R4  ;       IF COUNT_LIMIT_EXCEEDED
        JMP              ED7094     ;         .OR.
        IBZ          X7  ECOTXD     ;         EB NOT AVAILABLE  THEN
        JMP              ED7097     ;         GOTO REPORT
                                    ;       ELSE
        SETS         X7  ECONKD     ;         SETS STATUS(ONKD)
        ADDC  1                 R0  ;
        SOB          R1  ED7072     ;     END
        MOD          R6             ;
        MOVC  ECOFLG            R5  ;
        RELS         X5  ECORAQ     ;   CLEAR OFLG(ORAQ)
        IBN          X5  ECOPAT1    ;
        JMP          S4  ED6420     ;   DEACTIVATE(ACKTO)
        JMPI         S4  EI1600     ;   SCHEDULE(D_TX)
        JMP              ED7099     ;   GOTO RETURN
;----------------------------------------------------------------------
                                    ;
ED7080:                             ; BEGIN NAKF_RX.
                                    ;----------------------------------
        MOV          R4  RLMQIS     ;
        MOD          R6             ;
        MOVC  ECOFLG            R5  ;
        IBZ          X5  ECOATO     ;   IF OFLG(OATO)
        IBN          X5  ECOSBM     ;     .OR. OFLG(OSBM) THEN
        JMP              ED7099     ;     GOTO RETURN
        JMP          S4  ED6400     ;   IF NOT VALID(IEST,BID)  THEN
        JMP              ED7092     ;     GOTO REPORT
        JMP          S4  ED6240     ;   IF NOT OUT_OF_RANGE(BID)  THEN
        JMP              ED7082     ;     BEGIN
        JMP          S4  ED6210     ;       STATUS:=OSTA(CIBID)
        IBZ          X7  ECOTXD     ;       IF STATUS(-OTXD)  THEN
        JMP              ED7098     ;         GOTO REPORT
                                    ;       ELSE
        ADDC  1                 R0  ;         N:=CIBID+1
        JMP              ED7083     ;     END
ED7082:                             ;   ELSE
                                    ;     BEGIN
        INE          R0  ECOPSB.X6  ;       IF CIBID <> OPSB  THEN
        JMP              ED7098     ;         GOTO REPORT
                                    ;       ELSE
                                    ;         BEGIN
        ADDC  1                 R0  ;           N:=CIBID+1
        JMP          S4  ED6210     ;           STATUS:=OSTA(N)
        IBZ          X7  ECOTXD     ;           IF STATUS(-OTXD)  THEN
        JMP              ED7098     ;             GOTO REPORT
                                    ;         END
ED7083:                             ;     END
        JMP          S4  ED6220     ;   UPDATE_ONTX
                                    ;
                                    ;   REPEAT
ED7084:                             ;     BEGIN
        JMP          S4  ED6210     ;       STATUS:=OSTA(N)
        IBZ          X7  ECOITX     ;
        IBN          X7  ECOTXD     ;
        IBN          X7  ECOARQ     ;
        JMP              ED7085     ;
        MOD   ECFPTR                ;
        MOV   ECGRCL            R4  ;
        SLL          R4  ECONCT     ;
        IHS          X7         R4  ;       IF NAK LIMIT EXCEEDED THEN
        JMP              ED7095     ;         GOTO REPORT
        SETS         X7  ECONKD     ;       SETS STATUS(ONKD)
        ADDC  1                 R0  ;       N:=N+1
        JMP              ED7084     ;     UNTIL ((-OTXD.AND.-OITX)
                                    ;   .OR.ORAQ)
ED7085:                             ;
        RELS         X5  ECORAQ     ;   CLEAR OFLG(ORAQ)
        IBN          X5  ECOPAT1    ;
        JMP          S4  ED6420     ;   DEACTIVATE(ACKTO)
        JMPI         S4  EI1600     ;   SCHEDULE(D_TX)
        JMP              ED7099     ;   GOTO RETURN
;----------------------------------------------------------------------
                                    ;
                                    ; REPORT.
                                    ;----------------------------------
                                    ;   UNEXPECTED BLOCKS.
ED7086: MODC  EEC014-EEC015         ;     ACK
ED7087: MODC  EEC015-EEC004         ;     ACKL
                                    ;   EB_CRC_ERROR.
ED7088: MODC  EEC004-EEC005         ;     ACK
ED7089: MODC  EEC005-EEC006         ;     ACKL
ED7090: MODC  EEC006-EEC007         ;     NAK
ED7091: MODC  EEC007-EEC008         ;     NAK2
ED7092: MODC  EEC008-EEC106         ;     NAKF
                                    ;   RE_TX COUNT EXCESS.
ED7093: MODC  EEC106-EEC107         ;     NAK
ED7094: MODC  EEC107-EEC108         ;     NAK2
ED7095: MODC  EEC108-EEC116         ;     NAKF
                                    ;   BLOCK NOT AVAILABLE.
ED7096: MODC  EEC116-EEC117         ;     NAK
ED7097: MODC  EEC117-EEC118         ;     NAK2
ED7098: MODC  EEC118                ;     NAKF
        MOVC  0                 R0  ;
        JMPI         S4  EI1800     ;   REPORT(ERROR_CODE)
        NOP                         ;
ED7099:                             ; RETURN.
        JMP          S4  ED6230     ;   RELEASE_IEB
        JMPI             RLMQIS     ;   RETURN LINK+0
                                    ; END ACK/ACKL/NAK/NAK2/NAKF_RX.
;----------------------------------------------------------------------
;FF\f


;----------------------------------------------------------------------
; ED7110/ED7120/ED7130/ED7140/ED7150/ED7160/ED7170/ED7190.
;
; MQO_SERVICE_PROCEDURES.
;
; REGISTERS:         ENTRY          EXIT
; R0                 TQI            DEST
; R1                 EBP/OSTAX      DEST
; R3                 EBR(MQO)       DEST
; R4                 LINK           DEST
; R2,R5,R6,R7        -              DEST
; ENTRY:
; ED7110: D_TX_DONE.
; ED7120: LCB_TX_DONE
; ED7130: ACK_TX_DONE.
; ED7140: NAK_TX_DONE.
; ED7150: ACKL_TX_DONE.
; ED7160: RR_TX_DONE.
; ED7170: SETB_TX_DONE.
; ED7190: RELEASE_EB.
;
; RETURNS:
; LINK+0: DONE.
;
; CALL TO: ED6410,ED6430
; CALL BY: MAIN_INT.,ED6820
;----------------------------------------------------------------------
ED7110:                             ; BEGIN D_TX_DONE.
                                    ;----------------------------------
                                    ;
        RELS         X1  ECOITX     ;   CLEAR OSTA(X)(OITX)
        SETS         X1  ECOTXD     ;   SETS OSTA(X)(OTXD)
        JMP              0.     X4  ;   RETURN LINK+0
                                    ; END D_TX_DONE.
;----------------------------------------------------------------------
ED7120:                             ; BEGIN LCB_TX_DONE.
                                    ;----------------------------------
        MOV          R4  RLMQOS     ;
        MOVC  NT(1<ECOLIT)      R4  ;   CLEAR OQCW(OLIT)
        AND          R4  ECOQCW.X6  ;
        INC              ECOLCT.X6  ;   OLCT:=OLCT+1
        JMP          S4  ED6430     ;   ACTIVATE(ACKLTO)
        JMPI             RLMQOS     ;   RETURN LINK+0
                                    ; END LCB_TX_DONE.
;----------------------------------------------------------------------
ED7130:                             ; BEGIN ACK_TX_DONE.
                                    ;----------------------------------
                                    ;
ED7140:                             ; BEGIN NAK_TX_DONE.
                                    ;----------------------------------
                                    ;
ED7150:                             ; BEGIN ACKL_TX_DONE.
                                    ;----------------------------------
                                    ;
        JMP              ED7190     ;   GOTO RELEASE_BUFFER.
                                    ;
ED7160:                             ; BEGIN RR_TX_DONE.
                                    ;----------------------------------
        MOV          R4  RL7160     ;
        MOVC  NT(1<ECORRP)      R0  ;
        AND          R0  ECOFLG.X6  ;   CLEAR OFLG(ORRP)
        INC              ECORCT.X6  ;   ORCT:=ORCT+1
        JMP          S4  ED7190     ;   RELEASE_EB
        JMP          S4  ED6410     ;   ACTIVATE(ACKTO-TYP1)
        JMPI             RL7160     ;   RETURN
                                    ;
ED7170:                             ; BEGIN SETB_TX_DONE.
                                    ;----------------------------------
                                    ;
ED7190:                             ;   RELEASE_EB:
        MOV          R4  RLMQOS     ;
        INE          R1         R3  ;   IF EBR(MQO)<>EBP THEN
        JMPI         S4  EI1900     ;E    ERROR0(TQI-MISMATCH)
        MOVC  -1                R3  ;
        MOV          R1         R5  ;   BUFP:=EBP
        MON   RNBN                  ;   RELEASE BINS
        JMPI             RLMQOS     ; RETURN LINK+0
                                    ; END ACK/NAK/ACKL/RR/SETB_TX_DONE.
;----------------------------------------------------------------------
;FF\f


;----------------------------------------------------------------------
; PROCEDURE ED7200.
; INSERT_EB(OEBA,OLER).
;
; REGISTERS:         ENTRY          EXIT
; R0,R1,R2,R3,R5,R7  -              DEST
; R4                 LINK           DEST
; R6                 ECRP (REL)     UNCH
;
; CALL TO: ED6210,ED8400
; CALL BY: ED3600,ED7040
; ENTRIES:
; ED7200
; RETURNS:
; LINK+0: DONE
;----------------------------------------------------------------------
ED7200:                             ;BEGIN INSERT_EB.
        MOV          R4  RL7200     ;
ED7210:                             ;
        MOV   ECOFLG.X6         R0  ;WHILE OFLG(-OEMP) I.E.
        IBN          R0  ECOEMP     ;  (OBQ NOT EMPTY)   DO
        JMP              ED7240     ;
        IBN          R0  ECOEAF     ; IF OFLG(-OEAF) THEN
        JMP              ED7220     ;  BEGIN
        JMPI         S4  EI8400     ;   COMPOSE_OEB
        MOV   ECRPTR            R6  ;
        MOV   COEBBT            R0  ;
        IEQ          R0  BTLCB      ;   IF LCB COMPOSED  THEN
        JMP              ED7224     ;     GOTO INSERT_LCB
        IEQ          R0  0          ;   IF NO EB COMPOSED  THEN
        JMP              ED7230     ;     GOTO UPDATE_OFLG
ED7214:                             ;   ELSE
        MOV   ECONIX.X6         R0  ;     BEGIN
        JMP          S4  ED6210     ;       X:=INDEX(ONIX)
        IBN          X7  ECOFUL     ;       IF OSTA(X)(OFUL)) THEN
        JMPI         S4  EI1990     ;         CP_ERROR
        MOV   COSMSK            R1  ;
        MOV          R1  0.     X7  ;       OSTA(X):=COSMSK
        MOV   COEBPT            R2  ;
        MOV   R2  ECOEBA-ECOSTA.X7  ;       OEBA(X):=EBP
        MOVC  1<ECODTP          R0  ;
        IOR          R0  ECOQCW.X6  ;       SETS OQCW(ODTP)
        INC              ECONIX.X6  ;       ONIX:=ONIX+1
        MOV   ECONIX.X6         R0  ;
        JMP          S4  ED6210     ;       X:=INDEX(ONIX)
        IBN          R1  ECOESM     ;       IF EOS/EOM_EB  THEN
        INC              ECOCSC.X6  ;         OCSC:=OCSC+1
        MOV   ECOCSC.X6         R0  ;
        IGEP         R0  2          ;       IF OCSC .GE. 2  THEN
                                    ;         BEGIN
        SETS         X7  ECOARQ     ;           SETS OSTA(X)(OARQ)
        JMP              ED7232     ;           GOTO UPDATE_OFLG
                                    ;         END
        JMP              ED7210     ;     END
                                    ;  END
ED7220:                             ; ELSE
        MOV   ECOQCW.X6         R0  ;  BEGIN
        IBZ          R0  ECOLRX     ;   IF LCB_NOT_PENDING  THEN
        JMP              ED7240     ;     GOTO RETURN
        JMPI         S4  EI8400     ;   COMPOSE_OEB
        MOV   ECRPTR            R6  ;
        MOV   COEBBT            R0  ;
        INE          R0  BTLCB      ;   IF EBBT <> BTLCB  THEN
        JMPI         S4  EI1990     ;     CP_ERROR
                                    ;
ED7224:                             ;   INSERT_LCB:
        MOD          R6             ;
        MOVC  ECOQCW            R5  ;
        IBN          X5  ECOLTX     ;   IF LCB_IN_PROCRESS  THEN
        JMPI         S4  EI1990     ;     CP_ERROR(ODP-FAILLURE)
        RELS         X5  ECOLRX     ;
        SETS         X5  ECOLTX     ;   PUT OCQW(OLTX,-OLRX,OLCP)
        SETS         X5  ECOLCP     ;
        CLR              ECOLCT.X6  ;   OLCT:=0
        MOV   COEBPT            R0  ;
        MOV          R0  ECOLER.X6  ;   OLER:=EBP
        MOV   COBID             R0  ;
        MOV          R0  ECOCLB.X6  ;   OCLB:=COBOD
        JMP              ED7210     ;  END
                                    ;
ED7230: MODC  1<ECOEMP-1<ECOEAF     ;  UPDATE_OFLG:
ED7232: MODC  1<ECOEAF              ;
ED7234: MODC  1<ECOOEP+1<ECOEBP     ;
        MOVC  1<ECOPCQ          R0  ;
        IOR          R0  ECOFLG.X6  ;   UPDATE(OEMP/OEAF/OEBP/OOEP/OPCQ)
        JMP              ED7210     ;END_DO_WHILE.
ED7240:                             ;
        JMPI             RL7200     ;   RETURN
                                    ;END INSERT_EB.
;----------------------------------------------------------------------
;FF\f


;----------------------------------------------------------------------
; PROCEDURE ED7290.
;
; PROCESS_REQUEST.
;
; REGISTERS:         ENTRY          EXIT
; R0,R1,R2,R3,R5,R7  -              DEST
; R4                 LINK           DEST
; R6          ECRP (REL)            UNCH
;
; CALL BY: MAIN_INT.
; CALL TO: ED6410,ED6412,ED6420,ED7410,ED7420,ED7430
;          ED7440,ED7450,ED7460,ED7470,ED7490
; RETURNS:
; LINK+0: DONE
;----------------------------------------------------------------------
;
;       CASE_JUMP_TABLES:
;----------------------------------------------------------------------
ED7250:;      CASE(SBM,ATO,RRP,RAQ) ;    (SBM,ATO,RRP,RAQ)
        ED7300,ED7310,ED7380,ED7380 ;   0000,0001,0010,0011
        ED7320,ED7330,ED7340,ED7390 ;   0100,0101,0110,0111
        ED7380,ED7310,ED7380,ED7380 ;   1000,1001,1010,1011
        ED7320,ED7350,ED7340,ED7390 ;   1100,1101,1110,1111
;----------------------------------------------------------------------
ED7260:;      CASE0(EBP,PAT2,PAT1)  ;    (EBP,PAT2,PAT1)
        ED6412,ED7390,ED7390,ED7380 ;   000,001,010,011
        ED7304,ED7304,ED7302,ED7380 ;   100,101,110,111
;----------------------------------------------------------------------
ED7270:;      CASE1(EBP,PAT2,PAT1)  ;    (EBP,PAT2,PAT1)
        ED6410,ED7390,ED7380,ED7380 ;   000,001,010,011
        ED6410,ED7314,ED7380,ED7380 ;   100,101,110,111
;----------------------------------------------------------------------
ED7280:;  CASE(ALP,LCP,NKP,ACP,DTP) ;   (ALP,LCP,NKP,ACP,DTP)
        ED7490                      ;       00000
        ED7410                      ;       00001
        ED7420,ED7420               ;       0001X
        ED7430,ED7430,ED7430,ED7430 ;       001XX
        ED7440,ED7440,ED7440,ED7440 ;       01XXX
        ED7440,ED7440,ED7440,ED7440 ;       01XXX
        ED7450,ED7450,ED7450,ED7450 ;       1XXXX
        ED7450,ED7450,ED7450,ED7450 ;       1XXXX
        ED7450,ED7450,ED7450,ED7450 ;       1XXXX
        ED7450,ED7450,ED7450,ED7450 ;       1XXXX
;----------------------------------------------------------------------
                                    ;
ED7290:                             ; BEGIN PROCESS_REQUEST.
        MOV          R4  RL7290     ;
ED7292:                             ;   REPEAT
        MOD          R6             ;
        MOVC  ECOFLG            R5  ;
        IBN          X5  ECOSCQ     ;     IF OFLG(OSCQ)  THEN
        JMP              ED7314     ;       GOTO INPUT CONTROL BLOCK TX
        MOV          X5         R0  ;
        XTR          R0  ECOSBM+1   ;
        SRL          R0  ECORAQ     ;
        MOD          R0             ;
        JMPI         S4  ED7250     ;     CASE_ACTION(SBM,ATO,RRP,RAQ)
        JMP              ED7292     ;   UNTIL EXIT
                                    ; END
;----------------------------------------------------------------------
ED7300:                             ; 1.(SBM,ATO,RRP,RAQ):=0000
        MOV   ECOFLG.X6         R0  ;     REPEAT
        XTR          R0  ECOEBP+1   ;
        SRL          R0  ECOPAT1    ;
        MOD          R0             ;
        JMPI         S4  ED7260     ;       CASE0(EBP,PAT2,PAT1)
        JMP              ED7300     ;     UNTIL EXIT
                                    ;
ED7302:                             ; DEACTIVATE(ACKTO-TYP2)
        MOV          R4  RL7300     ;
        MOV   ECOFLG.X6         R0  ;
        IBN          R0  ECOOEP     ;   IF OUTBOUND_EB PENDING THEN
        JMP          S4  ED6420     ;     DEACTIVATE(ACKTO)
        JMP              ED7306     ;   GOTO TX_PENDING EB.
                                    ;
ED7304:                             ; PROCESS(EBP)
        MOV          R4  RL7300     ;
ED7306:                             ;   REPEAT
        MOD          R6                 ;
        MOVC  ECOFLG            R5  ;
        JMP          S4  ED6810     ;     IF TX_NOT_POSSIBLE  THEN
        JMP              ED7390     ;       EXIT
        ADDC  ECOQCW-ECOFLG     R5  ;     ELSE
        MOV          X5         R0  ;
        XTR          R0  ECOALP+1   ;
        SRL          R0  ECODTP     ;
        MOD          R0             ;
        JMPI         S4  ED7280     ;       CASE(ALP,LCP,NKP,ACP,DTP)
        JMP              ED7306     ;       X0: GOTO REPEAT
        JMPI             RL7300     ;       X1: IDLE,RETURN
        JMP              ED7390     ;       X2: BUSY,GOTO EXIT
                                    ;   UNTIL EXIT/IDLE.
                                    ; END PROCESS(EBP)
;----------------------------------------------------------------------
ED7310:                             ; 2.(SBM,ATO,RRP,RAQ):=0001
        MOV   ECOFLG.X6         R0  ;   REPEAT
        XTR          R0  ECOEBP+1   ;
        SRL          R0  ECOPAT1    ;
        MOD          R0             ;
        JMPI         S4  ED7270     ;     CASE1(EBP,PAT2,PAT1)
        JMP              ED7310     ;   UNTIL EXIT
                                    ;
ED7314:                             ;   REPEAT
        MOD          R6             ;
        MOVC  ECOFLG            R5  ;
        JMP          S4  ED6810     ;     IF TX_NOT_POSSIBLE  THEN
        JMP              ED7390     ;       EXIT
        ADDC  ECOQCW-ECOFLG     R5  ;     ELSE
        MOV          X5         R0  ;
        MOVC  NT(1<ECOLCP+1<ECODTP)%;
                                R1  ;
        AND          R1         R0  ;
        XTR          R0  ECOALP+1   ;
        SRL          R0  ECODTP     ;
        IEQ          R0  0          ;       IF NO NAK/ACK/ACKL  THEN
        JMP              ED7390     ;         GOTO EXIT
        MOD          R0             ;
        JMPI         S4  ED7280     ;       CASE(ALP, 0 ,NKP,ACP, 0 )
        JMP              ED7314     ;   WHILE INPUT CONTROL BLOCKS/
                                    ;   IS PENDING.
;----------------------------------------------------------------------
ED7320:                             ; 3.(SBM,ATO,RRP,RAQ):=0100/1100
        SETS         X5  ECORAQ     ;   SETS OFLG(ORAQ)
        CLR              ECORCT.X6  ;   ORCT:=0
        JMP              0.     X4  ;   RETURN
;----------------------------------------------------------------------
ED7330:                             ; 4.(SBM,ATO,RRP,RAQ):=0101
        MOV   ECORCT.X6         R0  ;
        MOD   ECFPTR                ;
        MOV   ECGRCL            R1  ;
        IGE          R0         R1  ;   IF RR RE_TX EXCEEDED  THEN
        JMP              ED7385     ;     GOTO REPORT(URE)
        RELS         X5  ECORAQ     ;   CLEAR OFLG(ORAQ)
        SETS         X5  ECORRP     ;   SETS OFLG(ORRP)
        JMP              0.     X4  ;   RETURN
;----------------------------------------------------------------------
ED7340:                             ; 5.(SBM,ATO,RRP,RAQ):=0110/1110
        MOV          R4  RL7300     ;
        JMP          S4  ED6810     ;   IF TX_NOT_POSSIBLE  THEN
        JMP              ED7390     ;     GOTO EXIT
        SETS         X5  ECORAQ     ;   SETS OFLG(ORAQ)
        JMP          S4  ED7470     ;   RR_TX
        JMPI             RL7300     ;   RETURN
;----------------------------------------------------------------------
ED7350:                             ; 6.(SBM,ATO,RRP,RAQ):=1101
        MOV          R4  RL7300     ;
        MOV   ECORCT.X6         R0  ;
        MOD   ECFPTR                ;
        MOV   ECGRCL            R1  ;
        IGE          R0         R1  ;   IF RR_RE_TX EXCEEDED  THEN
        JMP              ED7386     ;     GOTO REPORT(URE)
        JMP          S4  ED6810     ;   IF TX_NOT_POSSIBLE  THEN
        JMP              ED7390     ;     GOTO EXIT
        SETS         X5  ECORRP     ;
        RELS         X5  ECORAQ     ;   PUT OFLG(ORRP,-ORAQ)
        JMP          S4  ED7460     ;   SETB_TX
        JMPI             RL7300     ;   RETURN
;----------------------------------------------------------------------
ED7380:                             ; 7.(SBM,ATO,RRP,RAQ):=ELSE
        JMPI             EI1990     ;   CP_ERROR
        JMP              ED7390     ;
ED7385:                             ; REPORT.
        MODC  EEC10A-EEC10B         ;
ED7386: MOVC  EEC10B            R0  ;
        JMPI         S4  EI1800     ;
        NOP                         ;
ED7390:                             ; EXIT.
        JMPI             RL7290     ;   RETURN LINK+0
                                    ; END PROCESS_REQUEST.
;----------------------------------------------------------------------
;FF\f


;----------------------------------------------------------------------
; PROCEDURE ED7400.
; PROCEDURE TRANSMIT.
;
; REGISTERS:         ENTRY          EXIT
; R0,R1,R2,R3        -              DEST
; R4                 LINK           DEST
; R5                 OQCW.ECR       DEST
; R6                 ECRP (REL)     UNCH
; R7                 -              DEST
;
; CALL BY: ED7290
; CALL TO: ED6200,ED6210,ED6410,ED6820
; ENTRIES:
; ED7410: DATA_TX
; ED7420: ACK_TX
; ED7430: NAK_TX
; ED7440: LCB_TX
; ED7450: ACKL_TX
; ED7460: SETB_TX
; ED7470: RR_TX
; ED7490: TX_QUEUE'S_EMPTY
; RETURNS:
; LINK+0: DONE
; LINK+1: IDLE
; LINK+2: BUSY/ERROR
;----------------------------------------------------------------------
; DATA_TX_JUMP_TABLE: CASE_OSTA(ARQ,NKD,ITX,TXD,FUL)
;-----------------------------------------------------------------------
ED7400:                                                ;
ED7414,ED7418,ED741E,ED7412,ED741E,ED7412,ED741E,ED7412; 00000-00111
ED741E,ED741E,ED741E,ED741A,ED741E,ED741E,ED741E,ED741C; 01000-01111
ED7416,ED7418,ED741E,ED7416,ED741E,ED7416,ED741E,ED7416; 10000-10111
ED741E,ED741E,ED741E,ED741A,ED741E,ED741E,ED741E,ED741C; 11000-11111
;----------------------------------------------------------------------
ED7410:                             ; BEGIN DATA_TX.
                                    ;----------------------------------
        MOV          R4  RL7400     ;
ED7411:                             ;  INSPECT_NEXT.
        MOV   ECONTX.X6         R0  ;
        JMP          S4  ED6210     ;   STATUS:=OSTA(ONTX)
        MOV          X7         R0  ;
        XTR          R0  ECOARQ+1   ;
        SRL          R0  ECOFUL     ;
        MOD          R0             ;   CASE_OSTA(ARQ,NKD,ITX,TXD,FUL)
        JMPI             ED7400     ;
ED7412:                             ;   1. (00011/00101/00111)
        INC              ECONTX.X6  ;   ONTX:=ONTX+1
        JMP              ED7411     ;   GOTO INSPECT_NEXT.
                                    ;
ED7414:                             ;   2. (00000)
        RELS         X5  ECODTP     ;   CLEAR OQCW(ODTP)
        JMPI             RL7400     ;   RETURN LINK+0
                                    ;
ED7416:                             ;   3. (10000/10011/10101/10111)
        RELS         X5  ECODTP     ;   CLEAR OQCW(ODTP)
        JMP          S4  ED6410     ;   ACTIVATE(ACKTO-TYPE1)
        JMPI             RL7400     ;   RETURN LINK+0
                                    ;
ED7418:                             ;   4. (00001/10001)
        IBZ          X7  ECOESM     ;   IF EOS/EOM-EB  THEN
        JMP              ED7419     ;     BEGIN
        MOV   ECONTX.X6         R0  ;
        XTR          R0  EOCBDX     ;       BID:=(ONTX)MOD128
        MOV          R0  ECOSSB.X6  ;       OSSB:=BID
        MOV   ECOPSB.X6         R1  ;       IF OPSB=OFSB I.E.
        IEQ          R1  ECOFSB.X6  ;         (FIRST EOS TO TX)  THEN
        MOV          R0  ECOFSB.X6  ;         OFSB:=BID
ED7419:                             ;     END
                                    ;
        MOV   ECOEBA-ECOSTA.X7  R5  ;   BUFP:=EBP
        MOV          R7         R2  ;
        MOVC  EBCNTX            R0  ;   OFFS:=EBCNTX
        JMP          S4  ED6200     ;   READBUF(BUFP,OFFS,WORD)
        MOVC  EDWRK7            R7  ;
        MOV          R1         X7  ;
        SRL          R1  1          ;
        MODC  2#111<7               ;   COUNT:=FUNC(WORD)
        PUT          R1         X7  ;
        MOV          X7         R0  ;
        XTR          R0  10         ;
        NEG          R0             ;
        MOV   CSTPTR            R7  ;
        ADD          R0  CSTNOC.X7  ;   CSTNOC:=CSTNOC-COUNT
        MOV          R2         R7  ;
ED741A:                             ;   5. (01011/11011)
        ION              ECOISW.X6  ;
        MODC  1<ECOTQS              ;
        MOVC  1<ECOITX          R0  ;
        MODC  1<ECOTQS+1<ECOITX+%   ;
              1<ECONKD              ;   PUT_OSTA(OTQS,OITX,-ONKD)
        PUT          R0         X7  ;
        MOD          X7             ;
        MOVC  1<ECONCT          X7  ;   ONCT:=ONCT+1
        MOV   ECOEBA-ECOSTA.X7  R1  ;   EBP:=OEBA(ONTX)
        MOVC  EOCTDT            R2  ;   QID:=D
        MOV          R7         R3  ;   X:=INDEX(OSTA(ONTX))
        JMP          S4  ED6820     ;   QUEUE(EBP,QID,X)
        INC              ECONTX.X6  ;   ONTX:=ONTX+1
        JMPI             RL7400     ;   RETURN LINK+0
                                    ;
ED741C:                             ;   6. (01111/1111)
        MOV   RL7400            R4  ;   BUSY_LINE
        JMP              2.     X4  ;   RETURN LINK+2
                                    ;
ED741E:                             ;   7. ( ELSE )
        JMPI         S4  EI1990     ;   CP_ERROR(INVALID OSTA)
        MOV   RL7400            R4  ;
        JMP              2.     X4  ;   RETURN LINK+2
                                    ; END DATA_TX.
;-----------------------------------------------------------------------
ED7420:                             ; BEGIN ACK_TX.
                                    ;----------------------------------
        IOZP       ECCAQH+QCCQE.X6  ;   IF ACK_QUEUE EMPTY  THEN
        RELS         X5  ECOAKP     ;     CLEAR(OQCW.OACP)
        JMP              0.     X4  ;     RETURN LINK+0
        MOV          R4  RL7400     ;   ELSE
        MOD   ECRPTA                ;     BEGIN
        MOVC  ECCAQH            R4  ;       Q:=CAQH
        MOVC  1                 R3  ;       N:=1
        MON   LNOQ                  ;       DEQUEUE(Q,N,FBUF,LBUF)
        NOP                         ;
        MOV   ECRPTR            R6  ;
        MOV          R5         R3  ;
        MOV          R5         R1  ;       EBP:=FBUF
        MOVC  EOCTAC            R2  ;       QID:=ACK
        JMP          S4  ED6820     ;       QUEUE(EBP,QID,EBP)
        JMPI             RL7400     ;       RETURN LINK+0
                                    ;     END
                                    ; END ACK_TX.
;-----------------------------------------------------------------------
ED7430:                             ; BEGIN NAK_TX.
                                    ;----------------------------------
        IOZP       ECCNQH+QCCQE.X6  ;   IF NAK_QUEUE EMPTY  THEN
        RELS         X5  ECONKP     ;     CLEAR(OQCW.ONKP)
        JMP              0.     X4  ;     RETURN LINK+0
        MOV          R4  RL7400     ;   ELSE
        MOD   ECRPTA                ;     BEGIN
        MOVC  ECCNQH            R4  ;       Q:=CNQH
        MOVC  1                 R3  ;       N:=1
        MON   LNOQ                  ;       DEQUEUE(Q,N,FBUF,LBUF)
        NOP                         ;
        MOV   ECRPTR            R6  ;
        MOV          R5         R3  ;
        MOV          R5         R1  ;       EBP:=FBUF
        MOVC  EOCTNK            R2  ;       QID:=NAK
        JMP          S4  ED6820     ;       QUEUE(EBP,QID,EBP)
        JMPI             RL7400     ;       RETURN LINK+0
                                    ;     END
                                    ; END NAK_TX
;-----------------------------------------------------------------------
ED7440:                             ; BEGIN LCB_TX.
                                    ;----------------------------------
        IBZ          X5  ECOLTX     ;   IF LCB_NOT_AVAILABLE  THEN
        JMPI         S4  EI1990     ;     GOTO CP_ERROR.
        MOV          R4  RL7400     ;   ELSE
                                    ;     BEGIN
        RELS         X5  ECOLCP     ;       CLEAR(OQCW.OLCP)
        SETS         X5  ECOLIT     ;       SETS OQCW(OLIT)
        MOV   ECOLER.X6         R1  ;       EBP:=OLER
        MOVC  EOCTLC            R2  ;       QID:=LCB
        MOVC  0                 R3  ;
        JMP          S4  ED6820     ;       QUEUE(EBP,QID,0)
        JMPI             RL7400     ;       RETURN LINK+0
                                    ;     END
                                    ; END LCB_TX.
;-----------------------------------------------------------------------
ED7450:                             ; BEGIN ACKL_TX.
                                    ;----------------------------------
        IOZP      ECCALQH+QCCQE.X6  ;   IF ACKL_QUEUE EMPTY  THEN
        RELS         X5  ECOALP     ;     CLEAR(OQCW,OALP)
        JMP              0.     X4  ;     RETURN LINK+0
        MOV          R4  RL7400     ;   ELSE
        MOD   ECRPTA                ;     BEGIN
        MOVC  ECCALQH           R4  ;       Q:=CALQH
        MOVC  1                 R3  ;       N:=1
        MON   LNOQ                  ;       DEQUEUE(Q,N,FBUF,LBUF)
        NOP                         ;
        MOV   ECRPTR            R6  ;
        MOV          R5         R3  ;
        MOV          R5         R1  ;       EBP:=FBUF
        MOVC  EOCTAL            R2  ;       QID:=ACKL
        JMP          S4  ED6820     ;       QUEUE(EBP,QID,EBP)
        JMPI             RL7400     ;       RETURN LINK+0
                                    ;     END
                                    ; END ACKL_TX.
;----------------------------------------------------------------------
ED7460:                             ; BEGIN SETB_TX.
                                    ;----------------------------------
        MOV          R4  RL7400     ;
        MOVC  COEBCC            R7  ;
        MOVC  4                 X7  ;   COEBCC:=4
        MOV   ECOPSB.X6         R0  ;
        MOV          R0  COBID      ;   COBID:=OPSB
        JMP          S4  ED6322     ;   GENERATE_SETB(COBID,BUFP)
        JMPI             RL7400     ;   NO BINS - DON'T TRANSMIT
        MOV   ECRPTR            R6  ;
        MOV          R5         R3  ;
        MOV          R5         R1  ;   EBP:=BUFP
        MOVC  EOCTSB            R2  ;   QID:=SETB
        JMP          S4  ED6820     ;       QUEUE(EBP,QID,EBP)
        JMPI             RL7400     ;   RETURN LINK+0
                                    ; END SETB_TX
;----------------------------------------------------------------------
ED7470:                             ; BEGIN RR_TX.
                                    ;----------------------------------
        MOV          R4  RL7400     ;
        MOVC  COEBCC            R7  ;
        MOVC  4                 X7  ;   COEBCC:=4
        MOD   ECOCSC.X6             ;
        MOV   ECOPSB.X6         R0  ;   COBID:='LAST EOS/EOM-BID'
        MOV          R0  COBID      ;
        JMP          S4  ED6320     ;   GENERATE_RR(0,BUFP)
        JMPI             RL7400     ;   NO BINS - DON'T TRANSMIT
        MOV   ECRPTR            R6  ;
        MOV          R5         R3  ;
        MOV          R5         R1  ;   EBP:=BUFP
        MOVC  EOCTRR            R2  ;   QID:=RR
        JMP          S4  ED6820     ;       QUEUE(EBP,QID,EBP)
        JMPI             RL7400     ;   RETURN LINK+0
                                    ; END RR_TX.
;----------------------------------------------------------------------
ED7490:                             ; BEGIN TX_QUEUE'S_EMPTY.
                                    ;----------------------------------
        MOVC  NT%                   ;
        (1<ECOOEP+1<ECOEBP)     R0  ;
        AND          R0  ECOFLG.X6  ;   CLEAR OFLG(OEBP)
        JMP              1.     X4  ;   RETURN LINK+1
                                    ; END EMPTY_TX_QUEUES.
;----------------------------------------------------------------------"
;FF\f


;-----------------------------------------------------------------------
; PROCEDURE ED8100
; WRITE_OEB
;
; REGISTERS          ENTRY              EXIT
; R0                 -                  EB_COUNT
; R1                 -                  EB_TYPE/BID
; R2,R3              -                  DESTROYED
; R4                 LINK               DESTROYED
; R5                 -                  EB_ADDR (ABS)
; R6                 ECRP (REL)         ECRP (REL)
; R7                 -                  DESTROYED
;
; INPUTS:  COEBCC,COEBBT,COEBPT,COEBPW
; OUTPUTS: EB (COUNT,TYPE,BID)
;
; CALL BY: ED8400
; CALL TO: ED6200
;-----------------------------------------------------------------------
ED8100:                             ; BEGIN WRITE_OEB
        MOV          R4  RL8100     ;
        MOVC  COEBCC            R7  ;
        MOV          X7         R1  ;
        XTR          R1  7          ;   COUNT:=CHA_COUNT EXTRACT 7
        SLL          X7  1          ;
        MODC  #00FF                 ;   CHA_COUNT:=
        PUT          R1         X7  ;     2*CHA_COUNT AND #00FF+COUNT
        MOV   COEBPT            R5  ;   BUFP:=EB_ADDR
        MOV   COEBBT            R2  ;   TYPE:=EB_TYPE
        INEP         R2  BTLCB      ;   IF TYPE<>LCB_TYPE THEN
        MOV   ECONIX.X6         R1  ;     BID:=ONIX
        JMP              ED8102     ;   ELSE
                                    ;     BEGIN
        MOVC  EBBIDX            R0  ;       OFFS:=EBBIDX
        JMP          S4  ED6200     ;       READBUF(BUFP,OFFS,WORD)
        SWP          R1             ;
        XTR          R1  EOCBDX     ;       BID:=WORD
        MOV          R1  COBID      ;       COBID:=BID
                                    ;     END
ED8102:                             ;
        XTR          R1  EOCBDX     ;   BID:=(BID)MOD128
        SWP          R1             ;
        IOR          R2         R1  ;
        MOV   COEBCC            R0  ;
        MOV   COEBPW            R3  ;
        SUB   XBASE             R5  ;
        SVS          R7             ;   MASK:=PSW
        LDS          R3             ;   PSW:=EB_MASK
        MOV          R0  EBCNTX.X5  ;   EB_COUNT:=COUNT
        MOV          R1  EBTABX.X5  ;   EB_TYPE/BID:=TYPE/BID
        LDS          R7             ;   PSW:=MASK
        JMPI             RL8100     ;
                                    ; END

;-----------------------------------------------------------------------
; PROCEDURE ED8400
; COMPOSE_OEB
;
; REGISTERS          ENTRY              EXIT
; R0,R1,R2,R3        -                  DESTROYED
; R4                 LINK               DESTROYED
; R5,R6,R7           -                  DESTROYED
;
; INPUTS:  CSTPTA,CSTPTR,CSTOBQ
; OUTPUTS: COEBBC,COEBCC,COEBBT,COSMSK
;
; CALL BY: ED8500
; CALL TO: ED6200,ED8100,ED1900,GBSM,GNBA
;
; RETURNS:
; LINK   - DONE
;-----------------------------------------------------------------------
; JUMP TABLE FOR EB TYPES:
;-----------------------------------------------------------------------
ED8350:                                 ;
        ED8410, ED8440, ED8430, ED8450  ;
        ED8460, ED8470, ED8470, ED8420  ;
;-----------------------------------------------------------------------
ED8400:                             ; BEGIN COMPOSE_OEB
        MOV          R4  RL8400     ;
        MOVC  0                 R0  ;
        MOV          R0  COEBBT     ;   EB_TYPE:=UNDEF
        MOV          R0  COEBBC     ;   BUF_COUNT:=0
        MOV          R0  COEBCC     ;   CHA_COUNT:=0
        MOV          R0  COSMSK     ;   CUR_MASK:= 0
        MOV   CSTPTR            R7  ;
        MOV   CSTOBQ+QCCQE.X7   R3  ;
        IEQ          R3  0          ;   IF NOB.OBQ=0
        JMPI             RL8400     ;     THEN RETURN
        MOV   CSTOBQ+QCFQE.X7   R5  ;   BUFP:=FQE.OBQ
        MOV          R5  COEBPT     ;   EB_POINTER:=BUFP
        MOVC  BINSTA            R0  ;   OFFS:=BINSTA
        MOVC  2#11<BINETC       R1  ;   MASK:=BINETC_MASK
        MOVC  0                 R2  ;   WORD:=0
        MON   PUTBUF                ;   PUT_BUFFER(BUFP,OFFS,MASK,WORD)
        MOV          R3  COEBPW     ;   EB_PSW:=BMSA
        MOVC  EBCNTX            R0  ;   OFFS:=EBCNTX
        JMP          S4  ED6200     ;   READBUF(BUFP,OFFS,WORD)
        MOV          R1  EDWRK1     ;
ED8402:                             ;   REPEAT
        MOV          R5  EDWRK5     ;     CURR-LAST-BUF:=BUFP
        MOVC  BINSTA            R0  ;     OFFS:=BINSTA
        JMP          S4  ED6200     ;     READBUF(BUFP,OFFS,WORD)
        MOV          R1         R2  ;
        MOV          R1         R0  ;     CAUSE:=WORD
        XTR          R1  BINCNX     ;
        MOVC  COEBCC            R4  ;
        ADD          R1         X4  ;     CHA_COUNT:=CHA_COUNT+COUNT
        MOVC  COEBBC            R4  ;
        INC              0.     X4  ;     BUF_COUNT:=BUF_COUNT+1
        SRL          R0  BINTCS     ;
        XTR          R0  BINTCX     ;     CAUSE:=BUF_TCS RIGHT_ADJUST
        MOD          R0             ;
        JMPI         S4  ED8350     ;     CASE CAUSE OF
                                    ;     NO_EOB:
ED8410:                             ;       BEGIN
        MON   GNBA                  ;         GET_NEXT(BUFP,MASK)
        JMPI             RL8400    &;           NO_NEXT, RETURN
        JMP              ED8402     ;         GOTO REPEAT
                                    ;       END
                                    ;     EOB:
ED8420:                             ;       BEGIN
        MOVC  BTD               R0  ;         TYPE:=D_TYPE
        MOVC  1<ECOFUL          R1  ;         TERM:=EOB
        JMP              ED8480     ;         GOTO EXIT_REPEAT
                                    ;       END
                                    ;     EOS:
ED8430:                             ;       BEGIN
        MOVC  BTEOS             R0  ;         TYPE:=EOS_TYPE
        MODC  1<ECOFUL              ;
        MOVC  1<ECOEOS+1<ECOESM R1  ;         TERM:=EOS
        JMP              ED8480     ;         GOTO EXIT_REPEAT
                                    ;       END
                                    ;     EOM:
ED8440:                             ;       BEGIN
        MOVC  BTEOM             R0  ;         TYPE:=EOM_TYPE
        MOVC  1<ECOFUL+%            ;         TERM:=EOM
              1<ECOEOM+1<ECOESM R1  ;
        JMP              ED8480     ;         GOTO EXIT_REPEAT
                                    ;       END
                                    ;     EOS+EOM:
ED8450:                             ;       BEGIN
        MOVC  BTEOM             R0  ;         TYPE:=EOM_TYPE
        MOVC  1<ECOEOS+1<ECOFUL+%   ;         TERM:=EOS+EOM
              1<ECOEOM+1<ECOESM R1  ;
        JMP              ED8480     ;         GOTO EXIT_REPEAT
                                    ;       END
                                    ;     LCB:
ED8460:                             ;       BEGIN
        MOVC  BTLCB             R0  ;         TYPE:=LCB_TYPE
        MOVC  1<EOCLCB          R1  ;         TERM:=LCB
        JMP              ED8480     ;         GOTO EXIT_REPEAT
                                    ;       END
                                    ;     UNDEFINED:
ED8470:                             ;       BEGIN
        JMPI         S4  EI1990    &;E        ERROR9(CPF)
        JMP              ED8480     ;         GOTO EXIT_REPEAT
                                    ;       END
                                    ;     END CASE
ED8480:                             ;   EXIT_REPEAT:
        MOV   ECRPTR            R6  ;
        MOV          R0  COEBBT     ;   BLOCK_TYPE:=TYPE
        MOV          R1  COSMSK     ;   TERM_MASK:=TERM
        IBZ          R1  ECOESM     ;   IF EOS/EOM BLOCK  THEN
        JMP              ED8484     ;     BEGIN
        MOV   EDWRK1            R1  ;
        MOV          R1         R0  ;
        XTR          R1  MSSEQX     ;       SEQN:=FRAME_FIELD_SEQ_NO
        SWP          R0             ;
        XTR          R0  CSTBLX     ;
        MOV          R0  ECOCCB.X6  ;       OCCB.ECRP:=BUF_BLK_SIZE
        MOV   COEBBC            R3  ;
        IEQ          R3  1          ;       IF BUF_COUNT<>1 THEN
        JMP              ED8482     ;         BEGIN
        MOV   EDWRK5            R5  ;           BUFP:=LAST-BUF
        MOVC  BINOSQ            R0  ;           OFFS:=BINOSQ
        JMP          S4  ED6200     ;           READBUF(BUFP,OFFS,WORD)
        XTR          R1  MSSEQX     ;           SEQN:=WORD EXTR MSSEQX
                                    ;         END
ED8482:                             ;
        MOD   ECOCSC.X6             ;
        MOV          R1  ECOS1S.X6  ;       (OS1S+(OCSC)).ECRP:=SEQN
                                    ;     END
ED8484:                             ;   TERMINATE_EB:
        JMP          S4  ED8100     ;   WRITE_OEB(COUNT,TYPE,BID)
        MOV   COEBBC            R3  ;   N:=BUF_COUNT
        MOD   CSTPTA                ;
        MOVC  CSTOBQ            R4  ;   QCB:=OBQ
        MON   LNOQ                  ;   DEQUEUE(QCB,N,FBUF,LBUF)
        JMPI         S4  EI1990    &;E    ERROR9(CPF)
        JMPI             RL8400     ;   RETURN
                                    ; END
;----------------------------------------------------------------------

; EXTERNAL NAMES
;
;-----------------------------------------------------------------------
BEGIN
        EXTERNAL ED6420,ED6440,ED6520
        EXTERNAL ED7040,ED7050,ED7060,ED7070,ED7080
        EXTERNAL ED7110,ED7120,ED7130,ED7140,ED7150,ED7160,ED7170,ED7190
        EXTERNAL ED7200,ED7290
        EXTERNAL ED8400
NAMES
END
;-----------------------------------------------------------------------
;
; END OF EDC OUTPUT PROGRAM SECTION
;
;-----------------------------------------------------------------------
END
«eof»