       DOUBLE PRECISION FUNCTION   FPULSE (V1,V2,TD,TR,TF,PW,PER)
C generates pulses with linear rise    and  fall:
C v1 : initial value
C v2 : pulse value
C TD : delay time
C TR : rise time
C TF : fall time
C PW : pulse width
C PER: period
       IMPLICIT double precision   (A-H,O-Z),  INTEGER  (I-N)
       COMMON /CNTRLS/ TIME ,SKIP(159)
       IF (TIME . LE. TD) then
          FPULSE = V1
          go to 999
       end if
       T=MOD((TIME -TD),PER)
       IF (T .LT. TR)  THEN
          VS=T/TR
          FPULSE=V1+(V2-V1)*VS
          go to 999
       END IF
       IF (T .LT. (TR+PW))   THEN
          FPULSE=V2
          go to 999
       END IF
       IF (T .LT. (TR+PW+TF))   THEN
          VC=(T-TR-PW)/TF
          FPULSE=V2+(V1-V2)*VC
          go to 999
       END IF
       FPULSE=V1
  999  RETURN
      END
