forked from KolibriOS/kolibrios
Good-bye VESA !
git-svn-id: svn://kolibrios.org@3163 a494cfbc-eb01-0410-851d-a64ba20cac60
This commit is contained in:
parent
d1a0247624
commit
edb957dfa2
@ -174,6 +174,7 @@ cpugood:
|
|||||||
|
|
||||||
; --------------- APM ---------------------
|
; --------------- APM ---------------------
|
||||||
and word [es:0x9044], 0 ; ver = 0.0 (APM not found)
|
and word [es:0x9044], 0 ; ver = 0.0 (APM not found)
|
||||||
|
if 0
|
||||||
mov ax, 0x5300
|
mov ax, 0x5300
|
||||||
xor bx, bx
|
xor bx, bx
|
||||||
int 0x15
|
int 0x15
|
||||||
@ -196,6 +197,7 @@ cpugood:
|
|||||||
mov [es:0x9054], dx
|
mov [es:0x9054], dx
|
||||||
|
|
||||||
apm_end:
|
apm_end:
|
||||||
|
end if
|
||||||
|
|
||||||
;CHECK current of code
|
;CHECK current of code
|
||||||
cmp [cfgmanager.loader_block], -1
|
cmp [cfgmanager.loader_block], -1
|
||||||
@ -208,9 +210,9 @@ apm_end:
|
|||||||
|
|
||||||
noloaderblock:
|
noloaderblock:
|
||||||
; DISPLAY VESA INFORMATION
|
; DISPLAY VESA INFORMATION
|
||||||
call print_vesa_info
|
; call print_vesa_info
|
||||||
call calc_vmodes_table
|
; call calc_vmodes_table
|
||||||
call check_first_parm ;check and enable cursor_pos
|
; call check_first_parm ;check and enable cursor_pos
|
||||||
|
|
||||||
; \begin{diamond}[30.11.2005]
|
; \begin{diamond}[30.11.2005]
|
||||||
cfgmanager:
|
cfgmanager:
|
||||||
@ -264,7 +266,7 @@ cfgmanager:
|
|||||||
|
|
||||||
; ASK GRAPHICS MODE
|
; ASK GRAPHICS MODE
|
||||||
|
|
||||||
call set_vmode
|
; call set_vmode
|
||||||
|
|
||||||
; GRAPHICS ACCELERATION
|
; GRAPHICS ACCELERATION
|
||||||
; force yes
|
; force yes
|
||||||
@ -293,12 +295,17 @@ cfgmanager:
|
|||||||
xor ax, ax
|
xor ax, ax
|
||||||
mov es, ax
|
mov es, ax
|
||||||
|
|
||||||
mov bx, [es:0x9008] ; vga & 320x200
|
; mov bx, [es:0x9008] ; vga & 320x200
|
||||||
mov ax, 0x4f02 ; Vesa
|
mov ax, 0xA000 ; AtomBIOS Fn00
|
||||||
|
mov cx, 0x550A ; 1024x768, 32bpp, ARGB8888
|
||||||
setgr:
|
setgr:
|
||||||
int 0x10
|
int 0x10
|
||||||
test ah, ah
|
test ah, ah
|
||||||
jnz $
|
jnz $
|
||||||
|
mov ax, 0xA006 ; AtomBIOS Fn06
|
||||||
|
int 0x10
|
||||||
|
mov [es:0x9018], ebx ; LFB
|
||||||
|
|
||||||
gmok2:
|
gmok2:
|
||||||
push ds
|
push ds
|
||||||
pop es
|
pop es
|
||||||
|
@ -1,325 +0,0 @@
|
|||||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
||||||
;; ;;
|
|
||||||
;; Copyright (C) KolibriOS team 2004-2007. All rights reserved. ;;
|
|
||||||
;; Distributed under terms of the GNU General Public License ;;
|
|
||||||
;; ;;
|
|
||||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
||||||
|
|
||||||
$Revision$
|
|
||||||
|
|
||||||
struc VBE_VGAInfo {
|
|
||||||
.VESASignature dd ? ; char
|
|
||||||
.VESAVersion dw ? ; short
|
|
||||||
.OemStringPtr dd ? ; char *
|
|
||||||
.Capabilities dd ? ; ulong
|
|
||||||
.VideoModePtr dd ? ; ulong
|
|
||||||
.TotalMemory dw ? ; short
|
|
||||||
; VBE 2.0+
|
|
||||||
.OemSoftwareRev db ? ; short
|
|
||||||
.OemVendorNamePtr dw ? ; char *
|
|
||||||
.OemProductNamePtr dw ? ; char *
|
|
||||||
.OemProductRevPtr dw ? ; char *
|
|
||||||
.reserved rb 222 ; char
|
|
||||||
.OemData rb 256 ; char
|
|
||||||
}
|
|
||||||
|
|
||||||
struc VBE_ModeInfo {
|
|
||||||
.ModeAttributes dw ? ; short
|
|
||||||
.WinAAttributes db ? ; char
|
|
||||||
.WinBAttributes db ? ; char
|
|
||||||
.WinGranularity dw ? ; short
|
|
||||||
.WinSize dw ? ; short
|
|
||||||
.WinASegment dw ? ; ushort
|
|
||||||
.WinBSegment dw ? ; ushort
|
|
||||||
.WinFuncPtr dd ? ; void *
|
|
||||||
.BytesPerScanLine dw ? ; short
|
|
||||||
.XRes dw ? ; short
|
|
||||||
.YRes dw ? ; short
|
|
||||||
.XCharSize db ? ; char
|
|
||||||
.YCharSize db ? ; char
|
|
||||||
.NumberOfPlanes db ? ; char
|
|
||||||
.BitsPerPixel db ? ; char
|
|
||||||
.NumberOfBanks db ? ; char
|
|
||||||
.MemoryModel db ? ; char
|
|
||||||
.BankSize db ? ; char
|
|
||||||
.NumberOfImagePages db ? ; char
|
|
||||||
.res1 db ? ; char
|
|
||||||
.RedMaskSize db ? ; char
|
|
||||||
.RedFieldPosition db ? ; char
|
|
||||||
.GreenMaskSize db ? ; char
|
|
||||||
.GreenFieldPosition db ? ; char
|
|
||||||
.BlueMaskSize db ? ; char
|
|
||||||
.BlueFieldPosition db ? ; char
|
|
||||||
.RsvedMaskSize db ? ; char
|
|
||||||
.RsvedFieldPosition db ? ; char
|
|
||||||
.DirectColorModeInfo db ? ; char ; MISSED IN THIS TUTORIAL!! SEE ABOVE
|
|
||||||
; VBE 2.0+
|
|
||||||
.PhysBasePtr dd ? ; ulong
|
|
||||||
.OffScreenMemOffset dd ? ; ulong
|
|
||||||
.OffScreenMemSize dw ? ; short
|
|
||||||
; VBE 3.0+
|
|
||||||
.LinbytesPerScanLine dw ? ; short
|
|
||||||
.BankNumberOfImagePages db ? ; char
|
|
||||||
.LinNumberOfImagePages db ? ; char
|
|
||||||
.LinRedMaskSize db ? ; char
|
|
||||||
.LinRedFieldPosition db ? ; char
|
|
||||||
.LingreenMaskSize db ? ; char
|
|
||||||
.LinGreenFieldPosition db ? ; char
|
|
||||||
.LinBlueMaskSize db ? ; char
|
|
||||||
.LinBlueFieldPosition db ? ; char
|
|
||||||
.LinRsvdMaskSize db ? ; char
|
|
||||||
.LinRsvdFieldPosition db ? ; char
|
|
||||||
.MaxPixelClock dd ? ; ulong
|
|
||||||
.res2 rb 190 ; char
|
|
||||||
}
|
|
||||||
|
|
||||||
virtual at $A000
|
|
||||||
vi VBE_VGAInfo
|
|
||||||
mi VBE_ModeInfo
|
|
||||||
modes_table:
|
|
||||||
end virtual
|
|
||||||
cursor_pos dw 0 ;temporary cursor storage.
|
|
||||||
home_cursor dw 0 ;current shows rows a table
|
|
||||||
end_cursor dw 0 ;end of position current shows rows a table
|
|
||||||
scroll_start dw 0 ;start position of scroll bar
|
|
||||||
scroll_end dw 0 ;end position of scroll bar
|
|
||||||
long_v_table equ 9 ;long of visible video table
|
|
||||||
size_of_step equ 10
|
|
||||||
scroll_area_size equ (long_v_table-2)
|
|
||||||
int2str:
|
|
||||||
dec bl
|
|
||||||
jz @f
|
|
||||||
xor edx,edx
|
|
||||||
div ecx
|
|
||||||
push edx
|
|
||||||
call int2str
|
|
||||||
pop eax
|
|
||||||
@@: or al,0x30
|
|
||||||
mov [ds:di],al
|
|
||||||
inc di
|
|
||||||
ret
|
|
||||||
|
|
||||||
int2strnz:
|
|
||||||
cmp eax,ecx
|
|
||||||
jb @f
|
|
||||||
xor edx,edx
|
|
||||||
div ecx
|
|
||||||
push edx
|
|
||||||
call int2strnz
|
|
||||||
pop eax
|
|
||||||
@@: or al,0x30
|
|
||||||
mov [es:di],al
|
|
||||||
inc di
|
|
||||||
ret
|
|
||||||
|
|
||||||
|
|
||||||
;-------------------------------------------------------
|
|
||||||
print_vesa_info:
|
|
||||||
|
|
||||||
mov [es:vi.VESASignature],'VBE2'
|
|
||||||
mov ax,0x4F00
|
|
||||||
mov di,vi ;0xa000
|
|
||||||
int 0x10
|
|
||||||
or ah,ah
|
|
||||||
jz @f
|
|
||||||
mov [es:vi.VESASignature],'VESA'
|
|
||||||
mov ax,$4F00
|
|
||||||
mov di,vi
|
|
||||||
int 0x10
|
|
||||||
or ah,ah
|
|
||||||
jnz $
|
|
||||||
@@:
|
|
||||||
cmp [es:vi.VESASignature],'VESA'
|
|
||||||
jne $
|
|
||||||
cmp [es:vi.VESAVersion],0x0100
|
|
||||||
jb $
|
|
||||||
|
|
||||||
.vesaok2:
|
|
||||||
|
|
||||||
ret
|
|
||||||
;-----------------------------------------------------------------------------
|
|
||||||
|
|
||||||
calc_vmodes_table:
|
|
||||||
pushad
|
|
||||||
|
|
||||||
; push 0
|
|
||||||
; pop es
|
|
||||||
|
|
||||||
lfs si, [es:vi.VideoModePtr]
|
|
||||||
|
|
||||||
mov bx,modes_table
|
|
||||||
|
|
||||||
.next_mode:
|
|
||||||
mov cx,word [fs:si] ; mode number
|
|
||||||
cmp cx,-1
|
|
||||||
je .modes_ok.2
|
|
||||||
|
|
||||||
mov ax,0x4F01
|
|
||||||
mov di,mi
|
|
||||||
int 0x10
|
|
||||||
|
|
||||||
or ah,ah
|
|
||||||
jnz .modes_ok.2 ;vesa_info.exit
|
|
||||||
|
|
||||||
test [es:mi.ModeAttributes],00000001b ;videomode support ?
|
|
||||||
jz @f
|
|
||||||
test [es:mi.ModeAttributes],00010000b ;picture ?
|
|
||||||
jz @f
|
|
||||||
test [es:mi.ModeAttributes],10000000b ;LFB ?
|
|
||||||
jz @f
|
|
||||||
|
|
||||||
cmp [es:mi.BitsPerPixel], 32 ;to show only 32 bpp videomodes
|
|
||||||
jb @f
|
|
||||||
|
|
||||||
.l0:
|
|
||||||
cmp [es:mi.XRes],800 ; only 800x600 and higher
|
|
||||||
jb @f
|
|
||||||
|
|
||||||
mov ax,[es:mi.XRes]
|
|
||||||
mov [es:bx+0],ax ; +0[2] : resolution X
|
|
||||||
mov ax,[es:mi.YRes]
|
|
||||||
mov [es:bx+2],ax ; +2[2] : resolution Y
|
|
||||||
mov ax,[es:mi.ModeAttributes]
|
|
||||||
mov [es:bx+4],ax ; +4[2] : attributes
|
|
||||||
|
|
||||||
;<< cmp [s_vesa.ver],'2'
|
|
||||||
;<< jb .lp1
|
|
||||||
|
|
||||||
or cx,0x4000 ; use LFB <<< ?
|
|
||||||
.lp1: mov [es:bx+6],cx ; +6 : mode number
|
|
||||||
movzx ax,byte [es:mi.BitsPerPixel]
|
|
||||||
mov word [es:bx+8],ax ; +8 : bits per pixel << ?
|
|
||||||
add bx,size_of_step ; size of record
|
|
||||||
|
|
||||||
@@:
|
|
||||||
add si,2
|
|
||||||
jmp .next_mode
|
|
||||||
|
|
||||||
.modes_ok.2:
|
|
||||||
|
|
||||||
mov word[es:bx],-1 ;end video table
|
|
||||||
mov word[end_cursor],bx ;save end cursor position
|
|
||||||
popad
|
|
||||||
ret
|
|
||||||
|
|
||||||
check_first_parm:
|
|
||||||
mov si,word [preboot_graph]
|
|
||||||
test si,si
|
|
||||||
jnz .no_zero ;if no zero
|
|
||||||
.zerro:
|
|
||||||
mov word[preboot_graph], ax
|
|
||||||
|
|
||||||
mov ax,1024
|
|
||||||
mov bx,768
|
|
||||||
mov si,modes_table
|
|
||||||
call .loops
|
|
||||||
test ax,ax
|
|
||||||
jz .ok_found_mode
|
|
||||||
|
|
||||||
mov si,modes_table
|
|
||||||
jmp .ok_found_mode
|
|
||||||
|
|
||||||
.no_zero:
|
|
||||||
mov bp,word [number_vm]
|
|
||||||
cmp bp,word [es:si+6]
|
|
||||||
jz .ok_found_mode
|
|
||||||
mov ax,word [x_save]
|
|
||||||
mov bx,word [y_save]
|
|
||||||
mov si,modes_table
|
|
||||||
call .loops
|
|
||||||
test ax,ax
|
|
||||||
jz .ok_found_mode
|
|
||||||
|
|
||||||
mov si,modes_table
|
|
||||||
|
|
||||||
.ok_found_mode:
|
|
||||||
mov word [home_cursor],si
|
|
||||||
mov word [preboot_graph],si
|
|
||||||
mov ax,si
|
|
||||||
|
|
||||||
mov ecx,long_v_table
|
|
||||||
|
|
||||||
.loop: add ax,size_of_step
|
|
||||||
cmp ax,word [end_cursor]
|
|
||||||
jae .next_step
|
|
||||||
loop .loop
|
|
||||||
.next_step:
|
|
||||||
sub ax,size_of_step*long_v_table
|
|
||||||
cmp ax,modes_table
|
|
||||||
jae @f
|
|
||||||
mov ax,modes_table
|
|
||||||
@@:
|
|
||||||
|
|
||||||
mov word [home_cursor],ax
|
|
||||||
mov si,[preboot_graph]
|
|
||||||
mov word [cursor_pos],si
|
|
||||||
|
|
||||||
push word [es:si]
|
|
||||||
pop word [x_save]
|
|
||||||
push word [es:si+2]
|
|
||||||
pop word [y_save]
|
|
||||||
push word [es:si+6]
|
|
||||||
pop word [number_vm]
|
|
||||||
|
|
||||||
ret
|
|
||||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
||||||
.loops:
|
|
||||||
cmp ax,word [es:si]
|
|
||||||
jne .next
|
|
||||||
cmp bx,word [es:si+2]
|
|
||||||
jne .next
|
|
||||||
je .ok
|
|
||||||
.next: add si,size_of_step
|
|
||||||
cmp word [es:si],-1
|
|
||||||
je .exit
|
|
||||||
jmp .loops
|
|
||||||
.ok: xor ax,ax
|
|
||||||
ret
|
|
||||||
.exit: or ax,-1
|
|
||||||
ret
|
|
||||||
|
|
||||||
|
|
||||||
;-----------------------------------------------------------------------------
|
|
||||||
|
|
||||||
set_vmode:
|
|
||||||
push 0 ;0;x1000
|
|
||||||
pop es
|
|
||||||
|
|
||||||
mov si,word [preboot_graph] ;[preboot_graph]
|
|
||||||
mov cx,word [es:si+6] ; number of mode
|
|
||||||
|
|
||||||
|
|
||||||
mov ax,word [es:si+0] ; resolution X
|
|
||||||
mov bx,word [es:si+2] ; resolution Y
|
|
||||||
|
|
||||||
|
|
||||||
mov word [es:0x900A],ax ; resolution X
|
|
||||||
mov word [es:0x900C],bx ; resolution Y
|
|
||||||
mov word [es:0x9008],cx ; number of mode
|
|
||||||
|
|
||||||
|
|
||||||
; VESA 2 and Vesa 3 only
|
|
||||||
|
|
||||||
mov ax,0x4f01
|
|
||||||
and cx,0xfff
|
|
||||||
mov di,mi;0xa000
|
|
||||||
int 0x10
|
|
||||||
; LFB
|
|
||||||
mov eax,[es:mi.PhysBasePtr] ;di+0x28]
|
|
||||||
mov [es:0x9018],eax
|
|
||||||
; ---- vbe voodoo
|
|
||||||
BytesPerLine equ 0x10
|
|
||||||
mov ax, [es:di+BytesPerLine]
|
|
||||||
mov [es:0x9001], ax
|
|
||||||
; BPP
|
|
||||||
.l0:
|
|
||||||
mov al, byte [es:di+0x19]
|
|
||||||
mov [es:0x9000], al
|
|
||||||
jmp .exit
|
|
||||||
|
|
||||||
.exit:
|
|
||||||
ret
|
|
||||||
|
|
||||||
|
|
||||||
;=============================================================================
|
|
||||||
|
|
@ -24,7 +24,7 @@ dw ((x mod 16) shl 12 + (y mod 16) shl 8 + (r mod 4) shl 3 + ((len-8) mod 8) +
|
|||||||
end if
|
end if
|
||||||
}
|
}
|
||||||
|
|
||||||
macro char_entry charpos, wdbits, numticks
|
macro char_entry charpos, wdbits, numticks
|
||||||
{
|
{
|
||||||
dw (charpos - .chars)*16 + (wdbits mod 4)*8 + (numticks mod 8)
|
dw (charpos - .chars)*16 + (wdbits mod 4)*8 + (numticks mod 8)
|
||||||
}
|
}
|
||||||
@ -35,7 +35,7 @@ macro char_entry charpos, wdbits, numticks
|
|||||||
.numfonts db 2 ; number of system fonts
|
.numfonts db 2 ; number of system fonts
|
||||||
.numsptks db 32 ; number of special ticks
|
.numsptks db 32 ; number of special ticks
|
||||||
.numticks dw ? ; total number of ticks
|
.numticks dw ? ; total number of ticks
|
||||||
.ticktble dd nsvf.tick_table ; general table
|
.ticktble dd nsvf.tick_table ; general table
|
||||||
|
|
||||||
align 4
|
align 4
|
||||||
; ---- special tickfields ----
|
; ---- special tickfields ----
|
||||||
@ -43,8 +43,8 @@ align 4
|
|||||||
.cs2 db 11001100b, 111100b
|
.cs2 db 11001100b, 111100b
|
||||||
.cs3 db 00010100b, 01000101b, 0001b
|
.cs3 db 00010100b, 01000101b, 0001b
|
||||||
.cs0 db 1111b ; 4-pix square
|
.cs0 db 1111b ; 4-pix square
|
||||||
.ri1 db 01010101b, 0101b ; rot-invariants: 8-pix ring
|
.ri1 db 01010101b, 0101b ; rot-invariants: 8-pix ring
|
||||||
.ri2 db 01000100b, 01000100b, 01000100b, 000100b ; 16-pix ring
|
.ri2 db 01000100b, 01000100b, 01000100b, 000100b ; 16-pix ring
|
||||||
|
|
||||||
align 16
|
align 16
|
||||||
nsvf_info:
|
nsvf_info:
|
||||||
@ -53,19 +53,19 @@ nsvf_info:
|
|||||||
.fnt0.x db 5 ; + 0: X-width
|
.fnt0.x db 5 ; + 0: X-width
|
||||||
.fnt0.y db 9 ; + 1: Y-heigth
|
.fnt0.y db 9 ; + 1: Y-heigth
|
||||||
.fnt0.rs dw 0 ; + 2: reserved
|
.fnt0.rs dw 0 ; + 2: reserved
|
||||||
.fnt0.tab dd nsvf00.table ; + 4
|
.fnt0.tab dd nsvf00.table ; + 4
|
||||||
.fnt0.org dd nsvf00.origs ; + 8
|
.fnt0.org dd nsvf00.origs ; + 8
|
||||||
.fnt0.chr dd nsvf00.chars ; +12
|
.fnt0.chr dd nsvf00.chars ; +12
|
||||||
|
|
||||||
|
|
||||||
;align 16
|
;align 16
|
||||||
; System font #1: 7x10
|
; System font #1: 7x10
|
||||||
.fnt1.x db 7 ; X-width
|
.fnt1.x db 7 ; X-width
|
||||||
.fnt1.y db 10 ; Y-heigth
|
.fnt1.y db 10 ; Y-heigth
|
||||||
.fnt1.rs dw 0 ; reserved
|
.fnt1.rs dw 0 ; reserved
|
||||||
.fnt1.tab dd nsvf01.table
|
.fnt1.tab dd nsvf01.table
|
||||||
.fnt1.org dd nsvf01.origs
|
.fnt1.org dd nsvf01.origs
|
||||||
.fnt1.chr dd nsvf01.chars
|
.fnt1.chr dd nsvf01.chars
|
||||||
|
|
||||||
|
|
||||||
align 4
|
align 4
|
||||||
@ -76,33 +76,33 @@ nsvf:
|
|||||||
.tick_table:
|
.tick_table:
|
||||||
db 0, 0, 0, 0, 0, 0 ;32..37 (reserved)
|
db 0, 0, 0, 0, 0, 0 ;32..37 (reserved)
|
||||||
.v1:
|
.v1:
|
||||||
; 38 39
|
; 38 39
|
||||||
db 01b ; XX XX
|
db 01b ; XX XX
|
||||||
db 11b ; X X
|
db 11b ; X X
|
||||||
.v2:
|
.v2:
|
||||||
; 40 41 42 43 44 45
|
; 40 41 42 43 44 45
|
||||||
db 0100b ;40 XXX XXX XX XX XX XX
|
db 0100b ;40 XXX XXX XX XX XX XX
|
||||||
db 1100b ;41 X X X XX X X
|
db 1100b ;41 X X X XX X X
|
||||||
db 0001b ;42 X X X
|
db 0001b ;42 X X X
|
||||||
db 1001b ;43
|
db 1001b ;43
|
||||||
db 0101b ;44
|
db 0101b ;44
|
||||||
db 1101b ;45?
|
db 1101b ;45?
|
||||||
db 0 ;46
|
db 0 ;46
|
||||||
db 0 ;47
|
db 0 ;47
|
||||||
.v3:
|
.v3:
|
||||||
; 48 49 50 51 52 53 54
|
; 48 49 50 51 52 53 54
|
||||||
db 010100b ;48 XXX XX XX XX XXXX XX XXX
|
db 010100b ;48 XXX XX XX XX XXXX XX XXX
|
||||||
db 000011b ;49 X X X X X X X
|
db 000011b ;49 X X X X X X X
|
||||||
db 010001b ;50 X X X X X X
|
db 010001b ;50 X X X X X X
|
||||||
db 000101b ;51 X X X X
|
db 000101b ;51 X X X X
|
||||||
db 110000b ;52
|
db 110000b ;52
|
||||||
db 000111b ;53 55 56 57
|
db 000111b ;53 55 56 57
|
||||||
db 001100b ;54 XX XX XXX
|
db 001100b ;54 XX XX XXX
|
||||||
db 010101b ;55 X X XX
|
db 010101b ;55 X X XX
|
||||||
db 011101b ;56 X XX
|
db 011101b ;56 X XX
|
||||||
db 111100b ;57 X
|
db 111100b ;57 X
|
||||||
db 0 ;58
|
db 0 ;58
|
||||||
db 0 ;59
|
db 0 ;59
|
||||||
db 0, 0, 0, 0 ;60..63
|
db 0, 0, 0, 0 ;60..63
|
||||||
.v4:
|
.v4:
|
||||||
; 64 65 66 67 68 69 70
|
; 64 65 66 67 68 69 70
|
||||||
@ -115,13 +115,13 @@ nsvf:
|
|||||||
db 10100000b ;70:
|
db 10100000b ;70:
|
||||||
db 01010101b ;71: 71
|
db 01010101b ;71: 71
|
||||||
db 00000000b ;72: XX
|
db 00000000b ;72: XX
|
||||||
db 00000000b ;73: X
|
db 00000000b ;73: X
|
||||||
db 00000000b ;74: X
|
db 00000000b ;74: X
|
||||||
db 00000000b ;75: XX
|
db 00000000b ;75: XX
|
||||||
db 00000000b ;76:
|
db 00000000b ;76:
|
||||||
db 00000000b ;77:
|
db 00000000b ;77:
|
||||||
db 00000000b ;78:
|
db 00000000b ;78:
|
||||||
db 00000000b ;79:
|
db 00000000b ;79:
|
||||||
|
|
||||||
|
|
||||||
.v5:
|
.v5:
|
||||||
@ -154,14 +154,14 @@ nsvf:
|
|||||||
db 0, 0, 0, 0, 0, 0 ;106..108
|
db 0, 0, 0, 0, 0, 0 ;106..108
|
||||||
db 0, 0, 0, 0, 0, 0 ;109..111
|
db 0, 0, 0, 0, 0, 0 ;109..111
|
||||||
|
|
||||||
.v9: 112
|
.v9:
|
||||||
db 00100100b, 00100100b, 00b ;112: XXX
|
db 00100100b, 00100100b, 00b ;112: XXX
|
||||||
db 0, 0, 0 ;113: XXXX
|
db 0, 0, 0 ;113: XXXX
|
||||||
db 0, 0, 0 ;114: XXX
|
db 0, 0, 0 ;114: XXX
|
||||||
db 0, 0, 0 ;115:
|
db 0, 0, 0 ;115:
|
||||||
.v10:
|
.v10:
|
||||||
db 00010100b, 01010000b, 0100b ;116:
|
db 00010100b, 01010000b, 0100b ;116:
|
||||||
db 01010100b, 01010001b, 0100b ;117:
|
db 01010100b, 01010001b, 0100b ;117:
|
||||||
db 01010001b, 00000100b, 0100b ;118:
|
db 01010001b, 00000100b, 0100b ;118:
|
||||||
db 0, 0, 0 ;119:
|
db 0, 0, 0 ;119:
|
||||||
.v11:
|
.v11:
|
||||||
@ -170,10 +170,10 @@ nsvf:
|
|||||||
db 0, 0, 0 ;122:
|
db 0, 0, 0 ;122:
|
||||||
db 0, 0, 0 ;123:
|
db 0, 0, 0 ;123:
|
||||||
.v12:
|
.v12:
|
||||||
db 10011001b, 10011001b, 10011001b ;124:
|
db 10011001b, 10011001b, 10011001b ;124:
|
||||||
db 01000100b, 01000100b, 01000000b ;125:
|
db 01000100b, 01000100b, 01000000b ;125:
|
||||||
db 00000000b, 00000000b, 00000000b ;126:
|
db 00000000b, 00000000b, 00000000b ;126:
|
||||||
db 00000000b, 00000000b, 00000000b ;127:
|
db 00000000b, 00000000b, 00000000b ;127:
|
||||||
.v13:
|
.v13:
|
||||||
; WARNING: 13-16 vertex fields not implemented yet!
|
; WARNING: 13-16 vertex fields not implemented yet!
|
||||||
|
|
||||||
|
@ -335,27 +335,27 @@ high_code:
|
|||||||
; -----------------------------------------
|
; -----------------------------------------
|
||||||
mov al, [BOOT_VAR+0x901F] ; DMA access
|
mov al, [BOOT_VAR+0x901F] ; DMA access
|
||||||
mov [allow_dma_access], al
|
mov [allow_dma_access], al
|
||||||
mov eax, 32 ; bpp
|
mov eax, 32 ; << bpp
|
||||||
mov [ScreenBPP],al
|
mov [ScreenBPP],al
|
||||||
mov [_display.bpp], eax
|
mov [_display.bpp], eax
|
||||||
|
|
||||||
mov [_display.vrefresh], 60
|
mov [_display.vrefresh], 60
|
||||||
mov [_display.disable_mouse], __sys_disable_mouse
|
mov [_display.disable_mouse], __sys_disable_mouse
|
||||||
|
|
||||||
movzx eax,word [BOOT_VAR+0x900A] ; X max
|
mov eax, 1024 ; << X max
|
||||||
mov [_display.width], eax
|
mov [_display.width], eax
|
||||||
dec eax
|
dec eax
|
||||||
mov [Screen_Max_X],eax
|
mov [Screen_Max_X],eax
|
||||||
mov [screen_workarea.right],eax
|
mov [screen_workarea.right],eax
|
||||||
movzx eax,word [BOOT_VAR+0x900C] ; Y max
|
mov eax,768 ; << Y max
|
||||||
mov [_display.height], eax
|
mov [_display.height], eax
|
||||||
dec eax
|
dec eax
|
||||||
mov [Screen_Max_Y],eax
|
mov [Screen_Max_Y],eax
|
||||||
mov [screen_workarea.bottom],eax
|
mov [screen_workarea.bottom],eax
|
||||||
movzx eax,word [BOOT_VAR+0x9008] ; screen mode
|
mov eax, 0x7055 ; << screen mode
|
||||||
mov [SCR_MODE],eax
|
mov [SCR_MODE],eax
|
||||||
|
|
||||||
movzx eax, word[BOOT_VAR+0x9001] ; for other modes
|
mov eax, 4096 ; << may be different!
|
||||||
mov [BytesPerScanLine],ax
|
mov [BytesPerScanLine],ax
|
||||||
mov [_display.pitch], eax
|
mov [_display.pitch], eax
|
||||||
|
|
||||||
@ -373,16 +373,9 @@ high_code:
|
|||||||
; GRAPHICS ADDRESSES
|
; GRAPHICS ADDRESSES
|
||||||
|
|
||||||
and byte [BOOT_VAR+0x901e],0x0
|
and byte [BOOT_VAR+0x901e],0x0
|
||||||
mov eax,[BOOT_VAR+0x9018]
|
mov eax, [BOOT_VAR+0x9018]
|
||||||
mov [LFBAddress],eax
|
mov [LFBAddress],eax
|
||||||
|
|
||||||
cmp [SCR_MODE],word 0100000000000000b
|
|
||||||
jge setvesa20
|
|
||||||
mov eax, 0xDEADBEEF
|
|
||||||
hlt
|
|
||||||
; === EGA, VGA & Vesa 1.2 modes not supported ===
|
|
||||||
setvesa20:
|
|
||||||
v20ga32:
|
|
||||||
mov [PUTPIXEL],dword __sys_putpixel
|
mov [PUTPIXEL],dword __sys_putpixel
|
||||||
mov [GETPIXEL],dword get_pixel
|
mov [GETPIXEL],dword get_pixel
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user