8e389c03f8
Реализовать двухпанельный Commander от платформенного PoC до этапов P6-P20: EMM-каталог, сортировку и выбор, операции с файлами и деревьями, транзакционное копирование, метаданные, политику конфликтов и предварительную проверку свободного места. Добавить проектную документацию, HDD/MAME-сценарии и проверенные артефакты. Расширить libc операцией bank_write_page, исправлением режима O_RDONLY и связанными регрессионными проверками.
86 lines
5.4 KiB
Markdown
86 lines
5.4 KiB
Markdown
# 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.
|