/* * getcwd — путь текущего каталога в buf. ESTEX CURDIR ($1E) пишет в * буфер (ESTEX всегда рассчитывает на 256 байт — параметр size * игнорируется). Возвращает buf или NULL + errno. */ #include char *getcwd(char *buf, size_t size) __naked { (void)buf; (void)size; __asm ;; HL = buf, DE = size (игнорируется — ESTEX хочет 256 байт). push ix push hl ; сохранить buf через RST ld c, #0x1E ; ESTEX CURDIR rst #0x10 pop hl ; вернуть buf pop ix jr c, _gc_err ex de, hl ; вернуть buf в DE (SDCC ptr return) ret _gc_err: call __errno_set ld de, #0 ; NULL при ошибке ret __endasm; }