From 331cfdee211d07382e7ecab183e3fbb86463cf49 Mon Sep 17 00:00:00 2001 From: Jonathan Turner Date: Wed, 29 Nov 2023 10:07:20 -0500 Subject: [PATCH] if this works imma jump --- Part3/09_memory/kernel/kernel.c | 28 ++++++++++++++++++---------- 1 file changed, 18 insertions(+), 10 deletions(-) diff --git a/Part3/09_memory/kernel/kernel.c b/Part3/09_memory/kernel/kernel.c index 2cc209d..8a28659 100644 --- a/Part3/09_memory/kernel/kernel.c +++ b/Part3/09_memory/kernel/kernel.c @@ -36,20 +36,28 @@ kprint("Stopping the CPU. Bye!\n"); asm volatile("hlt"); } else if (strncmp(input, "ADD", 3) == 0) { + u32 base = 0x10000; + u32 limit = 0x100; + bool valid = true; if (sstrlen(input, 15) > 4) { - char *number = input + 4; - u32 result = digit_conver(number); - int nDigits = digit_len(result); - if (sstrlen(number, 15) > nDigits + 4) { - kprint("There is a limit"); + char *args1 = input + 4; + base = digit_conver(args1); + int nDigits = digit_len(base); + if (sstrlen(args1, 15) > nDigits + 1) { + char *args2 = args1 + nDigits; + limit = digit_conver(args2); + if (limit < 100) { + kprint("That memory address is to below the min of 0x100."); + valid = false; + } } - if (result < 10000) { + if (base < 10000) { kprint("That memory address is reserved by the Kernel, addresses must be 10000+"); - } else { - umem_head = add_node( umem_head, result, 0x100, true, global_id++); + valid = false; } - } else { - umem_head = add_node( umem_head, 0x10000, 0x100, true, global_id++); + } + if (valid) { + umem_head = add_node( umem_head, base, limit, true, global_id++); } } else if (strcmp(input, "LIST") == 0) { kprint("***** FORWARD ****\n");