Drivers VGA OK

This commit is contained in:
Frater 2026-02-20 16:38:23 +01:00
commit a72c7fe731
5 changed files with 850 additions and 183 deletions

View file

@ -107,10 +107,10 @@ entrycode:
GFX MOUSE_SHOW GFX MOUSE_SHOW
call main_testing call main_loop
.loops: .loops:
hlt hlt
;jmp .loops jmp .loops
; --- Callbacks (Fonctions appelées par le moteur) --- ; --- Callbacks (Fonctions appelées par le moteur) ---
on_click_quit: on_click_quit:
@ -122,9 +122,10 @@ on_click_hello:
ret ret
main_test:
GFX RECTANGLE_FILL, 10,10,50,20, PATTERN_WHITE, 15, 0
main_testing:
GFX LINE,10,10,10,67, 15
ret ret
%define .oldval word [bp-2] %define .oldval word [bp-2]
@ -137,14 +138,8 @@ main_loop:
push cs push cs
pop ds pop ds
DEBUG 1
ISADBG ISA_LEFT, 1
; Init du système GUI ; Init du système GUI
call gui_init_system call gui_init_system
DEBUG 2
ISADBG ISA_LEFT, 2
; --- CRÉATION DYNAMIQUE DES BOUTONS --- ; --- CRÉATION DYNAMIQUE DES BOUTONS ---

View file

@ -20,7 +20,6 @@ pattern_8x8:
dq 0x77DD77DD77DD77DD ; 4 : pattern_white_light (Majorité de 1 = Clair) dq 0x77DD77DD77DD77DD ; 4 : pattern_white_light (Majorité de 1 = Clair)
dq 0xFFFFFFFFFFFFFFFF ; 5 : pattern_white (Tout à 1 = Blanc) dq 0xFFFFFFFFFFFFFFFF ; 5 : pattern_white (Tout à 1 = Blanc)
%macro PATTERN_PTR 1 %macro PATTERN_PTR 1
mov ax, cs mov ax, cs
mov ds, ax mov ds, ax

View file

@ -990,22 +990,21 @@ cga_draw_rect:
; cga_fill_rect ; cga_fill_rect
; Dessine un rectangle plein ; Dessine un rectangle plein
; Entrée : x1, y1, x2, y2, pattern_offset (CS:Offset) ; Entrée : x1, y1, x2, y2, pattern_offset (CS:Offset)
; ------------------------------------------------------------
%define .x1 word [bp+4] %define .x1 word [bp+4]
%define .y1 word [bp+6] %define .y1 word [bp+6]
%define .x2 word [bp+8] %define .x2 word [bp+8]
%define .y2 word [bp+10] %define .y2 word [bp+10]
%define .pat_id word [bp+12] %define .pat_id word [bp+12]
; ------------------------------------------------------------
; Variable locale pour l'index du motif (y % 8)
%define .pat_idx word [bp-2]
%define .x_end_idx word [bp-4]
%define .pattern_offset word [bp-6]
cga_fill_rect: cga_fill_rect:
push bp push bp
mov bp, sp mov bp, sp
sub sp, 6 ; Reserve espace pour .pat_idx et .x_end_idx sub sp, 6 ; Reserve espace pour .pat_idx et .x_end_idx
; Variable locale pour l'index du motif (y % 8)
%define .pat_idx word [bp-2]
%define .x_end_idx word [bp-4]
%define .pattern_offset word [bp-6]
pusha pusha
push es push es

File diff suppressed because it is too large Load diff

View file

