MiNT library for Heat-n-Serve/Sozobon C, patchlevel 44

This is a port of Eric Smith's MiNT library to Heat-n-Serve C, based on
Dave Gymer's original port.  It replaces the files dlibs.a, dstart.o,
and libm.a from the original Heat-n-Serve distribution, and includes a
simple termcap library.

If you are currently using HSC v1.33i or earlier, I _strongly_ recommend
upgrading to at least 1.40 before attempting to compile this library.
The make and ar from previous versions of HSC don't understand ARGV and
hence can't cope with the literally hundreds of command-line arguments
that the makefile tries to throw at them.

As of version 30, you will need extra tools to build the HSC MiNTlibs.
At the site where you found this archive, look for the following
archives:

    mntincXX.zoo
    	The library header files for version XX (currently 44).  If
    	you're using the MiNTlibs at all, you should already have these.
    mnthlbXX.zoo
    	The binary distribution of the MiNTlibs.  You will need this for
    	the floating-point library libm.a, which is no longer distributed
    	with this archive.
    cpp.zoo
	A stand-alone C preprocessor.  Extremely useful in its own
	right, since HSC doesn't have the -E option.
    mit2mot.zoo
	A MIT-to-Motorola assembly code translator.  This and cpp will
	be used to convert the .cpp files in the MiNTlibs distribution
	to .s files that HSC can deal with.

WHAT'S HERE:

    readme
    	This file.
    inistack.s
    linea.s
    lmalloc.s
    sozolong.s
    sozulong.s
    termcap.c
    makefile
    	HSC-specific source files.
    ps.c
	Source for a process listing utility, as an example of MiNT
	programming.

WHAT TO DO WITH IT:

0)  Obtain all of the files listed above.

1)  Copy libm.a from the MiNT binaries distribution to the directory
    where the MiNT libraries will live.  Install the MiNT header files
    if you have not already done so.  Put cpp.ttp and mit2mot.ttp
    somewhere where make can find them.

2)  From the main source directory, delete all files beginning with '_',
    as well as alglobal.c, linea.c and inistack.c.  Copy all the .s
    files from this directory, as well as termcap.c and makefile, to the
    main source directory.

3)  Edit osbind.h from the MiNT include distribution.  Find the macro
    definitions for trap_14_wllwwwwwlw(), spanning lines 1318-1358 and
    1465-1509 (or thereabouts).  Delete every scrap of white space you
    can from these macros.  Otherwise, they overrun HSC's static line
    buffer.

4)  Replace the gemfast.h from the MiNT distribution with the gemfast.h
    from the Heat-n-Serve distribution (the GEMfast that comes with
    HSC is almost certainly more recent than the header file from the
    MiNT distribution).

5)  cd to the main source directory and type `make'.  Go watch a
    movie. ;)

    NB.  You may have noticed that the makefile has a `short_names'
    target.  You should not need to invoke this, unless you want to
    build a 1.40-compatible library with a version of HSC that supports
    long external identifiers (v2.00 and up).

5a) If you have old versions of make and ar, the actual creation of
    dlibs.a should have stopped with an error message.  This is because
    these old versions simply can't cope with the hideously long command
    line necessary to build dlibs.a.  At this point, you'll have to
    build dlibs.a manually, a few files at a time.  Consult the makefile
    to see what files need to be added and the necessary commands to add
    them.  Then type `make' again to build the rest of the distribution.

6)  Copy dlibs.a, dstart.o and libtermcap.a (or libtermc.a) to your MiNT
    library directory.  Also copy aesfast.a and vdifast.a from the
    Heat-n-Serve distribution.

HOW TO USE IT:

Couldn't be simpler -- just set the environment variables LIB and
INCLUDE to point to the appropriate directories and go.  In fact, you'll
probably never need to use the Heat-n-Serve dLibs package again; I
recommend keeping it around, though, just in case.  Should you ever need
to switch back temporarily, just set LIB and INCLUDE accordingly.

DISCLAIMER:

What, you were expecting an ironclad guarantee of performance? ;)  Okay,
while I have built several large programs with this library with no
problems, I can't guarantee that there aren't still a few bugs lurking
around in the code.  Caveat emptor, use at your own risk, and all that
jazz.  And if you should happen to find a bug, please notify me at the
address below.

Have fun!

Scott Bigham				dsb@cs.duke.edu

[Here's Dave's original readme file.  Little if any of it still applies,
 but hey, credit where it's due...]
==========================================================================
Here's my (dodgy) port of MiNTlib to Sozobon C.

This has not been fully tested, and there is no floating point support,
because I have no interest in that direction.

I used the Sozobon C 2.0 source as distributed, built under GCC 1.39 as
a UNIX hosted cross compiler, to do my original port (which was
released as part of pl18 of the library). Later versions were done with
Ian Lepore's 1.33i release. I used GNU make; your mileage under any
other make may vary. I did carry on using a version of ar compiled with
the GCC, since only a version compiled with the MiNTlib understands
about long arg lists, such as the enourmous list of modules given.

To build this library, delete all the *.s and *.cpp files from the main
lib directory, and also linea.c, which clashes with linea.s. Then copy
all the files in the sozobon directory into the lib directory, and hit
make (some adjustment of the makefile may be necessary).

You might look on this as a farewell gift to MiNT, since I'm awaiting
delivery of a brand new 386DX-33 PC to try Linux out on; if it works,
I'm unlikely to use my ST much any more other than for soundtracking
and archival purposes (though I will try to build a cross-gcc, to keep
an eye on how MiNT progresses).

-- Dave Gymer (dpg@Cs.Nott.AC.UK)
