réplica de
https://github.com/Arnau478/quark.git
synced 2024-05-18 20:16:30 +02:00
73 líneas
1,6 KiB
C
73 líneas
1,6 KiB
C
#include <stdint.h>
|
|
#include "shell.h"
|
|
#include "lib/stdio.h"
|
|
#include "lib/string.h"
|
|
#include "lib/memory.h"
|
|
#include "lib/time.h"
|
|
#include "arch/i686/fdc.h"
|
|
|
|
int shell_run(char *cmd){
|
|
int ret = 0;
|
|
|
|
puts("\x1b[32m");
|
|
if(!strcmp(cmd, "hello")){
|
|
printf("Hello!\n");
|
|
}
|
|
else if(!strcmp(cmd, "version")){
|
|
printf("%s\n", OS_VERSION);
|
|
}
|
|
else if(!strcmp(cmd, "clear")){
|
|
clear_screen();
|
|
}
|
|
else if(!strcmp(cmd, "serial")){
|
|
serial_printf("Hello world!\n");
|
|
}
|
|
else if(!strcmp(cmd, "sleep")){
|
|
printf("Sleeping...\n");
|
|
sleep(25);
|
|
printf("Done!\n");
|
|
}
|
|
else if(!strcmp(cmd, "readsect")){
|
|
puts("Sector number: ");
|
|
char secn_str[4];
|
|
gets(secn_str, 3);
|
|
int secn = atoi(secn_str);
|
|
|
|
uint8_t *sector = i686_fdc_read_sector(secn);
|
|
|
|
if(sector){
|
|
int i = 0;
|
|
for(int c = 0; c < 4; c++){
|
|
for(int j = 0; j < 128; j++){
|
|
printf("0x%x ", sector[i+j]);
|
|
}
|
|
i += 128;
|
|
printf("\nPress enter to continue\n");
|
|
gets(NULL, 0);
|
|
}
|
|
}
|
|
else{
|
|
printf("ERROR reading sector %i from disk", secn);
|
|
}
|
|
printf("Done!\n");
|
|
}
|
|
else{
|
|
printf("SHELL: Unknown command \"%s\"\n", cmd);
|
|
ret = 127;
|
|
}
|
|
puts("\x1b[0m");
|
|
|
|
return ret;
|
|
}
|
|
|
|
void shell(){
|
|
puts("\x1b[33mWelcome to quark!\x1b[0m\n\n");
|
|
|
|
for(;;){
|
|
static char cmd_buffer[256];
|
|
puts("$>");
|
|
gets(cmd_buffer, 255);
|
|
shell_run(cmd_buffer);
|
|
}
|
|
}
|