[comp.sys.amiga] shells

mjw@f.gp.cs.cmu.edu (Michael Witbrock) (04/22/87)

Keywords:



Lately I have been thinking about ways to speed up the CLI.
An extensible command set is great in theory, but is rather slow in practice.

Two ways of dealing with this are evident:
  1) Load the 'important' parts of C: onto ram: at startup, and put 
     ram: at the beginning of the path.
  2) Write a shell with (some) built in commands.

There is a third, more general possibility: command caching.
  This would require replacing the CLI with a (very primitive) shell type 
  program. This program, when given a command to execute, would look for 
  it on ram: ( a virtually instantaneous operation ), and if it's there, run
 it from there. If not in ram, copy it there  and run it. This should mean
that uncached commands run about as slowly as they do now (i.e. very, but
it's no loss), and cached ones at from-ram speed. 

  Obviously, when the 'shell' was started up, it coould take params like,
max ram: space to use, Max size command to cache etc. Care would have to be
taken in designing the cache replacement strategy (LRU, FIFO, use counts etc
etc).

This scheme has the advantage over scheme 1) above in that it doesn't
'waste' ram: with unused commands, nor does it wast time loading them.

It has the advantage over 2) in that it can make 'resident' the commands
that the user, not the shell designer uses most often.

There is, of course, the problem of telling when c: has been written to.
(i.e. cache consistency)
The only way  I can see is to try to tell from the commands, and then do a
time stamp comparison. This wouldn't catch everything, but in most cases,
people aren't regularly changing the built in commands.
----


This is not meant in any way to be an attack on any of the shells people
have written. These are wonderful tools. I use one of them all the time (and
more often when I get a bit more memory). command line editing is not just
 a nice thing to have, it is an essential preventative for insanity (HINT
for 1.3 or 2.0 or whatever :-]).
These shells may, however provide more than the average amiga-dos CLI 
user needs.

In any case, caching frequently used non-built in commands might improve on
the current shells. (e.g. caching cc on a machine with lots of memory [I
know, I know it's not in c: ...]


Well? hows about it?

--
====================================================================
Michael.Witbrock@f.gp.cs.cmu.edu
US Mail: Michael Witbrock
         Dept of Computer Science
         Carnegie Mellon University
         Pittsburgh PA 15213-6890
         USA
Telephone : (412) 268 3621 [Office]
            (412) 681 3806 [Home]
========================================================


"Be good, be kind, in whatever you say and do, and remember: keep cool
till after school." (Ollie Olsen, Television New Zealand Kids Programme host 
                      [Translated from sign language]                       ).


-- 
====================================================================
Michael.Witbrock@f.gp.cs.cmu.edu
US Mail: Michael Witbrock
         Dept of Computer Science
         Carnegie Mellon University
         Pittsburgh PA 15213-6890
         USA
Telephone : (412) 268 3621 [Office]
            (412) 681 3806 [Home]
========================================================


"Be good, be kind, in whatever you say and do, and remember: keep cool
till after school." (Ollie Olsen, Television New Zealand Kids Programme host 
                      [Translated from sign language]                       ).

page@ulowell.UUCP (04/23/87)

mjw@f.gp.cs.cmu.edu (Michael Witbrock) wrote in article <50@f.gp.cs.cmu.edu>:
>Lately I have been thinking about ways to speed up the CLI.

