Spectrum-совместимые компьютеры «Байт»,«Байт-01» и прочие раритеты

6 / 3 804

Подключение ROM-диска к компьютеру «Байт»

Идея ROM-диска не нова. Сколько их уже сделано - и для «Балтика», и для «Орион-128», «Радио-86РК» и т.п... В итоге за основу была положена идея на основе «теневого ОЗУ» для Спектрума. Т.е. по нажатию кнопки отключаем основное ПЗУ «Байта» и подставляем вместо него собственное, в котором находится загрузчик и программы. Основное требование - возможность подключения ROM-диска к любому «Байту» не производя никаких доработок компьютера, т.е. подключение - только через системный разъём.

ROM-диск с похожим принципом работы мной уже делался.

Схема ROM-диска для компьютера «Байт» (увеличивается по клику мышкой)
Схема ROM-диска для компьютера «Байт» (увеличивается по клику мышкой)
Схема ROM-диска для компьютера «Байт» (увеличивается по клику мышкой)

Как работает ROM-диск

Войти в ROM-диск можно двумя способами: по нажатию кнопки SB1 или командой чтения из порта #FB (251dec). Причём второй способ можно исключить совсем, если предполагается работа с программами, которые опрашивают порт #FB. Для этого предусмотрена перемычка J1. При нажатии кнопки SB1 на 5DD6 появляется лог.1, которая через элементы DD8.1 и DD8.4 блокирует прохождение сигналов A15 и /MREQ на внешнюю периферию (контроллер дисковода). Это сделано для того, чтобы при входе в ROM-диск контроллер дисковода выключил своё ПЗУ, если оно было активно в момент входа в ROM-диск. Это происходит при A14=1 или A15=1. Я реализовал A15=1. А сигнал /MREQ тут задействован для надёжности срабатывания. Параллельно через элемент DD15.1. отключается ПЗУ «Байта». В момент нажатия SB1 через элементы DD7.1 и DD7.2 подаётся лог.0 на входы /NMI и /WAIT процессора. Это сделано для того, чтобы исключить глюки при переходе на ПЗУ ROM-диска. Одновременно с этим сбрасываются триггеры DD3 и DD4, выбирая тем самым 0-ю страницу ROM-диска, где должен находиться загрузчик. На вход 3DD9 подаётся лог.0. Этим самым разрешается работа внутреннего дешифратора обращения к ПЗУ. После отпускания SB1 процессор переходит на адрес #0066 в ПЗУ загрузчика ROM-диска, откуда начинает выполняться программа.

Выход из ROM-диска и включение обратно «байтовского» ПЗУ осуществляется командой чтения из порта #7B (123dec). При этом через DD5, на котором сделан дешифратор для выборки порта #7B или #FB подаётся сигнал выборки на триггер DD6, который сбрасывается в 0, включая «родное» ПЗУ «Байта».

Организация ROM-диска:

