/*
 * bios_fillcharattr — вывести символ ch с атрибутом attr count раз от
 * текущего place.  BIOS LP_PRINT_ALL ($81, rst 8): A=ch, E=attr,
 * B=count.  Сохраняет HL и IX — push/pop ix не нужен.
 *
 * SDCC __sdcccall(1): ch→A, attr→L, count на стеке [SP+2]; стековый
 * байт съедает callee (inc sp), IY — скретч для чтения без порчи IX.
 */

#include <bios/text.h>

void bios_fillcharattr(char ch, uint8_t attr, uint8_t count) __naked
{
    (void)ch; (void)attr; (void)count;
    __asm
        ld    iy, #2
        add   iy, sp
        ld    b, 0 (iy)             ; B = count
        ld    e, l                  ; E = attr
        ld    c, #0x81
        rst   #0x08
        pop   hl                    ; адрес возврата
        inc   sp                    ; съесть байт count
        jp    (hl)
    __endasm;
}
