[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: ProDOS Error Message re "NO BUFFERS AVAILABLE"
KP <kjpmail@gmail.com> wrote:
> On May 26, 1:31 am, Toinet <antoine.vig...@laposte.net> wrote:
> > On 26 mai, 04:25, KP <kjpm...@gmail.com> wrote:
> >
> > > I am getting a "NO BUFFERS AVAILABLE" error message after moving a
> > > binary game from a DOS 3.3 floppy to a ProDOS hard disk, whenever I
> > > try to either "-" or BRUN the game.
> >
> > > Any way to resolve this?
> >
> > Hi There,
> >
> > when you type in the CATALOG command under Basic system, what do you
> > get below Endfile (or length)?
>
> ENDFILE for that program is 30704. Does that help at all?
Only partly.
What is the auxiliary type (load address) of the BIN file?
If it isn't trying to load in the text screen area (below $0800), the
next most likely explanation is that it is trying to load just beneath
DOS 3.3 (e.g. up to approximately $95FF). In BASIC.SYSTEM there is a
permanently allocated buffer from $9600 to $99FF, and any open file
requires allocating another 1 KB buffer below that ($9200 to $95FF).
You can't BLOAD a file directly on top of a file I/O buffer. If I'm
right, then the game is simply too big to load under BASIC.SYSTEM.
Given a length of 30704 = $77F0, if the auxiliary type (load address) is
($9200 - $77F0) = $1A10 or higher, this would explain the problem.
Assuming it is a "run forever" game with no interaction with
BASIC.SYSTEM and no way out short of Ctrl-Apple-Reset, one option may be
to turn it into a self-relocating SYS file. These must be loaded at
$2000, and BASIC.SYSTEM would have the same problem loading it as the
file is too big. It could be loaded directly by ProDOS as the initial
.SYSTEM file, or from the QUIT code program launcher.
If you want to be able to run it from BASIC.SYSTEM as a SYS file, two
files would be needed: a SYS file as a front-end loader, and the game
itself in a second file.
The SYS file would relocate itself into the top of the area normally
occupied by BASIC.SYSTEM (e.g. $BC00-$BEFF), initialize some pieces of
the ProDOS global page (e.g. the memory map), then load the game at its
actual run address (e.g. using an I/O buffer at $B800) and transfer
control to it.
--
David Empson
dempson@actrix.gen.nz