From 09982d80c45805715984cc1cae96c37e4fc148c3 Mon Sep 17 00:00:00 2001 From: hachem Date: Fri, 25 Sep 2026 21:21:09 +0200 Subject: feat: scheduler + cleanup --- user/program.c | 55 ++++++++++++++++++++++++++++++++++++++++++++++++------- 1 file changed, 48 insertions(+), 7 deletions(-) (limited to 'user/program.c') diff --git a/user/program.c b/user/program.c index 8e26128..65621f5 100644 --- a/user/program.c +++ b/user/program.c @@ -1,22 +1,63 @@ -static long sys_write(const char* buffer, unsigned long buffer_size) +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_size) : "memory"); + __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) { - const char* message = "wassup shawty\n"; - unsigned long message_length = 0; - while (message[message_length]) - message_length++; + 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); + } + } - sys_write(message, message_length); + put("\noue va te faire foutre "); + sys_write(name, name_length); + put("\n"); sys_exit(0); } -- cgit v1.3