From 8664855d8155ecc173a9bd1fca09ca58eb120e87 Mon Sep 17 00:00:00 2001 From: Tom-on64 Date: Thu, 2 May 2024 13:10:40 +0200 Subject: [PATCH] Changed default font to Termius 8x16 (old font is still there) --- Makefile | 22 +- include/screen.h | 22 +- src/filetable.asm | 7 +- src/fonts/term16n.asm | 1547 ++++++++++++++++++++++++++++++++++ src/{ => fonts}/testfont.asm | 11 +- src/stage2.asm | 6 +- 6 files changed, 1588 insertions(+), 27 deletions(-) create mode 100644 src/fonts/term16n.asm rename src/{ => fonts}/testfont.asm (99%) diff --git a/Makefile b/Makefile index 8b4dd8e..7b29bdc 100644 --- a/Makefile +++ b/Makefile @@ -8,17 +8,16 @@ CFLAGS = -ffreestanding -m32 -Iinclude -Wall -Wextra SRC = ./src BUILD = ./build C_FILES = calc +FONTS = testfont term16n .PHONY: os clean run # Main compilation target -os: $(BUILD) bootloader kernel $(C_FILES) filesystem +os: $(BUILD) filesystem @echo "\nDone!\n" # Filesystem -filesystem: - @echo "Assembling $(SRC)/testfont.asm..." - @$(AS) -fbin -o $(BUILD)/testfont.bin $(SRC)/testfont.asm +filesystem: $(BUILD)/boot.bin $(BUILD)/kernel.bin $(C_FILES) $(FONTS) @echo "Building filesystem..." @$(AS) -fbin -o $(BUILD)/filetable.bin $(SRC)/filetable.asm @dd if=/dev/zero of=kern.iso bs=512 count=2880 status=none @@ -26,16 +25,17 @@ filesystem: @dd if=$(BUILD)/boot.bin of=kern.iso bs=512 seek=0 conv=notrunc status=none @dd if=$(BUILD)/filetable.bin of=kern.iso bs=512 seek=5 conv=notrunc status=none @dd if=$(BUILD)/kernel.bin of=kern.iso bs=512 seek=6 conv=notrunc status=none - @dd if=$(BUILD)/testfont.bin of=kern.iso bs=512 seek=36 conv=notrunc status=none - @dd if=$(SRC)/fs/test.txt of=kern.iso bs=512 seek=40 conv=notrunc status=none - @dd if=$(BUILD)/calc.bin of=kern.iso bs=512 seek=41 conv=notrunc status=none + @dd if=$(BUILD)/term16n.bin of=kern.iso bs=512 seek=36 conv=notrunc status=none + @dd if=$(BUILD)/testfont.bin of=kern.iso bs=512 seek=40 conv=notrunc status=none + @dd if=$(SRC)/fs/test.txt of=kern.iso bs=512 seek=44 conv=notrunc status=none + @dd if=$(BUILD)/calc.bin of=kern.iso bs=512 seek=45 conv=notrunc status=none $(BUILD): @[ -d $(BUILD) ] || mkdir $(BUILD) @rm -rf $(BUILD)/* # Bootloader: This target is responsible for creating boot.bin -bootloader: +$(BUILD)/boot.bin: $(SRC)/stage1.asm $(SRC)/stage2.asm @echo "Assembling $(SRC)/stage1.asm..." @$(AS) -fbin -o $(BUILD)/stage1.bin $(SRC)/stage1.asm @echo "Assembling $(SRC)/stage2.asm..." @@ -43,7 +43,7 @@ bootloader: @cat $(BUILD)/stage1.bin $(BUILD)/stage2.bin > $(BUILD)/boot.bin # Kernel: This target is responsible for creating kernel.bin -kernel: $(SRC)/kernel.c $(SRC)/entry.asm +$(BUILD)/kernel.bin: $(SRC)/kernel.c $(SRC)/entry.asm @echo "Assembling $(SRC)/entry.asm..." @$(AS) -felf32 -o $(BUILD)/entry.o $(SRC)/entry.asm @echo "Compiling $(SRC)/kernel.c..." @@ -57,6 +57,10 @@ $(C_FILES): @$(LD) -T$(SRC)/$@.ld --oformat binary -o $(BUILD)/$@.bin $(BUILD)/$@.o @rm $(BUILD)/$@.o +$(FONTS): + @echo "Assembling $(SRC)/fonts/$@.asm..." + @$(AS) -fbin -o $(BUILD)/$@.bin $(SRC)/fonts/$@.asm + # Run QEMU run: qemu-system-x86_64 -drive format=raw,file="./kern.iso",index=0,media=disk -m 256M -accel tcg diff --git a/include/screen.h b/include/screen.h index 812502e..0bb4c90 100644 --- a/include/screen.h +++ b/include/screen.h @@ -6,8 +6,6 @@ #define MODE_INFO_BLOCK 0x9000 #define BG_COLOR 0x00010b17 #define FG_COLOR 0x00ebddf4 -#define CHAR_WIDTH 8 -#define CHAR_HEIGHT 16 typedef struct modeInfoBlock_s { // Required by all VBE revisions @@ -96,13 +94,15 @@ uint32_t convertColor(uint32_t color) { void putcAt(unsigned char c, uint32_t x, uint32_t y) { uint8_t* vidmem = (uint8_t*)gfxMode->physicalBasePtr; uint8_t bytesPerPx = (gfxMode->bpp+1) / 8; - uint32_t offset = (gfxMode->xRes * y * CHAR_HEIGHT + x * CHAR_WIDTH) * bytesPerPx; + uint8_t charWidth = *(font); + uint8_t charHeight = *(font + 1); + uint32_t offset = (gfxMode->xRes * y * charHeight + x * charWidth) * bytesPerPx; - char* bitmap = &font[((c % 128) - 1) * 16]; - for (uint8_t i = 0; i < CHAR_HEIGHT; i++) { // Rows - char bitmapRow = bitmap[i]; - - for (uint8_t j = 0; j < CHAR_WIDTH * bytesPerPx; ++j) { // Cols + char* bitmap = &font[((c % 128) - 1) * charHeight]; + for (uint8_t i = 0; i < charHeight; i++) { // Rows + char bitmapRow = bitmap[i]; + + for (uint8_t j = 0; j < charHeight * bytesPerPx; ++j) { // Cols uint32_t color = convertColor((bitmapRow & 0x80) ? fgColor : bgColor); uint8_t byte = j % bytesPerPx; vidmem[offset + j] = (uint8_t)(color >> (8 * byte)); @@ -124,6 +124,8 @@ void printAt(const char* str, uint32_t x, uint32_t y) { } void putc(char c) { + uint8_t charWidth = *(font); + if (c == '\n') { putcAt(' ', cursor.x, cursor.y); // Make sure we don't leave an extra cursor cursor.y++; @@ -132,7 +134,7 @@ void putc(char c) { putcAt(' ', cursor.x, cursor.y); // Make sure we don't leave an extra cursor if (cursor.x == 0) { - cursor.x = gfxMode->xRes / CHAR_WIDTH - 1; // Subtract one so we don't overflow to the line start + cursor.x = gfxMode->xRes / charWidth - 1; // Subtract one so we don't overflow to the line start cursor.y--; // y could be 0 } else { cursor.x--; @@ -143,7 +145,7 @@ void putc(char c) { putcAt(c, cursor.x, cursor.y); cursor.x++; - if (cursor.x >= gfxMode->xRes / CHAR_WIDTH) { + if (cursor.x >= gfxMode->xRes / charWidth) { cursor.y++; // TODO: Scrolling cursor.x = 0; } diff --git a/src/filetable.asm b/src/filetable.asm index 7837e25..85812da 100644 --- a/src/filetable.asm +++ b/src/filetable.asm @@ -13,9 +13,10 @@ filetable: db "boot",0,0,0,0,0,0, "bin",0,0,5 db "filetable",0, "tab",0,5,1 db "kernel",0,0,0,0, "bin",0,6,30 - db "testfont",0,0, "fnt",0,36,4 - db "test",0,0,0,0,0,0, "txt",0,40,1 - db "calc",0,0,0,0,0,0, "bin",0,41,2 + db "term16n",0,0,0, "fnt",0,36,4 + db "testfont",0,0, "fnt",0,40,4 + db "test",0,0,0,0,0,0, "txt",0,44,1 + db "calc",0,0,0,0,0,0, "bin",0,45,2 times 512-($-$$) db 0 diff --git a/src/fonts/term16n.asm b/src/fonts/term16n.asm new file mode 100644 index 0000000..6a793cd --- /dev/null +++ b/src/fonts/term16n.asm @@ -0,0 +1,1547 @@ +;;; +;;; font file - 0-127 for ascii, 8x16 pixels each. Stored as 1 byte (8 bits) * 16 = 16 bytes per char, 127*16 = 2048 = 4 512 byte sectors +;;; based on terminus u16n +;;; +;; Font header - width & height +db 8, 16 +times 31*16 - 2 db 0 +;; Space +db 00h,\ + 00h,\ + 00h,\ + 00h,\ + 00h,\ + 00h,\ + 00h,\ + 00h,\ + 00h,\ + 00h,\ + 00h,\ + 00h,\ + 00h,\ + 00h,\ + 00h,\ + 00h +db 00h,\ + 00h,\ + 10h,\ + 10h,\ + 10h,\ + 10h,\ + 10h,\ + 10h,\ + 10h,\ + 00h,\ + 10h,\ + 10h,\ + 00h,\ + 00h,\ + 00h,\ + 00h +db 00h,\ + 24h,\ + 24h,\ + 24h,\ + 00h,\ + 00h,\ + 00h,\ + 00h,\ + 00h,\ + 00h,\ + 00h,\ + 00h,\ + 00h,\ + 00h,\ + 00h,\ + 00h +db 00h,\ + 00h,\ + 24h,\ + 24h,\ + 24h,\ + 7Eh,\ + 24h,\ + 24h,\ + 7Eh,\ + 24h,\ + 24h,\ + 24h,\ + 00h,\ + 00h,\ + 00h,\ + 00h +db 00h,\ + 10h,\ + 10h,\ + 7Ch,\ + 92h,\ + 90h,\ + 90h,\ + 7Ch,\ + 12h,\ + 12h,\ + 92h,\ + 7Ch,\ + 10h,\ + 10h,\ + 00h,\ + 00h +db 00h,\ + 00h,\ + 64h,\ + 94h,\ + 68h,\ + 08h,\ + 10h,\ + 10h,\ + 20h,\ + 2Ch,\ + 52h,\ + 4Ch,\ + 00h,\ + 00h,\ + 00h,\ + 00h +db 00h,\ + 00h,\ + 18h,\ + 24h,\ + 24h,\ + 18h,\ + 30h,\ + 4Ah,\ + 44h,\ + 44h,\ + 44h,\ + 3Ah,\ + 00h,\ + 00h,\ + 00h,\ + 00h +db 00h,\ + 10h,\ + 10h,\ + 10h,\ + 00h,\ + 00h,\ + 00h,\ + 00h,\ + 00h,\ + 00h,\ + 00h,\ + 00h,\ + 00h,\ + 00h,\ + 00h,\ + 00h +db 00h,\ + 00h,\ + 08h,\ + 10h,\ + 20h,\ + 20h,\ + 20h,\ + 20h,\ + 20h,\ + 20h,\ + 10h,\ + 08h,\ + 00h,\ + 00h,\ + 00h,\ + 00h +db 00h,\ + 00h,\ + 20h,\ + 10h,\ + 08h,\ + 08h,\ + 08h,\ + 08h,\ + 08h,\ + 08h,\ + 10h,\ + 20h,\ + 00h,\ + 00h,\ + 00h,\ + 00h +db 00h,\ + 00h,\ + 00h,\ + 00h,\ + 00h,\ + 24h,\ + 18h,\ + 7Eh,\ + 18h,\ + 24h,\ + 00h,\ + 00h,\ + 00h,\ + 00h,\ + 00h,\ + 00h +db 00h,\ + 00h,\ + 00h,\ + 00h,\ + 00h,\ + 10h,\ + 10h,\ + 7Ch,\ + 10h,\ + 10h,\ + 00h,\ + 00h,\ + 00h,\ + 00h,\ + 00h,\ + 00h +db 00h,\ + 00h,\ + 00h,\ + 00h,\ + 00h,\ + 00h,\ + 00h,\ + 00h,\ + 00h,\ + 00h,\ + 10h,\ + 10h,\ + 20h,\ + 00h,\ + 00h,\ + 00h +db 00h,\ + 00h,\ + 00h,\ + 00h,\ + 00h,\ + 00h,\ + 00h,\ + 7Eh,\ + 00h,\ + 00h,\ + 00h,\ + 00h,\ + 00h,\ + 00h,\ + 00h,\ + 00h +db 00h,\ + 00h,\ + 00h,\ + 00h,\ + 00h,\ + 00h,\ + 00h,\ + 00h,\ + 00h,\ + 00h,\ + 10h,\ + 10h,\ + 00h,\ + 00h,\ + 00h,\ + 00h +db 00h,\ + 00h,\ + 04h,\ + 04h,\ + 08h,\ + 08h,\ + 10h,\ + 10h,\ + 20h,\ + 20h,\ + 40h,\ + 40h,\ + 00h,\ + 00h,\ + 00h,\ + 00h +db 00h,\ + 00h,\ + 3Ch,\ + 42h,\ + 42h,\ + 46h,\ + 4Ah,\ + 52h,\ + 62h,\ + 42h,\ + 42h,\ + 3Ch,\ + 00h,\ + 00h,\ + 00h,\ + 00h +db 00h,\ + 00h,\ + 08h,\ + 18h,\ + 28h,\ + 08h,\ + 08h,\ + 08h,\ + 08h,\ + 08h,\ + 08h,\ + 3Eh,\ + 00h,\ + 00h,\ + 00h,\ + 00h +db 00h,\ + 00h,\ + 3Ch,\ + 42h,\ + 42h,\ + 02h,\ + 04h,\ + 08h,\ + 10h,\ + 20h,\ + 40h,\ + 7Eh,\ + 00h,\ + 00h,\ + 00h,\ + 00h +db 00h,\ + 00h,\ + 3Ch,\ + 42h,\ + 42h,\ + 02h,\ + 1Ch,\ + 02h,\ + 02h,\ + 42h,\ + 42h,\ + 3Ch,\ + 00h,\ + 00h,\ + 00h,\ + 00h +db 00h,\ + 00h,\ + 02h,\ + 06h,\ + 0Ah,\ + 12h,\ + 22h,\ + 42h,\ + 7Eh,\ + 02h,\ + 02h,\ + 02h,\ + 00h,\ + 00h,\ + 00h,\ + 00h +db 00h,\ + 00h,\ + 7Eh,\ + 40h,\ + 40h,\ + 40h,\ + 7Ch,\ + 02h,\ + 02h,\ + 02h,\ + 42h,\ + 3Ch,\ + 00h,\ + 00h,\ + 00h,\ + 00h +db 00h,\ + 00h,\ + 1Ch,\ + 20h,\ + 40h,\ + 40h,\ + 7Ch,\ + 42h,\ + 42h,\ + 42h,\ + 42h,\ + 3Ch,\ + 00h,\ + 00h,\ + 00h,\ + 00h +db 00h,\ + 00h,\ + 7Eh,\ + 02h,\ + 02h,\ + 04h,\ + 04h,\ + 08h,\ + 08h,\ + 10h,\ + 10h,\ + 10h,\ + 00h,\ + 00h,\ + 00h,\ + 00h +db 00h,\ + 00h,\ + 3Ch,\ + 42h,\ + 42h,\ + 42h,\ + 3Ch,\ + 42h,\ + 42h,\ + 42h,\ + 42h,\ + 3Ch,\ + 00h,\ + 00h,\ + 00h,\ + 00h +db 00h,\ + 00h,\ + 3Ch,\ + 42h,\ + 42h,\ + 42h,\ + 42h,\ + 3Eh,\ + 02h,\ + 02h,\ + 04h,\ + 38h,\ + 00h,\ + 00h,\ + 00h,\ + 00h +db 00h,\ + 00h,\ + 00h,\ + 00h,\ + 00h,\ + 10h,\ + 10h,\ + 00h,\ + 00h,\ + 00h,\ + 10h,\ + 10h,\ + 00h,\ + 00h,\ + 00h,\ + 00h +db 00h,\ + 00h,\ + 00h,\ + 00h,\ + 00h,\ + 10h,\ + 10h,\ + 00h,\ + 00h,\ + 00h,\ + 10h,\ + 10h,\ + 20h,\ + 00h,\ + 00h,\ + 00h +db 00h,\ + 00h,\ + 00h,\ + 04h,\ + 08h,\ + 10h,\ + 20h,\ + 40h,\ + 20h,\ + 10h,\ + 08h,\ + 04h,\ + 00h,\ + 00h,\ + 00h,\ + 00h +db 00h,\ + 00h,\ + 00h,\ + 00h,\ + 00h,\ + 7Eh,\ + 00h,\ + 00h,\ + 7Eh,\ + 00h,\ + 00h,\ + 00h,\ + 00h,\ + 00h,\ + 00h,\ + 00h +db 00h,\ + 00h,\ + 00h,\ + 40h,\ + 20h,\ + 10h,\ + 08h,\ + 04h,\ + 08h,\ + 10h,\ + 20h,\ + 40h,\ + 00h,\ + 00h,\ + 00h,\ + 00h +db 00h,\ + 00h,\ + 3Ch,\ + 42h,\ + 42h,\ + 42h,\ + 04h,\ + 08h,\ + 08h,\ + 00h,\ + 08h,\ + 08h,\ + 00h,\ + 00h,\ + 00h,\ + 00h +db 00h,\ + 00h,\ + 7Ch,\ + 82h,\ + 9Eh,\ + 0A2h,\ + 0A2h,\ + 0A2h,\ + 0A6h,\ + 9Ah,\ + 80h,\ + 7Eh,\ + 00h,\ + 00h,\ + 00h,\ + 00h +db 00h,\ + 00h,\ + 3Ch,\ + 42h,\ + 42h,\ + 42h,\ + 42h,\ + 7Eh,\ + 42h,\ + 42h,\ + 42h,\ + 42h,\ + 00h,\ + 00h,\ + 00h,\ + 00h +db 00h,\ + 00h,\ + 7Ch,\ + 42h,\ + 42h,\ + 42h,\ + 7Ch,\ + 42h,\ + 42h,\ + 42h,\ + 42h,\ + 7Ch,\ + 00h,\ + 00h,\ + 00h,\ + 00h +db 00h,\ + 00h,\ + 3Ch,\ + 42h,\ + 42h,\ + 40h,\ + 40h,\ + 40h,\ + 40h,\ + 42h,\ + 42h,\ + 3Ch,\ + 00h,\ + 00h,\ + 00h,\ + 00h +db 00h,\ + 00h,\ + 78h,\ + 44h,\ + 42h,\ + 42h,\ + 42h,\ + 42h,\ + 42h,\ + 42h,\ + 44h,\ + 78h,\ + 00h,\ + 00h,\ + 00h,\ + 00h +db 00h,\ + 00h,\ + 7Eh,\ + 40h,\ + 40h,\ + 40h,\ + 78h,\ + 40h,\ + 40h,\ + 40h,\ + 40h,\ + 7Eh,\ + 00h,\ + 00h,\ + 00h,\ + 00h +db 00h,\ + 00h,\ + 7Eh,\ + 40h,\ + 40h,\ + 40h,\ + 78h,\ + 40h,\ + 40h,\ + 40h,\ + 40h,\ + 40h,\ + 00h,\ + 00h,\ + 00h,\ + 00h +db 00h,\ + 00h,\ + 3Ch,\ + 42h,\ + 42h,\ + 40h,\ + 40h,\ + 4Eh,\ + 42h,\ + 42h,\ + 42h,\ + 3Ch,\ + 00h,\ + 00h,\ + 00h,\ + 00h +db 00h,\ + 00h,\ + 42h,\ + 42h,\ + 42h,\ + 42h,\ + 7Eh,\ + 42h,\ + 42h,\ + 42h,\ + 42h,\ + 42h,\ + 00h,\ + 00h,\ + 00h,\ + 00h +db 00h,\ + 00h,\ + 38h,\ + 10h,\ + 10h,\ + 10h,\ + 10h,\ + 10h,\ + 10h,\ + 10h,\ + 10h,\ + 38h,\ + 00h,\ + 00h,\ + 00h,\ + 00h +db 00h,\ + 00h,\ + 0Eh,\ + 04h,\ + 04h,\ + 04h,\ + 04h,\ + 04h,\ + 04h,\ + 44h,\ + 44h,\ + 38h,\ + 00h,\ + 00h,\ + 00h,\ + 00h +db 00h,\ + 00h,\ + 42h,\ + 44h,\ + 48h,\ + 50h,\ + 60h,\ + 60h,\ + 50h,\ + 48h,\ + 44h,\ + 42h,\ + 00h,\ + 00h,\ + 00h,\ + 00h +db 00h,\ + 00h,\ + 40h,\ + 40h,\ + 40h,\ + 40h,\ + 40h,\ + 40h,\ + 40h,\ + 40h,\ + 40h,\ + 7Eh,\ + 00h,\ + 00h,\ + 00h,\ + 00h +db 00h,\ + 00h,\ + 82h,\ + 0C6h,\ + 0AAh,\ + 92h,\ + 92h,\ + 82h,\ + 82h,\ + 82h,\ + 82h,\ + 82h,\ + 00h,\ + 00h,\ + 00h,\ + 00h +db 00h,\ + 00h,\ + 42h,\ + 42h,\ + 42h,\ + 62h,\ + 52h,\ + 4Ah,\ + 46h,\ + 42h,\ + 42h,\ + 42h,\ + 00h,\ + 00h,\ + 00h,\ + 00h +db 00h,\ + 00h,\ + 3Ch,\ + 42h,\ + 42h,\ + 42h,\ + 42h,\ + 42h,\ + 42h,\ + 42h,\ + 42h,\ + 3Ch,\ + 00h,\ + 00h,\ + 00h,\ + 00h +db 00h,\ + 00h,\ + 7Ch,\ + 42h,\ + 42h,\ + 42h,\ + 42h,\ + 7Ch,\ + 40h,\ + 40h,\ + 40h,\ + 40h,\ + 00h,\ + 00h,\ + 00h,\ + 00h +db 00h,\ + 00h,\ + 3Ch,\ + 42h,\ + 42h,\ + 42h,\ + 42h,\ + 42h,\ + 42h,\ + 42h,\ + 4Ah,\ + 3Ch,\ + 02h,\ + 00h,\ + 00h,\ + 00h +db 00h,\ + 00h,\ + 7Ch,\ + 42h,\ + 42h,\ + 42h,\ + 42h,\ + 7Ch,\ + 50h,\ + 48h,\ + 44h,\ + 42h,\ + 00h,\ + 00h,\ + 00h,\ + 00h +db 00h,\ + 00h,\ + 3Ch,\ + 42h,\ + 40h,\ + 40h,\ + 3Ch,\ + 02h,\ + 02h,\ + 42h,\ + 42h,\ + 3Ch,\ + 00h,\ + 00h,\ + 00h,\ + 00h +db 00h,\ + 00h,\ + 0FEh,\ + 10h,\ + 10h,\ + 10h,\ + 10h,\ + 10h,\ + 10h,\ + 10h,\ + 10h,\ + 10h,\ + 00h,\ + 00h,\ + 00h,\ + 00h +db 00h,\ + 00h,\ + 42h,\ + 42h,\ + 42h,\ + 42h,\ + 42h,\ + 42h,\ + 42h,\ + 42h,\ + 42h,\ + 3Ch,\ + 00h,\ + 00h,\ + 00h,\ + 00h +db 00h,\ + 00h,\ + 42h,\ + 42h,\ + 42h,\ + 42h,\ + 42h,\ + 24h,\ + 24h,\ + 24h,\ + 18h,\ + 18h,\ + 00h,\ + 00h,\ + 00h,\ + 00h +db 00h,\ + 00h,\ + 82h,\ + 82h,\ + 82h,\ + 82h,\ + 82h,\ + 92h,\ + 92h,\ + 0AAh,\ + 0C6h,\ + 82h,\ + 00h,\ + 00h,\ + 00h,\ + 00h +db 00h,\ + 00h,\ + 42h,\ + 42h,\ + 24h,\ + 24h,\ + 18h,\ + 18h,\ + 24h,\ + 24h,\ + 42h,\ + 42h,\ + 00h,\ + 00h,\ + 00h,\ + 00h +db 00h,\ + 00h,\ + 82h,\ + 82h,\ + 44h,\ + 44h,\ + 28h,\ + 10h,\ + 10h,\ + 10h,\ + 10h,\ + 10h,\ + 00h,\ + 00h,\ + 00h,\ + 00h +db 00h,\ + 00h,\ + 7Eh,\ + 02h,\ + 02h,\ + 04h,\ + 08h,\ + 10h,\ + 20h,\ + 40h,\ + 40h,\ + 7Eh,\ + 00h,\ + 00h,\ + 00h,\ + 00h +db 00h,\ + 00h,\ + 38h,\ + 20h,\ + 20h,\ + 20h,\ + 20h,\ + 20h,\ + 20h,\ + 20h,\ + 20h,\ + 38h,\ + 00h,\ + 00h,\ + 00h,\ + 00h +db 00h,\ + 00h,\ + 40h,\ + 40h,\ + 20h,\ + 20h,\ + 10h,\ + 10h,\ + 08h,\ + 08h,\ + 04h,\ + 04h,\ + 00h,\ + 00h,\ + 00h,\ + 00h +db 00h,\ + 00h,\ + 38h,\ + 08h,\ + 08h,\ + 08h,\ + 08h,\ + 08h,\ + 08h,\ + 08h,\ + 08h,\ + 38h,\ + 00h,\ + 00h,\ + 00h,\ + 00h +db 00h,\ + 10h,\ + 28h,\ + 44h,\ + 00h,\ + 00h,\ + 00h,\ + 00h,\ + 00h,\ + 00h,\ + 00h,\ + 00h,\ + 00h,\ + 00h,\ + 00h,\ + 00h +db 00h,\ + 00h,\ + 00h,\ + 00h,\ + 00h,\ + 00h,\ + 00h,\ + 00h,\ + 00h,\ + 00h,\ + 00h,\ + 00h,\ + 00h,\ + 7Eh,\ + 00h,\ + 00h +db 10h,\ + 08h,\ + 00h,\ + 00h,\ + 00h,\ + 00h,\ + 00h,\ + 00h,\ + 00h,\ + 00h,\ + 00h,\ + 00h,\ + 00h,\ + 00h,\ + 00h,\ + 00h +db 00h,\ + 00h,\ + 00h,\ + 00h,\ + 00h,\ + 3Ch,\ + 02h,\ + 3Eh,\ + 42h,\ + 42h,\ + 42h,\ + 3Eh,\ + 00h,\ + 00h,\ + 00h,\ + 00h +db 00h,\ + 00h,\ + 40h,\ + 40h,\ + 40h,\ + 7Ch,\ + 42h,\ + 42h,\ + 42h,\ + 42h,\ + 42h,\ + 7Ch,\ + 00h,\ + 00h,\ + 00h,\ + 00h +db 00h,\ + 00h,\ + 00h,\ + 00h,\ + 00h,\ + 3Ch,\ + 42h,\ + 40h,\ + 40h,\ + 40h,\ + 42h,\ + 3Ch,\ + 00h,\ + 00h,\ + 00h,\ + 00h +db 00h,\ + 00h,\ + 02h,\ + 02h,\ + 02h,\ + 3Eh,\ + 42h,\ + 42h,\ + 42h,\ + 42h,\ + 42h,\ + 3Eh,\ + 00h,\ + 00h,\ + 00h,\ + 00h +db 00h,\ + 00h,\ + 00h,\ + 00h,\ + 00h,\ + 3Ch,\ + 42h,\ + 42h,\ + 7Eh,\ + 40h,\ + 40h,\ + 3Ch,\ + 00h,\ + 00h,\ + 00h,\ + 00h +db 00h,\ + 00h,\ + 0Eh,\ + 10h,\ + 10h,\ + 7Ch,\ + 10h,\ + 10h,\ + 10h,\ + 10h,\ + 10h,\ + 10h,\ + 00h,\ + 00h,\ + 00h,\ + 00h +db 00h,\ + 00h,\ + 00h,\ + 00h,\ + 00h,\ + 3Eh,\ + 42h,\ + 42h,\ + 42h,\ + 42h,\ + 42h,\ + 3Eh,\ + 02h,\ + 02h,\ + 3Ch,\ + 00h +db 00h,\ + 00h,\ + 40h,\ + 40h,\ + 40h,\ + 7Ch,\ + 42h,\ + 42h,\ + 42h,\ + 42h,\ + 42h,\ + 42h,\ + 00h,\ + 00h,\ + 00h,\ + 00h +db 00h,\ + 00h,\ + 10h,\ + 10h,\ + 00h,\ + 30h,\ + 10h,\ + 10h,\ + 10h,\ + 10h,\ + 10h,\ + 38h,\ + 00h,\ + 00h,\ + 00h,\ + 00h +db 00h,\ + 00h,\ + 04h,\ + 04h,\ + 00h,\ + 0Ch,\ + 04h,\ + 04h,\ + 04h,\ + 04h,\ + 04h,\ + 04h,\ + 44h,\ + 44h,\ + 38h,\ + 00h +db 00h,\ + 00h,\ + 40h,\ + 40h,\ + 40h,\ + 42h,\ + 44h,\ + 48h,\ + 70h,\ + 48h,\ + 44h,\ + 42h,\ + 00h,\ + 00h,\ + 00h,\ + 00h +db 00h,\ + 00h,\ + 30h,\ + 10h,\ + 10h,\ + 10h,\ + 10h,\ + 10h,\ + 10h,\ + 10h,\ + 10h,\ + 38h,\ + 00h,\ + 00h,\ + 00h,\ + 00h +db 00h,\ + 00h,\ + 00h,\ + 00h,\ + 00h,\ + 0FCh,\ + 92h,\ + 92h,\ + 92h,\ + 92h,\ + 92h,\ + 92h,\ + 00h,\ + 00h,\ + 00h,\ + 00h +db 00h,\ + 00h,\ + 00h,\ + 00h,\ + 00h,\ + 7Ch,\ + 42h,\ + 42h,\ + 42h,\ + 42h,\ + 42h,\ + 42h,\ + 00h,\ + 00h,\ + 00h,\ + 00h +db 00h,\ + 00h,\ + 00h,\ + 00h,\ + 00h,\ + 3Ch,\ + 42h,\ + 42h,\ + 42h,\ + 42h,\ + 42h,\ + 3Ch,\ + 00h,\ + 00h,\ + 00h,\ + 00h +db 00h,\ + 00h,\ + 00h,\ + 00h,\ + 00h,\ + 7Ch,\ + 42h,\ + 42h,\ + 42h,\ + 42h,\ + 42h,\ + 7Ch,\ + 40h,\ + 40h,\ + 40h,\ + 00h +db 00h,\ + 00h,\ + 00h,\ + 00h,\ + 00h,\ + 3Eh,\ + 42h,\ + 42h,\ + 42h,\ + 42h,\ + 42h,\ + 3Eh,\ + 02h,\ + 02h,\ + 02h,\ + 00h +db 00h,\ + 00h,\ + 00h,\ + 00h,\ + 00h,\ + 5Eh,\ + 60h,\ + 40h,\ + 40h,\ + 40h,\ + 40h,\ + 40h,\ + 00h,\ + 00h,\ + 00h,\ + 00h +db 00h,\ + 00h,\ + 00h,\ + 00h,\ + 00h,\ + 3Eh,\ + 40h,\ + 40h,\ + 3Ch,\ + 02h,\ + 02h,\ + 7Ch,\ + 00h,\ + 00h,\ + 00h,\ + 00h +db 00h,\ + 00h,\ + 10h,\ + 10h,\ + 10h,\ + 7Ch,\ + 10h,\ + 10h,\ + 10h,\ + 10h,\ + 10h,\ + 0Eh,\ + 00h,\ + 00h,\ + 00h,\ + 00h +db 00h,\ + 00h,\ + 00h,\ + 00h,\ + 00h,\ + 42h,\ + 42h,\ + 42h,\ + 42h,\ + 42h,\ + 42h,\ + 3Eh,\ + 00h,\ + 00h,\ + 00h,\ + 00h +db 00h,\ + 00h,\ + 00h,\ + 00h,\ + 00h,\ + 42h,\ + 42h,\ + 42h,\ + 24h,\ + 24h,\ + 18h,\ + 18h,\ + 00h,\ + 00h,\ + 00h,\ + 00h +db 00h,\ + 00h,\ + 00h,\ + 00h,\ + 00h,\ + 82h,\ + 82h,\ + 92h,\ + 92h,\ + 92h,\ + 92h,\ + 7Ch,\ + 00h,\ + 00h,\ + 00h,\ + 00h +db 00h,\ + 00h,\ + 00h,\ + 00h,\ + 00h,\ + 42h,\ + 42h,\ + 24h,\ + 18h,\ + 24h,\ + 42h,\ + 42h,\ + 00h,\ + 00h,\ + 00h,\ + 00h +db 00h,\ + 00h,\ + 00h,\ + 00h,\ + 00h,\ + 42h,\ + 42h,\ + 42h,\ + 42h,\ + 42h,\ + 42h,\ + 3Eh,\ + 02h,\ + 02h,\ + 3Ch,\ + 00h +db 00h,\ + 00h,\ + 00h,\ + 00h,\ + 00h,\ + 7Eh,\ + 04h,\ + 08h,\ + 10h,\ + 20h,\ + 40h,\ + 7Eh,\ + 00h,\ + 00h,\ + 00h,\ + 00h +db 00h,\ + 00h,\ + 0Ch,\ + 10h,\ + 10h,\ + 10h,\ + 20h,\ + 10h,\ + 10h,\ + 10h,\ + 10h,\ + 0Ch,\ + 00h,\ + 00h,\ + 00h,\ + 00h +db 00h,\ + 00h,\ + 10h,\ + 10h,\ + 10h,\ + 10h,\ + 10h,\ + 10h,\ + 10h,\ + 10h,\ + 10h,\ + 10h,\ + 00h,\ + 00h,\ + 00h,\ + 00h +db 00h,\ + 00h,\ + 30h,\ + 08h,\ + 08h,\ + 08h,\ + 04h,\ + 08h,\ + 08h,\ + 08h,\ + 08h,\ + 30h,\ + 00h,\ + 00h,\ + 00h,\ + 00h +db 00h,\ + 62h,\ + 92h,\ + 8Ch,\ + 00h,\ + 00h,\ + 00h,\ + 00h,\ + 00h,\ + 00h,\ + 00h,\ + 00h,\ + 00h,\ + 00h,\ + 00h,\ + 00h +db 00h,\ + 00h,\ + 00h,\ + 00h,\ + 00h,\ + 00h,\ + 00h,\ + 00h,\ + 00h,\ + 00h,\ + 00h,\ + 00h,\ + 00h,\ + 00h,\ + 00h,\ + 0FEh + +;; End of visible ascii characters + times 2048-($-$$) db 0 diff --git a/src/testfont.asm b/src/fonts/testfont.asm similarity index 99% rename from src/testfont.asm rename to src/fonts/testfont.asm index f81196d..6b3d4d3 100644 --- a/src/testfont.asm +++ b/src/fonts/testfont.asm @@ -5,8 +5,15 @@ ;;; 8*16*128 = 2048B (2kB) ;;; Takes up 4 sectors ;;; -;; 0-31 -times 31*16 db 0 + +;;; Font header - 16 Bytes +charWidth: db 8 +charHeight: db 16 +reserved: times 14 db 0 + +;;; Bitmap data +;; 1-31 Non printable characters (0 - NULL is in the header, and we can't print it anyway) +times 30*16 db 0 ;; Space ' ' or '_' - starts at ascii 32/20h db 00000000b,\ 00000000b,\ diff --git a/src/stage2.asm b/src/stage2.asm index 289ce56..3a41d99 100644 --- a/src/stage2.asm +++ b/src/stage2.asm @@ -372,9 +372,9 @@ DATA_SEG equ GDT.dataDescriptor - GDT.start ;; VBE Stuff ;; !! IF YOU WANT TO SELECT ANY VALUE IN THE SETUP, SET THESE TO ZERO !! -width: dw 0 -height: dw 0 -bpp: db 0 +width: dw 1920 +height: dw 1080 +bpp: db 32 offset: dw 0 _segment: dw 0 ; segment is a keyword