Files

Проверки драйвера

Тесты исполняют собранный машинный код в Python-пакете z80. Данные диска синтетические; физические SD-карты и образы эмулятора не открываются и не изменяются.

Из _sd после сборки тела, обновления body_syms.inc и упаковки PackBits по инструкции в основном README драйвера:

sjasmplus.exe zc_sd_driver_body.asm --sym=body_syms_new.txt
# При изменении тела обновить body_syms.inc и .pb до следующей команды.
sjasmplus.exe zc_sd_driver.asm --sym=resident_syms_new.txt
python tests/test_driver.py
python tests/test_resident.py

Нужны Python и пакет z80. Бинарники, символьные таблицы и PackBits должны относиться к одной сборке.

Покрытие (17 групп):

  • все 128 смещений FAT32-записей, зеркалирование FAT и сохранение старших зарезервированных битов;
  • полное сравнение EOC, маскирование верхних четырёх битов, свободные/зарезервированные/повреждённые ссылки и ошибки чтения;
  • чтение и запись фрагментированных цепочек, размеры кластера 1–128 секторов, несколько вызовов LOAD512/SAVE512, переходы страниц памяти с ненулевым начальным смещением;
  • выделение кластеров, расширение файла и каталога, отказ от продления повреждённой цепочки;
  • 32-битная арифметика LBA, границы тома, SDSC/SDHC-адресация;
  • MBR с разделом в каждом из четырёх слотов, BPB без MBR, геометрия FAT32 и базовые проверки BPB;
  • MKDIR/MKFILE, короткие и длинные имена, коллизии коротких имён, поиск без учёта регистра и отказ от создания дубликата;
  • FSInfo, упаковка даты/времени RTC в BCD и двоичном режиме;
  • значения регистров DMA и последовательности команд инициализации SDHC, SDv2 SDSC, legacy SD и MMC, включая повторную инициализацию и исчерпание попыток при постоянно занятой карте;
  • распаковка тела Z80-кодом, FENTRY, переименование, удаление, освобождение цепочки и сохранение IX в обёртке MKFILE.

Границы проверки: секторный SPI/DMA-обмен подменяется блоковым устройством в памяти. В отдельных тестах инициализации, DMA-регистров и RTC используются модели портов. Электрические характеристики, аппаратный тайминг, прерывания ZiFi и поведение при отключении питания этими тестами не проверяются. Тесты не доказывают транзакционность операций FAT или защиту от всех вариантов повреждённого тома.