[comp.sys.atari.8bit] 8 bit languages

dlm@ho3cad.UUCP (01/06/87)

Looking for a reasonable language for your 8 bit atari?  Grossed out by BASIC?
I have been using ACTION! from OSS for software development lately.  It has
been an outstanding language development environment.

My previous ATARI language experience has been BASIC, ATARI assembler,
ValFORTH, Deep Blue C, and now ACTION!.  ACTION! is by far and away the best
ATARI development environment.

BASIC and assembler need no words.  Avoid at all costs.

ValFORTH was an interesting system.  Although I would not use it for any real
project, it was a fascinating journey into threaded interpretive languages and
a good learning experience in the style of FORTH.  Since the interpreter, 
compiler, and your program live in the same run time environment, you can
modify the behavior of the compiler as your program is compiled into the
pseudo-machine language.  However, it suffered from:
	- It really wasn't as compact as is made out by FORTH enthusiasts.  I
	  was left with little space after loading alot of useful packages
	- FORTH is truly hard to read.  Western Human math just doesn't word
	  in reverse polish notation.
	- It is difficult to document.  The commentary system takes up too
	  much valuable area in each `screen'
	- It is totally incompatible with all other 8 bit software.  It cannot
	  generate programs that can be placed on any DOS file system.  I 
	  acquired a DOS like package for FORTH, but it took up much more
	  space then DOS 2.5 and DUP, leaving very little main memory
	- debugging facilities were terrible.  Since the compiler and run time
	  environment co-existed, almost any bug caused the system to hang.
	  Too bad you forgot to save some `screens' to disk :-)

Deep Blue C was an attempt to get a real compiler/linker.  It's not bad as
they go, but it turns out that the 6502 is just too primitive to compile C
for.  So this compiler actually turns out a sort of p-code anyway, hence once
again, we do not have a language that can rival assembler code.  Also, once
again, debugging facilities are non-existent.  Turn around on compiles are
very slow.  Until I got a 130XE with a ram disk to hold everything, this system
was impossible to use.  In addition, Deep Blue C did not do:
	structs
	functions returning anything but int
	strings cannot continue on the next line
	source lines must be less than 79 chars
	pointers to pointers

After all of this, and refusing to use a macro assembler, I went for ACTION!
ACTION! is easy to use since it is very C and PASCAL like.  The manual is 208
pages long and is very complete.  ACTION! has an editor, compiler, monitor, and
run time library in an 8K cartridge form (not really 8K, since it bank switches
but it does only use 8K from your RAM address space).  Being in a cartridge, it
is almost (but not totally) crash resistant.  Reset almost always gets you back
to the editor.  The editor and compiler work together.  The compiler stops on
any error, but the editor/compiler loop is so fast that this is actually
more effective than a fancy compiler that continued to give error messages.

All the language constructs are there that I feel I really need.  For example:
	structs
	arrays
	pointers (to pointers ...)
	address of (including address of functions)
	full complement of arithmetic, logical operations
	full complement of assignment, including C like =+ =- =*, etc
	defines
	16 bit signed, unsigned, 8bit unsigned
	if/then/else/elseif
	do while until for and an exit (loop) construct
	functions and procs
	generates executables in DOS loadable format
		(takes a special package to allow an executable to exist
		 without the cartridge, but it is possible)
In fact, ACTION! exists TOTALLY within the standard ATARI operating environment.

I have a program that is 5 pages long (~20 commentary) that compiles in
seconds (from the editor buffer).  Of course compile time from disk will be
dominated by disk i/o speed.  Compile from ram disk is almost indistinguishable
from compile from editor buffer.

Hope some of you find this collection of personal opinion useful.

Daryl Monge
AT&T 
Bell Labs

UUCP: ...!ihnp4!iheds!dlm
CIS: 72717,65
AT&T: 312-979-3606