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 |