Volkov: добавить Sprinter Commander
Реализовать двухпанельный Commander от платформенного PoC до этапов P6-P20: EMM-каталог, сортировку и выбор, операции с файлами и деревьями, транзакционное копирование, метаданные, политику конфликтов и предварительную проверку свободного места. Добавить проектную документацию, HDD/MAME-сценарии и проверенные артефакты. Расширить libc операцией bank_write_page, исправлением режима O_RDONLY и связанными регрессионными проверками.
This commit is contained in:
@@ -0,0 +1,81 @@
|
||||
# Sprinter Commander: результаты экранной пробы P2.1
|
||||
|
||||
Дата: 6 сентября 2026 года.
|
||||
|
||||
Статус: `PASS` в MAME; проверка на реальном Sprinter ожидается.
|
||||
|
||||
Окружение: MAME 0.287 (`b0c4527c`), машина `sprinter`, BIOS `v3.06`.
|
||||
Исходники пробы находятся в `tests/p2_screen/`, сохранённые кадры — в
|
||||
[`artifacts/mame-p2/`](../artifacts/mame-p2/README.md).
|
||||
|
||||
## 1. Проверяемая граница
|
||||
|
||||
`p2screen.exe` проверяет системный координатный backend, а не интерфейс
|
||||
готового Commander:
|
||||
|
||||
- экранная модель 80x32 хранится в EMM как пары `(char, attr)`;
|
||||
- прямоугольники выводятся ESTEX `WINREST`;
|
||||
- фактические клетки читаются ESTEX `RDCHAR`;
|
||||
- области панелей сдвигаются ESTEX `SCROLL`;
|
||||
- BIOS window descriptors не открываются;
|
||||
- к `RGADR`, `RGMOD` и VRAM-банкам программа не обращается;
|
||||
- палитра в принятом варианте теста не читается и не изменяется.
|
||||
|
||||
Сборка: `--memory big --safe`.
|
||||
|
||||
| Область | Значение |
|
||||
|---|---:|
|
||||
| `_CODE` | 4 458 байт (`0x8100..0x926A`) |
|
||||
| данные | 581 байт (конец `0x94AF`) |
|
||||
| EXE | 5 004 байта |
|
||||
| heap после статики | 9 809 байт |
|
||||
| стек | 1 279 байт |
|
||||
|
||||
## 2. Runtime-результаты
|
||||
|
||||
| Этап | Результат | Артефакт |
|
||||
|---|---|---|
|
||||
| Полный `WINREST` 80x32 и полная сверка `RDCHAR` | PASS | [full.png](../artifacts/mame-p2/screen/full.png) |
|
||||
| Частичный `WINREST` 20x2 из offset `0x2000` | PASS | [partial-offset.png](../artifacts/mame-p2/screen/partial-offset.png) |
|
||||
| Scroll внутренности левой панели вверх | PASS | [left-scroll-up.png](../artifacts/mame-p2/screen/left-scroll-up.png) |
|
||||
| Scroll внутренности правой панели вниз | PASS | [right-scroll-down.png](../artifacts/mame-p2/screen/right-scroll-down.png) |
|
||||
| 1000 scroll, синхронная EMM-модель, итоговая сверка `RDCHAR` и W3 | PASS | [stress-final.png](../artifacts/mame-p2/screen/stress-final.png) |
|
||||
| Финальная сцена в трёх временных точках | PASS, файлы идентичны | [phase A](../artifacts/mame-p2/screen/stable-phase-a.png), [B](../artifacts/mame-p2/screen/stable-phase-b.png), [C](../artifacts/mame-p2/screen/stable-phase-c.png) |
|
||||
|
||||
SHA-256 каждого из трёх финальных кадров:
|
||||
|
||||
```text
|
||||
dabeb114f8a7574462aeeb0731363608c1afa940da66d518f734335b36fe8f3b
|
||||
```
|
||||
|
||||
Полная сверка после каждого функционального этапа сравнивала все 2560 клеток
|
||||
экрана с EMM-моделью, включая рамки, пассивную панель и общие строки. Поэтому
|
||||
`PASS` scroll означает не только появление новой строки, но и отсутствие
|
||||
побочного сдвига соседней области.
|
||||
|
||||
## 3. Граница палитры и исправление диагностики
|
||||
|
||||
P2.1 намеренно принят с одним системным атрибутом `0x30` и не вызывает
|
||||
палитровые функции: так координатный backend проверяется отдельно от темы.
|
||||
|
||||
Первичная визуальная интерпретация диагностических PNG ошибочно сообщала, что
|
||||
в одной временной фазе часть цветных символов исчезает. Проверка самих файлов
|
||||
показала обратное: три `flash-before-*.png` имеют одинаковые SHA-256 и
|
||||
одинаковые декодированные RGB-пиксели. Два именованных цветных кадра P1 также
|
||||
пиксельно идентичны.
|
||||
|
||||
Отдельная проба P2.2 затем подтвердила save/set/readback/restore всех четырёх
|
||||
планов и стабильную сцену с шестью атрибутами. Подробности и исправление
|
||||
ошибочной гипотезы приведены в
|
||||
[результатах P2.2](p2-palette-results.md).
|
||||
|
||||
## 4. Что ещё не проверено
|
||||
|
||||
- повторная инициализация backend после child, сменившего видеорежим;
|
||||
- измерение времени полного present, одной строки и системного scroll;
|
||||
- тот же сценарий на реальном Sprinter;
|
||||
- интеграционный прогон многоцветного `SPRCMD.EXE` после подключения темы.
|
||||
|
||||
Эти пункты не блокируют реализацию экранной модели и skeleton P2. Аппаратный
|
||||
прогон остаётся gate перед признанием backend полностью платформенно
|
||||
подтверждённым. Многоцветная тема уже прошла отдельный MAME-gate P2.2.
|
||||
Reference in New Issue
Block a user