CKIOST    MACRO  FET
          LOCAL  CONT
          SA1    FET+0
          MX6    5
          LX1    46
          BX1    X6*X1
          ZR     X1,CONT     IF NO IO STATUS
          AX1    56
          NZ     X1,IOERR    IF ERROR
          SA6    EOI         SET EOI FLAG
CONT      BSS    0
          ENDM

RESET     MACRO  FET
          SA1    FET+1
          SX6    X1
          SA6    A1+B1
          SA6    A6+B1
          ENDM

CKMST     MACRO  MASK
          LOCAL  READY,BEGIN,DONE,RCLP,RCLCNT
BEGIN     BSS    0
          SA1    NTHSR
          NG     X1,READY    IF REQUEST COMPLETE
          RJ     POLL
          SA1    NTHSR
          NG     X1,READY    IF REQUEST COMPLETE
          SA1    WMLI
          SX6    X1+B1
          SA6    A1
          RECALL
          EQ     BEGIN

READY     BSS    0
          SA1    MLIPAR+MLPSV
          ZR     X1,DONE     IF MLI STATUS OK
          SA2    MASK
          SB4    X1
          SX0    B1
          LX0    B4,X0
          BX2    X2*X0
          ZR     X2,MLERR    IF NON RETRY MLI ERROR

* REISSUE REQUEST

          SA1    REISSUE
          SX6    X1+B1
          SA6    A1

* WAIT FOR A WHILE - 180 HAS UP TO 3 BLOCKS TO CATCH UP

NOSBE     IF     DEF,RA.ORG
          SYSTEM RCL,,600    WAIT 150 MSEC.
NOSBE     ELSE
          SX6    6           6 RECALLS
RCLP      SA6    RCLCNT
          RECALL
          SA1    RCLCNT
          SX6    X1-1
          NZ     X6,RCLP     IF MORE
NOSBE     ENDIF
          RJ     ISSUE
          EQ     BEGIN
NOS       IF     -DEF,RA.ORG,1
RCLCNT    BSS    1
DONE      BSS    0
          ENDM

SEND      MACRO  HW,BUF
          SA1    HW
          SX6    BUF         ADDRESS
***          SX7    X1+1        (HEADER+DATA)+TRAILER
          SX7    X1
          SA6    MLIPAR+MLPFA
          SA7    MLIPAR+MLPBL
          RJ     ISSUE
          ENDM

SMSG      MACRO  HW,FET,BUF
          LOCAL  NOTEOI
          CKIOST FET
          SA1    FET+1
          SA2    A1+B1
          SX1    X1
          IX6    X2-X1
***          SX6    X6+1        DATA+HEADER
          SA6    HW
          SA1    BLOCKS
          SA2    WORDS
          IX6    X6+X2
          SX7    X1+B1
          SA7    A1
          SA6    A2
          SA1    EOI
          ZR     X1,NOTEOI
          SX6    AIEOI
          SA6    MLIPAR+MLPAR
NOTEOI    BSS    0
          SEND   HW,BUF
          SA1    EOI
          NZ     X1,EXIT     IF SENT EOI BLOCK
          ENDM

RECM      MACRO  HW
***          MX7    0
***          SA7    HW          CLEAR HEADER WORD (LENGTH)
          SX6    HW
          SA6    MLIPAR+MLPFA
          RJ     ISSUE
          ENDM

WRITF     MACRO  FET,HW
          LOCAL  WEOI,QQQ,WEOR
***          SX2    1
***          SA1    HW
***          MX0    22
***          LX0    22
***          BX3    X1*X0
***          IX3    X3-X2       LENGTH
          SA3    MLIPAR+MLPV1  LENGTH
          SA4    FET+1
          SX6    X4
          IX7    X6+X3
          SA7    A4+B1       IN=FIRST+LENGTH
          SA6    A7+B1       OUT=FIRST
          SA2    BLOCKS
          SX6    X2+B1
          SA6    A2
          SA2    WORDS
          IX6    X2+X3
          SA6    A2

          SA1    MLIPAR+MLPV2 ARB INFO
          BX6    X1
          SA6    MLIPAR+MLPAR FOR USE BY EXIT
          SX2    X1-AIEOI
          ZR     X2,WEOI     IF EOI
          SX2    X1-AIMOI
          NZ     X2,RAIERR   AI NOT EOI/MOI
          MX0    54D
          BX0    -X0*X3
          NZ     X0,WEOR     IF LENGTH NOT 0 MOD 64
          WRITE  FET
          EQ     QQQ

WEOI      BSS    0
          ZR     X3,EXIT     IF NO DATA
          WRITER FET,R
          EQ     EXIT

WEOR      WRITER FET
QQQ       BSS    0
          ENDM
