<!-- PDF page 229 -->

## Chapter 22 – IN, OUT and the Next Registers

We can instruct the processor to read from and write to memory by using **PEEK**, **POKE** and their variants. For all the possibilities, examine *Chapter 23 – The Memory*. The processor itself does not really care whether memory is ROM, RAM or even nothing at all; it just knows that there are **65536** memory addresses, and it can read a byte from each one, even if it's nonsense, and write a byte to each one, even if it gets lost because the address is read-only. In a completely analogous way, there are also **65536** *hardware* addresses, called I/O ports (Input/Output ports) that are separate from memory. These are used by the processor for communicating with attached devices like the keyboard or the display, and they can be controlled from *NextBASIC* by using the **IN** function and the **OUT** statement. There's a number of I/O ports, specific to the ZX Spectrum Next which control its advanced functions; they too, are accessible with **IN** and **OUT**, but two of them, are also accessible via a special dual statement/function, called **REG**.

### IN and OUT

**IN** is a function like the simplest form of **PEEK**:

**IN** *port*

It has one argument, the hardware address *port*, and its result is a byte read from that port. **OUT** on the other hand is a statement like a simple **POKE**:

**OUT** *port, v*

which writes value *v* to the hardware address *port*.

#### Hardware address decoding

How the address is interpreted depends on the hardware in the computer and attached devices. In previous versions of the ZX Spectrum line of computers and especially in legacy peripherals, many different port addresses mapped to the same device. This is called *partial decoding* and happened because some address bits were ignored in the hardware to save on cost. As a consequence, entire ranges of port addresses were reserved by individual peripherals. This made it hard for new peripherals to find non-conflicting ports to use and, in reality, many did not and only managed to use ports that didn't conflict with the most popular peripherals. The situation was somewhat mitigated by the fact that only a couple of peripherals could be connected to the older ZX Spectrum machines at once, due to electrical limitations. Today, where modern ZX Spectrum implementations pack many devices into their hardware, this port conflict problem returns with renewed urgency, as any pair of devices with conflicting port addresses are not compatible with each other.

The ZX Spectrum Next *fully decodes* port addresses for new peripherals (meaning it does not ignore any address line), but because a lot of the hardware it contains is based on existing devices, those must continue to be partially decoded. In order to best understand the issues at hand, and in the table that follows which contains all available port addresses on the ZX Spectrum Next, it is best if we approach them as written in binary. That way we can easily show which bits are being ignored by a specific peripheral. Each hardware address is 16 bits wide, which we shall call (using **A** for address):

<table>
<tbody>
<tr><td>A15</td><td>A14</td><td>A13</td><td>A12</td><td>A11</td><td>A10</td><td>A9</td><td>A8</td><td>A7</td><td>A6</td><td>A5</td><td>A4</td><td>A3</td><td>A2</td><td>A1</td><td>A0</td></tr>
</tbody>
</table>

Here **A0** is the 1st bit, **A**1 the 2nd bit, **A2** the 3rd bit, **A3** the 4th bit and so on. The table that follows shows which bits are important for the corresponding device. For example, the ULA only needs A0 to be **0** in order to respond, which means it will respond to all **32768** even port addresses and not just its official port **254** (**FEh**). The byte read or written has **8** bits, and these are often referred to (using **D** for data) as:

<table>
<tbody>
<tr><td>D7</td><td>D6</td><td>D5</td><td>D4</td><td>D3</td><td>D2</td><td>D1</td><td>D0</td></tr>
</tbody>
</table>

<!-- PDF page 230 -->

Here is a list of the port addresses used with their decoding. For the reason mentioned, only the ULA has an even port address and every even-numbered port **IN** will result in the ULA being read.

| R | W | A15 | A14 | A13 | A12 | A11 | A10 | A9 | A8 | A7 | A6 | A5 | A4 | A3 | A2 | A1 | A0 | Port (Hex) | Description |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| ■ | ■ | [colour: pale pink] | [colour: pale pink] | [colour: pale pink] | [colour: pale pink] | [colour: pale pink] | [colour: pale pink] | [colour: pale pink] | [colour: pale pink] | [colour: pale pink] | [colour: pale pink] | [colour: pale pink] | [colour: pale pink] | [colour: pale pink] | [colour: pale pink] | [colour: pale pink] | 0 | FEh | ULA |
| ■ | ■ | [colour: pale pink] | [colour: pale pink] | [colour: pale pink] | [colour: pale pink] | [colour: pale pink] | [colour: pale pink] | [colour: pale pink] | [colour: pale pink] | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | FFh | Timex video, Floating bus |
|  | ■ | 0 | [colour: pale pink] | [colour: pale pink] | [colour: pale pink] | [colour: pale pink] | [colour: pale pink] | [colour: pale pink] | [colour: pale pink] | [colour: pale pink] | [colour: pale pink] | [colour: pale pink] | [colour: pale pink] | [colour: pale pink] | [colour: pale pink] | 0 | 1 | 7FFDh | Memory Paging Control |
|  | ■ | 0 | 1 | [colour: pale pink] | [colour: pale pink] | [colour: pale pink] | [colour: pale pink] | [colour: pale pink] | [colour: pale pink] | [colour: pale pink] | [colour: pale pink] | [colour: pale pink] | [colour: pale pink] | [colour: pale pink] | [colour: pale pink] | 0 | 1 | 7FFDh | Memory Paging Control (+3/Next only) |
|  | ■ | 1 | 1 | 0 | 1 | [colour: pale pink] | [colour: pale pink] | [colour: pale pink] | [colour: pale pink] | [colour: pale pink] | [colour: pale pink] | [colour: pale pink] | [colour: pale pink] | [colour: pale pink] | [colour: pale pink] | 0 | 1 | DFFDh | Next Memory Bank Select[^p230-1] |
|  | ■ | 0 | 0 | 0 | 1 | [colour: pale pink] | [colour: pale pink] | [colour: pale pink] | [colour: pale pink] | [colour: pale pink] | [colour: pale pink] | [colour: pale pink] | [colour: pale pink] | [colour: pale pink] | [colour: pale pink] | 0 | 1 | 1FFDh | +3 Memory Paging Control |
| ■ |  | 0 | 0 | 1 | 0 | [colour: pale pink] | [colour: pale pink] | [colour: pale pink] | [colour: pale pink] | [colour: pale pink] | [colour: pale pink] | [colour: pale pink] | [colour: pale pink] | [colour: pale pink] | [colour: pale pink] | 0 | 1 | 2FFDh | +3 FDC Status |
| ■ | ■ | 0 | 0 | 1 | 1 | [colour: pale pink] | [colour: pale pink] | [colour: pale pink] | [colour: pale pink] | [colour: pale pink] | [colour: pale pink] | [colour: pale pink] | [colour: pale pink] | [colour: pale pink] | [colour: pale pink] | 0 | 1 | 3FFDh | +3 FDC Control |
|  | ■ | 1 | 1 | 1 | 0 | [colour: pale pink] | [colour: pale pink] | [colour: pale pink] | [colour: pale pink] | 1 | 1 | 1 | 1 | 0 | 1 | 1 | 1 | EFF7h | Pentagon 1024K Memory Paging Cntl. |
| ■ |  | 0 | 0 | 0 | 0 | [colour: pale pink] | [colour: pale pink] | [colour: pale pink] | [colour: pale pink] | [colour: pale pink] | [colour: pale pink] | [colour: pale pink] | [colour: pale pink] | [colour: pale pink] | [colour: pale pink] | 0 | 1 |  | +3 Floating bus |
| ■ | ■ | 0 | 0 | 1 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 1 | 1 | 1 | 0 | 1 | 1 | 243Bh | NextREG Select |
| ■ | ■ | 0 | 0 | 1 | 0 | 0 | 1 | 0 | 1 | 0 | 0 | 1 | 1 | 1 | 0 | 1 | 1 | 253Bh | NextREG Data |
| ■ | ■ | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 1 | 1 | 0 | 1 | 1 | 103Bh | I²C SCL |
| ■ | ■ | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 1 | 0 | 0 | 1 | 1 | 1 | 0 | 1 | 1 | 113Bh | I²C SDA |
| ■ | ■ | 0 | 0 | 0 | 1 | 0 | 0 | 1 | 0 | 0 | 0 | 1 | 1 | 1 | 0 | 1 | 1 | 123Bh | Layer 2 |
| ■ | ■ | 0 | 0 | 0 | 1 | 0 | 0 | 1 | 1 | 0 | 0 | 1 | 1 | 1 | 0 | 1 | 1 | 133Bh | UART Tx |
| ■ | ■ | 0 | 0 | 0 | 1 | 0 | 1 | 0 | 0 | 0 | 0 | 1 | 1 | 1 | 0 | 1 | 1 | 143Bh | UART Rx |
| ■ | ■ | 0 | 0 | 0 | 1 | 0 | 1 | 0 | 1 | 0 | 0 | 1 | 1 | 1 | 0 | 1 | 1 | 153Bh | UART Select |
| ■ | ■ | 0 | 0 | 0 | 1 | 0 | 1 | 1 | 0 | 0 | 0 | 1 | 1 | 1 | 0 | 1 | 1 | 163Bh | UART Frame |
| ■ | ■ | 0 | 0 | 0 | 1 | 1 | [colour: pale pink] | [colour: pale pink] | [colour: pale pink] | 0 | 0 | 1 | 1 | 1 | 0 | 1 | 1 | 183Bh | CTC Channel 0[^p230-2] |
| ■ | ■ | 0 | 0 | 0 | 1 | 1 | [colour: pale pink] | [colour: pale pink] | [colour: pale pink] | 0 | 0 | 1 | 1 | 1 | 0 | 1 | 1 | 193Bh | CTC Channel 1[^p230-2] |
| ■ | ■ | 0 | 0 | 0 | 1 | 1 | [colour: pale pink] | [colour: pale pink] | [colour: pale pink] | 0 | 0 | 1 | 1 | 1 | 0 | 1 | 1 | 1A3Bh | CTC Channel 2[^p230-2] |
| ■ | ■ | 0 | 0 | 0 | 1 | 1 | [colour: pale pink] | [colour: pale pink] | [colour: pale pink] | 0 | 0 | 1 | 1 | 1 | 0 | 1 | 1 | 1B3Bh | CTC Channel 3[^p230-2] |
| ■ | ■ | 0 | 0 | 0 | 1 | 1 | [colour: pale pink] | [colour: pale pink] | [colour: pale pink] | 0 | 0 | 1 | 1 | 1 | 0 | 1 | 1 | [colour: light orange] 1C3Bh | [colour: light orange] CTC Channel 4[^p230-2] |
| ■ | ■ | 0 | 0 | 0 | 1 | 1 | [colour: pale pink] | [colour: pale pink] | [colour: pale pink] | 0 | 0 | 1 | 1 | 1 | 0 | 1 | 1 | [colour: light red] 1D3Bh | [colour: light red] CTC Channel 5[^p230-2] |
| ■ | ■ | 0 | 0 | 0 | 1 | 1 | [colour: pale pink] | [colour: pale pink] | [colour: pale pink] | 0 | 0 | 1 | 1 | 1 | 0 | 1 | 1 | [colour: light orange] 1E3Bh | [colour: light orange] CTC Channel 6[^p230-2] |
| ■ | ■ | 0 | 0 | 0 | 1 | 1 | [colour: pale pink] | [colour: pale pink] | [colour: pale pink] | 0 | 0 | 1 | 1 | 1 | 0 | 1 | 1 | [colour: light red] 1F3Bh | [colour: light red] CTC Channel 7[^p230-2] |
|  | ■ | 1 | 0 | 1 | 1 | 1 | 1 | 1 | 1 | 0 | 0 | 1 | 1 | 1 | 0 | 1 | 1 | BF3Bh | ULAplus Register |
| ■ | ■ | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 0 | 0 | 1 | 1 | 1 | 0 | 1 | 1 | FF3Bh | ULAplus Data |
| ■ | ■ | [colour: pale pink] | [colour: pale pink] | [colour: pale pink] | [colour: pale pink] | [colour: pale pink] | [colour: pale pink] | [colour: pale pink] | [colour: pale pink] | 0 | 0 | 0 | 0 | 1 | 0 | 1 | 1 | 0Bh | z80DMA[^p230-3] |
| ■ | ■ | [colour: pale pink] | [colour: pale pink] | [colour: pale pink] | [colour: pale pink] | [colour: pale pink] | [colour: pale pink] | [colour: pale pink] | [colour: pale pink] | 0 | 1 | 1 | 0 | 1 | 0 | 1 | 1 | 6Bh | zxnDMA[^p230-3] |
| ■ | ■ | 1 | 1 | [colour: pale pink] | [colour: pale pink] | [colour: pale pink] | [colour: pale pink] | [colour: pale pink] | [colour: pale pink] | [colour: pale pink] | [colour: pale pink] | [colour: pale pink] | [colour: pale pink] | [colour: pale pink] | 1 | 0 | 1 | FFFDh | AY Register |
| ■ | ■ | 1 | 0 | [colour: pale pink] | [colour: pale pink] | [colour: pale pink] | [colour: pale pink] | [colour: pale pink] | [colour: pale pink] | [colour: pale pink] | [colour: pale pink] | [colour: pale pink] | [colour: pale pink] | [colour: pale pink] | 1 | 0 | 1 | BFFDh | AY Data (readable on +3/Next only) |
| ■ |  | 1 | 0 | [colour: pale pink] | [colour: pale pink] | [colour: pale pink] | [colour: pale pink] | [colour: pale pink] | [colour: pale pink] | [colour: pale pink] | [colour: pale pink] | [colour: pale pink] | [colour: pale pink] | 0 | 1 | 0 | 1 | BFF5h | AY Inf (inside BFFDh decoding) |
|  | ■ | [colour: pale pink] | [colour: pale pink] | [colour: pale pink] | [colour: pale pink] | [colour: pale pink] | [colour: pale pink] | [colour: pale pink] | [colour: pale pink] | 0 | 0 | 0 | 1 | 1 | 1 | 1 | 1 | 1Fh | DAC A |
|  | ■ | [colour: pale pink] | [colour: pale pink] | [colour: pale pink] | [colour: pale pink] | [colour: pale pink] | [colour: pale pink] | [colour: pale pink] | [colour: pale pink] | 1 | 1 | 1 | 1 | 0 | 0 | 0 | 1 | F1h | DAC A[^p230-4] |
|  | ■ | [colour: pale pink] | [colour: pale pink] | [colour: pale pink] | [colour: pale pink] | [colour: pale pink] | [colour: pale pink] | [colour: pale pink] | [colour: pale pink] | 0 | 0 | 1 | 1 | 1 | 1 | 1 | 1 | 3Fh | DAC A |
|  | ■ | [colour: pale pink] | [colour: pale pink] | [colour: pale pink] | [colour: pale pink] | [colour: pale pink] | [colour: pale pink] | [colour: pale pink] | [colour: pale pink] | 0 | 0 | 0 | 0 | 1 | 1 | 1 | 1 | 0Fh | DAC B |
|  | ■ | [colour: pale pink] | [colour: pale pink] | [colour: pale pink] | [colour: pale pink] | [colour: pale pink] | [colour: pale pink] | [colour: pale pink] | [colour: pale pink] | 1 | 1 | 1 | 1 | 0 | 0 | 1 | 1 | F3h | DAC B |
|  | ■ | [colour: pale pink] | [colour: pale pink] | [colour: pale pink] | [colour: pale pink] | [colour: pale pink] | [colour: pale pink] | [colour: pale pink] | [colour: pale pink] | 1 | 1 | 0 | 1 | 1 | 1 | 1 | 1 | DFh | DAC A,D |
|  | ■ | [colour: pale pink] | [colour: pale pink] | [colour: pale pink] | [colour: pale pink] | [colour: pale pink] | [colour: pale pink] | [colour: pale pink] | [colour: pale pink] | 1 | 1 | 1 | 1 | 1 | 0 | 1 | 1 | FBh | DAC A,D |
|  | ■ | [colour: pale pink] | [colour: pale pink] | [colour: pale pink] | [colour: pale pink] | [colour: pale pink] | [colour: pale pink] | [colour: pale pink] | [colour: pale pink] | 1 | 0 | 1 | 1 | 0 | 0 | 1 | 1 | B3h | DAC B,C |
|  | ■ | [colour: pale pink] | [colour: pale pink] | [colour: pale pink] | [colour: pale pink] | [colour: pale pink] | [colour: pale pink] | [colour: pale pink] | [colour: pale pink] | 0 | 1 | 0 | 0 | 1 | 1 | 1 | 1 | 4Fh | DAC C |
|  | ■ | [colour: pale pink] | [colour: pale pink] | [colour: pale pink] | [colour: pale pink] | [colour: pale pink] | [colour: pale pink] | [colour: pale pink] | [colour: pale pink] | 1 | 1 | 1 | 1 | 1 | 0 | 0 | 1 | F9h | DAC C[^p230-4] |
|  | ■ | [colour: pale pink] | [colour: pale pink] | [colour: pale pink] | [colour: pale pink] | [colour: pale pink] | [colour: pale pink] | [colour: pale pink] | [colour: pale pink] | 0 | 1 | 0 | 1 | 1 | 1 | 1 | 1 | 5Fh | DAC D |
|  | ■ | [colour: pale pink] | [colour: pale pink] | [colour: pale pink] | [colour: pale pink] | [colour: pale pink] | [colour: pale pink] | [colour: pale pink] | [colour: pale pink] | 1 | 1 | 1 | 0 | 0 | 1 | 1 | 1 | E7h | SPI CS (SD card, Flash, RPi0) |
| ■ | ■ | [colour: pale pink] | [colour: pale pink] | [colour: pale pink] | [colour: pale pink] | [colour: pale pink] | [colour: pale pink] | [colour: pale pink] | [colour: pale pink] | 1 | 1 | 1 | 0 | 1 | 0 | 1 | 1 | EBh | SPI DATA |
| ■ | ■ | [colour: pale pink] | [colour: pale pink] | [colour: pale pink] | [colour: pale pink] | [colour: pale pink] | [colour: pale pink] | [colour: pale pink] | [colour: pale pink] | 1 | 1 | 1 | 0 | 0 | 0 | 1 | 1 | E3h | divMMC control |

[^p230-1]: *Precedence over AY*
[^p230-2]: *Temporarily reduced to first four CTC channels only*
[^p230-3]: *Selecting either DMA port, also selects the mode in which the DMA operates*
[^p230-4]: *Precedence over xxFD*

<!-- PDF page 231 -->

| R | W | A15 | A14 | A13 | A12 | A11 | A10 | A9 | A8 | A7 | A6 | A5 | A4 | A3 | A2 | A1 | A0 | Port (Hex) | Description |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| ■ |  | [colour: pale pink] | [colour: pale pink] | [colour: pale pink] | [colour: pale pink] | 1 | 0 | 1 | 1 | 1 | 1 | 0 | 1 | 1 | 1 | 1 | 1 | FBDFh | KEMPSTON Mouse X |
| ■ |  | [colour: pale pink] | [colour: pale pink] | [colour: pale pink] | [colour: pale pink] | 1 | 1 | 1 | 1 | 1 | 1 | 0 | 1 | 1 | 1 | 1 | 1 | FFDFh | KEMPSTON Mouse Y |
| ■ |  | [colour: pale pink] | [colour: pale pink] | [colour: pale pink] | [colour: pale pink] | 1 | 0 | 1 | 0 | 1 | 1 | 0 | 1 | 1 | 1 | 1 | 1 | FADFh | KEMPSTON Mouse Wheel, Buttons |
| ■ |  | [colour: pale pink] | [colour: pale pink] | [colour: pale pink] | [colour: pale pink] | [colour: pale pink] | [colour: pale pink] | [colour: pale pink] | [colour: pale pink] | 0 | 0 | 0 | 1 | 1 | 1 | 1 | 1 | 1Fh | KEMPSTON Joystick 1 |
| ■ |  | [colour: pale pink] | [colour: pale pink] | [colour: pale pink] | [colour: pale pink] | [colour: pale pink] | [colour: pale pink] | [colour: pale pink] | [colour: pale pink] | 1 | 1 | 0 | 1 | 1 | 1 | 1 | 1 | DFh | KEMPSTON Joystick 1 Alias |
| ■ |  | [colour: pale pink] | [colour: pale pink] | [colour: pale pink] | [colour: pale pink] | [colour: pale pink] | [colour: pale pink] | [colour: pale pink] | [colour: pale pink] | 0 | 0 | 1 | 1 | 0 | 1 | 1 | 1 | 37h | KEMPSTON Joystick 2 |
| ■ | ■ | [colour: pale pink] | [colour: pale pink] | [colour: pale pink] | [colour: pale pink] | [colour: pale pink] | [colour: pale pink] | [colour: pale pink] | [colour: pale pink] | 0 | 0 | 0 | 1 | 1 | 1 | 1 | 1 | 1Fh | Multiface 1 Disable |
| ■ | ■ | [colour: pale pink] | [colour: pale pink] | [colour: pale pink] | [colour: pale pink] | [colour: pale pink] | [colour: pale pink] | [colour: pale pink] | [colour: pale pink] | 1 | 0 | 0 | 1 | 1 | 1 | 1 | 1 | 9Fh | Multiface 1 Enable |
| ■ | ■ | [colour: pale pink] | [colour: pale pink] | [colour: pale pink] | [colour: pale pink] | [colour: pale pink] | [colour: pale pink] | [colour: pale pink] | [colour: pale pink] | 0 | 0 | 0 | 1 | 1 | 1 | 1 | 1 | 1Fh | Multiface 128 v87.12 Disable |
| ■ | ■ | [colour: pale pink] | [colour: pale pink] | [colour: pale pink] | [colour: pale pink] | [colour: pale pink] | [colour: pale pink] | [colour: pale pink] | [colour: pale pink] | 1 | 0 | 0 | 1 | 1 | 1 | 1 | 1 | 9Fh | Multiface 128 v87.12 Enable |
| ■ | ■ | [colour: pale pink] | [colour: pale pink] | [colour: pale pink] | [colour: pale pink] | [colour: pale pink] | [colour: pale pink] | [colour: pale pink] | [colour: pale pink] | 0 | 0 | 1 | 1 | 1 | 1 | 1 | 1 | 3Fh | Multiface 128 v87.2 Disable |
| ■ | ■ | [colour: pale pink] | [colour: pale pink] | [colour: pale pink] | [colour: pale pink] | [colour: pale pink] | [colour: pale pink] | [colour: pale pink] | [colour: pale pink] | 1 | 0 | 1 | 1 | 1 | 1 | 1 | 1 | BFh | Multiface 128 v87.2 Enable |
| ■ | ■ | [colour: pale pink] | [colour: pale pink] | [colour: pale pink] | [colour: pale pink] | [colour: pale pink] | [colour: pale pink] | [colour: pale pink] | [colour: pale pink] | 1 | 0 | 1 | 1 | 1 | 1 | 1 | 1 | BFh | Multiface +3 Disable |
| ■ | ■ | [colour: pale pink] | [colour: pale pink] | [colour: pale pink] | [colour: pale pink] | [colour: pale pink] | [colour: pale pink] | [colour: pale pink] | [colour: pale pink] | 0 | 0 | 1 | 1 | 1 | 1 | 1 | 1 | 3Fh | Multiface +3 Enable |
| ■ | ■ | 0 | 0 | 1 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 1 | 1 | 0 | 1 | 1 | 303Bh | Sprite slot flags |
|  | ■ | [colour: pale pink] | [colour: pale pink] | [colour: pale pink] | [colour: pale pink] | [colour: pale pink] | [colour: pale pink] | [colour: pale pink] | [colour: pale pink] | 0 | 1 | 0 | 1 | 0 | 1 | 1 | 1 | 57h | Sprite Attributes |
|  | ■ | [colour: pale pink] | [colour: pale pink] | [colour: pale pink] | [colour: pale pink] | [colour: pale pink] | [colour: pale pink] | [colour: pale pink] | [colour: pale pink] | 0 | 1 | 0 | 1 | 1 | 0 | 1 | 1 | 5Bh | Sprite Pattern |

The above table describes the ports that are used to control and communicate with additional hardware features of the ZX Spectrum Next. Therein exist 17 ports that are of special signifance as they are unique to the ZX Spectrum Next. These are:

| Port Name | Address (Hex) | Address (Dec) | Description |
|---|---|---|---|
| NextReg Select | 243Bh | 9275 | Communicates with the ZX Spectrum Next hardware |
| NextReg Data | 253Bh | 9531 | Used after register selection to send and read data |
| I²C SCL | 103Bh | 4155 | Used for I²C device communication (RTC etc) |
| I²C SDA | 113Bh | 4411 | Sends/Receives data from/to the I²C bus |
| Layer 2 | 123Bh | 4667 | Used to control Layer 2 |
| UART Tx | 133Bh | 4923 | Transmits data from the UART |
| UART Rx | 143Bh | 5179 | Receives data from the UART |
| UART Select | 153Bh | 5435 | Selects which UART is in use |
| UART Frame | 163Bh | 5691 | Sets up the UART framing |
| CTC | 183Bh - 1FB3h | 6203 - 8115 | Configures the Counter Timer Circuits |
| z80DMA | 0Bh | 11 | Programs the DMA in a z80DMA compatible mode |
| zxnDMA | 6Bh | 107 | Programs the DMA in zxnDMA mode |
| SPI Select | E7h | 231 | Selects an SPI peripheral (SD Card/Flash ROM/RPi0) |
| SPI DATA | EBh | 235 | Sends/Receives Data via the SPI bus a byte at a time |
| SPRITE | 303Bh | 12347 | Controls the Next Sprite Engine |
| SPRITE ATTR | 57h | 87 | Sends Sprite Attributes to the Sprite Engine |
| SPRITE PATTERN | 5Bh | 91 | Sends Sprite Pattern to the Sprite Engine |

<!-- PDF page 232 -->

Two of the most important ports in this list are collectively called *Next Register* or *NextREG* for short. Most of the machine's features can be controlled through *NextREG*.

### Accessing the ZX Spectrum Next features with NextREG

We use a *NextREG* by first selecting it with the control port and then writing to – or reading from – the *NextREG* data port.

In *NextBASIC* this is achieved with two consecutive **OUT** commands in the case of writing or with a combination of consecutive **OUT** and **IN** in the case of reading from a NextREG.

The first command is directed to the *Select* port **9275** (**243Bh**), selecting a specific register and the second to the *Data* port **9531** (**253Bh**) to modify or read the value stored there.

If given from *NextBASIC*, these commands must be given consecutively in one line as *NextBASIC* may do something different with *NextREG* in-between commands. If you give the first and then wait to give the second, *NextBASIC* may have changed the *Select register* in the meantime; so by giving them together you give it no time to do something else.

The Z80N CPU which powers the ZX Spectrum Next, also provides a special **NEXTREG** instruction and this is referenced in *Appendix A*.

Finally, as mentioned in the introduction, in order to read *NextREG*, *NextBASIC* also has a specialised command and function called **REG**, which is much easier to use than the combination of **OUT** and **IN** keywords.

We'll showcase both methods here, in order for you to be able to use either as there are cases where the ZX Spectrum Next's facilities are still available but without *NextBASIC* to provide access to them. The command as a statement has the form:

**REG** *n,v*

which is essentially the same as doing:

<b>OUT 9275,</b> <i>n</i><b>:OUT 9531,</b> <i>v</i>

Obviously *n* is the register number and *v* is the value we modify the register with. As a function, **REG** has the following form:

**% REG** *n* or **REG** *n*

as it works with both the integer as well as the standard expression evaluators. This essentially is the same as executing

**OUT 9275, n: %x** = **% IN 9531** (or the equivalent **x** = **IN 9531**).

Let's give one simple example in both forms and let's mix-and-match a bit as well, to show the equivalency:

Assuming we want to change speeds to **28MHz**, we could give:

```
RUN AT 3
```

or

```
OUT 9275, 7:OUT 9531, 3
```

and we can verify that it is set by either bringing up any *NextBASIC* menu (menus list the currently set speed on top) with the **EDIT** key or by doing:

```
OUT 9275,7: PRINT % IN 9531 & @11
```

Which is the same as

```
PRINT % REG 7&@11
```

<!-- PDF page 233 -->

You can verify this actually changes things by doing a **RUN AT 2** and give the **OUT/IN** sequence again. As you will see from the list that follows, not every *NextREG* is dedicated solely to one function; in this case the only bits that concerned us were Bits **0** and **1** and that's why we used a 2-bit bitmask with the bitwise *AND* operator **&**. For the same example using just the **REG** command, our line would have been as simple as:

```
REG 7,3
```

In our example in *Chapter 17* where we read *NextREG* 5h we also used bit shifting which is a great way to get the value of a single bit in a register. In our case we only needed bit 2 of the register so after getting the specific bit by bitwise AND (**&**) the register value with a 3-bit bitmask, we shifted it two places (bits) to the right by using the right bit-shifting operator (>>). That way we were able to get the value of the single register bit.

Generally speaking, you will often want to modify individual bits in a *NextREG* without changing the remaining ones.

You can do this by first reading the NextREG and then *masking off* the bits you want to leave unchanged by using bitwise AND (**&**) and finally write that value with the new bits added in.

We'll list all of *NextREG*s below in numerical order. Not every register is accessible, so pay attention to the key at the start of the list to understand whether a register can be read, written or both.

<!-- PDF page 234 -->

### Next Register Diagrams' Key

| Symbol | Meaning |
|---|---|
| [colour: light green] | Reserved value in either R(ead) or W(rite) condition but used in the inverse – **Not Applicable** |
| [colour: dark green] | Reserved value - **Not Applicable** |
| [colour: dark green] X | Reserved value **MUST be X** |
| [colour: pink] | **Not Applicable / Don't care** |
| R | **Read** (if marked). <u>Unmarked</u> means **Not Applicable** |
| W | **Write** (if marked). <u>Unmarked</u> means Not Applicable |
| H | **Hard** Reset / **Soft** Reset / **Config Mode**. <u>Unmarked</u> means **Soft Reset** if there's a value in column **D** |
| D | Contains the default value after a reset (Soft, Hard or Config as marked in column H).**\*** refers to notes below |
| ■ | In columns R/W marks the status of the register. In column H means Hard Reset |
| ♦ | Means **Config Mode** |
| • | Means *any* value (**0** or **1**) |
| N | Any letter in a data bit position refers you to the notes below |

#### NextREG 00 (00h) – Machine ID

<table>
<thead>
<tr><th rowspan="2">Group Name</th><th rowspan="2">R</th><th rowspan="2">W</th><th colspan="8">Data Bits</th><th rowspan="2">Description</th><th rowspan="2">H</th><th rowspan="2">D</th></tr>
<tr><th>7</th><th>6</th><th>5</th><th>4</th><th>3</th><th>2</th><th>1</th><th>0</th></tr>
</thead>
<tbody>
<tr><td rowspan="9">Machine ID</td><td rowspan="9">■</td><td rowspan="9"></td><td>0</td><td>0</td><td>0</td><td>0</td><td>1</td><td>0</td><td>0</td><td>0</td><td>EMULATORS</td><td></td><td></td></tr>
<tr><td>0</td><td>0</td><td>0</td><td>0</td><td><b>1</b></td><td><b>0</b></td><td><b>1</b></td><td><b>0</b></td><td>ZX Spectrum Next</td><td></td><td></td></tr>
<tr><td>1</td><td>1</td><td>1</td><td>1</td><td>1</td><td>0</td><td>1</td><td>0</td><td>ZX Spectrum Next Anti-Brick</td><td></td><td></td></tr>
<tr><td>1</td><td>0</td><td>0</td><td>1</td><td>1</td><td>0</td><td>1</td><td>0</td><td>Next Core on UnAmiga Reloaded</td><td></td><td></td></tr>
<tr><td>1</td><td>0</td><td>1</td><td>0</td><td>1</td><td>0</td><td>1</td><td>0</td><td>Next Core on UnAmiga</td><td></td><td></td></tr>
<tr><td>1</td><td>0</td><td>1</td><td>1</td><td>1</td><td>0</td><td>1</td><td>0</td><td>Next Core on SiDi</td><td></td><td></td></tr>
<tr><td>1</td><td>1</td><td>0</td><td>0</td><td>1</td><td>0</td><td>1</td><td>0</td><td>Next Core on MiST</td><td></td><td></td></tr>
<tr><td>1</td><td>1</td><td>0</td><td>1</td><td>1</td><td>0</td><td>1</td><td>0</td><td>Next Core on MiSTer</td><td></td><td></td></tr>
<tr><td>1</td><td>1</td><td>1</td><td>0</td><td>1</td><td>0</td><td>1</td><td>0</td><td>Next Core on ZX-DOS/gomaDOS</td><td></td><td></td></tr>
</tbody>
</table>

#### NextREG 01 (01h) – Core Version

<table>
<thead>
<tr><th rowspan="2">Group Name</th><th rowspan="2">R</th><th rowspan="2">W</th><th colspan="8">Data Bits</th><th rowspan="2">Description</th><th rowspan="2">H</th><th rowspan="2">D</th></tr>
<tr><th>7</th><th>6</th><th>5</th><th>4</th><th>3</th><th>2</th><th>1</th><th>0</th></tr>
</thead>
<tbody>
<tr><td>Minor Version Number</td><td>■</td><td></td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>•</td><td>•</td><td>•</td><td>•</td><td>Minor Version</td><td></td><td></td></tr>
<tr><td>Major Version Number</td><td>■</td><td></td><td>•</td><td>•</td><td>•</td><td>•</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>Major Version</td><td></td><td></td></tr>
</tbody>
</table>

See **NextREG 14 (0Eh)** for sub minor version number

#### NextREG 02 (02h) – Reset

<table>
<thead>
<tr><th rowspan="2">Group Name</th><th rowspan="2">R</th><th rowspan="2">W</th><th colspan="8">Data Bits</th><th rowspan="2">Description</th><th rowspan="2">H</th><th rowspan="2">D</th></tr>
<tr><th>7</th><th>6</th><th>5</th><th>4</th><th>3</th><th>2</th><th>1</th><th>0</th></tr>
</thead>
<tbody>
<tr><td rowspan="2">Last System Reset Type</td><td rowspan="2">■</td><td rowspan="2"></td><td>[colour: pink]</td><td>[colour: dark green]</td><td>[colour: dark green]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>0</td><td><b>1</b></td><td>Soft Reset</td><td rowspan="2"></td><td rowspan="2"></td></tr>
<tr><td>[colour: pink]</td><td>[colour: dark green]</td><td>[colour: dark green]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>1</td><td>0</td><td>Hard Reset</td></tr>
<tr><td rowspan="2">divMMC NMI source</td><td rowspan="2">■</td><td rowspan="2"></td><td>[colour: pink]</td><td>[colour: dark green]</td><td>[colour: dark green]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>0</td><td>[colour: pink]</td><td>[colour: pink]</td><td>divMMC NMI not generated by NR 02h</td><td rowspan="2"></td><td></td></tr>
<tr><td>[colour: pink]</td><td>[colour: dark green]</td><td>[colour: dark green]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>1</td><td>[colour: pink]</td><td>[colour: pink]</td><td>divMMC NMI generated by NR 02h</td><td></td></tr>
<tr><td rowspan="4">MF NMI source</td><td rowspan="4">■</td><td rowspan="4"></td><td>[colour: pink]</td><td>[colour: dark green]</td><td>[colour: dark green]</td><td>[colour: pink]</td><td>0</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>MF NMI not generated by NR 02h</td><td></td><td></td></tr>
<tr><td>[colour: pink]</td><td>[colour: dark green]</td><td>[colour: dark green]</td><td>[colour: pink]</td><td>1</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>MF NMI generated by NR 02h</td><td></td><td></td></tr>
<tr><td>[colour: pink]</td><td>[colour: dark green]</td><td>[colour: dark green]</td><td>0</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>MF NMI not generated by I/O Trap²,*</td><td rowspan="2"></td><td rowspan="2"></td></tr>
<tr><td>[colour: pink]</td><td>[colour: dark green]</td><td>[colour: dark green]</td><td>1</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>MF NMI generated by I/O Trap²,*</td></tr>
<tr><td>Reserved</td><td>■</td><td></td><td>[colour: pink]</td><td>[colour: dark green]</td><td>[colour: dark green]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>Reserved</td><td></td><td></td></tr>
<tr><td rowspan="2">ESP/Expansion Bus R̅E̅S̅E̅T̅ flag</td><td rowspan="2">■</td><td rowspan="2"></td><td><b>0</b></td><td>[colour: dark green]</td><td>[colour: dark green]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>R̅E̅S̅E̅T̅ not asserted</td><td rowspan="2">■</td><td rowspan="2">0</td></tr>
<tr><td>1</td><td>[colour: dark green]</td><td>[colour: dark green]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>R̅E̅S̅E̅T̅ asserted</td></tr>
<tr><td rowspan="2">Generate System Reset</td><td rowspan="2"></td><td rowspan="2">■</td><td>[colour: pink]</td><td>[colour: dark green]</td><td>[colour: dark green]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>0</td><td>1</td><td>Generate Soft Reset</td><td></td><td></td></tr>
<tr><td>[colour: pink]</td><td>[colour: dark green]</td><td>[colour: dark green]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>1</td><td>0</td><td>Generate Hard Reset (reboot)</td><td></td><td></td></tr>
<tr><td>divMMC NMI control</td><td></td><td>■</td><td>[colour: pink]</td><td>[colour: dark green]</td><td>[colour: dark green]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>•</td><td>[colour: pink]</td><td>[colour: pink]</td><td>Generate/Clear divMMC NMI³</td><td></td><td></td></tr>
<tr><td rowspan="2">MF NMI control</td><td rowspan="2"></td><td rowspan="2">■</td><td>[colour: pink]</td><td>[colour: dark green]</td><td>[colour: dark green]</td><td>[colour: pink]</td><td>•</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>Generate/Clear MF NMI³</td><td></td><td></td></tr>
<tr><td>[colour: pink]</td><td>[colour: dark green]</td><td>[colour: dark green]</td><td>•</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>If 0 Clear MF I/O Trap²,³</td><td></td><td></td></tr>
<tr><td>Reserved</td><td></td><td>■</td><td>[colour: pink]</td><td>[colour: dark green] <b>0</b></td><td>[colour: dark green] <b>0</b></td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>Reserved (must be 0)</td><td></td><td></td></tr>
<tr><td>Generate ESP/Exp. Bus Reset¹</td><td></td><td>■</td><td>•</td><td>[colour: dark green]</td><td>[colour: dark green]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>Generate/Release Reset (Exp. Bus &amp; ESP)</td><td></td><td></td></tr>
</tbody>
</table>

1 A full reset cycle for the ESP and Expansion Bus, requires setting **D7** first to **1** for **at least 100 ms** and then to **0**. The 100 ms assertion is req<u>uired by</u> the ESP module. If not explicitly released the Expansion Bus and ESP will stay with R̅E̅S̅E̅T̅ asserted until the next system hard reset\
Of **D0** – **D1** Hard Reset has precedence\
² Experimental\
³ These signals are ignored if the Multiface, divMMC, DMA or external NMI master is active. Copper cannot clear these bits. Note: An I/O trap could occur at the same time as MF / divMMC cause; always check this bit in NMI ISR if important\
\* See **NextREG 218 (DAh)**

#### NextREG 03 (03h) – Machine Type

<table>
<thead>
<tr><th rowspan="2">Group Name</th><th rowspan="2">R</th><th rowspan="2">W</th><th colspan="8">Data Bits</th><th rowspan="2">Description</th><th rowspan="2">H</th><th rowspan="2">D</th></tr>
<tr><th>7</th><th>6</th><th>5</th><th>4</th><th>3</th><th>2</th><th>1</th><th>0</th></tr>
</thead>
<tbody>
<tr><td rowspan="5">Machine Type</td><td rowspan="5">■</td><td rowspan="5">■</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>0</td><td>0</td><td>0</td><td>Configuration mode</td><td rowspan="5">♦</td><td></td></tr>
<tr><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>0</td><td>0</td><td>1</td><td>ZX 48K</td><td></td></tr>
<tr><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>0</td><td>1</td><td>0</td><td>ZX 128K / +2</td><td></td></tr>
<tr><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>0</td><td>1</td><td>1</td><td>ZX +2A / +2B / +3 / Next</td><td></td></tr>
<tr><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>1</td><td>0</td><td>0</td><td>Pentagon Clones*</td><td></td></tr>
<tr><td rowspan="3">Display Timing user lock control</td><td rowspan="2">■</td><td rowspan="2"></td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td><b>0</b></td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>No User Lock on display timing applied</td><td></td><td></td></tr>
<tr><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>1</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>User lock on display timing applied</td><td></td><td></td></tr>
<tr><td></td><td>■</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>•</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>Toggle User Lock on Display Timing</td><td>■</td><td>0</td></tr>
<tr><td rowspan="5">Display Timing</td><td rowspan="5">■</td><td rowspan="5">■</td><td>[colour: pink]</td><td>0</td><td>0</td><td>0</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>Internal Use</td><td rowspan="5"></td><td rowspan="5"></td></tr>
<tr><td>[colour: pink]</td><td>0</td><td>0</td><td>1</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>ZX 48K</td></tr>
<tr><td>[colour: pink]</td><td>0</td><td>1</td><td>0</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>ZX 128K / +2</td></tr>
<tr><td>[colour: pink]</td><td>0</td><td>1</td><td>1</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>ZX +2A / +2B / +3 / Next</td></tr>
<tr><td>[colour: pink]</td><td>1</td><td>0</td><td>0</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>Pentagon*</td></tr>
<tr><td>NR 68 (44h) 2nd Byte Indicator</td><td>■</td><td></td><td>•</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>Palette Entry (NR 68) Second Byte flag</td><td></td><td>0</td></tr>
<tr><td>Display Timing change enable</td><td></td><td>■</td><td>•</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>Allow changes to D4:6</td><td></td><td>0</td></tr>
</tbody>
</table>

\* Pentagon timing is **50 Hz** <u>only</u>\
Machine type determines which ROMs are loaded and Display Timing also affects port decoding

#### [?]

<table>
<thead>
<tr><th rowspan="2">Group Name</th><th rowspan="2">R</th><th rowspan="2">W</th><th colspan="8">Data Bits</th><th rowspan="2">Description</th><th rowspan="2">H</th><th rowspan="2">D</th></tr>
<tr><th>7</th><th>6</th><th>5</th><th>4</th><th>3</th><th>2</th><th>1</th><th>0</th></tr>
</thead>
<tbody>
<tr><td>16K RAM bank mapping</td><td></td><td>■</td><td>[colour: dark green]</td><td>•</td><td>•</td><td>•</td><td>•</td><td>•</td><td>•</td><td>•</td><td>Maps a 16K RAM Bank no. (0-127)*</td><td>♦</td><td>0</td></tr>
<tr><td>Reserved</td><td></td><td>■</td><td>[colour: dark green] <b>0</b></td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>Reserved, must be 0</td><td></td><td></td></tr>
</tbody>
</table>

\* Maps a 16K RAM bank over the **bottom** 16K. Applies only in configuration mode when the boot rom is disabled\
Even multiples of 256K are unreliable if storing data in RAM for the Next Core started

#### NextREG 05 (05h) – Peripheral 1 Settings

<table>
<thead>
<tr><th rowspan="2">Group Name</th><th rowspan="2">R</th><th rowspan="2">W</th><th colspan="8">Data Bits</th><th rowspan="2">Description</th><th rowspan="2">H</th><th rowspan="2">D</th></tr>
<tr><th>7</th><th>6</th><th>5</th><th>4</th><th>3</th><th>2</th><th>1</th><th>0</th></tr>
</thead>
<tbody>
<tr><td rowspan="2">Scandoubler¹</td><td rowspan="2">■</td><td rowspan="2">■</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>0</td><td>Scandoubler Disabled</td><td></td><td></td></tr>
<tr><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>1</td><td>Scandoubler Enabled</td><td></td><td></td></tr>
<tr><td rowspan="2">Vertical Frequency</td><td rowspan="2">■</td><td rowspan="2">■</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>0</td><td>[colour: pink]</td><td>[colour: pink]</td><td>50 Hz mode</td><td></td><td></td></tr>
<tr><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>1</td><td>[colour: pink]</td><td>[colour: pink]</td><td>60 Hz mode*</td><td></td><td></td></tr>
<tr><td rowspan="8">Joystick 1**</td><td rowspan="8">■</td><td rowspan="8">■</td><td>0</td><td>0</td><td>[colour: pink]</td><td>[colour: pink]</td><td>0</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>Sinclair 2 (12345)</td><td></td><td></td></tr>
<tr><td>0</td><td>0</td><td>[colour: pink]</td><td>[colour: pink]</td><td>1</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>Kempston 2 (Port 37h)</td><td></td><td></td></tr>
<tr><td>0</td><td>1</td><td>[colour: pink]</td><td>[colour: pink]</td><td>0</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>Kempston 1 (Port 1Fh)</td><td></td><td></td></tr>
<tr><td>0</td><td>1</td><td>[colour: pink]</td><td>[colour: pink]</td><td>1</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>MD 1 (Port 1Fh)</td><td></td><td></td></tr>
<tr><td>1</td><td>0</td><td>[colour: pink]</td><td>[colour: pink]</td><td>0</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>Cursor (56780)</td><td></td><td></td></tr>
<tr><td>1</td><td>0</td><td>[colour: pink]</td><td>[colour: pink]</td><td>1</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>MD 2 (Port 37h)</td><td></td><td></td></tr>
<tr><td>1</td><td>1</td><td>[colour: pink]</td><td>[colour: pink]</td><td>0</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>Sinclair 1 (67890)</td><td></td><td></td></tr>
<tr><td>1</td><td>1</td><td>[colour: pink]</td><td>[colour: pink]</td><td>1</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>User Defined Keys Joystick</td><td></td><td></td></tr>
<tr><td rowspan="8">Joystick 2**</td><td rowspan="8">■</td><td rowspan="8">■</td><td>[colour: pink]</td><td>[colour: pink]</td><td>0</td><td>0</td><td>[colour: pink]</td><td>[colour: pink]</td><td>0</td><td>[colour: pink]</td><td>Sinclair 2 (12345)</td><td></td><td></td></tr>
<tr><td>[colour: pink]</td><td>[colour: pink]</td><td>0</td><td>0</td><td>[colour: pink]</td><td>[colour: pink]</td><td>1</td><td>[colour: pink]</td><td>Kempston 2 (Port 37h)</td><td></td><td></td></tr>
<tr><td>[colour: pink]</td><td>[colour: pink]</td><td>0</td><td>1</td><td>[colour: pink]</td><td>[colour: pink]</td><td>0</td><td>[colour: pink]</td><td>Kempston 1 (Port 1Fh)</td><td></td><td></td></tr>
<tr><td>[colour: pink]</td><td>[colour: pink]</td><td>0</td><td>1</td><td>[colour: pink]</td><td>[colour: pink]</td><td>1</td><td>[colour: pink]</td><td>MD 1 (Port 1Fh)</td><td></td><td></td></tr>
<tr><td>[colour: pink]</td><td>[colour: pink]</td><td>1</td><td>0</td><td>[colour: pink]</td><td>[colour: pink]</td><td>0</td><td>[colour: pink]</td><td>Cursor (56780)</td><td></td><td></td></tr>
<tr><td>[colour: pink]</td><td>[colour: pink]</td><td>1</td><td>0</td><td>[colour: pink]</td><td>[colour: pink]</td><td>1</td><td>[colour: pink]</td><td>MD 2 (Port 37h)</td><td></td><td></td></tr>
<tr><td>[colour: pink]</td><td>[colour: pink]</td><td>1</td><td>1</td><td>[colour: pink]</td><td>[colour: pink]</td><td>0</td><td>[colour: pink]</td><td>Sinclair 1 (67890)</td><td></td><td></td></tr>
<tr><td>[colour: pink]</td><td>[colour: pink]</td><td>1</td><td>1</td><td>[colour: pink]</td><td>[colour: pink]</td><td>1</td><td>[colour: pink]</td><td>User Defined Keys Joystick</td><td></td><td></td></tr>
</tbody>
</table>

¹ Enabled for VGA / HDMI, Disabled for RGB mode\
\* Pentagon Clones <u>have no 60 Hz mode</u>; when in Pentagon mode, every setting is **50 Hz**.\
\*\* Joystick ports can be placed into I/O mode via **NextREG 11 (Bh)**\
Programming the user defined keys joystick is done through the PS/2 keymap interface on **NextREG 40 (28h)**, **41 (29h)** and **43 (2Bh)**:

1. Write **128** to **NextREG 40 (28h)**
2. Write **0** (Left joystick) or **16** (Right joystick) to **NextREG 41 (29h)**
3. Write **12** bytes to **NextREG 43 (2Bh)** in order. The bytes correspond to the twelve buttons on an MD pad as follows (**Byte 0** to **Byte 11**):\
   **R, L, D, U, B, C, A, START, Y, Z, X, MODE**
4. Each byte written identifies a key in the **8x7** membrane; **D5:3** select the row and **D2:0** the column with **111** meaning <u>no action</u>

In Kempston and MD modes. excess buttons on an controller not read via ports will generate key input if so programmed

#### NextREG 06 (06h) – Peripheral 2 Settings

<table>
<thead>
<tr><th rowspan="2">Group Name</th><th rowspan="2">R</th><th rowspan="2">W</th><th colspan="8">Data Bits</th><th rowspan="2">Description</th><th rowspan="2">H</th><th rowspan="2">D</th></tr>
<tr><th>7</th><th>6</th><th>5</th><th>4</th><th>3</th><th>2</th><th>1</th><th>0</th></tr>
</thead>
<tbody>
<tr><td rowspan="3">PSG Mode Control</td><td rowspan="3">■</td><td rowspan="3">■</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>0</td><td>0</td><td>YM</td><td rowspan="3"></td><td rowspan="3"></td></tr>
<tr><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td><b>0</b></td><td><b>1</b></td><td>AY</td></tr>
<tr><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>1</td><td>1</td><td>Hold all PSGs in Reset</td></tr>
<tr><td rowspan="2">PS/2 Mode Control</td><td rowspan="2">■</td><td rowspan="2">■</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td><b>0</b></td><td>[colour: pink]</td><td>[colour: pink]</td><td>Keyboard Primary</td><td rowspan="2">♦</td><td rowspan="2">0</td></tr>
<tr><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>1</td><td>[colour: pink]</td><td>[colour: pink]</td><td>Mouse Primary</td></tr>
<tr><td>NMI Button Control</td><td>■</td><td>■</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>•</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>NMI button enable*</td><td>■</td><td>0</td></tr>
<tr><td>divMMC NMI Control</td><td>■</td><td>■</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>•</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>divMMC NMI** button enable</td><td>■</td><td>0</td></tr>
<tr><td>F3 Hotkey Control</td><td>■</td><td>■</td><td>[colour: pink]</td><td>[colour: pink]</td><td>•</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>50 Hz / 60 Hz hotkey enable</td><td></td><td>1</td></tr>
<tr><td rowspan="2">Internal Speaker BEEP Control</td><td rowspan="2">■</td><td rowspan="2">■</td><td>[colour: pink]</td><td><b>0</b></td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>All audio copied to speaker</td><td rowspan="2">■</td><td rowspan="2">0</td></tr>
<tr><td>[colour: pink]</td><td>1</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>Only BEEP sounds diverted to speaker</td></tr>
<tr><td>F5, F6 and F8 Hotkey Control</td><td>■</td><td>■</td><td>•</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>CPU Speed and Exp. Bus hotkeys enable</td><td></td><td>1</td></tr>
</tbody>
</table>

\* NMI button refers to the button to the right side of the SD Card reader\
\*\* Refers to the Drive button to the left side of the SD Card reader

#### NextREG 07 (07h) – CPU Speed

<table>
<thead>
<tr><th rowspan="2">Group Name</th><th rowspan="2">R</th><th rowspan="2">W</th><th colspan="8">Data Bits</th><th rowspan="2">Description</th><th rowspan="2">H</th><th rowspan="2">D</th></tr>
<tr><th>7</th><th>6</th><th>5</th><th>4</th><th>3</th><th>2</th><th>1</th><th>0</th></tr>
</thead>
<tbody>
<tr><td rowspan="4">CPU Speed Control¹</td><td rowspan="4">■</td><td rowspan="4">■</td><td>[colour: dark green]</td><td>[colour: dark green]</td><td>[colour: light green]</td><td>[colour: light green]</td><td>[colour: dark green]</td><td>[colour: dark green]</td><td><b>0</b></td><td><b>0</b></td><td>3.5 MHz</td><td rowspan="4"></td><td rowspan="4">*</td></tr>
<tr><td>[colour: dark green]</td><td>[colour: dark green]</td><td>[colour: light green]</td><td>[colour: light green]</td><td>[colour: dark green]</td><td>[colour: dark green]</td><td>0</td><td>1</td><td>7 MHz</td></tr>
<tr><td>[colour: dark green]</td><td>[colour: dark green]</td><td>[colour: light green]</td><td>[colour: light green]</td><td>[colour: dark green]</td><td>[colour: dark green]</td><td>1</td><td>0</td><td>14 MHz</td></tr>
<tr><td>[colour: dark green]</td><td>[colour: dark green]</td><td>[colour: light green]</td><td>[colour: light green]</td><td>[colour: dark green]</td><td>[colour: dark green]</td><td>1</td><td>1</td><td>28 MHz</td></tr>
<tr><td>Reserved</td><td></td><td>■</td><td>[colour: dark green] <b>0</b></td><td>[colour: dark green] <b>0</b></td><td>[colour: dark green] <b>0</b></td><td>[colour: dark green] <b>0</b></td><td>[colour: dark green] <b>0</b></td><td>[colour: dark green] <b>0</b></td><td>[colour: pink]</td><td>[colour: pink]</td><td>Reserved, must be 0</td><td></td><td></td></tr>
<tr><td>Reserved</td><td>■</td><td></td><td>[colour: dark green] <b>0</b></td><td>[colour: dark green] <b>0</b></td><td>[colour: light green]</td><td>[colour: light green]</td><td>[colour: dark green] <b>0</b></td><td>[colour: dark green] <b>0</b></td><td>[colour: pink]</td><td>[colour: pink]</td><td>Reserved, must be 0</td><td></td><td></td></tr>
<tr><td rowspan="4">Current Actual² CPU Speed</td><td rowspan="4">■</td><td rowspan="4"></td><td>[colour: dark green]</td><td>[colour: dark green]</td><td><b>0</b></td><td><b>0</b></td><td>[colour: dark green]</td><td>[colour: dark green]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>3.5 MHz</td><td></td><td rowspan="4"></td></tr>
<tr><td>[colour: dark green]</td><td>[colour: dark green]</td><td>0</td><td>1</td><td>[colour: dark green]</td><td>[colour: dark green]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>7 MHz</td><td></td></tr>
<tr><td>[colour: dark green]</td><td>[colour: dark green]</td><td>1</td><td>0</td><td>[colour: dark green]</td><td>[colour: dark green]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>14 MHz</td><td></td></tr>
<tr><td>[colour: dark green]</td><td>[colour: dark green]</td><td>1</td><td>1</td><td>[colour: dark green]</td><td>[colour: dark green]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>28 MHz</td><td></td></tr>
</tbody>
</table>

\* Soft reset defaults this to **00**\
¹ When read returns the Programmed CPU speed as it may differ from actual speed. See below\
² Current Actual speed may differ from the set speed due to Expansion Bus use, or another forced change

<!-- PDF page 235 -->

#### [?]

<table>
<thead>
<tr><th>Group Name</th><th>R</th><th>W</th><th>7</th><th>6</th><th>5</th><th>4</th><th>3</th><th>2</th><th>1</th><th>0</th><th>Description</th><th>H</th><th>D</th></tr>
</thead>
<tbody>
<tr><td>Issue 2 keyboard</td><td>■</td><td>■</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>•</td><td>Enable Issue 2 keyboard</td><td>■</td><td>0</td></tr>
<tr><td>NextSound</td><td></td><td></td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>•</td><td>[colour: pink]</td><td>Enable Multiple PSGs*</td><td>■</td><td>0</td></tr>
<tr><td>Timex Video Port Control</td><td>■</td><td>■</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>•</td><td>[colour: pink]</td><td>[colour: pink]</td><td>Enable read of Port FFh (Timex)**</td><td>■</td><td>0</td></tr>
<tr><td>DACs Control</td><td></td><td></td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>•</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>Enable DACs (A-B-C-D)</td><td>■</td><td>0</td></tr>
<tr><td>Internal Speaker Control</td><td>■</td><td>■</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>•</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>Enable Internal Speaker</td><td>■</td><td>1</td></tr>
<tr><td rowspan="2">PSG Stereo Mode Control</td><td rowspan="2">■</td><td rowspan="2">■</td><td>[colour: pink]</td><td>[colour: pink]</td><td><b>0</b></td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>Select ABC</td><td rowspan="2">■</td><td rowspan="2">0</td></tr>
<tr><td>[colour: pink]</td><td>[colour: pink]</td><td>1</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>Select ACB</td></tr>
<tr><td>Contention Control</td><td>■</td><td>■</td><td>[colour: pink]</td><td>•</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>Disable RAM and Port Contention</td><td></td><td>0</td></tr>
<tr><td>128K Banking Unlock Control</td><td>■</td><td>■</td><td>•</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>Unlock Port 7FFDh <b>D5</b> (Unlocked = 1)</td><td></td><td>0</td></tr>
</tbody>
</table>

\* Currently selected PSG is frozen when disabled\
\*\* Enabling Timex Video Port read hides the floating bus on **FFh**

#### NextREG 09 (09h) – Peripheral 4 Settings

<table>
<thead>
<tr><th rowspan="2">Group Name</th><th rowspan="2">R</th><th rowspan="2">W</th><th colspan="8">Data Bits</th><th rowspan="2">Description</th><th rowspan="2">H</th><th rowspan="2">D</th></tr>
<tr><th>7</th><th>6</th><th>5</th><th>4</th><th>3</th><th>2</th><th>1</th><th>0</th></tr>
</thead>
<tbody>
<tr><td rowspan="4">Scanline Strength</td><td rowspan="4">■</td><td rowspan="4">■</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td><b>0</b></td><td><b>0</b></td><td>Scanlines off</td><td rowspan="4"></td><td rowspan="4"></td></tr>
<tr><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>0</td><td>1</td><td>Scanlines at 50%</td></tr>
<tr><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>1</td><td>0</td><td>Scanlines at 25%</td></tr>
<tr><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>1</td><td>1</td><td>Scanlines at 12.5%</td></tr>
<tr><td>HDMI audio output Control</td><td>■</td><td>■</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>•</td><td>[colour: pink]</td><td>[colour: pink]</td><td>HDMI audio mute</td><td>■</td><td>0</td></tr>
<tr><td>divMMC mapRAM bit Control</td><td>■</td><td>■</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>•</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>Reset bit 6 port E3h (Read is always 0)</td><td></td><td></td></tr>
<tr><td>Sprite Lockstep Control</td><td>■</td><td>■</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>•</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>Enable Sprite ID Lockstep</td><td></td><td>0</td></tr>
<tr><td>PSG 0 Mono Mode Control</td><td>■</td><td>■</td><td>[colour: pink]</td><td>[colour: pink]</td><td>•</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>Enable Mono</td><td>■</td><td>0</td></tr>
<tr><td>PSG 1 Mono Mode Control</td><td>■</td><td>■</td><td>[colour: pink]</td><td>•</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>Enable Mono</td><td>■</td><td>0</td></tr>
<tr><td>PSG 2 Mono Mode Control</td><td>■</td><td>■</td><td>•</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>Enable Mono</td><td>■</td><td>0</td></tr>
</tbody>
</table>

In Sprite Lockstep, **NextREG 52 (34h)** and Port **12347 (303Bh)** are in Lockstep

#### NextREG 10 (0Ah) – Peripheral 5 Settings

<table>
<thead>
<tr><th rowspan="2">Group Name</th><th rowspan="2">R</th><th rowspan="2">W</th><th colspan="8">Data Bits</th><th rowspan="2">Description</th><th rowspan="2">H</th><th rowspan="2">D</th></tr>
<tr><th>7</th><th>6</th><th>5</th><th>4</th><th>3</th><th>2</th><th>1</th><th>0</th></tr>
</thead>
<tbody>
<tr><td rowspan="4">Mouse resolution Control</td><td rowspan="4">■</td><td rowspan="4">■</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: dark green]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: dark green]</td><td>0</td><td>0</td><td>Low DPI</td><td rowspan="4">■</td><td rowspan="4"></td></tr>
<tr><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: dark green]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: dark green]</td><td><b>0</b></td><td><b>1</b></td><td>Default</td></tr>
<tr><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: dark green]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: dark green]</td><td>1</td><td>0</td><td>Medium DPI</td></tr>
<tr><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: dark green]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: dark green]</td><td>1</td><td>1</td><td>High DPI</td></tr>
<tr><td>Reserved</td><td>■</td><td>■</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: dark green]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: dark green] <b>0</b></td><td>[colour: pink]</td><td>[colour: pink]</td><td>Reserved, must be 0</td><td></td><td>0</td></tr>
<tr><td>Mouse button swap Control</td><td>■</td><td>■</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: dark green]</td><td>[colour: pink]</td><td>•</td><td>[colour: dark green]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>Reverses (swaps) L &amp; R mouse buttons</td><td>■</td><td>0</td></tr>
<tr><td>divMMC Automap Control</td><td>■</td><td>■</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: dark green]</td><td>•</td><td>[colour: pink]</td><td>[colour: dark green]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>Enables divMMC Automap</td><td>■</td><td>0</td></tr>
<tr><td>Reserved</td><td>■</td><td>■</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: dark green] <b>0</b></td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: dark green]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>Reserved, must be 0</td><td>■</td><td>0</td></tr>
<tr><td rowspan="4">Multiface Type</td><td rowspan="4">■</td><td rowspan="4">■</td><td><b>0</b></td><td><b>0</b></td><td>[colour: dark green]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: dark green]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>Multiface +3¹</td><td rowspan="4">♦</td><td rowspan="4">0</td></tr>
<tr><td>0</td><td>1</td><td>[colour: dark green]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: dark green]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>Multiface 128 v87.2²</td></tr>
<tr><td>1</td><td>0</td><td>[colour: dark green]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: dark green]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>Multiface 128 v87.12³</td></tr>
<tr><td>1</td><td>1</td><td>[colour: dark green]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: dark green]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>Multiface 1⁴</td></tr>
</tbody>
</table>

¹ Enables port 3Fh, disables port BFh\
² Enables port BFh, disables port 3Fh\
³ Enables port 9Fh, disables port 1Fh\
⁴ Enables port 9Fh, disables port 1Fh

#### NextREG 11 (0Bh) – Joystick Port Mode Selection

<table>
<thead>
<tr><th rowspan="2">Group Name</th><th rowspan="2">R</th><th rowspan="2">W</th><th colspan="8">Data Bits</th><th rowspan="2">Description</th><th rowspan="2">H</th><th rowspan="2">D</th></tr>
<tr><th>7</th><th>6</th><th>5</th><th>4</th><th>3</th><th>2</th><th>1</th><th>0</th></tr>
</thead>
<tbody>
<tr><td>Parameter (Bit Bang)</td><td rowspan="5">■</td><td rowspan="5">■</td><td>[colour: pink]</td><td>[colour: dark green]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: dark green]</td><td>[colour: dark green]</td><td>[colour: dark green]</td><td>•</td><td>Copied to pin 7 of the active connector¹</td><td rowspan="5"></td><td rowspan="5">1</td></tr>
<tr><td rowspan="2">Parameter (Clock)</td><td>[colour: pink]</td><td>[colour: dark green]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: dark green]</td><td>[colour: dark green]</td><td>[colour: dark green]</td><td>0</td><td>Hold high when clock becomes high</td></tr>
<tr><td>[colour: pink]</td><td>[colour: dark green]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: dark green]</td><td>[colour: dark green]</td><td>[colour: dark green]</td><td>1</td><td>Run²</td></tr>
<tr><td rowspan="2">Parameter (UART)</td><td>[colour: pink]</td><td>[colour: dark green]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: dark green]</td><td>[colour: dark green]</td><td>[colour: dark green]</td><td>0</td><td>Redirect ESP UART_0 to connector³</td></tr>
<tr><td>[colour: pink]</td><td>[colour: dark green]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: dark green]</td><td>[colour: dark green]</td><td>[colour: dark green]</td><td><b>1</b></td><td>Redirect Pi UART_1 to connector³</td></tr>
<tr><td>Reserved</td><td>■</td><td>■</td><td>[colour: pink]</td><td>[colour: dark green]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: dark green] <b>0</b></td><td>[colour: dark green] <b>0</b></td><td>[colour: dark green] <b>0</b></td><td>[colour: pink]</td><td>Reserved, must be 0</td><td></td><td>0</td></tr>
<tr><td rowspan="4">I/OMode Control</td><td rowspan="4">■</td><td rowspan="4">■</td><td>[colour: pink]</td><td>[colour: dark green]</td><td>0</td><td>0</td><td>[colour: dark green]</td><td>[colour: dark green]</td><td>[colour: dark green]</td><td>[colour: pink]</td><td>Bit Bang</td><td rowspan="4"></td><td rowspan="4">0</td></tr>
<tr><td>[colour: pink]</td><td>[colour: dark green]</td><td>0</td><td>1</td><td>[colour: dark green]</td><td>[colour: dark green]</td><td>[colour: dark green]</td><td>[colour: pink]</td><td>Clock</td></tr>
<tr><td>[colour: pink]</td><td>[colour: dark green]</td><td>1</td><td>0</td><td>[colour: dark green]</td><td>[colour: dark green]</td><td>[colour: dark green]</td><td>[colour: pink]</td><td>UART on left joystick port</td></tr>
<tr><td>[colour: pink]</td><td>[colour: dark green]</td><td>1</td><td>1</td><td>[colour: dark green]</td><td>[colour: dark green]</td><td>[colour: dark green]</td><td>[colour: pink]</td><td>UART on right joystick port</td></tr>
<tr><td>Reserved</td><td>■</td><td>■</td><td>[colour: pink]</td><td>[colour: dark green] <b>0</b></td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: dark green]</td><td>[colour: dark green]</td><td>[colour: dark green]</td><td>[colour: pink]</td><td>Reserved, must be 0</td><td></td><td>0</td></tr>
<tr><td rowspan="2">Joystick Port Mode Selection</td><td rowspan="2">■</td><td rowspan="2">■</td><td>0</td><td>[colour: dark green]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: dark green]</td><td>[colour: dark green]</td><td>[colour: dark green]</td><td>[colour: pink]</td><td>Joysticks Enabled</td><td rowspan="2"></td><td rowspan="2">0</td></tr>
<tr><td>1</td><td>[colour: dark green]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: dark green]</td><td>[colour: dark green]</td><td>[colour: dark green]</td><td>[colour: pink]</td><td>I/O Mode Enabled</td></tr>
</tbody>
</table>

¹ The state of output pin 7 is stored internally in a register and is retained across changing modes and while I/O is disabled\
² CTC Ch. 3 is currently used to drive pin 7 in clock mode. Frequency= *f*<sub>CTC3</sub> ÷2\
³ Tx out on pin 7, Rx in from pin 9, CTS_n in from pin 6. CTS_n is only active if the selected UART is in hardware flow control mode\
\* While in I/O mode, keyboard joystick types (Sinclair, Cursor etc) produce no readings but the current state of pins can still be read via the Kempston ports. When leaving I/O mode, joystick operation resumes after approximately 64 scanlines have passed

#### NextREG 14 (0Eh) – Core Version (Sub minor number)

<table>
<thead>
<tr><th rowspan="2">Group Name</th><th rowspan="2">R</th><th rowspan="2">W</th><th colspan="8">Data Bits</th><th rowspan="2">Description</th><th rowspan="2">H</th><th rowspan="2">D</th></tr>
<tr><th>7</th><th>6</th><th>5</th><th>4</th><th>3</th><th>2</th><th>1</th><th>0</th></tr>
</thead>
<tbody>
<tr><td>Sub Minor Number</td><td>■</td><td></td><td>•</td><td>•</td><td>•</td><td>•</td><td>•</td><td>•</td><td>•</td><td>•</td><td>Core Sub Minor Version Number</td><td></td><td></td></tr>
</tbody>
</table>

See **NextREG 01 (01h)** for Major and Minor Core Version

#### NextREG 15 (0Fh) – Board ID

<table>
<thead>
<tr><th rowspan="2">Group Name</th><th rowspan="2">R</th><th rowspan="2">W</th><th colspan="8">Data Bits</th><th rowspan="2">Description</th><th rowspan="2">H</th><th rowspan="2">D</th></tr>
<tr><th>7</th><th>6</th><th>5</th><th>4</th><th>3</th><th>2</th><th>1</th><th>0</th></tr>
</thead>
<tbody>
<tr><td rowspan="3">Board Revision</td><td rowspan="3">■</td><td rowspan="3"></td><td>[colour: dark green]</td><td>[colour: dark green]</td><td>[colour: dark green]</td><td>[colour: dark green]</td><td>0</td><td>0</td><td>0</td><td>0</td><td>ZX Spectrum Next Issue 2¹</td><td></td><td rowspan="3"></td></tr>
<tr><td>[colour: dark green]</td><td>[colour: dark green]</td><td>[colour: dark green]</td><td>[colour: dark green]</td><td>0</td><td>0</td><td>0</td><td>1</td><td>ZX Spectrum Next Issue 3¹</td><td></td></tr>
<tr><td>[colour: dark green]</td><td>[colour: dark green]</td><td>[colour: dark green]</td><td>[colour: dark green]</td><td>0</td><td>0</td><td>1</td><td>0</td><td>ZX Spectrum Next Issue 4²</td><td></td></tr>
<tr><td>Reserved</td><td>■</td><td></td><td>[colour: dark green] <b>0</b></td><td>[colour: dark green] <b>0</b></td><td>[colour: dark green] <b>0</b></td><td>[colour: dark green] <b>0</b></td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>Reserved</td><td></td><td></td></tr>
</tbody>
</table>

¹ XC6SLX16-2FTG256, 128 Mbit W25Q128JV Flash, 24-bit SPI, 64K\*8 Core size\
² XC7A15T-1CSG324, 256 Mbit MX25L25645G Flash, 32-bit SPI, 64K\*34 Core size

#### [?]

<table>
<thead>
<tr><th>Group Name</th><th>R</th><th>W</th><th>7</th><th>6</th><th>5</th><th>4</th><th>3</th><th>2</th><th>1</th><th>0</th><th>Description</th><th>H</th><th>[?]</th></tr>
</thead>
<tbody>
<tr><td>NMI Button State Flag</td><td>■</td><td></td><td>[colour: dark green]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>•</td><td>NMI Button Pressed</td><td></td><td>[?]</td></tr>
<tr><td>Drive Button State Flag</td><td>■</td><td rowspan="2"></td><td>[colour: dark green]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>•</td><td>[colour: pink]</td><td>Drive Button Pressed</td><td></td><td rowspan="2">[?]</td></tr>
<tr><td></td><td>■</td><td>[colour: dark green]</td><td>•</td><td>•</td><td>•</td><td>•</td><td>•</td><td>[colour: pink]</td><td>[colour: pink]</td><td>Core ID (0-31)</td><td></td></tr>
<tr><td>Reserved</td><td>■</td><td></td><td>[colour: dark green] <b>0</b></td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>Reserved, must be 0</td><td></td><td>[?]</td></tr>
<tr><td>Core ID</td><td></td><td>■</td><td>[colour: pink]</td><td>[colour: dark green]</td><td>[colour: dark green]</td><td>•</td><td>•</td><td>•</td><td>•</td><td>•</td><td>Core ID (0-31)</td><td>♦</td><td>[?]</td></tr>
<tr><td>Reserved</td><td></td><td>■</td><td>[colour: pink]</td><td>[colour: dark green] <b>0</b></td><td>[colour: dark green] <b>0</b></td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>Reserved, must be 0</td><td></td><td>[?]</td></tr>
<tr><td>Start Core</td><td></td><td>■</td><td>•</td><td>[colour: dark green]</td><td>[colour: dark green]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>Reboot FPGA using selected core</td><td></td><td>[?]</td></tr>
</tbody>
</table>

Core ID with **D0** through **D4** can be set in configuration mode only

#### NextREG 17 (11h) – Video Timing

<table>
<thead>
<tr><th rowspan="2">Group Name</th><th rowspan="2">R</th><th rowspan="2">W</th><th colspan="8">Data Bits</th><th rowspan="2">Description</th><th rowspan="2">H</th><th rowspan="2">[?]</th></tr>
<tr><th>7</th><th>6</th><th>5</th><th>4</th><th>3</th><th>2</th><th>1</th><th>0</th></tr>
</thead>
<tbody>
<tr><td rowspan="8">VGA Timing</td><td rowspan="8">■</td><td rowspan="8">■</td><td>[colour: dark green]</td><td>[colour: dark green]</td><td>[colour: dark green]</td><td>[colour: dark green]</td><td>[colour: dark green]</td><td>0</td><td>0</td><td>0</td><td>Base VGA timing, clk28 = 28000000</td><td rowspan="8">♦</td><td rowspan="8">[?]</td></tr>
<tr><td>[colour: dark green]</td><td>[colour: dark green]</td><td>[colour: dark green]</td><td>[colour: dark green]</td><td>[colour: dark green]</td><td>0</td><td>0</td><td>1</td><td>VGA setting 1, clk28 = 28571429</td></tr>
<tr><td>[colour: dark green]</td><td>[colour: dark green]</td><td>[colour: dark green]</td><td>[colour: dark green]</td><td>[colour: dark green]</td><td>0</td><td>1</td><td>0</td><td>VGA setting 2, clk28 = 29464286</td></tr>
<tr><td>[colour: dark green]</td><td>[colour: dark green]</td><td>[colour: dark green]</td><td>[colour: dark green]</td><td>[colour: dark green]</td><td>0</td><td>1</td><td>1</td><td>VGA setting 3, clk28 = 30000000</td></tr>
<tr><td>[colour: dark green]</td><td>[colour: dark green]</td><td>[colour: dark green]</td><td>[colour: dark green]</td><td>[colour: dark green]</td><td>1</td><td>0</td><td>0</td><td>VGA setting 4, clk28 = 31000000</td></tr>
<tr><td>[colour: dark green]</td><td>[colour: dark green]</td><td>[colour: dark green]</td><td>[colour: dark green]</td><td>[colour: dark green]</td><td>1</td><td>0</td><td>1</td><td>VGA setting 5, clk28 = 32000000</td></tr>
<tr><td>[colour: dark green]</td><td>[colour: dark green]</td><td>[colour: dark green]</td><td>[colour: dark green]</td><td>[colour: dark green]</td><td>1</td><td>1</td><td>0</td><td>VGA setting 6, clk28 = 33000000</td></tr>
<tr><td>[colour: dark green]</td><td>[colour: dark green]</td><td>[colour: dark green]</td><td>[colour: dark green]</td><td>[colour: dark green]</td><td>1</td><td>1</td><td>1</td><td>Digital, clk28 =27000000</td></tr>
<tr><td>Reserved</td><td>■</td><td>■</td><td>[colour: dark green] <b>0</b></td><td>[colour: dark green] <b>0</b></td><td>[colour: dark green] <b>0</b></td><td>[colour: dark green] <b>0</b></td><td>[colour: dark green] <b>0</b></td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>Reserved, must be 0</td><td></td><td>[?]</td></tr>
</tbody>
</table>

50 Hz / 60 Hz depends on **NextREG 05 (05h):D2**\
NextREG writable in configuration mode only

#### NextREG 18 (12h) – Layer 2 Active RAM Bank

<table>
<thead>
<tr><th rowspan="2">Group Name</th><th rowspan="2">R</th><th rowspan="2">W</th><th colspan="8">Data Bits</th><th rowspan="2">Description</th><th rowspan="2">H</th><th rowspan="2">[?]</th></tr>
<tr><th>7</th><th>6</th><th>5</th><th>4</th><th>3</th><th>2</th><th>1</th><th>0</th></tr>
</thead>
<tbody>
<tr><td>Layer 2 Active RAM Bank</td><td>■</td><td>■</td><td>[colour: dark green]</td><td>•</td><td>•</td><td>•</td><td>•</td><td>•</td><td>•</td><td>•</td><td>Starting 16K RAM Bank</td><td></td><td>[?]</td></tr>
<tr><td>Reserved</td><td>■</td><td>■</td><td>[colour: dark green] <b>0</b></td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>Reserved, must be 0</td><td></td><td>[?]</td></tr>
</tbody>
</table>

Soft reset resets the default to **8**. NextZXOS changes that to **9**

#### NextREG 19 (13h) – Layer 2 Shadow RAM Bank

<table>
<thead>
<tr><th rowspan="2">Group Name</th><th rowspan="2">R</th><th rowspan="2">W</th><th colspan="8">Data Bits</th><th rowspan="2">Description</th><th rowspan="2">H</th><th rowspan="2">[?]</th></tr>
<tr><th>7</th><th>6</th><th>5</th><th>4</th><th>3</th><th>2</th><th>1</th><th>0</th></tr>
</thead>
<tbody>
<tr><td>Layer 2 Shadow RAM Bank</td><td>■</td><td>■</td><td>[colour: dark green]</td><td>•</td><td>•</td><td>•</td><td>•</td><td>•</td><td>•</td><td>•</td><td>Starting 16K RAM Bank</td><td></td><td>[?]</td></tr>
<tr><td>Reserved</td><td>■</td><td>■</td><td>[colour: dark green] <b>0</b></td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>Reserved, must be 0</td><td></td><td>[?]</td></tr>
</tbody>
</table>

Soft reset resets the default to **11**. NextZXOS changes that to **12**

#### NextREG 20 (14h) – Global Transparency Colour

<table>
<thead>
<tr><th rowspan="2">Group Name</th><th rowspan="2">R</th><th rowspan="2">W</th><th colspan="8">Data Bits</th><th rowspan="2">Description</th><th rowspan="2">H</th><th rowspan="2">[?]</th></tr>
<tr><th>7</th><th>6</th><th>5</th><th>4</th><th>3</th><th>2</th><th>1</th><th>0</th></tr>
</thead>
<tbody>
<tr><td>Global Transparency Mask</td><td>■</td><td>■</td><td>•</td><td>•</td><td>•</td><td>•</td><td>•</td><td>•</td><td>•</td><td>•</td><td>8-bit colour value</td><td></td><td>[?]</td></tr>
</tbody>
</table>

Default value upon soft reset is **E3h** (227)\
This value is 8-bit; the transparency colour is compared against the MSB of the actual 9-bi[?] colour; as such, two colours (with either value of B<sub>0</sub>) are made transparent\
This setting only applies to Layer 2, Layer 0 and Layer 1. Sprites use **NextREG 75 (4Bh)** and Layer 3 uses **NextREG 76 (4Ch)** for transparency except in text mode

#### NextREG 21 (15h) – Sprite and Layer System Setup

<table>
<thead>
<tr><th rowspan="2">Group Name</th><th rowspan="2">R</th><th rowspan="2">W</th><th colspan="8">Data Bits</th><th rowspan="2">Description</th><th rowspan="2">H</th><th rowspan="2">[?]</th></tr>
<tr><th>7</th><th>6</th><th>5</th><th>4</th><th>3</th><th>2</th><th>1</th><th>0</th></tr>
</thead>
<tbody>
<tr><td>Sprite Engine Control</td><td>■</td><td>■</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>•</td><td>Enable Sprites</td><td></td><td>[?]</td></tr>
<tr><td>Sprite Extended Area Control</td><td>■</td><td>■</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>•</td><td>[colour: pink]</td><td>Enable Sprites over border</td><td></td><td>[?]</td></tr>
<tr><td rowspan="8">Set Layer Priority</td><td rowspan="8">■</td><td rowspan="8">■</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td><b>0</b></td><td><b>0</b></td><td><b>0</b></td><td>[colour: pink]</td><td>[colour: pink]</td><td>S L U</td><td rowspan="8"></td><td rowspan="8">[?]</td></tr>
<tr><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>0</td><td>0</td><td>1</td><td>[colour: pink]</td><td>[colour: pink]</td><td>L S U</td></tr>
<tr><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>0</td><td>1</td><td>0</td><td>[colour: pink]</td><td>[colour: pink]</td><td>S U L</td></tr>
<tr><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>0</td><td>1</td><td>1</td><td>[colour: pink]</td><td>[colour: pink]</td><td>L U S</td></tr>
<tr><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>1</td><td>0</td><td>0</td><td>[colour: pink]</td><td>[colour: pink]</td><td>U S L</td></tr>
<tr><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>1</td><td>0</td><td>1</td><td>[colour: pink]</td><td>[colour: pink]</td><td>U L S</td></tr>
<tr><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>1</td><td>1</td><td>0</td><td>[colour: pink]</td><td>[colour: pink]</td><td>(U|T)S(T|U)(B+L) combined¹</td></tr>
<tr><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>1</td><td>1</td><td>1</td><td>[colour: pink]</td><td>[colour: pink]</td><td>(U|T)S(T|U)(B+L) combined¹</td></tr>
<tr><td>Sprite Border Clipping</td><td>■</td><td>■</td><td>[colour: pink]</td><td>[colour: pink]</td><td>•</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>Enable Sprite Clipping in over border mode</td><td></td><td>[?]</td></tr>
<tr><td rowspan="2">Sprite Priority</td><td rowspan="2">■</td><td rowspan="2">■</td><td>[colour: pink]</td><td><b>0</b></td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>Sprite 127 on top</td><td rowspan="2"></td><td rowspan="2">[?]</td></tr>
<tr><td>[colour: pink]</td><td>1</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>Sprite 0 on top</td></tr>
<tr><td>LoRes Control</td><td>■</td><td>■</td><td>•</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>Enable LoRes</td><td></td><td>[?]</td></tr>
</tbody>
</table>

1 Colours Clamped to [0,7]\
ULA means all ULA modes: Layers 0 and all Layer 1 types. Value upon soft reset is **000**

#### NextREG 22 (16h) – Layer 2 Horizontal Scroll Control LSB

<table>
<thead>
<tr><th rowspan="2">Group Name</th><th rowspan="2">R</th><th rowspan="2">W</th><th colspan="8">Data Bits</th><th rowspan="2">Description</th><th rowspan="2">H</th><th rowspan="2">[?]</th></tr>
<tr><th>7</th><th>6</th><th>5</th><th>4</th><th>3</th><th>2</th><th>1</th><th>0</th></tr>
</thead>
<tbody>
<tr><td>X Offset LSB</td><td>■</td><td>■</td><td>•</td><td>•</td><td>•</td><td>•</td><td>•</td><td>•</td><td>•</td><td>•</td><td>8-bit value of X Offset LSB (0 – 511)</td><td></td><td>[?]</td></tr>
</tbody>
</table>

MSB is in **NextREG 113 (71h)**

#### NextREG 23 (17h) – Layer 2 Vertical Scroll Control

<table>
<thead>
<tr><th rowspan="2">Group Name</th><th rowspan="2">R</th><th rowspan="2">W</th><th colspan="8">Data Bits</th><th rowspan="2">Description</th><th rowspan="2">H</th><th rowspan="2">[?]</th></tr>
<tr><th>7</th><th>6</th><th>5</th><th>4</th><th>3</th><th>2</th><th>1</th><th>0</th></tr>
</thead>
<tbody>
<tr><td>Y Offset</td><td>■</td><td>■</td><td>•</td><td>•</td><td>•</td><td>•</td><td>•</td><td>•</td><td>•</td><td>•</td><td>8-bit value of Y Offset</td><td></td><td>[?]</td></tr>
</tbody>
</table>

#### NextREG 24 (18h) – Layer 2 Clip Window Definition

<table>
<thead>
<tr><th rowspan="2">Group Name</th><th rowspan="2">R</th><th rowspan="2">W</th><th colspan="8">Data Bits</th><th rowspan="2">Description</th><th rowspan="2">H</th><th rowspan="2">[?]</th></tr>
<tr><th>7</th><th>6</th><th>5</th><th>4</th><th>3</th><th>2</th><th>1</th><th>0</th></tr>
</thead>
<tbody>
<tr><td>Coordinate (X<sub>beg</sub>,X<sub>end</sub>,Y<sub>beg</sub>,Y<sub>end</sub>)</td><td>■</td><td>■</td><td>•</td><td>•</td><td>•</td><td>•</td><td>•</td><td>•</td><td>•</td><td>•</td><td>8-bit value of X<sub>beg</sub>,X<sub>end</sub>,Y<sub>beg</sub>,Y<sub>end</sub> coordinate¹</td><td></td><td>[?]</td></tr>
</tbody>
</table>

¹ 1<sup>st</sup> Write **X**<sub>beg</sub> position – \*Resets to **0**\
2<sup>nd</sup> Write **X**<sub>end</sub> position – \*Resets to **255**\
3<sup>rd</sup> Write **Y**<sub>beg</sub> position – \*Resets to **0**\
4<sup>rh</sup> Write **Y**<sub>end</sub> position – \*Resets to **191**\
Reads do not advance the clip coordinate – Use **NR 28 (1Ch)** to find out the current clip coordinate or to set the clip coordinate to X<sub>beg</sub>. The **X** coordinates are internally doubled fo[?] higher resolution modes. This means that X<sub>end</sub> =159 covers the full **320** resolution.

<!-- PDF page 236 -->

#### [?]

<table>
<thead>
<tr><th>Group Name</th><th>R</th><th>W</th><th>7</th><th>6</th><th>5</th><th>4</th><th>3</th><th>2</th><th>1</th><th>0</th><th>Description</th><th>H</th><th>D</th></tr>
</thead>
<tbody>
<tr><td>Coordinate (X<sub>beg</sub>,X<sub>end</sub>,Y<sub>beg</sub>,Y<sub>end</sub>)</td><td>■</td><td>■</td><td>•</td><td>•</td><td>•</td><td>•</td><td>•</td><td>•</td><td>•</td><td>•</td><td>8-bit value X<sub>beg</sub>,X<sub>end</sub>,Y<sub>beg</sub>,Y<sub>end</sub> coordinate¹</td><td></td><td>*</td></tr>
</tbody>
</table>

1 1<sup>st</sup> Write **X**<sub>beg</sub> position – \*Resets to **0**\
2<sup>nd</sup> Write **X**<sub>end</sub> position – \*Resets to **255**\
3<sup>rd</sup> Write **Y**<sub>beg</sub> position – \*Resets to **0**\
4<sup>rh</sup> Write **Y**<sub>end</sub> position – \*Resets to **191**\
Reads do not advance the clip position – Use **NR 28 (1Ch) D2:D3** to read the position. If need be, write to **NR 28 (1Ch):D1** to reset the clip index. When the clip window is enabled for sprites in **over border** mode, the **X** coordinates are internally doubled and the clip window origin is moved to the sprite origin inside the border

#### NextREG 26 (1Ah) – Layer 0 (ULA/LoRes) Clip Window Definition

<table>
<thead>
<tr><th rowspan="2">Group Name</th><th rowspan="2">R</th><th rowspan="2">W</th><th colspan="8">Data Bits</th><th rowspan="2">Description</th><th rowspan="2">H</th><th rowspan="2">D</th></tr>
<tr><th>7</th><th>6</th><th>5</th><th>4</th><th>3</th><th>2</th><th>1</th><th>0</th></tr>
</thead>
<tbody>
<tr><td>Coordinate (X<sub>beg</sub>,X<sub>end</sub>,Y<sub>beg</sub>,Y<sub>end</sub>)</td><td>■</td><td>■</td><td>•</td><td>•</td><td>•</td><td>•</td><td>•</td><td>•</td><td>•</td><td>•</td><td>8-bit value X<sub>beg</sub>,X<sub>end</sub>,Y<sub>beg</sub>,Y<sub>end</sub> coordinate¹</td><td></td><td>*</td></tr>
</tbody>
</table>

1 1<sup>st</sup> Write **X**<sub>beg</sub> position – \*Resets to **0**\
2<sup>nd</sup> Write **X**<sub>end</sub> position – \*Resets to **255**\
3<sup>rd</sup> Write **Y**<sub>beg</sub> position – \*Resets to **0**\
4<sup>rh</sup> Write **Y**<sub>end</sub> position – \*Resets to **191**\
Reads do not advance the clip position – Use **NR 28 (1Ch) D4:D5** to read the position. If need be, write to **NR 28 (1Ch):D2** to reset the clip index\
**NOTE:** LoRes may get a separate clip window in the future

#### NextREG 27 (1Bh) – Layer 3 (Tilemap) Clip Window Definition

<table>
<thead>
<tr><th rowspan="2">Group Name</th><th rowspan="2">R</th><th rowspan="2">W</th><th colspan="8">Data Bits</th><th rowspan="2">Description</th><th rowspan="2">H</th><th rowspan="2">D</th></tr>
<tr><th>7</th><th>6</th><th>5</th><th>4</th><th>3</th><th>2</th><th>1</th><th>0</th></tr>
</thead>
<tbody>
<tr><td>Coordinate (X<sub>beg</sub>,X<sub>end</sub>,Y<sub>beg</sub>,Y<sub>end</sub>)</td><td>■</td><td>■</td><td>•</td><td>•</td><td>•</td><td>•</td><td>•</td><td>•</td><td>•</td><td>•</td><td>8-bit value X<sub>beg</sub>,X<sub>end</sub>,Y<sub>beg</sub>,Y<sub>end</sub> coordinate¹</td><td></td><td>*</td></tr>
</tbody>
</table>

¹ 1<sup>st</sup> Write **X**<sub>beg</sub> position – \*Resets to **0**\
2<sup>nd</sup> Write **X**<sub>end</sub> position – \*Resets to **159**\
3<sup>rd</sup> Write **Y**<sub>beg</sub> position – \*Resets to **0**\
4<sup>rh</sup> Write **Y**<sub>end</sub> position – \*Resets to **255**\
Reads do not advance the clip position – **NR 28 (1Ch) D6:D7** reads the position. If need be, write to **NR 28 (1Ch):D3** to reset the clip index and then do consecutive writes and reads to get to the value you're searching for. The **X** coordinates are internally doubled

#### NextREG 28 (1Ch) – Clip Windows Control

<table>
<thead>
<tr><th rowspan="2">Group Name</th><th rowspan="2">R</th><th rowspan="2">W</th><th colspan="8">Data Bits</th><th rowspan="2">Description</th><th rowspan="2">H</th><th rowspan="2">D</th></tr>
<tr><th>7</th><th>6</th><th>5</th><th>4</th><th>3</th><th>2</th><th>1</th><th>0</th></tr>
</thead>
<tbody>
<tr><td>Layer 2 Clip Index</td><td>■</td><td></td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>•</td><td>•</td><td>Layer 2 Clip Index (0 – 3)</td><td></td><td></td></tr>
<tr><td>Sprites Layer Clip Index</td><td>■</td><td></td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>•</td><td>•</td><td>[colour: pink]</td><td>[colour: pink]</td><td>Sprites Clip Index (0 – 3)</td><td></td><td></td></tr>
<tr><td>Layer 0 / 1 Clip Index</td><td>■</td><td></td><td>[colour: pink]</td><td>[colour: pink]</td><td>•</td><td>•</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>ULA / Timex Clip Index (0 – 3)</td><td></td><td></td></tr>
<tr><td>Layer 3 Clip Index</td><td>■</td><td></td><td>•</td><td>•</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>Tilemap Clip Index (0 – 3)</td><td></td><td></td></tr>
<tr><td>Reserved</td><td></td><td>■</td><td>[colour: dark green] <b>0</b></td><td>[colour: dark green] <b>0</b></td><td>[colour: dark green] <b>0</b></td><td>[colour: dark green] <b>0</b></td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>Reserved, must be 0</td><td></td><td></td></tr>
<tr><td>Layer 2 Clip Index Reset enable</td><td></td><td>■</td><td>[colour: dark green]</td><td>[colour: dark green]</td><td>[colour: dark green]</td><td>[colour: dark green]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>•</td><td>1 to Reset the Layer 2 Clip Index</td><td></td><td></td></tr>
<tr><td>Sprites Clip Index Reset enable</td><td></td><td>■</td><td>[colour: dark green]</td><td>[colour: dark green]</td><td>[colour: dark green]</td><td>[colour: dark green]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>•</td><td>[colour: pink]</td><td>1 to Reset the Sprites Clip Index</td><td></td><td></td></tr>
<tr><td>Layer 0/1 Clip Idx Reset enable</td><td></td><td>■</td><td>[colour: dark green]</td><td>[colour: dark green]</td><td>[colour: dark green]</td><td>[colour: dark green]</td><td>[colour: pink]</td><td>•</td><td>[colour: pink]</td><td>[colour: pink]</td><td>1 to Reset the ULA/Timex Clip Index</td><td></td><td></td></tr>
<tr><td>Layer 3 Clip Idx Reset enable</td><td></td><td>■</td><td>[colour: dark green]</td><td>[colour: dark green]</td><td>[colour: dark green]</td><td>[colour: dark green]</td><td>•</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>1 to Reset the Tilemap Clip Index</td><td></td><td></td></tr>
</tbody>
</table>

**NOTE:** This NextREG may change in the future

#### NextREG 30 (1Eh) – Active Video Line MSB

<table>
<thead>
<tr><th rowspan="2">Group Name</th><th rowspan="2">R</th><th rowspan="2">W</th><th colspan="8">Data Bits</th><th rowspan="2">Description</th><th rowspan="2">H</th><th rowspan="2">D</th></tr>
<tr><th>7</th><th>6</th><th>5</th><th>4</th><th>3</th><th>2</th><th>1</th><th>0</th></tr>
</thead>
<tbody>
<tr><td>Active Video Line (MSB)</td><td>■</td><td></td><td>[colour: dark green]</td><td>[colour: dark green]</td><td>[colour: dark green]</td><td>[colour: dark green]</td><td>[colour: dark green]</td><td>[colour: dark green]</td><td>[colour: dark green]</td><td>•</td><td>1 for lines above 255 else 0</td><td></td><td></td></tr>
<tr><td>Reserved</td><td>■</td><td></td><td>[colour: dark green] <b>0</b></td><td>[colour: dark green] <b>0</b></td><td>[colour: dark green] <b>0</b></td><td>[colour: dark green] <b>0</b></td><td>[colour: dark green] <b>0</b></td><td>[colour: dark green] <b>0</b></td><td>[colour: dark green] <b>0</b></td><td>[colour: pink]</td><td>Reserved, must be 0</td><td></td><td></td></tr>
</tbody>
</table>

#### NextREG 31 (1Fh) – Active Video Line LSB

<table>
<thead>
<tr><th rowspan="2">Group Name</th><th rowspan="2">R</th><th rowspan="2">W</th><th colspan="8">Data Bits</th><th rowspan="2">Description</th><th rowspan="2">H</th><th rowspan="2">D</th></tr>
<tr><th>7</th><th>6</th><th>5</th><th>4</th><th>3</th><th>2</th><th>1</th><th>0</th></tr>
</thead>
<tbody>
<tr><td>Active Video Line (LSB)</td><td>■</td><td></td><td>•</td><td>•</td><td>•</td><td>•</td><td>•</td><td>•</td><td>•</td><td>•</td><td>Active Video Line (LSB)</td><td></td><td></td></tr>
</tbody>
</table>

#### NextREG 32 (20h) – Maskable Interrupt Generation

<table>
<thead>
<tr><th rowspan="2">Group Name</th><th rowspan="2">R</th><th rowspan="2">W</th><th colspan="8">Data Bits</th><th rowspan="2">Description</th><th rowspan="2">H</th><th rowspan="2">D</th></tr>
<tr><th>7</th><th>6</th><th>5</th><th>4</th><th>3</th><th>2</th><th>1</th><th>0</th></tr>
</thead>
<tbody>
<tr><td rowspan="5">CTC</td><td rowspan="5">■</td><td rowspan="5">■</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: dark green]</td><td>[colour: dark green]</td><td>0</td><td>0</td><td>0</td><td>0</td><td>No CTC interrupt generated</td><td rowspan="5"></td><td rowspan="5"></td></tr>
<tr><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: dark green]</td><td>[colour: dark green]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>•</td><td>Generate CTC 0 interrupt</td></tr>
<tr><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: dark green]</td><td>[colour: dark green]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>•</td><td>[colour: pink]</td><td>Generate CTC 1 interrupt</td></tr>
<tr><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: dark green]</td><td>[colour: dark green]</td><td>[colour: pink]</td><td>•</td><td>[colour: pink]</td><td>[colour: pink]</td><td>Generate CTC 2 interrupt</td></tr>
<tr><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: dark green]</td><td>[colour: dark green]</td><td>•</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>Generate CTC 3 interrupt</td></tr>
<tr><td>Reserved</td><td>■</td><td>■</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: dark green] <b>0</b></td><td>[colour: dark green] <b>0</b></td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>Reserved, must be 0</td><td></td><td></td></tr>
<tr><td>ULA</td><td>■</td><td>■</td><td>[colour: pink]</td><td>•</td><td>[colour: dark green]</td><td>[colour: dark green]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>Generate ULA interrupt</td><td></td><td></td></tr>
<tr><td>Line</td><td>■</td><td>■</td><td>•</td><td>[colour: pink]</td><td>[colour: dark green]</td><td>[colour: dark green]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>Generate Line interrupt</td><td></td><td></td></tr>
</tbody>
</table>

\* Set bits on **R** indicate whether an interrupt occurred or is pending – alias of bits in **NextREGs 200 - 202 (C8h - CAh)**\
\* Set bits on **W** always generate a maskable interrupt ignoring enables – **NextREGs 196 - 198 (C4h - C6h)**

#### NextREG 34 (22h) – Line Interrupt Control

<table>
<thead>
<tr><th rowspan="2">Group Name</th><th rowspan="2">R</th><th rowspan="2">W</th><th colspan="8">Data Bits</th><th rowspan="2">Description</th><th rowspan="2">H</th><th rowspan="2">D</th></tr>
<tr><th>7</th><th>6</th><th>5</th><th>4</th><th>3</th><th>2</th><th>1</th><th>0</th></tr>
</thead>
<tbody>
<tr><td>Line Interrupt Value MSB</td><td>■</td><td>■</td><td>[colour: dark green]</td><td>[colour: dark green]</td><td>[colour: dark green]</td><td>[colour: dark green]</td><td>[colour: dark green]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>•</td><td>MSB of line number</td><td></td><td>0</td></tr>
<tr><td>Line Interrupt Control</td><td>■</td><td>■</td><td>[colour: dark green]</td><td>[colour: dark green]</td><td>[colour: dark green]</td><td>[colour: dark green]</td><td>[colour: dark green]</td><td>[colour: pink]</td><td>•</td><td>[colour: pink]</td><td>Enable Line Interrupt*</td><td></td><td>0</td></tr>
<tr><td>ULA Interrupt Control</td><td>■</td><td>■</td><td>[colour: dark green]</td><td>[colour: dark green]</td><td>[colour: dark green]</td><td>[colour: dark green]</td><td>[colour: dark green]</td><td>•</td><td>[colour: pink]</td><td>[colour: pink]</td><td>Disable ULA Interrupt*</td><td></td><td>0</td></tr>
<tr><td rowspan="2">Reserved</td><td></td><td>■</td><td>[colour: dark green] <b>0</b></td><td>[colour: dark green] <b>0</b></td><td>[colour: dark green] <b>0</b></td><td>[colour: dark green] <b>0</b></td><td>[colour: dark green] <b>0</b></td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>Reserved, must be 0</td><td></td><td></td></tr>
<tr><td>■</td><td></td><td>[colour: light green]</td><td>[colour: dark green] <b>0</b></td><td>[colour: dark green] <b>0</b></td><td>[colour: dark green] <b>0</b></td><td>[colour: dark green] <b>0</b></td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>Reserved, must be 0</td><td></td><td></td></tr>
<tr><td>ULA Interrupt Signal</td><td>■</td><td></td><td>•</td><td>[colour: dark green]</td><td>[colour: dark green]</td><td>[colour: dark green]</td><td>[colour: dark green]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>ULA is currently asserting interrupt</td><td></td><td></td></tr>
</tbody>
</table>

\* Aliases of interrupt enable bits in **NextREG 196 (C4h)**

#### NextREG 35 (23h) – Line Interrupt Value LSB

<table>
<thead>
<tr><th rowspan="2">Group Name</th><th rowspan="2">R</th><th rowspan="2">W</th><th colspan="8">Data Bits</th><th rowspan="2">Description</th><th rowspan="2">H</th><th rowspan="2">D</th></tr>
<tr><th>7</th><th>6</th><th>5</th><th>4</th><th>3</th><th>2</th><th>1</th><th>0</th></tr>
</thead>
<tbody>
<tr><td>Line Interrupt Value LSB</td><td>■</td><td>■</td><td>•</td><td>•</td><td>•</td><td>•</td><td>•</td><td>•</td><td>•</td><td>•</td><td>Lower 8-bits of line number</td><td></td><td>0</td></tr>
</tbody>
</table>

#### NextREG 36 (24h) – Reserved

Protection against **OUT 3Bh, A** – See DISCiPLE disk interface for example.\
In legacy modes set selected **NextREG** to **36 (24h)**

#### [?]

<table>
<thead>
<tr><th>Group Name</th><th>R</th><th>W</th><th>7</th><th>6</th><th>5</th><th>4</th><th>3</th><th>2</th><th>1</th><th>0</th><th>Description</th><th>H</th><th>D</th></tr>
</thead>
<tbody>
<tr><td>X Offset</td><td>■</td><td>■</td><td>•</td><td>•</td><td>•</td><td>•</td><td>•</td><td>•</td><td>•</td><td>•</td><td>8-bit value of X Offset (0-255)</td><td></td><td>0</td></tr>
</tbody>
</table>

This setting refers to all ULA modes **except** Layer 1,0 – LoRes\
**NextREG 104 (68h):D2** adds a half pixel to the scroll

#### NextREG 39 (27h) – ULA Vertical Scroll Control

<table>
<thead>
<tr><th rowspan="2">Group Name</th><th rowspan="2">R</th><th rowspan="2">W</th><th colspan="8">Data Bits</th><th rowspan="2">Description</th><th rowspan="2">H</th><th rowspan="2">D</th></tr>
<tr><th>7</th><th>6</th><th>5</th><th>4</th><th>3</th><th>2</th><th>1</th><th>0</th></tr>
</thead>
<tbody>
<tr><td>Y Offset</td><td>■</td><td>■</td><td>•</td><td>•</td><td>•</td><td>•</td><td>•</td><td>•</td><td>•</td><td>•</td><td>8-bit value of Y Offset (0-191)</td><td></td><td>0</td></tr>
</tbody>
</table>

This setting refers to all ULA modes **except** Layer 1,0 – LoRes

#### NextREG 40 (28h) – Stored Palette Value and PS/2 Keymap Address MSB

<table>
<thead>
<tr><th rowspan="2">Group Name</th><th rowspan="2">R</th><th rowspan="2">W</th><th colspan="8">Data Bits</th><th rowspan="2">Description</th><th rowspan="2">H</th><th rowspan="2">D</th></tr>
<tr><th>7</th><th>6</th><th>5</th><th>4</th><th>3</th><th>2</th><th>1</th><th>0</th></tr>
</thead>
<tbody>
<tr><td>Stored Palette value</td><td>■</td><td></td><td>•</td><td>•</td><td>•</td><td>•</td><td>•</td><td>•</td><td>•</td><td>•</td><td>See NextREG 68 (44h)</td><td></td><td></td></tr>
<tr><td>PS/2 Keymap Address MSB</td><td></td><td>■</td><td>[colour: pink]</td><td>[colour: dark green]</td><td>[colour: dark green]</td><td>[colour: dark green]</td><td>[colour: dark green]</td><td>[colour: dark green]</td><td>[colour: dark green]</td><td>•</td><td>MSB of value in NR 41 (29h)</td><td></td><td></td></tr>
<tr><td rowspan="2">Keymap Selection</td><td rowspan="2"></td><td rowspan="2">■</td><td>0</td><td>[colour: dark green]</td><td>[colour: dark green]</td><td>[colour: dark green]</td><td>[colour: dark green]</td><td>[colour: dark green]</td><td>[colour: dark green]</td><td>[colour: pink]</td><td>Select PS/2 Keymap</td><td rowspan="2"></td><td rowspan="2">0</td></tr>
<tr><td>1</td><td>[colour: dark green]</td><td>[colour: dark green]</td><td>[colour: dark green]</td><td>[colour: dark green]</td><td>[colour: dark green]</td><td>[colour: dark green]</td><td>[colour: pink]</td><td>Select key joystick</td></tr>
<tr><td>Reserved</td><td></td><td>■</td><td>[colour: pink]</td><td>[colour: dark green] <b>0</b></td><td>[colour: dark green] <b>0</b></td><td>[colour: dark green] <b>0</b></td><td>[colour: dark green] <b>0</b></td><td>[colour: dark green] <b>0</b></td><td>[colour: dark green] <b>0</b></td><td>[colour: pink]</td><td>Reserved, must be 0</td><td></td><td></td></tr>
</tbody>
</table>

#### NextREG 41 (29h) – PS/2 Keymap Address LSB

<table>
<thead>
<tr><th rowspan="2">Group Name</th><th rowspan="2">R</th><th rowspan="2">W</th><th colspan="8">Data Bits</th><th rowspan="2">Description</th><th rowspan="2">H</th><th rowspan="2">D</th></tr>
<tr><th>7</th><th>6</th><th>5</th><th>4</th><th>3</th><th>2</th><th>1</th><th>0</th></tr>
</thead>
<tbody>
<tr><td>PS/2 Keymap Address LSB</td><td></td><td>■</td><td>•</td><td>•</td><td>•</td><td>•</td><td>•</td><td>•</td><td>•</td><td>•</td><td>8-bit value (0-255)</td><td></td><td>0</td></tr>
</tbody>
</table>

#### NextREG 42 (2Ah) – PS/2 Keymap Data MSB

<table>
<thead>
<tr><th rowspan="2">Group Name</th><th rowspan="2">R</th><th rowspan="2">W</th><th colspan="8">Data Bits</th><th rowspan="2">Description</th><th rowspan="2">H</th><th rowspan="2">D</th></tr>
<tr><th>7</th><th>6</th><th>5</th><th>4</th><th>3</th><th>2</th><th>1</th><th>0</th></tr>
</thead>
<tbody>
<tr><td>PS/2 Keymap Data MSB</td><td></td><td>■</td><td>[colour: dark green]</td><td>[colour: dark green]</td><td>[colour: dark green]</td><td>[colour: dark green]</td><td>[colour: dark green]</td><td>[colour: dark green]</td><td>[colour: dark green]</td><td>•</td><td>PS/2 Keymap Data MSB*</td><td></td><td></td></tr>
<tr><td>Reserved</td><td></td><td>■</td><td>[colour: dark green] <b>0</b></td><td>[colour: dark green] <b>0</b></td><td>[colour: dark green] <b>0</b></td><td>[colour: dark green] <b>0</b></td><td>[colour: dark green] <b>0</b></td><td>[colour: dark green] <b>0</b></td><td>[colour: dark green] <b>0</b></td><td>[colour: pink]</td><td>Reserved, must be 0</td><td></td><td></td></tr>
</tbody>
</table>

\* Not currently used by hardware. Write **0**

#### NextREG 43 (2Bh) – PS/2 Keymap Data LSB

<table>
<thead>
<tr><th rowspan="2">Group Name</th><th rowspan="2">R</th><th rowspan="2">W</th><th colspan="8">Data Bits</th><th rowspan="2">Description</th><th rowspan="2">H</th><th rowspan="2">D</th></tr>
<tr><th>7</th><th>6</th><th>5</th><th>4</th><th>3</th><th>2</th><th>1</th><th>0</th></tr>
</thead>
<tbody>
<tr><td>PS/2 Keymap Data LSB</td><td></td><td>■</td><td>•</td><td>•</td><td>•</td><td>•</td><td>•</td><td>•</td><td>•</td><td>•</td><td>8-bit value (0-255)</td><td></td><td></td></tr>
</tbody>
</table>

A write causes the data to be written and auto-increments the Keymap Address

#### NextREG 44 (2Ch) – DAC B Mirror (Left) / I²S Left Sample MSB

<table>
<thead>
<tr><th rowspan="2">Group Name</th><th rowspan="2">R</th><th rowspan="2">W</th><th colspan="8">Data Bits</th><th rowspan="2">Description</th><th rowspan="2">H</th><th rowspan="2">D</th></tr>
<tr><th>7</th><th>6</th><th>5</th><th>4</th><th>3</th><th>2</th><th>1</th><th>0</th></tr>
</thead>
<tbody>
<tr><td>I²S Left Sample MSB</td><td>■</td><td></td><td>•</td><td>•</td><td>•</td><td>•</td><td>•</td><td>•</td><td>•</td><td>•</td><td>8-bit value (0-255)</td><td></td><td></td></tr>
<tr><td>8-bit sample Left DAC B</td><td></td><td>■</td><td>•</td><td>•</td><td>•</td><td>•</td><td>•</td><td>•</td><td>•</td><td>•</td><td>8-bit value</td><td></td><td>*</td></tr>
</tbody>
</table>

\* A soft reset sets a value of **128** (**80h**)\
The I²S Left Sample LSB is latched and can be read from **NextREG 45 (2Dh)** later

#### NextREG 45 (2Dh) – DAC A+D Mirror (Mono) / I²S Sample LSB

<table>
<thead>
<tr><th rowspan="2">Group Name</th><th rowspan="2">R</th><th rowspan="2">W</th><th colspan="8">Data Bits</th><th rowspan="2">Description</th><th rowspan="2">H</th><th rowspan="2">D</th></tr>
<tr><th>7</th><th>6</th><th>5</th><th>4</th><th>3</th><th>2</th><th>1</th><th>0</th></tr>
</thead>
<tbody>
<tr><td>I²S Last Sample LSB</td><td>■</td><td></td><td>•</td><td>•</td><td>•</td><td>•</td><td>•</td><td>•</td><td>•</td><td>•</td><td>8-bit value (0-255)</td><td></td><td></td></tr>
<tr><td>8-bit sample DACs A + D</td><td></td><td>■</td><td>•</td><td>•</td><td>•</td><td>•</td><td>•</td><td>•</td><td>•</td><td>•</td><td>8-bit value</td><td></td><td>*</td></tr>
</tbody>
</table>

\* A soft reset sets a value of **128** (**80h**)\
Returns the LSB of last sample read from **NextREG 44(2Ch)** or **NextREG 46(2Eh)**

#### NextREG 46 (2Eh) – DAC C Mirror (Right) / I²S Right Sample MSB

<table>
<thead>
<tr><th rowspan="2">Group Name</th><th rowspan="2">R</th><th rowspan="2">W</th><th colspan="8">Data Bits</th><th rowspan="2">Description</th><th rowspan="2">H</th><th rowspan="2">D</th></tr>
<tr><th>7</th><th>6</th><th>5</th><th>4</th><th>3</th><th>2</th><th>1</th><th>0</th></tr>
</thead>
<tbody>
<tr><td>I²S Right Sample MSB</td><td>■</td><td></td><td>•</td><td>•</td><td>•</td><td>•</td><td>•</td><td>•</td><td>•</td><td>•</td><td>8-bit value (0-255)</td><td></td><td></td></tr>
<tr><td>8-bit sample Right DAC C</td><td></td><td>■</td><td>•</td><td>•</td><td>•</td><td>•</td><td>•</td><td>•</td><td>•</td><td>•</td><td>8-bit value</td><td></td><td>*</td></tr>
</tbody>
</table>

\* A soft reset sets a value of **128** (**80h**)\
The I²S Right Sample LSB is latched and can be read from **NextREG 45 (2Dh)** later

#### NextREG 47 (2Fh) – Layer 3 (Tilemap) Horizontal Scroll Control MSB

<table>
<thead>
<tr><th rowspan="2">Group Name</th><th rowspan="2">R</th><th rowspan="2">W</th><th colspan="8">Data Bits</th><th rowspan="2">Description</th><th rowspan="2">H</th><th rowspan="2">D</th></tr>
<tr><th>7</th><th>6</th><th>5</th><th>4</th><th>3</th><th>2</th><th>1</th><th>0</th></tr>
</thead>
<tbody>
<tr><td>Layer 3 X Scroll Offset MSB</td><td>■</td><td>■</td><td>[colour: dark green]</td><td>[colour: dark green]</td><td>[colour: dark green]</td><td>[colour: dark green]</td><td>[colour: dark green]</td><td>[colour: dark green]</td><td>•</td><td>•</td><td>Tilemap X Scroll Offset MSB</td><td></td><td>0</td></tr>
<tr><td>Reserved</td><td></td><td>■</td><td>[colour: dark green] <b>0</b></td><td>[colour: dark green] <b>0</b></td><td>[colour: dark green] <b>0</b></td><td>[colour: dark green] <b>0</b></td><td>[colour: dark green] <b>0</b></td><td>[colour: dark green] <b>0</b></td><td>[colour: pink]</td><td>[colour: pink]</td><td>Reserved, must be 0</td><td></td><td></td></tr>
</tbody>
</table>

Meaningful range: **0** to **319** in 40 tiles mode, **0** to **639** in 80 tiles mode

#### NextREG 48 (30h) – Layer 3 (Tilemap) Horizontal Scroll Control LSB

<table>
<thead>
<tr><th rowspan="2">Group Name</th><th rowspan="2">R</th><th rowspan="2">W</th><th colspan="8">Data Bits</th><th rowspan="2">Description</th><th rowspan="2">H</th><th rowspan="2">D</th></tr>
<tr><th>7</th><th>6</th><th>5</th><th>4</th><th>3</th><th>2</th><th>1</th><th>0</th></tr>
</thead>
<tbody>
<tr><td>X Offset LSB</td><td>■</td><td>■</td><td>•</td><td>•</td><td>•</td><td>•</td><td>•</td><td>•</td><td>•</td><td>•</td><td>8-bit value (0-255)</td><td></td><td><b>0</b></td></tr>
</tbody>
</table>

Meaningful range: **0** to **319** in 40 tiles mode, **0** to **639** in 80 tiles mode

#### NextREG 49 (31h) – Layer 3 (Tilemap) Vertical Scroll Control

<table>
<thead>
<tr><th rowspan="2">Group Name</th><th rowspan="2">R</th><th rowspan="2">W</th><th colspan="8">Data Bits</th><th rowspan="2">Description</th><th rowspan="2">H</th><th rowspan="2">D</th></tr>
<tr><th>7</th><th>6</th><th>5</th><th>4</th><th>3</th><th>2</th><th>1</th><th>0</th></tr>
</thead>
<tbody>
<tr><td>Y Offset</td><td>■</td><td>■</td><td>•</td><td>•</td><td>•</td><td>•</td><td>•</td><td>•</td><td>•</td><td>•</td><td>8-bit value (0-255)</td><td></td><td><b>0</b></td></tr>
</tbody>
</table>

#### NextREG 50 (32h) – Layer 1,0 (LoRes) Horizontal Scroll Control

<table>
<thead>
<tr><th rowspan="2">Group Name</th><th rowspan="2">R</th><th rowspan="2">W</th><th colspan="8">Data Bits</th><th rowspan="2">Description</th><th rowspan="2">H</th><th rowspan="2">D</th></tr>
<tr><th>7</th><th>6</th><th>5</th><th>4</th><th>3</th><th>2</th><th>1</th><th>0</th></tr>
</thead>
<tbody>
<tr><td>X Offset</td><td>■</td><td>■</td><td>•</td><td>•</td><td>•</td><td>•</td><td>•</td><td>•</td><td>•</td><td>•</td><td>8-bit value of X Offset (0-255)</td><td></td><td>0</td></tr>
</tbody>
</table>

Layer 1,0 (LoRes) scrolls in half-pixels at the same resolution and smoothness as Layer 2

#### NextREG 51 (33h) – Layer 1,0 (LoRes) Vertical Scroll Control

<table>
<thead>
<tr><th rowspan="2">Group Name</th><th rowspan="2">R</th><th rowspan="2">W</th><th colspan="8">Data Bits</th><th rowspan="2">Description</th><th rowspan="2">H</th><th rowspan="2">D</th></tr>
<tr><th>7</th><th>6</th><th>5</th><th>4</th><th>3</th><th>2</th><th>1</th><th>0</th></tr>
</thead>
<tbody>
<tr><td>Y Offset</td><td>■</td><td>■</td><td>•</td><td>•</td><td>•</td><td>•</td><td>•</td><td>•</td><td>•</td><td>•</td><td>8-bit value of Y Offset (0-191)</td><td></td><td>0</td></tr>
</tbody>
</table>

Layer 1,0 (LoRes) scrolls in half-pixels at the same resolution and smoothness as Layer 2

<!-- PDF page 237 -->

#### [?]

<table>
<thead>
<tr><th>Group Name</th><th>R</th><th>W</th><th>7</th><th>6</th><th>5</th><th>4</th><th>3</th><th>2</th><th>1</th><th>0</th><th>Description</th><th>H</th><th>D</th></tr>
</thead>
<tbody>
<tr><td rowspan="2">When <b>NR09:D4</b> is <b>set</b></td><td rowspan="2">■</td><td rowspan="2">■</td><td>[colour: pink]</td><td>•</td><td>•</td><td>•</td><td>•</td><td>•</td><td>•</td><td>•</td><td>Sprite number¹ / Pattern Number²</td><td></td><td></td></tr>
<tr><td>•</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>Pattern Address Offset³</td><td></td><td></td></tr>
</tbody>
</table>

The above applies only when the sprites port is in Lockstep and effectively performs an **OUT** to port **12347 (303Bh)** with the same value otherwise the section below applies

<table>
<tbody>
<tr><td>When <b>NR09:D4</b> is <b>NOT set</b></td><td>■</td><td>■</td><td>[colour: pink] <b>0</b></td><td>•</td><td>•</td><td>•</td><td>•</td><td>•</td><td>•</td><td>•</td><td>Sprite number¹</td><td></td><td></td></tr>
</tbody>
</table>

1 Values are **0** to **127**\
2 Values are **0** to **63**\
3 Adds **128** to pattern address\
This register selects which sprite has its attributes connected to the registers that follow:\
**NextREG 53 (36h)** – **NextREG 57 (39h)** and their auto-incremented counterparts\
**NextREG 117 (75h)** – **NextREG 121 (79h)**

#### NextREG 53 (35h) – Sprite Attribute 0

<table>
<thead>
<tr><th rowspan="2">Group Name</th><th rowspan="2">R</th><th rowspan="2">W</th><th colspan="8">Data Bits</th><th rowspan="2">Description</th><th rowspan="2">H</th><th rowspan="2">D</th></tr>
<tr><th>7</th><th>6</th><th>5</th><th>4</th><th>3</th><th>2</th><th>1</th><th>0</th></tr>
</thead>
<tbody>
<tr><td>X Coordinate LSB</td><td></td><td>■</td><td>•</td><td>•</td><td>•</td><td>•</td><td>•</td><td>•</td><td>•</td><td>•</td><td>Sprite X Coordinate LSB</td><td></td><td></td></tr>
</tbody>
</table>

MSB is in **NextREG 55 (37h):D0**

#### NextREG 54 (36h) – Sprite Attribute 1

<table>
<thead>
<tr><th rowspan="2">Group Name</th><th rowspan="2">R</th><th rowspan="2">W</th><th colspan="8">Data Bits</th><th rowspan="2">Description</th><th rowspan="2">H</th><th rowspan="2">D</th></tr>
<tr><th>7</th><th>6</th><th>5</th><th>4</th><th>3</th><th>2</th><th>1</th><th>0</th></tr>
</thead>
<tbody>
<tr><td>Y Coordinate LSB</td><td></td><td>■</td><td>•</td><td>•</td><td>•</td><td>•</td><td>•</td><td>•</td><td>•</td><td>•</td><td>Sprite Y Coordinate LSB</td><td></td><td></td></tr>
</tbody>
</table>

MSB is in **NextREG 57 (39h):D0**

#### NextREG 55 (37h) – Sprite Attribute 2

<table>
<thead>
<tr><th rowspan="2">Group Name</th><th rowspan="2">R</th><th rowspan="2">W</th><th colspan="8">Data Bits</th><th rowspan="2">Description</th><th rowspan="2">H</th><th rowspan="2">D</th></tr>
<tr><th>7</th><th>6</th><th>5</th><th>4</th><th>3</th><th>2</th><th>1</th><th>0</th></tr>
</thead>
<tbody>
<tr><td>Sprite Attribute 2</td><td></td><td>■</td><td>e</td><td>e</td><td>e</td><td>e</td><td>d</td><td>c</td><td>b</td><td>a</td><td>See notes</td><td></td><td></td></tr>
</tbody>
</table>

a For **relative** sprites: Indicates that **e** is relative to the anchor's palette offset\
For normal sprites: Sprite's **X Coordinate MSB** (See **NextREG 53 (35h)** for LSB)\
b 90° Clockwise Rotation Control (**0** = **No**, **1** = **Yes**)\
c Vertical Mirror Control (**0** = **No**, **1** = **Yes**)\
d Horizontal Mirror Control (**0** = **No**, **1** = **Yes**)\
e 4-bit palette offset\
Rotation is applied before mirroring

#### NextREG 56 (38h) – Sprite Attribute 3

<table>
<thead>
<tr><th rowspan="2">Group Name</th><th rowspan="2">R</th><th rowspan="2">W</th><th colspan="8">Data Bits</th><th rowspan="2">Description</th><th rowspan="2">H</th><th rowspan="2">D</th></tr>
<tr><th>7</th><th>6</th><th>5</th><th>4</th><th>3</th><th>2</th><th>1</th><th>0</th></tr>
</thead>
<tbody>
<tr><td>Sprite Attribute 3</td><td></td><td>■</td><td>c</td><td>b</td><td>a</td><td>a</td><td>a</td><td>a</td><td>a</td><td>a</td><td>See notes</td><td></td><td></td></tr>
</tbody>
</table>

a Sprite pattern to use. Possible values = **0** to **63**\
b Attribute 4 switch (**0** = **No**, **1** = **Yes**)\
If **b** = **0** then the sprite is fully described by **Attributes 0** to **3**. The sprite pattern is an 8-bit one identified by pattern **a** and is an anchor and cannot be made relative. Sprite display behaves as if **Attribute 4** = **0**\
If **b** = **1** then the sprite is further described by **Attribute 4** that follows in **NextREG 57 (39h)**\
c Visibility Control (**0** = **Invisible**, **1** = **Visible**)

#### NextREG 57 (39h) – Sprite Attribute 4

<table>
<thead>
<tr><th rowspan="2">Group Name</th><th rowspan="2">R</th><th rowspan="2">W</th><th colspan="8">Data Bits</th><th rowspan="2">Description</th><th rowspan="2">H</th><th rowspan="2">D</th></tr>
<tr><th>7</th><th>6</th><th>5</th><th>4</th><th>3</th><th>2</th><th>1</th><th>0</th></tr>
</thead>
<tbody>
<tr><td>Sprite Attribute 4</td><td></td><td>■</td><td>f</td><td>e</td><td>d</td><td>c</td><td>c</td><td>b</td><td>b</td><td>a</td><td>See notes</td><td></td><td></td></tr>
</tbody>
</table>

a For **relative** sprites: Indicates that the sprite pattern number is relative to the anchor's\
For **normal** sprites: Sprite's **Y Coordinate MSB** (See **NextREG 54 (36h)** for LSB)\
b For **normal** and **relative, composite type** sprites indicates **X** direction Magnification:\
(**00** = **1x**, **01** = **2x**, **10** = **4x**, **11** = **8x**)\
For relative, unified type sprites it's **0**\
c For **normal** and **relative, composite type** sprites indicates **Y** direction Magnification:\
(**00** = **1x**, **01** = **2x**, **10** = **4x**, **11** = **8x**)\
For **relative, unified type** sprites it's **0**\
d For **normal** sprites, indicates that the attached relative sprites are: **0** for **Composite**, **1** for **Unified**\
For **relative** sprites contains the 7th pattern bit if the sprite pattern is 4-bit.\
e For **normal** sprites contains the 7th pattern bit if the sprite pattern is 4-bit.\
For **relative** sprites it's **1**.\
f 4-bit pattern switch: **1** if the sprite pattern is 4-bit otherwise **0**\
{**f,e**} must not equal {**0,1**} as this combination is used to indicate a relative sprite. See notes above

#### NextREG 64 (40h) – Palette Index Select

<table>
<thead>
<tr><th rowspan="2">Group Name</th><th rowspan="2">R</th><th rowspan="2">W</th><th colspan="8">Data Bits</th><th rowspan="2">Description</th><th rowspan="2">H</th><th rowspan="2">D</th></tr>
<tr><th>7</th><th>6</th><th>5</th><th>4</th><th>3</th><th>2</th><th>1</th><th>0</th></tr>
</thead>
<tbody>
<tr><td>Palette Index Select</td><td>■</td><td>■</td><td>•</td><td>•</td><td>•</td><td>•</td><td>•</td><td>•</td><td>•</td><td>•</td><td>Palette index number</td><td></td><td></td></tr>
</tbody>
</table>

Selects the palette index to change the associated colour\
For ULA only, **INK**s are mapped to indices **0** through **7**, **BRIGHT INK**s to indices **8** through **15**, **PAPER**s to indices **16** through **23** and **BRIGHT PAPER**s to indices **24** through **31**\
In EnhancedULA mode, **INK**s come from a subset of indices from **0** through **127** and **PAPER**s from a subset of indices from **128** through **255**.\
The number of active indices depends on the number of attribute bits assigned to **INK** and **PAPER** out of the attribute byte\
In ULAplus mode, the last **64** entries (indices **192** to **255**) hold the ULAplus palette\
The ULA always takes border colour from **PAPER** for standard ULA and EnhancedULA

#### NextREG 65 (41h) – 8-bit Palette Data

<table>
<thead>
<tr><th rowspan="2">Group Name</th><th rowspan="2">R</th><th rowspan="2">W</th><th colspan="8">Data Bits</th><th rowspan="2">Description</th><th rowspan="2">H</th><th rowspan="2">D</th></tr>
<tr><th>7</th><th>6</th><th>5</th><th>4</th><th>3</th><th>2</th><th>1</th><th>0</th></tr>
</thead>
<tbody>
<tr><td>8-bit Palette Entry</td><td>■</td><td>■</td><td>•</td><td>•</td><td>•</td><td>•</td><td>•</td><td>•</td><td>•</td><td>•</td><td>Colour entry in RRRGGGBB format</td><td></td><td></td></tr>
</tbody>
</table>

The lower blue bit of the 9-bit internal colour will be the logical OR of Bits **0** and **1** of the 8-bit entry. After each write, the palette index is auto-incremented to the next index if the auto-increment has been enabled in **NextREG 67 (43h):D7**\
Reads do not auto-increment the index. Any other bits associated with the index will be zeroed

#### NextREG 66 (42h) – EnhancedULA Attribute Byte Format

<table>
<thead>
<tr><th rowspan="2">Group Name</th><th rowspan="2">R</th><th rowspan="2">W</th><th colspan="8">Data Bits</th><th rowspan="2">Description</th><th rowspan="2">H</th><th rowspan="2">D</th></tr>
<tr><th>7</th><th>6</th><th>5</th><th>4</th><th>3</th><th>2</th><th>1</th><th>0</th></tr>
</thead>
<tbody>
<tr><td>Attribute Byte Format</td><td>■</td><td>■</td><td>•</td><td>•</td><td>•</td><td>•</td><td>•</td><td>•</td><td>•</td><td>•</td><td>Attrbute byte's INK representation mask</td><td></td><td>*</td></tr>
</tbody>
</table>

\* Soft reset defaults to **7**\
Not set bits, indicate **PAPER**. Acceptable values are made by setting each bit from **0** on, in sequence: (**1**,**3**,**7**,**15**,**31**,**63**,**127** and **255**) which effectively splits the attribute byte setting the **INKs** from the right side and the **PAPER**s from what's left. **INKs** are mapped from Index **0** onwards on the palette while **PAPER**s and **BORDER** are mapped from Index **128** onwards\
A full value of **255** will set all colours to **INK** (Full INK mode) and **PAPER** and **BORDER** are taken from the fallback colour defined in **NextREG 74 (4Ah)**\
If the mask is not one of those listed above, the **INK** is still the result of logically **AND**ing the mask with the attribute byte but the **PAPER** and **BORDER** will be taken from the fallback colour\
<u>Example:</u>\
**00111011** will be ANDed with the attribute byte to form the **INK** index and **PAPER** will come from the fallback colour

#### NextREG 67 (43h) – Palette Control

<table>
<thead>
<tr><th rowspan="2">Group Name</th><th rowspan="2">R</th><th rowspan="2">W</th><th colspan="8">Data Bits</th><th rowspan="2">Description</th><th rowspan="2">H</th><th rowspan="2">[?]</th></tr>
<tr><th>7</th><th>6</th><th>5</th><th>4</th><th>3</th><th>2</th><th>1</th><th>0</th></tr>
</thead>
<tbody>
<tr><td>EnhancedULA control</td><td>■</td><td>■</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>•</td><td>Enable EnhancedULA</td><td></td><td>[?]</td></tr>
<tr><td rowspan="2">Active ULA¹ Palette</td><td rowspan="2">■</td><td rowspan="2">■</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td><b>0</b></td><td>[colour: pink]</td><td>First Palette</td><td rowspan="2"></td><td rowspan="2">[?]</td></tr>
<tr><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>1</td><td>[colour: pink]</td><td>Second Palette</td></tr>
<tr><td rowspan="2">Active Layer 2 Palette</td><td rowspan="2">■</td><td rowspan="2">■</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td><b>0</b></td><td>[colour: pink]</td><td>[colour: pink]</td><td>First Palette</td><td rowspan="2"></td><td rowspan="2">[?]</td></tr>
<tr><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>1</td><td>[colour: pink]</td><td>[colour: pink]</td><td>Second Palette</td></tr>
<tr><td rowspan="2">Active Sprites Palette</td><td rowspan="2">■</td><td rowspan="2">■</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td><b>0</b></td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>First Palette</td><td rowspan="2"></td><td rowspan="2">[?]</td></tr>
<tr><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>1</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>Second Palette</td></tr>
<tr><td rowspan="8">Palette Select for Read/Write</td><td rowspan="8">■</td><td rowspan="8">■</td><td>[colour: pink]</td><td><b>0</b></td><td><b>0</b></td><td><b>0</b></td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>Layers 0/1 (ULA) First</td><td></td><td rowspan="8">[?]</td></tr>
<tr><td>[colour: pink]</td><td>1</td><td>0</td><td>0</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>Layers 0/1 (ULA) Second</td><td></td></tr>
<tr><td>[colour: pink]</td><td>0</td><td>0</td><td>1</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>Layer 2 First</td><td></td></tr>
<tr><td>[colour: pink]</td><td>1</td><td>0</td><td>1</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>Layer 2 Second</td><td></td></tr>
<tr><td>[colour: pink]</td><td>0</td><td>1</td><td>0</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>Sprites First</td><td></td></tr>
<tr><td>[colour: pink]</td><td>1</td><td>1</td><td>0</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>Sprites Second</td><td></td></tr>
<tr><td>[colour: pink]</td><td>0</td><td>1</td><td>1</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>Layer 3 (Tilemap) First</td><td></td></tr>
<tr><td>[colour: pink]</td><td>1</td><td>1</td><td>1</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>Layer 3 (Tilemap) Second</td><td></td></tr>
<tr><td>Palette Auto-increment Control</td><td>■</td><td>■</td><td>•</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>Disable Palette Write Auto-increment</td><td></td><td>[?]</td></tr>
</tbody>
</table>

\* After a soft reset defaults to **000**\
¹ ULA refers to all ULA modes (Layers 0 and 1)

#### NextREG 68 (44h) – 9-bit Palette Data

<table>
<thead>
<tr><th rowspan="2">Group Name</th><th rowspan="2">R</th><th rowspan="2">W</th><th colspan="8">Data Bits</th><th rowspan="2">Description</th><th rowspan="2">H</th><th rowspan="2">[?]</th></tr>
<tr><th>7</th><th>6</th><th>5</th><th>4</th><th>3</th><th>2</th><th>1</th><th>0</th></tr>
</thead>
<tbody>
<tr><td>MSB Colour (1<sup>st</sup> Write) Non L2</td><td></td><td>■</td><td>•</td><td>•</td><td>•</td><td>•</td><td>•</td><td>•</td><td>•</td><td>•</td><td>MSB (RRRGGGBB) format – non L2 palette</td><td></td><td rowspan="3">[?]</td></tr>
<tr><td>LSB Blue (2<sup>nd</sup> Write) Non L2</td><td>■</td><td>■</td><td>[colour: dark green]</td><td>[colour: dark green]</td><td>[colour: dark green]</td><td>[colour: dark green]</td><td>[colour: dark green]</td><td>[colour: dark green]</td><td>[colour: dark green]</td><td>•</td><td>LSB B format – non L2 palette</td><td></td></tr>
<tr><td>Reserved Non L2</td><td>■</td><td></td><td>[colour: dark green] <b>0</b></td><td>[colour: dark green] <b>0</b></td><td>[colour: dark green] <b>0</b></td><td>[colour: dark green] <b>0</b></td><td>[colour: dark green] <b>0</b></td><td>[colour: dark green] <b>0</b></td><td>[colour: dark green] <b>0</b></td><td>[colour: pink]</td><td>Reserved, must be 0 – non L2 palette</td><td></td></tr>
<tr><td>MSB Colour (1<sup>st</sup> Write) L2</td><td></td><td>■</td><td>•</td><td>•</td><td>•</td><td>•</td><td>•</td><td>•</td><td>•</td><td>•</td><td>MSB (RRRGGGBB) format – L2 palette</td><td></td><td>[?]</td></tr>
<tr><td>LSB Blue + Priority L2 (2<sup>nd</sup> W)</td><td>■</td><td>■</td><td>•</td><td>[colour: dark green]</td><td>[colour: dark green]</td><td>[colour: dark green]</td><td>[colour: dark green]</td><td>[colour: dark green]</td><td>[colour: dark green]</td><td>•</td><td>L2 priority (D7) and LSB B(D0)</td><td></td><td>[?]</td></tr>
<tr><td>Reserved L2</td><td>■</td><td></td><td>[colour: pink]</td><td>[colour: dark green] <b>0</b></td><td>[colour: dark green] <b>0</b></td><td>[colour: dark green] <b>0</b></td><td>[colour: dark green] <b>0</b></td><td>[colour: dark green] <b>0</b></td><td>[colour: dark green] <b>0</b></td><td>[colour: pink]</td><td>Reserved, must be 0 L2 palette</td><td></td><td>[?]</td></tr>
</tbody>
</table>

9-bit Palette Data is entered in two consecutive writes; the second write auto-increments the palette index if auto-increment is enabled in **NextREG 67 (43h):D7**\
If writing an L2 palette, the second write's **D7** holds the **L2 priority** bit which if set (**1**) brings the colour defined at that index on top of all other layers. If you also need the same colour in regular priority (for example: for environmental masking) you will have to set it up again, this time with no priority\
Reads return the second byte and do not auto-increment\
Writes to **NextREGs 64**, **65** and **67** (**40h**, **41h** and **43h**) reset to the 1<sup>st</sup> write

#### NextREG 74 (4Ah) – Fallback Colour Value

<table>
<thead>
<tr><th rowspan="2">Group Name</th><th rowspan="2">R</th><th rowspan="2">W</th><th colspan="8">Data Bits</th><th rowspan="2">Description</th><th rowspan="2">H</th><th rowspan="2">[?]</th></tr>
<tr><th>7</th><th>6</th><th>5</th><th>4</th><th>3</th><th>2</th><th>1</th><th>0</th></tr>
</thead>
<tbody>
<tr><td>Fallback Colour</td><td>■</td><td>■</td><td>•</td><td>•</td><td>•</td><td>•</td><td>•</td><td>•</td><td>•</td><td>•</td><td>8-bit colour if all layers are transparent</td><td></td><td>[?]</td></tr>
</tbody>
</table>

\* Soft reset sets the default fallback to **227 (E3h)** as it must be the same for when ULAplus programs hit the transparent colour, otherwise nothing will be displayed

#### NextREG 75 (4Bh) – Sprite Transparency Index

<table>
<thead>
<tr><th rowspan="2">Group Name</th><th rowspan="2">R</th><th rowspan="2">W</th><th colspan="8">Data Bits</th><th rowspan="2">Description</th><th rowspan="2">H</th><th rowspan="2">[?]</th></tr>
<tr><th>7</th><th>6</th><th>5</th><th>4</th><th>3</th><th>2</th><th>1</th><th>0</th></tr>
</thead>
<tbody>
<tr><td>Transparency Index</td><td>■</td><td>■</td><td>•</td><td>•</td><td>•</td><td>•</td><td>•</td><td>•</td><td>•</td><td>•</td><td>Sprite colour index treated as transparent</td><td></td><td>[?]</td></tr>
</tbody>
</table>

\* Soft reset defaults to **227** (**E3h**)\
For 4-bit sprites, only 4-bits are used (from **D0** to **D3**)\
For example for 8-bit transparency index **227** (**E3h**) the 4-bit equivalent will be **03** (**03h**)

#### NextREG 76 (4Ch) – Layer 3 (Tilemap) Transparency Index

<table>
<thead>
<tr><th rowspan="2">Group Name</th><th rowspan="2">R</th><th rowspan="2">W</th><th colspan="8">Data Bits</th><th rowspan="2">Description</th><th rowspan="2">H</th><th rowspan="2">[?]</th></tr>
<tr><th>7</th><th>6</th><th>5</th><th>4</th><th>3</th><th>2</th><th>1</th><th>0</th></tr>
</thead>
<tbody>
<tr><td>Transparency Index</td><td>■</td><td>■</td><td>[colour: dark green]</td><td>[colour: dark green]</td><td>[colour: dark green]</td><td>[colour: dark green]</td><td>•</td><td>•</td><td>•</td><td>•</td><td>4-bit index treated as transparent</td><td></td><td>[?]</td></tr>
<tr><td>Reserved</td><td>■</td><td>■</td><td>[colour: dark green] <b>0</b></td><td>[colour: dark green] <b>0</b></td><td>[colour: dark green] <b>0</b></td><td>[colour: dark green] <b>0</b></td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>Reserved, must be 0</td><td></td><td>[?]</td></tr>
</tbody>
</table>

\* Soft reset defaults to **15** (**0Fh**)

#### NextREG 80 (50h) – MMU Slot 0 Control

<table>
<thead>
<tr><th rowspan="2">Group Name</th><th rowspan="2">R</th><th rowspan="2">W</th><th colspan="8">Data Bits</th><th rowspan="2">Description</th><th rowspan="2">H</th><th rowspan="2">[?]</th></tr>
<tr><th>7</th><th>6</th><th>5</th><th>4</th><th>3</th><th>2</th><th>1</th><th>0</th></tr>
</thead>
<tbody>
<tr><td>MMU Slot 0 Control</td><td>■</td><td>■</td><td>•</td><td>•</td><td>•</td><td>•</td><td>•</td><td>•</td><td>•</td><td>•</td><td>8K RAM page for address 0000h–1FFFh</td><td></td><td>[?]</td></tr>
</tbody>
</table>

\* Default **255** (**FFh**)\
Pages range from **0** to **223** on a fully expanded Next. A value of **255** (**FFh**) makes the ROM become visible

#### NextREG 81 (51h) – MMU Slot 1 Control

<table>
<thead>
<tr><th rowspan="2">Group Name</th><th rowspan="2">R</th><th rowspan="2">W</th><th colspan="8">Data Bits</th><th rowspan="2">Description</th><th rowspan="2">H</th><th rowspan="2">[?]</th></tr>
<tr><th>7</th><th>6</th><th>5</th><th>4</th><th>3</th><th>2</th><th>1</th><th>0</th></tr>
</thead>
<tbody>
<tr><td>MMU Slot 1 Control</td><td>■</td><td>■</td><td>•</td><td>•</td><td>•</td><td>•</td><td>•</td><td>•</td><td>•</td><td>•</td><td>8K RAM page for address 2000h–3FFFh</td><td></td><td>[?]</td></tr>
</tbody>
</table>

\* Default **255** (**FFh**)\
Pages range from **0** to **223** on a fully expanded Next. A value of **255** (**FFh**) makes the ROM become visible

#### NextREG 82 (52h) – MMU Slot 2 Control

<table>
<thead>
<tr><th rowspan="2">Group Name</th><th rowspan="2">R</th><th rowspan="2">W</th><th colspan="8">Data Bits</th><th rowspan="2">Description</th><th rowspan="2">H</th><th rowspan="2">[?]</th></tr>
<tr><th>7</th><th>6</th><th>5</th><th>4</th><th>3</th><th>2</th><th>1</th><th>0</th></tr>
</thead>
<tbody>
<tr><td>MMU Slot 2 Control</td><td>■</td><td>■</td><td>•</td><td>•</td><td>•</td><td>•</td><td>•</td><td>•</td><td>•</td><td>•</td><td>8K RAM page for address 4000h–5FFFh</td><td></td><td>[?]</td></tr>
</tbody>
</table>

\* Default **10** (**0Ah**)\
Pages range from **0** to **223** on a fully expanded Next

<!-- PDF page 238 -->

#### NextREG 83 (53h) – MMU Slot 3 Control

<table>
<thead>
<tr><th rowspan="2">Group Name</th><th rowspan="2">R</th><th rowspan="2">W</th><th colspan="8">Data Bits</th><th rowspan="2">Description</th><th rowspan="2">H</th><th rowspan="2">D</th></tr>
<tr><th>7</th><th>6</th><th>5</th><th>4</th><th>3</th><th>2</th><th>1</th><th>0</th></tr>
</thead>
<tbody>
<tr><td>MMU Slot 3 Control</td><td>■</td><td>■</td><td>•</td><td>•</td><td>•</td><td>•</td><td>•</td><td>•</td><td>•</td><td>•</td><td>8K RAM page for address 6000h–7FFFh</td><td></td><td>*</td></tr>
</tbody>
</table>

\* Default **11** (**0Bh**) – Pages range from **0** to **223** on a fully expanded Next

#### NextREG 84 (54h) – MMU Slot 4 Control

<table>
<thead>
<tr><th rowspan="2">Group Name</th><th rowspan="2">R</th><th rowspan="2">W</th><th colspan="8">Data Bits</th><th rowspan="2">Description</th><th rowspan="2">H</th><th rowspan="2">D</th></tr>
<tr><th>7</th><th>6</th><th>5</th><th>4</th><th>3</th><th>2</th><th>1</th><th>0</th></tr>
</thead>
<tbody>
<tr><td>MMU Slot 4 Control</td><td>■</td><td>■</td><td>•</td><td>•</td><td>•</td><td>•</td><td>•</td><td>•</td><td>•</td><td>•</td><td>8K RAM page for address 8000h–9FFFh</td><td></td><td>*</td></tr>
</tbody>
</table>

\* Default **4** (**04h**) – Pages range from **0** to **223** on a fully expanded Next

#### NextREG 85 (55h) – MMU Slot 5 Control

<table>
<thead>
<tr><th rowspan="2">Group Name</th><th rowspan="2">R</th><th rowspan="2">W</th><th colspan="8">Data Bits</th><th rowspan="2">Description</th><th rowspan="2">H</th><th rowspan="2">D</th></tr>
<tr><th>7</th><th>6</th><th>5</th><th>4</th><th>3</th><th>2</th><th>1</th><th>0</th></tr>
</thead>
<tbody>
<tr><td>MMU Slot 5 Control</td><td>■</td><td>■</td><td>•</td><td>•</td><td>•</td><td>•</td><td>•</td><td>•</td><td>•</td><td>•</td><td>8K RAM page for address A000h–BFFFh</td><td></td><td>*</td></tr>
</tbody>
</table>

\* Default **5** (**05h**) – Pages range from **0** to **223** on a fully expanded Next

#### NextREG 86 (56h) – MMU Slot 6 Control

<table>
<thead>
<tr><th rowspan="2">Group Name</th><th rowspan="2">R</th><th rowspan="2">W</th><th colspan="8">Data Bits</th><th rowspan="2">Description</th><th rowspan="2">H</th><th rowspan="2">D</th></tr>
<tr><th>7</th><th>6</th><th>5</th><th>4</th><th>3</th><th>2</th><th>1</th><th>0</th></tr>
</thead>
<tbody>
<tr><td>MMU Slot 6 Control</td><td>■</td><td>■</td><td>•</td><td>•</td><td>•</td><td>•</td><td>•</td><td>•</td><td>•</td><td>•</td><td>8K RAM page for address C000h–DFFFh</td><td></td><td>*</td></tr>
</tbody>
</table>

\* Default **0** (**00h**) – Pages range from **0** to **223** on a fully expanded Next

#### NextREG 87 (57h) – MMU Slot 7 Control

<table>
<thead>
<tr><th rowspan="2">Group Name</th><th rowspan="2">R</th><th rowspan="2">W</th><th colspan="8">Data Bits</th><th rowspan="2">Description</th><th rowspan="2">H</th><th rowspan="2">D</th></tr>
<tr><th>7</th><th>6</th><th>5</th><th>4</th><th>3</th><th>2</th><th>1</th><th>0</th></tr>
</thead>
<tbody>
<tr><td>MMU Slot 7 Control</td><td>■</td><td>■</td><td>•</td><td>•</td><td>•</td><td>•</td><td>•</td><td>•</td><td>•</td><td>•</td><td>8K RAM page for address E000h–FFFFh</td><td></td><td>*</td></tr>
</tbody>
</table>

\* Default **1** (**01h**) – Pages range from **0** to **223** on a fully expanded Next

#### NextREG 96 (60h) – Copper Data 8-bit Write

<table>
<thead>
<tr><th rowspan="2">Group Name</th><th rowspan="2">R</th><th rowspan="2">W</th><th colspan="8">Data Bits</th><th rowspan="2">Description</th><th rowspan="2">H</th><th rowspan="2">D</th></tr>
<tr><th>7</th><th>6</th><th>5</th><th>4</th><th>3</th><th>2</th><th>1</th><th>0</th></tr>
</thead>
<tbody>
<tr><td>Copper Instruction 8-bit</td><td></td><td>■</td><td>•</td><td>•</td><td>•</td><td>•</td><td>•</td><td>•</td><td>•</td><td>•</td><td>Byte to write to copper instruction memory</td><td></td><td></td></tr>
</tbody>
</table>

Each Copper Instruction is two-bytes long. After a write, the Copper address is auto-incremented to the next memory position

#### NextREG 97 (61h) – Copper Address LSB

<table>
<thead>
<tr><th rowspan="2">Group Name</th><th rowspan="2">R</th><th rowspan="2">W</th><th colspan="8">Data Bits</th><th rowspan="2">Description</th><th rowspan="2">H</th><th rowspan="2">D</th></tr>
<tr><th>7</th><th>6</th><th>5</th><th>4</th><th>3</th><th>2</th><th>1</th><th>0</th></tr>
</thead>
<tbody>
<tr><td>Copper memory address LSB</td><td>■</td><td>■</td><td>•</td><td>•</td><td>•</td><td>•</td><td>•</td><td>•</td><td>•</td><td>•</td><td>Copper instruction memory address (LSB)</td><td></td><td><b>0</b></td></tr>
</tbody>
</table>

Copper memory addresses range over 0 through 2047 (7FFh)

#### NextREG 98 (62h) – Copper Control

<table>
<thead>
<tr><th rowspan="2">Group Name</th><th rowspan="2">R</th><th rowspan="2">W</th><th colspan="8">Data Bits</th><th rowspan="2">Description</th><th rowspan="2">H</th><th rowspan="2">D</th></tr>
<tr><th>7</th><th>6</th><th>5</th><th>4</th><th>3</th><th>2</th><th>1</th><th>0</th></tr>
</thead>
<tbody>
<tr><td>Copper Memory Address MSB</td><td>■</td><td>■</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>•</td><td>•</td><td>•</td><td>Copper Instruction Memory Address (MSB)</td><td></td><td>0</td></tr>
<tr><td rowspan="4">Copper Start Control</td><td rowspan="4">■</td><td rowspan="4">■</td><td>0</td><td>0</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>Copper fully stopped</td><td></td><td rowspan="4">*</td></tr>
<tr><td>0</td><td>1</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>Copper start, exec from 0, loop</td><td></td></tr>
<tr><td>1</td><td>0</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>Copper start, exec from last, loop</td><td></td></tr>
<tr><td>1</td><td>1</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>Copper start, exec from 0, rest. at raster 0,0</td><td></td></tr>
</tbody>
</table>

\* Soft reset defaults to **000**\
Copper memory addresses range from **0** through **2047** (**7FFh**)\
Note: Writing the same copper start control value does not reset the copper

#### NextREG 99 (63h) – Copper Data 16-bit Write

<table>
<thead>
<tr><th rowspan="2">Group Name</th><th rowspan="2">R</th><th rowspan="2">W</th><th colspan="8">Data Bits</th><th rowspan="2">Description</th><th rowspan="2">H</th><th rowspan="2">D</th></tr>
<tr><th>7</th><th>6</th><th>5</th><th>4</th><th>3</th><th>2</th><th>1</th><th>0</th></tr>
</thead>
<tbody>
<tr><td>Copper data</td><td></td><td>■</td><td>•</td><td>•</td><td>•</td><td>•</td><td>•</td><td>•</td><td>•</td><td>•</td><td>1<sup>st</sup> write MSB, 2<sup>nd</sup> write LSB</td><td></td><td><b>0</b></td></tr>
</tbody>
</table>

The 16-bit value is written in pairs. The first 8-bits are the MSB and are destined for an even copper instruction address. The second 8-bits are the LSB and are destined for an odd copper instruction address\
After each write, the copper address is auto-incremented to the next memory position.\
After a write to an odd address, the entire 16-bits is written to copper memory at once

#### NextREG 100 (64h) – Vertical Line Count Offset

<table>
<thead>
<tr><th rowspan="2">Group Name</th><th rowspan="2">R</th><th rowspan="2">W</th><th colspan="8">Data Bits</th><th rowspan="2">Description</th><th rowspan="2">H</th><th rowspan="2">D</th></tr>
<tr><th>7</th><th>6</th><th>5</th><th>4</th><th>3</th><th>2</th><th>1</th><th>0</th></tr>
</thead>
<tbody>
<tr><td>Line counter offset</td><td>■</td><td>■</td><td>•</td><td>•</td><td>•</td><td>•</td><td>•</td><td>•</td><td>•</td><td>•</td><td>Offset added to the vertical line counter*</td><td></td><td></td></tr>
</tbody>
</table>

\* Affects Copper, line interrupt and active line count\
Normally the ULA's pixel row **0**, aligns with vertical line count **0**. With a non-zero offset, the ULA's pixel row **0** will align with the vertical line offset. For example if the offset is **32** then vertical line **32** will correspond to the first pixel row in the ULA and vertical line **0** will align with the first pixel row of *Layer 3* (Tilemap) and the *Sprite Layer*\
**NOTE:** Since a change in offset takes effect when the ULA reaches row **0**, the change can take up to one frame to occur

#### NextREG 104 (68h) – ULA Control

<table>
<thead>
<tr><th rowspan="2">Group Name</th><th rowspan="2">R</th><th rowspan="2">W</th><th colspan="8">Data Bits</th><th rowspan="2">Description</th><th rowspan="2">H</th><th rowspan="2">D</th></tr>
<tr><th>7</th><th>6</th><th>5</th><th>4</th><th>3</th><th>2</th><th>1</th><th>0</th></tr>
</thead>
<tbody>
<tr><td>Stencil Mode control</td><td>■</td><td>■</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: dark green]</td><td>•</td><td>Enable Stencil Mode¹</td><td></td><td>0</td></tr>
<tr><td>Reserved</td><td>■</td><td></td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: dark green] <b>0</b></td><td>[colour: pink]</td><td>Reserved, must be 0</td><td></td><td>0</td></tr>
<tr><td>ULA Half-Pixel Scroll</td><td>■</td><td>■</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>•</td><td>[colour: dark green]</td><td>[colour: pink]</td><td>ULA Half-Pixel Scroll enabled²</td><td></td><td>0</td></tr>
<tr><td>ULAplus Control</td><td>■</td><td>■</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>•</td><td>[colour: pink]</td><td>[colour: dark green]</td><td>[colour: pink]</td><td>ULAplus Enabled</td><td></td><td>0</td></tr>
<tr><td>Extended keys in 8x5 matrix</td><td>■</td><td>■</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>•</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: dark green]</td><td>[colour: pink]</td><td>Cancel entries in matrix for extended keys</td><td></td><td>0</td></tr>
<tr><td rowspan="4">Blend Colour Used in SLU modes 6 &amp; 7</td><td rowspan="4">■</td><td rowspan="4">■</td><td>[colour: pink]</td><td>0</td><td>0</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: dark green]</td><td>[colour: pink]</td><td>ULA Colour</td><td rowspan="4"></td><td rowspan="4">0</td></tr>
<tr><td>[colour: pink]</td><td>1</td><td>0</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: dark green]</td><td>[colour: pink]</td><td>ULA + Tilemap mix</td></tr>
<tr><td>[colour: pink]</td><td>1</td><td>1</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: dark green]</td><td>[colour: pink]</td><td>Tllemap Colour</td></tr>
<tr><td>[colour: pink]</td><td>0</td><td>1</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: dark green]</td><td>[colour: pink]</td><td>No Colour Blending</td></tr>
<tr><td>Output Control</td><td>■</td><td>■</td><td>•</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: dark green]</td><td>[colour: pink]</td><td>Disable ULA output</td><td></td><td>0</td></tr>
</tbody>
</table>

1 When both the ULA and Layer 3 (Tilemap) are enabled, if either are transparent, the result is transparent otherwise the result is a logical AND of both colours\
2 Setting may change

#### NextREG 105 (69h) – Display Control 1

<table>
<thead>
<tr><th rowspan="2">Group Name</th><th rowspan="2">R</th><th rowspan="2">W</th><th colspan="8">Data Bits</th><th rowspan="2">Description</th><th rowspan="2">H</th><th rowspan="2">D</th></tr>
<tr><th>7</th><th>6</th><th>5</th><th>4</th><th>3</th><th>2</th><th>1</th><th>0</th></tr>
</thead>
<tbody>
<tr><td>Port 255 (FFh) “Timex” alias</td><td>■</td><td>■</td><td>[colour: pink]</td><td>[colour: pink]</td><td>•</td><td>•</td><td>•</td><td>•</td><td>•</td><td>•</td><td>Port 255 (FFh) alias</td><td></td><td></td></tr>
<tr><td>Port 32765 (7FFDh):D3 alias</td><td>■</td><td>■</td><td>[colour: pink]</td><td>•</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>ULA Shadow Display Enable</td><td></td><td></td></tr>
<tr><td>Port 4667 (123Bh):D1 alias</td><td>■</td><td>■</td><td>•</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>Layer 2 Enable</td><td></td><td></td></tr>
</tbody>
</table>

#### NextREG 106 (6Ah) – Layer 1,0 (LoRes) Control

<table>
<thead>
<tr><th rowspan="2">Group Name</th><th rowspan="2">R</th><th rowspan="2">W</th><th colspan="8">Data Bits</th><th rowspan="2">Description</th><th rowspan="2">H</th><th rowspan="2">D</th></tr>
<tr><th>7</th><th>6</th><th>5</th><th>4</th><th>3</th><th>2</th><th>1</th><th>0</th></tr>
</thead>
<tbody>
<tr><td rowspan="2">LoRes | ULAplus palette Offset</td><td rowspan="2">■</td><td rowspan="2">■</td><td>[colour: dark green]</td><td>[colour: dark green]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>•</td><td>•</td><td>•</td><td>•</td><td>LoRes Palette Offset</td><td></td><td>0</td></tr>
<tr><td>[colour: dark green]</td><td>[colour: dark green]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>•</td><td>•</td><td>ULAplus Palette Offset</td><td></td><td>0</td></tr>
<tr><td>Radastan Mode DFILE Source</td><td>■</td><td>■</td><td>[colour: dark green]</td><td>[colour: dark green]</td><td>[colour: pink]</td><td>•</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>Timex DFILE source¹</td><td></td><td>0</td></tr>
<tr><td>LoRes mode</td><td>■</td><td>■</td><td>[colour: dark green]</td><td>[colour: dark green]</td><td>•</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>Radastan Mode Enable</td><td></td><td>0</td></tr>
<tr><td>Reserved</td><td>■</td><td>■</td><td>[colour: dark green] <b>0</b></td><td>[colour: dark green] <b>0</b></td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>Reserved, must be 0</td><td></td><td></td></tr>
</tbody>
</table>

1 Layer 1,0 (LoRes) occupies both Timex display files but Radastan mode has only half the colour depth thus occupies only one DFILE – at either **16384** (**4000h**) or **24576** (**6000h**). When this bit is set, the source DFILE used is the opposite of the ULA so that Radastan can co-exist with the normal Layer 0 (ULA) screen

#### NextREG 107 (6Bh) – Layer 3 (Tilemap) Control

<table>
<thead>
<tr><th rowspan="2">Group Name</th><th rowspan="2">R</th><th rowspan="2">W</th><th colspan="8">Data Bits</th><th rowspan="2">Description</th><th rowspan="2">H</th><th rowspan="2">D</th></tr>
<tr><th>7</th><th>6</th><th>5</th><th>4</th><th>3</th><th>2</th><th>1</th><th>0</th></tr>
</thead>
<tbody>
<tr><td>Layer 3 Priority</td><td>■</td><td>■</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: dark green]</td><td>[colour: pink]</td><td>•</td><td>Tilemap on top of ULA Enable</td><td></td><td>0</td></tr>
<tr><td>512 Tile mode Control</td><td>■</td><td>■</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: dark green]</td><td>•</td><td>[colour: pink]</td><td>Activate 512 Tile mode¹</td><td></td><td>0</td></tr>
<tr><td>Reserved</td><td>■</td><td>■</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: dark green] <b>0</b></td><td>[colour: pink]</td><td>[colour: pink]</td><td>Reserved, must be 0</td><td></td><td>0</td></tr>
<tr><td>Text mode Control</td><td>■</td><td>■</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>•</td><td>[colour: dark green]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>Text mode Enable</td><td></td><td>0</td></tr>
<tr><td rowspan="2">Layer 3 palette Select</td><td rowspan="2">■</td><td rowspan="2">■</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>0</td><td>[colour: pink]</td><td>[colour: dark green]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>Palette 0</td><td rowspan="2"></td><td rowspan="2">0</td></tr>
<tr><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>1</td><td>[colour: pink]</td><td>[colour: dark green]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>Palette 1</td></tr>
<tr><td>Attribute Entry Control</td><td>■</td><td>■</td><td>[colour: pink]</td><td>[colour: pink]</td><td>•</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: dark green]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>Attribute entry Disable²</td><td></td><td>0</td></tr>
<tr><td rowspan="2">Layer 3 Size Control</td><td rowspan="2">■</td><td rowspan="2">■</td><td>[colour: pink]</td><td>0</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: dark green]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>40 x 32</td><td rowspan="2"></td><td rowspan="2">0</td></tr>
<tr><td>[colour: pink]</td><td>1</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: dark green]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>80 x 32</td></tr>
<tr><td>Layer 3 Control</td><td>■</td><td>■</td><td>•</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: dark green]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>Tilemap Enable</td><td></td><td>0</td></tr>
</tbody>
</table>

1 If this bit is set, **NextREG 108 (6Ch):D0** changes meaning\
2 If this bit is set then the Layer 3 tilemap entries are only a single byte **Tile ID** and the attribute byte comes from **NextREG 108 (6Ch)** instead

#### NextREG 108 (6Ch) – Default Layer 3 (Tilemap) Attribute*

<table>
<thead>
<tr><th rowspan="2">Group Name</th><th rowspan="2">R</th><th rowspan="2">W</th><th colspan="8">Data Bits</th><th rowspan="2">Description</th><th rowspan="2">H</th><th rowspan="2">D</th></tr>
<tr><th>7</th><th>6</th><th>5</th><th>4</th><th>3</th><th>2</th><th>1</th><th>0</th></tr>
</thead>
<tbody>
<tr><td>If 512 Tile mode is disabled</td><td>■</td><td>■</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>•</td><td>ULA over Layer 3</td><td></td><td rowspan="2">0</td></tr>
<tr><td>If 512 Tile mode is enabled</td><td>■</td><td>■</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>•</td><td>Bit 8 of the tile number</td><td></td></tr>
<tr><td>Rotate 90° Control</td><td>■</td><td>■</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>•</td><td>[colour: pink]</td><td>Rotate</td><td></td><td>0</td></tr>
<tr><td>Y Mirror Control</td><td>■</td><td>■</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>•</td><td>[colour: pink]</td><td>[colour: pink]</td><td>Y Mirror</td><td></td><td>0</td></tr>
<tr><td>X Mirror Control</td><td>■</td><td>■</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>•</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>X Mirror</td><td></td><td>0</td></tr>
<tr><td>Palette Offset</td><td>■</td><td>■</td><td>•</td><td>•</td><td>•</td><td>•</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>Palette Offset</td><td></td><td>0</td></tr>
</tbody>
</table>

\* Active if **NextREG 107 (6Bh):D5** is set. If **NextREG 107 (6Bh):D3** is set, the palette offset is extended to **D7:D1** replacing the rotate and mirror bits

#### NextREG 110 (6Eh) – Layer 3 (Tilemap) Base Address

<table>
<thead>
<tr><th rowspan="2">Group Name</th><th rowspan="2">R</th><th rowspan="2">W</th><th colspan="8">Data Bits</th><th rowspan="2">Description</th><th rowspan="2">H</th><th rowspan="2">D</th></tr>
<tr><th>7</th><th>6</th><th>5</th><th>4</th><th>3</th><th>2</th><th>1</th><th>0</th></tr>
</thead>
<tbody>
<tr><td rowspan="2">MSB of Layer 3 base address in Banks 5 &amp; 7</td><td>■</td><td>■</td><td>[colour: pink]</td><td>[colour: dark green] <b>0</b></td><td>•</td><td>•</td><td>•</td><td>•</td><td>•</td><td>•</td><td>Address in bank 5 or bank 7 – Entered</td><td rowspan="2"></td><td rowspan="2">*</td></tr>
<tr><td>■</td><td>■</td><td>•</td><td>[colour: dark green]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>together with bit 7 – bit 6 is 0</td></tr>
</tbody>
</table>

\* Soft Reset value is **108** (**6Ch**) read as **44** (**2Ch**)\
Writes are the MSB of an address in bank 5 **16384** - **32767** (**4000h** – **7FFFh**) or in bank 7 **49152** - **65535** (**C000h** – **FFFFh**) with **D6** ignored and always read back as 0. This means tile definitions start on 256-byte boundaries\
Bank 7 addresses wrap around its 8K boundary

#### NextREG 111 (6Fh) – Layer 3 (Tilemap) - Tile Definitions Base Address

<table>
<thead>
<tr><th rowspan="2">Group Name</th><th rowspan="2">R</th><th rowspan="2">W</th><th colspan="8">Data Bits</th><th rowspan="2">Description</th><th rowspan="2">H</th><th rowspan="2">D</th></tr>
<tr><th>7</th><th>6</th><th>5</th><th>4</th><th>3</th><th>2</th><th>1</th><th>0</th></tr>
</thead>
<tbody>
<tr><td rowspan="2">MSB of Layer 3 Tile definitions base address in Banks 5 &amp; 7</td><td>■</td><td>■</td><td>[colour: pink]</td><td>[colour: dark green] <b>0</b></td><td>•</td><td>•</td><td>•</td><td>•</td><td>•</td><td>•</td><td>Address in bank 5 or bank 7 – Entered</td><td rowspan="2"></td><td rowspan="2">*</td></tr>
<tr><td>■</td><td>■</td><td>•</td><td>[colour: dark green]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>together with bit 7 – bit 6 is 0</td></tr>
</tbody>
</table>

\* Soft Reset value is **76** (**4Ch**) read as **12** (**0Ch**)\
Writes are the MSB of an address in bank 5 **16384** - **32767** (**4000h** – **7FFFh**) or in bank 7 **49152** - **65535** (**C000h** – **FFFFh**) with **D6** ignored and always read back as 0. This means tile definitions start on 256-byte boundaries\
Bank 7 addresses wrap around its 8K boundary

#### NextREG 112 (6Ah) – Layer 2 Resolution Control*

<table>
<thead>
<tr><th rowspan="2">Group Name</th><th rowspan="2">R</th><th rowspan="2">W</th><th colspan="8">Data Bits</th><th rowspan="2">Description</th><th rowspan="2">H</th><th rowspan="2">D</th></tr>
<tr><th>7</th><th>6</th><th>5</th><th>4</th><th>3</th><th>2</th><th>1</th><th>0</th></tr>
</thead>
<tbody>
<tr><td>Layer 2 Palette Offset</td><td>■</td><td>■</td><td>[colour: dark green]</td><td>[colour: dark green]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>•</td><td>•</td><td>•</td><td>•</td><td>Layer 2 4-bit Palette Offset</td><td></td><td>0</td></tr>
<tr><td rowspan="3">Layer 2 Resolution Select**</td><td rowspan="3">■</td><td rowspan="3">■</td><td>[colour: dark green]</td><td>[colour: dark green]</td><td>0</td><td>0</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>256 x 192 x 8bpp (Layer 2 standard)</td><td rowspan="3"></td><td rowspan="3">0</td></tr>
<tr><td>[colour: dark green]</td><td>[colour: dark green]</td><td>0</td><td>1</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>320 x 256 x 8bpp (Layer 2, Mode 2)</td></tr>
<tr><td>[colour: dark green]</td><td>[colour: dark green]</td><td>1</td><td>0</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>640 x 256 x 4bpp (Layer 2, Mode 3)</td></tr>
<tr><td>Reserved</td><td>■</td><td>■</td><td>[colour: dark green] <b>0</b></td><td>[colour: dark green] <b>0</b></td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>Reserved, must be 0</td><td></td><td></td></tr>
</tbody>
</table>

\* The *Layer 2* screen occupies **48K** or **80K**, which is stored in **3** consecutive **16 KB** banks for **256 x 192 x 8bpp** or **5** consecutive banks for **320 x 256** and **640 x 256** resolutions. When in *NextZXOS/NextBASIC*, banks **9 - 11** are used for the visible and shadow *Layer 2(,0)* screen (after power-on, the hardware default to banks **8 - 10** for displayed and **11 - 13** for shadow screen but this gets modified by *NextZXOS* – See *Chapter 23*). These can be set using *Layer 2* RAM Page **NextREG 18 (12h)** and *Layer 2* RAM Shadow Page **NextREG 19 (13h)** (avoid banks **5**, **7** and **8** to be used as *Layer 2* screen, unless you are familiar with SRAM and BRAM of the board and how the ULA screen memory has special treatment in Next's FPGA)

\*\* Each pixel of *Layer 2* is assigned 1 byte (8-bits) (in **8bpp** modes) or 1 nibble (4-bits) (in **640 x 256 x 4bpp** mode) of video memory. This means *Layer 2* consumes a total of either **48K** or **80K** of memory. The memory is divided in **16K** "*strips*" filling one standard Spectrum bank. In **256x192** mode the strips are horizontal so that **16K** represent **64** vertical lines on the display. In **320x256** and **640x256** modes the strips are vertical so that each **16K** corresponds to **64** or **128** columns respectively – See *Chapters 15* and *16*

#### NextREG 113 (71h) – Layer 2 Horizontal Scroll Control MSB

<table>
<thead>
<tr><th rowspan="2">Group Name</th><th rowspan="2">R</th><th rowspan="2">W</th><th colspan="8">Data Bits</th><th rowspan="2">Description</th><th rowspan="2">H</th><th rowspan="2">D</th></tr>
<tr><th>7</th><th>6</th><th>5</th><th>4</th><th>3</th><th>2</th><th>1</th><th>0</th></tr>
</thead>
<tbody>
<tr><td>X Coordinate MSB</td><td>■</td><td>■</td><td>[colour: dark green]</td><td>[colour: dark green]</td><td>[colour: dark green]</td><td>[colour: dark green]</td><td>[colour: dark green]</td><td>[colour: dark green]</td><td>[colour: dark green]</td><td>•</td><td>Layer 2 X Coordinate MSB</td><td></td><td></td></tr>
<tr><td>Reserved</td><td>■</td><td>■</td><td>[colour: dark green] <b>0</b></td><td>[colour: dark green] <b>0</b></td><td>[colour: dark green] <b>0</b></td><td>[colour: dark green] <b>0</b></td><td>[colour: dark green] <b>0</b></td><td>[colour: dark green] <b>0</b></td><td>[colour: dark green] <b>0</b></td><td>[colour: pink]</td><td>Reserved, must be 0</td><td></td><td></td></tr>
</tbody>
</table>

LSB is in **NextREG 22 (16h)**

<!-- PDF page 239 -->

#### NextREG 117 (75h) – Sprite Attribute 0 (Auto-incrementing)

<table>
<thead>
<tr><th rowspan="2">Group Name</th><th rowspan="2">R</th><th rowspan="2">W</th><th colspan="8">Data Bits</th><th rowspan="2">Description</th><th rowspan="2">H</th><th rowspan="2">D</th></tr>
<tr><th>7</th><th>6</th><th>5</th><th>4</th><th>3</th><th>2</th><th>1</th><th>0</th></tr>
</thead>
<tbody>
<tr><td>X Coordinate LSB</td><td></td><td>■</td><td>•</td><td>•</td><td>•</td><td>•</td><td>•</td><td>•</td><td>•</td><td>•</td><td>Sprite X Coordinate LSB</td><td></td><td></td></tr>
</tbody>
</table>

Same as **NextREG 53 (35h)** but writes also auto-increment the sprite number

#### NextREG 118 (76h) – Sprite Attribute 1 (Auto-incrementing)

<table>
<thead>
<tr><th rowspan="2">Group Name</th><th rowspan="2">R</th><th rowspan="2">W</th><th colspan="8">Data Bits</th><th rowspan="2">Description</th><th rowspan="2">H</th><th rowspan="2">D</th></tr>
<tr><th>7</th><th>6</th><th>5</th><th>4</th><th>3</th><th>2</th><th>1</th><th>0</th></tr>
</thead>
<tbody>
<tr><td>Y Coordinate LSB</td><td></td><td>■</td><td>•</td><td>•</td><td>•</td><td>•</td><td>•</td><td>•</td><td>•</td><td>•</td><td>Sprite Y Coordinate LSB</td><td></td><td></td></tr>
</tbody>
</table>

Same as **NextREG 54 (36h)** but writes also auto-increment the sprite number

#### NextREG 119 (77h) – Sprite Attribute 2 (Auto-incrementing)

<table>
<thead>
<tr><th rowspan="2">Group Name</th><th rowspan="2">R</th><th rowspan="2">W</th><th colspan="8">Data Bits</th><th rowspan="2">Description</th><th rowspan="2">H</th><th rowspan="2">D</th></tr>
<tr><th>7</th><th>6</th><th>5</th><th>4</th><th>3</th><th>2</th><th>1</th><th>0</th></tr>
</thead>
<tbody>
<tr><td>Sprite Attribute 2</td><td></td><td>■</td><td>e</td><td>e</td><td>e</td><td>e</td><td>d</td><td>c</td><td>b</td><td>a</td><td>See notes</td><td></td><td></td></tr>
</tbody>
</table>

**a,b,c,d,e:** Same as **NextREG 55 (37h)** but writes also auto-increment the sprite number

#### NextREG 120 (78h) – Sprite Attribute 3 (Auto-incrementing)

<table>
<thead>
<tr><th rowspan="2">Group Name</th><th rowspan="2">R</th><th rowspan="2">W</th><th colspan="8">Data Bits</th><th rowspan="2">Description</th><th rowspan="2">H</th><th rowspan="2">D</th></tr>
<tr><th>7</th><th>6</th><th>5</th><th>4</th><th>3</th><th>2</th><th>1</th><th>0</th></tr>
</thead>
<tbody>
<tr><td>Sprite Attribute 3</td><td></td><td>■</td><td>c</td><td>b</td><td>a</td><td>a</td><td>a</td><td>a</td><td>a</td><td>a</td><td>See notes</td><td></td><td></td></tr>
</tbody>
</table>

**a,b,c:** Same as **NextREG 56 (38h)** but writes also auto-increment the sprite number

#### NextREG 121 (79h) – Sprite Attribute 4 (Auto-incrementing)

<table>
<thead>
<tr><th rowspan="2">Group Name</th><th rowspan="2">R</th><th rowspan="2">W</th><th colspan="8">Data Bits</th><th rowspan="2">Description</th><th rowspan="2">H</th><th rowspan="2">D</th></tr>
<tr><th>7</th><th>6</th><th>5</th><th>4</th><th>3</th><th>2</th><th>1</th><th>0</th></tr>
</thead>
<tbody>
<tr><td>Sprite Attribute 4</td><td></td><td>■</td><td>f</td><td>e</td><td>d</td><td>c</td><td>c</td><td>b</td><td>b</td><td>a</td><td>See notes</td><td></td><td></td></tr>
</tbody>
</table>

**a,b,c,d,e,f:** Same as **NextREG 57 (39h)** but writes also auto-increment the sprite number

#### NextREG 127 (7Fh) – User Register 0

<table>
<thead>
<tr><th rowspan="2">Group Name</th><th rowspan="2">R</th><th rowspan="2">W</th><th colspan="8">Data Bits</th><th rowspan="2">Description</th><th rowspan="2">H</th><th rowspan="2">D</th></tr>
<tr><th>7</th><th>6</th><th>5</th><th>4</th><th>3</th><th>2</th><th>1</th><th>0</th></tr>
</thead>
<tbody>
<tr><td>User Register</td><td>■</td><td>■</td><td>•</td><td>•</td><td>•</td><td>•</td><td>•</td><td>•</td><td>•</td><td>•</td><td>User Register</td><td></td><td>*</td></tr>
</tbody>
</table>

\* Soft reset defaults to **255 (FFh)**

> CAUTION: NextREG numbers above 127 (7Fh) are inaccessible to the Copper

#### NextREG 128 (80h) – Expansion Bus Enable

<table>
<thead>
<tr><th rowspan="2">Group Name</th><th rowspan="2">R</th><th rowspan="2">W</th><th colspan="8">Data Bits</th><th rowspan="2">Description</th><th rowspan="2">H</th><th rowspan="2">D</th></tr>
<tr><th>7</th><th>6</th><th>5</th><th>4</th><th>3</th><th>2</th><th>1</th><th>0</th></tr>
</thead>
<tbody>
<tr><td colspan="14"><b>AFTER SOFT RESET</b> (Copied into bits D4 through D7)</td></tr>
<tr><td>Memory Cycles and R̅O̅M̅C̅S̅</td><td>■</td><td>■</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>•</td><td>Memory cycles Disable/ Ignore R̅O̅M̅C̅S̅</td><td>■</td><td>0</td></tr>
<tr><td>I/O Cycles and I̅O̅R̅Q̅U̅L̅A̅</td><td>■</td><td>■</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>•</td><td>[colour: pink]</td><td>I/O cycles Disable / Ignore I̅O̅R̅Q̅U̅L̅A̅</td><td>■</td><td>0</td></tr>
<tr><td>divMMC R̅O̅M̅C̅S̅ ROM Enable</td><td>■</td><td>■</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>•</td><td>[colour: pink]</td><td>[colour: pink]</td><td>ROM from divMMC banks 14/15 Enable</td><td>■</td><td>0</td></tr>
<tr><td>Expansion bus Enable</td><td>■</td><td>■</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>•</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>Expansion bus Enable</td><td>■</td><td>0</td></tr>
<tr><td colspan="14"><b>IMMEDIATE</b></td></tr>
<tr><td>Memory Cycles and R̅O̅M̅C̅S̅</td><td>■</td><td>■</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>•</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>Memory cycles Disable/ Ignore R̅O̅M̅C̅S̅</td><td>■</td><td>0</td></tr>
<tr><td>I/O Cycles and I̅O̅R̅Q̅U̅L̅A̅</td><td>■</td><td>■</td><td>[colour: pink]</td><td>[colour: pink]</td><td>•</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>I/O cycles Disable / Ignore I̅O̅R̅Q̅U̅L̅A̅</td><td>■</td><td>0</td></tr>
<tr><td>divMMC R̅O̅M̅C̅S̅ ROM Enable</td><td>■</td><td>■</td><td>[colour: pink]</td><td>•</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>ROM from divMMC banks 14/15 Enable</td><td>■</td><td>0</td></tr>
<tr><td>Expansion bus Enable</td><td>■</td><td>■</td><td>•</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>Expansion bus Enable</td><td>■</td><td>0</td></tr>
</tbody>
</table>

#### NextREG 129 (81h) – Expansion Bus Control

<table>
<thead>
<tr><th rowspan="2">Group Name</th><th rowspan="2">R</th><th rowspan="2">W</th><th colspan="8">Data Bits</th><th rowspan="2">Description</th><th rowspan="2">H</th><th rowspan="2">D</th></tr>
<tr><th>7</th><th>6</th><th>5</th><th>4</th><th>3</th><th>2</th><th>1</th><th>0</th></tr>
</thead>
<tbody>
<tr><td rowspan="4">MAX CPU Speed when Expansion Bus is enabled¹</td><td rowspan="4">■</td><td rowspan="4">■</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td><b>0</b></td><td><b>0</b></td><td>3.5 MHz</td><td rowspan="4">■</td><td rowspan="4">*</td></tr>
<tr><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>0</td><td>1</td><td>7 MHz</td></tr>
<tr><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>1</td><td>0</td><td>14 MHz</td></tr>
<tr><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>1</td><td>1</td><td>28 MHz</td></tr>
<tr><td>Propagate MAX CPU Clock ena.</td><td>■</td><td>■</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>•</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>Propagate MAX CPU Clock at all times²</td><td>■</td><td>0</td></tr>
<tr><td>Disable Exp.Bus NMI Debounce</td><td>■</td><td>■</td><td>[colour: pink]</td><td>[colour: pink]</td><td>•</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>Disables the NMI debounce³</td><td>■</td><td>0</td></tr>
<tr><td>ULA override control</td><td>■</td><td>■</td><td>[colour: pink]</td><td>•</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>Allows peripherals to override ULA⁴</td><td>■</td><td>0</td></tr>
<tr><td>Exp. bus R̅O̅M̅C̅S̅ state flag</td><td>■</td><td></td><td>•</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>R̅O̅M̅C̅S̅ asserted on Expansion Bus</td><td>■</td><td>0</td></tr>
</tbody>
</table>

\* Hard reset defaults to **00**\
¹ Currently fixed at **00**\
² Applies even when the Expansion Bus is disabled\
³ A value of **1** disables the Expansion BSus' NMI debounce as required by some peripherals like the Opus Discovery\
⁴ A value of **1** allows peripherals to override the ULA on even port reads as equired by some peripherals like the Rotronics Wafadrive

#### NextREG 130 (82h) – Internal Port Decoding Control 1/4

<table>
<thead>
<tr><th rowspan="2">Group Name</th><th rowspan="2">R</th><th rowspan="2">W</th><th colspan="8">Data Bits</th><th rowspan="2">Description</th><th rowspan="2">H</th><th rowspan="2">D</th></tr>
<tr><th>7</th><th>6</th><th>5</th><th>4</th><th>3</th><th>2</th><th>1</th><th>0</th></tr>
</thead>
<tbody>
<tr><td>Enable Timex</td><td>■</td><td>■</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>•</td><td>Port FFh</td><td></td><td>1</td></tr>
<tr><td>Enable Paging</td><td>■</td><td>■</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>•</td><td>[colour: pink]</td><td>Port 7FFDh</td><td></td><td>1</td></tr>
<tr><td>Enable Next Memory Paging</td><td>■</td><td>■</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>•</td><td>[colour: pink]</td><td>[colour: pink]</td><td>Port DFFDh</td><td></td><td>1</td></tr>
<tr><td>Enable +3 Paging</td><td>■</td><td>■</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>•</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>Port 1FFDh</td><td></td><td>1</td></tr>
<tr><td>Enable +3 Floating Bus</td><td>■</td><td>■</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>•</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>+3 Floating bus</td><td></td><td>1</td></tr>
<tr><td>Enable DMA</td><td>■</td><td>■</td><td>[colour: pink]</td><td>[colour: pink]</td><td>•</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>Port 6Bh (DMA)</td><td></td><td>1</td></tr>
<tr><td>Enable Kempston Port 1</td><td>■</td><td>■</td><td>[colour: pink]</td><td>•</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>Port 1Fh (Kempston / MD 1)</td><td></td><td>1</td></tr>
<tr><td>Enable Kempston Port 2</td><td>■</td><td>■</td><td>•</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>Port 37h (Kempston / MD 2)</td><td></td><td>1</td></tr>
</tbody>
</table>

#### NextREG 131 (83h) – Internal Port Decoding Control 2/4

<table>
<thead>
<tr><th rowspan="2">Group Name</th><th rowspan="2">R</th><th rowspan="2">W</th><th colspan="8">Data Bits</th><th rowspan="2">Description</th><th rowspan="2">H</th><th rowspan="2">D</th></tr>
<tr><th>7</th><th>6</th><th>5</th><th>4</th><th>3</th><th>2</th><th>1</th><th>0</th></tr>
</thead>
<tbody>
<tr><td>Enable divMMC</td><td>■</td><td>■</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>•</td><td>Port E3h (divMMC Control)</td><td></td><td>1</td></tr>
<tr><td>Enable Multiface</td><td>■</td><td>■</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>•</td><td>[colour: pink]</td><td>Multiface (two variable ports)</td><td></td><td>1</td></tr>
<tr><td>Enable I²C</td><td>■</td><td>■</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>•</td><td>[colour: pink]</td><td>[colour: pink]</td><td>Ports 103Bh, 113Bh (I²C)</td><td></td><td>1</td></tr>
<tr><td>Enable SPI</td><td>■</td><td>■</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>•</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>Ports E7h, EBh (SPI)</td><td></td><td>1</td></tr>
<tr><td>Enable UART</td><td>■</td><td>■</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>•</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>Ports 133Bh, 143Bh, 153Bh,163Bh (UART)</td><td></td><td>1</td></tr>
<tr><td>Enable Kempston Mouse</td><td>■</td><td>■</td><td>[colour: pink]</td><td>[colour: pink]</td><td>•</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>Ports FADFh,FBDFh,FFDFh mouse*</td><td></td><td>1</td></tr>
<tr><td>Enable Sprites</td><td>■</td><td>■</td><td>[colour: pink]</td><td>•</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>Ports 57h,5Bh,303Bh (Sprites)</td><td></td><td>1</td></tr>
<tr><td>Enable Layer 2</td><td>■</td><td>■</td><td>•</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>Port 123Bh (Layer2)</td><td></td><td>1</td></tr>
</tbody>
</table>

\* Also disables Kempston alias on port DFh

#### NextREG 132 (84h) – Internal Port Decoding Control 3/4

<table>
<thead>
<tr><th rowspan="2">Group Name</th><th rowspan="2">R</th><th rowspan="2">W</th><th colspan="8">Data Bits</th><th rowspan="2">Description</th><th rowspan="2">H</th><th rowspan="2">D</th></tr>
<tr><th>7</th><th>6</th><th>5</th><th>4</th><th>3</th><th>2</th><th>1</th><th>0</th></tr>
</thead>
<tbody>
<tr><td>Enable AY</td><td>■</td><td>■</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>•</td><td>Ports FFFDh, BFFDh (AY)</td><td></td><td>1</td></tr>
<tr><td>Enable Soundrive DAC Mode 1</td><td>■</td><td>■</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>•</td><td>[colour: pink]</td><td>Ports 0Fh,1Fh, 4Fh, 5Fh (DAC SD1)</td><td></td><td>1</td></tr>
<tr><td>Enable Soundrive DAC Mode 2</td><td>■</td><td>■</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>•</td><td>[colour: pink]</td><td>[colour: pink]</td><td>Ports F1h, F3h, F9h ,FBh (DAC SD2)</td><td></td><td>1</td></tr>
<tr><td>Enable Profi/Covox Stereo DAC</td><td>■</td><td>■</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>•</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>Ports 3Fh, 5Fh (DAC stereo-Profi/Covox)</td><td></td><td>1</td></tr>
<tr><td>Enable Covox Stereo DAC</td><td>■</td><td>■</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>•</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>Ports 0Fh, 4Fh (DAC stereo-Covox)</td><td></td><td>1</td></tr>
<tr><td>Enable Pentagon/ATM DAC</td><td>■</td><td>■</td><td>[colour: pink]</td><td>[colour: pink]</td><td>•</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>Port FBh (DAC mono-Pentagon) (SD2 off)</td><td></td><td>1</td></tr>
<tr><td>Enable Covox/GS Mono DAC</td><td>■</td><td>■</td><td>[colour: pink]</td><td>•</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>Port B3h (DAC mono-GS/Covox)</td><td></td><td>1</td></tr>
<tr><td>Enable SPECdrum Mono DAC</td><td>■</td><td>■</td><td>•</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>Port DFh (DAC mono-SPECdrum)*</td><td></td><td>1</td></tr>
</tbody>
</table>

\* Also a Kempston port 1Fh alias

#### NextREG 133 (85h) – Internal Port Decoding Control 4/4 (MSB)

<table>
<thead>
<tr><th rowspan="2">Group Name</th><th rowspan="2">R</th><th rowspan="2">W</th><th colspan="8">Data Bits</th><th rowspan="2">Description</th><th rowspan="2">H</th><th rowspan="2">D</th></tr>
<tr><th>7</th><th>6</th><th>5</th><th>4</th><th>3</th><th>2</th><th>1</th><th>0</th></tr>
</thead>
<tbody>
<tr><td>Enable ULAplus</td><td>■</td><td>■</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>•</td><td>Ports BF3Bh, FF3Bh (ULAplus)</td><td>■</td><td>1</td></tr>
<tr><td>Enable DMA</td><td>■</td><td>■</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>•</td><td>[colour: pink]</td><td>Port 0Bh (Z80DMA)</td><td>■</td><td>1</td></tr>
<tr><td>Enable Pentagon 1024 Memory</td><td>■</td><td>■</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>•</td><td>[colour: pink]</td><td>[colour: pink]</td><td>Port EFF7h (Pentagon 1024 memory)</td><td>■</td><td>0</td></tr>
<tr><td>Enable CTC</td><td>■</td><td>■</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>•</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>Ports 183Bh - 1F3Bh (CTC Channels 0-7)</td><td>■</td><td>1</td></tr>
<tr><td>Register Reset</td><td>■</td><td>■</td><td>•</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>Register reset mode (soft or hard reset sel.)</td><td></td><td></td></tr>
</tbody>
</table>

#### NextREG 134 (86h) – Expansion Bus Port Decoding Control 1/4

<table>
<thead>
<tr><th rowspan="2">Group Name</th><th rowspan="2">R</th><th rowspan="2">W</th><th colspan="8">Data Bits</th><th rowspan="2">Description</th><th rowspan="2">H</th><th rowspan="2">D</th></tr>
<tr><th>7</th><th>6</th><th>5</th><th>4</th><th>3</th><th>2</th><th>1</th><th>0</th></tr>
</thead>
<tbody>
<tr><td>Enable Timex</td><td>■</td><td>■</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>•</td><td>Port FFh</td><td>■</td><td>1</td></tr>
<tr><td>Enable Paging</td><td>■</td><td>■</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>•</td><td>[colour: pink]</td><td>Port 7FFDh</td><td>■</td><td>1</td></tr>
<tr><td>Enable Next Memory Paging</td><td>■</td><td>■</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>•</td><td>[colour: pink]</td><td>[colour: pink]</td><td>Port DFFDh</td><td>■</td><td>1</td></tr>
<tr><td>Enable +3 Paging</td><td>■</td><td>■</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>•</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>Port 1FFDh</td><td>■</td><td>1</td></tr>
<tr><td>Enable +3 Floating Bus</td><td>■</td><td>■</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>•</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>+3 Floating bus</td><td>■</td><td>1</td></tr>
<tr><td>Enable DMA</td><td>■</td><td>■</td><td>[colour: pink]</td><td>[colour: pink]</td><td>•</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>Port 6Bh (DMA)</td><td>■</td><td>1</td></tr>
<tr><td>Enable Kempston Port 1</td><td>■</td><td>■</td><td>[colour: pink]</td><td>•</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>Port 1Fh (Kempston / MD 1)</td><td>■</td><td>1</td></tr>
<tr><td>Enable Kempston Port 2</td><td>■</td><td>■</td><td>•</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>Port 37h (Kempston / MD 2)</td><td>■</td><td>1</td></tr>
</tbody>
</table>

#### NextREG 135 (87h) – Expansion Bus Port Decoding Control 2/4

<table>
<thead>
<tr><th rowspan="2">Group Name</th><th rowspan="2">R</th><th rowspan="2">W</th><th colspan="8">Data Bits</th><th rowspan="2">Description</th><th rowspan="2">H</th><th rowspan="2">D</th></tr>
<tr><th>7</th><th>6</th><th>5</th><th>4</th><th>3</th><th>2</th><th>1</th><th>0</th></tr>
</thead>
<tbody>
<tr><td>Enable divMMC</td><td>■</td><td>■</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>•</td><td>Port E3h (divMMC Control)</td><td>■</td><td>1</td></tr>
<tr><td>Enable Multiface</td><td>■</td><td>■</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>•</td><td>[colour: pink]</td><td>Multiface (two variable ports)</td><td>■</td><td>1</td></tr>
<tr><td>Enable I²C</td><td>■</td><td>■</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>•</td><td>[colour: pink]</td><td>[colour: pink]</td><td>Ports 103Bh, 113Bh (I²C)</td><td>■</td><td>1</td></tr>
<tr><td>Enable SPI</td><td>■</td><td>■</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>•</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>Ports E7h, EBh (SPI)</td><td>■</td><td>1</td></tr>
<tr><td>Enable UART</td><td>■</td><td>■</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>•</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>Ports 133Bh, 143Bh, 153Bh, 163Bh(UART)</td><td>■</td><td>1</td></tr>
<tr><td>Enable Kempston Mouse</td><td>■</td><td>■</td><td>[colour: pink]</td><td>[colour: pink]</td><td>•</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>Ports FADFh,FBDFh,FFDFh mouse¹</td><td>■</td><td>1</td></tr>
<tr><td>Enable Sprites</td><td>■</td><td>■</td><td>[colour: pink]</td><td>•</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>Ports 57h,5Bh,303Bh (Sprites)</td><td>■</td><td>1</td></tr>
<tr><td>Enable Layer 2</td><td>■</td><td>■</td><td>•</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>Port 123Bh (Layer2)</td><td>■</td><td>1</td></tr>
</tbody>
</table>

1 Also disables Kempston alias on port DFh

#### NextREG 136 (88h) – Expansion Bus Port Decoding Control 3/4

<table>
<thead>
<tr><th rowspan="2">Group Name</th><th rowspan="2">R</th><th rowspan="2">W</th><th colspan="8">Data Bits</th><th rowspan="2">Description</th><th rowspan="2">H</th><th rowspan="2">D</th></tr>
<tr><th>7</th><th>6</th><th>5</th><th>4</th><th>3</th><th>2</th><th>1</th><th>0</th></tr>
</thead>
<tbody>
<tr><td>Enable AY</td><td>■</td><td>■</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>•</td><td>Ports FFFDh, BFFDh (AY)</td><td>■</td><td>1</td></tr>
<tr><td>Enable DAC Mode 1</td><td>■</td><td>■</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>•</td><td>[colour: pink]</td><td>Ports 0Fh,1Fh, 4Fh, 5Fh (DAC mode 1)</td><td>■</td><td>1</td></tr>
<tr><td>Enable DAC Mode 2</td><td>■</td><td>■</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>•</td><td>[colour: pink]</td><td>[colour: pink]</td><td>Ports F1h, F3h, F9h ,FBh (DAC mode 2)</td><td>■</td><td>1</td></tr>
<tr><td>Enable Profi/Covox Stereo DAC</td><td>■</td><td>■</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>•</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>Ports 3Fh, 5Fh (DAC stereo-Profi/Covox)</td><td>■</td><td>1</td></tr>
<tr><td>Enable Covox Stereo DAC</td><td>■</td><td>■</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>•</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>Ports 0Fh, 4Fh (DAC stereo-Covox)</td><td>■</td><td>1</td></tr>
<tr><td>Enable Pentagon/ATM DAC</td><td>■</td><td>■</td><td>[colour: pink]</td><td>[colour: pink]</td><td>•</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>Port FBh (DAC mono Pentagon) (SD2 off)</td><td>■</td><td>1</td></tr>
<tr><td>Enable Covox/GS Mono DAC</td><td>■</td><td>■</td><td>[colour: pink]</td><td>•</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>Port B3h (DAC mono GS/Covox)</td><td>■</td><td>1</td></tr>
<tr><td>Enable SPECdrum Mono DAC</td><td>■</td><td>■</td><td>•</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>Port DFh (DAC mono SPECdrum)¹</td><td>■</td><td>1</td></tr>
</tbody>
</table>

1 Also alias of Kempston port 1Fh

#### NextREG 137 (89h) – Expansion Bus Port Decoding Control 4/4 (MSB)

<table>
<thead>
<tr><th rowspan="2">Group Name</th><th rowspan="2">R</th><th rowspan="2">W</th><th colspan="8">Data Bits</th><th rowspan="2">Description</th><th rowspan="2">H</th><th rowspan="2">D</th></tr>
<tr><th>7</th><th>6</th><th>5</th><th>4</th><th>3</th><th>2</th><th>1</th><th>0</th></tr>
</thead>
<tbody>
<tr><td>Enable ULAplus</td><td>■</td><td>■</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>•</td><td>Ports BF3Bh, FF3Bh (ULAplus)</td><td>■</td><td>1</td></tr>
<tr><td>Enable DMA</td><td>■</td><td>■</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>•</td><td>[colour: pink]</td><td>Port 0Bh (Z80DMA)</td><td>■</td><td>1</td></tr>
<tr><td>Enable Pentagon 1024 Memory</td><td>■</td><td>■</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>•</td><td>[colour: pink]</td><td>[colour: pink]</td><td>Port EFF7h (Pentagon 1024 memory)</td><td>■</td><td>0</td></tr>
<tr><td>Enable CTC</td><td>■</td><td>■</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>•</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>Ports 183Bh - 1F3Bh (CTC Channels 0-7)</td><td>■</td><td>1</td></tr>
<tr><td>Register Reset</td><td>■</td><td>■</td><td>•</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>Register reset mode (soft or hard reset sel.)</td><td></td><td></td></tr>
</tbody>
</table>

> The Internal Port Decoding Enables always apply.\
> When the Expansion Bus is enabled, the Expansion Bus Port Decoding Enables are logically ANDed with the Internal Enables. A result of 0 for the corresponding bit indicates the internal device is <u>disabled</u>. If the Expansion Bus is enabled, this allows I/O cycles for disabled ports to propagate to the Expansion Bus, otherwise corresponding I/O cycles to the Expansion Bus are filtered.

#### NextREG 138 (8Ah) – Expansion Bus I/O Propagate Control

<table>
<thead>
<tr><th rowspan="2">Group Name</th><th rowspan="2">R</th><th rowspan="2">W</th><th colspan="8">Data Bits</th><th rowspan="2">Description</th><th rowspan="2">H</th><th rowspan="2">D</th></tr>
<tr><th>7</th><th>6</th><th>5</th><th>4</th><th>3</th><th>2</th><th>1</th><th>0</th></tr>
</thead>
<tbody>
<tr><td>Port FEh</td><td>■</td><td>■</td><td>[colour: dark green]</td><td>[colour: dark green]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>•</td><td>Propagate port FEh I/O Cycles</td><td>■</td><td>0</td></tr>
<tr><td>Port 7FFDh</td><td>■</td><td>■</td><td>[colour: dark green]</td><td>[colour: dark green]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>•</td><td>[colour: pink]</td><td>Propagate port 7FFDh I/O Cycles</td><td>■</td><td>0</td></tr>
<tr><td>Port DFFDh</td><td>■</td><td>■</td><td>[colour: dark green]</td><td>[colour: dark green]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>•</td><td>[colour: pink]</td><td>[colour: pink]</td><td>Propagate port DFFDh I/O Cycles</td><td>■</td><td>0</td></tr>
<tr><td>Port 1FFDh</td><td>■</td><td>■</td><td>[colour: dark green]</td><td>[colour: dark green]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>•</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>Propagate port 1FFDh I/O Cycles</td><td>■</td><td>0</td></tr>
<tr><td>Port FFh</td><td>■</td><td>■</td><td>[colour: dark green]</td><td>[colour: dark green]</td><td>[colour: pink]</td><td>•</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>Propagate port FFh I/O Cycles</td><td>■</td><td>0</td></tr>
<tr><td>Port EFF7h</td><td>■</td><td>■</td><td>[colour: dark green]</td><td>[colour: dark green]</td><td>•</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>Propagate port EFF7h I/O Cycles</td><td>■</td><td>0</td></tr>
<tr><td>Reserved</td><td>■</td><td>■</td><td>[colour: dark green] <b>0</b></td><td>[colour: dark green] <b>0</b></td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>Reserved, must be 0</td><td>■</td><td>0</td></tr>
</tbody>
</table>

If any of the bits are set, I/O cycles for the corresponding ports are propagated to the Expansion Bus when the Expansion Bus is enabled. If the internal port decode is still active, any response sent by devices on the Expansion Bus will be ignored\
This allows external peripherals to monitor changes in state inside the ZX Spectrum Next. Port **FEh** is treated specially, so that external keyboards can be attached. When its propagate bit is set, the value read from the bus will be mixed into keyboard reads on port **FEh**

<!-- PDF page 240 -->

#### [?]

<table>
<thead>
<tr><th>Group Name</th><th>R</th><th>W</th><th>7</th><th>6</th><th>5</th><th>4</th><th>3</th><th>2</th><th>1</th><th>0</th><th>Description</th><th>H</th><th>D</th></tr>
</thead>
<tbody>
<tr><td colspan="14"><b>AFTER SOFT RESET</b> (Copied into bits D4 through D7)</td></tr>
<tr><td>ROM 0 (128K) Lock Enable</td><td>■</td><td>■</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>•</td><td>ROM 0 Lock Enable*</td><td>■</td><td>0</td></tr>
<tr><td>ROM 1 (48K) Lock Enablen</td><td>■</td><td>■</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>•</td><td>[colour: pink]</td><td>ROM 1 Lock Enable*</td><td>■</td><td>0</td></tr>
<tr><td>ALT ROM Availability Switch</td><td>■</td><td>■</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>•</td><td>[colour: pink]</td><td>[colour: pink]</td><td>ALT ROM visible ONLY during writes</td><td>■</td><td>0</td></tr>
<tr><td>ALT ROM Enable</td><td>■</td><td>■</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>•</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>ALT ROM Enable</td><td>■</td><td>0</td></tr>
<tr><td colspan="14"><b>IMMEDIATE</b></td></tr>
<tr><td>ROM 0 (128K) Lock Enable</td><td>■</td><td>■</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>•</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>ROM 0 Lock Enable*</td><td>■</td><td>0</td></tr>
<tr><td>ROM 1 (48K) Lock Enable</td><td>■</td><td>■</td><td>[colour: pink]</td><td>[colour: pink]</td><td>•</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>ROM 1 Lock Enable*</td><td>■</td><td>0</td></tr>
<tr><td>ALT ROM Availability Switch</td><td>■</td><td>■</td><td>[colour: pink]</td><td>•</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>ALT ROM visible ONLY during writes</td><td>■</td><td>0</td></tr>
<tr><td>ALT ROM Enable</td><td>■</td><td>■</td><td>•</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>ALT ROM Enable</td><td>■</td><td>0</td></tr>
</tbody>
</table>

\* The locking mechanism applies also if the alternative ROM is not enabled. For the +3/+3e and Next personalities if the two lock bits are **not 0**, then the corresponding ROM page is locked in place. Other personalities (models) use the bits to preferentially lock the corresponding 48K or 128K ROM in place

#### NextREG 142 (8Eh) – ZX Spectrum 128K Memory Mapping

<table>
<thead>
<tr><th rowspan="2">Group Name</th><th rowspan="2">R</th><th rowspan="2">W</th><th colspan="8">Data Bits</th><th rowspan="2">Description</th><th rowspan="2">H</th><th rowspan="2">D</th></tr>
<tr><th>7</th><th>6</th><th>5</th><th>4</th><th>3</th><th>2</th><th>1</th><th>0</th></tr>
</thead>
<tbody>
<tr><td rowspan="2">RAM bank 0-15</td><td rowspan="2">■</td><td rowspan="2">■</td><td>[colour: pink]</td><td>•</td><td>•</td><td>•</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>Port 7FFDh D2:D0</td><td></td><td></td></tr>
<tr><td>•</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>Port DFFDh D0</td><td></td><td></td></tr>
<tr><td rowspan="3">RAM bank in ports 7FFDh, DFFDh paging mode</td><td>■</td><td></td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>1</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>Returns 1</td><td></td><td>1</td></tr>
<tr><td rowspan="2"></td><td rowspan="2">■</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>0</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>No change in RAM bank / MMU 6 / MMU 7</td><td></td><td></td></tr>
<tr><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>1</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>Change RAM bank</td><td></td><td></td></tr>
<tr><td rowspan="3">Normal Paging Mode</td><td rowspan="3"></td><td rowspan="3">■</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>0</td><td>[colour: pink]</td><td>[colour: pink]</td><td>Port 1FFDh D0</td><td></td><td></td></tr>
<tr><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>•</td><td>Port 7FFDh D4</td><td></td><td></td></tr>
<tr><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>•</td><td>[colour: pink]</td><td>Port 1FFDh D2</td><td></td><td></td></tr>
<tr><td rowspan="3">allRAM Paging Mode</td><td rowspan="3"></td><td rowspan="3">■</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>1</td><td>[colour: pink]</td><td>[colour: pink]</td><td>Port 1FFDh D0</td><td></td><td></td></tr>
<tr><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>•</td><td>Port 1FFDh D1</td><td></td><td></td></tr>
<tr><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>•</td><td>[colour: pink]</td><td>Port 1FFDh D2</td><td></td><td></td></tr>
</tbody>
</table>

Writes can affect all ports 7FFDh, DFFDh, 1FFDh\
Writes always change the ROM / allRAM mapping\
Writes immediately change the current MMU mapping as if by Port Write

#### NextREG 143 (8Fh) – Memory Mapping Mode Control

<table>
<thead>
<tr><th rowspan="2">Group Name</th><th rowspan="2">R</th><th rowspan="2">W</th><th colspan="8">Data Bits</th><th rowspan="2">Description</th><th rowspan="2">H</th><th rowspan="2">D</th></tr>
<tr><th>7</th><th>6</th><th>5</th><th>4</th><th>3</th><th>2</th><th>1</th><th>0</th></tr>
</thead>
<tbody>
<tr><td rowspan="4">Memory Mapping Mode*</td><td rowspan="4">■</td><td rowspan="4">■</td><td>[colour: dark green]</td><td>[colour: dark green]</td><td>[colour: dark green]</td><td>[colour: dark green]</td><td>[colour: dark green]</td><td>[colour: dark green]</td><td>0</td><td>0</td><td>Standard ZX 128K / +3¹</td><td rowspan="4">■</td><td rowspan="4">0</td></tr>
<tr><td>[colour: dark green]</td><td>[colour: dark green]</td><td>[colour: dark green]</td><td>[colour: dark green]</td><td>[colour: dark green]</td><td>[colour: dark green]</td><td>0</td><td>1</td><td>Reserved</td></tr>
<tr><td>[colour: dark green]</td><td>[colour: dark green]</td><td>[colour: dark green]</td><td>[colour: dark green]</td><td>[colour: dark green]</td><td>[colour: dark green]</td><td>1</td><td>0</td><td>Pentagon 512K²</td></tr>
<tr><td>[colour: dark green]</td><td>[colour: dark green]</td><td>[colour: dark green]</td><td>[colour: dark green]</td><td>[colour: dark green]</td><td>[colour: dark green]</td><td>1</td><td>1</td><td>Pentagon 1024K³</td></tr>
<tr><td>Reserved</td><td>■</td><td>■</td><td>[colour: dark green] <b>0</b></td><td>[colour: dark green] <b>0</b></td><td>[colour: dark green] <b>0</b></td><td>[colour: dark green] <b>0</b></td><td>[colour: dark green] <b>0</b></td><td>[colour: dark green] <b>0</b></td><td>[colour: pink]</td><td>[colour: pink]</td><td>Reserved, must be 0</td><td></td><td></td></tr>
</tbody>
</table>

1 Principally ports 7FFDh, DFFDh and 1FFDh\
2 Principally port 7FFDh\
3 768 Kb on unexpanded Next machines. Principally ports 7FFDh and EFF7h\
\* The mapping modes affect how ports 7FFDh, DFFDh, 1FFDh and EFF7h carry out memory paging

#### NextREG 144 (90h) – PI GPIO Pin Output Enable 1/4

<table>
<thead>
<tr><th rowspan="2">Group Name</th><th rowspan="2">R</th><th rowspan="2">W</th><th colspan="8">Data Bits</th><th rowspan="2">Description</th><th rowspan="2">H</th><th rowspan="2">D</th></tr>
<tr><th>7</th><th>6</th><th>5</th><th>4</th><th>3</th><th>2</th><th>1</th><th>0</th></tr>
</thead>
<tbody>
<tr><td>Pin 0</td><td>■</td><td></td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>•</td><td>Pin 0 cannot be enabled</td><td></td><td>0</td></tr>
<tr><td>Pin 1</td><td>■</td><td></td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>•</td><td>[colour: pink]</td><td>Pin 1 cannot be enabled</td><td></td><td>0</td></tr>
<tr><td>Pin 2</td><td>■</td><td>■</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>•</td><td>[colour: pink]</td><td>[colour: pink]</td><td>Enable</td><td></td><td>0</td></tr>
<tr><td>Pin 3</td><td>■</td><td>■</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>•</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>Enable</td><td></td><td>0</td></tr>
<tr><td>Pin 4</td><td>■</td><td>■</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>•</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>Enable</td><td></td><td>0</td></tr>
<tr><td>Pin 5</td><td>■</td><td>■</td><td>[colour: pink]</td><td>[colour: pink]</td><td>•</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>Enable</td><td></td><td>0</td></tr>
<tr><td>Pin 6</td><td>■</td><td>■</td><td>[colour: pink]</td><td>•</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>Enable</td><td></td><td>0</td></tr>
<tr><td>Pin 7</td><td>■</td><td>■</td><td>•</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>Enable</td><td></td><td>0</td></tr>
</tbody>
</table>

#### NextREG 145 (91h) – PI GPIO Pin Output Enable 2/4

<table>
<thead>
<tr><th rowspan="2">Group Name</th><th rowspan="2">R</th><th rowspan="2">W</th><th colspan="8">Data Bits</th><th rowspan="2">Description</th><th rowspan="2">H</th><th rowspan="2">D</th></tr>
<tr><th>7</th><th>6</th><th>5</th><th>4</th><th>3</th><th>2</th><th>1</th><th>0</th></tr>
</thead>
<tbody>
<tr><td>Pin 8</td><td>■</td><td>■</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>•</td><td>Enable</td><td></td><td>0</td></tr>
<tr><td>Pin 9</td><td>■</td><td>■</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>•</td><td>[colour: pink]</td><td>Enable</td><td></td><td>0</td></tr>
<tr><td>Pin 10</td><td>■</td><td>■</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>•</td><td>[colour: pink]</td><td>[colour: pink]</td><td>Enable</td><td></td><td>0</td></tr>
<tr><td>Pin 11</td><td>■</td><td>■</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>•</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>Enable</td><td></td><td>0</td></tr>
<tr><td>Pin 12</td><td>■</td><td>■</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>•</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>Enable</td><td></td><td>0</td></tr>
<tr><td>Pin 13</td><td>■</td><td>■</td><td>[colour: pink]</td><td>[colour: pink]</td><td>•</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>Enable</td><td></td><td>0</td></tr>
<tr><td>Pin 14</td><td>■</td><td>■</td><td>[colour: pink]</td><td>•</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>Enable</td><td></td><td>0</td></tr>
<tr><td>Pin 15</td><td>■</td><td>■</td><td>•</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>Enable</td><td></td><td>0</td></tr>
</tbody>
</table>

#### NextREG 146 (92h) – PI GPIO Pin Output Enable 3/4

<table>
<thead>
<tr><th rowspan="2">Group Name</th><th rowspan="2">R</th><th rowspan="2">W</th><th colspan="8">Data Bits</th><th rowspan="2">Description</th><th rowspan="2">H</th><th rowspan="2">D</th></tr>
<tr><th>7</th><th>6</th><th>5</th><th>4</th><th>3</th><th>2</th><th>1</th><th>0</th></tr>
</thead>
<tbody>
<tr><td>Pin 16</td><td>■</td><td>■</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>•</td><td>Enable</td><td></td><td>0</td></tr>
<tr><td>Pin 17</td><td>■</td><td>■</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>•</td><td>[colour: pink]</td><td>Enable</td><td></td><td>0</td></tr>
<tr><td>Pin 18</td><td>■</td><td>■</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>•</td><td>[colour: pink]</td><td>[colour: pink]</td><td>Enable</td><td></td><td>0</td></tr>
<tr><td>Pin 19</td><td>■</td><td>■</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>•</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>Enable</td><td></td><td>0</td></tr>
<tr><td>Pin 20</td><td>■</td><td>■</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>•</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>Enable</td><td></td><td>0</td></tr>
<tr><td>Pin 21</td><td>■</td><td>■</td><td>[colour: pink]</td><td>[colour: pink]</td><td>•</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>Enable</td><td></td><td>0</td></tr>
<tr><td>Pin 22</td><td>■</td><td>■</td><td>[colour: pink]</td><td>•</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>Enable</td><td></td><td>0</td></tr>
<tr><td>Pin 23</td><td>■</td><td>■</td><td>•</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>Enable</td><td></td><td>0</td></tr>
</tbody>
</table>

#### NextREG 147 (93h) – PI GPIO Pin Output Enable 4/4 (MSB)

<table>
<thead>
<tr><th rowspan="2">Group Name</th><th rowspan="2">R</th><th rowspan="2">W</th><th colspan="8">Data Bits</th><th rowspan="2">Description</th><th rowspan="2">H</th><th rowspan="2">D</th></tr>
<tr><th>7</th><th>6</th><th>5</th><th>4</th><th>3</th><th>2</th><th>1</th><th>0</th></tr>
</thead>
<tbody>
<tr><td>Pin 24</td><td>■</td><td>■</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>•</td><td>Enable</td><td></td><td>0</td></tr>
<tr><td>Pin 25</td><td>■</td><td>■</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>•</td><td>[colour: pink]</td><td>Enable</td><td></td><td>0</td></tr>
<tr><td>Pin 26</td><td>■</td><td>■</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>•</td><td>[colour: pink]</td><td>[colour: pink]</td><td>Enable</td><td></td><td>0</td></tr>
<tr><td>Pin 27</td><td>■</td><td>■</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>•</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>Enable</td><td></td><td>0</td></tr>
</tbody>
</table>

#### [?]

<table>
<thead>
<tr><th>Group Name</th><th>R</th><th>W</th><th>7</th><th>6</th><th>5</th><th>4</th><th>3</th><th>2</th><th>1</th><th>0</th><th>Description</th><th>H</th><th>D</th></tr>
</thead>
<tbody>
<tr><td>Pin 0</td><td>■</td><td>■</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>•</td><td>Data</td><td></td><td>1</td></tr>
<tr><td>Pin 1</td><td>■</td><td>■</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>•</td><td>[colour: pink]</td><td>Data</td><td></td><td>1</td></tr>
<tr><td>Pin 2</td><td>■</td><td>■</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>•</td><td>[colour: pink]</td><td>[colour: pink]</td><td>Data</td><td></td><td>1</td></tr>
<tr><td>Pin 3</td><td>■</td><td>■</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>•</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>Data</td><td></td><td>1</td></tr>
<tr><td>Pin 4</td><td>■</td><td>■</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>•</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>Data</td><td></td><td>1</td></tr>
<tr><td>Pin 5</td><td>■</td><td>■</td><td>[colour: pink]</td><td>[colour: pink]</td><td>•</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>Data</td><td></td><td>1</td></tr>
<tr><td>Pin 6</td><td>■</td><td>■</td><td>[colour: pink]</td><td>•</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>Data</td><td></td><td>1</td></tr>
<tr><td>Pin 7</td><td>■</td><td>■</td><td>•</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>Data</td><td></td><td>1</td></tr>
</tbody>
</table>

#### NextREG 153 (99h) – PI GPIO Pin State 2/4

<table>
<thead>
<tr><th rowspan="2">Group Name</th><th rowspan="2">R</th><th rowspan="2">W</th><th colspan="8">Data Bits</th><th rowspan="2">Description</th><th rowspan="2">H</th><th rowspan="2">D</th></tr>
<tr><th>7</th><th>6</th><th>5</th><th>4</th><th>3</th><th>2</th><th>1</th><th>0</th></tr>
</thead>
<tbody>
<tr><td>Pin 8</td><td>■</td><td>■</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>•</td><td>Data</td><td></td><td>1</td></tr>
<tr><td>Pin 9</td><td>■</td><td>■</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>•</td><td>[colour: pink]</td><td>Data</td><td></td><td>0</td></tr>
<tr><td>Pin 10</td><td>■</td><td>■</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>•</td><td>[colour: pink]</td><td>[colour: pink]</td><td>Data</td><td></td><td>0</td></tr>
<tr><td>Pin 11</td><td>■</td><td>■</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>•</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>Data</td><td></td><td>0</td></tr>
<tr><td>Pin 12</td><td>■</td><td>■</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>•</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>Data</td><td></td><td>0</td></tr>
<tr><td>Pin 13</td><td>■</td><td>■</td><td>[colour: pink]</td><td>[colour: pink]</td><td>•</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>Data</td><td></td><td>0</td></tr>
<tr><td>Pin 14</td><td>■</td><td>■</td><td>[colour: pink]</td><td>•</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>Data</td><td></td><td>0</td></tr>
<tr><td>Pin 15</td><td>■</td><td>■</td><td>•</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>Data</td><td></td><td>0</td></tr>
</tbody>
</table>

#### NextREG 154 (9Ah) – PI GPIO Pin State 3/4

<table>
<thead>
<tr><th rowspan="2">Group Name</th><th rowspan="2">R</th><th rowspan="2">W</th><th colspan="8">Data Bits</th><th rowspan="2">Description</th><th rowspan="2">H</th><th rowspan="2">D</th></tr>
<tr><th>7</th><th>6</th><th>5</th><th>4</th><th>3</th><th>2</th><th>1</th><th>0</th></tr>
</thead>
<tbody>
<tr><td>Pin 16</td><td>■</td><td>■</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>•</td><td>Data</td><td></td><td>0</td></tr>
<tr><td>Pin 17</td><td>■</td><td>■</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>•</td><td>[colour: pink]</td><td>Data</td><td></td><td>0</td></tr>
<tr><td>Pin 18</td><td>■</td><td>■</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>•</td><td>[colour: pink]</td><td>[colour: pink]</td><td>Data</td><td></td><td>0</td></tr>
<tr><td>Pin 19</td><td>■</td><td>■</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>•</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>Data</td><td></td><td>0</td></tr>
<tr><td>Pin 20</td><td>■</td><td>■</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>•</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>Data</td><td></td><td>0</td></tr>
<tr><td>Pin 21</td><td>■</td><td>■</td><td>[colour: pink]</td><td>[colour: pink]</td><td>•</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>Data</td><td></td><td>0</td></tr>
<tr><td>Pin 22</td><td>■</td><td>■</td><td>[colour: pink]</td><td>•</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>Data</td><td></td><td>0</td></tr>
<tr><td>Pin 23</td><td>■</td><td>■</td><td>•</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>Data</td><td></td><td>0</td></tr>
</tbody>
</table>

#### NextREG 155 (9Bh) – PI GPIO Pin State 4/4 (MSB)

<table>
<thead>
<tr><th rowspan="2">Group Name</th><th rowspan="2">R</th><th rowspan="2">W</th><th colspan="8">Data Bits</th><th rowspan="2">Description</th><th rowspan="2">H</th><th rowspan="2">D</th></tr>
<tr><th>7</th><th>6</th><th>5</th><th>4</th><th>3</th><th>2</th><th>1</th><th>0</th></tr>
</thead>
<tbody>
<tr><td>Pin 24</td><td>■</td><td>■</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>•</td><td>Data</td><td></td><td>0</td></tr>
<tr><td>Pin 25</td><td>■</td><td>■</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>•</td><td>[colour: pink]</td><td>Data</td><td></td><td>0</td></tr>
<tr><td>Pin 26</td><td>■</td><td>■</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>•</td><td>[colour: pink]</td><td>[colour: pink]</td><td>Data</td><td></td><td>0</td></tr>
<tr><td>Pin 27</td><td>■</td><td>■</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>•</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>Data</td><td></td><td>0</td></tr>
</tbody>
</table>

Writes to the above registers only propagate to the **PI GPIO** when the corresponding pin has its output enabled by **NextREG 144 (90h)** to **147 (93h)**

#### NextREG 160 (A0h) – PI Peripheral Enable

<table>
<thead>
<tr><th rowspan="2">Group Name</th><th rowspan="2">R</th><th rowspan="2">W</th><th colspan="8">Data Bits</th><th rowspan="2">Description</th><th rowspan="2">H</th><th rowspan="2">D</th></tr>
<tr><th>7</th><th>6</th><th>5</th><th>4</th><th>3</th><th>2</th><th>1</th><th>0</th></tr>
</thead>
<tbody>
<tr><td>Enable SPI</td><td>■</td><td>■</td><td>[colour: dark green]</td><td>[colour: dark green]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: dark green]</td><td>[colour: dark green]</td><td>•</td><td>Enable SPI on GPIO 7,8,9,10,11 *</td><td></td><td>0</td></tr>
<tr><td>Reserved</td><td>■</td><td>■</td><td>[colour: dark green]</td><td>[colour: dark green]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: dark green] <b>0</b></td><td>[colour: dark green] <b>0</b></td><td>[colour: pink]</td><td>Reserved, must be 0</td><td></td><td></td></tr>
<tr><td>Enable I2C</td><td>■</td><td>■</td><td>[colour: dark green]</td><td>[colour: dark green]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>•</td><td>[colour: dark green]</td><td>[colour: dark green]</td><td>[colour: pink]</td><td>Enable I2C on GPIO 2,3 *</td><td></td><td>0</td></tr>
<tr><td rowspan="2">PI Communication Type</td><td rowspan="2">■</td><td rowspan="2">■</td><td>[colour: dark green]</td><td>[colour: dark green]</td><td>[colour: pink]</td><td><b>0</b></td><td>[colour: pink]</td><td>[colour: dark green]</td><td>[colour: dark green]</td><td>[colour: pink]</td><td>Connect Rx to GPIO 15, Tx to GPIO 14¹,*</td><td rowspan="2"></td><td rowspan="2">0</td></tr>
<tr><td>[colour: dark green]</td><td>[colour: dark green]</td><td>[colour: pink]</td><td>1</td><td>[colour: pink]</td><td>[colour: dark green]</td><td>[colour: dark green]</td><td>[colour: pink]</td><td>Connect Rx to GPIO 14, Tx to GPIO 15 ²,*</td></tr>
<tr><td>Enable UART³</td><td>■</td><td>■</td><td>[colour: dark green]</td><td>[colour: dark green]</td><td>•</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: dark green]</td><td>[colour: dark green]</td><td>[colour: pink]</td><td>Enable UART on GPIO 14,15 *</td><td></td><td>0</td></tr>
<tr><td>Reserved</td><td>■</td><td>■</td><td>[colour: dark green] <b>0</b></td><td>[colour: dark green] <b>0</b></td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: dark green]</td><td>[colour: dark green]</td><td>[colour: pink]</td><td>Reserved, must be 0</td><td></td><td></td></tr>
</tbody>
</table>

\* Overrides GPIO Enables\
**1** For communication with Pi HATS\
**2** For communication with Pi\
**3** GPIO 16, 17 will act as RTR_n and CTS_n if the UART is in Hardware Flow Control Mode

#### NextREG 162 (A2h) – PI I²S Audio Control

<table>
<thead>
<tr><th rowspan="2">Group Name</th><th rowspan="2">R</th><th rowspan="2">W</th><th colspan="8">Data Bits</th><th rowspan="2">Description</th><th rowspan="2">H</th><th rowspan="2">D</th></tr>
<tr><th>7</th><th>6</th><th>5</th><th>4</th><th>3</th><th>2</th><th>1</th><th>0</th></tr>
</thead>
<tbody>
<tr><td>Redirect to EAR</td><td>■</td><td>■</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: dark green]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: dark green]</td><td>•</td><td>Direct I²S audio to EAR on port 0xFE</td><td></td><td>0</td></tr>
<tr><td>Reserved</td><td>■</td><td>■</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: dark green]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: dark green] <b>1</b></td><td>[colour: pink]</td><td>Reserved, must be 1</td><td></td><td>1</td></tr>
<tr><td>Mute R control</td><td>■</td><td>■</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: dark green]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>•</td><td>[colour: dark green]</td><td>[colour: pink]</td><td>Mute right side</td><td></td><td>0</td></tr>
<tr><td>Mute L control</td><td>■</td><td>■</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: dark green]</td><td>[colour: pink]</td><td>•</td><td>[colour: pink]</td><td>[colour: dark green]</td><td>[colour: pink]</td><td>Mute left side</td><td></td><td>0</td></tr>
<tr><td rowspan="2">Audio flow direction</td><td rowspan="2">■</td><td rowspan="2">■</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: dark green]</td><td>0</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: dark green]</td><td>[colour: pink]</td><td>PCM_DOUT to Pi, PCM_DIN from Pi (Hats)</td><td rowspan="2"></td><td rowspan="2">0</td></tr>
<tr><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: dark green]</td><td>1</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: dark green]</td><td>[colour: pink]</td><td>PCM_DOUT from Pi, PCM_DIN to Pi (pi)</td></tr>
<tr><td>Reserved</td><td>■</td><td></td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: dark green] <b>0</b></td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: dark green]</td><td>[colour: pink]</td><td>Reserved, must be 0</td><td></td><td></td></tr>
<tr><td rowspan="4">I²S state</td><td rowspan="4">■</td><td rowspan="4">■</td><td><b>0</b></td><td><b>0</b></td><td>[colour: dark green]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: dark green]</td><td>[colour: pink]</td><td>I²S Disabled</td><td rowspan="4"></td><td rowspan="4">*</td></tr>
<tr><td>0</td><td>1</td><td>[colour: dark green]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: dark green]</td><td>[colour: pink]</td><td>I²S is mono, source R</td></tr>
<tr><td>1</td><td>0</td><td>[colour: dark green]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: dark green]</td><td>[colour: pink]</td><td>I²S is mono, source L</td></tr>
<tr><td>1</td><td>1</td><td>[colour: dark green]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: dark green]</td><td>[colour: pink]</td><td>I²S is stereo</td></tr>
</tbody>
</table>

\* Soft reset sets a default of **00**

#### NextREG 168 (A8h) – ESP WiFi GPIO Output Control

<table>
<thead>
<tr><th rowspan="2">Group Name</th><th rowspan="2">R</th><th rowspan="2">W</th><th colspan="8">Data Bits</th><th rowspan="2">Description</th><th rowspan="2">H</th><th rowspan="2">D</th></tr>
<tr><th>7</th><th>6</th><th>5</th><th>4</th><th>3</th><th>2</th><th>1</th><th>0</th></tr>
</thead>
<tbody>
<tr><td>GPIO 0 Output Control</td><td>■</td><td>■</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>•</td><td>GPIO 0 Output Enable</td><td></td><td>0</td></tr>
<tr><td>GPIO 2 Output Control</td><td>■</td><td>■</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td><b>0</b></td><td>[colour: pink]</td><td>[colour: pink]</td><td>GPIO 2 Output Enable¹</td><td></td><td>0</td></tr>
</tbody>
</table>

1 Fixed at 0; GPIO 2 is Read-Only

#### NextREG 169 (A9h) – ESP WiFi GPIO Control

<table>
<thead>
<tr><th rowspan="2">Group Name</th><th rowspan="2">R</th><th rowspan="2">W</th><th colspan="8">Data Bits</th><th rowspan="2">Description</th><th rowspan="2">H</th><th rowspan="2">D</th></tr>
<tr><th>7</th><th>6</th><th>5</th><th>4</th><th>3</th><th>2</th><th>1</th><th>0</th></tr>
</thead>
<tbody>
<tr><td>GPIO 0</td><td>■</td><td>■</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>•</td><td>Read / Write GPIO 0</td><td></td><td>1</td></tr>
<tr><td>GPIO 2</td><td>■</td><td>■</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>•</td><td>[colour: pink]</td><td>[colour: pink]</td><td>Read / Write GPIO 2</td><td></td><td>1</td></tr>
</tbody>
</table>

<!-- PDF page 241 -->

#### NextREG 176 (B0h) – Extended Keys 0\*

<table>
<thead>
<tr><th rowspan="2">Group Name</th><th rowspan="2">R</th><th rowspan="2">W</th><th colspan="8">Data Bits</th><th rowspan="2">Description</th><th rowspan="2">H</th><th rowspan="2">D</th></tr>
<tr><th>7</th><th>6</th><th>5</th><th>4</th><th>3</th><th>2</th><th>1</th><th>0</th></tr>
</thead>
<tbody>
<tr><td>RIGHT Status</td><td>■</td><td></td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>•</td><td>Key pressed status flag (1 = pressed)</td><td></td><td></td></tr>
<tr><td>LEFT Status</td><td>■</td><td></td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>•</td><td>[colour: pink]</td><td>Key pressed status flag (1 = pressed)</td><td></td><td></td></tr>
<tr><td>DOWN Status</td><td>■</td><td></td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>•</td><td>[colour: pink]</td><td>[colour: pink]</td><td>Key pressed status flag (1 = pressed)</td><td></td><td></td></tr>
<tr><td>UP Status</td><td>■</td><td></td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>•</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>Key pressed status flag (1 = pressed)</td><td></td><td></td></tr>
<tr><td>. Status</td><td>■</td><td></td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>•</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>Key pressed status flag (1 = pressed)</td><td></td><td></td></tr>
<tr><td>, Status</td><td>■</td><td></td><td>[colour: pink]</td><td>[colour: pink]</td><td>•</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>Key pressed status flag (1 = pressed)</td><td></td><td></td></tr>
<tr><td>" Status</td><td>■</td><td></td><td>[colour: pink]</td><td>•</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>Key pressed status flag (1 = pressed)</td><td></td><td></td></tr>
<tr><td>; Status</td><td>■</td><td></td><td>•</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>Key pressed status flag (1 = pressed)</td><td></td><td></td></tr>
</tbody>
</table>

\* **NextREG 104 (68h) D4** stops extended keys from making entries into the **8x5** keyboard matrix

#### NextREG 177 (B1h) – Extended Keys 1\*

<table>
<thead>
<tr><th rowspan="2">Group Name</th><th rowspan="2">R</th><th rowspan="2">W</th><th colspan="8">Data Bits</th><th rowspan="2">Description</th><th rowspan="2">H</th><th rowspan="2">D</th></tr>
<tr><th>7</th><th>6</th><th>5</th><th>4</th><th>3</th><th>2</th><th>1</th><th>0</th></tr>
</thead>
<tbody>
<tr><td>EXTEND Status</td><td>■</td><td></td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>•</td><td>Key pressed status flag (1 = pressed)</td><td></td><td></td></tr>
<tr><td>CAPS LOCK Status</td><td>■</td><td></td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>•</td><td>[colour: pink]</td><td>Key pressed status flag (1 = pressed)</td><td></td><td></td></tr>
<tr><td>GRAPH Status</td><td>■</td><td></td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>•</td><td>[colour: pink]</td><td>[colour: pink]</td><td>Key pressed status flag (1 = pressed)</td><td></td><td></td></tr>
<tr><td>TRUE VIDEO Status</td><td>■</td><td></td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>•</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>Key pressed status flag (1 = pressed)</td><td></td><td></td></tr>
<tr><td>INV VIDEO Status</td><td>■</td><td></td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>•</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>Key pressed status flag (1 = pressed)</td><td></td><td></td></tr>
<tr><td>BREAK Status</td><td>■</td><td></td><td>[colour: pink]</td><td>[colour: pink]</td><td>•</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>Key pressed status flag (1 = pressed)</td><td></td><td></td></tr>
<tr><td>EDIT Status</td><td>■</td><td></td><td>[colour: pink]</td><td>•</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>Key pressed status flag (1 = pressed)</td><td></td><td></td></tr>
<tr><td>DELETE Status</td><td>■</td><td></td><td>•</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>Key pressed status flag (1 = pressed)</td><td></td><td></td></tr>
</tbody>
</table>

\* **NextREG 104 (68h) D4** stops extended keys from making entries into the **8x5** keyboard matrix

#### NextREG 178 (B2h) – Extended MD Pad Buttons

<table>
<thead>
<tr><th rowspan="2">Group Name</th><th rowspan="2">R</th><th rowspan="2">W</th><th colspan="8">Data Bits</th><th rowspan="2">Description</th><th rowspan="2">H</th><th rowspan="2">D</th></tr>
<tr><th>7</th><th>6</th><th>5</th><th>4</th><th>3</th><th>2</th><th>1</th><th>0</th></tr>
</thead>
<tbody>
<tr><td>Left pad MODE Status</td><td>■</td><td></td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>•</td><td>Button pressed status flag (1 = pressed)</td><td></td><td></td></tr>
<tr><td>Left pad Y Status</td><td>■</td><td></td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>•</td><td>[colour: pink]</td><td>Button pressed status flag (1 = pressed)</td><td></td><td></td></tr>
<tr><td>Left pad Z Status</td><td>■</td><td></td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>•</td><td>[colour: pink]</td><td>[colour: pink]</td><td>Button pressed status flag (1 = pressed)</td><td></td><td></td></tr>
<tr><td>Left pad X Status</td><td>■</td><td></td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>•</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>Button pressed status flag (1 = pressed)</td><td></td><td></td></tr>
<tr><td>Right pad MODE Status</td><td>■</td><td></td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>•</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>Button pressed status flag (1 = pressed)</td><td></td><td></td></tr>
<tr><td>Right pad Y Status</td><td>■</td><td></td><td>[colour: pink]</td><td>[colour: pink]</td><td>•</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>Button pressed status flag (1 = pressed)</td><td></td><td></td></tr>
<tr><td>Right pad Z Status</td><td>■</td><td></td><td>[colour: pink]</td><td>•</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>Button pressed status flag (1 = pressed)</td><td></td><td></td></tr>
<tr><td>Right pad X Status</td><td>■</td><td></td><td>•</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>Button pressed status flag (1 = pressed)</td><td></td><td></td></tr>
</tbody>
</table>

#### NextREG 184 (B8) – divMMC Entry Points 0

<table>
<thead>
<tr><th rowspan="2">Group Name</th><th rowspan="2">R</th><th rowspan="2">W</th><th colspan="8">Data Bits</th><th rowspan="2">Description</th><th rowspan="2">H</th><th rowspan="2">D</th></tr>
<tr><th>7</th><th>6</th><th>5</th><th>4</th><th>3</th><th>2</th><th>1</th><th>0</th></tr>
</thead>
<tbody>
<tr><td>0000h Automap Control</td><td>■</td><td>■</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>•</td><td>1 to enable automap (instruction fetch)</td><td></td><td>1</td></tr>
<tr><td>0008h Automap Control</td><td>■</td><td>■</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>•</td><td>[colour: pink]</td><td>1 to enable automap (instruction fetch)</td><td></td><td>1</td></tr>
<tr><td>0010h Automap Control</td><td>■</td><td>■</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>•</td><td>[colour: pink]</td><td>[colour: pink]</td><td>1 to enable automap (instruction fetch)</td><td></td><td></td></tr>
<tr><td>0018h Automap Control</td><td>■</td><td>■</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>•</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>1 to enable automap (instruction fetch)</td><td></td><td></td></tr>
<tr><td>0020h Automap Control</td><td>■</td><td>■</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>•</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>1 to enable automap (instruction fetch)</td><td></td><td></td></tr>
<tr><td>0028h Automap Control</td><td>■</td><td>■</td><td>[colour: pink]</td><td>[colour: pink]</td><td>•</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>1 to enable automap (instruction fetch)</td><td></td><td></td></tr>
<tr><td>0030h Automap Control</td><td>■</td><td>■</td><td>[colour: pink]</td><td>•</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>1 to enable automap (instruction fetch)</td><td></td><td></td></tr>
<tr><td>0038h Automap Control</td><td>■</td><td>■</td><td>•</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>1 to enable automap (instruction fetch)</td><td></td><td>1</td></tr>
</tbody>
</table>

#### NextREG 185 (B9h) – divMMC Entry Points Valid 0

<table>
<thead>
<tr><th rowspan="2">Group Name</th><th rowspan="2">R</th><th rowspan="2">W</th><th colspan="8">Data Bits</th><th rowspan="2">Description</th><th rowspan="2">H</th><th rowspan="2">D</th></tr>
<tr><th>7</th><th>6</th><th>5</th><th>4</th><th>3</th><th>2</th><th>1</th><th>0</th></tr>
</thead>
<tbody>
<tr><td>Entry point at 0000h</td><td>■</td><td>■</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>•</td><td>1 for always*</td><td></td><td>1</td></tr>
<tr><td>Entry point at 0008h</td><td>■</td><td>■</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>•</td><td>[colour: pink]</td><td>1 for always*</td><td></td><td>0</td></tr>
<tr><td>Entry point at 0010h</td><td>■</td><td>■</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>•</td><td>[colour: pink]</td><td>[colour: pink]</td><td>1 for always*</td><td></td><td>0</td></tr>
<tr><td>Entry point at 0018h</td><td>■</td><td>■</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>•</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>1 for always*</td><td></td><td>0</td></tr>
<tr><td>Entry point at 0020h</td><td>■</td><td>■</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>•</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>1 for always*</td><td></td><td>0</td></tr>
<tr><td>Entry point at 0028h</td><td>■</td><td>■</td><td>[colour: pink]</td><td>[colour: pink]</td><td>•</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>1 for always*</td><td></td><td>0</td></tr>
<tr><td>Entry point at 0030h</td><td>■</td><td>■</td><td>[colour: pink]</td><td>•</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>1 for always*</td><td></td><td>0</td></tr>
<tr><td>Entry point at 0038h</td><td>■</td><td>■</td><td>•</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>1 for always*</td><td></td><td>0</td></tr>
</tbody>
</table>

\* Otherwise when ROM3 is present

#### NextREG 186 (BAh) – divMMC Entry Points Timing Control 0

<table>
<thead>
<tr><th rowspan="2">Group Name</th><th rowspan="2">R</th><th rowspan="2">W</th><th colspan="8">Data Bits</th><th rowspan="2">Description</th><th rowspan="2">H</th><th rowspan="2">D</th></tr>
<tr><th>7</th><th>6</th><th>5</th><th>4</th><th>3</th><th>2</th><th>1</th><th>0</th></tr>
</thead>
<tbody>
<tr><td>Entry point at 0000h</td><td>■</td><td>■</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>•</td><td>1 for instant mapping otherwise delayed</td><td></td><td>0</td></tr>
<tr><td>Entry point at 0008h</td><td>■</td><td>■</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>•</td><td>[colour: pink]</td><td>1 for instant mapping otherwise delayed</td><td></td><td>0</td></tr>
<tr><td>Entry point at 0010h</td><td>■</td><td>■</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>•</td><td>[colour: pink]</td><td>[colour: pink]</td><td>1 for instant mapping otherwise delayed</td><td></td><td>0</td></tr>
<tr><td>Entry point at 0018h</td><td>■</td><td>■</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>•</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>1 for instant mapping otherwise delayed</td><td></td><td>0</td></tr>
<tr><td>Entry point at 0020h</td><td>■</td><td>■</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>•</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>1 for instant mapping otherwise delayed</td><td></td><td>0</td></tr>
<tr><td>Entry point at 0028h</td><td>■</td><td>■</td><td>[colour: pink]</td><td>[colour: pink]</td><td>•</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>1 for instant mapping otherwise delayed</td><td></td><td>0</td></tr>
<tr><td>Entry point at 0030h</td><td>■</td><td>■</td><td>[colour: pink]</td><td>•</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>1 for instant mapping otherwise delayed</td><td></td><td>0</td></tr>
<tr><td>Entry point at 0038h</td><td>■</td><td>■</td><td>•</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>1 for instant mapping otherwise delayed</td><td></td><td>0</td></tr>
</tbody>
</table>

#### NextREG 187 (BBh) – divMMC Entry Points 1

<table>
<thead>
<tr><th rowspan="2">Group Name</th><th rowspan="2">R</th><th rowspan="2">W</th><th colspan="8">Data Bits</th><th rowspan="2">Description</th><th rowspan="2">H</th><th rowspan="2">D</th></tr>
<tr><th>7</th><th>6</th><th>5</th><th>4</th><th>3</th><th>2</th><th>1</th><th>0</th></tr>
</thead>
<tbody>
<tr><td>Entry point at 0066h (delayed)</td><td>■</td><td>■</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>•</td><td>1 to enable automap (instr. fetch + button)</td><td></td><td>1</td></tr>
<tr><td>Entry point at 0066h (instant)</td><td>■</td><td>■</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>•</td><td>[colour: pink]</td><td>1 to enable automap (instr. fetch + button)</td><td></td><td>0</td></tr>
<tr><td>Entry point at 04C6h (ROM3)¹</td><td>■</td><td>■</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>•</td><td>[colour: pink]</td><td>[colour: pink]</td><td>1 to enable automap (instr. fetch/delayed)</td><td></td><td>1</td></tr>
<tr><td>Entry point at 0562h (ROM3)¹</td><td>■</td><td>■</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>•</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>1 to enable automap (instr. fetch/delayed)</td><td></td><td>1</td></tr>
<tr><td>Entry point at 04D7h (ROM3)²</td><td>■</td><td>■</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>•</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>1 to enable automap (instr. fetch/delayed)</td><td></td><td>0</td></tr>
<tr><td>Entry point at 056Ah (ROM3)²</td><td>■</td><td>■</td><td>[colour: pink]</td><td>[colour: pink]</td><td>•</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>1 to enable automap (instr. fetch/delayed)</td><td></td><td>0</td></tr>
<tr><td>Entry points at 1FF8h:1FFFh</td><td>■</td><td>■</td><td>[colour: pink]</td><td>•</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>1 to disable automap (instr. fetch/delayed)</td><td></td><td>1</td></tr>
<tr><td>Entry points at 3Dxxh (ROM3)³</td><td>■</td><td>■</td><td>•</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>1 to enable automap (instr. fetch/instant)</td><td></td><td>1</td></tr>
</tbody>
</table>

1 Tape traps. Original divMMC + esxDOS\
2 Tape traps. NextZXOS (these offer better compatibility with tape-based software)\
3 Used by TR-DOS

### INTERRUPTS

#### NextREG 192 (C0h) – Interrupt Control

<table>
<thead>
<tr><th rowspan="2">Group Name</th><th rowspan="2">R</th><th rowspan="2">W</th><th colspan="8">Data Bits</th><th rowspan="2">Description</th><th rowspan="2">H</th><th rowspan="2">D</th></tr>
<tr><th>7</th><th>6</th><th>5</th><th>4</th><th>3</th><th>2</th><th>1</th><th>0</th></tr>
</thead>
<tbody>
<tr><td>Maskable Interrupt Mode</td><td>■</td><td>■</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: dark green]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>0</td><td>Pulse</td><td></td><td>0</td></tr>
<tr><td rowspan="3">Current Z80 Interrupt Mode</td><td rowspan="3">■</td><td rowspan="3"></td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: dark green]</td><td>[colour: pink]</td><td>0</td><td>0</td><td>[colour: pink]</td><td>Interrupt Mode 0</td><td rowspan="3"></td><td rowspan="3">0</td></tr>
<tr><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: dark green]</td><td>[colour: pink]</td><td>0</td><td>1</td><td>[colour: pink]</td><td>Interrupt Mode 1</td></tr>
<tr><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: dark green]</td><td>[colour: pink]</td><td>1</td><td>0</td><td>[colour: pink]</td><td>Interrupt Mode 2</td></tr>
<tr><td>Stackless NMI Enable¹</td><td>■</td><td>■</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: dark green]</td><td>•</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>Toggle (1=enable, 0=disable)</td><td></td><td>0</td></tr>
<tr><td>Reserved</td><td>■</td><td>■</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: dark green] <b>0</b></td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>Reserved, must be 0</td><td></td><td>0</td></tr>
<tr><td>IM2 vector</td><td>■</td><td>■</td><td>•</td><td>•</td><td>•</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>Programmable portion of IM2 vector</td><td></td><td>0</td></tr>
<tr><td>Maskable Interrupt Mode</td><td>■</td><td>■</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>1</td><td>Hardware IM2²</td><td></td><td>0</td></tr>
<tr><td rowspan="15">Interrupt Vector Generated</td><td rowspan="15">■</td><td rowspan="15">■</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>.0</td><td>0</td><td>0</td><td>0</td><td>[colour: pink]</td><td>Line interrupt (Highest Priority)</td><td></td><td></td></tr>
<tr><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>0</td><td>0</td><td>0</td><td>1</td><td>[colour: pink]</td><td>UART 0 Rx</td><td></td><td></td></tr>
<tr><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>0</td><td>0</td><td>1</td><td>0</td><td>[colour: pink]</td><td>UART 1 Rx</td><td></td><td></td></tr>
<tr><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>0</td><td>0</td><td>1</td><td>1</td><td>[colour: pink]</td><td>CTC Channel 0</td><td></td><td></td></tr>
<tr><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>0</td><td>1</td><td>0</td><td>0</td><td>[colour: pink]</td><td>CTC Channel 1</td><td></td><td></td></tr>
<tr><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>0</td><td>1</td><td>0</td><td>1</td><td>[colour: pink]</td><td>CTC Channel 2</td><td></td><td></td></tr>
<tr><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>0</td><td>1</td><td>1</td><td>0</td><td>[colour: pink]</td><td>CTC Channel 3</td><td></td><td></td></tr>
<tr><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>0</td><td>1</td><td>1</td><td>1</td><td>[colour: pink]</td><td>CTC Channel 4</td><td></td><td></td></tr>
<tr><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>1</td><td>0</td><td>0</td><td>0</td><td>[colour: pink]</td><td>CTC Channel 5</td><td></td><td></td></tr>
<tr><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>1</td><td>0</td><td>0</td><td>1</td><td>[colour: pink]</td><td>CTC Channel 6</td><td></td><td></td></tr>
<tr><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>1</td><td>0</td><td>1</td><td>0</td><td>[colour: pink]</td><td>CTC Channel 7</td><td></td><td></td></tr>
<tr><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>1</td><td>0</td><td>1</td><td>1</td><td>[colour: pink]</td><td>ULA</td><td></td><td></td></tr>
<tr><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>1</td><td>1</td><td>0</td><td>0</td><td>[colour: pink]</td><td>UART 0 Tx</td><td></td><td></td></tr>
<tr><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>1</td><td>1</td><td>0</td><td>1</td><td>[colour: pink]</td><td>UART 1 Tx (lowest priority)</td><td></td><td></td></tr>
<tr><td>•</td><td>•</td><td>•</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>NextREG 192 (C0h) D7:D5</td><td></td><td></td></tr>
</tbody>
</table>

1 The return address pushed during an **NMI** acknowledge cycle will be written to **NextREG** instead of memory (the **SP** will be decremented) and the first **RETN** after the acknowledge will take its return address from **NextREG** instead of memory (the **SP** will be incremented)\
If D3 = 0 and in other circumstances (see advanced hardware manual), **RETN** functions normally\
2 In Hardware IM2 Mode the expansion bus is the lowest priority interrupter and if no vector is supplied externally then **255 (FFh)** will be generated

#### NextREG 194 (C2h) – NMI Return Address LSB

<table>
<thead>
<tr><th rowspan="2">Group Name</th><th rowspan="2">R</th><th rowspan="2">W</th><th colspan="8">Data Bits</th><th rowspan="2">Description</th><th rowspan="2">H</th><th rowspan="2">D</th></tr>
<tr><th>7</th><th>6</th><th>5</th><th>4</th><th>3</th><th>2</th><th>1</th><th>0</th></tr>
</thead>
<tbody>
<tr><td>NMI Return Address</td><td>■</td><td>■</td><td>•</td><td>•</td><td>•</td><td>•</td><td>•</td><td>•</td><td>•</td><td>•</td><td>8-bit value (LSB)</td><td></td><td>*</td></tr>
</tbody>
</table>

The return address written during an **NMI** acknowledge cycle is always stored in this and the next (**NextREG C3h**) registers

#### NextREG 195 (C3h) – NMI Return Address MSB

<table>
<thead>
<tr><th rowspan="2">Group Name</th><th rowspan="2">R</th><th rowspan="2">W</th><th colspan="8">Data Bits</th><th rowspan="2">Description</th><th rowspan="2">H</th><th rowspan="2">D</th></tr>
<tr><th>7</th><th>6</th><th>5</th><th>4</th><th>3</th><th>2</th><th>1</th><th>0</th></tr>
</thead>
<tbody>
<tr><td>NMI Return Address</td><td>■</td><td>■</td><td>•</td><td>•</td><td>•</td><td>•</td><td>•</td><td>•</td><td>•</td><td>•</td><td>8-bit value (MSB)</td><td></td><td>*</td></tr>
</tbody>
</table>

The return address written during an **NMI** acknowledge cycle is always stored in this and the previous (**NextREG C2h**) registers

#### NextREG 196 (C4h) – Interrupt Enables 0

<table>
<thead>
<tr><th rowspan="2">Group Name</th><th rowspan="2">R</th><th rowspan="2">W</th><th colspan="8">Data Bits</th><th rowspan="2">Description</th><th rowspan="2">H</th><th rowspan="2">D</th></tr>
<tr><th>7</th><th>6</th><th>5</th><th>4</th><th>3</th><th>2</th><th>1</th><th>0</th></tr>
</thead>
<tbody>
<tr><td>ULA</td><td>■</td><td>■</td><td>[colour: pink]</td><td>[colour: dark green]</td><td>[colour: dark green]</td><td>[colour: dark green]</td><td>[colour: dark green]</td><td>[colour: dark green]</td><td>[colour: pink]</td><td>•</td><td>1 to enable*</td><td></td><td>1</td></tr>
<tr><td>Line</td><td>■</td><td>■</td><td>[colour: pink]</td><td>[colour: dark green]</td><td>[colour: dark green]</td><td>[colour: dark green]</td><td>[colour: dark green]</td><td>[colour: dark green]</td><td>•</td><td>[colour: pink]</td><td>1 to enable*</td><td></td><td>0</td></tr>
<tr><td>Reserved</td><td>■</td><td>■</td><td>[colour: pink]</td><td>[colour: dark green] <b>0</b></td><td>[colour: dark green] <b>0</b></td><td>[colour: dark green] <b>0</b></td><td>[colour: dark green] <b>0</b></td><td>[colour: dark green] <b>0</b></td><td>[colour: pink]</td><td>[colour: pink]</td><td>Reserved must be 0</td><td></td><td>0</td></tr>
<tr><td>Expasion Bus I̅N̅T̅</td><td>■</td><td>■</td><td>•</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>1 to enable</td><td></td><td>1</td></tr>
</tbody>
</table>

\* Aliases of interrupt enable bits in **NextREG 34 (22h)**\
If a device interrupt is disabled, it enters a polled mode

#### NextREG 197 (C5h) – Interrupt Enables 1

<table>
<thead>
<tr><th rowspan="2">Group Name</th><th rowspan="2">R</th><th rowspan="2">W</th><th colspan="8">Data Bits</th><th rowspan="2">Description</th><th rowspan="2">H</th><th rowspan="2">D</th></tr>
<tr><th>7</th><th>6</th><th>5</th><th>4</th><th>3</th><th>2</th><th>1</th><th>0</th></tr>
</thead>
<tbody>
<tr><td>CTC Channel 0 ZC/TO</td><td>■</td><td>■</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>•</td><td>1 to enable</td><td></td><td>0</td></tr>
<tr><td>CTC Channel 1 ZC/TO</td><td>■</td><td>■</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>•</td><td>[colour: pink]</td><td>1 to enable</td><td></td><td>0</td></tr>
<tr><td>CTC Channel 2 ZC/TO</td><td>■</td><td>■</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>•</td><td>[colour: pink]</td><td>[colour: pink]</td><td>1 to enable</td><td></td><td>0</td></tr>
<tr><td>CTC Channel 3 ZC/TO</td><td>■</td><td>■</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>•</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>1 to enable</td><td></td><td>0</td></tr>
<tr><td>CTC Channel 4 ZC/TO</td><td>■</td><td>■</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>•</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>1 to enable</td><td></td><td>0</td></tr>
<tr><td>CTC Channel 5 ZC/TO</td><td>■</td><td>■</td><td>[colour: pink]</td><td>[colour: pink]</td><td>•</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>1 to enable</td><td></td><td>0</td></tr>
<tr><td>CTC Channel 6 ZC/TO</td><td>■</td><td>■</td><td>[colour: pink]</td><td>•</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>1 to enable</td><td></td><td>0</td></tr>
<tr><td>CTC Channel 7 ZC/TO</td><td>■</td><td>■</td><td>•</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>1 to enable</td><td></td><td>0</td></tr>
</tbody>
</table>

If a device interrupt is disabled, it enters a polled mode

#### NextREG 198 (C6h) – Interrupt Enables 2

<table>
<thead>
<tr><th rowspan="2">Group Name</th><th rowspan="2">R</th><th rowspan="2">W</th><th colspan="8">Data Bits</th><th rowspan="2">Description</th><th rowspan="2">H</th><th rowspan="2">D</th></tr>
<tr><th>7</th><th>6</th><th>5</th><th>4</th><th>3</th><th>2</th><th>1</th><th>0</th></tr>
</thead>
<tbody>
<tr><td>UART 0 Rx available¹</td><td>■</td><td>■</td><td>[colour: dark green]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: dark green]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>•</td><td>1 to enable</td><td></td><td>0</td></tr>
<tr><td>UART 0 Rx near-full¹</td><td>■</td><td>■</td><td>[colour: dark green]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: dark green]</td><td>[colour: pink]</td><td>•</td><td>[colour: pink]</td><td>1 to enable</td><td></td><td>0</td></tr>
<tr><td>UART 0 Tx empty</td><td>■</td><td>■</td><td>[colour: dark green]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: dark green]</td><td>•</td><td>[colour: pink]</td><td>[colour: pink]</td><td>1 to enable</td><td></td><td>0</td></tr>
<tr><td>Reserved</td><td>■</td><td>■</td><td>[colour: dark green]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: dark green] <b>0</b></td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>Reserved, must be 0</td><td></td><td>0</td></tr>
<tr><td>UART 1 Rx available²</td><td>■</td><td>■</td><td>[colour: dark green]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>•</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>1 to enable</td><td></td><td>0</td></tr>
<tr><td>UART 1 Rx near-full²</td><td>■</td><td>■</td><td>[colour: dark green]</td><td>[colour: pink]</td><td>•</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>1 to enable</td><td></td><td>0</td></tr>
<tr><td>UART 1 Tx empty</td><td>■</td><td>■</td><td>[colour: dark green]</td><td>•</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>1 to enable</td><td></td><td>0</td></tr>
<tr><td>Reserved</td><td>■</td><td>■</td><td>[colour: dark green] <b>0</b></td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>Reserved, must be 0</td><td></td><td>0</td></tr>
</tbody>
</table>

1 Shared interrupt. **Rx near-full** overrides **Rx available**\
2 Shared interrupt. **Rx near-full** overrides **Rx available**\
If a device interrupt is disabled, it enters a polled mode

#### NextREG 199 (C7h) – Reserved

<table>
<thead>
<tr><th rowspan="2">Group Name</th><th rowspan="2">R</th><th rowspan="2">W</th><th colspan="8">Data Bits</th><th rowspan="2">Description</th><th rowspan="2">H</th><th rowspan="2">D</th></tr>
<tr><th>7</th><th>6</th><th>5</th><th>4</th><th>3</th><th>2</th><th>1</th><th>0</th></tr>
</thead>
<tbody>
<tr><td>Reserved, write 0</td><td>■</td><td>■</td><td>[colour: dark green] <b>0</b></td><td>[colour: dark green] <b>0</b></td><td>[colour: dark green] <b>0</b></td><td>[colour: dark green] <b>0</b></td><td>[colour: dark green] <b>0</b></td><td>[colour: dark green] <b>0</b></td><td>[colour: dark green] <b>0</b></td><td>[colour: dark green] <b>0</b></td><td>Reserved, must be 0</td><td></td><td><b>0</b></td></tr>
</tbody>
</table>


<!-- PDF page 242 -->

#### [?]

<table>
<thead>
<tr><th>[?]</th><th>R</th><th>W</th><th>7</th><th>6</th><th>5</th><th>4</th><th>3</th><th>2</th><th>1</th><th>0</th><th>Description</th><th>H</th><th>D</th></tr>
</thead>
<tbody>
<tr><td>[?]</td><td>■</td><td>■</td><td>[colour: dark green]</td><td>[colour: dark green]</td><td>[colour: dark green]</td><td>[colour: dark green]</td><td>[colour: dark green]</td><td>[colour: dark green]</td><td>[colour: pink]</td><td>•</td><td>Status</td><td></td><td></td></tr>
<tr><td>[?]</td><td>■</td><td>■</td><td>[colour: dark green]</td><td>[colour: dark green]</td><td>[colour: dark green]</td><td>[colour: dark green]</td><td>[colour: dark green]</td><td>[colour: dark green]</td><td>•</td><td>[colour: pink]</td><td>Status</td><td></td><td></td></tr>
<tr><td>[?]</td><td>■</td><td>■</td><td>[colour: dark green] <b>0</b></td><td>[colour: dark green] <b>0</b></td><td>[colour: dark green] <b>0</b></td><td>[colour: dark green] <b>0</b></td><td>[colour: dark green] <b>0</b></td><td>[colour: dark green] <b>0</b></td><td>[colour: pink]</td><td>[colour: pink]</td><td>Reserved must be 0</td><td></td><td></td></tr>
</tbody>
</table>

[?]g, set bits indicate that the device generated an interrupt in the past or an in-\
[?]nding\
[?], set bits clear the status. In Hardware IM2 mode, the status will continue be-\
[?]set until the interrupt pending condition is cleared

#### [?]C9h) – Interrupt Status 1

<table>
<thead>
<tr><th rowspan="2">[?]</th><th rowspan="2">R</th><th rowspan="2">W</th><th colspan="8">Data Bits</th><th rowspan="2">Description</th><th rowspan="2">H</th><th rowspan="2">D</th></tr>
<tr><th>7</th><th>6</th><th>5</th><th>4</th><th>3</th><th>2</th><th>1</th><th>0</th></tr>
</thead>
<tbody>
<tr><td>[?]</td><td>■</td><td>■</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>•</td><td>Status</td><td></td><td></td></tr>
<tr><td>[?]</td><td>■</td><td>■</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>•</td><td>[colour: pink]</td><td>Status</td><td></td><td></td></tr>
<tr><td>[?]</td><td>■</td><td>■</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>•</td><td>[colour: pink]</td><td>[colour: pink]</td><td>Status</td><td></td><td></td></tr>
<tr><td>[?]</td><td>■</td><td>■</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>•</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>Status</td><td></td><td></td></tr>
<tr><td>[?]</td><td>■</td><td>■</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>•</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>Status</td><td></td><td></td></tr>
<tr><td>[?]</td><td>■</td><td>■</td><td>[colour: pink]</td><td>[colour: pink]</td><td>•</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>Status</td><td></td><td></td></tr>
<tr><td>[?]</td><td>■</td><td>■</td><td>[colour: pink]</td><td>•</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>Status</td><td></td><td></td></tr>
<tr><td>[?]</td><td>■</td><td>■</td><td>•</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>Status</td><td></td><td></td></tr>
</tbody>
</table>

[?]g, set bits indicate that the device generated an interrupt in the past or an in-\
[?]nding\
[?], set bits clear the status. In Hardware IM2 mode, the status will continue be-\
[?]set until the interrupt pending condition is cleared

#### [?]CAh) – Interrupt Status 2

<table>
<thead>
<tr><th rowspan="2">[?]</th><th rowspan="2">R</th><th rowspan="2">W</th><th colspan="8">Data Bits</th><th rowspan="2">Description</th><th rowspan="2">H</th><th rowspan="2">D</th></tr>
<tr><th>7</th><th>6</th><th>5</th><th>4</th><th>3</th><th>2</th><th>1</th><th>0</th></tr>
</thead>
<tbody>
<tr><td>[?]</td><td>■</td><td>■</td><td>[colour: dark green]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: dark green]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>•</td><td>Status</td><td></td><td>0</td></tr>
<tr><td>[?]</td><td>■</td><td>■</td><td>[colour: dark green]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: dark green]</td><td>[colour: pink]</td><td>•</td><td>[colour: pink]</td><td>Status</td><td></td><td>0</td></tr>
<tr><td>[?]</td><td>■</td><td>■</td><td>[colour: dark green]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: dark green]</td><td>•</td><td>[colour: pink]</td><td>[colour: pink]</td><td>Status</td><td></td><td>0</td></tr>
<tr><td>[?]</td><td>■</td><td>■</td><td>[colour: dark green]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: dark green] <b>0</b></td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>Reserved, must be 0</td><td></td><td>0</td></tr>
<tr><td>[?]</td><td>■</td><td>■</td><td>[colour: dark green]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>•</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>Status</td><td></td><td>0</td></tr>
<tr><td>[?]</td><td>■</td><td>■</td><td>[colour: dark green]</td><td>[colour: pink]</td><td>•</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>Status</td><td></td><td>0</td></tr>
<tr><td>[?]</td><td>■</td><td>■</td><td>[colour: dark green]</td><td>•</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>Status</td><td></td><td>0</td></tr>
<tr><td>[?]</td><td>■</td><td>■</td><td>[colour: dark green] <b>0</b></td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>Reserved, must be 0</td><td></td><td>0</td></tr>
</tbody>
</table>

[?]upt\
[?]upt\
[?]g, set bits indicate that the device generated an interrupt in the past or an in-\
[?]nding\
[?], set bits clear the status. In Hardware IM2 mode, the status will continue be-\
[?]set until the interrupt pending condition is cleared

#### [?]CBh) – Reserved

<table>
<thead>
<tr><th rowspan="2">[?]</th><th rowspan="2">R</th><th rowspan="2">W</th><th colspan="8">Data Bits</th><th rowspan="2">Description</th><th rowspan="2">H</th><th rowspan="2">D</th></tr>
<tr><th>7</th><th>6</th><th>5</th><th>4</th><th>3</th><th>2</th><th>1</th><th>0</th></tr>
</thead>
<tbody>
<tr><td>[?]</td><td>■</td><td>■</td><td>[colour: dark green] <b>1</b></td><td>[colour: dark green] <b>1</b></td><td>[colour: dark green] <b>1</b></td><td>[colour: dark green] <b>1</b></td><td>[colour: dark green] <b>1</b></td><td>[colour: dark green] <b>1</b></td><td>[colour: dark green] <b>1</b></td><td>[colour: dark green]</td><td>Reserved, must be 1</td><td></td><td></td></tr>
</tbody>
</table>

[?]Fh)

#### [?]CCh) – DMA Interrupt Enables 0

<table>
<thead>
<tr><th rowspan="2">[?]</th><th rowspan="2">R</th><th rowspan="2">W</th><th colspan="8">Data Bits</th><th rowspan="2">Description</th><th rowspan="2">H</th><th rowspan="2">D</th></tr>
<tr><th>7</th><th>6</th><th>5</th><th>4</th><th>3</th><th>2</th><th>1</th><th>0</th></tr>
</thead>
<tbody>
<tr><td>[?]</td><td>■</td><td>■</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>•</td><td>1 to enable</td><td></td><td>0</td></tr>
<tr><td>[?]</td><td>■</td><td>■</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>•</td><td>[colour: pink]</td><td>1 to enable</td><td></td><td>0</td></tr>
<tr><td>[?]</td><td>■</td><td>■</td><td>•</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>1 to enable</td><td></td><td>0</td></tr>
</tbody>
</table>

[?]ate the corresponding interrupt will interrupt a DMA operation when in Hard-\
[?]ode

#### [?]CDh) – DMA Interrupt Enables 1

<table>
<thead>
<tr><th rowspan="2">[?]</th><th rowspan="2">R</th><th rowspan="2">W</th><th colspan="8">Data Bits</th><th rowspan="2">Description</th><th rowspan="2">H</th><th rowspan="2">D</th></tr>
<tr><th>7</th><th>6</th><th>5</th><th>4</th><th>3</th><th>2</th><th>1</th><th>0</th></tr>
</thead>
<tbody>
<tr><td>[?]</td><td>■</td><td>■</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>•</td><td>1 to enable</td><td></td><td>0</td></tr>
<tr><td>[?]</td><td>■</td><td>■</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>•</td><td>[colour: pink]</td><td>1 to enable</td><td></td><td>0</td></tr>
<tr><td>[?]</td><td>■</td><td>■</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>•</td><td>[colour: pink]</td><td>[colour: pink]</td><td>1 to enable</td><td></td><td>0</td></tr>
<tr><td>[?]</td><td>■</td><td>■</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>•</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>1 to enable</td><td></td><td>0</td></tr>
<tr><td>[?]</td><td>■</td><td>■</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>•</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>1 to enable</td><td></td><td>0</td></tr>
<tr><td>[?]</td><td>■</td><td>■</td><td>[colour: pink]</td><td>[colour: pink]</td><td>•</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>1 to enable</td><td></td><td>0</td></tr>
<tr><td>[?]</td><td>■</td><td>■</td><td>[colour: pink]</td><td>•</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>1 to enable</td><td></td><td>0</td></tr>
<tr><td>[?]</td><td>■</td><td>■</td><td>•</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>1 to enable</td><td></td><td>0</td></tr>
</tbody>
</table>

[?]ate the corresponding interrupt will interrupt a DMA operation when in Hard-\
[?]ode

#### [?]CEh) – DMA Interrupt Enables 2

<table>
<thead>
<tr><th rowspan="2">[?]</th><th rowspan="2">R</th><th rowspan="2">W</th><th colspan="8">Data Bits</th><th rowspan="2">Description</th><th rowspan="2">H</th><th rowspan="2">D</th></tr>
<tr><th>7</th><th>6</th><th>5</th><th>4</th><th>3</th><th>2</th><th>1</th><th>0</th></tr>
</thead>
<tbody>
<tr><td>[?]</td><td>■</td><td>■</td><td>[colour: dark green]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: dark green]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>•</td><td>1 to enable</td><td></td><td>0</td></tr>
<tr><td>[?]</td><td>■</td><td>■</td><td>[colour: dark green]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: dark green]</td><td>[colour: pink]</td><td>•</td><td>[colour: pink]</td><td>1 to enable</td><td></td><td>0</td></tr>
<tr><td>[?]</td><td>■</td><td>■</td><td>[colour: dark green]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: dark green]</td><td>•</td><td>[colour: pink]</td><td>[colour: pink]</td><td>1 to enable</td><td></td><td>0</td></tr>
<tr><td>[?]</td><td>■</td><td>■</td><td>[colour: dark green]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: dark green] <b>0</b></td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>Reserved, must be 0</td><td></td><td>0</td></tr>
<tr><td>[?]</td><td>■</td><td>■</td><td>[colour: dark green]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>•</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>1 to enable</td><td></td><td>0</td></tr>
<tr><td>[?]</td><td>■</td><td>■</td><td>[colour: dark green]</td><td>[colour: pink]</td><td>•</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>1 to enable</td><td></td><td>0</td></tr>
<tr><td>[?]</td><td>■</td><td>■</td><td>[colour: dark green]</td><td>•</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>1 to enable</td><td></td><td>0</td></tr>
<tr><td>[?]</td><td>■</td><td>■</td><td>[colour: dark green] <b>0</b></td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>Reserved, must be 0</td><td></td><td>0</td></tr>
</tbody>
</table>

[?]ate the corresponding interrupt will interrupt a DMA operation when in Hard-\
[?]ode

#### [?]

<table>
<thead>
<tr><th>Group Name</th><th>R</th><th>W</th><th>7</th><th>6</th><th>5</th><th>4</th><th>3</th><th>2</th><th>1</th><th>0</th><th>Description</th><th>H</th><th>D</th></tr>
</thead>
<tbody>
<tr><td>Reserved, write 0</td><td>■</td><td>■</td><td>[colour: dark green] <b>0</b></td><td>[colour: dark green] <b>0</b></td><td>[colour: dark green] <b>0</b></td><td>[colour: dark green] <b>0</b></td><td>[colour: dark green] <b>0</b></td><td>[colour: dark green] <b>0</b></td><td>[colour: dark green] <b>0</b></td><td>[colour: dark green] <b>0</b></td><td>Reserved, must be 0</td><td></td><td></td></tr>
</tbody>
</table>

\* Write **0 (00h)**

> Since interrupts are only sampled at the end of an instruction by the Z80N, each time the DMA is interrupted, one instrucion of progress is made in the main program

#### NextREG 216 (D8h) – I/O Traps (Experimental)

<table>
<thead>
<tr><th rowspan="2">Group Name</th><th rowspan="2">R</th><th rowspan="2">W</th><th colspan="8">Data Bits</th><th rowspan="2">Description</th><th rowspan="2">H</th><th rowspan="2">D</th></tr>
<tr><th>7</th><th>6</th><th>5</th><th>4</th><th>3</th><th>2</th><th>1</th><th>0</th></tr>
</thead>
<tbody>
<tr><td>+3 FDC</td><td>■</td><td>■</td><td>[colour: dark green]</td><td>[colour: dark green]</td><td>[colour: dark green]</td><td>[colour: dark green]</td><td>[colour: dark green]</td><td>[colour: dark green]</td><td>[colour: dark green]</td><td>•</td><td>1 to enable on ports 2FFDh and 3FFDh</td><td></td><td>0</td></tr>
<tr><td>Reserved</td><td>■</td><td>■</td><td>[colour: dark green] <b>0</b></td><td>[colour: dark green] <b>0</b></td><td>[colour: dark green] <b>0</b></td><td>[colour: dark green] <b>0</b></td><td>[colour: dark green] <b>0</b></td><td>[colour: dark green] <b>0</b></td><td>[colour: dark green] <b>0</b></td><td>[colour: pink]</td><td>Reserved, must be 0</td><td></td><td></td></tr>
</tbody>
</table>

\* An I/O trap generates a Multiface NMI and is indicated in **NextREG 2 (02h)**\
Traps cannot be triggered by the DMA or while the Multiface, divMMC or external NMI is active

#### NextREG 217 (D9h) – I/O Traps Write (Experimental)

<table>
<thead>
<tr><th rowspan="2">Group Name</th><th rowspan="2">R</th><th rowspan="2">W</th><th colspan="8">Data Bits</th><th rowspan="2">Description</th><th rowspan="2">H</th><th rowspan="2">D</th></tr>
<tr><th>7</th><th>6</th><th>5</th><th>4</th><th>3</th><th>2</th><th>1</th><th>0</th></tr>
</thead>
<tbody>
<tr><td>Data</td><td>■</td><td>■</td><td>•</td><td>•</td><td>•</td><td>•</td><td>•</td><td>•</td><td>•</td><td>•</td><td>8-bit value</td><td></td><td></td></tr>
</tbody>
</table>

Holds data written during trapped I/O write cycle

#### NextREG 218 (DAh) – I/O Trap Cause (Experimental)

<table>
<thead>
<tr><th rowspan="2">Group Name</th><th rowspan="2">R</th><th rowspan="2">W</th><th colspan="8">Data Bits</th><th rowspan="2">Description</th><th rowspan="2">H</th><th rowspan="2">D</th></tr>
<tr><th>7</th><th>6</th><th>5</th><th>4</th><th>3</th><th>2</th><th>1</th><th>0</th></tr>
</thead>
<tbody>
<tr><td rowspan="4">I/O Trap Cause</td><td rowspan="4">■</td><td rowspan="4">■</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>0</td><td>0</td><td>None – 0 at the time NR 02 (02h) D4 is 0</td><td></td><td></td></tr>
<tr><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>0</td><td>1</td><td>Port 2FFDh read</td><td></td><td></td></tr>
<tr><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>1</td><td>0</td><td>Port 3FFDh read</td><td></td><td></td></tr>
<tr><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>1</td><td>1</td><td>Port 3FFDh write</td><td></td><td></td></tr>
</tbody>
</table>

\* If **NextREG 02 (02h):D4** indicates that an I/O cycle was trapped, this register indicates the cause

#### NextREG 240 (F0h) – XDEV (Issue 4 ZX Spectrum Next Only)

<table>
<thead>
<tr><th rowspan="2">Group Name</th><th rowspan="2">R</th><th rowspan="2">W</th><th colspan="8">Data Bits</th><th rowspan="2">Description</th><th rowspan="2">H</th><th rowspan="2">D</th></tr>
<tr><th>7</th><th>6</th><th>5</th><th>4</th><th>3</th><th>2</th><th>1</th><th>0</th></tr>
</thead>
<tbody>
<tr><td>Select Mode*</td><td>■</td><td></td><td>1</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>Select Mode Enabled</td><td></td><td>1</td></tr>
<tr><td rowspan="3">Currently Selected Device</td><td rowspan="3">■</td><td rowspan="3"></td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>0</td><td>0</td><td>none</td><td></td><td></td></tr>
<tr><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>0</td><td>1</td><td>Xilinx™ DNA (See [colour: pale green] below)</td><td></td><td></td></tr>
<tr><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>1</td><td>0</td><td>Xilinx™ XADC (See [colour: lavender] below)</td><td></td><td></td></tr>
<tr><td rowspan="3">Select Device*</td><td rowspan="3"></td><td rowspan="3">■</td><td>1</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>Enter Select Mode</td><td></td><td></td></tr>
<tr><td>0</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>Enter Selected Device Mode</td><td></td><td></td></tr>
<tr><td>[colour: pink]</td><td>1</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>Change Selected Device</td><td></td><td></td></tr>
<tr><td>No Device Selected</td><td></td><td>■</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>0</td><td>0</td><td>none</td><td></td><td></td></tr>
<tr><td>[colour: pale green] DNA</td><td>[colour: pale green] ■</td><td>[colour: pale green]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pale green] •</td><td>[colour: pale green] DNA bit (serial stream shifts left)¹</td><td></td><td></td></tr>
<tr><td>[colour: pale green] SELECT / DNA RELOAD</td><td>[colour: pale green]</td><td>[colour: pale green] ■</td><td>[colour: pale green] 1</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pale green] Enter Select Mode or DNA string reload</td><td></td><td></td></tr>
<tr><td>[colour: lavender] BUSY</td><td>[colour: lavender] ■</td><td>[colour: lavender]</td><td>[colour: pink]</td><td>[colour: lavender] 1</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: lavender] 1 if XADC busy with conversion</td><td></td><td></td></tr>
<tr><td>[colour: lavender] EOC</td><td>[colour: lavender] ■</td><td>[colour: lavender]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: lavender] 1</td><td>[colour: pink]</td><td>[colour: lavender] 1 if XADC conv. complete since last read²</td><td></td><td></td></tr>
<tr><td>[colour: lavender] EOS</td><td>[colour: lavender] ■</td><td>[colour: lavender]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: lavender] 1</td><td>[colour: lavender] 1 if XADC conv. seq. comp. since last read²</td><td></td><td></td></tr>
<tr><td>[colour: lavender] SELECT</td><td>[colour: lavender]</td><td>[colour: lavender] ■</td><td>[colour: lavender] 1</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: lavender] Enter Select Mode</td><td></td><td></td></tr>
<tr><td>[colour: lavender] XADC RESET</td><td>[colour: lavender]</td><td>[colour: lavender] ■</td><td>[colour: pink]</td><td>[colour: lavender] 1</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: lavender] 1 to reset XADC</td><td></td><td></td></tr>
<tr><td>[colour: lavender] XADC CONVST</td><td>[colour: lavender]</td><td>[colour: lavender] ■</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: lavender] 1</td><td>[colour: lavender] 1 to start conversion</td><td></td><td></td></tr>
</tbody>
</table>

\* Re-enter Select Mode at any time by writing to the register with **D7** set\
Select a device to communicate with by writing to the register with **D7:D6** set then exit Select Mode by clearing **D7**. Thereafter the particular device is attached to the NextREG\
1 The first eight bits read will indicate the length of the following DNA bits\
2 Read clears


#### NextREG 248 (F8h) – XADC Register\* (Issue 4 ZX Spectrum Next Only)

<table>
<thead>
<tr><th rowspan="2">Group Name</th><th rowspan="2">R</th><th rowspan="2">W</th><th colspan="8">Data Bits</th><th rowspan="2">Description</th><th rowspan="2">H</th><th rowspan="2">D</th></tr>
<tr><th>7</th><th>6</th><th>5</th><th>4</th><th>3</th><th>2</th><th>1</th><th>0</th></tr>
</thead>
<tbody>
<tr><td>DADDR</td><td>■</td><td>■</td><td>[colour: pink]</td><td>•</td><td>•</td><td>•</td><td>•</td><td>•</td><td>•</td><td>•</td><td>XADC DRP register address value</td><td>■</td><td>0</td></tr>
<tr><td rowspan="2">XADC DRP port read/write mode**</td><td rowspan="2">■</td><td rowspan="2">■</td><td>0</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>[colour: pink]</td><td>Initiate read from XADC DRP port</td><td></td><td></td></tr>
<tr><td>1</td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td>Initiate write to XADC DRP port</td><td></td><td></td></tr>
</tbody>
</table>

\* An XADC Register read or write is initiated by writing to this register\
Before initiating a write, store the value in **NextREG 249 (F9h)** and **NextREG 250 (FAh)** first\
There must be <u>at least</u> **six 28 MHz** cycles after each read or write initiation before the action is completed\
\*\* Reads as **0**


#### NextREG 249 (F9h) – XADC D0 (Issue 4 ZX Spectrum Next Only)

<table>
<thead>
<tr><th rowspan="2">Group Name</th><th rowspan="2">R</th><th rowspan="2">W</th><th colspan="8">Data Bits</th><th rowspan="2">Description</th><th rowspan="2">H</th><th rowspan="2">D</th></tr>
<tr><th>7</th><th>6</th><th>5</th><th>4</th><th>3</th><th>2</th><th>1</th><th>0</th></tr>
</thead>
<tbody>
<tr><td>DRP Data Bus LSB (D7:D0)</td><td>■</td><td>■</td><td>•</td><td>•</td><td>•</td><td>•</td><td>•</td><td>•</td><td>•</td><td>•</td><td>Data</td><td>■</td><td>0</td></tr>
</tbody>
</table>

\* DRP reads store result here and DRP writes take value from here

#### NextREG 250 (FAh) – XADC D1 (Issue 4 ZX Spectrum Next Only)

<table>
<thead>
<tr><th rowspan="2">Group Name</th><th rowspan="2">R</th><th rowspan="2">W</th><th colspan="8">Data Bits</th><th rowspan="2">Description</th><th rowspan="2">H</th><th rowspan="2">D</th></tr>
<tr><th>7</th><th>6</th><th>5</th><th>4</th><th>3</th><th>2</th><th>1</th><th>0</th></tr>
</thead>
<tbody>
<tr><td>DRP Data Bus MSB (D15:D8)</td><td>■</td><td>■</td><td>•</td><td>•</td><td>•</td><td>•</td><td>•</td><td>•</td><td>•</td><td>•</td><td>Data</td><td>■</td><td>0</td></tr>
</tbody>
</table>

\* DRP reads store result here and DRP writes take value from here

#### NextREG 255 (FFh) - Reserved (Internal Use Only)

<!-- PDF page 243 -->

### Other port addresses

As seen in the table at the beginning of this chapter and the discussion about decoding, all even addresses refer to ULA functions. You may find yourself in need to read the keyboard directly from the hardware. As mentioned, part of the ULA's function is to return the state of keypresses. The keyboard is divided in **8** *half-rows* of **5** keys each, each *half-row* having its own port address[^p243-5].

<table>
<thead>
<tr><th rowspan="2">Address<br>Decimal / Hex</th><th colspan="10">Bits</th><th rowspan="2">Address<br>Decimal / Hex</th></tr>
<tr><th>D0</th><th>D1</th><th>D2</th><th>D3</th><th>D4</th><th style="border-left: 3px solid">D4</th><th>D3</th><th>D2</th><th>D1</th><th>D0</th></tr>
</thead>
<tbody>
<tr><td>63486 / F7FEh</td><td>1</td><td>2</td><td>3</td><td>4</td><td>5</td><td style="border-left: 3px solid">6</td><td>7</td><td>8</td><td>9</td><td>0</td><td>61438 / EFFEh</td></tr>
<tr><td>64510 / FBFEh</td><td>Q</td><td>W</td><td>E</td><td>R</td><td>T</td><td style="border-left: 3px solid">Y</td><td>U</td><td>I</td><td>O</td><td>P</td><td>57342 / DFFEh</td></tr>
<tr><td>65022 / FDFEh</td><td>A</td><td>S</td><td>D</td><td>F</td><td>G</td><td style="border-left: 3px solid">H</td><td>J</td><td>K</td><td>L</td><td>Enter</td><td>49150 / BFFEh</td></tr>
<tr><td>65278 / FEFEh</td><td>Caps</td><td>Z</td><td>X</td><td>C</td><td>V</td><td style="border-left: 3px solid">B</td><td>N</td><td>M</td><td>Sym</td><td>Space</td><td>32766 / 7FFEh</td></tr>
</tbody>
</table>

The diagram above neatly illustrates how the keyboard matrix is separated into *half-rows* (demarcated by the thick line in the middle). Pay attention to how bits are mirrored going from the outside of the keyboard to the inside.

The address of each *half-row* in the diagram is calculated as: **254** + **256\*(255** - **2ⁿ)**.

In the formula above, **n** is the number of *half-row* which starts with **0** at the bottom right and moves in a counterclockwise manner with each successive *half-row* increasing by **1.**

In the byte read in, bits **D0** to **D4** stand for each of the five keys in the given *half-row* – **D0** for the outside key and **D4** for the one nearest the middle. The bit is **0** if the key is pressed and **1** if it is not.

For example to find the value of the **CAPS SHIFT** key, you can do:

```
PRINT %IN 65278 & @1
```

Writing a value using **OUT** to the ULA (Port **254 / FEh**) controls other hardware as well. You can drive the beeper with **D4**, the MIC socket with **D3**, read the **EAR** socket with **D6** and modify the **BORDER** colour using bits **D0**,**D1** and **D2**. For example to make the border a nice magenta colour you can:

```
OUT 254, %@00000011
```

Port addresses **32765** (**7FFDh**), **8189** (**1FFDh**) and **57341** (**DFFDh**) control the extra memory. Executing an **OUT** to these ports from *NextBASIC* without knowing the ramifications will nearly always cause the computer to crash, losing any program and data. These ports are write-only, i.e. you cannot determine the current state of the paging by an **IN** instruction. This is why the BANKM system variable is always kept up to date with the last value output to this port. Check the last section in this chapter as well as *Chapter 23 – The Memory* where we examine the banking system in detail.

Writing to port **65533** (**FFFDh**) will select a particular PSG register (on the AY sound chip) and writing to port **49149** (**BFFDh**) will send a particular value to that register. Reading from port **65533** (**FFFDh**) returns the value stored in the selected register. Judicious use of these two registers can allow sounds to be generated while *NextBASIC* gets on with something else.

The section that follows describes all ZX Spectrum Next – specific hardware ports; addressing them is via **OUT** and **IN** commands.

[^p243-5]: *Extended keys are combinations of tther keys, so they need to be read as those key combinations. For example EXTEND is CAPS SHIFT + SYMBOL SHIFT.*

<!-- PDF page 244 -->

### The ZX Spectrum Next Hardware Ports List

**NOTE**

The following Hardware Ports are not listed:\
**ULA 254 (FEh), Legacy Memory Paging 3765 (7FFDh), 8189 (1FFDh), 57341 (DFFDh), 61431 (EFF7h), Layer 2 4667 (123Bh) and ULAplus 65339 (FF3Bh) / 48955 (BF3B)**\
Ports are arranged according to their function.\
Please also consult the **ports.txt** document found in your **System/Next™** distribution for a complete list of ports

### Input / Output / Legacy Video

#### Port 255 (FFh) – Timex SCLD ULA Extensions\*

<table>
<thead>
<tr><th rowspan="2">Group Name</th><th rowspan="2">R</th><th rowspan="2">W</th><th colspan="8">Data Bits</th><th rowspan="2">Description</th></tr>
<tr><th>7</th><th>6</th><th>5</th><th>4</th><th>3</th><th>2</th><th>1</th><th>0</th></tr>
</thead>
<tbody>
<tr><td rowspan="4">Screen Mode Select</td><td rowspan="4">■</td><td rowspan="4">■</td><td></td><td></td><td></td><td></td><td></td><td>0</td><td>0</td><td>0</td><td>Std: DFILE0+COLOURFILE0 @ 4000h</td></tr>
<tr><td></td><td></td><td></td><td></td><td></td><td>0</td><td>0</td><td>1</td><td>Shd: DFILE1+COLOURFILE1 @ 6000h</td></tr>
<tr><td></td><td></td><td></td><td></td><td></td><td>0</td><td>1</td><td>0</td><td>HC: DFILE @ 4000h, COLOURFILE @ 6000h</td></tr>
<tr><td></td><td></td><td></td><td></td><td></td><td>1</td><td>1</td><td>0</td><td>HR: even DFILE @ 4000h, odd DFILE @6000h</td></tr>
<tr><td rowspan="8">HiRes Colour Scheme Select</td><td rowspan="8">■</td><td rowspan="8">■</td><td></td><td></td><td>0</td><td>0</td><td>0</td><td></td><td></td><td></td><td>BRIGHT Black on White</td></tr>
<tr><td></td><td></td><td>0</td><td>0</td><td>1</td><td></td><td></td><td></td><td>BRIGHT Blue on Yellow</td></tr>
<tr><td></td><td></td><td>0</td><td>1</td><td>0</td><td></td><td></td><td></td><td>BRIGHT Red on Cyan</td></tr>
<tr><td></td><td></td><td>0</td><td>1</td><td>1</td><td></td><td></td><td></td><td>BRIGHT Magenta on Green</td></tr>
<tr><td></td><td></td><td>1</td><td>0</td><td>0</td><td></td><td></td><td></td><td>BRIGHT Green on Magenta</td></tr>
<tr><td></td><td></td><td>1</td><td>0</td><td>1</td><td></td><td></td><td></td><td>BRIGHT Cyan on Red</td></tr>
<tr><td></td><td></td><td>1</td><td>1</td><td>0</td><td></td><td></td><td></td><td>BRIGHT Yellow on Blue</td></tr>
<tr><td></td><td></td><td>1</td><td>1</td><td>1</td><td></td><td></td><td></td><td>BRIGHT White on Black</td></tr>
<tr><td>Frame Interrrupt Control</td><td>■</td><td>■</td><td></td><td>•</td><td></td><td></td><td></td><td></td><td></td><td></td><td>1 to Disable ULA Frame Interrupt</td></tr>
<tr><td>Timex MMU Select¹</td><td>■</td><td>■</td><td>•</td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td>Timex Horizontal MMU Bank Select</td></tr>
</tbody>
</table>

\* Only readable if **NR 8 (08h):D2** = **1**\
¹ Not implemented on the ZX Spectrum Next

#### Port 64479 (FBDFh) – Kempston Mouse X position

<table>
<thead>
<tr><th rowspan="2">Group Name</th><th rowspan="2">R</th><th rowspan="2">W</th><th colspan="8">Data Bits</th><th rowspan="2">Description</th></tr>
<tr><th>7</th><th>6</th><th>5</th><th>4</th><th>3</th><th>2</th><th>1</th><th>0</th></tr>
</thead>
<tbody>
<tr><td>Current X Position</td><td>■</td><td></td><td>•</td><td>•</td><td>•</td><td>•</td><td>•</td><td>•</td><td>•</td><td>•</td><td>Value 0 – 255*</td></tr>
</tbody>
</table>

\* Returns the current X position of the mouse **0 - 255**.\
The value wraps from **255** to **0** on a right movement and from **0** to **255** on a left movement.

#### Port 65503 (FFDFh) – Kempston Mouse Y position

<table>
<thead>
<tr><th rowspan="2">Group Name</th><th rowspan="2">R</th><th rowspan="2">W</th><th colspan="8">Data Bits</th><th rowspan="2">Description</th></tr>
<tr><th>7</th><th>6</th><th>5</th><th>4</th><th>3</th><th>2</th><th>1</th><th>0</th></tr>
</thead>
<tbody>
<tr><td>Current Y Position</td><td>■</td><td></td><td>•</td><td>•</td><td>•</td><td>•</td><td>•</td><td>•</td><td>•</td><td>•</td><td>Value 0 - 255*</td></tr>
</tbody>
</table>

\* Returns the current Y position of the mouse **0 - 255**.\
The value decrements and wraps from **255** to **0** on a downward movement and increments and wraps from **0** to **255** on an upward movement.

#### Port 64223 (FADFh) – Kempston Mouse Button Status

<table>
<thead>
<tr><th rowspan="2">Group Name</th><th rowspan="2">R</th><th rowspan="2">W</th><th colspan="8">Data Bits</th><th rowspan="2">Description</th></tr>
<tr><th>7</th><th>6</th><th>5</th><th>4</th><th>3</th><th>2</th><th>1</th><th>0</th></tr>
</thead>
<tbody>
<tr><td rowspan="3">Mouse Button Flags¹</td><td rowspan="3">■</td><td rowspan="3"></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td>•</td><td>Left Mouse button status</td></tr>
<tr><td></td><td></td><td></td><td></td><td></td><td></td><td>•</td><td></td><td>Right Mouse button status</td></tr>
<tr><td></td><td></td><td></td><td></td><td></td><td>•</td><td></td><td></td><td>Middle Mouse button status</td></tr>
<tr><td>Mouse Wheel Position²</td><td>■</td><td></td><td>•</td><td>•</td><td>•</td><td>•</td><td></td><td></td><td></td><td></td><td>Mouse Wheel position (Wraps)</td></tr>
</tbody>
</table>

¹ Pressed = **1**, Not Pressed = **0**\
² Value **0** to **15**. Upwards scroll **15** to **0** – wraps to **15**; Downards scroll **0** to **15** – wraps to **0**

#### Port 31 (1Fh) – Kempston Joystick 1 / Mega Drive Pad 1 Status

<table>
<thead>
<tr><th rowspan="2">Group Name</th><th rowspan="2">R</th><th rowspan="2">W</th><th colspan="8">Data Bits</th><th rowspan="2">Description</th></tr>
<tr><th>7</th><th>6</th><th>5</th><th>4</th><th>3</th><th>2</th><th>1</th><th>0</th></tr>
</thead>
<tbody>
<tr><td rowspan="4">Joystick Movement Status</td><td rowspan="4">■</td><td rowspan="4"></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td>•</td><td>Right (pin 4)</td></tr>
<tr><td></td><td></td><td></td><td></td><td></td><td></td><td>•</td><td></td><td>Left (pin 3)</td></tr>
<tr><td></td><td></td><td></td><td></td><td></td><td>•</td><td></td><td></td><td>Down (pin 2)</td></tr>
<tr><td></td><td></td><td></td><td></td><td>•</td><td></td><td></td><td></td><td>Up (pin 1)</td></tr>
<tr><td rowspan="4">Joystick Button Status</td><td rowspan="4">■</td><td rowspan="4"></td><td></td><td></td><td></td><td>•</td><td></td><td></td><td></td><td></td><td>Fire 1 (MD = B) (pin 6)</td></tr>
<tr><td></td><td></td><td>•</td><td></td><td></td><td></td><td></td><td></td><td>Fire 2 (MD = C) (pin 9)</td></tr>
<tr><td></td><td>•</td><td></td><td></td><td></td><td></td><td></td><td></td><td>MD = A (0 on Kempston)</td></tr>
<tr><td>•</td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td>MD Start (0 on Kempston)</td></tr>
</tbody>
</table>

Joystick ports can be placed in I/O mode via NR 11 (0Bh)\
Kempston joysticks and Mega Drive Pads share ports but MD pads use more bits\
The X/Y/Z buttons on MD pads can be read via NR 178 (B2h)\
All twelve MD pad buttons can be assigned to the keyboard – See NR 05 (05h)\
When using an MD pad in more limited joystick modes, the excess buttons can generate keypresses if so programmed

#### Port 55 (37h) – Kempston Joystick 2 / Mega Drive Pad 2 Status

<table>
<thead>
<tr><th rowspan="2">Group Name</th><th rowspan="2">R</th><th rowspan="2">W</th><th colspan="8">Data Bits</th><th rowspan="2">Description</th></tr>
<tr><th>7</th><th>6</th><th>5</th><th>4</th><th>3</th><th>2</th><th>1</th><th>0</th></tr>
</thead>
<tbody>
<tr><td rowspan="4">Joystick Movement Status</td><td rowspan="4">■</td><td rowspan="4"></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td>•</td><td>Right (pin 4)</td></tr>
<tr><td></td><td></td><td></td><td></td><td></td><td></td><td>•</td><td></td><td>Left (pin 3)</td></tr>
<tr><td></td><td></td><td></td><td></td><td></td><td>•</td><td></td><td></td><td>Down (pin 2)</td></tr>
<tr><td></td><td></td><td></td><td></td><td>•</td><td></td><td></td><td></td><td>Up (pin 1)</td></tr>
<tr><td rowspan="4">Joystick Button Status</td><td rowspan="4">■</td><td rowspan="4"></td><td></td><td></td><td></td><td>•</td><td></td><td></td><td></td><td></td><td>Fire 1 (MD = B) (pin 6)</td></tr>
<tr><td></td><td></td><td>•</td><td></td><td></td><td></td><td></td><td></td><td>Fire 2 (MD = C) (pin 9)</td></tr>
<tr><td></td><td>•</td><td></td><td></td><td></td><td></td><td></td><td></td><td>MD = A (0 on Kempston)</td></tr>
<tr><td>•</td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td>MD Start (0 on Kempston)</td></tr>
</tbody>
</table>

Joystick ports can be placed in I/O mode via NR 11 (0Bh)\
Kempston joysticks and Mega Drive Pads share ports but MD pads use more bits\
The X/Y/Z buttons on MD pads can be read via NR 178 (B2h)\
All twelve MD pad buttons can be assigned to the keyboard – See NR 05 (05h)\
When using an MD pad in more limited joystick modes, the excess buttons can generate keypresses if so programmed

### Audio

#### Port 65533 (FFFDh) – PSG Control and Register Select

<table>
<thead>
<tr><th rowspan="2">Group Name</th><th rowspan="2">R</th><th rowspan="2">W</th><th colspan="8">Data Bits</th><th rowspan="2">Description</th></tr>
<tr><th>7</th><th>6</th><th>5</th><th>4</th><th>3</th><th>2</th><th>1</th><th>0</th></tr>
</thead>
<tbody>
<tr><td>Selected Register Status</td><td>■</td><td></td><td>•</td><td>•</td><td>•</td><td>•</td><td>•</td><td>•</td><td>•</td><td>•</td><td>Value in selected register of active PSG</td></tr>
<tr><td rowspan="4">Active PSG Control</td><td rowspan="4"></td><td rowspan="4">■</td><td></td><td></td><td></td><td></td><td></td><td></td><td>0</td><td>0</td><td>Reserved</td></tr>
<tr><td></td><td></td><td></td><td></td><td></td><td></td><td>1</td><td>1</td><td>PSG 0 made active*</td></tr>
<tr><td></td><td></td><td></td><td></td><td></td><td></td><td>1</td><td>0</td><td>PSG 1 made active</td></tr>
<tr><td></td><td></td><td></td><td></td><td></td><td></td><td>0</td><td>1</td><td>PSG 2 made active</td></tr>
<tr><td rowspan="6">Stereo Channel Control¹</td><td rowspan="6"></td><td rowspan="6">■</td><td></td><td></td><td></td><td></td><td></td><td>1</td><td></td><td></td><td>Reserved, must be 1</td></tr>
<tr><td></td><td></td><td></td><td></td><td>1</td><td></td><td></td><td></td><td>Reserved, must be 1</td></tr>
<tr><td></td><td></td><td></td><td>1</td><td></td><td></td><td></td><td></td><td>Reserved, must be 1</td></tr>
<tr><td></td><td></td><td>•</td><td></td><td></td><td></td><td></td><td></td><td>Right Channel Enable</td></tr>
<tr><td></td><td>•</td><td></td><td></td><td></td><td></td><td></td><td></td><td>Left Channel Enable</td></tr>
<tr><td>1</td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td>Reserved, must be 1</td></tr>
<tr><td>Register Select²</td><td></td><td></td><td>•</td><td>•</td><td>•</td><td>•</td><td></td><td></td><td></td><td></td><td>If <b>0000</b> selects a register from the Active PSG</td></tr>
</tbody>
</table>

\* Default value\
¹ If **NR 8 (08h):D1** = **1** and **D7** through **D4** are not **0000**

#### Port 49149 (BFFDh) – PSG Data

<table>
<thead>
<tr><th rowspan="2">Group Name</th><th rowspan="2">R</th><th rowspan="2">W</th><th colspan="8">Data Bits</th><th rowspan="2">Description</th></tr>
<tr><th>7</th><th>6</th><th>5</th><th>4</th><th>3</th><th>2</th><th>1</th><th>0</th></tr>
</thead>
<tbody>
<tr><td>Selected Register Status¹</td><td>■</td><td></td><td>•</td><td>•</td><td>•</td><td>•</td><td>•</td><td>•</td><td>•</td><td>•</td><td>Value in selected register of active PSG</td></tr>
<tr><td>Active PSG Register Data</td><td></td><td>■</td><td>•</td><td>•</td><td>•</td><td>•</td><td>•</td><td>•</td><td>•</td><td>•</td><td>Value to write to the register</td></tr>
</tbody>
</table>

¹ Readable if machine type is ZX Spectrum Next or ZX Spectrum +3 only.

#### Port 49141 (BFF5h) – PSG Info

<table>
<thead>
<tr><th rowspan="2">Group Name</th><th rowspan="2">R</th><th rowspan="2">W</th><th colspan="8">Data Bits</th><th rowspan="2">Description</th></tr>
<tr><th>7</th><th>6</th><th>5</th><th>4</th><th>3</th><th>2</th><th>1</th><th>0</th></tr>
</thead>
<tbody>
<tr><td>Currently selected PSG register</td><td>■</td><td></td><td></td><td></td><td></td><td>•</td><td>•</td><td>•</td><td>•</td><td>•</td><td>Value of selected register of active PSG</td></tr>
<tr><td>Reserved</td><td>■</td><td></td><td></td><td></td><td>•</td><td></td><td></td><td></td><td></td><td></td><td>Reserved</td></tr>
<tr><td rowspan="3">Active PSG</td><td rowspan="3">■</td><td rowspan="3"></td><td>1</td><td>1</td><td></td><td></td><td></td><td></td><td></td><td></td><td>PSG 0 is active</td></tr>
<tr><td>1</td><td>0</td><td></td><td></td><td></td><td></td><td></td><td></td><td>PSG 1 is active</td></tr>
<tr><td>0</td><td>1</td><td></td><td></td><td></td><td></td><td></td><td></td><td>PSG 2 is active</td></tr>
</tbody>
</table>

#### Ports 251¹, 223², 31³, 241⁴, 63⁵ (FBh, DFh, 1Fh, F1h, 3Fh) – DAC Channel A (Left)

<table>
<thead>
<tr><th rowspan="2">Group Name</th><th rowspan="2">R</th><th rowspan="2">W</th><th colspan="8">Data Bits</th><th rowspan="2">Description</th></tr>
<tr><th>7</th><th>6</th><th>5</th><th>4</th><th>3</th><th>2</th><th>1</th><th>0</th></tr>
</thead>
<tbody>
<tr><td>DAC output</td><td></td><td>■</td><td>•</td><td>•</td><td>•</td><td>•</td><td>•</td><td>•</td><td>•</td><td>•</td><td>8-bit unsigned sample value</td></tr>
</tbody>
</table>

All DACs originate from various ZX Spectrum peripherals and compatible models and are kept for compatibility. DACs are enabled by setting **NR 8 (08h):D3** = **1**\
¹ Found in Pentagon and ATM\
² Found in SpecDRUM™\
³ Found in SoundDrive 1\
⁴ Found in SoundDrive 2\
⁵ Found in Profi Covox

#### Ports 179¹, 15², 243³ (B3h, 0Fh, F3h) – DAC Channel B (Left)

<table>
<thead>
<tr><th rowspan="2">Group Name</th><th rowspan="2">R</th><th rowspan="2">W</th><th colspan="8">Data Bits</th><th rowspan="2">Description</th></tr>
<tr><th>7</th><th>6</th><th>5</th><th>4</th><th>3</th><th>2</th><th>1</th><th>0</th></tr>
</thead>
<tbody>
<tr><td>DAC output</td><td></td><td>■</td><td>•</td><td>•</td><td>•</td><td>•</td><td>•</td><td>•</td><td>•</td><td>•</td><td>8-bit unsigned sample value</td></tr>
</tbody>
</table>

All DACs originate from various ZX Spectrum peripherals and compatible models and are kept for compatibility. DACs are enabled by setting **NR 8 (08h):D3** = **1**\
¹ Found in GS Govox\
² Found in SoundDrive 1 and Covox\
³ Found in SoundDrive 2

#### Ports 179¹, 79², 249³ (B3h, 4Fh, F9h) – DAC Channel C (Right)

<table>
<thead>
<tr><th rowspan="2">Group Name</th><th rowspan="2">R</th><th rowspan="2">W</th><th colspan="8">Data Bits</th><th rowspan="2">Description</th></tr>
<tr><th>7</th><th>6</th><th>5</th><th>4</th><th>3</th><th>2</th><th>1</th><th>0</th></tr>
</thead>
<tbody>
<tr><td>DAC output</td><td></td><td>■</td><td>•</td><td>•</td><td>•</td><td>•</td><td>•</td><td>•</td><td>•</td><td>•</td><td>8-bit unsigned sample value</td></tr>
</tbody>
</table>

All DACs originate from various ZX Spectrum peripherals and compatible models and are kept for compatibility. DACs are enabled by setting **NR 8 (08h):D3** = **1**\
¹ Found in GS Govox\
² Found in SoundDrive 1 and Covox\
³ Found in SoundDrive 2

#### Ports 251¹, 223², 95³ (FBh, DFh, 5Fh) – DAC Channel D (Right)

<table>
<thead>
<tr><th rowspan="2">Group Name</th><th rowspan="2">R</th><th rowspan="2">W</th><th colspan="8">Data Bits</th><th rowspan="2">Description</th></tr>
<tr><th>7</th><th>6</th><th>5</th><th>4</th><th>3</th><th>2</th><th>1</th><th>0</th></tr>
</thead>
<tbody>
<tr><td>DAC output</td><td></td><td>■</td><td>•</td><td>•</td><td>•</td><td>•</td><td>•</td><td>•</td><td>•</td><td>•</td><td>8-bit unsigned sample value</td></tr>
</tbody>
</table>

All DACs originate from various ZX Spectrum peripherals and compatible models and are kept for compatibility. DACs are enabled by setting **NR 8 (08h):D3** = **1**\
¹ Found in Pentagon, ATM and SoundDrive 2\
² Found in SpecDRUM™\
³ Found in SoundDrive 1 and Profi Covox

### Storage

#### Port 227 (E3h) – divMMC Control

<table>
<thead>
<tr><th rowspan="2">Group Name</th><th rowspan="2">R</th><th rowspan="2">W</th><th colspan="8">Data Bits</th><th rowspan="2">Description</th></tr>
<tr><th>7</th><th>6</th><th>5</th><th>4</th><th>3</th><th>2</th><th>1</th><th>0</th></tr>
</thead>
<tbody>
<tr><td>RAM bank Control</td><td>■</td><td>■</td><td></td><td></td><td></td><td></td><td>•</td><td>•</td><td>•</td><td>•</td><td>Memory Bank Select for 8K - 16K region</td></tr>
<tr><td>MapRAM Control¹</td><td>■</td><td>■</td><td></td><td>•</td><td></td><td></td><td></td><td></td><td></td><td></td><td>MapRAM Enable</td></tr>
<tr><td>ConMEM Control²</td><td>■</td><td>■</td><td>•</td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td>ConMEM Enable</td></tr>
</tbody>
</table>

¹ Can only be set once. On the original divMMC only a power cycle can reset it. The ZX Spectrum Next implementation uses **NR 9 (09h)** where **D3** can be set,in order to reset this bit. When set, it replaces the expected esxDOS ROM with divMMC RAM bank **3**\
² Can be used to manually control divMMC mapping. When set it maps in divMMC; **0K - 8K** will contain the esxDOS ROM, **8K - 16K** will contain the selected divMMC bank (from **D0** through **D3**). The divMMC automatically maps itself in when instruction fetches hit specific addresses in the ROM. When this happens, the esxDOS ROM (or divMMC bank **3** if mapRAM is set) appears in **0K - 8K** and the selected divMMC bank appears as RAM in **8K - 16K**. DivMMC automapping is normally disabled by NextZXOS. See **NR 6 (06h):D4**. The divMMC has been enhanced, in order to add entry points and make them programmable.

<!-- PDF page 245 -->

### Communication

#### Port 4155 (103Bh) – I²C SCL

<table>
<thead>
<tr><th rowspan="2">Group Name</th><th rowspan="2">R</th><th rowspan="2">W</th><th colspan="8">Data Bits</th><th rowspan="2">Description</th></tr>
<tr><th>7</th><th>6</th><th>5</th><th>4</th><th>3</th><th>2</th><th>1</th><th>0</th></tr>
</thead>
<tbody>
<tr><td>I²C Clock Line Control</td><td>■</td><td>■</td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td>•</td><td>State of the Clock Line</td></tr>
</tbody>
</table>

#### Port 4411 (113Bh) – I²C SDA

<table>
<thead>
<tr><th rowspan="2">Group Name</th><th rowspan="2">R</th><th rowspan="2">W</th><th colspan="8">Data Bits</th><th rowspan="2">Description</th></tr>
<tr><th>7</th><th>6</th><th>5</th><th>4</th><th>3</th><th>2</th><th>1</th><th>0</th></tr>
</thead>
<tbody>
<tr><td>I²C Data Line Control</td><td>■</td><td>■</td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td>•</td><td>State of the Data Line</td></tr>
</tbody>
</table>

#### Port 231 (E7h) – SPI CS\*

<table>
<thead>
<tr><th rowspan="2">Group Name</th><th rowspan="2">R</th><th rowspan="2">W</th><th colspan="8">Data Bits</th><th rowspan="2">Description</th></tr>
<tr><th>7</th><th>6</th><th>5</th><th>4</th><th>3</th><th>2</th><th>1</th><th>0</th></tr>
</thead>
<tbody>
<tr><td>SD Card 0 Select</td><td>■</td><td>■</td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td>•</td><td>Select SD Card 0</td></tr>
<tr><td>SD Card 1 Select</td><td>■</td><td>■</td><td></td><td></td><td></td><td></td><td></td><td></td><td>•</td><td></td><td>Select SD Card 1</td></tr>
<tr><td>PI SPI 0 Select¹</td><td>■</td><td>■</td><td></td><td></td><td></td><td></td><td></td><td>•</td><td></td><td></td><td>Select Pi SPI 0 on the GPIO pins</td></tr>
<tr><td>PI SPI 1 Select¹</td><td>■</td><td>■</td><td></td><td></td><td></td><td></td><td>•</td><td></td><td></td><td></td><td>Select Pi SPI 1 on the GPIO pins</td></tr>
<tr><td>FPGA Flash Select</td><td>■</td><td>■</td><td>•</td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td>Select the FPGA Flash ROM (Internal Use Only)</td></tr>
</tbody>
</table>

\* The SPI port's data lines are active low (**0** to select).\
¹ Pi GPIO must be configured for SPI. See **NR 160 (A0h)**\
Five devices are connected to the SPI interface. The ZX Spectrum Next must be\
SPI master.\
Only one of **D0** through **D3** can be **0** at one time. If not, the result will be no device selected

#### Port 235 (EBh) – SPI Data

<table>
<thead>
<tr><th rowspan="2">Group Name</th><th rowspan="2">R</th><th rowspan="2">W</th><th colspan="8">Data Bits</th><th rowspan="2">Description</th></tr>
<tr><th>7</th><th>6</th><th>5</th><th>4</th><th>3</th><th>2</th><th>1</th><th>0</th></tr>
</thead>
<tbody>
<tr><td>SPI Data</td><td>■</td><td>■</td><td>•</td><td>•</td><td>•</td><td>•</td><td>•</td><td>•</td><td>•</td><td>•</td><td>Read/Write data to the selected SPI device</td></tr>
</tbody>
</table>

#### Port 5435 (153Bh) – UART Control

<table>
<thead>
<tr><th rowspan="2">Group Name</th><th rowspan="2">R</th><th rowspan="2">W</th><th colspan="8">Data Bits</th><th rowspan="2">Description</th></tr>
<tr><th>7</th><th>6</th><th>5</th><th>4</th><th>3</th><th>2</th><th>1</th><th>0</th></tr>
</thead>
<tbody>
<tr><td>Prescalar MSB Value</td><td>■</td><td>■</td><td></td><td></td><td></td><td></td><td></td><td>•</td><td>•</td><td>•</td><td>Baud rate prescalar MSB</td></tr>
<tr><td>Prescalar MSB Write Enable</td><td>■</td><td>■</td><td></td><td></td><td></td><td>•</td><td></td><td></td><td></td><td></td><td>D2:D0 write enable</td></tr>
<tr><td rowspan="2">UART Select**</td><td rowspan="2">■</td><td rowspan="2">■</td><td></td><td>0</td><td></td><td></td><td></td><td></td><td></td><td></td><td>ESP UART Select</td></tr>
<tr><td></td><td>1</td><td></td><td></td><td></td><td></td><td></td><td></td><td>Pi0 UART Select*</td></tr>
</tbody>
</table>

\* Pi GPIO must be configured for UART. See **NR 160 (A0h)**\
\*\* Either UART can be redirected to the joystick ports, see **NR 11 (0Bh)**

#### Port 4923 (133Bh) – UART Transmit

<table>
<thead>
<tr><th rowspan="2">Group Name</th><th rowspan="2">R</th><th rowspan="2">W</th><th colspan="8">Data Bits</th><th rowspan="2">Description</th></tr>
<tr><th>7</th><th>6</th><th>5</th><th>4</th><th>3</th><th>2</th><th>1</th><th>0</th></tr>
</thead>
<tbody>
<tr><td>Read buffer status flag</td><td>■</td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td>•</td><td>Set if read buffer contains received bytes</td></tr>
<tr><td>Transmitter busy flag</td><td>■</td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td>•</td><td></td><td>Set if the transmit buffer is full</td></tr>
<tr><td>Read buffer full flag</td><td>■</td><td></td><td></td><td></td><td></td><td></td><td></td><td>•</td><td></td><td></td><td>Set if the read buffer overflowed*</td></tr>
<tr><td>Read buffer near-full flag</td><td>■</td><td></td><td></td><td></td><td></td><td></td><td>•</td><td></td><td></td><td></td><td>Set if the read buffer in near-full (¾)</td></tr>
<tr><td>Transmit buffer empty flag</td><td>■</td><td></td><td></td><td></td><td></td><td>•</td><td></td><td></td><td></td><td></td><td>Set if the transmit buffer is empty</td></tr>
<tr><td>Receive data after error flag</td><td>■</td><td></td><td></td><td></td><td>•</td><td></td><td></td><td></td><td></td><td></td><td>Set if the next Rx byte was recv'd after an error**</td></tr>
<tr><td>Receive framing error flag</td><td>■</td><td></td><td></td><td>•</td><td></td><td></td><td></td><td></td><td></td><td></td><td>Set if the Rx experienced a framing error***</td></tr>
<tr><td>Receive in break flag</td><td>■</td><td></td><td>•</td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td>Set if the Rx is in a break condition****</td></tr>
<tr><td>Data Transmit</td><td></td><td>■</td><td>•</td><td>•</td><td>•</td><td>•</td><td>•</td><td>•</td><td>•</td><td>•</td><td>Send a byte to the connected device</td></tr>
</tbody>
</table>

\* Clears on read\
\*\* Framing or overflow\
\*\*\* Clears on read; includes parity and stop bit errors\
\*\*\*\* External device has held Tx=0 for at least 20 bit periods\
Both UARTs have a 64-byte transmit buffer

#### Port 5179 (143Bh) – UART Receive

<table>
<thead>
<tr><th rowspan="2">Group Name</th><th rowspan="2">R</th><th rowspan="2">W</th><th colspan="8">Data Bits</th><th rowspan="2">Description</th></tr>
<tr><th>7</th><th>6</th><th>5</th><th>4</th><th>3</th><th>2</th><th>1</th><th>0</th></tr>
</thead>
<tbody>
<tr><td>Data Receive</td><td>■</td><td></td><td>•</td><td>•</td><td>•</td><td>•</td><td>•</td><td>•</td><td>•</td><td>•</td><td>Reads a byte from the receive buffer*</td></tr>
<tr><td rowspan="2">Prescalar LSB Value¹</td><td rowspan="2"></td><td rowspan="2">■</td><td>0</td><td>•</td><td>•</td><td>•</td><td>•</td><td>•</td><td>•</td><td>•</td><td>Lower 7 bits of the 14-bit prescalar value LSB</td></tr>
<tr><td>1</td><td>•</td><td>•</td><td>•</td><td>•</td><td>•</td><td>•</td><td>•</td><td>Upper 7 bits of the 14-bit prescalar value LSB</td></tr>
</tbody>
</table>

\* If the buffer is empty **0** is returned.\
¹ The UART's baud rate is determined by the prescalar according to this formula:\
Prescalar = **F<sub>sys</sub> / baudrate**; **F<sub>sys</sub>** = System Clock from **NR 17 (11h)**.\
Example: If the system is on a Digital display, **NR 17 (11h)** indicates that **F<sub>sys</sub>** = **27000000**.\
The prescalar for a baud rate of **115200** is **27000000** / **115200** = **234**\
Both UARTs have a 512-byte receive buffer

#### Port 5691 (163Bh) – UART Frame

<table>
<thead>
<tr><th rowspan="2">Group Name</th><th rowspan="2">R</th><th rowspan="2">W</th><th colspan="8">Data Bits</th><th rowspan="2">Description</th></tr>
<tr><th>7</th><th>6</th><th>5</th><th>4</th><th>3</th><th>2</th><th>1</th><th>0</th></tr>
</thead>
<tbody>
<tr><td>Stop bits control</td><td>■</td><td>■</td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td>•</td><td>Set if 2 stop bits, clear for 1 stop bit</td></tr>
<tr><td>Parity type control</td><td>■</td><td>■</td><td></td><td></td><td></td><td></td><td></td><td></td><td>•</td><td></td><td>Set if odd parity, clear for even parity</td></tr>
<tr><td>Parity check control</td><td>■</td><td>■</td><td></td><td></td><td></td><td></td><td></td><td>•</td><td></td><td></td><td>Set to enable parity check</td></tr>
<tr><td rowspan="4">Frame size (bits) control</td><td rowspan="4">■</td><td rowspan="4">■</td><td></td><td></td><td></td><td>0</td><td>0</td><td></td><td></td><td></td><td>5 bits</td></tr>
<tr><td></td><td></td><td></td><td>0</td><td>1</td><td></td><td></td><td></td><td>6 bits</td></tr>
<tr><td></td><td></td><td></td><td>1</td><td>0</td><td></td><td></td><td></td><td>7 bits</td></tr>
<tr><td></td><td></td><td></td><td>1</td><td>1</td><td></td><td></td><td></td><td>8 bits</td></tr>
<tr><td>Hardware Flow control</td><td>■</td><td>■</td><td></td><td></td><td>•</td><td></td><td></td><td></td><td></td><td></td><td>Set enables hardware flow control*</td></tr>
<tr><td>Transmit break control**</td><td>■</td><td>■</td><td></td><td>•</td><td></td><td></td><td></td><td></td><td></td><td></td><td>Send a byte to the connected device</td></tr>
<tr><td>Reset Rx and Tx Control</td><td>■</td><td>■</td><td>•</td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td>Set to immediately reset Rx, Tx and empty FIFOs</td></tr>
</tbody>
</table>

\* Honoured only on an Issue 4 ESP module, no effect on Issue 2 boards. In joystick I/O mode only CTS is available\
\*\* Asserts break on Tx when Tx becomes idle

### Sprites

#### Port 12347 (303Bh) – Sprite Slot Select\*¹

<table>
<thead>
<tr><th rowspan="2">Group Name</th><th rowspan="2">R</th><th rowspan="2">W</th><th colspan="8">Data Bits</th><th rowspan="2">Description</th></tr>
<tr><th>7</th><th>6</th><th>5</th><th>4</th><th>3</th><th>2</th><th>1</th><th>0</th></tr>
</thead>
<tbody>
<tr><td>Sprite Collision flag</td><td>■</td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td>•</td><td>Set if any two displayed sprites collide on screen</td></tr>
<tr><td>Max. No. of Sprites per line flag</td><td>■</td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td>•</td><td></td><td>Set if maximum no. of sprites per line exceeded</td></tr>
<tr><td>Current Pattern Index Select²</td><td></td><td>■</td><td>•</td><td></td><td>•</td><td>•</td><td>•</td><td>•</td><td>•</td><td>•</td><td>Sets Current Pattern Index</td></tr>
<tr><td>Current Sprite Index Select¹</td><td></td><td>■</td><td></td><td>•</td><td>•</td><td>•</td><td>•</td><td>•</td><td>•</td><td>•</td><td>Sets Current Sprite (0 - 127)</td></tr>
</tbody>
</table>

\* Reading the port clears all flags\
¹ The current sprite and pattern index are separate quantities internally\
² The pattern index is 6-bit in bits **D0** through **D5** and selects pattern **0 - 63** in the pattern RAM. Each pattern is **256** bytes long. **D7** can be used to offset **128** bytes halfway through the pattern; this accommodates 4-bit sprites whose patterns are **128** bytes in size.

#### Port (57h) – Sprite Attributes

<table>
<thead>
<tr><th rowspan="2">Group Name</th><th rowspan="2">R</th><th rowspan="2">W</th><th colspan="8">Data Bits</th><th rowspan="2">Description</th></tr>
<tr><th>7</th><th>6</th><th>5</th><th>4</th><th>3</th><th>2</th><th>1</th><th>0</th></tr>
</thead>
<tbody>
<tr><td>Attribute Data</td><td></td><td>■</td><td>•</td><td>•</td><td>•</td><td>•</td><td>•</td><td>•</td><td>•</td><td>•</td><td>Attribute Data</td></tr>
</tbody>
</table>

Writes the current sprite's attributes. Each sprite has either 4 or 5 attributes and after all are written, the current sprite pointer is advanced to the next sprite. The pointer wraps from **127** to **0**.

#### Port (5Bh) – Sprite Pattern

<table>
<thead>
<tr><th rowspan="2">Group Name</th><th rowspan="2">R</th><th rowspan="2">W</th><th colspan="8">Data Bits</th><th rowspan="2">Description</th></tr>
<tr><th>7</th><th>6</th><th>5</th><th>4</th><th>3</th><th>2</th><th>1</th><th>0</th></tr>
</thead>
<tbody>
<tr><td>Pattern Data</td><td></td><td>■</td><td>•</td><td>•</td><td>•</td><td>•</td><td>•</td><td>•</td><td>•</td><td>•</td><td>Pattern Data</td></tr>
</tbody>
</table>

Writes a byte to the current pattern address and advances the current address by one. The pattern address is changed by writing the pattern index in port **12347 (303Bh)**. A pattern index indicates the start of a 256-byte range of data used to define an 8-bit sprite pattern or a 128-byte range of data use to define a 4-bit sprite pattern.

### DMA

#### Port 107 (6Bh) / 11 (0Bh) – zxnDMA / Z80DMA

<table>
<thead>
<tr><th rowspan="2">Group Name</th><th rowspan="2">R</th><th rowspan="2">W</th><th colspan="8">Data Bits</th><th rowspan="2">Description</th></tr>
<tr><th>7</th><th>6</th><th>5</th><th>4</th><th>3</th><th>2</th><th>1</th><th>0</th></tr>
</thead>
<tbody>
<tr><td>DMA Control</td><td>■</td><td>■</td><td>•</td><td>•</td><td>•</td><td>•</td><td>•</td><td>•</td><td>•</td><td>•</td><td>DMA command value</td></tr>
</tbody>
</table>

The zxnDMA implements a subset of the Zilog Z80DMA architecture while adding a burst mode primarily used to play digital music. Accessing the DMA via port **11 (0Bh)** rather than **107 (6Bh)** selects the DMA compatibility mode (Z80DMA). **See https://www.specnext.com/the-zxndma/**

### Layer 2 Graphics

#### Port 4667 (123Bh) – Layer 2 Control

<table>
<thead>
<tr><th rowspan="2">Group Name</th><th rowspan="2">R</th><th rowspan="2">W</th><th colspan="8">Data Bits</th><th rowspan="2">Description</th></tr>
<tr><th>7</th><th>6</th><th>5</th><th>4</th><th>3</th><th>2</th><th>1</th><th>0</th></tr>
</thead>
<tbody>
<tr><td>Memory Write Mapping Control</td><td>■</td><td>■</td><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td>•</td><td>Enable Mapping for Memory Writes</td></tr>
<tr><td>Layer 2 Display Control</td><td>■</td><td>■</td><td></td><td></td><td></td><td></td><td></td><td></td><td>•</td><td></td><td>Enable Layer 2 Display</td></tr>
<tr><td>Memory Read Mapping Control</td><td>■</td><td>■</td><td></td><td></td><td></td><td></td><td></td><td>•</td><td></td><td></td><td>Enable Mapping for Memory Reads</td></tr>
<tr><td rowspan="2">Active/Shadow Control</td><td rowspan="2">■</td><td rowspan="2">■</td><td></td><td></td><td></td><td></td><td>0</td><td></td><td></td><td></td><td>Map Active Layer 2¹</td></tr>
<tr><td></td><td></td><td></td><td></td><td>1</td><td></td><td></td><td></td><td>Map Shadow Layer 2²</td></tr>
<tr><td>Reserved</td><td></td><td>■</td><td></td><td></td><td>0</td><td>0</td><td></td><td></td><td></td><td></td><td>Reserved, Must be 0</td></tr>
<tr><td rowspan="4">Layer 2 Map Type Select</td><td rowspan="4">■</td><td rowspan="4">■</td><td>0</td><td>0</td><td></td><td></td><td></td><td></td><td></td><td></td><td>First 16K of Layer 2 in the bottom 16K</td></tr>
<tr><td>0</td><td>1</td><td></td><td></td><td></td><td></td><td></td><td></td><td>Second 16K of Layer 2 in the bottom 16K</td></tr>
<tr><td>1</td><td>0</td><td></td><td></td><td></td><td></td><td></td><td></td><td>Third 16K of Layer 2 in the bottom 16K</td></tr>
<tr><td>1</td><td>1</td><td></td><td></td><td></td><td></td><td></td><td></td><td>First 48K of Layer 2 in the bottom 48K</td></tr>
</tbody>
</table>

\* Memory pointed at by **NR 18 (12h)** or **NR 19 (13 h)** can be mapped into the lower 16K or 48K if Layer 2 memory mapping is enabled in **D2** and/or **D0**. This mechanism is separate from MMU and will overlay the paging state set by MMU but only if the memory access type matches the enable condition (Read-only, Write-only)\
¹ See **NR 18 (12h)**\
² See **NR 19 (13h)**

### Memory Mapping Modes

The current memory mapping is maintained by the hardware in eight MMUs with each MMU, numbered MMU0 – MMU7, holding an 8K page number currently mapped into corresponding eight 8K slots of the Z80's 64K memory space. The individual MMUs can be programmed via **NextREGs 80 – 87 (50h – 57h)**.

The traditional banking mechanism used in various Spectrum models is via ports 7FFDh, DFFDh, 1FFDh and EFF7h with writes to these ports making changes to one or more MMUs in the hardware.

The 128K Spectrum used port 7FFDh, the +3 used 7FFDh and 1FFDh and the ZX Spectrum Next extends that with port DFFDh to increase the range of 16K banks that can be paged into the top 16K.

Russian ZX Spectrum models extended the banking in various ways to support up to 1MB of memory. The ZX Spectrum Next, also supports some of these banking methods which modify the behaviour of ports **7FFDh** and **DFFDh**. The current memory mapping mode is held in **NextREG 143 (8Fh)** and can be one of standard ZX Spectrum, Pentagon 512K or Pentagon 1024K. The ZX Spectrum Next normally operates in standard Spectrum mode.

In standard spectrum mode, ports **7FFDh** and **1FFDh** operate as on the +3 and as described above.

Port **DFFDh** adds four bits to extend the three bit bank number in bits **D2:D0** of port **7FFDh** so that the full range of the ZX Spectrum

<!-- PDF page 246 -->

Next's memory can be paged into the top 16K.

Also in this mode, **D3** of port **EFF7h** can be set to place 16K bank 0 into the bottom 16K, overlaying the ROM.

Writes to ports **7FFDh**, **DFFDh**, **1FFDh** and **EFF7h**, will cause the bottom 16K and the top 16K to remap; if allRAM mode is selected, the entire 64K remaps.

In Pentagon 512K mode, port **7FFDh** is extended so that bits **D7:D6** augment the bank number in bits **D2:D0** to form a 5-bit bank number for the top 16K.

On the ZX Spectrum Next, port **1FFDh** continues to function (allRAM mode and ROM selection) and **D3** of port **EFF7h** can be set to map 16K bank 0 on top of ROM in the bottom 16K.

Writes to ports **7FFDh**, **DFFDh**, **1FFDh** and **EFF7h** will cause the bottom 16K and the top 16K to remap; if allRAM mode is selected, the entire 64K remaps.

In Pentagon 1024K mode, port **EFF7h D2** = **0** enables Pentagon 1024K mapping and port **EFF7h D2** = **1** selects standard ZX Spectrum mapping as described above.

With Pentagon 1024K mode active, port **7FFDh** is unlocked and **D5** (the lock bit) is repurposed as another bank bit.

The bank number paged into the top 16K is taken as port **7FFDh** bits {**D5,D7,D6,D2,D1,D0**} to reach 1MB in 16K banks.

On the Next, port **1FFDh** continues to function (allRAM mode and ROM selection) and **D3** of port **EFF7h** can be set to map 16K bank 0 on top of ROM in the bottom 16K.

Writes to ports **7FFDh**, **DFFDh**, **1FFDh** and **EFF7h** will cause the bottom 16K and the top 16K to remap; if allRAM mode is selected, the entire 64k remaps.

For 100% compatibility with the original banking methods listed above, extra ports like **1FFDh** can be disabled using the internal port decodes with **NextREGs 130 - 133** (**82h - 85h**).

### The Expansion Bus

The Expansion Bus is found in the back of the ZX Spectrum Next and exposes its CPU to the world. As it too gets addressed by **IN** and **OUT** commands, it is listed below:

<table>
<tbody>
<tr><th rowspan="28">Bottom Side</th><td>A11</td><td>28</td><td>28</td><td>Reserved</td><th rowspan="28">Top Side</th></tr>
<tr><td>A9</td><td>27</td><td>27</td><td>A10</td></tr>
<tr><td>B̅U̅S̅A̅C̅K̅</td><td>26</td><td>26</td><td>A8</td></tr>
<tr><td>R̅O̅M̅C̅S̅</td><td>25</td><td>25</td><td>R̅F̅S̅H̅</td></tr>
<tr><td>A4</td><td>24</td><td>24</td><td>M̅1̅</td></tr>
<tr><td>A5</td><td>23</td><td>23</td><td>NC</td></tr>
<tr><td>A6</td><td>22</td><td>22</td><td>NC</td></tr>
<tr><td>A7</td><td>21</td><td>21</td><td>W̅A̅I̅T̅</td></tr>
<tr><td>R̅E̅S̅E̅T̅</td><td>20</td><td>20</td><td>NC</td></tr>
<tr><td>BUSREQ[^p246-6]</td><td>19</td><td>19</td><td>W̅R̅</td></tr>
<tr><td>NC</td><td>18</td><td>18</td><td>R̅D̅</td></tr>
<tr><td>NC</td><td>17</td><td>17</td><td>I̅O̅R̅Q̅</td></tr>
<tr><td>Reserved</td><td>16</td><td>16</td><td>M̅R̅E̅Q̅</td></tr>
<tr><td>R̅O̅M̅C̅S̅</td><td>15</td><td>15</td><td>H̅A̅L̅T̅</td></tr>
<tr><td>GND</td><td>14</td><td>14</td><td>N̅M̅I̅</td></tr>
<tr><td>I̅O̅R̅Q̅U̅L̅A̅</td><td>13</td><td>13</td><td>I̅N̅T̅</td></tr>
<tr><td>A3</td><td>12</td><td>12</td><td>D4</td></tr>
<tr><td>A2</td><td>11</td><td>11</td><td>D3</td></tr>
<tr><td>A1</td><td>10</td><td>10</td><td>D5</td></tr>
<tr><td>A0</td><td>9</td><td>9</td><td>D6</td></tr>
<tr><td>C̅L̅K̅</td><td>8</td><td>8</td><td>D2</td></tr>
<tr><td>GND</td><td>7</td><td>7</td><td>D1</td></tr>
<tr><td>GND</td><td>6</td><td>6</td><td>D0</td></tr>
<tr><td><b>Key</b></td><td>5</td><td>5</td><td>Key</td></tr>
<tr><td>+9V (PSU)[^p246-7]</td><td>4</td><td>4</td><td>R̅O̅M̅C̅S̅</td></tr>
<tr><td>+5V</td><td>3</td><td>3</td><td>D7</td></tr>
<tr><td>A12</td><td>2</td><td>2</td><td>A13</td></tr>
<tr><td>A14</td><td>1</td><td>1</td><td>A15</td></tr>
</tbody>
</table>

*The ZX Spectrum Next Expansion Bus*

[^p246-6]: *BUSREQ is incorrectly active High oin Issue 2 but fixed on Issue 4*
[^p246-7]: *This pin receives the unregulated power from the PSU line. If you plug a higher voltage PSU, that voltage will be present at that pin and may damage your peripherals*

