COCD     CSECT    0
         DEF      COCD
COCD:    EQU      $
         DEF      COCD:
         SYSTEM   UTS
         SYSTEM   BPM
*
*
*
FECPS    SET      2                 NUMBER OF FECP-X UNITS
LINES    SET      128               TOTAL NUMBER OF FECP-X LINES
USERS    SET      128+16+15         MAXOL+MAXB+MAXG (TOTAL USERS)
SAVE#    SET      20                MAXIMUM NUMBER OF SAVED USERS
*                                   (DISCONNECTED USERS CAN RECONNECT)
*
*
#FECPS   EQU      FECPS
         DEF      #FECPS
#LINES   EQU      LINES
         DEF      #LINES
#SAVESLOTS EQU    SAVE#
         DEF      #SAVESLOTS
FECP:DIO EQU      $-1
         DEF      FECP:DIO
         DATA     X'4000'
         DATA     X'4002'
FECP:INTADR EQU   $-1
         DEF      FECP:INTADR
         DATA     X'62'
         DATA     X'63'
FECP:LEVEL EQU    $-1
         DEF      FECP:LEVEL
         DATA     X'2000'           LEVEL X'62'
         DATA     X'1000'           LEVEL X'63'
FECP:GROUP EQU    $-1
         DEF      FECP:GROUP
         DATA     X'0002'           GROUP 2
         DATA     X'0002'           GROUP 2
FECP:DCTX EQU     $-1
         DEF      FECP:DCTX
         DO1      FECPS
         RES      1
FECP:IOADDR EQU   $-1
         DEF      FECP:IOADDR
         DATA     X'005'            FECP #1  I/O ADDRESS
         DATA     X'007'            FECP #2 I/O ADDRESS
FECP:XPSD EQU     $-1
         DEF      FECP:XPSD
I        DO       FECPS
         XPSD,8   FECP:EXTPSD+(I-1)*4
         FIN
         BOUND    8
FECP:EXTPSD EQU   $
         DEF      FECP:EXTPSD
I        DO       FECPS
         :PSD     (RES),(IA,FECPINT+(I-1)*RECLEN),(WK,1),(CI),(II),(EI)
         FIN
FECP:LINES EQU    $-2
         DEF      FECP:LINES
         DATA     1,64
         DATA     65,128
FECP:REQUESTS EQU $-1
         DEF      FECP:REQUESTS
         DO1      FECPS
         DATA     -1
FECP:RESPONSES EQU $-1
         DEF      FECP:RESPONSES
         DO1      FECPS
         DATA     0
FECP:LREQUESTS EQU $-1
         DEF      FECP:LREQUESTS
         DO1      FECPS
         DATA     1
         BOUND    8
FECP:WDQS EQU     $-1
         DEF      FECP:WDQS
I        DO       FECPS
         DATA     Q+(I-1)*100
         FIN
FECP:WDQE EQU     $-1
         DEF      FECP:WDQE
I        DO       FECPS
         DATA     Q-1+I*100
         FIN
FECP:WDQP EQU     $-1
         DEF      FECP:WDQP
I        DO       FECPS
         DATA     Q-1+100*(I-1)
         FIN
FECP:WDQN EQU     $-1
         DEF      FECP:WDQN
I        DO       FECPS
         DATA     Q-1+100*(I-1)
         FIN
FECP:WDQC EQU     $-1
         DEF      FECP:WDQC
I        DO       FECPS
         DATA     0
         FIN
Q        RES      100*FECPS
*
*
*        DIO INTERRUPT TRAP ROUTINE PUSHES THE CURRENT
*        ENVIRONMENT, SETS UP 'FECPX' AND THEN BRANCHES
*        TO DIOINT TO PROCESS THE INTERRUPT
*
*
FECPINT  EQU      $
RECSTART SET      $
         T:PUSHE  FECP:EXTPSD       SAVE ENVIRONMENT
         LI,1     1                 SET FECP INDEX
         B        DIOINT            AND PROCESS INTERRUPT
RECEND   SET      $
RECLEN   SET      RECEND-RECSTART
I        DO       FECPS-1
         T:PUSHE  FECP:EXTPSD+4*I
         LI,1     I+1
         B        DIOINT
         FIN
LINE:ARS EQU      $
         DEF      LINE:ARS
         LIST     0
         DO1      LINES+1
         DATA,2   0
         BOUND    4
         LIST     1
LINE:BUF EQU      $
         DEF      LINE:BUF
         LIST     0
         DO1      LINES+1
         RES      1
         BOUND    4
         LIST     1
LINE:STATUS EQU   $
         DEF      LINE:STATUS
         LIST     0
         DO1      LINES+1
         DATA,2   0
         BOUND    4
         LIST     1
UB:LN    EQU      $
         DEF      UB:LN
         LIST     0
         DO1      USERS+1
         DATA,1   0
         BOUND    4
         LIST     1
SAVESLOTS EQU     $
         DEF      SAVESLOTS
         LIST     0
         DO1      SAVE#
         DATA     0,0,0,0,0
         LIST     1
CO:INTFL EQU      $
         DEF      CO:INTFL
         LIST     0
         DO1      FECPS+1
         DATA,1   X'FF'
         BOUND    4
         LIST     1
ECBFRCHN EQU      $
         DEF      ECBFRCHN
         DATA     0
         DEF      COCGFLG
COCGFLG  EQU      $
         DATA     0
DUMPLINE EQU      $
         DEF      DUMPLINE
         DATA     -1
COCMESS  EQU      $
         DEF      COCMESS
         DATA     0
         RES      13
FECP:Q   EQU      $
         DEF      FECP:Q
Q:READ   EQU      $-FECP:Q
         DEF      Q:READ
         DATA     FECP:READQ
         DEF      Q:WRITE
         DATA     FECP:WRITEQ
Q:BLOCK  EQU      $-FECP:Q
         DEF      Q:BLOCK
         DATA     FECP:BLOCKQ
         BOUND    4
FECP:QUEUE EQU    $
         DEF      FECP:QUEUE
         LIST     0
         DO1      USERS+1
         DATA,1   0
         LIST     1
         BOUND    4
FECP:READQ EQU    $
         DEF      FECP:READQ
         LIST     0
         DO1      FECPS+1
         DATA,1   0
         BOUND    4
         LIST     1
         BOUND    4
FECP:WRITEQ EQU   $
         DEF      FECP:WRITEQ
         LIST     0
         DO1      FECPS
         DATA,1   0
         BOUND    4
         LIST     1
         BOUND    4
FECP:BLOCKQ EQU   $
         DEF      FECP:BLOCKQ
         LIST     0
         DO1      FECPS+1
         DATA,1   0
         BOUND    4
         LIST     1
         END
