Improved framebuffer compatibility and memory safeguard
This commit is contained in:
parent
e9eaf218a1
commit
f9c0bd3db6
3 changed files with 20 additions and 22 deletions
|
@ -10,15 +10,23 @@ putpixel:
|
|||
|
||||
cld
|
||||
|
||||
; check pixel is in screen
|
||||
mov ebx, [ebp+12] ;y
|
||||
cmp ebx, [mbootinfo.fb_height]
|
||||
jge .done
|
||||
mov ecx, [ebp+8] ;x
|
||||
cmp ecx, [mbootinfo.fb_width]
|
||||
jge .done
|
||||
|
||||
; Destination
|
||||
mov edi, [mbootinfo.fb_addr]
|
||||
mov eax, [mbootinfo.fb_pitch]
|
||||
mul dword [ebp+12] ;y
|
||||
mul dword ebx ;y
|
||||
add edi, eax
|
||||
|
||||
mov eax, [ebp+8] ;x
|
||||
movzx ebx, byte [mbootinfo.fb_bytespp]
|
||||
mul ebx
|
||||
mov eax, ecx ;x
|
||||
movzx ecx, byte [mbootinfo.fb_bytespp]
|
||||
mul ecx
|
||||
add edi, eax
|
||||
|
||||
|
||||
|
@ -26,13 +34,8 @@ putpixel:
|
|||
mov eax, [ebp + 16]
|
||||
|
||||
; Poke videomemory
|
||||
stosb
|
||||
stosb
|
||||
stosb
|
||||
|
||||
cmp [mbootinfo.fb_bpp], 24
|
||||
je .done
|
||||
stosb
|
||||
cld
|
||||
rep stosb
|
||||
.done:
|
||||
pop edi
|
||||
pop ecx
|
||||
|
|
|
@ -45,12 +45,6 @@ mbootgetinfo:
|
|||
add esi, 4
|
||||
|
||||
mov al, [esi]
|
||||
cmp al, 32
|
||||
je .bppokay
|
||||
cmp al, 24
|
||||
je .bppokay
|
||||
jmp mbootunsupportedfbbpp
|
||||
.bppokay:
|
||||
mov [mbootinfo.fb_bpp], al
|
||||
inc esi
|
||||
|
||||
|
|
|
@ -11,8 +11,9 @@ MB_HEADER_FLAGS equ MB_PAGE_ALIGN or MB_MEMORY_INFO or MB_VIDEO_REQUEST
|
|||
MB_HEADER_FLAGS equ MB_PAGE_ALIGN or MB_MEMORY_INFO or MB_VIDEO_REQUEST or MB_AOUT_KLUDGE
|
||||
MB_CHECKSUM equ -(MB_HEADER_MAGIC + MB_HEADER_FLAGS)
|
||||
|
||||
VWIDTH equ 1024
|
||||
VHEIGHT equ 768
|
||||
VWIDTH equ 640
|
||||
VHEIGHT equ 480
|
||||
VDEPTH equ 24
|
||||
|
||||
multiboot:
|
||||
dd MB_HEADER_MAGIC
|
||||
|
@ -26,7 +27,7 @@ multiboot:
|
|||
dd 0 ; video mode_type (0:fb, 1:txt) (set flags[2]!)
|
||||
dd VWIDTH ; video width
|
||||
dd VHEIGHT ; video height
|
||||
dd 24 ; video depth
|
||||
dd VDEPTH ; video depth
|
||||
|
||||
start:
|
||||
; Setup stack
|
||||
|
@ -103,8 +104,8 @@ start:
|
|||
mov ebx, 767
|
||||
mov ecx, 1023
|
||||
push 0xff
|
||||
push 767
|
||||
push 1023
|
||||
push 479
|
||||
push 639
|
||||
call putpixel
|
||||
add esp, 3*4
|
||||
|
||||
|
|
Loading…
Reference in a new issue