fixed "8" pixels alignment
This commit is contained in:
parent
ab52449591
commit
dfe0d6ced5
3 changed files with 30 additions and 25 deletions
|
|
@ -97,8 +97,8 @@ reset:
|
||||||
; on active le mode graphique
|
; on active le mode graphique
|
||||||
GFX_DRV GFX_INIT
|
GFX_DRV GFX_INIT
|
||||||
|
|
||||||
call mouse_reset
|
; call mouse_reset
|
||||||
;call mouse_init
|
call mouse_init
|
||||||
|
|
||||||
GFX_DRV GFX_CRS_UPDATE
|
GFX_DRV GFX_CRS_UPDATE
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
80; =============================================================================
|
; =============================================================================
|
||||||
; Project : Custom BIOS / ROM
|
; Project : Custom BIOS / ROM
|
||||||
; File : gfx_cgam.asm
|
; File : gfx_cgam.asm
|
||||||
; Author : frater
|
; Author : frater
|
||||||
|
|
@ -573,9 +573,10 @@ cga_cursor_move:
|
||||||
mov ax, VIDEO_SEG
|
mov ax, VIDEO_SEG
|
||||||
mov es, ax
|
mov es, ax
|
||||||
|
|
||||||
;call cga_cursor_restorebg
|
call cga_cursor_restorebg
|
||||||
|
|
||||||
|
call cga_cursor_savebg
|
||||||
|
|
||||||
;call cga_cursor_savebg
|
|
||||||
call cga_cursor_draw
|
call cga_cursor_draw
|
||||||
mov byte [BDA_MOUSE + mouse.cur_drawing],0
|
mov byte [BDA_MOUSE + mouse.cur_drawing],0
|
||||||
.done:
|
.done:
|
||||||
|
|
@ -589,7 +590,7 @@ cga_cursor_move:
|
||||||
; Sauve 16 lignes (3 bytes/ligne) sous le curseur.
|
; Sauve 16 lignes (3 bytes/ligne) sous le curseur.
|
||||||
; Stocke 16 DWORDs: chaque DWORD contient (b0|b1<<8|b2<<16) dans les 24 bits bas.
|
; Stocke 16 DWORDs: chaque DWORD contient (b0|b1<<8|b2<<16) dans les 24 bits bas.
|
||||||
; -----------------------------------------------
|
; -----------------------------------------------
|
||||||
gfx_cursor_savebg:
|
cga_cursor_savebg:
|
||||||
cmp byte [BDA_MOUSE + mouse.bkg_saved], 0
|
cmp byte [BDA_MOUSE + mouse.bkg_saved], 0
|
||||||
jne .done
|
jne .done
|
||||||
|
|
||||||
|
|
@ -726,41 +727,45 @@ cga_cursor_draw:
|
||||||
mov si, [BDA_MOUSE + mouse.cur_ofs]
|
mov si, [BDA_MOUSE + mouse.cur_ofs]
|
||||||
|
|
||||||
; --- CALCUL de l'offset entre 2 lignes +0x2000 ou -0x2000 ---
|
; --- CALCUL de l'offset entre 2 lignes +0x2000 ou -0x2000 ---
|
||||||
mov bx, 0x2000 ; Banque opposée
|
|
||||||
test word [BDA_MOUSE + mouse.y], 1
|
mov ax, 0x2000 ; Banque +1
|
||||||
|
mov cx, [BDA_MOUSE + mouse.y]
|
||||||
|
test cx, 1
|
||||||
jz .setup_done
|
jz .setup_done
|
||||||
neg bx
|
neg ax ; banque -1
|
||||||
.setup_done:
|
.setup_done:
|
||||||
mov [BDA_MOUSE + mouse.cur_bank_add], bx ; interligne + ou - 0x2000
|
mov cx, ax
|
||||||
|
|
||||||
.row_loop:
|
.row_loop:
|
||||||
; --- CONSTRUCTION DES MASQUES (EAX/EBX) ---
|
; --- CONSTRUCTION DES MASQUES (EAX/EBX) ---
|
||||||
xor eax, eax
|
xor eax, eax
|
||||||
xor ebx, ebx
|
xor ebx, ebx
|
||||||
|
|
||||||
mov ax, [gs:si] ; masque AND
|
|
||||||
xchg al, ah
|
|
||||||
; expansion 16 bits -> 32 bits avec padding
|
|
||||||
;shl eax, 8
|
|
||||||
;or eax, 0xFF0000FF ; EAX = [FF][GAUCHE][DROITE][FF]
|
|
||||||
|
|
||||||
|
|
||||||
mov bx, [gs:si+32] ; masque XOR
|
mov bx, [gs:si+32] ; masque XOR
|
||||||
xchg bl, bh
|
xchg bl, bh
|
||||||
; expansion 16 bits -> 32 bits avec padding
|
; expansion 16 bits -> 32 bits avec padding
|
||||||
;shl ebx, 8 ; EBX = [00][GAUCHE][DROITE][00]
|
shl ebx, 8 ; EBX = [00][GAUCHE][DROITE][00]
|
||||||
|
|
||||||
|
mov ax, [gs:si] ; masque AND
|
||||||
|
xchg al, ah
|
||||||
|
; expansion 16 bits -> 32 bits avec padding
|
||||||
|
shl eax, 8
|
||||||
|
or eax, 0xFF0000FF ; EAX = [FF][GAUCHE][DROITE][FF]
|
||||||
|
|
||||||
mov dx, [es:di] ; lecture des 16 bits a la position du curseur
|
mov edx, [es:di] ; lecture des 16 bits a la position du curseur
|
||||||
and dx, ax ; application du masque AND (AX)
|
and edx, eax ; application du masque AND (AX)
|
||||||
xor dx, bx ; application du masque XOR (BX)
|
xor edx, ebx ; application du masque XOR (BX)
|
||||||
|
|
||||||
mov [es:di], dx ; ecriture du résultat
|
mov [es:di], edx ; ecriture du résultat
|
||||||
|
add di, cx ; banque suivante
|
||||||
|
test cx,0x8000
|
||||||
|
jz .next_line
|
||||||
|
add di,80
|
||||||
|
|
||||||
.next_line:
|
.next_line:
|
||||||
add di, CGA_STRIDE
|
neg cx ; prochaine banque = -banque
|
||||||
; [BDA_MOUSE + mouse.cur_bank_add]
|
; [BDA_MOUSE + mouse.cur_bank_add]
|
||||||
|
; mov [BDA_MOUSE + mouse.cur_bank_add], bx ; interligne + ou - 0x2000
|
||||||
add si, 2 ; Prochaine ligne du sprite
|
add si, 2 ; Prochaine ligne du sprite
|
||||||
dec bp
|
dec bp
|
||||||
jnz .row_loop
|
jnz .row_loop
|
||||||
|
|
|
||||||
|
|
@ -335,7 +335,7 @@ isr_mouse_handler:
|
||||||
.done:
|
.done:
|
||||||
; update la position du curseur sur l'écran
|
; update la position du curseur sur l'écran
|
||||||
; en ce moment c'est commented out (debug)
|
; en ce moment c'est commented out (debug)
|
||||||
; call gfx_cursor_move
|
call cga_cursor_move
|
||||||
.done_eoi:
|
.done_eoi:
|
||||||
mov al, 0x20
|
mov al, 0x20
|
||||||
out i8259_SLAVE_CMD, al ; EOI PIC esclave
|
out i8259_SLAVE_CMD, al ; EOI PIC esclave
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue