[net.micro.cpm] Help! I need a better C compiler.

zadco@ssc-vax.UUCP (Rick Fairfield) (04/30/85)

Recently, I have been using the Whitesmiths C compiler (1980 version) on
a CP/M 2.2 system. I'm really unhappy with this compiler and would like
suggestions on a replacement. The only other CP/M C compiler I know of is
one called BDS (?), which I have not had occasion to use.

Here are some examples of things I hate about the Whitesmiths C and would,
therefore, like to avoid in a replacement:
	
1) The names of many (most) of the "standard" library functions are very
different than for my 4.2 bsd C compiler; many of these functions require
unusual arguments and return unusual values. Most blatant example: putfmt,
instead of printf.

2) All externals need to be initialized (yes, even pointers and arrays,
although array names can be initialized to the null pointer).

3) You can have multiple functions in a single source file but, apparently,
NOT in the file that contains main().

4) putfmt (printf) doesn't flush the buffer until a NEWLINE is issued.

5) The compiler runs in 3 passes (preprocessor plus two compiler passes)
which are invoked separately from a script; it is a VERY slow process and I
can't figure out how to make it stop if an error occurs in an early phase
(short of hitting the reset button).

6) Generally flakey implementation of I/O functions, particularly those
that perform character I/O (text).

I could go on but I think you get the idea. Any suggestions for a replacement
will be appreciated. Also, please include $ amounts if you know them.

							Thanx,
							zzzzzadco

							aka Rick Fairfield
							Boeing Aerospace Co
							206-773-1004

jp@lanl.ARPA (05/01/85)

> Recently, I have been using the Whitesmiths C compiler (1980 version) on
> a CP/M 2.2 system. I'm really unhappy with this compiler and would like
> suggestions on a replacement. The only other CP/M C compiler I know of is
> one called BDS (?), which I have not had occasion to use.

Whitesmith's C is indeed reputed to be a dog for the reasons which you list.
BDS C, on the other hand, is a pretty good product.  It is speedy and produces
relatively small object files.  But it is not a full implementation of C.
One of the things that is missing is floating point math, although there are
subroutines for doing floating point indirectly.  If you want a full implemen-
tation, I suggest you look at Computer Innovations CI-86.  It has a good
reputation and I think it supports an 8087 math coprocessor.   The ad in
May BYTE says that there is a new version available aimed at the IBM PC/AT
(Is this an irresistible trend??).  But there used to be a CPM-86 version
available.  

Contact CI at

Computer Innovations, Inc.
980 Shrewsbury Avenue
Tinton Falls, NJ 07724

Call

800-922-0169 for "further information"

or

201-542-5920 for "technical assistance"

Good luck,

Jim Potter   jp@lanl.arpa

jrv@mitre-bedford.ARPA (05/02/85)

For pointers to C compilers, get a copy of Dr. Dobb's. There were also a
number of reviews in Byte a while back. (August of some year - 1982 or 1983?).
Some of the ones you should check out: BDS, Q/C, C80, Aztec.
		   - Jim Van Zandt

jordan%ucbarpa@ucb-vax.ARPA (Jordan Hayes in his room) (05/02/85)

>>> FLAME ON <<<

The question specifically stated a CP/M 2.2 system (you even put that
part in your reply) -- CI-86 (as the name suggests... ;-) is for
CP/M-86 -- 8087 support is not going to help any on a 2.2 system.

>>> FLAME OFF <<<

Anyway, the CP/M-86'ers out there probably appreciate the tip...

