OSDN Git Service

svn rev.329より移動。
[chnosproject/CHNOSProject.git] / CHNOSProject / chnos / tolset_chn_000 / chnos_009 / chnos / core.h
diff --git a/CHNOSProject/chnos/tolset_chn_000/chnos_009/chnos/core.h b/CHNOSProject/chnos/tolset_chn_000/chnos_009/chnos/core.h
new file mode 100644 (file)
index 0000000..91f09ba
--- /dev/null
@@ -0,0 +1,793 @@
+\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