almost got the term emu working and shell

This commit is contained in:
2026-07-08 21:15:30 -05:00
parent ec3cbb4794
commit 4d98d73f5e
20 changed files with 214 additions and 228 deletions

View File

@@ -7,9 +7,14 @@
#define SYS_EXIT 1
#define SYS_READ 3
#define SYS_WRITE 4
#define SYS_OPEN 5
#define SYS_CLOSE 6
#define SYS_PTY 20
#define SYS_FORK 21
#define SYS_EXEC 22
#define SYS_DUP2 23
int open(const char* path);
int write(int fd, const void *buf, size_t count);
int read(int fd, void *buf, size_t count);
int close(int fd);
@@ -22,6 +27,9 @@ void *sbrk(intptr_t increment);
int brk(void *addr);
int pty(int* slave);
int fork();
int exec(const char* path);
int dup2(int src, int dst);
#endif

View File

@@ -27,6 +27,10 @@ void exit(int status) {
while(1);
}
int open(const char* path) {
return syscall1(SYS_OPEN, (uint32_t)path);
}
int write(int fd, const void* buf, size_t cnt) {
return syscall3(SYS_WRITE, (uint32_t)fd, (uint32_t)buf, (uint32_t)cnt);
}
@@ -35,10 +39,22 @@ int read(int fd, void* buf, size_t cnt) {
return syscall3(SYS_READ, (uint32_t)fd, (uint32_t)buf, (uint32_t)cnt);
}
int close(int fd) {
return syscall1(SYS_CLOSE, fd);
}
int pty(int* slave) {
return syscall1(SYS_PTY, (uint32_t)slave);
}
int fork() {
return syscall1(SYS_FORK, 0);
}
int exec(const char* path) {
return syscall1(SYS_EXEC, (uint32_t)path);
}
int dup2(int src, int dst) {
return syscall3(SYS_DUP2, src, dst, 0);
}