/* * hex8 — печать uint8 всегда двумя hex-цифрами ("00".."FF") через * ESTEX PUTCHAR ($5B). Каждый нибл — классический трюк Z80 * `cp 10 / sbc 0x69 / daa` (5 байт на нибл). Self-call на _hex8_digit * для старшего нибла, затем проваливание на младший. * * ESTEX PUTCHAR сохраняет IX (проверено эмпирически) — push/pop ix * вокруг RST не нужен. Портировано из solid-c STDLIB.ASM. */ #include #include void hex8(uint8_t v) __naked { (void)v; __asm ;; A = v на входе. push af rra rra rra rra call _hex8_digit pop af _hex8_digit: and a, #0x0F cp a, #10 sbc a, #0x69 daa ld c, #0x5B rst #0x10 ret __endasm; }