mdview2: полировка статус-бара/справки/детекции + libc min/max

- status-bar: dirty-tracking (числа/процент/кодировка перерисовываются
  только при изменении), поле кодировки сдвинуто к DIV1_X-10 (8 симв.)
- md_key: HOME/END не перерисовывают экран, если позиция не меняется
- help: версия v1.0(a3), добавлены F2/F3 (RAW/Wrap), компактные секции
- enc: детекция по 5 частотным буквам и сэмплу 1КБ; ENC_UNSUPPORTED (UTF16/32)
- libc: добавлены min()/max() (naked, <stdlib.h>) + сборка в lib/Makefile

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
2026-06-30 20:43:04 +03:00
parent 1b78dda125
commit 733746572c
9 changed files with 260 additions and 104 deletions
+12
View File
@@ -0,0 +1,12 @@
#ifndef STDLIB_H
#define STDLIB_H
#include <stddef.h> /* size_t */
#include <stdint.h>
int16_t min(int16_t a, int16_t b);
int16_t max(int16_t a, int16_t b);
#endif
+42
View File
@@ -0,0 +1,42 @@
#include <stdlib.h>
int16_t min(int16_t a, int16_t b) __naked
{
(void)a; (void)b;
__asm
ld a, h
cp d
jr c, min_less
jr nz, min_greater
ld a, l
cp e
jr c, min_less
min_greater:
ret /* DE уже содержит b */
min_less:
ex de, hl
ret
__endasm;
}
int16_t max(int16_t a, int16_t b) __naked
{
(void)a; (void)b;
__asm
ld a, h
cp d
jr c, max_less
jr nz, max_greater
ld a, l
cp e
jr c, max_less
ret /* a >= b, return a in HL */
max_less:
/* a < b, return b in DE */
ret /* DE already contains b */
max_greater:
/* a > b, return a in HL */
ex de, hl
ret
__endasm;
}