8e389c03f8
Реализовать двухпанельный Commander от платформенного PoC до этапов P6-P20: EMM-каталог, сортировку и выбор, операции с файлами и деревьями, транзакционное копирование, метаданные, политику конфликтов и предварительную проверку свободного места. Добавить проектную документацию, HDD/MAME-сценарии и проверенные артефакты. Расширить libc операцией bank_write_page, исправлением режима O_RDONLY и связанными регрессионными проверками.
82 lines
4.5 KiB
Markdown
82 lines
4.5 KiB
Markdown
# Sprinter Commander: результаты палитровой пробы P2.2
|
||
|
||
Дата: 6 сентября 2026 года.
|
||
|
||
Статус: `PASS` в MAME; проверка на реальном Sprinter ожидается.
|
||
|
||
Окружение: MAME 0.287 (`b0c4527c`), машина `sprinter`, BIOS `v3.06`.
|
||
Исходник пробы находится в `tests/p2_palette/p2palette.c`, кадры — в
|
||
[`artifacts/mame-p2/palette/`](../artifacts/mame-p2/palette/).
|
||
|
||
## 1. Проверенный контракт
|
||
|
||
Проба использует только публичные системные функции
|
||
`text_pal_get_color()`/`text_pal_set_color()`:
|
||
|
||
- сохраняет шесть применяемых атрибутов во всех четырёх текстовых планах;
|
||
- задаёт normal-paper и flash-paper одинаковыми;
|
||
- задаёт normal-ink и flash-ink одинаковыми;
|
||
- читает обратно все 24 записи и сравнивает каждый RGB-компонент;
|
||
- показывает одновременно шесть контрастных цветовых сочетаний;
|
||
- перед выходом восстанавливает каждую сохранённую запись.
|
||
|
||
Проверенные сочетания: white/blue, yellow/green, white/red,
|
||
white/magenta, black/lightgray и black/cyan. Runtime-результат:
|
||
|
||
```text
|
||
Readback of 6 attrs x 4 planes: PASS (0 mismatches)
|
||
```
|
||
|
||
## 2. Стабильность изображения
|
||
|
||
Пять кадров одной неизменной сцены сняты в разных моментах. После
|
||
декодирования PNG область экрана Sprinter во всех кадрах пиксельно идентична.
|
||
Единственное различие между первым и остальными кадрами — 42 пикселя в
|
||
прямоугольнике `x=0..13, y=42..44`: это внешний индикатор обращения к
|
||
`Drive A` в layout MAME, а не видеовыход Sprinter. Его состояние в экранных
|
||
тестах не учитывается.
|
||
|
||
Файлы `phase-b.png`–`phase-e.png` идентичны целиком. Их SHA-256:
|
||
|
||
```text
|
||
5eda33a6289dcd0afbb10573b70bcd701c428d6ed8f2aaae55d16c8d32dbe9cb
|
||
```
|
||
|
||
Артефакты:
|
||
|
||
- [phase-a.png](../artifacts/mame-p2/palette/phase-a.png) — горит индикатор
|
||
Drive A;
|
||
- [phase-b.png](../artifacts/mame-p2/palette/phase-b.png),
|
||
[phase-c.png](../artifacts/mame-p2/palette/phase-c.png),
|
||
[phase-d.png](../artifacts/mame-p2/palette/phase-d.png),
|
||
[phase-e.png](../artifacts/mame-p2/palette/phase-e.png) — стабильная сцена;
|
||
- [restored-dos.png](../artifacts/mame-p2/palette/restored-dos.png) — возврат
|
||
в DSS после восстановления палитры.
|
||
|
||
## 3. Исправление прежней интерпретации
|
||
|
||
Ранее встроенный предпросмотр двух PNG ошибочно показал исчезновение части
|
||
цветных строк. Проверка исходных файлов опровергла это:
|
||
|
||
- `partial-flash-phase.png` и `partial-contrast-stable.png` из P1 имеют
|
||
идентичные декодированные RGB-пиксели;
|
||
- все три исторически названных `flash-before-*.png` из P2.1 также полностью
|
||
идентичны;
|
||
- текущая P2.2-сцена различается только внешним LED дисковода MAME.
|
||
|
||
Следовательно, гипотеза о нестабильных FLASH-планах была артефактом
|
||
предпросмотра. Она не является ограничением BIOS, libc, MAME или Commander.
|
||
|
||
## 4. Принятое решение
|
||
|
||
Многоцветная тема разрешена для Commander. Модуль `sc_theme`:
|
||
|
||
- владеет точными RGB смысловых атрибутов;
|
||
- сохраняет только затрагиваемые записи всех четырёх планов;
|
||
- устанавливает одинаковые normal/FLASH-пары;
|
||
- восстанавливает исходные записи при любом штатном cleanup.
|
||
|
||
До аппаратного прогона `PASS` относится к MAME 0.287 / BIOS 3.06. На реальном
|
||
Sprinter требуется проверить те же цвета и возврат исходной палитры после
|
||
выхода.
|