diff --git a/Makefile b/Makefile index 872298d..fea8033 100644 --- a/Makefile +++ b/Makefile @@ -10,12 +10,14 @@ ASFLAGS := include make.config +BOOT := ./boot SRC := ./src BIN := ./bin LIBK_INC := ./libk/include LIBC_INC := ./libc/include LIBC_DIR := ./libc LIBK_DIR := ./libk +FONT_DIR := ./usr/fonts LIBK_SRC := $(shell find $(LIBK_DIR) -type f -name "**.c") FONTS := testfont term16n @@ -40,14 +42,14 @@ $(BIN): rm -rf $(BIN)/* # Bootloader: This target is responsible for creating stage?.bin (1,2,3) -$(BOOTLOADER): $(SRC)/stage1.asm $(SRC)/stage2.asm $(SRC)/stage3.c $(LIBC) $(LIBK) - @echo "Assembling $(SRC)/stage1.asm..." - $(AS) -fbin -o $(BIN)/stage1.bin $(SRC)/stage1.asm $(ASFLAGS) - @echo "Assembling $(SRC)/stage2.asm..." - $(AS) -fbin -o $(BIN)/stage2.bin $(SRC)/stage2.asm $(ASFLAGS) - @echo "Compiling $(SRC)/stage3.c..." - $(CC) $(CCFLAGS) -I$(LIBK_INC) -I$(LIBC_INC) -o $(BIN)/stage3.o -c $(SRC)/stage3.c - $(LD) $(LDFLAGS) -T$(SRC)/stage3.ld --oformat binary -o $(BIN)/stage3.bin $(BIN)/stage3.o $(LIBC) $(LIBK) +$(BOOTLOADER): $(BOOT)/stage1.asm $(BOOT)/stage2.asm $(BOOT)/stage3.c $(LIBC) $(LIBK) + @echo "Assembling $(BOOT)/stage1.asm..." + $(AS) -fbin -o $(BIN)/stage1.bin $(BOOT)/stage1.asm $(ASFLAGS) + @echo "Assembling $(BOOT)/stage2.asm..." + $(AS) -fbin -o $(BIN)/stage2.bin $(BOOT)/stage2.asm $(ASFLAGS) + @echo "Compiling $(BOOT)/stage3.c..." + $(CC) $(CCFLAGS) -I$(LIBK_INC) -I$(LIBC_INC) -o $(BIN)/stage3.o -c $(BOOT)/stage3.c + $(LD) $(LDFLAGS) -T$(BOOT)/stage3.ld --oformat binary -o $(BIN)/stage3.bin $(BIN)/stage3.o $(LIBC) $(LIBK) rm $(BIN)/stage3.o # Kernel: This target is responsible for creating kernel.bin @@ -80,7 +82,7 @@ $(LIBK): $(LIBK_SRC) # This target retrieves all fonts inside src/fonts $(FONTS): - cp $(SRC)/fonts/$@.fnt $(BIN)/$@.fnt + cp $(FONT_DIR)/$@.fnt $(BIN)/$@.fnt # Run QEMU run: diff --git a/src/stage1.asm b/boot/stage1.asm similarity index 100% rename from src/stage1.asm rename to boot/stage1.asm diff --git a/src/stage2.asm b/boot/stage2.asm similarity index 100% rename from src/stage2.asm rename to boot/stage2.asm diff --git a/src/stage3.c b/boot/stage3.c similarity index 100% rename from src/stage3.c rename to boot/stage3.c diff --git a/src/stage3.ld b/boot/stage3.ld similarity index 100% rename from src/stage3.ld rename to boot/stage3.ld diff --git a/makedisk.c b/makedisk.c index 3686faa..698578a 100644 --- a/makedisk.c +++ b/makedisk.c @@ -29,7 +29,7 @@ fileInfo_t files[] = { // TODO: Not have to list all of the files, loop through { BIN_DIR"term16n.fnt" }, { BIN_DIR"testfont.fnt" }, /* Userspace files */ - { "./src/fs/test.txt" }, + { "./usr/test.txt" }, //{ BIN_DIR"calc.bin" }, //{ BIN_DIR"edit.bin" }, }; diff --git a/todo.txt b/todo.txt index 49637e8..4792e09 100644 --- a/todo.txt +++ b/todo.txt @@ -14,7 +14,7 @@ Legend: - [ ] project structure - [ ] system root - [ ] arch/ - - [ ] lib/ + - [x] lib/ - [x] include/ - [ ] cross compiler setup - [x] libc - User space diff --git a/src/calc.c b/usr/calc.c similarity index 100% rename from src/calc.c rename to usr/calc.c diff --git a/src/calc.ld b/usr/calc.ld similarity index 100% rename from src/calc.ld rename to usr/calc.ld diff --git a/src/edit.c b/usr/edit.c similarity index 100% rename from src/edit.c rename to usr/edit.c diff --git a/src/edit.ld b/usr/edit.ld similarity index 100% rename from src/edit.ld rename to usr/edit.ld diff --git a/usr/fonts/term16n.asm b/usr/fonts/term16n.asm new file mode 100644 index 0000000..41f2eb6 --- /dev/null +++ b/usr/fonts/term16n.asm @@ -0,0 +1,1563 @@ +;;; +;;; font file - 0-256 for ascii, 8x16 pixels each. Stored as 1 byte (8 bits) * 16 = 16 bytes per char, 127*16 = 4096B +;;; 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 0xff,\ + 0xff,\ + 0xff,\ + 0xff,\ + 0xff,\ + 0xff,\ + 0xff,\ + 0xff,\ + 0xff,\ + 0xff,\ + 0xff,\ + 0xff,\ + 0xff,\ + 0xff,\ + 0xff,\ + 0xff +;; End of standard ascii +db 00000000b,\ + 00111100b,\ + 01010100b,\ + 11100010b,\ + 00100010b,\ + 01000010b,\ + 01110010b,\ + 01001010b,\ + 01111010b,\ + 01000010b,\ + 01000010b,\ + 00111110b,\ + 00101010b,\ + 00101000b,\ + 00101000b,\ + 01111100b,\ + +times 4096-($-$$) db 0 diff --git a/src/fonts/term16n.fnt b/usr/fonts/term16n.fnt similarity index 100% rename from src/fonts/term16n.fnt rename to usr/fonts/term16n.fnt diff --git a/usr/fonts/testfont.asm b/usr/fonts/testfont.asm new file mode 100644 index 0000000..6b3d4d3 --- /dev/null +++ b/usr/fonts/testfont.asm @@ -0,0 +1,1652 @@ +;;; +;;; .fnt Font file +;;; 8x16 Font, based on GNU Unifont 8x16 +;;; 8 bits per line, 16 lines per character, 128 ASCII Characters (0-127) +;;; 8*16*128 = 2048B (2kB) +;;; Takes up 4 sectors +;;; + +;;; 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,\ + 00000000b,\ + 00000000b,\ + 00000000b,\ + 00000000b,\ + 00000000b,\ + 00000000b,\ + 00000000b,\ + 00000000b,\ + 00000000b,\ + 00000000b,\ + 00000000b,\ + 00000000b,\ + 00000000b,\ + 00000000b +;; Exclamation mark '!' +db 00000000b,\ + 00000000b,\ + 00000000b,\ + 00010000b,\ + 00010000b,\ + 00010000b,\ + 00010000b,\ + 00010000b,\ + 00010000b,\ + 00010000b,\ + 00000000b,\ + 00010000b,\ + 00010000b,\ + 00000000b,\ + 00000000b,\ + 00000000b +;; Double quotes '"' +db 00000000b,\ + 00000000b,\ + 00000000b,\ + 01000100b,\ + 01000100b,\ + 01000100b,\ + 01000100b,\ + 01000100b,\ + 00000000b,\ + 00000000b,\ + 00000000b,\ + 00000000b,\ + 00000000b,\ + 00000000b,\ + 00000000b,\ + 00000000b +;; Octothorpe/pound sign/hash/number/etc. '#' +db 00000000b,\ + 00000000b,\ + 00000000b,\ + 00100010b,\ + 00100010b,\ + 00100010b,\ + 11111110b,\ + 01000100b,\ + 01000100b,\ + 11111110b,\ + 10001000b,\ + 10001000b,\ + 10001000b,\ + 00000000b,\ + 00000000b,\ + 00000000b +;; Dollar sign '$' - it's the capital S with a line through it +db 00000000b,\ + 00000000b,\ + 00010000b,\ + 01111100b,\ + 10010010b,\ + 10010010b,\ + 10010000b,\ + 01010000b,\ + 00111100b,\ + 00010010b,\ + 10010010b,\ + 10010010b,\ + 01111100b,\ + 00010000b,\ + 00000000b,\ + 00000000b +;; Percent sign '%' +db 00000000b,\ + 00000000b,\ + 00000000b,\ + 01100010b,\ + 10010100b,\ + 10010100b,\ + 01101000b,\ + 00010000b,\ + 00010000b,\ + 00101100b,\ + 01010010b,\ + 01010010b,\ + 10001100b,\ + 00000000b,\ + 00000000b,\ + 00000000b +;; Ampersand '&' +db 00000000b,\ + 00000000b,\ + 00000000b,\ + 00111000b,\ + 01000100b,\ + 01000100b,\ + 00101000b,\ + 00110000b,\ + 01010010b,\ + 10001010b,\ + 10000100b,\ + 10001100b,\ + 01110010b,\ + 00000000b,\ + 00000000b,\ + 00000000b +;; Single quote ''' +db 00000000b,\ + 00000000b,\ + 00000000b,\ + 00010000b,\ + 00010000b,\ + 00010000b,\ + 00010000b,\ + 00010000b,\ + 00000000b,\ + 00000000b,\ + 00000000b,\ + 00000000b,\ + 00000000b,\ + 00000000b,\ + 00000000b,\ + 00000000b +;; Open paranthesis '(' +db 00000000b,\ + 00000000b,\ + 00000000b,\ + 00010000b,\ + 00100000b,\ + 00100000b,\ + 01000000b,\ + 01000000b,\ + 01000000b,\ + 01000000b,\ + 00100000b,\ + 00100000b,\ + 00010000b,\ + 00000000b,\ + 00000000b,\ + 00000000b +;; Close paranthesis ')' +db 00000000b,\ + 00000000b,\ + 00000000b,\ + 00001000b,\ + 00000100b,\ + 00000100b,\ + 00000010b,\ + 00000010b,\ + 00000010b,\ + 00000010b,\ + 00000100b,\ + 00000100b,\ + 00001000b,\ + 00000000b,\ + 00000000b,\ + 00000000b +;; Asterisk (and Obelisk) '*' +db 00000000b,\ + 00000000b,\ + 00000000b,\ + 00000000b,\ + 00000000b,\ + 00010000b,\ + 10010010b,\ + 01010100b,\ + 00111000b,\ + 01010100b,\ + 10010010b,\ + 00010000b,\ + 00000000b,\ + 00000000b,\ + 00000000b,\ + 00000000b +;; Plus '+' +db 00000000b,\ + 00000000b,\ + 00000000b,\ + 00000000b,\ + 00000000b,\ + 00010000b,\ + 00010000b,\ + 00010000b,\ + 11111110b,\ + 00010000b,\ + 00010000b,\ + 00010000b,\ + 00000000b,\ + 00000000b,\ + 00000000b,\ + 00000000b +;; Comma ',' +db 00000000b,\ + 00000000b,\ + 00000000b,\ + 00000000b,\ + 00000000b,\ + 00000000b,\ + 00000000b,\ + 00000000b,\ + 00000000b,\ + 00000000b,\ + 00000000b,\ + 00011000b,\ + 00001000b,\ + 00001000b,\ + 00010000b,\ + 00000000b +;; Hyphen '-' +db 00000000b,\ + 00000000b,\ + 00000000b,\ + 00000000b,\ + 00000000b,\ + 00000000b,\ + 00000000b,\ + 00000000b,\ + 01111100b,\ + 00000000b,\ + 00000000b,\ + 00000000b,\ + 00000000b,\ + 00000000b,\ + 00000000b,\ + 00000000b +;; Period/dot/fullstop '.' +db 00000000b,\ + 00000000b,\ + 00000000b,\ + 00000000b,\ + 00000000b,\ + 00000000b,\ + 00000000b,\ + 00000000b,\ + 00000000b,\ + 00000000b,\ + 00000000b,\ + 00011000b,\ + 00011000b,\ + 00000000b,\ + 00000000b,\ + 00000000b +;; Divide/forward slash '/' +db 00000000b,\ + 00000000b,\ + 00000000b,\ + 00000010b,\ + 00000100b,\ + 00000100b,\ + 00001000b,\ + 00010000b,\ + 00010000b,\ + 00100000b,\ + 01000000b,\ + 01000000b,\ + 10000000b,\ + 00000000b,\ + 00000000b,\ + 00000000b +;; Zero '0' - starts at ascii 48/30h +db 00000000b,\ + 00000000b,\ + 00000000b,\ + 00111000b,\ + 01000100b,\ + 10000010b,\ + 10000110b,\ + 10001010b,\ + 10010010b,\ + 10100010b,\ + 11000010b,\ + 01000100b,\ + 00111000b,\ + 00000000b,\ + 00000000b,\ + 00000000b +;; One '1' +db 00000000b,\ + 00000000b,\ + 00000000b,\ + 00110000b,\ + 01010000b,\ + 10010000b,\ + 00010000b,\ + 00010000b,\ + 00010000b,\ + 00010000b,\ + 00010000b,\ + 00010000b,\ + 01111100b,\ + 00000000b,\ + 00000000b,\ + 00000000b +;; Two '2' +db 00000000b,\ + 00000000b,\ + 00000000b,\ + 01111100b,\ + 10000010b,\ + 10000010b,\ + 00000010b,\ + 00001100b,\ + 00010000b,\ + 00100000b,\ + 11000000b,\ + 11000000b,\ + 11111110b,\ + 00000000b,\ + 00000000b,\ + 00000000b +;; Three '3' +db 00000000b,\ + 00000000b,\ + 00000000b,\ + 01111100b,\ + 10000010b,\ + 10000010b,\ + 00000010b,\ + 00111100b,\ + 00000010b,\ + 00000010b,\ + 10000010b,\ + 10000010b,\ + 01111100b,\ + 00000000b,\ + 00000000b,\ + 00000000b +;; Four '4' +db 00000000b,\ + 00000000b,\ + 00000000b,\ + 00001100b,\ + 00010100b,\ + 00100100b,\ + 01000100b,\ + 10000100b,\ + 10000100b,\ + 11111110b,\ + 00000100b,\ + 00000100b,\ + 00000100b,\ + 00000000b,\ + 00000000b,\ + 00000000b +;; Five '5' +db 00000000b,\ + 00000000b,\ + 00000000b,\ + 11111110b,\ + 10000000b,\ + 10000000b,\ + 10000000b,\ + 10000000b,\ + 11111100b,\ + 00000010b,\ + 00000010b,\ + 10000010b,\ + 01111100b,\ + 00000000b,\ + 00000000b,\ + 00000000b +;; Six '6' +db 00000000b,\ + 00000000b,\ + 00000000b,\ + 00111110b,\ + 01000000b,\ + 10000000b,\ + 10000000b,\ + 11111100b,\ + 10000010b,\ + 10000010b,\ + 10000010b,\ + 10000010b,\ + 01111100b,\ + 00000000b,\ + 00000000b,\ + 00000000b +;; Seven '7' +db 00000000b,\ + 00000000b,\ + 00000000b,\ + 11111110b,\ + 00000010b,\ + 00000010b,\ + 00000100b,\ + 00000100b,\ + 00000100b,\ + 00001000b,\ + 00001000b,\ + 00001000b,\ + 00001000b,\ + 00000000b,\ + 00000000b,\ + 00000000b +;; Eight '8' +db 00000000b,\ + 00000000b,\ + 00000000b,\ + 01111100b,\ + 10000010b,\ + 10000010b,\ + 10000010b,\ + 01111100b,\ + 10000010b,\ + 10000010b,\ + 10000010b,\ + 10000010b,\ + 01111100b,\ + 00000000b,\ + 00000000b,\ + 00000000b +;; Nine '9' +db 00000000b,\ + 00000000b,\ + 00000000b,\ + 01111100b,\ + 10000010b,\ + 10000010b,\ + 10000010b,\ + 01111110b,\ + 00000010b,\ + 00000010b,\ + 00000010b,\ + 00000100b,\ + 01111000b,\ + 00000000b,\ + 00000000b,\ + 00000000b +;; Colon ':' +db 00000000b,\ + 00000000b,\ + 00000000b,\ + 00000000b,\ + 00000000b,\ + 00000000b,\ + 00000000b,\ + 00011000b,\ + 00011000b,\ + 00000000b,\ + 00000000b,\ + 00011000b,\ + 00011000b,\ + 00000000b,\ + 00000000b,\ + 00000000b +;; Semicolon ';' +db 00000000b,\ + 00000000b,\ + 00000000b,\ + 00000000b,\ + 00000000b,\ + 00000000b,\ + 00000000b,\ + 00011000b,\ + 00011000b,\ + 00000000b,\ + 00000000b,\ + 00011000b,\ + 00001000b,\ + 00001000b,\ + 00010000b,\ + 00000000b +;; Less than '<' +db 00000000b,\ + 00000000b,\ + 00000000b,\ + 00000000b,\ + 00000100b,\ + 00001000b,\ + 00010000b,\ + 00100000b,\ + 01000000b,\ + 00100000b,\ + 00010000b,\ + 00001000b,\ + 00000100b,\ + 00000000b,\ + 00000000b,\ + 00000000b +;; Equal '=' +db 00000000b,\ + 00000000b,\ + 00000000b,\ + 00000000b,\ + 00000000b,\ + 00000000b,\ + 01111110b,\ + 00000000b,\ + 00000000b,\ + 01111110b,\ + 00000000b,\ + 00000000b,\ + 00000000b,\ + 00000000b,\ + 00000000b,\ + 00000000b +;; Greater than '>' +db 00000000b,\ + 00000000b,\ + 00000000b,\ + 00000000b,\ + 00100000b,\ + 00010000b,\ + 00001000b,\ + 00000100b,\ + 00000010b,\ + 00000100b,\ + 00001000b,\ + 00010000b,\ + 00100000b,\ + 00000000b,\ + 00000000b,\ + 00000000b +;; Question mark '?' +db 00000000b,\ + 00000000b,\ + 00000000b,\ + 01111100b,\ + 10000010b,\ + 10000010b,\ + 00000010b,\ + 00000100b,\ + 00001000b,\ + 00001000b,\ + 00000000b,\ + 00001000b,\ + 00001000b,\ + 00000000b,\ + 00000000b,\ + 00000000b +;; At symbol '@' +db 00000000b,\ + 00000000b,\ + 00000000b,\ + 00111100b,\ + 01000010b,\ + 10001010b,\ + 10010110b,\ + 10010010b,\ + 10010010b,\ + 10010010b,\ + 10001110b,\ + 01000000b,\ + 00111110b,\ + 00000000b,\ + 00000000b,\ + 00000000b +;; 'A' - starts at ascii 65/41h +db 00000000b,\ + 00000000b,\ + 00000000b,\ + 00010000b,\ + 00101000b,\ + 01000100b,\ + 10000010b,\ + 10000010b,\ + 11111110b,\ + 10000010b,\ + 10000010b,\ + 10000010b,\ + 10000010b,\ + 00000000b,\ + 00000000b,\ + 00000000b +;; 'B' +db 00000000b,\ + 00000000b,\ + 00000000b,\ + 11111100b,\ + 10000010b,\ + 10000010b,\ + 10000010b,\ + 11111100b,\ + 10000010b,\ + 10000010b,\ + 10000010b,\ + 10000010b,\ + 11111100b,\ + 00000000b,\ + 00000000b,\ + 00000000b +;; 'C' +db 00000000b,\ + 00000000b,\ + 00000000b,\ + 01111100b,\ + 10000010b,\ + 10000010b,\ + 10000000b,\ + 10000000b,\ + 10000000b,\ + 10000000b,\ + 10000010b,\ + 10000010b,\ + 01111100b,\ + 00000000b,\ + 00000000b,\ + 00000000b +;; 'D' +db 00000000b,\ + 00000000b,\ + 00000000b,\ + 11111000b,\ + 10000100b,\ + 10000010b,\ + 10000010b,\ + 10000010b,\ + 10000010b,\ + 10000010b,\ + 10000010b,\ + 10000100b,\ + 11111000b,\ + 00000000b,\ + 00000000b,\ + 00000000b +;; 'E' +db 00000000b,\ + 00000000b,\ + 00000000b,\ + 11111110b,\ + 10000000b,\ + 10000000b,\ + 10000000b,\ + 10000000b,\ + 11111100b,\ + 10000000b,\ + 10000000b,\ + 10000000b,\ + 11111110b,\ + 00000000b,\ + 00000000b,\ + 00000000b +;; 'F' +db 00000000b,\ + 00000000b,\ + 00000000b,\ + 11111110b,\ + 10000000b,\ + 10000000b,\ + 10000000b,\ + 10000000b,\ + 11111100b,\ + 10000000b,\ + 10000000b,\ + 10000000b,\ + 10000000b,\ + 00000000b,\ + 00000000b,\ + 00000000b +;; 'G' +db 00000000b,\ + 00000000b,\ + 00000000b,\ + 01111100b,\ + 10000010b,\ + 10000010b,\ + 10000000b,\ + 10000000b,\ + 10011110b,\ + 10000010b,\ + 10000010b,\ + 10000110b,\ + 01111010b,\ + 00000000b,\ + 00000000b,\ + 00000000b +;; 'H' +db 00000000b,\ + 00000000b,\ + 00000000b,\ + 10000010b,\ + 10000010b,\ + 10000010b,\ + 10000010b,\ + 10000010b,\ + 11111110b,\ + 10000010b,\ + 10000010b,\ + 10000010b,\ + 10000010b,\ + 00000000b,\ + 00000000b,\ + 00000000b +;; 'I' +db 00000000b,\ + 00000000b,\ + 00000000b,\ + 11111110b,\ + 00010000b,\ + 00010000b,\ + 00010000b,\ + 00010000b,\ + 00010000b,\ + 00010000b,\ + 00010000b,\ + 00010000b,\ + 11111110b,\ + 00000000b,\ + 00000000b,\ + 00000000b +;; 'J' +db 00000000b,\ + 00000000b,\ + 00000000b,\ + 00111110b,\ + 00001000b,\ + 00001000b,\ + 00001000b,\ + 00001000b,\ + 00001000b,\ + 00001000b,\ + 10001000b,\ + 10001000b,\ + 01110000b,\ + 00000000b,\ + 00000000b,\ + 00000000b +;; 'K' +db 00000000b,\ + 00000000b,\ + 00000000b,\ + 10000100b,\ + 10001000b,\ + 10010000b,\ + 10100000b,\ + 11000000b,\ + 11000000b,\ + 10100000b,\ + 10010000b,\ + 10001000b,\ + 10000100b,\ + 00000000b,\ + 00000000b,\ + 00000000b +;; 'L' +db 00000000b,\ + 00000000b,\ + 00000000b,\ + 10000000b,\ + 10000000b,\ + 10000000b,\ + 10000000b,\ + 10000000b,\ + 10000000b,\ + 10000000b,\ + 10000000b,\ + 10000000b,\ + 11111110b,\ + 00000000b,\ + 00000000b,\ + 00000000b +;; 'M' +db 00000000b,\ + 00000000b,\ + 00000000b,\ + 10000010b,\ + 10000010b,\ + 11000110b,\ + 11000110b,\ + 10101010b,\ + 10010010b,\ + 10000010b,\ + 10000010b,\ + 10000010b,\ + 10000010b,\ + 00000000b,\ + 00000000b,\ + 00000000b +;; 'N' +db 00000000b,\ + 00000000b,\ + 00000000b,\ + 10000010b,\ + 11000010b,\ + 11000010b,\ + 10100010b,\ + 10100010b,\ + 10010010b,\ + 10010010b,\ + 10001010b,\ + 10001010b,\ + 10000110b,\ + 00000000b,\ + 00000000b,\ + 00000000b +;; 'O' +db 00000000b,\ + 00000000b,\ + 00000000b,\ + 01111100b,\ + 10000010b,\ + 10000010b,\ + 10000010b,\ + 10000010b,\ + 10000010b,\ + 10000010b,\ + 10000010b,\ + 10000010b,\ + 01111100b,\ + 00000000b,\ + 00000000b,\ + 00000000b +;; 'P' +db 00000000b,\ + 00000000b,\ + 00000000b,\ + 11111100b,\ + 10000010b,\ + 10000010b,\ + 10000010b,\ + 11111100b,\ + 10000000b,\ + 10000000b,\ + 10000000b,\ + 10000000b,\ + 10000000b,\ + 00000000b,\ + 00000000b,\ + 00000000b +;; 'Q' +db 00000000b,\ + 00000000b,\ + 00000000b,\ + 01111100b,\ + 10000010b,\ + 10000010b,\ + 10000010b,\ + 10000010b,\ + 10000010b,\ + 10000010b,\ + 10110010b,\ + 11001010b,\ + 01111100b,\ + 00000110b,\ + 00000000b,\ + 00000000b +;; 'R' +db 00000000b,\ + 00000000b,\ + 00000000b,\ + 11111100b,\ + 10000010b,\ + 10000010b,\ + 10000010b,\ + 11111100b,\ + 10001000b,\ + 10000100b,\ + 10000100b,\ + 10000010b,\ + 10000010b,\ + 00000000b,\ + 00000000b,\ + 00000000b +;; 'S' +db 00000000b,\ + 00000000b,\ + 00000000b,\ + 01111100b,\ + 10000010b,\ + 10000010b,\ + 01000000b,\ + 00110000b,\ + 00001100b,\ + 00000010b,\ + 10000010b,\ + 10000010b,\ + 01111100b,\ + 00000000b,\ + 00000000b,\ + 00000000b +;; 'T' +db 00000000b,\ + 00000000b,\ + 00000000b,\ + 11111110b,\ + 00010000b,\ + 00010000b,\ + 00010000b,\ + 00010000b,\ + 00010000b,\ + 00010000b,\ + 00010000b,\ + 00010000b,\ + 00010000b,\ + 00000000b,\ + 00000000b,\ + 00000000b +;; 'U' +db 00000000b,\ + 00000000b,\ + 00000000b,\ + 10000010b,\ + 10000010b,\ + 10000010b,\ + 10000010b,\ + 10000010b,\ + 10000010b,\ + 10000010b,\ + 10000010b,\ + 10000010b,\ + 01111100b,\ + 00000000b,\ + 00000000b,\ + 00000000b +;; 'V' +db 00000000b,\ + 00000000b,\ + 00000000b,\ + 10000010b,\ + 10000010b,\ + 10000010b,\ + 10000010b,\ + 01000100b,\ + 01000100b,\ + 01000100b,\ + 00101000b,\ + 00101000b,\ + 00010000b,\ + 00000000b,\ + 00000000b,\ + 00000000b +;; 'W' +db 00000000b,\ + 00000000b,\ + 00000000b,\ + 10000010b,\ + 10000010b,\ + 10000010b,\ + 10000010b,\ + 10010010b,\ + 10101010b,\ + 11000110b,\ + 11000110b,\ + 10000010b,\ + 10000010b,\ + 00000000b,\ + 00000000b,\ + 00000000b +;; 'X' +db 00000000b,\ + 00000000b,\ + 00000000b,\ + 10000100b,\ + 10000100b,\ + 01001000b,\ + 01001000b,\ + 00110000b,\ + 00110000b,\ + 01001000b,\ + 01001000b,\ + 10000100b,\ + 10000100b,\ + 00000000b,\ + 00000000b,\ + 00000000b +;; 'Y' +db 00000000b,\ + 00000000b,\ + 00000000b,\ + 10000010b,\ + 10000010b,\ + 01000100b,\ + 01000100b,\ + 00101000b,\ + 00010000b,\ + 00010000b,\ + 00010000b,\ + 00010000b,\ + 00010000b,\ + 00000000b,\ + 00000000b,\ + 00000000b +;; 'Z' +db 00000000b,\ + 00000000b,\ + 00000000b,\ + 11111110b,\ + 00000010b,\ + 00000010b,\ + 00000100b,\ + 00001000b,\ + 00010000b,\ + 00100000b,\ + 01000000b,\ + 10000000b,\ + 11111110b,\ + 00000000b,\ + 00000000b,\ + 00000000b +;; Open bracket '[' +db 00000000b,\ + 00000000b,\ + 00000000b,\ + 11110000b,\ + 10000000b,\ + 10000000b,\ + 10000000b,\ + 10000000b,\ + 10000000b,\ + 10000000b,\ + 10000000b,\ + 10000000b,\ + 11110000b,\ + 00000000b,\ + 00000000b,\ + 00000000b +;; Backslash '\' +db 00000000b,\ + 00000000b,\ + 00000000b,\ + 10000000b,\ + 10000000b,\ + 01000000b,\ + 00100000b,\ + 00100000b,\ + 00010000b,\ + 00001000b,\ + 00001000b,\ + 00000100b,\ + 00000010b,\ + 00000000b,\ + 00000000b,\ + 00000000b +;; Close bracket ']' +db 00000000b,\ + 00000000b,\ + 00000000b,\ + 00011110b,\ + 00000010b,\ + 00000010b,\ + 00000010b,\ + 00000010b,\ + 00000010b,\ + 00000010b,\ + 00000010b,\ + 00000010b,\ + 00011110b,\ + 00000000b,\ + 00000000b,\ + 00000000b +;; Caret '^' +db 00000000b,\ + 00000000b,\ + 00000000b,\ + 00111000b,\ + 01000100b,\ + 10000010b,\ + 00000000b,\ + 00000000b,\ + 00000000b,\ + 00000000b,\ + 00000000b,\ + 00000000b,\ + 00000000b,\ + 00000000b,\ + 00000000b,\ + 00000000b +;; Underscore '_' +db 00000000b,\ + 00000000b,\ + 00000000b,\ + 00000000b,\ + 00000000b,\ + 00000000b,\ + 00000000b,\ + 00000000b,\ + 00000000b,\ + 00000000b,\ + 00000000b,\ + 00000000b,\ + 01111110b,\ + 00000000b,\ + 00000000b,\ + 00000000b +;; Backtick/grave '`' +db 00000000b,\ + 00000000b,\ + 00000000b,\ + 00001000b,\ + 00000100b,\ + 00000010b,\ + 00000000b,\ + 00000000b,\ + 00000000b,\ + 00000000b,\ + 00000000b,\ + 00000000b,\ + 00000000b,\ + 00000000b,\ + 00000000b,\ + 00000000b +;; 'a' - starts at ascii 97/61h +db 00000000b,\ + 00000000b,\ + 00000000b,\ + 00000000b,\ + 00000000b,\ + 01111100b,\ + 10000010b,\ + 00000010b,\ + 01111110b,\ + 10000010b,\ + 10000010b,\ + 10000110b,\ + 01111010b,\ + 00000000b,\ + 00000000b,\ + 00000000b +;; 'b' +db 00000000b,\ + 00000000b,\ + 10000000b,\ + 10000000b,\ + 10000000b,\ + 10111100b,\ + 11000010b,\ + 10000010b,\ + 10000010b,\ + 10000010b,\ + 10000010b,\ + 11000010b,\ + 10111100b,\ + 00000000b,\ + 00000000b,\ + 00000000b +;; 'c' +db 00000000b,\ + 00000000b,\ + 00000000b,\ + 00000000b,\ + 00000000b,\ + 01111100b,\ + 10000010b,\ + 10000000b,\ + 10000000b,\ + 10000000b,\ + 10000000b,\ + 10000010b,\ + 01111100b,\ + 00000000b,\ + 00000000b,\ + 00000000b +;; 'd' +db 00000000b,\ + 00000000b,\ + 00000010b,\ + 00000010b,\ + 00000010b,\ + 01111010b,\ + 10000110b,\ + 10000010b,\ + 10000010b,\ + 10000010b,\ + 10000010b,\ + 10000110b,\ + 01111010b,\ + 00000000b,\ + 00000000b,\ + 00000000b +;; 'e' +db 00000000b,\ + 00000000b,\ + 00000000b,\ + 00000000b,\ + 00000000b,\ + 01111100b,\ + 10000010b,\ + 10000010b,\ + 11111110b,\ + 10000000b,\ + 10000000b,\ + 10000010b,\ + 01111100b,\ + 00000000b,\ + 00000000b,\ + 00000000b +;; 'f' +db 00000000b,\ + 00000000b,\ + 00001110b,\ + 00010000b,\ + 00010000b,\ + 00010000b,\ + 00010000b,\ + 11111110b,\ + 00010000b,\ + 00010000b,\ + 00010000b,\ + 00010000b,\ + 00010000b,\ + 00000000b,\ + 00000000b,\ + 00000000b +;; 'g' +db 00000000b,\ + 00000000b,\ + 00000000b,\ + 00000000b,\ + 00000010b,\ + 01111100b,\ + 10000100b,\ + 10000100b,\ + 10000100b,\ + 01111000b,\ + 01000000b,\ + 01111100b,\ + 00000010b,\ + 00000010b,\ + 01111100b,\ + 00000000b +;; 'h' +db 00000000b,\ + 00000000b,\ + 10000000b,\ + 10000000b,\ + 10000000b,\ + 10000000b,\ + 10111100b,\ + 11000010b,\ + 10000010b,\ + 10000010b,\ + 10000010b,\ + 10000010b,\ + 10000010b,\ + 00000000b,\ + 00000000b,\ + 00000000b +;; 'i' +db 00000000b,\ + 00000000b,\ + 00000000b,\ + 00010000b,\ + 00010000b,\ + 00000000b,\ + 00110000b,\ + 00010000b,\ + 00010000b,\ + 00010000b,\ + 00010000b,\ + 00010000b,\ + 01111100b,\ + 00000000b,\ + 00000000b,\ + 00000000b +;; 'j' +db 00000000b,\ + 00000000b,\ + 00000000b,\ + 00001000b,\ + 00001000b,\ + 00000000b,\ + 00011000b,\ + 00001000b,\ + 00001000b,\ + 00001000b,\ + 00001000b,\ + 00001000b,\ + 00001000b,\ + 10010000b,\ + 01100000b,\ + 00000000b +;; 'k' +db 00000000b,\ + 00000000b,\ + 10000000b,\ + 10000000b,\ + 10000100b,\ + 10001000b,\ + 10010000b,\ + 10100000b,\ + 11000000b,\ + 10100000b,\ + 10010000b,\ + 10001000b,\ + 10000100b,\ + 00000000b,\ + 00000000b,\ + 00000000b +;; 'l' +db 00000000b,\ + 00000000b,\ + 00110000b,\ + 00010000b,\ + 00010000b,\ + 00010000b,\ + 00010000b,\ + 00010000b,\ + 00010000b,\ + 00010000b,\ + 00010000b,\ + 00010000b,\ + 01111100b,\ + 00000000b,\ + 00000000b,\ + 00000000b +;; 'm' +db 00000000b,\ + 00000000b,\ + 00000000b,\ + 00000000b,\ + 00000000b,\ + 11101100b,\ + 10010010b,\ + 10010010b,\ + 10010010b,\ + 10010010b,\ + 10010010b,\ + 10010010b,\ + 10010010b,\ + 00000000b,\ + 00000000b,\ + 00000000b +;; 'n' +db 00000000b,\ + 00000000b,\ + 00000000b,\ + 00000000b,\ + 00000000b,\ + 10111100b,\ + 11000010b,\ + 10000010b,\ + 10000010b,\ + 10000010b,\ + 10000010b,\ + 10000010b,\ + 10000010b,\ + 00000000b,\ + 00000000b,\ + 00000000b +;; 'o' +db 00000000b,\ + 00000000b,\ + 00000000b,\ + 00000000b,\ + 00000000b,\ + 01111100b,\ + 10000010b,\ + 10000010b,\ + 10000010b,\ + 10000010b,\ + 10000010b,\ + 10000010b,\ + 01111100b,\ + 00000000b,\ + 00000000b,\ + 00000000b +;; 'p' +db 00000000b,\ + 00000000b,\ + 00000000b,\ + 00000000b,\ + 00000000b,\ + 10111100b,\ + 11000010b,\ + 10000010b,\ + 10000010b,\ + 10000010b,\ + 10000010b,\ + 11000010b,\ + 10111100b,\ + 10000000b,\ + 10000000b,\ + 00000000b +;; 'q' +db 00000000b,\ + 00000000b,\ + 00000000b,\ + 00000000b,\ + 00000000b,\ + 01111010b,\ + 10000110b,\ + 10000010b,\ + 10000010b,\ + 10000010b,\ + 10000010b,\ + 10000110b,\ + 01111010b,\ + 00000010b,\ + 00000010b,\ + 00000000b +;; 'r' +db 00000000b,\ + 00000000b,\ + 00000000b,\ + 00000000b,\ + 00000000b,\ + 10111100b,\ + 11000010b,\ + 10000010b,\ + 10000000b,\ + 10000000b,\ + 10000000b,\ + 10000000b,\ + 10000000b,\ + 00000000b,\ + 00000000b,\ + 00000000b +;; 's' +db 00000000b,\ + 00000000b,\ + 00000000b,\ + 00000000b,\ + 00000000b,\ + 01111100b,\ + 10000010b,\ + 10000000b,\ + 01100000b,\ + 00011100b,\ + 00000010b,\ + 10000010b,\ + 01111100b,\ + 00000000b,\ + 00000000b,\ + 00000000b +;; 't' +db 00000000b,\ + 00000000b,\ + 00000000b,\ + 00010000b,\ + 00010000b,\ + 00010000b,\ + 01111100b,\ + 00010000b,\ + 00010000b,\ + 00010000b,\ + 00010000b,\ + 00010000b,\ + 00001100b,\ + 00000000b,\ + 00000000b,\ + 00000000b +;; 'u' +db 00000000b,\ + 00000000b,\ + 00000000b,\ + 00000000b,\ + 00000000b,\ + 10000010b,\ + 10000010b,\ + 10000010b,\ + 10000010b,\ + 10000010b,\ + 10000010b,\ + 10000110b,\ + 01111010b,\ + 00000000b,\ + 00000000b,\ + 00000000b +;; 'v' +db 00000000b,\ + 00000000b,\ + 00000000b,\ + 00000000b,\ + 00000000b,\ + 10000010b,\ + 10000010b,\ + 10000010b,\ + 01000100b,\ + 01000100b,\ + 00101000b,\ + 00111000b,\ + 00010000b,\ + 00000000b,\ + 00000000b,\ + 00000000b +;; 'w' +db 00000000b,\ + 00000000b,\ + 00000000b,\ + 00000000b,\ + 00000000b,\ + 10000010b,\ + 10010010b,\ + 10010010b,\ + 10010010b,\ + 10010010b,\ + 10010010b,\ + 10010010b,\ + 01101100b,\ + 00000000b,\ + 00000000b,\ + 00000000b +;; 'x' +db 00000000b,\ + 00000000b,\ + 00000000b,\ + 00000000b,\ + 00000000b,\ + 10000010b,\ + 10000010b,\ + 01000100b,\ + 01000100b,\ + 00111000b,\ + 01000100b,\ + 10000010b,\ + 10000010b,\ + 00000000b,\ + 00000000b,\ + 00000000b +;; 'y' +db 00000000b,\ + 00000000b,\ + 00000000b,\ + 00000000b,\ + 00000000b,\ + 10000010b,\ + 10000010b,\ + 10000010b,\ + 10000010b,\ + 01000110b,\ + 00111010b,\ + 00000010b,\ + 00000010b,\ + 00000010b,\ + 01111100b,\ + 00000000b +;; 'z' +db 00000000b,\ + 00000000b,\ + 00000000b,\ + 00000000b,\ + 00000000b,\ + 11111110b,\ + 00000010b,\ + 00000100b,\ + 00001000b,\ + 00010000b,\ + 00100000b,\ + 01000000b,\ + 11111110b,\ + 00000000b,\ + 00000000b,\ + 00000000b +;; Open brace '{' +db 00000000b,\ + 00000000b,\ + 00111000b,\ + 01000000b,\ + 01000000b,\ + 00100000b,\ + 00100000b,\ + 01000000b,\ + 10000000b,\ + 01000000b,\ + 00100000b,\ + 00100000b,\ + 01000000b,\ + 01000000b,\ + 00111000b,\ + 00000000b +;; Vertical bar '|' +db 00000000b,\ + 00010000b,\ + 00010000b,\ + 00010000b,\ + 00010000b,\ + 00010000b,\ + 00010000b,\ + 00010000b,\ + 00010000b,\ + 00010000b,\ + 00010000b,\ + 00010000b,\ + 00010000b,\ + 00010000b,\ + 00010000b,\ + 00000000b +;; Close brace '}' +db 00000000b,\ + 00000000b,\ + 00111000b,\ + 00000100b,\ + 00000100b,\ + 00001000b,\ + 00001000b,\ + 00000100b,\ + 00000010b,\ + 00000100b,\ + 00001000b,\ + 00001000b,\ + 00000100b,\ + 00000100b,\ + 00111000b,\ + 00000000b +;; Tilde '~' +db 00000000b,\ + 00000000b,\ + 00000000b,\ + 00000000b,\ + 00000000b,\ + 00000000b,\ + 01100000b,\ + 10010010b,\ + 10010010b,\ + 00001100b,\ + 00000000b,\ + 00000000b,\ + 00000000b,\ + 00000000b,\ + 00000000b,\ + 00000000b +;; Extra char for a visible 'cursor' - normally ascii 127 is 'delete' +db 00000000b,\ + 00000000b,\ + 00000000b,\ + 00000000b,\ + 00000000b,\ + 00000000b,\ + 00000000b,\ + 00000000b,\ + 00000000b,\ + 00000000b,\ + 00000000b,\ + 00000000b,\ + 00000000b,\ + 00000000b,\ + 00000000b,\ + 11111110b + +;; End of visible ascii characters + times 2048-($-$$) db 0 + diff --git a/src/fonts/testfont.fnt b/usr/fonts/testfont.fnt similarity index 100% rename from src/fonts/testfont.fnt rename to usr/fonts/testfont.fnt diff --git a/src/fs/test.txt b/usr/test.txt similarity index 100% rename from src/fs/test.txt rename to usr/test.txt