( FRamp_motor)

-1 DPL !

2 FINT VARIABLE sr%   ( =T1/T2, eg 2)
0.25 FLOAT VARIABLE mu

( #pulses...)
: ramp_motor
  DUP 2/                     ( N%,Z%...)  ( Z%=N%/2 integer...)
  SWAP                       ( Z%,N%...)
  0 DO                       ( Z%...)
    DUP DUP I -              ( Z%,Z%,k%-Z%...)  ( m%=k%-Z%)
CR DUP ." m%=" . KEY DROP
    ABS                      ( Z%,Z%,ABSm%...)
    SWAP -                   ( Z%,ABSm%-Z%...)
CR DUP ." ABS(m%)-Z%=" . KEY DROP
    FLOAT mu @ F*            ( Z%,mu*{ABS(m%)-Z%}...) 
CR DUP ." mu*{ABS(m%)-Z%}=" F. KEY DROP
    FEXP 1 FINT SWAP F-      ( Z%,1-EXP{}...)   ( f)
    sr% @ 1 FINT -           ( Z%,f,sr%-1...)
    F*                       ( Z%,f*{sr%-1}...)
    1 FINT +                 ( Z%,1+f*{sr%-1}...)
    dT @ FINT SWAP F/        ( Z%,T1/{1+f*{sr%-1}}...)
    FIX dT !                 ( Z%...)
dT @ CR ." T=" . KEY DROP
    ( motor drive word here for 1 pulse)
   LOOP DROP ;




