[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Garbage Collection



In article <3jvj7j$bo4@acme.freenet.columbus.oh.us>,
dalloff@freenet.columbus.oh.us (Dave Althoff) wrote:

> Thanks for the help!  I guess I also got an explanation of why I got a
> BUFFERS NOT AVAILABLE error trying to open one file under ProDOS.  I
> must've had another buffer open for something, and didn't have room to
> create another on account of all the strings...
> 
Probably not; BASIC.System knows how to move the strings to make room for
additional buffers. The more likely problem is that you tried to load into
(or a buffer tried to expand into) "protected" memory.

Briefly (and if my own memory serves correctly), protected memory is
memory above (Applesoft and/or BASIC.System) HIMEM, below LOMEM, or marked
as used in the ProDOS system bitmap. Incidentally, the text screen is
protected to keep yahoos from stomping on the sysetm screenholes, so you
can't BLOAD text screens directly there. (I mention this because I've seen
programs that run into this problem when trying to convert them from DOS
3.3 to ProDOS.) It's been a while since I played with the limits, so you
may need to experiment a bit to see if this is a problem.

Regarding buffers: BASIC.System lowers HIMEM (and the strings below it) by
1K when creating a file buffer (even a transient one). If there isn't
enough room for the strings between HIMEM and LOMEM, BASIC.System would
probably also give you the NO BUFFERS AVAILABLE message.

-- 
===========================================================================
Dennis Doms     | "Into this night I wander, it's morning that I dread
ddoms@tyrell.net|  Another day of knowing of the path I fear to tread..."
                | Sarah McLachlan ("Possession", _Fumbling Toward Ecstasy_)