/* * mem_free_block_bios — освободить блок, выданный mem_alloc_pages_bios. * BIOS EMM_FN3 ($C3, rst 8): A=blk_id → CF=err. * * Идемпотентности НЕТ: повторное освобождение того же блока ставит * errno. Владение отслеживает вызывающий. */ #include #include void mem_free_block_bios(uint8_t blk_id) __naked { (void)blk_id; __asm ;; SDCC: единственный uint8-аргумент уже в A. push ix ld c, #0xC3 ; BIOS EMM_FN3 (FREE) rst #0x08 pop ix ret nc ; CF=0 → успех jp __errno_set ; CF=1 → A = код; tail-call хелпера __endasm; }