                   Mandelbrot/Julia
                     Set Generator
            Operating and Reference Manual
                      Version 5.0

                     Installation

    The Mandelbrot/Julia Set Generator program 
requires an IBM compatible computer with at least 512K 
of memory, a VGA display and a Microsoft compatible 
mouse. The installation process is quite easy. 

    First, make a backup copy of your Mandelbrot/Julia 
Set Generator program disk. If necessary, consult your 
PC-DOS/MS-DOS manual for a description of the Diskcopy 
command. Save the original program disk in a safe 
place and use the copy as the working program disk. 

    Second, while it is possible to use the 
Mandelbrot/Julia Set Generator on a floppy disk 
system, a hard disk system is a necessity if you wish 
to store a number of image files. To install the 
Mandelbrot/Julia Set Generator on a hard disk use the 
following steps: 

    1. Insert the floppy disk in your computer in 
       drive A. (or B if necessary) 
    2. Type A: (or B:)
    3. Type INSTALL A C

    Any hard drive letters can be used, for example 
INSTALL B D will install the program from floppy drive 
B to hard drive D. The installation will create a 
directory called MAND5 on your hard drive and you will 
need to enter a CD\MAND5 to change to the 
Mandelbrot/Julia Set Generator directory before 
running the program. Once installed just type MAN to 
start the program. All the files for Mandelbrot/Julia 
Set Generator need to be in the same directory for the 
program to operate successfully. 

          Quick Start for Impatient New Users

    Type MAN to start the program. After the mouse 
cursor appears click it on the Load Image button at 
the left. When the window appears with the list of 
image file names, simply clicking on one of them will 
display the image using the current color mask. If the 
image file contains a specific color mask filename it 
will be automatically loaded prior to displaying the 
image. Most commands can be interrupted by a simple 
mouse click. 

    The zoom window feature is started by double 
clicking on the displayed image. Once the zoom window 
appears, with its crossed center lines, it can be 
moved by holding down the left mouse button, while the 
cursor is inside the zoom window, and positioning the 
window. The zoom window size can be increased or 
reduced by holding down the left mouse button and 
moving the mouse cursor horizontally while it is 
outside the zoom window. Once correctly positioned the 
mouse cursor should be clicked on the right gray 
panel, which will store the changed dimensions. The 
zoom window can be abandoned by clicking the mouse 
cursor on the left gray panel. Be careful not to drag 
the mouse cursor onto the gray panels while resizing. 
The Set Values button should be clicked on next, and 
the image file name changed. If this is not done the 
original image file will be erased. Clicking on the 
Make Image button will start the generation of the new 
zoomed image. 

        The Command Buttons and Their Function

    Set Values

    The Set Values command allows the user to set the 
initial parameters that will be used by the
Mandelbrot/Julia Set Generator to begin generating a 
new image. These values are also available for 
inspection when an image has been displayed. The 
values and their range are: 

    Item                             Range
-----------------------------------------------------
    X center value                   -10 to 10
    Y center value                   -10 to 10
    Magnification                    >0
    A value (if a Julia image)       -10 to 10
    B value (if a Julia image)       -10 to 10
    Dwell                            1 to 8191
    Image width in pixels            10 to 4800
    Image type [M J]                 M or J
    Full/Partial image [F P]         F or P
    Default color mask file          xxxxxxxx.MSK
    Display type [0 1]               For future use
    256 color palette number         For future use
    Image file name                  xxxxxxxx.MAN 
                                     or xxxxxxxx.MAR 

    To change a value simply click inside the 
rectangle where the value is displayed and then key in 
a new value or file name. File name extensions must be 
.MSK for color masks, .MAN for regular images and .MAR 
for those that are recursive. 

    The A and B values are only displayed with Julia 
images. If the recursive image generator is used the 
image width must be a member of the 2^n set, ie. 16, 
32, 64, 128 etc. The program maintains the 
Full/Partial image status and these values cannot be 
changed by the user. 

    Color Masks

    When the Color Masks command is chosen a popup 
