    ▄▄▄▄▄▄
   ▄█░░░░░░
   █░░   █░░
   █░░▄▄▄█░░
   █░░░░░░░░
   █░░   █░░
   █░░   █░░ рхитектура компьютера Sprinter.
   ▀░░   ▀░░

        Введение.

        Данное описание предполагает наличие определенных знаний читателя,
а именно знание архитектуры компьютера ZX-Spectrum и их разновидностей, в
частности Pentagon-128 и Scorpion-256, а так же знание языка BASIC и
некоторое знакомство с языком ассемблера Z80.
        Здесь я буду называть конфигурацией машины - конкретную реализацию
конкретной схемы в перепрограммируемой логической микросхеме (ППЛМ).
Это означает, что машина имеет множество конфигураций, каждая из которых
имеет свою схему.
        Я так же использую понятие КЭШ-ОЗУ. Это не КЭШ в формальном
смысле, а быстрое ОЗУ, в котором процессор может работать на высокой
частоте без ожидания. КЭШ-ем это ОЗУ называется только по традиции,
подобно КЭШ-у на КР537РУ10 в компьютерах Pentagon-128.


        Краткие данные компьютера Sprinter.

        Пpоцессоp . . . . . . . . . . . Z84C15
        Тактовая частота . . . .  21MHz/3.5MHz
        ОЗУ . . . . . . . . . . . . . . 4096Kb
        КЭШ ОЗУ . . . . . . . . . . . . . 64Kb
        ПЗУ . . . . . . . . . . . . . . .128Kb
        Видео-ОЗУ . . . . . . . . . 256Kb(512)
        Контpоллеp дисков . . . . . Кp1818ВГ93
        Поддеpжка 1.44Mb фоpмата . . 3.5"диска
        Контpоллеp винчестеpа . . . . . IDE/AT
        Контpоллеp клавиатуpы . . .  101key/AT
        Контpоллеp мыши . . . . . . . MS-Mouse
        Два слота . . . . . . . стандаpт ISA-8
        Железная эмуляция AY-3-8910 стерео-OUT
        COVOX . . . . . . . . . 8bit x 4chanel
        Видео-pежимы: . . .  Spectrum standart
        GRAF 320x256x256,640x256x16, TXT 80x32
        Выход видео на TV или CGA монитоp, RGB


        Техническая реализация.

        Ядром машины являются процессор Z84C15 и ППЛМ EPF10K10QC208.
Кроме них на плате присутствуют микросхемa ПЗУ, 72х-пиновый SIMM
на 4Mb, 256Kb видео-ОЗУ, 64Kb КЭШ-ОЗУ, схема контроллера дисковода на
БИС КР1818ВГ93, буферы для подключения джойстика, магнитофона, принтера,
клавиатуры, дисководов, винчестера, мыши, буферные микросхемы шины ISA-8
и еще одна ППЛМ фирмы ALTERA - EPM7032LC44. Эта ППЛМ не меняет своей
конфигурации и предназначена для обеспечения синхронизации и начального
запуска компьютера. На плате так же предусмотрена возможность подключения
CMOS часов на основе микросхемы DALLAS. Кроме периферии и буферов имеются
микросхемы дешифрации, входы которых подключаются к процессору через ППЛМ.
Это позволяет легко менять адресацию устройств без какого либо изменения
разводки печатной платы.


        Возможности архитектуры машины.

        Схема компьютеpа основана на большой пеpепpогpаммиpуемой логической
микpосхеме. Подключение периферийных устройств через ППЛМ позволяет получить
высокую гибкость машины по конфигурациям.
        Пpогpаммиpование ППЛМ осуществляется непосpедственно в момент
включения, а так же пpи пеpезагpузке, что позволяет каpдинально менять
схему в ППЛМ непосpедственно во вpемя pаботы. Это сильно выделяет
архитектуру компьютера из ряда существующих компьютеров и поэтому многие
понятия, присущие обычным машинам, меняют свой смысл. Фактически компьютер
имеет изменяемую архитектуру, в которой возможны изменения во многих частях
схемы. Так, например, нельзя говорить о конкретных адресах портов
подключения периферии, так как они могут быть изменены в одну секунду
путем перепрограммирования ППЛМ и данных в ОЗУ, отвечающих за конфигурацию
портов. Конкретные адреса появляются только в конкретных конфигурациях,
например, такой как конфигурация ZX-Spectrum.
        Перепрограммируемость схемы дает довольно большую свободу
