[comp.sys.handhelds] More hidden directory stuff

frechett@boulder.Colorado.EDU (-=Runaway Daemon=-) (10/01/90)

Ok, the info from Rick is very interesting.  Thanks.  You had mentioned that
it could be used like any other directory and sure enough I can easily enter
and exit it via numerous methods now.  One little problem I have now
is that I would like to be able to put the "HIDE" routines in that directory.
The hide routines need to be RCLd though, and I can't seem to find any 
way to put '' in a list or string or anything.  What I need is a user-key
assingment that looks like this.
<< {HOME '' HIDE } RCL EVAL >>
11.1
etc.... but as you will find, there seems to be no way to get '' into the list.
It just disappears.  I have other stuff in my '' directory that I can get to
with key assignments but then I am there... Anyone know how I can RCL an 
object from ''?

	ian

--
-=Runaway Daemon=-

n233dk@tamuts.tamu.edu (Rick Grevelle) (10/01/90)

>... I would like to be able to put the "HIDE" routines in that directory.
> The hide routines need to be RCLd though, and I can't seem to find any 
> way to put '' in a list or string or anything.  What I need is a user
> key assingment that looks like this.
> << {HOME '' HIDE } RCL EVAL >>
> 11.1
> .... but as you will find, there seems to be no way to get '' into the list.
> It just disappears.  I have other stuff in my '' directory that I can get to
> with key assignments but then I am there... Anyone know how I can RCL an 
> object from ''?
>
>	ian


It's not a problem.  There are probably more than a dozen ways to do what you
want to do.  The most straight foward approach is to use PUT in the OBJ MENU.
You already know how to get the NULL NAME on the stack using #15777h, so the
rest is easy.  Set up the stack arguments as shown below and execute PUT to
obtain the result.

                     
           Arguments                               Result

      4:                                      4:   
      3: { HOME A HIDE }                      3:
      2: 2                                    2:
      1: ''                                   1: { HOME HIDE }


Note that the NULL NAME does not appear in the list, but none the less it is
there.  You can check this several ways; the best would be to execute OBJ->.
This is a good example of just how deceptive NULL NAMES can be.  Personally
I'd rather PEEK to see how the actual code is stored when playing around in
the 48.  You shouldn't trust the display routines to always be truthful when
fooling with such things as unallowed names and unsupported objects.

Absolutely the easiest way to get the NULL NAME into the list is not to do it
at all.  All of the above effort was unnecessary because simply by executing 
PATH when in the NULL DIRECTORY the same list, without the HIDE, is returned
to the stack.  To put HIDE into the list, simply use the [+] key with the list
in level two, and the desired name to add is in level one.  Remember, you will
not see the NULL NAME in the list PATH returns, but it will be there.

The next step is to get the the result list into the program you described.
A minor sticking point is that you cannot EDIT the list.  If you felt that
the display routines were lacking in support, the EDIT routines are useless
when it comes to hacking as they provide no support for queer objects. 

EDIT the result list, and the NULL NAME will disappear for real this time.  
Verify this by DUPlicating the level one result and executing the keystrokes
[orange shift] [+/-] [ENTER].  Check it using OBJ-> again.

A modified PUT that utilizes three SYSEVALs to get the result list into the
desired program is the solution.  Set up the stack arguments as shown below;
SYSEVAL these three addresses in order: #1D524h, #54AFh, #5445h; the result
will be as follows.


           Arguments                              Result

      4:                                   4:
      3: << A RCL EVAL >>                  3: 
      2: 2                                 2:
      1: { HOME HIDE }                     1: << { HOME HIDE } RCL EVAL  >>


Providing each of the above steps were performed correctly, the NULL NAME
should be in the list within the program.  By now it is probably obvious
that to hide directories and variables it is only necessary to first store
them in the NULL DIRECTORY, and make the necessary userkey assignments.

Automating the above process requires a only the use of a relatively short
routine.  To use this program level one should contain the result returned
by the execution of PATH while in the desired directory, and any variable 
from that directory you choose to add to it.  All that's left is to make
the necessary user key assignment.  

->KEY 
BYTES: #6704h 94

\<<
   \<< A RCL EVAL
   \>> 2 ROT
 # 1D524h SYSEVAL
 # 54AFh SYSEVAL
 # 5445h SYSEVAL
\>>

Note that this routine could be further shortened as well as the result it
returns. i.e. { HOME HIDE } RCL EVAL  (no program dilimiters)

Rick Grevelle

akcs.dsl@hpcvbbs.UUCP (David Lowenstein) (12/04/90)

   Are the HIDE routines still posted somewhere ?
Early postings don't seem to be available. What exactly
do the HIDE routines do ?