Lissajous (G65 with GOTO)

%
GOTO 500
 
O1000
  G00 X#<xvalue> Y[#<yvalue>+#<svalue>] Z#<zvalue>
  #<step> = 0
  O<loop> while [#<step> LE 360]
    #<x> = [#<avalue> * sin[#<uvalue> * #<step> + #<dvalue>]]
    #<y> = [#<bvalue> * cos[#<vvalue> * #<step> + #<evalue>]]
    G01 X[#<xvalue>+[#<svalue>*#<x>]] Y[#<xvalue>+[#<svalue>*#<y>]]
    #<step> = [#<step> + #<rvalue>]
  O<loop> endwhile
M99
 
N500
G65 P1000 X0 Y0 Z0 A1 B1 U1 V3 D0 E0 S100 R5
M2
%