/* * _putch_wrchar_raw — воркер вывода mode-1: КАЖДЫЙ байт идёт через * ESTEX WRCHAR ($58) как глиф CP437 (включая 0x08/0x09/0x0A/0x0D), * атрибутом attr, в позицию (pc_place) с pc_col++. * Вне экрана (col ≥ 80 / row ≥ 32) вывод молча подавляется. * Курсор BIOS не трогает — см. _putch_wrchar. */ #include "_conio.h" void _putch_wrchar_raw(char ch, uint8_t attr) __naked { (void)ch; (void)attr; __asm ;; __sdcccall(1): ch в A, attr в L. ld c, a ; C = ch (сохранить) ld a, (_pc_place + 1) cp #32 ret nc ; за нижним краем — молча пропустить ld d, a ; D = row ld a, (_pc_place) cp #80 ret nc ; за правым краем — молча пропустить ld e, a ; E = col inc a ld (_pc_place), a ; pc_col++ ld b, l ; B = attr ld a, c ; A = ch push ix ld c, #0x58 ; ESTEX WRCHAR rst #0x10 pop ix ret __endasm; }