OSDN Git Service

DMAドライバ. DrFSマイナーチェンジ
[vaneos/DivergeMirror.git] / include / Diverge / diverge.h
1 /*
2         diverge.h
3         Diverge Low-Level Layer Library for Kernel Building
4         (C) 2014-2015 VOSystems.
5 */
6
7 #ifndef Diverge_H__
8 #define Diverge_H__
9
10 #include<Diverge/types.h>
11 #include<Diverge/multiboot.h>
12
13 /*Diverge Low-Level Layer Library for Kernel Building (DLB)*/
14 #define Black 0x00
15 #define Blue 0x01
16 #define Green 0x02
17 #define Cian 0x03
18 #define Red 0x04
19 #define Masenta 0x05
20 #define Brown 0x06
21 #define LightGray 0x07
22 #define DarkGray 0x08
23 #define LightBlue 0x09
24 #define LightGreen 0x0a
25 #define LightCian 0x0b
26 #define LightRed 0x0c
27 #define LightMasenta 0x0d
28 #define LightBrown 0x0e
29 #define White 0x0f
30
31 #define TYPE_SIZE(type) (sizeof(type))
32
33 /*CPUID EAX Value*/
34 #define CPUID_VENDOR    0x00
35 #define CPUID_FUNCTION  0x01
36 #define CPUID_TLB_INFO  0x02
37 #define CPUID_EX_NUM    0x80000000
38 #define CPUID_BRAND1    0x80000002
39 #define CPUID_BRAND2    0x80000003
40 #define CPUID_BRAND3    0x80000004
41 struct general_registers{
42         unsigned int eax;
43         unsigned int ebx;
44         unsigned int ecx;
45         unsigned int edx;
46         unsigned int esi;
47         unsigned int edi;
48 };
49
50 /*FIFO*/
51 typedef struct{
52         unsigned int start, max, end;
53         void* buf;
54         unsigned char mode;
55 }FIFO;
56 #define FIFO_MODE_UNINIT 0xff
57 #define FIFO_MODE_UBYTE 0x01
58 #define FIFO_MODE_UWORD 0x02
59 #define FIFO_MODE_UDWORD 0x03
60 #define FIFO_MODE_BYTE 0x11
61 #define FIFO_MODE_WORD 0x12
62 #define FIFO_MODE_DOWRD 0x13
63
64 /*Multiboot Info*/
65 extern struct pc_info pc;
66 void MB_memory(multiboot_info_t* mbi,unsigned long magic);
67 void MB_apm(multiboot_info_t* mbi);
68
69 struct mem_info{
70         unsigned long size;//MB単位
71         unsigned long low_size;//KB単位
72         unsigned long up_size;//KB単位
73 };
74 /*
75 struct boot_dev_info{
76         unsigned char drive;
77         unsigned char p1;
78         unsigned char p2;
79         unsigned char p3;
80 };*/
81
82 struct apm_info{
83         unsigned short version;
84         unsigned short cs32;
85         unsigned int offset;
86         unsigned short cs16;
87         unsigned short ds16;
88         unsigned short flag;
89         unsigned short cs32_size;
90         unsigned short cs16_size;
91         unsigned short ds_size;
92 };
93
94 struct pc_info{
95         struct mem_info mem;
96         //struct boot_dev_info dev;
97         char* cmd;
98         struct apm_info apm;
99 };
100
101
102 inline void InitCharArrey(char* arrey,size_t lengh);
103 inline void Sleep(unsigned long milisec);
104
105 void vga_text_update_cursor(void);
106 void ClearScreen(void);
107 void init_char_io(void);
108 void DisplayOutputChar(const char ch);
109 void ShiftDisplayChar(unsigned int len);
110 void DisplayColorChangeChar(char att);
111 void GetTimeFromRTC(unsigned char* t);
112
113 #endif