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 --------