FTN4,L
      SUBROUTINE DVMST(IUNIT,IFUNC,IRGE,IARM),
     +09580-16133 1926 790502 
C-------------------------------------------------------------------
C 
C      RELOC.       09580-16133 
C      SOURCE       09580-18133 
C      REV. A        770315 
C      REV. B        770901 
C      REV. C        790330 
C      BOB RICHARDS  790502 
C 
C 
C      HP 92425A 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 1979.
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-------------------------------------------------------------------
      DIMENSION IERMS(5)
      DATA IERMS/10,5,2HDV,2HMS,2HT / 
      IERMS = 10
      ISTN = ISN(DUM) 
      LU = LUDV(ISTN,5,IUNIT) 
      LU0 = IBLU0(LU) 
      IF(LU.LE.0.OR.LU0.LE.0)GO TO 800
10    CALL XVMST(LU0,LU,IERMS,IFUNC,IRGE,IARM)
      IF(IERMS)800,20,800 
20    RETURN
C 
C 
800   CALL ERROR(IERMS,IERMS(2))
      RETURN
      END 
      SUBROUTINE XVMST(LU0,LU,IERR,IFUNC,IRGE,IARM),
     +09580-16133 1926 790502 
C 
C 
C 
C 
C 
C 
C        THIS DEVICE SUBROUTINE SETS UP THE HP5328A 
C     UNIVERSAL COUNTER TO MAKE A VOLTAGE MEASUREMENT 
C     THE 5328A MUST HAVE AN OPTION 021 OR OPTION 20
C     DVM.
C 
C     CALL XVMST(LU0,LU,IERR,IFUNC,IRGE,IARM) 
C        WHERE: 
C            LU0   = LOGICAL UNIT NO. OF HP-IB
C            LU    = LOGICAL UNIT NO. OF HP 5328A 
C            IERR  = 5 ELEMENT ERROR ARRAY
C                    IERR(1) = ERROR CODE 
C 
C                        0= NO ERROR
C                        1= PARAMETER ERROR 
C     ERROR MESSAGES WHICH PERTAIN TO THE HP-IB 
C 
C     9 = I/O CALL REJECTED 
C     10 = LU NOT ASSIGNED TO HPIB DEVICE OR TO STATION.
C     11 - DMA INPUT REQUEST PREMATURELY TERMINATED 
C     12 - I/O DEVICE TIME OUT
C     13 - IFC (INTERFACE CLEAR) DETECTED DURING I/O REQUEST
C     14 - SRQ SERVICE ABORTED
C     15 - NON-EXISTENT ALARM PROGRAM 
C     16 - ILLEGAL CONTROL REQUEST
C     17 - EQT EXTENSION AREA FULL, NO NEW DEVICE MAY BE ADDED ON LINE
C 
C                    IERR(2)-IERR(5) = DEVICE SUBROUTINE NAME 
C 
C             IFUNC = DVM MODE (0-2)
C                     MODE    FUNCTION
C                      0       DVM     READ DC VOLTAGE IN VOLTS 
C                      1       DVM/A   READ DC VOLTS/FREQ-A IN V/HZ 
C                      2       DVM A-B READ DC VOLTS*TI A-B IN V-SEC
C             IRGE  = DVM RANGE (1-5) 
C                     RANGE  GATE TIME        MAX RESOL 
C                                        0-12.5V    12.-125V   >125V
C                       1     .001 SEC    100 MV     1.0  V    10.0 V 
C                       2     .01  SEC     10 MV     100 MV     1.0 V 
C                       3     .1   SEC      1 MV      10 MV    100 MV 
C                       4      1.0 SEC    100 UV       1 MV     10 MV 
C                       5     10.0 SEC     10 UV     100 UV      1 MV 
C 
C 
C             IARM  = ARMING MODE 
C                      0=ARMING OFF 
C                      1=ARMING ON - READING TRIGGERED BY B-CHAN FOR
C                                    MODE=0,1-BY C-CHAN FOR MODE=3
C 
C 
C 
      DIMENSION IDATA(4),IMDE(3),IERR(5),IARM1(2),
     1IREG(2) 
      EQUIVALENCE(REG,IREG,IA),(IREG(2),IB) 
      DATA IMDE/2HF?,2HF3,2HF5/,
     1 IARM1/2HS:,2HS;/ 
C 
C   CLEAR ERROR CODE
C 
      IERR=0
C 
C 
C   TEST PARAMETERS 
C 
      IF((IRGE.LT.1).OR.(IRGE.GT.5))GOTO 9100 
      IF((IFUNC.LT.0).OR.(IFUNC.GT.2))GOTO 9100 
      IF((IARM .LT.0).OR.(IARM.GT.1)) GOTO 9100 
C 
C  SET REMOTE ENABLE ON BUS 
C 
      CALL EXEC(100003B,1600B+LU0)
      GO TO 9000
90    CALL ABREG(IA,IB) 
      IF(IB.LT.0)GO TO 990
C 
C   CLEAR DVM 
C 
      IDATA(1)=2HP
C 
C   SET TO PROPER DVM MODE
C 
      INDEX=IFUNC+1 
      IDATA(2)=IMDE(INDEX)
C 
C   SET TO RANGE IRGE 
C 
      IDATA(3)=2HG0+IRGE+2
C 
C   SET ARMING
C 
      IDATA(4)=IARM1(IARM+1)
C 
C   PROGRAM DVM 
C 
      CALL REIO(100002B,2000B+LU,IDATA,4,IDUMY,0) 
      GO TO 9000
99    CALL ABREG(IA,IB) 
      IF(IB.LT.0)GO TO 990
C 
C  RETURN 
C 
      RETURN
C 
C   ERROR RETURN
C 
9000  IERR= 9 
      GO TO 9900
9100  IERR=1
      GO TO 9900
990   IERR = IAND(IREG,377B) + 11 
9900  IERR(2) = 5 
      IERR(3) = 2HDV
      IERR(4) = 2HMS
      IERR(5) = 2HT 
      END 
      END$
                                                                                                                                                                                          