/*
 * bios_writeattr — вывести len символов строки s с атрибутом attr.
 * BIOS LP_PRINT_LN ($85, rst 8): HL=s, B=len, E=attr.  Place
 * продвигается после печати.  s должен лежать в #4000-#BFFF.
 *
 * SDCC __sdcccall(1): s→HL, len/attr на стеке [SP+2]/[SP+3];
 * стековые байты съедает callee.
 */

#include <bios/text.h>

void bios_writeattr(const char *s, uint8_t len, uint8_t attr) __naked
{
    (void)s; (void)len; (void)attr;
    __asm
        ld    iy, #2
        add   iy, sp
        ld    b, 0 (iy)             ; B = len
        ld    e, 1 (iy)             ; E = attr
        push  ix
        ld    c, #0x85
        rst   #0x08
        pop   ix
        pop   hl                    ; адрес возврата
        inc   sp
        inc   sp                    ; съесть len + attr
        jp    (hl)
    __endasm;
}
