add binary font + fixing error

This commit is contained in:
Frater 2026-02-23 18:04:20 +01:00
commit 413f4b6f79
9 changed files with 1078 additions and 914 deletions

1
.gitignore vendored
View file

@ -9,3 +9,4 @@ gfx/
roms/
tools/
doc/generated
assets/

View file

@ -65,11 +65,11 @@ section .text
%include "./gui/lib-api.asm"
; --- Données texte ---
str_quit db "Quitter", 0
str_quit db "Quit", 0
str_hello db "Hello", 0
str_option1 db "option 1", 0
str_option2 db "option 2", 0
str_option3 db "option 3", 0
str_option1 db "option A", 0
str_option2 db "option BA", 0
str_option3 db "option BBA", 0
entrycode:
cli
@ -81,8 +81,6 @@ entrycode:
call ivt_setup ; configuration d'une table d'interruption "dummy"
call bda_setup ; initialisation du BDA
ISADBG ISA_GREEN, 1
; Install IRQ 0 : timer_isr
mov ax,cs
mov dx,ax
@ -106,8 +104,7 @@ entrycode:
; on active le mode graphique
GFX INIT
call mouse_init
GFX MOUSE_SHOW
GFX MOUSE_SHOW
call main_loop
.loops:
@ -123,12 +120,8 @@ on_click_quit:
on_click_hello:
ret
main_test:
; GFX RECTANGLE_FILL, 10,10,50,20, PATTERN_WHITE, 15, 0
; GUI OBJ_CREATE, OBJ_TYPE_CHECKBOX, 200, 50, 100, 15
mov ax, 200
add ax, 4
@ -197,8 +190,9 @@ main_loop:
; Créer Slider (Drag)
GUI OBJ_CREATE, OBJ_TYPE_SLIDER, 10, 100, 150, 12
GUI OBJ_SET_MODE, ax, SLIDER_HORIZONTAL
GUI OBJ_SLIDER_SET_ATTR, ax, 10, 140, 10, 15
mov .my_slider, ax
GUI OBJ_SET_MODE, .my_slider, SLIDER_HORIZONTAL
GUI OBJ_SLIDER_SET_ATTR, .my_slider, 10, 140, 10, 15
GUI OBJ_CREATE, OBJ_TYPE_SLIDER, 400, 10, 16, 150
mov .my_slider, ax

862
src/common/char_bold.asm Normal file
View file

