Files
Sprinter-SDCC/applications/Volkov/docs/p2-skeleton-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

7.1 KiB
Raw Blame History

Sprinter Commander: результаты двухпанельного skeleton P2

Дата: 6 сентября 2026 года.

Статус: многоцветный skeleton PASS в MAME; файловая система и аппаратная проверка ожидаются.

Связанные документы: архитектура, roadmap, экранный backend, результаты P2.1

1. Реализованная граница

build/sprcmd.exe — первая запускаемая форма Commander, а не очередная платформенная проба. В ней уже разделены:

  • ScApp, инициализация, главный цикл и идемпотентное состояние cleanup;
  • три EMM-страницы: левая панель, правая панель и screen model;
  • sc_screen — единственный владелец модели 80x32 (char, attr);
  • sc_video_systemWINREST и прямоугольный SCROLL без BIOS-окон;
  • renderer двух панелей, status и строки функциональных клавиш;
  • нормализованные ScKeyEvent и ScCommand;
  • навигация по синтетическим P2-записям, включая системный scroll;
  • единая модальная поверхность для сообщений и подтверждения выхода.

Синтетические строки нужны только для проверки cursor/top и scroll. Они не являются подменой каталога: ffirst/fnext skeleton не вызывает, настоящий источник файлов добавляется в P3.

2. Сборка

Команда: make, конфигурация --memory big --safe.

Область Значение
_CODE 7 129 байт (0x8100..0x9CD9)
данные 443 байта (конец 0x9E94)
EXE 7 675 байт
heap после статики 7 276 байт
стек 1 279 байт

Банков кода skeleton пока не требует. Контракты уже рассчитаны на big, а холодные функции будут переноситься в W1 по мере появления P3/P4-кода.

3. MAME-сценарий

Окружение: MAME 0.287 (b0c4527c), машина sprinter, BIOS v3.06. Сценарий воспроизводится файлом tests/mame_p2_skeleton.lua.

Действие Наблюдение Результат
Первый экран две многоцветные панели 80x32, левая [ACTIVE], cursor/top 0/0 PASS
Tab [ACTIVE] и > перешли на правую панель PASS
PgDn, Down правая панель показывает строки 002028, cursor/top 28/2; сосед и рамки неподвижны PASS
F10 красный диалог подтверждения поверх модели PASS
N обе панели и тема полностью восстановлены из EMM PASS
F1, Esc общий message dialog открылся и восстановил экран PASS, после закрытия
повторный F10, Enter палитра восстановлена, штатный выход в DSS PASS
второй запуск после выхода приложение снова инициализировало EMM и тему PASS
второй cleanup возврат в DSS без сообщения об утечке EMM PASS

4. Проверка ресурсов

В начале sc_app_init() сохраняет mem_info.total/free, затем выделяет один блок из трёх страниц. sc_app_cleanup() освобождает блок, повторяет mem_info() и возвращает ошибку, если оба значения не восстановились. При ошибке основной модуль печатает отдельное сообщение и возвращает код 4.

В MAME этого сообщения не было ни после первого, ни после второго процесса. Второй процесс успешно выделил тот же объём и полностью отрисовался. Таким образом, проверка включает и внутреннее сравнение счётчиков, и повторный запуск с чистого состояния.

5. Экран и палитра

Skeleton не открывает BIOS window descriptors и не обращается к VRAM напрямую. Панели и диалоги — прямоугольники в собственной EMM-модели.

Системные BIOS/ESTEX-вызовы палитры не запрещены. Первый зафиксированный skeleton намеренно отображал все semantic attributes системным 0x30, чтобы изолировать проверку приложения. После успешной отдельной пробы P2.2 добавлен sc_theme: разные смысловые атрибуты, save/set всех четырёх планов и restore при cleanup. Renderer и формат экранной модели при этом не изменились.

Интеграционный MAME-сценарий прошёл с белыми/жёлтыми/светло-голубыми элементами на синем фоне, чёрным на cyan/lightgray и белыми красными диалогами. Второй запуск подтвердил повторную инициализацию темы после её восстановления первым процессом.

6. Следующие работы

  • повторить палитровую пробу P2.2 на реальном Sprinter;
  • повторная инициализация sc_video после child, сменившего видеорежим;
  • измерение full/row/scroll present;
  • аппаратный прогон P2.1 и skeleton;
  • P3: заменить синтетические строки настоящими независимыми каталогами.