

                    ###    #####   #####      #   ###
                   #   #     #    #     #    ##  #   #
                  #     #    #    #     #   # #  #   #
                  #######    #    #     #  #  #   ###
                  #     #    #    #     #  ##### #   #
                  #     #    #    #     #     #  #   #
                  #     #  #####   #####      #   ###


           A SYMBOLIC MATRIX VIEWER AND EDITOR FOR THE HP48

                              version 2.0

                  (c) 1997 by Claude-Nicolas Fiechter



1. COPYRIGHT & DISCLAIMER OF WARRANTY
=====================================

All the files of the AIO48 library are copyrighted 
(c) by Claude-Nicolas Fiechter

AIO48 is distributed in the hope that it will be useful, but the
COPYRIGHT HOLDER PROVIDES THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY
KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
PURPOSE. IN NO EVENT WILL THE COPYRIGHT HOLDER BE LIABLE TO YOU FOR
DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL
DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM.

This version of AIO48 is a GiftWare release. You may use it as long as
you like, but only for non-commercial purposes and only as a private
person. Permission to copy the whole, unmodified, AIO48 library is
granted provided that the copies are not made or distributed for
resale (excepting nominal copying fees) and provided that you
conspicuously and appropriately include on each copy this copyright
notice and disclaimer of warranty.


2. OVERVIEW
===========

AIO48 provides a symbolic object viewer and a simple writer/editor for
symbolic matrices and vectors (represented by lists of symbolics), as
handled for instance by the ALG48 library.  It is designed as an
extension of the EQSTK library (c) by Mika Heiskanen and Claude-Nicolas
Fiechter, and EQSTK is required to run the object viewer.  The matrix
writer/editor, however, can be run even if you don't have EQSTK on your
calculator.


3. INSTALLATION
===============

AIO48 takes approximately 4.4Kb of memory and should work in any port
of a HP48G(X) or SX.  The library was designed to work properly on a
HP48SX, but was developed and tested only on a GX, so be careful if
you use it with a SX, and let me know if you encounter any problem.

AIO48 is a regular auto-attaching library (library number 910). To
install it on your HP48 download the file "aio48.lib" onto your
calculator (in BINARY mode), put the content of the created variable
on the stack, store it in the port of your choice (e.g., 'AIO48.LIB'
RCL 0 STO) and power-cycle the calculator.

AIO48 is designed to be used with EQSTK (c) by Mika Heiskanen and
Claude-Nicolas Fiechter.  EQSTK is available from Mika's web page at
<http://www.hut.fi/~mheiskan>.  See the EQSTK documentation on how to
install EQSTK.

     ***********************************************************
     * DO NOT USE AIO48 WITH AN OLD VERSION OF EQSTK (prior to *
     * version 9.0). It might crash your calculator.           *
     *********************************************************** 


4. COMMANDS
===========

4.1 Algebraic object viewer
---------------------------

AVIEW ( A -> A )

AVIEW displays any algebraic object (including symbolic matrices and
vectors) in a nice graphic form, as converted by the command AGROB in
EQSTK. It leaves the object on the stack unmodified. The following keys
are active in the viewer:

[Cursor]              - scroll the display
[Right-shift Cursor]  - move the display window to the picture boundary
[+/-]                 - switch between small and medium size
[ENTER] or [ON]       - exit the viewer
[OFF]                 - power off

If EQSTK (and UFL, as needed by EQSTK) is not installed then AVIEW
generates a "Missing Library" error.


4.2 Symbolic matric writer and editor
-------------------------------------

MWRI  ( -> Matrix )
MEDIT ( Matrix -> Matrix' )

MWRI let you create a new symbolic matrix or vector, whereas MEDIT let
you edit an existing symbolic matrix or vector.  A (n x m) symbolic
matrix is represented by a list of the form

          {{A11 .. A1m}{A21 .. A2m} .. {An1 .. Anm}}

where each element Aij is an algebraic object (real, identifier or
symbolic). Similarly, a symbolic vector [(n x 1) matrices] is
represented by a list of the form {A1 .. An}.  Lists arguments that
are not valid symbolic matrices or vectors produce a "Bad Argument
Type" error in MEDIT.

The symbolic matrix writer/editor is similar to the calculator's
matrix writer, except that the width of the columns is fixed and that
it doesn't allow you to insert or delete columns or rows in the
matrix. The menu has the following commands:

[EDIT] - edit on command line
[VIEW] - view using algebraic object viewer
[EQW ] - view/edit using the calculator's Equation Writer
[VEC ] - vector mode   \
[GO> ] - go-right mode  > like the calculator's matrix writer
[GOv ] - go-down mode  /

If EQSTK is not installed then [VIEW] is disabled (it just beeps).
Unlike the calculator's matrix writer, the movement mode is always
reset to "go-right" when you start the editor.  When the vector mode
is set, (n x 1) matrices are returned as vectors (i.e., simple lists).

The menu does not directly contain a [^STK] command, but you can enter
an object from the stack into the matrix through the EDIT menu
(left-shift [+/-]).  If you need to (e.g., after using the EDIT menu),
you can press the [MATRIX] key (right-shift [ENTER]) to redisplay the
symbolic matrix writer menu (this will also redisplay the matrix).

The key actions and cursor movements are basically the same as in the
calculator's matrix writer. You can enter the objects for several
cells in one command line, and, unlike the calculator's matrix writer,
objects of invalid types are handled gracefully and do not cause the
editor to exit abruptly.

The editor was optimized to be reasonably fast to use.  It might take
a few seconds to initialize and start editing large matrices, or
matrices with very complicated symbolic expressions, but once it is
started most operations should be fast.


5. CONTACT
==========

Gifts :), bug reports, and constructive comments and suggestions 
can be addressed to

Claude-Nicolas Fiechter
Department of Computer Science
University of Pittsburgh
Pittsburgh, PA 15260, U.S.A.

e-mail: fiechter@cs.pitt.edu
URL:    http://www.cs.pitt.edu/~fiechter/hp48
