OSDN Git Service

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