Mandelbrot set

You are encouraged to solve this task according to the task description, using any language you may know.


Task

Generate and draw the Mandelbrot set.



Note that there are many algorithms to draw Mandelbrot set and there are many functions which generate it .




con
  _clkmode = xtal1+pll16x
  _clkfreq = 80_000_000
 
  xmin=-8601    ' int(-2.1*4096)
  xmax=2867     ' int( 0.7*4096)
 
  ymin=-4915    ' int(-1.2*4096)
  ymax=4915     ' int( 1.2*4096)
 
  maxiter=25
 
obj
  ser : "FullDuplexSerial"
 
pub main | c,cx,cy,dx,dy,x,y,x2,y2,iter
 
  ser.start(31, 30, 0, 115200)
 
  dx:=(xmax-xmin)/79
  dy:=(ymax-ymin)/24
 
  cy:=ymin
  repeat while cy=<ymax
    cx:=xmin
    repeat while cx=<xmax
      x:=0
      y:=0
      x2:=0
      y2:=0
      iter:=0
      repeat while iter=<maxiter and x2+y2=<16384
        y:=((x*y)~>11)+cy
        x:=x2-y2+cx
        iter+=1
        x2:=(x*x)~>12
        y2:=(y*y)~>12
      cx+=dx
      ser.tx(iter+32)
    cy+=dy
    ser.str(string(13,10))
 
  waitcnt(_clkfreq+cnt)
  ser.stop