Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- [BITS 16]
- mov bx, 0x7E00
- mov es, bx
- mov di, 0
- mov [es:di], dword "VBE2"
- mov ax, 0x4F00
- int 0x10
- mov bx, 0x7E00
- mov es, bx
- mov di, 4
- mov ax, [es:di]
- cmp ax, 0x300
- je VBE_3
- cmp ax, 0x200
- je VBE_2
- jmp VBE_1
- jmp kernelerror
- VBE_3:
- jmp VBE_2
- VBE_2:
- mov word [Grafic_Mode_number-start], 0
- Choose_Best_Grafic_Mode:
- call Get_Grafic_Mode_Info
- cmp word [Grafic_Mode_number-start], 1024
- je Set_Best_Grafic_Mode
- ; ...
- mov bx, 0x8000
- mov es, bx
- mov di, 0
- mov ax, [es:di]
- and ax, 10000000b
- cmp ax, 0
- je Next_Mode
- ; ...
- mov bx, 0x8000
- mov es, bx
- mov di, 0
- mov ax, [es:di]
- and ax, 00010000b
- cmp ax, 0
- je Next_Mode
- ; ...
- mov bx, 0x8000
- mov es, bx
- mov di, 27
- mov al, [es:di]
- cmp al, 0x6
- jne Next_Mode
- mov bx, 0x8000
- mov es, bx
- mov di, 18
- mov ax, [es:di]
- cmp ax, word [Best_XResolution-start]
- jg Better_Grafic_Mode_Found
- je Best_XResolution_Equal
- Next_Mode:
- inc word [Grafic_Mode_number-start]
- jmp Choose_Best_Grafic_Mode
- Best_XResolution_Equal:
- mov bx, 0x8000
- mov es, bx
- mov di, 20
- mov ax, [es:di]
- cmp ax, word [Best_YResolution-start]
- jg Better_Grafic_Mode_Found
- je Best_YResolution_Equal
- jmp Next_Mode
- Best_YResolution_Equal:
- mov bx, 0x8000
- mov es, bx
- mov di, 25
- mov al, [es:di]
- cmp al, byte [Best_BitsPerPixel-start]
- jg Better_Grafic_Mode_Found
- jmp Next_Mode
- Better_Grafic_Mode_Found:
- mov bx, 0x8000
- mov es, bx
- mov di, 18
- mov ax, [es:di]
- mov word [Best_XResolution-start], ax
- mov bx, 0x8000
- mov es, bx
- mov di, 20
- mov ax, [es:di]
- mov word [Best_YResolution-start], ax
- mov bx, 0x8000
- mov es, bx
- mov di, 25
- mov al, [es:di]
- mov byte [Best_BitsPerPixel-start], al
- mov ax, word [Grafic_Mode_number-start]
- mov word [Best_Mode-start], ax
- jmp Next_Mode
- Get_Grafic_Mode_Info:
- mov bx, 0x7E00
- mov es, bx
- mov di, 14
- mov si, [es:di]
- mov es, [si]
- mov ax, word [Grafic_Mode_number-start]
- mov di, ax
- mov cx, [es:di]
- mov bx, 0x8000
- mov es, bx
- mov di, 0
- mov ax, 0x4F01
- int 0x10
- ret
- Set_Best_Grafic_Mode:
- mov bx, 0x7E00
- mov es, bx
- mov di, 14
- mov si, [es:di]
- mov es, [si]
- mov di, word [Best_Mode-start]
- mov cx, [es:di]
- and cx, 0111111111111111b
- mov bx, 0x8000
- mov es, bx
- mov di, 0
- mov ax, 0x4F01
- int 0x10
- mov bx, 0x7E00
- mov es, bx
- mov di, 14
- mov si, [es:di]
- mov es, [si]
- mov di, word [Best_Mode-start]
- mov bx, [es:di]
- and bx, 0111111111111111b
- mov ax, 0x4F02
- int 0x10
- jmp GraficModeSet
- VBE_1:
- mov cx, 0x115
- mov bx, 0x8000
- mov es, bx
- mov di, 0
- mov ax, 0x4F01
- int 0x10
- mov bx, 0x115
- mov ax, 0x4F02
- int 0x10
- jmp GraficModeSet
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement