   FUNCY 2: A GRAPH PLOTTING APPLICATION

---- NB THIS APPLICATION IS SHAREWARE -----


THIS FILE DETAILS REVISION HISTORY, DETAILS OF BUGS AND PLANNED UPDATES

SEE !HELP FOR INSTRUCTIONS ON USE AND LICENCE CONDITIONS

JUST BECAUSE THIS FILE DOESN'T CONTAIN THE LICENCE CONDITIONS IT DOESN'T
MEAN THERE AREN'T ANY ---- OK?

ALSO SEE FILES DIRECTORY INSIDE !FUNCY2 DIRECTORY FOR SOME EXAMPLES


 ======================  IMPORTANT BIT NUMBER ONE  =======================

PLEASE PLEASE PLEASE INFORM ME OF ANY BUGS YOU FIND AND ANY SUGGESTIONS FOR
IMPROVEMENT.  I AM KEEN TO DEVELOP THE PROGRAM FURTHER AND WOULD THEREFORE
INVITE YOU TO BECOME A REGISTERED USER.  I CAN'T PROMISE AN IMMEDIATE UPDATE
(UNLESS THERE'S A REALLY DIRE BUG) BUT THE MORE PEOPLE WHO REGISTER, THE
SOONER I'LL BE ABLE TO AFFORD SOME PRMS AND DO A PROPER JOB (as we say down
here).

IF ANYBODY IS USING THIS IN AN EDUCATIONAL ESTABLISHMENT COULD THEY TELL ME
HOW THE SOFTWARE SURVIVES.  I'M ALSO INTERESTED TO KNOW IF IT RUNS ON A
NETWORK.

SO...  REPORTS OF BUGS, FAT CHEQUES OR ANY COMMUNICATION REALLY TO

RICHARD BLYTHE
37 WELL WAY
PORTH
NEWQUAY
CORNWALL
TR7 3LS



All files except WimpHeap library copyright (c) 1994 Richard Blythe

WimpHeap library is courtesy of Ben Summers and (c) Acorn Computing Magazine
December 1993.  Without WimpHeap this program could not be written so thanks
Ben and thanks Europress for such a good magazine.
                                                         

 ======================  IMPORTANT BIT NUMBER TWO  =======================

READ IMPORTANT BIT NUMBER ONE AND THE !HELP FILE


 =====================  IMPORTANT BIT NUMBER THREE  ======================


Re Newlook vs Oldlook.

This application was developed using the NewLook sprites.  When I tried out
the 'OldLook' sprites, they looked a bit odd, so an alternative set of
Templates 'OldLook' is supplied if you need them.  If you do, follow these
instructions:

1)  Shift+Double click on !Funcy2.

2)  Click MENU over the 'Templates' icon.

3)  Move across "File 'Templates'" and down to "Delete" and click with
    SELECT.

4)  Click MENU over the 'OldLook' icon.

5)  Move across "File 'OldLook'" to "Copy" and further to the "Copy" box.

6)  Press CTRL-U and then type 'Templates' and press RETURN

7)  Now run !Funcy2

If you ever need the original Newlook templates back then follow the above
procedure highlighting NewLook rather than OldLook.


UPDATES SO FAR
==============

This is basically the first version of Funcy but you'll have noticed it is
called Funcy 2 so I had better fill you in about version 1 which actually
never got much further than v0.90!


VERSION 0.90 (Sometime in 1993)

Original version of !Funcy.  Terrible user interface, really bad
opton/optoff sprites (pre NewLook), even worse bumper buttons for colour
selection, only 8 plots supported.  HOWEVER it looked quite nice in some
respect as it used lots of outline fonts, which slowed things down nicely as
well though.  Made great use of the WimpExt module which, although it saves
programming time has a few 'features' which annoyed me.  Options such as
zooming never quite got implemented before I started on:


VERSION 2.00 (Started 20.1.1994 - Completed 13.5.1994)

