OSDN Git Service

svn rev.329より移動。
[chnosproject/CHNOSProject.git] / CHNOSProject / chnos / tolset_chn_000 / chnos_008 / chnos / core.h
diff --git a/CHNOSProject/chnos/tolset_chn_000/chnos_008/chnos/core.h b/CHNOSProject/chnos/tolset_chn_000/chnos_008/chnos/core.h
new file mode 100644 (file)
index 0000000..3c7bfd5
--- /dev/null
@@ -0,0 +1,813 @@
+\r
+/*include files*/\r
+#include <stdio.h>\r
+#include <stdarg.h>\r
+#include <math.h>\r
+#include <string.h>\r
+\r
+int rand(void);\r
+#define srand(seed)                    (void) (rand_seed = (seed))\r
+extern unsigned int rand_seed;\r
+\r
+/*definemacros*/\r
+#define RGB16(r,g,b) ((r)<<11|(g)<<5|(b))\r
+\r
+/*settings*/\r
+#define system (*sys_main_str_buf)\r
+\r
+#define ADR_BOOTINFO   0x00000ff0\r
+#define ADR_VESAINFO   0x00000e00\r
+#define ADR_DISKIMG    0x00100000\r
+\r
+#define EFLAGS_AC_BIT  0x00040000\r
+\r
+#define CR0_PROTECTIONENABLE   0x00000001\r
+#define CR0_MONITORCOPROCESSOR 0x00000002\r
+#define CR0_EMULATION          0x00000004\r
+#define CR0_TASKSWITCH         0x00000008\r
+#define CR0_EXTENDEDTYPE       0x00000010\r
+#define CR0_NUMERICERROR       0x00000020\r
+#define CR0_WRITEPROTECT       0x00010000\r
+#define CR0_ALIGNMENTMASK      0x00040000\r
+#define CR0_NOTWRITETHROUGH    0x20000000\r
+#define CR0_CACHE_DISABLE      0x40000000\r
+#define CR0_PAGING             0x80000000\r
+\r
+#define CR0_ALL_CACHE_DISABLE  CR0_NOTWRITETHROUGH + CR0_CACHE_DISABLE\r
+\r
+#define PG_NOTPRESENT  0x00000000\r
+#define PG_PRESENT     0x00000001\r
+#define PG_READONLY    0x00000000\r
+#define PG_WRITABLE    0x00000002\r
+#define PG_SUPERVISOR  0x00000000\r
+#define PG_USER                0x00000004\r
+#define PG_WRITEBACK   0x00000000\r
+#define PG_WRITETHROUGH        0x00000008\r
+#define PG_CACHE_ENABLE        0x00000000\r
+#define PG_CACHE_DISABLE       0x00000010\r
+#define PG_NOTACCESSED 0x00000000\r
+#define PG_ACCESSED    0x00000020\r
+#define PG_NOTWRITTEN  0x00000000\r
+#define PG_WRITTEN     0x00000040\r
+#define PG_4KBPAGE     0x00000000\r
+#define PG_4MBPAGE     0x00000080\r
+#define PG_NOTGLOBAL   0x00000000\r
+#define        PG_GLOBAL       0x00000100\r
+\r
+#define ADR_IDT                0x0026f800\r
+#define LIMIT_IDT      0x000007ff\r
+#define ADR_GDT                0x00270000\r
+#define LIMIT_GDT      0x0000ffff\r
+#define ADR_BOTPAK     0x00280000\r
+#define LIMIT_BOTPAK   0x0007ffff\r
+#define AR_DATA32_RW   0x4092\r
+#define AR_CODE32_ER   0x409a\r
+#define AR_LDT         0x0082\r
+#define AR_TSS32       0x0089\r
+#define AR_INTGATE32   0x008e\r
+#define AR_APP         0x60\r
+\r
+#define COL8_000000            0\r
+#define COL8_FF0000            1\r
+#define COL8_00FF00            2\r
+#define COL8_FFFF00            3\r
+#define COL8_0000FF            4\r
+#define COL8_FF00FF            5\r
+#define COL8_00FFFF            6\r
+#define COL8_FFFFFF            7\r
+#define COL8_C6C6C6            8\r
+#define COL8_840000            9\r
+#define COL8_008400            10\r
+#define COL8_848400            11\r
+#define COL8_000084            12\r
+#define COL8_840084            13\r
+#define COL8_008484            14\r
+#define COL8_848484            15\r
+\r
+#define INV_COL32      0xFFFFFFFF\r
+#define INV_COL16      0x1192\r
+#define INV_COL8       0xFF\r
+\r
+#define DESKTOP_COL8   COL8_C6C6C6\r
+#define TASKBAR_COL8   COL8_0000FF\r
+\r
+#define DESKTOP_COL16  RGB16(17,33,17)         /*\8f\89\8aú\92l\81F10,20,10*/\r
+#define TASKBAR_COL16  RGB16(20,40,30)         /*\8f\89\8aú\92l\81F20,40,30*/\r
+\r
+#define DESKTOP_COL32  0x34FF1E\r
+#define TASKBAR_COL32  0x5EC1E8\r
+\r
+#define TASKBAR_HEIGHT 40\r
+\r
+#define MEMMAN_FREES   4000\r
+\r
+#define INV_COL32      0xFFFFFFFF\r
+#define INV_COL16      0x1192\r
+#define INV_COL8       0xFF\r
+\r
+#define MAX_SHEETS     1024\r
+\r
+#define PIC0_ICW1      0x0020\r
+#define PIC0_OCW2      0x0020\r
+#define PIC0_IMR       0x0021\r
+#define PIC0_ICW2      0x0021\r
+#define PIC0_ICW3      0x0021\r
+#define PIC0_ICW4      0x0021\r
+#define PIC1_ICW1      0x00a0\r
+#define PIC1_OCW2      0x00a0\r
+#define PIC1_IMR       0x00a1\r
+#define PIC1_ICW2      0x00a1\r
+#define PIC1_ICW3      0x00a1\r
+#define PIC1_ICW4      0x00a1\r
+\r
+#define MAX_TASKS      1000\r
+#define TASK_GDT_START 3\r
+#define MAX_LEVEL_TASKS        100\r
+#define MAX_LEVELS     10\r
+\r
+#define MAX_TIMER      512\r
+\r
+#define FIFO32_PUT_OVERFLOW    0x0001\r
+\r
+#define SYS_FIFOSIZE   256\r
+#define KEYCMD_FIFOSIZE        128\r
+#define KEYCTRL_FIFOSIZE       128\r
+#define MOUSECTRL_FIFOSIZE     128\r
+\r
+#define PIT_CTRL       0x0043\r
+#define PIT_CNT0       0x0040\r
+\r
+#define KEYB_DATA      0x0060\r
+#define PORT_KEYSTA    0x0064\r
+#define KEYSTA_SEND_NOTREADY   0x02\r
+#define KEYCMD_WRITE_MODE      0x60\r
+#define KBC_MODE       0x47\r
+#define PORT_KEYCMD    0x0064\r
+#define KEYCMD_SENDTO_MOUSE    0xd4\r
+#define MOUSECMD_ENABLE        0xf4\r
+#define KEYCMD_LED     0xed\r
+\r
+#define MAX_WINDOWS    256\r
+#define WIN_COL8_ACTIVE                0x000084\r
+#define WIN_COL8_INACTIVE      0x848484\r
+#define WIN_COL16_ACTIVE       0x60F8f0\r
+#define WIN_COL16_INACTIVE     0xBCFCF8\r
+#define WIN_COL32_ACTIVE       0x93D9FF\r
+#define WIN_COL32_INACTIVE     0xD0EFFF\r
+\r
+#define CONSOLE_FIFO_BUF_SIZE  128\r
+#define CONSOLE_FIFO_START_KEYB        128\r
+#define CONSOLE_FIFO_CURSOR_START      2\r
+#define CONSOLE_FIFO_CURSOR_STOP       3\r
+#define CONSOLE_COLOR_BACKGROUND       0x000000\r
+#define CONSOLE_COLOR_CHAR     0xFFFFFF\r
+#define CONSOLE_CMDLINE_BUF_SIZE       128\r
+#define MAX_CONSOLES   16\r
+\r
+#define DATA_BYTE      0xFF\r
+#define DATA_WORD      0xFFFF\r
+#define DATA_DWORD     0xFFFFFFFF\r
+\r
+/*new object types*/\r
+typedef enum _bool { false, true} bool;\r
+typedef enum _state_alloc { none, initialized, allocated, configured, inuse} state_alloc;\r
+typedef enum _col_text { black, blue, green, skyblue, red, purple, brown, white} col_text;\r
+typedef unsigned char uchar;\r
+typedef unsigned short ushort;\r
+typedef unsigned int uint;\r
+\r
+/*structures*/\r
+struct BOOTINFO { \r
+       uchar cyls; \r
+       uchar leds; \r
+       uchar vmode; \r
+       uchar reserve;\r
+       ushort scrnx, scrny;\r
+       uchar *vram;\r
+};\r
+\r
+struct VESAINFO {/*0xe00--->512byte*/\r
+       ushort  ModeAttributes;\r
+       uchar   WinAAttributes;\r
+       uchar   WinBAttributes;\r
+       ushort  WinGranularity;\r
+       ushort  WinSize;\r
+       ushort  WinASegment;\r
+       ushort  WinBSegment;\r
+       uint    WinFuncPtr;\r
+       ushort  BytesPerScanLine;\r
+       ushort  XResolution;\r
+       ushort  YResolution;\r
+       uchar   XCharSize;\r
+       uchar   YCharSize;\r
+       uchar   NumberOfPlanes;\r
+       uchar   BitsPerPixel;\r
+       uchar   NumberOfBanks;\r
+       uchar   MemoryModel;\r
+       uchar   BankSize;\r
+       uchar   NumberOfImagePages;\r
+       uchar   Reserved;\r
+       uchar   RedMaskSize;\r
+       uchar   RedFieldPosition;\r
+       uchar   GreenMaskSize;\r
+       uchar   GreenFieldPosition;\r
+       uchar   BlueMaskSize;\r
+       uchar   BlueFieldPosition;\r
+       uchar   RsvdMaskSize;\r
+       uchar   RsvdFieldPodition;\r
+       uchar   DirectColorModeInfo;\r
+       uint*   PhysBasePtr;\r
+};\r
+\r
+struct SEGMENT_DESCRIPTOR { \r
+       short limit_low,base_low;\r
+       char base_mid,access_right;\r
+       char limit_high,base_high;\r
+};\r
+\r
+struct GATE_DESCRIPTOR { \r
+       short offset_low,selector;\r
+       char dw_count,access_right;\r
+       short offset_high;\r
+};\r
+\r
+struct MEMMAN {\r
+       int frees,maxfrees,lostsize,losts;\r
+       struct MEM_FREEINFO {\r
+               uint addr, size;\r
+       } free[MEMMAN_FREES];\r
+};\r
+\r
+struct SHEET {\r
+       void *buf;\r
+       uint col_inv;\r
+       int bxsize, bysize, vx0, vy0, height;\r
+       state_alloc flags; \r
+};\r
+\r
+struct SHTCTL {\r
+       uint *map;\r
+       void *vram;\r
+       int xsize, ysize, top;\r
+       struct SHEET *sheets[MAX_SHEETS];\r
+       struct SHEET sheets0[MAX_SHEETS];\r
+};\r
+\r
+struct TSS32 {\r
+       int backlink, esp0, ss0, esp1, ss1, esp2, ss2, cr3;\r
+       int eip, eflags, eax, ecx, edx, ebx, esp, ebp, esi, edi;\r
+       int es, cs, ss, ds, fs, gs;\r
+       int ldtr, iomap;\r
+};\r
+\r
+struct FIFO32 {\r
+       uint *buf;\r
+       uint p, q, size, free, flags;\r
+       struct TASK *task;\r
+};\r
+\r
+struct TASK {\r
+       int selector;\r
+       state_alloc flags;\r
+       int level, priority;\r
+       struct FIFO32 fifo;\r
+       struct TSS32 tss;\r
+};\r
+\r
+struct TASKCTL {\r
+       int level_now;\r
+       bool change_lv_next;\r
+       struct TASKLEVEL {\r
+               int running_tasks;\r
+               int task_now;\r
+               struct TASK *tasks[MAX_LEVEL_TASKS];\r
+       } level[MAX_LEVELS];\r
+       struct TASK tasks0[MAX_TASKS];\r
+};\r
+\r
+struct TIMER {\r
+       struct TIMER *next_timer;\r
+       uint timeout;\r
+       struct FIFO32 *fifo;\r
+       uint data;\r
+       state_alloc flags;\r
+};\r
+\r
+struct TIMERCTL {\r
+       uint count, next_count;\r
+       struct TIMER timer[MAX_TIMER];\r
+       struct TIMER *timers;\r
+};\r
+\r
+struct KEYINFO {\r
+       uchar c;\r
+       uint keycode;\r
+       bool make;\r
+       bool alphabet;\r
+};\r
+\r
+struct MOUSE_DECODE {\r
+       uint buf[4], scrool;\r
+       int x, y, btn, whinfo;\r
+       uchar phase; \r
+};\r
+\r
+struct POSITION_2D {\r
+       int x, y;\r
+};\r
+\r
+struct WINDOWINFO {\r
+       char title[32];\r
+       struct SHEET *win;\r
+       void *buf;\r
+       int winxsize, winysize, xsize, ysize;\r
+       struct POSITION_2D position;\r
+       struct POSITION_2D origin;\r
+       state_alloc flags;\r
+       bool active;\r
+       void *app_buf;\r
+       uchar app_buf_bits;\r
+       struct TASK *task;\r
+};\r
+\r
+struct WINCTL {\r
+       struct WINDOWINFO winfos[MAX_WINDOWS];\r
+};\r
+\r
+struct FILEINFO {\r
+       uchar name[8];\r
+       uchar ext[3];\r
+       uchar type;\r
+       uchar reserve;\r
+       uchar VFAT_createTimeMs;\r
+       ushort VFAT_createTime;\r
+       ushort VFAT_createDate;\r
+       ushort VFAT_accessDate;\r
+       ushort VFAT_clusterHighWord;\r
+       ushort time;\r
+       ushort date;\r
+       ushort clustno;\r
+       uint size;\r
+};\r
+\r
+struct SYS_UI_CONSOLES {\r
+       struct TASK *task;\r
+       struct WINDOWINFO *win;\r
+       struct POSITION_2D prompt;\r
+       struct POSITION_2D cursor;\r
+       uchar *app_cs_base;\r
+       uchar *app_ds_base;\r
+       struct TIMER *timer;\r
+       bool cursor_state;\r
+       bool cursor_on;\r
+       uint cursor_c;\r
+};\r
+\r
+struct _UUID {\r
+       uchar data[16];\r
+};\r
+\r
+struct FORMAT_HRB {\r
+       uint DataSegmentSize;\r
+       uchar sign[4];\r
+       uint DataSegmentExtSize;\r
+       uint DefaultESP;\r
+       uint TransferToDataSegBytes;\r
+       uint OriginDataSection;\r
+       uint JMPCode;\r
+       uint EntryPoint;\r
+       uint StartMallocAddr;\r
+};\r
+\r
+/*typedef structures*/\r
+typedef struct BOOTINFO                        DATA_BootInfo;\r
+typedef struct VESAINFO                        DATA_VESAInfo;\r
+typedef struct SEGMENT_DESCRIPTOR      IO_SegmentDescriptor;\r
+typedef struct GATE_DESCRIPTOR         IO_GateDescriptor;\r
+typedef struct MEMMAN                  IO_MemoryControl;\r
+typedef struct SHEET                   UI_Sheet;\r
+typedef struct SHTCTL                  UI_SheetControl;\r
+typedef struct FIFO32                  DATA_FIFO;\r
+typedef struct TSS32                   IO_TaskStatusSegment32;\r
+typedef struct TASK                    UI_Task;\r
+typedef struct TASKCTL                 UI_TaskControl;\r
+typedef struct TIMER                   UI_Timer;\r
+typedef struct TIMERCTL                        UI_TimerControl;\r
+typedef struct KEYINFO                 UI_KeyInfo;\r
+typedef struct MOUSE_DECODE            UI_Mouse;\r
+typedef struct POSITION_2D             DATA_Position2D;\r
+typedef struct WINDOWINFO              UI_Window;\r
+typedef struct WINCTL                  UI_WindowControl;\r
+typedef struct FILEINFO                        IO_FileInfo;\r
+typedef struct SYS_UI_CONSOLES         UI_Console;\r
+typedef struct _UUID                   UUID;\r
+typedef struct FORMAT_HRB              FORMAT_Haribote;\r
+\r
+/*virtual classes*/\r
+struct SYSTEM {\r
+       struct SYS_IO {\r
+               struct SYS_IO_MEM {\r
+                       struct SYS_IO_MEM_PAGING {\r
+                               uint *dir;\r
+                               uint (*table)[1024];\r
+                       } paging;\r
+                       struct SYS_IO_MEM_SEGMENT {\r
+                               IO_SegmentDescriptor *gdt;\r
+                       } segment;\r
+                       uint total;\r
+                       IO_MemoryControl ctrl;\r
+               } mem;\r
+               struct SYS_IO_INTERRUPT {\r
+                       IO_GateDescriptor *idt;\r
+               } interrupt;\r
+               struct SYS_IO_KEYBOARD {\r
+                       int cmd_wait;\r
+               } keyboard;\r
+               struct SYS_IO_MOUSE {\r
+                       UI_Mouse decode;\r
+               } mouse;\r
+               struct SYS_IO_FILE {\r
+                       IO_FileInfo *list;\r
+                       ushort *fat;\r
+               } file;\r
+       } io;\r
+       struct SYS_UI {\r
+               struct SYS_UI_DRAW {\r
+                       struct SYS_UI_DRAW_SHT {\r
+                               UI_SheetControl ctrl;\r
+                               UI_Sheet *core;\r
+                               UI_Sheet *desktop;\r
+                               UI_Sheet *taskbar;\r
+                               UI_Sheet *mouse;\r
+                               void *core_buf;\r
+                               void *desktop_buf;\r
+                               void *taskbar_buf;\r
+                               void *mouse_buf;\r
+                       } sht;\r
+               } draw;\r
+               struct SYS_UI_TASK {\r
+                       UI_Task *idle;\r
+                       UI_Task *main;\r
+                       UI_Task *keyctrl;\r
+                       UI_Task *mousectrl;\r
+               } task;\r
+               struct SYS_UI_TIMER {\r
+                       UI_Timer *taskswitch;\r
+                       UI_TimerControl ctrl;\r
+               } timer;\r
+               struct SYS_UI_CONSOLE {\r
+                       int org_xsize;\r
+                       int org_ysize;\r
+                       int org_xchars;\r
+                       int org_ychars;\r
+                       UI_Console consoles[MAX_CONSOLES];\r
+               } console;\r
+               struct SYS_UI_WINDOW {\r
+                       UI_WindowControl ctrl;\r
+               } window;\r
+       } ui;\r
+       struct SYS_DATA {\r
+               struct SYS_DATA_INFO {\r
+                       DATA_BootInfo boot;\r
+                       DATA_VESAInfo vesa;\r
+               } info;\r
+               struct SYS_DATA_FIFO {\r
+                       DATA_FIFO main;\r
+                       uint main_buf[SYS_FIFOSIZE];\r
+                       DATA_FIFO keycmd;\r
+                       uint keycmd_buf[KEYCMD_FIFOSIZE];\r
+                       DATA_FIFO keyctrl;\r
+                       uint keyctrl_buf[MOUSECTRL_FIFOSIZE];\r
+                       DATA_FIFO mousectrl;\r
+                       uint mousectrl_buf[MOUSECTRL_FIFOSIZE];\r
+               } fifo;\r
+       } data;\r
+};\r
+\r
+/*externs*/\r
+extern struct SYSTEM *sys_main_str_buf;\r
+extern uchar hankaku[4096];\r
+extern char cursor[24][24];\r
+extern uint rgb_int2char_list[16];\r
+extern uint key_shift;\r
+\r
+/*functions*/\r
+/*bootpack.c*/\r
+void KeyBoardControlTask(void);\r
+void MouseControlTask(void);\r
+\r
+/*api.c*/\r
+uint hrb_api(uint edi, uint esi, uint ebp, uint esp, uint ebx, uint edx, uint ecx, uint eax);\r
+uint GetWindowNumber(UI_Window *win);\r
+UI_Window *GetWindowInfo(uint n);\r
+\r
+/*uuid.c*/\r
+void gen_UUID(UUID *uuid);\r
+\r
+/*file.c*/\r
+void decode_fat(ushort *fat, bool backup);\r
+void load_file(uint finfo_no, uchar *buf);\r
+uint search_file(char *name);\r
+\r
+/*console.c*/\r
+void console_main(UI_Console *cons);\r
+void cons_reset_cmdline(uchar *cmdline, uint *cmdlines, bool *cmdline_overflow);\r
+void cons_command_start(UI_Console *cons, uchar *cmdline, uint *cmdlines, bool *cmdline_overflow);\r
+void cons_command_mem(UI_Console *cons);\r
+void cons_command_dir(UI_Console *cons);\r
+void cons_command_fdc(UI_Console *cons, uchar *cmdline);\r
+void cons_command_type(UI_Console *cons, uchar *cmdline);\r
+void cons_command_cpuid(UI_Console *cons, uchar *cmdline);\r
+void cons_command_systeminfo(UI_Console *cons, uchar *cmdline);\r
+uint cons_app_hrb_start(UI_Console *cons, uchar *cmdline);\r
+void cons_put_str(UI_Console *cons, uchar *str);\r
+void cons_put_char(UI_Console *cons, uchar c);\r
+void cons_put_prompt(UI_Console *cons);\r
+void cons_new_line(UI_Console *cons);\r
+void cons_new_line_no_prompt(UI_Console *cons);\r
+void cons_slide_line(UI_Console *cons);\r
+void cons_check_newline(UI_Console *cons);\r
+\r
+/*window.c*/\r
+void init_windows(void);\r
+UI_Window *window_alloc(void);\r
+void window_free(UI_Window *winfo);\r
+UI_Window *make_window(uchar *title, int xsize, int ysize, int px, int py, int height, bool active);\r
+UI_Window *make_window_app(uchar *title, int xsize, int ysize, int px, int py, int height, bool active, uint *buf, UI_Task *task);\r
+UI_Window *make_window_app_compatible_hrb(uchar *title, int xsize, int ysize, int px, int py, int height, bool active, uint *buf, UI_Task *task);\r
+void free_window_app(UI_Window *winfo);\r
+void change_window(UI_Window *winfo, uchar *title, bool active);\r
+void change_window_title(UI_Window *winfo, uchar *title);\r
+void change_window_active(UI_Window *winfo, bool active);\r
+void slide_window(UI_Window *winfo, int px, int py);\r
+void refresh_window(UI_Window *winfo);\r
+void refresh_window_alpha(UI_Window *winfo);\r
+void boxfill_win(UI_Window *winfo, uint c, int x0, int y0, int x1, int y1);\r
+void point_win(UI_Window *winfo, uint c, int x, int y);\r
+void putfonts_win(UI_Window *winfo, int x, int y, uint c, uint bc, const uchar *s);\r
+void putfonts_win_no_bc(UI_Window *winfo, int x, int y, uint c, const uchar *s);\r
+void scrool_win(UI_Window *winfo);\r
+void scrool_win_32(UI_Window *winfo, uint *vram);\r
+void scrool_win_16(UI_Window *winfo, ushort *vram);\r
+void scrool_win_8(UI_Window *winfo, uchar *vram);\r
+void line_win(UI_Window *winfo, int x0, int y0, int x1, int y1, uint c);\r
+void draw_hexagon_win(UI_Window *winfo, int a, int x, int y, uint c);\r
+\r
+\r
+/*mouse.c*/\r
+void init_mouse(uint offset);\r
+void inthandler2c(int *esp);\r
+int decode_mouse(uint data);\r
+void sendto_mouse(uint data);\r
+\r
+/*keyboard.c*/\r
+void init_keyboard(uint offset);\r
+void inthandler21(int *esp);\r
+void decode_key(UI_KeyInfo *info, uint data);\r
+void keylock(uint led);\r
+void wait_KBC_sendready(void);\r
+\r
+/*fifo.c*/\r
+void fifo32_init(DATA_FIFO *fifo, uint size, uint *buf, UI_Task *task);\r
+int fifo32_put(DATA_FIFO *fifo, uint data);\r
+uint fifo32_get(DATA_FIFO *fifo);\r
+uint fifo32_status(DATA_FIFO *fifo);\r
+\r
+/*mtask.c*/\r
+void task_init(void);\r
+UI_Task *task_alloc(void);\r
+void task_run(UI_Task *task, int level, int priority);\r
+void task_switch(void);\r
+void task_sleep(UI_Task *task);\r
+void task_arguments(UI_Task *task, int args, ...);\r
+UI_Task *task_now(void);\r
+void task_add(UI_Task *task);\r
+void task_remove(UI_Task *task);\r
+void task_switchsub(void);\r
+void task_idle(void);\r
+\r
+/*timer.c*/\r
+void inthandler20(int *esp);\r
+void init_pit(void);\r
+UI_Timer *timer_alloc(void);\r
+void timer_free(UI_Timer *timer);\r
+void timer_init(UI_Timer *timer, DATA_FIFO *fifo, uint data);\r
+void timer_settime(UI_Timer *timer, uint timeout);\r
+void timer_settime_millisec(UI_Timer *timer, uint timeout_ms);\r
+\r
+/*gdtidt.c*/\r
+void init_gdtidt(void);\r
+void set_segmdesc(IO_SegmentDescriptor *sd, uint limit, int base, int ar);\r
+void set_gatedesc(IO_GateDescriptor *gd, int offset, int selector, int ar);\r
+\r
+/*graphic.c grap_08.c grap_16.c grap_32.c*/\r
+/*All*/\r
+void init_screen_i(void *desktop, void *taskbar, void *mousecursor);\r
+void init_desktop_i(void *vrami);\r
+void init_taskbar_i(void *vrami);\r
+void init_mousecursor_i(void *vrami);\r
+uint mix_color(uint c0, uint c1);\r
+void point_i(void *vrami, int x, int y, uint c, int xsize);\r
+void point_bpp(void *vrami, int x, int y, uint c, int xsize, uint bpp);\r
+void boxfill_i(void *vrami, int xsize, uint c, int x0, int y0, int x1, int y1);\r
+void boxfill_bpp(void *vrami, int xsize, uint c, int x0, int y0, int x1, int y1, uint bpp);\r
+void putfonts_asc_i(void *vrami, int xsize, int x, int y, uint c, const uchar *s);\r
+void putblock_i(void *vrami, int vxsize, int pxsize, int pysize, int px0, int py0, void *buf, int bxsize);\r
+void putblock_i_convert(void *to, int xsize, int px0, int py0, int px1, int py1, void *from, int tobpp, int frombpp);\r
+void line_i(void *vrami, int xsize, int x0, int y0, int x1, int y1, uint c);\r
+void line_bpp(void *vrami, int xsize, int x0, int y0, int x1, int y1, uint c, uint bpp);\r
+void draw_hexagon_i(void *vrami, int xsize, int a, int x, int y, uint c);\r
+void draw_chnos_logo(void *vrami, int xsize, int a, int x, int y);\r
+uchar rgb_int2char (uint c32);\r
+ushort rgb_int2short (uint c32);\r
+void col_pat(void *vrami, int xsize, int ysize);\r
+void putfonts_asc_sht_i(UI_Sheet *sht, int x, int y, uint c, uint bc, const uchar *s);\r
+void putfonts_asc_sht_i_no_bc(UI_Sheet *sht, int x, int y, uint c, const uchar *s);\r
+\r
+/*08Bits*/\r
+void boxfill8(uchar *vram, int xsize, uchar c, int x0, int y0, int x1, int y1);\r
+void init_desktop8(uchar *vram, uint xsize, uint ysize);\r
+void init_taskbar8(uchar *vram, uint xsize);\r
+void putfont8(uchar *vram, int xsize, int x, int y, uchar c, uchar *font);\r
+void putfonts8_asc(uchar *vram, int xsize, int x, int y, uchar c, const uchar *s);\r
+void init_mouse_cursor8(uchar *mouse);\r
+void putblock8_8(uchar *vram, int vxsize, int pxsize,int pysize, int px0, int py0, uchar *buf, int bxsize);\r
+void init_palette(void);\r
+void set_palette(int start, int end, uchar *rgb);\r
+/*16Bits*/\r
+void boxfill16(ushort *vram, int xsize, ushort c, int x0, int y0, int x1, int y1);\r
+void init_desktop16(ushort *vram, uint xsize, uint ysize);\r
+void init_taskbar16(ushort *vram, uint xsize);\r
+void putfont16(ushort *vram, int xsize, int x, int y, ushort c, uchar *font);\r
+void putfonts16_asc(ushort *vram, int xsize, int x, int y, ushort c, const uchar *s);\r
+void init_mouse_cursor16(ushort *mouse);\r
+void putblock16_16(ushort *vram, int vxsize, int pxsize,int pysize, int px0, int py0, ushort *buf, int bxsize);\r
+/*32Bits*/\r
+void boxfill32(uint *vram, int xsize, uint c, int x0, int y0, int x1, int y1);\r
+void init_desktop32(uint *vram, uint xsize, uint ysize);\r
+void init_taskbar32(uint *vram, uint xsize);\r
+void putfont32(uint *vram, int xsize, int x, int y, uint c, uchar *font);\r
+void putfonts32_asc(uint *vram, int xsize, int x, int y, uint c, const uchar *s);\r
+void init_mouse_cursor32(uint *mouse);\r
+void putblock32_32(uint *vram, int vxsize, int pxsize,int pysize, int px0, int py0, uint *buf, int bxsize);\r
+\r
+/*init.c*/\r
+void init_system(void);\r
+\r
+/*intrpt.c*/\r
+void init_pic(void);\r
+void inthandler27(int *esp);\r
+void cpu_exception_abort(int exception, int *esp);\r
+uint cpu_exception_fault(int exception, int *esp);\r
+void inthandler00(int *esp);\r
+void inthandler01(int *esp);\r
+void inthandler02(int *esp);\r
+void inthandler03(int *esp);\r
+void inthandler04(int *esp);\r
+void inthandler05(int *esp);\r
+void inthandler06(int *esp);\r
+void inthandler07(int *esp);\r
+void inthandler08(int *esp);\r
+void inthandler09(int *esp);\r
+void inthandler0a(int *esp);\r
+void inthandler0b(int *esp);\r
+void inthandler0c(int *esp);\r
+void inthandler0d(int *esp);\r
+void inthandler0e(int *esp);\r
+void inthandler0f(int *esp);\r
+void inthandler11(int *esp);\r
+void inthandler12(int *esp);\r
+void inthandler13(int *esp);\r
+void inthandler14(int *esp);\r
+void inthandler15(int *esp);\r
+void inthandler16(int *esp);\r
+void inthandler17(int *esp);\r
+void inthandler18(int *esp);\r
+void inthandler19(int *esp);\r
+void inthandler1a(int *esp);\r
+void inthandler1b(int *esp);\r
+void inthandler1c(int *esp);\r
+void inthandler1d(int *esp);\r
+void inthandler1e(int *esp);\r
+void inthandler1f(int *esp);\r
+\r
+/*io.c*/\r
+void init_serial(void);\r
+void send_serial(uchar *s);\r
+uint readcmos(uchar addr);\r
+void readrtc(uchar *t);\r
+void fdc_motor_on(uchar d);\r
+void fdc_motor_off(uchar d);\r
+void reset_cpu(void);\r
+\r
+/*memory.c*/\r
+uint memtest(uint start, uint end);\r
+void memman_init(IO_MemoryControl *man);\r
+uint memman_free_total(IO_MemoryControl *man);\r
+void *memman_alloc(IO_MemoryControl *man, uint size);\r
+int memman_free(IO_MemoryControl *man, void *addr0, uint size);\r
+void *memman_alloc_page(IO_MemoryControl *man);\r
+void sys_memman_init(void);\r
+uint sys_memman_free_total(void);\r
+void *sys_memman_alloc(uint size);\r
+int sys_memman_free(void *addr, uint size);\r
+void *sys_memman_alloc_page(void);\r
+\r
+/*paging.c*/\r
+void init_paging(void);\r
+void paging_set_dir(uint *dir_entry, uint *table_base, uint attribute, uint available);\r
+void paging_set_table(uint *table_entry, uint *page_base, uint attribute, uint available);\r
+\r
+/*sheet.c*/\r
+void init_sheets(void *vram, int xsize, int ysize, uchar bits);\r
+UI_Sheet *sheet_alloc(void);\r
+void sheet_setbuf(UI_Sheet *sht, void *buf,int xsize, int ysize, uint col_inv);\r
+void sheet_updown(UI_Sheet *sht, int height);\r
+void sheet_refresh(UI_Sheet *sht, int bx0, int by0, int bx1, int by1);\r
+void sheet_refresh_full_alpha(UI_Sheet *sht);\r
+void sheet_refresh_full(UI_Sheet *sht);\r
+void sheet_slide(UI_Sheet *sht, int vx0, int vy0);\r
+void sheet_free(UI_Sheet *sht);\r
+void sheet_refreshsub32(int vx0, int vy0, int vx1, int vy1, int h0, int h1);\r
+void sheet_refreshsub16(int vx0, int vy0, int vx1, int vy1, int h0, int h1);\r
+void sheet_refreshsub8(int vx0, int vy0, int vx1, int vy1, int h0, int h1);\r
+void sheet_refreshmap32(int vx0, int vy0, int vx1, int vy1, int h0);\r
+void sheet_refreshmap16(int vx0, int vy0, int vx1, int vy1, int h0);\r
+void sheet_refreshmap8(int vx0, int vy0, int vx1, int vy1, int h0);\r
+int sheet_get_topheight(void);\r
+\r
+/* naskfunc.nas */\r
+void cpuid(void *addr, uint idaddr);\r
+void read_tsc(uint *addr);\r
+void pipelineflush(void);\r
+void pit_beep_on(void);\r
+void pit_beep_off(void);\r
+void clts(void);\r
+void fnsave(uint *addr);\r
+void frstore(uint *addr);\r
+void asm_inthandler07(void);\r
+void io_hlt(void);\r
+void io_cli(void);\r
+void io_sti(void);\r
+void io_stihlt(void);\r
+uint io_in8(uint port);\r
+uint io_in16(uint port);\r
+uint io_in32(uint port);\r
+void io_out8(uint port, uint data);\r
+void io_out16(uint port, uint data);\r
+void io_out32(uint port, uint data);\r
+uint io_load_eflags(void);\r
+void io_store_eflags(uint eflags);\r
+void load_gdtr(uint limit, uint addr);\r
+void load_idtr(uint limit, uint addr);\r
+uint load_cr0(void);\r
+void store_cr0(uint cr0);\r
+uint load_cr1(void);\r
+void store_cr1(uint cr1);\r
+uint load_cr2(void);\r
+void store_cr2(uint cr2);\r
+uint load_cr3(void);\r
+void store_cr3(uint cr3);\r
+void load_tr(uint tr);\r
+uint memtest_sub(uint start, uint end);\r
+void farjmp(uint eip, uint cs);\r
+void farcall(uint eip, uint cs);\r
+void start_app(int eip, int cs, int esp, int ds, int *tss_esp0);\r
+void asm_end_app(void);\r
+void asm_hrb_api(void);\r
+void asm_inthandler00(void);\r
+void asm_inthandler01(void);\r
+void asm_inthandler02(void);\r
+void asm_inthandler03(void);\r
+void asm_inthandler04(void);\r
+void asm_inthandler05(void);\r
+void asm_inthandler06(void);\r
+void asm_inthandler07(void);\r
+void asm_inthandler08(void);\r
+void asm_inthandler09(void);\r
+void asm_inthandler0a(void);\r
+void asm_inthandler0b(void);\r
+void asm_inthandler0c(void);\r
+void asm_inthandler0d(void);\r
+void asm_inthandler0e(void);\r
+void asm_inthandler0f(void);\r
+void asm_inthandler10(void);\r
+void asm_inthandler11(void);\r
+void asm_inthandler12(void);\r
+void asm_inthandler13(void);\r
+void asm_inthandler14(void);\r
+void asm_inthandler15(void);\r
+void asm_inthandler16(void);\r
+void asm_inthandler17(void);\r
+void asm_inthandler18(void);\r
+void asm_inthandler19(void);\r
+void asm_inthandler1a(void);\r
+void asm_inthandler1b(void);\r
+void asm_inthandler1c(void);\r
+void asm_inthandler1d(void);\r
+void asm_inthandler1e(void);\r
+void asm_inthandler1f(void);\r
+void asm_inthandler20(void);\r
+void asm_inthandler21(void);\r
+void asm_inthandler27(void);\r
+void asm_inthandler2c(void);\r