/*
 * bios_clearwin_ch — залить окно (row, col, height, width) символом
 * fillch с атрибутом attr.  BIOS LP_CLS_WIN2 ($8D, rst 8): D=row,
 * E=col, H=height, L=width, B=attr, A=fillch.
 */

#include <bios/text.h>

void bios_clearwin_ch(uint8_t row, uint8_t col, uint8_t height,
                       uint8_t width, uint8_t attr, char fillch) __naked
{
    (void)row; (void)col; (void)height; (void)width; (void)attr; (void)fillch;
    __asm
        ;; row→A, col→L, height/width/attr/fillch на стеке [SP+2..5].
        ld    iy, #2
        add   iy, sp
        ld    d, a                  ; D = row (освободить A под fillch)
        ld    e, l                  ; E = col (освободить L под width)
        ld    h, 0 (iy)             ; H = height
        ld    c, 1 (iy)             ; спрятать width
        ld    b, 2 (iy)             ; B = attr
        ld    a, 3 (iy)             ; A = fillch
        ld    l, c                  ; L = width
        push  ix
        ld    c, #0x8D
        rst   #0x08
        pop   ix
        pop   hl
        inc   sp
        inc   sp
        inc   sp
        inc   sp                   ; съесть height + width + attr + fillch
        jp    (hl)
    __endasm;
}
