0.0.2d: Added BGA support, graphics!
This commit is contained in:
@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user