/*
 * putchar — вывести один символ через ESTEX PUTCHAR ($5B).
 *
 * Конвенция Turbo-C: эта stdio.h-функция — БЫСТРЫЙ путь БЕЗ управления
 * атрибутом.  Используется то, что ESTEX закэшировал для ячейки курсора
 * (обычно цвет шелла по умолчанию).  '\n' транслируется в CR LF по
 * семантике C-строк.
 *
 * Для цветного вывода — putch() / cputs() / cprintf() из <conio.h>:
 * они учитывают textattr / g_text_attr ценой ~10-кратного замедления.
 *
 * SDCC __sdcccall(1): char-аргумент в L (младший байт HL=int).
 * Возврат символа в DE (int-возврат SDCC).
 */

#include <stdio.h>

int putchar(int c) __naked
{
    (void)c;
    __asm
        ld    a, l
        cp    #0x0A
        jr    nz, cputc
        call  cputc
        ld    a, #0x0D
cputc:
        ld    c, #0x5B
        rst   #0x10
        ld    e, l
        ld    d, #0
        ret
    __endasm;
}
