fix putch alignement y + fixing mouse cursor

This commit is contained in:
Frater 2026-01-28 23:03:34 +01:00
commit c97c844329
3 changed files with 32 additions and 13 deletions

View file

@ -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

View file

@ -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

View file

@ -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