[comp.sys.handhelds] Matrix Writer

akcs.gandalf@hpcvbbs.UUCP (Rakkiat Trimahaloek) (12/06/90)

Does anyone know how to lock vector enter in Matrix Writer?
I always use matrix and I don't want row matrix to come out as a vector.
Everytime I must press [vec] to get rid of the box inside the menu.

Thanks,
Rakkiat

trimahal@chaph.usc.edu

akcs.asturias@hpcvbbs.UUCP (Victor M. Asturias) (03/11/91)

Within a program I would like to call on the matrix writer
to ease the input of data and to have this data stored in a 
user defined variable.  I would appreciate any ideas on how
to solve my problem.  
                        Thank You; 
                                  Victor M. Asturias
                                  Syracuse University

akcs.waterman@hpcvbbs.UUCP (Jason Todd Waterman) (03/14/91)

This problem can be solved by executing a SYSEVAL for the
{Blue-shift}{ENTER} key.  The address for this is #3B068h.  A sample
program for executing the MATRIXWRITER and then storing the result in a
user defined variable would look like this:

<< #3B068h SYSEVAL 'TEST' STO >>

This assumes that the user did not exit the matrix writer using the ATTN
key.  If that was the case, you would have to check that there was
actually something returned to the stack.  One way to check would be to
determine if the object returned was an array.  For example:

<<  0                    @Places a non array object on stack just
    #3B068h SYSEVAL      @in case you are using other arrays in your
    DUP                  @program.
    IF TYPE 3 SAME       @Check object type.  If it is a real array
    THEN 'TEST' STO      @then store it in variable 'TEST'.
    END DROP >>          @Drop the 0.

If you will be entering complex arrays then you must modify the program
to check for object type 4 as well.  Sorry if this doesn't quite make
sense, but I'm making it up in my head as I go along.  Hope this helps
solve your problem!

Jason Waterman
The University of Calgary
Calgary, Alberta, Canada
Email: waterman@engg.ucalgary.ca

akcs.joehorn@hpcvbbs.UUCP (Joseph K. Horn) (03/14/91)

Victor M. Asturias asks:

>  Within a program I would like to call on the matrix writer to ease
>  the input of data and to have this data stored in a user defined
>  variable.  I would appreciate any ideas on how to solve my problem.
>                          Thank You; 
>                                    Victor M. Asturias
>                                    Syracuse University

# 3B068h SYSEVAL runs the Matrix Writer (new, empty matrix).
If you want to pre-load it with an existing matrix, place the matrix
on level 1 and use # 3A645h SYSEVAL.

All the "non-programmable" key functions are really programmable, of
course, by SYSEVALing the proper address.  For example, the inter-
active stack can be programmed by # 3A93Dh SYSEVAL.

INPUT lets you turn alpha mode on, but PROMPT doesn't, unless you use
# 3AA0Ah SYSEVAL first.  Note: flag -60 is used by the alpha key, and
hence by this SYSEVAL, which _is_ the alpha key's program.

Want to program VISIT?   Dumb Visit (key 52.3) is # 3B12Bh SYSEVAL;
Smart Visit (key 35.3) is # 3AF69h SYSEVAL.  Keep in mind that the
action of keys depends on the mode you're in; "smart visit"
becomes "full down" in graphics mode...

These work on version E.  All were found using the Voyager program
by Derek Nickel.  Use them at your own risk.

--  Joseph K. Horn  --  Peripheral Vision, Ltd.  --

bgribble@jarthur.Claremont.EDU (Bill Gribble) (03/15/91)

speaking of non-programmable functions, does anybody know how the catalog 
  environment works?  since the same object is probably used by the stat
  and plot/solve routines, it looks like some sort of object filter is passed
  to the catalog and only certain objects are displayed.  If you could
  use no filter and just have the catalog as a file browser I can think of
  at least one terminal program that would suddenly have a file selector
  and sending mechanism.

*****************************************************************************
**   Bill Gribble                     Harvey Mudd College, Claremont, CA   **
**   bgribble@jarthur.claremont.edu   Never heard of it?  You're stupid.   **
*****************************************************************************

NORM%IONAACAD.BITNET@CUNYVM.CUNY.EDU (Norman Walsh) (03/15/91)

When I try #3B068h SYSEVAL with my '48 Rev E, the calc puts up the
MatrixEditor but goes into never-never land when I try to leave
the matrix writer (by pressing enter after finishing a row).  Any
special flags, etc that have to be set or something (I wouldn't
imagine that this would be the case but...)

                                                       ndw

lishka@uwslh.slh.wisc.edu (a.k.a. Chri) (03/17/91)

