 MS-DOS Shell Version 2.1	README				December 1992

 MS-DOS SHELL - Copyright (c) 1990,1,2 Data Logic Limited and Charles Forsyth

 This code is based on (in part) the shell program written by Charles
 Forsyth and is subject to the following copyright restrictions:

 1.  Redistribution and use in source and binary forms are permitted
     provided that the above copyright notice is duplicated in the
     source form and the copyright notice in file sh6.c is displayed
     on entry to the program.

 2.  The sources (or parts thereof) or objects generated from the
     sources (or parts of sources) cannot be sold under any circumstances.

    $Header: /usr/users/istewart/src/shell/sh2.1/Release/RCS/ReadMe,v 2.1 1992/12/14 11:14:32 istewart Exp $

    $Log: ReadMe,v $
	Revision 2.1  1992/12/14  11:14:32  istewart
	BETA 215 Fixes and 2.1 Release

	Revision 2.0  1992/04/13  17:40:33  Ian_Stewartson
	MS-Shell 2.0 Baseline release

	
________________________________________________________________________________

This is an implementation of the Unix Shell for MSDOS.  As far as possible it
is compatible with the System V.4 program sh(1) with ksh(1) extension.  The
following differences are noted:

1)  Background or asynchronous commands are not supported under MSDOS.  Some
    support is provided under OS/2, but it is not as full as UNIX.  You can
    only run one command and not a pipeline in background.

2)  Certain internal commands which have no equivalent MSDOS or OS/2 supported
    functionality support (ulimit, time etc) are not provided.

3)  Command hashing and accounting are not supported.

4)  Some of the ksh functionality has not yet been implemented or made ksh
    compatible (command line editing for example).

5)  The Shell uses all variables starting with a ~ (tilde) internally and will
    not allow you to display them.  I don't think this is a difference from
    the user's view, just internally.

The Shell has been tested mainly under MSDOS 3.3 and 4.01, and OS/2 1.3.  But
has also been run successfully on MSDOS 5.0 and OS/2 2.0.  It has exposed some
shortcomings in the C6.0 compiler and MSDOS library.  As such, using C5.1 and
its library are prefered when re-building the shell for MSDOS.

The following enhancements have been made for the MSDOS environment.  These
enhancements are described in the appropriate section of the manual pages.

1)  Under MSDOS, the Shell will swap itself out to one of the following:

    - Expanded memory
    - Extended memory
    - Disk (this is the slowest)

    The swapping is controlled by the shell internal command swap.  If
    swapping is enabled, the shell only uses 3K of memory whilst a child
    process is executing.

    Note: Swapping to Extended memory is probably the most dangerous unless
	  you have an XMS memory manager available.  The shell requires the
	  XMS manager to support the version 2 XMS specification.

2)  History processing has been added.  It is not ksh compatible - more csh.

3)  Command line editing has been added.  A configuration file (sh.ini) allows
    the Command Line editing keys to be tailored to the users requirements.
    It is not ksh compatible.

4)  The command line prompt can be programmed to display 'useful' information.

5)  The shell uses Unix format file names (ie slashes and not backslashes) to
    delimit directories.  Some programs require certain environment variables
    to be in MS-DOS format (using backslashes).  The msdos or typeset -H
    commands allows these variables to be marked so that they are set correctly
    when the environment for a program is set up.

6)  The format of the command line which the shell passes to a program is
    configurable between normal, indirect files and environment variables
    (see SH.1).  A version of stdargv.c which supports the indirect file
    format (and wildcards from a normal command line) is included.

7)  Wild cards on drives (ie echo *:*.c will echo all the C files in the
    current directories of each drive) are supported.

8)  Full Interrupt 24 processing has been added.

9)  Filename completion has been added.

10) Alternate command interpreters are supported in shell scripts a la
    Unix V.4.

11) A number of OS/2 internal commands (start, detach) have been addded.

12) Significant parts of the shell have been re-written this release 1.6.4.

13) The Notes file describes the fixes and changes between Release 2.0 and
    2.1


The following Bugs are known to exist in the Shell.

1)  Interrupting the MSDOS version via Control-C can cause the shell to hang.
    I have been unable to track the cause of the problem down.  It appears to
    occur if the interrupt takes place between the start of the swap process
    and the completion of the load of the new application.  I cannot trace
    it using CodeView and may need an ICE system which I don't currently
    have access to.  Any fixes gratefully received.

2)  The Shell is not 8-bit clean (to be fixed in a later release).

3)  The escape character is not handled correctly in double-quotes (to be
    fixed in a later release).

4)  I may have mis-interpreted the functionality of either the UNIX version
    of sh or ksh (tell me about it).

I apologise in advance for bugs 2 and 3 which I had intended to fix in
release 2.  However, they a major changes which require understanding of
the part of the shell I least understand and I have not be able to devote
the time to do so.

The shell was built using Microsoft C 5.1 and MASM v5.1 in large model mode
for MSDOS and Microsoft C6.0 for OS/2.

In order to rebuild this program, you need the following library functions
(I normally compile and load them into my library so that they are always
available, particularly the stdargv function).

1)  The DIRECTORY(3) functions 
2)  The STDARGV(3) function - see earlier
3)  The GLOB(3) function, but only if you intend to use STDARGV other that
    with the shell.

The sources for all these are included with the Shell source.

In addition, the version of open in your library must pass the O_NOINHERIT bit
on the MSDOS kernel.  The Microsoft C v5.1 library (and possibly the v6.0) does
not pass this bit on to the MSDOS open System call.  I fixed this using CodeView
to find where the library function masks off the bottom 2 bits.  Extracted the
object from the library and patched mask from 0x03 to 0x83 in the object and
reload into the library.  No Problem.  The Patch.Lib document describes the
process in more detail.

You can do want you like with this software as long as you don't sell it or
remove the Copyright notices in the sources or object.

If you have any problems or want to let me know about any enhancements you
have made (which could be included in a new general release), you can contact
me at

    Data Logic Limited
    Queens House
    Greenhill Way
    Harrow
    Middlesex, HA1 1YR
    UK.

    Phone : +44 1 863 0383
    E-Mail: istewart@datlog.co.uk

Note:
    Unix is a registered trademark of AT&T Bell Laboratories
    Microsoft, MSDOS, MASM and CodeView are registered trademarks of Microsoft
    Corporation
    OS/2 is a registered trademark of Internation Business Machines Corporation

Acknowledgements:

This program is based on ideas, code or parts of code developed by:

    David Korn and Steve Bourne (the original ideas)
    Charles Forsyth (original source for the MINIX Shell program)
    Erik Baalbergen (original source for the MINIX test program)
    Paul Falstad (original source for the maths functions from GNU zsh program)
