/*
 * pal_get — прочитать блок палитровых записей из VRAM (BIOS $A4;
 * тот же id функции, бит 7 регистра A переключает в чтение).
 */

#include "_palette.h"

void pal_get(uint8_t pal_num, uint8_t start, uint8_t count, uint8_t *bgr0)
{
    _pal_num   = (uint8_t)(pal_num | 0x80);   /* бит 7 = чтение */
    _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 = маска
        ld    a, (__pal_num)        ; A = 0x80 | pal_num — чтение
        ld    c, #0xA4              ; BIOS PIC_GET_PAL (= $A4)
        rst   #0x08
        pop   ix
    __endasm;
}
