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