Gnarly DOS Downloads











You can get two downloads from this page.  The first includes the executables and source for three gnarly DOS programs: Spiro, Vine, and Julgnarl.   The second, described down at the bottom of the page, is for a package called Freestyle CA.


Spiro is a simple DOS graphics program that draws patterns like a Spirograph. When it starts, you can get rid of the filling by pressing F. You can stop the automatic randomizing by pressing SHIFT+R, and randomize as you like by pressing R. Or you can leave it alone and let it change on its own, like a screen-saver. The curves being drawn are mathematically known as epicycloids and hypocycloids. They have a mandala-like quality. If you stare at SPIRO for awhile, you may start to feel kind of strange. If you feel *too* strange, press Q to make the program stop.


Vine is based on an algorithm suggested by Clifford Pickover; it takes the sine of the sine function. Some people call this algorithm "Popcorn," but in the startup mode I use, it looks more like a vine. In startup mode, Vine moves across the screen in an undulating path, drawing branches out from successive points. It also cycles the colors automatically. You can sit and watch Vine like a screen-saver, or you can use the hot-keys to affect what is going on. It's hard to remember the hot-keys, so you might try printing the *.HLP file out for reference. More detailed information about the Vine program can be found in the VINE.INF file included in VINE1EXE.ZIP.


Julgnarl is a program where the user can seek the gnarl in a large space of possibilities by selecting an attractive image and generating eight mutations of it. In this context, a gnarly Julia set would be one which is not just a simple closed curve (too orderly) and which is not some disconnected dusting of pixels (too disorderly). The patterns in Julgnarl are Julia sets (named after the French mathematician Gaston Julia, who invented them in 1918!) A Julia set is gotten by iterating some kind of function on points in the complex plane, and finding the boundary between the points whose iterations get very large and the points whose iterations stay bounded. Quadratic Julia sets are quite well known, and cubic Julia sets appear in, e.g., the software package: Josh Gordon, Rudy Rucker and John Walker James Gleick's Chaos: The Software, Autodesk 1990. But Julgnarl has, I believe, the first quartic Julia sets ever computed. ("Quartic" means "based on equations with highest power four".) In the past, people trying to find higher-order Julia sets have made the mistake (at least in my opinion it's a mistake because the shapes are not very interesting) of staying with quadratic equations, but using quaternions instead of complex numbers. There is a sense in which all of the quartic Julia sets are cross-sections of a single, VERY gnarly eight- dimensional object. By the same token the quadratic Julia sets form a four-dimensional whole and the cubic Julia sets form a six-dimensional whole. You step along the axes with the arrow keys and by varying the parameters. The algorithm I use for Julgnarl is the inverse iteration technique described in H.O.Peitgen and D.Saupe, THE SCIENCE OF FRACTAL IMAGES, Springer-Verlag, 1988; see also H.O.Peitgen and P.H.Richter, THE BEAUTY OF FRACTALS, Springer-Verlag, 1986. For an n-degree Julia set, you keep solving degree n equations. The inverse iteration method is "holistic" in that you have to compute the whole fractal to compute any part of it. This means that when you zoom in you have to keep track of the points offscreen. I used a hash table for this; the first time I've ever had call to use one of those! I didn't do quintic Julia sets yet because (gnarly surprise in the History of Mathematics!) there is no formula for solving fifth-degree equations. That is, there is a quadratic formula to solve quadratic equations, formulas for cubic and quartic equations, but no quintic formula. I could of course numerically beat the fifth and higher-order equations to death; indeed I'd like to do this for once and for all for arbitrary degree n. After the quadratics, the cubics surprised me, and after the cubics the quartics surprised me again. I look forward to being surprised a *lot* by the n-degree Julias one of these days.

About Using The Source Code

The source code for the programs is for building a DOS application on a DOS machine. The source code for the Spiro program is in Turbo Pascal, and the source code for Vine, Calife, and Julgnarl is Borland C++. As I don't currently have a Pascal compiler, I was unable to test if the Spiro source code still compiles correctly. (Sometimes, with old source-code the mysterious process of "bit-rot" sets in!) I did recently recompile the source code for Vine, Julgnarl, and Calife, using Borland C++ 4.0. If you have this particular compiler, you need only start it up in Windows, load the relevant project file, and select Make. Note that the Borland C++ 4.0 project files have the *.IDE file extension. These three programs can also be compiled with the less expensive Borland compiler known as Turbo C++. This compiler can't use the *.IDE project files, instead it uses *.PRJ project files. I provide a VINE.PRJ file, but you would need to make your own JULGNARL.PRJ. Your project files should include all of the *.OBJ and *.CPP files that are in the relevant ????1SRC.ZIP file. Your project file should also include the Borland Graphics library GRAPHICS.LIB (or you can adjust a Turbo C++ menu-setting to link in this library automatically). Use the LARGE model type for JULGNARL and the SMALL model type for VINE. If you wish to use a different compiler, you will need to check your compiler manual for the names of the graphics functions analogous to such Borland Graphics functions as putpixel(); also you will not want to link in the special Borland module EGAVGA.OBJ. It may also be that the randomizing functions of your other compiler have different names from the names used by Borland. It is fairly easy to port any of these programs to a windows-based operating system such as Windows, Macintosh, or X-Windows. First you have to find the appropriate names for the memory allocation functions, the randomizing functions and the handful of graphics functions. And then you need a top-level widowed program that executes a step of the target program loop whenever there's no messages on the queue.

Download Rucker's DOS Software With Executables and Source Code. (280K). Posted March, 1994.

GNARLY.ZIP is a compressed zip file containing six further zip files. These files can in turn be unzipped to find the executables and the source code for the three programs. The files with "EXE" in their names include an executable DOS graphics program with support files. These programs should run on any DOS machine with VGA graphics. The files with "SRC" in their names include source code for the corresponding "EXE" programs. If you are not interested in programming, then you may not want to bother unzipping the source code. With the exception of Spiro, the source is in each case complete, and was in fact used to build the corresponding "EXE" program. The compiler used was Borland C++ 4.0. If you know programming, then you may be able to use the source code to build an executable for a different platform, e.g. Mac, Unix, Windows, etc. (If you manage to do this, let me know!) All of these files are provided "as is," with no guarantees. Rudy Rucker does not undertake to provide any technical support whatsoever.

In the fall of 1988, I wrote a disk's worth of forty-nine little standalone cellulaar automata DOS programs, mostly in assembly language, each 1K to 10K in size.  I sold a few copies of these by mail-order on floppy disks under the title Freestyle CA.  It turns out they still work, provided that you go out from Windows into a fullscreen DOS Command Prompt session.   Check the READ.ME file that comes with the programs for details.

Download the Freestyle CAs Cellular Automata Software . (280K). Posted January 11, 1999.

 Home         Biography         Books        Writing         Painting        Classes         Email