Advertisement
Guest User

GetBestGraficMode

a guest
Jun 10th, 2012
110
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  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
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement