1 #include <_ansi.h>
2 #include <sys/types.h>
3 #include <sys/stat.h>
4 #include "sys/syscall.h"
5 int errno;
6
7
8
9 int
_read(int file,char * ptr,int len)10 _read (int file,
11 char *ptr,
12 int len)
13 {
14 return __trap3 (SYS_read, file, ptr, len);
15 }
16
17
18 int
_lseek(int file,int ptr,int dir)19 _lseek (int file,
20 int ptr,
21 int dir)
22 {
23 return __trap3 (SYS_lseek, file, ptr, dir);
24 }
25
26 static
writechar(char c)27 writechar (char c)
28 {
29 asm ("lda %0" : : "r" (c));
30 asm ("wdm");
31 }
32
33
34
35 int
_write(int file,char * ptr,int len)36 _write (
37 int file,
38 char *ptr,
39 int len)
40 {
41 return __trap3 (SYS_write, file, ptr, len);
42 }
43
44
45
46 int
_close(int file)47 _close (int file)
48 {
49 return __trap3 (SYS_close, file, 0, 0);
50 }
51
52
53
54 caddr_t
_sbrk(int incr)55 _sbrk (int incr)
56 {
57 extern char end; /* Defined by the linker */
58 static char *heap_end;
59 char *prev_heap_end;
60
61 if (heap_end == 0)
62 {
63 heap_end = &end;
64 }
65 prev_heap_end = heap_end;
66 if (heap_end + incr > stack_ptr)
67 {
68 _write (1, "Heap and stack collision\n", 25);
69 abort ();
70 }
71
72 heap_end += incr;
73 return (caddr_t) prev_heap_end;
74 }
75
76
77
78
79 int
_fstat(int file,struct stat * st)80 _fstat (int file,
81 struct stat *st)
82 {
83 st->st_mode = S_IFCHR;
84 return 0;
85 }
86
87
88 int
_open(char * path,int flags)89 _open (
90 char *path,
91 int flags)
92 {
93 return __trap3 (SYS_open, path, flags, 0);
94 }
95
96 int
_unlink()97 _unlink ()
98 {
99 return -1;
100 }
101
isatty(fd)102 isatty (fd)
103 int fd;
104 {
105 return 1;
106 }
107
108
109
_exit(n)110 _exit (n)
111 {
112 return __trap3 (SYS_exit, n, 0, 0);
113 }
114
115
_kill(n,m)116 _kill (n, m)
117 {
118 return __trap3 (SYS_exit, 0xdead, 0, 0);
119 }
120
121
_getpid(n)122 _getpid (n)
123 {
124 return 1;
125 }
126
127
128
129
_raise()130 _raise ()
131 {
132
133 }
134
135 int
_stat(const char * path,struct stat * st)136 _stat (const char *path, struct stat *st)
137
138 {
139 return _trap3 (SYS_stat, path, st, 0);
140 }
141
142 int
_chmod(const char * path,short mode)143 _chmod (const char *path, short mode)
144 {
145 return _trap3 (SYS_chmod, path, mode);
146 }
147
148 int
_chown(const char * path,short owner,short group)149 _chown (const char *path, short owner, short group)
150 {
151 return _trap3 (SYS_chown, path, owner, group);
152 }
153
154 int
_utime(path,times)155 _utime (path, times)
156 const char *path;
157 char *times;
158 {
159 return _trap3 (SYS_utime, path, times);
160 }
161
162 int
_fork()163 _fork ()
164 {
165 return _trap3 (SYS_fork);
166 }
167
168 int
_wait(statusp)169 _wait (statusp)
170 int *statusp;
171 {
172 return _trap3 (SYS_wait);
173 }
174
175 int
_execve(const char * path,char * const argv[],char * const envp[])176 _execve (const char *path, char *const argv[], char *const envp[])
177 {
178 return _trap3 (SYS_execve, path, argv, envp);
179 }
180
181 int
_execv(const char * path,char * const argv[])182 _execv (const char *path, char *const argv[])
183 {
184 return _trap3 (SYS_execv, path, argv);
185 }
186
187 int
_pipe(int * fd)188 _pipe (int *fd)
189 {
190 return _trap3 (SYS_pipe, fd);
191 }
192