/* * 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 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; }