FTN4,L SUBROUTINE RASW(IFUN,IRELY),09580-16368 REV.2001 791023 C **************************************************** C C SOURCE 09580-18368 C RELOCATABLE 09580-16368 C C T. KONDO 3/16/79 REV. 1926 C BOB RICHARDS 791023 C C TEST SYSTEM SOURCE SOFTWARE IS THE PROPRIETARY C MATERIAL OF THE HEWLETT-PACKARD COMPANY. 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 THIS DEVICE SUBROUTINE IS FOR HP59306A RELAY ACTUATOR. C C SET-UP CALL: C RASW(IFUN,IRELY) C WHERE: C IFUN = FUNCTION SELECT C 0 = OPEN C 1 = CLOSE C 2 = OPEN, SETTLE TIME = 50 MSEC C 3 = CLOSE, SETTLE TIME = 50 MSEC C IRELY = RELAY ADDRESS (IN ARRAY) C IRELY(1) = NUMBER OF RELAYS C IRELY(2) - IRELY(N) = RELAY TO C BE CLOSED OR TO BE OPENED. C C NOTE: UNITS NOT RESETTABLE BY PRESSING RESET C I(1) = 0 C CALL RASW(1,I(1)) C PLACES UNITS IN MANUALLY RESETABLE MODE C C CALL RASW(0,I(1)) C PLACES UNITS BACK IN PROGRAM ONLY MODE C C = * = * = * = * = * = * = * = * = * = * = C C HP59306A CONFIGURATION: C C BRANCH & MNEMONIC TABLES: C RASW(I,IVA), OV=XX, ENT=RASW, FIL=%RASW C C CONFIGURATION TABLE: C C R 62,1,1 C U1 C N1 (LU# OF HP59306A UNIT #1) C U2 C N2 (LU# OF HP59306A UNIT #2) C U3 C N3 (LU# OF HP59306A UNIT #3) C C C = * = * = * = * = * = * = * = * = * = * = C DIMENSION IERMS(5) DATA IERMS /10,5,2HRA,2HSW,2H / DATA IDTN /62/ C CALL XASW(IERMS,IFUN,IRELY) IF(IERMS.NE.0)GOTO 800 20 RETURN C C 800 CALL ERROR(IERMS,IERMS(2)) RETURN END C ------------------------------------- SUBROUTINE XASW(IERR,IFUN,IRELY),09580-16368 REV.2001 791023 DIMENSION IOBUF(6),IRELY(2),IBUF(4) DIMENSION IERR(5),IREG(2) C EQUIVALENCE (REG,IREG,IA),(IREG(2),IB) C DATA IDTN / 62 / C C CHECK PARAMETER C IERR = 0 IF(IFUN.LT.0.OR.IFUN.GT.3)GOTO 9900 NUMX = 1 NOS = IRELY IF(IRELY.EQ.0)GOTO 120 90 NUMX = 0 IDX = 2 C C 100 NUMX = NUMX + 1 NMR = 0 C C GET RELAY NUMBER C DO 110 I=1, NOS NRLY = 6 * (NUMX-1) + 1 IF(NOS.LT.1)GOTO 110 IR = IRELY(IDX) IF(IR.LT.1)GOTO 9900 IF(IR.LT.NRLY.OR.IR.GT.(NRLY+5))GOTO 110 NMR = NMR + 1 C IV = IRELY(IDX) - (NRLY-1) IF(IFUN.EQ.0.OR.IFUN.EQ.2)IOBUF(NMR) = 41060B + IV IF(IFUN.EQ.1.OR.IFUN.EQ.3)IOBUF(NMR) = 40460B + IV IDX = IDX + 1 C 110 CONTINUE C C CHECK UNIT NUMBER C NOS = NOS - NMR IF(NOS.LT.1)GOTO 115 IF(NMR.LT.1)GOTO 100 C C CHECK FOR VALID ATS STATION C 115 IERR = 10 ISTN = ISN(IDUMY) LUDEV = LUDV(ISTN,IDTN,NUMX) IF (LUDEV - 1) 9910,120 120 IERR = 0 C C C CALL TIM(IDTN,NUMX,1,LU1,1,IERFG) IF(IERFG.LT.0)GOTO 9900 C LU0 = IBLU0(LU1) C C ENABLE REMOTE C 200 CONTINUE CALL EXEC(100003B,1600B+LU0) GOTO 9000 7710 CALL ABREG(IA,IB) IF(IB.LT.0)GOTO 9100 C C LOCAL LOCKOUT C IF(IRELY.NE.0)GOTO 500 IF(IFUN.EQ.0)CALL LLO(LU0) IF(IFUN.EQ.1)CALL LOCL(LU0) RETURN C C OUTPUT ASCII TO 59306A C 500 CONTINUE CALL REIO(100002B,LU1,IOBUF,NMR,IDUMY,0) GOTO 9000 7730 CALL ABREG(IA,IB) IF(IB.LT.0)GOTO 9100 IF(NOS.LT.1)GOTO 600 GOTO 100 C C SETTLING TIME C 600 IF(IFUN.GT.1)CALL EXEC(12,0,1,0,-5) RETURN C C ERROR ROUTINE C 9000 IERR = 9 GOTO 9910 9100 IERR = IAND(IREG,377B) + 11 GO TO 9910 9900 IERR = 1 9910 IERR(2) = 5 IERR(3) = 2HRA IERR(4) = 2HSW IERR(5) = 2H RETURN END