Архитектура системыУправление функциями платы и список регистров

Управление функциями платы

Это общий список портов и регистров, используемых для управления функциями Spectrum Next.

Информация скопирована вручную из спецификации, поэтому, если что-то не так или отсутствует, проверьте репозиторий gitlab ядра ZX Next FPGA: ports.txt и nextreg.txt и changelog.md.

Обратите внимание, что эти списки генерируются автоматически и их нельзя редактировать напрямую. Чтобы изменить данные в порту или реестре, посетите его страницу. Чтобы добавить новый порт, нажмите здесь. Чтобы добавить новый регистр, нажмите здесь.

Отображенные порты Spectrum

Примечание о частичном декодировании

Большинство периферийных устройств Spectrum фактически не декодировали все 16 бит шины адреса; они проверяли только определенные биты и отвечали, если эти значения битов были установлены правильно, независимо от других битов. Столбец «битовая маска» для каждого порта показывает биты, которые проверяются устройством. Традиционно все «неиспользуемые» биты устанавливаются в 1, чтобы избежать конфликтов с другими устройствами, что является основой для заданных номеров портов; но в некоторых случаях могут использоваться альтернативные номера портов. Однако остерегайтесь создания конфликтов: в частности, любой порт, который не собирается обращаться к ULA, должен иметь установленный LSB, поскольку ULA проверяет только сброшенный LSB.

Неизвестно, будут ли встроенные устройства Next иметь это ограничение декодирования, но кажется разумным предположением, что они не будут, за исключением случаев, когда это необходимо для устаревшего кода.

С другой стороны, частичное декодирование может позволить использовать несколько кодов вывода, таких как OTIR, который обычно помещает счетчик цикла в верхнюю половину шины адреса, что делает его бесполезным, за исключением устройств, которые игнорируют эту верхнюю половину. Это причина, по которой некоторые регистры Next игнорируют верхнюю половину адреса порта.

ШестнадцатеричныйДесятичныйМаскаОписание
Клавиатура$**FE254%xxxx xxxx ---- ---0 where only one bit in x is 0Серия определенных портов, которые считывают нажатия клавиш клавиатуры.
I2C clock$103B4155%0001 0000 0011 1011 ??Устанавливает и считывает линию I2C SCL.
I2C data$113B4411%0001 0001 0011 1011 ??Устанавливает и считывает линию I2C SDA
Порт доступа к Layer 2$123B4667%0001 0010 0011 1011 ??Включает Layer 2 и управляет страничной организацией экрана layer 2 в нижнюю память.
UART TX$133B4923%0001 0011 0011 1011Отправляет байт на последовательный порт. Если прочитать, сообщает, есть ли данные в буфере RX
UART RX$143B5179%0001 0100 0011 1011Считывает данные с последовательного порта, запись устанавливает скорость передачи
Управление UART$153B5435%0001 0101 0011 1011Конфигурация интерфейсов UART
Фрейм UART$163B5691%0001 0110 0011 1011Фрейм UART
Каналы CTC$183B6203%0001 1XXX 0011 1011CTC 8 каналов 0x183b - 0x1f3b
Управление страничной организацией памяти Plus 3$1FFD8189%0001 ---- ---- —0-Управляет страничной организацией ROM и специальными настройками страничной организации из +2a/+3.
TBBlue Register Select$243B9275%0010 0100 0011 1011Выбирает активный порт для конфигурации функций TBBlue/Next.
TBBlue Register Access$253B9531%0010 0101 0011 1011Читает и/или записывает выбранный управляющий регистр TBBlue.
Статус спрайта/Выбор слота$303B12347%0011 0000 0011 1011 ??Устанавливает активный индекс атрибута спрайта и индекс слота шаблона, считывает статус спрайта.
Управление страничной организацией памяти$7FFD32765%01— ---- ---- —0-Выбирает активную RAM, ROM и отображаемый экран.
Информация AY$BFF5491411011111111110101Информация AY
Запись в регистр звукового чипа$BFFD49149%10— ---- ---- —0-Записывает в выбранный регистр выбранного звукового чипа.
Выбор банка памяти Next$DFFD57341%1101 1111 1111 1101Предоставляет дополнительные биты выбора банка для расширенной памяти.
DIVMMC$E3227Divmmc control
Страничная организация Pentagon 1024$EFF7614311110111111110111Страничная организация в режиме Pentagon 1024K
Кнопки мыши Kempston$FADF64223%---- ---0 —0- ----Считывает кнопки на мыши Kempston.
X координата мыши Kempston$FBDF64479%---- -0-1 —0- ----X координата мыши Kempston, 0-255.
Y координата мыши Kempston$FFDF65503%---- -1-1 —0- ----Y координата мыши Kempston, 0-192.
Управление Turbo Sound Next$FFFD65533%11— ---- ---- —0-Управляет стереоканалами и выбирает активный звуковой чип и канал звукового чипа.
Порт MB02 DMA$xx0B11---- ---- 0000 1011Управляет чипом Z8410 DMA через стандарт MB02.
Джойстик Kempston$xx1F31%---- ---- 0001 1111Считывает движение джойстиков с использованием интерфейса Kempston.
Джойстик Kempston 2, Joystick I/O$xx3755Второй вариант джойстика Kempston и управляет вводом-выводом джойстика.
Загрузка атрибута спрайта$xx5787%---- ---- 0101 0111Загружает позиции спрайтов, видимость, тип цвета и флаги эффектов.
Загрузка шаблона спрайта$xx5B91%---- ---- 0101 1011 ??Используется для загрузки шаблона выбранного спрайта.
Порт Datagear DMA$xx6B107---- ---- 0110 1011Управляет чипом zxnDMA
Выход SpecDrum DAC$xxDF223%---- ---- —01 1111Выход на SpecDrum DAC.
Порт управления ULA$xxFE254Управляет цветом рамки и основными настройками звука Spectrum.
Управление видеорежимом Timex Sinclair$xxFF255Управляет видеорежимами Timex Sinclair и цветами в режиме высокого разрешения.

