Differences
This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
sst-6809:memory_latch_select_256b [2025/05/23 19:44] – [Memory Latch Select 256b] robert | sst-6809:memory_latch_select_256b [2025/05/23 19:55] (current) – [RAM Mapping Note] robert | ||
---|---|---|---|
Line 37: | Line 37: | ||
E.g. if you write a 1 to EF00 it will duplicate the upper bank in the lower bank. | E.g. if you write a 1 to EF00 it will duplicate the upper bank in the lower bank. | ||
+ | ==== RAM Mapping Note ==== | ||
+ | |||
+ | :!: | ||
+ | |||
+ | Be sure you have RAM switching code in ROM before switching to RAM pages 2 or higher. | ||
+ | |||
+ | ROM code should include functions to: | ||
+ | * Register-only Block Copy from RAM pages 0 and 1 into pages 2 and higher | ||
+ | * The block copy must be split in two halves: | ||
+ | * The first half gets the source byte into a register (only) | ||
+ | * Switch the RAM page page but let the Program Counter fall through into the next ROM instruction which is the start of the second half of the copy | ||
+ | * The second half takes the register and posts it into a destination address of the destination RAM page | ||
+ | * Then switch BACK to the source RAM page and fall through into the next ROM address which continue copying from source RAM page | ||
+ | * Transfer the Program Counter into the destination address of the destination RAM page to start running code from | ||
===== Upper 32K ===== | ===== Upper 32K ===== | ||