Files
Sprinter-SDCC/docs/new/01-architecture.md
T
snark13 64ce6339eb docs: справочники по железу Sprinter + правка gfx_scroll_h
- docs/new/ — сводные справочники (архитектура, BIOS, DSS, память,
  графика, акселератор, IRQ, порты, ввод, звук, известные баги);
- docs/Original/ — первоисточники, из которых они собраны (BIOS, Estex
  DSS, мануалы, описание акселератора), + Форум.doc/.docx в reference;
- libbgi/common/gfx_scroll_h.c — обход бага скролла при ширине >256
  (правка автора: шаг банды 255 и продвижение указателей на cw; старый
  вариант с 256 оставлен закомментированным с TODO);
- удалён applications/PoP/roomtest/hang_variants.png — рабочая раскладка
  из разбора позы виса, в репозитории ей не место.

Большие архивы (docs/extra ~568 МБ, docs/sources с вложенными git-репо
~68 МБ) в коммит НЕ включены — см. обсуждение.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-07-29 18:26:31 +03:00

16 KiB
Raw Blame History

1. Архитектура компьютера Sprinter Sp2000

1.1 Общие сведения

ZX Sprinter — универсальный компьютер на базе 8-битного процессора Z80. Основой является перепрограммируемая логическая матрица (ППЛМ/CPLD/FPGA), что обеспечивает гибкую изменяемую архитектуру — конфигурация схемы может меняться непосредственно во время работы.

Материнская плата — Sp2000 (разработана в конце 2000 г.).

Параметр Значение
Процессор Z84C15 (Z80-совместимый, внутренние PIO/SIO/CTC)
Тактовая частота 21 МГц (turbo) / 3.5 МГц (slow)
ОЗУ (main) 4 МБ (72-pin SIMM)
Быстрое ОЗУ (КЭШ-ОЗУ) 64 КБ (SRAM, без wait states)
ПЗУ 256 КБ (8 страниц по 32 КБ)
Видео-ОЗУ 256 КБ
Контроллер дисков КР1818ВГ93 (аналог WD1793)
Поддержка НЖМД IDE/AT
Контроллер клавиатуры AT-совместимая (101 key), PS/2
Контроллер мыши Serial MS-Mouse (RS-232 через Z84C15 SIO)
Слоты расширения 2 × ISA-8
Звук AY-3-8910 (в ППЛМ), 16-бит ЦАП TDA1543 (COVOX + AY)
COVOX-Blaster (CBL) 16-bit с буферным ОЗУ 256 байт, 15/22 кГц
CMOS-часы Dallas DS12887A (опционально, эмулируется при отсутствии)
Видеовыход Аналоговый CGA-монитор, RGB, TV (SCART)

1.2 Системная архитектура

Упрощённая структура:

                  ┌─────────────┐
  ┌──────────┐    │   ISA-8     │
  │ Принтер  │    │  слот 1..2  │
  │ Мышь     │    └──────┬──────┘
  │ Джойстик │           │
  └─────┬────┘     ┌─────┴──────┐
        │          │  Буферы и  │
  ┌─────┴──────┐   │ дешифраторы│
  │  Z84C15    │   └──────┬─────┘
  │ (CPU +     │◄─────────┤
  │  PIO/SIO/  ├──────────┤
  │  CTC)      ├──────────┤
  └─────┬──────┘          │
        │            ┌────┴──────────┐
  ┌─────┴──────┐     │  EP1K30QC208  │
  │ ROM 256K   │◄───►│   (CPLD/FPGA) │◄───► VRAM 256K
  │ Cache 64K  │     │               │◄───► Main RAM
  └────────────┘     │               │
                     │  AY-3-8910    │
                     │  COVOX/CBL    │
                     │  Accel.       │
                     └──────┬────────┘
                        ┌───┴───┐
                        │TDA1543│
                        │ ЦАП   │
                        └───────┘

Периферия (FDD, HDD, Kempston, клавиатура AT) подключается через ППЛМ. Вспомогательная ППЛМ (EPM7064 на Sp2000) обеспечивает синхронизацию и начальный запуск. Дешифрация адресов портов выполняется через ППЛМ, что позволяет перепрограммировать адреса портов.

1.3 ППЛМ и загрузка конфигураций

Механизм конфигурирования

При включении или RESET информация в ППЛМ стирается. ППЛМ переходит в режим ожидания загрузки блока данных конфигурации. Процессор отключён от периферии, в его адресное пространство включено ПЗУ и возможно КЭШ-ОЗУ. Любая запись процессора в адресное пространство в этот момент записывает данные в ППЛМ.

