nather@ut-sally.UUCP (Ed Nather) (04/06/86)
# This is a shell archive. Remove anything before this line,
# then unpack it by saving it in a file and typing "sh file".
#
# Wrapped by sally!nather on Sun Apr 6 13:20:24 CST 1986
# Contents: Readme keydo.doc keydo.uue
echo x - Readme
sed 's/^@//' > "Readme" <<'@//E*O*F Readme//'
There are two different approaches (and many different programs) designed
to allow command-line editing and history recall in MS-DOS. The program
DOS-EDIT derived from PC magazine is one approach -- and a rather inferior
one, in my opinion, since anything that has been scrolled off the current
display screen is not available. This is nearly always the case where the
invoked program sends output to the screen.
A better and much more elegant approach is to provide an invisible, endless
buffer to hold prior commands, and bring them to the cursor line whenever
demanded, where they can be executed with or without editing. (Any command
which is changed is saved as a new command). The attached program was
written by Jack Gersbach, who works at IBM and also wrote the beautiful
PD 808x disassembler "asmgen." If you want to learn about programming an
808x processor, disassemble this program -- it is a working textbook.
Apparently there are more "advanced" copies of this program, which permit
aliases etc., but without argument substitution. I use .bat files for that
purpose, which allow argument substitution. I find just the command history
and editing provides a simple, clean and excellent tool. I seriously miss it
whenever I use Unix. To use it, put the command "keydo" in your autoexec.bat
file, and locate keydo.com in a directory known to your command search path.
WARNING: THIS PROGRAM IS ADDICTING. The Surgeon General has determined you
will become seriously depressed if forced to use an operating system that
does not support it.
I have made two minor changes to the original. When active, the original
"keydo.com" program defaults to "overwrite" mode, like the IBM BASIC editor.
Since I use PC-Write and it defualts to "insert" mode, I changed keydo.com
to correspond. If this seriously offends you, send me mail and I'll tell
you how to change it back.
The second minor change allows one- or two-character commands to be stored,
which the original did not. I assume this was to avoid storing commands like
"A:" but I don't really know.
Use "uudecode" to recover the original .com file below, and some form of
BINARY (or image) transfer to get it to your PC. I use "Kermit -is keydo.com."
@//E*O*F Readme//
chmod u=rw,g=r,o=r Readme
echo x - keydo.doc
sed 's/^@//' > "keydo.doc" <<'@//E*O*F keydo.doc//'
keydo - a simple history mechanism for MS-DOS
KEYPAD KEY OPERATION KEY OPERATION
Up Arrow Recall earlier command Dn Arrow Recall later command
Left Arrow Move cursor left 1 char. Backspace Delete prior char.
Right Arrow Move cursor right 1 char. Del Delete current char.
Ctrl-Left Move cursor left 1 word Ctrl-Home Erase to start of line
Ctrl-Right Move cursor right 1 word Ctrl-End Erase to end of line
Home Move cursor to line start Esc Erase complete line
End Move cursor to line end Ins Toggle overwrite/insert
This program is loaded as a part of the command environment in MS-DOS, and
remembers commands as they are typed. If you want to repeat a command, just
press the Up Arrow key on your keypad, and the command will appear on the
command line just as if you had typed it in again. To execute it unchanged,
press the <RETURN> key.
You can "back up" more than 1 command: pressing the Up Arrow key will recall a
previous command each time. The last 32 commands you typed are available in a
circular buffer; to go the other way use the Down Arrow key.
You can edit the recalled command before you execute it: use the Left and
Right Arrow keys to move the cursor back and forth on the line. Hold down the
Ctrl key, and the arrow keys move the cursor one "word" at a time. The Home
key moves the cursor to the beginning of the line, the End key moves it to the
end. The Del key deletes the character the cursor is sitting on, the back-
space key deletes the one before the cursor. Ctrl-Home erases from the cursor
position to the start of the line, Ctrl-End erases from the cursor to the end
of the line. You can insert new characters just by typing them. To overwrite
characters present, touch the Ins key once, then type.
You can execute the revised command at any time, with the cursor in any
position, by pressing the <RETURN> key.
@//E*O*F keydo.doc//
chmod u=rw,g=r,o=r keydo.doc
echo x - keydo.uue
sed 's/^@//' > "keydo.uue" <<'@//E*O*F keydo.uue//'
begin 644 keydo.com
MOA`!O[P'N30!*\[SI.FL!C/`CMB^A`"_9@*EI;A@`HE$_(Q,_K]@`+D``K`-
M\ZJZO`?-)P``````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M````````````````````````````````````````````````````````````
M`````````````````````````````````````````````````(#\"G0%Z@``
M``!04U%25E=5'@;[Z"\!!Q]=7UY:65M8L`#/#T=(2TU/4%-S='5W=H0`#`6&
M![LI!4,%C07_!58&Y@1Q!:L%50;S!9<%/"!S#3P)=`E0L%[H`P!8#$`\
M('(2/']T!2[^!JL'4I*T`LTADEK#/`UT(#P(="0\"74>+J"K!PSX]MA1BLBU
M`.,'L"#HRO_B^5G#+L8&JP<`Z\LN_@ZK!U!2)HL64`0FBB9*!`K2=1(*]G4"
MMAG^SHK44[<`M`+-$%M:6.O3"M)U!_[.)HH62@3^RL.P(%$FBPY0!.AI_X#]
M&'4))CH.4`1V`O[.6<-345*Y#`LF]@87!(!T!(KIT.VT`<T06EE;)J%0!#V(
M"'($+J-U`\-$3U,@141)5$]2($)9($HN($=E<G-B86-H#0H`3V-T(#$P+#$Y
M.#,@4K<`M`/-$(KR+HD6J@>T#\T0/`>Y#`MT`[D'!BZ)#EL#6HO:L033ZHS9
M`]&*!SP"<J7^R+0`'@X?HXX$@\,"OP``"_]U!HD6Y@.+^CO7=`B!_P``=`CK
M&3L^^`-T$PX'OJP'C7P(N00`BP6EB43^XOB)%O@#'[T,`.L#O00`,_8NB39U
M`S/_CL<F@`X7!("!Y?[_Z!O_DK0(S2$\!G3PN34$40K`=27-(08.!U>Y#P"_
M@P+RKE\'A\L#VR[_MY("B]G#Z(<!Z+H`7^NO/']T!#P(=0/I?0$\#74#Z84"
M/!MTX3P)=`"!_X@(<@6P!^DJ_H'E]_^!S0(`4.B;_B:+%E`$)O8&%P2`=!17
M._YV"(I!_X@!3^OT7T=&Z%<!3EB*X(8`1CO^<P*+_B+$/"!S#R;V!A<$@'4'
M._=T`^DQ`</WQ0@`=!N!Y??_"_]U$XI'_SA'_G((M`"7@#D-=`/I:/_H9P!R
M^\-6Z.(`7HO/*\XS_U=1XPB*`$:(`4?B^%]>Z>T`@<T"`"Z+#G4#)CL.4`1V
M!>@`_NOTB_[I`@'H*P!S!>@#`.OVPXH`Z`P`<@F*0/_H!`!S`5C#/#!R^PP@
M/&%R!#Q[]<,\.O7#._=U`<.*`$;HPOWYP^CP_W,)L`<F(@90!'7RP^@;`'(8
MZ+G_Z_8F]@87!`)TW^@)`'(&L`<BPG7UPPOV^72N3NAZ_8`X"70*@#@@<S'H
M;?WK+%:+SHK!M`?C#TZ`."!S!X`X"70)_LSB\2XJ)JH'*N`"S(#A!W0%Z$+]
MXOM>^.M3D.BU_W)<Z_GHKO]R50O_=%$[]W1-5COW=`B*0`&(`$;K]%Y/@<T#
M`('E]_]6._=S"(H`Z!;]1NOTZ"G]]\4!`'00+H<&=0.1Z/_\)CL.4`1W]EZT
M`E-1+H@6JP>W`,T065O#_8'E]__HEO_HR?X&'@<.'XLVK`>LC7__N0`!Z.@`
MJ(#A^?QU!@8?!^GO_8'E\?_HU`#V!(!U"$[HT`!.Z,P`B3:L!^C``"1_)HIE
M_SK$<@**Q*J8D5'HK0"JZ(S\XO=?B_<&'P?#]\4&`'7Y'@93Z"S_Z%_^#@<.
M'XL^K`=7B_?H@P`\#77Y.S:N!W0(Z'8`Z(``Z_*P#8@%B]^''JX'7CO?=`7H
M;`#K]TZ)-JP'6P<?Z5?_)H`F%P1_Z$7\6.CQ_;`-Z*;[B`&+QXA'_XOS/`+K
M``X'+O\&K`?WQ0(`="4NBSZN!PR`Z"D`/`UT`ZSK]BZ)/JX'+C@%=`7H%0#K
M]BZ)/JP'P^@"`"ZLA_?H!P"']\/H`0"J+CL^L`=S!BZ+/K('3RX[/K('<@4N
MBSZP!\/H:O[HG?T>C,B.V([`BSZP!XD^K`>)/JX'N0`!L`WSJA_IQ?P``&`!
@.8`%@`6`"8`!@`&``8`&.
`
end
@//E*O*F keydo.uue//
chmod u=rw,g=r,o=r keydo.uue
echo Inspecting for damage in transit...
temp=/tmp/shar$$; dtemp=/tmp/.shar$$
trap "rm -f $temp $dtemp; exit" 0 1 2 3 15
cat > $temp <<\!!!
38 371 2228 Readme
35 340 2002 keydo.doc
42 44 2404 keydo.uue
115 755 6634 total
!!!
wc Readme keydo.doc keydo.uue | sed 's=[^ ]*/==' | diff -b $temp - >$dtemp
if [ -s $dtemp ]
then echo "Ouch [diff of wc output]:" ; cat $dtemp
else echo "No problems found."
fi
exit 0
--
Ed Nather
Astronomy Dept, U of Texas @ Austin
{allegra,ihnp4}!{noao,ut-sally}!utastro!nather
nather@astro.UTEXAS.EDUscott@hp-pcd.UUCP (scott) (04/09/86)
Re: Missing command stack in UNIX Have you tried the K-shell? You get the same stack, and the EMACS cursor/line control keys manipulate the stack... hp-pcd!hpcvck!scott
sitze@rruxu.UUCP (04/14/86)
KSH is UNIX specific, as I remember... Twould be nice though (I support's VI and EMACS editing..) <ras>