Files
Sprinter-SDCC/applications/Volkov/docs/p8-mask-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

70 lines
3.8 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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
```