/*
 * mem_free_block_estex — освободить блок, выданный
 * mem_alloc_pages_estex.  ESTEX FREEMEM ($3E): A=blk_id → CF=err.
 * Повторное освобождение ставит errno; владение — на вызывающем.
 */

#include <stdint.h>
#include <sprinter_mem.h>

void mem_free_block_estex(uint8_t blk_id) __naked
{
    (void)blk_id;
    __asm
        ;; SDCC: единственный uint8-аргумент уже в A.
        push  ix
        ld    c, #0x3E              ; ESTEX FREEMEM
        rst   #0x10
        pop   ix
        ret   nc                    ; CF=0 → успех
        jp    __errno_set           ; CF=1 → A = код; tail-call хелпера
    __endasm;
}
