8e389c03f8
Реализовать двухпанельный Commander от платформенного PoC до этапов P6-P20: EMM-каталог, сортировку и выбор, операции с файлами и деревьями, транзакционное копирование, метаданные, политику конфликтов и предварительную проверку свободного места. Добавить проектную документацию, HDD/MAME-сценарии и проверенные артефакты. Расширить libc операцией bank_write_page, исправлением режима O_RDONLY и связанными регрессионными проверками.
113 lines
8.1 KiB
Markdown
113 lines
8.1 KiB
Markdown
# Sprinter Commander
|
||
|
||
Функциональный аналог классического двухпанельного Commander для Sprinter
|
||
Sp2000. Volkov Commander 4.05/4.99 и Dos Navigator используются как
|
||
поведенческие и архитектурные референсы; проект не является переносом их
|
||
DOS-кода.
|
||
|
||
Текущее состояние: PoC 0.1 (этапы P1–P5) пройден в MAME / BIOS 3.06 /
|
||
DSS 1.71.57; аппаратный smoke-тест остаётся внешним контрольным пунктом.
|
||
Начат этап 0.2: готовы независимые для каждой панели сортировки по имени,
|
||
расширению, размеру и дате/времени в обоих направлениях, выбор записей через
|
||
`Insert`, `*` и маски `+`/`-`, создание каталога по `F7` и локальное
|
||
переименование файла/каталога по `F6` без overwrite, однообъектный F8 и
|
||
групповой рекурсивный F8 для выбранных файлов и каталогов, а также рекурсивный
|
||
F5 для выбранных файлов и каталогов. F5 сохраняет FAT date/time и атрибуты
|
||
`R/H/S/A` обычных файлов и поддерживает conflict-policy
|
||
`overwrite/skip/rename`, включая `overwrite all`/`skip all`, отдельную
|
||
защиту readonly и backup/rollback. Обход использует динамическую EMM-очередь.
|
||
Встроенный профиль имён уже различает белые каталоги, жёлтые `.EXE` и
|
||
светло-серые остальные файлы; загрузка пользовательских цветовых правил
|
||
остаётся задачей 1.0.
|
||
Командер
|
||
сканирует, хранит и сортирует каталоги, показывает явную виртуальную запись
|
||
предела DSS 1.71, безопасно копирует один файл через выделенную EMM-страницу
|
||
W3 и запускает `.EXE` с восстановлением режима, палитры, CWD и обеих панелей.
|
||
|
||
## Сборка
|
||
|
||
Из этого каталога:
|
||
|
||
```sh
|
||
make
|
||
```
|
||
|
||
Результат: `build/sprcmd.exe`, конфигурация
|
||
`--memory big --safe --max-allocs 3000`. Значение `ALLOCS=3000` принято как
|
||
исходное для Commander и всех его проб; при диагностике его можно переопределить
|
||
явно, например `make ALLOCS=4000`.
|
||
|
||
Основные тесты используют быстрый HDD `D:`:
|
||
|
||
```sh
|
||
make hdd # только Commander
|
||
make hdd-stress # большой каталог P3
|
||
make hdd-copy # набор успех/overwrite/cancel/zero для P4.1
|
||
make hdd-exec # запуск child/restore/error для P4.2
|
||
make hdd-p5 # 20 copy, граничные размеры, 100 refresh, lifecycle
|
||
make hdd-p5-enospc # реальный disk-full и cleanup temp
|
||
make hdd-p5-panels # точные границы панели 27/28 записей
|
||
make hdd-p5-copy-faults # детерминированная матрица ошибок copy/EXEC
|
||
make hdd-p5-viewer # запуск реального mdview2 и восстановление Commander
|
||
make hdd-p5-media # снятие/возврат hard2 во время F5
|
||
make hdd-p6-sort # target-матрица и UI-сценарий сортировок 0.2
|
||
make hdd-p7-select # выбор Insert/*, статистика и EMM cleanup
|
||
make hdd-p8-masks # тот же расширенный образ: редактор и маски +/−
|
||
make hdd-p9-mkdir # validator DOS 8.3, mkdir/error/CWD и UI F7
|
||
make hdd-p10-rename # file/dir rename, no-overwrite, CWD и UI F6
|
||
make hdd-p11-delete # confirm/cancel, file/empty-dir, guards и UI F8
|
||
make hdd-p12-group-copy # legacy group fixture; current F5 also copies selected dirs
|
||
make hdd-p13-group-delete # legacy file-only group F8 regression
|
||
make hdd-p14-default-colors # built-in dir/EXE/file colours и restore палитры
|
||
make hdd-p15-tree-copy # recursive current directory, depth=16 и repeat guard
|
||
make hdd-p15-tree-cancel # Esc в 4-МБ файле и cleanup temp/traversal page
|
||
make hdd-p15-tree-self # target-inside-source guard до mutation
|
||
make hdd-p16-group-tree-copy # selected files + multiple directory roots
|
||
make hdd-p17-tree-delete # recursive group F8, depth=12, cancel confirmation
|
||
make hdd-p17-tree-delete-cancel # Esc после начала recursive group F8
|
||
make hdd-p18-metadata # exact FAT date/time + R/H/S/A после F5
|
||
make hdd-p19-overwrite # target backup/commit/rollback matrix
|
||
make hdd-p19-policy # UI overwrite/skip/rename/all/readonly/cancel
|
||
```
|
||
|
||
`make floppy` сохранён для smoke-проверки совместимости с FDD и не запускает
|
||
эмулятор. Подробнее: [политика тестовых носителей](docs/test-media.md).
|
||
|
||
## Документы
|
||
|
||
- [требования PoC](docs/commander-requirements.md);
|
||
- [архитектура](docs/commander-architecture.md);
|
||
- [roadmap](docs/commander-roadmap.md);
|
||
- [клавиши и команды](docs/commander-keymap.md);
|
||
- [результаты платформенных проб P1](docs/p1-platform-probes.md);
|
||
- [экранный backend и границы BIOS API](docs/p2-screen-backend.md);
|
||
- [результаты coordinate-screen probe P2.1](docs/p2-screen-probe-results.md);
|
||
- [результаты системной палитры P2.2](docs/p2-palette-results.md);
|
||
- [результаты двухпанельного skeleton P2](docs/p2-skeleton-results.md);
|
||
- [результаты файловых панелей P3](docs/p3-panel-results.md);
|
||
- [результаты копирования P4.1](docs/p4-copy-results.md);
|
||
- [результаты запуска EXE P4.2](docs/p4-exec-results.md);
|
||
- [результаты стабилизации P5](docs/p5-stability-results.md);
|
||
- [результаты сортировок 0.2/P6](docs/p6-sort-results.md);
|
||
- [результаты выбора записей 0.2/P7](docs/p7-selection-results.md);
|
||
- [результаты выбора по маске 0.2/P8](docs/p8-mask-results.md);
|
||
- [результаты создания каталога 0.2/P9](docs/p9-mkdir-results.md);
|
||
- [результаты локального rename 0.2/P10](docs/p10-rename-results.md);
|
||
- [результаты однообъектного delete 0.2/P11](docs/p11-delete-results.md);
|
||
- [результаты группового F5 0.2/P12](docs/p12-group-copy-results.md);
|
||
- [результаты группового F8 0.2/P13](docs/p13-group-delete-results.md);
|
||
- [результаты стандартных цветов P14](docs/p14-default-colors-results.md);
|
||
- [результаты рекурсивного F5/P15](docs/p15-tree-copy-results.md);
|
||
- [результаты рекурсивного group F5/P16](docs/p16-group-tree-copy-results.md);
|
||
- [результаты рекурсивного group F8/P17](docs/p17-tree-delete-results.md);
|
||
- [результаты сохранения метаданных F5/P18](docs/p18-metadata-results.md);
|
||
- [результаты conflict-policy F5/P19](docs/p19-copy-policy-results.md);
|
||
- [направление развития UI по образцу VC](docs/ui-reference.md);
|
||
- [инструкция и ограничения PoC 0.1](docs/poc-0.1-release.md);
|
||
- [носители интеграционных тестов](docs/test-media.md);
|
||
- [предел больших каталогов DSS и стратегия Commander](docs/dss-large-directories.md).
|
||
|
||
Экран выводится системными координатными функциями ESTEX/BIOS без оконных
|
||
дескрипторов и без прямой адресации VRAM. Системные вызовы палитры разрешены;
|
||
их save/set/readback/restore и многоцветная сцена подтверждены пробой P2.2.
|