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