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

1 / 11 573

Подключение 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-диска для компьютера ″Байт″
Плата 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-диска. Для этого понадобится одно ПЗУ или 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-диска с играми (от 21.10.2020)
Для ПЗУ или Flash объёмом 1024К или двух микросхем по 512К
Схемы
Схема ROM-диска для Nemo-BUSROM-диск рассчитан на использование микросхем FLASH-памяти объёмом от 128К до 512К включительно или микросхем ПЗУ от 128К до 1МБ включительно.
Прочее
Образ диска с "байтовскими" играми, адаптированными для TR-DOSЗащита "Церикопик" в играх удалена



Fatal error: Uncaught TypeError: Cannot access offset of type string on string in /usr/local/www/zxbyte.ru/numerator/mNumSetter.php:140 Stack trace: #0 /usr/local/www/zxbyte.ru/numerator/numerator.php(26): include() #1 /usr/local/www/zxbyte.ru/index.php(482): include('/usr/local/www/...') #2 {main} thrown in /usr/local/www/zxbyte.ru/numerator/mNumSetter.php on line 140