Board feature control

From SpecNext Wiki
Revision as of 16:08, 3 May 2020 by Ped7g (talk | contribs) (ports table: make decimal number formatting "raw" type without thousands separator)
Jump to: navigation, search

This is a general list of ports and registers used to control features on the Spectrum Next board.

Note that these lists are automatically generated and not directly editable. To edit data on a port or register, visit its page. To add a new port, click here. To add a new register, click here.

Mapped Spectrum Ports

A note on partial decoding

Most Spectrum peripherals did not actually decode all 16 bits of the address bus; they checked only for certain bits, and would respond if those bit values were set correctly, regardless of the other bits. The "bitmask" column for each port shows the bits that are tested for by the device. Traditionally all "unused" bits are set to 1 to avoid conflicts with other devices, which is the basis of the given port numbers; but alternate port numbers may be used in some cases. However, beware of creating clashes: in particular any port which does not intend to access the ULA should have the LSB set, as the ULA checks only for a reset LSB.

It is not known if the Next's built-in devices will have this decoding restriction, but it seems a safe presumption that they will not except where needed by legacy code.

On the other hand, partial decoding can allow use of the multiple output opcodes such as OTIR, which normally places the loop counter on the top half of the address bus - thus making it useless except for devices which ignore this top half. This is the reason why some of the Next registers do ignore the top half of the port address.

{{#ask:

|?PortNumber=Hexadecimal
|?NumberDec#-=Decimal
|?PortMask=Mask
|?ShortDesc=Description
|sort=PortNumber

}}

Next/TBBlue Feature Control Registers

Specific features of the Next are controlled via these register numbers, accessed via {{#ask: PortNumber::$243B }} ($243B{{#ask: PortNumber::$243B |mainlabel=- |headers=hide |intro= /  |?NumberDec#- }}) and {{#ask: PortNumber::$253B }} ($253B{{#ask: PortNumber::$253B |mainlabel=- |headers=hide |intro= /  |?NumberDec#- }}), or via the NEXTREG opcode.

{{#ask:

|?TBRegisterNumber=Number
|?TBRegisterReadable#Yes,No=Readable
|?TBRegisterWritable#Yes,No=Writable
|?ShortDesc=Description
|limit=150
|sort=TBRegisterNumber

}}