@ -0,0 +1,862 @@
; ============================================================================
; Font 8x8 (printable ASCII 0x20..0x7E) -> 95 glyphs * 8 = 760 bytes
; - bit7 = gauche, bit0 = droite
; - 1 byte = 1 scanline (haut -> bas)
; ============================================================================
font8x8_bold:
; 0x20 ' '
db 00000000b
db 00000000b
db 00000000b
db 00000000b
db 00000000b
db 00000000b
db 00000000b
db 00000000b
; 0x21 '!'
db 00011000b
db 00011000b
db 00011000b
db 00011000b
db 00011000b
db 00000000b
db 00011000b
db 00000000b
; 0x22 '"'
db 01100110b
db 01100110b
db 00100100b
db 00000000b
db 00000000b
db 00000000b
db 00000000b
db 00000000b
; 0x23 '#'
db 00100100b
db 00100100b
db 01111110b
db 00100100b
db 01111110b
db 00100100b
db 00100100b
db 00000000b
; 0x24 '$'
db 00011000b
db 00111110b
db 01100000b
db 00111100b
db 00000110b
db 01111100b
db 00011000b
db 00000000b
; 0x25 '%'
db 01100010b
db 01100110b
db 00001100b
db 00011000b
db 00110000b
db 01100110b
db 01000110b
db 00000000b
; 0x26 '&'
db 00111000b
db 01101100b
db 00111000b
db 01110110b
db 11011100b
db 11001100b
db 01110110b
db 00000000b
; 0x27 '''
db 00011000b
db 00011000b
db 00110000b
db 00000000b
db 00000000b
db 00000000b
db 00000000b
db 00000000b
; 0x28 '('
db 00001100b
db 00011000b
db 00110000b
db 00110000b
db 00110000b
db 00011000b
db 00001100b
db 00000000b
; 0x29 ')'
db 00110000b
db 00011000b
db 00001100b
db 00001100b
db 00001100b
db 00011000b
db 00110000b
db 00000000b
; 0x2A '*'
db 00000000b
db 01100110b
db 00111100b
db 11111111b
db 00111100b
db 01100110b
db 00000000b
db 00000000b
; 0x2B '+'
db 00000000b
db 00011000b
db 00011000b
db 01111110b
db 00011000b
db 00011000b
db 00000000b
db 00000000b
; 0x2C ','
db 00000000b
db 00000000b
db 00000000b
db 00000000b
db 00000000b
db 00011000b
db 00011000b
db 00110000b
; 0x2D '-'
db 00000000b
db 00000000b
db 00000000b
db 01111110b
db 00000000b
db 00000000b
db 00000000b
db 00000000b
; 0x2E '.'
db 00000000b
db 00000000b
db 00000000b
db 00000000b
db 00000000b
db 00011000b
db 00011000b
db 00000000b
; 0x2F '/'
db 00000110b
db 00001100b
db 00011000b
db 00110000b
db 01100000b
db 11000000b
db 10000000b
db 00000000b
; 0x30 '0'
db 00111100b
db 01100110b
db 01101110b
db 01110110b
db 01100110b
db 01100110b
db 00111100b
db 00000000b
; 0x31 '1'
db 00011000b
db 00111000b
db 00011000b
db 00011000b
db 00011000b
db 00011000b
db 00111100b
db 00000000b
; 0x32 '2'
db 00111100b
db 01100110b
db 00000110b
db 00001100b
db 00011000b
db 00110000b
db 01111110b
db 00000000b
; 0x33 '3'
db 00111100b
db 01100110b
db 00000110b
db 00011100b
db 00000110b
db 01100110b
db 00111100b
db 00000000b
; 0x34 '4'
db 00001100b
db 00011100b
db 00111100b
db 01101100b
db 01111110b
db 00001100b
db 00001100b
db 00000000b
; 0x35 '5'
db 01111110b
db 01100000b
db 01111100b
db 00000110b
db 00000110b
db 01100110b
db 00111100b
db 00000000b
; 0x36 '6'
db 00011100b
db 00110000b
db 01100000b
db 01111100b
db 01100110b
db 01100110b
db 00111100b
db 00000000b
; 0x37 '7'
db 01111110b
db 01100110b
db 00000110b
db 00001100b
db 00011000b
db 00011000b
db 00011000b
db 00000000b
; 0x38 '8'
db 00111100b
db 01100110b
db 01100110b
db 00111100b
db 01100110b
db 01100110b
db 00111100b
db 00000000b
; 0x39 '9'
db 00111100b
db 01100110b
db 01100110b
db 00111110b
db 00000110b
db 00001100b
db 00111000b
db 00000000b
; 0x3A ':'
db 00000000b
db 00011000b
db 00011000b
db 00000000b
db 00000000b
db 00011000b
db 00011000b
db 00000000b
; 0x3B ';'
db 00000000b
db 00011000b
db 00011000b
db 00000000b
db 00000000b
db 00011000b
db 00011000b
db 00110000b
; 0x3C '<'
db 00001110b
db 00011100b
db 00111000b
db 01110000b
db 00111000b
db 00011100b
db 00001110b
db 00000000b
; 0x3D '='
db 00000000b
db 00000000b
db 01111110b
db 00000000b
db 01111110b
db 00000000b
db 00000000b
db 00000000b
; 0x3E '>'
db 01110000b
db 00111000b
db 00011100b
db 00001110b
db 00011100b
db 00111000b
db 01110000b
db 00000000b
; 0x3F '?'
db 00111100b
db 01100110b
db 00000110b
db 00001100b
db 00011000b
db 00000000b
db 00011000b
db 00000000b
; 0x40 '@'
db 00111100b
db 01100110b
db 01101110b
db 01101010b
db 01101110b
db 01100000b
db 00111100b
db 00000000b
; 0x41 'A'
db 00011000b
db 00111100b
db 01100110b
db 01100110b
db 01111110b
db 01100110b
db 01100110b
db 00000000b
; 0x42 'B'
db 01111100b
db 01100110b
db 01100110b
db 01111100b
db 01100110b
db 01100110b
db 01111100b
db 00000000b
; 0x43 'C'
db 00111100b
db 01100110b
db 01100000b
db 01100000b
db 01100000b
db 01100110b
db 00111100b
db 00000000b
; 0x44 'D'
db 01111000b
db 01101100b
db 01100110b
db 01100110b
db 01100110b
db 01101100b
db 01111000b
db 00000000b
; 0x45 'E'
db 01111110b
db 01100000b
db 01100000b
db 01111100b
db 01100000b
db 01100000b
db 01111110b
db 00000000b
; 0x46 'F'
db 01111110b
db 01100000b
db 01100000b
db 01111100b
db 01100000b
db 01100000b
db 01100000b
db 00000000b
; 0x47 'G'
db 00111100b
db 01100110b
db 01100000b
db 01101110b
db 01100110b
db 01100110b
db 00111100b
db 00000000b
; 0x48 'H'
db 01100110b
db 01100110b
db 01100110b
db 01111110b
db 01100110b
db 01100110b
db 01100110b
db 00000000b
; 0x49 'I'
db 00111100b
db 00011000b
db 00011000b
db 00011000b
db 00011000b
db 00011000b
db 00111100b
db 00000000b
; 0x4A 'J'
db 00011110b
db 00001100b
db 00001100b
db 00001100b
db 00001100b
db 01101100b
db 00111000b
db 00000000b
; 0x4B 'K'
db 01100110b
db 01101100b
db 01111000b
db 01110000b
db 01111000b
db 01101100b
db 01100110b
db 00000000b
; 0x4C 'L'
db 01100000b
db 01100000b
db 01100000b
db 01100000b
db 01100000b
db 01100000b
db 01111110b
db 00000000b
; 0x4D 'M'
db 01100011b
db 01110111b
db 01111111b
db 01101011b
db 01100011b
db 01100011b
db 01100011b
db 00000000b
; 0x4E 'N'
db 01100110b
db 01110110b
db 01111110b
db 01111110b
db 01101110b
db 01100110b
db 01100110b
db 00000000b
; 0x4F 'O'
db 00111100b
db 01100110b
db 01100110b
db 01100110b
db 01100110b
db 01100110b
db 00111100b
db 00000000b
; 0x50 'P'
db 01111100b
db 01100110b
db 01100110b
db 01111100b
db 01100000b
db 01100000b
db 01100000b
db 00000000b
; 0x51 'Q'
db 00111100b
db 01100110b
db 01100110b
db 01100110b
db 01101110b
db 00111100b
db 00001110b
db 00000000b
; 0x52 'R'
db 01111100b
db 01100110b
db 01100110b
db 01111100b
db 01111000b
db 01101100b
db 01100110b
db 00000000b
; 0x53 'S'
db 00111100b
db 01100110b
db 01100000b
db 00111100b
db 00000110b
db 01100110b
db 00111100b
db 00000000b
; 0x54 'T'
db 01111110b
db 00011000b
db 00011000b
db 00011000b
db 00011000b
db 00011000b
db 00011000b
db 00000000b
; 0x55 'U'
db 01100110b
db 01100110b
db 01100110b
db 01100110b
db 01100110b
db 01100110b
db 00111100b
db 00000000b
; 0x56 'V'
db 01100110b
db 01100110b
db 01100110b
db 01100110b
db 01100110b
db 00111100b
db 00011000b
db 00000000b
; 0x57 'W'
db 01100011b
db 01100011b
db 01100011b
db 01101011b
db 01111111b
db 01110111b
db 01100011b
db 00000000b
; 0x58 'X'
db 01100110b
db 01100110b
db 00111100b
db 00011000b
db 00111100b
db 01100110b
db 01100110b
db 00000000b
; 0x59 'Y'
db 01100110b
db 01100110b
db 01100110b
db 00111100b
db 00011000b
db 00011000b
db 00011000b
db 00000000b
; 0x5A 'Z'
db 01111110b
db 00000110b
db 00001100b
db 00011000b
db 00110000b
db 01100000b
db 01111110b
db 00000000b
; 0x5B '['
db 00111100b
db 00110000b
db 00110000b
db 00110000b
db 00110000b
db 00110000b
db 00111100b
db 00000000b
; 0x5C '\'
db 11000000b
db 01100000b
db 00110000b
db 00011000b
db 00001100b
db 00000110b
db 00000010b
db 00000000b
; 0x5D ']'
db 00111100b
db 00001100b
db 00001100b
db 00001100b
db 00001100b
db 00001100b
db 00111100b
db 00000000b
; 0x5E '^'
db 00010000b
db 00111000b
db 01101100b
db 11000110b
db 00000000b
db 00000000b
db 00000000b
db 00000000b
; 0x5F '_'
db 00000000b
db 00000000b
db 00000000b
db 00000000b
db 00000000b
db 00000000b
db 11111111b
db 00000000b
; 0x60 '`'
db 00110000b
db 00011000b
db 00001100b
db 00000000b
db 00000000b
db 00000000b
db 00000000b
db 00000000b
; 0x61 'a'
db 00000000b
db 00000000b
db 00111100b
db 00000110b
db 00111110b
db 01100110b
db 00111110b
db 00000000b
; 0x62 'b'
db 01100000b
db 01100000b
db 01111100b
db 01100110b
db 01100110b
db 01100110b
db 01111100b
db 00000000b
; 0x63 'c'
db 00000000b
db 00000000b
db 00111100b
db 01100110b
db 01100000b
db 01100110b
db 00111100b
db 00000000b
; 0x64 'd'
db 00000110b
db 00000110b
db 00111110b
db 01100110b
db 01100110b
db 01100110b
db 00111110b
db 00000000b
; 0x65 'e'
db 00000000b
db 00000000b
db 00111100b
db 01100110b
db 01111110b
db 01100000b
db 00111100b
db 00000000b
; 0x66 'f'
db 00011100b
db 00110000b
db 00110000b
db 01111100b
db 00110000b
db 00110000b
db 00110000b
db 00000000b
; 0x67 'g'
db 00000000b
db 00000000b
db 00111110b
db 01100110b
db 01100110b
db 00111110b
db 00000110b
db 00111100b
; 0x68 'h'
db 01100000b
db 01100000b
db 01111100b
db 01100110b
db 01100110b
db 01100110b
db 01100110b
db 00000000b
; 0x69 'i'
db 00011000b
db 00000000b
db 00111000b
db 00011000b
db 00011000b
db 00011000b
db 00111100b
db 00000000b
; 0x6A 'j'
db 00001100b
db 00000000b
db 00001100b
db 00001100b
db 00001100b
db 01101100b
db 01101100b
db 00111000b
; 0x6B 'k'
db 01100000b
db 01100000b
db 01100110b
db 01101100b
db 01111000b
db 01101100b
db 01100110b
db 00000000b
; 0x6C 'l'
db 00111000b
db 00011000b
db 00011000b
db 00011000b
db 00011000b
db 00011000b
db 00111100b
db 00000000b
; 0x6D 'm'
db 00000000b
db 00000000b
db 01101100b
db 01111110b
db 01111110b
db 01101011b
db 01100011b
db 00000000b
; 0x6E 'n'
db 00000000b
db 00000000b
db 01111100b
db 01100110b
db 01100110b
db 01100110b
db 01100110b
db 00000000b
; 0x6F 'o'
db 00000000b
db 00000000b
db 00111100b
db 01100110b
db 01100110b
db 01100110b
db 00111100b
db 00000000b
; 0x70 'p'
db 00000000b
db 00000000b
db 01111100b
db 01100110b
db 01100110b
db 01111100b
db 01100000b
db 01100000b
; 0x71 'q'
db 00000000b
db 00000000b
db 00111110b
db 01100110b
db 01100110b
db 00111110b
db 00000110b
db 00000110b
; 0x72 'r'
db 00000000b
db 00000000b
db 01101100b
db 01110110b
db 01100000b
db 01100000b
db 01100000b
db 00000000b
; 0x73 's'
db 00000000b
db 00000000b
db 00111110b
db 01100000b
db 00111100b
db 00000110b
db 01111100b
db 00000000b
; 0x74 't'
db 00110000b
db 00110000b
db 01111100b
db 00110000b
db 00110000b
db 00110000b
db 00011100b
db 00000000b
; 0x75 'u'
db 00000000b
db 00000000b
db 01100110b
db 01100110b
db 01100110b
db 01100110b
db 00111110b
db 00000000b
; 0x76 'v'
db 00000000b
db 00000000b
db 01100110b
db 01100110b
db 01100110b
db 00111100b
db 00011000b
db 00000000b
; 0x77 'w'
db 00000000b
db 00000000b
db 01100011b
db 01100011b
db 01101011b
db 01111111b
db 00110110b
db 00000000b
; 0x78 'x'
db 00000000b
db 00000000b
db 01100110b
db 00111100b
db 00011000b
db 00111100b
db 01100110b
db 00000000b
; 0x79 'y'
db 00000000b
db 00000000b
db 01100110b
db 01100110b
db 01100110b
db 00111110b
db 00000110b
db 00111100b
; 0x7A 'z'
db 00000000b
db 00000000b
db 01111110b
db 00001100b
db 00011000b
db 00110000b
db 01111110b
db 00000000b
; 0x7B '{'
db 00001110b
db 00011000b
db 00011000b
db 01110000b
db 00011000b
db 00011000b
db 00001110b
db 00000000b
; 0x7C '|'
db 00011000b
db 00011000b
db 00011000b
db 00000000b
db 00011000b
db 00011000b
db 00011000b
db 00000000b
; 0x7D '}'
db 01110000b
db 00011000b
db 00011000b
db 00001110b
db 00011000b
db 00011000b
db 01110000b
db 00000000b
; 0x7E '~'
db 01110110b
db 11011100b
db 00000000b
db 00000000b
db 00000000b
db 00000000b
db 00000000b
db 00000000b

142
src/common/char_light.asm Normal file
View file

@ -0,0 +1,142 @@
; ============================================================================
; Font 8x8 (printable ASCII 0x20..0x7E) -> 95 glyphs * 8 = 760 bytes
; - bit7 = gauche, bit0 = droite
; - 1 byte = 1 scanline (haut -> bas)
; ============================================================================
;---------------------------------------------------------
; Font8x8 - Police de caractères fine pour NASM
; Format : 8x8 pixels, 1 byte par ligne
; Range : ASCII 0x20 (' ') to 0x7E ('~')
;---------------------------------------------------------
section .data
font8x8_light:
; 0x20 ( )
db 00000000b, 00000000b, 00000000b, 00000000b, 00000000b, 00000000b, 00000000b, 00000000b
; 0x21 (!)
db 00011000b, 00011000b, 00011000b, 00011000b, 00000000b, 00000000b, 00011000b, 00000000b
; 0x22 (")
db 01101100b, 01101100b, 00000000b, 00000000b, 00000000b, 00000000b, 00000000b, 00000000b
; 0x23 (#)
db 01101100b, 01101100b, 11111111b, 01101100b, 11111111b, 01101100b, 01101100b, 00000000b
; 0x24 ($)
db 00011000b, 00111110b, 01100000b, 00111100b, 00000110b, 01111100b, 00011000b, 00000000b
; 0x25 (%)
db 11000110b, 11000110b, 00001100b, 00011000b, 00110000b, 01100011b, 01100011b, 00000000b
; 0x26 (&)
db 00111000b, 01101100b, 00111000b, 00110110b, 01100011b, 01100110b, 00111011b, 00000000b
; 0x27 (')
db 00011000b, 00011000b, 00110000b, 00000000b, 00000000b, 00000000b, 00000000b, 00000000b
; 0x28 (()
db 00001100b, 00011000b, 00110000b, 00110000b, 00110000b, 00011000b, 00001100b, 00000000b
; 0x29 ())
db 00110000b, 00011000b, 00001100b, 00001100b, 00001100b, 00011000b, 00110000b, 00000000b
; 0x2A (*)
db 00000000b, 01100110b, 00111100b, 11111111b, 00111100b, 01100110b, 00000000b, 00000000b
; 0x2B (+)
db 00000000b, 00011000b, 00011000b, 01111110b, 00011000b, 00011000b, 00000000b, 00000000b
; 0x2C (,)
db 00000000b, 00000000b, 00000000b, 00000000b, 00000000b, 00011000b, 00011000b, 00110000b
; 0x2D (-)
db 00000000b, 00000000b, 00000000b, 01111110b, 00000000b, 00000000b, 00000000b, 00000000b
; 0x2E (.)
db 00000000b, 00000000b, 00000000b, 00000000b, 00000000b, 00011000b, 00011000b, 00000000b
; 0x2F (/)
db 00000010b, 00000110b, 00001100b, 00011000b, 00110000b, 01100000b, 11000000b, 00000000b
; 0x30-0x39 (0-9)
db 00111100b, 01100110b, 01101110b, 01110110b, 01100110b, 00111100b, 00000000b, 00000000b
db 00011000b, 00111000b, 00011000b, 00011000b, 00011000b, 00111100b, 00000000b, 00000000b
db 00111100b, 01100110b, 00001100b, 00110000b, 01100000b, 11111111b, 00000000b, 00000000b
db 00111100b, 01100110b, 00001100b, 00111100b, 00001100b, 01100110b, 00111100b, 00000000b
db 00001100b, 00011100b, 00111100b, 01101100b, 11111111b, 00001100b, 00001100b, 00000000b
db 01111111b, 01100000b, 01111100b, 00000110b, 00000110b, 01111100b, 00000000b, 00000000b
db 00111100b, 01100000b, 01111100b, 01100110b, 01100110b, 00111100b, 00000000b, 00000000b
db 01111111b, 00000110b, 00001100b, 00011000b, 00110000b, 00110000b, 00000000b, 00000000b
db 00111100b, 01100110b, 00111100b, 01100110b, 01100110b, 00111100b, 00000000b, 00000000b
db 00111100b, 01100110b, 00111110b, 00000110b, 00000110b, 00111100b, 00000000b, 00000000b
; 0x3A (:)
db 00000000b, 00000000b, 00011000b, 00000000b, 00011000b, 00000000b, 00000000b, 00000000b
; 0x3B (;)
db 00000000b, 00000000b, 00011000b, 00000000b, 00011000b, 00011000b, 00110000b, 00000000b
; 0x3C (<)
db 00001100b, 00011000b, 00110000b, 01100000b, 00110000b, 00011000b, 00001100b, 00000000b
; 0x3D (=)
db 00000000b, 00000000b, 01111110b, 00000000b, 01111110b, 00000000b, 00000000b, 00000000b
; 0x3E (>)
db 00110000b, 00011000b, 00001100b, 00000110b, 00001100b, 00011000b, 00110000b, 00000000b
; 0x3F (?)
db 00111100b, 01100110b, 00000110b, 00001100b, 00011000b, 00000000b, 00011000b, 00000000b
; 0x40 (@)
db 00111100b, 01100110b, 01101110b, 01101010b, 01101100b, 01100000b, 00111100b, 00000000b
; 0x41-0x5A (A-Z)
db 00011000b, 00111100b, 01100110b, 01100110b, 01111110b, 01100110b, 01100110b, 00000000b ; A
db 01111100b, 01100110b, 01100110b, 01111100b, 01100110b, 01100110b, 01111100b, 00000000b ; B
db 00111100b, 01100110b, 01100000b, 01100000b, 01100000b, 01100110b, 00111100b, 00000000b ; C
db 01111000b, 01101100b, 01100110b, 01100110b, 01100110b, 01101100b, 01111000b, 00000000b ; D
db 01111110b, 01100000b, 01100000b, 01111100b, 01100000b, 01100000b, 01111110b, 00000000b ; E
db 01111110b, 01100000b, 01100000b, 01111100b, 01100000b, 01100000b, 01100000b, 00000000b ; F
db 00111100b, 01100110b, 01100000b, 01100111b, 01100110b, 01100110b, 00111111b, 00000000b ; G
db 01100110b, 01100110b, 01100110b, 01111110b, 01100110b, 01100110b, 01100110b, 00000000b ; H
db 00111100b, 00011000b, 00011000b, 00011000b, 00011000b, 00011000b, 00111100b, 00000000b ; I
db 00011110b, 00001100b, 00001100b, 00001100b, 00001100b, 01101100b, 00111000b, 00000000b ; J
db 01100110b, 01101100b, 01111000b, 01110000b, 01111000b, 01101100b, 01100110b, 00000000b ; K
db 01100000b, 01100000b, 01100000b, 01100000b, 01100000b, 01100000b, 01111110b, 00000000b ; L
db 11000011b, 11100111b, 11111111b, 11011011b, 11000011b, 11000011b, 11000011b, 00000000b ; M
db 11000110b, 11100110b, 11110110b, 11011110b, 11001110b, 11000110b, 11000110b, 00000000b ; N
db 00111100b, 01100110b, 01100110b, 01100110b, 01100110b, 01100110b, 00111100b, 00000000b ; O
db 01111100b, 01100110b, 01100110b, 01111100b, 01100000b, 01100000b, 01100000b, 00000000b ; P
db 00111100b, 01100110b, 01100110b, 01100110b, 01101010b, 01100110b, 00111111b, 00000001b ; Q
db 01111100b, 01100110b, 01100110b, 01111100b, 01101100b, 01100110b, 01100110b, 00000000b ; R
db 00111110b, 01100000b, 01100000b, 00111100b, 00000110b, 00000110b, 01111100b, 00000000b ; S
db 11111111b, 00011000b, 00011000b, 00011000b, 00011000b, 00011000b, 00011000b, 00000000b ; T
db 01100110b, 01100110b, 01100110b, 01100110b, 01100110b, 01100110b, 00111100b, 00000000b ; U
db 01100110b, 01100110b, 01100110b, 01100110b, 01100110b, 00111100b, 00011000b, 00000000b ; V
db 11000011b, 11000011b, 11000011b, 11011011b, 11111111b, 11100111b, 11000011b, 00000000b ; W
db 01100110b, 01100110b, 00111100b, 00011000b, 00111100b, 01100110b, 01100110b, 00000000b ; X
db 01100110b, 01100110b, 01100110b, 00111100b, 00011000b, 00011000b, 00011000b, 00000000b ; Y
db 11111111b, 00000110b, 00001100b, 00011000b, 00110000b, 01100000b, 11111111b, 00000000b ; Z
; 0x5B-0x60
db 00111100b, 00110000b, 00110000b, 00110000b, 00110000b, 00110000b, 00111100b, 00000000b ; [
db 11000000b, 01100000b, 00110000b, 00011000b, 00001100b, 00000110b, 00000011b, 00000000b
db 00111100b, 00001100b, 00001100b, 00001100b, 00001100b, 00001100b, 00111100b, 00000000b ; ]
db 00011000b, 00111100b, 01100110b, 00000000b, 00000000b, 00000000b, 00000000b, 00000000b ; ^
db 00000000b, 00000000b, 00000000b, 00000000b, 00000000b, 00000000b, 00000000b, 11111111b ; _
db 00110000b, 00011000b, 00001100b, 00000000b, 00000000b, 00000000b, 00000000b, 00000000b ; `
; 0x61-0x7A (a-z)
db 00000000b, 00000000b, 00111100b, 00000110b, 00111110b, 01100110b, 00111110b, 00000000b ; a
db 01100000b, 01100000b, 01111100b, 01100110b, 01100110b, 01100110b, 01111100b, 00000000b ; b
db 00000000b, 00000000b, 00111100b, 01100000b, 01100000b, 01100000b, 00111100b, 00000000b ; c
db 00000110b, 00000110b, 00111110b, 01100110b, 01100110b, 01100110b, 00111110b, 00000000b ; d
db 00000000b, 00000000b, 00111100b, 01100110b, 01111110b, 01100000b, 00111100b, 00000000b ; e
db 00011100b, 00110000b, 01111100b, 00110000b, 00110000b, 00110000b, 00110000b, 00000000b ; f
db 00000000b, 00111110b, 01100110b, 01100110b, 00111110b, 00000110b, 00111100b, 00000000b ; g
db 01100000b, 01100000b, 01101100b, 01110110b, 01100110b, 01100110b, 01100110b, 00000000b ; h
db 00011000b, 00000000b, 00111000b, 00011000b, 00011000b, 00011000b, 00111100b, 00000000b ; i
db 00001100b, 00000000b, 00011100b, 00001100b, 00001100b, 00001100b, 01101100b, 00111000b ; j
db 01100000b, 01100000b, 01100110b, 01101100b, 01111000b, 01101100b, 01100110b, 00000000b ; k
db 00111000b, 00011000b, 00011000b, 00011000b, 00011000b, 00011000b, 00111100b, 00000000b ; l
db 00000000b, 00000000b, 11010110b, 11111111b, 11011011b, 11011011b, 11011011b, 00000000b ; m
db 00000000b, 00000000b, 01111100b, 01100110b, 01100110b, 01100110b, 01100110b, 00000000b ; n
db 00000000b, 00000000b, 00111100b, 01100110b, 01100110b, 01100110b, 00111100b, 00000000b ; o
db 00000000b, 00000000b, 01111100b, 01100110b, 01100110b, 01111100b, 01100000b, 01100000b ; p
db 00000000b, 00000000b, 00111110b, 01100110b, 01100110b, 00111110b, 00000110b, 00000110b ; q
db 00000000b, 00000000b, 01101100b, 01110110b, 01100000b, 01100000b, 01100000b, 00000000b ; r
db 00000000b, 00000000b, 00111110b, 01100000b, 00111100b, 00000110b, 01111100b, 00000000b ; s
db 00010000b, 00110000b, 01111100b, 00110000b, 00110000b, 00110000b, 00011100b, 00000000b ; t
db 00000000b, 00000000b, 01100110b, 01100110b, 01100110b, 01101100b, 00110110b, 00000000b ; u
db 00000000b, 00000000b, 01100110b, 01100110b, 01100110b, 00111100b, 00011000b, 00000000b ; v
db 00000000b, 00000000b, 11000011b, 11000011b, 11011011b, 11111111b, 01100110b, 00000000b ; w
db 00000000b, 00000000b, 01100110b, 00111100b, 00011000b, 00111100b, 01100110b, 00000000b ; x
db 00000000b, 00000000b, 01100110b, 01100110b, 00111110b, 00000110b, 00111100b, 00000000b ; y
db 00000000b, 00000000b, 01111110b, 00001100b, 00011000b, 00110000b, 01111110b, 00000000b ; z
; 0x7B-0x7E
db 00001100b, 00011000b, 00011000b, 00110000b, 00011000b, 00011000b, 00001100b, 00000000b ; {
db 00011000b, 00011000b, 00011000b, 00000000b, 00011000b, 00011000b, 00011000b, 00000000b ; |
db 00110000b, 00011000b, 00011000b, 00001100b, 00011000b, 00011000b, 00110000b, 00000000b ; }
db 01101110b, 11011011b, 00000000b, 00000000b, 00000000b, 00000000b, 00000000b, 00000000b ; ~

View file

@ -1,862 +1,26 @@
; ============================================================================
; Font 8x8 (printable ASCII 0x20..0x7E) -> 95 glyphs * 8 = 760 bytes
; - bit7 = gauche, bit0 = droite
; - 1 byte = 1 scanline (haut -> bas)
; ============================================================================
font8x8:
; 0x20 ' '
db 00000000b
db 00000000b
db 00000000b
db 00000000b
db 00000000b
db 00000000b
db 00000000b
db 00000000b
; 0x21 '!'
db 00011000b
db 00011000b
db 00011000b
db 00011000b
db 00011000b
db 00000000b
db 00011000b
db 00000000b
; 0x22 '"'
db 01100110b
db 01100110b
db 00100100b
db 00000000b
db 00000000b
db 00000000b
db 00000000b
db 00000000b
; 0x23 '#'
db 00100100b
db 00100100b
db 01111110b
db 00100100b
db 01111110b
db 00100100b
db 00100100b
db 00000000b
; 0x24 '$'
db 00011000b
db 00111110b
db 01100000b
db 00111100b
db 00000110b
db 01111100b
db 00011000b
db 00000000b
; 0x25 '%'
db 01100010b
db 01100110b
db 00001100b
db 00011000b
db 00110000b
db 01100110b
db 01000110b
db 00000000b
; 0x26 '&'
db 00111000b
db 01101100b
db 00111000b
db 01110110b
db 11011100b
db 11001100b
db 01110110b
db 00000000b
; 0x27 '''
db 00011000b
db 00011000b
db 00110000b
db 00000000b
db 00000000b
db 00000000b
db 00000000b
db 00000000b
; 0x28 '('
db 00001100b
db 00011000b
db 00110000b
db 00110000b
db 00110000b
db 00011000b
db 00001100b
db 00000000b
; 0x29 ')'
db 00110000b
db 00011000b
db 00001100b
db 00001100b
db 00001100b
db 00011000b
db 00110000b
db 00000000b
; 0x2A '*'
db 00000000b
db 01100110b
db 00111100b
db 11111111b
db 00111100b
db 01100110b
db 00000000b
db 00000000b
; 0x2B '+'
db 00000000b
db 00011000b
db 00011000b
db 01111110b
db 00011000b
db 00011000b
db 00000000b
db 00000000b
; 0x2C ','
db 00000000b
db 00000000b
db 00000000b
db 00000000b
db 00000000b
db 00011000b
db 00011000b
db 00110000b
; 0x2D '-'
db 00000000b
db 00000000b
db 00000000b
db 01111110b
db 00000000b
db 00000000b
db 00000000b
db 00000000b
; 0x2E '.'
db 00000000b
db 00000000b
db 00000000b
db 00000000b
db 00000000b
db 00011000b
db 00011000b
db 00000000b
; 0x2F '/'
db 00000110b
db 00001100b
db 00011000b
db 00110000b
db 01100000b
db 11000000b
db 10000000b
db 00000000b
; 0x30 '0'
db 00111100b
db 01100110b
db 01101110b
db 01110110b
db 01100110b
db 01100110b
db 00111100b
db 00000000b
; 0x31 '1'
db 00011000b
db 00111000b
db 00011000b
db 00011000b
db 00011000b
db 00011000b
db 00111100b
db 00000000b
; 0x32 '2'
db 00111100b
db 01100110b
db 00000110b
db 00001100b
db 00011000b
db 00110000b
db 01111110b
db 00000000b
; 0x33 '3'
db 00111100b
db 01100110b
db 00000110b
db 00011100b
db 00000110b
db 01100110b
db 00111100b
db 00000000b
; 0x34 '4'
db 00001100b
db 00011100b
db 00111100b
db 01101100b
db 01111110b
db 00001100b
db 00001100b
db 00000000b
; 0x35 '5'
db 01111110b
db 01100000b
db 01111100b
db 00000110b
db 00000110b
db 01100110b
db 00111100b
db 00000000b
; 0x36 '6'
db 00011100b
db 00110000b
db 01100000b
db 01111100b
db 01100110b
db 01100110b
db 00111100b
db 00000000b
; 0x37 '7'
db 01111110b
db 01100110b
db 00000110b
db 00001100b
db 00011000b
db 00011000b
db 00011000b
db 00000000b
; 0x38 '8'
db 00111100b
db 01100110b
db 01100110b
db 00111100b
db 01100110b
db 01100110b
db 00111100b
db 00000000b
; 0x39 '9'
db 00111100b
db 01100110b
db 01100110b
db 00111110b
db 00000110b
db 00001100b
db 00111000b
db 00000000b
; 0x3A ':'
db 00000000b
db 00011000b
db 00011000b
db 00000000b
db 00000000b
db 00011000b
db 00011000b
db 00000000b
; 0x3B ';'
db 00000000b
db 00011000b
db 00011000b
db 00000000b
db 00000000b
db 00011000b
db 00011000b
db 00110000b
; 0x3C '<'
db 00001110b
db 00011100b
db 00111000b
db 01110000b
db 00111000b
db 00011100b
db 00001110b
db 00000000b
; 0x3D '='
db 00000000b
db 00000000b
db 01111110b
db 00000000b
db 01111110b
db 00000000b
db 00000000b
db 00000000b
; 0x3E '>'
db 01110000b
db 00111000b
db 00011100b
db 00001110b
db 00011100b
db 00111000b
db 01110000b
db 00000000b
; 0x3F '?'
db 00111100b
db 01100110b
db 00000110b
db 00001100b
db 00011000b
db 00000000b
db 00011000b
db 00000000b
; 0x40 '@'
db 00111100b
db 01100110b
db 01101110b
db 01101010b
db 01101110b
db 01100000b
db 00111100b
db 00000000b
; 0x41 'A'
db 00011000b
db 00111100b
db 01100110b
db 01100110b
db 01111110b
db 01100110b
db 01100110b
db 00000000b
; 0x42 'B'
db 01111100b
db 01100110b
db 01100110b
db 01111100b
db 01100110b
db 01100110b
db 01111100b
db 00000000b
; 0x43 'C'
db 00111100b
db 01100110b
db 01100000b
db 01100000b
db 01100000b
db 01100110b
db 00111100b
db 00000000b
; 0x44 'D'
db 01111000b
db 01101100b
db 01100110b
db 01100110b
db 01100110b
db 01101100b
db 01111000b
db 00000000b
; 0x45 'E'
db 01111110b
db 01100000b
db 01100000b
db 01111100b
db 01100000b
db 01100000b
db 01111110b
db 00000000b
; 0x46 'F'
db 01111110b
db 01100000b
db 01100000b
db 01111100b
db 01100000b
db 01100000b
db 01100000b
db 00000000b
; 0x47 'G'
db 00111100b
db 01100110b
db 01100000b
db 01101110b
db 01100110b
db 01100110b
db 00111100b
db 00000000b
; 0x48 'H'
db 01100110b
db 01100110b
db 01100110b
db 01111110b
db 01100110b
db 01100110b
db 01100110b
db 00000000b
; 0x49 'I'
db 00111100b
db 00011000b
db 00011000b
db 00011000b
db 00011000b
db 00011000b
db 00111100b
db 00000000b
; 0x4A 'J'
db 00011110b
db 00001100b
db 00001100b
db 00001100b
db 00001100b
db 01101100b
db 00111000b
db 00000000b
; 0x4B 'K'
db 01100110b
db 01101100b
db 01111000b
db 01110000b
db 01111000b
db 01101100b
db 01100110b
db 00000000b
; 0x4C 'L'
db 01100000b
db 01100000b
db 01100000b
db 01100000b
db 01100000b
db 01100000b
db 01111110b
db 00000000b
; 0x4D 'M'
db 01100011b
db 01110111b
db 01111111b
db 01101011b
db 01100011b
db 01100011b
db 01100011b
db 00000000b
; 0x4E 'N'
db 01100110b
db 01110110b
db 01111110b
db 01111110b
db 01101110b
db 01100110b
db 01100110b
db 00000000b
; 0x4F 'O'
db 00111100b
db 01100110b
db 01100110b
db 01100110b
db 01100110b
db 01100110b
db 00111100b
db 00000000b
; 0x50 'P'
db 01111100b
db 01100110b
db 01100110b
db 01111100b
db 01100000b
db 01100000b
db 01100000b
db 00000000b
; 0x51 'Q'
db 00111100b
db 01100110b
db 01100110b
db 01100110b
db 01101110b
db 00111100b
db 00001110b
db 00000000b
; 0x52 'R'
db 01111100b
db 01100110b
db 01100110b
db 01111100b
db 01111000b
db 01101100b
db 01100110b
db 00000000b
; 0x53 'S'
db 00111100b
db 01100110b
db 01100000b
db 00111100b
db 00000110b
db 01100110b
db 00111100b
db 00000000b
; 0x54 'T'
db 01111110b
db 00011000b
db 00011000b
db 00011000b
db 00011000b
db 00011000b
db 00011000b
db 00000000b
; 0x55 'U'
db 01100110b
db 01100110b
db 01100110b
db 01100110b
db 01100110b
db 01100110b
db 00111100b
db 00000000b
; 0x56 'V'
db 01100110b
db 01100110b
db 01100110b
db 01100110b
db 01100110b
db 00111100b
db 00011000b
db 00000000b
; 0x57 'W'
db 01100011b
db 01100011b
db 01100011b
db 01101011b
db 01111111b
db 01110111b
db 01100011b
db 00000000b
; 0x58 'X'
db 01100110b
db 01100110b
db 00111100b
db 00011000b
db 00111100b
db 01100110b
db 01100110b
db 00000000b
; 0x59 'Y'
db 01100110b
db 01100110b
db 01100110b
db 00111100b
db 00011000b
db 00011000b
db 00011000b
db 00000000b
; 0x5A 'Z'
db 01111110b
db 00000110b
db 00001100b
db 00011000b
db 00110000b
db 01100000b
db 01111110b
db 00000000b
; 0x5B '['
db 00111100b
db 00110000b
db 00110000b
db 00110000b
db 00110000b
db 00110000b
db 00111100b
db 00000000b
; 0x5C '\'
db 11000000b
db 01100000b
db 00110000b
db 00011000b
db 00001100b
db 00000110b
db 00000010b
db 00000000b
; 0x5D ']'
db 00111100b
db 00001100b
db 00001100b
db 00001100b
db 00001100b
db 00001100b
db 00111100b
db 00000000b
; 0x5E '^'
db 00010000b
db 00111000b
db 01101100b
db 11000110b
db 00000000b
db 00000000b
db 00000000b
db 00000000b
; 0x5F '_'
db 00000000b
db 00000000b
db 00000000b
db 00000000b
db 00000000b
db 00000000b
db 11111111b
db 00000000b
; 0x60 '`'
db 00110000b
db 00011000b
db 00001100b
db 00000000b
db 00000000b
db 00000000b
db 00000000b
db 00000000b
; 0x61 'a'
db 00000000b
db 00000000b
db 00111100b
db 00000110b
db 00111110b
db 01100110b
db 00111110b
db 00000000b
; 0x62 'b'
db 01100000b
db 01100000b
db 01111100b
db 01100110b
db 01100110b
db 01100110b
db 01111100b
db 00000000b
; 0x63 'c'
db 00000000b
db 00000000b
db 00111100b
db 01100110b
db 01100000b
db 01100110b
db 00111100b
db 00000000b
; 0x64 'd'
db 00000110b
db 00000110b
db 00111110b
db 01100110b
db 01100110b
db 01100110b
db 00111110b
db 00000000b
; 0x65 'e'
db 00000000b
db 00000000b
db 00111100b
db 01100110b
db 01111110b
db 01100000b
db 00111100b
db 00000000b
; 0x66 'f'
db 00011100b
db 00110000b
db 00110000b
db 01111100b
db 00110000b
db 00110000b
db 00110000b
db 00000000b
; 0x67 'g'
db 00000000b
db 00000000b
db 00111110b
db 01100110b
db 01100110b
db 00111110b
db 00000110b
db 00111100b
; 0x68 'h'
db 01100000b
db 01100000b
db 01111100b
db 01100110b
db 01100110b
db 01100110b
db 01100110b
db 00000000b
; 0x69 'i'
db 00011000b
db 00000000b
db 00111000b
db 00011000b
db 00011000b
db 00011000b
db 00111100b
db 00000000b
; 0x6A 'j'
db 00001100b
db 00000000b
db 00001100b
db 00001100b
db 00001100b
db 01101100b
db 01101100b
db 00111000b
; 0x6B 'k'
db 01100000b
db 01100000b
db 01100110b
db 01101100b
db 01111000b
db 01101100b
db 01100110b
db 00000000b
; 0x6C 'l'
db 00111000b
db 00011000b
db 00011000b
db 00011000b
db 00011000b
db 00011000b
db 00111100b
db 00000000b
; 0x6D 'm'
db 00000000b
db 00000000b
db 01101100b
db 01111110b
db 01111110b
db 01101011b
db 01100011b
db 00000000b
; 0x6E 'n'
db 00000000b
db 00000000b
db 01111100b
db 01100110b
db 01100110b
db 01100110b
db 01100110b
db 00000000b
; 0x6F 'o'
db 00000000b
db 00000000b
db 00111100b
db 01100110b
db 01100110b
db 01100110b
db 00111100b
db 00000000b
; 0x70 'p'
db 00000000b
db 00000000b
db 01111100b
db 01100110b
db 01100110b
db 01111100b
db 01100000b
db 01100000b
; 0x71 'q'
db 00000000b
db 00000000b
db 00111110b
db 01100110b
db 01100110b
db 00111110b
db 00000110b
db 00000110b
; 0x72 'r'
db 00000000b
db 00000000b
db 01101100b
db 01110110b
db 01100000b
db 01100000b
db 01100000b
db 00000000b
; 0x73 's'
db 00000000b
db 00000000b
db 00111110b
db 01100000b
db 00111100b
db 00000110b
db 01111100b
db 00000000b
; 0x74 't'
db 00110000b
db 00110000b
db 01111100b
db 00110000b
db 00110000b
db 00110000b
db 00011100b
db 00000000b
; 0x75 'u'
db 00000000b
db 00000000b
db 01100110b
db 01100110b
db 01100110b
db 01100110b
db 00111110b
db 00000000b
; 0x76 'v'
db 00000000b
db 00000000b
db 01100110b
db 01100110b
db 01100110b
db 00111100b
db 00011000b
db 00000000b
; 0x77 'w'
db 00000000b
db 00000000b
db 01100011b
db 01100011b
db 01101011b
db 01111111b
db 00110110b
db 00000000b
; 0x78 'x'
db 00000000b
db 00000000b
db 01100110b
db 00111100b
db 00011000b
db 00111100b
db 01100110b
db 00000000b
; 0x79 'y'
db 00000000b
db 00000000b
db 01100110b
db 01100110b
db 01100110b
db 00111110b
db 00000110b
db 00111100b
; 0x7A 'z'
db 00000000b
db 00000000b
db 01111110b
db 00001100b
db 00011000b
db 00110000b
db 01111110b
db 00000000b
; 0x7B '{'
db 00001110b
db 00011000b
db 00011000b
db 01110000b
db 00011000b
db 00011000b
db 00001110b
db 00000000b
; 0x7C '|'
db 00011000b
db 00011000b
db 00011000b
db 00000000b
db 00011000b
db 00011000b
db 00011000b
db 00000000b
; 0x7D '}'
db 01110000b
db 00011000b
db 00011000b
db 00001110b
db 00011000b
db 00011000b
db 01110000b
db 00000000b
; 0x7E '~'
db 01110110b
db 11011100b
db 00000000b
db 00000000b
db 00000000b
db 00000000b
db 00000000b
db 00000000b
; =============================================================================
; Project : Custom BIOS / ROM
; File : chartable.asm
; Author : frater
;
; License : GNU General Public License v3.0 or later (GPL-3.0+)
;
; This program is free software: you can redistribute it and/or modify
; it under the terms of the GNU General Public License as published by
; the Free Software Foundation, either version 3 of the License, or
; (at your option) any later version.
;
; This program is distributed in the hope that it will be useful,
; but WITHOUT ANY WARRANTY; without even the implied warranty of
; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
; GNU General Public License for more details.
;
; You should have received a copy of the GNU General Public License
; along with this program. If not, see <https://www.gnu.org/licenses/>.
;
; =============================================================================
font8x8:
; on importe uniquement les caractères entre ' ' (0x20) et '~' (0x7E)
incbin "./assets/FM-T-437.F08", 0x20*8, 0x7e*8
;incbin "./assets/CGA-TH.F08", 0x20*8, 0x7e*8

