[comp.sys.amiga] REZ, resident, SKsh, newshell

nsw@cbnewsm.att.com (Neil Weinstock) (08/13/90)

I'll try to make this brief, but it's a little convoluted.

I have always in the past used REZ; it worked fine and I didn't use the 1.3
shell anyway.  Now I've switched to SKsh and REZ doesn't consider it pure, so
it won't share it.  According to the SKsh docs, it *is* pure, and I have set
the pure bit.  My first question is, anyone know why REZ doesn't consider SKsh
to be pure?

I am now juggling three resident commands:  SKsh resident, AmigaDOS 1.3
resident, and REZ.  I have two goals:  1) speed up invocations of new shells
and 2) make SKsh shared to reduce memory consumption (I'm only working with
1 Meg, so it's important).  I have not been having much luck.  If I make
SKsh resident using it's own resident command, then that works, but doesn't
solve my problem, since I usually pop up new shell windows with the dmouse
hotkey.  It also means that the *first* SKsh is not running out of a resident
copy, wasting ~60K.

So, I tried making SKsh resident using the 1.3 command, and converting over
to using the 1.3 shell.  This appears to have absolutely no effect.  I feel like
I have tried everything:  I have made all the commands in my shell-startup
file (which is in RAM:) resident along with SKsh, but it still grinds the 
harddisk and eats up enough memory for a brand new copy of SKsh.  I even
REZed newshell, which seemed to be the only way to solve that part of the
problem.  All to no effect.

Anyone have some obvious pointers on how to make this all work?  The interaction
between all the various resident systems has never been particularly clear
to me, but the bottom line is that 1.3 resident just doesn't seem to be working.

All suggestions appreciated.

                                   - Neil

--==--==--==--==--==--==--==--==--==--==--==--==--==--==--==--==--==--
Neil Weinstock @ AT&T Bell Labs        //     What was sliced bread
att!edsel!nsw or nsw@edsel.att.com   \X/    the greatest thing since?

koren@hpfelg.HP.COM (Steve Koren) (08/14/90)

> shell anyway.  Now I've switched to SKsh and REZ doesn't consider it pure, so
> it won't share it.  According to the SKsh docs, it *is* pure, and I have set
> the pure bit.  My first question is, anyone know why REZ doesn't consider SKsh

This part I can't answer.  SKsh is made pure by telling Lattice to make it
so (which I think involves some special code which copies the data segment
upon invocation).  Perhaps this is confusing REZ.

> hotkey.  It also means that the *first* SKsh is not running out of a resident
> copy, wasting ~60K.

> So, I tried making SKsh resident using the 1.3 command, and converting over
> to using the 1.3 shell.  This appears to have absolutely no effect.

You *can* make SKsh resident with the AmigaDos resident command.  Works
just fine; I do it on my system.  There is a brief description of how to
do this in the "Hints.doc" file (or at least, I think that's where it is).
However, if you use the c:resident command to make SKsh resident, you
have to then invoke SKsh from the AmigaDos shell (because others
won't see the AmigaDos resident list - see below).

> Anyone have some obvious pointers on how to make this all work?  The
> interaction between all the various resident systems has never been
> particularly clear

The trouble is that there are several different standards.  The AmigaDos
one seems to work great but is a little difficult to use from a
programmer's point of view.  The ARP solution (which the SKsh "resident"
command uses) is different.  In other words, if you add something
to the AmigaDos resident list, it won't appear on the Arp list, and
vice versa.  I don't know what REZ does, but it may be yet another
mechanism to accomplish the same thing.  Of course, none of these
mechanisms really interact very well; for example, a command added to
the Arp resident list will be handled correctly from the Arp shell or
SKsh, but not from the AmigaDos shell.  The same applies in reverse.
I will probably change SKsh to use the Commodore solution when I
compile under AmigaDos 2.0.

  - steve

jbickers@templar.actrix.co.nz (John Bickers) (08/16/90)

Quoted from - koren@hpfelg.HP.COM (Steve Koren):
> vice versa.  I don't know what REZ does, but it may be yet another
> mechanism to accomplish the same thing.  Of course, none of these

    I got the impression that Rez actually fiddled with the program when
    loading (ie: a re-write of LoadSeg) so that *it* made copies of data
    areas and so on. Which can handle some impure programs. The other
    types of resident lists don't do that (or don't seem to). They just
    take "pure" programs (determined by a checksum test) and redirect
    LoadSeg or whatever to use the loaded version all the time.

> I will probably change SKsh to use the Commodore solution when I
> compile under AmigaDos 2.0.

    How documented is the CBM resident list? I've got a prog that controls
    a resident list for Workbench, and while I use WShell I'd be interested
    in scanning the AmigaDOS list too (can't scan WShell's - proprietary).

    Same thing goes for aliases too (though I guess they can be scanned by
    running alias into a temporary file, or something).

>   - steve
--
*** John Bickers, TAP, NZAmigaUG.         jbickers@templar.actrix.co.nz ***
***           "Man, Machine -> Super Human Being" - Kraftwerk.          ***