The CLI is fast enough (since it doesn't really do anything); it is DOS
loading the commands from disk that you are concerned about.

>This would require replacing the CLI with a (very primitive) shell program.
>This program, when given a command to execute, would look for it on ram:

This happens now if you use the PATHS feature of the CLI.

I suspect the point of your article was that the shell put every command
into ram when it gets started up, providing room.  The problem with
this (assuming you use a fixed area for the shell's 'cache') is that
commands will be even slower to start up if they are not already in RAM,
since the shell has to copy it there before it starts it up for you.
This gets worse when your cache fills and you have to start removing
files (LRU, etc) to fit your new one in.

Also, since this is a multitasking machine, you will either end up
with redundant caches (two CLIs, each with 'emacs' in ram?) or
collisions for the same cache (I have 150K free, CLI 1 starts up
DPAINT and CLI 2 starts up METASCOPE ... who gets the space?)

In effect, it is a better idea if _you_ figure out what commands you
use all the time and want quick activation for.  Put them someplace
in your ram disk - say RAM:C, and point the CLI (via the PATH command)
to look there first.  It is dynamic, can be shared across CLIs
without problems, can be added to or deleted from easily.

To implement your idea you'd need some kind of AI that knew what you'd
been doing and what you were probably about to do.  Maybe a shell
that counts activations over time, and if it sees (say) 10 activations
within 30 minutes it asks
	"Should I put this in RAM:C for you?  You seem to be using it
	often enough that you'll benefit from the decreased load time.
	You'll have enough room in RAM if I remove FOO, since you
	haven't used it in the last 2 hours."

The best idea, however is to rewrite AmigaDOG.

..Bob
-- 
Bob Page, U of Lowell CS Dept.   page@ulowell.{uucp,edu,csnet} 

mwm@eris.BERKELEY.EDU (Mike (My watch has windows) Meyer) (04/24/87)

In article <1213@ulowell.cs.ulowell.edu> page@ulowell.cs.ulowell.edu (Bob Page) writes:
>In effect, it is a better idea if _you_ figure out what commands you
>use all the time and want quick activation for.  Put them someplace
>in your ram disk - say RAM:C, and point the CLI (via the PATH command)
>to look there first.  It is dynamic, can be shared across CLIs
>without problems, can be added to or deleted from easily.

There's an even better way, that several people (me among them) have
pointed out. It's called a "disk cache." Instead of having the CLI
buffer commands, you have the disk driver buffer tracks - in fast ram,
if needed. This solves the problems of two CLI's saving copies of a
file, etc.

I think the product WOW! is supposed to be this. It's also supposed to
have a dialable cache size. Optimally, it floats the cache with memory
useage, so if I do something large, the cache gets flushed so I can
use it as real memory.

Likewise, this is better than ram:. Instead of copying things to ram,
they get put in the disk cache. Things you tend to use stick to the
disk cache, things you don't use very often get flushed out.  Which is
(probably) what you want. I ran a z80 system with 1/2Meg of cache and
two floppies, and got better edit/compile cycles than people running
off of hard disk. Seems that the right things stuck to the disk
between phases.

In other words, I think that a disk cache is in all ways better than
ramdisk. Unless you've got something you don't plan on touching very
often, but want to _always_ be there. vd0: does that quite nicely,
though. The only other lossage is that temp files might get "written
through" to disk, even if they are never read off the disk. Well, you
can't win them all.

>The best idea, however is to rewrite AmigaDOG.

I've never run into an OS for which that isn't true. But caching vital
things can overcome a _lot_ of problems. Just ask anyone who's kicked
the Unix disk cache from 15-30 buffers to 100+ buffers.

	<mike
--
Take a magic carpet to the olden days			Mike Meyer
To a mythical land where everybody lays			ucbvax!mwm
Around in the clouds in a happy daze			mwm@berkeley.edu
In Kizmiaz ... Kizmiaz					mwm@ucbjade.BITNET

blgardne@esunix.UUCP (Blaine Gardner) (04/24/87)

in article <50@f.gp.cs.cmu.edu>, mjw@f.gp.cs.cmu.edu.UUCP says:
> 
> command line editing is not just
> a nice thing to have, it is an essential preventative for insanity (HINT
> for 1.3 or 2.0 or whatever :-]).

 Have you see Conman? I just got it from a local BBS last night, and I'm
already in love! Conman is alternate console handler that gives you VMS
style editing for the CLI (has some other neat features too). There are
three small files (total < 7K) that need to be placed in the L, LIBS and
C directories. Then just have your startup-sequence run Conman and the
CLI is now really useful.

 Having CLI editing and a command history gives me about all I need, the
shells are a bit of overkill for my uses. An interesting note: the
author (William Hawes) is plotting with the Software Distillery to make
this part of a "super-whiz-bang display manager". I can hardly wait!
 
 The files for Conman are quite small, anyone want them posted (if so,
where, is comp.binaries.amiga, or whatever, reliable)? 
-- 
Blaine Gardner @ Evans & Sutherland
UUCP Address:   {ihnp4,decvax}!decwrl!esunix!blgardne
Alternate:      {ihnp4,seismo}!utah-cs!utah-gr!uplherc!esunix!blgardne

upl@puff.WISC.EDU (Future Unix Gurus) (04/29/87)

In article <69@esunix.UUCP> blgardne@esunix.UUCP (Blaine Gardner) writes:

> Have you see Conman? I just got it from a local BBS last night, and I'm
>already in love! Conman is alternate console handler that gives you VMS
>style editing for the CLI (has some other neat features too). There are
>three small files (total < 7K) that need to be placed in the L, LIBS and
>C directories. Then just have your startup-sequence run Conman and the
>CLI is now really useful.
>
 I love conamn too. You neglected to mention that, since it is a replacement
 console-handler RATHER than a replacement cli, you get these functions
 auto-magicly in ANY console window, even ones opened by application
 programs. (I open a console window for debugging, and conman makes it a
 real pleasure).

 There IS a minor gotcha in conman, though. Have you tried doing a "more"
 from a conman cli? I replaced type (pretty useless) with more from the
 extras disk. Problem: Under conman, running more just returns a
 "not enough memory error". I have 1.5meg! I refuse to believe that
 conman takes 1meg+ !!! (Actually, I KNOW it doesn't because I checked with
 sysmon). Looks to me like more is assuming something about its environment
 it shouldn't, as everything else I've tried runs fine. Anybody have any
 suggestions out there? Most of what I do with my extra cli window during
 programming is more-ing include files......

 Jeff Kesselman
 captain@uhura.cs.wisc.edu

mwm@eris.BERKELEY.EDU (Mike (My watch has windows) Meyer) (04/29/87)

In article <726@puff.WISC.EDU> upl@puff.WISC.EDU (Future Unix Gurus) writes:
> I love conamn too. You neglected to mention that, since it is a replacement
> console-handler RATHER than a replacement cli, you get these functions
> auto-magicly in ANY console window,

I got a copy after seeing the initial posting. As good as that (as far
as I'm concerned) is that the history applies to input to commands, as
well as input to the CLI. This is something I've wished for in Unix
for a while...

> There IS a minor gotcha in conman, though. Have you tried doing a "more"
> from a conman cli? I replaced type (pretty useless) with more from the
> extras disk. Problem: Under conman, running more just returns a
> "not enough memory error"

There's another problem. The maximum size for a window opened with
conman is the max of (640,200) and the size it was opened at. I run on
an interlaced, morerow'ed screen, so this hurts. So much for
half-height POPCLI windows...

	<mike
--
Take a magic carpet to the olden days			Mike Meyer
To a mythical land where everybody lays			ucbvax!mwm
Around in the clouds in a happy daze			mwm@berkeley.edu
In Kizmiaz ... Kizmiaz					mwm@ucbjade.BITNET

phillip@cbmvax.cbm.UUCP (Phillip Lindsay CATS) (04/29/87)

in article <726@puff.WISC.EDU>, upl@puff.WISC.EDU (Future Unix Gurus) says:
> 
> In article <69@esunix.UUCP> blgardne@esunix.UUCP (Blaine Gardner) writes:
> 
>> Have you see Conman? I just got it from a local BBS last night, and I'm
> 
>  There IS a minor gotcha in conman, though. Have you tried doing a "more"
>  from a conman cli? I replaced type (pretty useless) with more from the

The problem is that "conman" isn't supporting all the con-handler packets.
Carolyns "more" sends a diskinfo packet to find out about the consoles
enviroment. I talked to author of "conman" and a revision is comming...
==============================================================================
  Phillip Lindsay - Commodore Business Machines - Amiga Technical Support
  UUCP: {ihnp4|seismo|caip}!cbmvax!phillip      - Phone: (215) 431-9180
  No warranty is implied or otherwise given in the form of suggestion or 
  example. Any opinions found here are of my making. 

carolyn@cbmvax.cbm.UUCP (Carolyn Scheppner CATS) (04/30/87)

In article <726@puff.WISC.EDU> upl@puff.WISC.EDU (Future Unix Gurus) writes:
>[]
> There IS a minor gotcha in conman, though. Have you tried doing a "more"
> from a conman cli? I replaced type (pretty useless) with more from the
> extras disk. Problem: Under conman, running more just returns a
> "not enough memory error". I have 1.5meg! I refuse to believe that
> conman takes 1meg+ !!! (Actually, I KNOW it doesn't because I checked with
> sysmon). Looks to me like more is assuming something about its environment
> it shouldn't, as everything else I've tried runs fine. Anybody have any
> suggestions out there? Most of what I do with my extra cli window during
> programming is more-ing include files......

   Hey!  That's my More program you're picking on!   

   My code makes the perfectly valid assumption that a machine booted with
1.2 has a console handler which PROPERLY HANDLES ALL 1.2 CONSOLE PACKETS.

   Under the REAL 1.2 AmigaDOS console handler, the ACTION_DISKINFO and
ACTION_SCREEN_MODE packets are supported and ALWAYS return DOSTRUE (-1L).
So, with the real 1.2 console handler, my packet-sending routine could
only fail if there was NOT ENOUGH MEMORY to allocate the needed structures.

   The current version of Conman was not fully/properly supporting these
packets and the author is correcting this problem.

-- 
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
Carolyn Scheppner -- CBM   >>Amiga Technical Support<<
                     UUCP  ...{allegra,caip,ihnp4,seismo}!cbmvax!carolyn 
                     PHONE 215-431-9180
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=

finkel@TAURUS.BITNET (08/10/88)

In article <2213@ihlpm.ATT.COM> jmdavis@ihlpm.ATT.COM (Davis) writes:
>
>After hearing the talk of AmigaShell and other related things.
>I am wondering if any of these shells can execute my favorite
>unix KSH command, namely the backtick. Let me give you an
>example.
>
>Backtick (or grave accent) will "execute a command in place"
>and let the results of that command be the arguements for
>your command line.

About 4 months ago, someone posted his Shell 2.07 variant. it included
wildcard expansion, using the TAB key, and it also included the  `command`
trick you want.

Wait ... I am looking at the shell docs right now ...
Well - here it is:
The Shell was Matt's shell with changes by Johan Widen ( jw@sics.se ),
who is probably reading this now.
The shell was 10KB larger than the original 2.07 release, probably
because it was converted back to Lattice. Johan didn't post the full
source code, but he included the diffs from the original shell.
He also included a small program called 'sets' that makes the best use
of the `` trick.

Udi


-------------------------------------------------------------------------------
Udi Finkelstein       | Bitnet:   finkel@taurus.bitnet or finkel@math.tau.ac.il
Tel Aviv University   | Internet: finkel%taurus.bitnet@cunyvm.cuny.edu
Israel                | UUCP:     ...!psuvax1!taurus.bitnet!finkel
-------------------------------------------------------------------------------

jonasf@kuling.UUCP (Jonas Flygare) (08/11/88)

From article <8808101326.AA29986@MATH.Tau.Ac.IL>, by finkel@TAURUS.BITNET:

> About 4 months ago, someone posted his Shell 2.07 variant. it included
> wildcard expansion, using the TAB key, and it also included the  `command`
> trick you want.

I used that shell for a while, but had to abandon, due to frequent GURU's..
Anyone know what it might be? I use ARP, 1.2 and the csh Johan made.
I have almost no problems with the regular csh..

> Udi
> 
> 
-------------------------------------------------------------------------------
Udi Finkelstein       | Bitnet:   finkel@taurus.bitnet or finkel@math.tau.ac.il
Tel Aviv University   | Internet: finkel%taurus.bitnet@cunyvm.cuny.edu
Israel                | UUCP:     ...!psuvax1!taurus.bitnet!finkel
-------------------------------------------------------------------------------
-- 
Jonas Flygare (aka Flax)         +------------------------------------------+
email: jonasf@kuling.UUCP        | "Never try to hack while a playful ferret |
real:  Vaktargatan 32 F:621      |  is watching your toes.                  |
       S-754 22 Uppsala Sweden   +-------- I TRIED....... OUCH! ------------+ 

bennete@romana.cs.orst.edu (Erik J. Bennett) (01/03/89)

I ran into a problem yesterday with a dillon/drew shell.  I had a REALLY
big .zuu file that I needed to download from a unix system.  Because of
the size, I used the unix 'split' which spilts a file into 1000 line chunks.
Upon the completion of this download (10 hrs @ 2400 baud), I typed:
cat >foo.uue bar.z*
and it didn't work.
the command line truncates at some finite point (255 char?). The questions:
1) Is there a way around the 255? char limit?
2) Is there a shell that doesn't have this problem?
3) Am I the only one in the western hemisphere who considers this a problem?

