EXAL ver 5.0 **********This is postcardware!!! It is all I ask for my time.*********** ********** Address is at bottom of doc. *********** ********** I have not protected against stupidity in this *********** ********** program so be reasonable. It has a pretty good *********** ********** error handling system, but not a magic one. *********** ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿ ³ EXAL is distributed in the public domain in the hope that it will ³ ³ be useful, but is provided 'as is' and is subject to change without ³ ³ notice. ³ ³ ³ ³ No warranty of any kind is made with regard to the software or ³ ³ documentation. The author shall not be liable for ANY incidental or ³ ³ consequential damages in connection with the software, its ³ ³ use or abuse. ³ ³ NAH! NAH! ³ ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ Installation 1. Download the library to your calc. 2. Purge any old copies of EXAL from your calc. Do this by going to HOME dir, type [RS] [-] 0 [->] 1220 [ENTER] [ENTER] Then type DETACH, then PURGE. 3. Recall the new library to the stack. 4. Press 0 [STO] 5: Turn off then back on 6. Press [RS] 2 7. Go into EXAL 8. Press [SPRD] Use of the program The following functions are now available: Pressing the [.], [0]-[9] keys will go into an input line to enter a number into the currently hilited cell. The number can be complex or real. [ON] aborts input. Optional: If and ONLY if you have Mika Heiskanan's EQSTK and VV programs loaded, [LS][DWN] will view the formula in the current cell, provided there is one, in small font eqwriter form. [ON] exits the viewer. If you do not have this library and try this you will leave stuff on the stack. So I recommend getting the programs. They are worth it. ;-) [A] If pressed for the first time, starts a timer. When pressed a second time, places the elapsed time in the cell to the immediate right. If the cursor is on the last column, places the elapsed time in the current cell. After the timer has been started and stopped, it can be used again in the same manner. [B] Extract from ? to ?. move to origin cell, press [ENTER], move to destination cell, press [ENTER]. [ON] will abort the ops. [LS][PLOT] Toggle between plotting points/bars. [RS][PLOT] Only draws the X-AXIS. Use meaningful data or it won't look good. Plots the data on stack 1 and two. 2: is the X axis data, 1: is the Y data. This can be used outside the sheet viewer as well. NOTE: it only plots real numbers. To use it in the sheet viewer, use the EXTRACT function (see above) to extract any row or column or part of either which denotes the X data. Do the same for Y data. ONLY extract data from a single row/column for each axis data points. ie do not try to plot A1 through D8. The plotter assumes a pair of lists each with reals and/or formulas inside embedded lists with real resolutions. 2: { -1 0 2 3 4} 1: { 0 {'SIN(A1)' 0} 2 3 4} will plot (-1,0),(0,0),(2,2),(3,3) and (4,4). This is only meant to give the user a general view of the nature of the data plotted. It is NOT a full function plotter. [LS][MTH] Toggle RAD/DEG mode. Sheet is redrawn [LS][MTH] Toggle between RECT/POLAR mode. Sheet is redrawn [LS][->] Toggles auto move down/right after input. [RS][SPC] Toggles auto adjust of formulas after row/col add/del. [LS][0], [LS][2], [LS][3] STD, FIX 2, FIX 3 mode. The sheet will be redrawn. [STO] Stores the current sheet to the name of your choice and remains in the program. [LS][NXT] Gives info on memory, sheet size etc. Any key returns to viewer. [LS][1/X] Toggle between left and right justification [+] Adds a column to the right of the cursor. [-] Adds a row below the cursor [LS][+] Deletes the column the cursor is on [LS][-] Deletes the row the cursor is on [SPC] Redraws the sheet. This is to clean up any trash on the PICT left by multiple operations [/] Toggles display of formulas/values in the status bar This can speed up scrolling as displaying a formula means turning it in to a string and this is frighteningly slow. [*] Toggles on/off the status bar [ENTER] Copies the current cell to stack 1 [<-] Copies stack level 1 to the current cell [LS][+/-] Edit the current cell. [ON] aborts. [EEX] Toggle grid lines. These are simply cosmetic and as yet are not implemented well. [DEL] Delete the current cell [C] Begin relative copy routine. Read the status bar for directions. The status bar will show inverted color info as follows: ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿ ³ COPY $# ³ ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ where $# is the cell the cursor is on. Move the cursor to the cell you wish to copy and press [ENTER]. Now you will see this: ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿ ³ COPY $# FROM $# ³ ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ Now move the cursor to the cell you wish to copy FROM and press [ENTER] again. You will see this: ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿ ³ COPY $# FROM $# THRU $# ³ ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ Now move to the cell you wish to copy TO. Press [ENTER] and the copy will start. You will see the cells being updated in the process. NOTE: You may cancel the copy at any time during the range setting process by pressing [ON] but after you press [ENTER] the third time it is unstoppable without erroring the program. I wouldn't advise this. The copy is relative so formulas and programs will be updated if they contain cell references. [RS][TAN] Copy current cell to Statistical Data. The data is put into a list called TOTLST and it will remain in the current directory as a global variable even after you exit the sheet. [LS][TAN] Rename TOTLST to the name of your choice and purge the original copy. [D] Place Total of Statistical Data to current cell [E] " Mean " " " " " " [F] " Standard Dev " " " " [EVAL] Recalculate the sheet. NOTE: If you enter a value/formula/string into a cell which already contained a number or formula (or edit it), the alpha annunciator will come on until you recalculate the sheet. This is a reminder to you to keep up with formulas the could be changed. [LS][EVAL] Recalculate the current cell only. This will not turn off the alpha annunciator. [RS][EVAL] Set number of times to recalc the sheet. [LS]['] Toggle between recalculating from the top to the bottom or vice versa ['] Begin entry of formula to current cell. Formula can contain cell references. [ON] aborts entry. NOTE: Programs can also be entered in a cell but the program must NOT affect PICT. Be warned!! [RS][-] Begin entry of character string to current cell. [ON] aborts entry. [VAR] Create a global variable. The variable will be automatically prepended with a $ character. You may use this variable in a formula and it will be treated as a constant. [RS][0] Store current cell to global variable. As above, the cell name is prepended with a $ char and stored to a global variable. [ON] Exit the sheet and save. The sheet and ALL its environment variables ie cursor, window, flags etc, will be saved into a program which will appear in the menu of the current directory. To go back into the sheet just press the menu key for it in the directory menu. You will start the sheet where it was left off. If you do not want to save, press [ON] again and changes will be discarded. [NXT] Short help screens. Any key changes from one page to the next. Any key exits from the third one. [ON] aborts any input line routine ie number, formula, string entry. Right-shift and any cursor key will jump to the extreme corresponding edge of the sheet. Hints: To place the value of one cell into another, move to the cell to be copied and press [ENTER]. Then move to the target cell and press [BS]. If you do not do it this way, move to the target cell and enter a formula such as 'A1+0' because exal sees 'A1' by itself as a global variable and will politely place 'A1' in the target cell as opposed to A1's contents. Before you add items to the last row or column, add another row or column ([-] or [+]) so you don't pin yourself in. You can enter programs in a cell as long as they DO NOT alter PICT. Make sure they return a value or object. This can be handy for things like setting flags or other things. ie << -22 SF "Flg22" >> in a cell will, when evaluated, set flag -22 and place "Flg22" in the cells contents window. To enter a program simply press the ['] key as if you were entering a formula, delete the tick marks and open program delimiters. Use programs at your own risk!!! NOTE I probably will not be adding any features for awhile. I am very busy with school and it comes first. If you find a BUG, however, please email me and I will fix it if I can. Homages My most grateful thanks to Mika Heiskanan for JAZZ. This wonderful library, along with the plethora of hacking tools he has created has forever changed my relationship with my calc. It opened a whole new world. To Ray Good, my best friend and a very bright ME student. He did much of the Beta testing on this. You should check out his equation library. It is called xMRGLIB and is the best I have seen. Better than the built in one. Much faster! Bill Halkiadakis: An actual Professor who USES my program and did most of the testing of EXAL alerting me to several (many) bugs and made some very good suggestions which I implemented with pleasure. And all the IRCers, Brad, Seth, Arnold, Will, Martos and all the others..THANX! Call if you have questions. Al Arduengo aardueng@lonestar.utsa.edu 1-210-654-1381 3270 Nacogdoches #506 San Antonio, TX 78217 Changes since 4.6: 1: Cleaned up code. Less redundancies 2: Added a print function 3: Handled flag settings better. Symbolic flag is now ok 4: Uses UFL now. (Sorry it took so long guys...) Changes since 4.5a: 1: Added a timer function. [A] 2: Replaced #VAL! with ERROR! in formula/seco handling 3: Ensured correct flag settings at start. (Thanx Bill ;-)) Changes since 4.2: 1: Added plotter. See doc below for details. 2: Added extractor for cutting all or part of a sheet and placing on stack. 3: Fixed a shitload of silly little bugs. 4: Added the plotter info in the info screen. [LS][NXT] *note* I'm sorry to sx users who had problems with the plotter. Arnold Moy brought this to my attention. The problem was that I was using a GX only function. The problem is solved now. :-) Changes since 4.0: 1: Rewrote all formula and secondary processing routines 2: Fixed a terrible bug that caused memclear if a program did not return a result 3: Added toggles for rad/deg and rect/polar. Keys are just as normal. [LS][MTH] and [RS][MTH] respectively 4: Fixed a bug with handling statistical data 5: Most routines are much more efficient now. NOTE!! I insist you send a postcard. My wife doesn't believe anyone cares. ;-) Changes since 3.8: 1: Adding/deleting rows/columns will, if desired, adjust any formulas automatically. This can be toggled with [RS][SPC]. 2: Now the cursor will automatically move down or right one position after an input. Toggle for this is [LS][->]. 3: Added STD, FIX 2, and FIX 3 to [LS][0], [LS][2] and [LS][3] respectively. 4: Changed info screen to give info on various settings as well as mem and bytes info. 5: User can now press ['], delete the algebraic ticks and enter a LIST of objects which will be placed successively in adjacent cells horizontally or vertically depending on the setting in item 2 above. The list can contain any combinations of the usual valid objects. If the list size exceeds the boundaries of the sheet, extra items which could not be placed will be left on the stack. 6: Scrolling is much faster Changes since version 3.7: It is the responsibility of the user to ensure that a program, if used in a cell returns a value. I would not recommend using a program unless you are pretty good at writing them. Grid lines are much more stable now. Wrote a new routine to try to compensate for formulae that crash. Re added help screen. [NXT] Improved cursor movement Formulae/programs that divide by 0 now produce the infinity symbol Fixed a few minor annoyances.