Volkov: добавить Sprinter Commander
Реализовать двухпанельный Commander от платформенного PoC до этапов P6-P20: EMM-каталог, сортировку и выбор, операции с файлами и деревьями, транзакционное копирование, метаданные, политику конфликтов и предварительную проверку свободного места. Добавить проектную документацию, HDD/MAME-сценарии и проверенные артефакты. Расширить libc операцией bank_write_page, исправлением режима O_RDONLY и связанными регрессионными проверками.
This commit is contained in:
@@ -215,6 +215,7 @@ static uint16_t g_last_prog; /* n_lines на последнем
|
||||
/* Кодировки (ENC_*) и g_encoding — в mdview2.h / mdview2_enc.c. */
|
||||
const uint8_t *g_remap; /* extern: активная таблица ремапа (CP1251/KOI8), 0 = без ремапа (CP866)*/
|
||||
uint8_t g_scratch_phys; /* extern: EMM-страница под ремап-буфер строки для win_rest */
|
||||
static uint8_t g_scratch_blk; /* handle scratch-блока: нужен для освобождения при exit */
|
||||
|
||||
/* UTF-8 набор (utf_blk/utf_pages/utf_phys/utf_size/utf_avail, конвертер и его
|
||||
* состояние) — в mdview2_enc.c; разделяемые символы и API — в mdview2.h.
|
||||
@@ -562,6 +563,7 @@ static void unload_file(void)
|
||||
}
|
||||
if (orig_file_blk) { mem_free_block(orig_file_blk); orig_file_blk = 0; }
|
||||
if (utf_blk) { mem_free_block(utf_blk); utf_blk = 0; }
|
||||
if (g_scratch_blk) { mem_free_block(g_scratch_blk); g_scratch_blk = 0; }
|
||||
file_blk = 0;
|
||||
}
|
||||
|
||||
@@ -1108,8 +1110,18 @@ int main(int argc, char **argv)
|
||||
cputs("\n\r\n\r");
|
||||
exit(-1);
|
||||
}
|
||||
/* Scratch-страница под ремап-буфер строки (win_rest_remap). */
|
||||
g_scratch_phys = mem_get_page(mem_alloc_pages(1), 0);
|
||||
/* Scratch-страница под ремап-буфер строки (win_rest_remap). Handle
|
||||
* сохраняем отдельно: физический номер страницы нельзя передавать
|
||||
* mem_free_block(), а on_exit() обязан вернуть EMM системе. */
|
||||
g_scratch_blk = mem_alloc_pages(1);
|
||||
if (g_scratch_blk == 0) {
|
||||
spinner_show(0);
|
||||
clrscr_attr(ATTR_RESET);
|
||||
textattr(ATTR_RESET);
|
||||
cputs("MDView: scratch page allocation failed\n\r");
|
||||
exit(-1);
|
||||
}
|
||||
g_scratch_phys = mem_get_page(g_scratch_blk, 0);
|
||||
|
||||
/* Оба набора пока не построены (страховка к инициализатору g_doc). */
|
||||
g_doc[DOC_8BIT].built = 0;
|
||||
|
||||
Reference in New Issue
Block a user