#include "interrupts.h" #include "lib/logger/log.h" // logger facilities #include "lib/bool/bool.h" #include "lib/int/stdint.h" #define FOOLOS_MODULE_NAME "shell" #define COMMAND_LENGTH 255 static char command[COMMAND_LENGTH]; static int pos=0; // in timer: uint16_t timer16; void shell_init() { pos=0; command[0]=0; scr_put_string("Command> "); } void shell_put(char x) { log(FOOLOS_MODULE_NAME,FOOLOS_LOG_DEBUG,"char:%c",x); if(pos0); pos--; command[pos]=0; } // TODO: EXECUTE LATER not inside INTERRUPT !!! void shell_execute() { //scr_nextline(); //scr_put_string(" processing command: "); //scr_put_string_nl(command); if(1==strcmp(command,"TIME",0)) { log(FOOLOS_MODULE_NAME,FOOLOS_LOG_INFO,"%d seconds passed since system start.",timer16); } else if(1==strcmp(command,"EIGHT",0)) { int_generate88(); } else if(1==strcmp(command,"MEM",0)) { mmap_show_free(); } else if(1==strcmp(command,"ALLOC",0)) { uint32_t *malloc= pmmngr_alloc_block(); log(FOOLOS_MODULE_NAME,FOOLOS_LOG_INFO,"allocated 4KB block at: %08x.",malloc); } else if(1==strcmp(command,"READ",0)) { uint8_t *read= flpydsk_read_sector (10); } else { log(FOOLOS_MODULE_NAME,FOOLOS_LOG_INFO,"command unknown"); } pos=0; scr_nextline(); scr_put_string("Command> "); }