Volkov: добавить Sprinter Commander
Реализовать двухпанельный Commander от платформенного PoC до этапов P6-P20: EMM-каталог, сортировку и выбор, операции с файлами и деревьями, транзакционное копирование, метаданные, политику конфликтов и предварительную проверку свободного места. Добавить проектную документацию, HDD/MAME-сценарии и проверенные артефакты. Расширить libc операцией bank_write_page, исправлением режима O_RDONLY и связанными регрессионными проверками.
This commit is contained in:
@@ -1,9 +1,10 @@
|
||||
/*
|
||||
* fcntl.h — open / creat for Sprinter ESTEX.
|
||||
*
|
||||
* POSIX-style flag bits. The low two bits select access mode (matches
|
||||
* POSIX numbering — RDONLY=0, WRONLY=1, RDWR=2 — and is translated to
|
||||
* the ESTEX OPEN $11 convention inside open()).
|
||||
* Флаги унаследованы от исторического Sprinter C API: младшие биты задают
|
||||
* RDONLY=2, WRONLY=1, RDWR=3 (это НЕ POSIX-нумерация). open() переводит их
|
||||
* в соглашение ESTEX OPEN $11; нулевой access mode принимается как RDONLY
|
||||
* для совместимости с кодом, ожидающим POSIX O_RDONLY=0.
|
||||
*
|
||||
* The other flags map onto ESTEX calls like this:
|
||||
* O_CREAT + O_EXCL → $0B (CREATE_NEW, fails if exists)
|
||||
|
||||
@@ -117,11 +117,12 @@ void bank_write(uint8_t phys_page, uint16_t off, const void *src, uint16_t n)
|
||||
int bank_load_file(uint8_t phys_page, uint16_t off, const char *path,
|
||||
uint16_t max_size);
|
||||
|
||||
/* То же, но из УЖЕ ОТКРЫТОГО файла и с текущей позиции (её ставит вызывающий
|
||||
* через lseek). Нужна тем, кто читает из одного файла много кусков: `open`
|
||||
* стоит дороже самого чтения (замер: 51,4 мс против 32,6 мс на 16 КБ), и
|
||||
* держать fd открытым — единственный способ эту цену не платить. */
|
||||
/* Обмен с УЖЕ ОТКРЫТЫМ файлом и его текущей позицией (её ставит вызывающий
|
||||
* через lseek). `open` стоит дороже самого чтения (замер: 51,4 мс против
|
||||
* 32,6 мс на 16 КБ), а явное владение fd позволяет построить потоковый
|
||||
* copy-job с собственной политикой create/temp/rename. */
|
||||
int bank_read_page(int fd, uint8_t phys_page, uint16_t off, uint16_t size);
|
||||
int bank_write_page(int fd, uint8_t phys_page, uint16_t off, uint16_t size);
|
||||
int bank_save_file(uint8_t phys_page, uint16_t off, const char *path,
|
||||
uint16_t size);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user