# 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 и проверяется побайтно: ```text PASS: file/empty-dir delete, cancel, guards, nonempty и CWD. ``` Контрольные состояния: - [подтверждение удаления файла](../artifacts/mame-p11/delete/file-confirm.png); - [cancel сохранил файл](../artifacts/mame-p11/delete/cancel-preserves.png); - [файл удалён после подтверждения](../artifacts/mame-p11/delete/file-deleted.png); - [пустой каталог удалён](../artifacts/mame-p11/delete/empty-dir-deleted.png); - [непустой каталог сохранён](../artifacts/mame-p11/delete/nonempty-preserved.png); - [`..` заблокирован](../artifacts/mame-p11/delete/virtual-guard.png); - [неоднозначная группа заблокирована](../artifacts/mame-p11/delete/group-guard.png); - [штатный возврат в DSS](../artifacts/mame-p11/delete/clean-dss-return.png). ## Размер Конфигурация `--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 байт. Межбанковый аудит чист. ## Воспроизведение ```sh 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 ```