/* * sprinter_compat.h — Solid-C compatibility shims. * * Pulls in standard headers and adds aliases/macros that Solid-C * programs expect. Programs targeting Sprinter from Solid-C source * can `#include ` and most names "just work". */ #ifndef SPRINTER_COMPAT_H #define SPRINTER_COMPAT_H #include #include #include #include #include #include #include #include #include #include #include #include #include /* _exit, atexit */ /* ---- Solid-C types ----------------------------------------------- */ typedef uint8_t BYTE; typedef uint8_t TINY; typedef uint8_t BOOL; typedef uint8_t STATUS; typedef uint16_t WORD; typedef int FD; #ifndef TRUE #define TRUE 1 #define FALSE 0 #define YES 1 #define NO 0 #endif #ifndef OK #define OK 0 #endif #ifndef ERROR #define ERROR (-1) #endif #ifndef EXIT_SUCCESS #define EXIT_SUCCESS 0 #define EXIT_FAILURE 1 #endif /* Solid-C's uint typedef (we expose it explicitly). Note `uint` may * already be defined in some environments; guard. */ #ifndef _SOLID_UINT_DEFINED #define _SOLID_UINT_DEFINED typedef unsigned uint; #endif /* fpoint — 32-bit split file position (used by lseek/tell). */ typedef struct fpoint { uint16_t low; uint16_t high; } f_point; /* ---- string.h aliases -------------------------------------------- */ /* setmem(ptr, n, byte) → memset(ptr, byte, n) — arg order swapped */ #define setmem(p, n, b) memset((p), (b), (n)) /* movmem(src, dst, n) → memcpy(dst, src, n) — arg order swapped */ #define movmem(s, d, n) memcpy((d), (s), (n)) /* In-place case conversion. */ char *strlwr(char *s); char *strupr(char *s); /* Solid-C calls perror's table 'strerr'. */ #define strerr(n) strerror((n)) /* ---- stdlib.h additions ------------------------------------------ */ #define abort() _exit(0xFF) #ifndef min #define min(a, b) ((a) < (b) ? (a) : (b)) #endif #ifndef max #define max(a, b) ((a) > (b) ? (a) : (b)) #endif /* div() and div_t come from SDCC's (already included above). */ /* sysenv() is now a real function (libc/io/env.c) that returns the WHOLE * environment into a caller-provided buffer. Declared in . */ /* ---- ctype.h additions ------------------------------------------- */ #define isascii(c) (((unsigned)(c)) < 128) /* ---- io.h aliases (Solid-C fd shortcuts) ------------------------- */ #define seek(fd, off) lseek((fd), (long)(off), SEEK_SET) #define tell(fd) ((uint16_t)lseek((fd), 0, SEEK_CUR)) #define remove(name) unlink(name) /* ---- dir.h alias ------------------------------------------------- */ #define _ffirst ffirst #endif