          IDENT  RHQXFER
          TITLE  RHA$FILE TO MLI - 170 REMOTE HOST MLI/CIO I/F.
          SST
          SYSCOM B1
          LIST   F

*copy RHA$MLI_TO_FILE
OPL XTEXT COMCCDD
          SKIP   RA.MTR
          ERR    SYSCOM NOT CALLED
          IF     -DEF,RA.ORG,1
OPL XTEXT COMCMAC
*copy COMSCVS
*copy COMMCVS
*copy COMSMLI
         BASE   D
BUFSIZ    EQU    3072+2
AIMOI     EQU    1
AIEOI     EQU    2
HWA       BSS    1
BUFA      BSS    BUFSIZ
TWA       BSS    1
*
HWB       BSS    1
BUFB      BSS    BUFSIZ
TWB       BSS    1
*
*IF ($string($name(wev$target_operating_system))='NOS')
FETA      FILEB  BUFA,BUFSIZ,(FET=10),EPR,UPR
FETB      FILEB  BUFB,BUFSIZ,(FET=10),EPR,UPR
*ELSE
FETA      FILEB  BUFA,BUFSIZ
FETB      FILEB  BUFB,BUFSIZ
*IFEND
MLIPAR    BSS    15
NTHSR     DATA   -2
REISSUE   DATA   0
WMLI      DATA   0
BLOCKS    DATA   0
WORDS     DATA   0
M1        DATA   10HMLI ERROR
M2        BSSZ   2

M3        DATA   10HCIO ERROR
M4        BSSZ   2

M13       DATA   20HREC ARBINFO ERROR
M14       BSS    1
          DATA   0
SMASK     VFD    60/1014040B
RMASK     VFD    60/40040B
MMASK     VFD    60/0
EOI       DATA   0
COUNT     BSS    1
          EXT    PARSV
DSTSA     EQU    PARSV+3
STSA      EQU    DSTSA+1

* PROCEDURE QFSEND (LFN
*                   AN170
*                   AN180
*               VAR DSTS
*               VAR STS)
* STS: LAST ARBINFO VALUE
*
          ENTRY  QFSEND
QFSEND    BSS    0
          RJ     =XPXSAVE
          BX6    X2
          BX7    X3
          SA6    MLIPAR+MLPAN
          SA7    MLIPAR+MLPSN
          MX6    0
          SA6    X5          SET STATUS OK
          SA6    EOI         CLEAR EOI FLAG

          R=     X6,AIMOI
          R=     X7,MLSOK
          SA6    MLIPAR+MLPAR
          SX6    100
          SA6    MLIPAR+MLPSG
          SX6    MLFSE
          SA6    MLIPAR+MLPFN
          SA7    MLIPAR+MLPSV
*
          SA2    FETA
          MX0    42
          BX3    -X0*X2
          LX1    18
          BX6    X1+X3
          SA6    FETB
          SA6    A2
*
          SA1    SMASK
          BX7    X1
          SA7    MMASK

          RESET  FETA
          READ   FETA,R
          SX6    10
LOOP      SA6    COUNT
          RESET  FETB
          READ   FETB
          SMSG   HWA,FETA,BUFA
          RECALL FETB
          CKMST  MMASK

          RESET  FETA
          READ   FETA
          SMSG   HWB,FETB,BUFB
          RECALL FETA
          CKMST  MMASK
          SA1    COUNT
          SX6    X1-2
          NZ     X6,LOOP     IF MORE

* INTERRUPT XFER IN MIDDLE AND RETURN

          SMSG   HWA,FETA,BUFA
          EQ     EXIT

* PROCEDURE QFREC

          ENTRY  QFREC
QFREC     BSS    0
          RJ     =XPXSAVE
          BX6    X2
          BX7    X3
          SA6    MLIPAR+MLPAN
          SA7    MLIPAR+MLPSN
          MX6    0
          SA6    X5          SET STATUS OK
          SA6    EOI         CLEAR EOI FLAG

          SA6    MLIPAR+MLPRI  RECEIVE INDEX
          SX6    100
          SA6    MLIPAR+MLPSG
          SX6    MLFRE
          SA6    MLIPAR+MLPFN
          SX6    MLSOK
          SA6    MLIPAR+MLPSV
          SX6    BUFSIZ
          SA6    MLIPAR+MLPBL  BUFFER LENGTH
