Всех с Новым годом!
Хочу представить уже достаточно давнюю разработку, которую все никак не доходили руки опубликовать. Это Монитор для РК-86, специально доработанный для работы с SD-контроллером. Монитор занимает 4К (F000-FFFF) и позволяет перенаправлять обращения к магнитофону к файлам на SD-карте. Это позволяет, например, использовать SD-карту в Бейсике или Редакторе, обычно работающих только с магнитофоном. Монитор был разработан на основе модифицированного Владимиром Чистяковым (aka barsik) Монитора РК-86 с исправленными ошибками и с использованием наработок, примененных ранее в Мониторе "Пальмиры". Для разработки использовался ассемблер M80, как это было в оригинальных исходниках Владимира Чистякова, и tasm.
Загрузить
В архиве содержатся:
- бинарник Монитора
- краткое описание
- измененный файл sdbios.rk для замены файла на SD-карте в BOOT
- все исходники
Позже выложу все на github.
Монитор имеет следующие доработки по сравнению с оригинальным Монитором РК-86:
- При вводе директив Монитора принудительно включается латинский регистр (В. Чистяков)
- Удалена директива X, изменены параметры директивы G (В. Чистяков)
- Возможен выход в Монитор из пользовательской программы по инструкции RET (В. Чистяков)
- ВК без параметров при вводе директивы не вызывает ошибку
- Встроенная поддержка SD-контроллера по схеме Алексея Морозова
- Поддержка режима эмуляции магнитофона с перенаправлением обращений к магнитофону на SD-карту
- Новые директивы для запуска SD Shell и управления режимом эмуляции магнитофона
Особенности:
- Для контроллера SD-карты используются оригинальные boot.rk и shell.rk. В то же время sdbios.rk перекомпилирован для работы с меньшего адреса, так чтобы резидентная часть SD BIOS начиналась с адреса 7300H. Монитор полагается на некоторые особенности оригинального SD BIOS, и в случае внесения значительных изменений в SDBIOS.RK работоспособность эмулятора магнитофона не может быть гарантирована.
- При работе с SD-картой доступная для прикладных программ область памяти может быть уменьшена до 0000-72FF, при этом переменная RAMTOP Монитора не всегда может быть установлена корректно.
- Буфер в 256 байт для работы эмулятора магнитофона располагается по адресам 7200-72FF.
Директивы Монитора, имеющие отличия от РК-86:
- G<адрес запуска>,<DE>,<BC>
Запуск на выполнение с указанного адреса. Второй и третий параметры передаются запускаемой программе в регистрах DE и BC соответственно.- O<нач.адрес>,<кон.адрес>,<конс танта записи>
Вывод области памяти на магнитофон. Если включен режим эмуляции магнитофона (см. ниже), производится запрос имени файла и запись файла на SD-карту.- I<смещение>,<константа чтения>
Чтение с магнитофона области памяти по ранее сохраненному адресу с указанным смещением. Если включен режим эмуляции магнитофона (см. ниже), производится запрос имени файла и чтение файла с SD-карты.
Новые директивы:
- N
Запуск SD Shell (при наличии SD-контроллера)- E<0|1>
Включение (E1) или выключение (E0) режима эмуляции магнитофона с использованием SD-контроллера (см. ниже). По умолчанию режим эмуляции магнитофона включен.
Режим эмуляции магнитофона
При включенном режиме эмуляции магнитофона (директива E1) происходит перехват процедур записи/чтения байта с магнитофона и производится попытка перенаправления обращений к магнитофону в файл на SD-карте.
Для эмуляции магнитофона всегда используется директория TAPE в корне SD-карты, в текущей версии Монитора изменить ее нельзя. Для определения факта окончания обращения к магнитофону используется факт вызова процедуры чтения клавиши с ожиданием F803. Для программ, которые не обращаются к данной функции по окончании обращения к магнитофону, эмуляция может оказаться невозможной.
Запись на магнитофон
При попытке записи на магнитофон (из Монитора или прикладной программы) выдается приглашение к вводу имени файла:
ИМЯ ФАЙЛА[.RKR] (ВК-СПИСОК, АР2-ОТМЕНА):
Для отображения существующих файлов в директории TAPE можно нажать ВК, после чего приглашение будет выведено повторно. Для отмены записи можно нажать АР2, при этом будет симулирована запись, но фактически ничего не будет никуда записано. Если имя файла ввести без расширения, автоматически будет подставлено расширение по умолчанию – .RKR. В случае, если файл уже существует, будет выведен запрос на перезапись существующего файла:
ПЕРЕЗАПИСАТЬ? [Y/.]:
В случае ответа «Y» файл будет перезаписан, иначе приглашение к вводу имени файла будет выведено повторно.
В процессе записи отображается прогресс: каждый полный блок в 256 байт отображается в виде одного символа «*».
Чтение с магнитофона
При попытке чтения с магнитофона выдается аналогичное приглашение к вводу имени файла:
ИМЯ ФАЙЛА[.RKR] (ВК-СПИСОК, АР2-ОТМЕНА):
Аналогично, можно нажать ВК для просмотра перечня уже имеющихся файлов или АР2 для отмены операции. В случае отмены Монитор возвращает вызывающей программы байты FF; это вызывает ошибку в директиве I Монитора, но может вызвать зависание или некорректное поведение других программ. В случае ввода имени отсутствующего файла будет выдано сообщение «НЕТ ФАЙЛА» и запрос имени файла будет выведен повторно.
В процессе чтения также отображается прогресс: каждый полный или неполный блок в 256 байт отображается в виде одного символа «*».
Примечание: поддерживается загрузка только файлов без ведущего синхробайта (форматы *.rk, *.rkr, *.bsm, *.edm и т.п.); для загрузки файлов форматов *.gam, *.pki и т.п. необходимо удалить из файла первый байт E6.
![]()




Ответить с цитированием