The Spectrum SE
Andrew Owen рассказывает журналу Subliminal Extacy об одном из самых амбициозных проектов для Speccy.
— Что такое Spectrum SE?
Моя цель — создать современный компьютер на базе Z80. Я рассчитываю, что его можно будет использовать для всех тех задач, для которых сейчас применяются современные ПК на x86 и PPC. Он будет достаточно производительным для этого и в то же время достаточно дешёвым, чтобы его могли позволить себе люди даже в беднейших уголках мира.
— Почему в качестве основы был выбран именно Spectrum?
Свой первый Спектрум я получил в 1984 году. Это был Spectrum +. Руководство к нему было отвратительным, так что я учил BASIC самостоятельно, ориентируясь на команды, нанесённые на клавиатуре (наконец-то нашлось оправдание такой раскладке!). Когда позже я пересел на Atari ST, писать собственные программы стало куда труднее, и мне очень не хватало этой простоты Спектрума.
Когда где-то в 1995 году я раздобыл Mac Spectacle от Гюнтера Войгка (Gunter Woigk) — ту раннюю версию без звука, не говоря уже о поддержке 128K, — я снова начал писать свои программы. Так что, отвечая на вопрос: для обычного пользователя просто нереально сесть и вот так сразу написать программу под современные операционные системы. Они чересчур сложны. Судя по количеству сообщений в ньюсгруппе CSS, на новый Spectrum существует реальный спрос именно по этой причине.
— Каковы его основные особенности?
По сути, к нему стоит относиться как к совершенно новому компьютеру, который просто умеет выполнять софт для Спектрума — отчасти как Peters Sprinter, только лучше.
Процессор — Z84C00 на частоте 21,2814 МГц. Его можно переключать на 3,5469 МГц для стопроцентно точной эмуляции режима 128 (хотя отдельного режима 128 как такового здесь нет). Частоту процессора можно будет переключать программно либо кнопкой «турбо». Программное переключение по возможности будет совместимо со Scorpion.
Финальная машина сможет адресовать от 16 МБ до 32 МБ памяти (пока точно не определено). Систему страниц ещё предстоит доработать из-за попытки сохранить совместимость с расширенными версиями Pentagon и Scorpion. Порт 7FFD будет вести себя в точности как на 128 (биты D6 и D7 зарезервированы под будущее расширение). Первые четыре бита порта 1FFD (D0–D3) будут работать как на Spectrum +3 (для поддержки программного обеспечения под PLUS3DOS). Остальные биты будут максимально совместимы с расширенными Scorpion и Pentagon.
ULA будет заменена микроконтроллером, чтобы выводить экран на полной скорости. Будут поддерживаться стандартный режим Spectrum и видеорежимы TS2068, но уже с добавлением палитр. Биты FLASH/BRIGHT карты атрибутов будут использоваться для выбора CLUT из 8 цветов, обеспечивая максимум до 32 цветов на экране в стандартном спектрумовском режиме без переключения палитры.
Вместо чипа AY будут установлены две микросхемы YM2203. Они совместимы по регистрам, так что существующие композиции для AY будут играть без проблем, но возможности YM шире, и при использовании двух таких чипов станет доступен полноценный цифровой звук. Насчёт поддержки Covox я пока не решил, поскольку не могу найти о нём нормальной информации; если решусь, возможно, просто эмулирую его через обе YM2203. Также на плате будут стоять GM-MIDI чип и ЦАП. На выходе получится 16-битный стереосигнал с частотой дискретизации 44 кГц.
Клавиатура и мышь могут быть PS/2, PSX или USB — в зависимости от того, что окажется дешевле. Будет как минимум один последовательный порт, способный работать с модемом на 56K (для выхода в интернет). Также будет параллельный порт. Оба порта будут управляться специализированным аппаратным контроллером. Кроме того, возможно, появится поддержка игровых контроллеров от PlayStation и карт памяти (объёмом 128 КБ).
Первые четыре ПЗУ подключаются по схеме диспетчера памяти +3. Пятое ПЗУ может подключаться извне через линию ROM-CS для поддержки TR-DOS.
В ROM 0 располагается BIOS. Он выполняет системное тестирование и начальную инициализацию машины, после чего передаёт управление в ROM 1 (BASIC). Преимущество этого в том, что команду RST 0 теперь можно вызывать из ROM 1 для обеспечения до 65536 системных функций. В ROM 1 находится версия BASIC, основанная на оригинальной машине 48K. При этом расширения BASIC хранятся в ROM 0 и вызываются «на лету» прямо из ROM 1.
В ROM 2 расположена основная дисковая система SE — PLUS3DOS. Она обеспечивает поддержку большинства приложений для +3 и позволяет читать диски форматов +3, CP/M и CPC. В этой же ROM находится IDEDOS, позволяющая работать с жёстким диском. ROM 3 в данный момент свободна, но, вероятно, в итоге будет содержать монитор/ассемблер/дизассемблер и средство создания снапшотов. А в ROM 4 со временем разместится версия TR-DOS, пропатченная под использование дискового контроллера от +3.
ROM 0 и ROM 1 можно использовать независимо от остальных ПЗУ на доработанных системах 128 и +2.
Компьютер также получит полную поддержку международных наборов символов (включая работу в BASIC), текстовый режим на 42 колонки из BASIC в разрешении 256x192, 85 колонок из BASIC в 512x192, поддержку CP/M 3.0 и настраиваемый по размеру RAM-диск (доступный из BASIC командами 128 или +3).
— Насколько машина совместима с существующими Спектрумами и клонами?
Совместимость критически важна для успеха проекта. Машина будет аппаратно совместима по портам с оригинальным Спектрумом, но также будет поддерживать расширенные видеорежимы TS2068 (которые применяются и на некоторых Pentagon'ах), PLUS3DOS, IDEDOS, TR-DOS (в том виде, как она используется на Scorpion и Pentagon) и расширенную адресацию памяти Scorpion и Pentagon. BASIC объединит в одном режиме команды Spectrum, TK90X, Spectrum 128 и TS2068. Программы, написанные для любой из этих машин, можно будет загружать и запускать через RUN без каких-либо переделок в стандартном режиме. Кроме того, BASIC будет поддерживать расширения BASIC 64, то есть графические операторы будут корректно работать и в разрешении 512x192.
— Что уже готово на данный момент?
Больше всего времени к настоящему моменту ушло на отладку оригинального Spectrum BASIC и редактора ROM 128. По ходу дела я сделал несколько любопытных открытий: например, в ПЗУ 128 BASIC (а значит, и в Pentagon, Scorpion, +2, +3 и +2A) есть целый кусок абсолютно бесполезного кода. На самом деле оригинальное ПЗУ BASIC можно использовать на +3/+2A вообще без модификаций для улучшения совместимости. На 128 и +2 в ROM 0 нужно изменить всего три байта. Это просто поразительно. Впрочем, вернёмся к вопросу: BASIC полностью отлажен. В нём гарантированно нет багов. Он также тщательно протестирован на совместимость с широким спектром программ, и пока никаких проблем не выявлено.
Схема распределения ROM в машине уже определена. BIOS и расширения BASIC располагаются в ROM 0 (если останется место, я также помещу туда библиотеки для GUI). Сам BASIC находится в ROM 1 (даже в тестовой версии для +3). PLUS3DOS и IDEDOS (расширение Гарри Ланкастера для работы с жёсткими дисками) живут в ROM 2. Насчёт ROM 3 решение ещё не принято. И я пока не определился, как именно реализовать поддержку TR-DOS. Я мог бы сделать её эмуляцией или напрямую (хотя из соображений копирайта, скорее всего, выберу эмуляцию — в любом случае софт под TR-DOS из бывшего СССР будет работать без проблем).
Для получения дополнительной информации о SE посетите сайт:
http://www.brandnewco.org/se/
Вы также можете связаться с Andrew по адресу aowen@brandnewco.org, чтобы подписаться на рассылку новостей «SE-mail».
Поделитесь вашим мнением о статье