0.0.2d: Added BGA support, graphics!

This commit is contained in:
2026-06-05 16:14:14 -05:00
parent 5971218b56
commit f3b2f95af5
40 changed files with 1007 additions and 1197 deletions

View File

@ -21,7 +21,7 @@ const char* shell_version = "0.0.2";
char* prompt = NULL;
int command = -1;
bool _debug = true;
bool _debug = false;
int execute(void);
@ -84,11 +84,13 @@ static char* commands[] = {
"exec",
"int16test",
"startbga",
NULL,
};
const int NUM_COMMANDS = 19; /* Yes, including the NULL */
const int NUM_COMMANDS = 21; /* Yes, including the NULL */
void kshell_start(void)
{
@ -120,7 +122,7 @@ void kshell_start(void)
command = -1;
if (strcmp(i, "") == 0)
if (strlen(i) == 0)
{
continue;
}
@ -129,6 +131,9 @@ void kshell_start(void)
break;
}
/*char** argv = split(i, ' ');*/
for (int j = 0; j < NUM_COMMANDS; j++)
{
if (strcmp(i, commands[j]) == 0)
@ -171,10 +176,10 @@ void kshell_start(void)
}
printf("\n");
printf("C: %s; %i\n", commands[command], command);
}
printf("C: %s; %i\n", commands[command], command);
execute();
} while (1);
@ -269,8 +274,8 @@ int execute(void)
extern uint8_t __kernel_end;
size_t kernel_size = (size_t)&__kernel_end - (size_t)&__kernel_start;
printf("Kernel start: 0x%x\n", (&__kernel_start));
printf("Kernel end: 0x%x\n", (&__kernel_end));
printf("Kernel start: %p\n", (&__kernel_start));
printf("Kernel end: %p\n", (&__kernel_end));
printf("Kernel size (bytes): %llu\n", (uint64_t) kernel_size);
printf("Kernel size (kbytes): %llu\n", (((uint64_t) kernel_size) / 1000));
printf("Kernel size (mbytes): %f\n", (((uint64_t) kernel_size) / 1000.0) / 1000.0);
@ -287,9 +292,11 @@ int execute(void)
extern uint8_t __bss_start;
extern uint8_t __bss_end;
printf(".text: %i\n.data: %i\n.rodata: %i\n.bss: %i\n", ((&__kernel_text_end) - (&__kernel_text_start)), ((&__kernel_data_end) - (&__kernel_data_start)),
((&__kernel_rodata_end) - (&__kernel_rodata_start)), ((&__bss_end) - (&__bss_start)));
printf(".text: %i\n.data: %i\n.rodata: %i\n.bss: %i\n", ((&__kernel_text_end) - (&__kernel_text_start)),
((&__kernel_data_end) - (&__kernel_data_start)),
((&__kernel_rodata_end) - (&__kernel_rodata_start)),
((&__bss_end) - (&__bss_start)));
break;
}
case 8: {
@ -412,7 +419,7 @@ int execute(void)
}
case 14:
{
#if 0
#if 1
void taskA() { while (1) printf("A"); }
void taskB() { while (1) printf("B"); }
@ -516,13 +523,27 @@ int execute(void)
printf("Parsing ELF headers\n");
elf_executable_t* f = load_elf32(buffer);
elf_executable_t* f = NULL;
int j = load_elf32(buffer, &f);
printf("Attempting execution of executable...\n");
if (j != 0)
{
printf("Invalid ELF file\n");
goto b_1;
}
printf("Attempting execution of executable at (%p)...\n", f->entry_point);
retv = f->entry_point();
printf("\nreturn value: %i\n", retv);
b_1:
if (f)
{
free(f);
}
break;
}
@ -536,6 +557,17 @@ int execute(void)
printf("test ran\n");
break;
}
case 19:
{
extern void bga_defaults(void);
bga_defaults();
extern void bga_drawline(int, int, int, int, uint32_t);
bga_drawline(0, 0, 100, 100, 0x00FFFF00);
break;
}
}