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

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.