/*
 * putpixel (bgi256) — точка (x,y) цветом color, mode 0x81.
 * ПОЛНОСТЬЬЮ inline: bounds + W3-скобка + запись пикселя в теле, БЕЗ
 * вызовов _bgi_plot / gfx_putpixel256 / _bgi_plot_raw (устранены
 * прокладки старой цепочки putpixel→_bgi_plot→gfx_putpixel256→raw).
 * Адресация: CPU _gfx_addr_base + x, Port_Y (0x89) = y; W3 мапится на
 * _gfx_bank, сейв восстанавливается.  Bounds — compile-time GFX_WIDTH/
 * HEIGHT (меньше/быстрее, ≡ runtime _bgi_maxx/_bgi_maxy).
 */
#include "../_bgi.h"

/* File-static скретч (как в _bgi_plot_raw, но свой — putpixel не должен
 * топтать скретч акселератора/plot_raw, если звать вперемешку). */
static uint8_t  _pp_y;
static uint16_t _pp_addr;
static uint8_t  _pp_color;

void putpixel(int x, int y, color_t color)
{
#ifndef GFX_NOCHECK
    if ((unsigned)x >= GFX_WIDTH || (unsigned)y >= GFX_HEIGHT) return;
#endif
    _bgi_begin();
    _bgi_plot_raw(x, y, color);
    _bgi_end();
    return;
}
