( DACtoADC)

ADCsetup_general

1024 ARRAY inputs    ( for 1024 points from ADC)

100 CONSTANT X0
100 CONSTANT Y0      ( display origin)
8 VARIABLE xscale
2 VARIABLE yscale
256 VARIABLE nADCpts
0 VARIABLE ADCchan

( Using independent signal to ADC : --------------------------)
: ADCinput                    ( x...)
   ADCchan @ read_adc         ( x,y...)
   SWAP inputs ! ;

: dsp_input  
   nADCpts @ 0 DO I DUP inputs @          ( x,y...)
                yscale @ * Y0 +           ( x,yscr...)
                SWAP xscale @ * X0 + SWAP ( xscr,yscr...)
                POINT 
               LOOP ;

: sgen NOWIMPS
     nADCpts @ 0 DO I ADCinput LOOP dsp_input 100 waitcsec ;
: nsgen 0 DO sgen LOOP ;

( Using DAC as programmable signal generator for ADC: ----------)
: toADCetc              ( x...)
   0 read_adc           ( x,y...)
   2DUP SWAP 4/ inputs !   ( x,y...)
   2* Y0 + SWAP 2/ X0 + SWAP  ( screen coords)
   POINT ;

: dsp_input2  
   1024 1 DO I DUP inputs @    
           2* Y0 + SWAP 2* X0 + SWAP  ( screen coords)
           I 1- DUP inputs @    
           2* Y0 + SWAP 2* X0 + SWAP  ( screen coords)
           LINE ( KEY DROP)
          LOOP ;  

: scope_lin NOWIMPS
   0 TIME=
   4096 0 DO I DUP 0 DAC toADCetc 4 +LOOP 
   TIME ." csec= " .  ( 6 csec = 17,066/sec - CDIV=256)
   KEY DROP WIMPS ;   ( 3 csec = 34,132/sec - CDIV=32)
  
: calc_sin   FINT Pi F* 512 FINT F/ FSIN        1024 FINT F* FIX  2048 + ;
: calc_sinsq FINT Pi F* 512 FINT F/ FSIN DUP F* 1024 FINT F* FIX  2048 + ;
: calc_cos   FINT Pi F* 512 FINT F/ FCOS        1024 FINT F* FIX  2048 + ;
: calc_cossq FINT Pi F* 512 FINT F/ FCOS DUP F* 1024 FINT F* FIX  2048 + ;

: scope_sine  NOWIMPS
   ( 0 TIME=)
   4096 0 DO I DUP calc_sin 0 DAC toADCetc 4 +LOOP 
   ( TIME ." csec= " . ) ( 10 csec = 10,240/sec)
   KEY DROP WIMPS ;

: scope_cos  NOWIMPS
   0 TIME=
   4096 0 DO I DUP calc_cos 0 DAC toADCetc 4 +LOOP 
   TIME ." csec= " .  ( 10 csec = 10,240/sec) ( 7csec for CDIV=64)
   KEY DROP WIMPS ;

: scope_delta  NOWIMPS
   0 TIME=
   4096 0 DO I DUP 2048 = 0= IF 0 ELSE I ENDIF 0 DAC toADCetc 4 +LOOP 
   TIME ." csec= " .  ( 6 csec = 17,066/sec)  ( 3csec for CDIV=64)
   KEY DROP WIMPS ;

: scope_sinsq NOWIMPS
   0 TIME=
   4096 0 DO I DUP calc_sinsq  0 DAC  toADCetc 4 +LOOP 
   4096 0 DO I DUP calc_sin  0 DAC toADCetc 4 +LOOP 
   TIME ." csec= " .  ( 10 csec = 10,240/sec)
   KEY DROP WIMPS ;

: scope_cossq NOWIMPS
   0 TIME=
   4096 0 DO I DUP calc_cossq  0 DAC toADCetc 4 +LOOP 
   TIME ." csec= " .  ( 10 csec = 10,240/sec)
   KEY DROP WIMPS ;

: scope_s2c2  NOWIMPS
   0 TIME=
   4096 0 DO I DUP calc_sinsq  I calc_cossq + 0 DAC toADCetc 4 +LOOP 
   TIME ." csec= " .  ( 10 csec = 10,240/sec)
   KEY DROP WIMPS ;

: scope_step  NOWIMPS
   0 TIME=
   1024 0 DO 2048 0 DAC I toADCetc 4 +LOOP
   4096 1024 DO 0 0 DAC I toADCetc 4 +LOOP
   TIME ." csec= " .      ( 3csec=34,133/sec for CDIV=64)
   dsp_input2 
   KEY DROP WIMPS ;

: scope_nowt  ( speed check - no calcs)
   0 TIME=
   4096 0 DO ( I DUP 0 DAC) 0 read_adc  DROP LOOP 
   TIME ." csec= " .  ( 11 csec = 37,236/sec - CDIV=256)
   KEY DROP  ;        (  7        58,514/sec        128)
                      (  5        81,920             64)
                      (  4       102,400             32)



     




