# 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; - полный путь строится в уже принадлежащем `ScApp` scratch-буфере; - `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` и отсутствие пробных каталогов. ```text PASS: validator, mkdir/error/rmdir/CWD и F7 NEWDIR. ``` UI-сценарий отдельно подтверждает: - [пустой редактор F7](../artifacts/mame-p9/mkdir/dialog-empty.png); - [создание и refresh активной панели](../artifacts/mame-p9/mkdir/created.png); - [управляемую ошибку повторного имени](../artifacts/mame-p9/mkdir/duplicate-error.png); - [отказ для имени длиннее 8.3](../artifacts/mame-p9/mkdir/invalid-name.png); - [вход в созданный каталог](../artifacts/mame-p9/mkdir/entered-newdir.png); - [штатный возврат в DSS](../artifacts/mame-p9/mkdir/clean-dss-return.png). ## Размер Конфигурация `--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 не обновлялся. ## Воспроизведение ```sh 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 ```