libc: Solid-C совместимость (П3) + rename/isatty (П4); scanf-семейство
- <dos.h>: getdate/gettime/setdate/settime (структуры Turbo-C, обёртки над getdatetime), getdisk/setdisk (ESTEX $02/$01), absread/abswrite (BIOS $55/$56, rst 8 — номера найдены в solid-c DOS.ASM; сектор 0 = boot логического диска) - scanf/fscanf/sscanf: своё C-ядро _scanf_core (%d %u %x %o %c %s, модификатор l, ширина, подавление '*', %%); в SDCC z80 scanf нет, asm solid-c не портируем из-за чужого ABI; 22 хост-теста ядра - хвост П2: fdopen/freopen/fclosall/fgetpos/fsetpos поверх таблицы FILE; парсер режима и выдача слота вынесены в _file_mode/_file_slot - rename() — ESTEX RENAME $10; isatty(fd) = fd <= 0 (tty только псевдо-fd 0/-1/-2: из CLI DSS манипуляторы идут с 1 — verified, fd 1 не резерв, под Flex Navigator его держит навигатор) - errno.h: Solid-C имена ошибок (EZERO/EINVFNC/ENOFILE/...) как алиасы - <sprinter_solid.h> — зонтичный заголовок для портирования; ltell/_setargv в sprinter_compat.h; div/ldiv — из SDCC (проверено) - tests/solidt — smoke всех П3/П4 API, зелёный в MAME (вкл. absread boot-сектора с сигнатурой 55AA) Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
@@ -55,6 +55,27 @@ extern int errno;
|
||||
* Folded onto the closest existing code so error strings stay sane. */
|
||||
#define EINVAL EUNKOP /* "Invalid argument" → "Unknown operation" */
|
||||
|
||||
/* ---- Solid-C aliases (ERRNO.H из Solid-C v2004) -------------------
|
||||
* Те же числовые коды DSS, только имена другие — портируемые
|
||||
* программы работают без правок. */
|
||||
#define EZERO EOK
|
||||
#define EINVFNC EINVFN
|
||||
#define EINVDRV ENODRV
|
||||
#define ENOFILE ENOENT
|
||||
#define EINVHND EBADF
|
||||
#define EROFILE EROFS
|
||||
#define EROOT EROOTFULL
|
||||
#define ENOSPACE ENOSPC
|
||||
#define ENOEMPTY ENOTEMPTY
|
||||
#define ECURDIR EBUSY
|
||||
#define EINVMED EMEDIA
|
||||
#define EOPER EUNKOP
|
||||
#define EEXISDIR EISDIR
|
||||
#define EINVFNAM EINAME
|
||||
#define ENSUPEXE ENOEXEC
|
||||
#define ENORDY ENOTREADY
|
||||
#define EWRTPRT EWRPROT
|
||||
|
||||
/* C99 perror / strerror surface. */
|
||||
const char *strerror(int err);
|
||||
void perror (const char *prefix);
|
||||
|
||||
Reference in New Issue
Block a user