Архитектура системыЭталонные машины

Эталонные машины

Эталонные машины

ZX Spectrum Next основан на пяти эталонных машинах:

  • ZX Spectrum 16k: Урезанная версия оригинального Spectrum. Не имеет памяти после $7fff, поэтому вся память является конфликтной. Не моделируется Next, так как 48k версия идентична, но имеет больше памяти.
  • ZX Spectrum 48k: Оригинальный Spectrum. Не поддерживает переназначение памяти.
  • ZX Spectrum 128k: Первый улучшенный Spectrum, созданный Sinclair. Поддерживает переназначение памяти и теневой экран.
  • ZX Spectrum +2A/+3: Улучшенные Spectrums после ребрендинга Amstrad. Это также “родная” персональность Next.
  • Pentagon: Домашний Spectrum, сделанный в России, в котором устранена конфликтная память и удвоена тактовая частота.

Видео тайминги

Видео тайминги Next определяются четырьмя факторами:

  • Видео тайминги эталонной машины, выбранной конфигурацией (читается из Machine Type Register ($03))
  • Частота кадров, 50 Гц или 60 Гц (читается из Peripheral 1 Register ($05)). Это можно свободно регулировать, за исключением того, что Pentagon может работать только на частоте 50 Гц.
  • Настроенный тип видеовыхода, VGA или HDMI (читается из Video Timing Register ($11)). Если выбран HDMI, то видео тайминги выбранного типа машины полностью переопределяются, поэтому это считается альтернативным типом машины ниже, хотя и не прошивкой Next (что означает, что если выбран Pentagon, то можно выбрать частоту кадров 60 Гц, если тип выхода - HDMI)

Видеовыход делится на четыре фазы, начиная с первой строки адресуемого экрана (а не верхнего левого угла всего экрана, который является частью рамки):

  • Фактическое отображение составляет 192 строки во всех конфигурациях.
  • Нижняя рамка составляет 57 строк при 50 Гц или 33 при 60 Гц на стандартных машинах; на Pentagon она немного меньше, 49 строк. На HDMI она составляет 40 строк при 50 Гц или 20 при 60 Гц.
  • Период вертикального гашения - это время, необходимое для возврата рисующей линии на ЭЛТ-мониторах с нижней части экрана в верхнюю, что имитируется на современных не-ЭЛТ мониторах. Он определяется исключительно стандартом видеовыхода: 14 строк на VGA и 40 или 33 строки на HDMI в зависимости от частоты кадров.
  • Прерывание ULA VBLANK - это точка, в которой ULA отправляет прерывание Z80, заставляя его выйти из инструкций HALT и запустить подпрограмму обслуживания кадра. На всех не-HDMI машинах это происходит непосредственно перед началом периода гашения, за исключением Pentagon, где это происходит на 1 строку раньше. На HDMI, из-за более длительного периода гашения, это происходит во время периода гашения, а не до него. При 50 Гц это происходит через 25 строк в период гашения, оставляя 15 строк между прерыванием и фактическим началом верхней рамки (близко к 14 строкам, которые были бы на VGA-выходе). При 60 Гц это происходит через 24 строки в гашении, оставляя всего 9 строк.
  • Верхняя рамка составляет 49 строк при 50 Гц или 23 строки при 60 Гц на 48k Spectrum; на 128k Spectrum она ровно на одну строку короче при обеих частотах кадров. На Pentagon она значительно длиннее, 65 строк. На HDMI она составляет 40 строк при 50 Гц и 17 при 60 Гц.

(значения в таблице основаны на таймингах ядра 2.x, ядро 3.x немного изменило некоторые режимы 60 Гц, например, VGA Spectrum +3 имеет 264 общих строк - но у меня нет полного набора данных на данный момент, чтобы отредактировать таблицу, поэтому оставляю все как есть, вы можете использовать мой фрагмент кода для измерения количества строк, чтобы динамически определить количество строк пользовательского режима)

МашинаЧастота кадровВыходВсего строк выводаСтрок отображенияСтрок нижней рамкиСтрок периода гашенияСтрок верхней рамкиВсего строк не отображенияТайминг прерывания ULA
Spectrum 48k50 ГцVGA3121925714491201 строка перед гашением
Spectrum 128k, +2A, +350 ГцVGA3111925714481191 строка перед гашением
Pentagon50 ГцVGA3201924914651282 строки перед гашением
Spectrum 48k60 ГцVGA262192331423701 строка перед гашением
Spectrum 128k, +2A, +360 ГцVGA261192331422691 строка перед гашением
Любая50 ГцHDMI31219240404012025 строк в период гашения
Любая60 ГцHDMI2621922033177024 строки в период гашения