OSDN Git Service

SimpleHTMLEditorを追加。
[chnosproject/CHNOSProject.git] / CHNOSProject / chnos / tolset_chn_000 / chnos_008 / chnos / console.c
diff --git a/CHNOSProject/chnos/tolset_chn_000/chnos_008/chnos/console.c b/CHNOSProject/chnos/tolset_chn_000/chnos_008/chnos/console.c
deleted file mode 100644 (file)
index 245b623..0000000
+++ /dev/null
@@ -1,459 +0,0 @@
-\r
-#include "core.h"\r
-#include <string.h>\r
-\r
-void console_main(UI_Console *cons)\r
-{      \r
-       int i;\r
-       uint fifobuf[CONSOLE_FIFO_BUF_SIZE];\r
-       uchar s[128];\r
-       uchar cmdline[CONSOLE_CMDLINE_BUF_SIZE];\r
-       uint cmdlines;\r
-       bool cmdline_overflow;\r
-\r
-       cons->cursor_state = true;\r
-       cons->cursor_on = false;\r
-\r
-       cons->prompt.x = 0;\r
-       cons->prompt.y = 0;\r
-\r
-       fifo32_init(&cons->task->fifo, CONSOLE_FIFO_BUF_SIZE, fifobuf, cons->task);\r
-       cons->timer = timer_alloc();\r
-       timer_init(cons->timer, &cons->task->fifo, 1);\r
-       timer_settime(cons->timer, 50);\r
-\r
-       boxfill_win(cons->win, CONSOLE_COLOR_BACKGROUND, 0, 0, cons->win->xsize, cons->win->ysize);\r
-       cons_put_prompt(cons);\r
-\r
-       cons_reset_cmdline(cmdline, &cmdlines, &cmdline_overflow);\r
-\r
-       for(;;){\r
-               io_cli();\r
-               if(fifo32_status(&cons->task->fifo) == 0){\r
-                       task_sleep(cons->task);\r
-                       io_sti();\r
-               } else {\r
-                       i = fifo32_get(&cons->task->fifo);\r
-                       io_sti();\r
-                       if(i == 1){\r
-                               if(cons->cursor_on){\r
-                                       if(cons->cursor_state){\r
-                                               cons->cursor_c = CONSOLE_COLOR_CHAR;\r
-                                               cons->cursor_state = false;\r
-                                       } else{\r
-                                               cons->cursor_c = CONSOLE_COLOR_BACKGROUND;\r
-                                               cons->cursor_state = true;\r
-                                       }\r
-                                       boxfill_win(cons->win, cons->cursor_c, cons->cursor.x, cons->cursor.y, cons->cursor.x + 8, cons->cursor.y +16);\r
-                               }\r
-                               timer_settime(cons->timer, 50);\r
-                       } else if(i == CONSOLE_FIFO_CURSOR_START){\r
-                               cons->cursor_on = true;\r
-                       } else if(i == CONSOLE_FIFO_CURSOR_STOP){\r
-                               cons->cursor_on = false;\r
-                               boxfill_win(cons->win, CONSOLE_COLOR_BACKGROUND, cons->cursor.x, cons->cursor.y, cons->cursor.x + 8, cons->cursor.y +16);\r
-                       } else if(CONSOLE_FIFO_START_KEYB <= i && i <= CONSOLE_FIFO_START_KEYB + DATA_BYTE){\r
-                               i -= CONSOLE_FIFO_START_KEYB;\r
-                               if(i == 0x0e){\r
-                                       putfonts_win(cons->win, cons->cursor.x, cons->cursor.y, CONSOLE_COLOR_BACKGROUND, CONSOLE_COLOR_BACKGROUND, " ");\r
-                                       cons->cursor.x -= 8;\r
-                                       cons_check_newline(cons);\r
-                                       putfonts_win(cons->win, cons->cursor.x, cons->cursor.y, CONSOLE_COLOR_BACKGROUND, CONSOLE_COLOR_BACKGROUND, " ");\r
-                                       if(cmdlines != 0){\r
-                                               cmdlines--;\r
-                                               cmdline[cmdlines] = 0x00;\r
-                                       }\r
-                               } else if(i == 0x0a){\r
-                                       cons_command_start(cons, cmdline, &cmdlines, &cmdline_overflow);\r
-                               } else{\r
-                                       s[0] = (uchar)i;\r
-                                       s[1] = 0x00;\r
-                                       cons_put_str(cons, s);\r
-                                       if(cmdlines >= CONSOLE_CMDLINE_BUF_SIZE){\r
-                                               cmdline_overflow = true;\r
-                                               cmdlines = 0;\r
-                                       }\r
-                                       cmdline[cmdlines] = (uchar)i;\r
-                                       cmdline[cmdlines + 1] = 0x00;\r
-                                       cmdlines++;\r
-                               }\r
-                       }\r
-               }\r
-       }\r
-}\r
-\r
-void cons_reset_cmdline(uchar *cmdline, uint *cmdlines, bool *cmdline_overflow)\r
-{\r
-       *cmdlines = 0;\r
-       *cmdline_overflow = false;\r
-       cmdline[*cmdlines] = 0x00;\r
-       return;\r
-}\r
-\r
-void cons_command_start(UI_Console *cons, uchar *cmdline, uint *cmdlines, bool *cmdline_overflow)\r
-{\r
-       uchar s[128], t[7];\r
-       uint i;\r
-       UUID uuid;\r
-\r
-       i = 0;\r
-\r
-       if(cmdline[0] != 0x00){\r
-               cons_new_line_no_prompt(cons);\r
-       }\r
-       if(strcmp(cmdline, "mem") == 0){\r
-               cons_command_mem(cons);\r
-       } else if(strcmp(cmdline, "cls") == 0){\r
-               cons->prompt.x = 0;\r
-               cons->prompt.y = 0;\r
-               boxfill_win(cons->win, CONSOLE_COLOR_BACKGROUND, 0, 0, cons->win->xsize, cons->win->ysize);\r
-               cons_reset_cmdline(cmdline, cmdlines, cmdline_overflow);\r
-               cons_put_prompt(cons);\r
-               goto end;\r
-       } else if(strcmp(cmdline, "dir") == 0){\r
-               cons_command_dir(cons);\r
-       } else if(strcmp(cmdline, "reset") == 0){\r
-               reset_cpu();\r
-       } else if(strcmp(cmdline, "uuid") == 0){\r
-               gen_UUID(&uuid);\r
-               sprintf(s, "{%02X%02X%02X%02X-%02X%02X-%02X%02X-%02X%02X-%02X%02X%02X%02X%02X%02X}\r\n", uuid.data[0], uuid.data[1], uuid.data[2], uuid.data[3], uuid.data[4], uuid.data[5], uuid.data[6], uuid.data[7], uuid.data[8], uuid.data[9], uuid.data[10], uuid.data[11], uuid.data[12], uuid.data[13], uuid.data[14], uuid.data[15]);\r
-               cons_put_str(cons, s);\r
-       } else if(strcmp(cmdline, "date") == 0){\r
-               readrtc(t);\r
-               sprintf(s, "%02X%02X.%02X.%02X %02X:%02X:%02X\n", t[6], t[5], t[4], t[3], t[2], t[1], t[0]);\r
-               cons_put_str(cons, s);\r
-       } else if(strcmp(cmdline, "sht") == 0){\r
-               sprintf(s, " console = %d\n top = %d\n top_get = %d\n", cons->win->win->height, system.ui.draw.sht.ctrl.top, sheet_get_topheight());\r
-               cons_put_str(cons, s);\r
-       } else if(strncmp(cmdline, "fdc", 3) == 0){\r
-               cons_command_fdc(cons, cmdline);\r
-       } else if(strncmp(cmdline, "cpuid ", 5) == 0){\r
-               cons_command_cpuid(cons, cmdline);\r
-       } else if(strncmp(cmdline, "systeminfo", 10) == 0){\r
-               cons_command_systeminfo(cons, cmdline);\r
-       } else if(strncmp(cmdline, "type ", 5) == 0){\r
-               cons_command_type(cons, cmdline);\r
-       } else if(cmdline[0] != 0x00){\r
-               for(i = 0; i < 11 && cmdline[i] != 0x00; i++){\r
-                       if(cmdline[i] <= ' ' || cmdline[i] == '.') break;\r
-               }\r
-               cmdline[i] = 0x00;\r
-               if(cons_app_hrb_start(cons, cmdline) == 0xFFFFFFFF){\r
-                       cons_put_str(cons, "Bad Command...\n");\r
-               }\r
-       }\r
-       cons_reset_cmdline(cmdline, cmdlines, cmdline_overflow);\r
-       cons_new_line(cons);\r
-end:\r
-       return;\r
-}\r
-\r
-void cons_command_mem(UI_Console *cons)\r
-{\r
-       uchar s[32];\r
-\r
-       sprintf(s, "ÒÓØ°:%dMB\n", system.io.mem.total >> 20);\r
-       cons_put_str(cons, s);\r
-       sprintf(s, "±·:%dKB\n", sys_memman_free_total() >> 10);\r
-       cons_put_str(cons, s);\r
-       return;\r
-}\r
-\r
-void cons_command_dir(UI_Console *cons)\r
-{\r
-       uchar s[64];\r
-       int i, j;\r
-\r
-       for(i = 0; i < 0xe0; i++){\r
-               if(system.io.file.list[i].name[0] == 0x00) break;\r
-               if(system.io.file.list[i].name[0] != 0xe5){\r
-                       if((system.io.file.list[i].type & 0x18) == 0){\r
-                               sprintf(s, "FILENAME.EXT %7d %04d/%02d/%02d-%02d:%02d:%02d\n", system.io.file.list[i].size, (system.io.file.list[i].date >> 9) + 1980, (system.io.file.list[i].date & 0x01e0) >> 5, system.io.file.list[i].date & 0x001f, system.io.file.list[i].time >> 11, (system.io.file.list[i].time & 0x07e0) >> 5, system.io.file.list[i].time & 0x1f);\r
-                               for(j = 0; j < 8; j++){\r
-                                       s[j] = system.io.file.list[i].name[j];\r
-                               }\r
-                               s[ 9] = system.io.file.list[i].ext[0];\r
-                               s[10] = system.io.file.list[i].ext[1];\r
-                               s[11] = system.io.file.list[i].ext[2];\r
-                               cons_put_str(cons, s);\r
-                       }\r
-               }\r
-       }\r
-       return;\r
-}\r
-\r
-void cons_command_fdc(UI_Console *cons, uchar *cmdline)\r
-{\r
-       int i;\r
-\r
-       cons_put_str(cons, "FDCconfig...\n");\r
-       if(cmdline[3] == 0x00){\r
-               i = io_in8(0x03f2);\r
-               if((i & 0x10) != 0) cons_put_str(cons, "FD0 Motor-ON\n");\r
-               else cons_put_str(cons, "FD0 Motor-OFF\n");\r
-               if((i & 0x20) != 0) cons_put_str(cons, "FD1 Motor-ON\n");\r
-               else cons_put_str(cons, "FD1 Motor-OFF\n");\r
-               if((i & 0x40) != 0) cons_put_str(cons, "FD2 Motor-ON\n");\r
-               else cons_put_str(cons, "FD2 Motor-OFF\n");\r
-               if((i & 0x80) != 0) cons_put_str(cons, "FD3 Motor-ON\n");\r
-               else cons_put_str(cons, "FD3 Motor-OFF\n");\r
-       }\r
-       if(cmdline[3] == ' '){\r
-               if(cmdline[4] == '0'){\r
-                       if(cmdline[5] == ' ' && cmdline[6] == 'o' && cmdline[7] == 'n' && cmdline[8] == 0x00){\r
-                               fdc_motor_on(0);\r
-                       } else if(cmdline[5] == ' ' && cmdline[6] == 'o' && cmdline[7] == 'f' && cmdline[8] == 'f' && cmdline[9] == 0x00){\r
-                               fdc_motor_off(0);\r
-                       }\r
-               } else if(cmdline[4] == '1'){\r
-                       if(cmdline[5] == ' ' && cmdline[6] == 'o' && cmdline[7] == 'n' && cmdline[8] == 0x00){\r
-                               fdc_motor_on(1);\r
-                       } else if(cmdline[5] == ' ' && cmdline[6] == 'o' && cmdline[7] == 'f' && cmdline[8] == 'f' && cmdline[9] == 0x00){\r
-                               fdc_motor_off(1);\r
-                       }\r
-               } else if(cmdline[4] == '2'){\r
-                       if(cmdline[5] == ' ' && cmdline[6] == 'o' && cmdline[7] == 'n' && cmdline[8] == 0x00){\r
-                               fdc_motor_on(2);\r
-                       } else if(cmdline[5] == ' ' && cmdline[6] == 'o' && cmdline[7] == 'f' && cmdline[8] == 'f' && cmdline[9] == 0x00){\r
-                               fdc_motor_off(2);\r
-                       }\r
-               } else if(cmdline[4] == '3'){\r
-                       if(cmdline[5] == ' ' && cmdline[6] == 'o' && cmdline[7] == 'n' && cmdline[8] == 0x00){\r
-                               fdc_motor_on(3);\r
-                       } else if(cmdline[5] == ' ' && cmdline[6] == 'o' && cmdline[7] == 'f' && cmdline[8] == 'f' && cmdline[9] == 0x00){\r
-                               fdc_motor_off(3);\r
-                       }\r
-               }\r
-       }\r
-       return;\r
-}\r
-\r
-void cons_command_type(UI_Console *cons, uchar *cmdline)\r
-{\r
-       int i, j;\r
-       uchar s[32];\r
-       uchar *p;\r
-\r
-       j = 0;\r
-       for(i = 5; cmdline[i] != 0x00; i++){\r
-               s[i - 5] = cmdline[i];\r
-               s[i - 4] = 0x00;\r
-       }\r
-       i = search_file(s);\r
-       if(i != 0xFFFFFFFF){\r
-               j = system.io.file.list[i].size;\r
-               p = sys_memman_alloc(j); \r
-               load_file(i, p);\r
-               for(i = 0; i < j; i++){\r
-                       s[0] = p[i];\r
-                       s[1] = 0x00;\r
-                       cons_put_str(cons, s);\r
-               }\r
-               sys_memman_free(p, j);\r
-       } else{\r
-               cons_put_str(cons, "File not found...\n");\r
-       }\r
-       return;\r
-}\r
-\r
-void cons_command_cpuid(UI_Console *cons, uchar *cmdline)\r
-{\r
-       uint i, j;\r
-       bool cpuide;\r
-       uchar s[32];\r
-       uchar idbuf[32];\r
-\r
-       i = io_load_eflags();\r
-       io_store_eflags((i | 0x00200000));\r
-       j = io_load_eflags();   \r
-       if(i != j){\r
-               cpuide = true;\r
-               cons_put_str(cons, "CPUID is Enable.\n");\r
-       } else{\r
-               cpuide = false;\r
-               cons_put_str(cons, "CPUID is Disable.\n");\r
-       }\r
-       io_store_eflags((j & ~0x00200000));\r
-\r
-       idbuf[16] = '\n';\r
-       idbuf[17] = 0x00;\r
-\r
-       if(cpuide){\r
-               if(strcmp((uchar *)(cmdline + 6), "0x00000000") == 0){\r
-                       s[16] = 0x00;\r
-                       cpuid(idbuf, 0x00000000);\r
-                       sprintf(s, "MAX=0x%02X%02X%02X%02X\n", idbuf[0], idbuf[1], idbuf[2], idbuf[3]);\r
-                       cons_put_str(cons, s);\r
-                       cons_put_str(cons, (uchar *)(idbuf + 4));\r
-               }\r
-       }\r
-\r
-       return;\r
-}\r
-\r
-void cons_command_systeminfo(UI_Console *cons, uchar *cmdline)\r
-{\r
-       uchar s[64];\r
-\r
-       sprintf(s, "CHNOSProject ver.Beta008\n Compiled at %s %s\n", __DATE__, __TIME__);\r
-       cons_put_str(cons, s);\r
-       return;\r
-}\r
-\r
-uint cons_app_hrb_start(UI_Console *cons, uchar *cmdline)\r
-{\r
-       uint i, j, k;\r
-       uchar *p, *q;\r
-       UI_Task *task = task_now();\r
-       FORMAT_Haribote *head;\r
-\r
-       i = search_file(cmdline);\r
-       if(i == 0xFFFFFFFF){\r
-               strcat(cmdline, ".hrb");\r
-               i = search_file(cmdline);\r
-       }\r
-       if(i != 0xFFFFFFFF){\r
-               j = system.io.file.list[i].size;\r
-               p = sys_memman_alloc(j);\r
-               head = (FORMAT_Haribote *) p;\r
-               load_file(i, p);\r
-               if(j >= 36 && strncmp(p + 4, "Hari", 4) == 0 && *p == 0x00){\r
-                       q = sys_memman_alloc(head->DataSegmentSize);\r
-                       cons->app_ds_base = q;\r
-                       cons->app_cs_base = p;\r
-                       set_segmdesc(system.io.mem.segment.gdt + 1003, j - 1, (int)p, AR_CODE32_ER + AR_APP);\r
-                       set_segmdesc(system.io.mem.segment.gdt + 1004, head->DataSegmentSize - 1, (int)q, AR_DATA32_RW + AR_APP);\r
-                       for(i = 0; i < head->DataSegmentSize; i++){\r
-                               q[head->DefaultESP + i] = p[head->OriginDataSection + i];\r
-                       }\r
-                       start_app(0x1b, 1003 * 8, head->DefaultESP, 1004 * 8, &(task->tss.esp0));\r
-\r
-                       for(k = 0;k < MAX_WINDOWS;k++){\r
-                               if(system.ui.window.ctrl.winfos[k].task == task){\r
-                                       sys_memman_free(system.ui.window.ctrl.winfos[k].buf, system.ui.window.ctrl.winfos[k].winxsize * system.ui.window.ctrl.winfos[k].winysize * (system.data.info.vesa.BitsPerPixel >> 3));\r
-                                       free_window_app(&system.ui.window.ctrl.winfos[k]);      \r
-                               }\r
-                       }\r
-\r
-                       sys_memman_free(q, head->DataSegmentSize);\r
-               } else{\r
-                       cons_put_str(cons, ".hrb̧²ÙÌ«°Ï¯Ä´×°\n");\r
-               }\r
-               sys_memman_free(p, j);\r
-               return i;\r
-       }\r
-       return 0xFFFFFFFF;\r
-}\r
-\r
-void cons_put_str(UI_Console *cons, uchar *str)\r
-{\r
-       int i;\r
-       uchar s[3];\r
-\r
-       for(i = 0; i < 128; i++){\r
-               if(str[i] == 0x00){\r
-                       break;\r
-               } else if(str[i] == '\r'){\r
-\r
-               } else if(str[i] == '\n'){\r
-                       if(cons->cursor.x != 0)cons_new_line_no_prompt(cons);\r
-               } else if(str[i] == '\t'){\r
-                       for(;;){\r
-                               putfonts_win(cons->win, cons->cursor.x, cons->cursor.y, CONSOLE_COLOR_CHAR, CONSOLE_COLOR_BACKGROUND, " ");\r
-                               cons->cursor.x += 8;\r
-                               cons_check_newline(cons);\r
-                               if((cons->cursor.x & 0x1f) == 0 && cons->cursor.x != 0) break;\r
-                       }\r
-               } else{\r
-                       s[0] = str[i];\r
-                       s[1] = 0x00;\r
-                       putfonts_win(cons->win, cons->cursor.x, cons->cursor.y, CONSOLE_COLOR_CHAR, CONSOLE_COLOR_BACKGROUND, s);\r
-                       cons->cursor.x += 8;\r
-                       cons_check_newline(cons);\r
-               }\r
-       }\r
-       return;\r
-}\r
-\r
-void cons_put_char(UI_Console *cons, uchar c)\r
-{\r
-       uchar s[2];\r
-\r
-       s[0] = c;\r
-       s[1] = 0x00;\r
-       cons_put_str(cons, s);\r
-       return;\r
-}\r
-\r
-void cons_put_prompt(UI_Console *cons)\r
-{\r
-       putfonts_win(cons->win, cons->cursor.x, cons->cursor.y, CONSOLE_COLOR_BACKGROUND, CONSOLE_COLOR_BACKGROUND, " ");\r
-       putfonts_win(cons->win, cons->prompt.x, cons->prompt.y, CONSOLE_COLOR_CHAR, CONSOLE_COLOR_BACKGROUND, ">");\r
-       cons->cursor.x = cons->prompt.x + 8;\r
-       cons->cursor.y = cons->prompt.y;\r
-       return;\r
-}\r
-\r
-void cons_new_line(UI_Console *cons)\r
-{\r
-       if(cons->cursor.y <= system.ui.console.org_ysize - 17){\r
-               cons->prompt.y = cons->cursor.y + 16;\r
-               cons_put_prompt(cons);\r
-       } else{\r
-               putfonts_win(cons->win, cons->cursor.x, cons->cursor.y, CONSOLE_COLOR_BACKGROUND, CONSOLE_COLOR_BACKGROUND, " ");\r
-               cons_slide_line(cons);\r
-               cons->prompt.y = (system.ui.console.org_ychars - 1) * 16;\r
-               cons_put_prompt(cons);\r
-       }\r
-       return;\r
-}\r
-\r
-void cons_new_line_no_prompt(UI_Console *cons)\r
-{\r
-       if(cons->cursor.y <= system.ui.console.org_ysize - 17){\r
-               putfonts_win(cons->win, cons->cursor.x, cons->cursor.y, CONSOLE_COLOR_BACKGROUND, CONSOLE_COLOR_BACKGROUND, " ");\r
-               cons->cursor.x = 0;\r
-               cons->cursor.y = cons->cursor.y + 16;\r
-       } else{\r
-               putfonts_win(cons->win, cons->cursor.x, cons->cursor.y, CONSOLE_COLOR_BACKGROUND, CONSOLE_COLOR_BACKGROUND, " ");\r
-               cons_slide_line(cons);\r
-               cons->cursor.x = 0;\r
-       }\r
-       return;\r
-}\r
-\r
-void cons_slide_line(UI_Console *cons)\r
-{\r
-       scrool_win(cons->win);\r
-       refresh_window(cons->win);\r
-       return;\r
-}\r
-\r
-void cons_check_newline(UI_Console *cons)\r
-{\r
-       if(cons->cursor.x <= cons->prompt.x){\r
-               if(cons->cursor.y != cons->prompt.y){\r
-                       if(cons->cursor.x < cons->prompt.x){\r
-                               cons->cursor.y -= 16;\r
-                               cons->cursor.x = system.ui.console.org_xsize - 8;\r
-                       }\r
-               } else{\r
-                       cons->cursor.y = cons->prompt.y;\r
-                       cons->cursor.x = 8;\r
-               }\r
-       } else if(cons->cursor.x >= system.ui.console.org_xsize){\r
-               if(cons->cursor.y <= system.ui.console.org_ysize - 17){\r
-                       cons->cursor.x = 0;\r
-                       cons->cursor.y += 16;\r
-               } else{\r
-                       cons_slide_line(cons);\r
-                       cons->cursor.x = 0;\r
-                       if(cons->prompt.y > 0) cons->prompt.y -= 16;\r
-                       else{\r
-                               cons->prompt.y = 0;\r
-                               cons->prompt.x = 0;\r
-                       }\r
-               }\r
-       } \r
-       return;\r
-}\r