window presents the four options: 

    Create/Display color mask
    Select color mask
    Select palette 
    QUIT 

    Clicking on the Create/Display color mask option 
allows the user to create, edit and save color masks. 

    Clicking on the Color mask file name box allows 
you to type in a file name. The file name must have 
the extension .MSK or you will not be able to select 
it later. Ranges of dwell values should be typed into 
the squares on the left. Just click on the square, 
type in a dwell value and <Enter>. The colors are 
selected by clicking on the desired color of the color 
wheel in the upper right and then clicking on the odd 
and even boxes at the right. The selected color is 
displayed between the circular menu and the color 
wheel. If the first line of the color mask reads: 

    0         9       [blue box]   [white box]

then dwell values from 0 to 9 will be colored blue if 
odd and white if even. If a solid color is desired the 
color boxes should be filled with the same color. The 
end of a color mask should be designated with a 
negative value entered into the first dwell box.  The 
default color mask on startup is M1.MSK and its values 
are: 

    Dwell Range     Odd color     Even color
-----------------------------------------------
    0     9         [blue box]    [white box]
    10    19        [red box]     [red box]
    20    510       [yellow box]  [yellow box]
    511   511       [black box]   [black box]
    -1

    In the case of M1.MSK, any dwell values larger 
than 511 will be colored black (color 0 in the default 
palette). 

    The circular menu at upper left has four options. 
Clicking on the up or down arrow jumps to the previous 
or next 16 color mask entries. A total of 256 entries 
can be placed in one color mask. The SAVE option 
stores the color mask currently displayed under the 
name specified in the Color mask file name box. The 
new color mask becomes the currently selected color 
mask. 

    Clicking on the Select color mask option presents 
the user with a large window and the names of the 
color masks that have been stored. Clicking on a color 
mask name will select and load that color mask. It 
then can be viewed by selecting the Create/Display 
color mask option. 

    Clicking on the Select palette option opens a 
window that displays the current VGA color palette of 
16 colors. Clicking on the Default box will load the 
default VGA color palette. Clicking on the arrows will 
select other prestored color palettes, up to number 
57. 

    The QUIT option returns the user to the main menu. 

    Make Image

    Selecting the Make Image command generates a 
Mandelbrot or Julia image based upon the parameters 
entered in the Set Values command. A warning is issued 
before the generation begins to allow the user to 
change the file name, as any existing file of this 
name will be erased. 

    A very simple way to generate images is first to 
use Load Image to display a previously generated 
image. Double clicking on the image will produce a 
zoom window overlaid on the display. Clicking and 
holding down the left mouse button allows the zoom 
window to be dragged about the image to an interesting 
portion of the image. The zoom window can be resized 
by dragging the mouse pointer to the left and right 
outside the zoom window. Once the zoom window has been 
positioned and sized, clicking on the gray panel at 
right will automatically store the new zoomed values 
into the Set Values area. Be careful not to drag the 
mouse cursor onto the gray panels while resizing. The 
user will probably wish to enter a new image file name 
using the Set Values command (this will prevent the 
original image file from being erased), and then 
generate a new image of the area defined by the zoom 
window with the Make Image command. While the zoom 
window is present the procedure can be cancelled by 
clicking on the right gray panel around the command 
buttons. The zoom window will only work on images that 
are 480 pixels wide, or less. 

    Load Image

    The Load Image command presents the user with a 
list of image file names that have been produced with 
the .MAN extension. Clicking on a file name will 
display the image with the current color mask if the 
selected image has no default color mask file name. A 
brief double tone is sounded if there is no default 
color mask file name. If a color mask name was 
included when the image was generated, this color mask 
will be loaded before the image is displayed. 
Partially generated images will automatically continue 
generation when displayed with this command. Once an 
image is displayed double clicking on the image will 
produce a zoom window as described under the Make 
Image command. 

    Make R Image

    The Make R Image command functions similarly to 
