Files
Sprinter-SDCC/applications/Volkov/docs/p2-screen-probe-results.md
T
snark13 8e389c03f8 Volkov: добавить Sprinter Commander
Реализовать двухпанельный Commander от платформенного PoC до этапов P6-P20: EMM-каталог, сортировку и выбор, операции с файлами и деревьями, транзакционное копирование, метаданные, политику конфликтов и предварительную проверку свободного места.

Добавить проектную документацию, HDD/MAME-сценарии и проверенные артефакты. Расширить libc операцией bank_write_page, исправлением режима O_RDONLY и связанными регрессионными проверками.
2026-09-10 10:45:30 +03:00

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.