@ -1,6 +1,6 @@
; ============================================================================= ; =============================================================================
; Project : Custom BIOS / ROM ; Project : Custom BIOS / ROM
; File : gui/draw.asm ; File : gui/lib-draw.asm
; Author : frater ; Author : frater
; ;
; License : GNU General Public License v3.0 or later (GPL-3.0+) ; License : GNU General Public License v3.0 or later (GPL-3.0+)
@ -114,7 +114,7 @@ draw_slider:
mov .track_y2, dx mov .track_y2, dx
; 1. Dessiner la piste (Track) ; 1. Dessiner la piste (Track)
GFX RECTANGLE_FILL, .track_x1, .track_y1, .track_x2, .track_y2, PATTERN_WHITE_LIGHT GFX RECTANGLE_FILL, .track_x1, .track_y1, .track_x2, .track_y2, PATTERN_WHITE_LIGHT, 15, 0
GFX RECTANGLE, .track_x1, .track_y1, .track_x2, .track_y2, 0 GFX RECTANGLE, .track_x1, .track_y1, .track_x2, .track_y2, 0
; 2. Calculer la taille du curseur (Thumb) ; 2. Calculer la taille du curseur (Thumb)
@ -199,7 +199,7 @@ draw_slider:
.draw_thumb: .draw_thumb:
; 3. Dessiner le curseur (Thumb) ; 3. Dessiner le curseur (Thumb)
GFX RECTANGLE_FILL, .thumb_x1, .thumb_y1, .thumb_x2, .thumb_y2, PATTERN_WHITE GFX RECTANGLE_FILL, .thumb_x1, .thumb_y1, .thumb_x2, .thumb_y2, PATTERN_WHITE, 15, 0
GFX RECTANGLE, .thumb_x1, .thumb_y1, .thumb_x2, .thumb_y2, 0 GFX RECTANGLE, .thumb_x1, .thumb_y1, .thumb_x2, .thumb_y2, 0
; --- Grip Lines (3 lignes pour un look moderne) --- ; --- Grip Lines (3 lignes pour un look moderne) ---
@ -307,12 +307,12 @@ draw_button:
jmp .done jmp .done
.paint_hover: .paint_hover:
GFX RECTANGLE_FILL, ax, bx, cx, dx, PATTERN_WHITE_LIGHT GFX RECTANGLE_FILL, ax, bx, cx, dx, PATTERN_WHITE_LIGHT, 15, 0
GFX RECTANGLE, ax, bx, cx, dx, 0 GFX RECTANGLE, ax, bx, cx, dx, 0
jmp .done jmp .done
.paint_pressed: .paint_pressed:
GFX RECTANGLE_FILL, ax, bx, cx, dx, PATTERN_BLACK GFX RECTANGLE_FILL, ax, bx, cx, dx, PATTERN_BLACK, 15, 0
GFX TXT_MODE, GFX_TXT_WHITE_TRANSPARENT GFX TXT_MODE, GFX_TXT_WHITE_TRANSPARENT
.done: .done:
@ -336,14 +336,14 @@ draw_round_button:
je .paint_hover je .paint_hover
.paint_normal: .paint_normal:
GFX RECTANGLE_FILL, ax, bx, cx, dx, PATTERN_WHITE GFX RECTANGLE_FILL, ax, bx, cx, dx, PATTERN_WHITE, 15, 0
mov di, 0 ; Couleur Noire mov di, 0 ; Couleur Noire
call draw_round_borders call draw_round_borders
GFX TXT_MODE, GFX_TXT_BLACK_TRANSPARENT GFX TXT_MODE, GFX_TXT_BLACK_TRANSPARENT
jmp .draw_text_now jmp .draw_text_now
.paint_hover: .paint_hover:
GFX RECTANGLE_FILL, ax, bx, cx, dx, PATTERN_WHITE GFX RECTANGLE_FILL, ax, bx, cx, dx, PATTERN_WHITE, 15, 0
GFX RECTANGLE_ROUND, ax, bx, cx, dx, 0 GFX RECTANGLE_ROUND, ax, bx, cx, dx, 0
; GFX RECTANGLE_FILL, ax, bx, cx, dx, PATTERN_WHITE_LIGHT ; GFX RECTANGLE_FILL, ax, bx, cx, dx, PATTERN_WHITE_LIGHT
mov di, 0 ; Couleur Noire mov di, 0 ; Couleur Noire
@ -352,7 +352,7 @@ draw_round_button:
jmp .draw_text_now jmp .draw_text_now
.paint_pressed: .paint_pressed:
GFX RECTANGLE_FILL, ax, bx, cx, dx, PATTERN_BLACK GFX RECTANGLE_FILL, ax, bx, cx, dx, PATTERN_BLACK, 15, 0
mov di, 1 ; Bordure Blanche sur fond noir mov di, 1 ; Bordure Blanche sur fond noir
call draw_round_borders call draw_round_borders
GFX TXT_MODE, GFX_TXT_WHITE_TRANSPARENT GFX TXT_MODE, GFX_TXT_WHITE_TRANSPARENT
@ -379,7 +379,7 @@ draw_round_borders:
draw_checkbox: draw_checkbox:
; met un "fond" blanc ; met un "fond" blanc
GFX RECTANGLE_FILL, ax, bx, cx, dx, PATTERN_WHITE GFX RECTANGLE_FILL, ax, bx, cx, dx, PATTERN_WHITE, 15, 0
cmp byte [gs:si + widget.state], GUI_STATE_HOVER cmp byte [gs:si + widget.state], GUI_STATE_HOVER
jne .no_hover jne .no_hover
@ -411,7 +411,7 @@ draw_checkbox:
push dx push dx
; Fond blanc + Bordure noire ; Fond blanc + Bordure noire
GFX RECTANGLE_FILL, ax, bx, cx, dx, PATTERN_WHITE GFX RECTANGLE_FILL, ax, bx, cx, dx, PATTERN_WHITE, 15, 0
GFX RECTANGLE, ax, bx, cx, dx, 0 GFX RECTANGLE, ax, bx, cx, dx, 0
; Check if checked ; Check if checked
@ -449,8 +449,10 @@ draw_checkbox:
inc bx inc bx
GFX GOTOXY, cx, bx GFX GOTOXY, cx, bx
GFX TXT_MODE, GFX_TXT_BLACK & GFX_TXT_TRANSPARENT_BKG
mov dx, [gs:si + widget.text_seg] mov dx, [gs:si + widget.text_seg]
mov ax, [gs:si + widget.text_ofs] mov ax, [gs:si + widget.text_ofs]
GFX WRITE, dx, ax GFX WRITE, dx, ax
ret ret
@ -459,7 +461,7 @@ draw_checkbox:
; dessine un label (texte simple) ; dessine un label (texte simple)
; ;
draw_label: draw_label:
GFX TXT_MODE, GFX_TXT_BLACK_TRANSPARENT GFX TXT_MODE, GFX_TXT_WHITE & GFX_TXT_TRANSPARENT_BKG
call draw_text call draw_text
ret ret
@ -498,6 +500,7 @@ draw_text:
pop cx ; CX = X Final, BX = Y Final pop cx ; CX = X Final, BX = Y Final
GFX GOTOXY, cx, bx GFX GOTOXY, cx, bx
GFX TXT_MODE, GFX_TXT_WHITE & GFX_TXT_TRANSPARENT_BKG
mov dx, [gs:si + widget.text_seg] mov dx, [gs:si + widget.text_seg]
mov ax, [gs:si + widget.text_ofs] mov ax, [gs:si + widget.text_ofs]