# Sprinter Commander: локальный rename 0.2/P10 Дата: 8 сентября 2026 года. Статус: `PASS` в MAME 0.288 / BIOS 3.06 / DSS 1.71.57 на HDD `D:`. ## Реализованный срез F6 `F6` переименовывает одну текущую обычную запись внутри активного каталога. Поддержаны как файлы, так и каталоги. Диалог начинает с текущего имени и использует общий редактор; новое имя проходит тот же строгий validator одного компонента DOS 8.3, что и F7. Это пока локальный `Rename`, а не полный VC `Move/Rename`: - межкаталожный move в пассивную панель ещё не выполняется; - если в панели есть неоднозначная группа, команда явно отказывается от операции; единственная выбранная текущая запись допустима; - `..` и маркер предела DSS никогда не передаются файловой системе; - совпадающее без учёта ASCII-регистра имя считается no-op. Низкоуровневый `sc_rename_local()` учитывает подтверждённое ограничение DSS 1.71: `RENAME` принимает два basename относительно CWD. Helper сохраняет CWD, временно входит в активный каталог, проверяет отсутствие target через `F_FIRST`, выполняет `rename()` и восстанавливает CWD. Таким образом существующая запись не перезаписывается даже при иной семантике конкретной версии DSS. ## Проверка `RENRT.EXE` вызывает тот же helper и проверяет: - rename файла с побайтно неизменным содержимым; - отказ при существующем target и сохранность обоих файлов; - rename непустого каталога с сохранностью вложенного файла; - CWD после успеха, collision и ошибки входа в каталог. После UI-сценария внешний checker извлекает HDD и подтверждает окончательные имена и содержимое: ```text PASS: file/dir rename, no-overwrite, CWD restore и UI F6. ``` Контрольные состояния UI: - [диалог с исходным именем](../artifacts/mame-p10/rename/dialog-default.png); - [`FINAL.BIN` создан и остался под cursor](../artifacts/mame-p10/rename/renamed-focused.png); - [неизменное имя обработано как no-op](../artifacts/mame-p10/rename/unchanged-name.png); - [существующий target отвергнут](../artifacts/mame-p10/rename/collision.png); - [`..` не переименовывается](../artifacts/mame-p10/rename/virtual-guard.png); - [неоднозначная группа не превращается в rename cursor](../artifacts/mame-p10/rename/group-guard.png); - [штатный возврат в DSS](../artifacts/mame-p10/rename/clean-dss-return.png). ## Размер Конфигурация `--memory big --safe --max-allocs 3000`: | Область | После P9 + UI footer | После P10 | Изменение | |---|---:|---:|---:| | `_CODE` W2 | 9449 | 9463 | +14 | | данные W2 | 3256 | 3256 | 0 | | свободная куча W2 | 2143 | 2129 | -14 | | BANK1 | 6477 | 6477 | 0 | | BANK2 | 8303 | 10008 | +1705 | | `SPRCMD.EXE` | 43026 | 43040 | +14 | В BANK2 остаётся 6376 байт, в BANK1 — 9907 байт. Межбанковый аудит чист. ## Воспроизведение ```sh make hdd-p10-rename ALLOCS=3000 tests/run_mame_hdd.sh build/hdd/p10_rename.chd \ tests/mame_p10_rename.lua artifacts/mame-p10/local 65 tests/check_p10_rename_hdd.sh build/hdd/p10_rename.chd ```