Improved framebuffer compatibility and memory safeguard

This commit is contained in:
Jarkko Toivanen 2023-09-08 12:02:02 +03:00
parent e9eaf218a1
commit f9c0bd3db6
Signed by: jt
GPG key ID: 9151B109B73ECAD5
3 changed files with 20 additions and 22 deletions

View file

@ -10,15 +10,23 @@ putpixel:
cld 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 ; Destination
mov edi, [mbootinfo.fb_addr] mov edi, [mbootinfo.fb_addr]
mov eax, [mbootinfo.fb_pitch] mov eax, [mbootinfo.fb_pitch]
mul dword [ebp+12] ;y mul dword ebx ;y
add edi, eax add edi, eax
mov eax, [ebp+8] ;x mov eax, ecx ;x
movzx ebx, byte [mbootinfo.fb_bytespp] movzx ecx, byte [mbootinfo.fb_bytespp]
mul ebx mul ecx
add edi, eax add edi, eax
@ -26,13 +34,8 @@ putpixel:
mov eax, [ebp + 16] mov eax, [ebp + 16]
; Poke videomemory ; Poke videomemory
stosb cld
stosb rep stosb
stosb
cmp [mbootinfo.fb_bpp], 24
je .done
stosb
.done: .done:
pop edi pop edi
pop ecx pop ecx

View file

@ -45,12 +45,6 @@ mbootgetinfo:
add esi, 4 add esi, 4
mov al, [esi] mov al, [esi]
cmp al, 32
je .bppokay
cmp al, 24
je .bppokay
jmp mbootunsupportedfbbpp
.bppokay:
mov [mbootinfo.fb_bpp], al mov [mbootinfo.fb_bpp], al
inc esi inc esi

View file

@ -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_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) MB_CHECKSUM equ -(MB_HEADER_MAGIC + MB_HEADER_FLAGS)
VWIDTH equ 1024 VWIDTH equ 640
VHEIGHT equ 768 VHEIGHT equ 480
VDEPTH equ 24
multiboot: multiboot:
dd MB_HEADER_MAGIC dd MB_HEADER_MAGIC
@ -26,7 +27,7 @@ multiboot:
dd 0 ; video mode_type (0:fb, 1:txt) (set flags[2]!) dd 0 ; video mode_type (0:fb, 1:txt) (set flags[2]!)
dd VWIDTH ; video width dd VWIDTH ; video width
dd VHEIGHT ; video height dd VHEIGHT ; video height
dd 24 ; video depth dd VDEPTH ; video depth
start: start:
; Setup stack ; Setup stack
@ -103,8 +104,8 @@ start:
mov ebx, 767 mov ebx, 767
mov ecx, 1023 mov ecx, 1023
push 0xff push 0xff
push 767 push 479
push 1023 push 639
call putpixel call putpixel
add esp, 3*4 add esp, 3*4