Note that internally NextZXOS and NextBASIC utilise a combination of all possible banking methods according to what's needed at which time, and you should not rely on this information as a definitive guide on how the system behaves at all times.
A "Special paging mode" (also called allRAM mode or CP/M mode) is enabled by writing a value with the LSB set to the +3 Memory Paging Control (1FFDh). Depending on the 3 low bits of this value a memory configuration is selected as follows:
| D2/1FFDh | D1/1FFDh | D0/1FFDh | RAM Page combinations (Slot1/.../Slot4) |
|---|---|---|---|
| 0 | 0 | 1 | 0, 1, 2, 3 |
| 0 | 1 | 1 | 4, 5, 6, 7 |
| 1 | 0 | 1 | 4, 5, 6, 3 |
| 1 | 1 | 1 | 4, 7, 6, 3 |
allRAM paging
This mode is selected by default when you select the CP/M Menu from the More… submenu of the Startup menu, or you run the dot command .cpm.
MMU Based memory management is much simpler to use. It only requires a write to the appropriate MMU Next Register to change the 8K bank occupying a specific 8K slot in the 64K address space (See the previous chapter for details on Next Registers). The MMU registers begin with slot 0 in NextREG 80 (50h) and end with slot 7 in NextREG 87 (57h). For MMU0 and MMU1 only, the ROM can be paged in by selecting 255 (FFh) as a bank number. The default values for the MMU Registers are listed in Chapter 23 and correspond to the normal default memory mapping of the 128K Spectrums.
Layer 2 can also be overlaid on top of the MMU memory map in the bottom 16K or 48K in a Read-only or Write-only mapping. The Write-only mapping, for example, would mean that memory writes to the bottom 16K go to Layer 2 but memory reads come from the MMU mapping as normal. The bottom 16K is normally occupied by the ROM so this Write-only mapping would allow NextBASIC programs to continue to function (the ROM is a read-only program) while allowing POKEs to write into the Layer 2 screen. It is an easy way to gain access to 32K in a single 16K address range.
The Layer 2 mapping is controlled by bits in the Layer 2 Access Port 4667 (123Bh). These bits select among 16K or 48K mapping, Read-only or Write-only, and whether the active Layer 2 screen is mapped or a second Layer 2 buffer (Shadow Screen) is mapped. Layer 2 and its second buffer can be located anywhere in RAM and their starting 16K banks are programmed into NextREG 18 (12h) and 19 (13h) respectively.
The Layer 2 mapping does not have to be used for Layer 2 graphics only; it can be used as a third banking mechanism to access memory more generally.
The most recent change to the memory map, whether that is by Standard or MMU methods, always applies. Each time a change is made to the memory map using the Standard mechanism (a write to port 7FFDh, DFFDh, or 1FFDh), the affected MMUs are changed immediately. For example writing to port 7FFDh will change MMU0 and MMU1 to FFh to make sure the selected ROM is visible and MMU6 and MMU7 will be changed to reflect the selected 16K RAM bank.
As seen above, the ROM can be paged out by enabling allRAM mode, or by using MMU based memory management. This may cause problems as some programs may assume
ZX Spectrum Next User Manual, 3rd Edition (ISBN 978-1-5272-5496-1), written and illustrated by Phoebus R. Dokos. Copyright © 2020-2024 Phoebus Dokos / SpecNext Ltd. Licensed under CC BY-NC-SA 4.0. This is a transcription and can contain errors; check any doubt against the printed page.