This commit is contained in:
2021-09-14 18:35:52 +03:00
parent f052f2294e
commit d605c6a016
84 changed files with 3647 additions and 1192 deletions

View File

@ -1,82 +1,52 @@
#include <conio.h>
#include <hal.h>
#include <stdlib.h>
#include <string.h>
#include "../memory/mmngr_ph.h"
#include "apps.h"
void get_str(char *str, int len)
{
kb_key alpha;
int i;
for (i = 0; i<len-1 ; i++) {
text_mode_cursor(cursor_x, cursor_y);
alpha = getkey();
switch (alpha.character) {
case 0x00: --i; break; // Ignore null characters
case 0x7F: --i; break;
case '\b': // Backspace
if (i>0) { // Only backspace our string
if (--cursor_x < 0) { // Begin of row - 1 = End of previous row
cursor_x = 79; cursor_y--;
}
putc_pos(cursor_x, cursor_y, 0);
str[--i] = 0;
}
i--; break;
case '\n': str[i]=0; putc('\n'); return;
default: putc(alpha.character);
str[i] = alpha.character;
str[i+1] = 0;
break;
}
}
}
void shell()
{
apps_osver();
char str[256];
char* param[16];
int i, len, params=0;
//clrscr();
for (;;) {
puts("\n] ");
get_str(str, 256);
cprintf("%#0A\n] ");
cgets(str, 256);
cprintf("\n\r");
len = strlen(str);
len = strlen(str);
// Ignore spaces in front of command
i=0; params = 0;
while (str[i] == ' ') i++;
param[params] = str+i; params++; i++; // Parameter 0 = app itself
// Ignore spaces in front of command
i=0; params = 0;
while (str[i] == ' ') i++;
param[params] = str+i; params++; i++; // Parameter 0 = app itself
for (; i < len && params<16; i++) {
if (str[i] == ' ') str[i]=0;
for (; i < len && params<16; i++) {
if (str[i] == ' ') str[i]=0;
if (str[i] != 0 && str[i-1]==0) {
param[params] = str+i; params++;
}
if (str[i] != 0 && str[i-1]==0) {
param[params] = str+i; params++;
}
}
for (i = 0; strcmp(apps_lst[i], param[0])!=0 && i<apps_count; i++);
switch (i) {
case 0: puts("You must enter a command!\n"); break;
case 0: cprintf("%#0CYou must enter a command!\n\r"); break;
case 1: reboot();
case 2: apps_osver(); break;
case 3: apps_time(); break;
case 4: apps_place(); break;
case 5: apps_clrscr(); break;
case 6: apps_memory(params, (const char**)param); break;
case 6: apps_dump(params, (const char**)param); break;
case 7: apps_help(params, (const char**)param); break;
case 8: puts((char*)get_cpu_vender()); break;
case 8: cprintf("%#0A%s\n\r", (char*)get_cpu_vender()); break;
case 9: apps_memory_status(); break;
default: puts("Invalid function: "); puts(param[0]);
putc('\n');
case 10: apps_read (params, (const char**)param); break;
default: cprintf("%#0CInvalid function: %s\n\r", param[0]);
break;
}
}