+++ /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