[net.micro] Computer Innovations' C-86

LCAMPBELL@dec-marlboro.ARPA (05/13/84)

From:  Larry Campbell <LCAMPBELL@dec-marlboro.ARPA>

I just received my upgrade to version 2.10 of Computer Innovations'
C-86 compiler for MS-DOS the other day.  I've now converted several
major programs and have this to report:

CI-C86 is a solid product.  It's complete, reliable, and well documented.
I don't like badmouthing products publicly, so I won't mention some of the
other C compilers I've tried, but CI-C86 beats them all.  Some of them
are faster, some generate better code, but they've all got one major
defect or another (nonstandard library, poor customer support, no library
source shipped, or bugs).  CI-C86 is reliable (CRUCIAL -- I WON'T
tolerate bugs in my compiler), well-documented, and you get sources
to the library.  The library is very complete;  I've ported several
Unix programs with little trouble.

There is one minor bug I noticed in the manual that I should document
here:  the description of the loadexec call is wrong (loadexec loads
and optionally runs a program as a subprocess).  The manual says:

	int loadexec (filename, param, funcode)
	char *filename;
	struct pblock *param;
	int funcode;

What it really wants is:

	int loadexec (filename_offset, filename_seg,
		      param_offset, param_seg, x, funcode)
	char *filename_offset;
	int filename_seg;
	struct pblock *param_offset;
	int param_seg, x, funcode;

This is using the small model (I haven't tried big model yet).  The
parameter named x is just a placeholder;  it's never referenced.
You can use segread to get the values for filename_seg and param_seg;
typically you'd use the contents of SS if filename and param are
in automatic storage.  (It so happens that SS=DS in the small model,
but you probably can't count on this.)

These opinions are my own and do not reflect those of my employer.

- Larry Campbell
   --------