[net.micro.apple] Followup to 'In Defense of Apple Pascal'

dcn@ihuxl.UUCP (11/07/83)

	I'm almost glad I made the mistake of switching NEW() for RELEASE()
	or I would not have seen how many other people use Apple Pascal.
	I don't like everything about it, but it a good implementation
	for a micro as old as the Apple II.  Some more info on Apple
	Pascal can be found in old net.micro.apple messages.

					Dave Newkirk, ihnp4!ihuxl!dcn

mark@cbosgd.UUCP (11/08/83)

The mark and release functions of Apple Pascal are straight out of
UCSD Pascal, which in turn our straight out of the P2 compiler.
They are no substitute for dispose, but are sufficient
to implement the compiler (and, indeed, are more convenient for
it than dispose).  Basically, the heap is treated as a
stack (allocated from the other end of memory).  A pointer is
kept to the top of the stack (e.g. next available place to allocate).
new grabs a hunk from the stack and increments the pointer.  Period.
No hunting from a free block.  mark saves the pointer.  release
restores the pointer from the saved value.  In effect, release frees
all memory allocated since the last mark.  This is convenient for
freeing the symbol table in a block structured language.  (I can't
remember, but I suppose the marks must stack.)