фантазии программиста по конфигурации машины. Задумывая конкретную
работу программист может определить в какой конфигурации ее можно
сделать лучше, а, возможно, и придумать свою конфигурацию, которую
затем можно реализовать в ППЛМ и включить перед запуском этой программы.


                Блочная схема компьютера Sprinter.

  ┌───────┐ ┌──────────────────────────────┐    ┌────────────>Sinc
  │Принтер│ │   2 ISA SLOTS                │    │    ┌───────>R
  ├───────┤ └───┬─┬─┬─┬─┬───────┬─┬─┬─┬─┬──┘    │    │ ┌─────>G
  │ Мышь  │ ┌───┴─┴─┴─┴─┴───────┴─┴─┴─┴─┴──┐    │    │ │ ┌───>B
  └─┬─┬─┬─┘ │   Буферы и дешифраторы       │    │  ┌─┴─┴─┴─┐
    │ │ │   └───┬──────────┬─┬──┬─┬────┬─┬─┘    │  │  ЦАП  │
    │ │ │       │INT       │ │  │ │    │ │      │  │ буфер │
 ┌──┴─┴─┴┬─┐    │          │ │  │ │   ┌┴─┴──────┴─┐└──┬─┬──┘   ┌────────┐
 │ Внутр │ ├────│──────────┘ └──│ │───┤ EPF10K10  ├───┘ └──────┤ видео  │
 │ порты │ ├────│──────────DATA─│ │───┤           ├──V_DATA────┤        │
 ├───────┘ ├────│───┐ ┌─────────│ │───┤           ├────────────┤  ОЗУ   │
 │         ├<───┘   │ │         │ │   │           │            │        │
 │         ├────────────────────┘ └───┤           ├────────────┤        │
 │ Z84C15  ├───────────────ADRESS─────┤           ├─V_ADRESS───┤        │
 │         ├────┐ ┌───────────────────┤           ├────────────┤        │
 │         │    │ │ │ │               │           │            │        │
 │         ├<───│ │─│ │──────────────>┤           ├──WE,CSi───>┤        │
 │         ├<───│ │─│ │────DIR───────>┤           │            └────────┘
 │         ├<───│ │─│ │──────────────>┤           ├───────> Audio OUTs
 │         │    │ │ │ │               │           │            ┌────────┐
 │         │  ┌─┴─┴─┴─┴───────┐       │           ├────────────┤ MAIN   │
 │         │  │ ПЗУ и КЭШ-ОЗУ ├<─ADR'─┤           ├──DATA──────┤  RAM   │
 └─┬─┬─┬──┬┘  │            CS ├<─CS───┤           ├────────────┤        │
   │ │ │  │   └───────────────┘       │           │            │ SIMM   │
   │ D │  │   ┌──────────────┐        │           ├────────────┤        │
   │ A │  │   │ EPM7032      ├───────>┤           ├──ADRESS────┤        │
   │ T │  └──>┤ Sinchro      │        │           ├────────────┤        │
   │ A │      │ HDD_DIR      ├<───────┤           │            │        │
   │ │ │      │ ФАПЧ         ├<───────┤           ├─RAS,CAS,WE─┤        │
   │ │ │      └─┬─┬─┬─┬─┬────┘        │           │            └────────┘
   │ │ │        │ │ │ │ │             │           │
 ┌─┴─┴─┴────────┴─┴─┴─┴─┴───────┐     │           │
 │ Периферийные устройства      ├<────┤           │
 │ FDD,HDD,KEMPSTON             ├<DIR─┤           │
 │                              ├<────┤           │
 └──────────────────────────────┘     │           │
                ┌────────────────────>┤           │
   ┌────────┐   │ ┌────────┐          │           │
   │ TAPE   ├<──┘ │Keyboard├─────────>┤           │
   │ in/out │     ├┬┬┬┬┬┬┬┬┤          │           │
   └────────┘     └┴┴┴┴┴┴┴┴┘          └───────────┘

                                Рисунок 1.



        Для простоты некоторые буферы и дешифраторы на схеме не указаны.
Количество Проводов в шинах так же условны. Часть сигналов управления
устройств с ППЛМ смультиплицированы с адресами SIMM-а.


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

        Загрузка конфигураций.

        В момент включения компьютера, а так же после нажатия на RESET вся
информация, находившаяся в ППЛМ отвечающая за конкретную конфигурацию,
стирается. ППЛМ переходит в режим ожидания загрузки блока данных схемы.
        В этот момент процессор полностью отключен от какой либо периферии.
