Files
Sprinter-SDCC/applications/Volkov/docs/p16-group-tree-copy-results.md
T
snark13 8e389c03f8 Volkov: добавить Sprinter Commander
Реализовать двухпанельный Commander от платформенного PoC до этапов P6-P20: EMM-каталог, сортировку и выбор, операции с файлами и деревьями, транзакционное копирование, метаданные, политику конфликтов и предварительную проверку свободного места.

Добавить проектную документацию, HDD/MAME-сценарии и проверенные артефакты. Расширить libc операцией bank_write_page, исправлением режима O_RDONLY и связанными регрессионными проверками.
2026-09-10 10:45:30 +03:00

3.2 KiB
Raw Blame History

Sprinter Commander: рекурсивный group F5 0.2/P16

Дата: 9 сентября 2026 года.

Статус: PASS в MAME 0.288 / BIOS 3.06 / DSS 1.71.57 на HDD D:.

Реализованный контракт

При групповом F5 Commander сначала последовательно копирует выбранные файлы, а затем добавляет все выбранные каталоги текущего уровня как независимые roots в одну traversal queue P15. Для каждого root действует тот же контракт:

  • breadth-first обход и пустые каталоги;
  • crash-safe temp/commit для файлов;
  • cancel между файлами, каталогами и 4-КБ блоками;
  • no-overwrite и self-target guard;
  • один динамический EMM-блок очереди на всю группу;
  • один refresh passive panel после операции.

Если top-level файл даёт ошибку или cancel до запуска обхода, directory roots остаются unprocessed. При ошибке одного tree root операция останавливается; уже committed-файлы и созданные каталоги сохраняются.

Это не меняет семантику +, -, *: групповые команды выделения по-прежнему игнорируют каталоги. Каталог может попасть в F5-группу только после отдельного Insert.

Проверка

В active panel вручную выбраны ADIR, BDIR и ROOT.BIN; KEEP.TXT оставлен невыбранным. Два root-каталога содержат по файлу, а ADIR — ещё и пустой вложенный каталог. UI сообщил:

Tree copied: 3 files; 3 dirs.

Внешний checker сравнил target с точным ожидаемым множеством и подтвердил отсутствие KEEP.TXT и temp:

PASS: selected file and two directory roots copied exactly.

Контрольные состояния:

Компоновка

_CODE W2, DATA, BANK1 и размер EXE не изменились относительно P15. BANK2 вырос с 14547 до 14918 байт (+371); остаётся 1466 байт. Итоговая сборка:

_CODE 9503; DATA 3524; heap 1821
BANK1 9687/16384; BANK2 14918/16384
SPRCMD.EXE 43080

Межбанковый аудит чист.

Воспроизведение

make hdd-p16-group-tree-copy ALLOCS=3000
tests/run_mame_hdd.sh build/hdd/p16_group_tree_copy.chd \
  tests/mame_p16_group_tree_copy.lua artifacts/mame-p16/local 60
tests/check_p16_group_tree_copy_hdd.sh build/hdd/p16_group_tree_copy.chd