1 /* this file is for creating a version of EiC which
2 * does not link to its implementation of the
3 * standard C library nor does it use readline.
6 * To build this version:
10 * which makes the executabe seic, (small eic) and seic.sr (an S-record)
19 #include "../module/stdClib/src/stdClib2eic.h"
23 #define xstr(x) str(x)
29 val_t eic_getch(void);
30 val_t eic_putch(void);
31 val_t eic_getchq(void);
36 extern char *startstr;
38 static char loadstring[4096]="
41 char *gets(char *str);
45 int in(unsigned long addr);
46 void out(unsigned char val, unsigned long addr);
48 int printf(const char *fmt, ...);
49 int sprintf(char *buf, const char * fmt, ...);
50 int scanf(const char *fmt, ...);
51 int sscanf(const char *str,const char *fmt, ...);
53 typedef unsigned size_t;
55 void *memmove(void * dst, const void * src , size_t n);
56 char *strcpy(char * dst, const char * src);
57 char *strncpy(char * dst, const char * src, size_t n);
58 char *strcat(char * s1, const char * s2);
59 char *strncat(char * s1, const char *s2, size_t n);
60 int memcmp(const void * s1, const void * s2, size_t n);
61 int strcmp(const char * s1, const char * s2);
62 int strcoll(const char * s1, const char * s2);
63 int strncmp(const char * s1, const char *s2, size_t n);
64 size_t strxfrm(char *dst, const char * src, size_t n);
65 void *memchr(const void *s, int c, size_t n);
66 char *strchr(const char *s, int c);
67 size_t strcspn(const char *s, const char *reject);
68 char *strpbrk(const char *s, const char *accept);
69 char *strrchr(const char *s, int c);
70 size_t strspn(const char *s, const char *accept);
71 char *strstr(const char *haystack, const char *needle);
72 char *strtok(char *s, const char *delim);
73 void *memset(void *s, int c, size_t n);
74 char *strerror(int n);
75 size_t strlen(const char *s);
76 char * strrev(char * s);
78 #define RAND_MAX 32767
79 #define EXIT_FAILURE 1
80 #define EXIT_SUCCESS 0
83 typedef struct { int quot, rem; }div_t;
85 typedef struct { long quot, rem; }ldiv_t;
87 div_t div(int numer, int denom);
88 ldiv_t ldiv(long int numer, long int denom);
89 void * malloc(size_t n);
90 void * calloc(size_t x, size_t y);
91 void * realloc(void * ptr, size_t n);
92 #define free(x) (free)(&(x));
93 void (free)(void *ptr);
94 #define strtoul(x,y,z) strtol(x,y,z)
96 void srand(unsigned int seed);
97 double strtod(const char *str, char **endptr);
98 long strtol(const char *str, char **endptr,int base);
100 int atoi(const char *s);
101 double atof(const char *str);
102 long atol(const char *s);
104 char * _itoa(int n,char *str, int radix, int mod);
105 char * _ltoa(int n,char *str, int radix, int mod);
106 char *fftoa(double d, char *str, int p, char type, int trunc);
107 #define itoa(x,y,z) _itoa(x,y,z,1)
108 #define utoa(x,y,z) _itoa(x,y,z,2)
109 #define ltoa(x,y,z) _ltoa(x,y,z,1)
110 #define ultoa(x,y,z) _ltoa(x,y,z,2)
113 double acos(double a);
114 double asin(double a);
115 double atan(double a);
116 double atan2(double a, double b);
117 double cos(double a);
118 double sin(double a);
119 double tan(double a);
120 double cosh(double a);
121 double sinh(double a);
122 double tanh(double a);
123 double exp(double a);
124 double frexp(double a, int * b);
125 double ldexp(double a, int b);
126 double log(double a);
127 double log10(double a);
128 double modf(double a, double *b);
129 double pow(double a, double b);
130 double sqrt(double a);
131 double ceil(double a);
132 double fabs(double a);
133 double floor(double a);
134 double fmod(double a, double b);
135 puts(\"\\nDone loading prototypes...\");
141 int main(int argc, char ** argv)
146 /* the macro PLATFORM
147 * is passed in by the
152 dodefine(&(xstr(PLATFORM)[1]));
155 prs("Starting EiC...\n");
156 setvbuf(stdout,NULL,_IONBF,0);
157 EiC_add_builtinfunc("puts",eic_puts);
158 EiC_add_builtinfunc("gets",eic_gets);
159 EiC_add_builtinfunc("putch",eic_putch);
160 EiC_add_builtinfunc("getch",eic_getch);
161 EiC_add_builtinfunc("getchq",eic_getchq);
162 EiC_add_builtinfunc("in",eic_in);
163 EiC_add_builtinfunc("out",eic_out);
164 EiC_add_builtinfunc("load",eic_load);
166 EiC_add_builtinfunc("printf",eic_printf);
167 EiC_add_builtinfunc("sprintf",eic_sprintf);
168 EiC_add_builtinfunc("scanf",eic_scanf);
169 EiC_add_builtinfunc("sscanf",eic_sscanf);
170 EiC_add_builtinfunc("setvbuf",eic_setvbuf);
173 EiC_add_builtinfunc("memcpy",eic_memcpy);
174 EiC_add_builtinfunc("memmove",eic_memmove);
175 EiC_add_builtinfunc("strcpy",eic_strcpy);
176 EiC_add_builtinfunc("strncpy",eic_strncpy);
177 EiC_add_builtinfunc("strcat",eic_strcat);
178 EiC_add_builtinfunc("strncat",eic_strncat);
179 EiC_add_builtinfunc("memcmp",eic_memcmp);
180 EiC_add_builtinfunc("strcmp",eic_strcmp);
181 EiC_add_builtinfunc("strcoll",eic_strcoll);
182 EiC_add_builtinfunc("strncmp",eic_strncmp);
183 EiC_add_builtinfunc("strxfrm",eic_strxfrm);
184 EiC_add_builtinfunc("memchr",eic_memchr);
185 EiC_add_builtinfunc("strchr",eic_strchr);
186 EiC_add_builtinfunc("strcspn",eic_strcspn);
187 EiC_add_builtinfunc("strpbrk",eic_strpbrk);
188 EiC_add_builtinfunc("strrchr",eic_strrchr);
189 EiC_add_builtinfunc("strspn",eic_strspn);
190 EiC_add_builtinfunc("strstr",eic_strstr);
191 EiC_add_builtinfunc("strtok",eic_strtok);
192 EiC_add_builtinfunc("memset",eic_memset);
193 EiC_add_builtinfunc("strerror",eic_strerror);
194 EiC_add_builtinfunc("strlen",eic_strlen);
195 EiC_add_builtinfunc("strrev", eic_strrev);
198 EiC_add_builtinfunc("_itoa", eic_itoa);
199 EiC_add_builtinfunc("_ltoa", eic_ltoa);
200 EiC_add_builtinfunc("fftoa", eic_fftoa);
201 EiC_add_builtinfunc("malloc", eic_malloc);
202 EiC_add_builtinfunc("calloc", eic_calloc);
203 EiC_add_builtinfunc("realloc", eic_realloc);
204 EiC_add_builtinfunc("free", eic_free);
205 EiC_add_builtinfunc("strtod", eic_strtod);
206 EiC_add_builtinfunc("strtol", eic_strtol);
207 EiC_add_builtinfunc("strtoul", eic_strtoul);
208 EiC_add_builtinfunc("rand", eic_rand);
209 EiC_add_builtinfunc("srand", eic_srand);
210 EiC_add_builtinfunc("atoi", eic_atoi);
211 EiC_add_builtinfunc("atof", eic_atof);
212 EiC_add_builtinfunc("atol", eic_atol);
213 EiC_add_builtinfunc("abort",eic_exit);
215 EiC_add_builtinfunc("eic_exit",eic_exit);
217 EiC_add_builtinfunc("div",eic_div);
218 EiC_add_builtinfunc("ldiv",eic_ldiv);
219 EiC_add_builtinfunc("acos",eic_acos);
220 EiC_add_builtinfunc("asin",eic_asin);
221 EiC_add_builtinfunc("atan",eic_atan);
222 EiC_add_builtinfunc("atan2",eic_atan2);
223 EiC_add_builtinfunc("cos",eic_cos);
224 EiC_add_builtinfunc("sin",eic_sin);
225 EiC_add_builtinfunc("tan",eic_tan);
226 EiC_add_builtinfunc("cosh",eic_cosh);
227 EiC_add_builtinfunc("sinh",eic_sinh);
228 EiC_add_builtinfunc("tanh",eic_tanh);
229 EiC_add_builtinfunc("exp",eic_exp);
230 EiC_add_builtinfunc("frexp",eic_frexp);
231 EiC_add_builtinfunc("ldexp",eic_ldexp);
232 EiC_add_builtinfunc("log",eic_log);
233 EiC_add_builtinfunc("log10",eic_log10);
234 EiC_add_builtinfunc("modf",eic_modf);
235 EiC_add_builtinfunc("pow",eic_pow);
236 EiC_add_builtinfunc("sqrt",eic_sqrt);
237 EiC_add_builtinfunc("ceil",eic_ceil);
238 EiC_add_builtinfunc("fabs",eic_fabs);
239 EiC_add_builtinfunc("floor",eic_floor);
240 EiC_add_builtinfunc("fmod",eic_fmod);
243 startstr=loadstring; /* load defines */
245 /* strcat(startstr,"typedef struct {void *p, *sp, *ep;} ptr_t;\n");
246 strcat(startstr,"typedef struct { ptr_t _ptr; int _cnt; ptr_t _base;\\\n");
247 strcat(startstr,"unsigned short _flag; short _fd; unsigned long _pid;\\\n");
248 strcat(startstr,"unsigned _bsize; ptr_t _tmpnam; char _sbuf[4];\\\n");
249 strcat(startstr,"unsigned _entry; }FILE;\n");
251 strcat(startstr,"int fgetc(FILE * fp);\n");
252 strcat(startstr,"int fputc(int c, FILE * fp);\n");
253 strcat(startstr,"char * fgets(char *s, int n, FILE *fp);\n");
254 strcat(startstr,"int fputs(const char *s, FILE *fp);\n"); */
257 EiC_startEiC(argc, argv);