Volkov: добавить Sprinter Commander

Реализовать двухпанельный Commander от платформенного PoC до этапов P6-P20: EMM-каталог, сортировку и выбор, операции с файлами и деревьями, транзакционное копирование, метаданные, политику конфликтов и предварительную проверку свободного места.

Добавить проектную документацию, HDD/MAME-сценарии и проверенные артефакты. Расширить libc операцией bank_write_page, исправлением режима O_RDONLY и связанными регрессионными проверками.
This commit is contained in:
2026-09-10 10:45:30 +03:00
parent 05bcd8197e
commit 8e389c03f8
870 changed files with 21310 additions and 25 deletions
@@ -0,0 +1,81 @@
# 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 требуется проверить те же цвета и возврат исходной палитры после
выхода.