FTN4,L
      SUBROUTINE MOUTP(IU),09580-16019 REV.2013 800128
C 
C  THIS DEVICE SUBROUTINE IS USED TO PROGRAM A MEMORY OUTPUT CALL 
C  AS USED WITH THE BIOMATION 8100. 
C 
C**************************************** 
C 
C  RELOCATABLE  09580-16019 
C  SOURCE       09580-18019 
C 
C  V.POVIO  11-23-76
C  REY UNTALAN 10-23-79 
C  BOB RICHARDS 800128
C 
C 
C 
C*********************************************************************
C 
C      HP 92425B TEST SYSTEM SOFTWARE IS THE PROPRIETARY
C      MATERIAL OF THE HEWLETT-PACKARD COMPANY.  USE AND
C      DISCLOSURE THEREOF ARE RESTRICTED BY WRITTEN AGREEMENT.
C 
C      (C) COPYRIGHT HEWLETT-PACKARD COMPANY 1980.
C      ALL RIGHTS RESERVED.  NO PART OF THIS PROGRAM
C      MAY BE PHOTOCOPIED, REPRODUCED OR TRANSLATED 
C      TO ANOTHER PROGRAM LANGUAGE WITHOUT THE PRIOR
C      WRITTEN CONSENT OF THE HEWLETT-PACKARD COMPANY.
C 
C*********************************************************************
C 
C 
C***************************************
C 
      DIMENSION IERMS(5),INUM(13) 
      DATA IERMS/10,5,2HMO,2HUT,2HP / 
      DATA IDTN/41/ 
C 
C  FIND STATION # AND LU #
C 
      IERMS=10
      ISTN=ISN(DUMMY) 
      ILU1=LUDV(ISTN,IDTN)
      IF(ILU1 .EQ. 0)GOTO 800 
C 
C  RETRIEVE DATA FROM CONFIGURATION FILE
C 
      IERMS=1 
      CALL TIM(IDTN,1,1,INUM,13,N)
      IF(N .NE. 0)RETURN
      IF(IU .GT. INUM)GOTO 800
C 
C  JUMP TO DEVICE SUBROUTINE
C 
      CALL XOUTP(ILU1,IERMS,IU) 
      RETURN
C 
C  ERROR EXIT 
C 
800   CALL ERROR(IERMS,IERMS(2))
      RETURN
      END 
C 
C**************************************** 
C 
      SUBROUTINE XOUTP(ILU1,IERMS,IU),09580-16019 REV.2013 800128 
      DIMENSION IUNIT(7),IREG(2),IDATA(10), 
     1IDCB(144),NAME(3),IERMS(5), 
     1IXFER(2),IA(128),IB(2048) 
      EQUIVALENCE (REG,IREG,LA),(IREG(2),LB)
      DATA IUNIT / 25400B,45400B,65400B,105400B,
     1125400B,145400B,165400B / 
      DATA NAME / 2HDM,2HOU,2HTP/ 
C 
C***************************************
C 
C  F) MEMORY DATA OUTPUT CALL:
C     ------------------------
C 
C      MOUTP(IU)
C 
C      WHERE
C 
C      IU=UNIT NUMBER (1-7) 
C 
C 
C 
C       ERRORS HAVE THE FOLLOWING MEANING:
C 
C         1= PARAMETER ERROR
C         2= TIME OUT OR I/O INCOMPLETE 
C         3= FAILED TO OPEN DATA FILE (DMOUTP)
C         9= I/O CALL REJECTED
C 
C 
C  COMMENT:A TYPE 1 FILE CALLED DMOUTP WITH A SECURITY CODE 
C          OF VP AND 32 SECTORS LONG WILL HAVE TO BE
C          CREATED BEFORE THIS DEVICE SUBROUTINE CAN BE USED. 
C 
C             :CR,DMOUTP:VP:-2:1:32 
C 
C 
C***************************************
C 
C  INITIALIZE 
C 
      IDTN=41 
      IERMS=0 
      ITEMP=0 
C 
C  OPEN DATA FILE DMOUTP
C 
      CALL OPEN(IDCB,IERMS,NAME,5,2HVP) 
      IF(IERMS .NE. 1)GOTO 8003 
      IERMS=2 
C 
C  SET UP OUTPUT DATA WORD
C 
      IDATA(1)=IUNIT(IU)
C 
C  OUTPUT DATA WORD 
C 
400   ICNWD=300B+ILU1 
      IDATA(1)=IUNIT(IU)
      CALL EXEC(100002B,ICNWD,IDATA(1),1) 
      GOTO 8002 
8900  CALL ABREG(LA,LB) 
      IF(IAND(IREG(1),177B) .NE. 0)GOTO 8001
C 
C  READ DATA BACK 
C 
C 
      ICNWD=500B+ILU1 
      CALL EXEC(100001B,ICNWD,IB(1),2048) 
      GOTO 8002 
8901  CALL ABREG(LA,LB) 
      IF(IAND(IREG(1),177B) .NE. 0)GOTO 8001
C 
C  CONVERT AND STORE IN RETURN VARIABLE 
C 
      ISTRT=1 
      IEND=64 
C 
C 
      DO 470 J3=1,32
      K=1 
      DO 410 J=ISTRT,IEND 
      IXFER(2)=20B
      INEG=IAND(IB(J),200B) 
      IF(INEG .EQ. 0)GOTO 430 
C 
      IXFER(1)=IOR(IB(J),177600B) 
      IF(IXFER(1) .EQ. 177777B)IXFER(2)=67363B
      IF(IXFER(1) .EQ. 177776B)IXFER(2)=67365B
      IF(IXFER(1) .GT. 177775B)IXFER(1)=100064B 
      GOTO 440
C 
430   IXFER(1)=IAND(IB(J),177B) 
C 
440   IA(K)=IXFER(1)
      IF(IA(K) .EQ. 0)IA(K)=1 
      IA(K+1)=IXFER(2)
      K=K+2 
410   CONTINUE
      IERMS=0 
C 
C  WRITE TO DATA FILE 
C 
      CALL WRITF(IDCB,IERMS,IA,128,J3)
      IF(IERMS .LT. 0)GOTO 8000 
      ISTRT=ISTRT+64
      IEND=IEND+64
470   CONTINUE
C 
C  CLOSE DATA FILE
C 
      CALL CLOSE(IDCB,IERMS)
      IF(IERMS .LT. 0)GOTO 8000 
C 
C  EXIT 
C 
      IERMS=0 
500   RETURN
C 
C  ERROR EXIT 
C 
C 
8003  IERMS=3 
      GOTO 8001 
C 
C 
8002  IERMS=9 
8000  IF(IERMS .LT. 0)IERMS=IABS(IERMS) 
8001  IERMS(2)=5
      IERMS(3)=2HMO 
      IERMS(4)=2HUT 
      IERMS(5)=2HP
      RETURN
      END 
                                                                                                                          