3SH COM ZiSH HISMSH20 DOC SH20 ZZ0X" vSH20.Z80#  #ya62@$V0& 2qo7#As:Ge6Te9Hdpѐa7NCD )Lf#7 Cs33CNXm8%Rp[C,IDnT s$G Qxit h1|Ti7Meu@AR7ӀN4mx2IXKvDhZ1vfcL 8'KЂF 6f>o@rBshs1晱{Qi[Ws\~UgV&~IEYXVxlX͏ [6M@ HeF-aɜg&V„cGEU1TUIxB$dhx=qnF-ae% -{%nKRNue[WU֩8aEGUeVd TphV~ZaRQ@7FF8 h*n.my[z1ZkM:l'p'p$;zD uBp'M1b+d' lFzaaqc$5SqbFapda„!Oh5M,ZC|vűu8iDpQrh-[ݼL:\MfQ'~YBPCE gIe[[ !t:+d.&l(db73!|/x@&[O%6>Ap-mDPÓMiEWI[!2`"qMxn1m&#Wk1C@ Hd1Fڞ]!Z?!g0xK*o7E8*ޞV:<%-DzJ9;+oY r4s{i4H|#>@q}fCy'Xs#``h&Qwr5D>Ka@a2C!? U V" ^ pDxQ( Rؖ3Q  ˼Xt/p/мB@wqD_("4~6%HnL ,]˒۸8wI>hAŖ3RhmUT*QtwOe"rvAZa0$RLCS˯)FΖLaT0\ff(,&4 XLY1XR-΍!zʌf(TT`G l':ۢ 9';C~a!Bumj tk2#A͂@Q9+ZZ0L !2<6c49:/@ 0$tDx7sDWy0ߖTOA?9`k b09 = K}c,o,P8n/*!>o+!9E0(Z"v< " 0&IRǖb<ףEAl,!.kA ASCF1 R \GH tV86f4ܤXi F PO.ʂ {o4/ʷBO)N$I` 2N*dbGNk?Q -l,ⷳDx2~YV945$ KaAc]\^ZYҫ˻y+?hbg`u㓴b6 :G)uXhgX<9+}'n7%w8{ {'V'%N}+~@0~#b |gX 7F]cz(x7>N`@Py%  ApOSr&@ I1TPgTgyp |(kW{ 9i(')|]yCN@T$"~S!4+xifvVts+Ti J z8uEo3Fh!nWl!P mkqRu+'4x#ryYuP p(0A)0SO 6v18Ot8 0P6iwswi#|UohY9LO/&0BaɆX[ǡxxDDQ$ a"vPw1j7/x'fqpmq{vg!v0PZIփ4qU@ 3BW?>d"!͏ t/5Lz QwITi D")P ]'yAC)CD#!'IMCPpLh8r11u88>O{[pi' ~np+p;v%IG@,ՌP;FS#Gd(sl(j8 - p<+sSPTNa4k6jo}ҫL(ǵ,8<(i#EL{I( z\ٖI2ټ9͜H iwS}G50aUA8tTx9c#hti <W#F3>PQ!#hjZ%SUXR'nHRi…fxf*aR$ق,/ḃ8+ֱR^8SGB7 (uOJ2LkunC脳Fp'ͣcqE*;&x.ZH ?9Lp[:1j/. i j0fסnWL0Vj5#j Z0jzgZrC16|NOu*_Ed6i*X}:[Zڔ%ڔFF:OQ ũVnzeW~8/"̚e B$BWRjYJZIA CĔi$+CGXɾ7-yy:g:c !Ɏ!!b6%reaV| S!-g!K8Y%hҺCyVQ0sU4/4wxi'{;B`d)\^ 9>Y<}OMQ'7y\,A>#$$6@s|H,G%vgmGMK> H <(xY k9;;p11<ZBz`t9;r.QU@l۳Fx4xY&F{H J> HI<û}+A/8ԵD!0#(8!vδKSлӺ370L 247;' %f 䃆P9PI^>6d s?14]9]ёk'*2wXQvhd­xOW(%~S7>t b1+*I;4tO*+OOrQ9!3TA` `,PDD(?fceltqfr<6&F=R"Rh(k03s;+>J55+Lc,0,f@VN5|Ñx+-OʼrhcpDʌʣ裈lZ MMR2A1v$S0mm{۱,f@Z<zY v%E}f@R`Dv;"2j3 T4 ᧖V;ߝꈝ-1W=+ 9$.pU,]`TOm5d|*ea8;Ԇ}UgnЪ;`>̯vnlvb,irmNpMpi86`fkxT=d?Q/z`[d)kweZ,ƛX2FqA#K$ﳌP llRkz"J{,0ͼ@OIX~ 2O1;B0m<.U ' g&Z+ /;kNkpP]a ̀ E91+2 FZbF* kՎ&#jM3JP'+2x?2װ(-~^q&nzWaOx7Wfw#gѲG٠mf0;=X 1;UbG׶28ܻX9wdxz/|)pX ׺;/*Й2-w!A7Xٻ/%Sc!Wa{;_vl~RkBѷ,H(<+fAALV} MԦM֛T~`;8KK$je\$qw󝘈;0n"8Vɞߟ;W~;u583/7gYCkܑmI늵*WVPW _@l+܆J4cm Zju`3V\)͍T׬VCԫO٥z7v SwacZOZ]2 ]Ж9:,ɉ b,چPԾ)VؕݺHѠ;?>)ȭmHݦtPQAԾݎ9~*-up Za,Š>$NJѰ)bk@Qs^=S",'8vR̮U'RlՇKQ: NLA(Qo>VPO10,9G["{]ZvY&S6DFKb! Xքsk|5r0"w\gF?Xl6N0L Ҷ妴# U ,ulq!OU^!+xF'/ ːsA@,eUaH)"=u Sȏ>ZX*Lvϯ.k%'~rX'Iv0e:ysW1MEZG/׿J|- YrWC ̤x=DYO㼽|z_pn xKfO7W<0χ 1=?)V:.b"&Z;kV / YrW+kL=Z+@BFC$b,8Wc=a&uΜXcÓʁ!y(\ iOeү¼F<99 =NZxqU$;ۺIzL79,40uX[iTaE{-<;,=_p'/Fo;L11[F9j )UH*TbbYzl4a$b+I <-u0M@S24SE7TpDX72('}0y=pP6 ӭ-NΧU^ ScVUgCbXyRsY=e]YK`p _y*17Uu1š@-ũ2Wz4e[Lef|PF΀C7/s` ]Nu5,2t1[Ć0Ko%S7Ć{h.VTgY?O!;p XF8VAtH$YGĵpR'5Il|HaYy_šZ4 9|Q*QĆBPH)9S*)8rm1Lng[SIĆSpL[5N1WDv%!,c}ȭ+\ O!\o`rT#^YVa|IeE$_cb^'6Aa5|HaeXS,˛`BC5Q*%Eoqb>jC)aקr`B,0U RܿDnaXqRIK|NTVC|mADyU"72VW,98i$^E-X<_S![#δ@D>U܉ϐP0Ni8,&[zF6Q\'κ N"BՔ|CfR_SJqƱ撎\"q{,u\qƱ(肼V!wBē>D-@,}1:Ĝ_zɸ*\9Ô`D.ZU9ywi`P۟ 0;H <4 9-b|X&PAuVAlg5V[n|Qlz'Y\ch(6-)Ց`3|lh+kz8W'LPCBG)6,Az(+bGT8lDN|8>^[ 7ո))ɽz Az"X*}-),/-[:WSCNY>=VoVc,e)U:`B煌(Ws;P'BPr܃P';{y"a(~1^aD#-N/"q j<N6}/#ȅwOjXWl>PS-NU!68!Soq+)Zu9#|ɻc`D(9ST?sͩeuc`D6EIO2Sa,m0VE!V=FL;8cV*4ߛ";E|>ovqfbrXEm0bMQV=FK=Yϒh-$|^V=F@7U쩙0CSnm= co*Uy틙Et sy' Y9-aASq*vW$f HHlh?3hqQ{!kl"d?-^G. E۴I&ԏhXeco體 GAz'MPGi(/L=$6*ݝ0+c`Y`f''/Jeo>&z#KJ*E6ռZ;ȅ"AT/Pj@2$lJ9<1q{lU!1F'p9m0Trռk|2=I+T uL,tp W[oa!VJQI^k,7 nT'C͘#a[lÜeobSnҿ lrd! 6k!m!j9'%N|?&i\iYrSZ"|OTEE9@1ʇE/L%4FJkzaGkp;LcFq2O^!Q[f';mPٙYIL@(v+P>Exii(qCva[RF܃ɽkkν5rhcoQ/ EstMߞ~Cሙ\L3q1U('@qlO(w|LYh,_>9-aPpOR۠[URxh\2> !Ho'WpMz 1SMʑ/}R3d#4"YQ(#nMN:46K!cK!Q&d1Q!Hlz{>*8be6ռZ[c*y94YQjCUIN!cfVο5o>]c3Ȩ]" m=cqV 'j.V0=U aerA2yL w[Ū*0ȅ0@F`3FZPwbcRdRYP43R:6NR*D-_Xր>"̤udBf-l,P1K!4M134a1SA90J( Re%w 6B?*S7 G]3* `,N щ\B`f·?E: hD앱v4ռ_@k|LM/ D~+=!>l7]߶ס-aT[z۬oM0L7D4 @Ņ Qˆ!0DI?1ռfk~vmͼ%U:춒֍{ϖCX[ =R a?H_8+p Zʵ&l(To .E\NhnWuIƌ7M޽0(4u rT|EIƌn4d#_dz<2yqD6E*ReVwSs 'FI@ԷHh]5Nac{Y8/MWw(`X4xd}UhW'Wvp0F$j,j`puэ{c4l!~}K%y,@CKVA5wR8Ճu_YjII=VRbOR+ C,`Ctq(PnAĂ I$;$=U$llP1d,=Y3, Rerqȅ"L+$531Pٙ:}~,ւ<ӌbF?慑/hg}`Fܫ݌C=!RDn4e hQ`@X9XiԷ 1PCbK.)@AsAl7%w(#,!1HN+H3CטPapz!ʆ8UC9-as_4#_bE!^$f<?D]uIL{tot]5Yݾw`WLp;"vX1@qH)틘Y}99Xdxそ"dd>U9)(hYI26orRWn E@-K -xG/A̡nK*\/ʌʥoɄ"xU0fho&Wp 39UܢN^i6u=֢m08+bF9T6E*=UIL49ԷHh,WJ߸+ss֓6C& 5al+bF7%R`U^Oh\l$ i8xh~n(<$ok>~B>A6aj^IL49Է7y1xhi2~.;˒N~Rc",~9'~躐iJ]{š7躐ϙтƙ躐y'N ,n (<$o1qA{@,<TgFfn^nie9)(hi_+ ƒzd_Az.i>Hhi{v_,֭9#S1"Iƌ` hU'!$j]KN`V 6$]tI.~vwƝÎ\ܰHF7"W@CbGܢl; &[Ū*ȱueV >i8ՕJnsL4<9kfBFBĕG9t:8[BFiuLqYAczu`eX8Y8,"(/B0Ņ ȪT5TO]#ܧqI3S/K(.VL]tPa~!8BmD(jHN,t0X^8=cMƂg|ỉwt0`Fs;>]cj1nd\C5Bp,-jVK)5U _;,`PbU"O&D =CKwƝm1_p@opm08+bF^|>cOѸ\X>+f9XoɠIXѷi?I,/t|iܨ|]1v/MOXe5aON]tILO8ʜÅ䙾|i-ÜVl=j)Էjb@]F@ F<D<3Q4>AS㳃ܵznTo(kcDp |iG >_ Xz-C 9wz!D>Pl8ʒkXQSF%>F UWϠT`N ƙ% H7NYn9SNM,zeBo,> Q9m8VvSsAl~>b (<$oX c'# LVGX3+WB8Q@8P 4i asXR(Qc$ a\r!+-8QEF`ޤI- Q6|CkbU:p ՕjjcX7g/zo J$߲HQ{@Eoh;ΕY2oQ+uo,ccBVnzq_[t7=PF&f@Ea#δȅjjei, $ݝ5ޝի~cVCW=V|e;|H/ȧCG썪,+豮kr.Y>w: λ=PFA0r/92~Vc j`NNF$^v4Ooa|eHcs&8KWޚP009s;"$`lci^/C4bu#ad$<9sLM#<^I$MCiLM'sZ,h*#'Fqya鋘.d'~h+j?,ȝOJ<ڡ8i3qP8q7큞2L&V QD(= ʩB>+sSkx*O<>{yŎ̿=](+k,8T43| l1> x!0Yw` .TV8lANPM8/֟=!3%zW:G1cG x\Teܫ[`LPGNG8%d.8 WALC[F>&LJ.ܧT?@Q#A'!O@bN!aAfA2QZÂ8V8l,A5/ m*%!A/U(ϙ RA̒<>>(T]IQ0A-]9(肻=5vjʪ*CQu|> uZy;6{%)sŅ };E7y\^lԙP2>Zu9`߲Q6)|!F6`sNbDz nQ!w.yKw 󃌘Rݿ[ rX}%z'bT`⬍ Z`=y &A!As,@D^u?`XE,͐G_x^ /i8<2%VAuvQS`#PG繋9;$+pFFVl`0<)+Aes,^:cT(@ {'$aowQfӞ,`5P31 ֥Dn-ZJ /6EE֩Ƹ~Vc* F/{G1p/" ,-cNPMA9)I(r/%Dg!Fq(ڲ _>oY j:%qu\(" "`˃>':1:LT[},ƺ֮oU;N >+Q/֟=\.3:3)q2-Cwvb5@C20t\6w\Rj̕ :Cqg,13wvb oh"+MFBZ,YL :q2ocqƱH+k(.}9-b|eBnM*zi4cȡ8W:I,*SӰ eAz+C Dޝj[p8|Xo㓽޼:(9Me#WQVXZ*h5?1gF Ӛg;>E7Թϴh1gH'U4M9|ټM 3׈ǃ>b[~ii.g1Aх̮Ӎ#4KKg ,{XraZ>\n8UV5+k:Q7.s)=dOhsF#`*&<6r+F;HuF8ȯ' y8Kr; -rs(*jUdB&$h9{W/{KZ ,$h9j8 ۷rWF'p yֺPeJ;.iVjMrs'0HT2.g/{[+WTTPg/>^K[,+!J j/0uo*F,9'/@Paw/{>E(<+-T+gzF] ^ -46rSU5&NdICr{ß3F!pfS`"< g|B4j.V%? m*8ms,$*pmȡ?Lcq;ާY՟U4{7AD`!So7|g/U@,T;ǟY%{g <4+dmvra0P67HHi !?+W(BxY] Ira0P89{A?u=V)uu'Tp BR CHANGES TO SH.COM MADE IN VERSION 2.0 COMMAND-LINE HISTORY AND EDITING The principal change is the addition of a 20-line command history capability. The up- and down-arrow keys, as defined in the TCAP, allow you to move backward or forward through the history list. Several other new commands were added to the input editor. A complete list of commands is: Line editor: ^S or left-arrow key defined in TCAP : move left 1 char ^D or right-arrow key defined in TCAP : move right 1 char ^E : erase to [E]nd of line ^U : delete char [U]nder cursor ^W : delete [W]ord forward ^X : kill entire line, OR EXIT if at beginning of empty line DEL : delete char before cursor TAB : move to end of line, or if at end, to beginning ^A : move to beginning of previous word ^F : move to beginning of next word ^H : delete char before cursor ^Q : [Q]uote next char--insert char literal ^C : reboot if at beginning of line. History control: ^P or up-arrow key defined in TCAP : previous command line ^N or down-arrow key defined in TCAP : next (old) command line. ^R : previous command line (same as up-arrow) Cursor keys are evaluated first, and may override others if they generate a corresponding code. For instance, on '83 Kaypros the backspace key will move left rather than deleting left. Use of CP/M standard line editing keys (^E, ^U, ^R, & ^X) will, it is hoped, reduce other such conflicts. Note that the ^P printer toggle does not work inside this input editor; the keystroke now defaults to another function. As with version 1.1, the line will scroll within a window determined by the screen width of the currently defined CRT device. Up to 127 characters may be entered, and the editor is always in "insert" mode. Unlike the ^R command in version 1.1, recall of a previous command line results in the entire command line being replaced rather than just the portion following the cursor. The command history is kept in a file named SH.HST. This file is placed in the "ROOT" directory or in the directory at the bottom of the path if "ROOT" doesn't exist. Within the file, each command line occupies its own length plus one byte for a trailing null. The entire list of commands is terminated by a ^Z. Since the maximum number of characters per line is 127 and the maximum number of lines is 20, this file will never be more than about 2.5k long. In practice it will generally be quite a bit smaller, and thus will load quite quickly. DELETION OF INTERNAL COMMANDS The three internal commands supported by SH have been deleted in version 2.0. This was done with the expectation that, except for "shexit", they were little used. A new means of exiting--^X in the first position of the line--is now used. Another reason for removal of the internal commands was to save code space. Without these commands, and with other code-compressing changes that have been applied, version 2.0 is only 31 records long. This compares very favorably with version 1.0, which was 28 records, and is much smaller than version 1.1. Reducing the size relative to 1.1 not only saves disk space but also reduces loading time. In compensation for the loss of the internal commands, the SH shell now has considerably greater capabilities, yet retains its basic function of expanding shell variables. On top of this, it is small and fast. Dreas Nielsen 16713 SE 12th St. Bellevue, WA 98008 (206) 746-2782 (voice)  File: SH.HIS History of SH.COM Authors: Richard Conn, Dreas Nielsen Current version: 2.0 ---------------- Version: 1.0 Date: 3/4/84 Original release by Richard Conn. ---------------- Version: 1.1 Date: 3/6/87 Modifications: 1) Fixed failure to resolve a variable reference at beginning of line. 2) Looks in directory named "ROOT" for shell variable file, and at root of memory-based path if no such named directory exists. 3) Doesn't automatically install SH.VAR if another variable file is defined. 4) Stays resident if no following commands on MCL. 5) Allows quote and apostrophe characters to delimit a shell variable name. 6) Includes a scrolling line editor responding to cursor keys, and with recall of the previous command. Modified by: Dreas Nielsen 16713 SE 12th St. Bellevue, WA 98008 ---------------- Version: 2.0 Date: 5/1/87 Modifications: 1) Fixed a couple of defects introduced in v. 1.1. 2) Removed the internal commands "shcmt", "shecho", and "shexit". Exiting is now accomplished by striking ^X at the beginning of an empty line. 3) Added several new commands to the line editor. 4) Added a 20-line history, using up- and down-arrow keys (as defined in the TCAP) to move backward and forward. The history list is kept in the file SH.HST in the "ROOT" directory or at the bottom of the path if the "ROOT" directory doesn't exist. 5) Added a field for an alternative load address, for use under ZCPR3.3. 6) Added brief help invoked by "SH //". 7) Compacted and speeded up code throughout. Modified by: Dreas Nielsen 16713 SE 12th St. Bellevue, WA 98008 (206) 746-2782 ----------------  Z3ENV* '͂" " " " * " ͜No Shell Stacks *RM p~ SH v.2.0 ]/  (̓ ~ (C !} xAw#y 08r#0w_ ( # !} !͜Shell Installed ' p*  ͜Shell Stack Full͜Shell Stack Entry Size͜Variable expansion and command history shell. Syntax: SH [shfile.ft] ! !q>w#{w#zw͜; ~2 o (~(2#~2#~2#~26xAqy (>:q~# (q͜>> >h : ݖ=w?>w h * 6~ ͜ ;(/(ͮ ͜ CL Ovfl ì>2 ! " !͸* ~% h #( | =* " #~%!  > w ~( #~# +͸( ͳ! | * ~: =2 * s#r#" ѯ=: <2 * +V+^" G!~((#xx<>;:,.=-_'" EDCMDS bbg~~> ;* " " www` (%!(G+R%^#V!Pͦ* ͢>͟5 8ͬG>^ͬxͬ~G>͆ͦ* " " W* ~ݾ0~# +F+~ 0(" ͦ~(#" * ~(ʹ 0~ݖ0 22 ~ݾ 2͑ͦ[ * #" R|(~͑#W* ~ݾ(@~( 0O~ݖ > ͬ%y͑#~ݾ0> ͬ~ݾ0> ͬzB͆* ~#" ~~ [ S S W[ S  0͆͆~ X #* ++" 2 * ~( +~ (; 24* ~; (g>g>GɷO~ݾ* ~GyHw# ͮ4W* ~]Tw# 5W;g* ~ ( ;(ͮͮ (;(ͮ;; (;(; (; ͮ* [ R}* ~Gx`G* ^#V* w# ͦ~1 pw* " " Wͦ~1 ww* w" " * w[ Ru~ݖ1 * 6̓ ~ (q  q * ;* ~ #ѯ=ѯ * ;>2[ S * ~(}|x2 2 :  * &^#V>* ^KBR" * C ͻ\-͒t(8* >[ R%($D!\[ % ͂K ͻ: G: <2 [ S : : #=2 * ++" #O͟4W>22\] C ͻ\6-B %  (͂K ͻ!  OG> ͟A>̓͟ !z  ͜ Exiting Shell͕ SH VARA00:SH ROOTPSH HTͺ ~  #~+ ##= 2s t I :s 7 ` C C E C ` 3 > W #I > W Q x2| y2} ͏ G~Aڑ 2| # ʾ g  ʫ g #”  ͬ O 3 2} :| G:} O=ͺ   #   OG=~w!1 =_.:,<>ȷ;ɯ~ ` #g d Wyd d d d d O7 y70 q ?7 ʑ ~#ˆ Ü O~ X6y w#´ ê >> 5 ~#  E ~  = x  K+x$ w+   w#( >>>͝ ###~>h h ͝ w͝ ###w͝  xo|g~͝  xo|gw ½ G~ # ø ' ~; >; ~#  6ø  s#r~# =*+^#V*+~#fo~#fo~*+/F##x_*+.~*+$~#fo|*+~!ځ =ɯ*+G*+,~*+"~#fo*+-~*+^#V#~ѷ*+(~ XG*+^#V#~#Fѷ*+ ^#V|$~$$G#~#$ O "+w U>VUUO͒ʏ͢~#  3  çç çyʧ çyG>GO> qçd 0q _y)){y0q{ qqqq q q>^q@q*. mO*. 2 2ô:_:_ Y X OG~ww#H W-H"W-r# x-~#CV7+~#CVGCO !nj#`y  a{_*}ʎ$.ɒ++~2*"2! 2"22)2*2+!2 Ä>B*2:*w#:+w#:)w#"26&:(h1:Q;<2Q;:Q;=2Q;6767