the Make Image command except a recursive procedure is 
used in place of the normal line by line generation. 
The image file should be given the .MAR extension so 
that it will be properly handled when using the Load R 
Image command. In some cases this recursive procedure 
will generate images faster that the normal method. 
Partially generated images cannot be displayed with 
generation automatically continuing as is the case 
with the normal Load Image command. Image files are 
generally larger with the recursive procedure. 

    Load R Image

    The Load R Image command displays a recursive 
image previously generated with a .MAR extension in 
the file name. A list of such files is presented and 
the selected image is clicked on. Partially generated 
images will not be automatically continued as with the 
Load Image command. 

    3-D Image

    The 3-D Image command displays an image generated 
with the Make Image command in a pseudo 3-D style. The 
display algorithm is a simple one, but very slow. VGA 
displays have limitations when displaying 3-D 
Mandelbrot images. Best results occur with color masks 
that contain multiple colors and have the dwell ranges 
broken into many small steps. Large values for the 
maximum dwell may result in the top of the image being 
lost. Partially generated images will not be 
automatically continued as with the Load Image 
command. 

    Plot Dwell

    The Plot Dwell command reads all the dwell values 
of an image stored with the .MAN extension and sums 
them. The sums are then plotted with the current color 
mask used for each dwell value plotted. Only dwell 
values of 2,400 or less will be plotted. These plots 
give an indication of how many points in the image 
have the various dwell values and can be useful in 
constructing a color mask that will display the image 
to best advantage. 

    Make PCX

    The Make PCX command allows the user to select an 
image file stored with the .MAN extension and create a 
PCX image file. A 16 color PCX file using the default 
VGA color palette can be chosen or several 256 color 
PCX formats are available. Click on one of the small 
boxes to select what type of PCX file you desire. The 
color sequence of each of the 256 color formats is 
displayed. The first example has magenta blending into 
red for dwell values from 0 to 64, from red to yellow 
for dwells from 64 to 128, etc. The PCX image file 
format allows users to import Mandelbrot and Julia 
image files into other software such as desktop 
publishing programs and paint programs. PCX files can 
also be used for Windows wallpaper. 

    Print Image

    The Print Image command presents the user with 
nine different printer types that are supported, or 
the command can be quit. 

    Epson 9 pin
    Epson 24 pin
    IBM 9 pin
    IBM 24 pin
    LaserJet
    DeskJet 500 B/W
    Epson DM Color
    DeskJet 500 C
    PaintJet
    QUIT

    The 9 pin printers will output at 120x144 dpi, the 
24 pin at 180x180 dpi, the Laserjet, Deskjet 500 B/W 
and Color at 150x150 dpi and the Epson DM Color and 
Paintjet at 90x90 dpi. Be patient, the print drivers 
do take time in exchange for attractive output. Color 
is the slowest. Black and white images will be 
dithered. QUIT returns the user to the main menu. 

    The Print Image command is basically for quick 
hardcopy. If you wish to print museum quality prints 
try a DeskJet 500 series printer. Create your image 
and then make a PCX file using one of the 256 color 
formats. Next, load this PCX file into the Paintbrush 
program that comes with Windows. This is usually found 
in the Accessories window. Next print the image from 
Paintbrush. You will need a 256 color display to do 
this and the Windows print driver that came with the 
DeskJet printer. Most IBM PC's and clones being sold 
today come with a 256 color display. The DeskJet will 
print your image with a superb color balance at just 
under 100 dpi. Try an image width of about 750 pixels 
to fill out the 8-1/2 inch page. I've used this method 
with a Hewlett-Packard DesignJet 650C and 36 inch wide 
paper with images 3300 pixels wide to produce colored 
output that is truly magnificent. If your printer is 
not supported this method can also be used to print 
your images. The only thing you will need is the 
Windows print driver that came with your printer.

    Remember, images my be created which are much 