Thanks, (happy 1989), may we see lots of neat stuff for the machine this year.
-Erik
bennete@romana.cs.orst.edu

dillon@CLOUD9.BERKELEY.EDU (Matt Dillon) (01/03/89)

:I ran into a problem yesterday with a dillon/drew shell.  I had a REALLY
:big .zuu file that I needed to download from a unix system.  Because of
:the size, I used the unix 'split' which spilts a file into 1000 line chunks.
:Upon the completion of this download (10 hrs @ 2400 baud), I typed:
:cat >foo.uue bar.z*
:and it didn't work.
:the command line truncates at some finite point (255 char?). The questions:
:1) Is there a way around the 255? char limit?
:2) Is there a shell that doesn't have this problem?
:3) Am I the only one in the western hemisphere who considers this a problem?
:
:Thanks, (happy 1989), may we see lots of neat stuff for the machine this year.
:-Erik
:bennete@romana.cs.orst.edu

	The problem stems from BCPL limitations.  BCPL command strings
can only handle something 202 chars (I think), with a theoretical limit
of 255.  This limitation doesn't apply to C programs but I chopped it
in my shell.

	(2) Maybe, I dunno.  I suppose I should get off my butt and 
allow C programs to have a larger limit.  Nothing anybody can do about
the BCPL programs.

	(3) No, I remember a couple of years ago complaining about