Регистры управления функциями Next/TBBlue

Определенные функции Next управляются с помощью этих номеров регистров, доступ к которым осуществляется через TBBlue Register Select ($243B / 9275) и TBBlue Register Access ($253B / 9531) или через opcode NEXTREG.

НомерЧитаемыйЗаписываемыйОписание
Регистр ID машины$00ДаНетИдентифицирует тип платы TBBlue. Должен всегда быть 10 (двоичный 0000 1010) на Next.
Регистр версии ядра$01ДаНетИдентифицирует версию ядра (FPGA image).
Регистр сброса Next$02ДаДаИдентифицирует тип последнего сброса. Может быть записан для принудительного сброса.
Регистр типа машины$03ДаДаИдентифицирует тайминги и тип машины.
Регистр сопоставления конфигурации$04НетДаВ режиме конфигурации позволяет отображать RAM в область ROM.
Периферийный регистр 1$05ДаДаУстанавливает режим джойстика, частоту видео и Scandoubler.
Периферийный регистр 2$06ДаДаВключает CPU Speed key, DivMMC, Multiface, Mouse и AY audio.
Регистр скорости CPU$07ДаДаУстанавливает CPU Speed, считывает фактическую скорость.
Периферийный регистр 3$08ДаДаABC/ACB Stereo, Internal Speaker, SpecDrum, Timex Video Modes, Turbo Sound Next, RAM contention and [un]lock 128k paging.
Периферийный регистр 4$09ДаДаУстанавливает scanlines, AY mono output, Sprite-id lockstep, reset DivMMC mapram and disable HDMI audio.
Периферийный регистр 5$0AДаДаMultiface type, Divmmc automap, Mouse buttons and DPI config
Режим Joystick I/O$0BДаДаУправление вводом-выводом порта джойстика
Регистр версии ядра (sub minor)$0EДаНетИдентифицирует версию ядра (FPGA image) (sub minor number).
Board ID$0FДаНетSpectrum next issue ID
Регистр защиты от сбоев$10ДаДаИспользуется в системе защиты от сбоев.
Регистр синхронизации видео$11ДаДаУстанавливает вариант синхронизации видеовыхода.
Регистр страницы оперативной памяти Layer 2$12ДаДаУстанавливает номер банка, с которого начинается видеопамять Layer 2.
Регистр страницы теневой оперативной памяти Layer 2$13ДаДаУстанавливает номер банка, с которого начинается теневой экран Layer 2.
Регистр глобальной прозрачности$14ДаДаУстанавливает «прозрачный» цвет для Layer 2, ULA и пиксельных данных LoRes.
Регистр системы спрайтов и слоев$15ДаДаВключает/отключает Sprites и LoRes Layer, а также выбирает приоритет спрайтов и Layer 2.
Регистр смещения X Layer 2$16ДаДаУстанавливает смещение пикселей, используемое для рисования графики Layer 2 на экране.
Регистр смещения Y Layer 2$17ДаДаУстанавливает смещение Y, используемое при рисовании графики Layer 2 на экране.
Регистр окна отсечения Layer 2$18ДаДаУстанавливает и считывает окно отсечения для Layer 2.
Регистр окна отсечения спрайтов$19ДаДаУстанавливает и считывает окно отсечения для спрайтов
Регистр ULA/LoRes окна отсечения$1AДаДаУстанавливает и считывает окно отсечения для слоя ULA/LoRes.
Регистр плиточной карты окна отсечения$1BДаДаУстанавливает и считывает окно отсечения для плиточной карты.
Регистр управления окном отсечения$1CДаДаУправляет (сбрасывает) индексами регистров окна отсечения.
Регистр MSB активной видеолинии$1EДаНетСодержит MSB (только бит 0) растровой линии, которая в данный момент рисуется.
Регистр LSB активной видеолинии$1FДаНетСодержит восемь LSB растровой строки, которая в данный момент рисуется.
Генерация маскируемого прерывания$20ДаДаВызвать прерывание
Регистр управления прерыванием видеолинии$22ДаДаУправляет синхронизацией растровых прерываний и прерывания кадра ULA.
Регистр значения прерывания видеолинии$23ДаДаСодержит восемь младших битов строки, на которой должно произойти растровое прерывание.
Зарезервировано$24НетНетн/д
Регистр смещения X ULA$26ДаДаСмещение пикселей по оси X (0..255) для использования при рисовании слоя ULA.
Регистр смещения Y ULA$27ДаДаСмещение пикселей по оси Y (0..191) для использования при рисовании слоя ULA.
Регистр старшего адреса Keymap$28ДаДаMSB адреса PS/2 Keymap, чтение (ожидание) первого байта цвета палитры
Регистр младшего адреса Keymap$29НетДаLSB адреса PS/2 Keymap.
Регистр старших данных Keymap$2AНетДаСтаршие данные в PS/2 Keymap (MSB данных в бите 0)
Регистр младших данных Keymap$2BНетДаВосемь младших LSB данных PS/2 Keymap.
Регистр зеркала DAC B (слева)$2CДаДаЗеркало DAC B, чтение текущего I2S left MSB
Регистр зеркала DAC A+D (моно)$2DДаДаПорт SpecDrum 0xDF / Зеркало DAC A+D, чтение текущего I2S LSB
Регистр зеркала DAC C (справа)$2EДаДаЗеркало DAC C, чтение текущего I2S right MSB
Регистр MSB смещения X Tilemap$2FДаДаУстанавливает смещение пикселей (два старших бита), используемое для рисования графики Tilemap на экране.
Регистр LSB смещения X Tilemap$30ДаДаУстанавливает смещение пикселей (восемь младших битов), используемое для рисования графики Tilemap на экране.
Регистр смещения Y Tilemap$31ДаДаУстанавливает смещение пикселей, используемое для рисования графики Tilemap на экране.
Регистр смещения X LoRes$32ДаДаСмещение пикселей по оси X (0..255) для использования при рисовании слоя LoRes.
Регистр смещения Y LoRes$33ДаДаСмещение пикселей по оси Y (0..191) для использования при рисовании слоя LoRes.
Регистр индекса зеркала порта спрайта$34ДаДаВыбирает индекс спрайта 0..127, на который будут влиять записи в другие порты спрайта (и зеркала).
Регистр атрибута 0 зеркала порта спрайта$35НетДаЗеркало порта Nextreg для записи непосредственно в «байт 1» Загрузка атрибута спрайта ($xx57 / 87).
Регистр атрибута 1 зеркала порта спрайта$36НетДаЗеркало порта Nextreg для записи непосредственно в «байт 2» Загрузка атрибута спрайта ($xx57 / 87).
Регистр атрибута 2 зеркала порта спрайта$37НетДаЗеркало порта Nextreg для записи непосредственно в «байт 3» Загрузка атрибута спрайта ($xx57 / 87).
Регистр атрибута 3 зеркала порта спрайта$38НетДаЗеркало порта Nextreg для записи непосредственно в «байт 4» Загрузка атрибута спрайта ($xx57 / 87).
Регистр атрибута 4 зеркала порта спрайта$39НетДаЗеркало порта Nextreg для записи непосредственно в «байт 5» Загрузка атрибута спрайта ($xx57 / 87).
Регистр индекса палитры$40ДаДаВыбирает элемент палитры (индекс) для управления
Регистр значения палитры$41ДаДаИспользуйте для установки/чтения 8-битных цветов палитры ULANext.
Маска цвета чернил Enhanced ULA$42ДаДаУказывает маску для извлечения цвета чернил из значения ячейки атрибута в режиме ULANext.
Регистр управления Enhanced ULA$43ДаДаВключает или отключает расширенную интерпретацию ULA значений атрибутов и переключает активную палитру.
Расширение палитры Enhanced ULA$44ДаДаИспользуйте для установки 9-битных (2-байтовых) цветов расширенной палитры ULA или для чтения второго байта цвета.
Регистр резервного цвета прозрачности$4AДаДа8-битный цвет, который будет использоваться, когда все слои содержат прозрачный пиксель.
Регистр индекса прозрачности спрайтов$4BДаДаИндекс в палитру спрайтов (прозрачного цвета).
Регистр индекса прозрачности Tilemap$4CДаДаИндекс в палитру Tilemap (прозрачного цвета).
Банк слота 0 управления памятью$50ДаДаВыбирает 8k-банк, хранящийся в 8k-слоте 0 (см. Карта памяти).
Банк слота 1 управления памятью$51ДаДаВыбирает 8k-банк, хранящийся в 8k-слоте 1 (см. Карта памяти).
Банк слота 2 управления памятью$52ДаДаВыбирает 8k-банк, хранящийся в 8k-слоте 2 (см. Карта памяти).
Банк слота 3 управления памятью$53ДаДаВыбирает 8k-банк, хранящийся в 8k-слоте 3 (см. Карта памяти).
Банк слота 4 управления памятью$54ДаДаВыбирает 8k-банк, хранящийся в 8k-слоте 4 (см. Карта памяти).
Банк слота 5 управления памятью$55ДаДаВыбирает 8k-банк, хранящийся в 8k-слоте 5 (см. Карта памяти).
Банк слота 6 управления памятью$56ДаДаВыбирает 8k-банк, хранящийся в 8k-слоте 6 (см. Карта памяти).
Банк слота 7 управления памятью$57ДаДаВыбирает 8k-банк, хранящийся в 8k-слоте 7 (см. Карта памяти).
Данные Copper$60НетДаИспользуется для загрузки кода в Copper.
Младший байт управления Copper$61ДаДаСодержит младший байт Copper управляющих битов.
Старший байт управления Copper$62ДаДаСодержит старший байт Copper управляющие флаги.
16-битный регистр записи данных Copper$63НетДаИспользуется для загрузки кода в Коппер.
Регистр смещения вертикальной видеолинии$64ДаДаСмещение нумерации растровых строк в copper/interrupt/active register
Регистр управления ULA$68ДаДаОтключить ULA, контролирует смешивание/наложение ULA, включить ULA+
Регистр управления дисплеем 1$69ДаДаLayer2, тень ULA, порт Timex $FF
Регистр управления LoRes$6AДаДаРежим LoRes Radastan
Регистр управления Tilemap$6BДаДаУправляет режимом Tilemap.
Регистр атрибута Tilemap по умолчанию$6CДаДаАтрибут плитки по умолчанию только для 8-битных карт.
Регистр базового адреса Tilemap$6EДаДаБазовый адрес плиточной карты 40x32 или 80x32 (аналогично текстовому режиму других компьютеров).
Регистр базового адреса определений плит$6FДаДаБазовый адрес графики плиток.
Регистр управления Layer 2$70ДаДаРазрешение Layer 2, смещение палитры
Регистр MSB смещения X Layer 2$71ДаДаУстанавливает смещение пикселей, используемое для рисования графики Layer 2 на экране.
Регистр атрибута 0 зеркала порта спрайта (с INC)$75НетДаТо же, что и Регистр атрибута 0 зеркала порта спрайта ($35) (записать первый байт атрибутов спрайта), плюс увеличивает Регистр индекса зеркала порта спрайта ($34)
Регистр атрибута 1 зеркала порта спрайта (с INC)$76НетДаТо же, что и Регистр атрибута 1 зеркала порта спрайта ($36)

Этот документ неполный и вскоре будет пересоздан