/*
 * putchar — emit one character via ESTEX PUTCHAR ($5B).
 *
 * Turbo-C convention: this stdio.h function is the FAST path with NO
 * attribute control.  Whatever ESTEX has cached for the cursor cell is
 * used (typically the shell's default colour).  Translates '\n' to
 * CR LF for C-string semantics.
 *
 * For coloured output, use putch() / cputs() / cprintf() from <conio.h>
 * — those honour textattr / g_text_attr at the cost of being ~10× slower.
 *
 * SDCC __sdcccall(1): char arg in L (low byte of HL=int).  Returns the
 * char in DE (SDCC int return).
 */

#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;
}
