1+ #include "shell.h"
2+ #include "command_ls.h"
3+ #include "../../../Drivers/Vga/vga.h"
4+ #include "../../../SystemLib/SysCalls/basic_syscall.h"
5+ #include "../../../SystemLib/TimeMng/time.h"
6+ #include "../../../SystemLib/SystemIO/io.h"
7+ #include "../../../Drivers/Keyboard/keyboard.h"
8+ #include "../../../SystemLib/Std/std.h"
9+ #include "../SystemManagement/sysmng.h"
10+
11+ void shell_inp () {
12+ vga_set_text_color (VGA_COLOR_GREEN );
13+ vga_print_scr ("root" );
14+ vga_set_text_color (VGA_COLOR_WHITE );
15+ vga_print_scr ("@" );
16+ vga_set_text_color (VGA_COLOR_CYAN );
17+ vga_print_scr ("shell" );
18+ vga_set_text_color (VGA_COLOR_WHITE );
19+ vga_print_scr ("> " );
20+ }
21+
22+ void shell_init () {
23+ char cmd [MAX_CMD_LEN ];
24+ uint8_t idx = 0 ;
25+
26+ shell_inp ();
27+
28+ while (1 ) {
29+ char c = get_char ();
30+
31+ if (c == '\b' ) {
32+ if (idx > 0 ) {
33+ idx -- ;
34+ vga_bckspc ();
35+ }
36+ } else if (c == '\n' ) {
37+ vga_newline ();
38+ cmd [idx ] = 0 ;
39+ idx = 0 ;
40+
41+ if (strcmp (cmd , "list" ) == 0 ) {
42+ vga_print_scr ("Commands: clear, cls, list, seqlist, ver, shellinfo, osfetch, shutdown, reboot, time, version, echo\n" );
43+ } else if (strcmp (cmd , SEQLIST_STRING ) == 0 ) {
44+ vga_print_scr_nw ("Commands:" );
45+ vga_print_scr_nw ("clear" );
46+ vga_print_scr_nw ("cls" );
47+ vga_print_scr_nw ("list" );
48+ vga_print_scr_nw ("seqlist" );
49+ vga_print_scr_nw ("ver" );
50+ vga_print_scr_nw ("shellinfo" );
51+ vga_print_scr_nw ("osfetch" );
52+ vga_print_scr_nw ("shutdown" );
53+ vga_print_scr_nw ("reboot" );
54+ vga_print_scr_nw ("time" );
55+ vga_print_scr_nw ("version" );
56+ vga_print_scr_nw ("echo" );
57+ } else if (strcmp (cmd , OSFETCH_STRING ) == 0 ) {
58+
59+ vga_print_scr_nw (" ____ _____ root@shell" );
60+ vga_print_scr_nw (" / __ \\ / ___/ ----------" );
61+ vga_print_scr_nw ("| | | | \\__ \\ OS: OpenKernel 1.0" );
62+ vga_print_scr_nw ("| | | |___/ / Kernel: OpenKernel 1.0" );
63+ vga_print_scr_nw ("| | | |___/ / Bootloader Name: GNU GRUB Bootloader" );
64+ vga_print_scr_nw ("| | | ___/ / Bootloader version: 2.12" );
65+ vga_print_scr_nw (" \\____/|_____/ Architecture: x86 (32-bit)" );
66+ vga_print_scr_nw (" Shell: OpenKernel Shell 1.0" );
67+ } else if (strcmp (cmd , CLEAR_STRING ) == 0 || strcmp (cmd , CLS_STRING ) == 0 ) {
68+ vga_screen_clear ();
69+ } else if (strcmp (cmd , TIME_STRING ) == 0 ) {
70+ print_time ();
71+ } else if (strncmp (cmd , ECHO_STRING , 5 ) == 0 ) {
72+ vga_print_scr (cmd + 5 );
73+ vga_newline ();
74+ } else if (strcmp (cmd , SHELLINFO_STRING ) == 0 ) {
75+ vga_print_scr_nw ("OpenKernel Shell 1.0" );
76+ } else if (strcmp (cmd , SHUTDOWN_STRING ) == 0 ) {
77+ sys_next_status ("S" );
78+ } else if (strcmp (cmd , REBOOT_STRING ) == 0 ) {
79+ sys_next_status ("R" );
80+ } else if (strcmp (cmd , VERSION_STRING ) == 0 || strcmp (cmd , VER_STRING ) == 0 ) {
81+ vga_print_scr ("OpenKernel v1.0" );
82+ vga_newline ();
83+ } else {
84+ vga_print_scr ("The command you entered could not be found. Please type list for a list of all commands." );
85+ vga_newline ();
86+ }
87+
88+ shell_inp ();
89+ } else {
90+ if (idx < MAX_CMD_LEN - 1 ) {
91+ cmd [idx ++ ] = c ;
92+ ptchar (c );
93+ }
94+ }
95+ }
96+ }
0 commit comments