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

4.1 KiB
Raw Blame History

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 и подтверждает окончательные имена и содержимое:

PASS: file/dir rename, no-overwrite, CWD restore и UI F6.

Контрольные состояния UI:

Размер

Конфигурация --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 байт. Межбанковый аудит чист.

Воспроизведение

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