MandelZoom v 1.0 : Nat Hilterbrand CSERVE 71350,646. The object/load form of this program is released to the public domain. It may be freely distributed and used by anyone, as long as they do not directly profit from it's use, and if this documentation is distributed crediting me as author (for reasons of vanity). Although I have tested the modules, (except the 68881 code) I do not warrant them in any way, and will not be responsible for any damages resulting from the use of them. Now, that we have that out of the way, on to the "documentation". This program is my implementation of the MandelZoom program discussed by A. K. Dewdney in his Computer Recreations article in the November 1987 issue of Scientific American magazine (volume 257 number 5). The basic purpose of the program is to allow the interested individuals to display upon the monitors of the Amiga, the Mandelbrot set. The user may display the entire set (the default action), or may "zoom" in on any portion that he or she wishes. The article mentions that the user should be able to enter a starting real and imaginary point and a display width, and view the result. I give that capability, plus several more. The best way to gain familiarity with this program and it's abilities is to "play with it". So, without any further verbage, here are the instructions. 1) Before "playing", you must select which version of the program you wish to use. I have included 4 versions, all of which were generated from the same source code. The difference is in how they handle floating point arithmetic. The version are: mz.m uses Amiga FFP library in "ROM" mz.ma uses Amiga MathIEEEDoubBas library mz.mx uses Manx IEEE math mz.m8 uses 68881 if you have one. THIS IS UNTESTED!!! The FFP will run faster, but will be less accurate. The IEEE versions are slower, but more accurate. Which you use will depend upon your needs. I no nothing of the 68881 version, but if some benevolent soul out there who has the coprocessor would let me know how this works, I would appreciate it. 2) To invoke the program, enter the name of the chosen module on the CLI command line, followed by arguments in C language format. Arguments used by the program are: r= specifies the Real value in the upper left hand corner of the screen. Default is -2.25. i= specifies the Imaginary value in the upper left hand corner of the screen. Default is -1.25. w= specifies the Width (on the real axis) of the picture. This value does NOT control the number of pixels used to implement the picture: the program always uses the full screen. m= specifies the Magnitude (distance from 0+0i) that a point must reach to be considered "out of bounds". Default is 2.00. n= specifies the Number of tries the program will make for a specified point to try to push the value 'out of bounds'. Default is 63. This value will always be rounded up to the nearest multiple of the number of colors used, minus 1. s= specifies the type of Screen that the program opens to draw in. Three values are allowed: s=l LowRes, 320x200, 32 colors s=h HiRes, 640x200, 16 colors s=i HiRes, 640x400, 16 colors, interlaced Default is s=l. c= specifies the Colors to use. Several values are valid. c= Uses the default colors I used during testing. c= Will generate a psuedo-random color scher will be repeated. c=filename Will read colors from the file specified. The file should have one line per color, for as many colors used (16 or 32). Each line should have a Red, a Green, and a Blue value seperated by spaces. Each value should be an integer from 0 to 15. For a medium Gray, for example, use 8 8 8 and for white use 15 15 15 and for purple use 15 0 15 The program will always print a list of the colors it is using to STDOUT. This list may be redirected to a file, and then re-read by the program, so if you capture the colors, and some random set of colors "tickles your fancy" as we say in Tennessee, you can reuse it over and over. 3) Once the program has begun to execute, you may control its operation in several ways. You will notice that the screen fills top to bottom, left to right. If you press any key on the keyboard, the program will stop the next time it reaches the bottom of the screen. The mouse is also used. You may define, with the mouse, an area to zoom. Just find an area you would like to see in more detail, press AND HOLD the left mousey button in one corner of the area, drag the pointer to the diagonally opposite corner, and release. As soon as the program reaches the bottom of the screen next, the screen will clear, and the program will begin to display your smaller area in more detail, just as if you had entered the points at start time with the r and i variables. The program will also write the new r, i, and w values it is using to STDOUT, so you may later invoke the program starting with this display. You may continue to "zoom" in for more detail as long as the accuracy of the floating point numbers holds up. You may also abort the drawing at anytime and redraw the previous picture by depressing the right (Menu) mousey button. This is not the best offering, I realize. I will continue to work on it, make it run in background, add menu support, Julia set generation, etc. Have fun, and EMAIL me if you have in questions/comments/etc. If you are not a Compuserve user, you may contact me via U.S. Snail at: P.O. Box 1601 Smyrna TN 37167-1601 By the way, another credit. This program was developed using the Manx Aztec C68 v3.4 on an Amiga 1000, 512k, two 3.5 inch floppies, AmigaDOS 1.2.