Реализовать двухпанельный Commander от платформенного PoC до этапов P6-P20: EMM-каталог, сортировку и выбор, операции с файлами и деревьями, транзакционное копирование, метаданные, политику конфликтов и предварительную проверку свободного места. Добавить проектную документацию, HDD/MAME-сценарии и проверенные артефакты. Расширить libc операцией bank_write_page, исправлением режима O_RDONLY и связанными регрессионными проверками.
5.3 KiB
Sprinter Commander: результаты экранной пробы P2.1
Дата: 6 сентября 2026 года.
Статус: PASS в MAME; проверка на реальном Sprinter ожидается.
Окружение: MAME 0.287 (b0c4527c), машина sprinter, BIOS v3.06.
Исходники пробы находятся в tests/p2_screen/, сохранённые кадры — в
artifacts/mame-p2/.
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 |
Частичный WINREST 20x2 из offset 0x2000 |
PASS | partial-offset.png |
| Scroll внутренности левой панели вверх | PASS | left-scroll-up.png |
| Scroll внутренности правой панели вниз | PASS | right-scroll-down.png |
1000 scroll, синхронная EMM-модель, итоговая сверка RDCHAR и W3 |
PASS | stress-final.png |
| Финальная сцена в трёх временных точках | PASS, файлы идентичны | phase A, B, C |
SHA-256 каждого из трёх финальных кадров:
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.
4. Что ещё не проверено
- повторная инициализация backend после child, сменившего видеорежим;
- измерение времени полного present, одной строки и системного scroll;
- тот же сценарий на реальном Sprinter;
- интеграционный прогон многоцветного
SPRCMD.EXEпосле подключения темы.
Эти пункты не блокируют реализацию экранной модели и skeleton P2. Аппаратный прогон остаётся gate перед признанием backend полностью платформенно подтверждённым. Многоцветная тема уже прошла отдельный MAME-gate P2.2.