Relay-Version: version B 2.10 5/3/83; site utzoo.UUCP Posting-Version: version B 2.10.2 9/3/84; site enmasse.UUCP Path: utzoo!watmath!clyde!cbosgd!ihnp4!mhuxn!mhuxb!mhuxr!ulysses!allegra!bellcore!decvax!genrad!panda!enmasse!mroddy From: mroddy@enmasse.UUCP (Mark Roddy) Newsgroups: net.micro.atari Subject: Action! Brain damage Message-ID: <335@enmasse.UUCP> Date: Mon, 4-Feb-85 17:13:17 EST Article-I.D.: enmasse.335 Posted: Mon Feb 4 17:13:17 1985 Date-Received: Sat, 9-Feb-85 04:37:21 EST References: <345@snow.UUCP> Organization: Enmasse Computer Corp., Acton, Mass. Lines: 49 [squelch] > o Discussions of programs and languages (e.g. the brain-damaged 'records' > in Action. > 3. Let's whine about Action; I love the fact that it is in ROM, that it > compiles fast, and *is* fast, but why can't you have pointers in records? > I hate using CARDs. And why are all variables static? Just try writing > recursive programs! (I know you can use arrays, but I want to be > difficult) >-{ Really the problem is that for fast code Action doesn't use a stack frame- on a 6502 you only get 256 bytes of stack so if you want truly recursive procedures you have to use the hardware stack to hold pointers to a software stack. C65 does this, but as we all know, that language is truly brain damaged, and SLOOOOOOWWWW. Not only won't Action! let you have pointers in records, but I ran into the following bug: ;* excuse syntax errors, I can never switch from c to action too well CARD ARRAY dur(4) BYTE count init_dur(); FOR i=0 to 3 DO dur(count) == -1; if (dur(count) = 0) then do_something(); fi; OD This code was supposed to decrement card values in the card array dur, except that the compiler got all confused... refused to byte reverse values in dur before decrementing. It didn't matter what I used to point into the array.... same results. I fixed it by calling a function to perform the decrement, i.e. decr(dur,count)!!!!! WORSE YET- this was entirely context sensative!!!!! Similar code worked fine in different situations. Add this to the inability of the compiler to operate on cardinal values greater than 0x7fff, and you have a piece of software that should never be used by anyone. What really bugs me is that OSS has no intention of fixing any of this sh*t. And if they do... you can bet that it won't be the free upgrade that it should be.