170 lines
5.6 KiB
HTML
170 lines
5.6 KiB
HTML
<HTML>
|
|
<HEAD>
|
|
<TITLE>ic(1)</TITLE>
|
|
</HEAD>
|
|
<BODY>
|
|
<H1>ic(1)</H1>
|
|
<HR>
|
|
<PRE>
|
|
|
|
</PRE>
|
|
<H2>NAME</H2><PRE>
|
|
ic - integer calculator
|
|
|
|
|
|
</PRE>
|
|
<H2>SYNOPSIS</H2><PRE>
|
|
<STRONG>ic</STRONG> [<EM>expression</EM>]
|
|
|
|
|
|
</PRE>
|
|
<H2>EXAMPLES</H2><PRE>
|
|
|
|
<STRONG>ic</STRONG> # Start the calculator
|
|
|
|
<STRONG>ic</STRONG> <STRONG>250</STRONG> <STRONG>300+</STRONG> # Start calculator with 550 on the stack
|
|
|
|
|
|
</PRE>
|
|
<H2>DESCRIPTION</H2><PRE>
|
|
|
|
<EM>Ic</EM> is a simple RPN (Reverse Polish Notation) calculator, used for small
|
|
calculations and base conversions. All calculations are done using 32 bit
|
|
integers. The standard input is usually a keyboard and the standard
|
|
output requires a device with a 'termcap' entry. The program starts by
|
|
interpreting any <args> as commands, where the separation between
|
|
arguments is considered to be the same as the ENTER key. For example,
|
|
|
|
<STRONG>ic</STRONG> <STRONG>692</STRONG> <STRONG>784+</STRONG>
|
|
|
|
After reading the arguments input is from the keyboard.
|
|
|
|
<STRONG>Stack</STRONG> <STRONG>Operations</STRONG>
|
|
|
|
The operation of this program is similar to an RPN calculator. A six
|
|
level stack is used. The ENTER key pushes the stack up one level. For
|
|
example, '12+5' is entered as '12 ENTER 5 +".
|
|
|
|
The top two entries on the stack are exchanged by the <EM>x</EM> command, and the
|
|
stack is rolled down one (popped) by the <EM>p</EM> key. The top of the stack may
|
|
be cleared by pressing the back-space key. The whole stack and the
|
|
registers are initialized by a <EM>z</EM>.
|
|
|
|
<STRONG>Numeric</STRONG> <STRONG>Entry</STRONG>
|
|
|
|
The input and output bases are initially decimal, but they may be changed
|
|
using the <EM>i</EM> and <EM>o</EM> commands. The <EM>i</EM> command changes both bases, but the <EM>o</EM>
|
|
command changes just the output base. These commands take a one
|
|
character argument of <EM>h</EM>, <EM>d</EM>, <EM>o</EM> or <EM>b</EM> to change to Hexadecimal, Decimal,
|
|
Octal or Binary. While the input base is hexadecimal the letters <EM>a</EM>
|
|
through <EM>f</EM> are used to represent the decimal values 10 through 15.
|
|
|
|
When the input base is decimal: multiply, divide and remainder are
|
|
signed, otherwise they are performed unsigned.
|
|
|
|
|
|
|
|
The output base may also be changed to ASCII (<EM>a</EM>), this causes the least
|
|
significant 7 bits of a value to be displayed as a character. To input an
|
|
ASCII value the translate (<EM>t</EM>) command may be used, it accepts one
|
|
character as its argument.
|
|
|
|
<STRONG>Calculations</STRONG>
|
|
|
|
The arithmetic operations supported are: Negate ('.'), Add ('+'),
|
|
Subtract ('-'), Multiply ('*'), Divide ('/'), and Remainder ('%'). The
|
|
logical (Boolean) operations available are: NOT ('~'), AND ('&'), OR
|
|
('|'), and EXCLUSIVE-OR ('^').
|
|
|
|
After one of these operations the last top of stack value is saved. It
|
|
may be restored by pressing <EM>l</EM> (L).
|
|
|
|
<STRONG>Saving</STRONG> <STRONG>Results</STRONG>
|
|
|
|
Ten temporary registers are available. The Store (<EM>s</EM>) command followed by
|
|
a digit ('0'..'9') will copy the top of the stack to the specified
|
|
register. The Recall (<EM>r</EM>) command pushes the contents of a register onto
|
|
the top of the stack.
|
|
|
|
If the Store command is followed by a '+' preceding the digit, then the
|
|
top of the stack will be added to the specified 'accumulator' register.
|
|
|
|
Values may also be written to a file. The <EM>w</EM> command writes the top of the
|
|
stack, using the current output base, to a file called 'pad' in the
|
|
current directory. If the user does not have write access to the current
|
|
directory then the file /<EM>tmp</EM>/<EM>pad</EM>_$<EM>USER</EM> is used as the scratch pad. The
|
|
scratch pad file is erased on the first use of the <EM>w</EM> command within each
|
|
new invocation of 'ic'.
|
|
|
|
<STRONG>Miscellaneous</STRONG>
|
|
|
|
The Quit (<EM>q</EM>) key causes an immediate exit. The <EM>m</EM> command temporarily
|
|
leaves <EM>ic</EM> by invoking the shell as a sub-process. For help while using
|
|
<EM>ic</EM>, hit the <EM>h</EM> key. If an erroneous key is pressed the bell will sound.
|
|
|
|
<STRONG>Command</STRONG> <STRONG>Summary</STRONG>
|
|
|
|
Note that many commands have an alternative key-code available on the
|
|
extended AT keyboard. This aids entry by including most commands on the
|
|
right side of the keyboard.
|
|
|
|
ENTER Enter (push up)
|
|
BS (DEL) Clear top of stack
|
|
h Help
|
|
i Input base (h, d, o, b)
|
|
l (PGDN) Last top of stack
|
|
m MINIX shell
|
|
o Output base (h, d, o, b, a)
|
|
p (DOWN) Pop stack (roll down)
|
|
q (END) Quit
|
|
r (LEFT) Recall (0-9)
|
|
s (RIGHT) Store [+] (0-9)
|
|
t Translate (char)
|
|
w (PGUP) Write top of stack to scratch pad
|
|
x (UP) Exchange top of stack
|
|
z (HOME) Zero all state
|
|
. Change sign
|
|
+ (+) Add
|
|
- (-) Subtract
|
|
* Multiply
|
|
/ Divide
|
|
% (sh/5) Remainder
|
|
(tilde) Not
|
|
& And
|
|
| Or
|
|
^ Exclusive-or
|
|
|
|
<STRONG>Author</STRONG>
|
|
|
|
<EM>Ic</EM> was written by Terrence W. Holm.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
</PRE>
|
|
</BODY>
|
|
</HTML>
|