Files
Sprinter-SDCC/applications/Volkov/docs/p10-rename-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

78 lines
4.1 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: локальный 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
```