[comp.sys.atari.st] C Compiler

MEUR021@tufts.BITNET (01/23/87)

Date: 20 JAN 87 23:58-EST
From: MEUR021@TUFTS
To: INFO-ATARI16@SCORE
Subject:C compiler


        I am planning to buy a C compiler.  Do you have any suggestion ?

jafischer@watrose.UUCP (01/25/87)

>
>        I am planning to buy a C compiler.  Do you have any suggestion ?

	Hey!  Good news for MWC users / potential users.  Remember that msg
I posted some time ago asking for news about the C Source Debugger (Csd)?
I got impatient, and phoned them on Friday, and was informed that yes, it
is under development.  I asked the guy for an estimate of the release time,
and he simply agreed with me that "within a half-year" was a good guess.
	Oh boy oh boy.
	So now I'm back to having to decide which compiler to buy.  I was
just about to pick up Megamax this weekend.  Now, if Megamax had a good
debugger...
	Also: version 2.0 of MWC (oh, that's Mark Williams C, by the way) is
soon to be released.  Some of the mentioned improvements were: new manual with
GEM documentation, automatic jump to Emacs upon compile errors, and automatic
compiling from Emacs, uh, let's see, faster compile time, more library
functions, and I forget what else.

	Now: of all the bug notices I've seen on the Net and elsewhere, 
Mark Williams seems to have been the target of the fewest.  Is MWC the most
robust compiler?   I haven't seen too many Megamax bugs listed, but here's
a few that I'm aware of (I work parttime at a computer store & fiddle with
Megamax a lot):
	- gemdos functions within 'if' statements don't work unless you assign
	  them to a variable.  I.e.,
		if (Cnecin() == 'q') exit();	won't work, but
		if ((dummy = Cnecin()) == 'q')...  will work.
	  (The reason I say gemdos functions is that other function calls
	  within if statements do work; maybe it has something to do with the
	  'trap' instruction?)
	- the '%' operation is poorly implemented.  Correct me if I'm wrong,
	  but x % n is supposed to result in an integer from 0 to n-1, right?
	  Well, it often results in a negative number.  I.e., something like
	  30000 % 11 would produce a negative number.
	- ++ is extremely poorly implemented.  Using post-incrementing within
	  a loop will sometimes result in pre-incrementing, for one thing. I.e.,
	  	for (loop = 0; loop < 10; array[loop++] = x)   ;
	  will sometimes go from 1 to 10, rather than 0 to 9.  _Sometimes_.

				- Jonathan Fischer
I THINK that I've got this straight:
		local:	jafischer@watrose
		UUCP: 	watmath!watrose!jafischer
		csnet:	jafischer%watrose@waterloo.csnet
		arpa:	jafischer%watrose@waterloo.csnet@csnet-relay.arpa
(If any of this is wrong, would some kind soul please notify me immediately?
Up until I read some 'man' stuff on addresses a few minutes ago, I knew
diddly about mail paths).

braner@batcomputer.UUCP (01/28/87)

[]

Not that there aren't any bugs in the Megamax C compiler, but in this
case the supposed bugs are NOT.

Cnecin(), like all the BIOS, XBIOS and GEMDOS functions, returns a LONG
value.  In the case of keyboard input (Bconin(2), Cconin(), Cnecin()...)
the lower word holds the ASCII code of the key, while the upper word
holds the physical key code.  For example, if 'q' is pressed, Cnecin()
returns 00100071 hex.  If you want to compare 'q' and Cnecin(), you
should write:

	if ((int)Cnecin() == 'q')...

My experiments on the modulus operator (%) and the post-increment (++)
didn't show any problems.  (If you have a SPECIFIC example, Jonathan,
tell me.)

- Moshe Braner

jafischer@watrose.UUCP (01/29/87)

In article <2139@batcomputer.tn.cornell.edu> braner@batcomputer.UUCP (braner) writes:
> ... you should write
>	if ((int)Cnecin() == 'q')...
	Woops.  My apologies, I assumed that Cnecin() was actually an int
function.  You got me there!  But wait, 

>My experiments on the modulus operator (%) and the post-increment (++)
>didn't show any problems.  (If you have a SPECIFIC example, Jonathan,
>tell me.)

	I'll try to dig up some examples, Moshe.  At one point, I was
printing out the values right where the '%' was causing me problems, and yup,
they were negative.  It was some code that worked fine on the IBM PC (Lattice)
and PDP-11 compilers at work, but wouldn't work on Megamax on the ST.  I ended
up using floating point to work around it.
	The '++' thingy is more obscure, but it was definitely
happening once.  At least once.  Again, it was something I'd written at work
which wouldn't work on the ST.  I'll look for the code and post it if it's
still lying around on a disk somewhere.  I suppose (meekness and humility
emanating from your screen here...) that I was wrong in posting bug reports
without some cold hard code to back up my claims.  Unsubstantiated claims
like that border on slander, right?  Like, I'm dead meat, right?  Lawsuit
city... No!  It was a Unix daemon, not me, who sent that message!
	...And, of course, once I post the code, someone (probably Moshe)
will point out the obvious error on my part...  No, seriously, I'm pretty
darn sure about these two errors.
	I'll look up those two code examples & post 'em pronto.
-- 
				- Jonathan Fischer 	(jafischer@watrose)
		or:   	watmath!watrose!jafischer
		or:   	jafischer%watrose@waterloo.csnet
		or:  	jafischer%watrose@waterloo.csnet@csnet-relay.arpa

MCCABE@MTUS5.BITNET (02/24/89)

Date:    24 February 89, 01:31:18 EST
From:    Jim McCabe                                     MCCABE   at MTUS5
To:      INFO-ATARI16 at SCORE.STANFORD.EDU
Subject: C Compiler

My thanks to everyone who responded to my request for information
about the available C compilers!

Oddly, almost every piece of mail I received followed the form,
"I own MWC, which is great, but you'll probably want Laser C,
which I hear is also pretty hot."

Laser C looks like the right choice for me personally too, but it's
interesting to find so many MWC owners and so little Megamax users.

                                                Jim McCabe
                                                MCCABE @ MTUS5.BITNET