Newsgroups: rec.arts.int-fiction
Path: news.duke.edu!newsgate.duke.edu!nntp-out.monmouth.com!newspeer.monmouth.com!howland.erols.net!netnews.com!newsfeed.nyc.globix.net!uunet!ash.uu.net!world!buzzard
From: buzzard@world.std.com (Sean T Barrett)
Subject: Re: Z-Machine
Message-ID: <GGzBJ8.8y5@world.std.com>
Date: Tue, 24 Jul 2001 13:16:19 GMT
References: <2xn57.49227$WS4.7531669@news6-win.server.ntlworld.com> <9j9umn$klv0$1@hades.csu.net> <68067.56913$WS4.8617327@news6-win.s <tlptsqk315gn71@corp.supernews.com>
Organization: The World Public Access UNIX, Brookline, MA
Lines: 40
Xref: news.duke.edu rec.arts.int-fiction:90133

L. Ross Raszewski <lraszewski@loyola.edu> wrote:
>The advantage of these is dubious; the memory most people run out of
>is not string and routine memory, but byte-addressable low
>memory. Increasing that requires changing the address size

For the sake of arument lets suppose the former is true (the
people who have posted here giving examples apparently worked
around the low-memory limit but ran out of high memory; but
then again it would be nice if they didn't have to go to such
trickery to get around the low-memory limit)...

What exactly are people running into the low memory limit
with? I assume the primary culprit of low memory is objects,
i.e. low memory is the RAM of the z-machine, and most people
use objects not globals and huge arrays.

If so, then it may not be true that we need to change the
address size nor use segments. Segments would get clumsy
because you introduce "far pointers" which have to carry
around the segment anyway, in which case you might as well
have increased the address size.

But if most low memory is used by objects, and if object data
is always accessed via some sort of (object #, object data reference
pair), then all that needs to be done is alter the object # ->
data storage mapping so that it can address more memory.  (E.g.
if the current mapping is "object table base address + object #",
introduce a scale facor in the 'object #'.)

The one problem with this would be anything which allowed you
to refer to absolute addresses, and I suspect that the way Inform
property arrays work is by generating an absolute address for
the array and then manipulating it. But I bet this could be
worked around in a similarly straightforward way.

I'll go read up on the z-machine spec and revisit this thread
once I know more (although I'll also need to know exactly how
some Inform operations map to the z-machine).

SeanB
