/*
 * 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;
}
