2 * Sample program for Hyper Operating System V4 Advance
5 * @brief %jp{ブート部}%en{boot}
7 * Copyright (C) 1998-2008 by Project HOS
8 * http://sourceforge.jp/projects/hos/
16 #include "kernel_id.h"
17 #include "system/system/system.h"
18 #include "system/sysapi/sysapi.h"
19 #include "system/file/console.h"
20 #include "system/process/process.h"
21 #include "system/command/command.h"
22 #include "driver/console/pcattext/pcattextdrv.h"
23 #include "driver/console/vt100/vt100drv.h"
24 #include "driver/serial/pc16550/pc16550drv.h"
25 #include "application//syscmd/shell/shell.h"
26 #include "application//syscmd/commandlist/commandlist.h"
27 #include "application//syscmd/processlist/processlist.h"
28 #include "application/utility/timecmd/timecmd.h"
29 #include "application/utility/memdump/memdump.h"
30 #include "application/utility/memwrite/memwrite.h"
31 #include "application/utility/memtest/memtest.h"
32 #include "application/utility/keytest/keytest.h"
33 #include "application/example/hello/hello.h"
39 long g_SystemHeap[256 * 1024 / sizeof(long)];
43 int Boot_Process(VPARAM Param);
47 void Boot_Task(VP_INT exinf)
49 T_SYSTEM_INITIALIZE_INF SysInf;
52 /*************************/
54 /*************************/
58 /*************************/
60 /*************************/
63 SysInf.pSysMemBase = g_SystemHeap;
64 SysInf.SysMemSize = sizeof(g_SystemHeap);
65 SysInf.SysMemAlign = 32;
66 SysInf.pIoMemBase = NULL;
67 SysInf.SystemStackSize = 2048;
68 SysInf.pfncBoot = Boot_Process;
69 SysInf.BootParam = (VPARAM)0;
70 SysInf.BootStackSize = 2048;
71 System_Initialize(&SysInf);
76 int Boot_Process(VPARAM Param)
78 T_PROCESS_CREATE_INF ProcInf;
85 /*************************/
87 /*************************/
90 /* OsTimer_Initialize(); */
92 /* 16550デバドラ生成 (/dev/com0 に登録) */
94 hDriver = Pc16550Drv_Create((void *)0x03f8, 0, 4, 1843200, 256);
95 File_AddDevice("com1", hDriver);
96 hDriver = Pc16550Drv_Create((void *)0x02f8, 0, 3, 1843200, 256);
97 File_AddDevice("com2", hDriver);
101 /* コンソールを生成( /dev/con0 に登録) */
102 hDriver = PcatTextDrv_Create((void *)0, (void *)0x000b8000);
103 File_AddDevice("screen0", hDriver);
106 hConOut = File_Open("/dev/screen0", FILE_OPEN_READ | FILE_OPEN_WRITE);
110 /*************************/
112 /*************************/
114 Process_SetConIn(HANDLE_NULL, hConIn);
115 Process_SetConOut(HANDLE_NULL, hConOut);
116 Process_SetStdIn(HANDLE_NULL, hConIn);
117 Process_SetStdOut(HANDLE_NULL, hConOut);
118 Process_SetStdErr(HANDLE_NULL, hConOut);
121 /*************************/
123 /*************************/
124 Command_AddCommand("sh", Shell_Main);
125 Command_AddCommand("ps", ProcessList_Main);
126 Command_AddCommand("help", CommandList_Main);
127 Command_AddCommand("time", TimeCmd_Main);
128 Command_AddCommand("memdump", MemDump_Main);
129 Command_AddCommand("memwrite", MemWrite_Main);
130 Command_AddCommand("memtest", MemTest_Main);
131 Command_AddCommand("keytest", KeyTest_Main);
132 Command_AddCommand("hello", Hello_Main);
135 /*************************/
137 /*************************/
140 "================================================================\n"
141 " Hyper Operating System Application Flamework\n"
143 " Copyright (C) 1998-2008 by Project HOS\n"
144 " http://sourceforge.jp/projects/hos/\n"
145 "================================================================\n"
149 /*************************/
151 /*************************/
154 ProcInf.pszCommandLine = "sh -i"; /* 実行コマンド */
155 ProcInf.pszCurrentDir = ""; /* 起動ディレクトリ */
156 ProcInf.pfncEntry = NULL; /* 起動アドレス */
157 ProcInf.Param = 0; /* ユーザーパラメータ */
158 ProcInf.StackSize = 2048; /* スタックサイズ */
159 ProcInf.Priority = PROCESS_PRIORITY_NORMAL; /* プロセス優先度 */
160 ProcInf.hTerminal = Process_GetTerminal(HANDLE_NULL); /* ターミナル */
161 ProcInf.hConIn = Process_GetConIn(HANDLE_NULL); /* コンソール入力 */
162 ProcInf.hConOut = Process_GetConOut(HANDLE_NULL); /* コンソール出力 */
163 ProcInf.hStdIn = Process_GetStdIn(HANDLE_NULL); /* 標準入力 */
164 ProcInf.hStdOut = Process_GetStdOut(HANDLE_NULL); /* 標準出力 */
165 ProcInf.hStdErr = Process_GetStdErr(HANDLE_NULL); /* 標準エラー出力 */
168 hProcess = Process_Create(&ProcInf);
169 Process_WaitExit(hProcess);
170 Process_Delete(hProcess);