program oscilloscope use genplotting implicit none real, dimension(4) :: frequences write (0, '(A)') "----[ genplotting oscilloscope ]----" call srand(time()) call genp_init (0, 'WS/oscilloscope.scratch') frequences(1) = 0.86 frequences(2) = 1.77 frequences(3) = 1.56 frequences(4) = 3.04 call do_oscilloscope(frequences, 1) call genp_end (0) contains ! --------------------------------------------------------- subroutine plot_axes(amp) real, intent(in) :: amp call genp_move(0.0, -amp) call genp_draw(0.0, amp, 7) call genp_move(-amp, 0.0) call genp_draw( amp, 0.0, 7) end subroutine ! --------------------------------------------------------- subroutine plot_a_trace(freq, phy, nbsteps, ypos) real, intent(in) :: freq, phy, ypos integer, intent(in) :: nbsteps integer idx real rstep, px, py logical firstdot firstdot = .true. do idx=0, nbsteps rstep = (real(idx)/real(nbsteps)) px = -10.0 + (20.0 * rstep) py = ypos + sin(15*(rstep+phy)*freq) if (firstdot) then call genp_move(px, py) ; firstdot = .false. else call genp_draw(px, py, 2) endif enddo end subroutine ! --------------------------------------------------------- subroutine do_oscilloscope(freqs, col) real, intent(in), dimension(4) :: freqs integer, intent(in) :: col call plot_a_trace(freqs(1), 0.2, 90, 6.66) call plot_a_trace(freqs(2), 1.0, 90, 3.33) call plot_a_trace(freqs(3), 2.6, 90, -3.33) call plot_a_trace(freqs(4), 3.9, 90, -6.66) call plot_axes(10.0) end subroutine ! --------------------------------------------------------- end program