view docs/shellplus/shellplus2.2a.doc @ 1871:054c318eda02

Added for future incorporation into NitrOS-9 Manual
author boisy
date Mon, 08 Aug 2005 11:48:52 +0000
parents
children
line wrap: on
line source

   This archive should contain:
SCF.IPC ----------->Patchfile to create new SCF with Kevin Darling's keyboard
                    editing, Bill Nobel's buffer pre-fill call, and some
                    general optomizations by yours truly
SHELL ------------->Version 2.2a of Shellplus with command history (shell is
                    so different in it's current state than the Tandy/
                    Microware original, I see no sense in making it an IPC
                    file... someone correct me if I am wrong)
SHELLPLUS2.2A.DOCS->This documentation file

   NOTE: YOU HAVE TO USE THE IPATCH UTILITY TO MAKE A NEW SCF FOR THIS VERSION
OF SHELLPLUS TO WORK. IT REQUIRES THE STOCK SCF AND THE IPATCH UTILILITY,
AVAILABLE ELSEWHERE.

Ident of original SCF to patch:

Header for:  SCF 
Module size: $05E3    #1507
Module CRC:  $F946CA (Good) 
Hdr parity:  $0E 
Edition:     $0D      #13
Ty/La At/Rv: $D1 $81 
File Man mod, 6809 obj, re-en, R/O 

Ident of new SCF you should end up with:

Header for:  SCF 
Module size: $06E5    #1765
Module CRC:  $E551FB (Good) 
Hdr parity:  $0B 
Edition:     $11      #17
Ty/La At/Rv: $D1 $81 
File Man mod, 6809 obj, re-en, R/O 

   In 1992 or 1993, a version of ShellPlus (V2.2) had a limited release that
contained command history (being able to scroll forwards or backwards through
that last few lines that have been typed in the shell. It used Bill Nobel's
modified SCF (which includes Kevin Darling's line editing patches as well) &
worked by temporarily modifying the ABORT & INTERRUPT keyboard signals to be
up & down arrows. (It then used the signals generated by the 2 arrow keys to
go forward or backwards through the command history buffer, even if you were
in the middle of typing a line.) Once you hit <ENTER>, it switched the signals
back to normal, and then processed the line (thus, if you were running a
program, you could still <CTRL>-<C> or <E> out of it). One small problem it
had, though, was that if you DID break out of a program, when it came back to
the shell it still had the <CTRL>-<C> or <E> sitting in the keyboard buffer.
Since the first thing ShellPlus V2.2 did was reset those keys, the real
<CTRL>-<C> / <E> sitting in the buffer got printed as an illegal OS-9
character ('.'), so you always had a period sitting as the first character on
your new shell prompt line.
   I went in and attempted to fix this just after I got this version of
ShellPlus, and did so with partial success. I eliminated the period, but
caused a new bug that if you forking sub-shells and using <CTRL>-<C>/<E> at 2
or more levels down a Fork chain (ex. doing a '$dir' from BASIC09 ends up
being 2 levels deep), it crashed all shells running on the machine. So, this
version wasn't released.
   Just recently I finally figured out how to fix it, and did. To
differentiate between the two versions, mine is called ShellPlus V2.2a.
   While it could have been done without it, this version requires a new SCF,
that has an extra option added onto Bill Nobel's keyboard buffer filling
SetStat call. If the high bit of Y is set, a carriage return will NOT be
appended automatically to the keyboard buffer. This SCF also contains some
minor speed optomizations in other parts of the code as well, so even if you
don't use Shell+, it should be worth your while.
   NOTE!!!!!
  There was a small bug in the original buffer filling call- it didn't bother
to check the size of the buffer you specified in Y before it tried to copy
it... a large value would crash the machine. Since Shell+ V2.2A REQUIRES the
new high-bit Y version of SCF's buffer filling call, it will CRASH an old SCF
machine as soon as you try to abort (with <CTRL>-<E>, <CTRL>-<C> or <BREAK>)
any program you run from the shell. MAKE SURE YOU INSTALL THE NEW SCF BEFORE
INSTALLING SHELLPLUS V2.2A!
    Shell+ V2.2A also fixes some bugs in Shell+2.1/2.2:
1) It opens Directories (for CHD/CHX/CD/CX) in READ mode instead of UPDATE
(according to the manual, these will be slightly faster) since none of those
shell commands write to the directories.
2) The ^ option (for setting priority just for the command line you are
typing) now works. The original should have worked, but for some reason
didn't. I think it had something to do with trying to change the priority of
a module just after it was forked; maybe it hadn't been 'fully' forked by the
time the priority was to change. I modified Shell+ to set itself to the new
priority, fork the process, and then immediately set itself back to normal.
3) If a ShellSub module was linked (see ShellPlus V2.1 docs), it didn't
unlink it properly, due to to statements being backwards in the original
source. This has now been fixed.

   For those of you running NitrOS9, the new version 1.20 upgrade will include
this shell, and has an even more extensively optomized SCF (see NitrOS9 docs
for details)

                   -L. Curtis Boyle, Aug. 20, 1994-