Home » CEEFAX disks » telesoftware12.adl » 04-02-89/AlgInfo

04-02-89/AlgInfo

This website contains an archive of files for the Acorn Electron, BBC Micro, Acorn Archimedes, Commodore 16 and Commodore 64 computers, which Dominic Ford has rescued from his private collection of floppy disks and cassettes.

Some of these files were originally commercial releases in the 1980s and 1990s, but they are now widely available online. I assume that copyright over them is no longer being asserted. If you own the copyright and would like files to be removed, please contact me.

Tape/disk: Home » CEEFAX disks » telesoftware12.adl
Filename: 04-02-89/AlgInfo
Read OK:
File size: 5BC2 bytes
Load address: 0000
Exec address: FFFFFFFF
Duplicates

There is 1 duplicate copy of this file in the archive:

File contents
                            Foreword

I conceived the idea of 'alGINOn' and began its development
some time ago, when I realised that I was spending (wasting) a
large proportion of my time developing new graph plotting
routines for every new program I produced which required these
facilities.  
'alGINOn' has grown from this realisation and has proved
to be a great timesaver for me in the development of new graph
drawing programs for specific situations, despite the amount of
time I had to spend in developing the routines such that they
would be generally applicable to these situations.  The routines
have proved to be fairly robust and of a sufficiently general
nature that I have decided to release them for others to make use
of.
'alGINOn' is not in itself a program, it is only a set of
routines which when called in the appropriate way will cause
graphs to be drawn. The features available are not terribly
sophisticated and are not intended to be exhaustive. 'alGINOn' is
simply a set of routines which may be tailored by the user to
their particular needs without too much difficulty.
You will find the routines to be fairly well structured and
hopefully relatively easy to understand. This was a fairly high
priority when I decided to develop them for general use.  You
will undoubtedly improve on the routines when you get used to
them.  I would be particularly grateful for any ideas for
improvements which you may think of especially if they would be
of general interest to other users.

N.B.
The routines as they stand produce output to the screen, though
they were originally intended for use with an X-Y plotter, and are
easily converted to work with any graphics output device.
A screen dump utility is  provided,  if  required this must be
provided by the user.

                        What is alGINOn ?

    'alGINOn' is a set of functions and procedures which have been
written for the BBC microcomputer and which, it is hoped will be
able to provide any program written in BBC BASIC with the
ability to create drawings of graphs on any available graphics
output device, with minimal levels of programing expenditure.

The routines themselves are written in BASIC and though not
very sophisticated, do enable graphs of experimental data and/or
mathematical functions to be plotted with a minimal amount of
additional programing.

'alGINOn' includes features which :

  i) Define the space in which plotting may occur;
 ii) Draw  straight  lines,  crossed   points  and  mathematical
     functions; 
iii) Draw Cartesian axes;
 iv) Print characters and numbers;
  v) Calculate and plot best fit lines.

The section which follows should introduce the newcomer to the
concepts of 'alGINOn', by showing some examples of the use of the
various routines.

                      Some simple Examples

****************************************************************
* All of the example programs in this section are contained    *
* on  the disc in directory 'E' and the relevant one should be *
* detailed in the text.                                        *
****************************************************************

'alGINOn' can operate at two levels :
 i) It can plot data about which the user knows something 
ii) It can examine and plot data in a file on disc on its own.

take the first of these:

The user wishes to plot the functions  y=sin x  & y=tan x
in the range -1 to +1 on X and -1 to +1 on Y
Such that the graphs fill  the screen.

The following statements would cause this to be done

MODE 4
PROCgstart
PROCscale(1)
PROCplot(1,"SIN(X)")
PROCplot(1,"TAN(X)")
PROCgstop

in this example, (E.EX1) the default values of the scale and
graph size were appropriate. 

N.B. the screen mode to be used is user specified. Mode 0 is
sometimes usable on a standard BBC, though the NO ROOM error is
frequently encountered. Mode 4 will certainly work. NO problem
should be encountered on a BBC master where Shadow RAM may be
used.

Suppose, however, that a graph from -360 to 360 on X and -1 to +1
on Y was to be plotted.  This could be done with the additional
use of the procedure: PROCsca(default,Xsmi,Xsma,sx,Ysmi,Ysma,sy)
Here, the default values are not required, thus the value FALSE
should be sent. This now requires all the parameters to be set by
the user.

A tick mark spacing of 40 on X and 0.1 on Y would be appropriate.
Thus a call :

PROCsca(FALSE,-360,360,40,-1,1,0.1)

could be used, it should be inserted after the call to
PROCgstart, and before a call to PROCscale.

Now, the position of the axes could be altered, in a similar way,
by a call to PROCpos. If output to the screen is required, 
X should range from 0 to 1279 and Y from 0 to 1023.

Example E.EX4 shows the error recovery routine of PROCerror in
action, as a graph of y=1/x is being plotted.

An example of the second type of use is where the user either has
a set of data he wishes to plot or has a function he knows little
about.

A set of expermiental data may be written to disc by the user in
one of two ways.
  i) use the archiving program STAT1 which is on the disc or  
 ii) use the routines PROCfile and PROCdata in your own
     program.
eg.,                                        E.EX2

PROCfile(TRUE,"TFILE")
FOR PAIR%=20 TO 1 STEP -1
PROCdata(PAIR%,PAIR%-1,(PAIR%-1)^2,TRUE,"","")
NEXT PAIR%
PROCfile(FALSE,"")

this will produce a file on disc containing 20 pairs of data
for the graph y=x^2.

Let us treat this file as a set of experimental data, and use the
other routines to choose an appropriate scale and to plot the
square root of the Y data against the X values, to calculate and
plot the line of best fit.

