------------------------------------
nroff (TOS, Minix) v1.10 7/22/90 wjr
------------------------------------

This is an improved release of a version of nroff for both TOS and Unix
(Minix and BSD). It was written under TOS and 4BSD unix but has been
released with Minix 1.5.5 as well. Unfortunately I have no access to Minix
so I do not know if this particular version will work correctly under Minix.
It does run under both SunOS and Convex, both BSD, so i feel pretty confident
that it should run under Minix. You will need to change the makefile
regardless. I use Alcyon and my own cc(1).

Besides small bug fixes, these are some new features since v0.99 (BETA):

	- added .if command which makes it possible to make a reasonable
	  ms package

	- fixed the bug where line filling on lines containing standout
	  would not fill properly

	- added a -ms package which is not half bad

	- enhanced the -man package

Much of this works. The things that (still) don't are all the hard things:
diversions, traps, conditionals, etc. See the man pages for what is not
supported (yet). Font switching, underlining, etc. are limited to reverse
video on the screen (TOS).

There are decent man and ms packages included (tmac.an and tmac.s) which are
not perfect but then they are not half bad either. To make them better, nroff
needs diversions and traps, something that I will eventually do. They should
handle most common man tasks, though. They get installed in /usr/lib/tmac
under Minix and c:\lib\tmac under atari TOS, unless you change the location
in nroff.h. For testing, you can

	% setenv TMACDIR .
	% nroff -man file

to use tmac.an (say) in the cwd.

For porting info, look in config.h, nroff.h and the makefile. The termcap
library is used to get standout capabilites for doing bold and italics to
the screen (Minix and Unix). The TOS version has these hardwired to the
vt52 escapes. Minix and BSD have termcap(3) and S5R3 has terminfo, which I
believe also includes the tgetent/tgetnum/tgetflag/tgetstr functions for
compatibility. Note that the Sun /etc/termcap includes padding in some of
the definitions which I strip out. See main.c.

If you want to try and use nroff for printer output, the termcap library
(Minix and Unix only) looks for TERMCAP in your environment (a file) so
that you could do:

	% env TERMCAP=printer_termcap_file nroff -man file

and substitute your own file with "so" (standout) for your printer. This
assumes your system has env, but you get the idea.

The program is small enough to work under Minix. It does not have a large
stack, but does store all macros and strings in a common namespace. Look
in nroff.h for the size.

If you do hack away, I would appreciate you sending me the changes so I can
keep this centralized.

The future holds increased capabilites, though I find it pretty useful
as it is. Most man things are possible and you can do reports and resumes
and such without much problem. See the example files included as well as
the manpage sources (nroff.man, man.man, ms.man) and the macro libraries
(tmac.an and tmac.s) for more help. Most people do not write macro libraries
but rather use the predefined macros (-man and -ms) which are supported
pretty well at this point.

Things to do include:

	- support for "block" if's, i.e.

		.if condition \{\
		...
		...
		... \}

	- support for .ie/.el (if/else)

	- traps, diversions

	- vertical motions

	- two-character user number registers

	- tabs, leaders, and fields

	- hyphenation

	- environment switching

If anyone has a few spare minutes, maybe you could add these? Just kidding!


Enjoy...


-Bill Rosenkranz
rosenkra%c1yankee@convex.com

----- Appended on 7 June 1992 17:45 -----------
Linux notes:

Well to make this baby I essentially scrapped the make file and had to 
hard code the termcap related stuff for vt100, so if you wonder why
it doesnt work with anything but VT100, that's why.   The whole thing
was statically built so you shouldn't need the gcc 2.12c shared
library file.  I've tested it with the -man option (all that's really
important) and it seems to work.

If you manage to get the sources and you feel like making it again,
I did the following (which isn't the best practice but it works for me):

gcc -O6 -static -c *.c
gcc -static *.o -o nroff
strip nroff

(you can consider that the new makefile, but I'm too lazy to make one)
Remember, key phrase, it works for me.  If you have any problems, 
let me know... 

Please read the MANIFEST file to find out where things go... 

Please report any errors, comments, suggestions to:
Nathan Laredo
gt7080a@prism.gatech.edu

------ Appended on 7 June 1992 18:00 for source package ------

Source notes for Linux nroff:

As I said above, I trashed the make file... to make nroff, all you 
need to do is what's in the three lines above.  If you wish to make
a make file, feel free.  It seems to work as is, and at the moment
that's all that counts.

There are some careless things that I had to change in the source.
I hard coded the vt100 codes.  This is not good.  If you're able
to get this to work in a more general way, let me know, but it
seems at the moment linux will not support what was done for 
minix in the original sources.   I was not able to make a diff
file.  Sorry.  You probably can make one yourself though.  The
original files that I had to work with were on
wuarchive.wustl.edu somewhere in the systems/minix structure..
use archie to look for it... you'll find it as nroff-1.10p3.tar.Z.

You can make diffs from that if you want.  I don't have enough
energy at the moment to do that with exams this week.

If you have any comments, questions, or suggestions,
please feel free to mail me at gt7080a@prism.gatech.edu

Nathan Laredo
Box 37080
Georgia Institute of Technology
Atlanta, Georgia 30332

Please excuse the non-standardness of this release... it's the first.
You can find the compiled binary in nroffbin.tar.Z.

