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 "./drivers/keyboard_ps2.asm"
|
||||||
%include "./services/generic.asm"
|
%include "./services/generic.asm"
|
||||||
|
|
||||||
err_vganok db 'VGA Not Initialized',0
|
err_vganok db 'VGA Not Initialized',0
|
||||||
;err_end db 'code completed successfully',0
|
|
||||||
|
|
||||||
cpt_txt db '0123456789A123456789B123456789C123456789D123456789E123456789F123456789G123456789',0
|
cpt_txt db '0123456789A123456789B123456789C123456789D123456789E123456789F123456789G123456789',0
|
||||||
helloworld db 'Hello World !',0
|
helloworld db 'Hello World !',0
|
||||||
|
centre db 'TEXTEAUCENTR',0
|
||||||
|
|
||||||
reset:
|
reset:
|
||||||
cli
|
cli
|
||||||
|
|
@ -97,6 +97,17 @@ reset:
|
||||||
; on active le mode graphique
|
; on active le mode graphique
|
||||||
GFX_DRV GFX_INIT
|
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_reset
|
||||||
call mouse_init
|
call mouse_init
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -212,6 +212,7 @@ cga_set_charpos:
|
||||||
jz .even
|
jz .even
|
||||||
add bx, ax
|
add bx, ax
|
||||||
neg ax
|
neg ax
|
||||||
|
add ax, CGA_STRIDE
|
||||||
.even:
|
.even:
|
||||||
mov [fs:BDA_GFX + gfx.cur_line_ofs], ax
|
mov [fs:BDA_GFX + gfx.cur_line_ofs], ax
|
||||||
mov [fs:BDA_GFX + gfx.cur_offset], bx
|
mov [fs:BDA_GFX + gfx.cur_offset], bx
|
||||||
|
|
@ -334,6 +335,8 @@ cga_putc_unaligned:
|
||||||
mov ch, [fs:BDA_GFX + gfx.cur_mode]
|
mov ch, [fs:BDA_GFX + gfx.cur_mode]
|
||||||
mov cl, [fs:BDA_GFX + gfx.cur_shift]
|
mov cl, [fs:BDA_GFX + gfx.cur_shift]
|
||||||
|
|
||||||
|
; mov bx, 0x2000 ; Banque +1
|
||||||
|
|
||||||
mov bp,4
|
mov bp,4
|
||||||
.row_loop:
|
.row_loop:
|
||||||
|
|
||||||
|
|
@ -739,27 +742,32 @@ cga_cursor_draw:
|
||||||
.row_loop:
|
.row_loop:
|
||||||
; --- CONSTRUCTION DES MASQUES (EAX/EBX) ---
|
; --- CONSTRUCTION DES MASQUES (EAX/EBX) ---
|
||||||
push cx ; préserver la banque "suivante"
|
push cx ; préserver la banque "suivante"
|
||||||
mov ch, [BDA_MOUSE + mouse.x]
|
mov cl, [BDA_MOUSE + mouse.x]
|
||||||
and ch, 0x07
|
and cl, 0x07
|
||||||
mov cl, 16
|
|
||||||
sub cl, ch
|
|
||||||
|
|
||||||
mov eax,0xffff0000
|
; --- MASQUE AND (EAX) ---
|
||||||
|
mov eax, 0xFFFFFFFF
|
||||||
mov ax, [gs:si] ; masque AND
|
mov ax, [gs:si] ; masque AND
|
||||||
|
xchg al, ah ; Redresser pour l'ordre des pixels CGA
|
||||||
bswap eax
|
bswap eax
|
||||||
ror eax, cl
|
ror eax, cl
|
||||||
|
|
||||||
|
; --- MASQUE XOR (EBX) ---
|
||||||
xor ebx, ebx
|
xor ebx, ebx
|
||||||
mov bx, [gs:si+32] ; masque XOR
|
mov bx, [gs:si+32] ; masque XOR
|
||||||
|
xchg bl, bh
|
||||||
bswap ebx
|
bswap ebx
|
||||||
ror ebx, cl
|
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)
|
and edx, eax ; application du masque AND (AX)
|
||||||
xor edx, ebx ; application du masque XOR (BX)
|
xor edx, ebx ; application du masque XOR (BX)
|
||||||
|
bswap edx
|
||||||
mov [es:di], edx ; ecriture du résultat
|
mov [es:di], edx ; ecriture du résultat
|
||||||
|
|
||||||
|
; --- GESTION DES BANQUES ---
|
||||||
pop cx
|
pop cx
|
||||||
add di, cx ; banque suivante
|
add di, cx ; banque suivante
|
||||||
test cx,0x8000
|
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.packetlen],3 ; 3 bytes par défaut
|
||||||
mov byte [fs:BDA_MOUSE + mouse.status],0
|
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.x],497 ; 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.y],5 ; vous pouvez aussi préciser le centre
|
||||||
|
|
||||||
mov byte [fs:BDA_MOUSE + mouse.cur_visible], 1
|
mov byte [fs:BDA_MOUSE + mouse.cur_visible], 1
|
||||||
mov word [fs:BDA_MOUSE + mouse.cur_x], 0
|
mov word [fs:BDA_MOUSE + mouse.cur_x], 0
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue