Files
snark13 4a081501d8 libc: сплит «1 функция = 1 модуль» — вся библиотека, wildcard-сборка
- bios/conio/env/errno/gfx/io/mem/mouse/stdio/stdlib/string/sys/time/
  video разложены по модулям: общие статики и helpers — в internal
  _-модулях (_conio.h/_mouse.h/_gfx.h/_palette.h/_atexit.h/_time.h)
- lib/Makefile: LIBC_C = wildcard libc/*/*.c — гранулярность файлов
  = гранулярность DCE линкера
- эффект _CODE: gfx_text 6986→2568 Б, gfx_mous −1745, gfx_demo/d16
  −542; ранее timedir −3270, ls −3098, stattest −2995
- комментарии оставшихся модулей переведены на русский; puts: убран
  мёртвый pchars; videomode_raw разложен на get/set
- docs/libc-split-asm-cases.md — правила asm-связок между модулями;
  docs/libc-roadmap.md — план этапа
- восстановлен examples/mdview/SAMPLE.MD (нужен make floppy)

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-06 16:08:58 +03:00

31 lines
1017 B
C
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
/*
* pal_load — записать блок палитровых записей в VRAM
* (BIOS $A4 PIC_SET_PAL): pal_num 0..7, start — первый слот,
* count слотов (0 = 256), bgr0 — записи по 4 байта (B, G, R, 0).
*/
#include "_palette.h"
void pal_load(uint8_t pal_num, uint8_t start, uint8_t count,
const uint8_t *bgr0)
{
_pal_num = pal_num;
_pal_start = start;
_pal_count = count;
_pal_data = (uint16_t)(uintptr_t)bgr0;
__asm
push ix
ld a, (__pal_start)
ld e, a ; E = start
ld a, (__pal_count)
ld d, a ; D = count (0 = 256)
ld hl, (__pal_data) ; HL = данные
ld b, #0xFF ; B = маска (без AND)
ld a, (__pal_num) ; A = номер палитры (бит 7 = 0: запись)
ld c, #0xA4 ; BIOS PIC_SET_PAL
rst #0x08
pop ix
__endasm;
}