/* * cbl_push_otir — пропихнуть n байт из src в CBL через OTIR (порт * 0x4F). Звать ИЗ fill()-callback'а (см. cbl.h) — приложение само * решает, откуда брать данные, никакой промежуточной копии в libc. * * n — 128 или 256 (см. _cbl_block); низкий байт n (E) даёт готовое * значение для регистра B: 128 остаётся 128, 256 идёт как 0 (Z80 * OTIR: B=0 значит 256 итераций). * * НЕ умеет 16-бит: порт 0x4F всегда кладёт байт как есть в один слот * (см. cbl.h, cbl_open.c) — для 16-бит нужен cbl_push_accel(). */ #include "_cbl.h" void cbl_push_otir(const void *src, uint16_t n) __naked { (void)src; (void)n; __asm ;; HL = src (1-й арг), DE = n (2-й арг) — __sdcccall(1) ld a, e ld b, a ld c, #0x4F otir ret __endasm; }