/* * getpixel (bgi256) — цвет пикселя (x,y), mode 0x81. Полностью inline * (bounds + W3-скобка + чтение пикселя), без вызовов _bgi_read/raw. * Возвращает 0 вне экрана. */ #include "../_bgi.h" static uint8_t _gp_y; static uint16_t _gp_addr; static uint8_t _gp_color; color_t getpixel(int x, int y) { #ifndef GFX_NOCHECK if ((unsigned)x >= GFX_WIDTH || (unsigned)y >= GFX_HEIGHT) return 0; #endif _bgi_begin(); register uint8_t _gp_color = _bgi_read_raw(x, y); _bgi_end(); return _gp_color; // _gp_y = (uint8_t)y; // _gp_addr = (uint16_t)(_gfx_addr_base + (unsigned)x); // __asm // di // in a, (#0xE2) // ld (__gfx_saved_w3), a // ld a, (__gfx_bank) // out (#0xE2), a // ld a, (_gp_y) // out (#0x89), a // ld hl, (_gp_addr) // ld a, (hl) // ld (_gp_color), a // ld a, (__gfx_saved_w3) // out (#0xE2), a // ei // __endasm; // return _gp_color; }