Table of Contents:
1)Keys
2)Various Entry
A) Matrix
B) List
C) Typing Basic/Asm Programs or Built in Functions
6)Forms
7)Options
11)Limitations
12)Odd things
13)Bugs
14)Ram Usage
18)Legal
19)Thanks
I assume that you have experience with an equation writer of
some
sort, like on the hp calculators or eqw for the ti by E.W.
Hail has many features from both camps.
The best introduction to using an equation writer is the
documentation for eqw. I suggest you
read it if you have not already. So by
standard the following keys described in the documentation of eqw apply
during
Hail:
Diamond+numbers, [, {, Apps, var-link, Operators, numbers,
letters, Arrows, arrows+shift, arrows+2nd, Comma,
semi-colin, Backspace,
Clear, Del, Insert, math, units, char, catalog, diamond + [.
The remaining keys in Hail are now
described.
Recall:
______________________________________________________________
Executes ti’s recall box.
Diamond + Store:
______________________________________________________________
Executes the basic program
eqwprgmr(). Recall used to do this.
Mode:
______________________________________________________________
Mode will give you tios’s mode
menu.
Home:
_______________________________________________________________
Gives help/about/settings
pages. Previously this was
Assigned to mode.
Alpha (lock on 92+) +
up/down/right/left:
______________________________________________________________
Used with matrix/list/program entry. These
keys insert rows above the cursor or
below the cursor. Or insert columns to
the left of the cursor or to the right of the cursor.
Or insert element in a list to the
right or left.
Or insert arguments of a basic
function to the right or left.
Space:
______________________________________________________________
For the 92+ owners who always have
to stretch thier hands over to the arrow keys. It performs the same
operation
as the up key.
This is like math cad.
Diamond + down:
______________________________________________________________
2nd+down goes to the left most
number/var within the highlighted expression.
Diamond+down goes to the right most number/var in the
highlighted
expression.
Diamond +right/left: (x)
______________________________________________________________
Swaps selected expression with the
argument to the right or left.
Example:
1) Enter (x-y)/(x-y^2)
2) Select the numerator
3) Hit diamond + right and the
numerator is swapped with
the argument to the
"right" which is the denominator. So
the expression becomes:
(x-y^2)/(x-y)
‘)’ Right Parenthesis:
______________________________________________________________
Toggles between the small and the
large font! This is remembered so set it how you like before archiving.
‘(‘ Left Parenthesis: (x)
______________________________________________________________
Cursor mode! See discription below.
Diamond + negate/h:
______________________________________________________________
Stores highlighted block to the
home screen history! The second key depends if you have an 89 or 92+
F8: (x)
______________________________________________________________
Over view mode. See below.
Diamond + apps: (x)
______________________________________________________________
Approximates highlighted expression
and if the result is a float, then print that float in the status line.
Diamond + F1: (x)
______________________________________________________________
Enters a new matrix navigation
mode. You must be within a matrix in
order for this to work.
Diamond + F2:
______________________________________________________________
Press this key and it will reload
everything from the variable xsafety.
Operators:
______________________________________________________________
They are applied to what is already
highlighed or to the number that is currently being edited.
Pi Product is mapped to '}'
Sigma summation is mapped to ':'.
Abs is mapped to diamond +
'|'. Or on the 92+ diamond + k because
'|' is 2nd + 'k'
Mem: (x)
________________________________________________________________
There are two ways that the ‘and’
operator can be printed. This key
toggles between the two. This is
described in more detail below.
To enter a matrix hit '[' the currently
selected expression will be the first element in the matrix. As you move about the matrix your position
in the matrix will be printed in the status line as row,column. If you have an entire row selected it will
only print the row number.
Once the matrix is entered you can
do many things to it:
a)Add rows:
To add a row above the current row
you are in press alpha(lock on 92+) + up.
To add a row below the current row you are in press alpha(lock
on 92+) +
down. Or ';'.
b)Delete rows:
Select row and press
clear/backspace
c)Add columns:
To add a column to the right of the
current matrix element the cursor is in press alpha+ right. Can you
guess what
alpha+left does? To add a column to the far right press ','
d)Delete columns:
Press backspace on a place holder
in a matrix and the entire column goes with it.
e)Swap rows:
Select a row and press
diamond+right to swap it with the row below, diamond+left to swap it
with the
row above.
f)Swap elements:
Elements in each row may be swapped
with other elements in that row with the diamond +right/left keys.
To enter a list hit the '{'. the
currently selected expression will be
the first item of the list. As you move
about the list it will print the index of the selected element in the
status
line.
Once it is entered you can do
several things:
a)Add Elements:
Press ',' to add an element to the
very end. Press alpha + right to add an element to the right of the
element the
cursor is currently in. Press alpha +left ...
b)Swap Elements:
Simply use diamond +right/left
c)Delete Element:
Highlight the unwanted expression.
Press clear to turn it into a place holder. Press backspace to delete
the place
holder.
If you do not wish to get a command
from the catalog/math menu or get the basic/asm program from the
var-link menu
you can type it instead.
To apply a basic/asm program or a
tios function to an expression first highlight that expression. Then type the name of the function. The existing expression will momentarily
disappear.
When done typing, hit the
"(" key and the command is applied immediately to the argument that
was selected before the typing began.
If what you have typed is a tios function then it applied as a
tios
function. Else it is applied as a
basic/asm program. It is case
insensitive.
Notes: 1) It is case
insensitive. 2) When typing a tios
function you can press down arrow
instead of right parenthesis. 3)
Not all tios commands are supported.
You can not use things like ‘For’ or any other command where the
arguments are listed behind the function with a space, not inside
parenthesis.
Example:
1) Enter (x-4)/(s-v)
2) Highlight it all
3) Hit DIAMOND + ( + SHIFT + p for
the upper case greek PI.
4) Hit the "(" and
wallah! The pi product form is entered.
Odd Example:
1)
Enter (x-4)/(s+d)
2)
Highlight it
3) type "and"
4) Hit the "(" and
wallah! The function "and" is
applied to (x-4)/(s+d).
Once a basic program or asm program is entered there are
several ways that arguments can be added. Manipulation is essentially
the same as that of a list. You can add an argument to the very end
with the comma key. Or for greater control over where the arguments go
you can use alpha (hand on 92p) +right/left.
It is straight forward to enter an expression like y''. Enter
y, then hit the prime key twice.
Entering an initial condition like f'(0)=0 is not as straight forward.
To write the f'(0) part of this expression these steps must be followed:
1: Write the f(0) in the ordinary fasion: like how basic
programs are entered.
2: Make sure that f(0) is selected. This will not work if the
function name 'f' is selected.
3: Press the ['] key on the keyboard, keep pressing it to add
more primes.
4: Press [del] to remove a prime
Hail can take arguments, they are
the same as EQW by E.W.
ONE ARGUMENT: hail(expression) The
argument is first
simplified by the os before it is passed on to hail as an argument.
hail("expression") The
argument is a string so it is not simplified by the os.
For compatability with eqw programs
and forms placeholders are given by a 1 letter variable being char(255).
But Hail has additional argument
capability:
TWO ARGUMENTS: hail(expr,font) The expression can be a string or a nomal
expression. If a string is passed the
argument will not be simplified. Font
is the font to use.
If two arguments are passed hail
will output the dimensions of the expression once it has been pretty
printed.
Note: it does not display it pretty printed, it just gets the
dimensions.
To the variable ‘xtop’ hail will
store the size of the top of the expression.
To the variable ‘xbottom’ hail will store the bottom half of the
expression. To get the total height of
the expression add these variables together.
Yes there are reasons why they are not added together already.
Width will be stored to ‘xwidth’
For the small font use 0, for
medium font use 1.
THREE ARGUMENTS: hail(expr,x,y) The expression is displayed on the screen at
coordinates x and y. The coordinates
may be negative. The expression can go
out of bounds. If it does the graphics
will be clipped.
The font it uses is the default
font used during normal editing procedures.
Again the expression can be a
string or an actual expression.
Also it will output the dimensions
of the expression to the variable names given above.
FOUR ARGUMENTS: hail(expr,x,y,font) Just like the 3 arg form but this way you
can specify the font.
Press '(' to get into this mode
(except when typing a variable name/number)
This is a feature on my 49g's eqw
and it is replicated here. It lets you
move around the equation in any x and y direction and it "ignores"
the rpn tree-structure.
Arrows move the cursor, escape and
enter will exit from the cursor mode. The currently boxed expression
will then
be highlighted when escape or enter is pressed.
If you know what you are doing then
this feature probably will not be that useful.
But for those who don't know what they are doing, it could also
be
confusing. So don't ask me to explain
it. Just play with it.
Unlike the 49g you can do anything
to the boxed expression that you want. You can apply operators, type
over it,
cut, copy, paste, delete it, ect. Upon
doing any of these actions Hail will revert back to normal mode. But if you like cursor mode there is an option that will let you always be
in cursor
mode.
This mode is just for observing the
expression. The arrows scroll in nice
large chunks and there is no need to hold down the shift button which
is
awkward. And it is not in the inverse
white
on black like a highlighted expression in the normal editing mode.
There are two ways that it can
display the expression for viewing:
If it is not very tall (less than
half the display area) and very wide (width is greater than the display
area)
then hail will display it with line breaks.
You will know if you are in this display mode because you will
see the
line breaks, which are dashed lines.
The arrows will scroll it. ')'
will toggle the font. ']' will shange
the alignment of matrix columns.
Failing the circumstances for the
line break mode it will do a normal display. Arrows will scroll if it
can be
scrolled by incriments of 40 pixels.
2nd + arrows will scroll in whole screen sections.
And ')' will toggle the font. Again ']' will
shange the alignment of matrix columns.
Sorry but the " character will not convert the highlighted expression to a string. Just enter the expression normally, stash it to the history, exit Hail and convert it to a string yourself.
All these options are stored
internally in haildata and need to be set before archiving haildata.
1)Font:
Hail can use two fonts, medium or
small. The ')' toggle between the two
fonts. By default the medium font is set.
The small font is nice for viewing but not writing.
2)Spacing: (x)
You can control the
"spacing" variable. The
spacing variable will control how condensed the pretty printing is. Like "a+b" how many pixels after
the “a” will the "+" appear?
This is what it controls. It does this for all infix operators
and
multiplication.
So if the default is too cramped
for you then adjust it.
Personally I think that the tios's
pretty printing is too loose while the hp49g's pretty printing is too
cramped.
To set the spacing press mode and
press keys till you come to the options page. Then press F1 to cycle
between 4
spacing sizes.
Or use custom key during normal
entry to cycle between the different spacings.
3)Division: (x)
The width of a division bar is
determined by the greater of two widths: the numerator or denominator
width. It then goes and adds this
additional constant to that width. The
numerator and denominator will then be centered in the division based
on this
width.
Pressing F2 will cycle between 0-6.
4)Matrix Right Align: (x)
When checked this will cause the
elements in a matrix to be right aligned in a column, by default they
are left
aligned.
This can be set from the mode
screen, but ']' on the keyboard will toggle between the two alignments.
5)Soft Menu: (x)
If you wish you can have the soft
menu gone.
6)Ez_greek: (x)
For those of you who have to use
greek characters a lot (Any engineering or Math major does) It is only available in the 89 version of
Hail.
When activated all that you need to
do to type a greek letter is press the alpha/shift modifier. Keep the modifier held down and press the
alpha letter that corresponds to the greek leter you want.
To type normal letters press and
RELEASE the modifier.
This is a direct integration of a
tsr I wrote called Ez_greek that is available on my site.
There are two ways that the ‘and’
operator can be printed. The first is
the traditional method whereby and is printed in between the two
arguments. The second way it can be
printed is in a
vertical form.
The vertical form is nicer because
it can help fit more onto the screen at once.
Example:
Solve(x^3+y/x=3 and
x/y+y^(1/x)=12-sin(x),{x,y})
Will not fit entirely on the
screen, but it will if you use the vertical form of and.
The results of solving simultaneous
equations can also be quite long and using this option those results
can be
nicely compacted.
The upside down v symbol commonly used
as an and operator is placed in between the arguments with the second
form.
You can not set this option from
the mode screen. There are reasons for
this.
8)Always Cursor Mode: (x)
Set this and you will do all
editing in cursor mode.
See Below.
9)Low ram Mode:
By Default Hail requires 32k
available to write the datums that dictate the positioning of everying. Using 32k the limit on objects in the
expression is about 800 numbers/operators.
If the low ram option is set Hail
will use 16k to write the datums. So
the limit has on items has shrunk down to 400 numbers/operators.
This option is only for advanced
users.
Effects of changing this option
will not occur until after Hail has been exited and restarted.
In normal mode you move about the
entire expression by moving about the smaller expressions it is
composed
of. Up selects more, down selects less,
right and left move to different expressions.
But the cursor mode lets you move
about the expression at will in any x or y direction regardless of the
rpn
structure. Now if you like you can be
in that mode all the time.
The boxed expression is the
selected expression, just like the inverted expression in normal mode
is the
selected expression. Any thing that you
could do in the normal mode can be done in this mode to that boxed
expression:
be it storing to stuff to the history, typing numbers, applying
operators,
cutting, copying, ect.
Even if you do not use this mode
you can still quick enter a temporary cursor mode by pressing the ‘(‘
key. In the temporary cursor mode escape
and
enter result in the boxed expression being the selected expression. In Prefered Cursor Mode escape will exit
Hail and enter will paste the expression to the entry line (provided
there are
no place holders left in the expression.)
So just play with it. Personally
I find it slower and more of a
pain than the normall entry procedure of moving from expression to
expression. But it is here as an
alternate. Newbies might find it easier.
Yes you can navigate a matrix the
way you can in eqw by E.W.
But a new matrix navigation method
is available in Hail. You press Diamond
+ F1 to get into it. Once in it you
will be confined to the matrix.
In this mode movement is like that
in the 0S’s data/matrix editor. Using
the arrows you move the cursor from one element to another. You can not select rows, parts of the
element, or the entire matrix. All that
you can select is a matrix element.
During the navigation the current
elements row and column will be printed in the status line.
Up:
Stay
in the same column, go one row higher.
Down:
Stay
in the same column, go one row lower.
Right:
Stay
in the same row, but move 1 column to the right.
Left:
Stay
in the same row, but move 1 column to the left.
And you can move to the extreme
edges of the matrix with 2nd + Arrow.
Enter/Escape: Return to the normal
mode of
operation. A confirmation message of
this will be blinked in the status.
1) If an underscore is in a
variable
name then what comes after the underscore will be printed as a
subscript. The
underscore is not printed at all.
The exception to this being if the
underscore is the very first or last character. If
it is the last char in a var name you will temporarily not see
it (the typing cursor has moved into the subscript), just press down
and the
typing cursor is gone and the underscore appears.
This is like how mathcad works with
the '.' character.
2) When eqwUser or an eqw program
is launched
the selected expression will be stored to a variable called ‘selected.’ This makes it possible to have eqw programs
that act directly on the expression itself just like the function keys
act
directly on the selected expression.
For example the following eqw
program takes the selected expression and immediately turns it into
it’s polar
form, assuming that it has a polar form:
Eqwprgm3()
Prgm
Local x
SetMode(“Complex Format”,
“polar”)-> x
hailCom(string(selected))
SetMode(“Complex Format”, x)
EndPrgm
This example is included in this
.zip archive.
1) The third optional argument for
the derivative function is only displayed once in the "numerator" of
the d/dx.
2) It can not display
basic commands (like "For " and
"EndFor" ) and statistical commands (like "LinReg " ) are
not supported. An equation writer
really is not supposed to be used for such commands.
The focus is Calculus.
If you give hail an expression with
these items in it then they will be replaced by a rectangular block
(looks like
an extra wide placeholder)
3) Hail will not display very large
strings, visually they will be replaced with another string that says
"Big
String."
1) Matrix rows are
cut/copied/pasted
as lists. When stashed to the history a
matrix row is stored as a list.
2) Depending on the operator hail
might use brackets instead of parenthesis.
This is to increase readability because the brackets are only
used with
certain operators:
a)Postfix:
Operator comes after argument like
>hex, !, ect
b)Prefix:
Operator comes before the argument
like negate.
c)Powers:
The ^ operator. The base has
brackets around it if the base
is non simple. The exponant has brackets
around it if the exponant exceeds certain dimensions.
d)Exp:
The e^(. Again the exponant only
gets brackets if it exceeds certain
dimensions.
e)Sigma Sum and PI Product:
The First Argument will be in
square brackets.
Example:
(x-5)^3 The highest operator is
the ^ it decides that the first argument
x-5 is non simple and needs to be enclosed in something.
It chooses to use Brackets.
In the case of (x-5)*3 the high
operator is the multiply so it looks at the (x-5) and sees that it is
non simple
and needs to be enclosed in something.
In this case it uses parenthesis, not brackets.
1) When you exit hail the number of
history pairs in the status line will still reflect the number of
undos/spacing
option.
2) Hail might place parenthesis
where
they are not needed. Sometimes I ignore
tios's rules:
Example:
Tios prints abs(x)^3 as (|x|)^3.
Hail prints this as |x|^3. Note
that neither actually show the ^.
3) Expressions are limited to
dimensions of 32k by 32k. If these
dimensions are exceeded then there will be graphical errors.
Hail allocates 7k for the rpn Data.
For each operator and number in the
expression, hail will write a "block." These blocks contain datums
that dictate x,y positioning, area, text versions of numbers and some
other
datums. So for each operator and number
in the expression you have about a 30-40 byte overhead.
hail allocates 32k for these blocks
so there is space for about 800 blocks. So if your expression has more
than 800
operators/numbers then hail can not handle it.
If want there is an option that you
can check so that hail will allocate 16k for these blocks.
For those of you who have a lot of things in
ram. Personally I have nothing in ram.
Hail keeps at max 20 undos.
So you need about 40k free to
operate Hail.
1) Include an event hook tsr that
maps hail to something like Shift+Enter.
2) More advanced when( form.
Hail:
The name of this program. Do not rename it under any
circumstance. Doing so could cause a crash. Hail needs to be able to find itself and
hide itself in order for the tios catalog to function without crashing. This may be archived.
Haildata:
The external data file. If you
rename it hail will not be able to get it’s external data.
This may be archived.
EqwUser: This program will be
executed when
apps is pressed. This may be archived.
EqwPrgmx:
Where x is 1 to 9. This program is
executed when diamond + number is pressed.
This may be archived.
Eqwprgmr:
This program is executes when diamond +store is pressed. This may be archived.
Selected:
When any user program is executed the currently selected
expression is
stored to this variable. Do not archive
this variable.
Xtop:
The top half of an expression that has been pretty printed to
the screen
with hail’s additional command line features.
Do not archive this.
XBottom: The bottom half of an
expression
that has been pretty printed to the screen with hail’s additional
command line
features. Do not archive this.
Xwidth:
The width of an expression that has been pretty printed to the
screen
with hail’s additional command line features.
Do not archive this.
Xsafety: A safety variable. I have this tendancy to press exit and loose
everything I’ve entered. So now when
you press exit everything is stored to this variable.
I may be contacted by email at:
samuel@nyall.net
Please send questions, comments,
and suggestions. At this point of
developement I want feed back. Half the
fun of writing calculator programs is hearing from people around the
world. Or
goto my sight and sign the guest book.
If you can please send me a ti file
of the expression that can be used to get to the bug with the pressing
of a few
keystrokes.
I am in charge of the distribution
of hail. Do not upload hail to any site or distribute it on any medium
without
my permission. Calc to Calc distribution is fine. If you
distribute a basic program that makes use of Hail,
you still may not distribute hail. Just plug my site and tell others to
go there. No money can be charged for hail itself or for the
distribution of hail. If you charge money for other programs or
for the distribution of other programs you are not allowed to bundle
hail with those programs. You are not allowed to include hail as
a freebie associated with any sale.
Samuel Stearley is not responsible
for anything that occurs from the use of this program.
That includes but is not limited to crashes,
damage to calculator or loss of data.
Samuel Stearley does not guarantee
that it works. If Hail incorrectly
prints an expression and you write it down as an answer on a test I am
not
responsible.
It is Open source. It is 100%
asm. Will you be able to do anything with
it? You may plagariaze ideas
of hail but not the code. It is there
if you wish to add to the project. If
you wish to use parts of the source then my permission is needed.
-Friend Rabbit. Rest in peace space cowboy.
-Rusty Wagner for vti.
-The tict for thier handle
explorer. I use it quite extensively to
view rpn data of entries in the history.