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:
- CEEFAX disks » telesoftware12.adl » 04-02-89/AlgInfo
- CEEFAX disks » telesoftware8.adl » 05-08-88/ALG-UG
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