FTN4,L SUBROUTINE GRTST(IUNIT,ANGLE,VEL),09580-16010 REV.2001 +791005 C C**************************************** C C RELOCATABLE 09580-16010 C SOURCE 09580-18010 C C V.POVIO 10-4-76 C BOB RICHARDS 791005 C 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 1978. 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 C GERTSH PSS-2613R C ---------------- C C GENERAL: C ------- C C THE FOLLOWING TWO DEVICE SUBROUTINES ARE USED C TO PROGRAM THE GERTSCH PSS-2613R DIGITAL TO C SYNCHRO CONVERTER. C C HARDWARE CONFIGURATION: C ---------------------- C C HP 21MX SERIES COMPUTER C C GERTSCH PSS-2613R DIGITAL TO SYNCHRO CONVERTER C C HP 09200-60006 CONTROL CABLE C C HP 12566-60024 MICROCIRCUIT CARD C JUMPERED AS FOLLOWS C C W1-A C W2-C C W3-A C W4-B C W5 THRU W8-OUT C W9-A C C C DATA WORD FORMAT: C ---------------- C C OUTPUT/INPUT WORD #1 C C !15 14 13 12!11 10 9 8! 7 6 5 4! 3 2 1 0! C ------------------------------------------------- C ! 10^2 ! 10^1 ! 10^0 ! 10^-1 ! C ------------------------------------------------- C C ALL SECTIONS ARE BCD C C OUTPUT WORD #2 C C !15!14!13 12 11 10 9 8 7 6 5 4 3! 2! 1 0! C ------------------------------------------------- C !SB!MB!--------NOT USED----------------!D ! VEL ! C ------------------------------------------------- C C SB=STOP BIT C =0 NORMAL OPERATION C =1 STOP C C MB=MODE BIT C =0 STATIC MODE C =1 DYNAMIC MODE C C D=DIRECTION C =0 DECREASING ANGLE (CLOCK-WISE) C =1 INCREASING ANGLE )COUNTER-CLOCK-WISE) C C VEL=VELOCITY C =00 1.5 DEGREES/SEC. C =01 5.0 DEGREES/SEC. C =10 30.0 DEGREES/SEC. C =11 200.0 DEGREES/SEC. C C BRANCH AND MNEMONIC TABLE ENTRIES C --------------------------------- C C GRTST(I,R,R), OV=X, ENT=GRTST, FIL=%GRTST C GRTSP(I), OV=X, ENT=GRTSP, FIL=%GRTST C C**************************************** C DIMENSION IERMS(5) DATA IERMS/10,5,2HGR,2HTS,2HT / DATA IDTN/39/ C C FIND STATION # AND LU # C IERMS=10 ISTN=ISN(DUMMY) ILU1=LUDV(ISTN,IDTN) IF(ILU1 .EQ. 0)GOTO 800 C C JUMP TO DEVICE SUBROUTINE C CALL XRTST(ILU1,IERMS,IUNIT,ANGLE,VEL) IF(IERMS)800,20,800 20 RETURN C C ERROR EXIT C 800 CALL ERROR(IERMS,IERMS(2)) RETURN END C C**************************************** C SUBROUTINE XRTST(ILU1,IERMS,IUNIT,ANGLE,VEL),09580-16010 +REV.2001 791005 DIMENSION IBUF(3),IDATA(2),IREG(2),IERMS(5) EQUIVALENCE (REG,IREG,IA),(IREG(2),IB) C C**************************************** C C GRTST(U,A,V) C C WHERE C C U=UNIT NUMBER C C 0=ALL UNITS C 1=FIRST UNIT C 2=SECOND UNIT,ETC C C A=ANGLE 0.0-359.9 DEG. WITH .1 DEG. RESOLUTION C C V=VELOCITY DYNAMIC C C +/- 1.5 DEG./SEC. C +/- 5.0 DEG./SEC. C +/- 30.0 DEG./SEC. C +/- 200.0 DEG./SEC. C 0.0=STATIC C C**************************************** C C INITILIZE C IDTN=39 IERMS=1 IU=1 IF(IUNIT .EQ. 0)IU=0 IF(IUNIT .EQ. 0)IUNIT=1 C C RETRIEVE DATA FROM CONFIGURATION FILE C CALL TIM(IDTN,1,1,IBUF,1,N) IF(N .LT. 0)RETURN IF(IUNIT .GT. IBUF(1)) GOTO 8001 C C CHECK PARAMETERS C IF((ANGLE .LT. 0.0) .OR. (ANGLE .GT. 359.9))GOTO 8001 TVEL=ABS(VEL) IF((TVEL .EQ. 1.5) .OR. (TVEL .EQ. 5.0) .OR. (TVEL .EQ. 30.0) 1.OR. (TVEL .EQ. 200.0) .OR. (TVEL .EQ. 0.0))GOTO 20 GOTO 8001 20 IERMS=2 C C MAKE ANGLE A BCD NUMBER C IX1=(ANGLE/100.0) IAX1=IX1*2**12 C IX2=(ANGLE-(IX1*100))/10.0 IAX2=IX2*2**8 C IX3=ANGLE-((IX1*100)+(IX2*10)) IAX3=IX3*2**4 C IX4=(ANGLE*10.0)-((IX1*1000)+(IX2*100)+(IX3*10)) C IDATA(1)=IAX1+IAX2+IAX3+IX4 C C OUTPUT TO D/S C 10 IF(IUNIT .GT. IBUF(1))GOTO 500 ICNWD=100B+ILU1 100 CALL EXEC(100002B,ICNWD,IDATA,1,IDUMY,0) GOTO 8002 C C WAIT 10 MSEC C 8900 CALL EXEC(12+100000B,0,1,0,-1) GOTO 8002 C C READ BACK DATA C 8910 ICNWD=300B+ILU1 CALL EXEC(100001B,ICNWD,IDATA(2),1,IDUMY,0) GOTO 8002 C C CHECK IF DATA READ BACK IS OK C 8901 IF(IDATA(1) .NE. IDATA(2))GOTO 8002 C C IF VELOCITY >0 OUTPUT VELOCITY WORD TO D/S C IF(VEL .EQ. 0)GOTO 200 IF(VEL .LT. 0)IX1=0 IF(VEL .GT. 0)IX1=4B IF(TVEL .EQ. 1.5)IX2=40000B IF(TVEL .EQ. 5.0)IX2=40001B IF(TVEL .EQ. 30.0)IX2=40002B IF(TVEL .EQ. 200.0)IX2=40003B IDATA(2)=IX2+IX1 C ICNWD=100B+ILU1 CALL EXEC(100002B,ICNWD,IDATA(2),1,IDUMY,0) GOTO 8002 C C CHECK IF ANOTHER UNIT C 200 IF(IU .EQ. 1)GOTO 500 IUNIT=IUNIT+1 GOTO 10 C C EXIT C 500 IERMS=0 RETURN C C ERROR EXIT C 8002 IERMS=9 8001 IERMS(2)=5 IERMS(3)=2HGR IERMS(4)=2HTS IERMS(5)=2HT RETURN END C C**************************************** C SUBROUTINE GRTSP(IUNIT),09580-16010 REV.2001 791005 DIMENSION IERMS(5) DATA IERMS/10,5,2HGR,2HTS,2HP / DATA IDTN/39/ C C FIND STATION # AND LU # C IERMS=10 ISTN=ISN(DUMMY) ILU1=LUDV(ISTN,IDTN) IF(ILU1 .EQ. 0)GOTO 800 C C JUMP TO DEVICE SUBROUTINE C CALL XRTSP(ILU1,IERMS,IUNIT) IF(IERMS)800,20,800 20 RETURN C C ERROR ROUTINE C 800 CALL ERROR(IERMS,IERMS(2)) RETURN END C C**************************************** C SUBROUTINE XRTSP(ILU1,IERMS,IUNIT),09580-16010 REV.2001 +791005 DIMENSION IBUF(3),IDATA(2),IREG(2),IERMS(5) EQUIVALENCE (REG,IREG,IA),(IREG(2),IB) C C**************************************** C C GRTSP(U) C C WHERE C C U=UNIT NUMBER C C 0=ALL UNITS C 1=FIRST UNIT C 2=SECOND UNIT,ETC C C**************************************** C C INITILIZE C IDTN=39 IERMS=1 IU=1 IDATA(1)=100000B IF(IUNIT .EQ. 0)IU=0 IF(IUNIT .EQ. 0)IUNIT=1 C C RETRIEVE DATA FROM CONFIGURATION FILE C CALL TIM(IDTN,1,1,IBUF,1,N) IF(N .LT. 0)RETURN IERMS=2 C C OUTPUT TO D/S C 10 IF(IUNIT .GT. IBUF(1))GOTO 500 ICNWD=100B+ILU1 100 CALL EXEC(100002B,ICNWD,IDATA,1,IDUMY,0) GOTO 8002 C C CHECK IF ANOTHER UNIT C 200 IF(IU .EQ. 1)GOTO 500 IUNIT=IUNIT+1 GOTO 10 C C EXIT C 500 IERMS=0 RETURN C C ERROR EXIT C 8002 IERMS=9 8001 IERMS(2)=5 IERMS(3)=2HGR IERMS(4)=2HTS IERMS(5)=2HP RETURN END