Реализовать двухпанельный Commander от платформенного PoC до этапов P6-P20: EMM-каталог, сортировку и выбор, операции с файлами и деревьями, транзакционное копирование, метаданные, политику конфликтов и предварительную проверку свободного места. Добавить проектную документацию, HDD/MAME-сценарии и проверенные артефакты. Расширить libc операцией bank_write_page, исправлением режима O_RDONLY и связанными регрессионными проверками.
42 KiB
Sprinter Commander: план разработки
Статус: рабочий план
Связанные документы: требования, архитектура, клавиши и команды, платформенные пробы P1, экранный backend P2, результаты P2.1, результаты P2.2, результаты skeleton P2, результаты файловых панелей P3, результаты копирования P4.1, результаты запуска EXE P4.2, результаты P5, результаты F7/P9, результаты F6/P10, результаты F8/P11, результаты group-copy/P12, результаты group-delete/P13, результаты стандартных цветов/P14, результаты recursive copy/P15, результаты recursive group-copy/P16, результаты recursive group-delete/P17, результаты сохранения метаданных/P18, результаты conflict-policy/P19, UI-ориентир VC
Текущее состояние:
- P0 — завершена первая редакция документации;
- P1 — обязательные платформенные примитивы подтверждены в MAME 0.287; проверка на реальном Sprinter ожидается;
- P2.1 — ядро координатного экранного backend прошло MAME 0.287;
- P2 — многоцветный двухпанельный skeleton прошёл полный MAME-сценарий, включая scroll, диалоги и повторный cleanup; аппаратная проверка ожидается;
- P2.2 — системная многоцветная палитра прошла отдельный MAME-тест; аппаратная проверка ожидается;
- P3 — реальные две панели, EMM-store с границей 640/641, сортировка,
навигация, синтетическая
..и предел DSS 35 прошли диагностические и интеграционные MAME-тесты; аппаратная проверка ожидается. - P4 — безопасное однофайловое копирование через EMM/W3 и запуск
.EXEс полным восстановлением окружения прошли HDD-сценарии MAME; аппаратная проверка ожидается. - P5 — завершён в MAME: пройдены 20 последовательных copy со всеми граничными
размерами, 100 refresh, три lifecycle, ENOSPC, readonly, ошибки
read/rename/ENOENT, отмена перед commit, смена носителя, отсутствующий EXE и
реальный
mdview2. Аппаратный smoke-тест остаётся внешней проверкой. - 0.2 — начат: независимые сортировки name/ext/size/date и reverse, выбор
Insert,*,+/-с масками, F7 mkdir и локальный F6 rename реализованы и прошли target/UI-сценарии MAME; следующим идёт расширение файловой job и рекурсивная обработка каталогов. Групповые F5 и F8 уже обрабатывают файлы и выбранные directory roots; для F8 каталоги удаляются после файлов обратным проходом очереди. F5 сохраняет FAT date/time и файловые атрибуты R/H/S/A. Conflict-policy overwrite/skip/rename и all, readonly re-prompt, backup/rollback выполнены; P5/P18 повторно пройдены. Также досрочно реализован стандартный fallback цветов имён без файла конфигурации.
1. Целевые результаты
Проект делится на три продуктовых рубежа:
- PoC 0.1 — доказана работа архитектуры на Sprinter.
- Рабочая версия 0.4 — Commander пригоден для повседневных файловых операций.
- Полная версия 1.0 — реализован основной набор возможностей VC 4.99 с адаптацией к Sprinter.
Dos Navigator задаёт идеи для расширяемости, но не объём версии 1.0.
Вся линейка до 1.0 включительно использует одну EMM-страницу на панель и жёсткий предел 640 показываемых записей. Его снятие — отдельная архитектурная задача 2.0+.
2. Допущения для оценки
Оценки приведены для одного разработчика, знакомого с текущим Sprinter C-Compiler и имеющего доступ к MAME. Один рабочий день означает день сосредоточенной разработки, а не календарный день.
В оценку входят:
- реализация;
- целевые тесты;
- анализ
.asm/.mapпри платформенной проблеме; - MAME-прогон;
- обновление документации.
В оценку не входят:
- исправление неизвестных дефектов DSS;
- разработка отсутствующего архиватора;
- длительное ожидание доступа к реальному железу;
- перенос стороннего editor/viewer;
- создание графического режима интерфейса.
Ожидаемая точность оценки:
- PoC:
-20% / +40%; - этапы после PoC:
-25% / +60%; - архивы и editor: оцениваются повторно после исследования доступных программ.
3. Сводный план
| Этап | Результат | Оценка |
|---|---|---|
| P0 | Спецификация и архитектура | 2–3 дня |
| P1 | Проверенные платформенные примитивы | 3–5 дней |
| P2 | Запускаемый двухпанельный skeleton | 4–5 дней |
| P3 | Полноценная навигация по двум панелям | 5–7 дней |
| P4 | Копирование одного файла и EXEC | 5–7 дней |
| P5 | Стабилизация PoC | 3–5 дней |
| 0.2 | Безопасное файловое ядро | 5–7 недель |
| 0.4 | Рабочая оболочка и внешние инструменты | 4–6 недель |
| 0.6 | Поиск, дерево и расширенные панели | 5–7 недель |
| 0.8 | Виртуальные источники и архивы | 6–10 недель |
| 1.0 | Надёжность, производительность, релиз | 5–8 недель |
PoC требует ориентировочно 22–32 рабочих дня. Полная версия 1.0 — примерно 29–44 рабочих недели с учётом PoC. После исследования P1 оценки должны быть пересмотрены по фактической скорости разработки.
4. Зависимости этапов
P0 documentation
|
v
P1 platform probes
|
+------> EXEC probe -------------------+
| |
v v
P2 app/screen/input skeleton P4 EXEC
| ^
v |
P3 panel/store/filesystem --------> P4 copy
| |
+------------------+-------------------+
v
P5 PoC hardening
|
v
0.2 safe file core
|
+----------+-----------+
v v
0.4 shell/helpers 0.6 search/tree
+----------+-----------+
v
0.8 virtual sources
|
v
1.0
|
v
2.0+ dynamic panel store
0.6 допускается начинать после стабилизации интерфейса панелей 0.2, но релиз 0.8 требует законченных 0.4 и 0.6.
5. Фаза P0 — проектирование
Цель
Превратить общую идею Commander в набор контрактов, по которым можно писать и проверять код без постоянного возврата к исходникам VC.
Работы
- зафиксировать границы PoC и версии 1.0;
- определить компоновку экрана;
- определить
ScDirEntry,ScPanel, события и команды; - выбрать режим памяти и владение EMM;
- описать безопасное копирование;
- описать запуск дочерней программы;
- определить клавиши PoC и будущий keymap;
- составить acceptance tests;
- зафиксировать лицензионное правило для референсов.
Артефакты
docs/commander-requirements.md;docs/commander-architecture.md;docs/commander-keymap.md;docs/commander-roadmap.md.
Критерий выхода
Нет неизвестного продуктового решения, мешающего начать платформенные тесты. Непроверенные технические детали перечислены как задачи P1, а не скрыты в предположениях архитектуры.
6. Фаза P1 — платформенные пробы
Цель
Получить минимальные воспроизводимые программы для всех примитивов, от которых зависит PoC.
P1.1. Каталоги и пути
Проверить:
getcwd, абсолютные и относительные пути;chdirмежду двумя каталогами и дисками;- шаблон для перечисления всех файлов;
- возвращает ли DSS
.и..; - конец
fnext()и значениеerrno; - имя корня и переход к родителю;
- максимальную практическую длину пути;
- поведение при смене/отсутствии носителя.
Результат: таблица фактического поведения и тестовый .exe.
P1.2. EMM
Проверить:
- выделение блока из трёх страниц;
- получение всех физических страниц;
- чтение/запись начала и конца каждой страницы;
- сохранение W3 вокруг
bank_read/bank_write; - повторное выделение/освобождение;
- понятную ошибку при нехватке памяти.
Результат: подтверждённая схема трёх страниц PoC.
P1.3. Экран
На базе существующего теста winrest проверить app-local wrapper:
- полный экран 80x32;
- вывод с ненулевого offset;
- частичный диапазон строк;
- все используемые атрибуты;
- восстановление после смены видеорежима;
- сохранность IX и W3.
Результат: утверждённый ABI sc_platform_winrest().
P1.4. Клавиатура
Записать фактические ascii, scan, kbd_mod_state для клавиш из
commander-keymap.md. Отдельно проверить быстрое отпускание Ctrl после
Ctrl+PgUp и Ctrl+R.
Результат: тестовая таблица и список подтверждённых комбинаций.
P1.5. EXEC
Проверить:
- формат параметров ESTEX
EXEC; - требуется ли отдельный
WAIT; - возврат к вызывающей программе;
- состояние W1/W2/W3 после возврата;
- состояние видеорежима и CWD;
- коды ошибок отсутствующего и повреждённого
.EXE; - взаимодействие с открытым загрузочным fd multi-bank программы.
Результат: app-local wrapper и отдельный repro.
P1.6. Информация о диске и метаданные
DSKINFO подтверждён в P1. ATTRIB, получение и установка даты/времени не
блокируют базовый PoC и проверяются перед реализацией соответствующих
операций версии 0.2.
Критерий выхода P1
- Все обязательные wrappers имеют воспроизводимый тест.
- Необъяснённых регистровых соглашений нет.
- Известно минимальное число требуемых страниц и fd.
- Архитектура обновлена по результатам проб.
Критерий достигнут для MAME 0.287 / BIOS 3.06. Подтверждены EMM, DSKINFO,
F_FIRST/F_NEXT, полный и частичный WINREST, клавиши PoC, EXEC обоих режимов,
WAIT=0x5A, восстановление W1/W2/W3 и повторный EMM-тест после child.
Фактические значения и скриншоты приведены в
p1-platform-probes.md.
Расширенные отрицательные случаи не блокируют skeleton P2 и перенесены к этапам, где появится использующий их код:
- переходы между дисками, корень, длинный путь и смена носителя — P3/P5;
- исчерпание EMM — P5;
- отсутствующий/повреждённый EXE и multi-bank loader fd — P4/P5;
- ATTRIB и изменение даты/времени — версия 0.2.
7. Фаза P2 — skeleton приложения
Цель
Получить запускаемое приложение с двумя пустыми панелями, экранной моделью и управлением, но без чтения каталога.
Работы
- Создать
Makefile,src/,include/,banks/,tests/. - Добавить
ScAppи init/cleanup. - Настроить сборку
--memory big --safe. - Выделить EMM-блок и получить три страницы.
- Зафиксировать прошедший P2.1 coordinate-screen probe: полный и частичный
WINREST,RDCHAR, оба направления прямоугольногоSCROLL, 1000 операций и сохранение W3. - Реализовать
sc_video_systemнаWINREST/WRCHAR/SCROLL; не использовать BIOS window descriptors и прямой доступ к VRAM. - Реализовать screen buffer и полный/частичный present через
sc_video. - Добавить
sc_glyphs.hс CP866-глифами и test рамок, стрелок и block- элементов. - Реализовать прямоугольный scroll одной панели в обоих направлениях; синхронно сдвигать экранную EMM-модель и проверять границы прямоугольника.
- Нарисовать две панели и нижнюю строку клавиш.
- Реализовать
ScKeyEvent,ScCommandи главный цикл. - Реализовать
Tab, навигационные команды-заглушки и подтверждениеF10. - Добавить единый message dialog.
- Настроить первый интерактивный MAME-тест со скриншотом.
- Подключить прошедший P2.2 модуль темы: сохранить затрагиваемые записи четырёх планов, задать одинаковые normal/FLASH-пары и восстановить их при cleanup. Повторить тот же тест на реальном Sprinter.
Критерий выхода P2
SPRCMD.EXEсобирается вbig.- Экран соответствует схеме 80x32.
Tabменяет активную рамку.- Однострочный scroll не двигает рамку, соседнюю панель и общие строки.
- Все соединения рамок, стрелки и block-элементы отображаются ожидаемыми CP866-глифами.
- Экран остаётся читаемым во времени с подключённым многоцветным профилем.
- Диалог F10 работает в обоих направлениях.
- Выход освобождает EMM; повторные запуски не уменьшают свободную память.
- В
.mapесть зафиксированный запас HOME и банков.
MAME-часть этих критериев достигнута 6 сентября 2026 года. Текущий skeleton
имеет 7 276 байт heap в HOME, пока не использует W1-банки и дважды подряд
восстановил число свободных EMM-страниц после выхода. Отдельный sc_theme
сохранил/установил/восстановил четыре палитровых плана. Подробный сценарий и
кадры: p2-skeleton-results.md.
Аппаратный прогон остаётся внешним gate. Многоцветная тема P2.2 прошла MAME; на реальном Sprinter она проверяется вместе с остальными критериями P2.
8. Фаза P3 — панели и каталог
Цель
Реализовать независимую навигацию по настоящей файловой системе.
Работы
ScDirEntryи build-time проверка размера 24 байта;- EMM store get/put/clear;
- scan настоящего каталога;
- синтетический
..; - сортировка каталогов и файлов;
- panel renderer;
- cursor/top и постраничная навигация;
- вход в каталог, parent, refresh;
- сохранение позиции по имени;
- отдельные пути панелей;
- предупреждение о пределе 640 записей и отдельный красный маркер ограничения DSS после ошибки 35;
- отображение ошибок носителя.
Порядок реализации
- Одна панель, маленький каталог.
- Пустой каталог и корень.
- Сортировка.
- Прокрутка за 27 строк.
- Вторая независимая панель.
- Большой каталог и предел страницы.
- Ошибки и восстановление CWD.
Критерий выхода P3
- Выполнены
REQ-PANEL,REQ-NAVиREQ-FSPoC. - Сто переходов/refresh не меняют EMM free pages.
- Каталог на пределе не повреждает screen page.
- Перемещение курсора не вызывает
ffirst/fnext. - После ошибки обе панели остаются управляемыми.
9. Фаза P4 — копирование и запуск
P4.1. Копирование
Порядок работ:
- Проверка выбранной записи и построение путей.
- Проверка отсутствия конечного имени.
- Генерация temp с
O_EXCL. - Зарезервировать четвёртую EMM-страницу как рабочую область copy job.
- Добавить симметричные операции
bank_read_page()/bank_write_page()для файлового обмена через W3 без полноразмерного буфера в W2. - Копирование логическими блоками 4096 байт; возможное увеличение блока — только после измерения отзывчивости и скорости.
- 32-битный прогресс.
- Отмена через
Esc. - Cleanup на каждой точке ошибки.
- Повторная проверка конечного имени.
- Rename temp и refresh пассивной панели.
- Тесты размеров и побайтовое сравнение.
P4.2. EXEC
Порядок работ:
- Запуск минимального дочернего
.EXE. - Восстановление видеорежима и экрана.
- Восстановление CWD.
- Refresh панелей.
- Обработка ошибки запуска.
- Запуск существующего viewer как интеграционный тест.
Критерий выхода P4
- Выполнены
REQ-COPYиREQ-EXEC. - Большой файл копируется без 16-битного переполнения.
- Cancel/error не оставляют temp.
- Существующий файл не изменяется.
- После дочерней программы Commander продолжает принимать команды.
10. Фаза P5 — стабилизация PoC 0.1
Обязательная матрица
| Область | Сценарии |
|---|---|
| Каталог | пустой, один файл, 27/28, synthetic 640/641, DSS >512 физических записей |
| Навигация | границы, repeat, две разные глубины каталогов |
| Файлы | 0, 1, 4095, 4096, 65535, 65536, более 1 МБ |
| Ошибки | ENOENT, EACCES/readonly, ENOSPC, смена носителя |
| Copy cleanup | cancel в начале/середине/конце, ошибка read/write/rename |
| EXEC | успех, отсутствующий файл, плохой EXE, возврат с другим экраном |
| Ресурсы | 100 refresh, 20 copy, повторные запуск/выход |
| Экран | полный redraw, dirty rows, диалог, возврат из EXE |
Артефакты релиза PoC
SPRCMD.EXE;- Makefile с
floppy,hddиrun; - MAME-тесты и контрольные скриншоты;
- test files с известными размерами/checksum;
- отчёт размеров HOME/банков;
- список известных ограничений;
- инструкция запуска.
Release gate 0.1
Все десять критериев раздела 10 требований выполнены. Наличие известной ошибки, способной повредить чужой файл или потерять EMM-блок, блокирует релиз.
Release gate выполнен в MAME 0.288 / BIOS 3.06 / DSS 1.71.57. Сводка, команды воспроизведения и ограничения зафиксированы в p5-stability-results.md и poc-0.1-release.md. Проверка на реальном Sprinter не подменяется MAME и остаётся обязательным последующим smoke-тестом.
11. Версия 0.2 — безопасное файловое ядро
Цель
Сделать Commander пригодным для реальной работы с файлами без viewer/editor.
Функции
- одна EMM-страница на панель и предел 640 записей сохраняются;
Insert,*,+/-и маски выбора — выполнены;- сортировки name/ext/size/date и reverse — выполнены и проверены в MAME;
- последовательная очередь выбранных файлов F5 — выполнена;
- рекурсивное копирование одного каталога и группы directory roots — выполнено; traversal hardening для больших деревьев остаётся;
- F6 local rename — выполнено; межкаталожный/group move остаётся в работе;
- F7 mkdir — выполнено и проверено в MAME;
- F8 single file/empty-directory delete и recursive group delete выбранных файлов и каталогов — выполнены, включая runtime-cancel; защитная policy остаётся;
- cancel между файлами и блоками;
- overwrite/skip/rename и варианты all — выполнены для файлов, включая backup/rollback и readonly re-prompt; merge существующих каталогов позже;
- проверка свободного места;
- сохранение даты, времени и атрибутов обычных файлов — выполнено и проверено exact FAT-тестом; метаданные каталогов не входят в P18;
- защита readonly при overwrite — выполнена; delete/move policy остаётся;
- подсчёт итогов выбранной группы;
- переключение дисков минимум через диалог.
Внутренние работы
- сохранить одностраничный store и добавить к
ScPanelключ и направление сортировки; - расширить
ScJobочередью и стеком каталогов; - сохранить crash-safe temp/commit модель;
- добавить единый policy object для ошибок;
- определить поведение при частично успешной группе.
Критерий выхода 0.2
- Неделя dogfood без повреждения данных.
- Рекурсивные операции проходят дерево глубиной не менее 16 уровней.
- Рекурсивная job обрабатывает более 640 файлов суммарно в нескольких каталогах, не превращая саму панель в многостраничную.
- Cancel оставляет уже завершённые файлы в определённом документированном состоянии и не оставляет temp.
- Все разрушительные команды требуют подтверждения.
12. Версия 0.4 — рабочая оболочка
Функции
- однострочная командная строка;
- история команд и каталогов;
- интерактивный полноэкранный pseudo-shell по
Ctrl+O; - вставка имени/пути активной и пассивной панели;
- запуск
.EXEс параметрами; - file associations;
- пользовательское меню;
- F3 через отдельный viewer;
- F4 через отдельный editor;
- F9 и базовое меню;
- режимы панелей
Brief/Detailsпо образцу VC; - конфигурационный файл;
- сохранение путей, sort mode и палитры;
- цветовые правила по расширениям; без файла: каталоги белые, EXE жёлтые, остальные файлы светло-серые;
Ctrl+U,Ctrl+O, root;- полноценный drive dialog;
- краткая встроенная помощь.
Протокол helper-программ
До реализации F3/F4 фиксируется небольшой контракт:
- полный путь передаётся аргументом;
- код возврата различает успех, отмену и ошибку;
- helper не обязан восстанавливать экран;
- Commander всегда восстанавливает режим и перечитывает затронутую панель;
- для editor предусматривается признак изменения файла.
Критерий выхода 0.4
Commander можно использовать как основную оболочку DSS для навигации, операций, запуска программ, просмотра и редактирования файлов.
13. Версия 0.6 — возможности VC-класса
Функции
- quick search по текущей панели;
- постоянные фильтры/маски панели;
- quick-view panel;
- info panel;
- размеры каталогов;
- сравнение каталогов;
- поиск файлов по имени;
- поиск текста в файлах, если скорость приемлема;
- виртуальная панель результатов поиска;
- дерево каталогов;
- история посещённых каталогов;
- descriptions (
description.ion/настраиваемое имя), если формат выбран; - изменение атрибутов и времени через UI.
Архитектурный gate
Перед началом поиска должен быть стабилен интерфейс ScSource. Результаты
поиска не должны притворяться настоящим каталогом с помощью специальных
проверок по всему UI: они реализуются как отдельный source kind.
Критерий выхода 0.6
Поиск и дерево работают на объёмах, превышающих near-memory, а возврат из виртуальной панели не теряет прежнее состояние настоящей панели.
14. Версия 0.8 — виртуальные источники и архивы
Обязательные исследования
- какие архиваторы реально существуют для Sprinter;
- можно ли получить листинг без распаковки;
- достаточно ли внешнего процесса и list-файла;
- какие форматы стоит поддерживать первыми;
- сколько памяти требует нативный decoder;
- разрешает ли лицензия включать выбранную реализацию.
Предпочтительная последовательность
- Внешний архиватор по шаблону команды.
- Просмотр архива как read-only
SC_SOURCE_ARCHIVE. - Извлечение выбранных файлов.
- Копирование файла в архив, если внешний инструмент поддерживает.
- Только затем — нативный decoder для одного востребованного формата.
Дополнительные функции
- мышь;
- локализация строк через resource file;
- расширенная помощь;
- bookmarks;
- protocol внешних plugin/helper-программ;
- сохранённые наборы конфигурации.
Критерий выхода 0.8
Архивная и поисковая панели используют тот же panel UI без специальных ветвей в renderer и навигации. Ошибка внешнего архиватора не повреждает исходный архив.
15. Версия 1.0 — релизная стабилизация
К этому этапу уже должны быть закончены все назначенные функции 0.2–0.8. Отдельно проверяются три обязательных релизных контракта:
- командная строка и интерактивный полноэкранный pseudo-shell по
Ctrl+O; - сортировка каждой панели по имени, расширению, размеру и дате, по возрастанию и убыванию;
- подсветка по типу файла с настраиваемыми цветами и заданным поведением при отсутствии конфигурации.
Предел панели 640 записей в 1.0 остаётся штатным документированным ограничением.
Надёжность
- проверка всех cleanup-path;
- защита от двойного освобождения;
- тесты нехватки EMM;
- тесты предела файловых дескрипторов;
- смена и извлечение носителя;
- read-only и disk full;
- повреждённые каталоги/архивы;
- отмена каждой длительной операции;
- безопасное обновление конфигурации через temp/rename.
Производительность
- профилирование чтения больших каталогов;
- профилирование сортировок EMM;
- минимизация переключений W3;
- группировка dirty rows;
- размер блока copy по фактическим измерениям;
- размер HOME и каждого банка;
- время холодного запуска и возврата из helper.
Совместимость
- MAME 0.287 / BIOS 3.06;
- реальный Sprinter Sp2000;
- DSS 1.71.57;
- floppy и HDD;
- минимум две конфигурации доступной EMM;
- CP866 и Rus/Lat состояние клавиатуры.
Документация релиза
- руководство пользователя;
- полный keymap;
- описание конфигурации;
- восстановление после прерванной операции;
- ограничения файловой системы;
- лицензии и благодарности;
- руководство сборки;
- архитектурная памятка для добавления source/job/bank.
Release gate 1.0
- Нет известных дефектов потери или скрытой порчи данных.
- Все обязательные функции требований 1.0 реализованы; перенос любой из них требует нового явного решения о составе релиза.
- Пройдены автоматические MAME-тесты и ручной hardware checklist.
- Размеры HOME/банков имеют документированный запас.
- Чистая сборка воспроизводима штатной командой проекта.
16. Версия 2.0+
Первый архитектурный рубеж после 1.0 — просмотр каталогов, содержащих более 640 записей. Перед реализацией сравниваются два варианта.
Вариант A: потоковые логические страницы. Рекомендуемый первый шаг:
- в EMM по-прежнему находится только текущая страница и не более 640 строк;
- виртуальные
<<< PAGE nи>>> PAGE nзанимают места в этом лимите; - при переходе каталог сканируется заново до требуемой логической позиции;
- каталоги и файлы отбираются двумя проходами, чтобы каталоги оставались первыми во всём потоке;
- сортировка выполняется только внутри текущей страницы и так обозначается в UI;
- изменение каталога между проходами сбрасывает просмотр на первую страницу.
Текущий DSS API F_FIRST/F_NEXT не принимает ключ или направление
сортировки. Незавершённые итераторы двух панелей не сохраняются: каждый
переход заканчивает перебор либо начинает новый.
Платформенная предпосылка варианта A: стабильный DSS 1.71 не умеет перейти
за 512-ю физическую FAT-запись и возвращает код 35. Потоковые страницы
становятся реализуемыми только после перехода на расширенный режим
F_FIRST (B=0x80/0x81) из экспериментальной ветки beta_cdfs либо после
эквивалентного исправления DSS. До этого >>> MORE... является только
информирующим маркером, а не переходом на страницу 2. Детали:
dss-large-directories.md.
Вариант B: динамический EMM-store. Он нужен, только если потребуются глобальная сортировка и произвольный переход между страницами:
- выбор модели 1024, 2048 или динамического предела по результатам замеров;
- выделение и освобождение динамической цепочки EMM-страниц;
- межстраничная сортировка или индекс без полной копии списка в W2;
- определённое поведение при нехватке EMM на части каталога;
- нагрузочные тесты многостраничных списков и отмены во время scan/sort.
Для обоих вариантов виртуальные записи имеют отдельный тип и не участвуют в выделении, файловых операциях и сортировке. Точный номер версии после 1.0 фиксируется отдельным release gate; базовый релиз 1.0 от этого не зависит.
Прочий backlog, не влияющий на релиз 1.0:
- нативные архивные codecs;
- FTP/serial/network source при наличии транспорта;
- disk image source;
- сравнение и синхронизация деревьев;
- макросы;
- очередь нескольких jobs;
- background copy, только если появится безопасная модель многозадачности;
- интеграция viewer/editor в банки Commander;
- дополнительные режимы экрана.
DOS-специфические функции DN — CD player, modem terminal, disk recovery, spreadsheet, games и desktop окон — остаются отдельными приложениями.
17. Правило изменения плана
После каждого release gate обновляются:
- Фактическое время этапа.
- Размер HOME и банков.
- Число обязательных EMM-страниц.
- Открытые платформенные риски.
- Состав следующей версии.
Новая функция не добавляется в текущий этап без одного из решений:
- она устраняет блокирующий риск текущего release gate;
- она дешевле сейчас из-за уже изменяемого интерфейса;
- другая функция того же объёма явно исключается из этапа.
Такой обмен фиксируется в этом документе, чтобы PoC и 1.0 не расширялись неуправляемо.