Реализовать двухпанельный Commander от платформенного PoC до этапов P6-P20: EMM-каталог, сортировку и выбор, операции с файлами и деревьями, транзакционное копирование, метаданные, политику конфликтов и предварительную проверку свободного места. Добавить проектную документацию, HDD/MAME-сценарии и проверенные артефакты. Расширить libc операцией bank_write_page, исправлением режима O_RDONLY и связанными регрессионными проверками.
3.8 KiB
Sprinter Commander: выбор по маске 0.2/P8
Дата: 8 сентября 2026 года.
Статус: PASS в MAME 0.288 / BIOS 3.06 / DSS 1.71.57 на HDD D:.
Реализация
Обычный + открывает Select by mask, обычный - — Unselect by mask.
Начальное значение *.*; Enter применяет действие, Esc отменяет его без
изменения панели. Доступны wildcard * и ?, сравнение ASCII-букв не зависит
от регистра. Как в DOS, *.* означает все имена файлов, включая имена без точки.
Все групповые операции +, -, * игнорируют каталоги; синтетический .. и виртуальный
маркер DSS также не участвуют. Выбор, поставленный на каталог отдельным Insert, не меняется.
Модальный редактор не использует консольные окна или прямой VRAM. Диалог и поле находятся в общей EMM-модели Commander и выводятся координатными функциями. Реализованы insertion в позиции cursor, Backspace, Delete, Left/Right, Home/End, Enter и Esc. Для текущих DSS 8.3-масок ввод ограничен 12 символами; тот же editor будет переиспользован командами F7/F6 и командной строкой.
Существующий sc_dialog.c вместе с новым editor перенесён из HOME в BANK2.
Mask matcher находится в BANK1 рядом с выбором; приложение передаёт ему
резидентный scratch-буфер copy job, пока файловая job не активна.
Проверка
Target-часть проверяет:
*.binв нижнем регистре против имён верхнего регистра;?.b?n;*.*для файла без точки и неизменность каталога;- последовательное set/clear с точными count/size;
- неизменность
..и DSS-маркера.
UI-сценарий редактирует *.* в *.bin, получает три выбранных файла и
sel 60/003, затем снимает b.bin, получая sel 40/002. Следующий диалог
закрывается Esc, состояние не меняется.
- диалог с
*.*; - поле после редактирования в
*.bin; - три BIN выбраны;
b.binснят;- Esc сохранил выбор;
- штатный cleanup.
Размер
| Область | После P7 | После P8 | Изменение |
|---|---|---|---|
_CODE W2 |
9434 | 9416 | -18 |
| данные W2 | 3256 | 3256 | 0 |
| свободная куча W2 | 2158 | 2176 | +18 |
| BANK1 | 6033 | 6451 | +418 |
| BANK2 | 6213 | 7268 | +1055 |
SPRCMD.EXE |
43011 | 42993 | -18 |
Несмотря на новую функцию, HOME стал меньше благодаря переносу диалогов. Оба банка имеют более 9 КБ резерва; межбанковый аудит чистый.
Воспроизведение
make hdd-p8-masks ALLOCS=3000
tests/run_mame_hdd.sh build/hdd/p7_select.chd \
tests/mame_p7_select.lua artifacts/mame-p8/local 80
tests/check_p7_select_hdd.sh build/hdd/p7_select.chd