Реализовать двухпанельный Commander от платформенного PoC до этапов P6-P20: EMM-каталог, сортировку и выбор, операции с файлами и деревьями, транзакционное копирование, метаданные, политику конфликтов и предварительную проверку свободного места. Добавить проектную документацию, HDD/MAME-сценарии и проверенные артефакты. Расширить libc операцией bank_write_page, исправлением режима O_RDONLY и связанными регрессионными проверками.
3.7 KiB
Sprinter Commander: однообъектный delete 0.2/P11
Дата: 9 сентября 2026 года.
Статус: PASS в MAME 0.288 / BIOS 3.06 / DSS 1.71.57 на HDD D:.
Реализованный срез F8
F8 удаляет одну текущую обычную запись только после модального
подтверждения:
- обычный файл удаляется через
unlink(); - пустой каталог — через
rmdir(); - непустой каталог сохраняется и даёт управляемую ошибку;
N/Escотменяют команду без изменения носителя;..и маркер предела DSS не передаются файловой системе;- в срезе P11 неоднозначная выбранная группа отклонялась; начиная с P13 выбранные файлы удаляются группой, а выбранные каталоги пропускаются. Это исторический контракт P11/P13; начиная с P17 каталоги выбранной группы удаляются рекурсивно.
Рекурсивное и групповое удаление намеренно не имитируются циклом вокруг текущего cursor. Они будут реализованы общей файловой job с определённой политикой частичного успеха и cancel.
Проверка
Target-проба DELRT.EXE проверяет удаление обычного файла и пустого каталога
по полным путям, отказ для непустого каталога, сохранность соседнего файла и
неизменность CWD. UI-сценарий затем проверяет обе стороны подтверждения и
защитные ветки. После выхода дерево извлекается из CHD и проверяется
побайтно:
PASS: file/empty-dir delete, cancel, guards, nonempty и CWD.
Контрольные состояния:
- подтверждение удаления файла;
- cancel сохранил файл;
- файл удалён после подтверждения;
- пустой каталог удалён;
- непустой каталог сохранён;
..заблокирован;- неоднозначная группа заблокирована;
- штатный возврат в DSS.
Размер
Конфигурация --memory big --safe --max-allocs 3000:
| Область | После P10 | После P11 | Изменение |
|---|---|---|---|
_CODE W2 |
9463 | 9496 | +33 |
| данные W2 | 3256 | 3256 | 0 |
| свободная куча W2 | 2129 | 2096 | -33 |
| BANK1 | 6477 | 6477 | 0 |
| BANK2 | 10008 | 10942 | +934 |
SPRCMD.EXE |
43040 | 43073 | +33 |
В BANK2 остаётся 5442 байта, в BANK1 — 9907 байт. Межбанковый аудит чист.
Воспроизведение
make hdd-p11-delete ALLOCS=3000
tests/run_mame_hdd.sh build/hdd/p11_delete.chd \
tests/mame_p11_delete.lua artifacts/mame-p11/local 67
tests/check_p11_delete_hdd.sh build/hdd/p11_delete.chd