Программа загрузчика в ПЗУ:

  1. Проверяет флаг в КЭШ-ОЗУ по смещению #80 (последняя страница КЭШа)
  2. Если флаг (строка ACEX_30K_LOADING) установлен → загружает конфигурацию из КЭШ-ОЗУ (смещение #100)
  3. Если флаг сброшен → загружает конфигурацию из ПЗУ

Смена конфигурации программно

  1. Загрузить файл прошивки в последнюю страницу КЭШ-ОЗУ (смещение #100)
  2. Записать флаг ACEX_30K_LOADING по смещению #80
  3. Выполнить программный сброс записью в страницу RESET_PAGE (#A0),
  4. После сброса загрузчик находит флаг, загружает прошивку в ППЛМ и стирает флаг

При аппаратном RESET флаг отсутствует — загружается начальная конфигурация из ПЗУ.

Ограничения

  • Внутренний формат данных ППЛМ — закрытая информация Altera
  • Программа разводки схем — MAX+Plus II — не работает на ZX-Spectrum/Sprinter (требуется PC)

1.4 Конфигурации ППЛМ

Sprinter-1

Максимально совместима с ZX-Spectrum. Включает:

  • Режимы Spectrum-128/Scorpion-256/Pentagon-512
  • Расширенная память до 4 МБ
  • Расширенный экран: Spectrum, Text-80×32, Graf-320×256×256
  • Контроллер дисковода (ВГ93), контроллер IDE
  • AT-клавиатура, подключённая как ZX-Keyboard (через порт #FE)
  • COVOX 8-bit
  • AY-3-8910 (доступен)

Sprinter-2

Требования к совместимости жёстче. Добавляет:

  • Акселератор операций с ОЗУ (fill, copy, AND, OR, XOR)
  • AT-клавиатура через внутренний последовательный порт Z84C15 (сканкоды, не ZX-матрица)

ZX-Spectrum+AY

Максимальное приближение к ZX-Spectrum-128/256. AY-3-8910 (3-я версия, в ППЛМ): 3 голоса, шум, амплитуда, огибающая (обнаружена ошибка в формирователе огибающей [IvanMak.txt:224229]).

Game-1

На базе Sprinter-2. Акселератор без логических функций. COVOX-Blaster (15 кГц).

DooM

Развитие Game-1. Акселератор с аппаратным растяжением/сжатием вертикальных и горизонтальных линий.

Video

Похожа на Game-1, добавлена возможность передачи данных с HDD прямо в видео-память. Режим GR-256-4×4 — 160×128 с аппаратным удвоением пикселя.

Плата Sp2000

Конфигурации Sprinter-1, Sprinter-2 и ZX+AY объединены в одну прошивку. Переключение — через системный порт. Game-1, DooM, Video также планируется свести в одну.

1.5 Система памяти (обзор)

Адресное пространство Z80 (64 КБ) разделено на 4 окна по 16 КБ:

Окно Адреса Название Назначение (по умолчанию)
W0 #0000..#3FFF PAGE0 ПЗУ (системное)
W1 #4000..#7FFF PAGE1 ОЗУ, страница 5
W2 #8000..#BFFF PAGE2 ОЗУ, страница 2
W3 #C000..#FFFF PAGE3 ОЗУ, любая страница (0..N)

Основная память — 4..64 МБ — делится на блоки по 16 КБ. Управление через порты страниц (#82, #A2, #C2, #E2 для окон 0..3). ПЗУ: #E0..#EF. КЭШ-ОЗУ: #F0..#FF.

Детально — 04-memory.md.

1.6 Видеосистема (обзор)

Основа — ППЛМ + 256 КБ видео-ОЗУ. Два режима адресации VRAM:

  • Спектрумовский — экран 32 блока по 8 КБ, адрес через RGADR
  • Графический — 256 строк × 1024 байта, линейная адресация; страницы #50..#5F

Режимы вывода (задаются для каждого квадратика 8×8):

  • ZX-40 — текстовый 40×32 (Spectrum-совместимый)
  • ZX-80 — текстовый 80×32, до 36 знакогенераторов
  • GR-256-8 — графический 320×256×256 цветов
  • GR-16-16 — графический 640×256×16 цветов

Палитра: 8 палитр по 256 цветов из 16 млн. Цвет: 3 байта RGB (BGR) на цвет.

четыре из этих восьми палитр используются для графических режимов и оставшиеся четыре для текстовой палитры — 4 текстовые палитры (paper, ink, flash-paper, flash-ink) по адресам #03F0..#03FE.

Детально — 05-graphics.md.

1.7 Акселератор (обзор)

Акселератор — быстрое внутреннее ОЗУ в ППЛМ. Присутствует в Sprinter-2 и выше. Управляется через NOP-команды процессора (LD D,D, LD L,L, LD C,C и др.), которые ППЛМ распознаёт как инструкции акселератора.

Операции: fill, copy, AND, OR, XOR.

время копирования полного экрана. - «~1.2 инта» (~24 мс при 50 Гц)

формула скорости. «Время работы акселератора = число пересылаемых байт / 7000000 (секунд)»

акселератор и прерывания. требуется DI/EI (акселератор сильно меняет систему команд).

Детально — 06-accel.md.

1.8 Быстрое ОЗУ (КЭШ-ОЗУ)

64 КБ SRAM с доступом без wait states на частоте 21 МГц. Физические страницы #F0..#FF, реально 4 страницы по 16 КБ.

Подключается через порт #FB (стандартный Pentagon-овский), чтение IN A,(#FB) — включает, IN A,(#7B) — выключает.

Ограничения:

  • Несовместимо с акселератором
  • Не сохраняется между процессами
  • Конфликт с COVOX по порту #FB
  • На Sp2000 используется для загрузки прошивок ППЛМ и как временное хранилище

Детально — 04-memory.md.

1.9 ISA-слоты

Два 8-битных ISA-слота.

Возможны два способа доступа к ISA — вероятно, разные конфигурации ППЛМ:

  • Через страницы памяти #D0..#DF [IvanMak.txt:855858]: «Бит 1 номера означает выбор доступа к порту или памяти ISA, а бит 2 определяет к какому из двух слотов осуществляется доступ.»
  • Через управляющие порты [Parinov.txt:798857]: (1) запись #10 в порт 1FFDh, (2) запись управляющего байта в порт 0E2h (бит D2=слот, D1=порт/память), (3) использование порта 9FBDh для старших адресов.

1.10 Звук (обзор)

COVOX: ЦАП TDA1543 — 16-битный стерео, COVOX — 8-битный, реально используется 10 бит для одновременного вывода COVOX и AY.

порт CBL. «Порт управления: 004Eh (16-bit port!!!, писать только через OUT (C),reg)» — 16-бит, требуется OUT (C),A.

Компоненты звукового тракта:

  • 16-битный ЦАП TDA1543 (реально 10 бит) — подключён к ППЛМ
  • AY-3-8910 — эмуляция в ППЛМ (3-я версия: 3 голоса + шум + огибающая)
  • COVOX 8-bit — порты #FB / #4F, через TDA1543
  • Бипер — бит 3 порта #FE
  • COVOX-Blaster (CBL) — COVOX с буферным ОЗУ 256 байт, 15/22 кГц. Управление порт #4E

Детально — 08-io.md.

1.11 Клавиатура (обзор)

В Sprinter-1 — ZX-клавиатурная матрица через порт #FE. В Sprinter-2 и выше — AT-клавиатура через внутренний SIO Z84C15 (порты #18/#19). Сканкоды напрямую, FIFO на 3 байта.

Детально — 08-io.md.

1.12 Мышь

Microsoft Mouse (2 кнопки) через последовательный порт Z84C15. Порт команд: #1B, порт данных: #1A.

Детально — 08-io.md.

1.13 Дисковая подсистема

  • FDD: КР1818ВГ93 (WD1793). Порт #1F перенаправляется на #0F в ПЗУ. Поддержка 720 КБ / 1.44 МБ.
  • HDD: IDE/AT. Порты #XX50..#XX55, регистры #20..#29.
  • CMOS Dallas DS12887A: порты #FFBD (read), #BFBD (write), #DFBD (address).

Детально — 08-io.md.

1.14 Система прерываний (обзор)

Поддерживаются IM1 и IM2. Генерация INT — через бит 0 порта #FE. CTC Z84C15 — таймер, SIO — клавиатура. ISA-слоты — IRQ через PIO порт B (#1F).

Детально — 07-irq.md.

1.15 Сброс и старт машины

Программный сброс (без перезагрузки ППЛМ) [IvanMak.txt:13851394]:

DI
LD A, 16
LD BC, 1FFDh
OUT (C), A
LD A, 0A0h
OUT (PAGE3), A  ; PAGE3 = #E2
LD (0C000h), A  ; в этот момент происходит RESET
DI
HALT

Сброс с перезагрузкой ППЛМ — через функции BIOS (02-bios.md). Аппаратный RESET — начальная конфигурация из ПЗУ.

1.16 Плата Sp2000 — особенности

  • Конфигурации объединены в две прошивки ППЛМ (Sprinter-1+Sprinter-2+ZX+AY — одна; Game-1+DooM+Video — другая)
  • AY-сопроцессор доступен и в Sprinter-1, и в Sprinter-2
  • ОЗУ: 72-pin SIMM, от 4 до 64 МБ
  • Внутренние порты Z84C15: #10..#1F, #EE, #EF, #F0, #F1, #F4 — их адреса вне ППЛМ
  • Обнаружена ошибка в формирователе огибающей AY (3-я версия)

1.17 Кросс-ссылки

  • BIOS: 02-bios.md
  • DSS/ESTEX: 03-dss.md
  • Память, режимы, банки: 04-memory.md
  • Видео, палитра: 05-graphics.md
  • Акселератор: 06-accel.md
  • Прерывания: 07-irq.md
  • Диски, джойстик, принтер, ISA: 08-io.md
  • Клавиатура, мышь: 09-input.md
  • Звук: 10-sound.md
  • Карта портов: 11-ports.md
  • Баги: 12-bugs.md