Megalextoria
Retro computing and gaming, sci-fi books, tv and movies and other geeky stuff.

Home » Archive » net.micro.atari » Action! Brain damage
Show: Today's Messages :: Show Polls :: Message Navigator
E-mail to friend 
Return to the default flat view Create a new topic Submit Reply
Action! Brain damage [message #85919] Mon, 17 June 2013 17:20 Go to previous message
mroddy is currently offline  mroddy
Messages: 25
Registered: September 1985
Karma:
Junior Member
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.
[Message index]
 
Read Message
Read Message
Previous Topic: New Atari machines (home UNIX at last?)
Next Topic: WANTED: DOS 3 to DOS 2 conversions
Goto Forum:
  

-=] Back to Top [=-
[ Syndicate this forum (XML) ] [ RSS ] [ PDF ]

Current Time: Mon Jul 22 22:25:13 EDT 2024

Total time taken to generate the page: 0.00286 seconds