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