

                            Special Support Library

                                  Version 5.1

               (c) 1993-1995 Martin Mares, MJSoft System Software

================================================================================


Preface
=======

   The Special Support Library, accompanying utilities and their documentation
are Copyright (c) Martin Mares, MJSoft System Software, Prague, Czech Republic.

   This  archive  can  be  freely  redistributed as long as all of its files are
included   in   their   original   form  without  any  additions,  deletions  or
modifications  (excluding addition of other README-style files and icons) and no
more  than a nominal fee is charged for its distribution.  All copyright notices
in  the  programs and accompanying documentation files must remain intact.  It's
especially  forbidden  to add various '.displayme' files and BBS advertisements.
This style of distribution is generally known as FREEWARE.

   The only one exception to the previously mentioned distribution rights is the
library  code  itself  (ss.library),  which may be distributed separately in any
kind  of software package (including commercial one), but the documentation must
inform the user that SS.library has been developed by MJSoft System Software and
that there is no warranty on it.

   Special  permission is given to Fred Fish to distribute this program on his
"Fish Disks".

   This  software  is  provided  "AS  IS"  without  warranty of any kind, either
expressed  or  implied.   The author is not responsible for any damage caused by
it.


About SS Library:
=================

   The Special Support Library is a small library written to simplify
development of small assembly programs. These programs usually contain
small routine, which is preceeded by some sort of startup code for argument
parsing, WB startup, opening of required libraries and similar actions.
With SSLib, you include only a significantly less piece of code for loading
of the library (this startup is usually generated by the "start" macro in
ssmac.h).

   But SSLib is very useful not only for small programs, but also for large
projects, because it offers a very powerful object tracking mechanism based
on ideas of the arp.library.

   There are listed some features of SSLib:

    (a) The library currently doesn't contain any support of calling from
	high-level languages (C, Pascal, Modula, Oberon, False, ADA, RTL/2,
	PL/M, AMOS, Forth, AmigaBasic, GFABasic, REXX, PostScript, TeX,
	Metafont, DBase 6.0, DML, ISM, Logo, GCL, Prolog, SmallTalk,
	BCPL, Lisp and ...).

    (b) SSLib requires kickstart V37 or higher, but you may call OpenLibrary
	with older kickstarts. In this case, SSLib will display an alert
	informing the user about this fact and will refuse to open.

    (c) SSLib uses A5 to store base of its variables. But it doesn't steal
	you an address register, because you can simply use this register
	to index your own BSS variables (special variables defined by SS
	(see SS.i) are stored BELOW A5, your own ABOVE A5. A5 itself
	points to pointer to SSBase, therefore you can obtain this value
	needed for calling of SSLib with minimal overhead).

    (d) SSLib installs its own exception handler to all tasks using StartupInit.
	This exception handler displays contents of all the registers and
	allows the user to select if he wants to Suspend the program, Reboot
	the system or to try to Abort the program (it will automatically
	free all tracked resources, but it could result in a crash if there's
	something rotten in the system).

    (e) SSLib performs parsing of arguments (from both CLI and Workbench).

    (f) ssmac.h contains a powerful set of universal and special macros which
	simplify writing of programs. (But these macros might have problems
	with some compilers. If you fix some of these problems, send me
	updated version and I will include it in the next release of SSLib.)

    (g) SSLib offers fast memory pool management mechanism allowing quick
	manipulation with small chunks of memory. The tracking functions
	use their own memory pool to increase execution speed.

    (h) Tasks can define their own low-memory handling routine, which is called
        whenever some memory allocation fails (this feature is supported by
        exec V39+, but this works under V37+; these routines are called by
        library expunge code, therefore the library itself must use alternate
        OpenCount).

    (i) Example programs are not included in this archive. They are distributed
	separately.

    (j) Provides powerful mechanism for writing of pure (re-entrant) programs.
	If you use the standard variable mechanism (see [c] and StartupInit doc)
	instead of storing data in the program itself (in DATA/BSS hunk), the
	program should be pure.

    (k) Gives you high-speed buffered I/O routines (significantly faster than
	those in dos.library!).

   For other information, see the rest of this file, SSLib.doc, SS.i, ssmac.doc
and all text files in this archive.

Future plans:
=============

   - Some sort of string parsing mechanism.

   - Callability from high-level languages. I'm preparing a GCC interface, but I
have no time to finish it.

   - Some support of graphics (MUI object generator?) - will be included
in separate library.

   - Many other things including better macro set.

Files in this archive:
======================

History		list of modifications
SSLib.doc	library doc
SSMac.h		standard set of support macros
SSMac.doc	description of the macros
SS.i		library include file
SS.library	the library itself
SSDiag		small diagnostic utility
SSDiag.doc	description of SSDiag
TExtract	text hunk extractor
TExtract.doc	description of TExtract

Final words:
============

  Thanks to SinSoft, PCSoft and Short Software for many good suggestions and bug
reports.

  Send all comments and bug reports to <mjsoft@k332.feld.cvut.cz>.

