diff --git a/src/boot.asm b/src/boot.asm index 1324bf9..bf8c84b 100644 --- a/src/boot.asm +++ b/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 diff --git a/src/drivers/gfx_cgam.asm b/src/drivers/gfx_cgam.asm index dbce932..b817c92 100644 --- a/src/drivers/gfx_cgam.asm +++ b/src/drivers/gfx_cgam.asm @@ -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 diff --git a/src/drivers/mouse_ps2.asm b/src/drivers/mouse_ps2.asm index 23b9dee..8e4bb2c 100644 --- a/src/drivers/mouse_ps2.asm +++ b/src/drivers/mouse_ps2.asm @@ -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