wider than your screen. The upper left corner of your 
image will be the only area visible. To see the entire 
image, create a 256 color PCX file and use any paint 
program that can read 256 color images. These can be 
very attractive. 

    Help File
  
    The Help File command displays the file you are 
currently reading. Clicking on the arrows to the right 
displays the next or previous page. 

    Quit MAND50

    The Quit MAND50 command returns the user to the 
DOS prompt. 

                 Image File Structure

    Each image file created by the Mandelbrot/Julia 
Set Generator begins with a 150 byte header. 

Byte  Item       Size           Description
------------------------------------------------------
0     x           8 byte double  x center point
8     y           8 byte double  y center point
16    mag         8 byte double  magnification
24    a           8 byte double  a for Julia sets
32    b           8 byte double  b for Julia sets
40    maxdwell    unsigned int   maximum dwell
42    width       unsigned int   image width in pixels
44    mj[2]       char           M/J, image type
46    partial[2]  char           F/P, full/partial
48    mask[32]    char           color mask file name
80    display     integer        display (not used)
82    pal         integer        palette (not used)
84    name[50]    char           signature
134   fill[16]    char           filler

    All char strings are terminated with a hexadecimal 
00 byte. 

    The dwell data follows the header. It should be 
noted that this is not a true image file, rather the 
dwell values themselves are stored. This allows users 
to color the image with a large variety of color 
masks. Storing an image file might be simpler but for 
every different color mask a new image file would have 
to be created. 

    The dwell data is stored as a series of two byte 
unsigned integers. Each unsigned integer contains the 
dwell value and a run length corresponding to a string 
of identical dwell values. The number of bits required 
to hold the maximum dwell is first obtained. If the 
maximum dwell is 511, then 9 bits are required, 1023 
would require 10 bits, etc. Using 1023 for the maximum 
dwell as an example, the right most 10 bits of the 16 
bit integer represents the dwell value and the 6 left 
most bits contain the run length. As a run length of 
zero is not very useful, this value is always 
incremented by one such that a run length of zero 
equals 1, 1 is 2, etc. Given a maximum dwell of 1023 
the following 16 bit unsigned integer represents a 
dwell of 1000 and a run length of 32. 

                   011111 1111101000
                       7FE8 hex

    When an image is being displayed and the unsigned 
integer above is read, a line of 32 pixels will be 
drawn using the appropriate color from the active 
color mask for dwell value 1000. 

    Each line of a display is encoded with no 
wraparound. This means that each line will end with 
the display of an encoded unsigned integer and no 
extra pixels of the same dwell will be added for the 
beginning of the next line even if there is room in 
the run length. 

    It should be noted that the maximum run length 
that can be stored varies with the maximum dwell 
chosen. Files with a maximum dwell of 1023 will have a 
maximum run length of 64, those with maximum dwells of 
8191 will only store 16. This does not limit a run 
length because if it exceeds the space available in a 
single unsigned integer it simply creates additional 
ones until the run of dwells has been stored. For this 
reason images with high maximum dwell values are often 
large in size. This method of file compression strikes 
a good balance between file size and speed when 
displaying an image. 

         The Mathematics of the Mandelbrot Set

    The Mandelbrot set is computed by operating on a 
fairly simple equation that contains complex numbers 
of the form 

              x + yi where  i = sqrt(-1)

The Mandelbrot equation is

                     z <- z^2 + c

where

               z = x + yi and c = a + bi

substituting these values into z^2 + c we have

                  (x + yi)^2 + a + bi

               x^2 + 2xyi - y^2 + a + bi

separating the real and imaginary parts of z gives

                  x <- x^2 - y^2 + a

                     y <- 2xy + b

    To determine whether a point (a,b) in the complex 
plane is a member of the Mandelbrot set, the real and 
imaginary parts of the equation are iterated. The x 
and y values are first initialized to zero. The 
constants a and b, the point in the plane, are then 
substituted into the equations giving 

                   x <- a and y <- b

for the first iteration.

    The two new values for x and y, along with the 
