/* * close — закрыть файловый хендл ESTEX CLOSE ($12). * Возвращает 0 или -1 + errno. На успехе декрементирует счётчик * открытых манипуляторов (_fd_guard.h — защита от зависания DSS). */ #include #include "_fd_guard.h" int close(int fd) __naked { (void)fd; __asm push ix ld a, l ld c, #0x12 ; ESTEX CLOSE rst #0x10 pop ix jr c, _oclose_err ;; успех — минус один открытый манипулятор ld hl, #__fd_open_count dec (hl) ld de, #0 ret _oclose_err: call __errno_set ld de, #-1 ret __endasm; }