View file

@ -37,10 +37,10 @@
; E : text transparent
; F : background transparent
;
%define GFX_TXT_WHITE_TRANSPARENT 0x0F
%define GFX_TXT_BLACK_TRANSPARENT 0x00
%define GFX_TXT_WHITE 0xF0
%define GFX_TXT_BLACK 0x0F
%define GFX_TXT_WHITE_TRANSPARENT 0x800F
%define GFX_TXT_BLACK_TRANSPARENT 0x80F0
%define GFX_TXT_WHITE 0x00F0
%define GFX_TXT_BLACK 0x000F
%define GFX_TXT_TRANSPARENT_BKG 0x8000
%define GFX_TXT_TRANSPARENT_TEXT 0x4000
@ -160,14 +160,14 @@ vga_init:
get_glyph_offset:
cmp al, 0x20
jb .qmark ; al < 20h (' '
cmp al, 0x7E
cmp al, 0x7e
ja .qmark ; al > 7Eh ('~')
sub al, 0x20
sub al, ' '
jmp .ok
.qmark:
mov al, '?'
sub al, 0x20
sub al, ' '
.ok:
xor ah, ah
@ -383,6 +383,7 @@ vga_putc:
mov bl, al ; BL = Couleur texte (low nibble)
and bl, 0x0F
mov bh, al ; BH = Couleur fond (high nibble)
and bh, 0xf0
shr bh, 4
mov .cpt, 8
@ -394,11 +395,9 @@ vga_putc:
mov .glyph_row, ax ; Image 16 bits du glyphe non décalé
; --- PASSE 1 : DESSIN DU FOND (SI OPAQUE) ---
mov ax, [fs:PTR_GFX + gfx.cur_mode]
test ax, GFX_TXT_TRANSPARENT_BKG
jz .skip_bkg
test word [fs:PTR_GFX + gfx.cur_mode], GFX_TXT_TRANSPARENT_BKG
jnz .skip_bkg
mov ax, .glyph_row
not al ; Inverser le glyphe pour le fond
ror ax, cl ; Aligner le fond sur les octets VRAM
@ -422,8 +421,7 @@ vga_putc:
.skip_bkg:
; --- PASSE 2 : DESSIN DU TEXTE ---
mov ax, [fs:PTR_GFX + gfx.cur_mode]
test ax, GFX_TXT_TRANSPARENT_TEXT
test word [fs:PTR_GFX + gfx.cur_mode], GFX_TXT_TRANSPARENT_TEXT
jnz .next_line
mov ax, .glyph_row

View file

@ -85,33 +85,39 @@ gui_api_table:
dw gui_get_widget_ptr
dw gui_api_slider_attr
; --- Structure d'un OBJET (Bouton, etc) ---
struc widget
.header resw 1 ; HEADER
.state resb 1 ; État (0=libre, >0=utilisé)
.type resb 1 ; Type (0=Button, 1=Slider...)
.oldstate resb 1 ; widget a-t-il été modifié ?
.user_id resb 1 ; ID unique utilisateur
.x resw 1 ; Position X
.x resw 1 ; Position Xevent_drag
.y resw 1 ; Position Y
.x2 resw 1 ; Position X2 calculée
.y2 resw 1 ; Position Y2 calculée
.w resw 1 ; Largeur
.h resw 1 ; Hauteur
; texte du widget
.text_ofs resw 1 ; Offset du texte
.text_seg resw 1 ; Segment du texte
.event_click resw 1 ; adresse de la fonction "on click"
.event_drag resw 1 ; adresse de la fonction "on drag"
; global attributes
.attr_mode resb 1 ; 0=None, 1=Horiz, 2=Vert
.attr_free resb 1 ; free
.attr_min resw 1 ; Valeur/Position Min
.attr_max resw 1 ; Valeur/Position Max
.attr_val resw 1 ; Valeur/Position Actuelle
; internal values
.x2 resw 1 ; Position X2 calculée
.y2 resw 1 ; Position Y2 calculée
; slider only
.thumb_pos resw 1 ; Valeur/Position Actuelle en pixel pour le dessin.
.thumb_pct resb 1 ; Taille du curseur en % (1-100)
.attr_anchor resw 1 ; interne Offset pour le drag
; event handler
.event_click resw 1 ; adresse de la fonction "on click"
alignb 2 ; Alignement mémoire pour performance
endstruc
; actuellement 34 octets
@ -226,12 +232,12 @@ gui_api_set_text:
;
; parameters : type, x, y, w, h, text_ofs, text_seg
;
; -----------------------------------------------------------------------------
%define .type word [bp+4]
%define .x word [bp+6]
%define .y word [bp+8]
%define .w word [bp+10]
%define .h word [bp+12]
; -----------------------------------------------------------------------------
gui_api_create:
push bp
mov bp, sp
@ -239,8 +245,8 @@ gui_api_create:
mov ax, SEG_GUI
mov gs, ax
call gui_alloc_widget ; Returns GS:SI
mov ax, -1
call gui_alloc_widget ; Returns GS:SI
jc .done
; ID = SI / widget_size
@ -249,6 +255,9 @@ gui_api_create:
mov cx, widget_size
div cx
mov bx, 0xDEAD
mov word [gs:si + widget.header], bx
mov bx, .type
mov byte [gs:si + widget.type], bl
mov bx, .x
@ -262,15 +271,16 @@ gui_api_create:
mov byte [gs:si + widget.state], GUI_STATE_NORMAL
mov byte [gs:si + widget.oldstate], 0
.done:
.done:
pop gs
leave
%undef .type
%undef .x
%undef .y
%undef .w
%undef .h
ret
%undef .type
%undef .x
%undef .y
%undef .w
%undef .h
; -----------------------------------------------------------------------------
; gui_api_get_state
@ -430,7 +440,7 @@ gui_get_widget_ptr:
; Out: GS:SI = Ptr, CF=1 if error
; -----------------------------------------------------------------------------
gui_get_widget_ptr_internal:
push cx
push cx
push dx
cmp ax, GUI_MAX_WIDGETS
@ -511,6 +521,7 @@ gui_alloc_widget:
; Pas trouvé (Plein)
stc ; set Carry Flag : erreur
mov ax, -1
jmp .done
.found:
@ -521,7 +532,6 @@ gui_alloc_widget:
; Reset des champs critiques pour éviter les déchets
mov word [gs:si + widget.event_click], 0
mov word [gs:si + widget.event_drag], 0
mov byte [gs:si + widget.thumb_pct], 10 ; 10% par défaut
mov word [gs:si + widget.thumb_pos], 0
mov word [gs:si + widget.attr_val], 0

View file

@ -487,7 +487,7 @@ draw_checkbox:
inc bx
GFX GOTOXY, cx, bx
GFX TXT_MODE, GFX_TXT_BLACK & GFX_TXT_TRANSPARENT_BKG
GFX TXT_MODE, GFX_TXT_BLACK_TRANSPARENT
mov dx, [gs:si + widget.text_seg]
mov ax, [gs:si + widget.text_ofs]

View file

@ -486,14 +486,7 @@ gui_logic_slider:
je .no_change
mov [gs:si + widget.thumb_pos], ax
; Appel du callback on_drag
cmp word [gs:si + widget.event_drag], 0
je .force_redraw
pusha
call word [gs:si + widget.event_drag]
popa
.force_redraw:
.force_redraw:
mov byte [gs:si + widget.oldstate], 255 ; Force le redessin
.no_change: