; TheChange@yahoo.com

Const ScreenSizeX = 320
Const ScreenSizeY = 240

Const Offset           = 6400                     ; Nicely set wide spread and starting offset
Const Initial          = 300000000                ; Initial divisor value
Const Minimum#         = 0.000002                 ; Ultimate target value after dissolving
Const DecrementFactor# = 1.01                     ; Decrement speed factor of progress

Const FrameRate  = 30                             ; Minimal program update frequency
Const FrameDelay = 1000 / FrameRate               ; Minimum amount of millisecs for each frame

Graphics ScreenSizeX , ScreenSizeY , 32           ; 32 bits for high detail color flow

OffsetX = ScreenSizeX / 2                         ; Middle of the screen is middle of equation
OffsetY = ScreenSizeY / 2
RangeX# = ScreenSizeX / 2                         ; Wide screen setup
RangeY# = ScreenSizeY / 3
Divisor# = Initial                                ; Divisor is main factor of progress

SetBuffer FrontBuffer()
LockBuffer
Repeat

  starttime = MilliSecs ()

  ; Decrease value of divisor
  If divisor > minimum
    divisor = divisor / decrementfactor
  Else
    Exit
  End If

  ; Draw the equation
  For x = -rangex To rangex
    For y = -rangey To rangey
      finalx = offsetx + x
      finaly = offsety + y
      ; Range checking
      If finalx >= 0
        If finalx < ScreenSizeX
          If finaly >= 0
            If finaly < ScreenSizeY
              ; Magical formula = axis1 * axis2
              WritePixelFast finalx , finaly , (x*y*Offset)/divisor
            End If
          End If
        End If
      End If
    Next
  Next

  ; Slow the program down if this frame was updated too fast
  endtime = MilliSecs ()
  frametime = endtime - starttime 
  If frametime < framedelay
    framewait = framedelay - frametime
    Delay framewait
  End If

Until KeyHit ( 1 )
UnlockBuffer

End

    Source: geocities.com/thechange/axialproduct

               ( geocities.com/thechange)