Relay-Version: version B 2.10 5/3/83; site utzoo.UUCP Posting-Version: version B 2.10.1 (Fortune) 6/7/84; site foros1.UUCP Path: utzoo!watmath!clyde!burl!ulysses!mhuxl!houxm!ihnp4!zehntel!hplabs!sdcrdcf!sdcsvax!akgua!mcnc!decvax!decwrl!amd!fortune!foros1!jr From: jr@foros1.UUCP (John Rogers) Newsgroups: net.micro.cpm Subject: Re: C Compiler for CP/M-80? Message-ID: <242@foros1.UUCP> Date: Wed, 18-Jul-84 05:53:47 EDT Article-I.D.: foros1.242 Posted: Wed Jul 18 05:53:47 1984 Date-Received: Fri, 27-Jul-84 06:35:22 EDT References: <680@ihuxk.UUCP> Lines: 50 Keywords: C/80 Hi. I've been using C/80 (version 3.1, under CP/M) for a while, so I guess I'll toss out a few comments. Language: more or less full K&R, with some documented restrictions: no typedefs, no longs or floats (unless you get MATHPAK), no bit fields, no parameterized macros, no #line, no declarations within nested blocks. Big complaint number one: no parameterized macros. This turns out to be more useful than I thought it would be. It also has an undocumented restriction: structures can't contain pointers to structures which haven't been declared yet. Library: Incomplete. It doesn't even have !!!!!! If you want to use "stdin", you have to declare it yourself. No open() or close(), read() and write() can only do multiples of 128 bytes, no lseek() unless you buy MATHPAK (not sure if you get it then, but it would be easy to write). Big complaint number two: because of the order which subroutine arguments are pushed onto the stack (leftmost first), routines which get passed multiple parameters are implemented with a "kluge" (their word) which involves #defines to call TWO routines, one of which saves information about the top of the stack, for the other. This affects every routine which calls printf, for instance. Quality of compiler and code produced: No complaints. I haven't run anything big enough to get a feel for how fast or how large the generated code is. Overall impression: Still a bargain for $50. What this compiler really needs are (1) a full preprocessor (which there are a couple of public domain implementations in the works), and (2) and complete runtime library (which is also in the works, although it looks like it won't be public domain). I hope this helps. If you have any questions or whatever, just drop me a line. See ya! -- JR (John Rogers) ...ihnp4!fortune!foros1!jr also fortune!jr and proper!jr