+++ /dev/null
-\r
-/*\83V\83X\83e\83\80\83f\81[\83^\8c^\90é\8c¾*/\r
-\r
-/*new object types*/\r
-//typedef enum _bool { false, true} bool;\r
-typedef unsigned char bool;\r
-typedef unsigned char uchar;\r
-typedef unsigned short ushort;\r
-typedef unsigned int uint;\r
-typedef enum _col_text { black, blue, green, skyblue, red, purple, brown, white} col_text;\r
-typedef unsigned char sector[512];\r
-\r
-/*structs*/\r
-/*CPU structs*/\r
-typedef union CPU_CONTROL_REGISTER0 {\r
- uint cr0;\r
- struct CPU_CONTROL_REGISTER0_BIT {\r
- unsigned PE : 1;\r
- unsigned MP : 1;\r
- unsigned EM : 1;\r
- unsigned TS : 1;\r
- unsigned ET : 1;\r
- unsigned NE : 1;\r
- unsigned bit6 : 1;\r
- unsigned bit7 : 1;\r
- unsigned bit8 : 1;\r
- unsigned bit9 : 1;\r
- unsigned bit10 : 1;\r
- unsigned bit11 : 1;\r
- unsigned bit12 : 1;\r
- unsigned bit13 : 1;\r
- unsigned bit14 : 1;\r
- unsigned bit15 : 1;\r
- unsigned WP : 1;\r
- unsigned bit17 : 1;\r
- unsigned AM : 1;\r
- unsigned bit19 : 1;\r
- unsigned bit20 : 1;\r
- unsigned bit21 : 1;\r
- unsigned bit22 : 1;\r
- unsigned bit23 : 1;\r
- unsigned bit24 : 1;\r
- unsigned bit25 : 1;\r
- unsigned bit26 : 1;\r
- unsigned bit27 : 1;\r
- unsigned bit28 : 1;\r
- unsigned NW : 1;\r
- unsigned CD : 1;\r
- unsigned PG : 1;\r
- } bit;\r
-} CPU_ControlRegister0;\r
-\r
-typedef union CPU_CONTROL_REGISTER3 {\r
- uint cr3;\r
- struct CPU_CONTROL_REGISTER3_BIT {\r
- unsigned bit0 : 1;\r
- unsigned bit1 : 1;\r
- unsigned bit2 : 1;\r
- unsigned PWT : 1;\r
- unsigned PCD : 1;\r
- unsigned bit5 : 1;\r
- unsigned bit6 : 1;\r
- unsigned bit7 : 1;\r
- unsigned bit8 : 1;\r
- unsigned bit9 : 1;\r
- unsigned bit10 : 1;\r
- unsigned bit11 : 1;\r
- unsigned PDB : 20;\r
- } bit;\r
-} CPU_ControlRegister3;\r
-\r
-typedef union CPU_CONTROL_REGISTER4 {\r
- uint cr4;\r
- struct CPU_CONTROL_REGISTER4_BIT {\r
- unsigned VME : 1;\r
- unsigned PVI : 1;\r
- unsigned TSD : 1;\r
- unsigned DE : 1;\r
- unsigned PSE : 1;\r
- unsigned PAE : 1;\r
- unsigned MCE : 1;\r
- unsigned PGE : 1;\r
- unsigned PCE : 1;\r
- unsigned OSFXSR : 1;\r
- unsigned OSXMMEXCPT : 1;\r
- unsigned bit11 : 1;\r
- unsigned bit12 : 1;\r
- unsigned VMXE : 1;\r
- unsigned SMXE : 1;\r
- unsigned bit15 : 1;\r
- unsigned bit16 : 1;\r
- unsigned PCIDE : 1;\r
- unsigned OSXSAVE : 1;\r
- unsigned bit19 : 1;\r
- unsigned SMEP : 1;\r
- unsigned bit21 : 1;\r
- unsigned bit22 : 1;\r
- unsigned bit23 : 1;\r
- unsigned bit24 : 1;\r
- unsigned bit25 : 1;\r
- unsigned bit26 : 1;\r
- unsigned bit27 : 1;\r
- unsigned bit28 : 1;\r
- unsigned bit29 : 1;\r
- unsigned bit30 : 1;\r
- unsigned bit31 : 1;\r
- } bit;\r
-} CPU_ControlRegister4;\r
-\r
-typedef union CPU_DEBUG_REGISTER6 {\r
- uint dr6;\r
- struct CPU_DEBUG_REGISTER6_BIT {\r
- unsigned B0 : 1;\r
- unsigned B1 : 1;\r
- unsigned B2 : 1;\r
- unsigned B3 : 1;\r
- unsigned bit4_11 : 8; //1\r
- unsigned bit12 : 1; //0\r
- unsigned BD : 1;\r
- unsigned BS : 1;\r
- unsigned BT : 1;\r
- unsigned bit16_31 : 16;\r
- } bit;\r
-} CPU_DebugRegister6;\r
-\r
-typedef union CPU_DEBUG_REGISTER7 {\r
- uint dr7;\r
- struct CPU_DEBUG_REGISTER7_BIT {\r
- unsigned L0 : 1;\r
- unsigned G0 : 1;\r
- unsigned L1 : 1;\r
- unsigned G1 : 1;\r
- unsigned L2 : 1;\r
- unsigned G2 : 1;\r
- unsigned L3 : 1;\r
- unsigned G3 : 1;\r
- unsigned LE : 1; //must be 1\r
- unsigned GE : 1; //must be 1\r
- unsigned bit10 : 1; //1\r
- unsigned bit11 : 1; //0\r
- unsigned bit12 : 1; //0\r
- unsigned GD : 1;\r
- unsigned bit14 : 1; //0\r
- unsigned bit15 : 1; //0\r
- unsigned RW0 : 2;\r
- unsigned LEN0 : 2;\r
- unsigned RW1 : 2;\r
- unsigned LEN1 : 2;\r
- unsigned RW2 : 2;\r
- unsigned LEN2 : 2;\r
- unsigned RW3 : 2;\r
- unsigned LEN3 : 2;\r
- } bit;\r
-} CPU_DebugRegister7;\r
-\r
-typedef union CPU_EFLAGS {\r
- uint eflags;\r
- struct CPU_EFLAGS_BIT {\r
- unsigned CF : 1;\r
- unsigned bit1 : 1; //\8fí\82ÉTrue\81A\82±\82ê\88È\8aO\82Ì\97\\96ñ\8dÏ\82Ý\83r\83b\83g\82Í\8fí\82ÉFalse\r
- unsigned PF : 1;\r
- unsigned bit3 : 1;\r
- unsigned AF : 1;\r
- unsigned bit5 : 1;\r
- unsigned ZF : 1;\r
- unsigned SF : 1;\r
- unsigned TF : 1;\r
- unsigned IF : 1;\r
- unsigned DF : 1;\r
- unsigned OF : 1;\r
- unsigned IOPL : 2;\r
- unsigned NT : 1;\r
- unsigned bit15 : 1;\r
- unsigned RF : 1;\r
- unsigned VM : 1;\r
- unsigned AC : 1;\r
- unsigned VIF : 1;\r
- unsigned VIP : 1;\r
- unsigned ID : 1;\r
- unsigned bit22 : 1;\r
- unsigned bit23 : 1;\r
- unsigned bit24 : 1;\r
- unsigned bit25 : 1;\r
- unsigned bit26 : 1;\r
- unsigned bit27 : 1;\r
- unsigned bit28 : 1;\r
- unsigned bit29 : 1;\r
- unsigned bit30 : 1;\r
- unsigned bit31 : 1;\r
- } bit;\r
-} CPU_EFlags;\r
-\r
-typedef struct TASK_STATE_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
- CPU_EFlags 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
- unsigned flag_trap : 1;\r
- unsigned reserve11 : 15;\r
- ushort iomap_base;\r
-} CPU_TaskStateSegment;\r
-\r
-typedef struct SEGMENT_DESCRIPTOR { \r
- ushort limit_low, base_low;\r
- uchar base_mid, access_right;\r
- uchar limit_high, base_high;\r
-} IO_SegmentDescriptor;\r
-\r
-typedef struct GATE_DESCRIPTOR { \r
- ushort offset_low, selector;\r
- uchar dw_count, access_right;\r
- ushort offset_high;\r
-} IO_GateDescriptor;\r
-\r
-/*memory*/\r
-typedef struct IO_MEMORYCONTROLTAG {\r
- void *addr;\r
- uint size;\r
-} IO_MemoryControlTag;\r
-\r
-typedef IO_MemoryControlTag* IO_MemoryControl;\r
-\r
-/*common tag*/\r
-typedef struct SYSTEM_COMMON_STRUCT {\r
- uint structid;\r
- uint structsize;\r
-} System_CommonStruct;\r
-\r
-/*FIFO*/\r
-typedef struct FIFO32 {\r
- System_CommonStruct common_tag;\r
- uint *buf;\r
- uint p, q, size, free;\r
- struct FIFO32_FLAGS {\r
- unsigned initialized : 1;\r
- unsigned overflow : 1;\r
- } flags;\r
- struct UI_TASK *task;\r
-} DATA_FIFO32;\r
-\r
-/*task*/\r
-typedef struct UI_TASK {\r
- uint selector;\r
- struct UI_TASK *next;\r
- uint count;\r
- DATA_FIFO32 *fifo;\r
- CPU_TaskStateSegment *tss;\r
- struct UI_TASK_STATE_FLAGS {\r
- unsigned initialized : 1;\r
- unsigned linked : 1;\r
- unsigned running : 1;\r
- unsigned first_run : 1;\r
- } flags;\r
-} UI_Task;\r
-\r
-typedef struct UI_TASK_CONTROL {\r
- struct UI_TASK *start;\r
- struct UI_TASK *now;\r
- IO_MemoryControl sysmemctrl;\r
-} UI_TaskControl;\r
-\r
-/*callbios*/\r
-typedef struct CALL_BIOS_CONTROL {\r
- UI_Task *CallBIOS_Task;\r
- uint codesize;\r
- DATA_FIFO32 *fifo;\r
- uint endsignal;\r
- CPU_TaskStateSegment retvalue;\r
- uint esp0;\r
-} IO_CallBIOSControl;\r
-\r
-/*cfunction*/\r
-typedef struct CFUNCTION_VSNPRINTF_WORKAREA {\r
- uchar *destination_buf; /*\8f\91\82«\8d\9e\82Ý\90æ\95¶\8e\9a\97ñ\82Ì\8aJ\8en\83A\83h\83\8c\83X*/\r
- uint length_destination_buf; /*\8f\91\82«\8d\9e\82Ý\90æ\95¶\8e\9a\97ñ\82Ì\8dÅ\91å\83T\83C\83Y*/\r
- uint index_destination_buf; /*\8f\91\82«\8d\9e\82Ý\90æ\95¶\8e\9a\97ñ\82Ì\83C\83\93\83f\83b\83N\83X*/\r
-\r
- const uchar *format_buf; /*\8f\91\8e®\8ew\92è\95¶\8e\9a\97ñ\82Ì\8aJ\8en\83A\83h\83\8c\83X*/\r
- uint index_format_buf; /*\8f\91\8e®\8ew\92è\95¶\8e\9a\97ñ\82Ì\83C\83\93\83f\83b\83N\83X*/\r
-\r
- uchar temporary_data[16]; /*\88ê\8e\9e\83f\81[\83^\82Ì\94z\97ñ*/\r
- uchar temporary_data_double[8]; /*64\83r\83b\83g\95\82\93®\8f¬\90\94\93_\97p\83o\83b\83t\83@*/\r
-\r
- uint *vargs; /*\89Â\95Ï\92·\88ø\90\94\82Ì\8aJ\8en\83A\83h\83\8c\83X*/\r
- uint index_vargs; /*\89Â\95Ï\92·\88ø\90\94\82Ì\8c»\8dÝ\82Ì\8fê\8f\8a*/\r
-\r
- uint format_phase; /*\83t\83H\81[\83}\83b\83g\82Ì\92i\8aK\82ð\8e¦\82·\81B*/\r
- /*\90\94\92l :\88Ó\96¡*/\r
- /*0 :\83t\83H\81[\83}\83b\83g\8ew\92è\92\86\82Å\82Í\82È\82¢*/\r
- /*1 :\83t\83\89\83O\88È\8d~\82Ì\8f\91\8e®\82ð\97v\8b\81*/\r
- /*2 :\83t\83B\81[\83\8b\83h\95\9d\88È\8d~\82Ì\8f\91\8e®\82ð\97v\8b\81\81B*/\r
- /*3 :\90¸\93x\88È\8d~\82Ì\8f\91\8e®\82ð\97v\8b\81\81B*/\r
- /*4 :\95Ï\8a·\8fC\8fü\8eq\88È\8d~\82Ì\8f\91\8e®\82ð\97v\8b\81\81B*/\r
- /*5 :\83t\83H\81[\83}\83b\83g\8ew\92è\8eq\82ð\97v\8b\81*/\r
-} CFunction_vsnprintf_WorkArea;\r
-\r
-/*emu86*/\r
-typedef struct EMULATOR_X86_ENVIRONMENT_SEGMENT_REGISTER {\r
- ushort selector;\r
- ushort type;\r
- uint base;\r
- uint limit;\r
-} Emulator_x86_Environment_SegmentRegister;\r
-\r
-typedef struct EMULATOR_X86_ENVIRONMENT_SYSTEM_TABLE_REGISTER {\r
- uint base;\r
- ushort limit;\r
-} Emulator_x86_Environment_SystemTableRegister;\r
-\r
-typedef struct EMULATOR_X86_ENVIRONMENT {\r
- CPU_EFlags EFLAGS;\r
- uint EIP;\r
-\r
- uint GReg[8];\r
-\r
- Emulator_x86_Environment_SystemTableRegister GDTR;\r
- Emulator_x86_Environment_SystemTableRegister IDTR;\r
-\r
- Emulator_x86_Environment_SegmentRegister SReg[8];\r
-\r
- CPU_ControlRegister0 CR0;\r
- uint CR2;\r
- CPU_ControlRegister3 CR3;\r
- CPU_ControlRegister4 CR4;\r
-\r
- uchar now_opcode;\r
- uchar operation_end;\r
- uchar operation_32bit;\r
- uchar operation_prefix_lock_repeat;\r
- uchar operation_prefix_segment;\r
- uchar operation_prefix_opsize;\r
- uchar operation_prefix_addrsize;\r
-} Emulator_x86_Environment;\r
-\r
-typedef union EMULATOR_X86_OPCODE_MODRM {\r
- uchar modrm;\r
- struct EMULATOR_X86_OPCODE_MODRM_BIT {\r
- unsigned RM : 3;\r
- unsigned Reg : 3;\r
- unsigned Mod : 2;\r
- } bit;\r
-} Emulator_x86_OperationCode_ModRM;\r
-\r
-typedef struct EMULATOR_X86_FAR_POINTER {\r
- ushort offset;\r
- ushort selector;\r
-} Emulator_x86_FarPointer;\r
-\r
-/*drawing*/\r
-typedef struct DATA_LOCATION_2D {\r
- int x;\r
- int y;\r
-} DATA_Location2D;\r
-\r
-typedef struct DATA_LOCATION_2DU {\r
- uint x;\r
- uint y;\r
-} DATA_Location2DU;\r
-\r
-/*display*/\r
-typedef struct _INFO_VBE_BIOS {\r
- uchar sign[4];\r
- uchar ver_minor;\r
- uchar ver_major;\r
- ushort oem_string_offset;\r
- ushort oem_string_segment;\r
- ushort flags[2]; //\83p\83f\83B\83\93\83O\82Ì\8aÖ\8cW\82Å\81A\96{\93\96\82Íuint\82¾\82ªushort*2\82É\82µ\82Ä\82¢\82é\81B\r
- ushort vmode_args_offset;\r
- ushort vmode_args_segment;\r
- ushort vram_supported_size_kb;\r
-} INFO_VBE_BIOS;\r
-\r
-typedef struct _INFO_VBE_VIDEO_MODE {\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
- void* PhysBasePtr;\r
-} INFO_VBE_VideoMode;\r
-\r
-typedef struct _INFO_VBE_VIDEOMODETAG {\r
- ushort mode_number;\r
- ushort xsize;\r
- ushort ysize;\r
- uchar bpp;\r
- uchar memory_model; //0x00:text 0x04:256palette 0x06:direct color\r
- ushort attribute; //bit3:1:color 0:monochrome\r
- //bit4:1:graphic 0:text\r
- //bit7:linear buffer support\r
- ushort reserve;\r
- void *vram; //vram:0=not supported.\r
-} INFO_VBE_VideoModeTag;\r
-\r
-typedef struct IO_DISPLAY_CONTROL {\r
- struct IO_DISPLAY_CONTROL_VBE {\r
- uchar version_minor;\r
- uchar version_major;\r
- ushort vram_supported_size_kb;\r
- uint flags;\r
- uchar *oem_string;\r
- ushort *vmode_args;\r
- uint list_vmode_tags;\r
- INFO_VBE_VideoModeTag *list_vmode;\r
- } VBE;\r
- ushort display_mode; //0x0000:BIOS 0x0001:VBE Window Access(version < 2.0)(not implemented) 0x0002:VBE Linear Access\r
- ushort vmode; //0x0000:VGA 320x200 8bit\r
- ushort vmode_index;\r
- ushort bpp;\r
- ushort xsize;\r
- ushort ysize;\r
- void *vram;\r
- DATA_FIFO32 *bios_signal;\r
- struct UI_SHEET *vramsheet;\r
-} IO_DisplayControl;\r
-\r
-/*sheet*/\r
-typedef struct UI_SHEET {\r
- System_CommonStruct common_tag;\r
- struct UI_SHEET *parent; //one sheet has one parent(if vramseet then:0)\r
- struct UI_SHEET *next; //same level sheet link\r
- struct UI_SHEET *child; //lowest height sheet in children\r
- DATA_Location2D location;\r
- DATA_Location2DU size;\r
- ushort bpp;\r
- union UI_SHEET_FLAGS {\r
- ushort flags;\r
- struct UI_SHEET_FLAGS_BITS {\r
- unsigned initialized : 1;\r
- unsigned buffer_configured : 1;\r
- unsigned visible : 1;\r
- unsigned using_map : 1;\r
- unsigned vram_auto_allocated : 1;\r
- unsigned using_invcol : 1;\r
- unsigned topmost : 1;\r
- unsigned movable : 1;\r
- unsigned autorefresh_upperlevel : 1;\r
- } bit;\r
- } flags;\r
- void *vram;\r
- uint *map;\r
- uint vramsize;\r
- uint mapsize;\r
- uint invcol;\r
- uint (*Config_Functions)(struct UI_SHEET *sheet);\r
- uint (*RefreshSheet)(struct UI_SHEET *sheet, int px0, int py0, int px1, int py1);\r
- bool (*IsVisiblePixel)(struct UI_SHEET *sheet, int px, int py);\r
- struct UI_SHEET_DRAWING {\r
- uint (*Fill_Rectangle)(struct UI_SHEET *sheet, uint c, int px0, int py0, int px1, int py1);\r
- uint (*Put_String)(struct UI_SHEET *sheet, int x, int y, uint fc, const uchar s[]);\r
- uint (*Draw_Point)(struct UI_SHEET *sheet, int x, int y, uint c);\r
- } Drawing;\r
- DATA_FIFO32 *input_fifo;\r
-} UI_Sheet;\r
-\r
-/*timer*/\r
-typedef struct UI_TIMER {\r
- uint tick;\r
- uint timeout;\r
- struct UI_TIMER *root_next;\r
- struct UI_TIMER *tree_next;\r
- DATA_FIFO32 *fifo;\r
- uint fifo_putdata;\r
- union UI_TIMER_FLAGS {\r
- uint flags;\r
- struct UI_TIMER_FLAGS_BITS {\r
- unsigned initialized : 1;\r
- unsigned configured : 1;\r
- unsigned running : 1;\r
- unsigned interval : 1;\r
- } bit;\r
- } flags;\r
-} UI_Timer;\r
-\r
-typedef struct UI_TIMER_CONTROL {\r
- uint tick_10ms;\r
- void (*TaskSwitch)(void);\r
- UI_Timer *timer_root;\r
-} UI_TimerControl;\r
-\r
-/*color*/\r
-typedef union RGB_32BIT {\r
- uint c32;\r
- struct RGB_32BIT_RGBA {\r
- uchar b;\r
- uchar g;\r
- uchar r;\r
- uchar a;\r
- } bit;\r
-} RGB32;\r
-\r
-/*mouse*/\r
-\r
-typedef struct IO_MOUSE_CONTROL {\r
- uint decode_phase;\r
- uchar decode_buf[4];\r
- DATA_Location2D move;\r
- int scroll;\r
- struct IO_MOUSE_CONTROL_FLAGS {\r
- unsigned scroll : 1;\r
- } flags;\r
- union IO_MOUSE_CONTROL_BUTTON {\r
- uchar button;\r
- struct IO_MOUSE_CONTROL_BUTTON_BIT {\r
- unsigned L : 1;\r
- unsigned R : 1;\r
- unsigned C : 1;\r
- } bit;\r
- } button;\r
-} IO_MouseControl;\r
-\r
-typedef struct UI_MOUSE_CURSOR {\r
- UI_Sheet *cursor_sheet;\r
- struct UI_MOUSE_CURSOR_FLAGS {\r
- unsigned mode : 2;\r
- } flags;\r
- uchar *cursors[4];\r
-} UI_MouseCursor;\r
-\r
-/*textbox*/\r
-typedef struct UI_TEXT_BOX {\r
- System_CommonStruct common_tag;\r
- UI_Sheet *sheet;\r
- uint forecol;\r
- uint backcol;\r
- DATA_Location2D location_cursor;\r
- DATA_Location2D location_cursor_record_started;\r
- DATA_Location2DU chars;\r
- uchar *text_buf;\r
- uint size_text_buf;\r
- uint using_text_buf;\r
- \r
- union UI_TEXT_BOX_FLAGS {\r
- uint flags;\r
- struct UI_TEXT_BOX_FLAGS_BITS {\r
- unsigned initialized : 1;\r
- unsigned textbuffer_configured : 1;\r
- unsigned record_input_text : 1;\r
- unsigned cursor_blink : 1;\r
- unsigned cursor_state : 1;\r
- } bit;\r
- } flags;\r
-} UI_TextBox;\r
-\r
-typedef struct IO_FLOPPYDISK_DIRECTORY_ENTRY {\r
- uchar name[8]; //0x00:empty(no more files)\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; //0x0f=LongFileNameEntry\r
- uchar reserved;\r
- uchar VFAT_createTimeMs;\r
- ushort VFAT_createTime;\r
- ushort VFAT_createDate;\r
- ushort VFAT_accessDate;\r
- ushort VFAT_clusterHighWord;\r
- ushort updatetime;\r
- ushort updatedate;\r
- ushort cluster;\r
- uint size; //attribute.bit.directory==true:0\r
-} IO_FloppyDisk_DirectoryEntry;\r
-\r
-typedef struct IO_FLOPPYDISK {\r
- System_CommonStruct common_tag;\r
- uchar *img;\r
- IO_FloppyDisk_DirectoryEntry *files;\r
- sector *userdataarea;\r
- ushort *fat;\r
-} IO_FloppyDisk;\r
-\r
-typedef union IO_FLOPPYDISK_DIRECTORY_ENTRY_ATTRIBUTE {\r
- uchar attribute; //0x0f=LongFileNameEntry\r
- struct IO_FLOPPYDISK_RDE_ATTRIBUTE_BITS {\r
- unsigned readonly : 1;\r
- unsigned hidden : 1;\r
- unsigned system : 1;\r
- unsigned volumelabel : 1;\r
- unsigned directory : 1;\r
- unsigned archive : 1;\r
- unsigned bit6 : 1;\r
- unsigned bit7 : 1;\r
- } bit;\r
-} IO_FloppyDisk_DirectoryEntry_Attribute;\r
-\r
-typedef union IO_FLOPPYDISK_DIRECTORY_ENTRY_UPDATETIME {\r
- ushort updatetime;\r
- struct IO_FLOPPYDISK_RDE_UPDATETIME_BITS {\r
- unsigned second : 5; //second/2\r
- unsigned minute : 6;\r
- unsigned hour : 5;\r
- } bit;\r
-} IO_FloppyDisk_DirectoryEntry_UpdateTime;\r
-\r
-typedef union IO_FLOPPYDISK_DIRECTORY_ENTRY_UPDATEDATE {\r
- ushort updatedate;\r
- struct IO_FLOPPYDISK_RDE_UPDATEDATE_BITS {\r
- unsigned day : 5; //day(1-31)\r
- unsigned month : 4; //month(1-12)\r
- unsigned year : 7; //year(from 1980)\r
- } bit;\r
-} IO_FloppyDisk_DirectoryEntry_UpdateDate;\r
-\r
-typedef struct UI_CONSOLE {\r
- UI_TextBox *textbox;\r
- UI_Task *task;\r
- uchar *printf_buffer;\r
- union UI_CONSOLE_FLAGS {\r
- uint flags;\r
- struct UI_CONSOLE_FLAGS_BITS {\r
- unsigned initialized : 1;\r
- unsigned configured_size : 1;\r
- unsigned isprompt : 1;\r
- } bit;\r
- } flags;\r
- IO_FloppyDisk *boot_fd;\r
-} UI_Console;\r
-\r
-typedef struct IO_FILE {\r
- System_CommonStruct common_tag;\r
- uchar *path;\r
- uint size;\r
- void *img;\r
- union IO_FILE_FLAGS {\r
- uint flags;\r
- struct IO_FILE_FLAGS_BITS {\r
- unsigned initialized : 1;\r
- unsigned img_loaded : 1;\r
- } bit;\r
- } flags;\r
-} IO_File;\r
-\r
-\r