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