diff options
Diffstat (limited to 'user/program.c')
| -rw-r--r-- | user/program.c | 63 |
1 files changed, 0 insertions, 63 deletions
diff --git a/user/program.c b/user/program.c deleted file mode 100644 index 65621f5..0000000 --- a/user/program.c +++ /dev/null @@ -1,63 +0,0 @@ -static long sys_write(const char* buffer, unsigned long buffer_length) -{ - long ret; - __asm__ volatile("int $0x80" : "=a"(ret) : "a"(1L), "D"(buffer), "S"(buffer_length) : "memory"); - return ret; -} - -static long sys_read(void) -{ - long ret; - __asm__ volatile("int $0x80" : "=a"(ret) : "a"(2L) : "memory"); - return ret; -} - -static void sys_exit(long code) -{ - __asm__ volatile("int $0x80" : : "a"(0L), "D"(code) : "memory"); - for (;;); -} - -static void put(const char* string) -{ - unsigned long n = 0; - while (string[n]) - n++; - sys_write(string, n); -} - -void _start(void) -{ - put("what's your name? "); - char name[64]; - int name_length = 0; - - for (;;) - { - char character = (char)sys_read(); - if (character == '\n') - break; - - if (character == '\b') - { - if (name_length > 0) - { - name_length--; - sys_write("\b \b", 3); - } - - continue; - } - - if (name_length < 63) - { - name[name_length++] = character; - sys_write(&character, 1); - } - } - - put("\noue va te faire foutre "); - sys_write(name, name_length); - put("\n"); - sys_exit(0); -} |