Так как содержимое ROM-диска может быть представлено только в адресном пространстве ПЗУ (#0000-#3FFF), то работа с ROM-диском осуществляется страничным способом. Одна страница - 16КБ. Для управления страницами достаточно записать в любой порт номер страницы. Дешифрация обращения к страничному порту сделана на DD8.2. Номер страницы записывается в триггеры DD3,DD4 и далее через дешифратор DD10 преобразуется в абсолютный адрес на ПЗУ ROM-диска. Данная схема рассчитана на использование ПЗУ ёмкостью 128 и более килобайт.

В схеме есть возможность использования внешних картриджей с ПЗУ, в которых может быть записано что угодно. Т.е. предполагается, что на плате ROM-диска есть своё «системное» ПЗУ, где размещены наиболее важные для работы программы, а на картриджах могут быть, к примеру, игры и т.п. Картридж вставляется в специальный разъём X2 на плате. При вставленном картридже внутреннее ПЗУ ROM-диска отключается, и можно работать только с ПЗУ картриджа. На разъём X2 выведены все необходимые сигналы для организации работы картриджа ёмкостью до 4МБ включительно.

Дополнительно на плате ROM-диска установлена панель под тестовое ПЗУ для «Байта» (DD16 по схеме ROM-диска). Дело в том, что в «Байтах» ПЗУ впаяны в плату, и если надо запустить какой-нибудь тест памяти (например при проверке 128К памяти, или тест 48К для «Байт-01») поставить отдельное ПЗУ с тестом нельзя без отпайки ПЗУ. А при наличии ROM-диска надо всего лишь поставить ПЗУ с тестом, переключить перемычку J2 из положения 1-2 в положение 2-3 и включить компьютер.

Возможно придётся проверить напряжение питания +5В, подаваемое на ROM-диск с блока питания.

Помимо компьютера «Байт» ROM-диск без каких-либо доработок работает с компьютером «Байт-01».

Конструкция ROM-диска:

К компьютеру «Байт» помимо ROM-диска будем ещё подключать контроллер дисковода, поэтому конструктивно ROM-диск выполнен в виде переходной платы между системным разъёмом «Байта» и контроллером дисковода:

Плата ROM-диска для компьютера «Байт»
Плата ROM-диска для компьютера «Байт»
Плата ROM-диска для компьютера «Байт»
Плата ROM-диска для компьютера «Байт»
Плата ROM-диска для компьютера «Байт»

Системный разъём у «Байта» только один, поэтому если мы его займём только ROM-диском, то больше ничего не сможем подключить к компьютеру.

В левой нижней стороне платы спаян IDE-контроллер, на самой макетной плате достаточно места для ещё какой-нибудь полезной периферии.

Компьютер «Байт» с ROM-диском
Компьютер «Байт» с ROM-диском
Компьютер «Байт» с ROM-диском
Компьютер «Байт» с ROM-диском
Компьютер «Байт» с ROM-диском
Компьютер «Байт» с ROM-диском
Компьютер «Байт» с ROM-диском

Картридж с ПЗУ для ROM-диска компьютера «Байт»
Картридж с ПЗУ для ROM-диска компьютера «Байт»
Компьютер «Байт» с ROM-диском с картриджем
Компьютер «Байт» с ROM-диском с картриджем
Картридж с ПЗУ для ROM-диска компьютера «Байт»
Компьютер «Байт» с ROM-диском с картриджем

Компьютер «Байт» с ROM-диском, контроллером дисковода и дисководом
Компьютер «Байт» с ROM-диском, контроллером дисковода и дисководом
Компьютер «Байт» с ROM-диском, контроллером дисковода и дисководом
Компьютер «Байт» с ROM-диском, контроллером дисковода и дисководом
Компьютер «Байт» с ROM-диском, контроллером дисковода и дисководом

Это всего лишь один из возможных вариантов исполнения ROM-диска. На основе его можно сделать свои более лучшие проекты. Например, ROM-диск используется в «новодельном» контроллере дисковода для компьютера «Байт».

Адаптация программ на ROM-диск

К сожалению, просто так, простым копированием, игры и системные программы на ROM-диск не переносятся. Сама организация ROM-диска предполагает, что программа должна быть сначала подготовлена для размещения на ROM-диске. Для игр, например, необходимо вскрыть загрузчик, выкинуть всё ненужное типа интро и заставок, чтобы не занимать драгоценное место на ROM-диске. Вытащить непосредственно исполняемый код, запаковать его, поместить на ROM-диск, и написать загрузчик, который бы извлекал этот код с ПЗУ ROM-диска в память компьютера, распаковывал его, подготовил бы систему для его запуска и запустил код исполнение. Это нелёгкая работа.

Для начала я адаптировал несколько системных программ для прошивки системного ПЗУ ROM-диска. Для этого понадобится одно ПЗУ или FLASH на 128КБ.

Стартовый экран системного ROM-диска для компьютера ″Байт″
Стартовый экран системного ROM-диска для компьютера ″Байт″

А в качестве примера использования внешнего картриджа для игр я адаптировал все игровые и системные программы с двух кассет, поставляемых с «Байтом», для ROM-диска. Для этого понадобятся две микросхемы ПЗУ или FLASH на 256КБ (2*256=512К).

Стартовый экран игрового ROM-диска для компьютера «Байт»
Стартовый экран игрового ROM-диска для компьютера «Байт»

В процессе работы по адаптации программ с кассет к ROM-диску, удалось адаптировать все программы для загрузки в среде TR-DOS. Неадаптированным остался только копировщик, но это точь-в-точь TFCopy'87, и его можно спокойно найти в интернете.

Напомню, что некоторые программы с «Байтовских» кассет имеют особенности при загрузке.

ROM-диск для шины NEMO-BUS

Кроме «Байта» я делал ROM-диски по тому же принципу для других спектрум-совместимых компьютеров. В частности есть вариант устройства для шины Nemo-BUS:

ROM-диск для шины Nemo-BUS
ROM-диск для шины Nemo-BUS
ROM-диск для шины Nemo-BUS

Этот вариант ROM-диска хорошо себя показал в работе. Проверялся на компьютерах KAY-1024, ZXM-Phoenix, ZX-Evolution.

Состав программ на системном ROM-диске
Состав программ на системном ROM-диске

Кроме системных программ для использования в ROM-диске были адаптированы игры общим объёмом 1МБ:

Список игр на ROM-диске объёмом 1МБ
Список игр на ROM-диске объёмом 1МБ

Скачать:

Прошивки
Прошивка системного ПЗУ ROM-диска для «Байта»
Для ROM-диска потребуется ПЗУ или FLASH объёмом 128КБ
Прошивка ROM-диска для «Байта» со всеми программами с «байтовских» кассет
Для ПЗУ объёмом 512К (можно 2 по 256К)
Прошивка ROM-диска с системными программами (от 27.10.2015)
Для ПЗУ или Flash объёмом 256К
Прошивка ROM-диска №1 с играми (от 21.10.2020)
Для ПЗУ или Flash объёмом 1024К или двух микросхем по 512К
Прошивка ROM-диска №2 с играми (от 15.02.2024)
Эта прошивка только начала наполняться играми. Со временем игры будут добавляться.
Схемы
Схема ROM-диска для Nemo-BUSROM-диск рассчитан на использование микросхем FLASH-памяти объёмом от 128К до 512К включительно или микросхем ПЗУ от 128К до 1МБ включительно.
Прочее
Образ диска с «байтовскими» играми, адаптированными для TR-DOSЗащита «Церикопик» в играх удалена