fix putch alignement y + fixing mouse cursor
This commit is contained in:
parent
5cb2ba2ae5
commit
c97c844329
3 changed files with 32 additions and 13 deletions
19
src/boot.asm
19
src/boot.asm
|
|
@ -47,11 +47,11 @@ section .text
|
|||
%include "./drivers/keyboard_ps2.asm"
|
||||
%include "./services/generic.asm"
|
||||
|
||||
err_vganok db 'VGA Not Initialized',0
|
||||
;err_end db 'code completed successfully',0
|
||||
err_vganok db 'VGA Not Initialized',0
|
||||
|
||||
cpt_txt db '0123456789A123456789B123456789C123456789D123456789E123456789F123456789G123456789',0
|
||||
helloworld db 'Hello World !',0
|
||||
cpt_txt db '0123456789A123456789B123456789C123456789D123456789E123456789F123456789G123456789',0
|
||||
helloworld db 'Hello World !',0
|
||||
centre db 'TEXTEAUCENTR',0
|
||||
|
||||
reset:
|
||||
cli
|
||||
|
|
@ -97,6 +97,17 @@ reset:
|
|||
; on active le mode graphique
|
||||
GFX_DRV GFX_INIT
|
||||
|
||||
mov cx, 300
|
||||
mov dx, 102
|
||||
GFX_DRV GFX_GOTOXY
|
||||
|
||||
GFX_SET_WRTIE_MODE GFX_TXT_WHITE_TRANSPARENT
|
||||
|
||||
push cs
|
||||
pop ds
|
||||
mov si, centre
|
||||
GFX_DRV GFX_WRITE
|
||||
|
||||
; call mouse_reset
|
||||
call mouse_init
|
||||
|
||||
|
|
|
|||
|
|
@ -212,6 +212,7 @@ cga_set_charpos:
|
|||
jz .even
|
||||
add bx, ax
|
||||
neg ax
|
||||
add ax, CGA_STRIDE
|
||||
.even:
|
||||
mov [fs:BDA_GFX + gfx.cur_line_ofs], ax
|
||||
mov [fs:BDA_GFX + gfx.cur_offset], bx
|
||||
|
|
@ -334,6 +335,8 @@ cga_putc_unaligned:
|
|||
mov ch, [fs:BDA_GFX + gfx.cur_mode]
|
||||
mov cl, [fs:BDA_GFX + gfx.cur_shift]
|
||||
|
||||
; mov bx, 0x2000 ; Banque +1
|
||||
|
||||
mov bp,4
|
||||
.row_loop:
|
||||
|
||||
|
|
@ -739,27 +742,32 @@ cga_cursor_draw:
|
|||
.row_loop:
|
||||
; --- CONSTRUCTION DES MASQUES (EAX/EBX) ---
|
||||
push cx ; préserver la banque "suivante"
|
||||
mov ch, [BDA_MOUSE + mouse.x]
|
||||
and ch, 0x07
|
||||
mov cl, 16
|
||||
sub cl, ch
|
||||
mov cl, [BDA_MOUSE + mouse.x]
|
||||
and cl, 0x07
|
||||
|
||||
mov eax,0xffff0000
|
||||
; --- MASQUE AND (EAX) ---
|
||||
mov eax, 0xFFFFFFFF
|
||||
mov ax, [gs:si] ; masque AND
|
||||
xchg al, ah ; Redresser pour l'ordre des pixels CGA
|
||||
bswap eax
|
||||
ror eax, cl
|
||||
|
||||
; --- MASQUE XOR (EBX) ---
|
||||
xor ebx, ebx
|
||||
mov bx, [gs:si+32] ; masque XOR
|
||||
xchg bl, bh
|
||||
bswap ebx
|
||||
ror ebx, cl
|
||||
mov edx, [es:di] ; lecture des 16 bits a la position du curseur
|
||||
|
||||
; --- LECTURE ET MODIFICATION (EDX) ---
|
||||
mov edx, [es:di] ; lecture des 16 bits a la position du curseur
|
||||
bswap edx
|
||||
and edx, eax ; application du masque AND (AX)
|
||||
xor edx, ebx ; application du masque XOR (BX)
|
||||
|
||||
bswap edx
|
||||
mov [es:di], edx ; ecriture du résultat
|
||||
|
||||
; --- GESTION DES BANQUES ---
|
||||
pop cx
|
||||
add di, cx ; banque suivante
|
||||
test cx,0x8000
|
||||
|
|
|
|||
|
|
@ -52,8 +52,8 @@ mouse_reset:
|
|||
mov byte [fs:BDA_MOUSE + mouse.packetlen],3 ; 3 bytes par défaut
|
||||
mov byte [fs:BDA_MOUSE + mouse.status],0
|
||||
|
||||
mov word [fs:BDA_MOUSE + mouse.x],324 ; vous pouvez aussi préciser le centre
|
||||
mov word [fs:BDA_MOUSE + mouse.y],100 ; vous pouvez aussi préciser le centre
|
||||
mov word [fs:BDA_MOUSE + mouse.x],497 ; vous pouvez aussi préciser le centre
|
||||
mov word [fs:BDA_MOUSE + mouse.y],5 ; vous pouvez aussi préciser le centre
|
||||
|
||||
mov byte [fs:BDA_MOUSE + mouse.cur_visible], 1
|
||||
mov word [fs:BDA_MOUSE + mouse.cur_x], 0
|
||||
|
|
|
|||
Loading…
Reference in a new issue