Completely new user interface (still not brilliant but that's something that
I'll sort out in version 3) with lots of panes to allow for many plots. 
Uses all the lovely !NewLook sprites - but see above if you haven't got
!NewLook.

Abandoned use of the WimpExt module, partly due to aforementioned features
but also because I felt I was "cheating."  (I do have my pride)

(NOTE TO JON RIBBENS AND DOGGYSOFT:  Your WimpExt module is very good in
lots of areas and probably invaluable to machine code programmers but I felt
for this purpose it was not entirely suitable.  This is not a reflection on
your coding, more my personal idiosyncracies!)

Support for preset functions with range and user-definable functions added.

Greater control over appearance of final graph added with ability to resize
as well as move graph from 'Appearance' window.  Facility to label graphs
added but gets confused with step sizes containing decimals (see later)

Ability to do calculus and transformations added - and it worked first time,
ok second time but even so :-)

Trace window now has ability to round off position to sensible no of dps or
sfs.  See later for feature info, though :-(

Calculation of graphs now done before plot to save time when redrawing
windows (it's still somewhat slow though - see later)


VERSION 2.01 (21.05.1994)

Grid and substitution of functions made more reliable.

Function key shortcuts added

New file format - saves range and other parameters as well


VERSION 2.02 (22.05.1994 - rapid updates don't you think?)

Graph labelling doesn't muck up rest of desktop when using multiscan
monitor.

More sensible spacing in the panes of plot, user, preset and transform
windows.

Message_PreQuit now supported.  No more silly 'Are you sure you want to
quit?' windows appearing behind the 'You may now switch off safely' message.
Also won't shutdown system if only doing a 'Task -> Quit' from the Task
Display window (but who ever closes down applications that way anyhow?) 



KNOWN FEATURES (VERY IMPORTANT)
===============================

By now you'll have realised 'feature' is a euphemism for 'bug'.  I'm going
to stick my neck out and say that Funcy 2 is relatively bug-free :-) 
Relative to what is for you to find out and tell me.  The program has
survived my personal use (including checking my A level maths revision when
it comes to differentiating functions like '2sin(x)-3cosec(x)' which my
teacher seems to be keen on) but whether it can survive your use is another
matter (please read licence conditions... I cannot be held responsible for
loss etc nor for incorrect answers in your maths homework!)

The things I know about are:

rounding off of mouse position in trace window.  Doesn't give quite the
right answer sometimes as decimal points get in the way rather.

labelling is a little ugly I think you'll agree.  Nasty rounding can occur
which results in silly labelling appearing.  Also labels can crash into axes
- something I was trying to avoid but this labelling is only an interim
measure as it is.  If you need to have labels, choose fairly round axis step
sizes like 2 or 5

windows that you enter functions into may not always be updated properly if
you don't OK them manually before selecting a new function to edit.  (This
is fairly rare)

sitting around for hours waiting for the output window to redraw and the
graphs to be calculated.  See main !Help file for hints on how to reduce
this time.

if you try to plot functions which map to very large numbers you'll probably
get a 'Number too big' error.  In theory my error trapping should catch this
but it doesn't.  (Occurs with exponential functions with a large domain)

lack of support for E notation.  You can't enter Es into numerical fields
(like in the range window) and if you do so in a function definition (either
user or direct plot) you'll either get an undefined function error or if
you've defined a function 'e' this will be evaluated.  For example 2E-6x
will get evaluated as 2*e(-6*x). The trace window doesn't deal with Es very
effectively and who knows what the labelling routine does....  If you MUST
use 'E's (the mathematical function rather than the drug) then do
(2*10^-6)x to achieve 2E-6x.

also I don't recommend zooming up or down by more than a factor of 10 - or
you'll have time to boil a kettle, put up some shelves and do that loft
conversion before the screen update is completed.

THINGS WHICH ARE NOT MY FAULT

Considering this is written in Basic and I have never got closer than 10
metres (sorry 30 feet!) to a Risc Os Programmers Reference Manual I don't
think I've done a bad job actually. (It's also the first release version)

