Я в своем эмуляторе проверил, boot.rk/sdbios.rk тоже работают.
Я в своем эмуляторе проверил, boot.rk/sdbios.rk тоже работают.
Ещё информация от Vinxru:
SHELL для 86РК то же надо пересобрать. Надо поменять адреса видеопамяти, адреса контроллеров, адреса точек входа монитора, объем памяти.
Но для провеки контроллера, вместо SHELL можно засунуть любую игру.
Даже вместо SDBIOS можно засунуть любую игру. В этом случае, надо что бы игра начиналась с адреса >100h. Так как в адресе 0 живет начальный загрузчик (BOOK.RK), который и грузит SDBIOS.
Последовательность загрузки такая.
Контроллер эмулирует ПЗУ на 128 байт, содержимое берется из файла /boot/book.rk
В мониторе пишем R0,100. В память по адресу 0 загружается файл /boot/book.rk
В мониторе пишем G. Запускается этот файл и он загружает файл /boot/sdbios.rk и запускает. (Тут важно, что бы адрес загрузки не накладывался на /boot/boot)
Файл sdbios грузится в самый верх памяти и запускает /boot/shell.rk. SHELL может грузится в нулевой адрес, так как начальный загрузчик уже не нужен.
При этом, программе /boot/shell.rk в регистрах передается точка входа в SDBIOS. (SD BIOS может быть в любом месте памяти, это не ограничивается стандартом.) При запуске программы регистр A содержит версию набора команд (сейчас 1). BС содержит точку входа в SD BIOS. HL командную строку. DE собственное имя.
Для вызова функции контроллера, надо поместить в регистр A код функции и вызвать подпрограмму по адресу переданному при старте программы в регистре BC.
ФУНКЦИИ
Reboot Теплая перезагрузка (A=0, HL="", DE="" / A=код ошибки)
Exec Запустить программу (A=0, HL=имя файла, DE=командная строка / A=код ошибки)
FindFirst Начать получение списка файлов (A=1, HL=путь, DE=максимум файлов для загрузки, BC=адрес / HL=сколько загрузили, A=код ошибки)
FindNext Продолжить получение списка файлов (A=1, HL=":", DE=максимум файлов для загрузки, BC=адрес / HL=сколько загрузили, A=код ошибки)
Open Открыть файл (A=2, D=0, HL=имя файла / A=код ошибки)
Create Создать файл (A=2, D=1, HL=имя файла / A=код ошибки)
MkDir Создать папку (A=2, D=2, HL=имя файла / A=код ошибки)
Delete Удалить файл/папку (A=2, D=100, HL=имя файла / A=код ошибки)
Seek Установить позицию чтения записи файла (A=3, B=режим, DE:HL=позиция / A=код ошибки, DE:HL=позиция) (С начала B=0, с текущего положения B=1, с конца B=2)
GetFileSize Получить размер файла (A=3, B=100 / A=код ошибки, DE:HL= размер файла)
GetDiskSize Получить размер диска в Мб (A=3, B=101 / A=код ошибки, DE:HL= размер диска)
GetDiskFree Получить свободное место на диске в Мб (A=3, B=102 / A=код ошибки, DE:HL= размер файла)
SwapFiles Работа с двумя открытыми файлами (A=3, B=200 / A=код ошибки)
Read Прочитать из файла (A=4, HL=размер, DE=адрес / A=код ошибки, HL=сколько загрузили)
Write Записать в файл (A=5, HL=размер, DE=адрес / A=код ошибки)
WriteEOF Конец файла (A=5, HL=0 / A=код ошибки)
Move Переместить файл/папку (A=6, HL=из, DE=в / A=код ошибки)
Т.е. теоретически, можно записать в обычное ПЗУ реализацию этих функций для самого ПЗУ и использовать коммандер для удобной работы с ROM-диском. Можно и RAM-диск ещё присобачить.Ещё информация от Vinxru:
...
ФУНКЦИИ
...
С уважением, Дмитрий.
Pentagon-128 вер.2023+Turbo Sound+ZXM-GeneralSound
ZXM-Phoenix 2048+Turbo Sound+ZXM-GeneralSound+ZXM-SoundCard Lite
ZXM-Phoenix в Телеграмм
Причём обратите внимание, что запуск игры можно свести к двум этпапам: загрузить каталог, найти в нём нужный файл и запустить. Свои загрузчики каждый может писать свои, хотя shell от самого Vinxru оладается большими возможностями.
Шлейфик для подключения платки - лишний для безглючной работы.
За основу устройства можно азять ремулятлр ПЗУ для БШек. в прошивку ремулятора можно втиснуть "математический сопрлцессор" для чего выбрать подходящий контроллер с хорошей быстрой математикой.
Последний раз редактировалось perestoronin; 15.10.2014 в 09:51.
Ретрокладовая продажи
Я на скорую руку сделал, но держится надежно.
Последний раз редактировалось andykarpov; 17.10.2014 в 09:48.
Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)