В его адресное пространство памяти оказывается включена одна страница ПЗУ и
одна страница ОЗУ КЭШ-памяти. Любая запись в адресное пространство памяти
процессора в этот момент приводит к записи данных в ППЛМ и программа в
подключенной странице ПЗУ имеет только одну единственную цель - загрузить
в ППЛМ данные конфигурации. В этой же странице ПЗУ находятся данные
начальной конфигурации. (В данный момент это конфигурация Sprinter-1.)
Программа загрузки конфигурации проверяет флаг в КЭШ-памяти и, если он
установлен, загружает в ППЛМ данные из ОЗУ, если сброшен, то данные из
ПЗУ. На этом основано переконфигурирование схемы компьютера.
        Для изменения схемы надо загрузить в последнюю страницу КЭШ-памяти
блок данных конфигурации со смещения #100 и выставить флаг, которым является
текстовая строка "FLEX_10K_LOADING", записанная по смещению #80 в этой же
странице КЭШ-а. После этого надо произвести полный сброс, который
осуществляется программно записью в специальную страницу памяти RESET_PAGE.
Программа в ПЗУ, запускаемая по сбросу находит флаг FLEX_10K_LOADING и
начинает загрузку данных в ППЛМ. При этом она одновременно затирает флаг,
что предотвращает повторную загрузку новой конфигурации при нажатии на
кнопку RESET и позволяет вернуться после "ручного" сброса в начальную
конфигурацию. Затирание флага так же избавляет от мучений в случае
подключения неправильной конфигурации во время экспериментов с программами.
Нажатие на RESET всегда вернет схему в начальную конфигурацию.

        Примечание:
        Внутренняя информация блока данных ППЛМ является закрытой
информацией фирмы ALTERA. Кроме самих микросхем ППЛМ ALTERA поставляет
и программное обеспечение для разводки схем внутри ППЛМ. К сожалению, эта
программа не может работать на компьютере типа ZX-Spectrum и в ближайшем
обозримом будущем не предвидится ее версия для Sprinter-а. Поэтому
разработка новых конфигураций может производится только при наличии
достаточно мощной машины (все делалось на Pentium-166) и программы разводки
схем в ППЛМ, цена на которую составляет сотни долларов США.
        В связи с этим, в данный момент Sprinter имеет несколько конкретных
конфигураций, две из которых записаны в ПЗУ, а остальные могут быть
подгружены с дискеты или винчестера. Постоянно ведется совершенствование
конкретных конфигураций и разработка новых.

        Конфигурация Sprinter-1.

        Включает в себя конфигурацию Spectrum-128/256, распределение памяти
до 4Mb, расширенный экран с режимами Spectrum, Text-80x32, Graf-320x256x256,
контроллер дисковода, контроллер IDE винчестера, контроллер клавиатуры AT,
подключенной как ZX-Keyboard, 8-bit COVOX.
        Эта конфигурация максимально приближена к конфогурации ZX-Spectrum
и позволяет работать на обычных спектрумовских программах и постепенно
менять их под расширенные режимы экрана и памяти, а так же для работы с
новыми устройствами.

        Конфигурация Sprinter-2.

        Включает в себя конфигурацию Spectrum-128/256, распределение памяти
до 4Mb, расширенный экран с режимами Spectrum, Text-80x32, Graf-320x256x256,
контроллер дисковода, контроллер IDE винчестера, контроллер клавиатуры AT,
подключенной как ZX-Keyboard, Accelerator.
        Конфигурация, как и Sprinter-1 приближена к спектрумовской, но
имеет более жесткие требования к программам по совместимости. Позволяет
использовать акселератор операций с основным и видео-ОЗУ. Акселератор
ускоряет операции пересылки блоков данных и заполнения ОЗУ одним байтом
до физического предела скорости основного ОЗУ.
        В последней версии конфигурация Sprinter-2 не имеет Spectrum-овской
клавиатуры. Вместо нее из порта 0FEh считывается сканкод пришедший с
AT-клавиатуры.

        Конфигурация ZX-Spectrum-256/AY.

        Эта конфигурация максимально приближена к ZX-Spectrum-128/256
и включает в себя схему музыкального сопроцессора AY-3-8910. В этой
конфигурации отсутствуют расширенные режимы экрана.
        Вторая версия схемы AY включает в себя три генератора голосов,
генератор шума и регуляторы амплитуды. Генератор огибающей отсутствует.
Так же отсутствует возможность чтения из портов данных сопроцессора.
        В третьей версии AY предполагается данные недостатки исключит