FTN4,L SUBROUTINE DSVSU(IUNIT,R,IT,DD1), +09580-16136 REV.2001 791023 C*********************************************************** C C RELOC. 09580-16136 C SOURCE 09580-18136 C C C R. UNTALAN 04 15 77 REV. A C 770901 REV. B C 790724 REV. C C BOB RICHARDS 791023 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 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 C*********************************************************** C C C GENERAL C ------- C THE FOLLOWING DEVICE SUBROUTINE ALLOWS THE APPLICATION C PROGRAMMER TO PROGRAM ALL RANGES,TRIGGER MODE (EXCEPT FOR HLD/MNL), C AND DELAY. ENABLE REQUEST IS DISABLED, THAT IS (RQS) IS PROGRAM FOR 0. C THE 3437A IS PROGRAMMED TO OUTPUT PACKED(2-BYTE) FORMAT PER C READING TO ALLOW THE 3437A TO OPERATE AT MAXIMUM SPEED. C C C HARDWARE ENVIRONMENT: C --------------------- C C HP 21MX SERIES COMPUTER C HP 3437A SYSTEM VOLTMETER C HP 59310A/B INTERFACE BUS I/O KIT C C C OUTPUT BUFFER (10 WORDS) C ------------------------ C C WORD 1 = RANGE C WORD 2 = TRIGGER MODE C WORD 3 = PACKED FORMAT C WORD 4 = SRQ DISABLE C WORD 5 = ASCII S, (STORE COMMAND FOR SRQ CODE) C WORD 6 = ASCII D. (PREFIX FOR DELAY PARAMETER) C WORD 7 = XX WHERE X = ASCII NUMBER 0-9 C WORD 8 = XX C WORD 9 = XX C WORD 10= S (STORE COMMAND FOR DELAY) C C C************************************************************ DIMENSION IERMS(5) DATA IDT1,IDT2/9,43/ DATA IERMS/10,5,2HDS,2HVS,2HU / C C INTERFACE MODULE FOR THE 3437A SET UP DEVICE C SUBROUTINE C C IDT1=DEVICE TYPE NUM. FOR THE HPIB C IDT2=DEVICE TYPE NUM. FOR THE HP3437A SVM C ERROR DSVSU-10 MEANS LU#=0 OR STATION#=0 OR UNIT # INCORRECT C C IERMS=10 ISTN=ISN(DUMMY) LU2=LUDV(ISTN,IDT2,IUNIT) LU1=IBLU0(LU2) IF (ISTN.EQ.0.OR.LU1.EQ.0.OR.LU2.EQ.0) GO TO 500 CALL XSVSU(LU1,LU2,IERMS,IUNIT,R,IT,DD1) IF(IERMS(1))500,20,500 20 RETURN 500 CALL ERROR(IERMS,IERMS(2)) RETURN END C C SUBROUTINE XSVSU(LU1,LU2,IERMS,IUNIT,R,IT,DD1), +09580-16136 REV.2001 791023 C C*********************************************************** C THIS IS THE SETUP DEVICE SUBROUTINE FOR THE C HP3437A SYSTEM VOLTMETER C THE PARAMETERS HAVE THE FOLLOWING MEANING C C LU1=LU NUMBER OF HPIB CARD C LU2=LU NUMBER OF 3437A C IERR IS A 5 WORD ARRAY WITH IERR(1)= ERROR CODE WHERE: C C C 0=NO ERROR C 1= PARAMETER ERROR C C ERROR MESSAGES WHICH PERTAIN TO THE HPIB C C 9= I/O CALL REJECTED C 10= LU1 OR LU2 NOT ASSIGNED 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 R=VOLTAGE RANGE C .1 VOLT RANGE C 1 VOLT RANGE C 10 VOLT RANGE C C C IT=TRIGGER SOURCE C 1=INTERNAL C 2=EXTERNAL C C DD1= DELAY SETTING C 175 MICROSECONDS TO 999999 MICROSECONDS C C C C*********************************************************** DIMENSION IREG(2),IHP(4),IERMS(5) DIMENSION IRBUF(3),ITBUF(3) DIMENSION IOBUF(10),IEBUF(2) DIMENSION ITRBF(2),RNG(3),IBUF(1) C C EQUIVALENCE (REG,IREG,IAA),(IREG(2),IB) DATA IHP/5,2HHP,2HIB,2H / DATA IRBUF/2HR1,2HR2,2HR3/ DATA ITBUF/2HT1,2HT2/ DATA RNG/.1,1.0,10.0/ DATA IREN/1600B/ DATA IEBUF/2HE0/ C C ICNWD=0 IERMS=0 IASCU=30000B IASCL=60B IDTN=43 C C IF(R.LT..1.OR.R.GT.10)IERMS=1 IF(IT.LT.1.OR.IT.GT.2)IERMS=1 IF(DD1.LT.175.OR.DD1.GT.999999.)IERMS=1 C IF(IERMS.EQ.1)GO TO 9000 C IOL=10 C C*****FIND RANGE VALUE**** DO 200 I=1,3 IF(R.EQ.RNG(I))GO TO 300 200 CONTINUE IERMS=1 GO TO 9000 C*****RANGE PARAMETER***** 300 IOBUF(1)=IRBUF(I) C C C*****TRIGGER PARAMETER***** IOBUF(2)=ITBUF(IT) C C C*****PACKED FORMAT CODE ***** IOBUF(3)=2HF2 C C C*****NO SRQ******* IOBUF(4)=2HE0 IOBUF(5)=51454B C C*****PROCESS DELAY PARAMETER******** C C*****DELAY PARAMETER CODE= D.XXXXXX0S******* IOBUF(6)=2HD. C C C****FIRST DGT**** RDD1=(DD1/100000.) IDD1=INT(RDD1) IX1=(IDD1*2**8)+30000B RDD1=IDD1 C C C***2ND DGT*** RDD2=(DD1-(RDD1*100000.))/10000. IDD2=INT(RDD2) IX2=IDD2+60B RDD2=IDD2 C C C***SAVE 1ST &2ND DGT*** IOBUF(7)=IOR(IX1,IX2) C C C***3RD DGT*** RDD3=(DD1-(RDD1*100000.)-(RDD2*10000.))/1000. IDD3=INT(RDD3) IX3=(IDD3*2**8)+30000B RDD3=IDD3 C C C****4TH DGT**** RDD4=(DD1-(RDD1*100000.)-(RDD2*10000.)-(RDD3*1000.))/100. IDD4=INT(RDD4) IX4=IDD4+60B RDD4=IDD4 C IOBUF(8)=IOR(IX3,IX4) C C***5TH DGT**** FDD5=(RDD1*100000.)+(RDD2*10000.)+(RDD3*1000.)+(RDD4*100.) RDD5=(DD1-FDD5)/10. IDD5=INT(RDD5) IX5=(IDD5*2**8)+30000B RDD5=IDD5 C C C****6TH DGT**** RDD6=DD1-(FDD5+(RDD5*10.)) IDD6=INT(RDD6) IX6=IDD6+60B IOBUF(9)=IOR(IX5,IX6) C C C****ASCII S (FOR STORE)** C IOBUF(10)=2HS C C C**SET BUS TO REMOTE** CALL EXEC(100003B,1600B+LU1) GOTO 700 C 400 CALL ABREG(IAA,IB) IF(IB.LT.0)GO TO 910 C C C****OUTPUT ASCII DATA*** CALL EXEC(100002B,LU2,IOBUF,10,IDUMY,0) GO TO 700 C 550 CALL ABREG(IAA,IB) IF(IB.LT.0)GO TO 910 C C RETURN C C C*****ERRORS***** C C 700 IERMS=9 GO TO 9000 C 910 IERMS=IAND(IREG,377B)+11 9000 IERMS(2)=5 IERMS(3)=2HDS IERMS(4)=2HVS IERMS(5)=2HU RETURN END END$