rev |
line source |
pascal@19515
|
1 // This file is distributed under GPL
|
pascal@19515
|
2 //
|
pascal@19515
|
3 // Bare bones of C runtime library
|
pascal@19515
|
4
|
pascal@19515
|
5 #define MK_FP(seg,ofs) ((void _seg *)(seg) + (void near *)(ofs))
|
pascal@19515
|
6 #define FP_SEG(fp) ((unsigned) (void _seg*) (void far*)(fp))
|
pascal@19515
|
7 #define FP_OFF(fp) ((unsigned) (fp))
|
pascal@20528
|
8 #define NULL 0
|
pascal@19515
|
9
|
pascal@19515
|
10 const unsigned MIN_STACK = 0x400;
|
pascal@19515
|
11 const unsigned MAX_MALLOC = 0xF000;
|
pascal@19515
|
12
|
pascal@19636
|
13 const char O_RDONLY = 0; // for open()
|
pascal@19636
|
14 const char O_BINARY = 0;
|
pascal@19515
|
15
|
pascal@19515
|
16 extern char text_start; extern char text_end;
|
pascal@19515
|
17 extern char data_start; extern char data_end;
|
pascal@19515
|
18 extern char bss_start; extern char bss_end;
|
pascal@19515
|
19 extern char* heap_top;
|
pascal@20538
|
20 extern char xfer_buf[4096];
|
pascal@19515
|
21
|
pascal@19515
|
22 void parse_cmdline();
|
pascal@20538
|
23 extern _fastcall void strcatb(const char* a,const char* b);
|
pascal@21757
|
24 extern _fastcall void strcpy(const char* a,const char* b);
|
pascal@20751
|
25 extern _fastcall int argstr(const char *s, const char keywords[], const char **var);
|
pascal@20751
|
26 extern _fastcall int argnum(char *s, const char keywords[], unsigned long *var);
|
pascal@20751
|
27 extern _fastcall void set_cmdline(const char *filename);
|
pascal@23996
|
28 extern _fastcall int strcmp(const char* a,const char* b);
|
pascal@23996
|
29 extern _fastcall int strhead(const char* a,const char* b);
|
pascal@20632
|
30 extern _fastcall int fileexist(const char* name);
|
pascal@19546
|
31 //extern "C" int open(const char* name, int flags);
|
pascal@20538
|
32 extern _fastcall int open(const char* name);
|
pascal@23996
|
33 #ifdef NO_CLOSE
|
pascal@23996
|
34 #define close(x)
|
pascal@23996
|
35 #else
|
pascal@20538
|
36 extern _fastcall int close(int fd);
|
pascal@23996
|
37 #endif
|
pascal@22312
|
38 extern _fastcall int moverm(unsigned short *p);
|
pascal@20751
|
39 extern _fastcall int readrm(struct image_himem *m, int sz);
|
pascal@20538
|
40 extern _fastcall int read(int fd, void* data, int sz);
|
pascal@22632
|
41 extern _fastcall long rewind(int fd);
|
pascal@20538
|
42 extern _fastcall int puts(const char* s);
|
pascal@21569
|
43 extern _fastcall unsigned long strtol(const char *s);
|
pascal@19515
|
44
|
pascal@19515
|
45 // Extensions
|
pascal@19515
|
46 #define cli() do { asm { cli } } while(0)
|
pascal@19515
|
47 #define sti() do { asm { sti } } while(0)
|
pascal@19515
|
48 #define int3() do { asm { db 0cch } } while(0)
|
pascal@19515
|
49 #define nop() do { asm { db 90h } } while(0)
|
pascal@21984
|
50 extern void exit();
|
pascal@20538
|
51 extern _fastcall int die(const char* msg);
|
pascal@20528
|
52 //extern "C" char* malloc_or_die(unsigned size);
|
pascal@20528
|
53 //extern "C" unsigned long* malloc_bufv_or_die(struct image_himem *m);
|
pascal@20538
|
54 extern _fastcall int malloc_or_die(unsigned size);
|
pascal@20538
|
55 extern _fastcall int malloc_bufv_or_die(struct image_himem *m);
|
pascal@21984
|
56 extern char cpu_features[];
|
pascal@21984
|
57 #define CPUMASKLM (0x20)
|
pascal@21984
|
58 #define cpuhaslm() (cpu_features[3]&CPUMASKLM)
|
pascal@23996
|
59
|
pascal@23996
|
60 extern void loadfailure(void);
|