Files
Sprinter-SDCC/applications/Volkov/docs/p7-selection-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

4.2 KiB

Sprinter Commander: выбор записей 0.2/P7

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

Статус: PASS в MAME 0.288 / BIOS 3.06 / DSS 1.71.57 на HDD D:.

Контракт

  • Insert меняет выбор текущей обычной записи и передвигает cursor вниз;
  • * инвертирует выбор только файлов текущей панели;
  • файлы и каталоги можно выбирать, синтетический .. и виртуальный маркер DSS нельзя;
  • групповые +, - и * игнорируют каталоги и не снимают выбор, ранее поставленный с каталога через Insert;
  • выбранная запись отмечается * слева от имени;
  • footer активной панели показывает <bytes> bytes in <count> selected, а общая строка информации пока сохраняет компактное sel размер/количество;
  • размер каталога в этой статистике равен нулю: рекурсивный подсчёт появится вместе с групповой job;
  • сортировка переносит SC_ENTRY_SELECTED вместе с записью и сохраняет текущий файл под cursor;
  • refresh текущего среза явно очищает выбор; режим сортировки сохраняется;
  • панели имеют независимые EMM-страницы и независимую статистику.

Функции выбора находятся в BANK1 и работают только через sc_store_get/put; указатель на W3 не сохраняется. Для toggle и invert используется один банковый entry point, чтобы не плодить resident thunk’и.

Проверка

Target-проба SELRT.EXE проверяет Insert двух файлов, точную сумму 30, отказы для ../DSS-маркера, две инверсии, выбор каталога, сброс статистики через sc_store_clear() и возврат EMM. Результат извлекается из CHD:

PASS: Insert/invert/masks, virtual guards, totals, refresh и EMM.

UI-сценарий выбирает два каталога и A.BIN, меняет порядок на N-, инвертирует выбор и перечитывает каталог. Контрольные состояния:

Размер

Конфигурация --memory big --safe --max-allocs 3000:

Область После P6 После P7 Изменение
_CODE W2 9125 9434 +309
данные W2 3244 3256 +12
свободная куча W2 2479 2158 -321
BANK1 5137 6033 +896
BANK2 6053 6213 +160
SPRCMD.EXE 42702 43011 +309

Первый вариант имел два банковых entry point и оставлял 2069 байт heap. После объединения и сокращения резидентных сообщений финальная сборка возвращает 2158 байт. Межбанковый аудит чистый.

Воспроизведение

make hdd-p7-select ALLOCS=3000
tests/run_mame_hdd.sh build/hdd/p7_select.chd \
  tests/mame_p7_select.lua artifacts/mame-p7/local 65
tests/check_p7_select_hdd.sh build/hdd/p7_select.chd