constants a and b, are now substituted into the 
equations again. This procedure (iteration) continues 
until the absolute value of x + yi > 2, ie. sqrt(x^2 + 
^y2) > 2. For those cases where this value never 
exceeds 2, the maximum number of iterations is preset. 
A value of about 500 is usually adequate, although 
this value is raised to several thousand when smaller 
details at high magnification are examined. The number 
of times the equations are iterated before the value 
of sqrt(x^2 + y^2) > 2 is called the dwell. Those 
initial points (a,b) where the dwell is infinite, or 
for more practical purposes attains the preset 
maximum, are members of the Mandelbrot set. Another 
way to describe this is to say that for points within 
the Mandelbrot set, the sequence of points produced by 
this iteration procedure is bounded inside a circle of 
radius 2, where points outside the set are unbounded 
and continue to grow and escape the circle. 

    The Mandelbrot set exists entirely within the area 
defined by 

            -2 <= a <= 2  and  -2 <= b <= 2

in the complex plane. A Mandelbrot image is produced 
by taking this area of the complex plane and dividing 
it into a array of 1200 x 1200 points. Each one of 
these points becomes the constant (a,b). The iteration 
procedure previously described is used on each of the 
1.44 million points, coloring each point in the 
Mandelbrot set black and all others white. The 
algorithm is: 

    maxcount <- 1000
    for b <- 2 to -2 stepdown 1/300
    for a <- -2 to 2 step 1/300
      x <- 0
      y <- 0
      count <- 0
      while sqrt(x^2 + y^2) < 2 and count < maxcount
        x <- x^2 - y^2 + a
        y <- 2*x*y + b
        count <- count + 1
      end while
      if count = maxcount plot(a,b,BLACK)
        else plot(a,b,WHITE)
    end for a
    end for b

    While the algorithm is not that complex, the 
amount of computation is enormous. Depending on 
programming language and style, the inner loop has at 
least four multiplications and a square root. For a 
point in the Mandelbrot set this loop is executed 1000 
times and there are over a million points to check! It 
is not surprising that the Mandelbrot set was not 
discovered until the age of computers. 

    In the Mandelbrot/Julia Set Generator program some 
additional refinements are made to standardize the 
initial parameters used to generate a specific image. 
Instead of defining the range of (a,b) values used for 
an area, a center point and a magnification are 
specified. The center point is simply a chosen (a,b) 
value. The length of a side which encloses the area of 
interest is defined as 

                side = 2/magnification

The following values can now be defined

             a_minimum = a_center - side/2

             b_maximum = b_center + side/2

                   gap = side/width

where width is defined as the number of points that 
make up a side (or on a computer screen the number of 
pixels), and the gap being the distance between each 
point. 

    The Mandelbrot set is an interesting image, a sort 
of cardioid with a spiked head attached at the left. 
The boundary of the set sprouts self similar buds of 
different sizes. Vastly more interesting images are 
forthcoming when we examine the boundary of the 
Mandelbrot set under higher magnification. To obtain 
higher magnifications we simply divide a smaller area 
into our array of points. For example, the area 
defined by the center point (-0.77,0.17) and 
magnification 20 is located in the upper valley 
between the head and the cardioid shaped body. 

    If we continue with these magnifications, very 
different and interesting images can be produced by 
coloring the dwell values in specific ways. Along with 
coloring points in the Mandelbrot set black, we can 
assign different colors to other points based upon 
their dwell value. For example, we might assign yellow 
to dwell values in the range 400 to 499, red to 300 to 
399, etc. When we do this a great deal more detail 
begins to appear in the boundary regions. This region 
of interest exists only in a narrow band just outside 
the Mandelbrot set. The skill one uses in choosing the 
various colors for differing dwell values is very 
important when attempting to produce an attractive 
image. 

    The Mandelbrot/Julia Set Generator uses a file 
called a color mask to store the colors used in 
painting the various dwell values in an image. This 
technique allows many different coloring schemes for a 
single image. Consider the following color mask: 

    Dwell Range    Odd Color   Even Color
