View difference between Paste ID: dqN0jHdU and s8Cy0J89
SHOW: | | - or go back to the newest paste.
1
[BITS 16]
2
mov bx, 0x7E00
3
mov es, bx
4
mov di, 0
5
mov [es:di], dword "VBE2"
6
mov ax, 0x4F00
7
int 0x10
8
mov bx, 0x7E00
9
mov es, bx
10
mov di, 4
11
mov ax, [es:di]
12
cmp ax, 0x300
13
je VBE_3
14
cmp ax, 0x200
15
je VBE_2
16
jmp VBE_1
17
jmp kernelerror
18
VBE_3:
19
	jmp VBE_2
20
VBE_2:
21
	mov word [Grafic_Mode_number-start], 0
22
	Choose_Best_Grafic_Mode:
23
		call Get_Grafic_Mode_Info
24
		cmp word [Grafic_Mode_number-start], 1024
25
		je Set_Best_Grafic_Mode
26
		; ...
27
		mov bx, 0x8000
28
		mov es, bx
29
		mov di, 0
30
		mov ax, [es:di]
31
		and ax, 10000000b
32
		cmp ax, 0
33
		je Next_Mode
34
		; ...
35
		mov bx, 0x8000
36
		mov es, bx
37
		mov di, 0
38
		mov ax, [es:di]
39
		and ax, 00010000b
40
		cmp ax, 0
41
		je Next_Mode
42
		; ...
43
		mov bx, 0x8000
44
		mov es, bx
45
		mov di, 27
46
		mov al, [es:di]
47
		cmp al, 0x6
48
		jne Next_Mode
49
		mov bx, 0x8000
50
		mov es, bx
51
		mov di, 18
52
		mov ax, [es:di]
53
		cmp ax, word [Best_XResolution-start]
54
		jg Better_Grafic_Mode_Found
55
		je Best_XResolution_Equal
56
		Next_Mode:
57
			inc word [Grafic_Mode_number-start]
58
			jmp Choose_Best_Grafic_Mode
59
	Best_XResolution_Equal:
60
		mov bx, 0x8000
61
		mov es, bx
62
		mov di, 20
63
		mov ax, [es:di]
64
		cmp ax, word [Best_YResolution-start]
65
		jg Better_Grafic_Mode_Found
66
		je Best_YResolution_Equal
67
		jmp Next_Mode
68
	Best_YResolution_Equal:
69
		mov bx, 0x8000
70
		mov es, bx
71
		mov di, 25
72
		mov al, [es:di]
73
		cmp al, byte [Best_BitsPerPixel-start]
74
		jg Better_Grafic_Mode_Found
75
		jmp Next_Mode
76
	Better_Grafic_Mode_Found:
77
		mov bx, 0x8000
78
		mov es, bx
79
		mov di, 18
80
		mov ax, [es:di]
81
		mov word [Best_XResolution-start], ax
82
		mov bx, 0x8000
83
		mov es, bx
84
		mov di, 20
85
		mov ax, [es:di]
86
		mov word [Best_YResolution-start], ax
87
		mov bx, 0x8000
88
		mov es, bx
89
		mov di, 25
90
		mov al, [es:di]
91
		mov byte [Best_BitsPerPixel-start], al
92
		mov ax, word [Grafic_Mode_number-start]
93
		mov word [Best_Mode-start], ax
94
		jmp Next_Mode
95
	Get_Grafic_Mode_Info:
96
		mov bx, 0x7E00
97
		mov es, bx
98
		mov di, 14
99
		mov si, [es:di]
100
		mov es, [si]
101
		mov ax, word [Grafic_Mode_number-start]
102
		mov di, ax
103
		mov cx, [es:di]
104
		mov bx, 0x8000
105
		mov es, bx
106
		mov di, 0
107
		mov ax, 0x4F01
108
		int 0x10
109
		ret
110
	Set_Best_Grafic_Mode:
111
		mov bx, 0x7E00
112
		mov es, bx
113
		mov di, 14
114
		mov si, [es:di]
115
		mov es, [si]
116
		mov di, word [Best_Mode-start]
117
		mov cx, [es:di]
118
		and cx, 0111111111111111b
119
		mov bx, 0x8000
120
		mov es, bx
121
		mov di, 0
122
		mov ax, 0x4F01
123
		int 0x10
124
		mov bx, 0x7E00
125
		mov es, bx
126
		mov di, 14
127
		mov si, [es:di]
128
		mov es, [si]
129
		mov di, word [Best_Mode-start]
130
		mov bx, [es:di]
131
		and bx, 0111111111111111b
132
		mov ax, 0x4F02
133
		int 0x10
134
		jmp GraficModeSet
135
VBE_1:
136
	mov cx, 0x115
137
	mov bx, 0x8000
138
	mov es, bx
139
	mov di, 0
140
	mov ax, 0x4F01
141
	int 0x10
142
	mov bx, 0x115
143
	mov ax, 0x4F02
144
	int 0x10
145
jmp GraficModeSet