aboutsummaryrefslogtreecommitdiff
path: root/doc
diff options
context:
space:
mode:
Diffstat (limited to 'doc')
-rw-r--r--doc/dynamic-screens.txt27
1 files changed, 16 insertions, 11 deletions
diff --git a/doc/dynamic-screens.txt b/doc/dynamic-screens.txt
index fada83e..63d2f7c 100644
--- a/doc/dynamic-screens.txt
+++ b/doc/dynamic-screens.txt
@@ -28,12 +28,16 @@ Goals:
loads of RAM.
- Able to use the extra 6.4K you get if you boot without DOS (straight
- from the FujiNet).
+ from the FujiNet), or any space between MEMLO and $2000 (if you boot
+ a DOS with a small memory footprint). *Maybe* also include whatever
+ space there is between the end of the client's code/data and the
+ start of cc65's stack (basically, the entire "heap" area). Whether
+ or not this happens depends on how large the client code gets: if
+ it's less than 1K free, it's not really worth the trouble.
-- Able to use 3K of the RAM under the OS in an XL/XE machine. This would
- be at $D800-$E3FF: the floating point pack and the font. If we could
- think of a use for another 1K, it's available at $CC00 (the international
- font).
+- Able to use 4K of the RAM under the OS in an XL/XE machine. 3K of this
+ would be at $D800-$E3FF: the floating point pack and the font. Another
+ 1K is at $CC00 (the international font).
- A *single* executable that works on all of the above (no special
fnchatxe.xex for extended RAM), meaning it has to detect the
@@ -106,14 +110,15 @@ Free Line - a line that isn't being used by any screen. All the
sets up the pointers in all the lines. Closing a screen releases
all its used lines into the pool's free line list.
-Pool - A (possibly non-contiguous( region of memory available for lines.
+Pool - A (possibly non-contiguous) region of memory available for lines.
Each pool has a bank number, a count of unused lines, and a linked
list of the unused lines in the pool. Pool 0 is in main memory,
is always at least 16K, and can be up to 26880 bytes in size (using
- 4K of under-the-OS RAM for an XL/XE, plus the space from $0700 to $2000
- if DOS is not booted). The other pools consist of entire banks, 16K
- apiece, one per bank. Each screen is created in one pool and cannot
- be moved to another pool.
+ 4K of under-the-OS RAM for an XL/XE, plus any space from MEMLO
+ to $2000 if DOS is not booted, or if a DOS with low MEMLO is
+ booted). The other pools consist of entire banks, 16K apiece, one
+ per bank. Each screen is created in one pool and cannot be moved to
+ another pool.
Initialization:
@@ -340,7 +345,7 @@ just hypothetical code (final implementation may look different).
/* if each pool is 16K, that's 512K, not bad. however, overhead. maybe
limit this to something like 20 (128K extended = 16, plus the big
- pool in main bank, plus the potential smaller pools at $0700 and
+ pool in main bank, plus the potential smaller pools at MEMLO and
$d800. */
#define MAX_POOLS 32