89 lines
3.1 KiB
C++
89 lines
3.1 KiB
C++
#include "superVisorTerminal.h"
|
|
|
|
void startSuperVisorTerminal(BootInfo* bootinfo)
|
|
{
|
|
bool isRunning = true;
|
|
while (isRunning){
|
|
|
|
printf("SUPERVISOR:>$ " );
|
|
int characterCount = 0;
|
|
char command[10] = "";
|
|
|
|
// NOTE: lets just show a kernel prompt
|
|
uint8_t ScanCode = getKey();
|
|
while( ScanCode != 0x1C )
|
|
{
|
|
char character = getASCIIKey();
|
|
kterm_put(character );
|
|
// wHAT THE HELL
|
|
|
|
if( characterCount < 10 ){
|
|
command[characterCount] = character;
|
|
characterCount++;
|
|
}
|
|
|
|
ScanCode = getKey();
|
|
}
|
|
printf("\n");
|
|
KeyHandled();
|
|
|
|
|
|
if ( strncmp("DATE", command , characterCount ) == 0 )
|
|
{
|
|
read_rtc();
|
|
printf("======= Time & Date ==========\n");
|
|
printf(" - Date: %02d-%02d-%02d\n",day, month, year);
|
|
printf(" - Time: %02d:%02d:%02d\n" , hour, minute, second);
|
|
printf(" - Ticks: %09d\n", pit_tick);
|
|
}
|
|
else if( strncmp ("MEMORY" , command , characterCount) == 0 )
|
|
{
|
|
// Show memory layout
|
|
printf("========= Memory ==========\n");
|
|
printf("Kernel MemoryMap:\n");
|
|
printf("kernel: 0x%x - 0x%x\n", &kernel_begin , &kernel_end);
|
|
printf("Frames used: 0x%x blocks of 4 KiB\n", 0);
|
|
const int bytesInGiB = 1073741824;
|
|
int64_t bytesLeft = (bootinfo->memory->TotalMemory % bytesInGiB) / bytesInGiB;
|
|
int64_t effectiveNumberOfGib = bootinfo->memory->TotalMemory / bytesInGiB;
|
|
|
|
int64_t GiBs = effectiveNumberOfGib + bytesLeft;
|
|
|
|
printf("Available Memory: %d bytes, %d GiB\n", bootinfo->memory->TotalMemory, GiBs );
|
|
printf("Reserved Memory: %d bytes\n", bootinfo->memory->ReservedMemory);
|
|
|
|
//printf("\n\n");
|
|
//PrintPhysicalMemoryAllocation( );
|
|
|
|
|
|
}
|
|
else if(strncmp("TEST", command, characterCount) == 0)
|
|
{
|
|
// TEST #DE exception
|
|
asm volatile ("MOV $4, %AX ; MOV $0, %BX ; DIV %BX"); // IRS 0
|
|
}
|
|
else if (strncmp("VERSION", command , characterCount) == 0)
|
|
{
|
|
// Show version information
|
|
printf("========= Version ========\n");
|
|
printf("Kernel v%d\n", 0);
|
|
|
|
}
|
|
else if(strncmp("CLEAR", command, characterCount) == 0)
|
|
{
|
|
kterm_init();
|
|
printf("|=== BarinkOS ===|\n");
|
|
}
|
|
else if(strncmp("FAT", command, characterCount) == 0){
|
|
isRunning = false;
|
|
continue;
|
|
}
|
|
else
|
|
{
|
|
printf("Unknown command\n");
|
|
}
|
|
|
|
|
|
delay(1000);
|
|
}
|
|
} |