mdview2: percent на 16-битной арифметике (убрать __divulong)
calc_md_pct/calc_raw_pct тянули 32-битное деление __divulong (+__muluint2ulong) ради показа процента в статусе. Оба дают операнды ≤16 бит (≤18432 / ≤1024), переполняет только *100. Новый pct16() масштабирует оба вниз и считает долю циклом-вычитанием — 66 Б, НОЛЬ подтянутых арифм-хелперов. Точность ±1% (на границах точно), для индикатора прокрутки незаметно. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
@@ -172,7 +172,7 @@ static uint8_t calc_md_pct(void)
|
||||
{
|
||||
uint16_t total = drawable_lines();
|
||||
if (total <= VIEW_H) return 100;
|
||||
return (uint8_t)((uint32_t)top_line * 100UL / (uint32_t)(total - VIEW_H));
|
||||
return pct16(top_line, (uint16_t)(total - VIEW_H));
|
||||
}
|
||||
|
||||
/* ---- навигация MD после загрузки (peer к raw_key) ---------------- */
|
||||
|
||||
Reference in New Issue
Block a user