As seen in the figure above, the memory map is divided into different areas that store different kinds of information. The areas are only large enough for the information that they actually contain, and if you insert some more at a given point (for instance by adding a program line or variable) space is made by shifting up everything above that point. Conversely, if you delete information then everything is shifted down. Some areas as you can see include an address below and a name above them whereas others only a name. The areas beginning at an address, signify fixed points in memory such as the Display and Colour Files, the System Variables and the Channel Information. The first three fixed points are required while the fourth (Channel information) is an unintended consequence! Let's see why:
The Display and Colour Files are as we've seen in previous chapters, legacy areas. The display hardware expects them at these addresses and cannot move inside the memory map. They contain the standard Layer 0 display memory and parts of Layer 1 with the rest appearing as needed and managed by NextZXOS.
The System Variables on the other hand are the system's directory; they contain most information regarding both NextZXOS and NextBASIC and provide information on the boundaries between the rest of the memory areas on the memory map. In other words following the discussion above, if, say, the last program line changes, it's stored within the area pointed to by the system variable PROG. Some of these locations are marked by the names above the areas in the diagram. A complete list follows in the next chapter. Note, that these are NextZXOS variables and not NextBASIC variables, so typing these names means nothing to NextBASIC.
Now you probably noticed that we said most information regarding NextZXOS and NextBASIC and not all information. That's because the information that's held in System Variables (or SYSVARS) deals with legacy applications and compatibility. NextZXOS maintains even more unmovable information elsewhere, tucked away in protected banks and manages it there.
Below, let's examine some of the memory areas portrayed in the figure above, as it's helpful to generally know how things are laid out in the memory map.
The Display and Colour Files areas store the bitmap for the Layer 0 (and part of the Layer 1) picture. As we saw in chapters 14 through 16, it is rather curiously laid out, so you probably won't want to PEEK or POKE in it. The upshot of all this is that if you're used to a computer that uses PEEK and POKE on the screen, you'll have to start using SCREEN$ and PRINT AT instead, or PLOT and POINT.
The System Variables area, contains various pieces of information that tell the computer what sort of state the computer is in. They are listed fully in the next chapter, but for the moment note that there are some (called CHANS, PROG, VARS, E_LINE and so on) that contain the addresses of the boundaries between the various areas in memory. These are not NextBASIC variables, and their names will not be recognised by the computer.
The Channel Information area contains information about the input and output devices as seen in Chapter 20.
The NextBASIC Program and Variables areas contain your program and its variables, organised in standard data structures we will examine in the following section.
The calculator is the part of the NextBASIC system that deals with arithmetic, and the numbers on which it is operating are held mostly in the Calculator Stack area.
The Spare area contains the space so far unused.
The Machine Stack area is space reserved for the CPU stack.
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.