
https://zx-pk.ru/threads/29892-sd-karta-i-sdos-dlya-8i-bitnykh-pk.html
PVV wrote: Что же такое SDOS?
SDOS это компактная консольная оболочка позволяющая читать, запускать на исполнение файлы с SD карты, отформатированной в FAT16, и записывать обратно на карту данные из ОЗУ компьютера. Это позволяет очень просто переносить файлы с 'больших' ПК в наши ретрокомпьютеры и обратно.
В основе кода SDOS взят код уважаемого b2m, который я обрамил дополнительным функционалом и возможностями.
Код системы построен таким образом, что его очень просто можно адаптировать к любому ПК и к любому варианту аппаратного интерфейса и носителя (те, вообще говоря, это не обязательно должна быть SD карта, а может быть и HDD).
На данный момент SDOS:
код самой SDOS занимает от 2 до 2.5КБ (может размещаться как в ПЗУ так и в ОЗУ), плюс для работы с FAT16 нужно еще 2КБ ОЗУ.
собиралась и проверялась как минимум в эмуляторе emu, а в некоторых случаях и в реале на следующих ПК: Специалист std(реал) и MX2(реал), RK-86(реал), Апогей, Партнер-01, Galaksija(реал), Orion(реал), TRS-80(реал), ЮТ-88.
поддерживает три базовых аппаратных интерфейса SD: HWM_PVV, msx, n8vem, и их производные варианты.
поддерживает SD и SDHC карты, те карты с размером больше 4ГБ.
поддерживает следующие базовые директивы:
- CD ИМЯкаталога - перейти в каталог с указанным именем;
- DIR - вывести список файлов и каталогов;
- ИМЯфайла.RKX(RKS для std, RKR для RK-86, GTP для Галаксии, RKO - Орион, CAS - TRS-80 ) запустить файл, при этом расширение можно не набирать, будет произведена автоподстановка;
- R ИМЯфайла.РАСШИРЕНИЕфайла,АДРЕСкуда,СКОЛЬКОбайт - прочитать не запуская файл, начиная с указанного адреса в памяти и сколько байт пример: R TEST.BIN,0ACD,5FE0 - читает файл TEST.BIN в память начиная с адреса 0х0ACD и до адреса 0х0ACD+0х5FE0=0х6AAD. Ограничение - нет проверки на фактическую длину файла и запрошенную на чтение, те можно запросить прочитать больше чем размер файла, поведение не определено
- W ИМЯфайла.РАСШИРЕНИЕфайла,АДРЕСоткуда,СКОЛЬКОбайт - записать в файл данные из памяти, начиная с указанного адреса в памяти и сколько байт пример: W TEST.BIN,0ACD,5FE0 - пишет в файл TEST.BIN из памяти начиная с адреса 0х0ACD и до адреса 0х0ACD+0х5FE0=0х6AAD. Ограничение - нет проверки на фактическую длину файла и запрошенную на запись, те можно запросить записать больше чем размер файла, поведение не определено. Записать больше чем существующий размер файла нельзя, если записать данных меньше чем размер файла, то размер файла не меняется и остается прежний
- X - перейти в монитор, из которого был запущен SDOS;
- I - запуск повторной инициализации карты;
только Galaksija:
- WB ИМЯфайла.РАСШИРЕНИЕ - запись BASIC программы в файл на SD в формате GTP;
только СпецециалистМХ:
- L ИМЯфайла.РАСШИРЕНИЕфайла - прочитать данные файла формата RKX с SD в RAM диск МХа; пример: L TEST.BIN - читает файл TEST.BIN в память начиная с адреса 0х0000 и до адреса его длины, создает в RAM диске файл TEST.BIN с стартовым адресом и размером взятыми из 4х первых байт файла на карте, при том, что имя файла в хеадере отсутствовало (в 5м байте 0хЕ6).
Или: L TEST.BIN - читает файл TEST.BIN в память начиная с адреса 0х0000 и до адреса его длины, создает в RAM диске файл TEST_MX.HEX, с стартовым адресом и размером считанные из 4х первых байт файла на карте, и именем файла в хеадере TEST_MX.HEX.
- S ИМЯфайлаНаRAMдиске.РАСШИРЕНИЕ,ИМЯфайлаНаSD.РАСШИРЕ НИЕ - записать данные файла из RAM диска МХа на SD в формате RKX; пример: S TEST.BIN - читает файл TEST.BIN из RAM диска в память начиная с адреса 0х0000 и до адреса его длины, после записывает его на SD карту в существующий файл с таким же именем TEST.BIN, размер не изменяется, формат RKX!
Или: S TEST.BIN,TEST_MX.HEX - читает файл TEST_MX.HEX в память начиная с адреса 0х0000 и до адреса его длины, после записывает его на SD карту в существующий файл с именем TEST.BIN.
только Orion:
- L ИМЯфайла.РАСШИРЕНИЕфайла - прочитать данные файла формата RKO с SD в RAM диск; пример: L TEST$.RKO - читает файл TEST$.RKO в память начиная с адреса 0х0000 и до адреса его длины, создает в RAM диске файл TEST$ с именем, стартовым адресом и размером взятыми из хеадера RKO файла на карте.
- S ИМЯфайлаНаRAMдиске,ИМЯфайлаНаSD.РАСШИРЕНИЕ - записать данные файла из RAM диска на SD в формате RKO. пример: S TEST$,TEST1$.BIN -читает файл TEST$ из RAM диска в память начиная с адреса 0х0000 и до адреса его длины, после записывает его на SD карту в существующий файл с таким же именем TEST1$.BIN, размер не изменяется, формат RKO!.
При выводе каталога по DIR печатается имя, расширение файла и его размер(что бы можно было использовать директивы R и W), а на директории пишется DIR в поле размера файла.
При запуске файла пишется стартовый и конечный адреса куда будет считан файл с карты.
Нажатие любой клавиши (пробела) при выводе по DIR приостанавливает вывода списка файлов.
Для СпециалистМХ2 сделана возможность запускать не только файлы с расширением RKX, но и RKS, для чего в том же каталоге, где находится RKS файл нужно поместить файл монитора M2_C000.MON (взят из проекта Vinxru). Кроме того, есть возможность загружать произвольные мониторы.