PROCgstart                                        E.EX3
PROCAutoScales("TFILE","X","SQR(Y)")
PROCscale(1)
PROCDrawfile("TFILE",1,"X","SQR(Y)",TRUE)
PROCbestfit("TFILE","X","SQR(Y)")
PROCplot(1,"m*X+c)
PROCgstop

                Adding the routines to a program

The 'alGINOn' routines are supplied in the form of an ASCII file
on disc, and may be added on to the end of a user program. 
This is done by the command :

*EXEC alGINOn

The routines will be added to the user program starting at line
10000. The total size of the routines is approximately 4k.
Not all of the routines may be used by the user, in which case,
the redundant ones may be deleted.

                              STAT1

'STAT1' is a simple program which may be used to produce and/or
edit 'alGINOn' disc based data files.
The file to be set up or edited is asked for by the program
at the beginning. This name should be no longer than that
allowed by the resident disc filing system.
If you are about to edit an existing file, 'STAT1' will ask which
pair of data you wish to start with. ([return] = 0)
Once in the editing screen, the five pairs of data either side of
the current pair are shown. The current pair is shown by a '>'
symbol.  To change pairs, use the 'up' and 'down' cursor keys to
move up or down the screen.
To alter a particular pair, press the 'left' cursor key. You will
then have to enter the two new values for that pair of data.
When you have finished a particular session, press the 'TAB' key,
which will ensure that all data is saved to disk.

                             Uniplot

The 'precursor' to 'alGINOn' is also supplied on the disc in
directory 'U' it is a fairly well annotated set of routines which
are limited to plotting mathematical functions. It retains some
features which enabled it to work with the Parfitt plotter.
Though it is very similar to 'alGINOn', it is not identical by
any means. It may be of use in circumstances of severe memory
shortage, it should be noted that I don't intend to support these
routines in any way.

                  'A list of Global Variables'

X and Y   : are used to contain the current pair of X and Y data
            that have been read from disc by PROCdata.

total     : the number of pairs of data in the current disc file.

L%        : the line to which control will return after error
            recovery.

Xtmax     :
Xtmin     : the dimensions of the graph as plotted in terms
Ytmax     : of the device being used for plotting.
Ytmin     :

xsl       : the length of the tick marks, in terms of the
ysl       : plotting device.
 
Pry       : the length (range) of the scales in terms of
Prx       : the plotting device.

Xsmin     :
Xsmax     : the dimensions of the graph in terms of the 
Ysmin     : scale chosen.
Ysmax     :

stx       : the gap between tick marks in terms of the scale.
sty       :

Sry       : the length (range) of the scales, in terms of the
Srx       : scales.

X0        : the position of the x=0 and y=0 lines in terms of the
Y0        : plotting device

Xsmin2    : alternative to Xsmin used in error recovery.

m         : statistical quantities related to the current disc
c         : file.  
r         :        see PROCbestfit

                         The Routines...
                      PROCfile(open,name$)

This procedure is used to set up, open for reading or for writing
and to close a random access disc file.

The argument  'open'  is simply used to specify whether the file
specified by the string 'name$' should be OPENED or CLOSED
depending on whether its value is TRUE or FALSE respectively. The
length of 'name$' should be no more than that allowed by the
current version of the disc filing system.  No error checking is
performed on this point.   If 'open' is TRUE, a file is created
and opened for reading or writing if it doesn't already exist.
Otherwise, the existing file is simply opened for reading or
writing. When closing a file with 'open' = FALSE, the specific
file name need not be specified, as all files are closed.  

10000 DEF PROCfile(open,name$)
10010 IF NOT open THEN PTR#E%=0       
       : PRINT#E%,total
       : CLOSE#0
       : ENDPROC
10020 CLOSE#0
10030 E%=OPENIN(name$)
10040 IF E%=0 CLOSE#0
       : E%=OPENOUT(name$)
       : CLOSE#0
       : E%=OPENIN(name$)
       : total=1
       : PRINT#E%,total,E%,E%
       : ENDPROC
10050 IF E%<>0 INPUT#E%,total
10060 ENDPROC

            PROCdata(pair,x,y,write,alterX$,alterY$)

This procedure is used to read or write data to or from a file
previously opened by PROCfile.

Data is stored on the disc simply as pairs of real variables, one
pair after another.  The first value stored in a file is the
total number of pairs of data in that file, thereafter, follows
the data. To WRITE data to a file, one must specify which pair of
data is to be written, and the two values to be written, that
which should appear on the X axis should be the first number and
should be written as the 'x' argument etc.  The value of 'write'
should be TRUE.  N.B. 'PAIR' should be an integer greater than
zero. The strings  alterX$ AND alterY$  are not used, but must be
sent.   eg.,

PROCdata(1,8,16,TRUE,"","")

Would write the first pair of data as (8,16)

When data is read, the data are returned in the Global variables
X and Y.  The 'pair' must be specified, 'x' and 'y' are not used,
but a value must be sent. 'write' should be FALSE and 'alterX$'
and 'altery$' must be sent.

These latter two variables may be used to change the returned
value of X and Y. eg, if alterX$="SIN(X)" then the returned value
X would be the sine of the value stored on the disc. If no change
is required, alterX$ should be equal to "X" and alterY$ to "Y".

When the routine is used to write calculated data, the data should
be written in reverse order. ie., the highest value of pair
should be written first.  This ensures that sufficient space is
initialised on the disc.

10070 DEF PROCdata(pair,x,y,write,alterX$,alterY$)
10080 LOCAL Z%,xn
10090 IF pair<1 THEN PROCfile(FALSE,"")
       : PRINT "ERROR PAIR < 1"
       : END
10100 IF pair>total THEN PTR#E%=12*total-6
       : INPUT#E%,Z%,Z%
       : FOR Z%=total+1 TO pair
       : PRINT#E%,Z%,Z%
       : NEXT
10110 PTR#E%=12*pair-6
10120 IF write THEN PRINT#E%,x,y ELSE INPUT#E%,X,Y
10130 IF pair>total THEN total=pair
10140 IF NOT write xn=EVAL(alterX$)
       : Y=EVAL(alterY$)
       : X=xn
10150 ENDPROC

                           PROCgstart

This procedure is used to initialise the graph drawing routines.
It closes all open files, clears the graphics screen, sets the
drawing area and the scale to their defaults and setsup the error
checking routine.

It should be used at the start of the graphics section of any
program using the ALGINON routines.

10160 DEF PROCgstart
10170 CLG
10180 PROCpos(TRUE,0,0,0,0,0,0)
10190 PROCsca(TRUE,0,0,0,0,0,0)
10200 CLOSE#0
10210 ON ERROR PROCerror
       : GOTO L%
10220 L%=0
10230 ENDPROC

                            PROCgstop

This procedure should be used at the end of the calls to the
graph drawing routines. It simply closes any open files.

10240 DEF PROCgstop
10250 CLOSE#0
10260 ENDPROC


     PROCpos(default,Xtmi,Xtma,xs,Ytmi,Ytma,ys)

This procedure sets up the available drawing area.

Xtmi & Xtma are the minimum and maximum X values of the area
inside which graph plotting will occur. The defaults are 15 and
1279 'xs' is the length of the tick marks. These are plotted
outside of the area specified by Xtmi & Xtma. Thus to ensure they
are actually plotted, Xtmi should always be larger than xs. The
default is 15

Defaults for the Y axis are 15,1023 and 15

If default = TRUE , then the default values are set, otherwise
the values specified by the arguments are used.

10270 DEF PROCpos(default,Xtmi,Xtma,xs,Ytmi,Ytma,ys)
10280 IF default THEN Xtmin=15
       : Xtmax=1279
       : xsl=15
       : Ytmin=15
       : Ytmax=1023
       : ysl=15
10290 IF NOT default THEN Xtmin=Xtmi
       : Xtmax=Xtma
       : xsl=xs
       : Ytmin=Ytmi
       : Ytmax=Ytma
       : ysl=ys
10300 Pry=Ytmax-Ytmin
10310 Prx=Xtmax-Xtmin
10320 ENDPROC

           PROCsca(default,Xsmi,Xsma,sx,Ysmi,Ysma,sy)

The syntax of this procedure is similar to that of PROCpos. This
procedure is used to set the minimum and maximum scale values and
the distance between tick marks.

The defaults are for a graph with axes from -1 to 1 and tick
marks with a spacing of 0.1

10330 DEF PROCsca(default,Xsmi,Xsma,sx,Ysmi,Ysma,sy)
10340 IF default THEN Xsmin=-1
       : Xsmax=1
       : stx=0.1
       : Ysmin=-1
       : Ysmax=1
       : sty=0.1
10350 IF NOT default THEN Xsmin=Xsmi
       : Xsmax=Xsma
       : stx=sx
       : Ysmin=Ysmi
       : Ysmax=Ysma
       : sty=sy
10360 PROCscalevars
10370 ENDPROC

              PROCAutoScales(name$,alterX$,alterY$)

This procedure is used to read through the named file, and having
altered the X and Y values as specified, to determine appropriate
values for the scale. 

10380 DEF PROCAutoScales(name$,alterX$,alterY$)
10390 LOCAL RangeX,RangeY,Pwx%,Pwy%,X%
10400 PROCfile(TRUE,name$)
10410 PROCdata(1,0,0,FALSE,alterX$,alterY$)
10420 Xsmax=X
       : Xsmin=X
10430 Ysmin=Y
       : Ysmax=Y
10440 FOR X%=2 TO total
10450 PROCdata(X%,0,0,FALSE,alterX$,alterY$)
10460 IF X>Xsmax THEN Xsmax=X
10470 IF X<Xsmin THEN Xsmin=X
10480 IF Y>Ysmax THEN Ysmax=Y
10490 IF Y<Ysmin THEN Ysmin=Y
10500 NEXT X%
10510 RangeX=Xsmax-Xsmin
10520 RangeY=Ysmax-Ysmin
10530 Pwx%=FNpower(RangeX)
10540 Pwy%=FNpower(RangeY)
10550 Xsmax=(INT(Xsmax/10^Pwx%+1))*10^Pwx%
10560 Xsmin=(INT(Xsmin/10^Pwx%))*10^Pwx%
10570 Ysmax=(INT(Ysmax/10^Pwy%+1))*10^Pwy%
10580 Ysmin=(INT(Ysmin/10^Pwy%))*10^Pwy%
10590 stx=FNstepsize(Xsmax-Xsmin)
10600 sty=FNstepsize(Ysmax-Ysmin)
10610 PROCscalevars
10620 ENDPROC

                         FNpower(number)

This function will return the power of ten to which a given
number is raised.

10630 DEF FNpower(number)
10640 =INT(LOG(number))

                        FNstepsize(range)

This function will return an appropriate spacing for tick marks
on an axis of given range.

10650 DEF FNstepsize(range)
10660 LOCAL power%
10670 power%=FNpower(range)
10680 range=range/10^power%
10690 IF range<=3 THEN =2*10^(power%-1)
10700 IF range>3 AND range<7 THEN =5*10^(power%-1)
10710 =1*10^power%

                          PROCscalevars

This procedure is used to set up a number of variables used
within the graph drawing routines. X0 and Y0 are the positions of
the lines X=0 and Y=0 (on the scale) on the screen.

10720 DEF PROCscalevars
10730 Sry=Ysmax-Ysmin
10740 Y0=Ytmax-Pry*Ysmax/Sry
10750 Srx=Xsmax-Xsmin
10760 X0=Xtmax-Prx*Xsmax/Srx
10770 Xsmin2=Xsmin
10780 ENDPROC

        PROCDrawfile(name$,_p_en,alterX$,alterY$,crosses)

This procedure will read the data from a named file, alter it as
specified and plot it as either joined lines or crosses in the
specified pen colour.

Crosses are plotted if 'crosses' = TRUE

10790 DEF PROCDrawfile(name$,pen,alterX$,alterY$,crosses)
10800 LOCAL PEN,X%,P
10810 PROCfile(TRUE,name$)
10820 FOR X%=1 TO total
10830 PROCdata(X%,0,0,FALSE,alterX$,alterY$)
10840 Y=FNy(Y)
       : X=FNx(X)
10850 IF X%=1 THEN PEN=0 ELSE PEN=pen 
10860 IF NOT crosses THEN PROCdraw(X,Y,PEN)
       : GOTO10950
10870 P=0
10880 PROCdraw(X-10,Y,P)
10890 P=pen
10900 PROCdraw(X+10,Y,P)
10910 P=0
10920 PROCdraw(X,Y-10,P)
10930 P=pen
10940 PROCdraw(X,Y+10,P)
10950 NEXT X%
10960 PROCfile(FALSE,name$)
10970 ENDPROC

                        PROCdraw(x,y,pen)

This procedure is the one which is used by the various routines
to draw lines on the screen. All routines use this procedure, so
this is the one to alter if a plotter needs to be driven.

10980 DEF PROCdraw(x,y,pen)
10990 IF pen=0 MOVE x,y ELSE GCOL0,pen
       : DRAWx,y 
11000 ENDPROC

                        FNx(X) and FNy(Y)

These two functions return the screen position of the
corresponding scale position sent in the argument.

11010 DEF FNx(X)
11020 =(Prx/Srx)*X+X0

11030 DEF FNy(Y)
11040 =(Pry/Sry)*Y+Y0

                         PROCscale(pen)

This procedure will draw a scale in the specified pen colour
using the position and scale values previously specified by the
procedures:
                   PROCpos
            or     PROCsca      
                   PROCAutoScales

11050 DEF PROCscale(pen)
11060 LOCAL X,X2,Y,Y2,P
11070 IF Y0>Ytmax THEN Y2=Ytmax
       : GOTO11120
11080 IF Y0<Ytmin THEN Y2=Ytmin
       : GOTO11120
11090 Y2=Y0
11100 X=Xtmin
       : Y=Y2
       : P=0
       : PROCdraw(X,Y,P)
11110 X=Xtmax
       : P=pen
       : PROCdraw(X,Y,P)
11120 IF X0>Xtmax THEN X2=Xtmax
       : GOTO11170
11130 IF X0<Xtmin THEN X2=Xtmin
       : GOTO11170
11140 X2=X0
11150 X=X2
       : Y=Ytmin
       : P=0
       : PROCdraw(X,Y,P)
11160 Y=Ytmax
       : P=pen
       : PROCdraw(X,Y,P)
11170 FOR X=Xsmax TO Xsmin STEP -1*stx
11180 x1=FNx(X)
       : Y=Y2
       : P=0
11190 PROCdraw(x1,Y,P)
       : IF X=0 THEN P=0 ELSE P=pen
11200 Y=Y2-xsl
       : PROCdraw(x1,Y,P)
11210 NEXT X
11220 FOR Y=Ysmin TO Ysmax STEP sty
11230 y1=FNy(Y)
       : X=X2
       : P=0
11240 PROCdraw(X,y1,P)
       : IF Y=0 THEN P=0 ELSE P=pen
11250 X=X2-ysl
       : PROCdraw(X,y1,P)
11260 NEXT Y
11270 ENDPROC

                       PROCplot(pen,equ$)

This procedure will draw within the previously set scale ranges
the function specified in 'equ$'  in the specified pen colour.
eg.,

PROCplot(1,"SIN(X)")

will plot the function y=sin x  in colour 1 

N.B.   The variable L% should be set to be equal to the line
number of the line following a call to PROCplot if errors are
likely  eg if plotting a function where division by zero may
occur, such as y=1/x --see PROCerror


11280 DEF PROCplot(pen,equ$)
11290 LOCAL X,y1,y2,P
11300 y2=2
11310 FOR X=Xsmin2 TO Xsmax STEP Srx/Prx*10
11320 Y=FNy(EVAL(equ$)) 
11330 IF Y>Ytmax OR Y<Ytmin THEN y1=FALSE
       : y2=2 ELSE y1=TRUE
       : y2=y2-1
11340 IF y1=FALSE THEN P=0
       : Y=Ytmin
11350 IFy2>0 P=0 ELSE P=pen
11360 PROCdraw(FNx(X),Y,P)
11370 NEXT X
       : P=0
       : PROCdraw(FNx(X),Y,P)
11380 ENDPROC

                     PROCstring(x,y,string$)

This procedure will print the string specified on the graph at
the SCALE position (x,y) .

11390 DEF PROCstring(x,y,string$)
11400 MOVE FNx(x),FNy(y)
11410 VDU5
11420 PRINT string$
11430 VDU4
11440 ENDPROC

                            PROCerror

This procedure will handle DIVISION BY ZERO and TOO BIG errors
generated by functions being plotted by PROCplot. After the
function has finished being plotted, execution will return to the
line specified by the variable L%.  If L% is unset, then the
error recovery routine will halt the program as it will if any
other error is detected. The value tested for in line 11470  ie.,
ERL<>  [a number] 
Should be the line number of the first line of the function
FNy(Y).

11450 DEF PROCerror
11460 IF ERR<>18 AND ERR<>20 THEN 11510
11470 IF ERL<>11030 OR L%=0 THEN 11510
11480 Xsmin2=X+(Srx/Prx)
11490 PROCplot(pen,equ$)
11500 ENDPROC
11510 CLS
       : PRINT '"EXECUTION HALTED, there is an error" 
11520 @%=0
       : PRINT'"at line "ERL" It is : -"'
11530 REPORT
11540 PRINT ''"Please record how you 'crashed' the" 
11550 PRINT "program and contact the author."
11560 PROCgstop
       : STOP

               PROCbestfit(name$,alterX$,alterY$)

This procedure will read through a named file and having altered
the X and Y values as specified, will calculate the equation of
the bestfit line and the correlation coefficient of the two pairs
of data.

Gradient is returned in the Global variable : m
intercept on Y in :                           c
correlation coefficient in  :                 r

11570 DEF PROCbestfit(name$,alterX$,alterY$)
11580 LOCAL sigX,sigY,sigXY,sigX2,sigY2,top,base,X%
11590 PROCfile(TRUE,name$)
11620 FOR X%=1 TO total
11630 PROCdata(X%,0,0,FALSE,alterX$,alterY$)
11680 sigX=sigX+X
11690 sigY=sigY+Y
11700 sigXY=sigXY+X*Y
11710 sigX2=sigX2+X^2
11720 sigY2=sigY2+Y^2
11730 NEXT X%
11740 PROCfile(FALSE,name$)
11750 m=(sigXY-(sigX*sigY/(total)))/(sigX2-sigX^2/(total))
11760 c=sigY/(total)-m*sigX/(total)
11761 top=(total)*sigXY-sigX*sigY
11762 base=SQR(((total)*sigX2-sigX^2)*((total)*sigY2-sigY^2))
11763 r=top/base
11770 ENDPROC

                              INDEX

Adding the routines to a program                     4
E.EX1                                                2
E.EX2                                                3
E.EX3                                                4
E.EX4                                                3
FNpower(number)                                     10
FNstepsize(range)                                   10
FNx(X)                                              11
FNy(Y)                                              11
Foreword                                             1
Global Variables                                     5
PROCAutoScales(name$,alterX$,alterY$)                9
PROCbestfit(name$,alterX$,alterY$)                  14
PROCdata(pair,x,y,write,alterX$,alterY$)             6
PROCDrawfile(name$,pen,alterX$,alterY$,crosses)     11
PROCdraw(x,y,pen)                                   11
PROCerror                                           13
PROCfile(open,name$)                                 6
PROCgstart                                           7
PROCgstop                                            8
PROCplot(pen,equ$)                                  13
PROCpos(default,Xtmi,Xtma,xs,Ytmi,Ytma,ys)           8
PROCscalevars                                       10
PROCscale(pen)                                      12
PROCsca(default,Xsmi,Xsma,sx,Ysmi,Ysma,sy)           9
PROCstring(x,y,string$)                             13
Some simple Examples                                 2
STAT1                                                4
Uniplot                                              4
What is alGINOn ?                                    2
00000000  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00000010  20 20 20 20 20 20 20 20  20 20 20 20 46 6f 72 65  |            Fore|
00000020  77 6f 72 64 0d 0d 49 20  63 6f 6e 63 65 69 76 65  |word..I conceive|
00000030  64 20 74 68 65 20 69 64  65 61 20 6f 66 20 27 61  |d the idea of 'a|
00000040  6c 47 49 4e 4f 6e 27 20  61 6e 64 20 62 65 67 61  |lGINOn' and bega|
00000050  6e 20 69 74 73 20 64 65  76 65 6c 6f 70 6d 65 6e  |n its developmen|
00000060  74 0d 73 6f 6d 65 20 74  69 6d 65 20 61 67 6f 2c  |t.some time ago,|
00000070  20 77 68 65 6e 20 49 20  72 65 61 6c 69 73 65 64  | when I realised|
00000080  20 74 68 61 74 20 49 20  77 61 73 20 73 70 65 6e  | that I was spen|
00000090  64 69 6e 67 20 28 77 61  73 74 69 6e 67 29 20 61  |ding (wasting) a|
000000a0  0d 6c 61 72 67 65 20 70  72 6f 70 6f 72 74 69 6f  |.large proportio|
000000b0  6e 20 6f 66 20 6d 79 20  74 69 6d 65 20 64 65 76  |n of my time dev|
000000c0  65 6c 6f 70 69 6e 67 20  6e 65 77 20 67 72 61 70  |eloping new grap|
000000d0  68 20 70 6c 6f 74 74 69  6e 67 0d 72 6f 75 74 69  |h plotting.routi|
000000e0  6e 65 73 20 66 6f 72 20  65 76 65 72 79 20 6e 65  |nes for every ne|
000000f0  77 20 70 72 6f 67 72 61  6d 20 49 20 70 72 6f 64  |w program I prod|
00000100  75 63 65 64 20 77 68 69  63 68 20 72 65 71 75 69  |uced which requi|
00000110  72 65 64 20 74 68 65 73  65 0d 66 61 63 69 6c 69  |red these.facili|
00000120  74 69 65 73 2e 20 20 0d  27 61 6c 47 49 4e 4f 6e  |ties.  .'alGINOn|
00000130  27 20 68 61 73 20 67 72  6f 77 6e 20 66 72 6f 6d  |' has grown from|
00000140  20 74 68 69 73 20 72 65  61 6c 69 73 61 74 69 6f  | this realisatio|
00000150  6e 20 61 6e 64 20 68 61  73 20 70 72 6f 76 65 64  |n and has proved|
00000160  0d 74 6f 20 62 65 20 61  20 67 72 65 61 74 20 74  |.to be a great t|
00000170  69 6d 65 73 61 76 65 72  20 66 6f 72 20 6d 65 20  |imesaver for me |
00000180  69 6e 20 74 68 65 20 64  65 76 65 6c 6f 70 6d 65  |in the developme|
00000190  6e 74 20 6f 66 20 6e 65  77 20 67 72 61 70 68 0d  |nt of new graph.|
000001a0  64 72 61 77 69 6e 67 20  70 72 6f 67 72 61 6d 73  |drawing programs|
000001b0  20 66 6f 72 20 73 70 65  63 69 66 69 63 20 73 69  | for specific si|
000001c0  74 75 61 74 69 6f 6e 73  2c 20 64 65 73 70 69 74  |tuations, despit|
000001d0  65 20 74 68 65 20 61 6d  6f 75 6e 74 20 6f 66 0d  |e the amount of.|
000001e0  74 69 6d 65 20 49 20 68  61 64 20 74 6f 20 73 70  |time I had to sp|
000001f0  65 6e 64 20 69 6e 20 64  65 76 65 6c 6f 70 69 6e  |end in developin|
00000200  67 20 74 68 65 20 72 6f  75 74 69 6e 65 73 20 73  |g the routines s|
00000210  75 63 68 20 74 68 61 74  20 74 68 65 79 0d 77 6f  |uch that they.wo|
00000220  75 6c 64 20 62 65 20 67  65 6e 65 72 61 6c 6c 79  |uld be generally|
00000230  20 61 70 70 6c 69 63 61  62 6c 65 20 74 6f 20 74  | applicable to t|
00000240  68 65 73 65 20 73 69 74  75 61 74 69 6f 6e 73 2e  |hese situations.|
00000250  20 20 54 68 65 20 72 6f  75 74 69 6e 65 73 0d 68  |  The routines.h|
00000260  61 76 65 20 70 72 6f 76  65 64 20 74 6f 20 62 65  |ave proved to be|
00000270  20 66 61 69 72 6c 79 20  72 6f 62 75 73 74 20 61  | fairly robust a|
00000280  6e 64 20 6f 66 20 61 20  73 75 66 66 69 63 69 65  |nd of a sufficie|
00000290  6e 74 6c 79 20 67 65 6e  65 72 61 6c 0d 6e 61 74  |ntly general.nat|
000002a0  75 72 65 20 74 68 61 74  20 49 20 68 61 76 65 20  |ure that I have |
000002b0  64 65 63 69 64 65 64 20  74 6f 20 72 65 6c 65 61  |decided to relea|
000002c0  73 65 20 74 68 65 6d 20  66 6f 72 20 6f 74 68 65  |se them for othe|
000002d0  72 73 20 74 6f 20 6d 61  6b 65 20 75 73 65 0d 6f  |rs to make use.o|
000002e0  66 2e 0d 27 61 6c 47 49  4e 4f 6e 27 20 69 73 20  |f..'alGINOn' is |
000002f0  6e 6f 74 20 69 6e 20 69  74 73 65 6c 66 20 61 20  |not in itself a |
00000300  70 72 6f 67 72 61 6d 2c  20 69 74 20 69 73 20 6f  |program, it is o|
00000310  6e 6c 79 20 61 20 73 65  74 20 6f 66 0d 72 6f 75  |nly a set of.rou|
00000320  74 69 6e 65 73 20 77 68  69 63 68 20 77 68 65 6e  |tines which when|
00000330  20 63 61 6c 6c 65 64 20  69 6e 20 74 68 65 20 61  | called in the a|
00000340  70 70 72 6f 70 72 69 61  74 65 20 77 61 79 20 77  |ppropriate way w|
00000350  69 6c 6c 20 63 61 75 73  65 0d 67 72 61 70 68 73  |ill cause.graphs|
00000360  20 74 6f 20 62 65 20 64  72 61 77 6e 2e 20 54 68  | to be drawn. Th|
00000370  65 20 66 65 61 74 75 72  65 73 20 61 76 61 69 6c  |e features avail|
00000380  61 62 6c 65 20 61 72 65  20 6e 6f 74 20 74 65 72  |able are not ter|
00000390  72 69 62 6c 79 0d 73 6f  70 68 69 73 74 69 63 61  |ribly.sophistica|
000003a0  74 65 64 20 61 6e 64 20  61 72 65 20 6e 6f 74 20  |ted and are not |
000003b0  69 6e 74 65 6e 64 65 64  20 74 6f 20 62 65 20 65  |intended to be e|
000003c0  78 68 61 75 73 74 69 76  65 2e 20 27 61 6c 47 49  |xhaustive. 'alGI|
000003d0  4e 4f 6e 27 20 69 73 0d  73 69 6d 70 6c 79 20 61  |NOn' is.simply a|
000003e0  20 73 65 74 20 6f 66 20  72 6f 75 74 69 6e 65 73  | set of routines|
000003f0  20 77 68 69 63 68 20 6d  61 79 20 62 65 20 74 61  | which may be ta|
00000400  69 6c 6f 72 65 64 20 62  79 20 74 68 65 20 75 73  |ilored by the us|
00000410  65 72 20 74 6f 0d 74 68  65 69 72 20 70 61 72 74  |er to.their part|
00000420  69 63 75 6c 61 72 20 6e  65 65 64 73 20 77 69 74  |icular needs wit|
00000430  68 6f 75 74 20 74 6f 6f  20 6d 75 63 68 20 64 69  |hout too much di|
00000440  66 66 69 63 75 6c 74 79  2e 0d 59 6f 75 20 77 69  |fficulty..You wi|
00000450  6c 6c 20 66 69 6e 64 20  74 68 65 20 72 6f 75 74  |ll find the rout|
00000460  69 6e 65 73 20 74 6f 20  62 65 20 66 61 69 72 6c  |ines to be fairl|
00000470  79 20 77 65 6c 6c 20 73  74 72 75 63 74 75 72 65  |y well structure|
00000480  64 20 61 6e 64 0d 68 6f  70 65 66 75 6c 6c 79 20  |d and.hopefully |
00000490  72 65 6c 61 74 69 76 65  6c 79 20 65 61 73 79 20  |relatively easy |
000004a0  74 6f 20 75 6e 64 65 72  73 74 61 6e 64 2e 20 54  |to understand. T|
000004b0  68 69 73 20 77 61 73 20  61 20 66 61 69 72 6c 79  |his was a fairly|
000004c0  20 68 69 67 68 0d 70 72  69 6f 72 69 74 79 20 77  | high.priority w|
000004d0  68 65 6e 20 49 20 64 65  63 69 64 65 64 20 74 6f  |hen I decided to|
000004e0  20 64 65 76 65 6c 6f 70  20 74 68 65 6d 20 66 6f  | develop them fo|
000004f0  72 20 67 65 6e 65 72 61  6c 20 75 73 65 2e 20 20  |r general use.  |
00000500  59 6f 75 0d 77 69 6c 6c  20 75 6e 64 6f 75 62 74  |You.will undoubt|
00000510  65 64 6c 79 20 69 6d 70  72 6f 76 65 20 6f 6e 20  |edly improve on |
00000520  74 68 65 20 72 6f 75 74  69 6e 65 73 20 77 68 65  |the routines whe|
00000530  6e 20 79 6f 75 20 67 65  74 20 75 73 65 64 20 74  |n you get used t|
00000540  6f 0d 74 68 65 6d 2e 20  20 49 20 77 6f 75 6c 64  |o.them.  I would|
00000550  20 62 65 20 70 61 72 74  69 63 75 6c 61 72 6c 79  | be particularly|
00000560  20 67 72 61 74 65 66 75  6c 20 66 6f 72 20 61 6e  | grateful for an|
00000570  79 20 69 64 65 61 73 20  66 6f 72 0d 69 6d 70 72  |y ideas for.impr|
00000580  6f 76 65 6d 65 6e 74 73  20 77 68 69 63 68 20 79  |ovements which y|
00000590  6f 75 20 6d 61 79 20 74  68 69 6e 6b 20 6f 66 20  |ou may think of |
000005a0  65 73 70 65 63 69 61 6c  6c 79 20 69 66 20 74 68  |especially if th|
000005b0  65 79 20 77 6f 75 6c 64  20 62 65 0d 6f 66 20 67  |ey would be.of g|
000005c0  65 6e 65 72 61 6c 20 69  6e 74 65 72 65 73 74 20  |eneral interest |
000005d0  74 6f 20 6f 74 68 65 72  20 75 73 65 72 73 2e 0d  |to other users..|
000005e0  0d 4e 2e 42 2e 0d 54 68  65 20 72 6f 75 74 69 6e  |.N.B..The routin|
000005f0  65 73 20 61 73 20 74 68  65 79 20 73 74 61 6e 64  |es as they stand|
00000600  20 70 72 6f 64 75 63 65  20 6f 75 74 70 75 74 20  | produce output |
00000610  74 6f 20 74 68 65 20 73  63 72 65 65 6e 2c 20 74  |to the screen, t|
00000620  68 6f 75 67 68 0d 74 68  65 79 20 77 65 72 65 20  |hough.they were |
00000630  6f 72 69 67 69 6e 61 6c  6c 79 20 69 6e 74 65 6e  |originally inten|
00000640  64 65 64 20 66 6f 72 20  75 73 65 20 77 69 74 68  |ded for use with|
00000650  20 61 6e 20 58 2d 59 20  70 6c 6f 74 74 65 72 2c  | an X-Y plotter,|
00000660  20 61 6e 64 20 61 72 65  0d 65 61 73 69 6c 79 20  | and are.easily |
00000670  63 6f 6e 76 65 72 74 65  64 20 74 6f 20 77 6f 72  |converted to wor|
00000680  6b 20 77 69 74 68 20 61  6e 79 20 67 72 61 70 68  |k with any graph|
00000690  69 63 73 20 6f 75 74 70  75 74 20 64 65 76 69 63  |ics output devic|
000006a0  65 2e 0d 41 20 73 63 72  65 65 6e 20 64 75 6d 70  |e..A screen dump|
000006b0  20 75 74 69 6c 69 74 79  20 69 73 20 20 70 72 6f  | utility is  pro|
000006c0  76 69 64 65 64 2c 20 20  69 66 20 20 72 65 71 75  |vided,  if  requ|
000006d0  69 72 65 64 20 74 68 69  73 20 6d 75 73 74 20 62  |ired this must b|
000006e0  65 0d 70 72 6f 76 69 64  65 64 20 62 79 20 74 68  |e.provided by th|
000006f0  65 20 75 73 65 72 2e 0d  0d 20 20 20 20 20 20 20  |e user...       |
00000700  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00000710  20 57 68 61 74 20 69 73  20 61 6c 47 49 4e 4f 6e  | What is alGINOn|
00000720  20 3f 0d 0d 20 20 20 20  27 61 6c 47 49 4e 4f 6e  | ?..    'alGINOn|
00000730  27 20 69 73 20 61 20 73  65 74 20 6f 66 20 66 75  |' is a set of fu|
00000740  6e 63 74 69 6f 6e 73 20  61 6e 64 20 70 72 6f 63  |nctions and proc|
00000750  65 64 75 72 65 73 20 77  68 69 63 68 20 68 61 76  |edures which hav|
00000760  65 20 62 65 65 6e 0d 77  72 69 74 74 65 6e 20 66  |e been.written f|
00000770  6f 72 20 74 68 65 20 42  42 43 20 6d 69 63 72 6f  |or the BBC micro|
00000780  63 6f 6d 70 75 74 65 72  20 61 6e 64 20 77 68 69  |computer and whi|
00000790  63 68 2c 20 69 74 20 69  73 20 68 6f 70 65 64 20  |ch, it is hoped |
000007a0  77 69 6c 6c 20 62 65 0d  61 62 6c 65 20 74 6f 20  |will be.able to |
000007b0  70 72 6f 76 69 64 65 20  61 6e 79 20 70 72 6f 67  |provide any prog|
000007c0  72 61 6d 20 77 72 69 74  74 65 6e 20 69 6e 20 42  |ram written in B|
000007d0  42 43 20 42 41 53 49 43  20 77 69 74 68 20 74 68  |BC BASIC with th|
000007e0  65 0d 61 62 69 6c 69 74  79 20 74 6f 20 63 72 65  |e.ability to cre|
000007f0  61 74 65 20 64 72 61 77  69 6e 67 73 20 6f 66 20  |ate drawings of |
00000800  67 72 61 70 68 73 20 6f  6e 20 61 6e 79 20 61 76  |graphs on any av|
00000810  61 69 6c 61 62 6c 65 20  67 72 61 70 68 69 63 73  |ailable graphics|
00000820  0d 6f 75 74 70 75 74 20  64 65 76 69 63 65 2c 20  |.output device, |
00000830  77 69 74 68 20 6d 69 6e  69 6d 61 6c 20 6c 65 76  |with minimal lev|
00000840  65 6c 73 20 6f 66 20 70  72 6f 67 72 61 6d 69 6e  |els of programin|
00000850  67 20 65 78 70 65 6e 64  69 74 75 72 65 2e 0d 0d  |g expenditure...|
00000860  54 68 65 20 72 6f 75 74  69 6e 65 73 20 74 68 65  |The routines the|
00000870  6d 73 65 6c 76 65 73 20  61 72 65 20 77 72 69 74  |mselves are writ|
00000880  74 65 6e 20 69 6e 20 42  41 53 49 43 20 61 6e 64  |ten in BASIC and|
00000890  20 74 68 6f 75 67 68 20  6e 6f 74 0d 76 65 72 79  | though not.very|
000008a0  20 73 6f 70 68 69 73 74  69 63 61 74 65 64 2c 20  | sophisticated, |
000008b0  64 6f 20 65 6e 61 62 6c  65 20 67 72 61 70 68 73  |do enable graphs|
000008c0  20 6f 66 20 65 78 70 65  72 69 6d 65 6e 74 61 6c  | of experimental|
000008d0  20 64 61 74 61 20 61 6e  64 2f 6f 72 0d 6d 61 74  | data and/or.mat|
000008e0  68 65 6d 61 74 69 63 61  6c 20 66 75 6e 63 74 69  |hematical functi|
000008f0  6f 6e 73 20 74 6f 20 62  65 20 70 6c 6f 74 74 65  |ons to be plotte|
00000900  64 20 77 69 74 68 20 61  20 6d 69 6e 69 6d 61 6c  |d with a minimal|
00000910  20 61 6d 6f 75 6e 74 20  6f 66 0d 61 64 64 69 74  | amount of.addit|
00000920  69 6f 6e 61 6c 20 70 72  6f 67 72 61 6d 69 6e 67  |ional programing|
00000930  2e 0d 0d 27 61 6c 47 49  4e 4f 6e 27 20 69 6e 63  |...'alGINOn' inc|
00000940  6c 75 64 65 73 20 66 65  61 74 75 72 65 73 20 77  |ludes features w|
00000950  68 69 63 68 20 3a 0d 0d  20 20 69 29 20 44 65 66  |hich :..  i) Def|
00000960  69 6e 65 20 74 68 65 20  73 70 61 63 65 20 69 6e  |ine the space in|
00000970  20 77 68 69 63 68 20 70  6c 6f 74 74 69 6e 67 20  | which plotting |
00000980  6d 61 79 20 6f 63 63 75  72 3b 0d 20 69 69 29 20  |may occur;. ii) |
00000990  44 72 61 77 20 20 73 74  72 61 69 67 68 74 20 20  |Draw  straight  |
000009a0  6c 69 6e 65 73 2c 20 20  63 72 6f 73 73 65 64 20  |lines,  crossed |
000009b0  20 20 70 6f 69 6e 74 73  20 20 61 6e 64 20 20 6d  |  points  and  m|
000009c0  61 74 68 65 6d 61 74 69  63 61 6c 0d 20 20 20 20  |athematical.    |
000009d0  20 66 75 6e 63 74 69 6f  6e 73 3b 20 0d 69 69 69  | functions; .iii|
000009e0  29 20 44 72 61 77 20 43  61 72 74 65 73 69 61 6e  |) Draw Cartesian|
000009f0  20 61 78 65 73 3b 0d 20  69 76 29 20 50 72 69 6e  | axes;. iv) Prin|
00000a00  74 20 63 68 61 72 61 63  74 65 72 73 20 61 6e 64  |t characters and|
00000a10  20 6e 75 6d 62 65 72 73  3b 0d 20 20 76 29 20 43  | numbers;.  v) C|
00000a20  61 6c 63 75 6c 61 74 65  20 61 6e 64 20 70 6c 6f  |alculate and plo|
00000a30  74 20 62 65 73 74 20 66  69 74 20 6c 69 6e 65 73  |t best fit lines|
00000a40  2e 0d 0d 54 68 65 20 73  65 63 74 69 6f 6e 20 77  |...The section w|
00000a50  68 69 63 68 20 66 6f 6c  6c 6f 77 73 20 73 68 6f  |hich follows sho|
00000a60  75 6c 64 20 69 6e 74 72  6f 64 75 63 65 20 74 68  |uld introduce th|
00000a70  65 20 6e 65 77 63 6f 6d  65 72 20 74 6f 20 74 68  |e newcomer to th|
00000a80  65 0d 63 6f 6e 63 65 70  74 73 20 6f 66 20 27 61  |e.concepts of 'a|
00000a90  6c 47 49 4e 4f 6e 27 2c  20 62 79 20 73 68 6f 77  |lGINOn', by show|
00000aa0  69 6e 67 20 73 6f 6d 65  20 65 78 61 6d 70 6c 65  |ing some example|
00000ab0  73 20 6f 66 20 74 68 65  20 75 73 65 20 6f 66 20  |s of the use of |
00000ac0  74 68 65 0d 76 61 72 69  6f 75 73 20 72 6f 75 74  |the.various rout|
00000ad0  69 6e 65 73 2e 0d 0d 20  20 20 20 20 20 20 20 20  |ines...         |
00000ae0  20 20 20 20 20 20 20 20  20 20 20 20 20 53 6f 6d  |             Som|
00000af0  65 20 73 69 6d 70 6c 65  20 45 78 61 6d 70 6c 65  |e simple Example|
00000b00  73 0d 0d 2a 2a 2a 2a 2a  2a 2a 2a 2a 2a 2a 2a 2a  |s..*************|
00000b10  2a 2a 2a 2a 2a 2a 2a 2a  2a 2a 2a 2a 2a 2a 2a 2a  |****************|
*
00000b40  2a 2a 2a 0d 2a 20 41 6c  6c 20 6f 66 20 74 68 65  |***.* All of the|
00000b50  20 65 78 61 6d 70 6c 65  20 70 72 6f 67 72 61 6d  | example program|
00000b60  73 20 69 6e 20 74 68 69  73 20 73 65 63 74 69 6f  |s in this sectio|
00000b70  6e 20 61 72 65 20 63 6f  6e 74 61 69 6e 65 64 20  |n are contained |
00000b80  20 20 20 2a 0d 2a 20 6f  6e 20 20 74 68 65 20 64  |   *.* on  the d|
00000b90  69 73 63 20 69 6e 20 64  69 72 65 63 74 6f 72 79  |isc in directory|
00000ba0  20 27 45 27 20 61 6e 64  20 74 68 65 20 72 65 6c  | 'E' and the rel|
00000bb0  65 76 61 6e 74 20 6f 6e  65 20 73 68 6f 75 6c 64  |evant one should|
00000bc0  20 62 65 20 2a 0d 2a 20  64 65 74 61 69 6c 65 64  | be *.* detailed|
00000bd0  20 69 6e 20 74 68 65 20  74 65 78 74 2e 20 20 20  | in the text.   |
00000be0  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
*
00000c00  20 20 20 20 20 2a 0d 2a  2a 2a 2a 2a 2a 2a 2a 2a  |     *.*********|
00000c10  2a 2a 2a 2a 2a 2a 2a 2a  2a 2a 2a 2a 2a 2a 2a 2a  |****************|
*
00000c40  2a 2a 2a 2a 2a 2a 2a 0d  0d 27 61 6c 47 49 4e 4f  |*******..'alGINO|
00000c50  6e 27 20 63 61 6e 20 6f  70 65 72 61 74 65 20 61  |n' can operate a|
00000c60  74 20 74 77 6f 20 6c 65  76 65 6c 73 20 3a 0d 20  |t two levels :. |
00000c70  69 29 20 49 74 20 63 61  6e 20 70 6c 6f 74 20 64  |i) It can plot d|
00000c80  61 74 61 20 61 62 6f 75  74 20 77 68 69 63 68 20  |ata about which |
00000c90  74 68 65 20 75 73 65 72  20 6b 6e 6f 77 73 20 73  |the user knows s|
00000ca0  6f 6d 65 74 68 69 6e 67  20 0d 69 69 29 20 49 74  |omething .ii) It|
00000cb0  20 63 61 6e 20 65 78 61  6d 69 6e 65 20 61 6e 64  | can examine and|
00000cc0  20 70 6c 6f 74 20 64 61  74 61 20 69 6e 20 61 20  | plot data in a |
00000cd0  66 69 6c 65 20 6f 6e 20  64 69 73 63 20 6f 6e 20  |file on disc on |
00000ce0  69 74 73 20 6f 77 6e 2e  0d 0d 74 61 6b 65 20 74  |its own...take t|
00000cf0  68 65 20 66 69 72 73 74  20 6f 66 20 74 68 65 73  |he first of thes|
00000d00  65 3a 0d 0d 54 68 65 20  75 73 65 72 20 77 69 73  |e:..The user wis|
00000d10  68 65 73 20 74 6f 20 70  6c 6f 74 20 74 68 65 20  |hes to plot the |
00000d20  66 75 6e 63 74 69 6f 6e  73 20 20 79 3d 73 69 6e  |functions  y=sin|
00000d30  20 78 20 20 26 20 79 3d  74 61 6e 20 78 0d 69 6e  | x  & y=tan x.in|
00000d40  20 74 68 65 20 72 61 6e  67 65 20 2d 31 20 74 6f  | the range -1 to|
00000d50  20 2b 31 20 6f 6e 20 58  20 61 6e 64 20 2d 31 20  | +1 on X and -1 |
00000d60  74 6f 20 2b 31 20 6f 6e  20 59 0d 53 75 63 68 20  |to +1 on Y.Such |
00000d70  74 68 61 74 20 74 68 65  20 67 72 61 70 68 73 20  |that the graphs |
00000d80  66 69 6c 6c 20 20 74 68  65 20 73 63 72 65 65 6e  |fill  the screen|
00000d90  2e 0d 0d 54 68 65 20 66  6f 6c 6c 6f 77 69 6e 67  |...The following|
00000da0  20 73 74 61 74 65 6d 65  6e 74 73 20 77 6f 75 6c  | statements woul|
00000db0  64 20 63 61 75 73 65 20  74 68 69 73 20 74 6f 20  |d cause this to |
00000dc0  62 65 20 64 6f 6e 65 0d  0d 4d 4f 44 45 20 34 0d  |be done..MODE 4.|
00000dd0  50 52 4f 43 67 73 74 61  72 74 0d 50 52 4f 43 73  |PROCgstart.PROCs|
00000de0  63 61 6c 65 28 31 29 0d  50 52 4f 43 70 6c 6f 74  |cale(1).PROCplot|
00000df0  28 31 2c 22 53 49 4e 28  58 29 22 29 0d 50 52 4f  |(1,"SIN(X)").PRO|
00000e00  43 70 6c 6f 74 28 31 2c  22 54 41 4e 28 58 29 22  |Cplot(1,"TAN(X)"|
00000e10  29 0d 50 52 4f 43 67 73  74 6f 70 0d 0d 69 6e 20  |).PROCgstop..in |
00000e20  74 68 69 73 20 65 78 61  6d 70 6c 65 2c 20 28 45  |this example, (E|
00000e30  2e 45 58 31 29 20 74 68  65 20 64 65 66 61 75 6c  |.EX1) the defaul|
00000e40  74 20 76 61 6c 75 65 73  20 6f 66 20 74 68 65 20  |t values of the |
00000e50  73 63 61 6c 65 20 61 6e  64 0d 67 72 61 70 68 20  |scale and.graph |
00000e60  73 69 7a 65 20 77 65 72  65 20 61 70 70 72 6f 70  |size were approp|
00000e70  72 69 61 74 65 2e 20 0d  0d 4e 2e 42 2e 20 74 68  |riate. ..N.B. th|
00000e80  65 20 73 63 72 65 65 6e  20 6d 6f 64 65 20 74 6f  |e screen mode to|
00000e90  20 62 65 20 75 73 65 64  20 69 73 20 75 73 65 72  | be used is user|
00000ea0  20 73 70 65 63 69 66 69  65 64 2e 20 4d 6f 64 65  | specified. Mode|
00000eb0  20 30 20 69 73 0d 73 6f  6d 65 74 69 6d 65 73 20  | 0 is.sometimes |
00000ec0  75 73 61 62 6c 65 20 6f  6e 20 61 20 73 74 61 6e  |usable on a stan|
00000ed0  64 61 72 64 20 42 42 43  2c 20 74 68 6f 75 67 68  |dard BBC, though|
00000ee0  20 74 68 65 20 4e 4f 20  52 4f 4f 4d 20 65 72 72  | the NO ROOM err|
00000ef0  6f 72 20 69 73 0d 66 72  65 71 75 65 6e 74 6c 79  |or is.frequently|
00000f00  20 65 6e 63 6f 75 6e 74  65 72 65 64 2e 20 4d 6f  | encountered. Mo|
00000f10  64 65 20 34 20 77 69 6c  6c 20 63 65 72 74 61 69  |de 4 will certai|
00000f20  6e 6c 79 20 77 6f 72 6b  2e 20 4e 4f 20 70 72 6f  |nly work. NO pro|
00000f30  62 6c 65 6d 0d 73 68 6f  75 6c 64 20 62 65 20 65  |blem.should be e|
00000f40  6e 63 6f 75 6e 74 65 72  65 64 20 6f 6e 20 61 20  |ncountered on a |
00000f50  42 42 43 20 6d 61 73 74  65 72 20 77 68 65 72 65  |BBC master where|
00000f60  20 53 68 61 64 6f 77 20  52 41 4d 20 6d 61 79 20  | Shadow RAM may |
00000f70  62 65 0d 75 73 65 64 2e  0d 0d 53 75 70 70 6f 73  |be.used...Suppos|
00000f80  65 2c 20 68 6f 77 65 76  65 72 2c 20 74 68 61 74  |e, however, that|
00000f90  20 61 20 67 72 61 70 68  20 66 72 6f 6d 20 2d 33  | a graph from -3|
00000fa0  36 30 20 74 6f 20 33 36  30 20 6f 6e 20 58 20 61  |60 to 360 on X a|
00000fb0  6e 64 20 2d 31 20 74 6f  20 2b 31 0d 6f 6e 20 59  |nd -1 to +1.on Y|
00000fc0  20 77 61 73 20 74 6f 20  62 65 20 70 6c 6f 74 74  | was to be plott|
00000fd0  65 64 2e 20 20 54 68 69  73 20 63 6f 75 6c 64 20  |ed.  This could |
00000fe0  62 65 20 64 6f 6e 65 20  77 69 74 68 20 74 68 65  |be done with the|
00000ff0  20 61 64 64 69 74 69 6f  6e 61 6c 0d 75 73 65 20  | additional.use |
00001000  6f 66 20 74 68 65 20 70  72 6f 63 65 64 75 72 65  |of the procedure|
00001010  3a 20 50 52 4f 43 73 63  61 28 64 65 66 61 75 6c  |: PROCsca(defaul|
00001020  74 2c 58 73 6d 69 2c 58  73 6d 61 2c 73 78 2c 59  |t,Xsmi,Xsma,sx,Y|
00001030  73 6d 69 2c 59 73 6d 61  2c 73 79 29 0d 48 65 72  |smi,Ysma,sy).Her|
00001040  65 2c 20 74 68 65 20 64  65 66 61 75 6c 74 20 76  |e, the default v|
00001050  61 6c 75 65 73 20 61 72  65 20 6e 6f 74 20 72 65  |alues are not re|
00001060  71 75 69 72 65 64 2c 20  74 68 75 73 20 74 68 65  |quired, thus the|
00001070  20 76 61 6c 75 65 20 46  41 4c 53 45 0d 73 68 6f  | value FALSE.sho|
00001080  75 6c 64 20 62 65 20 73  65 6e 74 2e 20 54 68 69  |uld be sent. Thi|
00001090  73 20 6e 6f 77 20 72 65  71 75 69 72 65 73 20 61  |s now requires a|
000010a0  6c 6c 20 74 68 65 20 70  61 72 61 6d 65 74 65 72  |ll the parameter|
000010b0  73 20 74 6f 20 62 65 20  73 65 74 20 62 79 0d 74  |s to be set by.t|
000010c0  68 65 20 75 73 65 72 2e  0d 0d 41 20 74 69 63 6b  |he user...A tick|
000010d0  20 6d 61 72 6b 20 73 70  61 63 69 6e 67 20 6f 66  | mark spacing of|
000010e0  20 34 30 20 6f 6e 20 58  20 61 6e 64 20 30 2e 31  | 40 on X and 0.1|
000010f0  20 6f 6e 20 59 20 77 6f  75 6c 64 20 62 65 20 61  | on Y would be a|
00001100  70 70 72 6f 70 72 69 61  74 65 2e 0d 54 68 75 73  |ppropriate..Thus|
00001110  20 61 20 63 61 6c 6c 20  3a 0d 0d 50 52 4f 43 73  | a call :..PROCs|
00001120  63 61 28 46 41 4c 53 45  2c 2d 33 36 30 2c 33 36  |ca(FALSE,-360,36|
00001130  30 2c 34 30 2c 2d 31 2c  31 2c 30 2e 31 29 0d 0d  |0,40,-1,1,0.1)..|
00001140  63 6f 75 6c 64 20 62 65  20 75 73 65 64 2c 20 69  |could be used, i|
00001150  74 20 73 68 6f 75 6c 64  20 62 65 20 69 6e 73 65  |t should be inse|
00001160  72 74 65 64 20 61 66 74  65 72 20 74 68 65 20 63  |rted after the c|
00001170  61 6c 6c 20 74 6f 0d 50  52 4f 43 67 73 74 61 72  |all to.PROCgstar|
00001180  74 2c 20 61 6e 64 20 62  65 66 6f 72 65 20 61 20  |t, and before a |
00001190  63 61 6c 6c 20 74 6f 20  50 52 4f 43 73 63 61 6c  |call to PROCscal|
000011a0  65 2e 0d 0d 4e 6f 77 2c  20 74 68 65 20 70 6f 73  |e...Now, the pos|
000011b0  69 74 69 6f 6e 20 6f 66  20 74 68 65 20 61 78 65  |ition of the axe|
000011c0  73 20 63 6f 75 6c 64 20  62 65 20 61 6c 74 65 72  |s could be alter|
000011d0  65 64 2c 20 69 6e 20 61  20 73 69 6d 69 6c 61 72  |ed, in a similar|
000011e0  20 77 61 79 2c 0d 62 79  20 61 20 63 61 6c 6c 20  | way,.by a call |
000011f0  74 6f 20 50 52 4f 43 70  6f 73 2e 20 49 66 20 6f  |to PROCpos. If o|
00001200  75 74 70 75 74 20 74 6f  20 74 68 65 20 73 63 72  |utput to the scr|
00001210  65 65 6e 20 69 73 20 72  65 71 75 69 72 65 64 2c  |een is required,|
00001220  20 0d 58 20 73 68 6f 75  6c 64 20 72 61 6e 67 65  | .X should range|
00001230  20 66 72 6f 6d 20 30 20  74 6f 20 31 32 37 39 20  | from 0 to 1279 |
00001240  61 6e 64 20 59 20 66 72  6f 6d 20 30 20 74 6f 20  |and Y from 0 to |
00001250  31 30 32 33 2e 0d 0d 45  78 61 6d 70 6c 65 20 45  |1023...Example E|
00001260  2e 45 58 34 20 73 68 6f  77 73 20 74 68 65 20 65  |.EX4 shows the e|
00001270  72 72 6f 72 20 72 65 63  6f 76 65 72 79 20 72 6f  |rror recovery ro|
00001280  75 74 69 6e 65 20 6f 66  20 50 52 4f 43 65 72 72  |utine of PROCerr|
00001290  6f 72 20 69 6e 0d 61 63  74 69 6f 6e 2c 20 61 73  |or in.action, as|
000012a0  20 61 20 67 72 61 70 68  20 6f 66 20 79 3d 31 2f  | a graph of y=1/|
000012b0  78 20 69 73 20 62 65 69  6e 67 20 70 6c 6f 74 74  |x is being plott|
000012c0  65 64 2e 0d 0d 41 6e 20  65 78 61 6d 70 6c 65 20  |ed...An example |
000012d0  6f 66 20 74 68 65 20 73  65 63 6f 6e 64 20 74 79  |of the second ty|
000012e0  70 65 20 6f 66 20 75 73  65 20 69 73 20 77 68 65  |pe of use is whe|
000012f0  72 65 20 74 68 65 20 75  73 65 72 20 65 69 74 68  |re the user eith|
00001300  65 72 20 68 61 73 0d 61  20 73 65 74 20 6f 66 20  |er has.a set of |
00001310  64 61 74 61 20 68 65 20  77 69 73 68 65 73 20 74  |data he wishes t|
00001320  6f 20 70 6c 6f 74 20 6f  72 20 68 61 73 20 61 20  |o plot or has a |
00001330  66 75 6e 63 74 69 6f 6e  20 68 65 20 6b 6e 6f 77  |function he know|
00001340  73 20 6c 69 74 74 6c 65  0d 61 62 6f 75 74 2e 0d  |s little.about..|
00001350  0d 41 20 73 65 74 20 6f  66 20 65 78 70 65 72 6d  |.A set of experm|
00001360  69 65 6e 74 61 6c 20 64  61 74 61 20 6d 61 79 20  |iental data may |
00001370  62 65 20 77 72 69 74 74  65 6e 20 74 6f 20 64 69  |be written to di|
00001380  73 63 20 62 79 20 74 68  65 20 75 73 65 72 20 69  |sc by the user i|
00001390  6e 0d 6f 6e 65 20 6f 66  20 74 77 6f 20 77 61 79  |n.one of two way|
000013a0  73 2e 0d 20 20 69 29 20  75 73 65 20 74 68 65 20  |s..  i) use the |
000013b0  61 72 63 68 69 76 69 6e  67 20 70 72 6f 67 72 61  |archiving progra|
000013c0  6d 20 53 54 41 54 31 20  77 68 69 63 68 20 69 73  |m STAT1 which is|
000013d0  20 6f 6e 20 74 68 65 20  64 69 73 63 20 6f 72 20  | on the disc or |
000013e0  20 0d 20 69 69 29 20 75  73 65 20 74 68 65 20 72  | . ii) use the r|
000013f0  6f 75 74 69 6e 65 73 20  50 52 4f 43 66 69 6c 65  |outines PROCfile|
00001400  20 61 6e 64 20 50 52 4f  43 64 61 74 61 20 69 6e  | and PROCdata in|
00001410  20 79 6f 75 72 20 6f 77  6e 0d 20 20 20 20 20 70  | your own.     p|
00001420  72 6f 67 72 61 6d 2e 0d  65 67 2e 2c 20 20 20 20  |rogram..eg.,    |
00001430  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
*
00001450  20 20 20 20 45 2e 45 58  32 0d 0d 50 52 4f 43 66  |    E.EX2..PROCf|
00001460  69 6c 65 28 54 52 55 45  2c 22 54 46 49 4c 45 22  |ile(TRUE,"TFILE"|
00001470  29 0d 46 4f 52 20 50 41  49 52 25 3d 32 30 20 54  |).FOR PAIR%=20 T|
00001480  4f 20 31 20 53 54 45 50  20 2d 31 0d 50 52 4f 43  |O 1 STEP -1.PROC|
00001490  64 61 74 61 28 50 41 49  52 25 2c 50 41 49 52 25  |data(PAIR%,PAIR%|
000014a0  2d 31 2c 28 50 41 49 52  25 2d 31 29 5e 32 2c 54  |-1,(PAIR%-1)^2,T|
000014b0  52 55 45 2c 22 22 2c 22  22 29 0d 4e 45 58 54 20  |RUE,"","").NEXT |
000014c0  50 41 49 52 25 0d 50 52  4f 43 66 69 6c 65 28 46  |PAIR%.PROCfile(F|
000014d0  41 4c 53 45 2c 22 22 29  0d 0d 74 68 69 73 20 77  |ALSE,"")..this w|
000014e0  69 6c 6c 20 70 72 6f 64  75 63 65 20 61 20 66 69  |ill produce a fi|
000014f0  6c 65 20 6f 6e 20 64 69  73 63 20 63 6f 6e 74 61  |le on disc conta|
00001500  69 6e 69 6e 67 20 32 30  20 70 61 69 72 73 20 6f  |ining 20 pairs o|
00001510  66 20 64 61 74 61 0d 66  6f 72 20 74 68 65 20 67  |f data.for the g|
00001520  72 61 70 68 20 79 3d 78  5e 32 2e 0d 0d 4c 65 74  |raph y=x^2...Let|
00001530  20 75 73 20 74 72 65 61  74 20 74 68 69 73 20 66  | us treat this f|
00001540  69 6c 65 20 61 73 20 61  20 73 65 74 20 6f 66 20  |ile as a set of |
00001550  65 78 70 65 72 69 6d 65  6e 74 61 6c 20 64 61 74  |experimental dat|
00001560  61 2c 20 61 6e 64 20 75  73 65 20 74 68 65 0d 6f  |a, and use the.o|
00001570  74 68 65 72 20 72 6f 75  74 69 6e 65 73 20 74 6f  |ther routines to|
00001580  20 63 68 6f 6f 73 65 20  61 6e 20 61 70 70 72 6f  | choose an appro|
00001590  70 72 69 61 74 65 20 73  63 61 6c 65 20 61 6e 64  |priate scale and|
000015a0  20 74 6f 20 70 6c 6f 74  20 74 68 65 0d 73 71 75  | to plot the.squ|
000015b0  61 72 65 20 72 6f 6f 74  20 6f 66 20 74 68 65 20  |are root of the |
000015c0  59 20 64 61 74 61 20 61  67 61 69 6e 73 74 20 74  |Y data against t|
000015d0  68 65 20 58 20 76 61 6c  75 65 73 2c 20 74 6f 20  |he X values, to |
000015e0  63 61 6c 63 75 6c 61 74  65 20 61 6e 64 0d 70 6c  |calculate and.pl|
000015f0  6f 74 20 74 68 65 20 6c  69 6e 65 20 6f 66 20 62  |ot the line of b|
00001600  65 73 74 20 66 69 74 2e  0d 0d 50 52 4f 43 67 73  |est fit...PROCgs|
00001610  74 61 72 74 20 20 20 20  20 20 20 20 20 20 20 20  |tart            |
00001620  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00001630  20 20 20 20 20 20 20 20  20 20 20 20 45 2e 45 58  |            E.EX|
00001640  33 0d 50 52 4f 43 41 75  74 6f 53 63 61 6c 65 73  |3.PROCAutoScales|
00001650  28 22 54 46 49 4c 45 22  2c 22 58 22 2c 22 53 51  |("TFILE","X","SQ|
00001660  52 28 59 29 22 29 0d 50  52 4f 43 73 63 61 6c 65  |R(Y)").PROCscale|
00001670  28 31 29 0d 50 52 4f 43  44 72 61 77 66 69 6c 65  |(1).PROCDrawfile|
00001680  28 22 54 46 49 4c 45 22  2c 31 2c 22 58 22 2c 22  |("TFILE",1,"X","|
00001690  53 51 52 28 59 29 22 2c  54 52 55 45 29 0d 50 52  |SQR(Y)",TRUE).PR|
000016a0  4f 43 62 65 73 74 66 69  74 28 22 54 46 49 4c 45  |OCbestfit("TFILE|
000016b0  22 2c 22 58 22 2c 22 53  51 52 28 59 29 22 29 0d  |","X","SQR(Y)").|
000016c0  50 52 4f 43 70 6c 6f 74  28 31 2c 22 6d 2a 58 2b  |PROCplot(1,"m*X+|
000016d0  63 29 0d 50 52 4f 43 67  73 74 6f 70 0d 0d 20 20  |c).PROCgstop..  |
000016e0  20 20 20 20 20 20 20 20  20 20 20 20 20 20 41 64  |              Ad|
000016f0  64 69 6e 67 20 74 68 65  20 72 6f 75 74 69 6e 65  |ding the routine|
00001700  73 20 74 6f 20 61 20 70  72 6f 67 72 61 6d 0d 0d  |s to a program..|
00001710  54 68 65 20 27 61 6c 47  49 4e 4f 6e 27 20 72 6f  |The 'alGINOn' ro|
00001720  75 74 69 6e 65 73 20 61  72 65 20 73 75 70 70 6c  |utines are suppl|
00001730  69 65 64 20 69 6e 20 74  68 65 20 66 6f 72 6d 20  |ied in the form |
00001740  6f 66 20 61 6e 20 41 53  43 49 49 20 66 69 6c 65  |of an ASCII file|
00001750  0d 6f 6e 20 64 69 73 63  2c 20 61 6e 64 20 6d 61  |.on disc, and ma|
00001760  79 20 62 65 20 61 64 64  65 64 20 6f 6e 20 74 6f  |y be added on to|
00001770  20 74 68 65 20 65 6e 64  20 6f 66 20 61 20 75 73  | the end of a us|
00001780  65 72 20 70 72 6f 67 72  61 6d 2e 20 0d 54 68 69  |er program. .Thi|
00001790  73 20 69 73 20 64 6f 6e  65 20 62 79 20 74 68 65  |s is done by the|
000017a0  20 63 6f 6d 6d 61 6e 64  20 3a 0d 0d 2a 45 58 45  | command :..*EXE|
000017b0  43 20 61 6c 47 49 4e 4f  6e 0d 0d 54 68 65 20 72  |C alGINOn..The r|
000017c0  6f 75 74 69 6e 65 73 20  77 69 6c 6c 20 62 65 20  |outines will be |
000017d0  61 64 64 65 64 20 74 6f  20 74 68 65 20 75 73 65  |added to the use|
000017e0  72 20 70 72 6f 67 72 61  6d 20 73 74 61 72 74 69  |r program starti|
000017f0  6e 67 20 61 74 20 6c 69  6e 65 0d 31 30 30 30 30  |ng at line.10000|
00001800  2e 20 54 68 65 20 74 6f  74 61 6c 20 73 69 7a 65  |. The total size|
00001810  20 6f 66 20 74 68 65 20  72 6f 75 74 69 6e 65 73  | of the routines|
00001820  20 69 73 20 61 70 70 72  6f 78 69 6d 61 74 65 6c  | is approximatel|
00001830  79 20 34 6b 2e 0d 4e 6f  74 20 61 6c 6c 20 6f 66  |y 4k..Not all of|
00001840  20 74 68 65 20 72 6f 75  74 69 6e 65 73 20 6d 61  | the routines ma|
00001850  79 20 62 65 20 75 73 65  64 20 62 79 20 74 68 65  |y be used by the|
00001860  20 75 73 65 72 2c 20 69  6e 20 77 68 69 63 68 20  | user, in which |
00001870  63 61 73 65 2c 0d 74 68  65 20 72 65 64 75 6e 64  |case,.the redund|
00001880  61 6e 74 20 6f 6e 65 73  20 6d 61 79 20 62 65 20  |ant ones may be |
00001890  64 65 6c 65 74 65 64 2e  0d 0d 20 20 20 20 20 20  |deleted...      |
000018a0  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
000018b0  20 20 20 20 20 20 20 20  53 54 41 54 31 0d 0d 27  |        STAT1..'|
000018c0  53 54 41 54 31 27 20 69  73 20 61 20 73 69 6d 70  |STAT1' is a simp|
000018d0  6c 65 20 70 72 6f 67 72  61 6d 20 77 68 69 63 68  |le program which|
000018e0  20 6d 61 79 20 62 65 20  75 73 65 64 20 74 6f 20  | may be used to |
000018f0  70 72 6f 64 75 63 65 20  61 6e 64 2f 6f 72 0d 65  |produce and/or.e|
00001900  64 69 74 20 27 61 6c 47  49 4e 4f 6e 27 20 64 69  |dit 'alGINOn' di|
00001910  73 63 20 62 61 73 65 64  20 64 61 74 61 20 66 69  |sc based data fi|
00001920  6c 65 73 2e 0d 54 68 65  20 66 69 6c 65 20 74 6f  |les..The file to|
00001930  20 62 65 20 73 65 74 20  75 70 20 6f 72 20 65 64  | be set up or ed|
00001940  69 74 65 64 20 69 73 20  61 73 6b 65 64 20 66 6f  |ited is asked fo|
00001950  72 20 62 79 20 74 68 65  20 70 72 6f 67 72 61 6d  |r by the program|
00001960  0d 61 74 20 74 68 65 20  62 65 67 69 6e 6e 69 6e  |.at the beginnin|
00001970  67 2e 20 54 68 69 73 20  6e 61 6d 65 20 73 68 6f  |g. This name sho|
00001980  75 6c 64 20 62 65 20 6e  6f 20 6c 6f 6e 67 65 72  |uld be no longer|
00001990  20 74 68 61 6e 20 74 68  61 74 0d 61 6c 6c 6f 77  | than that.allow|
000019a0  65 64 20 62 79 20 74 68  65 20 72 65 73 69 64 65  |ed by the reside|
000019b0  6e 74 20 64 69 73 63 20  66 69 6c 69 6e 67 20 73  |nt disc filing s|
000019c0  79 73 74 65 6d 2e 0d 49  66 20 79 6f 75 20 61 72  |ystem..If you ar|
000019d0  65 20 61 62 6f 75 74 20  74 6f 20 65 64 69 74 20  |e about to edit |
000019e0  61 6e 20 65 78 69 73 74  69 6e 67 20 66 69 6c 65  |an existing file|
000019f0  2c 20 27 53 54 41 54 31  27 20 77 69 6c 6c 20 61  |, 'STAT1' will a|
00001a00  73 6b 20 77 68 69 63 68  0d 70 61 69 72 20 6f 66  |sk which.pair of|
00001a10  20 64 61 74 61 20 79 6f  75 20 77 69 73 68 20 74  | data you wish t|
00001a20  6f 20 73 74 61 72 74 20  77 69 74 68 2e 20 28 5b  |o start with. ([|
00001a30  72 65 74 75 72 6e 5d 20  3d 20 30 29 0d 4f 6e 63  |return] = 0).Onc|
00001a40  65 20 69 6e 20 74 68 65  20 65 64 69 74 69 6e 67  |e in the editing|
00001a50  20 73 63 72 65 65 6e 2c  20 74 68 65 20 66 69 76  | screen, the fiv|
00001a60  65 20 70 61 69 72 73 20  6f 66 20 64 61 74 61 20  |e pairs of data |
00001a70  65 69 74 68 65 72 20 73  69 64 65 20 6f 66 0d 74  |either side of.t|
00001a80  68 65 20 63 75 72 72 65  6e 74 20 70 61 69 72 20  |he current pair |
00001a90  61 72 65 20 73 68 6f 77  6e 2e 20 54 68 65 20 63  |are shown. The c|
00001aa0  75 72 72 65 6e 74 20 70  61 69 72 20 69 73 20 73  |urrent pair is s|
00001ab0  68 6f 77 6e 20 62 79 20  61 20 27 3e 27 0d 73 79  |hown by a '>'.sy|
00001ac0  6d 62 6f 6c 2e 20 20 54  6f 20 63 68 61 6e 67 65  |mbol.  To change|
00001ad0  20 70 61 69 72 73 2c 20  75 73 65 20 74 68 65 20  | pairs, use the |
00001ae0  27 75 70 27 20 61 6e 64  20 27 64 6f 77 6e 27 20  |'up' and 'down' |
00001af0  63 75 72 73 6f 72 20 6b  65 79 73 20 74 6f 0d 6d  |cursor keys to.m|
00001b00  6f 76 65 20 75 70 20 6f  72 20 64 6f 77 6e 20 74  |ove up or down t|
00001b10  68 65 20 73 63 72 65 65  6e 2e 0d 54 6f 20 61 6c  |he screen..To al|
00001b20  74 65 72 20 61 20 70 61  72 74 69 63 75 6c 61 72  |ter a particular|
00001b30  20 70 61 69 72 2c 20 70  72 65 73 73 20 74 68 65  | pair, press the|
00001b40  20 27 6c 65 66 74 27 20  63 75 72 73 6f 72 20 6b  | 'left' cursor k|
00001b50  65 79 2e 20 59 6f 75 20  77 69 6c 6c 0d 74 68 65  |ey. You will.the|
00001b60  6e 20 68 61 76 65 20 74  6f 20 65 6e 74 65 72 20  |n have to enter |
00001b70  74 68 65 20 74 77 6f 20  6e 65 77 20 76 61 6c 75  |the two new valu|
00001b80  65 73 20 66 6f 72 20 74  68 61 74 20 70 61 69 72  |es for that pair|
00001b90  20 6f 66 20 64 61 74 61  2e 0d 57 68 65 6e 20 79  | of data..When y|
00001ba0  6f 75 20 68 61 76 65 20  66 69 6e 69 73 68 65 64  |ou have finished|
00001bb0  20 61 20 70 61 72 74 69  63 75 6c 61 72 20 73 65  | a particular se|
00001bc0  73 73 69 6f 6e 2c 20 70  72 65 73 73 20 74 68 65  |ssion, press the|
00001bd0  20 27 54 41 42 27 20 6b  65 79 2c 0d 77 68 69 63  | 'TAB' key,.whic|
00001be0  68 20 77 69 6c 6c 20 65  6e 73 75 72 65 20 74 68  |h will ensure th|
00001bf0  61 74 20 61 6c 6c 20 64  61 74 61 20 69 73 20 73  |at all data is s|
00001c00  61 76 65 64 20 74 6f 20  64 69 73 6b 2e 0d 0d 20  |aved to disk... |
00001c10  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00001c20  20 20 20 20 20 20 20 20  20 20 20 20 55 6e 69 70  |            Unip|
00001c30  6c 6f 74 0d 0d 54 68 65  20 27 70 72 65 63 75 72  |lot..The 'precur|
00001c40  73 6f 72 27 20 74 6f 20  27 61 6c 47 49 4e 4f 6e  |sor' to 'alGINOn|
00001c50  27 20 69 73 20 61 6c 73  6f 20 73 75 70 70 6c 69  |' is also suppli|
00001c60  65 64 20 6f 6e 20 74 68  65 20 64 69 73 63 20 69  |ed on the disc i|
00001c70  6e 0d 64 69 72 65 63 74  6f 72 79 20 27 55 27 20  |n.directory 'U' |
00001c80  69 74 20 69 73 20 61 20  66 61 69 72 6c 79 20 77  |it is a fairly w|
00001c90  65 6c 6c 20 61 6e 6e 6f  74 61 74 65 64 20 73 65  |ell annotated se|
00001ca0  74 20 6f 66 20 72 6f 75  74 69 6e 65 73 20 77 68  |t of routines wh|
00001cb0  69 63 68 0d 61 72 65 20  6c 69 6d 69 74 65 64 20  |ich.are limited |
00001cc0  74 6f 20 70 6c 6f 74 74  69 6e 67 20 6d 61 74 68  |to plotting math|
00001cd0  65 6d 61 74 69 63 61 6c  20 66 75 6e 63 74 69 6f  |ematical functio|
00001ce0  6e 73 2e 20 49 74 20 72  65 74 61 69 6e 73 20 73  |ns. It retains s|
00001cf0  6f 6d 65 0d 66 65 61 74  75 72 65 73 20 77 68 69  |ome.features whi|
00001d00  63 68 20 65 6e 61 62 6c  65 64 20 69 74 20 74 6f  |ch enabled it to|
00001d10  20 77 6f 72 6b 20 77 69  74 68 20 74 68 65 20 50  | work with the P|
00001d20  61 72 66 69 74 74 20 70  6c 6f 74 74 65 72 2e 0d  |arfitt plotter..|
00001d30  54 68 6f 75 67 68 20 69  74 20 69 73 20 76 65 72  |Though it is ver|
00001d40  79 20 73 69 6d 69 6c 61  72 20 74 6f 20 27 61 6c  |y similar to 'al|
00001d50  47 49 4e 4f 6e 27 2c 20  69 74 20 69 73 20 6e 6f  |GINOn', it is no|
00001d60  74 20 69 64 65 6e 74 69  63 61 6c 20 62 79 0d 61  |t identical by.a|
00001d70  6e 79 20 6d 65 61 6e 73  2e 20 49 74 20 6d 61 79  |ny means. It may|
00001d80  20 62 65 20 6f 66 20 75  73 65 20 69 6e 20 63 69  | be of use in ci|
00001d90  72 63 75 6d 73 74 61 6e  63 65 73 20 6f 66 20 73  |rcumstances of s|
00001da0  65 76 65 72 65 20 6d 65  6d 6f 72 79 0d 73 68 6f  |evere memory.sho|
00001db0  72 74 61 67 65 2c 20 69  74 20 73 68 6f 75 6c 64  |rtage, it should|
00001dc0  20 62 65 20 6e 6f 74 65  64 20 74 68 61 74 20 49  | be noted that I|
00001dd0  20 64 6f 6e 27 74 20 69  6e 74 65 6e 64 20 74 6f  | don't intend to|
00001de0  20 73 75 70 70 6f 72 74  20 74 68 65 73 65 0d 72  | support these.r|
00001df0  6f 75 74 69 6e 65 73 20  69 6e 20 61 6e 79 20 77  |outines in any w|
00001e00  61 79 2e 0d 0d 20 20 20  20 20 20 20 20 20 20 20  |ay...           |
00001e10  20 20 20 20 20 20 20 27  41 20 6c 69 73 74 20 6f  |       'A list o|
00001e20  66 20 47 6c 6f 62 61 6c  20 56 61 72 69 61 62 6c  |f Global Variabl|
00001e30  65 73 27 0d 0d 58 20 61  6e 64 20 59 20 20 20 3a  |es'..X and Y   :|
00001e40  20 61 72 65 20 75 73 65  64 20 74 6f 20 63 6f 6e  | are used to con|
00001e50  74 61 69 6e 20 74 68 65  20 63 75 72 72 65 6e 74  |tain the current|
00001e60  20 70 61 69 72 20 6f 66  20 58 20 61 6e 64 20 59  | pair of X and Y|
00001e70  20 64 61 74 61 0d 20 20  20 20 20 20 20 20 20 20  | data.          |
00001e80  20 20 74 68 61 74 20 68  61 76 65 20 62 65 65 6e  |  that have been|
00001e90  20 72 65 61 64 20 66 72  6f 6d 20 64 69 73 63 20  | read from disc |
00001ea0  62 79 20 50 52 4f 43 64  61 74 61 2e 0d 0d 74 6f  |by PROCdata...to|
00001eb0  74 61 6c 20 20 20 20 20  3a 20 74 68 65 20 6e 75  |tal     : the nu|
00001ec0  6d 62 65 72 20 6f 66 20  70 61 69 72 73 20 6f 66  |mber of pairs of|
00001ed0  20 64 61 74 61 20 69 6e  20 74 68 65 20 63 75 72  | data in the cur|
00001ee0  72 65 6e 74 20 64 69 73  63 20 66 69 6c 65 2e 0d  |rent disc file..|
00001ef0  0d 4c 25 20 20 20 20 20  20 20 20 3a 20 74 68 65  |.L%        : the|
00001f00  20 6c 69 6e 65 20 74 6f  20 77 68 69 63 68 20 63  | line to which c|
00001f10  6f 6e 74 72 6f 6c 20 77  69 6c 6c 20 72 65 74 75  |ontrol will retu|
00001f20  72 6e 20 61 66 74 65 72  20 65 72 72 6f 72 0d 20  |rn after error. |
00001f30  20 20 20 20 20 20 20 20  20 20 20 72 65 63 6f 76  |           recov|
00001f40  65 72 79 2e 0d 0d 58 74  6d 61 78 20 20 20 20 20  |ery...Xtmax     |
00001f50  3a 0d 58 74 6d 69 6e 20  20 20 20 20 3a 20 74 68  |:.Xtmin     : th|
00001f60  65 20 64 69 6d 65 6e 73  69 6f 6e 73 20 6f 66 20  |e dimensions of |
00001f70  74 68 65 20 67 72 61 70  68 20 61 73 20 70 6c 6f  |the graph as plo|
00001f80  74 74 65 64 20 69 6e 20  74 65 72 6d 73 0d 59 74  |tted in terms.Yt|
00001f90  6d 61 78 20 20 20 20 20  3a 20 6f 66 20 74 68 65  |max     : of the|
00001fa0  20 64 65 76 69 63 65 20  62 65 69 6e 67 20 75 73  | device being us|
00001fb0  65 64 20 66 6f 72 20 70  6c 6f 74 74 69 6e 67 2e  |ed for plotting.|
00001fc0  0d 59 74 6d 69 6e 20 20  20 20 20 3a 0d 0d 78 73  |.Ytmin     :..xs|
00001fd0  6c 20 20 20 20 20 20 20  3a 20 74 68 65 20 6c 65  |l       : the le|
00001fe0  6e 67 74 68 20 6f 66 20  74 68 65 20 74 69 63 6b  |ngth of the tick|
00001ff0  20 6d 61 72 6b 73 2c 20  69 6e 20 74 65 72 6d 73  | marks, in terms|
00002000  20 6f 66 20 74 68 65 0d  79 73 6c 20 20 20 20 20  | of the.ysl     |
00002010  20 20 3a 20 70 6c 6f 74  74 69 6e 67 20 64 65 76  |  : plotting dev|
00002020  69 63 65 2e 0d 20 0d 50  72 79 20 20 20 20 20 20  |ice.. .Pry      |
00002030  20 3a 20 74 68 65 20 6c  65 6e 67 74 68 20 28 72  | : the length (r|
00002040  61 6e 67 65 29 20 6f 66  20 74 68 65 20 73 63 61  |ange) of the sca|
00002050  6c 65 73 20 69 6e 20 74  65 72 6d 73 20 6f 66 0d  |les in terms of.|
00002060  50 72 78 20 20 20 20 20  20 20 3a 20 74 68 65 20  |Prx       : the |
00002070  70 6c 6f 74 74 69 6e 67  20 64 65 76 69 63 65 2e  |plotting device.|
00002080  0d 0d 58 73 6d 69 6e 20  20 20 20 20 3a 0d 58 73  |..Xsmin     :.Xs|
00002090  6d 61 78 20 20 20 20 20  3a 20 74 68 65 20 64 69  |max     : the di|
000020a0  6d 65 6e 73 69 6f 6e 73  20 6f 66 20 74 68 65 20  |mensions of the |
000020b0  67 72 61 70 68 20 69 6e  20 74 65 72 6d 73 20 6f  |graph in terms o|
000020c0  66 20 74 68 65 20 0d 59  73 6d 69 6e 20 20 20 20  |f the .Ysmin    |
000020d0  20 3a 20 73 63 61 6c 65  20 63 68 6f 73 65 6e 2e  | : scale chosen.|
000020e0  0d 59 73 6d 61 78 20 20  20 20 20 3a 0d 0d 73 74  |.Ysmax     :..st|
000020f0  78 20 20 20 20 20 20 20  3a 20 74 68 65 20 67 61  |x       : the ga|
00002100  70 20 62 65 74 77 65 65  6e 20 74 69 63 6b 20 6d  |p between tick m|
00002110  61 72 6b 73 20 69 6e 20  74 65 72 6d 73 20 6f 66  |arks in terms of|
00002120  20 74 68 65 20 73 63 61  6c 65 2e 0d 73 74 79 20  | the scale..sty |
00002130  20 20 20 20 20 20 3a 0d  0d 53 72 79 20 20 20 20  |      :..Sry    |
00002140  20 20 20 3a 20 74 68 65  20 6c 65 6e 67 74 68 20  |   : the length |
00002150  28 72 61 6e 67 65 29 20  6f 66 20 74 68 65 20 73  |(range) of the s|
00002160  63 61 6c 65 73 2c 20 69  6e 20 74 65 72 6d 73 20  |cales, in terms |
00002170  6f 66 20 74 68 65 0d 53  72 78 20 20 20 20 20 20  |of the.Srx      |
00002180  20 3a 20 73 63 61 6c 65  73 2e 0d 0d 58 30 20 20  | : scales...X0  |
00002190  20 20 20 20 20 20 3a 20  74 68 65 20 70 6f 73 69  |      : the posi|
000021a0  74 69 6f 6e 20 6f 66 20  74 68 65 20 78 3d 30 20  |tion of the x=0 |
000021b0  61 6e 64 20 79 3d 30 20  6c 69 6e 65 73 20 69 6e  |and y=0 lines in|
000021c0  20 74 65 72 6d 73 20 6f  66 20 74 68 65 0d 59 30  | terms of the.Y0|
000021d0  20 20 20 20 20 20 20 20  3a 20 70 6c 6f 74 74 69  |        : plotti|
000021e0  6e 67 20 64 65 76 69 63  65 0d 0d 58 73 6d 69 6e  |ng device..Xsmin|
000021f0  32 20 20 20 20 3a 20 61  6c 74 65 72 6e 61 74 69  |2    : alternati|
00002200  76 65 20 74 6f 20 58 73  6d 69 6e 20 75 73 65 64  |ve to Xsmin used|
00002210  20 69 6e 20 65 72 72 6f  72 20 72 65 63 6f 76 65  | in error recove|
00002220  72 79 2e 0d 0d 6d 20 20  20 20 20 20 20 20 20 3a  |ry...m         :|
00002230  20 73 74 61 74 69 73 74  69 63 61 6c 20 71 75 61  | statistical qua|
00002240  6e 74 69 74 69 65 73 20  72 65 6c 61 74 65 64 20  |ntities related |
00002250  74 6f 20 74 68 65 20 63  75 72 72 65 6e 74 20 64  |to the current d|
00002260  69 73 63 0d 63 20 20 20  20 20 20 20 20 20 3a 20  |isc.c         : |
00002270  66 69 6c 65 2e 20 20 0d  72 20 20 20 20 20 20 20  |file.  .r       |
00002280  20 20 3a 20 20 20 20 20  20 20 20 73 65 65 20 50  |  :        see P|
00002290  52 4f 43 62 65 73 74 66  69 74 0d 0d 20 20 20 20  |ROCbestfit..    |
000022a0  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
000022b0  20 20 20 20 20 54 68 65  20 52 6f 75 74 69 6e 65  |     The Routine|
000022c0  73 2e 2e 2e 0d 20 20 20  20 20 20 20 20 20 20 20  |s....           |
000022d0  20 20 20 20 20 20 20 20  20 20 20 50 52 4f 43 66  |           PROCf|
000022e0  69 6c 65 28 6f 70 65 6e  2c 6e 61 6d 65 24 29 0d  |ile(open,name$).|
000022f0  0d 54 68 69 73 20 70 72  6f 63 65 64 75 72 65 20  |.This procedure |
00002300  69 73 20 75 73 65 64 20  74 6f 20 73 65 74 20 75  |is used to set u|
00002310  70 2c 20 6f 70 65 6e 20  66 6f 72 20 72 65 61 64  |p, open for read|
00002320  69 6e 67 20 6f 72 20 66  6f 72 20 77 72 69 74 69  |ing or for writi|
00002330  6e 67 0d 61 6e 64 20 74  6f 20 63 6c 6f 73 65 20  |ng.and to close |
00002340  61 20 72 61 6e 64 6f 6d  20 61 63 63 65 73 73 20  |a random access |
00002350  64 69 73 63 20 66 69 6c  65 2e 0d 0d 54 68 65 20  |disc file...The |
00002360  61 72 67 75 6d 65 6e 74  20 20 27 6f 70 65 6e 27  |argument  'open'|
00002370  20 20 69 73 20 73 69 6d  70 6c 79 20 75 73 65 64  |  is simply used|
00002380  20 74 6f 20 73 70 65 63  69 66 79 20 77 68 65 74  | to specify whet|
00002390  68 65 72 20 74 68 65 20  66 69 6c 65 0d 73 70 65  |her the file.spe|
000023a0  63 69 66 69 65 64 20 62  79 20 74 68 65 20 73 74  |cified by the st|
000023b0  72 69 6e 67 20 27 6e 61  6d 65 24 27 20 73 68 6f  |ring 'name$' sho|
000023c0  75 6c 64 20 62 65 20 4f  50 45 4e 45 44 20 6f 72  |uld be OPENED or|
000023d0  20 43 4c 4f 53 45 44 0d  64 65 70 65 6e 64 69 6e  | CLOSED.dependin|
000023e0  67 20 6f 6e 20 77 68 65  74 68 65 72 20 69 74 73  |g on whether its|
000023f0  20 76 61 6c 75 65 20 69  73 20 54 52 55 45 20 6f  | value is TRUE o|
00002400  72 20 46 41 4c 53 45 20  72 65 73 70 65 63 74 69  |r FALSE respecti|
00002410  76 65 6c 79 2e 20 54 68  65 0d 6c 65 6e 67 74 68  |vely. The.length|
00002420  20 6f 66 20 27 6e 61 6d  65 24 27 20 73 68 6f 75  | of 'name$' shou|
00002430  6c 64 20 62 65 20 6e 6f  20 6d 6f 72 65 20 74 68  |ld be no more th|
00002440  61 6e 20 74 68 61 74 20  61 6c 6c 6f 77 65 64 20  |an that allowed |
00002450  62 79 20 74 68 65 0d 63  75 72 72 65 6e 74 20 76  |by the.current v|
00002460  65 72 73 69 6f 6e 20 6f  66 20 74 68 65 20 64 69  |ersion of the di|
00002470  73 63 20 66 69 6c 69 6e  67 20 73 79 73 74 65 6d  |sc filing system|
00002480  2e 20 20 4e 6f 20 65 72  72 6f 72 20 63 68 65 63  |.  No error chec|
00002490  6b 69 6e 67 20 69 73 0d  70 65 72 66 6f 72 6d 65  |king is.performe|
000024a0  64 20 6f 6e 20 74 68 69  73 20 70 6f 69 6e 74 2e  |d on this point.|
000024b0  20 20 20 49 66 20 27 6f  70 65 6e 27 20 69 73 20  |   If 'open' is |
000024c0  54 52 55 45 2c 20 61 20  66 69 6c 65 20 69 73 20  |TRUE, a file is |
000024d0  63 72 65 61 74 65 64 0d  61 6e 64 20 6f 70 65 6e  |created.and open|
000024e0  65 64 20 66 6f 72 20 72  65 61 64 69 6e 67 20 6f  |ed for reading o|
000024f0  72 20 77 72 69 74 69 6e  67 20 69 66 20 69 74 20  |r writing if it |
00002500  64 6f 65 73 6e 27 74 20  61 6c 72 65 61 64 79 20  |doesn't already |
00002510  65 78 69 73 74 2e 0d 4f  74 68 65 72 77 69 73 65  |exist..Otherwise|
00002520  2c 20 74 68 65 20 65 78  69 73 74 69 6e 67 20 66  |, the existing f|
00002530  69 6c 65 20 69 73 20 73  69 6d 70 6c 79 20 6f 70  |ile is simply op|
00002540  65 6e 65 64 20 66 6f 72  20 72 65 61 64 69 6e 67  |ened for reading|
00002550  20 6f 72 0d 77 72 69 74  69 6e 67 2e 20 57 68 65  | or.writing. Whe|
00002560  6e 20 63 6c 6f 73 69 6e  67 20 61 20 66 69 6c 65  |n closing a file|
00002570  20 77 69 74 68 20 27 6f  70 65 6e 27 20 3d 20 46  | with 'open' = F|
00002580  41 4c 53 45 2c 20 74 68  65 20 73 70 65 63 69 66  |ALSE, the specif|
00002590  69 63 0d 66 69 6c 65 20  6e 61 6d 65 20 6e 65 65  |ic.file name nee|
000025a0  64 20 6e 6f 74 20 62 65  20 73 70 65 63 69 66 69  |d not be specifi|
000025b0  65 64 2c 20 61 73 20 61  6c 6c 20 66 69 6c 65 73  |ed, as all files|
000025c0  20 61 72 65 20 63 6c 6f  73 65 64 2e 20 20 0d 0d  | are closed.  ..|
000025d0  31 30 30 30 30 20 44 45  46 20 50 52 4f 43 66 69  |10000 DEF PROCfi|
000025e0  6c 65 28 6f 70 65 6e 2c  6e 61 6d 65 24 29 0d 31  |le(open,name$).1|
000025f0  30 30 31 30 20 49 46 20  4e 4f 54 20 6f 70 65 6e  |0010 IF NOT open|
00002600  20 54 48 45 4e 20 50 54  52 23 45 25 3d 30 20 20  | THEN PTR#E%=0  |
00002610  20 20 20 20 20 0d 20 20  20 20 20 20 20 3a 20 50  |     .       : P|
00002620  52 49 4e 54 23 45 25 2c  74 6f 74 61 6c 0d 20 20  |RINT#E%,total.  |
00002630  20 20 20 20 20 3a 20 43  4c 4f 53 45 23 30 0d 20  |     : CLOSE#0. |
00002640  20 20 20 20 20 20 3a 20  45 4e 44 50 52 4f 43 0d  |      : ENDPROC.|
00002650  31 30 30 32 30 20 43 4c  4f 53 45 23 30 0d 31 30  |10020 CLOSE#0.10|
00002660  30 33 30 20 45 25 3d 4f  50 45 4e 49 4e 28 6e 61  |030 E%=OPENIN(na|
00002670  6d 65 24 29 0d 31 30 30  34 30 20 49 46 20 45 25  |me$).10040 IF E%|
00002680  3d 30 20 43 4c 4f 53 45  23 30 0d 20 20 20 20 20  |=0 CLOSE#0.     |
00002690  20 20 3a 20 45 25 3d 4f  50 45 4e 4f 55 54 28 6e  |  : E%=OPENOUT(n|
000026a0  61 6d 65 24 29 0d 20 20  20 20 20 20 20 3a 20 43  |ame$).       : C|
000026b0  4c 4f 53 45 23 30 0d 20  20 20 20 20 20 20 3a 20  |LOSE#0.       : |
000026c0  45 25 3d 4f 50 45 4e 49  4e 28 6e 61 6d 65 24 29  |E%=OPENIN(name$)|
000026d0  0d 20 20 20 20 20 20 20  3a 20 74 6f 74 61 6c 3d  |.       : total=|
000026e0  31 0d 20 20 20 20 20 20  20 3a 20 50 52 49 4e 54  |1.       : PRINT|
000026f0  23 45 25 2c 74 6f 74 61  6c 2c 45 25 2c 45 25 0d  |#E%,total,E%,E%.|
00002700  20 20 20 20 20 20 20 3a  20 45 4e 44 50 52 4f 43  |       : ENDPROC|
00002710  0d 31 30 30 35 30 20 49  46 20 45 25 3c 3e 30 20  |.10050 IF E%<>0 |
00002720  49 4e 50 55 54 23 45 25  2c 74 6f 74 61 6c 0d 31  |INPUT#E%,total.1|
00002730  30 30 36 30 20 45 4e 44  50 52 4f 43 0d 0d 20 20  |0060 ENDPROC..  |
00002740  20 20 20 20 20 20 20 20  20 20 50 52 4f 43 64 61  |          PROCda|
00002750  74 61 28 70 61 69 72 2c  78 2c 79 2c 77 72 69 74  |ta(pair,x,y,writ|
00002760  65 2c 61 6c 74 65 72 58  24 2c 61 6c 74 65 72 59  |e,alterX$,alterY|
00002770  24 29 0d 0d 54 68 69 73  20 70 72 6f 63 65 64 75  |$)..This procedu|
00002780  72 65 20 69 73 20 75 73  65 64 20 74 6f 20 72 65  |re is used to re|
00002790  61 64 20 6f 72 20 77 72  69 74 65 20 64 61 74 61  |ad or write data|
000027a0  20 74 6f 20 6f 72 20 66  72 6f 6d 20 61 20 66 69  | to or from a fi|
000027b0  6c 65 0d 70 72 65 76 69  6f 75 73 6c 79 20 6f 70  |le.previously op|
000027c0  65 6e 65 64 20 62 79 20  50 52 4f 43 66 69 6c 65  |ened by PROCfile|
000027d0  2e 0d 0d 44 61 74 61 20  69 73 20 73 74 6f 72 65  |...Data is store|
000027e0  64 20 6f 6e 20 74 68 65  20 64 69 73 63 20 73 69  |d on the disc si|
000027f0  6d 70 6c 79 20 61 73 20  70 61 69 72 73 20 6f 66  |mply as pairs of|
00002800  20 72 65 61 6c 20 76 61  72 69 61 62 6c 65 73 2c  | real variables,|
00002810  20 6f 6e 65 0d 70 61 69  72 20 61 66 74 65 72 20  | one.pair after |
00002820  61 6e 6f 74 68 65 72 2e  20 20 54 68 65 20 66 69  |another.  The fi|
00002830  72 73 74 20 76 61 6c 75  65 20 73 74 6f 72 65 64  |rst value stored|
00002840  20 69 6e 20 61 20 66 69  6c 65 20 69 73 20 74 68  | in a file is th|
00002850  65 0d 74 6f 74 61 6c 20  6e 75 6d 62 65 72 20 6f  |e.total number o|
00002860  66 20 70 61 69 72 73 20  6f 66 20 64 61 74 61 20  |f pairs of data |
00002870  69 6e 20 74 68 61 74 20  66 69 6c 65 2c 20 74 68  |in that file, th|
00002880  65 72 65 61 66 74 65 72  2c 20 66 6f 6c 6c 6f 77  |ereafter, follow|
00002890  73 0d 74 68 65 20 64 61  74 61 2e 20 54 6f 20 57  |s.the data. To W|
000028a0  52 49 54 45 20 64 61 74  61 20 74 6f 20 61 20 66  |RITE data to a f|
000028b0  69 6c 65 2c 20 6f 6e 65  20 6d 75 73 74 20 73 70  |ile, one must sp|
000028c0  65 63 69 66 79 20 77 68  69 63 68 20 70 61 69 72  |ecify which pair|
000028d0  20 6f 66 0d 64 61 74 61  20 69 73 20 74 6f 20 62  | of.data is to b|
000028e0  65 20 77 72 69 74 74 65  6e 2c 20 61 6e 64 20 74  |e written, and t|
000028f0  68 65 20 74 77 6f 20 76  61 6c 75 65 73 20 74 6f  |he two values to|
00002900  20 62 65 20 77 72 69 74  74 65 6e 2c 20 74 68 61  | be written, tha|
00002910  74 0d 77 68 69 63 68 20  73 68 6f 75 6c 64 20 61  |t.which should a|
00002920  70 70 65 61 72 20 6f 6e  20 74 68 65 20 58 20 61  |ppear on the X a|
00002930  78 69 73 20 73 68 6f 75  6c 64 20 62 65 20 74 68  |xis should be th|
00002940  65 20 66 69 72 73 74 20  6e 75 6d 62 65 72 20 61  |e first number a|
00002950  6e 64 0d 73 68 6f 75 6c  64 20 62 65 20 77 72 69  |nd.should be wri|
00002960  74 74 65 6e 20 61 73 20  74 68 65 20 27 78 27 20  |tten as the 'x' |
00002970  61 72 67 75 6d 65 6e 74  20 65 74 63 2e 20 20 54  |argument etc.  T|
00002980  68 65 20 76 61 6c 75 65  20 6f 66 20 27 77 72 69  |he value of 'wri|
00002990  74 65 27 0d 73 68 6f 75  6c 64 20 62 65 20 54 52  |te'.should be TR|
000029a0  55 45 2e 20 20 4e 2e 42  2e 20 27 50 41 49 52 27  |UE.  N.B. 'PAIR'|
000029b0  20 73 68 6f 75 6c 64 20  62 65 20 61 6e 20 69 6e  | should be an in|
000029c0  74 65 67 65 72 20 67 72  65 61 74 65 72 20 74 68  |teger greater th|
000029d0  61 6e 0d 7a 65 72 6f 2e  20 54 68 65 20 73 74 72  |an.zero. The str|
000029e0  69 6e 67 73 20 20 61 6c  74 65 72 58 24 20 41 4e  |ings  alterX$ AN|
000029f0  44 20 61 6c 74 65 72 59  24 20 20 61 72 65 20 6e  |D alterY$  are n|
00002a00  6f 74 20 75 73 65 64 2c  20 62 75 74 20 6d 75 73  |ot used, but mus|
00002a10  74 20 62 65 0d 73 65 6e  74 2e 20 20 20 65 67 2e  |t be.sent.   eg.|
00002a20  2c 0d 0d 50 52 4f 43 64  61 74 61 28 31 2c 38 2c  |,..PROCdata(1,8,|
00002a30  31 36 2c 54 52 55 45 2c  22 22 2c 22 22 29 0d 0d  |16,TRUE,"","")..|
00002a40  57 6f 75 6c 64 20 77 72  69 74 65 20 74 68 65 20  |Would write the |
00002a50  66 69 72 73 74 20 70 61  69 72 20 6f 66 20 64 61  |first pair of da|
00002a60  74 61 20 61 73 20 28 38  2c 31 36 29 0d 0d 57 68  |ta as (8,16)..Wh|
00002a70  65 6e 20 64 61 74 61 20  69 73 20 72 65 61 64 2c  |en data is read,|
00002a80  20 74 68 65 20 64 61 74  61 20 61 72 65 20 72 65  | the data are re|
00002a90  74 75 72 6e 65 64 20 69  6e 20 74 68 65 20 47 6c  |turned in the Gl|
00002aa0  6f 62 61 6c 20 76 61 72  69 61 62 6c 65 73 0d 58  |obal variables.X|
00002ab0  20 61 6e 64 20 59 2e 20  20 54 68 65 20 27 70 61  | and Y.  The 'pa|
00002ac0  69 72 27 20 6d 75 73 74  20 62 65 20 73 70 65 63  |ir' must be spec|
00002ad0  69 66 69 65 64 2c 20 27  78 27 20 61 6e 64 20 27  |ified, 'x' and '|
00002ae0  79 27 20 61 72 65 20 6e  6f 74 20 75 73 65 64 2c  |y' are not used,|
00002af0  0d 62 75 74 20 61 20 76  61 6c 75 65 20 6d 75 73  |.but a value mus|
00002b00  74 20 62 65 20 73 65 6e  74 2e 20 27 77 72 69 74  |t be sent. 'writ|
00002b10  65 27 20 73 68 6f 75 6c  64 20 62 65 20 46 41 4c  |e' should be FAL|
00002b20  53 45 20 61 6e 64 20 27  61 6c 74 65 72 58 24 27  |SE and 'alterX$'|
00002b30  0d 61 6e 64 20 27 61 6c  74 65 72 79 24 27 20 6d  |.and 'altery$' m|
00002b40  75 73 74 20 62 65 20 73  65 6e 74 2e 0d 0d 54 68  |ust be sent...Th|
00002b50  65 73 65 20 6c 61 74 74  65 72 20 74 77 6f 20 76  |ese latter two v|
00002b60  61 72 69 61 62 6c 65 73  20 6d 61 79 20 62 65 20  |ariables may be |
00002b70  75 73 65 64 20 74 6f 20  63 68 61 6e 67 65 20 74  |used to change t|
00002b80  68 65 20 72 65 74 75 72  6e 65 64 0d 76 61 6c 75  |he returned.valu|
00002b90  65 20 6f 66 20 58 20 61  6e 64 20 59 2e 20 65 67  |e of X and Y. eg|
00002ba0  2c 20 69 66 20 61 6c 74  65 72 58 24 3d 22 53 49  |, if alterX$="SI|
00002bb0  4e 28 58 29 22 20 74 68  65 6e 20 74 68 65 20 72  |N(X)" then the r|
00002bc0  65 74 75 72 6e 65 64 20  76 61 6c 75 65 0d 58 20  |eturned value.X |
00002bd0  77 6f 75 6c 64 20 62 65  20 74 68 65 20 73 69 6e  |would be the sin|
00002be0  65 20 6f 66 20 74 68 65  20 76 61 6c 75 65 20 73  |e of the value s|
00002bf0  74 6f 72 65 64 20 6f 6e  20 74 68 65 20 64 69 73  |tored on the dis|
00002c00  63 2e 20 49 66 20 6e 6f  20 63 68 61 6e 67 65 0d  |c. If no change.|
00002c10  69 73 20 72 65 71 75 69  72 65 64 2c 20 61 6c 74  |is required, alt|
00002c20  65 72 58 24 20 73 68 6f  75 6c 64 20 62 65 20 65  |erX$ should be e|
00002c30  71 75 61 6c 20 74 6f 20  22 58 22 20 61 6e 64 20  |qual to "X" and |
00002c40  61 6c 74 65 72 59 24 20  74 6f 20 22 59 22 2e 0d  |alterY$ to "Y"..|
00002c50  0d 57 68 65 6e 20 74 68  65 20 72 6f 75 74 69 6e  |.When the routin|
00002c60  65 20 69 73 20 75 73 65  64 20 74 6f 20 77 72 69  |e is used to wri|
00002c70  74 65 20 63 61 6c 63 75  6c 61 74 65 64 20 64 61  |te calculated da|
00002c80  74 61 2c 20 74 68 65 20  64 61 74 61 20 73 68 6f  |ta, the data sho|
00002c90  75 6c 64 0d 62 65 20 77  72 69 74 74 65 6e 20 69  |uld.be written i|
00002ca0  6e 20 72 65 76 65 72 73  65 20 6f 72 64 65 72 2e  |n reverse order.|
00002cb0  20 69 65 2e 2c 20 74 68  65 20 68 69 67 68 65 73  | ie., the highes|
00002cc0  74 20 76 61 6c 75 65 20  6f 66 20 70 61 69 72 0d  |t value of pair.|
00002cd0  73 68 6f 75 6c 64 20 62  65 20 77 72 69 74 74 65  |should be writte|
00002ce0  6e 20 66 69 72 73 74 2e  20 20 54 68 69 73 20 65  |n first.  This e|
00002cf0  6e 73 75 72 65 73 20 74  68 61 74 20 73 75 66 66  |nsures that suff|
00002d00  69 63 69 65 6e 74 20 73  70 61 63 65 20 69 73 0d  |icient space is.|
00002d10  69 6e 69 74 69 61 6c 69  73 65 64 20 6f 6e 20 74  |initialised on t|
00002d20  68 65 20 64 69 73 63 2e  0d 0d 31 30 30 37 30 20  |he disc...10070 |
00002d30  44 45 46 20 50 52 4f 43  64 61 74 61 28 70 61 69  |DEF PROCdata(pai|
00002d40  72 2c 78 2c 79 2c 77 72  69 74 65 2c 61 6c 74 65  |r,x,y,write,alte|
00002d50  72 58 24 2c 61 6c 74 65  72 59 24 29 0d 31 30 30  |rX$,alterY$).100|
00002d60  38 30 20 4c 4f 43 41 4c  20 5a 25 2c 78 6e 0d 31  |80 LOCAL Z%,xn.1|
00002d70  30 30 39 30 20 49 46 20  70 61 69 72 3c 31 20 54  |0090 IF pair<1 T|
00002d80  48 45 4e 20 50 52 4f 43  66 69 6c 65 28 46 41 4c  |HEN PROCfile(FAL|
00002d90  53 45 2c 22 22 29 0d 20  20 20 20 20 20 20 3a 20  |SE,"").       : |
00002da0  50 52 49 4e 54 20 22 45  52 52 4f 52 20 50 41 49  |PRINT "ERROR PAI|
00002db0  52 20 3c 20 31 22 0d 20  20 20 20 20 20 20 3a 20  |R < 1".       : |
00002dc0  45 4e 44 0d 31 30 31 30  30 20 49 46 20 70 61 69  |END.10100 IF pai|
00002dd0  72 3e 74 6f 74 61 6c 20  54 48 45 4e 20 50 54 52  |r>total THEN PTR|
00002de0  23 45 25 3d 31 32 2a 74  6f 74 61 6c 2d 36 0d 20  |#E%=12*total-6. |
00002df0  20 20 20 20 20 20 3a 20  49 4e 50 55 54 23 45 25  |      : INPUT#E%|
00002e00  2c 5a 25 2c 5a 25 0d 20  20 20 20 20 20 20 3a 20  |,Z%,Z%.       : |
00002e10  46 4f 52 20 5a 25 3d 74  6f 74 61 6c 2b 31 20 54  |FOR Z%=total+1 T|
00002e20  4f 20 70 61 69 72 0d 20  20 20 20 20 20 20 3a 20  |O pair.       : |
00002e30  50 52 49 4e 54 23 45 25  2c 5a 25 2c 5a 25 0d 20  |PRINT#E%,Z%,Z%. |
00002e40  20 20 20 20 20 20 3a 20  4e 45 58 54 0d 31 30 31  |      : NEXT.101|
00002e50  31 30 20 50 54 52 23 45  25 3d 31 32 2a 70 61 69  |10 PTR#E%=12*pai|
00002e60  72 2d 36 0d 31 30 31 32  30 20 49 46 20 77 72 69  |r-6.10120 IF wri|
00002e70  74 65 20 54 48 45 4e 20  50 52 49 4e 54 23 45 25  |te THEN PRINT#E%|
00002e80  2c 78 2c 79 20 45 4c 53  45 20 49 4e 50 55 54 23  |,x,y ELSE INPUT#|
00002e90  45 25 2c 58 2c 59 0d 31  30 31 33 30 20 49 46 20  |E%,X,Y.10130 IF |
00002ea0  70 61 69 72 3e 74 6f 74  61 6c 20 54 48 45 4e 20  |pair>total THEN |
00002eb0  74 6f 74 61 6c 3d 70 61  69 72 0d 31 30 31 34 30  |total=pair.10140|
00002ec0  20 49 46 20 4e 4f 54 20  77 72 69 74 65 20 78 6e  | IF NOT write xn|
00002ed0  3d 45 56 41 4c 28 61 6c  74 65 72 58 24 29 0d 20  |=EVAL(alterX$). |
00002ee0  20 20 20 20 20 20 3a 20  59 3d 45 56 41 4c 28 61  |      : Y=EVAL(a|
00002ef0  6c 74 65 72 59 24 29 0d  20 20 20 20 20 20 20 3a  |lterY$).       :|
00002f00  20 58 3d 78 6e 0d 31 30  31 35 30 20 45 4e 44 50  | X=xn.10150 ENDP|
00002f10  52 4f 43 0d 0d 20 20 20  20 20 20 20 20 20 20 20  |ROC..           |
00002f20  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00002f30  50 52 4f 43 67 73 74 61  72 74 0d 0d 54 68 69 73  |PROCgstart..This|
00002f40  20 70 72 6f 63 65 64 75  72 65 20 69 73 20 75 73  | procedure is us|
00002f50  65 64 20 74 6f 20 69 6e  69 74 69 61 6c 69 73 65  |ed to initialise|
00002f60  20 74 68 65 20 67 72 61  70 68 20 64 72 61 77 69  | the graph drawi|
00002f70  6e 67 20 72 6f 75 74 69  6e 65 73 2e 0d 49 74 20  |ng routines..It |
00002f80  63 6c 6f 73 65 73 20 61  6c 6c 20 6f 70 65 6e 20  |closes all open |
00002f90  66 69 6c 65 73 2c 20 63  6c 65 61 72 73 20 74 68  |files, clears th|
00002fa0  65 20 67 72 61 70 68 69  63 73 20 73 63 72 65 65  |e graphics scree|
00002fb0  6e 2c 20 73 65 74 73 20  74 68 65 0d 64 72 61 77  |n, sets the.draw|
00002fc0  69 6e 67 20 61 72 65 61  20 61 6e 64 20 74 68 65  |ing area and the|
00002fd0  20 73 63 61 6c 65 20 74  6f 20 74 68 65 69 72 20  | scale to their |
00002fe0  64 65 66 61 75 6c 74 73  20 61 6e 64 20 73 65 74  |defaults and set|
00002ff0  73 75 70 20 74 68 65 20  65 72 72 6f 72 0d 63 68  |sup the error.ch|
00003000  65 63 6b 69 6e 67 20 72  6f 75 74 69 6e 65 2e 0d  |ecking routine..|
00003010  0d 49 74 20 73 68 6f 75  6c 64 20 62 65 20 75 73  |.It should be us|
00003020  65 64 20 61 74 20 74 68  65 20 73 74 61 72 74 20  |ed at the start |
00003030  6f 66 20 74 68 65 20 67  72 61 70 68 69 63 73 20  |of the graphics |
00003040  73 65 63 74 69 6f 6e 20  6f 66 20 61 6e 79 0d 70  |section of any.p|
00003050  72 6f 67 72 61 6d 20 75  73 69 6e 67 20 74 68 65  |rogram using the|
00003060  20 41 4c 47 49 4e 4f 4e  20 72 6f 75 74 69 6e 65  | ALGINON routine|
00003070  73 2e 0d 0d 31 30 31 36  30 20 44 45 46 20 50 52  |s...10160 DEF PR|
00003080  4f 43 67 73 74 61 72 74  0d 31 30 31 37 30 20 43  |OCgstart.10170 C|
00003090  4c 47 0d 31 30 31 38 30  20 50 52 4f 43 70 6f 73  |LG.10180 PROCpos|
000030a0  28 54 52 55 45 2c 30 2c  30 2c 30 2c 30 2c 30 2c  |(TRUE,0,0,0,0,0,|
000030b0  30 29 0d 31 30 31 39 30  20 50 52 4f 43 73 63 61  |0).10190 PROCsca|
000030c0  28 54 52 55 45 2c 30 2c  30 2c 30 2c 30 2c 30 2c  |(TRUE,0,0,0,0,0,|
000030d0  30 29 0d 31 30 32 30 30  20 43 4c 4f 53 45 23 30  |0).10200 CLOSE#0|
000030e0  0d 31 30 32 31 30 20 4f  4e 20 45 52 52 4f 52 20  |.10210 ON ERROR |
000030f0  50 52 4f 43 65 72 72 6f  72 0d 20 20 20 20 20 20  |PROCerror.      |
00003100  20 3a 20 47 4f 54 4f 20  4c 25 0d 31 30 32 32 30  | : GOTO L%.10220|
00003110  20 4c 25 3d 30 0d 31 30  32 33 30 20 45 4e 44 50  | L%=0.10230 ENDP|
00003120  52 4f 43 0d 0d 20 20 20  20 20 20 20 20 20 20 20  |ROC..           |
00003130  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00003140  20 50 52 4f 43 67 73 74  6f 70 0d 0d 54 68 69 73  | PROCgstop..This|
00003150  20 70 72 6f 63 65 64 75  72 65 20 73 68 6f 75 6c  | procedure shoul|
00003160  64 20 62 65 20 75 73 65  64 20 61 74 20 74 68 65  |d be used at the|
00003170  20 65 6e 64 20 6f 66 20  74 68 65 20 63 61 6c 6c  | end of the call|
00003180  73 20 74 6f 20 74 68 65  0d 67 72 61 70 68 20 64  |s to the.graph d|
00003190  72 61 77 69 6e 67 20 72  6f 75 74 69 6e 65 73 2e  |rawing routines.|
000031a0  20 49 74 20 73 69 6d 70  6c 79 20 63 6c 6f 73 65  | It simply close|
000031b0  73 20 61 6e 79 20 6f 70  65 6e 20 66 69 6c 65 73  |s any open files|
000031c0  2e 0d 0d 31 30 32 34 30  20 44 45 46 20 50 52 4f  |...10240 DEF PRO|
000031d0  43 67 73 74 6f 70 0d 31  30 32 35 30 20 43 4c 4f  |Cgstop.10250 CLO|
000031e0  53 45 23 30 0d 31 30 32  36 30 20 45 4e 44 50 52  |SE#0.10260 ENDPR|
000031f0  4f 43 0d 0d 0d 20 20 20  20 20 50 52 4f 43 70 6f  |OC...     PROCpo|
00003200  73 28 64 65 66 61 75 6c  74 2c 58 74 6d 69 2c 58  |s(default,Xtmi,X|
00003210  74 6d 61 2c 78 73 2c 59  74 6d 69 2c 59 74 6d 61  |tma,xs,Ytmi,Ytma|
00003220  2c 79 73 29 0d 0d 54 68  69 73 20 70 72 6f 63 65  |,ys)..This proce|
00003230  64 75 72 65 20 73 65 74  73 20 75 70 20 74 68 65  |dure sets up the|
00003240  20 61 76 61 69 6c 61 62  6c 65 20 64 72 61 77 69  | available drawi|
00003250  6e 67 20 61 72 65 61 2e  0d 0d 58 74 6d 69 20 26  |ng area...Xtmi &|
00003260  20 58 74 6d 61 20 61 72  65 20 74 68 65 20 6d 69  | Xtma are the mi|
00003270  6e 69 6d 75 6d 20 61 6e  64 20 6d 61 78 69 6d 75  |nimum and maximu|
00003280  6d 20 58 20 76 61 6c 75  65 73 20 6f 66 20 74 68  |m X values of th|
00003290  65 20 61 72 65 61 0d 69  6e 73 69 64 65 20 77 68  |e area.inside wh|
000032a0  69 63 68 20 67 72 61 70  68 20 70 6c 6f 74 74 69  |ich graph plotti|
000032b0  6e 67 20 77 69 6c 6c 20  6f 63 63 75 72 2e 20 54  |ng will occur. T|
000032c0  68 65 20 64 65 66 61 75  6c 74 73 20 61 72 65 20  |he defaults are |
000032d0  31 35 20 61 6e 64 0d 31  32 37 39 20 27 78 73 27  |15 and.1279 'xs'|
000032e0  20 69 73 20 74 68 65 20  6c 65 6e 67 74 68 20 6f  | is the length o|
000032f0  66 20 74 68 65 20 74 69  63 6b 20 6d 61 72 6b 73  |f the tick marks|
00003300  2e 20 54 68 65 73 65 20  61 72 65 20 70 6c 6f 74  |. These are plot|
00003310  74 65 64 0d 6f 75 74 73  69 64 65 20 6f 66 20 74  |ted.outside of t|
00003320  68 65 20 61 72 65 61 20  73 70 65 63 69 66 69 65  |he area specifie|
00003330  64 20 62 79 20 58 74 6d  69 20 26 20 58 74 6d 61  |d by Xtmi & Xtma|
00003340  2e 20 54 68 75 73 20 74  6f 20 65 6e 73 75 72 65  |. Thus to ensure|
00003350  20 74 68 65 79 0d 61 72  65 20 61 63 74 75 61 6c  | they.are actual|
00003360  6c 79 20 70 6c 6f 74 74  65 64 2c 20 58 74 6d 69  |ly plotted, Xtmi|
00003370  20 73 68 6f 75 6c 64 20  61 6c 77 61 79 73 20 62  | should always b|
00003380  65 20 6c 61 72 67 65 72  20 74 68 61 6e 20 78 73  |e larger than xs|
00003390  2e 20 54 68 65 0d 64 65  66 61 75 6c 74 20 69 73  |. The.default is|
000033a0  20 31 35 0d 0d 44 65 66  61 75 6c 74 73 20 66 6f  | 15..Defaults fo|
000033b0  72 20 74 68 65 20 59 20  61 78 69 73 20 61 72 65  |r the Y axis are|
000033c0  20 31 35 2c 31 30 32 33  20 61 6e 64 20 31 35 0d  | 15,1023 and 15.|
000033d0  0d 49 66 20 64 65 66 61  75 6c 74 20 3d 20 54 52  |.If default = TR|
000033e0  55 45 20 2c 20 74 68 65  6e 20 74 68 65 20 64 65  |UE , then the de|
000033f0  66 61 75 6c 74 20 76 61  6c 75 65 73 20 61 72 65  |fault values are|
00003400  20 73 65 74 2c 20 6f 74  68 65 72 77 69 73 65 0d  | set, otherwise.|
00003410  74 68 65 20 76 61 6c 75  65 73 20 73 70 65 63 69  |the values speci|
00003420  66 69 65 64 20 62 79 20  74 68 65 20 61 72 67 75  |fied by the argu|
00003430  6d 65 6e 74 73 20 61 72  65 20 75 73 65 64 2e 0d  |ments are used..|
00003440  0d 31 30 32 37 30 20 44  45 46 20 50 52 4f 43 70  |.10270 DEF PROCp|
00003450  6f 73 28 64 65 66 61 75  6c 74 2c 58 74 6d 69 2c  |os(default,Xtmi,|
00003460  58 74 6d 61 2c 78 73 2c  59 74 6d 69 2c 59 74 6d  |Xtma,xs,Ytmi,Ytm|
00003470  61 2c 79 73 29 0d 31 30  32 38 30 20 49 46 20 64  |a,ys).10280 IF d|
00003480  65 66 61 75 6c 74 20 54  48 45 4e 20 58 74 6d 69  |efault THEN Xtmi|
00003490  6e 3d 31 35 0d 20 20 20  20 20 20 20 3a 20 58 74  |n=15.       : Xt|
000034a0  6d 61 78 3d 31 32 37 39  0d 20 20 20 20 20 20 20  |max=1279.       |
000034b0  3a 20 78 73 6c 3d 31 35  0d 20 20 20 20 20 20 20  |: xsl=15.       |
000034c0  3a 20 59 74 6d 69 6e 3d  31 35 0d 20 20 20 20 20  |: Ytmin=15.     |
000034d0  20 20 3a 20 59 74 6d 61  78 3d 31 30 32 33 0d 20  |  : Ytmax=1023. |
000034e0  20 20 20 20 20 20 3a 20  79 73 6c 3d 31 35 0d 31  |      : ysl=15.1|
000034f0  30 32 39 30 20 49 46 20  4e 4f 54 20 64 65 66 61  |0290 IF NOT defa|
00003500  75 6c 74 20 54 48 45 4e  20 58 74 6d 69 6e 3d 58  |ult THEN Xtmin=X|
00003510  74 6d 69 0d 20 20 20 20  20 20 20 3a 20 58 74 6d  |tmi.       : Xtm|
00003520  61 78 3d 58 74 6d 61 0d  20 20 20 20 20 20 20 3a  |ax=Xtma.       :|
00003530  20 78 73 6c 3d 78 73 0d  20 20 20 20 20 20 20 3a  | xsl=xs.       :|
00003540  20 59 74 6d 69 6e 3d 59  74 6d 69 0d 20 20 20 20  | Ytmin=Ytmi.    |
00003550  20 20 20 3a 20 59 74 6d  61 78 3d 59 74 6d 61 0d  |   : Ytmax=Ytma.|
00003560  20 20 20 20 20 20 20 3a  20 79 73 6c 3d 79 73 0d  |       : ysl=ys.|
00003570  31 30 33 30 30 20 50 72  79 3d 59 74 6d 61 78 2d  |10300 Pry=Ytmax-|
00003580  59 74 6d 69 6e 0d 31 30  33 31 30 20 50 72 78 3d  |Ytmin.10310 Prx=|
00003590  58 74 6d 61 78 2d 58 74  6d 69 6e 0d 31 30 33 32  |Xtmax-Xtmin.1032|
000035a0  30 20 45 4e 44 50 52 4f  43 0d 0d 20 20 20 20 20  |0 ENDPROC..     |
000035b0  20 20 20 20 20 20 50 52  4f 43 73 63 61 28 64 65  |      PROCsca(de|
000035c0  66 61 75 6c 74 2c 58 73  6d 69 2c 58 73 6d 61 2c  |fault,Xsmi,Xsma,|
000035d0  73 78 2c 59 73 6d 69 2c  59 73 6d 61 2c 73 79 29  |sx,Ysmi,Ysma,sy)|
000035e0  0d 0d 54 68 65 20 73 79  6e 74 61 78 20 6f 66 20  |..The syntax of |
000035f0  74 68 69 73 20 70 72 6f  63 65 64 75 72 65 20 69  |this procedure i|
00003600  73 20 73 69 6d 69 6c 61  72 20 74 6f 20 74 68 61  |s similar to tha|
00003610  74 20 6f 66 20 50 52 4f  43 70 6f 73 2e 20 54 68  |t of PROCpos. Th|
00003620  69 73 0d 70 72 6f 63 65  64 75 72 65 20 69 73 20  |is.procedure is |
00003630  75 73 65 64 20 74 6f 20  73 65 74 20 74 68 65 20  |used to set the |
00003640  6d 69 6e 69 6d 75 6d 20  61 6e 64 20 6d 61 78 69  |minimum and maxi|
00003650  6d 75 6d 20 73 63 61 6c  65 20 76 61 6c 75 65 73  |mum scale values|
00003660  20 61 6e 64 0d 74 68 65  20 64 69 73 74 61 6e 63  | and.the distanc|
00003670  65 20 62 65 74 77 65 65  6e 20 74 69 63 6b 20 6d  |e between tick m|
00003680  61 72 6b 73 2e 0d 0d 54  68 65 20 64 65 66 61 75  |arks...The defau|
00003690  6c 74 73 20 61 72 65 20  66 6f 72 20 61 20 67 72  |lts are for a gr|
000036a0  61 70 68 20 77 69 74 68  20 61 78 65 73 20 66 72  |aph with axes fr|
000036b0  6f 6d 20 2d 31 20 74 6f  20 31 20 61 6e 64 20 74  |om -1 to 1 and t|
000036c0  69 63 6b 0d 6d 61 72 6b  73 20 77 69 74 68 20 61  |ick.marks with a|
000036d0  20 73 70 61 63 69 6e 67  20 6f 66 20 30 2e 31 0d  | spacing of 0.1.|
000036e0  0d 31 30 33 33 30 20 44  45 46 20 50 52 4f 43 73  |.10330 DEF PROCs|
000036f0  63 61 28 64 65 66 61 75  6c 74 2c 58 73 6d 69 2c  |ca(default,Xsmi,|
00003700  58 73 6d 61 2c 73 78 2c  59 73 6d 69 2c 59 73 6d  |Xsma,sx,Ysmi,Ysm|
00003710  61 2c 73 79 29 0d 31 30  33 34 30 20 49 46 20 64  |a,sy).10340 IF d|
00003720  65 66 61 75 6c 74 20 54  48 45 4e 20 58 73 6d 69  |efault THEN Xsmi|
00003730  6e 3d 2d 31 0d 20 20 20  20 20 20 20 3a 20 58 73  |n=-1.       : Xs|
00003740  6d 61 78 3d 31 0d 20 20  20 20 20 20 20 3a 20 73  |max=1.       : s|
00003750  74 78 3d 30 2e 31 0d 20  20 20 20 20 20 20 3a 20  |tx=0.1.       : |
00003760  59 73 6d 69 6e 3d 2d 31  0d 20 20 20 20 20 20 20  |Ysmin=-1.       |
00003770  3a 20 59 73 6d 61 78 3d  31 0d 20 20 20 20 20 20  |: Ysmax=1.      |
00003780  20 3a 20 73 74 79 3d 30  2e 31 0d 31 30 33 35 30  | : sty=0.1.10350|
00003790  20 49 46 20 4e 4f 54 20  64 65 66 61 75 6c 74 20  | IF NOT default |
000037a0  54 48 45 4e 20 58 73 6d  69 6e 3d 58 73 6d 69 0d  |THEN Xsmin=Xsmi.|
000037b0  20 20 20 20 20 20 20 3a  20 58 73 6d 61 78 3d 58  |       : Xsmax=X|
000037c0  73 6d 61 0d 20 20 20 20  20 20 20 3a 20 73 74 78  |sma.       : stx|
000037d0  3d 73 78 0d 20 20 20 20  20 20 20 3a 20 59 73 6d  |=sx.       : Ysm|
000037e0  69 6e 3d 59 73 6d 69 0d  20 20 20 20 20 20 20 3a  |in=Ysmi.       :|
000037f0  20 59 73 6d 61 78 3d 59  73 6d 61 0d 20 20 20 20  | Ysmax=Ysma.    |
00003800  20 20 20 3a 20 73 74 79  3d 73 79 0d 31 30 33 36  |   : sty=sy.1036|
00003810  30 20 50 52 4f 43 73 63  61 6c 65 76 61 72 73 0d  |0 PROCscalevars.|
00003820  31 30 33 37 30 20 45 4e  44 50 52 4f 43 0d 0d 20  |10370 ENDPROC.. |
00003830  20 20 20 20 20 20 20 20  20 20 20 20 20 50 52 4f  |             PRO|
00003840  43 41 75 74 6f 53 63 61  6c 65 73 28 6e 61 6d 65  |CAutoScales(name|
00003850  24 2c 61 6c 74 65 72 58  24 2c 61 6c 74 65 72 59  |$,alterX$,alterY|
00003860  24 29 0d 0d 54 68 69 73  20 70 72 6f 63 65 64 75  |$)..This procedu|
00003870  72 65 20 69 73 20 75 73  65 64 20 74 6f 20 72 65  |re is used to re|
00003880  61 64 20 74 68 72 6f 75  67 68 20 74 68 65 20 6e  |ad through the n|
00003890  61 6d 65 64 20 66 69 6c  65 2c 20 61 6e 64 20 68  |amed file, and h|
000038a0  61 76 69 6e 67 0d 61 6c  74 65 72 65 64 20 74 68  |aving.altered th|
000038b0  65 20 58 20 61 6e 64 20  59 20 76 61 6c 75 65 73  |e X and Y values|
000038c0  20 61 73 20 73 70 65 63  69 66 69 65 64 2c 20 74  | as specified, t|
000038d0  6f 20 64 65 74 65 72 6d  69 6e 65 20 61 70 70 72  |o determine appr|
000038e0  6f 70 72 69 61 74 65 0d  76 61 6c 75 65 73 20 66  |opriate.values f|
000038f0  6f 72 20 74 68 65 20 73  63 61 6c 65 2e 20 0d 0d  |or the scale. ..|
00003900  31 30 33 38 30 20 44 45  46 20 50 52 4f 43 41 75  |10380 DEF PROCAu|
00003910  74 6f 53 63 61 6c 65 73  28 6e 61 6d 65 24 2c 61  |toScales(name$,a|
00003920  6c 74 65 72 58 24 2c 61  6c 74 65 72 59 24 29 0d  |lterX$,alterY$).|
00003930  31 30 33 39 30 20 4c 4f  43 41 4c 20 52 61 6e 67  |10390 LOCAL Rang|
00003940  65 58 2c 52 61 6e 67 65  59 2c 50 77 78 25 2c 50  |eX,RangeY,Pwx%,P|
00003950  77 79 25 2c 58 25 0d 31  30 34 30 30 20 50 52 4f  |wy%,X%.10400 PRO|
00003960  43 66 69 6c 65 28 54 52  55 45 2c 6e 61 6d 65 24  |Cfile(TRUE,name$|
00003970  29 0d 31 30 34 31 30 20  50 52 4f 43 64 61 74 61  |).10410 PROCdata|
00003980  28 31 2c 30 2c 30 2c 46  41 4c 53 45 2c 61 6c 74  |(1,0,0,FALSE,alt|
00003990  65 72 58 24 2c 61 6c 74  65 72 59 24 29 0d 31 30  |erX$,alterY$).10|
000039a0  34 32 30 20 58 73 6d 61  78 3d 58 0d 20 20 20 20  |420 Xsmax=X.    |
000039b0  20 20 20 3a 20 58 73 6d  69 6e 3d 58 0d 31 30 34  |   : Xsmin=X.104|
000039c0  33 30 20 59 73 6d 69 6e  3d 59 0d 20 20 20 20 20  |30 Ysmin=Y.     |
000039d0  20 20 3a 20 59 73 6d 61  78 3d 59 0d 31 30 34 34  |  : Ysmax=Y.1044|
000039e0  30 20 46 4f 52 20 58 25  3d 32 20 54 4f 20 74 6f  |0 FOR X%=2 TO to|
000039f0  74 61 6c 0d 31 30 34 35  30 20 50 52 4f 43 64 61  |tal.10450 PROCda|
00003a00  74 61 28 58 25 2c 30 2c  30 2c 46 41 4c 53 45 2c  |ta(X%,0,0,FALSE,|
00003a10  61 6c 74 65 72 58 24 2c  61 6c 74 65 72 59 24 29  |alterX$,alterY$)|
00003a20  0d 31 30 34 36 30 20 49  46 20 58 3e 58 73 6d 61  |.10460 IF X>Xsma|
00003a30  78 20 54 48 45 4e 20 58  73 6d 61 78 3d 58 0d 31  |x THEN Xsmax=X.1|
00003a40  30 34 37 30 20 49 46 20  58 3c 58 73 6d 69 6e 20  |0470 IF X<Xsmin |
00003a50  54 48 45 4e 20 58 73 6d  69 6e 3d 58 0d 31 30 34  |THEN Xsmin=X.104|
00003a60  38 30 20 49 46 20 59 3e  59 73 6d 61 78 20 54 48  |80 IF Y>Ysmax TH|
00003a70  45 4e 20 59 73 6d 61 78  3d 59 0d 31 30 34 39 30  |EN Ysmax=Y.10490|
00003a80  20 49 46 20 59 3c 59 73  6d 69 6e 20 54 48 45 4e  | IF Y<Ysmin THEN|
00003a90  20 59 73 6d 69 6e 3d 59  0d 31 30 35 30 30 20 4e  | Ysmin=Y.10500 N|
00003aa0  45 58 54 20 58 25 0d 31  30 35 31 30 20 52 61 6e  |EXT X%.10510 Ran|
00003ab0  67 65 58 3d 58 73 6d 61  78 2d 58 73 6d 69 6e 0d  |geX=Xsmax-Xsmin.|
00003ac0  31 30 35 32 30 20 52 61  6e 67 65 59 3d 59 73 6d  |10520 RangeY=Ysm|
00003ad0  61 78 2d 59 73 6d 69 6e  0d 31 30 35 33 30 20 50  |ax-Ysmin.10530 P|
00003ae0  77 78 25 3d 46 4e 70 6f  77 65 72 28 52 61 6e 67  |wx%=FNpower(Rang|
00003af0  65 58 29 0d 31 30 35 34  30 20 50 77 79 25 3d 46  |eX).10540 Pwy%=F|
00003b00  4e 70 6f 77 65 72 28 52  61 6e 67 65 59 29 0d 31  |Npower(RangeY).1|
00003b10  30 35 35 30 20 58 73 6d  61 78 3d 28 49 4e 54 28  |0550 Xsmax=(INT(|
00003b20  58 73 6d 61 78 2f 31 30  5e 50 77 78 25 2b 31 29  |Xsmax/10^Pwx%+1)|
00003b30  29 2a 31 30 5e 50 77 78  25 0d 31 30 35 36 30 20  |)*10^Pwx%.10560 |
00003b40  58 73 6d 69 6e 3d 28 49  4e 54 28 58 73 6d 69 6e  |Xsmin=(INT(Xsmin|
00003b50  2f 31 30 5e 50 77 78 25  29 29 2a 31 30 5e 50 77  |/10^Pwx%))*10^Pw|
00003b60  78 25 0d 31 30 35 37 30  20 59 73 6d 61 78 3d 28  |x%.10570 Ysmax=(|
00003b70  49 4e 54 28 59 73 6d 61  78 2f 31 30 5e 50 77 79  |INT(Ysmax/10^Pwy|
00003b80  25 2b 31 29 29 2a 31 30  5e 50 77 79 25 0d 31 30  |%+1))*10^Pwy%.10|
00003b90  35 38 30 20 59 73 6d 69  6e 3d 28 49 4e 54 28 59  |580 Ysmin=(INT(Y|
00003ba0  73 6d 69 6e 2f 31 30 5e  50 77 79 25 29 29 2a 31  |smin/10^Pwy%))*1|
00003bb0  30 5e 50 77 79 25 0d 31  30 35 39 30 20 73 74 78  |0^Pwy%.10590 stx|
00003bc0  3d 46 4e 73 74 65 70 73  69 7a 65 28 58 73 6d 61  |=FNstepsize(Xsma|
00003bd0  78 2d 58 73 6d 69 6e 29  0d 31 30 36 30 30 20 73  |x-Xsmin).10600 s|
00003be0  74 79 3d 46 4e 73 74 65  70 73 69 7a 65 28 59 73  |ty=FNstepsize(Ys|
00003bf0  6d 61 78 2d 59 73 6d 69  6e 29 0d 31 30 36 31 30  |max-Ysmin).10610|
00003c00  20 50 52 4f 43 73 63 61  6c 65 76 61 72 73 0d 31  | PROCscalevars.1|
00003c10  30 36 32 30 20 45 4e 44  50 52 4f 43 0d 0d 20 20  |0620 ENDPROC..  |
00003c20  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00003c30  20 20 20 20 20 20 20 46  4e 70 6f 77 65 72 28 6e  |       FNpower(n|
00003c40  75 6d 62 65 72 29 0d 0d  54 68 69 73 20 66 75 6e  |umber)..This fun|
00003c50  63 74 69 6f 6e 20 77 69  6c 6c 20 72 65 74 75 72  |ction will retur|
00003c60  6e 20 74 68 65 20 70 6f  77 65 72 20 6f 66 20 74  |n the power of t|
00003c70  65 6e 20 74 6f 20 77 68  69 63 68 20 61 20 67 69  |en to which a gi|
00003c80  76 65 6e 0d 6e 75 6d 62  65 72 20 69 73 20 72 61  |ven.number is ra|
00003c90  69 73 65 64 2e 0d 0d 31  30 36 33 30 20 44 45 46  |ised...10630 DEF|
00003ca0  20 46 4e 70 6f 77 65 72  28 6e 75 6d 62 65 72 29  | FNpower(number)|
00003cb0  0d 31 30 36 34 30 20 3d  49 4e 54 28 4c 4f 47 28  |.10640 =INT(LOG(|
00003cc0  6e 75 6d 62 65 72 29 29  0d 0d 20 20 20 20 20 20  |number))..      |
00003cd0  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00003ce0  20 20 46 4e 73 74 65 70  73 69 7a 65 28 72 61 6e  |  FNstepsize(ran|
00003cf0  67 65 29 0d 0d 54 68 69  73 20 66 75 6e 63 74 69  |ge)..This functi|
00003d00  6f 6e 20 77 69 6c 6c 20  72 65 74 75 72 6e 20 61  |on will return a|
00003d10  6e 20 61 70 70 72 6f 70  72 69 61 74 65 20 73 70  |n appropriate sp|
00003d20  61 63 69 6e 67 20 66 6f  72 20 74 69 63 6b 20 6d  |acing for tick m|
00003d30  61 72 6b 73 0d 6f 6e 20  61 6e 20 61 78 69 73 20  |arks.on an axis |
00003d40  6f 66 20 67 69 76 65 6e  20 72 61 6e 67 65 2e 0d  |of given range..|
00003d50  0d 31 30 36 35 30 20 44  45 46 20 46 4e 73 74 65  |.10650 DEF FNste|
00003d60  70 73 69 7a 65 28 72 61  6e 67 65 29 0d 31 30 36  |psize(range).106|
00003d70  36 30 20 4c 4f 43 41 4c  20 70 6f 77 65 72 25 0d  |60 LOCAL power%.|
00003d80  31 30 36 37 30 20 70 6f  77 65 72 25 3d 46 4e 70  |10670 power%=FNp|
00003d90  6f 77 65 72 28 72 61 6e  67 65 29 0d 31 30 36 38  |ower(range).1068|
00003da0  30 20 72 61 6e 67 65 3d  72 61 6e 67 65 2f 31 30  |0 range=range/10|
00003db0  5e 70 6f 77 65 72 25 0d  31 30 36 39 30 20 49 46  |^power%.10690 IF|
00003dc0  20 72 61 6e 67 65 3c 3d  33 20 54 48 45 4e 20 3d  | range<=3 THEN =|
00003dd0  32 2a 31 30 5e 28 70 6f  77 65 72 25 2d 31 29 0d  |2*10^(power%-1).|
00003de0  31 30 37 30 30 20 49 46  20 72 61 6e 67 65 3e 33  |10700 IF range>3|
00003df0  20 41 4e 44 20 72 61 6e  67 65 3c 37 20 54 48 45  | AND range<7 THE|
00003e00  4e 20 3d 35 2a 31 30 5e  28 70 6f 77 65 72 25 2d  |N =5*10^(power%-|
00003e10  31 29 0d 31 30 37 31 30  20 3d 31 2a 31 30 5e 70  |1).10710 =1*10^p|
00003e20  6f 77 65 72 25 0d 0d 20  20 20 20 20 20 20 20 20  |ower%..         |
00003e30  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00003e40  20 50 52 4f 43 73 63 61  6c 65 76 61 72 73 0d 0d  | PROCscalevars..|
00003e50  54 68 69 73 20 70 72 6f  63 65 64 75 72 65 20 69  |This procedure i|
00003e60  73 20 75 73 65 64 20 74  6f 20 73 65 74 20 75 70  |s used to set up|
00003e70  20 61 20 6e 75 6d 62 65  72 20 6f 66 20 76 61 72  | a number of var|
00003e80  69 61 62 6c 65 73 20 75  73 65 64 0d 77 69 74 68  |iables used.with|
00003e90  69 6e 20 74 68 65 20 67  72 61 70 68 20 64 72 61  |in the graph dra|
00003ea0  77 69 6e 67 20 72 6f 75  74 69 6e 65 73 2e 20 58  |wing routines. X|
00003eb0  30 20 61 6e 64 20 59 30  20 61 72 65 20 74 68 65  |0 and Y0 are the|
00003ec0  20 70 6f 73 69 74 69 6f  6e 73 20 6f 66 0d 74 68  | positions of.th|
00003ed0  65 20 6c 69 6e 65 73 20  58 3d 30 20 61 6e 64 20  |e lines X=0 and |
00003ee0  59 3d 30 20 28 6f 6e 20  74 68 65 20 73 63 61 6c  |Y=0 (on the scal|
00003ef0  65 29 20 6f 6e 20 74 68  65 20 73 63 72 65 65 6e  |e) on the screen|
00003f00  2e 0d 0d 31 30 37 32 30  20 44 45 46 20 50 52 4f  |...10720 DEF PRO|
00003f10  43 73 63 61 6c 65 76 61  72 73 0d 31 30 37 33 30  |Cscalevars.10730|
00003f20  20 53 72 79 3d 59 73 6d  61 78 2d 59 73 6d 69 6e  | Sry=Ysmax-Ysmin|
00003f30  0d 31 30 37 34 30 20 59  30 3d 59 74 6d 61 78 2d  |.10740 Y0=Ytmax-|
00003f40  50 72 79 2a 59 73 6d 61  78 2f 53 72 79 0d 31 30  |Pry*Ysmax/Sry.10|
00003f50  37 35 30 20 53 72 78 3d  58 73 6d 61 78 2d 58 73  |750 Srx=Xsmax-Xs|
00003f60  6d 69 6e 0d 31 30 37 36  30 20 58 30 3d 58 74 6d  |min.10760 X0=Xtm|
00003f70  61 78 2d 50 72 78 2a 58  73 6d 61 78 2f 53 72 78  |ax-Prx*Xsmax/Srx|
00003f80  0d 31 30 37 37 30 20 58  73 6d 69 6e 32 3d 58 73  |.10770 Xsmin2=Xs|
00003f90  6d 69 6e 0d 31 30 37 38  30 20 45 4e 44 50 52 4f  |min.10780 ENDPRO|
00003fa0  43 0d 0d 20 20 20 20 20  20 20 20 50 52 4f 43 44  |C..        PROCD|
00003fb0  72 61 77 66 69 6c 65 28  6e 61 6d 65 24 2c 5f 70  |rawfile(name$,_p|
00003fc0  5f 65 6e 2c 61 6c 74 65  72 58 24 2c 61 6c 74 65  |_en,alterX$,alte|
00003fd0  72 59 24 2c 63 72 6f 73  73 65 73 29 0d 0d 54 68  |rY$,crosses)..Th|
00003fe0  69 73 20 70 72 6f 63 65  64 75 72 65 20 77 69 6c  |is procedure wil|
00003ff0  6c 20 72 65 61 64 20 74  68 65 20 64 61 74 61 20  |l read the data |
00004000  66 72 6f 6d 20 61 20 6e  61 6d 65 64 20 66 69 6c  |from a named fil|
00004010  65 2c 20 61 6c 74 65 72  20 69 74 20 61 73 0d 73  |e, alter it as.s|
00004020  70 65 63 69 66 69 65 64  20 61 6e 64 20 70 6c 6f  |pecified and plo|
00004030  74 20 69 74 20 61 73 20  65 69 74 68 65 72 20 6a  |t it as either j|
00004040  6f 69 6e 65 64 20 6c 69  6e 65 73 20 6f 72 20 63  |oined lines or c|
00004050  72 6f 73 73 65 73 20 69  6e 20 74 68 65 0d 73 70  |rosses in the.sp|
00004060  65 63 69 66 69 65 64 20  70 65 6e 20 63 6f 6c 6f  |ecified pen colo|
00004070  75 72 2e 0d 0d 43 72 6f  73 73 65 73 20 61 72 65  |ur...Crosses are|
00004080  20 70 6c 6f 74 74 65 64  20 69 66 20 27 63 72 6f  | plotted if 'cro|
00004090  73 73 65 73 27 20 3d 20  54 52 55 45 0d 0d 31 30  |sses' = TRUE..10|
000040a0  37 39 30 20 44 45 46 20  50 52 4f 43 44 72 61 77  |790 DEF PROCDraw|
000040b0  66 69 6c 65 28 6e 61 6d  65 24 2c 70 65 6e 2c 61  |file(name$,pen,a|
000040c0  6c 74 65 72 58 24 2c 61  6c 74 65 72 59 24 2c 63  |lterX$,alterY$,c|
000040d0  72 6f 73 73 65 73 29 0d  31 30 38 30 30 20 4c 4f  |rosses).10800 LO|
000040e0  43 41 4c 20 50 45 4e 2c  58 25 2c 50 0d 31 30 38  |CAL PEN,X%,P.108|
000040f0  31 30 20 50 52 4f 43 66  69 6c 65 28 54 52 55 45  |10 PROCfile(TRUE|
00004100  2c 6e 61 6d 65 24 29 0d  31 30 38 32 30 20 46 4f  |,name$).10820 FO|
00004110  52 20 58 25 3d 31 20 54  4f 20 74 6f 74 61 6c 0d  |R X%=1 TO total.|
00004120  31 30 38 33 30 20 50 52  4f 43 64 61 74 61 28 58  |10830 PROCdata(X|
00004130  25 2c 30 2c 30 2c 46 41  4c 53 45 2c 61 6c 74 65  |%,0,0,FALSE,alte|
00004140  72 58 24 2c 61 6c 74 65  72 59 24 29 0d 31 30 38  |rX$,alterY$).108|
00004150  34 30 20 59 3d 46 4e 79  28 59 29 0d 20 20 20 20  |40 Y=FNy(Y).    |
00004160  20 20 20 3a 20 58 3d 46  4e 78 28 58 29 0d 31 30  |   : X=FNx(X).10|
00004170  38 35 30 20 49 46 20 58  25 3d 31 20 54 48 45 4e  |850 IF X%=1 THEN|
00004180  20 50 45 4e 3d 30 20 45  4c 53 45 20 50 45 4e 3d  | PEN=0 ELSE PEN=|
00004190  70 65 6e 20 0d 31 30 38  36 30 20 49 46 20 4e 4f  |pen .10860 IF NO|
000041a0  54 20 63 72 6f 73 73 65  73 20 54 48 45 4e 20 50  |T crosses THEN P|
000041b0  52 4f 43 64 72 61 77 28  58 2c 59 2c 50 45 4e 29  |ROCdraw(X,Y,PEN)|
000041c0  0d 20 20 20 20 20 20 20  3a 20 47 4f 54 4f 31 30  |.       : GOTO10|
000041d0  39 35 30 0d 31 30 38 37  30 20 50 3d 30 0d 31 30  |950.10870 P=0.10|
000041e0  38 38 30 20 50 52 4f 43  64 72 61 77 28 58 2d 31  |880 PROCdraw(X-1|
000041f0  30 2c 59 2c 50 29 0d 31  30 38 39 30 20 50 3d 70  |0,Y,P).10890 P=p|
00004200  65 6e 0d 31 30 39 30 30  20 50 52 4f 43 64 72 61  |en.10900 PROCdra|
00004210  77 28 58 2b 31 30 2c 59  2c 50 29 0d 31 30 39 31  |w(X+10,Y,P).1091|
00004220  30 20 50 3d 30 0d 31 30  39 32 30 20 50 52 4f 43  |0 P=0.10920 PROC|
00004230  64 72 61 77 28 58 2c 59  2d 31 30 2c 50 29 0d 31  |draw(X,Y-10,P).1|
00004240  30 39 33 30 20 50 3d 70  65 6e 0d 31 30 39 34 30  |0930 P=pen.10940|
00004250  20 50 52 4f 43 64 72 61  77 28 58 2c 59 2b 31 30  | PROCdraw(X,Y+10|
00004260  2c 50 29 0d 31 30 39 35  30 20 4e 45 58 54 20 58  |,P).10950 NEXT X|
00004270  25 0d 31 30 39 36 30 20  50 52 4f 43 66 69 6c 65  |%.10960 PROCfile|
00004280  28 46 41 4c 53 45 2c 6e  61 6d 65 24 29 0d 31 30  |(FALSE,name$).10|
00004290  39 37 30 20 45 4e 44 50  52 4f 43 0d 0d 20 20 20  |970 ENDPROC..   |
000042a0  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
000042b0  20 20 20 20 20 50 52 4f  43 64 72 61 77 28 78 2c  |     PROCdraw(x,|
000042c0  79 2c 70 65 6e 29 0d 0d  54 68 69 73 20 70 72 6f  |y,pen)..This pro|
000042d0  63 65 64 75 72 65 20 69  73 20 74 68 65 20 6f 6e  |cedure is the on|
000042e0  65 20 77 68 69 63 68 20  69 73 20 75 73 65 64 20  |e which is used |
000042f0  62 79 20 74 68 65 20 76  61 72 69 6f 75 73 20 72  |by the various r|
00004300  6f 75 74 69 6e 65 73 0d  74 6f 20 64 72 61 77 20  |outines.to draw |
00004310  6c 69 6e 65 73 20 6f 6e  20 74 68 65 20 73 63 72  |lines on the scr|
00004320  65 65 6e 2e 20 41 6c 6c  20 72 6f 75 74 69 6e 65  |een. All routine|
00004330  73 20 75 73 65 20 74 68  69 73 20 70 72 6f 63 65  |s use this proce|
00004340  64 75 72 65 2c 20 73 6f  0d 74 68 69 73 20 69 73  |dure, so.this is|
00004350  20 74 68 65 20 6f 6e 65  20 74 6f 20 61 6c 74 65  | the one to alte|
00004360  72 20 69 66 20 61 20 70  6c 6f 74 74 65 72 20 6e  |r if a plotter n|
00004370  65 65 64 73 20 74 6f 20  62 65 20 64 72 69 76 65  |eeds to be drive|
00004380  6e 2e 0d 0d 31 30 39 38  30 20 44 45 46 20 50 52  |n...10980 DEF PR|
00004390  4f 43 64 72 61 77 28 78  2c 79 2c 70 65 6e 29 0d  |OCdraw(x,y,pen).|
000043a0  31 30 39 39 30 20 49 46  20 70 65 6e 3d 30 20 4d  |10990 IF pen=0 M|
000043b0  4f 56 45 20 78 2c 79 20  45 4c 53 45 20 47 43 4f  |OVE x,y ELSE GCO|
000043c0  4c 30 2c 70 65 6e 0d 20  20 20 20 20 20 20 3a 20  |L0,pen.       : |
000043d0  44 52 41 57 78 2c 79 20  0d 31 31 30 30 30 20 45  |DRAWx,y .11000 E|
000043e0  4e 44 50 52 4f 43 0d 0d  20 20 20 20 20 20 20 20  |NDPROC..        |
000043f0  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00004400  46 4e 78 28 58 29 20 61  6e 64 20 46 4e 79 28 59  |FNx(X) and FNy(Y|
00004410  29 0d 0d 54 68 65 73 65  20 74 77 6f 20 66 75 6e  |)..These two fun|
00004420  63 74 69 6f 6e 73 20 72  65 74 75 72 6e 20 74 68  |ctions return th|
00004430  65 20 73 63 72 65 65 6e  20 70 6f 73 69 74 69 6f  |e screen positio|
00004440  6e 20 6f 66 20 74 68 65  0d 63 6f 72 72 65 73 70  |n of the.corresp|
00004450  6f 6e 64 69 6e 67 20 73  63 61 6c 65 20 70 6f 73  |onding scale pos|
00004460  69 74 69 6f 6e 20 73 65  6e 74 20 69 6e 20 74 68  |ition sent in th|
00004470  65 20 61 72 67 75 6d 65  6e 74 2e 0d 0d 31 31 30  |e argument...110|
00004480  31 30 20 44 45 46 20 46  4e 78 28 58 29 0d 31 31  |10 DEF FNx(X).11|
00004490  30 32 30 20 3d 28 50 72  78 2f 53 72 78 29 2a 58  |020 =(Prx/Srx)*X|
000044a0  2b 58 30 0d 0d 31 31 30  33 30 20 44 45 46 20 46  |+X0..11030 DEF F|
000044b0  4e 79 28 59 29 0d 31 31  30 34 30 20 3d 28 50 72  |Ny(Y).11040 =(Pr|
000044c0  79 2f 53 72 79 29 2a 59  2b 59 30 0d 0d 20 20 20  |y/Sry)*Y+Y0..   |
000044d0  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
000044e0  20 20 20 20 20 20 50 52  4f 43 73 63 61 6c 65 28  |      PROCscale(|
000044f0  70 65 6e 29 0d 0d 54 68  69 73 20 70 72 6f 63 65  |pen)..This proce|
00004500  64 75 72 65 20 77 69 6c  6c 20 64 72 61 77 20 61  |dure will draw a|
00004510  20 73 63 61 6c 65 20 69  6e 20 74 68 65 20 73 70  | scale in the sp|
00004520  65 63 69 66 69 65 64 20  70 65 6e 20 63 6f 6c 6f  |ecified pen colo|
00004530  75 72 0d 75 73 69 6e 67  20 74 68 65 20 70 6f 73  |ur.using the pos|
00004540  69 74 69 6f 6e 20 61 6e  64 20 73 63 61 6c 65 20  |ition and scale |
00004550  76 61 6c 75 65 73 20 70  72 65 76 69 6f 75 73 6c  |values previousl|
00004560  79 20 73 70 65 63 69 66  69 65 64 20 62 79 20 74  |y specified by t|
00004570  68 65 0d 70 72 6f 63 65  64 75 72 65 73 3a 0d 20  |he.procedures:. |
00004580  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00004590  20 20 50 52 4f 43 70 6f  73 0d 20 20 20 20 20 20  |  PROCpos.      |
000045a0  20 20 20 20 20 20 6f 72  20 20 20 20 20 50 52 4f  |      or     PRO|
000045b0  43 73 63 61 20 20 20 20  20 20 0d 20 20 20 20 20  |Csca      .     |
000045c0  20 20 20 20 20 20 20 20  20 20 20 20 20 20 50 52  |              PR|
000045d0  4f 43 41 75 74 6f 53 63  61 6c 65 73 0d 0d 31 31  |OCAutoScales..11|
000045e0  30 35 30 20 44 45 46 20  50 52 4f 43 73 63 61 6c  |050 DEF PROCscal|
000045f0  65 28 70 65 6e 29 0d 31  31 30 36 30 20 4c 4f 43  |e(pen).11060 LOC|
00004600  41 4c 20 58 2c 58 32 2c  59 2c 59 32 2c 50 0d 31  |AL X,X2,Y,Y2,P.1|
00004610  31 30 37 30 20 49 46 20  59 30 3e 59 74 6d 61 78  |1070 IF Y0>Ytmax|
00004620  20 54 48 45 4e 20 59 32  3d 59 74 6d 61 78 0d 20  | THEN Y2=Ytmax. |
00004630  20 20 20 20 20 20 3a 20  47 4f 54 4f 31 31 31 32  |      : GOTO1112|
00004640  30 0d 31 31 30 38 30 20  49 46 20 59 30 3c 59 74  |0.11080 IF Y0<Yt|
00004650  6d 69 6e 20 54 48 45 4e  20 59 32 3d 59 74 6d 69  |min THEN Y2=Ytmi|
00004660  6e 0d 20 20 20 20 20 20  20 3a 20 47 4f 54 4f 31  |n.       : GOTO1|
00004670  31 31 32 30 0d 31 31 30  39 30 20 59 32 3d 59 30  |1120.11090 Y2=Y0|
00004680  0d 31 31 31 30 30 20 58  3d 58 74 6d 69 6e 0d 20  |.11100 X=Xtmin. |
00004690  20 20 20 20 20 20 3a 20  59 3d 59 32 0d 20 20 20  |      : Y=Y2.   |
000046a0  20 20 20 20 3a 20 50 3d  30 0d 20 20 20 20 20 20  |    : P=0.      |
000046b0  20 3a 20 50 52 4f 43 64  72 61 77 28 58 2c 59 2c  | : PROCdraw(X,Y,|
000046c0  50 29 0d 31 31 31 31 30  20 58 3d 58 74 6d 61 78  |P).11110 X=Xtmax|
000046d0  0d 20 20 20 20 20 20 20  3a 20 50 3d 70 65 6e 0d  |.       : P=pen.|
000046e0  20 20 20 20 20 20 20 3a  20 50 52 4f 43 64 72 61  |       : PROCdra|
000046f0  77 28 58 2c 59 2c 50 29  0d 31 31 31 32 30 20 49  |w(X,Y,P).11120 I|
00004700  46 20 58 30 3e 58 74 6d  61 78 20 54 48 45 4e 20  |F X0>Xtmax THEN |
00004710  58 32 3d 58 74 6d 61 78  0d 20 20 20 20 20 20 20  |X2=Xtmax.       |
00004720  3a 20 47 4f 54 4f 31 31  31 37 30 0d 31 31 31 33  |: GOTO11170.1113|
00004730  30 20 49 46 20 58 30 3c  58 74 6d 69 6e 20 54 48  |0 IF X0<Xtmin TH|
00004740  45 4e 20 58 32 3d 58 74  6d 69 6e 0d 20 20 20 20  |EN X2=Xtmin.    |
00004750  20 20 20 3a 20 47 4f 54  4f 31 31 31 37 30 0d 31  |   : GOTO11170.1|
00004760  31 31 34 30 20 58 32 3d  58 30 0d 31 31 31 35 30  |1140 X2=X0.11150|
00004770  20 58 3d 58 32 0d 20 20  20 20 20 20 20 3a 20 59  | X=X2.       : Y|
00004780  3d 59 74 6d 69 6e 0d 20  20 20 20 20 20 20 3a 20  |=Ytmin.       : |
00004790  50 3d 30 0d 20 20 20 20  20 20 20 3a 20 50 52 4f  |P=0.       : PRO|
000047a0  43 64 72 61 77 28 58 2c  59 2c 50 29 0d 31 31 31  |Cdraw(X,Y,P).111|
000047b0  36 30 20 59 3d 59 74 6d  61 78 0d 20 20 20 20 20  |60 Y=Ytmax.     |
000047c0  20 20 3a 20 50 3d 70 65  6e 0d 20 20 20 20 20 20  |  : P=pen.      |
000047d0  20 3a 20 50 52 4f 43 64  72 61 77 28 58 2c 59 2c  | : PROCdraw(X,Y,|
000047e0  50 29 0d 31 31 31 37 30  20 46 4f 52 20 58 3d 58  |P).11170 FOR X=X|
000047f0  73 6d 61 78 20 54 4f 20  58 73 6d 69 6e 20 53 54  |smax TO Xsmin ST|
00004800  45 50 20 2d 31 2a 73 74  78 0d 31 31 31 38 30 20  |EP -1*stx.11180 |
00004810  78 31 3d 46 4e 78 28 58  29 0d 20 20 20 20 20 20  |x1=FNx(X).      |
00004820  20 3a 20 59 3d 59 32 0d  20 20 20 20 20 20 20 3a  | : Y=Y2.       :|
00004830  20 50 3d 30 0d 31 31 31  39 30 20 50 52 4f 43 64  | P=0.11190 PROCd|
00004840  72 61 77 28 78 31 2c 59  2c 50 29 0d 20 20 20 20  |raw(x1,Y,P).    |
00004850  20 20 20 3a 20 49 46 20  58 3d 30 20 54 48 45 4e  |   : IF X=0 THEN|
00004860  20 50 3d 30 20 45 4c 53  45 20 50 3d 70 65 6e 0d  | P=0 ELSE P=pen.|
00004870  31 31 32 30 30 20 59 3d  59 32 2d 78 73 6c 0d 20  |11200 Y=Y2-xsl. |
00004880  20 20 20 20 20 20 3a 20  50 52 4f 43 64 72 61 77  |      : PROCdraw|
00004890  28 78 31 2c 59 2c 50 29  0d 31 31 32 31 30 20 4e  |(x1,Y,P).11210 N|
000048a0  45 58 54 20 58 0d 31 31  32 32 30 20 46 4f 52 20  |EXT X.11220 FOR |
000048b0  59 3d 59 73 6d 69 6e 20  54 4f 20 59 73 6d 61 78  |Y=Ysmin TO Ysmax|
000048c0  20 53 54 45 50 20 73 74  79 0d 31 31 32 33 30 20  | STEP sty.11230 |
000048d0  79 31 3d 46 4e 79 28 59  29 0d 20 20 20 20 20 20  |y1=FNy(Y).      |
000048e0  20 3a 20 58 3d 58 32 0d  20 20 20 20 20 20 20 3a  | : X=X2.       :|
000048f0  20 50 3d 30 0d 31 31 32  34 30 20 50 52 4f 43 64  | P=0.11240 PROCd|
00004900  72 61 77 28 58 2c 79 31  2c 50 29 0d 20 20 20 20  |raw(X,y1,P).    |
00004910  20 20 20 3a 20 49 46 20  59 3d 30 20 54 48 45 4e  |   : IF Y=0 THEN|
00004920  20 50 3d 30 20 45 4c 53  45 20 50 3d 70 65 6e 0d  | P=0 ELSE P=pen.|
00004930  31 31 32 35 30 20 58 3d  58 32 2d 79 73 6c 0d 20  |11250 X=X2-ysl. |
00004940  20 20 20 20 20 20 3a 20  50 52 4f 43 64 72 61 77  |      : PROCdraw|
00004950  28 58 2c 79 31 2c 50 29  0d 31 31 32 36 30 20 4e  |(X,y1,P).11260 N|
00004960  45 58 54 20 59 0d 31 31  32 37 30 20 45 4e 44 50  |EXT Y.11270 ENDP|
00004970  52 4f 43 0d 0d 20 20 20  20 20 20 20 20 20 20 20  |ROC..           |
00004980  20 20 20 20 20 20 20 20  20 20 20 20 50 52 4f 43  |            PROC|
00004990  70 6c 6f 74 28 70 65 6e  2c 65 71 75 24 29 0d 0d  |plot(pen,equ$)..|
000049a0  54 68 69 73 20 70 72 6f  63 65 64 75 72 65 20 77  |This procedure w|
000049b0  69 6c 6c 20 64 72 61 77  20 77 69 74 68 69 6e 20  |ill draw within |
000049c0  74 68 65 20 70 72 65 76  69 6f 75 73 6c 79 20 73  |the previously s|
000049d0  65 74 20 73 63 61 6c 65  20 72 61 6e 67 65 73 0d  |et scale ranges.|
000049e0  74 68 65 20 66 75 6e 63  74 69 6f 6e 20 73 70 65  |the function spe|
000049f0  63 69 66 69 65 64 20 69  6e 20 27 65 71 75 24 27  |cified in 'equ$'|
00004a00  20 20 69 6e 20 74 68 65  20 73 70 65 63 69 66 69  |  in the specifi|
00004a10  65 64 20 70 65 6e 20 63  6f 6c 6f 75 72 2e 0d 65  |ed pen colour..e|
00004a20  67 2e 2c 0d 0d 50 52 4f  43 70 6c 6f 74 28 31 2c  |g.,..PROCplot(1,|
00004a30  22 53 49 4e 28 58 29 22  29 0d 0d 77 69 6c 6c 20  |"SIN(X)")..will |
00004a40  70 6c 6f 74 20 74 68 65  20 66 75 6e 63 74 69 6f  |plot the functio|
00004a50  6e 20 79 3d 73 69 6e 20  78 20 20 69 6e 20 63 6f  |n y=sin x  in co|
00004a60  6c 6f 75 72 20 31 20 0d  0d 4e 2e 42 2e 20 20 20  |lour 1 ..N.B.   |
00004a70  54 68 65 20 76 61 72 69  61 62 6c 65 20 4c 25 20  |The variable L% |
00004a80  73 68 6f 75 6c 64 20 62  65 20 73 65 74 20 74 6f  |should be set to|
00004a90  20 62 65 20 65 71 75 61  6c 20 74 6f 20 74 68 65  | be equal to the|
00004aa0  20 6c 69 6e 65 0d 6e 75  6d 62 65 72 20 6f 66 20  | line.number of |
00004ab0  74 68 65 20 6c 69 6e 65  20 66 6f 6c 6c 6f 77 69  |the line followi|
00004ac0  6e 67 20 61 20 63 61 6c  6c 20 74 6f 20 50 52 4f  |ng a call to PRO|
00004ad0  43 70 6c 6f 74 20 69 66  20 65 72 72 6f 72 73 20  |Cplot if errors |
00004ae0  61 72 65 0d 6c 69 6b 65  6c 79 20 20 65 67 20 69  |are.likely  eg i|
00004af0  66 20 70 6c 6f 74 74 69  6e 67 20 61 20 66 75 6e  |f plotting a fun|
00004b00  63 74 69 6f 6e 20 77 68  65 72 65 20 64 69 76 69  |ction where divi|
00004b10  73 69 6f 6e 20 62 79 20  7a 65 72 6f 20 6d 61 79  |sion by zero may|
00004b20  0d 6f 63 63 75 72 2c 20  73 75 63 68 20 61 73 20  |.occur, such as |
00004b30  79 3d 31 2f 78 20 2d 2d  73 65 65 20 50 52 4f 43  |y=1/x --see PROC|
00004b40  65 72 72 6f 72 0d 0d 0d  31 31 32 38 30 20 44 45  |error...11280 DE|
00004b50  46 20 50 52 4f 43 70 6c  6f 74 28 70 65 6e 2c 65  |F PROCplot(pen,e|
00004b60  71 75 24 29 0d 31 31 32  39 30 20 4c 4f 43 41 4c  |qu$).11290 LOCAL|
00004b70  20 58 2c 79 31 2c 79 32  2c 50 0d 31 31 33 30 30  | X,y1,y2,P.11300|
00004b80  20 79 32 3d 32 0d 31 31  33 31 30 20 46 4f 52 20  | y2=2.11310 FOR |
00004b90  58 3d 58 73 6d 69 6e 32  20 54 4f 20 58 73 6d 61  |X=Xsmin2 TO Xsma|
00004ba0  78 20 53 54 45 50 20 53  72 78 2f 50 72 78 2a 31  |x STEP Srx/Prx*1|
00004bb0  30 0d 31 31 33 32 30 20  59 3d 46 4e 79 28 45 56  |0.11320 Y=FNy(EV|
00004bc0  41 4c 28 65 71 75 24 29  29 20 0d 31 31 33 33 30  |AL(equ$)) .11330|
00004bd0  20 49 46 20 59 3e 59 74  6d 61 78 20 4f 52 20 59  | IF Y>Ytmax OR Y|
00004be0  3c 59 74 6d 69 6e 20 54  48 45 4e 20 79 31 3d 46  |<Ytmin THEN y1=F|
00004bf0  41 4c 53 45 0d 20 20 20  20 20 20 20 3a 20 79 32  |ALSE.       : y2|
00004c00  3d 32 20 45 4c 53 45 20  79 31 3d 54 52 55 45 0d  |=2 ELSE y1=TRUE.|
00004c10  20 20 20 20 20 20 20 3a  20 79 32 3d 79 32 2d 31  |       : y2=y2-1|
00004c20  0d 31 31 33 34 30 20 49  46 20 79 31 3d 46 41 4c  |.11340 IF y1=FAL|
00004c30  53 45 20 54 48 45 4e 20  50 3d 30 0d 20 20 20 20  |SE THEN P=0.    |
00004c40  20 20 20 3a 20 59 3d 59  74 6d 69 6e 0d 31 31 33  |   : Y=Ytmin.113|
00004c50  35 30 20 49 46 79 32 3e  30 20 50 3d 30 20 45 4c  |50 IFy2>0 P=0 EL|
00004c60  53 45 20 50 3d 70 65 6e  0d 31 31 33 36 30 20 50  |SE P=pen.11360 P|
00004c70  52 4f 43 64 72 61 77 28  46 4e 78 28 58 29 2c 59  |ROCdraw(FNx(X),Y|
00004c80  2c 50 29 0d 31 31 33 37  30 20 4e 45 58 54 20 58  |,P).11370 NEXT X|
00004c90  0d 20 20 20 20 20 20 20  3a 20 50 3d 30 0d 20 20  |.       : P=0.  |
00004ca0  20 20 20 20 20 3a 20 50  52 4f 43 64 72 61 77 28  |     : PROCdraw(|
00004cb0  46 4e 78 28 58 29 2c 59  2c 50 29 0d 31 31 33 38  |FNx(X),Y,P).1138|
00004cc0  30 20 45 4e 44 50 52 4f  43 0d 0d 20 20 20 20 20  |0 ENDPROC..     |
00004cd0  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00004ce0  50 52 4f 43 73 74 72 69  6e 67 28 78 2c 79 2c 73  |PROCstring(x,y,s|
00004cf0  74 72 69 6e 67 24 29 0d  0d 54 68 69 73 20 70 72  |tring$)..This pr|
00004d00  6f 63 65 64 75 72 65 20  77 69 6c 6c 20 70 72 69  |ocedure will pri|
00004d10  6e 74 20 74 68 65 20 73  74 72 69 6e 67 20 73 70  |nt the string sp|
00004d20  65 63 69 66 69 65 64 20  6f 6e 20 74 68 65 20 67  |ecified on the g|
00004d30  72 61 70 68 20 61 74 0d  74 68 65 20 53 43 41 4c  |raph at.the SCAL|
00004d40  45 20 70 6f 73 69 74 69  6f 6e 20 28 78 2c 79 29  |E position (x,y)|
00004d50  20 2e 0d 0d 31 31 33 39  30 20 44 45 46 20 50 52  | ...11390 DEF PR|
00004d60  4f 43 73 74 72 69 6e 67  28 78 2c 79 2c 73 74 72  |OCstring(x,y,str|
00004d70  69 6e 67 24 29 0d 31 31  34 30 30 20 4d 4f 56 45  |ing$).11400 MOVE|
00004d80  20 46 4e 78 28 78 29 2c  46 4e 79 28 79 29 0d 31  | FNx(x),FNy(y).1|
00004d90  31 34 31 30 20 56 44 55  35 0d 31 31 34 32 30 20  |1410 VDU5.11420 |
00004da0  50 52 49 4e 54 20 73 74  72 69 6e 67 24 0d 31 31  |PRINT string$.11|
00004db0  34 33 30 20 56 44 55 34  0d 31 31 34 34 30 20 45  |430 VDU4.11440 E|
00004dc0  4e 44 50 52 4f 43 0d 0d  20 20 20 20 20 20 20 20  |NDPROC..        |
00004dd0  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00004de0  20 20 20 20 50 52 4f 43  65 72 72 6f 72 0d 0d 54  |    PROCerror..T|
00004df0  68 69 73 20 70 72 6f 63  65 64 75 72 65 20 77 69  |his procedure wi|
00004e00  6c 6c 20 68 61 6e 64 6c  65 20 44 49 56 49 53 49  |ll handle DIVISI|
00004e10  4f 4e 20 42 59 20 5a 45  52 4f 20 61 6e 64 20 54  |ON BY ZERO and T|
00004e20  4f 4f 20 42 49 47 20 65  72 72 6f 72 73 0d 67 65  |OO BIG errors.ge|
00004e30  6e 65 72 61 74 65 64 20  62 79 20 66 75 6e 63 74  |nerated by funct|
00004e40  69 6f 6e 73 20 62 65 69  6e 67 20 70 6c 6f 74 74  |ions being plott|
00004e50  65 64 20 62 79 20 50 52  4f 43 70 6c 6f 74 2e 20  |ed by PROCplot. |
00004e60  41 66 74 65 72 20 74 68  65 0d 66 75 6e 63 74 69  |After the.functi|
00004e70  6f 6e 20 68 61 73 20 66  69 6e 69 73 68 65 64 20  |on has finished |
00004e80  62 65 69 6e 67 20 70 6c  6f 74 74 65 64 2c 20 65  |being plotted, e|
00004e90  78 65 63 75 74 69 6f 6e  20 77 69 6c 6c 20 72 65  |xecution will re|
00004ea0  74 75 72 6e 20 74 6f 20  74 68 65 0d 6c 69 6e 65  |turn to the.line|
00004eb0  20 73 70 65 63 69 66 69  65 64 20 62 79 20 74 68  | specified by th|
00004ec0  65 20 76 61 72 69 61 62  6c 65 20 4c 25 2e 20 20  |e variable L%.  |
00004ed0  49 66 20 4c 25 20 69 73  20 75 6e 73 65 74 2c 20  |If L% is unset, |
00004ee0  74 68 65 6e 20 74 68 65  0d 65 72 72 6f 72 20 72  |then the.error r|
00004ef0  65 63 6f 76 65 72 79 20  72 6f 75 74 69 6e 65 20  |ecovery routine |
00004f00  77 69 6c 6c 20 68 61 6c  74 20 74 68 65 20 70 72  |will halt the pr|
00004f10  6f 67 72 61 6d 20 61 73  20 69 74 20 77 69 6c 6c  |ogram as it will|
00004f20  20 69 66 20 61 6e 79 0d  6f 74 68 65 72 20 65 72  | if any.other er|
00004f30  72 6f 72 20 69 73 20 64  65 74 65 63 74 65 64 2e  |ror is detected.|
00004f40  20 54 68 65 20 76 61 6c  75 65 20 74 65 73 74 65  | The value teste|
00004f50  64 20 66 6f 72 20 69 6e  20 6c 69 6e 65 20 31 31  |d for in line 11|
00004f60  34 37 30 20 20 69 65 2e  2c 0d 45 52 4c 3c 3e 20  |470  ie.,.ERL<> |
00004f70  20 5b 61 20 6e 75 6d 62  65 72 5d 20 0d 53 68 6f  | [a number] .Sho|
00004f80  75 6c 64 20 62 65 20 74  68 65 20 6c 69 6e 65 20  |uld be the line |
00004f90  6e 75 6d 62 65 72 20 6f  66 20 74 68 65 20 66 69  |number of the fi|
00004fa0  72 73 74 20 6c 69 6e 65  20 6f 66 20 74 68 65 20  |rst line of the |
00004fb0  66 75 6e 63 74 69 6f 6e  0d 46 4e 79 28 59 29 2e  |function.FNy(Y).|
00004fc0  0d 0d 31 31 34 35 30 20  44 45 46 20 50 52 4f 43  |..11450 DEF PROC|
00004fd0  65 72 72 6f 72 0d 31 31  34 36 30 20 49 46 20 45  |error.11460 IF E|
00004fe0  52 52 3c 3e 31 38 20 41  4e 44 20 45 52 52 3c 3e  |RR<>18 AND ERR<>|
00004ff0  32 30 20 54 48 45 4e 20  31 31 35 31 30 0d 31 31  |20 THEN 11510.11|
00005000  34 37 30 20 49 46 20 45  52 4c 3c 3e 31 31 30 33  |470 IF ERL<>1103|
00005010  30 20 4f 52 20 4c 25 3d  30 20 54 48 45 4e 20 31  |0 OR L%=0 THEN 1|
00005020  31 35 31 30 0d 31 31 34  38 30 20 58 73 6d 69 6e  |1510.11480 Xsmin|
00005030  32 3d 58 2b 28 53 72 78  2f 50 72 78 29 0d 31 31  |2=X+(Srx/Prx).11|
00005040  34 39 30 20 50 52 4f 43  70 6c 6f 74 28 70 65 6e  |490 PROCplot(pen|
00005050  2c 65 71 75 24 29 0d 31  31 35 30 30 20 45 4e 44  |,equ$).11500 END|
00005060  50 52 4f 43 0d 31 31 35  31 30 20 43 4c 53 0d 20  |PROC.11510 CLS. |
00005070  20 20 20 20 20 20 3a 20  50 52 49 4e 54 20 27 22  |      : PRINT '"|
00005080  45 58 45 43 55 54 49 4f  4e 20 48 41 4c 54 45 44  |EXECUTION HALTED|
00005090  2c 20 74 68 65 72 65 20  69 73 20 61 6e 20 65 72  |, there is an er|
000050a0  72 6f 72 22 20 0d 31 31  35 32 30 20 40 25 3d 30  |ror" .11520 @%=0|
000050b0  0d 20 20 20 20 20 20 20  3a 20 50 52 49 4e 54 27  |.       : PRINT'|
000050c0  22 61 74 20 6c 69 6e 65  20 22 45 52 4c 22 20 49  |"at line "ERL" I|
000050d0  74 20 69 73 20 3a 20 2d  22 27 0d 31 31 35 33 30  |t is : -"'.11530|
000050e0  20 52 45 50 4f 52 54 0d  31 31 35 34 30 20 50 52  | REPORT.11540 PR|
000050f0  49 4e 54 20 27 27 22 50  6c 65 61 73 65 20 72 65  |INT ''"Please re|
00005100  63 6f 72 64 20 68 6f 77  20 79 6f 75 20 27 63 72  |cord how you 'cr|
00005110  61 73 68 65 64 27 20 74  68 65 22 20 0d 31 31 35  |ashed' the" .115|
00005120  35 30 20 50 52 49 4e 54  20 22 70 72 6f 67 72 61  |50 PRINT "progra|
00005130  6d 20 61 6e 64 20 63 6f  6e 74 61 63 74 20 74 68  |m and contact th|
00005140  65 20 61 75 74 68 6f 72  2e 22 0d 31 31 35 36 30  |e author.".11560|
00005150  20 50 52 4f 43 67 73 74  6f 70 0d 20 20 20 20 20  | PROCgstop.     |
00005160  20 20 3a 20 53 54 4f 50  0d 0d 20 20 20 20 20 20  |  : STOP..      |
00005170  20 20 20 20 20 20 20 20  20 50 52 4f 43 62 65 73  |         PROCbes|
00005180  74 66 69 74 28 6e 61 6d  65 24 2c 61 6c 74 65 72  |tfit(name$,alter|
00005190  58 24 2c 61 6c 74 65 72  59 24 29 0d 0d 54 68 69  |X$,alterY$)..Thi|
000051a0  73 20 70 72 6f 63 65 64  75 72 65 20 77 69 6c 6c  |s procedure will|
000051b0  20 72 65 61 64 20 74 68  72 6f 75 67 68 20 61 20  | read through a |
000051c0  6e 61 6d 65 64 20 66 69  6c 65 20 61 6e 64 20 68  |named file and h|
000051d0  61 76 69 6e 67 20 61 6c  74 65 72 65 64 0d 74 68  |aving altered.th|
000051e0  65 20 58 20 61 6e 64 20  59 20 76 61 6c 75 65 73  |e X and Y values|
000051f0  20 61 73 20 73 70 65 63  69 66 69 65 64 2c 20 77  | as specified, w|
00005200  69 6c 6c 20 63 61 6c 63  75 6c 61 74 65 20 74 68  |ill calculate th|
00005210  65 20 65 71 75 61 74 69  6f 6e 20 6f 66 0d 74 68  |e equation of.th|
00005220  65 20 62 65 73 74 66 69  74 20 6c 69 6e 65 20 61  |e bestfit line a|
00005230  6e 64 20 74 68 65 20 63  6f 72 72 65 6c 61 74 69  |nd the correlati|
00005240  6f 6e 20 63 6f 65 66 66  69 63 69 65 6e 74 20 6f  |on coefficient o|
00005250  66 20 74 68 65 20 74 77  6f 20 70 61 69 72 73 0d  |f the two pairs.|
00005260  6f 66 20 64 61 74 61 2e  0d 0d 47 72 61 64 69 65  |of data...Gradie|
00005270  6e 74 20 69 73 20 72 65  74 75 72 6e 65 64 20 69  |nt is returned i|
00005280  6e 20 74 68 65 20 47 6c  6f 62 61 6c 20 76 61 72  |n the Global var|
00005290  69 61 62 6c 65 20 3a 20  6d 0d 69 6e 74 65 72 63  |iable : m.interc|
000052a0  65 70 74 20 6f 6e 20 59  20 69 6e 20 3a 20 20 20  |ept on Y in :   |
000052b0  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
000052c0  20 20 20 20 20 20 20 20  63 0d 63 6f 72 72 65 6c  |        c.correl|
000052d0  61 74 69 6f 6e 20 63 6f  65 66 66 69 63 69 65 6e  |ation coefficien|
000052e0  74 20 69 6e 20 20 3a 20  20 20 20 20 20 20 20 20  |t in  :         |
000052f0  20 20 20 20 20 20 20 20  72 0d 0d 31 31 35 37 30  |        r..11570|
00005300  20 44 45 46 20 50 52 4f  43 62 65 73 74 66 69 74  | DEF PROCbestfit|
00005310  28 6e 61 6d 65 24 2c 61  6c 74 65 72 58 24 2c 61  |(name$,alterX$,a|
00005320  6c 74 65 72 59 24 29 0d  31 31 35 38 30 20 4c 4f  |lterY$).11580 LO|
00005330  43 41 4c 20 73 69 67 58  2c 73 69 67 59 2c 73 69  |CAL sigX,sigY,si|
00005340  67 58 59 2c 73 69 67 58  32 2c 73 69 67 59 32 2c  |gXY,sigX2,sigY2,|
00005350  74 6f 70 2c 62 61 73 65  2c 58 25 0d 31 31 35 39  |top,base,X%.1159|
00005360  30 20 50 52 4f 43 66 69  6c 65 28 54 52 55 45 2c  |0 PROCfile(TRUE,|
00005370  6e 61 6d 65 24 29 0d 31  31 36 32 30 20 46 4f 52  |name$).11620 FOR|
00005380  20 58 25 3d 31 20 54 4f  20 74 6f 74 61 6c 0d 31  | X%=1 TO total.1|
00005390  31 36 33 30 20 50 52 4f  43 64 61 74 61 28 58 25  |1630 PROCdata(X%|
000053a0  2c 30 2c 30 2c 46 41 4c  53 45 2c 61 6c 74 65 72  |,0,0,FALSE,alter|
000053b0  58 24 2c 61 6c 74 65 72  59 24 29 0d 31 31 36 38  |X$,alterY$).1168|
000053c0  30 20 73 69 67 58 3d 73  69 67 58 2b 58 0d 31 31  |0 sigX=sigX+X.11|
000053d0  36 39 30 20 73 69 67 59  3d 73 69 67 59 2b 59 0d  |690 sigY=sigY+Y.|
000053e0  31 31 37 30 30 20 73 69  67 58 59 3d 73 69 67 58  |11700 sigXY=sigX|
000053f0  59 2b 58 2a 59 0d 31 31  37 31 30 20 73 69 67 58  |Y+X*Y.11710 sigX|
00005400  32 3d 73 69 67 58 32 2b  58 5e 32 0d 31 31 37 32  |2=sigX2+X^2.1172|
00005410  30 20 73 69 67 59 32 3d  73 69 67 59 32 2b 59 5e  |0 sigY2=sigY2+Y^|
00005420  32 0d 31 31 37 33 30 20  4e 45 58 54 20 58 25 0d  |2.11730 NEXT X%.|
00005430  31 31 37 34 30 20 50 52  4f 43 66 69 6c 65 28 46  |11740 PROCfile(F|
00005440  41 4c 53 45 2c 6e 61 6d  65 24 29 0d 31 31 37 35  |ALSE,name$).1175|
00005450  30 20 6d 3d 28 73 69 67  58 59 2d 28 73 69 67 58  |0 m=(sigXY-(sigX|
00005460  2a 73 69 67 59 2f 28 74  6f 74 61 6c 29 29 29 2f  |*sigY/(total)))/|
00005470  28 73 69 67 58 32 2d 73  69 67 58 5e 32 2f 28 74  |(sigX2-sigX^2/(t|
00005480  6f 74 61 6c 29 29 0d 31  31 37 36 30 20 63 3d 73  |otal)).11760 c=s|
00005490  69 67 59 2f 28 74 6f 74  61 6c 29 2d 6d 2a 73 69  |igY/(total)-m*si|
000054a0  67 58 2f 28 74 6f 74 61  6c 29 0d 31 31 37 36 31  |gX/(total).11761|
000054b0  20 74 6f 70 3d 28 74 6f  74 61 6c 29 2a 73 69 67  | top=(total)*sig|
000054c0  58 59 2d 73 69 67 58 2a  73 69 67 59 0d 31 31 37  |XY-sigX*sigY.117|
000054d0  36 32 20 62 61 73 65 3d  53 51 52 28 28 28 74 6f  |62 base=SQR(((to|
000054e0  74 61 6c 29 2a 73 69 67  58 32 2d 73 69 67 58 5e  |tal)*sigX2-sigX^|
000054f0  32 29 2a 28 28 74 6f 74  61 6c 29 2a 73 69 67 59  |2)*((total)*sigY|
00005500  32 2d 73 69 67 59 5e 32  29 29 0d 31 31 37 36 33  |2-sigY^2)).11763|
00005510  20 72 3d 74 6f 70 2f 62  61 73 65 0d 31 31 37 37  | r=top/base.1177|
00005520  30 20 45 4e 44 50 52 4f  43 0d 0d 20 20 20 20 20  |0 ENDPROC..     |
00005530  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00005540  20 20 20 20 20 20 20 20  20 49 4e 44 45 58 0d 0d  |         INDEX..|
00005550  41 64 64 69 6e 67 20 74  68 65 20 72 6f 75 74 69  |Adding the routi|
00005560  6e 65 73 20 74 6f 20 61  20 70 72 6f 67 72 61 6d  |nes to a program|
00005570  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00005580  20 20 20 20 20 34 0d 45  2e 45 58 31 20 20 20 20  |     4.E.EX1    |
00005590  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
*
000055b0  20 20 20 20 20 20 20 20  20 20 20 20 32 0d 45 2e  |            2.E.|
000055c0  45 58 32 20 20 20 20 20  20 20 20 20 20 20 20 20  |EX2             |
000055d0  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
*
000055f0  20 20 20 33 0d 45 2e 45  58 33 20 20 20 20 20 20  |   3.E.EX3      |
00005600  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
*
00005620  20 20 20 20 20 20 20 20  20 20 34 0d 45 2e 45 58  |          4.E.EX|
00005630  34 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |4               |
00005640  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
*
00005660  20 33 0d 46 4e 70 6f 77  65 72 28 6e 75 6d 62 65  | 3.FNpower(numbe|
00005670  72 29 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |r)              |
00005680  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00005690  20 20 20 20 20 20 20 31  30 0d 46 4e 73 74 65 70  |       10.FNstep|
000056a0  73 69 7a 65 28 72 61 6e  67 65 29 20 20 20 20 20  |size(range)     |
000056b0  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
000056c0  20 20 20 20 20 20 20 20  20 20 20 20 20 20 31 30  |              10|
000056d0  0d 46 4e 78 28 58 29 20  20 20 20 20 20 20 20 20  |.FNx(X)         |
000056e0  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
*
00005700  20 20 20 20 20 31 31 0d  46 4e 79 28 59 29 20 20  |     11.FNy(Y)  |
00005710  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
*
00005730  20 20 20 20 20 20 20 20  20 20 20 20 31 31 0d 46  |            11.F|
00005740  6f 72 65 77 6f 72 64 20  20 20 20 20 20 20 20 20  |oreword         |
00005750  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
*
00005770  20 20 20 20 31 0d 47 6c  6f 62 61 6c 20 56 61 72  |    1.Global Var|
00005780  69 61 62 6c 65 73 20 20  20 20 20 20 20 20 20 20  |iables          |
00005790  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
000057a0  20 20 20 20 20 20 20 20  20 20 20 35 0d 50 52 4f  |           5.PRO|
000057b0  43 41 75 74 6f 53 63 61  6c 65 73 28 6e 61 6d 65  |CAutoScales(name|
000057c0  24 2c 61 6c 74 65 72 58  24 2c 61 6c 74 65 72 59  |$,alterX$,alterY|
000057d0  24 29 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |$)              |
000057e0  20 20 39 0d 50 52 4f 43  62 65 73 74 66 69 74 28  |  9.PROCbestfit(|
000057f0  6e 61 6d 65 24 2c 61 6c  74 65 72 58 24 2c 61 6c  |name$,alterX$,al|
00005800  74 65 72 59 24 29 20 20  20 20 20 20 20 20 20 20  |terY$)          |
00005810  20 20 20 20 20 20 20 20  31 34 0d 50 52 4f 43 64  |        14.PROCd|
00005820  61 74 61 28 70 61 69 72  2c 78 2c 79 2c 77 72 69  |ata(pair,x,y,wri|
00005830  74 65 2c 61 6c 74 65 72  58 24 2c 61 6c 74 65 72  |te,alterX$,alter|
00005840  59 24 29 20 20 20 20 20  20 20 20 20 20 20 20 20  |Y$)             |
00005850  36 0d 50 52 4f 43 44 72  61 77 66 69 6c 65 28 6e  |6.PROCDrawfile(n|
00005860  61 6d 65 24 2c 70 65 6e  2c 61 6c 74 65 72 58 24  |ame$,pen,alterX$|
00005870  2c 61 6c 74 65 72 59 24  2c 63 72 6f 73 73 65 73  |,alterY$,crosses|
00005880  29 20 20 20 20 20 31 31  0d 50 52 4f 43 64 72 61  |)     11.PROCdra|
00005890  77 28 78 2c 79 2c 70 65  6e 29 20 20 20 20 20 20  |w(x,y,pen)      |
000058a0  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
000058b0  20 20 20 20 20 20 20 20  20 20 20 20 20 31 31 0d  |             11.|
000058c0  50 52 4f 43 65 72 72 6f  72 20 20 20 20 20 20 20  |PROCerror       |
000058d0  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
*
000058f0  20 20 20 20 31 33 0d 50  52 4f 43 66 69 6c 65 28  |    13.PROCfile(|
00005900  6f 70 65 6e 2c 6e 61 6d  65 24 29 20 20 20 20 20  |open,name$)     |
00005910  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00005920  20 20 20 20 20 20 20 20  20 20 20 20 36 0d 50 52  |            6.PR|
00005930  4f 43 67 73 74 61 72 74  20 20 20 20 20 20 20 20  |OCgstart        |
00005940  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
*
00005960  20 20 20 37 0d 50 52 4f  43 67 73 74 6f 70 20 20  |   7.PROCgstop  |
00005970  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
*
00005990  20 20 20 20 20 20 20 20  20 20 38 0d 50 52 4f 43  |          8.PROC|
000059a0  70 6c 6f 74 28 70 65 6e  2c 65 71 75 24 29 20 20  |plot(pen,equ$)  |
000059b0  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
*
000059d0  31 33 0d 50 52 4f 43 70  6f 73 28 64 65 66 61 75  |13.PROCpos(defau|
000059e0  6c 74 2c 58 74 6d 69 2c  58 74 6d 61 2c 78 73 2c  |lt,Xtmi,Xtma,xs,|
000059f0  59 74 6d 69 2c 59 74 6d  61 2c 79 73 29 20 20 20  |Ytmi,Ytma,ys)   |
00005a00  20 20 20 20 20 20 20 20  38 0d 50 52 4f 43 73 63  |        8.PROCsc|
00005a10  61 6c 65 76 61 72 73 20  20 20 20 20 20 20 20 20  |alevars         |
00005a20  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00005a30  20 20 20 20 20 20 20 20  20 20 20 20 20 20 31 30  |              10|
00005a40  0d 50 52 4f 43 73 63 61  6c 65 28 70 65 6e 29 20  |.PROCscale(pen) |
00005a50  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
*
00005a70  20 20 20 20 20 31 32 0d  50 52 4f 43 73 63 61 28  |     12.PROCsca(|
00005a80  64 65 66 61 75 6c 74 2c  58 73 6d 69 2c 58 73 6d  |default,Xsmi,Xsm|
00005a90  61 2c 73 78 2c 59 73 6d  69 2c 59 73 6d 61 2c 73  |a,sx,Ysmi,Ysma,s|
00005aa0  79 29 20 20 20 20 20 20  20 20 20 20 20 39 0d 50  |y)           9.P|
00005ab0  52 4f 43 73 74 72 69 6e  67 28 78 2c 79 2c 73 74  |ROCstring(x,y,st|
00005ac0  72 69 6e 67 24 29 20 20  20 20 20 20 20 20 20 20  |ring$)          |
00005ad0  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00005ae0  20 20 20 31 33 0d 53 6f  6d 65 20 73 69 6d 70 6c  |   13.Some simpl|
00005af0  65 20 45 78 61 6d 70 6c  65 73 20 20 20 20 20 20  |e Examples      |
00005b00  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00005b10  20 20 20 20 20 20 20 20  20 20 20 32 0d 53 54 41  |           2.STA|
00005b20  54 31 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |T1              |
00005b30  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
*
00005b50  20 20 34 0d 55 6e 69 70  6c 6f 74 20 20 20 20 20  |  4.Uniplot     |
00005b60  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
*
00005b80  20 20 20 20 20 20 20 20  20 34 0d 57 68 61 74 20  |         4.What |
00005b90  69 73 20 61 6c 47 49 4e  4f 6e 20 3f 20 20 20 20  |is alGINOn ?    |
00005ba0  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
*
00005bc0  32 0d                                             |2.|
00005bc2
04-02-89/AlgInfo.m0
04-02-89/AlgInfo.m1
04-02-89/AlgInfo.m2
04-02-89/AlgInfo.m4
04-02-89/AlgInfo.m5