+++ /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
-\r
-#include "core_set.h"\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 enum _timer_mode { once, interval} timer_mode;\r
-typedef enum _mouse_type { threebtn, threebtn_scroll} mouse_type;\r
-typedef enum _mcursor_state { normal, wait} mcursor_state;\r
-typedef unsigned char uchar;\r
-typedef unsigned short ushort;\r
-typedef unsigned int uint;\r
-typedef struct { uint low, high; } uint64;\r
-typedef uchar sector[512];\r
-\r
-/*structures*/\r
-struct SEGMENT_DESCRIPTOR { \r
- ushort limit_low, base_low;\r
- uchar base_mid, access_right;\r
- uchar limit_high, base_high;\r
-};\r
-\r
-struct GATE_DESCRIPTOR { \r
- ushort offset_low, selector;\r
- uchar dw_count, access_right;\r
- ushort offset_high;\r
-};\r
-\r
-struct ACPI_MemoryMapEntry {\r
- uint64 Base;\r
- uint64 Length;\r
- uint Type;\r
- uint Attribute;\r
-};\r
-\r
-struct BOOTINFO { \r
- uchar cyls; \r
- uchar leds; \r
- uchar vmode; \r
- uchar reserve;\r
- ushort scrnx, scrny;\r
- uchar *vram;\r
- ushort VESA_Version;\r
- ushort APM_Version;\r
- uint ACPI_MemoryMapEntries;\r
- struct ACPI_MemoryMapEntry ACPI_MemoryMap[16];\r
- ushort APM_Flags;\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 FIFO32 {\r
- uint *buf;\r
- uint p, q, size, free, flags;\r
- struct TASK *task;\r
-};\r
-\r
-struct MEMORY_CONTROL_TAG {\r
- uint size;\r
- void *next;\r
-};\r
-\r
-struct MEMORY_CONTROL {\r
- void *start;\r
- uint size;\r
- void *next;\r
-};\r
-\r
-struct POSITION_2D {\r
- int x, y;\r
-};\r
-\r
-struct KEYINFO {\r
- uchar c;\r
- uint keycode;\r
- bool make;\r
- bool alphabet;\r
-};\r
-\r
-struct TIMER {\r
- struct TIMER *next;\r
- struct TIMER *tree;\r
- uint timeout;\r
- uint count;\r
- struct FIFO32 *fifo;\r
- uint data;\r
- state_alloc state;\r
- timer_mode mode;\r
-};\r
-\r
-struct TIMER_CONTROL {\r
- uint count;\r
- struct TIMER *next;\r
- struct TIMER *ts;\r
-};\r
-\r
-struct MOUSE_EVENT_ARGUMENTS {\r
- struct SHEET *focus;\r
- struct POSITION_2D move;\r
- struct POSITION_2D position_local;\r
- uint button;\r
- uint button_before;\r
-};\r
-\r
-struct SHEET {\r
- void *vram;\r
- struct POSITION_2D position;\r
- struct POSITION_2D size;\r
- uint bpp;\r
- uint invcol;\r
- struct SHEET *next;\r
- struct SHEET *before;\r
- void (*Refresh)(struct SHEET *sheet, int px0, int py0, int px1, int py1);\r
- void (*WriteMap)(struct SHEET *sheet, int x0, int y0, int x1, int y1);\r
- bool visible;\r
- bool mouse_movable;\r
- struct SHEET_CONTROL *myctrl;\r
- void (*MouseEventProcedure)(struct MOUSE_EVENT_ARGUMENTS *e);\r
- uint msignal_flags;\r
- struct FIFO32 *fifo;\r
- uint ksignal_flags;\r
-};\r
-\r
-struct SHEET_CONTROL {\r
- void *mainvram;\r
- uint *map;\r
- struct POSITION_2D mainvramsize;\r
- uint mainvrambpp;\r
- struct SHEET base;\r
- uint sheets;\r
- struct MEMORY_CONTROL *memctrl;\r
-};\r
-\r
-struct UI_INPUTBOX {\r
- struct SHEET *sheet;\r
- uint forecol, backcol;\r
- uchar *input_buf;\r
- uint input_buf_size;\r
- uint input_count;\r
- struct POSITION_2D cursor;\r
- struct POSITION_2D prompt;\r
- bool cursor_state;\r
- bool record;\r
-};\r
-\r
-struct MOUSE_DECODE {\r
- uint buf[4], scroll;\r
- struct POSITION_2D move;\r
- int btn;\r
- mouse_type type;\r
- uchar phase; \r
-};\r
-\r
-struct UI_MOUSE_CURSOR {\r
- struct SHEET *sheet;\r
- struct POSITION_2D position;\r
- struct POSITION_2D move_range0;\r
- struct POSITION_2D move_range1;\r
- mcursor_state state;\r
-};\r
-\r
-struct DATA_CPU_IDENTITY {\r
- bool enable;\r
- uint max;\r
- uchar vendor[13];\r
- bool ext_enable;\r
- uint ext_max;\r
- uchar brand_string[48];\r
- bool FPU;\r
- bool VME;\r
- bool DE;\r
- bool PSE;\r
- bool TSC;\r
- bool MSR;\r
- bool PAE;\r
- bool MCE;\r
- bool CX8;\r
- bool APIC;\r
- bool SEP;\r
- bool MTRR;\r
- bool PGE;\r
- bool MCA;\r
- bool CMOV;\r
- bool PAT;\r
- bool PSE36;\r
- bool PSN;\r
- bool CLFSH;\r
- bool DS;\r
- bool ACPI;\r
- bool MMX;\r
- bool FXSR;\r
- bool SSE;\r
- bool SSE2;\r
- bool SS;\r
- bool HTT;\r
- bool TM;\r
- bool PBE;\r
-\r
- bool SSE3;\r
- bool MONITOR;\r
- bool DSCPL;\r
- bool EST;\r
- bool TM2;\r
- bool CID;\r
- bool CX16;\r
- bool xTPR;\r
- \r
-};\r
-\r
-struct MEMORY_BLOCK {\r
- void *addr;\r
- uint size;\r
- struct MEMORY_BLOCK *next;\r
- struct MEMORY_CONTROL *ctrl;\r
- uchar description[MEMORY_DESCRIPTION_LENGTH];\r
-};\r
-\r
-struct TASK_STATUS_SEGMENT {\r
- ushort backlink, reserve00;\r
- uint esp0;\r
- ushort ss0, reserve01;\r
- uint esp1;\r
- ushort ss1, reserve02;\r
- uint esp2;\r
- ushort ss2, reserve03;\r
- uint cr3;\r
- uint eip;\r
- uint eflags;\r
- uint eax;\r
- uint ecx;\r
- uint edx;\r
- uint ebx;\r
- uint esp;\r
- uint ebp;\r
- uint esi;\r
- uint edi;\r
- ushort es, reserve04;\r
- ushort cs, reserve05;\r
- ushort ss, reserve06;\r
- ushort ds, reserve07;\r
- ushort fs, reserve08;\r
- ushort gs, reserve09;\r
- ushort ldtr, reserve10;\r
- ushort flags, iomap;\r
-};\r
-\r
-struct TASK_CONTROL {\r
- struct TASK *now, *main, *idle, *next;\r
- struct TIMER *ts;\r
-};\r
-\r
-struct TASK {\r
- struct TASK_STATUS_SEGMENT tss;\r
- uint selector;\r
- uchar description[TASK_DESCRIPTION_LENGTH];\r
- uint quantum;\r
- uint cputime;\r
- struct TASK *next;\r
- state_alloc state;\r
- struct CONSOLE *cons;\r
-};\r
-\r
-struct LISTENER {\r
- struct LISTENER *next;\r
- struct FIFO32 *fifo;\r
- uint flags;\r
- uint offset;\r
-};\r
-\r
-struct DEVICE_FLOPPYDISK {\r
- uchar *img;\r
- struct DEVICE_FLOPPYDISK_RDE {\r
- uchar name[8]; //0x00:empty\r
- //0x05:=0xe5\r
- //0x2e:(only directory)\r
- //. 0x2e:current directory\r
- //.. 0x2e, 0x2e:parent directory\r
- //0xe5:deleted(usable)\r
- uchar ext[3];\r
- uchar attribute; //bit0:readonly\r
- //bit1:hidden\r
- //bit2:system\r
- //bit3:volumelabel\r
- //bit4:directory\r
- //bit5:archive\r
- //0x0f=LongFileNameEntry\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 updatetime; //0 -4 bit:second/2\r
- //5 -10bit:minute\r
- //11-15bit:hour\r
- ushort updatedate; //0 -4 bit:day(1-31) \r
- //5 -8 bit:month(1-12)\r
- //9 -15bit:year(from 1980)\r
- ushort cluster;\r
- uint size;\r
- } *files;\r
- sector *userdataarea;\r
- void *fat;\r
-};\r
-\r
-struct FILEINFO {\r
- uchar *data;\r
- uint size;\r
- uchar name[13];\r
-};\r
-\r
-struct WINDOW {\r
- struct SHEET *client;\r
- struct SHEET *control;\r
- uchar title[WINDOW_TITLE_LENGTH];\r
- struct WINDOW *next;\r
-};\r
-\r
-struct CONSOLE {\r
- struct WINDOW *win;\r
- struct UI_INPUTBOX *input;\r
- struct CONSOLE *next;\r
- struct FIFO32 fifo;\r
- struct TIMER *ctimer;\r
- struct FILEINFO app_codefile;\r
- ushort app_cs;\r
- ushort app_ds;\r
-};\r
-\r
-struct SYSTEM_COMMON_DATA {\r
- struct BOOTINFO *bootinfo;\r
- struct VESAINFO *vesainfo;\r
- struct TASK *maintask;\r
- struct FIFO32 sysfifo;\r
- struct TASK *keyctrltask;\r
- struct FIFO32 keyboardfifo;\r
- struct FIFO32 keycmdfifo;\r
- int keycmd_wait;\r
- struct TASK *mousectrltask;\r
- struct FIFO32 mousefifo;\r
- struct MOUSE_DECODE mousedecode;\r
- struct UI_MOUSE_CURSOR mouse_cursor;\r
- struct SHEET *focus;\r
- struct SHEET *key_focus;\r
- struct WINDOW windowctrl;\r
- struct CONSOLE consctrl;\r
- struct DEVICE_FLOPPYDISK *fd_boot;\r
-};\r
-\r
-/*typedef structures*/\r
-typedef struct SEGMENT_DESCRIPTOR IO_SegmentDescriptor;\r
-typedef struct GATE_DESCRIPTOR IO_GateDescriptor;\r
-typedef struct BOOTINFO DATA_BootInfo;\r
-typedef struct VESAINFO DATA_VESAInfo;\r
-typedef struct FIFO32 DATA_FIFO;\r
-typedef struct MEMORY_CONTROL_TAG IO_MemoryControlTag;\r
-typedef struct MEMORY_CONTROL IO_MemoryControl;\r
-typedef struct POSITION_2D DATA_Position2D;\r
-typedef struct UI_INPUTBOX UI_InputBox;\r
-typedef struct KEYINFO UI_KeyInfo;\r
-typedef struct TIMER_CONTROL UI_TimerControl;\r
-typedef struct TIMER UI_Timer;\r
-typedef struct SHEET_CONTROL UI_Sheet_Control;\r
-typedef struct SHEET UI_Sheet;\r
-typedef struct MOUSE_DECODE UI_MouseInfo;\r
-typedef struct UI_MOUSE_CURSOR UI_MouseCursor;\r
-typedef struct DATA_CPU_IDENTITY DATA_CPUID;\r
-typedef struct MEMORY_BLOCK Memory;\r
-typedef struct TASK_STATUS_SEGMENT IO_TaskStatusSegment;\r
-typedef struct TASK_CONTROL UI_TaskControl;\r
-typedef struct TASK UI_Task;\r
-typedef struct LISTENER UI_Listener;\r
-typedef struct DEVICE_FLOPPYDISK_RDE IO_FloppyDisk_RootDirectoryEntry;\r
-typedef struct DEVICE_FLOPPYDISK IO_FloppyDisk;\r
-typedef struct FILEINFO IO_File;\r
-typedef struct WINDOW UI_Window;\r
-typedef struct MOUSE_EVENT_ARGUMENTS UI_MouseEventArguments;\r
-typedef struct CONSOLE UI_Console;\r
-typedef struct SYSTEM_COMMON_DATA System_CommonData;\r
-\r
-/*virtual classes*/\r
-\r
-/*externs*/\r
-extern uchar hankaku[4096];\r
-extern UI_Sheet_Control sys_sheet_ctrl;\r
-extern IO_MemoryControl sys_mem_ctrl;\r
-extern Memory SystemMemory;\r
-extern UI_TaskControl *taskctrl;\r
-extern uint *ADR_Paging_Directory;\r
-extern uchar *ACPI_MemoryMap_Type[5];\r
-\r
-/*functions*/\r
-/*api.c API\8f\88\97\9d*/\r
-uint *API_Execute(uint edi, uint esi, uint ebp, uint esp, uint ebx, uint edx, uint ecx, uint eax);\r
-\r
-/*bootpack.c \8aî\8a²\95\94\95ª*/\r
-void CHNOS_KeyboardControlTask(void);\r
-void CHNOS_MouseControlTask(void);\r
-void CHNOS_UI_KeyFocus_Change(UI_Sheet *focus_new);\r
-\r
-/*console.c*/\r
-void Initialise_Console(UI_Console *consctrl, System_CommonData *systemdata);\r
-UI_Console *Console_Create(uint xchars, uint ychars);\r
-void Console_MainTask(UI_Console *cons);\r
-void Console_Command_memmap(UI_Console *cons);\r
-void Console_Command_memblock(UI_Console *cons);\r
-void Console_Command_mem(UI_Console *cons);\r
-void Console_Command_systeminfo(UI_Console *cons);\r
-void Console_Command_task(UI_Console *cons);\r
-void Console_Command_window(UI_Console *cons);\r
-void Console_Command_console(UI_Console *cons);\r
-void Console_Command_type(UI_Console *cons, const uchar filename[]);\r
-void Console_Command_dir(UI_Console *cons);\r
-void Console_Command_gdt(UI_Console *cons);\r
-void Console_Command_midi(UI_Console *cons, const uchar filename[]);\r
-uint Console_Command_midi_Convert_VariableLengthValue(uchar *base, uint *offset);\r
-void Console_Command_midi_Beep_Set_NoteNumber(uchar n);\r
-void Console_Execute(UI_Console *cons);\r
-void Console_Execute_CHNOSProject(UI_Console *cons, int n);\r
-void Console_Execute_haribote(UI_Console *cons, int n);\r
-\r
-/*cpuid.c*/\r
-void CPU_Identify(DATA_CPUID *id);\r
-\r
-/*dsctbl.c \83f\83B\83X\83N\83\8a\83v\83^\81[\81E\83e\81[\83u\83\8b\8aÖ\98A*/\r
-void Initialise_GlobalDescriptorTable(void);\r
-void Initialise_InterruptDescriptorTable(void);\r
-void SegmentDescriptor_Set(IO_SegmentDescriptor *seg_desc, uint limit, uint base, uint ar);\r
-uint SegmentDescriptor_Get_Base(IO_SegmentDescriptor *seg_desc);\r
-uint SegmentDescriptor_Get_Limit(IO_SegmentDescriptor *seg_desc);\r
-uint SegmentDescriptor_Get_AccessRight(IO_SegmentDescriptor *seg_desc);\r
-void GateDescriptor_Set(IO_GateDescriptor *gate_desc, uint offset, uint selector, uint ar);\r
-void System_SegmentDescriptor_Set_Absolute(uint selector, uint limit, uint base, uint ar);\r
-uint System_SegmentDescriptor_Get_Base(uint selector);\r
-uint System_SegmentDescriptor_Get_Limit(uint selector);\r
-uint System_SegmentDescriptor_Get_AccessRight(uint selector);\r
-uint System_SegmentDescriptor_Set(uint limit, int base, int ar);\r
-void System_GateDescriptor_Set(uint irq, uint offset, uint selector, uint ar);\r
-\r
-/*fifo.c FIFO\83o\83b\83t\83@\8aÖ\98A*/\r
-int FIFO32_Initialise(DATA_FIFO *fifo, uint size);\r
-int FIFO32_Put(DATA_FIFO *fifo, uint data);\r
-int FIFO32_Put_Arguments(DATA_FIFO *fifo, uint args, ...);\r
-void FIFO32_Set_Task(DATA_FIFO *fifo, UI_Task *task);\r
-uint FIFO32_Get(DATA_FIFO *fifo);\r
-uint FIFO32_Status(DATA_FIFO *fifo);\r
-int FIFO32_Free(DATA_FIFO *fifo);\r
-\r
-/*file.c \83t\83@\83C\83\8b\8aÖ\98A*/\r
-IO_FloppyDisk *FloppyDisk_Initialise(void *img);\r
-int FloppyDisk_Search_File(IO_FloppyDisk *fd, const uchar *name);\r
-int FloppyDisk_Load_File(IO_FloppyDisk *fd, IO_File *fileinfo, int fileno);\r
-int File_Free(IO_File *fileinfo);\r
-void FloppyDisk_Decode_FAT16(uchar *img, ushort *fat, bool backup);\r
-\r
-/*grap_08.c*/\r
-void Draw_Put_Font_08(void *vram, uint xsize, uint x, uint y, uint c, const uchar *font);\r
-void Draw_Put_String_08(void *vram, uint xsize, uint x, uint y, uint c, const uchar *s);\r
-void Draw_Fill_Rectangle_08(void *vram, uint xsize, uint c, uint x0, uint y0, uint x1, uint y1);\r
-void Draw_Slide_Line_08(void *vram, uint xsize, uint ysize, uint vxsize, uint px, uint py);\r
-void Draw_Initialise_Palette(void);\r
-void Draw_Set_Palette(int start, int end, uchar *rgb);\r
-/*grap_16.c*/\r
-void Draw_Put_Font_16(void *vram, uint xsize, uint x, uint y, uint c, const uchar *font);\r
-void Draw_Put_String_16(void *vram, uint xsize, uint x, uint y, uint c, const uchar *s);\r
-void Draw_Fill_Rectangle_16(void *vram, uint xsize, uint c, uint x0, uint y0, uint x1, uint y1);\r
-void Draw_Slide_Line_16(void *vram, uint xsize, uint ysize, uint vxsize, uint px, uint py);\r
-/*grap_32.c*/\r
-void Draw_Put_Font_32(void *vram, uint xsize, uint x, uint y, uint c, const uchar *font);\r
-void Draw_Put_String_32(void *vram, uint xsize, uint x, uint y, uint c, const uchar *s);\r
-void Draw_Fill_Rectangle_32(void *vram, uint xsize, uint c, uint x0, uint y0, uint x1, uint y1);\r
-void Draw_Slide_Line_32(void *vram, uint xsize, uint ysize, uint vxsize, uint px, uint py);\r
-/*graphic.c*/\r
-void Initialise_Graphic(uint bpp);\r
-uchar RGB_32_To_08(uint c32);\r
-uchar RGB_32_To_08_xy(uint c32, int x, int y);\r
-ushort RGB_32_To_16(uint c32);\r
-extern void (*Draw_Put_String)(void *vram, uint xsize, uint x, uint y, uint c, const uchar *s);\r
-extern void (*Draw_Fill_Rectangle)(void *vram, uint xsize, uint c, uint x0, uint y0, uint x1, uint y1);\r
-extern void (*Draw_Slide_Line)(void *vram, uint xsize, uint ysize, uint vxsize, uint px, uint py);\r
-void Emergency_Out_Reset(void);\r
-int Emergency_Out(const uchar *format, ...);\r
-\r
-/*init.c*/\r
-void Initialise_System(System_CommonData *systemdata);\r
-\r
-/*inputbox.c*/\r
-UI_InputBox *InputBox_Initialise(UI_Sheet_Control *sheetctrl, IO_MemoryControl *memctrl, uint x, uint y, uint xsize, uint ysize, uint txtbufsize, uint forecol, uint backcol, uint height);\r
-int InputBox_Put_String(UI_InputBox *box, const uchar *s);\r
-int InputBox_Put_Character(UI_InputBox *box, uchar c);\r
-void InputBox_Put_String_Main(UI_InputBox *box, const uchar *str);\r
-void InputBox_Check_NewLine(UI_InputBox *box);\r
-void InputBox_NewLine_No_Prompt(UI_InputBox *box);\r
-void InputBox_NewLine(UI_InputBox *box);\r
-void InputBox_Slide_Line(UI_InputBox *box);\r
-void InputBox_Slide_Line(UI_InputBox *box);\r
-void InputBox_Put_Prompt(UI_InputBox *box);\r
-void InputBox_Reset_Input_Buffer(UI_InputBox *box);\r
-void InputBox_Change_Cursor_State(UI_InputBox *box);\r
-void InputBox_Clear(UI_InputBox *box);\r
-void InputBox_Set_Record(UI_InputBox *box, bool record);\r
-\r
-/*intrpt.c \8a\84\82è\8d\9e\82Ý\90Ý\92è\82Æ\82Ç\82±\82É\82à\91®\82³\82È\82¢\8a\84\82è\8d\9e\82Ý\83n\83\93\83h\83\89\81[*/\r
-void Initialise_ProgrammableInterruptController(void);\r
-void InterruptHandler27(int *esp);\r
-\r
-/*io.c*/\r
-uchar IO_Read_CMOS(uchar addr);\r
-void IO_Beep(uint fq, uint microsec);\r
-void IO_Wait(uint microsec);\r
-\r
-/*keyboard.c*/\r
-void Initialise_Keyboard(DATA_FIFO *sendto, DATA_FIFO *keycmd, uint offset, uint leds, int *keycmd_wait);\r
-void InterruptHandler21(int *esp);\r
-void Keyboard_Decode(UI_KeyInfo *info, uint data);\r
-void Keyboard_KeyLock(uint led);\r
-void Keyboard_Controller_Wait_SendReady(void);\r
-uint Keyboard_Get_KeyShift(void);\r
-\r
-/*memblock.c \83\81\83\82\83\8a\8aÖ\98A*/\r
-void Initialise_MemoryBlock(IO_MemoryControl *mainctrl);\r
-void *MemoryBlock_Allocate_System(uint size);\r
-void *MemoryBlock_Allocate_User(uint size, IO_MemoryControl *ctrl);\r
-Memory *MemoryBlock_Verify(void *addr);\r
-int MemoryBlock_Write_Description(void *addr, const uchar *description);\r
-int MemoryBlock_Free(void *addr);\r
-\r
-\r
-/*memory.c \83\81\83\82\83\8a\8aÖ\98A*/\r
-uint Memory_Test(uint start, uint end);\r
-void MemoryControl_Initialise(IO_MemoryControl *ctrl, void *start, uint size);\r
-uint MemoryControl_FreeSize(IO_MemoryControl *ctrl);\r
-void *MemoryControl_Allocate(IO_MemoryControl *ctrl, uint size);\r
-int MemoryControl_Free(IO_MemoryControl *ctrl, void *addr0, uint size);\r
-void *MemoryControl_Allocate_Page(IO_MemoryControl *ctrl);\r
-void MemoryControl_Output_Info(IO_MemoryControl *ctrl);\r
-void System_MemoryControl_Initialise(void);\r
-uint System_MemoryControl_FullSize(void);\r
-uint System_MemoryControl_FreeSize(void);\r
-void *System_MemoryControl_Allocate(uint size);\r
-int System_MemoryControl_Free(void *addr0, uint size);\r
-void *System_MemoryControl_Allocate_Page(void);\r
-void System_MemoryControl_Output_Info(void);\r
-\r
-/*mouse.c \83}\83E\83X\8aÖ\98A*/\r
-extern uchar mcursor_pattern0[24][24];\r
-void Initialise_Mouse(DATA_FIFO *sendto, uint offset, UI_MouseInfo *decode);\r
-void InterruptHandler2c(int *esp);\r
-int Mouse_Decode(uint data);\r
-void Mouse_Send_Command(uint data);\r
-void Mouse_Make_MouseCursor(UI_MouseCursor *cursor, int rangex0, int rangey0, int rangex1, int rangey1, uint height);\r
-void Mouse_Draw_MouseCursor(UI_MouseCursor *cursor, mcursor_state state);\r
-void Mouse_Move_Relative(UI_MouseCursor *cursor, int movex, int movey);\r
-void Mouse_Move_Absolute(UI_MouseCursor *cursor, int px, int py);\r
-\r
-/*mtask.c \83}\83\8b\83`\83^\83X\83N\8aÖ\98A*/\r
-void Initialise_MultiTask(void);\r
-UI_Task *MultiTask_Task_Get(const uchar *description);\r
-void MultiTask_Task_Change_Quantum(UI_Task *task, uint quantum);\r
-void MultiTask_Task_Run(UI_Task *task);\r
-void MultiTask_Task_Sleep(UI_Task *task);\r
-void MultiTask_Task_Remove(UI_Task *task);\r
-void MultiTask_Task_Arguments(UI_Task *task, int args, ...);\r
-void MultiTask_TaskSwitch(void);\r
-UI_Task *MultiTask_Get_NowTask(void);\r
-void MultiTask_IdleTask(void);\r
-\r
-/*paging.c \83y\81[\83W\83\93\83O\8aÖ\98A*/\r
-void Initialise_Paging(void *vram, uint xsize, uint ysize, uint bpp);\r
-void Paging_Set_Entry_Directory(uint *dir_entry, uint *table_base, uint attribute, uint available);\r
-void Paging_Set_Entry_Table(uint *table_entry, uint *page_base, uint attribute, uint available);\r
-uint *Paging_Get_Entry_Setting_Address(uint entry);\r
-\r
-/*serial.c \83V\83\8a\83A\83\8b\92Ê\90M\8aÖ\98A*/\r
-void Initialise_SerialPort(void);\r
-void Send_SerialPort(uchar *s);\r
-int debug(const uchar *format, ...);\r
-\r
-/*sheet.c \83V\81[\83g\8aÖ\98A*/\r
-void Sheet_Initialise(UI_Sheet_Control *sheetctrl, IO_MemoryControl *memctrl, void *vram, uint xsize, uint ysize, uint bpp);\r
-UI_Sheet *Sheet_Get(UI_Sheet_Control *ctrl, uint xsize, uint ysize, uint bpp, uint invcol);\r
-uint Sheet_Show(UI_Sheet *sheet, int px, int py, uint height);\r
-void Sheet_Set_Movable(UI_Sheet *sheet, bool movable);\r
-void Sheet_Set_MouseEventProcedure(UI_Sheet *sheet, void (*procedure)(UI_MouseEventArguments *e), uint flags);\r
-void Sheet_Set_FIFO(UI_Sheet *sheet, DATA_FIFO *fifo, uint flags);\r
-void Sheet_Slide(UI_Sheet *sheet, int px, int py);\r
-uint Sheet_UpDown(UI_Sheet *sheet, uint height);\r
-void Sheet_Remove(UI_Sheet *sheet);\r
-void Sheet_Refresh_Map(UI_Sheet *sheet, int x0, int y0, int x1, int y1);\r
-void Sheet_Write_Map_32(UI_Sheet *sheet, int x0, int y0, int x1, int y1);\r
-void Sheet_Write_Map_16(UI_Sheet *sheet, int x0, int y0, int x1, int y1);\r
-void Sheet_Write_Map_08(UI_Sheet *sheet, int x0, int y0, int x1, int y1);\r
-void Sheet_Write_Map_NoInvisible(UI_Sheet *sheet, int x0, int y0, int x1, int y1);\r
-void Sheet_Refresh_All(UI_Sheet *sheet0, UI_Sheet *sheet1, int x0, int y0, int x1, int y1);\r
-void Sheet_Refresh_32from32(UI_Sheet *sheet, int px0, int py0, int px1, int py1);\r
-void Sheet_Refresh_16from32(UI_Sheet *sheet, int px0, int py0, int px1, int py1);\r
-void Sheet_Refresh_08from32(UI_Sheet *sheet, int px0, int py0, int px1, int py1);\r
-void Sheet_Refresh_16from16(UI_Sheet *sheet, int px0, int py0, int px1, int py1);\r
-void Sheet_Refresh_08from08(UI_Sheet *sheet, int px0, int py0, int px1, int py1);\r
-void Sheet_Refresh_Invalid(UI_Sheet *sheet, int px0, int py0, int px1, int py1);\r
-void Sheet_Draw_Put_String(UI_Sheet *sheet, uint x, uint y, uint c, const uchar *s);\r
-void Sheet_Draw_Put_String_With_BackColor(UI_Sheet *sheet, uint x, uint y, uint c, uint bc, const uchar *s);\r
-void Sheet_Draw_Fill_Rectangle(UI_Sheet *sheet, uint c, uint x0, uint y0, uint x1, uint y1);\r
-void Sheet_Draw_Fill_Rectangle_Gradation_Vertical(UI_Sheet *sheet, uint c0, uint c1, uint x0, uint y0, uint x1, uint y1);\r
-void Sheet_Draw_Point(UI_Sheet *sheet, uint c, uint x, uint y);\r
-void System_Sheet_Initialise(void *vram, uint xsize, uint ysize, uint bpp);\r
-UI_Sheet *System_Sheet_Get(uint xsize, uint ysize, uint bpp, uint invcol);\r
-UI_Sheet *Sheet_Get_From_Position(UI_Sheet_Control *ctrl, int x, int y);\r
-uint Sheet_Get_Top_Of_Height(UI_Sheet_Control *ctrl);\r
-uint System_Sheet_Get_Top_Of_Height(void);\r
-\r
-/*timer.c \83^\83C\83}\81[\8aÖ\98A*/\r
-void Initialise_ProgrammableIntervalTimer(void);\r
-void InterruptHandler20(int *esp);\r
-uint Timer_Get_Tick(void);\r
-UI_Timer *Timer_Get(DATA_FIFO *fifo, uint data);\r
-void Timer_Set(UI_Timer *timer, uint count, timer_mode mode);\r
-void Timer_Run(UI_Timer *timer);\r
-void Timer_Cancel(UI_Timer *timer);\r
-void Timer_TaskSwitch_Set(UI_Timer *ts);\r
-\r
-/*window.c \83E\83B\83\93\83h\83E\8aÖ\98A*/\r
-void Initialise_Window(UI_Window *windowctrl);\r
-UI_Window *Window_Create(const uchar *title, uint flags, uint xsize, uint ysize);\r
-UI_Window *Window_Create_User(const uchar *title, uint flags, UI_Sheet *client);\r
-UI_Window *Window_Get_From_Sheet(UI_Sheet *sheet);\r
-void Window_Control_MouseEventProcedure(UI_MouseEventArguments *e);\r
-void Window_Draw_CloseButton(UI_Window *win, bool pressed);\r
-\r
-/*xception.c CPU\97á\8aO\8aÖ\98A*/\r
-void CPU_Exception_Abort(int exception, int *esp);\r
-uint *CPU_Exception_Fault(int exception, int *esp);\r
-void CPU_ExceptionHandler00(int *esp);\r
-void CPU_ExceptionHandler01(int *esp);\r
-void CPU_ExceptionHandler02(int *esp);\r
-void CPU_ExceptionHandler03(int *esp);\r
-void CPU_ExceptionHandler04(int *esp);\r
-void CPU_ExceptionHandler05(int *esp);\r
-void CPU_ExceptionHandler06(int *esp);\r
-void CPU_ExceptionHandler07(int *esp);\r
-void CPU_ExceptionHandler08(int *esp);\r
-void CPU_ExceptionHandler09(int *esp);\r
-void CPU_ExceptionHandler0a(int *esp);\r
-void CPU_ExceptionHandler0b(int *esp);\r
-void CPU_ExceptionHandler0c(int *esp);\r
-uint *CPU_ExceptionHandler0d(int *esp);\r
-void CPU_ExceptionHandler0e(int *esp);\r
-void CPU_ExceptionHandler0f(int *esp);\r
-void CPU_ExceptionHandler10(int *esp);\r
-void CPU_ExceptionHandler11(int *esp);\r
-void CPU_ExceptionHandler12(int *esp);\r
-void CPU_ExceptionHandler13(int *esp);\r
-void CPU_ExceptionHandler14(int *esp);\r
-void CPU_ExceptionHandler15(int *esp);\r
-void CPU_ExceptionHandler16(int *esp);\r
-void CPU_ExceptionHandler17(int *esp);\r
-void CPU_ExceptionHandler18(int *esp);\r
-void CPU_ExceptionHandler19(int *esp);\r
-void CPU_ExceptionHandler1a(int *esp);\r
-void CPU_ExceptionHandler1b(int *esp);\r
-void CPU_ExceptionHandler1c(int *esp);\r
-void CPU_ExceptionHandler1d(int *esp);\r
-void CPU_ExceptionHandler1e(int *esp);\r
-void CPU_ExceptionHandler1f(int *esp);\r
-\r
-/*nasfunc0.nas \91¼\82Ì\8aÖ\90\94\82É\91S\82\88Ë\91¶\82µ\82È\82¢\83A\83Z\83\93\83u\83\89\8aÖ\90\94\8cQ*/\r
-void IO_HLT(void); //CPU\82ð\92â\8e~\82³\82¹\82é\81B\8a\84\82è\8d\9e\82Ý\82ª\82 \82é\82Æ\8dÄ\8aJ\82·\82é\81B\93Á\8c \96½\97ß\81B\r
-void IO_CLI(void); //CPU\82Ö\82Ì\8aO\95\94\8a\84\82è\8d\9e\82Ý\82ð\92â\8e~\82³\82¹\82é\81B\93Á\8c \96½\97ß\81BNMI\82Æ\97á\8aO\82É\82Í\8cø\82©\82È\82¢\81B\r
-void IO_STI(void); //CPU\82Ö\82Ì\8aO\95\94\8a\84\82è\8d\9e\82Ý\82ð\8dÄ\8aJ\82³\82¹\82é\81B\93Á\8c \96½\97ß\81B\r
-void IO_STIHLT(void); //CPU\82Ö\82Ì\8aO\95\94\8a\84\82è\8d\9e\82Ý\82ð\8dÄ\8aJ\82³\82¹\82½\8cã\81ACPU\82ð\92â\8e~\82³\82¹\82é\81Bsti\82Æhlt\82Ì\8aÔ\82É\94\90¶\82·\82é\8a\84\82è\8d\9e\82Ý\82Ö\82Ì\91Î\8dô\81B\81B\r
-uint IO_In8(uint port); //port\94Ô\82ÌI/O\83|\81[\83g\82©\82ç\83f\81[\83^\82ð\83o\83C\83g\92P\88Ê\82Å\8eó\82¯\8eæ\82é\81B\96ß\82è\92l\82Í\8eó\82¯\8eæ\82Á\82½\83f\81[\83^\81BI/O\93Á\8c \96½\97ß\81B\r
-void IO_Out8(uint port, uint data); //port\94Ô\82ÌI/O\83|\81[\83g\82Édata\82ð\83o\83C\83g\92P\88Ê\82Å\8fo\97Í\82·\82é\81BI/O\93Á\8c \96½\97ß\81B\r
-uint IO_In16(uint port); //port\94Ô\82ÌI/O\83|\81[\83g\82©\82ç\83f\81[\83^\82ð\83\8f\81[\83h\92P\88Ê\82Å\8eó\82¯\8eæ\82é\81B\96ß\82è\92l\82Í\8eó\82¯\8eæ\82Á\82½\83f\81[\83^\81BI/O\93Á\8c \96½\97ß\81B\r
-void IO_Out16(uint port, uint data); //port\94Ô\82ÌI/O\83|\81[\83g\82Édata\82ð\83\8f\81[\83h\92P\88Ê\82Å\8fo\97Í\82·\82é\81BI/O\93Á\8c \96½\97ß\81B\r
-uint IO_In32(uint port); //port\94Ô\82ÌI/O\83|\81[\83g\82©\82ç\83f\81[\83^\82ð\83_\83u\83\8b\83\8f\81[\83h\92P\88Ê\82Å\8eó\82¯\8eæ\82é\81B\96ß\82è\92l\82Í\8eó\82¯\8eæ\82Á\82½\83f\81[\83^\81BI/O\93Á\8c \96½\97ß\81B\r
-void IO_Out32(uint port, uint data); //port\94Ô\82ÌI/O\83|\81[\83g\82Édata\82ð\83_\83u\83\8b\83\8f\81[\83h\92P\88Ê\82Å\8fo\97Í\82·\82é\81BI/O\93Á\8c \96½\97ß\81B\r
-uint IO_Load_EFlags(void); //EFLAGS\83\8c\83W\83X\83^\82ð\93Ç\82Ý\8d\9e\82Þ\81B\r
-void IO_Store_EFlags(uint eflags); //EFLAGS\83\8c\83W\83X\83^\82ðeflags\82É\95Ï\8dX\82·\82é\81B\r
-uint Load_CR0(void); //\83R\83\93\83g\83\8d\81[\83\8b\83\8c\83W\83X\83^0\82ð\93Ç\82Ý\8d\9e\82Þ\81B\93Á\8c \96½\97ß\81B\r
-void Store_CR0(uint cr0); //\83R\83\93\83g\83\8d\81[\83\8b\83\8c\83W\83X\83^0\82ðcr0\82É\95Ï\8dX\82·\82é\81B\93Á\8c \96½\97ß\81B\r
-uint Load_CR2(void); //\83R\83\93\83g\83\8d\81[\83\8b\83\8c\83W\83X\83^2\82ð\93Ç\82Ý\8d\9e\82Þ\81B\93Á\8c \96½\97ß\81B\r
-void Store_CR2(uint cr2); //\83R\83\93\83g\83\8d\81[\83\8b\83\8c\83W\83X\83^2\82ðcr2\82É\95Ï\8dX\82·\82é\81B\93Á\8c \96½\97ß\81B\r
-uint Load_CR3(void); //\83R\83\93\83g\83\8d\81[\83\8b\83\8c\83W\83X\83^3\82ð\93Ç\82Ý\8d\9e\82Þ\81B\93Á\8c \96½\97ß\81B\r
-void Store_CR3(uint cr3); //\83R\83\93\83g\83\8d\81[\83\8b\83\8c\83W\83X\83^3\82ðcr3\82É\95Ï\8dX\82·\82é\81B\93Á\8c \96½\97ß\81B\r
-uint Load_CR4(void); //\83R\83\93\83g\83\8d\81[\83\8b\83\8c\83W\83X\83^4\82ð\93Ç\82Ý\8d\9e\82Þ\81B\93Á\8c \96½\97ß\81B\r
-void Store_CR4(uint cr4); //\83R\83\93\83g\83\8d\81[\83\8b\83\8c\83W\83X\83^4\82ðcr4\82É\95Ï\8dX\82·\82é\81B\93Á\8c \96½\97ß\81B\r
-void Load_GDTR(uint limit, uint addr); //\83O\83\8d\81[\83o\83\8b\81E\83f\83B\83X\83N\83\8a\83v\83^\81E\83e\81[\83u\83\8b\81E\83\8c\83W\83X\83^(GDTR)\82É\81Aaddr\82©\82çlimit\82Ì\94Í\88Í\82ðGDT\82Æ\82µ\82Ä\83\8d\81[\83h\82³\82¹\82é\81B\93Á\8c \96½\97ß\81B\r
-void Load_IDTR(uint limit, uint addr); //\83C\83\93\83^\83\89\83v\83g\81E\83f\83B\83X\83N\83\8a\83v\83^\81E\83e\81[\83u\83\8b\81E\83\8c\83W\83X\83^(IDTR)\82É\81Aaddr\82©\82çlimit\82Ì\94Í\88Í\82ðIDT\82Æ\82µ\82Ä\83\8d\81[\83h\82³\82¹\82é\81B\93Á\8c \96½\97ß\81B\r
-void Load_TR(uint tr); //\83Z\83O\83\81\83\93\83g\81E\83Z\83\8c\83N\83^tr\82ð\81A\83^\83X\83N\83\8c\83W\83X\83^\82É\8c»\8dÝ\82Ì\83^\83X\83N\82Æ\82µ\82Ä\83\8d\81[\83h\82³\82¹\82é\81B\93Á\8c \96½\97ß\81B\r
-void FarJMP(uint eip, uint cs); //\8c»\8dÝ\82Ì\83Z\83O\83\81\83\93\83g\82Æ\82Í\88Ù\82È\82é\83Z\83O\83\81\83\93\83gcs\82Ì\83I\83t\83Z\83b\83geip\82É\83v\83\8d\83O\83\89\83\80\82Ì\90§\8cä\82ð\88Ú\82·\81B\r
-void FarCall(uint eip, uint cs); //\8c»\8dÝ\82Ì\83Z\83O\83\81\83\93\83g\82Æ\82Í\88Ù\82È\82é\83Z\83O\83\81\83\93\83gcs\82Ì\83I\83t\83Z\83b\83geip\82É\83v\83\8d\83O\83\89\83\80\82Ì\90§\8cä\82ð\95ª\8aò\82³\82¹\82é\81B\r
-void CLTS(void); //\83R\83\93\83g\83\8d\81[\83\8b\81E\83\8c\83W\83X\83^0\93à\82É\82 \82é\81ATask-Switched\83t\83\89\83O\82ð\83N\83\8a\83A\82·\82é\81BFPU\82Ì\90§\8cä\82É\97\98\97p\81B\93Á\8c \96½\97ß\81B\r
-void FNSave(uint *addr); //FPU\93®\8dì\8aÂ\8b«\82ðaddr\82©\82ç\8en\82Ü\82é108\83o\83C\83g\82É\8ai\94[\82µ\81AFPU\82ð\8f\89\8aú\89»\82·\82é\81B\8fÚ\8d×\82È\83`\83F\83b\83N\82Í\8ds\82í\82È\82¢\81B\r
-void FRStore(uint *addr); //FPU\93®\8dì\8aÂ\8b«\82ðaddr\82©\82ç\8en\82Ü\82é108\83o\83C\83g\82©\82ç\95\9c\8c³\82·\82é\81B\r
-void PIT_Beep_On(void); //\83r\81[\83v\89¹\82ð\8aJ\8en\82·\82é\81B\r
-void PIT_Beep_Off(void); //\83r\81[\83v\89¹\82ð\92â\8e~\82·\82é\81B\r
-void PIT_Beep_Set(uint fq); //\83r\81[\83v\89¹\82Ì\8eü\94g\90\94\82ð\81AfqHz\82É\95Ï\8dX\82·\82é\81B\r
- //fq\82Ì\92l\r
- //C:262 C#:277 D:294 D#:311 E:330 F:349 F#:370 G:392 G#:415 A:440 A#:466 B:494 C:523\r
-void CPUID(void *addr, uint id); //addr\94Ô\92n\82Ìuint[4]\82É\81ACPU\82Ì\8e¯\95Ê\8fî\95ñid\94Ô\82ðEAX\81EEBX\81EEDX\81EECX\82Ì\8f\87\94Ô\82Å\8ai\94[\82·\82é\81B\r
-void CPUID2(void *addr, uint id); //addr\94Ô\92n\82Ìuint[4]\82É\81ACPU\82Ì\8e¯\95Ê\8fî\95ñid\94Ô\82ðEAX\81EEBX\81EECX\81EEDX\82Ì\8f\87\94Ô\82Å\8ai\94[\82·\82é\81B\r
- //\8fã\8bL\93ñ\82Â\82Ì\8aÖ\90\94\82Í\81AEFLAGS\93à\82ÌID\83t\83\89\83O(\83r\83b\83g21)\82ª\95Ï\8dX\89Â\94\\82È\8fê\8d\87\82Ì\82Ý\8eÀ\8ds\82Å\82«\82é\81B\r
-void Read_TSC(uint *addr); //addr\94Ô\92n\82Ìuint[2]\82É\81A\83}\83V\83\93\8cÅ\97L\83\8c\83W\83X\83^(MSR)\93à\82É\82 \82é\81A\83^\83C\83\80\81E\83X\83^\83\93\83v\81E\83J\83E\83\93\83^\82Ì\8fã\88Ê\81E\89º\88Ê\82»\82ê\82¼\82ê32\83r\83b\83g\82ð\93Ç\82Ý\8d\9e\82Þ\81B\r
- //\82±\82Ì\8aÖ\90\94\82Í\81Acpuid\82ÌTSC\83r\83b\83g\82ª\97L\8cø\82Å\82È\82¯\82ê\82Î\8eg\97p\82Å\82«\82È\82¢\81B\r
-uint Memory_Test_Sub(uint start, uint end);\r
-void INT_3(void); //\83u\83\8c\81[\83N\83|\83C\83\93\83g\97á\8aO\82ð\94\90¶\82³\82¹\82é\81B\r
-void APP_Run(uint eip, uint cs, uint esp, uint ds, uint *esp0);\r
-\r
-/*nasfunc1.nas C\8c¾\8cê\82Ì\8aÖ\90\94\82É\88Ë\91¶\82·\82é\8aÖ\90\94\8cQ\81B\82¨\82à\82É\8a\84\82è\8d\9e\82Ý\8aÖ\8cW\81B*/\r
-void asm_CPU_ExceptionHandler00(void);\r
-void asm_CPU_ExceptionHandler01(void);\r
-void asm_CPU_ExceptionHandler02(void);\r
-void asm_CPU_ExceptionHandler03(void);\r
-void asm_CPU_ExceptionHandler04(void);\r
-void asm_CPU_ExceptionHandler05(void);\r
-void asm_CPU_ExceptionHandler06(void);\r
-void asm_CPU_ExceptionHandler07(void);\r
-void asm_CPU_ExceptionHandler08(void);\r
-void asm_CPU_ExceptionHandler09(void);\r
-void asm_CPU_ExceptionHandler0a(void);\r
-void asm_CPU_ExceptionHandler0b(void);\r
-void asm_CPU_ExceptionHandler0c(void);\r
-void asm_CPU_ExceptionHandler0d(void);\r
-void asm_CPU_ExceptionHandler0e(void);\r
-void asm_CPU_ExceptionHandler0f(void);\r
-void asm_CPU_ExceptionHandler10(void);\r
-void asm_CPU_ExceptionHandler11(void);\r
-void asm_CPU_ExceptionHandler12(void);\r
-void asm_CPU_ExceptionHandler13(void);\r
-void asm_CPU_ExceptionHandler14(void);\r
-void asm_CPU_ExceptionHandler15(void);\r
-void asm_CPU_ExceptionHandler16(void);\r
-void asm_CPU_ExceptionHandler17(void);\r
-void asm_CPU_ExceptionHandler18(void);\r
-void asm_CPU_ExceptionHandler19(void);\r
-void asm_CPU_ExceptionHandler1a(void);\r
-void asm_CPU_ExceptionHandler1b(void);\r
-void asm_CPU_ExceptionHandler1c(void);\r
-void asm_CPU_ExceptionHandler1d(void);\r
-void asm_CPU_ExceptionHandler1e(void);\r
-void asm_CPU_ExceptionHandler1f(void);\r
-void asm_InterruptHandler20(void);\r
-void asm_InterruptHandler21(void);\r
-void asm_InterruptHandler27(void);\r
-void asm_InterruptHandler2c(void);\r
-void asm_API_Execute(void);\r