OSDN Git Service

AI003:config.txt, words.txtを追加。
[chnosproject/CHNOSProject.git] / CHNOSProject / chnos / tolset_chn_000 / chnos_010 / chnos / coredef0.h
1 \r
2 /*\83V\83X\83e\83\80\92è\90\94\90é\8c¾*/\r
3 \r
4 /*debug option*/\r
5 #define CHNOSPROJECT_DEBUG              /*\92è\8b`\82·\82é\82Æ\83f\83o\83b\83O\83\82\81[\83h\82Å\8eÀ\8ds\81B\82»\82ê\82¼\82ê\82Ì\83f\83o\83b\83O\83I\83v\83V\83\87\83\93\82à\97L\8cø\82É\82·\82é\95K\97v\82ª\82 \82é*/\r
6 \r
7 #ifdef CHNOSPROJECT_DEBUG\r
8         //#define CHNOSPROJECT_DEBUG_CALLLINK\r
9         //#define CHNOSPROJECT_DEBUG_MEMORY\r
10         //#define CHNOSPROJECT_DEBUG_MEMORY_ALLOCATE_AND_FREE\r
11         //#define CHNOSPROJECT_DEBUG_EMULATOR_X86\r
12         //#define CHNOSPROJECT_DEBUG_CALLBIOS\r
13         //#define CHNOSPROJECT_DEBUG_FIFO\r
14         //#define CHNOSPROJECT_DEBUG_KBCT\r
15         //#define CHNOSPROJECT_DEBUG_MCT\r
16         //#define CHNOSPROJECT_DEBUG_MOUSE\r
17         //#define CHNOSPROJECT_DEBUG_DISPLAY\r
18         //#define CHNOSPROJECT_DEBUG_DRAWING\r
19         //#define CHNOSPROJECT_DEBUG_SHEET\r
20         //#define CHNOSPROJECT_DEBUG_TIMER\r
21         //#define CHNOSPROJECT_DEBUG_MULTITASK\r
22         //#define CHNOSPROJECT_DEBUG_PCI\r
23         //#define CHNOSPROJECT_DEBUG_COMMON_STRUCT\r
24         //#define CHNOSPROJECT_DEBUG_TEXTBOX\r
25         #define CHNOSPROJECT_DEBUG_CONSOLE\r
26 #endif\r
27 \r
28 /*defines*/\r
29 /*boolean*/\r
30 #define True    1\r
31 #define False   0\r
32 \r
33 /*null*/\r
34 #define Null    0\r
35 \r
36 /*descriptors*/\r
37 #define AR_DATA32_RW    0x4092  //AR_32+AR_PRESENT+AR_CODE_OR_DATA+AR_TYPE_DATA_RW\r
38 #define AR_CODE32_ER    0x409a  //AR_32+AR_PRESENT+AR_CODE_OR_DATA+AR_TYPE_CODE_ER\r
39 #define AR_LDT          0x0082  //AR_PRESENT+AR_SYSTEM_DESCRIPTOR+AR_TYPE_LDT\r
40 #define AR_TSS32        0x0089  //AR_PRESENT+AR_SYSTEM_DESCRIPTOR+AR_TYPE_TSS32_READY\r
41 #define AR_INTGATE32    0x008e  //AR_PRESENT+AR_SYSTEM_DESCRIPTOR+AR_TYPE_INTGATE32\r
42 \r
43 #define AR_GRANULARITY_BYTE     0x0000  //G=0   \8aÖ\90\94\82Å\8e©\93®\90Ý\92è\82·\82é\82Ì\82Å\82±\82Ì\83r\83b\83g\82Í\8fí\82É0\r
44 #define AR_GRANULARITY_4KB      0x8000  //G=1\r
45 #define AR_16                   0x0000  //D/B=0\r
46 #define AR_32                   0x4000  //D/B=1\r
47 #define AR_NOTPRESENT           0x0000  //P=0\r
48 #define AR_PRESENT              0x0080  //P=1\r
49 #define AR_SYSTEM               0x0000  //DPL=0\r
50 #define AR_USER                 0x0060  //DPL=3\r
51 #define AR_SYSTEM_DESCRIPTOR    0x0000  //S=0\r
52 #define AR_CODE_OR_DATA         0x0010  //S=1\r
53 \r
54 #define AR_TYPE_TSS16_READY     0x0001\r
55 #define AR_TYPE_LDT             0x0002\r
56 #define AR_TYPE_TSS16_BUSY      0x0003\r
57 #define AR_TYPE_CALLGATE16      0x0004\r
58 #define AR_TYPE_TASKGATE        0x0005\r
59 #define AR_TYPE_INTGATE16       0x0006\r
60 #define AR_TYPE_TRAPGATE16      0x0007\r
61 #define AR_TYPE_TSS32_READY     0x0009\r
62 #define AR_TYPE_TSS32_BUSY      0x000b\r
63 #define AR_TYPE_CALLGATE32      0x000c\r
64 #define AR_TYPE_INTGATE32       0x000e\r
65 #define AR_TYPE_TRAPGATE32      0x000f\r
66 \r
67 #define AR_TYPE_ACCESSED        0x0001  //\8aÖ\90\94\90Ý\92è\8e\9e\82É\82Í\83N\83\8a\83A\81A\93Ç\82Ý\8fo\82µ\8e\9e\82Í\83A\83N\83Z\83X\8dÏ\82Ý\82È\82ç\83Z\83b\83g\r
68 \r
69 #define AR_TYPE_DATA_R                  0x0000\r
70 #define AR_TYPE_DATA_RW                 0x0002\r
71 #define AR_TYPE_DATA_R_EXPAND_DOWN      0x0004\r
72 #define AR_TYPE_DATA_RW_EXPAND_DOWN     0x0006\r
73 \r
74 #define AR_TYPE_CODE_E                  0x0008\r
75 #define AR_TYPE_CODE_ER                 0x000a\r
76 #define AR_TYPE_CODE_E_CONFORMING       0x000c\r
77 #define AR_TYPE_CODE_ER_CONFORMING      0x000e\r
78 \r
79 /*DebugRegister Settings*/\r
80 #define DR7_RW_EXECUTE_INSTRUCTION      0\r
81 #define DR7_RW_WRITE_DATA                       1\r
82 #define DR7_RW_IO_RW                            2\r
83 #define DR7_RW_DATA_RW                          3\r
84 \r
85 #define DR7_LEN_BYTE    0\r
86 #define DR7_LEN_WORD    1\r
87 #define DR7_LEN_DWORD   3\r
88 \r
89 /*CPU Opcodes*/\r
90 #define OPCODE_REG_EAX                  0\r
91 #define OPCODE_REG_ECX                  1\r
92 #define OPCODE_REG_EDX                  2\r
93 #define OPCODE_REG_EBX                  3\r
94 #define OPCODE_REG_ESP                  4\r
95 #define OPCODE_REG_EBP                  5\r
96 #define OPCODE_REG_ESI                  6\r
97 #define OPCODE_REG_EDI                  7\r
98 \r
99 #define OPCODE_W_BYTE                   0\r
100 #define OPCODE_W_16BIT_OR_32BIT         1\r
101 \r
102 #define OPCODE_REG_BYTE_AL              0\r
103 #define OPCODE_REG_BYTE_CL              1\r
104 #define OPCODE_REG_BYTE_DL              2\r
105 #define OPCODE_REG_BYTE_BL              3\r
106 #define OPCODE_REG_BYTE_AH              4\r
107 #define OPCODE_REG_BYTE_CH              5\r
108 #define OPCODE_REG_BYTE_DH              6\r
109 #define OPCODE_REG_BYTE_BH              7\r
110 \r
111 #define OPCODE_SREG2_ES                 0\r
112 #define OPCODE_SREG2_CS                 1\r
113 #define OPCODE_SREG2_SS                 2\r
114 #define OPCODE_SREG2_DS                 3\r
115 \r
116 #define OPCODE_SREG3_ES                 0\r
117 #define OPCODE_SREG3_CS                 1\r
118 #define OPCODE_SREG3_SS                 2\r
119 #define OPCODE_SREG3_DS                 3\r
120 #define OPCODE_SREG3_FS                 4\r
121 #define OPCODE_SREG3_GS                 5\r
122 \r
123 #define OPCODE_EEE_CR0                  0\r
124 #define OPCODE_EEE_CR2                  2\r
125 #define OPCODE_EEE_CR3                  3\r
126 #define OPCODE_EEE_CR4                  4\r
127 \r
128 #define OPCODE_EEE_DR0                  0\r
129 #define OPCODE_EEE_DR1                  1\r
130 #define OPCODE_EEE_DR2                  2\r
131 #define OPCODE_EEE_DR3                  3\r
132 #define OPCODE_EEE_DR6                  6\r
133 #define OPCODE_EEE_DR7                  7\r
134 \r
135 #define OPCODE_TTTN_OVERFLOW            0\r
136 #define OPCODE_TTTN_NO_OVERFLOW         1\r
137 #define OPCODE_TTTN_BELOW               2\r
138 #define OPCODE_TTTN_NOT_BELOW           3\r
139 #define OPCODE_TTTN_EQUAL_OR_ZERO       4\r
140 #define OPCODE_TTTN_NOT_EQUAL_OR_ZERO   5\r
141 #define OPCODE_TTTN_NOT_ABOVE           6\r
142 #define OPCODE_TTTN_ABOVE               7\r
143 #define OPCODE_TTTN_SIGN                8\r
144 #define OPCODE_TTTN_NOT_SIGN            9\r
145 #define OPCODE_TTTN_PARITY              10\r
146 #define OPCODE_TTTN_NOT_PARITY          10\r
147 #define OPCODE_TTTN_LESS_THAN           10\r
148 #define OPCODE_TTTN_NOT_LESS_THAN       10\r
149 #define OPCODE_TTTN_NOT_GREATER_THAN    10\r
150 #define OPCODE_TTTN_GREATER_THAN        10\r
151 \r
152 #define OPCODE_D_REG_SOURCE             0\r
153 #define OPCODE_D_REG_DESTINATION        1\r
154 \r
155 #define OPCODE_MOD_INDEXONLY            0\r
156 #define OPCODE_MOD_INDEX_AND_DISP_BYTE  1\r
157 #define OPCODE_MOD_INDEX_AND_DISP_FULL  2\r
158 #define OPCODE_MOD_REGISTER             3\r
159 \r
160 #define OPCODE_RM32_ADDR_EAX            0\r
161 #define OPCODE_RM32_ADDR_ECX            1\r
162 #define OPCODE_RM32_ADDR_EDX            2\r
163 #define OPCODE_RM32_ADDR_EBX            3\r
164 #define OPCODE_RM32_ADDR_SIB            4\r
165 #define OPCODE_RM32_ADDR_EBP            5\r
166 #define OPCODE_RM32_MOD00_ADDR_DISP32   5\r
167 #define OPCODE_RM32_ADDR_ESI            6\r
168 #define OPCODE_RM32_ADDR_EDI            7\r
169 \r
170 #define OPCODE_RM16_ADDR_BX_SI          0\r
171 #define OPCODE_RM16_ADDR_BX_DI          1\r
172 #define OPCODE_RM16_ADDR_BP_SI          2\r
173 #define OPCODE_RM16_ADDR_BP_DI          3\r
174 #define OPCODE_RM16_ADDR_SI             4\r
175 #define OPCODE_RM16_ADDR_DI             5\r
176 #define OPCODE_RM16_ADDR_BP             6\r
177 #define OPCODE_RM16_MOD00_ADDR_DISP16   6\r
178 #define OPCODE_RM16_ADDR_BX             7\r
179 \r
180 #define OPCODE_PREFIX_NONE              0\r
181 \r
182 #define OPCODE_PREFIX_LOCK              0xf0\r
183 #define OPCODE_PREFIX_REPNE_REPNZ       0xf2\r
184 #define OPCODE_PREFIX_REP_REPE_REPZ     0xf3\r
185 \r
186 //#define OPCODE_PREFIX_CS              0x2e\r
187 //#define OPCODE_PREFIX_SS              0x36\r
188 //#define OPCODE_PREFIX_DS              0x3e\r
189 //#define OPCODE_PREFIX_ES              0x26\r
190 //#define OPCODE_PREFIX_FS              0x64\r
191 //#define OPCODE_PREFIX_GS              0x65\r
192 #define OPCODE_PREFIX_BRANCH_NOT_TAKEN  0x2e\r
193 #define OPCODE_PREFIX_BRANCH_TAKEN      0x3e\r
194 \r
195 #define OPCODE_PREFIX_OPERAND_SIZE      0x66\r
196 \r
197 #define OPCODE_PREFIX_ADDRESS_SIZE      0x67\r
198 \r
199 /*PIC io port*/\r
200 #define PIC0_ICW1       0x0020\r
201 #define PIC0_OCW2       0x0020\r
202 #define PIC0_IMR        0x0021\r
203 #define PIC0_ICW2       0x0021\r
204 #define PIC0_ICW3       0x0021\r
205 #define PIC0_ICW4       0x0021\r
206 #define PIC1_ICW1       0x00a0\r
207 #define PIC1_OCW2       0x00a0\r
208 #define PIC1_IMR        0x00a1\r
209 #define PIC1_ICW2       0x00a1\r
210 #define PIC1_ICW3       0x00a1\r
211 #define PIC1_ICW4       0x00a1\r
212 \r
213 /*KBD io port*/\r
214 #define PORT_KEYDATA            0x0060\r
215 #define PORT_KEYSTA             0x0064\r
216 #define PORT_KEYCMD             0x0064\r
217 #define KBC_MODE                0x47    //Keyboard and Mouse Interrupt Enable.\r
218 #define KEYSTA_SEND_NOTREADY    0x02\r
219 #define KEYDATA_ACK     0xfa\r
220 #define KEYDATA_RESEND  0xfe\r
221 #define KEYDATA_TEST_SUCCEEDED  0xaa\r
222 #define KEYDATA_TEST_FAILED     0xfc\r
223 #define KEYCMD_WRITE_8042_MODE_REG      0x60\r
224 #define KEYCMD_SENDTO_MOUSE     0xd4\r
225 #define KEYCMD_LED              0xed\r
226 \r
227 /*Mouse*/\r
228 #define MOUSECMD_RESET  0xff\r
229 //#define MOUSECMD_SET_DEFAULTS 0xf6\r
230 //#define MOUSECMD_DISABLE_DATA_REPORTING       0xf5\r
231 #define MOUSECMD_ENABLE_DATA_REPORTING  0xf4\r
232 #define MOUSECMD_SET_SAMPLE_RATE        0xf3\r
233 #define MOUSECMD_GET_DEVICE_ID  0xf2\r
234 #define MOUSE_TYPE_3BUTTON      0x00\r
235 #define MOUSE_TYPE_3BUTTON_SCROLL       0x03\r
236 \r
237 /*COM1 io port*/\r
238 #define COM1_RX         0x03f8\r
239 #define COM1_TX         0x03f8\r
240 #define COM1_BAUD_LSB   0x03f8\r
241 #define COM1_BAUD_MSB   0x03f9\r
242 #define COM1_INTR_ENBL  0x03f9\r
243 #define COM1_INTR_ID    0x03fa\r
244 #define COM1_CTRL_FIFO  0x03fa\r
245 #define COM1_CTRL_LINE  0x03fb\r
246 #define COM1_CTRL_MODEM 0x03fc\r
247 #define COM1_STA_LINE   0x03fd\r
248 #define COM1_STA_MODEM  0x03fe\r
249 \r
250 /*PIT io port*/\r
251 #define PIT_CTRL        0x0043\r
252 #define PIT_CNT0        0x0040\r
253 \r
254 /*VGA*/\r
255 #define VGA_CRTC_R_NUMBER               0x03d4\r
256 #define VGA_CRTC_R_DATA                 0x03d5\r
257 #define VGA_CRTC_R_CURSOR_LOCATION_HIGH 0x0e\r
258 #define VGA_CRTC_R_CURSOR_LOCATION_LOW  0x0f\r
259 #define VGA_TEXTMODE_ADR                0xb8000\r
260 #define VGA_VDAC_DATA                   0x03c9\r
261 #define VGA_VDAC_WRITE_ADR              0x03c8\r
262 #define VGA_VRAM_ADR                    (void *)0x000a0000\r
263 #define VGA08_VRAM_XSIZE                320\r
264 #define VGA08_VRAM_YSIZE                200\r
265 \r
266 #define VESA_LINEAR_ACCESS              0x4000\r
267 #define VESA_OMIT_CLEARING_VRAM         0x8000\r
268 \r
269 #define VBE_REALMODE_RETVALUE_ADDRESS   (void *)0x00000e00;\r
270 #define DISPLAYMODE_BIOS                0x0000\r
271 #define DISPLAYMODE_VBE_WINDOW          0x0001\r
272 #define DISPLAYMODE_VBE_LINEAR          0x0002\r
273 \r
274 /*settings*/\r
275 /*IPL defines*/\r
276 #define ADR_DISKIMG     (void *)0x00100000\r
277 \r
278 /*system segments*/\r
279 #define SYSTEM_DS       0x01\r
280 #define SYSTEM_CS       0x02\r
281 \r
282 /*descriptor tables*/\r
283 #define ADR_IDT         0x0026f800\r
284 #define LIMIT_IDT       0x000007ff\r
285 #define ADR_GDT         0x00270000\r
286 #define LIMIT_GDT       0x0000ffff\r
287 #define ADR_BOOTPACK    0x00280000\r
288 #define LIMIT_BOOTPACK  0x0007ffff\r
289 \r
290 /*error id*/\r
291 #define ERROR_CPU_EXCEPTION_00                  0x00000000      //int *esp\r
292 #define ERROR_CPU_EXCEPTION_01                  0x00000001      //int *esp\r
293 #define ERROR_CPU_EXCEPTION_02                  0x00000002      //int *esp\r
294 #define ERROR_CPU_EXCEPTION_03                  0x00000003      //int *esp\r
295 #define ERROR_CPU_EXCEPTION_04                  0x00000004      //int *esp\r
296 #define ERROR_CPU_EXCEPTION_05                  0x00000005      //int *esp\r
297 #define ERROR_CPU_EXCEPTION_06                  0x00000006      //int *esp\r
298 #define ERROR_CPU_EXCEPTION_07                  0x00000007      //int *esp\r
299 #define ERROR_CPU_EXCEPTION_08                  0x00000008      //int *esp\r
300 #define ERROR_CPU_EXCEPTION_09                  0x00000009      //int *esp\r
301 #define ERROR_CPU_EXCEPTION_0A                  0x0000000a      //int *esp\r
302 #define ERROR_CPU_EXCEPTION_0B                  0x0000000b      //int *esp\r
303 #define ERROR_CPU_EXCEPTION_0C                  0x0000000c      //int *esp\r
304 #define ERROR_CPU_EXCEPTION_0D                  0x0000000d      //int *esp\r
305 #define ERROR_CPU_EXCEPTION_0E                  0x0000000e      //int *esp\r
306 #define ERROR_CPU_EXCEPTION_0F                  0x0000000f      //int *esp\r
307 #define ERROR_CPU_EXCEPTION_10                  0x00000010      //int *esp\r
308 #define ERROR_CPU_EXCEPTION_11                  0x00000011      //int *esp\r
309 #define ERROR_CPU_EXCEPTION_12                  0x00000012      //int *esp\r
310 #define ERROR_CPU_EXCEPTION_13                  0x00000013      //int *esp\r
311 #define ERROR_CPU_EXCEPTION_14                  0x00000014      //int *esp\r
312 #define ERROR_CPU_EXCEPTION_15                  0x00000015      //int *esp\r
313 #define ERROR_CPU_EXCEPTION_16                  0x00000016      //int *esp\r
314 #define ERROR_CPU_EXCEPTION_17                  0x00000017      //int *esp\r
315 #define ERROR_CPU_EXCEPTION_18                  0x00000018      //int *esp\r
316 #define ERROR_CPU_EXCEPTION_19                  0x00000019      //int *esp\r
317 #define ERROR_CPU_EXCEPTION_1A                  0x0000001a      //int *esp\r
318 #define ERROR_CPU_EXCEPTION_1B                  0x0000001b      //int *esp\r
319 #define ERROR_CPU_EXCEPTION_1C                  0x0000001c      //int *esp\r
320 #define ERROR_CPU_EXCEPTION_1D                  0x0000001d      //int *esp\r
321 #define ERROR_CPU_EXCEPTION_1E                  0x0000001e      //int *esp\r
322 #define ERROR_CPU_EXCEPTION_1F                  0x0000001f      //int *esp\r
323 #define ERROR_CPU_EXCEPTIONS                    0x0000001f\r
324 \r
325 #define ERROR_NO_MORE_SEGMENT                           0x00000020      //uint *retaddr\r
326 #define ERROR_NOT_ENOUGH_FREE_MEMORY            0x00000021      //IO_MemoryControl ctrl, uint size\r
327 #define ERROR_MEMORY_FREE_RANGE_OVERLAPPED      0x00000022      //IO_MemoryControl ctrl, uint tagno\r
328 #define ERROR_NO_MORE_FREE_TAG                          0x00000023      //IO_MemoryControl ctrl\r
329 #define ERROR_INVALID_FREE_MEMORY_INDEX         0x00000024      //IO_MemoryControl ctrl, uint tagno\r
330 #define ERROR_FIFO_BUFFER_OVERFLOW                      0x00000025      //DATA_FIFO32 *fifo\r
331 \r
332 /*FIFO buffer*/\r
333 #define SIGNAL_ARGUMENTS_END    0xfefe1234\r
334 /*task*/\r
335 #define TASK_FIFOSIZE   (4 * 64)\r
336 \r
337 /*exceptions esp[] data with errorcode*/\r
338 #define EXCEPTION_INFO_EDI              0x00\r
339 #define EXCEPTION_INFO_ESI              0x01\r
340 #define EXCEPTION_INFO_EBP              0x02\r
341 #define EXCEPTION_INFO_ESP              0x03\r
342 #define EXCEPTION_INFO_EBX              0x04\r
343 #define EXCEPTION_INFO_EDX              0x05\r
344 #define EXCEPTION_INFO_ECX              0x06\r
345 #define EXCEPTION_INFO_EAX              0x07\r
346 #define EXCEPTION_INFO_DS               0x08\r
347 #define EXCEPTION_INFO_ES               0x09\r
348 #define EXCEPTION_INFO_ERRORCODE        0x0a\r
349 #define EXCEPTION_INFO_EIP              0x0b\r
350 #define EXCEPTION_INFO_CS               0x0c\r
351 #define EXCEPTION_INFO_EFLAGS           0x0d\r
352 #define EXCEPTION_INFO_USER_ESP         0x0e\r
353 #define EXCEPTION_INFO_USER_SS          0x0f\r
354 \r
355 /*sheet*/\r
356 #define SHEET_MAX_XSIZE 65535\r
357 #define SHEET_MAX_YSIZE 65535\r
358 #define SHEET_MAX_CHILDREN      255\r
359 #define SHEET_LOCATION_NOCHANGE 0x7ffffffe\r
360 \r
361 /*console*/\r
362 #define CONSOLE_PRINTF_BUFFER_SIZE      1024\r
363 \r
364 /*floppy*/\r
365 #define FLOPPYDISK_FAT0_OFFSET  0x000200\r
366 #define FLOPPYDISK_FAT1_OFFSET  0x001400 \r
367 #define FLOPPYDISK_RDE_OFFSET   0x002600\r
368 #define FLOPPYDISK_RDE_ENTRIES  224\r
369 #define FLOPPYDISK_SECTORS              (1440 * 2)\r
370 \r
371 /*file*/\r
372 #define FILE_PATH_LENGTH_MAX    (256 - 1)\r
373 \r