----------------------------------------------
    0     9        blue        white
    10    19       red         red
    20    510      yellow      yellow
    511   511      black       black
    -1

    Dwell values from 0 to 9 will be colored blue if 
they are odd numbers and white if they are even. 
Values from 10 to 19 will be colored red, 20 to 510 
yellow and 511 will be colored black. Choosing the 
maximum dwell value to be in the set 2n - 1 maximizes 
the file compression method the Mandelbrot/Julia Set 
Generator program uses. 

    Generating Julia set images is a similar process. 
The point (a,b) is chosen from one of the interesting 
boundary areas of the Mandelbrot set. This value is 
held constant and the (x,y) value is initialized to 
the various points in the complex plane defined by 

            -2 <= x <= 2  and  -2 <= y <= 2

    This would be a magnification of 0.5, actually the 
Julia image can often be enlarged slightly to fill the 
screen and magnifications from 0.6 to 0.9 are often 
used. 

    The algorithm for generating a Julia set is

    maxcount <- 1000
    a <- constant
    b <- constant
    for y <- 2 to -2 stepdown 1/300
    for x <- -2 to 2 step 1/300
      count <- 00
      while sqrt(x^2 + y^2) < 2 and count < maxcount
        x <- x^2 - y^2 + a
        y <- 2*x*y + b
        count <- count + 1
      end while
      if count = maxcount plot(a,b,BLACK)
          else plot(a,b,WHITE)
    end for x
    end for y

                  Selected References

Barnsley, Michael, Fractals Everywhere. San Diego, CA: 
    Academic Press, 1988. 

Briggs, John and Peat, F. David Turbulent Mirror. New 
    York: Harper & Row, 1989. 

Devaney, Robert L.Choas, Fractals, and Dynamics. Menlo 
    Park, CA:Addison-Wesley, 1990. 

Devaney, Robert L. and Keen, Linda, Editors. Chaos and 
    Fractals, The Mathematics Behind the Computer 
    Graphics: Proceedings of Symposia in Applied 
    Mathematics.Providence, RI: American Mathematical 
    Society, 1989. 

Gleick, James Chaos, Making a New Science. New York: 
    Viking Penguin, Inc., 1987. 

Mandelbrot, Benoit B. The Fractal Geometry of Nature. 
    New York: W. H. Freeman and Co., 1983. 

Peitgen, Heinz-Otto and Richter, Peter H. The Beauty 
    of Fractals, Images of Complex Dynamical Systems. 
    Berlin: Springer-Verlag, 1986. 

Peitgen, Heinz-Otto and Saupe, Dietmar, Editors. The 
    Science of Fractal Images. New York: Springer-
    Verlag, 1988. 

Pietgen, Heinz-Otto, Jurgens, Hartmut and Saupe, 
    Dietmar Fractals for the Classroom, (Volumes I & 
    II), New York: Springer-Verlag, 1992. (There is a 
    single volume work entitled Chaos and Fractals, 
    New Frontiers of Science, which is essentially the 
    same work as the two volume set above.) 

Pickover, Clifford A. Computers Pattern Chaos and 
    Beauty: Graphics from an Unseen World.New York: 
    St. Martin's Press, 1990. 

Pickover, Clifford A. Computers and the Imagination: 
    Visual Adventures Beyond the Edge. New York: St. 
    Martin's Press, 1991. 

Pickover, Clifford A. Mazes for the Mind. New York: 
    St. Martins Press, 1992. 

Schroeder, Manfred Fractals, Chaos, Power Laws, 
    Minutes from an Infinite Paradise.New York: W.H. 
    Freeman and Co., 1991. 

Stevens, Roger T. Fractal Programing in C. Redwood 
    City, CA: M&T Publishing, Inc., 1989. 

Stevens, Roger T. Advanced Fractal Programing in C. 
    Redwood City, CA: M&T Publishing, Inc., 1990. 

