--- /dev/null
+\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