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
+10
View File
@@ -5,6 +5,16 @@
## Ближайшее
- [ ] **Дополнить `<errno.h>` полным списком кодов DSS после 32.**
Исходники DSS 1.71 подтверждают как минимум код 35
`TOO_MANY_FILES_IN_DIR`: `F_FIRST/F_NEXT` возвращают его в `A` при
`CF=1`, а libc правильно переносит число в `errno`, но публичного
символического имени и строки `strerror()` сейчас нет. Сверить весь
список с `Shared_Includes/DSS_Errors.inc`, добавить константы без
перенумерации существующих кодов, расширить таблицу `strerror`,
`docs/libc-reference.md` и тест на преобразование `CF/A -> errno`.
До этого Commander использует локальную константу со значением 35.
- [ ] **Перевести новые EMM/W0-функции libc/libbgi на Z80 asm:**
`bank_load_file()`, `bank_save_file()` и `gfx_w0_page_prepare()`.
Сейчас универсальная C-обвязка (четыре аргумента, IX-frame, проверки
+6 -4
View File
@@ -483,10 +483,12 @@ inline `sprinter_page_w0..w3(page)`; ENV: `getenv putenv sysenv`.
mem_info(&total,&free)` (реализации _bios/_estex; макро-выбор
MEM_MANAGE_MODE_*). HOME-резидентный доступ к чужим страницам:
`bank_load_byte/store_byte/read/write` (своп W3 внутри; *_w1 —
вариант через окно W1). `bank_load_file(page,off,path,max_size)` читает
файл непосредственно в диапазон EMM-страницы, `bank_save_file` записывает
диапазон одним WRITE; обе функции возвращают фактический размер либо -1.
Они восстанавливают W3 до возврата и безопасны для вызова из huge-банка.
вариант через окно W1). `bank_read_page(fd,page,off,size)` и
`bank_write_page(fd,page,off,size)` обмениваются данными с уже открытым
файлом в его текущей позиции. `bank_load_file(page,off,path,max_size)` сам
открывает файл для чтения, а `bank_save_file` создаёт файл и записывает
диапазон одним WRITE. Файловые функции возвращают фактический размер либо
-1, восстанавливают W3 до возврата и безопасны для вызова из huge-банка.
## <sprinter_exit.h>