Volkov: добавить Sprinter Commander

Реализовать двухпанельный Commander от платформенного PoC до этапов P6-P20: EMM-каталог, сортировку и выбор, операции с файлами и деревьями, транзакционное копирование, метаданные, политику конфликтов и предварительную проверку свободного места.

Добавить проектную документацию, HDD/MAME-сценарии и проверенные артефакты. Расширить libc операцией bank_write_page, исправлением режима O_RDONLY и связанными регрессионными проверками.
This commit is contained in:
2026-09-10 10:45:30 +03:00
parent 05bcd8197e
commit 8e389c03f8
870 changed files with 21310 additions and 25 deletions
@@ -0,0 +1,85 @@
# Sprinter Commander PoC 0.1
Дата: 8 сентября 2026 года.
Статус: техническая архитектура подтверждена в MAME 0.288 / BIOS 3.06 /
DSS 1.71.57. `SPRCMD.EXE` является proof of concept, а не готовым файловым
менеджером для повседневной работы. Аппаратный smoke-тест на Sprinter Sp2000
ещё требуется.
## Что уже работает
- полноэкранный двухпанельный интерфейс 80x32 через безоконные координатные
функции BIOS/ESTEX, без прямой записи в VRAM;
- независимые пути и навигация обеих панелей, синтетический `..`, Home/End,
PgUp/PgDn, Tab и refresh;
- одна EMM-страница на панель, максимум 640 записей без заполнения страницы
целиком, красный `>>> MORE...` при известном ограничении DSS;
- каталоги перед файлами и сортировка по имени;
- безопасное копирование одного файла по F5 через отдельную EMM-страницу W3,
4-КБ блоками и temp/rename commit;
- отмена по Esc между блоками и в отдельной точке перед commit;
- запрет перезаписи уже существующего target;
- запуск `.EXE` по Enter с временным CWD активной панели и восстановлением
экрана, палитры, CWD и панелей;
- штатное освобождение EMM, закрытие fd и восстановление системного экрана
при выходе.
## Сборка и запуск
Из каталога приложения:
```sh
make ALLOCS=3000
make hdd
```
Результат — `build/sprcmd.exe`; образ для быстрого интеграционного запуска —
`build/hdd/sprcmd.chd`. Для MAME штатно используются системный HDD как `C:` и
отдельный тестовый `hard2` как `D:`. Одновременно разрешён только один процесс
MAME Sprinter.
Полный перечень автоматизированных образов и команд находится в
[test-media.md](test-media.md), доказательства P5 — в
[p5-stability-results.md](p5-stability-results.md).
Финальная конфигурация PoC: `--memory big --safe --max-allocs 3000`;
`SPRCMD.EXE` — 42447 байт, `_CODE` W2 — 8870 байт, свободная куча W2 —
2738 байт, BANK1 — 4242 байта, BANK2 — 5973 байта.
## Клавиши PoC
| Клавиша | Действие |
|---|---|
| стрелки, Home/End, PgUp/PgDn | перемещение по активной панели |
| `Tab` | сменить активную панель |
| `Enter` | войти в каталог/`..` или запустить `.EXE` |
| `Ctrl+R` | перечитать активную панель |
| `F5` | скопировать текущий обычный файл в пассивную панель |
| `Esc` | отменить активное копирование |
| `F10` | подтверждение выхода |
Надписи F6/F7/F8 и меню пока являются зарезервированными командами следующих
этапов, а не обещанием выполненной операции.
## Известные ограничения
- в панели показывается не более 640 записей; многостраничный режим относится
только к 2.0+;
- стабильный DSS 1.71 может остановить физическое перечисление около 512-й
FAT-записи с ошибкой 35 — показывается информирующий красный маркер;
- сортировка PoC только по имени; ext/size/date и обратный порядок входят в
следующую функциональную фазу;
- нет выбора нескольких файлов, масок, очереди и рекурсивных операций;
- F6 move/rename, F7 mkdir, F8 delete и overwrite policy ещё не реализованы;
- нет командной строки, `Ctrl+O`, истории, associations и передачи аргументов
внешней программе;
- нет конфигурационного файла цветов, viewer/editor вызываются только как
обычные внешние `.EXE`;
- нет длинных имён: DSS-контракт текущего слоя — 8.3;
- floppy поддерживается лишь как медленный smoke-носитель; основная матрица
выполнялась на HDD `D:`;
- проверка на реальном Sprinter пока не выполнена.
Эти ограничения намеренно отделяют доказанную платформенную основу PoC от
безопасного файлового ядра 0.2 и полного набора функций версии 1.0.