this too.

					-Matt

john13@garfield.MUN.EDU (John Russell) (01/04/89)

In article <8079@orstcs.CS.ORST.EDU> bennete@romana.cs.orst.edu (Erik Bennett) writes:
>
>cat >foo.uue bar.z*
>and it didn't work.

foreach a ( bar.z* ) "cat >>foo.uue $a"

This appends each file to the file foo.uue, which is not required to exist
before you execute the command. The foreach command is ideally suited to
getting around the 256 char limit on command lines or dealing with commands
that don't take multiple parameters.

John
-- 
"If you steal all money, kids not be able to BUY TOYS!"
			-- Saturday morning cartoon character explaining
			   why theft is bad

acm131@eric.ccs.northeastern.edu (Craig Scott Lennox) (11/03/89)

I'm looking for a shell (CLI) for the Amiga which will emulate
a Unix Korn, C or Bourne shell.  Are there any out there (PD or
commercial) which will provide a believable enough illusion of
Unix?


					Craig.

a218@mindlink.UUCP (Charlie Gibbs) (11/06/89)

In article <3240@lab.udel.EDU> acm131@eric.ccs.northeastern.edu
(Craig Scott Lennox) writes:

>I'm looking for a shell (CLI) for the Amiga which will emulate
>a Unix Korn, C or Bourne shell.  Are there any out there (PD or
>commercial) which will provide a believable enough illusion of
>Unix?

