# 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, состояние не меняется. - [диалог с `*.*`](../artifacts/mame-p8/masks/default-dialog.png); - [поле после редактирования в `*.bin`](../artifacts/mame-p8/masks/edited-bin-mask.png); - [три BIN выбраны](../artifacts/mame-p8/masks/bin-selected.png); - [`b.bin` снят](../artifacts/mame-p8/masks/b-unselected.png); - [Esc сохранил выбор](../artifacts/mame-p8/masks/cancel-preserves.png); - [штатный cleanup](../artifacts/mame-p8/masks/clean-dss-return.png). ## Размер | Область | После 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 КБ резерва; межбанковый аудит чистый. ## Воспроизведение ```sh 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 ```