/* * _gfx_putpixel256_raw — пиксель (x,y) цветом color, mode 0x81. * * "Raw" = W3-naive: вызывающий уже сделал _gfx_w3_video_begin (W3 на * видеобанке, DI). Адресация: CPU _gfx_addr_base + x, Port_Y (0x89) = y. * * Скретч отдельный от _gfx_acc_* — чтобы putpixel внутри цикла * Брезенхэма не топтал внешнее состояние акселератора. */ #include "_gfx.h" static uint8_t _gfx_pp_y; static uint16_t _gfx_pp_addr; static uint8_t _gfx_pp_color; void _gfx_putpixel256_raw(int x, int y, uint8_t color) { if ((unsigned)x >= GFX_WIDTH || (unsigned)y >= GFX_HEIGHT) return; _gfx_pp_y = (uint8_t)y; _gfx_pp_addr = (uint16_t)(_gfx_addr_base + (unsigned)x); _gfx_pp_color = color; __asm ld a, (__gfx_pp_y) out (#0x89), a ld hl, (__gfx_pp_addr) ld a, (__gfx_pp_color) ld (hl), a __endasm; }