/*
 * fnext — следующая запись перебора каталога, начатого ffirst().
 * ESTEX F_NEXT ($1A): DE = тот же буфер; CF = err / A = код ошибки.
 * Возвращает 0 или -1 + errno (ENOENT-класс в конце перебора).
 */

#include <dir.h>

int fnext(ffblk_t *buf) __naked
{
    (void)buf;
    __asm
        ;; HL = buf на входе; ESTEX F_NEXT хочет буфер в DE.
        push  ix
        ex    de, hl
        ld    c, #0x1A          ; ESTEX F_NEXT
        rst   #0x10
        pop   ix
        jr    c, _fnext_err
        ld    de, #0
        ret
    _fnext_err:
        call  __errno_set
        ld    de, #-1
        ret
    __endasm;
}
