Expansion Bus I/O Propagate Register

From SpecNext Wiki
Revision as of 10:42, 12 November 2019 by Ped7g (talk | contribs) (core 3.0 changes/refresh)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to: navigation, search
Number TBRegisterNumber::$8A
Readable TBRegisterReadable::Yes
Writable TBRegisterWritable::Yes
Short Description ShortDesc::Monitoring internal I/O or adding external keyboard
Bit Description
7-4 Reserved, must be 0
3 Propagate port {{#ask:

PortNumber::$1FFD }} ($1FFD{{#ask: PortNumber::$1FFD |mainlabel=- |headers=hide |intro= /  |?NumberDec#- }}) I/O cycles (hard reset = 0)

2 Propagate port {{#ask:

PortNumber::$DFFD }} ($DFFD{{#ask: PortNumber::$DFFD |mainlabel=- |headers=hide |intro= /  |?NumberDec#- }}) I/O cycles (hard reset = 0)

1 Propagate port {{#ask:

PortNumber::$7FFD }} ($7FFD{{#ask: PortNumber::$7FFD |mainlabel=- |headers=hide |intro= /  |?NumberDec#- }}) I/O cycles (hard reset = 0)

0 Propagate port {{#ask:

PortNumber::$**FE }} ($**FE{{#ask: PortNumber::$**FE |mainlabel=- |headers=hide |intro= /  |?NumberDec#- }}) I/O cycles (hard reset = 0)

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 on.

If the internal port decode is still active, any response sent by devices on the expansion bus will be ignored.

The purpose here is to allow external peripherals to monitor changes in state inside the ZX Next.

{{#ask: PortNumber::$**FE }} ($**FE{{#ask: PortNumber::$**FE |mainlabel=- |headers=hide |intro= /  |?NumberDec#- }}) 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 $FE.

(note: Next registers with number higher than $7F are inaccessible from Copper code)