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]
[color=blue]> o Discussions of programs and languages (e.g. the brain-damaged 'records'[/color]
[color=blue]> in Action.[/color]
[color=blue]> 3. Let's whine about Action; I love the fact that it is in ROM, that it[/color]
[color=blue]> compiles fast, and *is* fast, but why can't you have pointers in records?[/color]
[color=blue]> I hate using CARDs. And why are all variables static? Just try writing[/color]
[color=blue]> recursive programs! (I know you can use arrays, but I want to be[/color]
[color=blue]> difficult) >-{[/color]
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.