Mercurial > hg > Members > kono > nitros9-code
view docs/shellplus/shellplus2.2a.doc @ 2592:7d8831f053ff
Corrected cosmetic error in drive address R. Gault
author | robertgault |
---|---|
date | Sat, 24 Dec 2011 12:48:56 +0000 |
parents | 054c318eda02 |
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-