/* * gfx_getpixel256 — прочитать цвет пикселя (x,y) в режиме 0x81. * * Одиночный вызов в собственной W3-скобке. Адресация та же, что у * _gfx_putpixel256_raw: CPU _gfx_addr_base + x, Port_Y (0x89) = y. * За пределами экрана возвращает 0. */ #include "_gfx.h" static uint8_t _gfx_gp_y; static uint16_t _gfx_gp_addr; static uint8_t _gfx_gp_color; uint8_t gfx_getpixel256(int x, int y) { if ((unsigned)x >= GFX_WIDTH || (unsigned)y >= GFX_HEIGHT) return 0; _gfx_gp_y = (uint8_t)y; _gfx_gp_addr = (uint16_t)(_gfx_addr_base + (unsigned)x); _gfx_w3_video_begin(); __asm ld a, (__gfx_gp_y) out (#0x89), a ld hl, (__gfx_gp_addr) ld a, (hl) ld (__gfx_gp_color), a __endasm; _gfx_w3_video_end(); return _gfx_gp_color; }