
		Matt Dillons Shell program.
		--------------------------

INSTRUCTIONS FOR 2.04M (MANX only) by Steve Drew
------------------------------------------------

    	Steve Drew at	ENET:    CGFSV1::DREW
    			ARPA:    drew%cfgsv1.dec.com@decwrl.dec.com
    			USENET:  {decvax|decwrl}!cgfsv1.dec.com!drew    

VERSION RELEASES:
----------------
	2.04M	09-Dec-86 Steve Drew  :Few bugs fixed, Commandline Editing
				      :& Function key support added.
				      :Changed my version to (M)anx.
	2.02A	20-oct-86 Steve Drew  :Implemented Matt's new features also
				      :now 16 bit compilable.
				      :(Same functionality as Matt's 2.03)
	2.01A	27-sep-86 Steve Drew  :Major conversion from Lattice > MANX
				      :and added more commands/features.

Background:
----------

	This shell program was written by Matt Dillon. 
        I have added the 'A' varient on the end of the version to 
        distinguish between Matt's version's and my modified
	version for Manx C. This is actually equivalent to Matt's version
	2.02 with additional commands/features and will work only on
	Manx C.
	To compile:
		   Make (return).
		   should be about 32000 bytes.
	Enjoy.

Version 2.04M notes: (new features)
	
	- 	This version runs UNDER WORKBENCH 1.2 ONLY.

	-	COMMAND LINE EDITING
		---------------------------------------

		- Command line can be upto 255 chars.
		- Inserts and deletes are handled correctly over
		  multiple screen lines. The program will keep track of
		  the line width should the window get resized.

		KEY DEFINITIONS:
	   	  	Up Arrow    Recal previous commands
		  	Down Arrow  Recal commands
			Left Arrow  Move cursor about command line.
			Right Arrow  "     "      "      "      "
			^A	    Toggle insert/overtype mode.
			^D	    EOF
			^E	    Put cursor at end of text.
			^R	    Retype current line.
			^U	    Erase entire line.
			^X	    Erase entire line.
			^Z	    Put cursor at start of text.
			f1 - f10    Execute command if variable exists.
			F1 - F10    More commands (Shifted f keys).
			Help 	    invokes help command

	- Using Function keys.
		
		- Just set the variable f1-f10 or F1-F10 (shifted) to
		  the desired string.

		  eg. 
			$ set f1 "dir -s df0:"			

	- New variable _width shows the number of collums in the window.
	  and will change automatically if the user resizes the window.
	
	- option -c when starting will invoke the rest of command line
	  and exit. (Thanks Dave.) Usefull to do stuff in the background.
	  e.g. run shell -c copy c:foo ram:;echo done.

	- pwd gets run as part of cd so as to set _cwd to full path name.

Version 2.02A notes:

	- For new features of 2.03 see Matt's instruction.txt appended below.

	- All Matt's new feature for 2.03 converted to manx. And uses c.lib.

	- Redirection appears to work fine. Even on bcpl programs.
	  Let me know if you find otherwise.
	
	- new varible	_path	for setting search path for external
	  cmds. Shell does not use the 1.2 PATH feature but you may
	  specify a search path by setting this symbol.
		e.g.
			$ set _path "ram:,c:,df0:c/,df1:c/"

	- Auto requesters are turned off during searching for cmds
	  except when an explicit path is specified eg. df0:c/sort.

	- Command list is sorted so that help displays readable output.

	- A few bugs fixed

	- Changed all i/o routines that used MY.LIB written by Matt to
	  use standard i/o or Amiga routines, since Manx is so efficeint
	  with standard i/o routines compiling all those library functions
	  did'nt gain anything as it does with Lattice.
	
	- Dir command rewritten to allow options:
		-s short mutil(4) collum display of files
		-d directorys only
		-f files only
		
		also added date and time stamp for files, and
		for wild carded directories always tells you what
		directory you are listing.
		
	  the directory command will also not expand files that are
 	  directories if as result of a wildcard expansion. eg:
	  'dir df0:*'  and 'dir df0:' will give same results
	  expect previously if df0:* was specified all subdirectories
	  of df0: were expanded also.
	  (to list the subdirectories: 'dir df0:*/*')
				
	- Wildcarding now matches upper or lower case.	
	
	- Command will no longer abort if one of the arguments which
	  has wild card does not expand.

	- run program >redir will work properly as
	  long as you run command is called 'run'. With the lattice 
	  version the command got parsed like run >redir program, so
   	  all you got in you redir file was [CLI n].
	
	- CD command rewritten. Will change any input such as cd df0:work
	  to be Disklabel:work, this makes it real easy when switching
	  disks arround. Also checks if file is a directory.
	  Note: if you for some reason do a CD dir (note upper case so
	  	will run c:CD command) it will change you current dir
		and will be handled properly.

	- On startup you current directory is determined and set.
	
	- Added %full and volume name to devinfo.

	- copy command added. (faster that COPY under 1.1 workbench)
	  format:
		copy dir/file		copies file to current dir
		copy work/* [to] new    copies all files from directory work
					  to directory new
		copy foo foo2		copies foo to foo2
		copy >nil: * [to] df1:  copies all files in current directory
					  to df1: & logs it to nil:
	  (at present it will not create directorys or do a ALL option like
	   c:COPY does).
	
	- ps command added. gives the folling info:
	  
	  Proc Command Name         CLI Type    Pri.  Address  Directory
 	   1   SHELL                Initial CLI   0      97b0  Stuff:shell
	   2   sys:c/clockmem       Background  -10    2101a8  Workdisk:
	   3   c:emacs              Background    0    212f58  Stuff:shell
	   4   sys:c/VT100          Background    0    227328  Workdisk:
	
	   Address is the addres of the task, directory is the process
	   currently set directory.


	BUGS
	----

	- Unfortunatley due to the bcpl enviorment and fexecv function
	  using the c:EXECUTE command to run a script file doesnt work
	  under shell.
		workarround:
			Either do a 'run execute filename'
		   or
			use the script file capabilities of shell
			eg. 	    'source filename'

	- Not really a bug  but, if you want to pass a quote to an
	  external command dont forget to use the overide '\' character
		eg.   Relabel df0: \"Blank disk\"


