( FFT_plot)

: max_wvf  -10000 FINT npts @ 0 DO I rd_waveform ROT SWAP FABS FMAX SWAP FABS FMAX LOOP ymax ! ;
: ymag  Y_window FINT ymax @ F/ ;

: nxscale ( I ...)  ( adjust x scale for npts value)
  512 npts @ */ 1 MAX ;

: doplot                 ( val,xscr0,yscr0 ...)
   ROT                   ( xscr0,yscr0,yval ...)
   SWAP DUP FLOAT        ( xscr0,yval,yscr0,yscr0f .. .)
   ROT F+ FIX            ( xscr0,yscr0,yscr ...)
   3 PICK SWAP           ( xscr0,yscr0,xscr0,yscr ...)
   LINE ;

: plot_real  max_wvf 
     npts @ 0 DO 
      I rd_waveform DROP ymag F* I nxscale ( 10 *) X0 + Y4 doplot
     LOOP  ;

: plot->f(x) max_wvf 255 0 0 use_colour
      npts @ 0 DO
       I rd_waveform DROP ymag F* I nxscale ( 10 *) X0 + Y1 doplot
      LOOP  ;

( now for complex array Cn)
: plot_complex max_wvf
    npts @ 0 DO  I rd_waveform ymag                     ( a,b,scaling factor ...)
                 DUP >R F* SWAP R> F* SWAP        ( a,b ...) ( scaled for window)
                 I nxscale ( 10 *) X0 +                      ( a,b,xscr0 ...)
                 2DUP Y2 doplot                   ( a,b,xscr0 ...)
                 SWAP DROP                        ( a,xscr0 .....)
                 Y3 doplot
               LOOP ;

: plot_all  plot_real plot_complex plot->f(x) ;