NORM%IONAACAD.BITNET@CUNYVM.CUNY.EDU (Norman Walsh) writes:
>When I try #3B068h SYSEVAL with my '48 Rev E, the calc puts up the
>MatrixEditor but goes into never-never land when I try to leave
>the matrix writer (by pressing enter after finishing a row).  Any
>special flags, etc that have to be set or something (I wouldn't
>imagine that this would be the case but...)

This happened to me to.  I discovered, though, that if the above
syseval is used in a *program* (as opposed to typing it in from the
command line), then everything works fine.  So I simply created a
program that looks like:

	<< #3B068h SYSEVAL >>

and called it 'MATRIX'.  Everything works fine when MATRIX is called.

						.oO Chris Oo.
-- 
Christopher Lishka 608-262-4485     It is not safe out here.  It is wonderous,
Wisconsin State Lab. of Hygiene     with treasures to satiate desires both
   lishka@uwslh.slh.wisc.edu        subtle and gross.  But it is not for the
   uunet!uwvax!uwslh!lishka         timid. -- Q

akcs.asturias@hpcvbbs.UUCP (Victor M. Asturias) (03/18/91)

  I would like to thank Jason Waterman and Joseph K. Horn
for the solutions they presented for my problem, I was able
to implement them and my program "flows" more naturally.

                                   Once again, Thank You!

                                   Victor M. Asturias
                                   Syracuse University

bson@rice-chex.ai.mit.edu (Jan Brittenson) (03/19/91)

In a posting of [14 Mar 91 19:28:26 GMT]
   bgribble@jarthur.Claremont.EDU (Bill Gribble) writes:

 > speaking of non-programmable functions, does anybody know how the
 > catalog environment works?  since the same object is probably used by
 > the stat and plot/solve routines, it looks like some sort of object
 > filter is passed to the catalog and only certain objects are
 > displayed.

Here are some basics.

   A basic catalog routine is at #47bf0. It is called with two
arguments:

	2: menu.program
	1: items.list

   The menu is an internal menu, which basically is a program
returning a list, which is the menu list. The menu list is a list of
lists, like the CST menu:

	{ { name exec } { name exec } ... }

   Unlike CST menus, the `name' component can be more than just a 21x8
GROB or a string:

	- XLIBs result in the corresponding function name. Useful
	  since it's a relatively short form, it uses the banked ROM
	  instead of the main ROM, and changes whenever a function
	  name is changed. I wonder what happens when a new library
	  is installed with new names but old XLIB numbers? My guess
	  is that certain menus will end up looking different.

	- Programs are evaluated, and return a string or GROB which
	  is used as a label. This is useful for creating the box
	  bullet to indicate a mode (such as in the MODES menu, for
	  instance). There are plenty of functions that take a
	  string, and a true/false value and return a bullet-box
	  GROB label. The program can of course do whatever fancy
	  evaluation it likes to.


   Since the menu is a program that is called whenever the stack is
redisplayed, it can be used to alter the display. Entering a menu can
make you enter a new display, just as easily as the opposite, which
incidentally, seems to be predominant.

   To display the current menu, set the menu argument to @#3ac0
(False). [Note: @#3ac0 here means that you put the Prefixed Machine
Code routine at #3ac0 on the stack, not the binary #3ac0. #3ac0 EVALs
to itself, so #3ac0 SYSEVAL will do the trick.]

Some system catalog menus can be found at:

	PLOT CAT  484fe
	STAT CAT  48544
	TIME CAT  48585


   The items list argument in level 1 is a list of global names. Each
item is a global name which will appear as a tag to its contents. For
instance, "FOO" 'BAR' STO will appear as:

	A:"FOO"

if "slow" catalog mode is enabled, or:

	BAR

if "fast" catalog mode is currently enabled (check to see what system
flag this corresponds to). If the global name doesn't exist, "" will
be used instead in "fast" catalog mode. Arrays appear as a description
of their dimensions. Alarm entries appear as an alarm description.


   Place the menu program in level 2 and the list of names in level 1
and call #47bf0. There are numerous RAM hooks which are used by the
main catalog driver. In fact, #47bf0 only sets up a certain
configuration (as well as saves the previous one in a list in a local
variable). I'm not sure about the usage of all of these hooks, but it
seems possible to create almost any kind of catalog if just properly
configured. For instance, 70614 seems to hold the object to be
evaluated in case of an error. (Notice I say SEEMS here, the issue is
not clear at all.)


   It seems to me what you would want to do is to create a list of
global names corresponding to the file names, using the #5b15 SYSEVAL
(string to global name), and then use the "fast" catalog mode for
browsing. The functions in the menu are called when the corresponding
key is pressed, and the current index is in one of the local variables
(I'm not sure which one - you will have to do some experimentation
here).

Happy hacking!

						-- Jan Brittenson
						   bson@ai.mit.edu

					   Read my lisp: no new classes!