FTN4,L SUBROUTINE C45IM(IUNIT,ISLA,ISLB,TRIGA,TRIGB), +09580-16413 REV.2001 791023 C------------------------------------------------------------------- C C RELOC. 09580-16413 C SOURCE 09580-18413 C REV. A Y.MIYAKO 3-13-79 C 790515 Y.MIYAKO C 791023 BOB RICHARDS 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 BRANCH AND MNEMONIC TABLES ENTRIES C ---------------------------------- C C C45IM(I,I,I,R,R), OV#=XX, ENT=C45IM, FIL=%C45IM C C------------------------------------------------------------------- DIMENSION IERMS(5) DATA IERMS/10,5,2HC4,2H5I,2HM / IERMS = 10 ISTN = ISN(DUM) LU = LUDV(ISTN,6,IUNIT) LUIB = IBLU0(LU) IF(LU)800,800,10 10 CALL X45IM(LUIB,LU,IERMS,ISLA,ISLB,TRIGA,TRIGB) IF(IERMS)800,20,800 20 RETURN C C 800 CALL ERROR(IERMS,IERMS(2)) RETURN END SUBROUTINE X45IM(LUIB,LCTR,IERR,ISLA,ISLB,TRIGA,TRIGB), +09580-16413 REV.2001 791023 C C C C C C THIS DEVICE SUBROUTINE SETS UP THE 5345A C ELECTRONIC COUNTER FUNCTIONS. C C CALL C45IM(LUIB,LCTR,IERR,ISLA,ISLB,TRIGA,TRIGB) C WHERE: C LUIB = LU OF HPIB INTERFACE CARD C LCTR = LU OF HP 5345A ELECTRONIC COUNTER C 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 HPIB 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(3) - IERR(5) = DEVICE SUBROUTINE NAME C C ISLA = A CHANNEL SLOPE C ISLB = B CHANNEL SLOPE C 0 - SLOPE C 1 + SLOPE C C TRIGA = A CHANNEL TRIGGER LEVEL C TRIGB = B CHANNEL TRIGGER LEVEL C -2.000<= TRIG <= 1.999 C C C C C DIMENSION IBUF(6),IADG(3),IRNG(2),IERR(5),IREG(2) C EQUIVALENCE(REG,IREG,IA),(IREG(2),IB) C C C SET PROGRAM DATA C DATA IWRT/100002B/ DATA IRNG/100,10/ C INITILIZE ERROR IERR=0 C IF(TRIGA.LT.-2.000.OR.TRIGA.GT.1.999)GOTO 9100 IF(TRIGB.LT.-2.000.OR.TRIGB.GT.1.999)GOTO 9100 C IF(ISLA .LT. 0 .OR. ISLA .GT. 1) GOTO 9100 IF(ISLB .LT. 0 .OR. ISLB .GT. 1) GOTO 9100 C C SET A CHANNEL SLOPE C IF(ISLA.EQ.0)IBUF(1)=2HE> IF(ISLA.EQ.1)IBUF(1)=2HE6 C C COMPUTE A CHANNEL TRIGGER LEVELS C C ITRIG=(TRIGA+2.0)*250.0 DO 100 I=1,2 IADG(I)=0 50 IF(ITRIG.LT.IRNG(I))GOTO 100 IADG(I)=IADG(I)+1 ITRIG=ITRIG-IRNG(I) GOTO 50 100 CONTINUE IBUF(2)=(40460B+IADG(1)) IBUF(3)=IOR((IADG(2)+60B)*256,ITRIG+60B) C C SET B CHANNEL SLOPE C IF(ISLB.EQ.0)IBUF(4)=2HE8 IF(ISLB.EQ.1)IBUF(4)=2HE0 C C COMPUTE B CHANNEL TRIGGER LEVEL C C ITRIG=(TRIGB+2.0)*250.0 DO 200 I=1,2 IADG(I)=0 150 IF(ITRIG.LT.IRNG(I))GOTO 200 IADG(I)=IADG(I)+1 ITRIG=ITRIG-IRNG(I) GOTO 150 200 CONTINUE IBUF(5)=(41060B+IADG(1)) IBUF(6)=IOR((IADG(2)+60B)*256,ITRIG+60B) C 500 CALL EXEC(100003B,1600B+LUIB) GO TO 9000 550 CALL ABREG(IA,IB) IF(IB.LT.0)GO TO 990 C C PROGRAM ELECTRONIC COUNTER C CALL REIO(IWRT,2000B+LCTR,IBUF,6,IDUMY,0) GO TO 9000 1000 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) = 2HC4 IERR(4) = 2H5I IERR(5) = 2HM RETURN END END$