2f4eaf5b25
Профилирование (52КБ README, раздельный замер): препроцессинг 24с, из них bank I/O ~0с, cont-walk ~1с — всё время в посимвольных скан-циклах (индексация 8с + рендер 13с, два прохода по файлу). - fb() переписана на ассемблере (была закомментированная заготовка): убран вызов функции и 32-битная арифметика на каждый байт. Раскладка __sdcccall(1) для uint32 аргумента (p=HLDE) и возврат char в A сверены через sdcc -S; координация маппинга с bank_read держится на том, что _io_page_w3 — порт (__sfr 0xE2), пишем OUT — bank_read читает IN. - render_line_to_cache: горячий путь обычного текста больше не вызывает handle_inline_marker (6 аргументов) на каждый символ — только на маркерах ` * _ ~; cc_put заинлайнен. Поведение идентично. Итого 24→18с. Индекс-скан (8с) лёгкого инлайна не имеет (нет per-char вызовов). Следующий шаг — merge двух проходов в один. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>