OSDN Git Service

e90595bc8ba688a1b2b6c396f437d79064991468
[vaneos/vaneosmain.git] / Kernel / Vane.S
1 .file "Vane.S"
2 .code32
3 .text
4 .intel_syntax noprefix
5
6 .global clear_state,asm_move_cursol,write_mem8,VESA_640_480_SET,VESA_Check,VESA_Check,scrn320
7 .global io_hlt,io_cli,io_sti,io_stihlt
8 .global io_in8,io_in16,io_in32,io_out8,io_out16,io_out32
9 .global io_load_eflags,io_store_eflags,load_cr0,store_cr0,load_tr
10 .global farjmp
11
12 farjmp:
13         JMP FAR [ESP+4]
14         RET
15
16 io_hlt:
17         HLT
18         RET
19
20 io_cli:
21         CLI
22         RET
23
24 io_sti:
25         STI
26         RET
27
28 io_stihlt:
29         STI
30         HLT
31         RET
32
33 io_in8:
34         MOV     EDX,[ESP+4]
35         MOV     EAX,0
36         IN      AL,DX
37         RET
38
39 io_in16:
40         MOV     EDX,[ESP+4]
41         MOV     EAX,0
42         IN      AX,DX
43         RET
44
45 io_in32:
46         MOV     EDX,[ESP+4]
47         IN      EAX,DX
48         RET
49
50 io_out8:
51         MOV     EDX,[ESP+4]
52         MOV     AL,[ESP+8]
53         OUT     DX,AL
54         RET
55
56 io_out16:
57         MOV     EDX,[ESP+4]
58         MOV     EAX,[ESP+8]
59         OUT     DX,AX
60         RET
61
62 io_out32:
63         MOV     EDX,[ESP+4]
64         MOV     EAX,[ESP+8]
65         OUT     DX,EAX
66         RET
67
68 io_load_eflags:
69         PUSHFD
70         POP     EAX
71         RET
72
73 io_store_eflags:
74         MOV     EAX,[ESP+4]
75         PUSH EAX
76         POPFD
77         RET
78
79 load_cr0:
80         MOV     EAX,CR0
81         RET
82
83 store_cr0:
84         MOV     EAX,[ESP+4]
85         MOV     CR0,EAX
86         RET
87
88 load_tr:
89         LTR     [ESP+4]
90         RET
91
92
93 write_mem8:
94         MOV ECX,[ESP+4]
95         MOV AL,[ESP+8]
96         MOV [ECX],AL
97         RET
98
99 scrn320:
100         MOV AL,0x13
101         MOV AH,0x00
102         INT 0x10
103         
104         RET
105
106 VESA_Check:
107         MOV AX,0x9000
108         MOV ES,AX
109         MOV DI,0
110         MOV AX,0x004F
111         INT 0x10
112         
113         CMP AX,0x004F
114         MOV EAX,0x01
115         JNE scrn320
116         MOV EAX,0x00
117         RET
118
119 VESA_640_480_SET:
120         MOV BX,0x0101
121         MOV AX,0x4F02
122         INT 0x10
123         
124         RET
125
126 clear_state:
127         jmp 0x08:_flush_seg
128         RET
129
130 _flush_seg:
131         RET
132         
133 asm_move_cursol:
134         PUSH BP
135         PUSH AX
136         
137         MOV AX,BP
138         MOV DX,0x03D4
139         MOV AL,0X0E
140         
141         OUT DX,AX
142         
143         POP AX
144         
145         MOV AH,AL
146         MOV AL,0x0F
147         
148         OUT DX,AX
149         
150         MOV EAX,0
151         
152         RET
153