TomXP411 wrote: ↑Wed Mar 26, 2025 10:58 pm ... With the 65C816's memory model, you get a series of 64K banks, with separate code and data banks. Not only that, but the most common data transfer and flow control opcodes have 24-bit address modes, which allow you to simply read from a far bank without needing trampolines or other complicated bank control mechanisms. ...
Yes, this is the BLOCK/BUFFER approach I would have in mind. A 4 deep "least recently used" stack of 1KB Blocks, in the 64KB dataspace, using Long address modes to read or write directly between the buffer that is immediately addressable by a 16bit Forth, and the location of the BLOCK in the 16MB dataspace. Then the 15 1MB "big block files" of the Block Space can be loaded from or saved to the SD card, and also 3 256KB "small" block files.
Now, the "natural" "medium" model for a 16bit Forth is not 256KB but rather 192KB ... 64KB for the IO, stack, one direct page per task, internal assembler support routines, etc, 64KB for codespace, including the linked lists of names of defined words, 64KB for dataspace (including block buffers). So there's 64KB unclaimed there, but I'm sure that uses for it will emerge.
With the Gen1 memory model, I was going to have a separated name-header model, to increase the code density of code space, with the names in High RAM, underlying support code in 8KB modules, to reduce the dictionary footprint in main memory, and Block Buffers in High RAM copied into and out of block buffers through the HRAM Bank ... like I said, a 3-ring circus.
Instead, I aim to finish up the xForth I started as a minimal 65C02 model, and then focus on working toward a proper 65816 Forth.