However the program relies on the BASIC V rom to do the calculations and
this has a number of 'features' which I didn't know about until I wrote
this.  I may divulge these at a later date but at the moment I feel things
could get a little involved.  Suffice to say if you're really interested,
look at the Presets file in !Edit and try to suss out why the cuberoot
function is defined as it is rather than the more obvious 'x^(1/3)'  If
you're lost by this then the problems caused by the BASIC rom probably won't
concern you EXCEPT for this one...

I noticed this when I had an Electron (don't laugh) but it's a problem that
also appears in BASIC V.  For calculation, values are stored as floating
point numbers.  However for input and output in the range window for
example, strings must be used.  The conversion routines supplied by Mr Acorn
in BASIC - STR$ and VAL - do not always return the correct result.  This
manifests itself in 8.4 turning into 8.39999999 for example.  I haven't
investigated BASIC VI to see if it's any better but I am seriously
considering writing my own routine to cope with this.  Whether this will
involve in developing my own way of storing values or my own STR$ and VAL
functions remains to be seen but if I crack it it will be a cry of Eureka I
feel.

Anything which doesn't comply to the RISC OS Style Guide is understandable
as I haven't seen it.


PLANNED UPDATES
===============

In the dim and distant future a version 3 is planned with (guess what) a new
user interface.  I invisage the windows staying roughly the same but a
!Wordz style button-bar to access them rather than this somewhat cumbersome
menu system.

But before then:

speedier redrawing is my first priority (machine code called for perhaps)

curing the inaccurate rounding in the trace window

better labelling (using outline fonts rather than the scaled down system
font - yuck yuck yuck)

better error trapping

scroll bars which do sensible things on zooming


Also planned:

ability to save output as a sprite and possibly even a draw file (will have
to see PRMs first though, hint)

Artworks style quality knob where you can decide the threshold for
continuous or discrete plotting

better colour selection facilities - like the one in !Draw for example - so
you can select a colour other than the 16 basic Wimp ones

print out facilities

second and further derivatives and integrals

transformations of transformations and calculus functions

ability to enter differential equations/plot direction diagrams

possibly even parametric formulae or polar graphs (bit ambitious that one I
think) (I hate polar graphs anyway!)

plus anything you suggest


 ======================  IMPORTANT BIT NUMBER ONE =======================

PLEASE PLEASE PLEASE INFORM ME OF ANY BUGS YOU FIND AND ANY SUGGESTIONS FOR
IMPROVEMENT.  I AM KEEN TO DEVELOP THE PROGRAM FURTHER AND WOULD THEREFORE
INVITE YOU TO BECOME A REGISTERED USER.  I CAN'T PROMISE AN IMMEDIATE UPDATE
(UNLESS THERE'S A REALLY DIRE BUG) BUT THE MORE PEOPLE WHO REGISTER, THE
SOONER I'LL BE ABLE TO AFFORD SOME PRMS AND DO A PROPER JOB (as we say down
here).

IF ANYBODY IS USING THIS IN AN EDUCATIONAL ESTABLISHMENT COULD THEY TELL ME
HOW THE SOFTWARE SURVIVES.  I'M ALSO INTERESTED TO KNOW IF IT RUNS ON A
NETWORK.

SO...  REPORTS OF BUGS, FAT CHEQUES OR ANY COMMUNICATION REALLY TO

RICHARD BLYTHE
37 WELL WAY
PORTH
NEWQUAY
CORNWALL
TR7 3LS



All files except WimpHeap library copyright (c) 1994 Richard Blythe

WimpHeap library is courtesy of Ben Summers and (c) Acorn Computing Magazine
December 1993.  Without WimpHeap this program could not be written so thanks
Ben and thanks Europress for such a good magazine.