Waste not, want not, so here's a question of my own : Does anyone
know if there is a version of xlisp (or any other public
domain lisp package) around? Is it on simtel20? I'm running
CP/M+ (that's 3.0 -- the one with the good-features but no software...)
on an Osborne Executive. Thanks.

/jordan
ARPA : jordan@BERKELEY.ARPA
UUCP : ...!ucbvax!jordan -or-
       sunybcs!canisius!jordan

milazzo@RICE.ARPA (Paul Milazzo) (05/02/85)

Rick:

I have both the BDS and Manx (Aztec II) C compilers for my CP/M system.
For Unix compatibility, I recommend the Manx compiler.  I have written
a fair number of programs which compile and execute without change
under both CP/M and 4.2bsd on VAXen and SUN-2 workstations.  I have
also ported, with minimal effort, several programs originally written
under 4.2bsd.

While the BDS compiler often seems to produce tighter code, I almost
always use the Aztec II compiler because it is much closer to the K&R
standard.  Manx has also recently added a number of the Berkeley
extensions such as "void" declarations.

If someone is interested, I could post a review of the Aztec II compiler.

				Paul G. Milazzo <milazzo@rice.ARPA>
				Dept. of Computer Science
				Rice University, Houston, TX

jp@LANL.ARPA (James Potter) (05/02/85)

Right you are.  Some mornings I'm not as bright as others.

ABN.ISCAMS@USC-ISID.ARPA (05/02/85)

Jordan,

Re your query for a version of xlisp... look in Volume 118 of the SIGM
Archives at SIMTEL20 - the whole volume is full of one.
That would be
micro:<sigm.vol118>give.me.it.all.you.fool

(just kidding - you gotta cwd first)

Now for CP/M 86...
Same place, same crowd, but
micro:<sigm.vol153>

Regards,
David Kirschbaum
Toad Hall
(ABN.ISCAMS@USC-ISID)

towson@AMSAA.ARPA (SECAD) (05/02/85)

Jordan - XLISP is available on SIMTEL20 in directory MICRO:<CPM.XLISP>.


Dave
towson@amsaa.arpa

shor@sphinx.UChicago.UUCP (Melinda Shore) (05/04/85)

[]
> From: jp@lanl.ARPA
> I suggest you look at Computer Innovations CI-86.  

Whoops!!  The original poster was looking for a compiler for a CP/M 2.2
system.  The C-86 compiler is for MS-DOS systems.  Perhaps there's a C-86
for CP/M-86, but this still won't run on a humble z-80.  

There are a number of reasons not to go with the BDS compiler, the primary
one being slight non-standardness.  I have the Manx Aztec C.  It's quite
standard and is rather nice to work with.  The problem with it is that it
generates lousy code (n.b. mine is rather old.  I understand newer releases
are somewhat tighter).  No discussions of CP/M C compilers would be complete
without mention of Software Toolworks' C/80.  Very inexpensive, very solid
compiler, but *very* incomplete.  I bought one two years ago.  At that time
the rather tiny library was in assembler.  I think that right now the most
appealing of the compilers is EcoSoft C.  I don't have one, but I understand
that they generate good, fast code and are reasonably K & R standard.  I
think it also supports post-K & R constructs.

Hope this helps ...

-- 

Melinda Shore 
University of Chicago Computation Center

uucp:     ..!ihnp4!gargoyle!sphinx!shor
Mailnet:  staff.melinda@uchicago.mailnet
Bitnet:	  shor%sphinx@uchicago.bitnet
ARPA:	  staff.melinda%uchicago.mailnet@mit-multics.arpa

droms@PURDUE.ARPA (Ralph E Droms) (05/05/85)

> ...  No discussions of CP/M C compilers would be complete
> without mention of Software Toolworks' C/80.  Very inexpensive, very solid
> compiler, but *very* incomplete.  I bought one two years ago.  At that time
> the rather tiny library was in assembler.  ...
> 
> Melinda Shore 

I recently purchased C/80 V3.1.  The library seems very complete, and
*C* sources are included.  The most significant limitations to V3.1
include:

	Float, double, entry and typedef keywords not implemented
	Float and long constants and arithmetic (Float and long may be
		added with the optional [$29.95??] "mathpak")
	Typedef not implemented
	Bit fields not implemented
	#line directive not implemented

    **  Function calls must have the same number of arguments as the
		called function definition.  (There is a hack to make
		[s]printf work correctly.)
	#define does not allow arguments
	Blocks: declarations are allowed only at the beginning of a
		function

For $49.95, I've found C/80 V3.1 to be a very useful tool.  My biggest
complaint is inherent in the nature of it's recursive descent
algorithm; once an error is discovered, the compiler "discovers" MANY
more errors until it gets itself resynched with the input.

					- Ralph

Ralph Droms					ihnp4!purdue!droms
445 MATH					droms@purdue.arpa
Dept. of Computer Science			droms@purdue.csnet
Purdue University
West Lafayette, IN 47906

----------

christe@rand-unix.ARPA (Chris McMenomy) (05/07/85)

The current Dr. Dobbs Journal has a clear and concise review of Software
Toolworks C/80 3.1, both the standard C compiler and the Mathpak.

--Christe