*
          SA2    FETA
          MX0    42
          BX3    -X0*X2
          LX1    18
          BX6    X1+X3
          SA6    FETB
          SA6    A2
*
          SA1    RMASK
          BX7    X1
          SA7    MMASK
          SX6    10
RLOOP     SA6    COUNT
          RECM   BUFA
          RECALL FETB
          CKIOST FETB
          CKMST  MMASK
          WRITF  FETA,HWA

          RECM   BUFB
          RECALL FETA
          CKIOST FETA
          CKMST  MMASK
          WRITF  FETB,HWB
          SA1    COUNT
          SX6    X1-2
          NZ     X6,RLOOP    IF MORE

* INTERRUPT XFER IN MIDDLE AND RETURN

          EQ     EXIT

RAIERR    BSS    0
          SA1    MLIPAR+MLPV2
          RJ     CDD
          SA6    M14
          MESSAGE M13,3,R
          EQ     EXIT

MLERR     BSS    0
          SX6    B1
          SA1    STSA
          SA6    X1
          SA2    MLIPAR+MLPSV
          SA3    DSTSA
          BX6    X2
          SA6    X3
          MX6    0
          BX1    X2
          SA6    MLIPAR+MLPSV  TO PREVENT LOOP WITH EXIT/CKMST/MLERR
          RJ     CDD
          SA6    M2
          MESSAGE M1,3,R
          EQ     EXIT

IOERR     BSS    0
          SX6    2
          SA1    STSA
          SA6    X1
          BX6    X2
          SA3    DSTSA
          SA6    X3
          BX1    X2
          RJ     CDD
          SA6    M4
          EQ     EXIT

EXIT      BSS    0
          CKMST  MMASK
          RECALL FETA
          RECALL FETB
          SA1    MLIPAR+MLPAR
          SA2    STSA
*IF ($string($name(wev$target_operating_system))='NOS')
          SA3    X2               CHECK FOR NON-ZERO RETURNED
          NZ     X3,EXIT1         IF SO, THEN DONT OVERWRITE X REG
*IFEND
          BX6    X1
          SA6    X2          RETURN LAST ARBINFO
*IF ($string($name(wev$target_operating_system))='NOS')
EXIT1     EQ     =XZSMRRET
*ELSE
          EQ     =XZSMRRET
*IFEND

ISSUE2    BX6    X4
          SA6    NTHSR
ISSUE     BSS    1
ISSUE0    BSS    0
          SA1    NTHSR
          PL     X1,ISSUE3   IF REQUEST OUTSTANDING
          SX4    0
          SX2    MLIPAR
          CALLVS X2,X4,CVSMLIU,0
          ZR     X0,ISSUE    IF REQUEST COMPLETE
          BX1    X0
          AX1    30
          NZ     X1,ISSUE1   IF NOS/VE DOWN
          SX0    X0-1
          NZ     X0,ISSUE2   IF REQUEST NOT COMPLETE
          RECALL
          EQ     ISSUE0

ISSUE1    BSS    0
          SX6    MLSND
          SA6    MLIPAR+MLPSV
          EQ     ISSUE

ISSUE3    BSS    0
          MESSAGE (=C* REQ W/REQ OUTSTANDING*),3,R
          ABORT

**********************************************

POLL1     SX6    -2
          SA6    NTHSR
POLL      BSS    1
          SA4    NTHSR
          NG     X4,POLL     IF NO REQUEST
          SX1    MLIPAR
          CALLVS X1,X4,CVSMLIU,0
          ZR     X0,POLL1    IF REQUEST COMPLETE
          AX0    30
          ZR     X0,POLL     IF NOSVE UP
          SX6    MLSND
          SA6    MLIPAR+MLPSV
          EQ     POLL
          END
