-
Notifications
You must be signed in to change notification settings - Fork 4
/
Copy pathcommon.h
116 lines (100 loc) · 3.13 KB
/
common.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
#ifndef __COMMON_H
#define __COMMON_H
#include "font.h"
#include <stdio.h>
#include <stdarg.h>
void io_hlt(void);
void io_cli(void);
void io_sti(void);
void io_stihlt(void);
void io_out8(int port, int data);
int io_in8(int port);
int io_load_eflags(void);
void io_store_eflags(int eflags);
int load_cr0(void);
int store_cr0(int cr0);
void boxfill8(unsigned char *vram, int xsize, unsigned char c, int x0, int y0, int x1, int y1);
void putfont8(char *vram, int xsize, int x, int y, char c, const unsigned char *font);
void putfont8_string(unsigned char *vram, int xsize, int x, int y, char color,const unsigned char *font_bitmap, unsigned char * string);
extern struct bitmap_font font;
unsigned int memtest(unsigned int start, unsigned int len);
#define SYSSEG 0x1000
#define MEMMAN_ADDR (char *)((0x003c0000) - (SYSSEG << 4))
#define VRAM_ADDR (unsigned char *)((0xa0000)-(SYSSEG << 4))
#define COL8_000000 0
#define COL8_FF0000 1
#define COL8_00FF00 2
#define COL8_FFFF00 3
#define COL8_0000FF 4
#define COL8_FF00FF 5
#define COL8_00FFFF 6
#define COL8_FFFFFF 7
#define COL8_C6C6C6 8
#define COL8_840000 9
#define COL8_008400 10
#define COL8_848400 11
#define COL8_000084 12
#define COL8_840084 13
#define COL8_008484 14
#define COL8_848484 15
#define MEM_MAP_ADDR (char *)((0x00078004)-(SYSSEG << 4))
struct SEGMENT_DESCRIPTOR {
short limit_low, base_low;
char base_mid, access_right;
char limit_high, base_high;
};
struct GATE_DESCRIPTOR {
short offset_low, selector;
char dw_count, access_right;
short offset_high;
};
void load_gdtr(int limit, int addr);
void load_idtr(int limit, int addr);
/*8259 interrupt controller*/
#define PIC0 0x20
#define PIC1 0xa0
#define PIC0_OCW1 PIC0+1
#define PIC0_OCW2 PIC0
#define PIC1_OCW1 PIC1+1
#define PIC1_OCW2 PIC1
#define PIC0_IMR PIC0_OCW1
#define PIC1_IMR PIC1_OCW1
#define PIC0_ICW1 PIC0
#define PIC1_ICW1 PIC1
#define PIC0_ICW2 PIC0+1
#define PIC1_ICW2 PIC1+1
#define PIC0_ICW3 PIC0+1
#define PIC1_ICW3 PIC1+1
#define PIC0_ICW4 PIC0+1
#define PIC1_ICW4 PIC1+1
#define PIC0_COMMAND PIC0
#define PIC0_DATA (PIC0+1)
#define PIC1_COMMAND PIC1
#define PIC1_DATA (PIC1+1)
#define PIC_EOI 0x20 /* End-of-interrupt command code */
/*GDT / IDT data*/
#define ADR_IDT 0x0026f800
#define LIMIT_IDT 0x000007ff
#define ADR_GDT 0x00270000
#define LIMIT_GDT 0x0000ffff
#define ADR_BOTPAK 0x00280000
#define LIMIT_BOTPAK 0x0007ffff
#define AR_DATA32_RW 0x4092
#define AR_CODE32_ER 0x409a
#define AR_INTGATE32 0x008e
/*Serial PORT*/
#define PORT 0x3F8
extern void inthandler21(void);
extern void inthandler27(void);
extern void inthandler2c(void);
extern void inthandler24(void);
struct mouse_info {
char phase;
unsigned char buf[3];
int x, y, btn;
int mx, my;
};
void draw_mouse_on_screen(struct mouse_info *);
void init_mouse_cursor8(char *, char);
extern char scancode[];
#endif