/*
 * _bgi_plot_raw — пиксель (x,y) цветом 0..15, mode 0x82.
 * Байт по адресу _gfx_addr_base + x/2 держит два пикселя: high nibble =
 * ЛЕВЫЙ (чётный x), low = ПРАВЫЙ (нечётный).  W3-naive.
 */

#include "../_bgi.h"

void _bgi_plot_raw(int x, int y, uint8_t color)
{
    if ((unsigned)x >= GFX_WIDTH_16 || (unsigned)y >= GFX_HEIGHT_16) return;
    _gfx_g16_y    = (uint8_t)y;
    _gfx_g16_addr = (uint16_t)(_gfx_addr_base + ((unsigned)x >> 1));
    if (x & 1) {
        _gfx_g16_nibble = (uint8_t)(color & 0x0F);
        _gfx_g16_mask   = 0xF0;
    } else {
        _gfx_g16_nibble = (uint8_t)((color & 0x0F) << 4);
        _gfx_g16_mask   = 0x0F;
    }
    _gfx_rmw16_pixel();
}
