starting VGA driver

This commit is contained in:
Frater 2026-02-15 18:31:40 +01:00
commit 0775fe6193
13 changed files with 1528 additions and 682 deletions

View file

@ -24,11 +24,9 @@
; https://wiki.nox-rhea.org/back2root/ibm-pc-ms-dos/hardware/informations/bios_data_area
;
%define BDA_SEGMENT 0x0040 ; segment BDA
; custom vars
%define BDA_INFO_MEM_SIZE 0x0014 ; Memory size in Kbytes
%define BDA_INFO_MEM_SEG BDA_INFO_MEM_SIZE+2 ; highest Memory Segment
%define BDA_SEGMENT 0x0040 ; segment BDA (historically)
%define BDA_CUSTOM_SEG 0x0050 ; custom data (mouse, gfx cursor, etc..)
%define BDA_GUI_WIDGET 0x0070 ; Segment de données UI (Safe: après Stack, avant Heap)
; video related information (compatible with VGA bios)
%define BDA_VIDEO_CURR_MODE 0x0049
@ -38,7 +36,8 @@
;
; information relative à la souris
;
%define BDA_DATA_SEG 0x0050
%define BDA_BitPP 4
%define BKG_DWORDS_PER_LINE 1 ; 1 dword stocké par ligne
%define BKG_LINES 16
@ -63,7 +62,8 @@ struc mouse
.cur_ofs resw 1 ;
.bkg_saved resb 1 ; background saved
alignb 4 ; alignement 4 bytes
.bkg_buffer resd 16 ; buffer for saved background
; buffer for saved background
.bkg_buffer resd 16*BDA_BitPP
endstruc
struc gfx
@ -86,7 +86,7 @@ bda_setup:
pusha
push ds
mov ax, BDA_DATA_SEG
mov ax, BDA_CUSTOM_SEG
mov es, ax
mov ax, 0x5F

View file

@ -42,8 +42,7 @@ dump_ram_words:
call print_word_hex ; Affiche AX sous forme "XXXX"
; (Optionnel) Ajouter un espace entre chaque mot pour la lisibilité
mov al, ' '
call cga_putc
GFX PUTCH, ' '
pop si ; Restaure SI
pop cx ; Restaure CX
@ -77,9 +76,7 @@ print_word_hex:
xor bx, bx
mov bl, al
push bx
call cga_putc
add sp, 2
GFX PUTCH, bx
loop .next_digit ; Répète 4 fois
popa

View file

@ -20,16 +20,12 @@
;
; =============================================================================
%define DISABLE_DEBUGER
%ifndef DISABLE_DEBUGER
%ifdef DEBUGER_ENABLED
%macro DEBUG 1
GFX GOTOXY, 0, 0
mov ax, %1
call print_word_hex
%endmacro
;
; Debugger for 86Box
;
@ -111,6 +107,26 @@
%define IRQ_ENABLED 0x00
%define IRQ_DISABLED 0x01
; ---------------------------------------------------------------------------
; CGA/MDA Controler
; ---------------------------------------------------------------------------
;
; MDA 6845
%define CRTC_6845_MONO 0x03b4
%define CRTC_6845_MONO_REGISTER 0x03b5
;
; CGA 6845
%define CRTC_6845_COLOR 0x03d4
%define CRTC_6845_COLOR_REGISTER 0x03d4
%define CRTC_COLOR_REGISTER 0x03d5
%define CRTC_COLOR_CTRL 0x03d8
%define CRTC_COLOR_DATA 0x03d9
%define EGAVGA_CONTROLLER 0x03ce
%define VGA_SEQUENCER 0x03c4
; ---------------------------------------------------------------------------
; Détection les ROM supplementaires
; Teste la RAM de 0xC000 jusquà 0xE000, par pas de 2KB.

View file

@ -13,9 +13,16 @@
align 8
pattern_8x8:
dq 0x0000000000000000 ; pattern_black (Tout à 0 = Noir)
dq 0x2200880022008800 ; pattern_gray_dark (Majorité de 0)
dq 0x2288228822882288 ; pattern_gray_mid
dq 0xAA55AA55AA55AA55 ; pattern_gray_light (50/50)
dq 0x77DD77DD77DD77DD ; pattern_white_light (Majorité de 1 = Clair)
dq 0xFFFFFFFFFFFFFFFF ; pattern_white (Tout à 1 = Blanc)
dq 0x0000000000000000 ; 0 : pattern_black (Tout à 0 = Noir)
dq 0x2200880022008800 ; 1 : pattern_gray_dark (Majorité de 0)
dq 0x2288228822882288 ; 2 : pattern_gray_mid
dq 0xAA55AA55AA55AA55 ; 3 : pattern_gray_light (50/50)
dq 0x77DD77DD77DD77DD ; 4 : pattern_white_light (Majorité de 1 = Clair)
dq 0xFFFFFFFFFFFFFFFF ; 5 : pattern_white (Tout à 1 = Blanc)
%macro PATTERN_PTR 1
mov ax, cs
mov ds, ax
lea esi, [pattern_8x8 + (%1 * 8)]
%endmacro