I'm still using Matt Dillon's Shell2.07m, which is on a Fish disk
somewhere.  I think later versions have been produced, but this
one is good enough for me.  Many commands are built in, and they
have more of a Unix syntax; switches are preceded by a hyphen as
God intended, with none of those damned keywords.  If any of the
commands aren't already their Unix equivalent (e.g. dir and copy)
the built-in alias facility can fix them up.  The wild card
character is an asterisk.  There is a history complete with
command editing and the ! search.  Shell scripts are apparently
supported fairly well, although I haven't taken the time to get
into it.  But most important of all (to me, anyway), any file
copy assumes the CLONE option.  This feature alone was sufficient
to get me using the shell, since I consider date stamps far too
important (e.g. for version control) to allow the standard CLI
to destroy them.

     Along with the shell I'm using on my bridge board (UNCLE
even flips the MS-DOS backslash around the right way again),
I can type Unix commands wherever I go.

>                                        Craig.

Charlie_Gibbs@mindlink.UUCP
"I used to be indecisive, but now I'm not so sure."

swan@jolnet.ORPK.IL.US (Joel Swan) (11/06/89)

In article <3240@lab.udel.EDU> acm131@eric.ccs.northeastern.edu (Craig Scott Lennox) writes:
:
:
:I'm looking for a shell (CLI) for the Amiga which will emulate
:a Unix Korn, C or Bourne shell.  Are there any out there (PD or
:commercial) which will provide a believable enough illusion of
:Unix?
:
:
:					Craig.

The last two issues of Amazing Computing has been looking at a UNIX type syntax
shell called TShell.  It is commercial (Metran Technology) and can be
had from Abel supply for $29.26.   It looks rather impressive.

Joel Swan

mamba@csd4.csd.uwm.edu (Paul A Deisinger) (11/07/89)

In article <2019@jolnet.ORPK.IL.US> swan@jolnet.UUCP (Joel Swan) writes:
>In article <3240@lab.udel.EDU> acm131@eric.ccs.northeastern.edu (Craig Scott Lennox) writes:
>:I'm looking for a shell (CLI) for the Amiga which will emulate
>:a Unix Korn, C or Bourne shell.  Are there any out there (PD or
>:commercial) which will provide a believable enough illusion of
>:Unix?
>:					Craig.
>The last two issues of Amazing Computing has been looking at a UNIX type syntax
>shell called TShell.  It is commercial (Metran Technology) and can be
>had from Abel supply for $29.26.   It looks rather impressive.
>Joel Swan


I have been looking for either a replacement shell, or a program which will run
overtop of the existing 'AShell' and give me filename completion as implemented
in the Unix TShell.

Is there such a beast?

For those of you who don't have the wonderful Tshell on your system:
If I have several files in my directory:
Foo	foo	cab	bozo	itzy
etc...
I can type:
>more F(tab)
and it will automatically fill it in for me:
>more Foo

Also helpful would be command line spell checking (also a tshell feature)

PD

--
My other .sig is a Porsche.  Boongawa.