[net.micro] Action!

parker@rochester.UUCP (Clint Parker) (09/20/83)

From: Clint Parker  <parker>
There has been several messages about ACTION! here lately and I felt that
some comments of my own were in order, so here they are.

First I would like to clear up some issues.  The plan is to sell a copy of
the run-time library for about $30 for NON-commercial use.  The $300 (which
is about right) would be the fee for commercial use.  The run-time library
allows you to create stand-alone object files.  Another message claimed that
you had to do "count ==+ 1" and that "count = count + 1" woudn't work.  This
is simply NOT true, either statement will work.

As to the cartridge being "chock full of bugs and rough edges", I won't say
that it has no bugs, but I don't think it is that bad.  Below is a list of
all the known bugs (I won't address the rough edges, although many of them
have been fixed as well), all of which have been fixed (although I'm not
sure OSS is shipping the new version yet).  There might be more, but these
are the only one reported so far (I'm doing this from memory so I might
leave one out, but I don't think I will).

    a)  Division where the divisor is in the range of 128 to 255 doesn't
always generate the right answer.  The chance of the answer being wrong
increases the closer you get to 255.  FIX:  OSS has a debugged division
routine which you can include at the beginning of your program to correct
the problem.

    b)  UNTIL statements with compound conditional expressions involving
AND don't work.  FIX:  Don't use AND in an UNTIL expression, if you need to
use an IF ... THEN EXIT FI before the OD to terminate the loop.

    c)  User defined TYPE field of type CARD or INT are not correctly addressed
by pointer variables unless they are the first field of the TYPE.  FIX:  Don't
use CARD or INT fields with record pointers (sorry folks).

    d)  Record (user defined TYPEs) variables and pointers don't work in
conditional expressions.  FIX:  Again, don't use them.

    e)  ReadBlock doesn't work with sizes greater than 255.  FIX:  Don't use
ReadBlock for big blocks of memory.


Now I don't want to hear any comments about the manual (me personally that is),
I was not the one who wrote it.  Yes, I know that it has a lot of errors in it,
but most of them have been corrected in the manual OSS is now shipping.  If you
know of any errors not listed here, please let OSS (or me) know so that they
can be fixed.  Every error reported to OSS so far has been fixed and I am sure
that all future bugs will be handled as well.

As for the problem involving not being able to tell how much memory is left, I
tend to agree that it would be nice to have a command that tells you how much
memory is left, but there wasn't enough memory left (in the cartridge) to do
this.  Oh well, you can roughly get an estimate of how much memory is left by
typing '>? $491^+$FFFE' (without the 's and >) in the monitor and looking at
the last number of the line printed.  This is actually a better estimate of the
memory left since it is how much memory the compiler thinks it has (minus 2K
byte for the symbol table which is located just below HIMEM).  There may be
more memory left since the Editor can fragment low memory during editing.

I am interested in hearing any comments (pro or con) about ACTION!.

Thank you,

	- Clint

BillHolland.es@PARC-MAXC.ARPA@sri-unix.UUCP (09/27/83)

What 
is ACTION ? is it like a BASIC COMPLIER>


BILLHOLLAND.ES

sumit@rochester.UUCP (Sumit Bandyopadhyay) (10/01/83)

Hi there,
	Action! is probably one of the nicest thing that ever  happened
to Atari hackers. The system includes an editor, a compiler and a small
monitor program. The whole thing fits in a 16k bank switched cartridge.
You don't even need a disk drive to run the system.
	The language is like a small subset of C, but FAR better than
things like SmallC etc. Action! generates real machine language code
in one and a half pass! That's right, no assembler and stuff. Neither
does it generate a series of function calls like in SmallC, most of the
code generated is inline. Exceptions are things like division which the 
hardware does not support directly. But the best part of the story is that
the compiler is incredably fast. If you are compiling from memory, for
medium size programs you will hardly be able to time the compilation.
The code that is generated is about 2 to 3 times larger and twice as slow
as assembly code generated by an experienced programmer.
	Few of the differences with respect to some subsets of C:
		. The syntax is different
		. The language does not work on a stack.( which makes sense,
		because the 6502 gives you only 256 bytes of stack). Hence
		no recursion.
		. The language is statement oriented as opposed to expression
		oriented.
		. No semicolons(;) at all.
		. Statements are like IF <boolean> THEN .. ELSE .. FI
				      WHILE <boolean> DO ... OD
				      FOR ..  DO ...  OD
				etc.
		. There is EXIT from the innermost loop.
		. You can put in machine code inside Action! programs.
		. You have the ability to deal with hardware addresses from
		inside of your program.
		. You can include source files.

	Action! also comes with a substantial library of useful functions;
which includes graphic routines and the like.

	The editor you get with the system is quite decent, and fast.

	The Action! system which includes the cartridge and the manual ( the
only average thing in the package ) lists for about $99, but mail order
places sale them for about $65.

	Sorry for the long letter.

		sumit@rochester