home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Club Amiga de Montreal - CAM
/
CAM_CD_1.iso
/
files
/
263a.lha
/
Mandel_v1.3_rev#180
/
doc
/
Mandel.man
< prev
next >
Wrap
Text File
|
1989-07-03
|
41KB
|
859 lines
Mandel(1) AM*GA Programmer's Manual Mandel(1)
1mCREDITS for Mandelbrot Generator
0mThis document describes some of the many features of the
1mMandelbrot 0mgeneration program (revision #180), as written by
Olaf Seibert, KosmoSoft
Beek 5 or Vossendijk 149
5815 CS Merselo 6534 TN Nijmegen
The Netherlands The Netherlands
1mHi0m!
I assume that you are familiar with the operation of
the Amiga with respect to windows, gadgets, screens and all
other Intuition features. (And if not, just go RTFM).
Therefore, I will 3mnot 0mlist everything in menu-order.
Rather, I will only make some comments at some (most) of
them.
When 1mMandel 0mstarts up, it opens a screen of the same
size as your current Workbench screen, but in lo-res with 5
planes.
1mNOTE0m: There seems to be a (software) graphics bug when I try
to open a hires screen with a size of 672x266 (x4) pixels.
The part below about line 213 is simply not displayed,
though it is 'there'. Lores screens are not affected by this
bug (It's gotta be Dale's :-) I suspect the problem is in
the system function MrgCop() (in the graphics.library), or
something related to that, since other programs have the
same problem. (Maybe the problem will go away with Release
1.4 of Kickstart/Workbench.) Therefore, I forcibly make wide
hi-res screens a bit smaller, which may surprise you if you
are unaware of the reason.
1mMOUSE OPERATIONS
0mWith the mouse, you can select a rectangular part of the
picture that you may later enlarge or reduce. To start
selecting, you click the mouse in the inner part of the
window. Then you can click two opposite corners of the
desired rectangle. You may also double-click to select a
middle point of the rectangle. Then you only have to select
one corner. If you dislike the resulting flashing frame,
you can remove it by clicking in the sizing gadget. The
area you selected in the picture will remain valid until you
begin reselecting or change the coordinates of the entire
picture.
You will notice that as soon as the flashing cross
appears, a window pops up with the coordinates of the
current position. Normally it stays there until the
flashing rectangle disappears. In fact, it is updated every
time the lines flash. Since this takes some time, the
flashing may become aestetically unpleasant. Therefore the
3mRe and Im 0mwindow has a close box, which you are free to use,
and which will speed up the flashing.
5 May 1989 -1-
Mandel(1) AM*GA Programmer's Manual Mandel(1)
Sometimes a function will use a point as selected by
the mouse. This will work from the moment the flashing
lines appear until they disappear, even if you close the 3mRe
and Im 0mwindow in the meantime.
1mProject0m: 1mNew
0mWith this submenu you can create new pictures. They will
always fill your window, even if the ratio of width and
height is ridiculous. The 3mratio 0mnumber that appears in the
coordinates requester should be about 1.00. If it is much
more or less than this, your picture will be not
representative of the 1mMandelbrot set0m. If it is, for
example, 2.00, this means that the height of the current
window is twice the size it normally should be. It also
says you to select a wider area from the complex plane.
This number is updated each time you press return in one of
the string gadgets. You may have resized the window in the
meantime.
With 1menlarge 0myou can enlarge a part of the current picture
as you indicated with the mouse.
With 1mreduce 0myou can reduce the current picture to an area as
large as the area you indicated, which is located at that
place. This is useful to see some of the surroundings of
the current picture.
The 1mshift 0msubitem is somewhat special. A value of 0.5 means
that the new range you want to see is shifted 0.5 of the
size of the current range.
With 1mzoom in 0mor 1mzoom out 0myou can zoom in or out around a
center with a certain (linear) factor. The center point is
either given with the mouse (the position from the 3mRe and Im
0mwindow) or otherwise the center of the current picture is
taken. This value is not saved with the picture because if
you just zoomed in it is in the center of the picture, and
if you have not yet zoomed in, it would be pretty useless
information.
When you hit the 3mcontinue 0mgadget to start drawing, a
separate task is started to do the real work. This means
that the main program (or task) of 1mMandel 0mruns concurrently
with the drawing task, so you can continue selecting the
palette, for example. All other things besides the drawing
is done in the main task, so you cannot use the palette
while at the same time setting the pen table. Also,
changing some parameters (such as the pen table) takes
effect immediately, which will change your picture in the
middle.
When the picture is being drawn, you must view the
window as a part of the complex plane (that is the plane
formed by the real and imaginary axes). The formula that is
selected in the functions menu is applied (for C the complex
value is filled in that corresponds to the current pixel),
with Z = 0, and the result is put into Z, recalculated,
until the absolute value reaches at least a certain value.
5 May 1989 -2-
Mandel(1) AM*GA Programmer's Manual Mandel(1)
The number of calculations (or iterations, or depth) is
counted, and the color to be drawn is looked up in the pen
table. If the threshhold value is not reached in the
maximum number of iterations, entry #0 from the pen table is
used.
Ideally, there should be an infinite iteration to find if
the value ever reaches infinity, but of course this is in
reality an impossible task. Therefore, the higher you set
the maximum iteration count, the better the drawn picture
will approximate the 'real' Mandelbrot set. In fact,
Mandelbrot's set consists of those complex numbers that
3mdon't 0mreach infinity, even after infinitely many
iterations. But the prettiest pictures are usually from
near the border of Mandelbrot's set.
1mProject0m: 1mOpen
0mYou can read any IFF picture (type FORM ILBM) into 1mMandel0m.
This is most useful if it is indeed a picture generated by
1mMandel0m. The pictures can be of any size, and will be
clipped to the current window as appropriate. If it is too
small, the part of the window that is not covered is not
changed. This is also true with extraneous bitplanes.
Compatibility with files saved from V1.0 and V1.2 has been
insured.
1mProject0m: 1mSave
0mIf you have saved the current picture before, you can save
it again. That is also possible if you only changed the
current picture, that is, used 1mfill in0m.
1mProject0m: 1mSave As
0msaves the contents of the Mandelbrot Construction Window.
Together with the picture, some important information is
saved, such as the area of the 1mMandelbrot set 0mthat is
contained in the picture, and the rainbow color palette.
(Previously, the 3mscreen 0mwas simply dumped into the file.
Also, the saved coordinate information was only correct if
you saved your pictures borderless and moved into the upper
left corner. These misfeatures have been corrected in
V1.1.) During a save, the drawing of a picture is suspended,
to prevent creating corrupt IFF files.
1mProject0m: 1mStop
0mIf there is currently a picture being drawn, the drawing
stops. Otherwise, nothing happens.
1mProject0m: 1mQuit
0mYou may quit the program this way. This can also be done by
clicking in the close gadget. 1mMandel 0mwill ask you if you
are sure, when you have not saved the current picture.
Sometimes, when memory is tight, the requester cannot be put
up, and you would not be able to quit for this reason. For
this case, an extra keyboard command (CTRL-Q) was added that
does NOT ask you if you are sure.
1mOptions0m: 1mColors
0mWith this submenu, you can play with the colors and the
coloration of pictures.
5 May 1989 -3-
Mandel(1) AM*GA Programmer's Manual Mandel(1)
1mOptions0m: 1mColors0m: 1mSelect
0mIt is a way to individually select the pen number used for
each iteration count. Currently, the values you select this
way are not yet saved with the picture. You could, however,
write a batch file to set and restore the pen table. Beware
that when you select one of the other ways of filling in the
pen table, the values you have selected here are lost.
There is no way to undo accidental changes you made to the
pen table with this command, apart from the standard Amiga-Q
before you press Return.
1mOptions0m: 1mColors0m: 1mModulo
0mmeans that the pen color used for a pixel is calculated by
taking the iteration count MOD the number of available
colors. This is the default mode of operation.
1mOptions0m: 1mColors0m: 1mRanges
0mis a slightly modified version of modulo. The range width
is user selectable. This is the number of consecutive
iteration counts that produce the same pen number. If you
set this to 1 you get excactly the effect you get with
modulo. Starting from version 1.1, the pen table mode used
to generate a picture is saved with it.
1mOptions0m: 1mColors0m: 1mPalette
0mA real color palette, that you may recognise from the
Intuition reference Manual and Thomas Wilcox's and =RJ=
Mical's Mandelbrot program. I have extended it somewhat,
and put a hidden gadget to work. Try hitting the RGB! You
then meet the 1mrainbow mode0m. Almost everything in the
palette changes its function. Try and have fun!
1mOptions0m: 1mResolution
0mThis submenu enables you to change two types of resolution:
the screen resolution, and the drawing resolution. If you
select 1m10m/1m20m, 1m10m/1m30m, or 1m10m/1m40m, you may use 1mfill in 0mto fill in the
missing pixels. 1mBorderless 0mis another Special Feature of
1mMandel0m: it can make the window borderless to gain some extra
pixels for your picure. While you can't see them, all the
normal window gadgets are still functional in the same way
they were before. So to start selecting a window frame, you
must 3mstill 0mclick in the inner part of the window. If you
select borderless, the picture will be preserved. When you
change display resolution, your current picture will be
lost. However, the size and location of your 3mwindow 0mwill be
preserved as well as possible. Note that this can't be done
correctly in all cases. Also note that it is unavoidable
that the menus and requesters change in size and position if
you switch between Hi-res and Lo-res.
1mOptions0m: 1mParameters
0mThis puts up a requester to change some parameters of the
program. Currently these are the range width used for
3mranges 0mand the maximum iteration count for every pixel. It
may not be wise to alter parameters while a picure is being
drawn.
You can also select the size of the screen to be used by
1mMandel0m. The coordinates are expressed in default Workbench
5 May 1989 -4-
Mandel(1) AM*GA Programmer's Manual Mandel(1)
measures (hires and non-interlaced). The values you supply
are advisory only; a certain minimum size is taken into
account.
1mOptions0m: 1mPriority
0mWith this submenu you can select two priorities for the
drawing task. Normal means that the drawing has the same
priority as the main task, low means that it is lower by
five. This has the advantage that you can leave 1mMandel
0mdrawing in the background, without slowing down any other
programs you would like to run.
1mDraw
0mThis menu and its submenus let you choose what exactly gets
drawn. First, you can select the what calculation is to be
performed in the 1mDraw0m: 1mFunc 0mmenu. Then there are two kinds
of plotting functions possible: the first is called just
after each iteration of the calculation function, and is
therefore called 1miplot0m, and the other is called after the
end of all iterations and is thus called 1meplot0m. To the
1meplot 0mfunction is available the reached iteration count, the
end value of Z, and the pixel we are currently considering.
To the 1miplot 0mfunction is only the current value of Z
available.
1mDraw0m: 1mFunc
0mHere you can select what function is used while iterating
complex values. Only the first function is 'real', (ie it
is 1mMandelbrot0m'1ms function0m), the others may be less
interesting and certainly also slower. You may try them,
however, if you like. If you want to experiment, also see
the section on user-programmed functions below. Starting
from version 1.1, the function number used to generate a
picture is saved with it.
Only the functions marked 1miplot 0mcall the iplot function.
Especially the first Mandelbrot function does not call the
1miplot 0mfunction, just to be slightly faster.
1mDraw0m: 1mIplot
0mThis is the function that may be called during iterating the
calculation. There are currently two possibilities: the
'empty' function that does nothing, and one that plots the
current value of Z on its proper place in the window. This
is done by incrementing the color, so you can seen which
values of Z are plotted multiple times.
1mDraw0m: 1mEplot
0mThis is the function that alwas is called after iterating
the calculation. You can either plot the current iteration
count (or depth), which is what you usually would want to
do. You can also plot the value of Z that caused the
iteration to terminate. If it is within the circle with
radius sqrt(8), the iteration was terminated because it
reached the maximum iteration count.
1mSOURCE
0mYou should have gotten this program together with the source
in C. If you didn't, somebody somewhere along the path from
5 May 1989 -5-
Mandel(1) AM*GA Programmer's Manual Mandel(1)
me to you illegally left it out. The document called 1mNotice
0mspells out the redistribution criteria, one of which is that
the source must always be given with the program itself.
Another is, that when you use any part of my source in a
program of your own, you must 3malso 0malways give the entire
source of your program with it.
1mPRECISION
0mIt is important to know that there are two versions of
1mMandel 0m(or MbCS, as some like to call it). The one uses
single-precision, Motorola Fast Floating Point, the other
uses double-precision, IEEE floating point. That is the
only difference between these versions. The FFP version has
these letters in the screen title bar, and the IEEE Double
Precision shows DP to indicate that it is the exacter
version of the two. Using Fast Floating Point (FFP), you
may notice (at high magnifications) some large
irregularities in lines that ought to be smooth. Or even
worse, around the point 2.0 with a picture hight of about
1e-6, you go below the significance of single precision. If
you see such distortions, you know it is time to start using
the double-precision version. In that case, remember to
have the mathieeedoubbas.library in your LIBS: directory, or
1mMandel 0mwill abort even before it really starts up.
1mREVISION
0mThis manual describes 1mMandel 0mversion 1.3, revision 180. If
your version indicates a higher number, (in the © About
Mandel menu) it presumably has been upgraded/patched
officially. A lower number indicates a version that is out
of date. For you source hackers: please select some random
negative revision number, and stick to it. This way there
won't be any confusion about which version is which.
1mBATCH MODE
0mUp until now, I have been discussing some pretty obvious
things. But that changes right here: now come the 3mbatch
mode 0mand for the really daring, the 3muser programmed
functions.
0mIf you invoke 1mMandel 0mwith a filename as argument, that file
is read and executed after 1mMandel 0mopens its screen.
Alternatively, you can start a batch file from the BATCH
menu.
1mBatch0m: 1mWait
0mIf you invoke this during execution of a batch file, its
execution will be suspended, just as if a batch 'wait'
command was executed. This also implies that the batch will
continue as soon as a picture finishes drawing.
1mBatch0m: 1mContinue
0mThis will simulate finishing a picture. It will continue
the batch if it was waiting due to a wait command or menu
selection.
5 May 1989 -6-
Mandel(1) AM*GA Programmer's Manual Mandel(1)
1mBatch0m: 1mAbort
0mIf the batch is running, it is aborted after the current
command finishes.
You can write a batch file with any normal text editor you
like, as long as it is able to write normal ASCII files.
The following batch commands are implemented:
3mdraw, fillin
0mstart the drawing. The batch continues while the drawing
takes place.
3mwait
0mstops the batch until the drawing finishes. It gives the
user a chance to operate 1mMandel 0min the mean time. If the
drawing is aborted, the batch does not continue
automatically, but must be restarted with the batch continue
menu item.
3mleftedge, rightedge, topedge, bottomedge <real: value>
0mwhich take a single real argument, and set the obvious
thing.
3mstop
0mstops the drawing.
3mshift <real: hshift> <real: vshift>
0mtakes two real arguments (horizontal and vertical shift
amount) and does the same thing as the project-shift
requester.
3mopen, saveas <string: filename>
0mtake a string argument to load a picture from or to save it
in. There is no save command with a default file name. The
file name starts with the first non-blank character after
the command and includes the entire rest of the line
(including spaces etc.), unless it is enclosed in single or
double quotes (which cannot be escaped).
3mpixelstep, numcolors, maxdepth, rangewidth, wbwidth,
wbheight <integer: value>
0mwhich take a single integral argument.
3mPixelstep 0mis the checkmarked menu items Normal (1), 2, 3 and
4, but is not limited to those values. Be sure not to set
it to any value less than 1!
3mNumcolors 0mis not very useful; the value should be equal to 2
to the power (the number of planes), i.e. 16, 32, or 64.
Maybe interesting to change temporarily to affect the pen
table calculated by the modulo or ranges commands.
3mMaxdepth 0mand 3mrangewidth 0mare from the parameters requester,
and so are 3mwbwidth 0mand 3mwbheight.
0m 5 May 1989 -7-
Mandel(1) AM*GA Programmer's Manual Mandel(1)
3mborderless <integer: doit>
0mtakes an integral argument and makes the 1mMandel 0mwindow not
borderless when the value is 0 and borderless otherwise.
3mhires, interlace, halfbrite <integer: doit>
0mwork like borderless, but only take action when the command
3mfixdisplay 0mis given.
3mraindist, rainrmax, raingmax, rainbmax <integer: value>
0mtake an integral argument, and select the appearance of the
rainbow palette. The values must not exceed the current
number of available color registers (i.e. 16 or 32 depending
on screen mode). They take effect when the command
3mfixrainbow 0mis executed.
3mcolor <integer: register> <integer: r> <integer: g>
<integer: b>
0mtakes 4 integral arguments: the color register number and
the red, green and blue values. It immediately changes that
color register.
3mdrawpri <integer: priority>
0mits integral argument is the amount to raise the priority of
the drawing task, relative to the priority of the main
task. Only negative values are recommended. It is unwise
to raise the drawing priority above the priority of the main
program, since in that case the main program, the batch, and
many other programs you might have running won't run until
the picture is finished. If this command is given after the
drawing has started, it takes effect immediately.
3mselect <integer: depth> <integer: pen number>
0mtakes two values: the depth, and the corresponding pen color
to be set in the pen table. This also sets the "pen table
mode" to select.
3mmodulo
0msets the pen table mode to modulo, and also recalculates the
pen table accordingly.
3mranges
0msets the pen table mode to ranges, and also recalculates the
pen table according to the currently selected range width,
as set with the 3mrangewidth 0mcommand.
3mfunction iplot eplot <integer: function number>
0mFunction selects which function you want to draw.
Mandelbrot's function is number 1, and the other functions
from the menu are 2 through 5, respectively (pretty
5 May 1989 -8-
Mandel(1) AM*GA Programmer's Manual Mandel(1)
obvious!). The User Programmed Function is number 4. Iplot
and eplot select the iteration plot and end plot function,
respectively, also in the order as shown on the menu.
3mquit
0mExits 1mMandel 0mafter the batch file finishes, is aborted, or
executes a 3mwait.
program, prelude
0mstart the definition of a little program, to calculate an
alternative function. The program or prelude ends with a
line with only 3mend 0mon it, which translates into an
end-of-program marker. You must always define a prelude
before the main program. If you re-define a main program
and a prelude has also been defined earlier, then the
prelude is not replaced unless you (first) explicitly
re-defined it. For a description of the actual "programming
language" see its own section in this manual. The function
number you need to select (with the 3mfunction 0mcommand) is 4.
3mreg <integer: register number> <real: value>
0mSet a register of the calculator to the given value. You
could use this to supply some value for a parameter in your
user programmed function. You can only set a real value so
the valid range of register numbers is from 0 to 31,
inclusive.
3mbatch <string: file name>
0mends processing the current batch file, and starts with the
named file. [With ARexx, it is supposed to start the given
rexx-macro asyncronously, but see the ARexx section.]
3m# ; /
0mcomment commands. Any remaining text is ignored. Both
shell and assembler comment symbols are supported, and the /
is included so you can write nice C-style /* comments */.
Batch peculiarities:
- Error messages are not very helpful, and you don't always
see them because they go into a window on the Workbench
screen.
- No range checking is done on supplied numeric values; use
this freedom wisely.
- Excess arguments or trailing spaces are usually ignored,
but don't count on this.
1mUSER PROGRAMMED FUNCTIONS
0mIn addition to the three functions selectable from the
Draw:Func menu, you can program your own in the batch
language. This feature has been added just to be uselessly
over-complete.
The environment for your function is exactly the same
5 May 1989 -9-
Mandel(1) AM*GA Programmer's Manual Mandel(1)
as for the other functions: you need not (and in fact,
cannot) specify the iterations, or the test against the
termination value.
To enable you to calculate your function, you can write
a program for a simple calculator. That calculator has 16
registers for complex numbers (or you can use them for 32
real values), and real and complex operators for assignment
(copy), addition, subtraction, multiplication, and it can
put whole numbers into registers. There is no provision to
divide, since you could run the risk of dividing by zero.
The actual procedure followed to calculate a picture with
user programmed function is:
For each pixel in the window:
- Initialize registers 0, 2 and 3 to Z, C and Mouse
respectively.
- Execute the prelude.
- Then, while abs(Z) < some value, repeat:
- Register 1 has been initialized.
- Execute the main program.
- Call the iplot function.
- Call the eplot function, in which usually the number
of iterations decides which color the current pixel
should get.
The syntax for a single step in the computation is described
by the following regular expression:
{ "r", "c" } 3mdest 0m"=" 3mopnd1 0m[ { "i", "+", "-", "*" } 3mopnd2 0m]
where { and } indicate a choice between several
alternatives, stuff between [ and ] is optional, 3mitalics
0mindicate a number to fill in, and text in quotes indicates
literal text that is required at that point.
There may be a maximum of 62 steps in the prelude and
program together.
The "r" or "c" select the type of operation: 3mreal 0mor
3mcomplex. 0mIn case of 3mreal 0moperations, the 16 3mcomplex
0mregisters can be viewed as 32 3mreal 0mregisters, with registers
0-15 containing the 3mreal parts, 0mand registers 16-31 the
corresponding 3mimaginary parts.
0mAs said, every line in the program is a single step in the
computation of your function. Every step describes a simple
operation (*, + or -) on the values in two registers, and
the result is put in the designated register after the
calculation. 3mDest 0mis the number of the register to put the
result of the operation. Likewise, 3mopnd1 0mand 3mopnd2 0mare the
numbers of the registers which give both operands for the
operation (with the exception of the "i" operator). So, for
example, the following program will be acceptable:
5 May 1989 -10-
Mandel(1) AM*GA Programmer's Manual Mandel(1)
3mprogram
0mc 3 = 0 * 0
c 0 = 3 - 2
c 0 = 0 + 1
end
Note that the 3mprogram 0mnot really belongs to the program; it
is the batch command that indicates that a program follows.
The 'end' on the other hand is a real instruction.
The *, - and + do the obvious thing. Remember, all numbers
here are the numbers of the registers involved.
With the "i" operator, you can form a complex number from
two small integral numbers. (Small means ranging from -128
to +127, inclusive.) The first number is the real part, and
the second number becomes the imaginary part. If the
operation is real instead of complex, the second number is
ignored, but still required. For future compatibility, you
should use 0 there.
There are four registers with a predefined meaning.
You can use the other 12 registers any way you like. They
are not initialized to any particular value, and therefore
they should not be used unless you set them yourself
before.
Register 0 is meant as place for Z in the formula.
Before the prelude it is initialized to 0 + i*0, and it is
not changed between iterations. It is, however, examined to
see if the calculation is finished. Therefore, you must
leave the result of your calculation here.
Register 1 is changed before each iteration. The real
part contains the square of the real part of Z, and the
imaginary part contains the square of the imaginary part of
Z. These are calculated during the iteration check, so there
is no cost in making it available to you.
Register 2 contains C. It is initialized before the
prelude, and it is not changed between iterations. You may
change it if you feel this is necessary, though it is useful
if you use the provided value at least once. You may notice
now that if you leave the last line (before the 3mend 0mof
course) off the above supplied example, you get a program to
calculate Mandelbrot's function. In fact, if you wish to
use it, you will find that it is not extremely slower than
what you would get from using the optimized function from
the menu.
Register 3 contains the mouse position, as it was last
shown in the 3mRe and Im 0mwindow (or if you closed it, could
have been shown there). It is initialized before the
prelude, and it is not changed between iterations. You may
change it if you feel this is of no value to you. You can
produce interesting formulas which depend on the mouse
position. Such a picture would be difficult to reproduce,
5 May 1989 -11-
Mandel(1) AM*GA Programmer's Manual Mandel(1)
unless you arrange to save the value in a high numbered
register in one prelude, and can use another prelude later
to retrieve the old value.
Registers 4 through 15 are free for you to use.
Another example. It is possible to define a prelude
and program to draw the Julia set belonging to a point. For
those not familiar with Julia sets, I'll briefly describe
their relations and differences with Mandelbrot's set.
Both sets are based on the same function, Z = Z*Z - C. But
where in Mandelbrot's case the initial value of Z is
constant (0) and C varies with (corresponding to) each
pixel, for a Julia set the initial value of Z varies
corresponding to each pixel and C is constant. For
different values of C you get different pictures, of
course.
The following prelude and program calculate a Julia set
with for C the location of the mouse when you select the
menu item to start drawing. The value is visible in the 3mRe
and Im 0mwindow.
3mprelude
0m# This sets the initial value of Z
# to the current pixel
c 0 = 2
# Save C for later
c 15 = 3
end
# The following part is iterated:
3mprogram
0m# Calculate Z*Z
c 4 = 0 * 0
# Calculate [Z*Z] - C
# Remember register 3 is the mouse position
c 0 = 4 - 3
end
If you later want to re-use the same value for C, you
simply load another batch file with 'c 3 = 15' to restore C
instead of the line 'c 15 = 3'. It is currently not
possible to use floating point constants in your program;
the only way to input them is with the mouse or with 3mreg
0mcommands in a batch file.
Currently, the user programmed function is not saved
with the picture, only the fact that it used a user
programmed function. This is no fatal disadvantage, since
is no way to look at (or change) the function using the
menus of 1mMandel0m. The standard procedure is to supply a
batch file with the saved picture which re-programs the
function used.
1mSLIGHTLY TESTED AREXX INTERFACE
0mKnowing Rexx from VM/CMS systems [please note that Rexx was
not originally invented by I*M], I wanted to make an ARexx
interface. But there was one problem: I don't have ARexx
5 May 1989 -12-
Mandel(1) AM*GA Programmer's Manual Mandel(1)
myself. But then along came MinRexx [on Fish #188] by
Radical Eye Software (also known as Tomas Rokicki), which
looked so utterly easy to use. And necessary header files
and glue routines were supplied with DME [on Fish #168/169].
So, after examination of Tomas' code, I easily added the
MinRexx interface to Mandel. It compiles, links, and even
runs. Without ARexx. It creates a named message port, so at
least that part works. But the rest? I didn't know. I
simply didn't know. I asked someone with ARexx to give it a
try, and he told that it works. But I cannot personally
guarantee that, nor give any hints about proplems one might
experience.
Maybe somebody would care to donate me ARexx? Because,
if it does not work, I cannot fix it. May be I secretly
hope it does not work :-)
The intention is, by the way, that batch files you
start up, either via the Batch menu, or as a command line
parameter, are fed though ARexx, [and if that fails, are
done the same way as they are without ARexx interface] and
that all normal batch commands are accessible through
ARexx.
1mREVISION HISTORY
0mV1.3 2 Mar 1989 - 16 Apr 1989
Added batch commands prelude, reg, iplot, eplot, stop.
Initialization of register #3. Zoom menu actions (suggested
by Peter Larsen). Slightly tested ARexx interface.
Supported when time permits.
V1.2 23 Jan 1989 - 29 Jan 1989
Added user programmable functions, priority submenu (idea of
Peter Larsen). Made string part in MAND chunk larger: Files
saved from V1.1 will work as if they were V1.0 files (and so
the info that was added in V1.1 is lost in the transition).
Released. Not supported anymore.
V1.1 06 Jan 1989 - 22 Jan 1989
Added batch mode, selection of screen size; removed most
annoying features of save from a window and load into a
differently sized window than originally saved from; fixed
annoying deadlock/crash when attempting to save before
anything had been drawn; fixed incorrect IFF file format
with respect to MAND chunk; added more information in MAND
chunk (function number, pen table mode, selected screen
size); finally did the select menu item.
Not released. Never supported.
V1.01 16 Sep 1987
Quick check for graphics bug made a bit better.
Not released. No longer supported.
V1.0 15 Sep 1987
Quick check for graphics bug.
Released on Fish disk #111. No longer supported.
5 May 1989 -13-