Programmer's Calculator 100 Version 1.0
	      ---------------------------------------

Introduction

Progcalc is a programmer's calculator for the HP100/HP200 LX palmtop
computers.  It can read and display numbers in binary, octal, decimal,
internet, hexadecimal, and ASCII notations and perform many functions
using no-precedence infix notation (like a four function calculator).
The calculator has 10 memory registers for storing results or operating
upon.

1. Package Contents

The package contains the following files.  As a minimum only progcalc.exm 
needs to be installed on the system (possibly with the progcalc.icn icon 
file).

readme			This file
progcalc.icn		Program icon
progcalc.exm		Program executable (System Manager compliant)

2. Program Installation

The program is system manager compliant and must therefore be added
to the manager's list of programs using the "Application
Manager" (&..., File, Application, Add).  The program is started
using a hot-key, or via the Application Manager.  The program
stores the register contents and its environment into the file
_dat\progcalc.env

3. Program Usage

Most functionality is evident from the program menus.  Letter case is
not significant except when entering values in ASCII mode.  The calculator
operates like most simple calculators using two registers.  Register X is
the value being entered.  As soon as an operator (+-* etc.) is typed register
X becomes register Y and the next value can be entered in register X.  When
the next operator or '=' is typed X and Y are combined using the previous
operator and the result is put into register X.  All immediate commands
operate directly on register X.  After an infix operation pressing the
'=' key again results in the repetition of the operation using the current
X and the previous Y values.  If all this sounds confusing do not worry.
It is just a description of simple four function calculators.

Numbers are always entered and displayed using the current number base.
The program will not allow the entry of a number that would overflow a
32 bit word.

All operations are performed on unsigned 32 bit words.  It is possible
however to display the numbers interpreted in two's complement notation
(the usual negative number representation).  Overflow is silently ignored,
division by 0, and logarithm of 0 result in an error beep.

A summary of all commands follows.

3.1 Infix operators

These operators are entered between two operands.  For example 45<2
will shift the value 45 two places to the left.

Key			Function
---			--------
+			Addition
-			Subtraction
*			Multiplication
/			Division
%			Remainder


&			Bit and
|			Bit or
^			Bit exclusive or

<			Shift left
>			Shift right
{			Rotate left
}			Rotate right

3.2 Immediate operators

These operators operate directly on the current entry value (X).  For
example pressing L when entering a number will convert it to its
negative value.

Key			Function
---			--------
~			Negate bits
L			Change sign (using two's complement notation)
G			Base 2 logarithm
S			Endian swap (Intel x86 to Motorolla 680x0)
R			Reverse bits (bit 0 becomes 31, 31 becomes 0)
I			Count 1 bits
O			Count 0 bits

3.3 Other commands

Key			Function
---			--------
ENTER/=			Evaluate
DEL/ESC			Clear the current X and Y registers
Backspace		Delete last character
F1			Change number base to binary
F2			Change number base to octal
F3			Change number base to decimal
F4			Change number format to 32-bit internet address notation
F5			Change number base to hexadecimal
F6			Change number base to ASCII
F7			Swap display format between signed and unsigned
F8			Swap the contents of the X and Y registers
F9			Store current value to memory (register 0)
F10			Set current value from memory (register 0)
N <digit>		Store to memory register <digit>
N <operator> <digit>	Operate current value with memory register <digit>
M <digit>		Recall from memory register <digit>

4. Author Contact

The program has been written by:

	Diomidis Spinellis
	Myrsinis 1
	GR-145 62 Kifissia
	GREECE

	E-mail: D.Spinellis@senanet.com

5. Copyright and Disclaimer

  Copyright (c) 1995,96 Diomidis Spinellis.  All rights reserved.
 
  Redistribution and use in binary form, without modification, is 
  permitted provided that the following conditions are met:
  1. Redistributions in binary form must reproduce the above copyright
     notice, this list of conditions and the following disclaimer in the
     documentation and/or other materials provided with the distribution.
  2. The name of the author may not be used to endorse or promote products 
     derived from this software without specific prior written permission.
  3. Redistribution for profit is not allowed.

  THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED
  WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
  OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
  DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE
  LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY,
  OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT
  OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
  OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
  LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
  NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
  THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.