home *** CD-ROM | disk | FTP | other *** search
/ RBBS in a Box Volume 1 #2 / RBBS_vol1_no2.iso / add2 / fractint.zip / FRACTINT.DOC next >
Text File  |  1989-04-09  |  53KB  |  922 lines

  1.  
  2.                *********   FRACTINT (Version 7.0)  **********
  3.  
  4.         Original Program (Versions 1.0 through 6.1) by Bert Tyler
  5.         Driving force behind version 7.0: Timothy Wegner
  6.  
  7.       +++++ Quick Documentation Format -- Features new to 7,0 +++++
  8.  
  9.       - Restore-From-Disk (from prior Save-To-Disk using version 7.0 or later)
  10.       - New Fractal types (Newton/Lambda/Mandelfp/Juliafp/Plasma/Lambdasine)
  11.       - Many new Color-Cycling options (for VGA Adapters only)
  12.       - New Periodicity Logic (courtesy of Mark Peterson)
  13.       - Initial Fractal displays recognize (and use) symmetry
  14.       - Solid-Guessing option (which is now the default)
  15.       - Context-Sensitive Help (press 'h' or '?' at any time)
  16.       - Customizable Video Mode Configuration file (FRACTINT.CFG)
  17.       - "Batch Mode" option (run from a .BAT file, no keyboard activity rqd)
  18.       - Improved Super-VGA Support (with direct video read/writes)
  19.       - New (non-standard) 360 x 480 x 256 color mode on a STANDARD IBM VGA!
  20.  
  21.                         +++ Features new to 6.1 +++
  22.  
  23.       - 32-bit Integer math is now emulated for non-386 processors
  24.       - Program name changed (from FRACT386) to reflect the above
  25.       - (and, of course, there are just a few more video modes)
  26.  
  27.                         +++ Features new to 5.x +++
  28.  
  29.       - Save-to-disk support  (using the 's' key)
  30.       - New!  Improved!  (and Incompatible!)  Optional Arguments Format
  31.       - "Correct" Initial Image Aspect Ratio
  32.       - Still more video modes
  33.  
  34.                         +++ Features new to 4.x +++
  35.  
  36.       - Mouse Support (by Mike Kaufman)  (See the Mouse Notes, below)
  37.       - Dynamic Iteration Limits         ('<' and '>' keys)
  38.       - Color-Cycling                    ('+' and '-' keys)
  39.       - Dual-Pass Mode                   ('1' and '2' keys)
  40.       - More Video Modes, including "tweaked" modes for IBM VGA
  41.               and register-compatible adapters
  42.  
  43.                        +++ Features new to 3.x +++
  44.  
  45.       - Julia Sets
  46.  
  47.                        +++ Features new to 2.x +++
  48.  
  49.       - Zoom and Pan
  50.  
  51.                        +++ Features new to 1.x +++
  52.  
  53.       - The original, blindingly fast, 386-specific 32-bit integer algorithm
  54.  
  55.  
  56.       +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  57.  
  58.  
  59. This program generates Mandelbrot and Julia set fractal images using 32-bit
  60. integer arithmetic rather than the "traditional" floating point.   When run
  61. on a 386-based PC, it will use the 32-bit math specific to that processor -
  62. otherwise, it will emulate it using the generic 16-bit math available on
  63. the entire INTEL family (at about 15% of the speed of the 386-specific
  64. math).  The program also generates other types of fractal images (described
  65. below), although it generates those other fractals using "traditional"
  66. floating point math.
  67.  
  68. The program will work with CGA, EGA, MCGA, VGA, "tweaked" VGA, and
  69. many popular super-rez adapters, and can switch display modes on-the-fly for
  70. those adapters capable of multiple emulation. For instance, I can run this
  71. program in any of the IBM CGA/EGA/MCGA/VGA modes on my PS/2 model 80.
  72. The program does not perform any floating point arithmetic during its
  73. Mandelbrot/Julia set image generation routines, and does not require an FPU.
  74.  
  75. To start the program, simply type its name (FRACTINT) without any parameters.
  76. When the program fires up, it displays an initial credits screen with a
  77. (partial) list of those whose contributions made FRACTINT possible.  The
  78. program then waits for you to hit one of the available command keys to set
  79. up the program or select an initial video mode and start up the first
  80. image.   You can also (at this screen or at any time) press the HELP key
  81. ('h' or '?') to enter HELP mode, with screens describing the commands and
  82. video modes currently available and the keys you can hit to activate them.
  83. As soon as you select a video mode, the program begins drawing an initial
  84. display (of the full Mandelbrot set, if you haven't selected another fractal
  85. image).   From this point on, and AT ANY TIME, you can hit any of
  86. the following keys to select a function:
  87.  
  88.  Key          Function
  89.  ===========  ===============================================================
  90.  
  91.  h or ?         Enter HELP mode (the Escape key brings you back)
  92.  PageUp         Display and Shrink the Zoom Box ("Zoom In")
  93.  PageDown       Display and Expand the Zoom Box ("Zoom Out")
  94.  Cursor Keys    Display and Move the Zoom Box Left, Right, Up, or Down ("Pan")
  95.  Ctrl-Cursor-Keys   Pan like the normal Cursor-Keys, but (five times) faster
  96.                 (NOTE:  Fast-Panning works only with an Enhanced Keyboard BIOS)
  97.  Enter or End   Redraw the area inside the Zoom Box as a full-screen image
  98.                 (If there is no Zoom Box, just re-draw the current screen)
  99.  F1,F2,F3,F4... Select a new Video Mode and THEN perform a Screen Redraw
  100.                 Currently supported video modes include:
  101.                 F1 = 320x200 16-color EGA/VGA   F2 = 640x350 16-color EGA/VGA
  102.                 F3 = 320x200 256-color MCGA/VGA F4 = 640x480 16-color VGA
  103.                 F5 = 320x200 4-color CGA        F6 = 640x200 B&W CGA
  104.                 F7 = 640x350 B&W EGA/VGA        F8 = 640x480 B&W VGA
  105.                 F9 = 640x200 16-color EGA/VGA   F10= 360x480 256 color VGA (!)
  106.                 ..etc...etc...etc
  107.                 (For a complete list, scan through the Help screens)
  108.  Home           Redraw the Previous Screen (the program tracks 50 screens)
  109.                 (this gives you the ability to "back out" screen-by-screen)
  110.  Tab            Display the Current Fractal Type, Parameters, Screen or
  111.                 Zoom-Box coordinates, and other pertinent image information
  112.                 (this gives you the ability to track where you are and
  113.                 restart the program at your current position later on)
  114.  Spacebar       Toggles between Mandelbrot images and their corresponding
  115.                 Julia set images (read the Julia set notes below before
  116.                 trying this option if you want to see anything interesting)
  117.  < or >         Lower or Raise the maximum iteration count (hit the Tab key
  118.                 to display the current value).  The default value is 150, the
  119.                 range is 10 - 1000, and the default adjustment value is 50).
  120.                 ((Note:  the unshifted equivalents (comma, period) also work))
  121.  2 or 1 or g    Select dual-pass, single-pass, or solid-guessing (the default)
  122.                 mode.  Dual-pass mode generates a "coarse" screen first using
  123.                 (2x2) pixel boxes, and then generates the rest of the dots
  124.                 with a second pass. (same net speed and final display, but
  125.                 with a quick-preview).  Solid-guessing performs the same
  126.                 first "coarse-screen" pass, and then performs the second pass
  127.                 only for blocks that aren't "surrounded" by a single color.
  128.                 Solid guessing can guess wrong - but it sure guesses (right
  129.                 or wrong) quickly!
  130.  c or C         (for VGA adapters only) Switch to the Color-Cycling command
  131.                 mode described below.  
  132.  + or -         (For VGA adapters only) Begin rotating the Video DAC and
  133.                 switch to the Color-cycling command mode, described below.
  134.                 If you have a VGA adapter, use this for NEAT fractal images!
  135.  s or S         Save the screen contents to disk (default = FRACT001.FRA)
  136.                 To display its progress, the program colors the left-most
  137.                 and right-most dots as it saves the screen, top to bottom.
  138.                 The saved files are restorable with either the 'r' key or a
  139.                 command-line option.  They are also displayable by most GIF
  140.                 decoders, but they are NOT GIF FILES (you can force a save
  141.                 in true GIF format by specifying a '.GIF' extension with the  
  142.                 'savename=' command-line option, but then you can't restore 
  143.                 it with the 'r' command afterwards.  A full explanation of
  144.                 your options is in the 'FRACTINT and .GIF files' section).
  145.  r or R         Restore an image previously saved with an 's' command
  146.                 (This image must have been saved using version 7.0 or later) 
  147.  b or B         add a line to (and create, if necessary) "frabatch.bat"
  148.                 describing the current image.  The entries in "frabatch.bat"
  149.                 look just like FRACTINT command lines.  An easy way to set up
  150.                 batch files of fractal image commands for later (overnight?)
  151.                 runs at Super-resolution video modes or iteration limits.
  152.  t or T         Select a fractal type (the program lists the available types,
  153.                 then lets you select one and prompts you for any parameters
  154.                 it may require)
  155.  o or O         (the letter, not the number), if pressed while a fractal
  156.                 image is being generated, toggles the display of intermediate
  157.                 results on and off (the "o" stands for "show orbits")
  158.  Insert         Restart the Program all over again at the Credits Screen
  159.  Esc or Delete  Stop the Program and Return to MSDOS
  160.  
  161. =============================================================================
  162.  
  163.                 Color-Cycling commands (VGA adapters only)
  164.  
  165. If you have a VGA adapter, hitting the 'c', 'C', '+' or '-' keys at the main
  166. command level will enter 'color-cycling' (animation) mode (if your adapter is
  167. not VGA compatible - that is, if it does not have a 256-color video DAC - the
  168. program will simply beep in despair and leave you at the main command level).
  169. It's pretty easy to tell when you are in Color-Cycling mode, because either
  170. the overscan (border) area has switched from black to white, or the colors
  171. are constantly cycling on the screen.  Also, pressing the HELP screen in
  172. Color-Cycling mode gives you the Color-Cycling HELP screen.  The command
  173. keys appropriate to color-cycling mode are:
  174.  
  175.  Key          Function
  176.  ===========  ===============================================================
  177.  
  178.  h or ?       Enter HELP mode (the Escape key brings you back)
  179.  + or -       Switch the rotating direction out or in (left or right?)
  180.  Right/Left   (Cursor Keys) perform the same function as the +/- keys
  181.  Up/Down      (Cursor Keys) speed up / slow down the color cycling process
  182.               Note that speeding it up too much will cause (non-harmful)
  183.               flickering at the top of the screen as you over-run the
  184.               vertical retrace / blanking interval.
  185.  F1 thru F10  Switches from simple rotation to color selection using randomly-
  186.               generated color bands of short (F1) to long (F10) duration.
  187.  1 thru 9     Causes the screen to be updated every 'n' color cycles (the
  188.               default is 1).  Handy for slower computers.
  189.  ENTER        Randomly selects a function key (F1 thru F10) and then updates
  190.               ALL the screen colors prior to displaying them for instant,
  191.               random colors.  Hit this over and over again (I do).
  192.  Spacebar     Pauses and temporarily switches from the normal black background
  193.               (overscan area) to a white one (so that you can tell the
  194.               difference between a 'normal' command state and a paused Color-
  195.               cycling one).  Restarts automatically with any command key
  196.               (including another Spacebar).
  197.  R or G or B  Forces a pause and raises the Red, Green, or Blue component of
  198.               the fractal image by a small amount.
  199.  r or g or b  Forces a pause and lowers the Red, Green, or Blue component of
  200.               the fractal image by a small amount.
  201.  Any Other    terminates the color-cycling process (you can always return
  202.               to it with another c or +/- key) and returns to the main
  203.               command mode.
  204.  
  205.  
  206. ==============================================================================
  207.                           Mouse Support
  208.  
  209. If you have a mouse, FRACTINT now supports it, thanks to the contributions
  210. of Michael Kaufman.  The mouse encoding is as follows:
  211.  
  212. =============================================================================
  213.  
  214. Left Button:   Brings up and sizes the Zoom Box.   While holding down the
  215.                left button, push the mouse forward to shrink the Zoom Box,
  216.                and pull it back to expand it.   Then let go of the button
  217.                and move the mouse around to "pan" the Zoom Box (with no
  218.                buttons held down, you are in "fast-pan" mode).
  219.  
  220. Right Button:  When the right button is held down, the "panning" operation
  221.                switches from "fast-pan" to "slow-pan" mode, giving you
  222.                better control over the location of the Zoom Box.
  223.  
  224. Both Buttons:  (or the middle button, if you have three of them) Redraws
  225.                the area inside the Zoom Box over your full screen.
  226.  
  227. Zoom and Pan using the mouse typically consists of pushing in the left
  228. button, sizing the zoom box, letting go of the button, fast-panning to
  229. the general area, pushing in the right button and slow-panning to the
  230. exact area you want, and then (still holding down the right button) tapping
  231. the left button to perform the Zoom.
  232.  
  233. =============================================================================
  234.  
  235.                                   HINTS
  236.  
  237. Remember, you do NOT have to wait for the program to finish generating the
  238. full screen display (a process that can take from 30 seconds for a Mandelbrot
  239. Set image in "Low-Rez" EGA or MCGA mode on a 386-based PC to several hours
  240. (days?) for a Lambda-Sine image in full VGA mode on a "vintage" 8088 with
  241. no FPU) before hitting one of the above keys.   If you hit a keyboard
  242. key while the program is generating a screen image, it will simply stop and
  243. process the key (it will NOT finish the display, though). If, say, you see
  244. an interesting spot you want to zoom in on, don't wait --  do it!   If the
  245. program finishes a display before you hit any keys, it will simply beep and
  246. wait for you to hit one.
  247.  
  248. For Mandelbrot fractals, the most interesting areas are the border areas
  249. where the colors are changing rapidly.   Zoom in on them for the best
  250. results.   The areas closer to the outside of the fractal "egg" tend to
  251. involve fewer iterations and display more quickly than those closer to the
  252. inside.  The solid blue interior is the slowest region of all to display --
  253. in fact, it's where the program has hit its iteration maximum (the default
  254. is 150) and given up.
  255.  
  256. >>BIG IMPORTANT HINT<<:  It's a LOT quicker to save an initial screen once to
  257. a file (say, STARTUP.FRA), and then fire up subsequent FRACTINT sessions
  258. with a command like 'fractint startup'.   This can be handled automatically
  259. with the 'batch=yes' command-line option (the example below creates a startup
  260. file for register-compatible VGA adapters using 360x480x256 color mode):
  261.            fractint batch=yes video=f10 type=mandel savename=startup
  262. One hasn't been added to the distribution .ARC file only because of the 
  263. space it would take (the files are getting big enough as it is!) and because
  264. we don't know what your favorite (or possible) video modes are.
  265.  
  266. The time it takes to generate a fractal image is directly proportional to the
  267. resolution of the selected video mode (more dots = more calculations).   You
  268. can select a low-resolution mode (I use F3 for MCGA) on the startup screens,
  269. and at some later point hit a function key instead of the ENTER key to switch
  270. to a higher resolution mode (I use F10 for 360x480x256 mode) when things get
  271. interesting.  That gets you into the interesting stuff in detailed resolution
  272. quickly -- after awhile, you've seen that first Mandelbrot image too often
  273. to get excited about it.  Actually, with its 256 colors (the program "only"
  274. uses the first 150 by default), MCGA mode can give you some pretty spectacular
  275. effects on its own.
  276.  
  277. On a slow machine, I have been known to fire up FRACTINT with a low iteration
  278. limit ('fractint maxiter=50') to get the initial screens up quickly, and raise
  279. the iteration limit later with the '>' key.   True confession time:   I've
  280. even used 'fractint maxiter=10' on an old, 4.77 MHZ "classic" IBM PC (patience
  281. was never one of my strong suits).
  282.  
  283. Solid-Guessing is now the default image-generation mode.  Solid-Guessing
  284. works by generating a coarse first-pass image using 2x2 pixel boxes, and then
  285. performs a second "clean-up" pass only for blocks that aren't "surrounded"
  286. by a single color.   Solid guessing is fast, but it can guess wrong.  If
  287. you are a perfectionist, or are using "batch mode" to save a particular
  288. image for posterity, you probably want to disable solid-guessing by switching
  289. to either single-pass or dual-pass mode using either the '1' or '2' commands
  290. or the 'passes=' command-line option.
  291.  
  292. =============================================================================
  293.  
  294.              ******   Optional Command Line Arguments  ******
  295.  
  296.    FRACTINT accepts optional arguments that allow you to better control
  297. such things a video modes, iteration limits, and startup display areas.
  298. NOTE that the current argument list is (a lot better, much more expandable,
  299. but) totally incompatible with the argument lists of FRACTINT versions prior
  300. to version 5.1.   The full FRACTINT command line is:
  301.  
  302.                 FRACTINT [filename] [argument] [argument] ...
  303.  
  304. where the individual arguments are separated by one or more spaces (an
  305. individual argument can NOT include spaces), can be in any order or
  306. (upper/lower) case, and can be any of the following:
  307.  
  308. Argument                    Description
  309.  
  310. filename           Causes FRACTINT to read the named file, which must have
  311.                    been saved via an earlier (version 7.0 or later) FRACTINT
  312.                    session, and use that as its starting point, bypassing the
  313.                    initial information screens (the filetype is optional -
  314.                    'myfile' and 'myfile.fra' refer to the same file).
  315. passes=x           Selects (1) Single-Pass mode, (2) Dual-Pass mode, or
  316.                    (g) solid-guessing mode (Examples: passes=1, passes=g).
  317. inside=nnn         Set the color of the Fractal interior (Example: inside=0
  318.                    sets the inside of the Mandelbrot set to traditional black)
  319. maxiter=nnn        Set the starting iteration maximum (Example: maxiter=500).
  320.                    The program accepts maxiter values from 10 to 1000.
  321. iterincr=nnn       Set the iteration increment (the value maxiter is changed
  322.                    by when you hit the '<' or '>' keys)
  323. video=xxxxx        Set the initial video mode (and bypass the informational
  324.                    screens).  Handy for "batch" runs. (Example: video=F4)
  325. savename=xxxxxx    Set the filename to use when you press the 's' key.
  326.                    The default filename is FRACT001.  Typing the '.FRA' is
  327.                    optional (Example: savename=myfile)
  328. type=fractaltype   Selects the type of fractal image to display.  The default
  329.                    is type 'mandel' for the Mandelbrot set.  The current list
  330.                    of available fractal types is described later.  (Example:
  331.                    type=julia generates Julia sets).
  332. params=param1/param2   Set optional (required, for some fractal types) values
  333.                    used in generating fractals.  These two numbers typically
  334.                    represent the real and imaginary portions of some startup
  335.                    value.  These parameters are described in detail later on
  336.                    (Julia Set example:  type=julia params=-0.48/0.626)
  337. corners=xmin/xmax/ymin/ymax   Begin with these screen corner Coordinates 
  338.                    rather than the default values of -2.0/2.0/-1.5/1.5
  339.                    (Example: corners=-0.739/-0.736/0.288/0.291).
  340. cyclelimit=nnn     Limits the color-cycling speed used by the Color-cycling
  341.                    options.  Technically, the number of DAC registers
  342.                    updated during a single vertical refresh cycle.  Legal
  343.                    values are 1 - 256, default is 55 (Example: cyclelimit=256)
  344. batch=yes          Run in "batch mode" - acts as if you had hit the 's' key
  345.                    to save the image after drawing the first fractal, and
  346.                    that you hit the <ESC> key to exit afterwards.  The
  347.                    'video=' option is required, and the 'savename=', 
  348.                    'corners=' and other options are REAL handy.
  349. batch=config       Runs a special "batch mode" run that creates a default
  350.                    FRACTINT.CFG file from the full internal video table
  351.                    (FRACTINT.CFG is described below).
  352.  
  353. The 'type=', 'param=' and 'corner=' arguments let you recreate images
  354. that you or others have generated in previous sessions of FRACTINT or other
  355. fractal generation programs.   These values can be displayed at any time
  356. during FRACTINT by hitting the TAB key.
  357.  
  358. A warning about the 'video=' option:   EVERY version of FRACTINT (including
  359. this one) has been introduced with a bigger, better, and generally shuffled
  360. around Video Table.   BE CAUTIOUS about using this argument and then
  361. downloading future versions of FRACTINT, particularly if you are using
  362. the "Super-VGA" modes near the end of the video table.
  363.  
  364. =============================================================================
  365.  
  366.        ************** Mandelbrot and Julia Set Fractals  **********
  367.                                      and
  368.           ***** Toggling between Mandelbrot and Julia Sets *****
  369.  
  370. Note on algebraic conventions: in the text that follows, "a*b" means "a 
  371. times b", and "a**b" means "a to the power b".
  372.  
  373.    FRACTINT can be toggled between Mandelbrot images and their corresponding
  374. Julia sets.   What is a Julia set?   I don't really know either, but I can
  375. describe how the program generates them.  Let's start with a diversionary
  376. tactic and describe how the program generates the Mandelbrot set.   The
  377. Mandelbrot set is generated by assuming that each pixel on the screen
  378. represents a point on the complex-number "C plane", (X + i*Y), and calculating
  379. the following function until the "size" of Z(n) is greater than 2 :
  380.  
  381. Start with a complex-number constant            C = xcoord + i * ycoord
  382. use as the initial value of Z                   Z(0) = 0
  383. and iterate using this function                 Z(n+1) = Z(n)**2 + C
  384.  
  385.    Julia sets (or, more specifically, the Julia set of the polynomial
  386. Z**2+C, which is the Julia set that we are discussing at the moment -
  387. FRACTINT now generates other Julia set fractals as well, which are described
  388. later) use a slightly different tactic, picking out a specific point
  389. on the "C plane" and assuming that each pixel on the screen represents
  390. an initial point on the "Z plane".   Once everything has been started up,
  391. however, the calculations are the same:
  392.  
  393. Start with a USER-SPECIFIED value of C          C = Creal + i * Cimaginary
  394. use as the initial value of Z                   Z(0) = xcoord + i * ycoord
  395. and iterate using this function                 Z(n+1) = Z(n)**2 + C
  396.  
  397.  
  398.    In either case, the pixel's color is arbitrarily determined by the
  399. number of iterations it took the program to get Z "large" enough to
  400. bail out of the loop.
  401.  
  402.  
  403.    Generating Julia sets are different from generating Mandelbrot sets in
  404. several important ways:
  405.  
  406.    (1) There is only one Mandelbrot set but, given that there are an infinite
  407. number of values available for the complex-number C, there are an infinite
  408. number of Julia sets.
  409.  
  410.    (2) Although there are an infinite number of Julia sets, a lot of them
  411. are pretty boring.   Only certain ranges of C result in interesting
  412. Julia set displays - values too "small" generate a simple circular display,
  413. and values that are too "big" generate something that looks like scattered
  414. dust.
  415.  
  416.    (3) It turns out, however, that the coordinates of the most interesting
  417. portions of the Mandelbrot image, where the colors are changing rapidly,
  418. are the VERY SAME values that generate the most interesting Julia sets.
  419. (There is a very sound mathematical reason for this.   I haven't the 
  420. vaguest idea what it is, though.)
  421.  
  422.  
  423.    What FRACTINT does is begin with the full Mandelbrot set, give you the 
  424. capability to zoom and pan around generating interesting Mandelbrot images,
  425. and then AT ANY POINT hit the spacebar toggle to "flip" to a full Julia set
  426. with startup constant C set to the coordinates at the center of the Mandelbrot
  427. image that you last generated.   From that point, you are zooming and
  428. panning around in a Julia set "Z plane" (you can always hit the spacebar
  429. toggle again to get your Mandelbrot set back).   You can think of it this way:
  430. all those fantastic Mandelbrot images you have been generating are just
  431. a way to select an initial value for Julia sets you can play with!
  432.  
  433. NOTE:  Beginning with version 7.0, "Warped" Mandelbrot sets ( sets with
  434. a starting value of Z(0) other than 0) can be generated by FRACTINT by
  435. firing it up with a 'params=' option.  The two optional parameters are
  436. taken as the real and imaginary portion of Z(0).  When the Mandelbrot set
  437. has been warped in this fashion, the relationship between it and Julia sets
  438. described above no longer applies.
  439.  
  440.            *******  "Go-Fast" additions to the logic *******
  441.  
  442. The "Mandelbrot Lake" in the center of the Mandelbrot images is the
  443. traditional bane of all fractal programs.  The center of the lake always
  444. sucks up the most computer time because it always reaches the iteration
  445. limit - and yet the most interesting images are invariably right at the edge
  446. the lake.  Thanks to Mark Peterson for pointing out (well, he more like beat
  447. us over the head until we paid attention to him) that the iterative values
  448. in the middle of Mandelbrot Lake tend to decay to periodic loops (IE,
  449. Z(n+m) == Z(n), a fact that is pointed out on pages 58-61 of "The Beauty of
  450. Fractals"), and that an intelligent program (like the one he wrote) would
  451. check for this periodicity once in a while, recognize that iterations caught
  452. in an iterative loop are going to max out on iterations, and bail out early.
  453. For speed purposes, the current version of the program turns this checking
  454. algorithm on only if the last pixel generated was in the lake (the checking
  455. itself takes a small amount of time, and the pixels on the very edge of the
  456. lake tend to decay to periodic loops very slowly, so this compromise turned
  457. out to be the fastest generic answer).  Try a full Mandelbrot image with
  458. a 1000-iteration maximum with any other program, and then try it on this
  459. one for a pretty dramatic proof of the value of periodicity checking (hint:
  460. on a 16MHZ 386 in MCGA mode, FRACTINT takes ten seconds)!
  461.  
  462. You can get a visual display of the periodicity effects in the Mandelbrot
  463. Lake if you press the 'o' (letter o, not zero) while a Mandelbrot image is
  464. being generated.  The 'o' ("show orbits") key toggles on and off the display
  465. of the intermediate iterations during the image generation process.  If
  466. you use this toggle, it's best to disable solid-guessing first using the '1'
  467. or '2' command (in its second pass, solid-guessing guesses away many of the
  468. pixel calculations precisely where the 'show orbits' option is the most
  469. interesting).
  470.  
  471. An additional trick commonly used in fractal displays is solid-guessing -
  472. generating a grid of colors, and then assuming that the interior points are
  473. a solid block of color if all the surrounding points are the same color.
  474. This trick works very well, but can mis-guess pixels.  Solid-guessing is
  475. now the default mode in FRACTINT, but is easily disabled with the
  476. 'passes=1' or 'passes=2' command-line option, or with the '1' or '2' commands.
  477. Visually, solid-guessing looks just like Dual-Pass mode ('passes=2' or the
  478. '2' command) - except that the second pass seems faster, somehow...
  479.  
  480. =============================================================================
  481.  
  482.   *******  Fractal Set types other than Mandelbrot and Julia Sets  ********
  483.  
  484. Beginning with version 7.0, FRACTINT supports fractal images other than the 
  485. "classic" Mandelbrot and Julia sets.  Note that these extra image types are
  486. typically calculated using generic "C" code (in CALCFRAC.C) and use
  487. "traditional" floating-point math rather than the 32-bit integer math which
  488. was FRACTINT's original claim to fame.  As a result, although they take full
  489. advantage of FRACTINT's other features, they are no faster than routines
  490. found in other, similar packages.  A quick way to obtain the current list of
  491. fractal types is by  using the 'T' command.  Current fractal types supported
  492. by FRACTINT include:
  493.  
  494.       *** Newton Domains-of-Attraction (type=newtbasin) ***
  495.  
  496. The Newton formula is well known to struggling students of calculus as an
  497. algorithm for calculating the roots of polynomials. The polynomial 'z**4 - 1'
  498. has 4 roots in the complex plane: 1, -1, i, and -i, where i is the square
  499. root of -1.  The Newton formula for that polynomial is the rational function
  500. (4*(z**3) + 1)/(3*(z**4)).  If you pick a value of z NEAR one of the roots
  501. and plug it in to Newton's formula, the result is CLOSER. Do this several
  502. times, and you have an accurate root. That is, define a sequence z[0], z[1],
  503. z[2] ... by z[0] = guess, z[k+1] = (4*(z[k]**3)+1)/(3*(z[k]**4)).
  504. But what happens if the first guess is BETWEEN the roots?  Which root does
  505. the formula converge to? Glad you asked! The answer is -- CHAOS!!!
  506.  
  507. To see the answer, try type=newtbasin. Pixels are colored according to the
  508. "attracting" root. The graph you see, in high-powered esoteric fractal
  509. language, is a graph of "the basins of attraction for the Newton formula
  510. of the polynomial z**4-1"
  511.  
  512. For the above example, use "params=4". Other legal values are 3 through 10.
  513. The params value of "n" calculates the Newton formula for the equation
  514. 'x**n - 1'.  An FPU is EXTREMELY handy.
  515.  
  516.                 *** Newton Formula (type=newton) ***
  517.  
  518. The formula is identical to type=newtbasin, but the pixels are colored
  519. according to the iteration when the value is close to a root, rather than
  520. according to WHICH root. If you have a 256 color mode, use it. (Newtbasin
  521. uses fewer colors). Also, if your "corners" choice is symmetrical, FRACTINT
  522. exploits the symmetry.  There is symmetry also in "type=newtbasin", but
  523. the current version of the software isn't smart enough to exploit it.
  524.  
  525. The useful "params=" values are the same as Newtbasin. Try 'params=4'.
  526. Other values are 3 thru 10.  Multiples of 4 have twice the symmetry
  527. and are faster.  As with 'type=newtbasin', an FPU is EXTREMELY handy.
  528.  
  529.                *** "Lambda" Sets (type=lambda) ***
  530.  
  531. This type calculates the Julia set of the formula lambda*z*(1-z).  That is,
  532. the value z[0] is initialized with the value corresponding to each pixel
  533. position, and the formula iterated.  The pixel is colored according to the
  534. iteration when the sum of the squares of the real and imaginary parts
  535. exceeds 4.  Look in this space later for a profound discussion of the
  536. physical significance of this formula, if we ever dig it out of our books!
  537.  
  538. Two values should be given in the "params=" option.  These values will become
  539. the real and imaginary parts of  lambda. Try 'params=0/1' to see the classical
  540. "dragon".   An FPU is EXTREMELY handy.
  541.  
  542.                *** Plasma Clouds (type=plasma) ***
  543.  
  544. "Plasma Clouds" are generated by a recursive algorithm that randomly picks
  545. colors of the corner of a rectangle, and then continues recursively
  546. quartering previous rectangles.  Random colors are averaged with those of
  547. the outer rectangles in such a way that in small neighborhoods do not show
  548. much change, resulting in the effect of clouds. MUST be viewed with
  549. FRACTINT's palette animation (hit "+" or "-" when done).  A side effect
  550. of watching the screen being painted by the recursive algorithm is that
  551. the watcher becoming hypnotized, if not immediately, then when the plasma
  552. clouds begin writhing with palette animation. Haven't yet added subliminal
  553. messages to exploit this --  next release! Algorithm is based on the pascal
  554. program distributed by Bret Mulvey as "plasma.arc" (we have ported it to C
  555. and integrated it with FRACTINT's graphics and animation facilities).
  556.  
  557. Plasma Clouds accept a single parameter, which determines how abruptly
  558. the colors change.  Selecting "params=.5" results in bland clouds, while
  559. "params=50" results in very grainy ones.  The default parameter value is 2.
  560. Sorry, but you must have a VGA or Super-VGA adapter and you must select a
  561. 256-color mode.  Plasma clouds in 16 colors just don't make it.
  562.  
  563. FRACTINT's implementation of Plasma Clouds does not use floating-point math,
  564. and so does not require (or use) an FPU.  Also, Zoom and Pan is effectively
  565. ignored for Plasma Clouds, as each Plasma Cloud screen is generated randomly.
  566.  
  567.           *** "Lambda*Sine" Sets (type=lambdasine) ***
  568.  
  569. This type calculates the Julia set of the formula lambda*sine(z), where
  570. lambda and z are both complex. The algorithm is given in "The Science of
  571. Fractal Images", by Barnsley, Devaney, Mandelbrot, Peitgen, Saupe, and
  572. Voss, published by Springer-Verlag in 1988, p. 158.
  573.  
  574. Two values should be given in the "params=" option.  These values will
  575. become the real and imaginary parts of lambda. Make the real part = 1,
  576. and try values for the imaginary part ranging from .1 to .4. In this range
  577. the Julia set "explodes".  An FPU is a NECESSITY - each iteration calculates
  578. a hyperbolic sine, hyperbolic cosine, a sine, and a cosine!  However, if you
  579. DON'T have an FPU, and you are going on a LONG vacation ....  well, that's
  580. what batch mode is for! 
  581.  
  582.    *** "Traditional" Floating-Point Mandelbrot and Julia Functions ***
  583.                   *** (type=mandelfp and type=juliafp) ***
  584.  
  585. These fractal types are identical to their 'type=mandel' and 'type=julia'
  586. counterparts.  If you are using an 8088/8086 and have an FPU, these routines
  587. may actually be faster than their integer counterparts (the integer MULtiply
  588. instruction on the 8088 takes a LOOOOONG time).  Otherwise, these fractal
  589. types are included more for historical purposes than anything else.  That
  590. and the source code (in CALCFRAC.C) is a TAD easier to follow than the
  591. assembler version (in CALCMAND.ASM).
  592.  
  593. If you do not have an FPU, steer clear of these routines unless you feel
  594. the need to reminisce about the good old days when men were men and fractals
  595. took forever to generate.
  596.  
  597.                  *** Roll your own (type=test) ***
  598.  
  599. This is a stub that we (and you!) use for trying out new fractal types.
  600. Type 'test' fractals use FRACTINT's structure and features (like dual-pass
  601. mode, zoom-and-pan, and support for a zillion video modes), but use whatever
  602. code happens to be in routine 'testpt()' (located in the small source file
  603. 'testpt.c') to determine the color of a particular pixel.  If you have a
  604. favorite fractal type that you believe would fit nicely into FRACTINT, just
  605. rewrite the C function in testpt.c (which is currently a simple Mandelbrot
  606. routine) with some algorithm that computes a color based on a point in the
  607. complex plane. After you get it working, send your 'testpt()' code to one of
  608. the authors and we might just add it to the next "official" release of
  609. FRACTINT, with full credit to you. Our criteria is 1) an interesting picture,
  610. and 2) formulas significantly different from types already supported.
  611. (Bribery may also work - THIS author is completely honest, but I don't trust
  612. those other guys.)  Be sure to include an explanation of the algorithm, and
  613. the "params=" options supported, formatted in a way similar to this
  614. documentation.
  615.  
  616. =============================================================================
  617.  
  618.                          BATCH FILE CHALLENGE!!
  619.  
  620. The authors hearby challenge FRACTINT USERS everywhere to submit FRACTINT
  621. command lines that calculate their favorite fractals images. A sample command
  622. line entry would be something like (and you can do better than THIS):
  623.  
  624.    fractint type=julia params=0.3/0.6
  625.                         or
  626.    fractint type=newton params=4 corners=-2/2/-2/2
  627.  
  628. We will add a batch file with each line credited to the proposer to future
  629. releases of FRACTINT. Send to one of the authors via CompuServe or BIX.
  630.  
  631.  
  632. =============================================================================
  633.  
  634.  *** Support for "Tweaked" VGA modes and Third-Party Hi-Rez Video Adapters ***
  635.  
  636.    FRACTINT uses a Video Adapter Table in the "C" program to reference
  637. everything it needs to know about any particular adapter/mode combination.
  638. This table can contain information for up to 76 adapter/mode combinations,
  639. and is automatically tied to seventy-six Function Keys (F1-F10, their Control/
  640. Shift/Alt variants, and many Alt-x keypad combos) when the program is running.
  641. The table entries, and the function keys they are tied to, are displayed
  642. as part of the Video-Mode Help Screen(s).   With version 7.0, this table is
  643. also customizable using an external configuration file (FRACTINT.CFG),
  644. described in a few more paragraphs.   This table makes adding support for
  645. various third-party video cards and their high-rez modes much easier, at
  646. least for the ones that pretend to be a standard adapter with more dots
  647. and/or colors.   
  648.  
  649.    The table as currently distributed begins with nine standard and several
  650. non-standard ("tweaked") IBM video modes that have been exercised successfully
  651. with a PS/2 model 80.   These entries, coupled with the descriptive comments
  652. in the table definition and the knowledge you have about throwing your adapter
  653. into its unique modes, should be all you need to see to be able to add your
  654. own entries.
  655.  
  656.    SPECIAL NOTE ON THE NON-STANDARD 360 x 480 x 256 VGA MODE:   The IBM VGA
  657. adapter is a highly programmable device, and can be set up to display many
  658. video-mode combinations beyond those "officially" supported by the IBM BIOS.
  659. This video mode is perfectly legal, but it temporarily reprograms the
  660. (IBM or any truly Register-Compatible) VGA adapter in a non-standard
  661. manner that the BIOS does not recognize.  Because of this, the program
  662. cannot send any text to the screen while it is in this mode (the BIOS
  663. would garbage it).  An internal flag inhibits all text output while the
  664. screen is in this video mode.  Note, however that the HELP and TAB keys
  665. still work, because they temporarily switch the screen to an alternate
  666. video mode.
  667.  
  668.    SPECIAL NOTE ON "TWEAKED" VGA MODES:   The IBM VGA adapter is a highly
  669. programmable device, and can be set up to display many video-mode combinations
  670. beyond those "officially" supported by the IBM BIOS.   FRACTINT contains
  671. code that sets up the IBM (or any truly register-compatible) VGA adapter
  672. for several extended modes - such as 704x528, 736x552, 768x576, and 800x600.
  673. The program accomplishes this by programming the VGA controller to use the
  674. fastest dot-clock on the IBM adapter (28.322Mhz), throwing more pixels on
  675. the screen, and reducing the refresh-rate to make up for it.   Note that
  676. these modes push many monitors beyond their rated specs, both in terms of
  677. higher pixel resolution and lower refresh-rate.   Signs that your monitor
  678. is having problems with a particular "tweak" include: vertical or horizontal
  679. overscan (displaying dots beyond the edges of your visible CRT area),
  680. annoying "flicker" (caused by a too-slow refresh-rate), and "rolling" or
  681. total garbage on the screen (your monitor simply can't keep up, or is
  682. attempting to "force" the image into a pre-set mode that doesn't fit).
  683. I have successfully tested the modes up to 768x576 on an IBM PS/2 model 80
  684. connected to IBM 8513, IBM 8514, NEC Multisync II, and Zenith 1490 monitors
  685. (all of which exhibit some overscan and flicker at the highest rates), and
  686. have tested 800x600 mode on the NEC Multisync II (although I had to fiddle
  687. with the vertical size knob some to get it to display correctly).
  688.  
  689.    After the standard and "tweaked" IBM-style video modes, the video adapter
  690. table contains an ever-increasing number of entries for third-party 
  691. (generally "Super-EGA " and "Super-VGA") adapters.   Almost all of these
  692. entries have been added because someone like you sent us spec sheets on his or
  693. her adapter, or modified FRACTINT to support it and then informed us about it.
  694.  
  695.  
  696. =============================================================================
  697.  
  698.          The Video Modes Configuration file  (FRACTINT.CFG)
  699.  
  700.    If you have a favorite adapter/video mode that you would like added to
  701. FRACTINT (or if you want to effectively remove table entries that do not
  702. apply to you), you can handle that task easily by creating and editing an
  703. external configuration file (FRACTINT.CFG).  The easiest way to get started
  704. is by having FRACTINT create a default configuration file for you.  You do
  705. this by typing 'fractint batch=config'.  FRACTINT will create a configuration
  706. file with an entry for every one of the internal video table entries, and
  707. from that on will use FRACTINT.CFG instead of its internal table as long as
  708. it can locate it somewhere along the DOS PATH.
  709.  
  710. Any line in the configuration file that begins with a tab or a space (or is
  711. empty) is treated as a comment.  The rest of the lines must consist of ten
  712. fields separated by commas.  The ten fields are defined as:
  713.  
  714.   The name of the adapter/video mode (25 chars max, no leading blanks)
  715.   The adapter is set up for that mode via INT 10H, with AX = this
  716.   ""     and  BX = this    |  Hey, all these registers wasn't my
  717.   ""     and  CX = this    |  idea:  blame the adapter manufacturers.
  718.   ""     and  DX = this    |  <<Also, note that AX/BX/CX/DX use HEX Notation>>
  719.   An encoded value describing how to write to your video memory in that mode
  720.          Currently available codes are (use the BIOS as a last resort)
  721.               1) use the BIOS (INT 10H, AH=12/13, AL=color) ((SLOW))
  722.               2) pretend it's a (perhaps super-res) EGA/VGA
  723.               3) pretend it's an MCGA
  724.               4) SuperVGA 256-Color mode using the Tseng Labs Chipset
  725.               5) SuperVGA 256-Color mode using the Paradise Chipset
  726.               6) SuperVGA 256-Color mode using the Video-7 Chipset
  727.               7) Non-Standard IBM VGA 360 x 480 x 256-Color mode
  728.               8) Reserved for future use (Super-VGA)
  729.               9) Reserved for Future use (TARGA)
  730.   The number of pixels across the screen (X - 200 to 2048)
  731.   The number of pixels down   the screen (Y - 200 to 2048)
  732.   The number of available colors (2, 4, 16, or 256)
  733.   A Comment describing this mode (25 chars max, leading blanks are OK)
  734.  
  735. NOTE that the AX, BX, CX, and DX fields are generated (and read back) using
  736. Hexadecimal notation (fifteen ==> 'f', sixteen ==> '10'), because that's the
  737. way most of your video adapter documentation describes it.  The other fields
  738. use standard decimal notation.
  739.  
  740. If you look closely at the default entries, you will notice that the IBM
  741. VGA entries labeled "tweaked" and "non standard" have entries in the table
  742. with AX = BX = CX = 0, and DX = some other number.  Those are special flags
  743. that we used to tell the program to custom-program the VGA adapter, and are
  744. NOT undocumented BIOS calls.  Maybe they should be, but they aren't.
  745.  
  746. If you have a fancy adapter and a new video mode that works on it, and it 
  747. is not on our current list, PLEASE GET THAT INFORMATION TO US!  We will add
  748. the video mode to the list on our next release, and give you credit for it.
  749. Which brings up another point:   If you can confirm that a particular video
  750. adapter/mode works (or that it doesn't), and the program says it is UNTESTED,
  751. please get that information to us also.   Thanks.
  752.  
  753. SPECIAL NOTE FOR VIDEO-7 ADAPTERS:  To implement the new 'help' and TAB
  754. screens, FRACTINT takes advantage of a little-used option available on IBM
  755. EGA and VGA adapters - switching video modes without clearing video memory
  756. (accomplished by setting bit 7 of AL high when performing the mode switch).
  757. To implement interactive HELP in anything beyond CGA mode, FRACTINT switches
  758. to 640x200 CGA mode without clearing video memory, saves the first 16K of
  759. video memory, clears the first 16K of video memory, displays the help screens,
  760. and, when help-mode is finished, restores that 16K of video memory and
  761. switches back to the "old" mode without clearing the memory again.  This
  762. works great on all IBM adapters and other Super-VGA adapters - and on Video-7
  763. adapters as long as they weren't in one of their proprietary "Super-VGA"
  764. modes.  If your Video-7 adapter was in one of its Super-VGA modes (like
  765. 640x480x256), however, the adapter will not recognize the last mode switch,
  766. leaving you (and your computer) in video limbo.  This is, in the authors'
  767. minds at least, a bug in the Video-7 BIOS (Video-7 probably disagrees).
  768. In either case, you can continue to use the Super-VGA modes of your Video-7
  769. adapter - just don't hit the 'h' or TAB key when you do (think of yourself
  770. as HELPless).
  771.  
  772. =============================================================================
  773.  
  774.                   ***** Limitations and Uglies *****
  775.  
  776. This program uses 32-bit integer math to generate Mandelbrot and Julia Set
  777. fractals quickly (I do not have an FPU, and "normal" fractal packages take
  778. hours to draw on my machine).  The advantage of this option is speed:  quite
  779. simply, this is by far the fastest Mandelbrot/Julia Set fractal package that
  780. I have ever seen on a 386-class machine (on 286-class PCs and below, the
  781. program "only" runs at FPU-class speeds).   The disadvantage is accuracy.
  782. To keep as much accuracy as possible, the program represents numbers like
  783. 1.00 as 32-bit integers of the form [1.00 * (2**29)] (approximately
  784. 500,000,000).   This yields over 8 significant digits of accuracy, and works
  785. just great -- until the initial values of the fractal calculations on
  786. consecutive pixels differ only in the ninth decimal place.  At that point,
  787. the program does the best it can do -- it switches to its minimal drawing
  788. mode, with consecutive pixels in both directions having initial values
  789. differing by 1 (really 0.000000002) and disables zooming and panning.
  790. This happens more often than you might think, only because it's so easy
  791. (and fascinating) to zoom in on a tiny piece of the previous screen -- and
  792. you can force this situation with your seventh consecutive "maximum zoom",
  793. each of which zooms in on about 1% of the previous screen.  If it's any
  794. consolation, remember that this situation occurs when you are
  795. attempting to draw an area over your full screen that is less than
  796. 1/(10**13)th [~0.0000000000001] of the area of the full Mandelbrot set ***
  797. -- and you can always hit the "Home" key to get the previous screen(s) back.
  798.  
  799. ***  Or, you can think of it this way:   First, draw the full Mandelbrot set
  800.      in full VGA mode.   Then zoom in on an area represented by a SINGLE
  801.      PIXEL (which you can't do with the current program) and redraw it as
  802.      a full-screen image.   Then zoom in on an area represented by a single
  803.      pixel of THAT screen and redraw IT as a full-screen image.   Your
  804.      screen is now displaying an area representing ((1/(640*480))**2)th
  805.      [~0.00000000001] of the area of the area of the full Mandelbrot set -
  806.      not yet in minimal drawing mode.   Try it a THIRD time, though, and
  807.      you'll reach it - but not if you can contain yourself and zoom in on
  808.      an area no smaller than 1/100th of the third screen.
  809.  
  810. ***  Or think of it this way:  By the time you have hit minimal drawing mode,
  811.      your CRT would have to have a surface area of over one million square
  812.      miles to be able to display the entire Mandelbrot set.
  813.  
  814. Also, this being a public domain program and being true to that spirit, the
  815. program makes no attempt to verify that your video adapter can run in the
  816. mode you specify, or even that it's really there, before writing to it.
  817. It also assumes that every EGA adapter has a full 256K of memory (and can
  818. therefore display sixteen simultaneous colors in 640x350 resolution), but
  819. does nothing in particular to verify that fact before throwing pixels at it.
  820.  
  821. =============================================================================
  822.  
  823.                     ***** FRACTINT and .GIF Files *****
  824.  
  825. FRACTINT has for some time contained a "save-to-disk" command which
  826. saves screen images in GIF format.  With version 7.0, FRACTINT also has
  827. a "restore-from-disk" capability.  Unfortunately, this creates a problem.
  828. Compuserve's Graphics Interchange Format (GIF), in its official specification,
  829. does not offer a readily-available place to store the small amount of extra
  830. information that FRACTINT needs in order to implement its 'restore-from-disk'
  831. feature.   FRACTINT gets around this restriction in a non-standard manner,
  832. using the GIF format to store its screen image information and then saving
  833. its 'application-specific' information AFTER the official GIF terminator
  834. character.  This trick works with all of the popular GIF decoders that
  835. we have tested (although some of them require renaming the file to xxxx.GIF
  836. first).
  837.  
  838. Note, however, that these files saved by FRACTINT are NOT GIF files.
  839. For one thing, information after the GIF terminator has the potential to
  840. confuse the on-line GIF image viewers in wide use on the Compuserve network.
  841. For another, it is the opinion of some of the GIF developers (although not
  842. this one) that the addition of this extra information violates the GIF spec.
  843. For this reason, we are using the default filetype of '.FRA' instead of the
  844. traditional '.GIF', and are NOT portraying these files as .GIF files.
  845. If you wish to save FRACTINT files as true .GIF files, simply specify '.GIF'
  846. as  part of the savename option on the command line ('savename=somename.gif').
  847. FRACTINT will detect the '.GIF' filetype in the savename option and
  848. save its files in a totally compatible .GIF format, without the extra
  849. information.  Note that you will NOT be able to read true '.GIF' files
  850. back into FRACTINT with the 'R' command, however. 
  851.  
  852. Converting an existing FRActal file into GIF format suitable for uploading
  853. to Compuserve is easy.  Just type something like the following command
  854. at the DOS prompt:
  855.  
  856.              FRACTINT MYFILE SAVENAME=MYFILE.GIF BATCH=YES
  857.  
  858. FRACTINT will load up the 'myfile.fra' file, save it in true GIF format 
  859. as 'myfile.GIF', and return to DOS.
  860.  
  861. Note that the GIF specifications are constantly under review by Compuserve,
  862. and it is entirely possible that future enhancements to the GIF spec will
  863. provide for a standard way to store application information inside a GIF
  864. file.  It is the intent of the authors to switch to the use of any such GIF
  865. extensions in an upward-compatible manner if and when they become available.
  866.  
  867. =============================================================================
  868.  
  869.  
  870.    This program was compiled using Microsoft C (version 5.1) and Microsoft
  871. Assembler (also version 5.1) using the "Medium" model.   Note that the
  872. assembler code uses the "C" model option added to version 5.1, and must
  873. be assembled with the /MX switch to link with the "C" code.  Because the
  874. program simply got too large to distribute comfortably as a single .ARC
  875. file, and because a number of people now download it with no intention of
  876. ever modifying it, it is now distributed as two .ARC files - one containing
  877. this FRACTINT.DOC file and the executable program, and another containing
  878. complete source code (including a .MAK file and MAKEFRAC.BAT).
  879.  
  880. =============================================================================
  881.  
  882.          *** GIF Protocol Statement (required by Compuserve) ***
  883.  
  884. GIF and 'Graphics Interchange Format' are trademarks (tm) of Compuserve
  885. Incorporated, an H&R Block Company.
  886.  
  887. =============================================================================
  888.  
  889.              *** Distribution and Contribution Policies ***
  890.  
  891.    This is public domain software.   There is no warranty or acceptance
  892. of liability either expressed or implied with it.   Use it, modify it,
  893. distribute it as you wish.   Your uploading it to other bulletin boards and
  894. the like is specifically encouraged.
  895.  
  896. Contribution policy:    Don't want money.   Got money.   Want admiration.
  897.  
  898.  
  899.             Bert Tyler                    btyler on BIX
  900.             Tyler Software                [73477,433] on Compuserve
  901.             124 Wooded Lane
  902.             Villanova, Pa  19085
  903.             (215) 525-6355
  904.  
  905.  
  906. Super-VGA 256-color mode, Restore-From-GIF, Color-Cycling, FRACTINT.CFG, 
  907. and all KINDS of other code in collaboration with:
  908.  
  909.             Timothy Wegner                 [71320,675] on Compuserve
  910.             1955 Portsmouth
  911.             Houston, Texas  77098
  912.             (713) 522-7933
  913.  
  914.  
  915. Mouse support in collaboration with:
  916.  
  917.             Michael L. Kaufman             (accessible via EXEC-PC bbs)
  918.             2247 Ridge Ave #2k
  919.             Evanston, Il, 60201
  920.             (312) 864-7916
  921.  
  922.