diff --git a/.gitignore b/.gitignore index 8970282..7a5bd8d 100644 --- a/.gitignore +++ b/.gitignore @@ -8,5 +8,4 @@ build/ gfx/ roms/ tools/ -doc/generated -assets/ +doc/generated/ \ No newline at end of file diff --git a/doc/assets/Screenshot-VGA.png b/doc/assets/Screenshot-VGA.png new file mode 100644 index 0000000..a34746e Binary files /dev/null and b/doc/assets/Screenshot-VGA.png differ diff --git a/readme.md b/readme.md index edc5c8a..ce02a66 100644 --- a/readme.md +++ b/readme.md @@ -12,6 +12,12 @@ Rather than booting an operating system from disk, the PC starts **directly from ![Screenshot 86Box](/doc/assets/Capture-86Box.png) +Screenshot from a CGA Hi res test on 86Box. + +![Screenshot QEMU VGA](/doc/assets/Screenshot-VGA.png) + +Screenshot from a VGA Hi res test on QEMU with "italic Font". + You may want to get a look at the [Older screenshots](/doc/assets/screenshot.md) The project is intentionally educational, experimental, and minimalist. @@ -64,6 +70,12 @@ To build and run this project, the following tools and components are required: - **QEMU VGA BIOS** The standard QEMU VGA BIOS (`vgabios.bin`) is required to initialize the VGA hardware, allowing the custom BIOS to rely on a known and stable VGA implementation while focusing on its own core logic. +- **VGA Text Font** + You may want to use "custom" font; you can pick any "F08" (8 bytes per character) font from this repo: + + https://github.com/viler-int10h/vga-text-mode-fonts + + --- ### API @@ -98,6 +110,12 @@ Au lieu de charger un système d’exploitation depuis un disque, le PC **démar ![Screenshot 86Box](/doc/assets/Capture-86Box.png) +Screenshot d'un EcranCGA Hi res test sur 86Box. + +![Screenshot QEMU VGA](/doc/assets/Screenshot-VGA.png) + +screenshot d'un ecran VGA Hi res test avec police Italique sur QEMU. + You may want to get a look at the [Older screenshots](/doc/assets/screenshot.md) --- @@ -148,6 +166,12 @@ Utilisé comme émulateur PC principal pour tester et déboguer le BIOS personna - **BIOS VGA de QEMU** Le BIOS VGA standard de QEMU (vgabios.bin) est utilisé pour initialiser le matériel vidéo, ce qui permet au projet de se concentrer sur le développement du BIOS sans réimplémenter la logique VGA complète. +- **VGA Text Font** + Vous pouvez utiliser des polices de caractères personnalisées. Vous pouvez choisir n'importe quelle police 'F08' (8 octets par caractère) de ce référentiel: + + https://github.com/viler-int10h/vga-text-mode-fonts + + ---- ### API diff --git a/src/assets/6X8.F08 b/src/assets/6X8.F08 new file mode 100644 index 0000000..71a61ad Binary files /dev/null and b/src/assets/6X8.F08 differ diff --git a/src/assets/8X8.F08 b/src/assets/8X8.F08 new file mode 100644 index 0000000..b4505de Binary files /dev/null and b/src/assets/8X8.F08 differ diff --git a/src/assets/8X8ITAL.F08 b/src/assets/8X8ITAL.F08 new file mode 100644 index 0000000..48226a9 Binary files /dev/null and b/src/assets/8X8ITAL.F08 differ diff --git a/src/assets/8X8THIN.F08 b/src/assets/8X8THIN.F08 new file mode 100644 index 0000000..3f9caa3 Binary files /dev/null and b/src/assets/8X8THIN.F08 differ diff --git a/src/assets/CGA-TH.F08 b/src/assets/CGA-TH.F08 new file mode 100644 index 0000000..0abea4e Binary files /dev/null and b/src/assets/CGA-TH.F08 differ diff --git a/src/assets/FM-T-437.F08 b/src/assets/FM-T-437.F08 new file mode 100644 index 0000000..9883a71 Binary files /dev/null and b/src/assets/FM-T-437.F08 differ diff --git a/src/common/chartable.asm b/src/common/chartable.asm index 32f132f..833a262 100644 --- a/src/common/chartable.asm +++ b/src/common/chartable.asm @@ -21,6 +21,17 @@ ; ============================================================================= font8x8: -; on importe uniquement les caractères entre ' ' (0x20) et '~' (0x7E) -incbin "./assets/FM-T-437.F08", 0x20*8, 0x7e*8 +; +; https://github.com/viler-int10h/vga-text-mode-fonts +; +; Bien que le fichiers F08 définissent les 256 caractères de la table ASCII, +; on importe uniquement les caractères entre ' ' (0x20) et '~' (0x7E). +; ce choix est fait pour limiter la taille de la police; de même nous ne gérons +; qu'une seule police. +; +; Si l'on désire augmenter le nombre de caratères ou ajouter plusieurs polices, il faudra +; adapter les fonctions "putc" en accord. +; +incbin "./assets/8X8ITAL.F08", 0x20*8, 0x7e*8 +; incbin "./assets/FM-T-437.F08", 0x20*8, 0x7e*8 ;incbin "./assets/CGA-TH.F08", 0x20*8, 0x7e*8 \ No newline at end of file diff --git a/src/gui/lib-logic.asm b/src/gui/lib-logic.asm index 433f797..e7494d6 100644 --- a/src/gui/lib-logic.asm +++ b/src/gui/lib-logic.asm @@ -311,10 +311,10 @@ gui_slider_update_pixels: .set_min: ; Si la valeur est sous le minimum, on colle au début - movzx ax, word [gs:si + widget.x] + mov ax, word [gs:si + widget.x] cmp byte [gs:si + widget.attr_mode], 2 jne .force_store - movzx ax, word [gs:si + widget.y] + mov ax, word [gs:si + widget.y] .force_store: mov [gs:si + widget.thumb_pos], ax