1 / 11 573
Версия для печати
Подключение ROM-диска к компьютеру "Байт"
Идея ROM-диска не нова. Сколько их уже сделано - и для "Балтика", и для "Орион-128", "Радио-86РК" и т.п... В итоге за основу была положена идея на основе "теневого ОЗУ" для Спектрума. Т.е. по нажатию кнопки отключаем основное ПЗУ "Байта" и подставляем вместо него собственное, в котором находится загрузчик и программы. Основное требование - возможность подключения 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-диска. Для этого понадобится одно ПЗУ или FLASH на 128КБ.
Стартовый экран системного ROM-диска для компьютера ″Байт″
А в качестве примера использования внешнего картриджа для игр я адаптировал все игровые и системные программы с двух кассет, поставляемых с "Байтом", для ROM-диска. Для этого понадобятся две микросхемы ПЗУ или FLASH на 256КБ (2*256=512К).
Стартовый экран игрового ROM-диска для компьютера ″Байт″
В процессе работы по адаптации программ с кассет к ROM-диску, удалось адаптировать все программы для загрузки в среде TR-DOS. Неадаптированным остался только копировщик, но это точь-в-точь TFCopy'87, и его можно спокойно найти в интернете.
Напомню, что некоторые программы с "Байтовских" кассет имеют особенности при загрузке.
ROM-диск для шины NEMO-BUS
Кроме "Байта" я делал ROM-диски по тому же принципу для других спектрум-совместимых компьютеров. В частности есть вариант устройства для шины Nemo-BUS:
ROM-диск для шины Nemo-BUS
ROM-диск для шины Nemo-BUS
Этот вариант ROM-диска хорошо себя показал в работе. Проверялся на компьютерах KAY-1024, ZXM-Phoenix, ZX-Evolution.
Состав программ на системном ROM-диске
Кроме системных программ для использования в 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Защита "Церикопик" в играх удалена
|