Реализовать двухпанельный Commander от платформенного PoC до этапов P6-P20: EMM-каталог, сортировку и выбор, операции с файлами и деревьями, транзакционное копирование, метаданные, политику конфликтов и предварительную проверку свободного места. Добавить проектную документацию, HDD/MAME-сценарии и проверенные артефакты. Расширить libc операцией bank_write_page, исправлением режима O_RDONLY и связанными регрессионными проверками.
3.9 KiB
Sprinter Commander: создание каталога 0.2/P9
Дата: 8 сентября 2026 года.
Статус: PASS в MAME 0.288 / BIOS 3.06 / DSS 1.71.57 на HDD D:.
Контракт
F7открывает общий координатный редактор и принимает один компонент DOS 8.3 длиной до 12 символов;- разрешены база до 8 и расширение до 3 символов, одна необязательная точка,
ASCII-буквы/цифры, допустимая DOS-пунктуация и CP866-байты
80h..FFh; - пустое имя,
./.., разделители пути, пробелы, wildcard, лишние точки и превышение 8.3 отвергаются до вызова DSS; - полный путь строится в уже принадлежащем
ScAppscratch-буфере; mkdir()получает полный путь и не меняет глобальный CWD DSS;- после успеха перечитывается только активная панель;
- существующий каталог и невалидное имя дают управляемое сообщение,
Escзакрывает редактор без файловой операции.
Валидатор вынесен в отдельный банковый модуль sc_name.c. Сам Commander
размещает редактор, оркестрацию F7 и валидатор в BANK2; HOME/W2 содержит
только dispatch и банковые трамплины.
Проверка
Target-проба MKRT.EXE проверяет допустимые и запрещённые имена, построение
полного пути, реальный цикл mkdir/duplicate/rmdir и неизменность CWD.
После MAME дерево извлекается из CHD: внешний checker подтверждает созданный
MKTEST/NEWDIR, неизменный KEEP.TXT и отсутствие пробных каталогов.
PASS: validator, mkdir/error/rmdir/CWD и F7 NEWDIR.
UI-сценарий отдельно подтверждает:
- пустой редактор F7;
- создание и refresh активной панели;
- управляемую ошибку повторного имени;
- отказ для имени длиннее 8.3;
- вход в созданный каталог;
- штатный возврат в DSS.
Размер
Конфигурация --memory big --safe --max-allocs 3000:
| Область | После P8 | После P9 и уточнения group select | Изменение |
|---|---|---|---|
_CODE W2 |
9416 | 9449 | +33 |
| данные W2 | 3256 | 3256 | 0 |
| свободная куча W2 | 2176 | 2143 | -33 |
| BANK1 | 6451 | 6477 | +26 |
| BANK2 | 7268 | 8156 | +888 |
SPRCMD.EXE |
42993 | 43026 | +33 |
Оба банка сохраняют более 8 КБ резерва. Межбанковый аудит чист.
Общий size-check по всему C-Compiler пока ожидаемо отмечает посторонний
новый hello3 и намеренный рост openenv после постоянной проверки
O_RDONLY; эталон размеров из Commander не обновлялся.
Воспроизведение
make hdd-p9-mkdir ALLOCS=3000
tests/run_mame_hdd.sh build/hdd/p9_mkdir.chd \
tests/mame_p9_mkdir.lua artifacts/mame-p9/local 70
tests/check_p9_mkdir_hdd.sh build/hdd/p9_mkdir.chd