Я в своем эмуляторе проверил, 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:
...
ФУНКЦИИ
...
Причём обратите внимание, что запуск игры можно свести к двум этпапам: загрузить каталог, найти в нём нужный файл и запустить. Свои загрузчики каждый может писать свои, хотя shell от самого Vinxru оладается большими возможностями.
Шлейфик для подключения платки - лишний для безглючной работы.
За основу устройства можно азять ремулятлр ПЗУ для БШек. в прошивку ремулятора можно втиснуть "математический сопрлцессор" для чего выбрать подходящий контроллер с хорошей быстрой математикой.
Ничего подобного. Шлеф брал от 34 контактного разъёма вставлял в разъём возле ВВ55, второй конец припаивал к плате контроллера (замотано синей изолентой). Всё прекрасно работает.
http://www.spetsialist-mx.ru/images/SD_contr_6.png
Я на скорую руку сделал, но держится надежно.
С этого места непонятно, почему на 128 байт, а не на 256, ведь всего 8 бит адресной шины используется в режиме эмуляции ПЗУ.
Вот тут было бы здорово заменить в мониторе эту последовательность нажатий на U, например, как сделано в эмуляторе РК86 от b2m.