Stewart, Ian Does God Play Dice? The Mathematics of 
    Chaos. Oxford: Basil Blackwell, 1989. 

Stewart, Ian and Golubitsky, Martin Fearful Symmetry, 
    Is God a Geometer? Oxford: Blackwell, 1992. 

                     Registration

    You may freely copy and distribute this shareware 
Version 5.0 of the Mandelbrot/Julia Set Generator. 
Shareware users who find the Mandelbrot/Julia Set 
Generator useful should support the author and 
register their copy. The form found below should be 
used for registration. Registered users will receive a 
copy of Version 5.1 of the Mandelbrot/Julia Set 
Generator with additional images and a printed manual. 
Registered users will also receive support, by letter 
mail or e-mail, for six months from the date of 
registration. 

    The Mandelbrot/Julia Set Generator is a "shareware 
program" and is provided at no charge to the user for 
evaluation. Vendors who distribute shareware programs 
may charge a small fee for an evaluation copy. Feel 
free to share this program with your friends, but 
please do not give it away altered or as part of 
another system. The essence of "user-supported" 
software is to provide personal computer users with 
quality software without high prices, and yet to 
provide incentive for programmers to continue to 
develop new products.  If you find this program useful 
and find that you are using the Mandelbrot/Julia Set 
Generator and continue to use the Mandelbrot/Julia Set 
Generator after a reasonable trial period, you must 
make a registration payment of $25. plus $2. shipping 
to Theron Wierenga. The registration fee will license 
one copy for use on any one computer at any one time. 
You must treat this registered software just like a 
book. An example is that this registered software may 
be used by any number of people and may be freely 
moved from one computer location to another, so long 
as there is no possibility of it being used at one 
location while it's being used at another. Just as a 
book cannot be read by two different persons at the 
same time. 

    The registration fee is $25. ($35. outside the 
United States.) Please include $2.00 for shipping and 
handling. A complete listing of the program, which is 
written in Borland C/C++, is also available for an 
additional $20.00. All prices are in U.S. dollars. 

   Checks should be made out to:

   Theron Wierenga, P.O. Box 595, Muskegon, MI 49443

                  Ombudsman Statement

    This program is produced by a member of the 
Association of Shareware Professionals (ASP). The ASP 
wants to make sure that the shareware principle works 
for you. If you are unable to resolve a shareware-
related problem with an ASP member by contacting the 
member directly, ASP may be able to help. The ASP 
Ombudsman can help you resolve a dispute or problem 
with an ASP member, but does not provide technical 
support for members' products. Please write to the ASP 
Ombudsman at 545 Grover Road, Muskegon, MI 49442-9427 
USA, FAX 616-788-2765 or send a CompuServe message via 
CompuServe Mail to ASP Ombudsman 70007,3536. 

                     User Support

    Registered users will receive support, by letter 
mail or e-mail, for six months from the date of 
registration on any problems they encounter. The 
author is available by e-mail on the internet at 
mups_wiereng@wmich.edu. 

                   Registration Form

      Mandelbrot/Julia Set Generator, Version 5.0

  Name______________________________________________

  Address___________________________________________
             
  City_________________________State_____Zip________

  Disk size:   5 1/4 in._______     3 1/2 in._______

  Registration fee . . . . . . . . $20.00 __________
  Registration fee (Outside USA) .  30.00 __________
  Borland C/C++ program code . . .  20.00 __________
  Shipping . . . . . . . . . . . .        ___2.00___

  Total enclosed . . . . . . . . .        __________
           (All prices are in U.S. dollars.)

                  Method of payment: 
  Check or MO_______ MasterCard________ Visa________

  Account number__________________ Expir. date______

  Signature (necessary)_____________________________

  How did you receive your copy of this program?

  __________________________________________________

  Suggested improvements____________________________

  __________________________________________________

  __________________________________________________

  __________________________________________________

    The Mandelbrot/Julia Set Generator, Version 5.0

               is a software product of

   Theron Wierenga, P.O. Box 595, Muskegon, MI 49443

