                        MANDFLY 0.9b

PROJECTNAME:

Visual and theorical analysis over the Mandelbrot Fractal Order.

PROJECTMANAGER:

Ola Andersson, Vintervgen 7, S-97441 Lule, (Fax) +046-0920-211919.
email:  md94-pan@kth.nada.se

    DATE: 1996.01.14    -   10:50
  STATUS: ver 0.9b, project under construction.

This is a finalexam project wich should be done before MARCH 1996.
The project is still under construction and it includes
source files to all my sample programs and project documents.

I have included all the source code but most of it is
half-done, wich means that you may be able to run it (may_be)
and test some of the functions but probably it will end up with
a computer in "systemlocked" mode (use the powerswitch to reboot
the system) if you are not running under a protected mode operative
system wich is able to run MS-DOS/INTEL 386+ code on your computer.
ex: OS/2, WIN95, LINUX (emulator), WIN-NT....

The directories ending with ".asm" includes fully standalone programs
which will run under any OS using IAPX386 enviroment + VGAcompatible
graphics card with only a minor changes.

The directories ending with ".C" includes C programs for generating
fractalenviroment. The mandelgenerator is cause of speed-purpose
hardcoded in assembler, but can easily be converted to C-code.
The Graphics routines are of course also made in standalone
routines like: pp13(x,y,c) in pure assembler (or inline). These could be
converted or transformed to other graphic systems.

I must state that my first intension was to make a Mandelzoom in realtime
that would be able "fly" on a 386/16Mhz (because I owe one).
I have after months of optimizing and fractal research
realized that only a Intel Pentium 90Mhz+ will perform the
calculatings fast enough, you must realize that a 320*200 MSET took 20hours 1989
(OK: I admit, based on using a basic algorithm on 8088).

(mandfly.09b directory)
This Program will under a 90Mhz pentium make 320*200*256c realtime zoom
in about 5 frames in a second. This looks amazingly nice using the right
palette compotions. In RLF a 640*480*256c would look outstanding. But this
will only be able on precalculated frames saved as a ".fly" file.
(Note This is NOT possible on this version)

The "*.fly" are in this version only saved as pure bitmaps beginning
with 2 bytes of bitmap-xlength, 2 bytes of bitmap-ylength and 2 bytes of
number of steps. Soon I will add a packbit compression algorithm so that
the size of the files can be decreased.

Fractint is a well-known freeware program for generating fractal images of
any kind. I have taken much of my inspiration from Fractint, but they haven't
yet implemented a zooming function. You could make it generate hundreds of .Gif
images and then use a program to show them as video, I actually made one and Im
including it just for fun (thou the Gif decoding is far to slow for realtime
zooming).

CalcLine() is a modified version of fractints pixel_by_pixel mandelbrot generator
and have many similarities, the periodic checking routine made at first no
sense to me so I wrote my own after alot of "brainstorming" (check the
mandel6.bas qbasic file for how the periodic in the M-set is built).
I the one I use could even be faster if modified a bit.

At last I must mention that the menu.c, menu.h was my first intension of
making a menubased system, so alot of what you see there is hacked crap
with almost no errorchecking and just alot of dirty use of the non-portable
borland library, skip this file and alter a little bit in qmandel.c and
it is portable to any intel 80x86 system (ok, some inline asm statements has to
be moved or altered).

Possible improvements:
    More Safe/Improved File Management.
    Mouse handling for zooming.
    Floating point when integershifting is accurate.
    A bit more structured code for expansion.
    A great deal of videomodes (I've been thinking about the XMODE lib.)
    Better use of memory in computer (Thought of maybe using
        Fx_Vmm but couldn't get it to work properly (Qemm 7.5!)).
    A packbit or other fast compression algortihm for use when restoreing
        from disk. (maybe ".fli", ".flc" ?).
    Computer recognizing on startup. (if you have a <= 286 this program could
        do BAD things to your computer, probably hang your system).
    A much more accurate/faster/better/outstanding/.. zoom algorithm (this one
        is a hackup to see if everything works (in theory).
    Take use of already calculated pixels (means like use zoom function on all
        points at the previous frame and use em, calculate the missing ones).
        This is what will be needed for a great improvement of speed.
    (Solid guessing algortihm), this is a maybe not so good improvement when
        I (or anybody) adds the "Take use of already...", but for the
        single frame calculatings, it is positive.
    A Windows (3.x/95) version, This code is quite easy to translate
        using Borlands WinAPI.

If you have read all this and looked throu the source code, you may want
to comment on alot of things, please do!. You have my email adress in the
beginning of this doc. If you want to add/alter something to the program
please send me the altered function, and I will if it is a more faster/better/
accurate/outstanding/.. solution use yours instead in the next version (this
means that I have to make a list with you as one of the authors).
I have already started with the "Take use of already ...", but a better zoom
function is a need, Do you have the theory or knowledge please mail me!
The current one is located in genmandz.c function gen_mandel_zoom() (I think!).
