diff --git a/.gitignore b/.gitignore index 127eb5d8..b44a7db6 100644 --- a/.gitignore +++ b/.gitignore @@ -15,4 +15,6 @@ *.hdd *.o *.d -/zealbooter/limine.h +/zealbooter/src/limine.h +/zealbooter/bin +/zealbooter/obj diff --git a/build/build-iso.sh b/build/build-iso.sh index 2c62dc60..2868c9db 100755 --- a/build/build-iso.sh +++ b/build/build-iso.sh @@ -105,7 +105,7 @@ sudo cp limine/BOOTX64.EFI $TMPISODIR/EFI/BOOT/BOOTX64.EFI sudo cp limine/limine-uefi-cd.bin $TMPISODIR/Boot/Limine-UEFI-CD.BIN sudo cp limine/limine-bios-cd.bin $TMPISODIR/Boot/Limine-BIOS-CD.BIN sudo cp limine/limine-bios.sys $TMPISODIR/Boot/Limine-BIOS.SYS -sudo cp ../zealbooter/zealbooter.elf $TMPISODIR/Boot/ZealBooter.ELF +sudo cp ../zealbooter/bin/kernel $TMPISODIR/Boot/ZealBooter.ELF sudo cp ../zealbooter/Limine.CFG $TMPISODIR/Boot/Limine.CFG echo "Copying DVDKernel.ZXE over ISO Boot/Kernel.ZXE ..." sudo mv $TMPMOUNT/Tmp/DVDKernel.ZXE $TMPISODIR/Boot/Kernel.ZXE diff --git a/build/sync.sh b/build/sync.sh index 54227f8c..152cb605 100755 --- a/build/sync.sh +++ b/build/sync.sh @@ -44,11 +44,11 @@ DOCS_DIR= TMPMOUNT=/tmp/zealtmp print_usage() { - echo "Usage: $0 [ repo | vm ]" - echo - echo " repo - overwrites src/ with virtual disk contents." - echo " vm - overwrites virtual disk with src/ contents." - echo + echo "Usage: $0 ( repo | vm ) [OPTION]" + echo " repo Overwrites src/ with virtual disk contents." + echo " vm Overwrites virtual disk with src/ contents." + echo "Options:" + echo " --ignore-dots Ignore dotfiles/dotfolders during synchronize." } mount_vdisk() { @@ -94,8 +94,17 @@ else ;; vm) mount_vdisk - echo "Copying src to vdisk..." - sudo cp -r ../src/* $TMPMOUNT + case $2 in + --ignore-dots | --dots) + echo "Copying src to vdisk ignoring dotfiles and dotfolders..." + cd ../src/ + sudo find . \( ! -path './.*' -and ! -name '.*' \) -and ! -path '*/.*/*' -type f -exec cp --parents {} $TMPMOUNT/ \; + ;; + *) + echo "Copying entire src to vdisk..." + sudo cp -r ../src/* $TMPMOUNT + ;; + esac umount_vdisk echo "Finished." ;; diff --git a/src/Doc/GuideLines.DD b/src/Doc/GuideLines.DD index 1aafbff1..e73e8843 100755 --- a/src/Doc/GuideLines.DD +++ b/src/Doc/GuideLines.DD @@ -129,5 +129,5 @@ $FG$ * No args are passed in registers. * RAX holds function return values, of course. -$FG,8$ -* "MagicISO" is a trademark owned by MagicISO Corp. + + diff --git a/src/Kernel/StrB.ZC b/src/Kernel/StrB.ZC index 89bb0cfb..631c96b4 100755 --- a/src/Kernel/StrB.ZC +++ b/src/Kernel/StrB.ZC @@ -212,7 +212,7 @@ U8 *FlagsStrPrint(U8 *dst, U8 *list, I64 flags, Bool print_all=FALSE, I64 print_ I64 i = 0; *dst = 0; - if (!print_all_length) + if (!print_all_length || print_all_length > 64) print_all_length = 64; while (i < print_all_length) { diff --git a/src/Kernel/StrScan.ZC b/src/Kernel/StrScan.ZC index d785e5a2..5dd2a2df 100755 --- a/src/Kernel/StrScan.ZC +++ b/src/Kernel/StrScan.ZC @@ -1,5 +1,5 @@ I64 Str2I64(U8 *st, I64 radix=10, U8 **_end_ptr=NULL) -{//String to I64. Similar to strtoul(). +{//String to I64. Similar to strtol(). //Allows radix change with "0x20" "0b1010" "0d123" "0o18". //Be careful of Str2I64("0b101", 16)-->0xB101. Bool neg = FALSE; @@ -32,6 +32,7 @@ I64 Str2I64(U8 *st, I64 radix=10, U8 **_end_ptr=NULL) switch (ch) { case 'B': radix = 2; st++; break; + case 'O': radix = 8; st++; break; case 'D': radix = 10; st++; break; case 'X': radix = 16; st++; break; } diff --git a/zealbooter/GNUmakefile b/zealbooter/GNUmakefile index 54eca6ed..33ca7959 100644 --- a/zealbooter/GNUmakefile +++ b/zealbooter/GNUmakefile @@ -3,7 +3,7 @@ override MAKEFLAGS += -rR # This is the name that our final kernel executable will have. # Change as needed. -override KERNEL := zealbooter.elf +override KERNEL := kernel # Convenience macro to reliably declare user overridable variables. define DEFAULT_VAR = @@ -15,8 +15,8 @@ define DEFAULT_VAR = endif endef -# It is highly recommended to use a custom built cross toolchain to build a kernel. -# We are only using "cc" as a placeholder here. It may work by using +# It is suggested to use a custom built cross toolchain to build a kernel. +# We are using the standard "cc" here, it may work by using # the host system's toolchain, but this is not guaranteed. override DEFAULT_CC := cc $(eval $(call DEFAULT_VAR,CC,$(DEFAULT_CC))) @@ -54,7 +54,6 @@ override CFLAGS += \ -fno-PIC \ -m64 \ -march=x86-64 \ - -mabi=sysv \ -mno-80387 \ -mno-mmx \ -mno-sse \ @@ -64,8 +63,8 @@ override CFLAGS += \ # Internal C preprocessor flags that should not be changed by the user. override CPPFLAGS := \ - -I. \ - -I./lib \ + -I src \ + -I src/lib \ $(CPPFLAGS) \ -MMD \ -MP @@ -90,43 +89,47 @@ override NASMFLAGS += \ # Use "find" to glob all *.c, *.S, and *.asm files in the tree and obtain the # object and header dependency file names. -override CFILES := $(shell find -L . -type f -name '*.c') -override ASFILES := $(shell find -L . -type f -name '*.S') -override NASMFILES := $(shell find -L . -type f -name '*.asm') -override OBJ := $(CFILES:.c=.c.o) $(ASFILES:.S=.S.o) $(NASMFILES:.asm=.asm.o) -override HEADER_DEPS := $(CFILES:.c=.c.d) $(ASFILES:.S=.S.d) +override CFILES := $(shell cd src && find -L . -type f -name '*.c') +override ASFILES := $(shell cd src && find -L . -type f -name '*.S') +override NASMFILES := $(shell cd src && find -L . -type f -name '*.asm') +override OBJ := $(addprefix obj/,$(CFILES:.c=.c.o) $(ASFILES:.S=.S.o) $(NASMFILES:.asm=.asm.o)) +override HEADER_DEPS := $(addprefix obj/,$(CFILES:.c=.c.d) $(ASFILES:.S=.S.d)) # Default target. .PHONY: all -all: $(KERNEL) +all: bin/$(KERNEL) -limine.h: - curl -Lo $@ https://github.com/limine-bootloader/limine/raw/trunk/limine.h || cp ../build/limine/limine.h limine.h || echo "ERROR" +src/limine.h: + curl -Lo $@ https://github.com/limine-bootloader/limine/raw/trunk/limine.h || cp ../build/limine/limine.h src/limine.h || echo "ERROR" # Link rules for the final kernel executable. -$(KERNEL): $(OBJ) +bin/$(KERNEL): GNUmakefile linker.ld $(OBJ) + mkdir -p "$$(dirname $@)" $(LD) $(OBJ) $(LDFLAGS) -o $@ # Include header dependencies. -include $(HEADER_DEPS) # Compilation rules for *.c files. -%.c.o: %.c limine.h +obj/%.c.o: src/%.c GNUmakefile src/limine.h + mkdir -p "$$(dirname $@)" $(CC) $(CFLAGS) $(CPPFLAGS) -c $< -o $@ # Compilation rules for *.S files. -%.S.o: %.S limine.h +obj/%.S.o: src/%.S GNUmakefile src/limine.h + mkdir -p "$$(dirname $@)" $(CC) $(CFLAGS) $(CPPFLAGS) -c $< -o $@ # Compilation rules for *.asm (nasm) files. -%.asm.o: %.asm +obj/%.asm.o: src/%.asm GNUmakefile + mkdir -p "$$(dirname $@)" nasm $(NASMFLAGS) $< -o $@ # Remove object files and the final executable. .PHONY: clean clean: - rm -rf $(KERNEL) $(OBJ) $(HEADER_DEPS) + rm -rf bin obj .PHONY: distclean distclean: clean - rm -f limine.h + rm -f src/limine.h diff --git a/zealbooter/lib.c b/zealbooter/src/lib.c similarity index 100% rename from zealbooter/lib.c rename to zealbooter/src/lib.c diff --git a/zealbooter/lib.h b/zealbooter/src/lib.h similarity index 100% rename from zealbooter/lib.h rename to zealbooter/src/lib.h diff --git a/zealbooter/lib/memcmp.c b/zealbooter/src/lib/memcmp.c similarity index 100% rename from zealbooter/lib/memcmp.c rename to zealbooter/src/lib/memcmp.c diff --git a/zealbooter/lib/memcmp.h b/zealbooter/src/lib/memcmp.h similarity index 100% rename from zealbooter/lib/memcmp.h rename to zealbooter/src/lib/memcmp.h diff --git a/zealbooter/lib/memcpy.c b/zealbooter/src/lib/memcpy.c similarity index 100% rename from zealbooter/lib/memcpy.c rename to zealbooter/src/lib/memcpy.c diff --git a/zealbooter/lib/memcpy.h b/zealbooter/src/lib/memcpy.h similarity index 100% rename from zealbooter/lib/memcpy.h rename to zealbooter/src/lib/memcpy.h diff --git a/zealbooter/lib/memmove.c b/zealbooter/src/lib/memmove.c similarity index 100% rename from zealbooter/lib/memmove.c rename to zealbooter/src/lib/memmove.c diff --git a/zealbooter/lib/memmove.h b/zealbooter/src/lib/memmove.h similarity index 100% rename from zealbooter/lib/memmove.h rename to zealbooter/src/lib/memmove.h diff --git a/zealbooter/lib/memset.c b/zealbooter/src/lib/memset.c similarity index 100% rename from zealbooter/lib/memset.c rename to zealbooter/src/lib/memset.c diff --git a/zealbooter/lib/memset.h b/zealbooter/src/lib/memset.h similarity index 100% rename from zealbooter/lib/memset.h rename to zealbooter/src/lib/memset.h diff --git a/zealbooter/lib/print.c b/zealbooter/src/lib/print.c similarity index 100% rename from zealbooter/lib/print.c rename to zealbooter/src/lib/print.c diff --git a/zealbooter/lib/print.h b/zealbooter/src/lib/print.h similarity index 100% rename from zealbooter/lib/print.h rename to zealbooter/src/lib/print.h diff --git a/zealbooter/lib/stb_sprintf.h b/zealbooter/src/lib/stb_sprintf.h similarity index 100% rename from zealbooter/lib/stb_sprintf.h rename to zealbooter/src/lib/stb_sprintf.h diff --git a/zealbooter/lib/strcmp.c b/zealbooter/src/lib/strcmp.c similarity index 100% rename from zealbooter/lib/strcmp.c rename to zealbooter/src/lib/strcmp.c diff --git a/zealbooter/lib/strcmp.h b/zealbooter/src/lib/strcmp.h similarity index 100% rename from zealbooter/lib/strcmp.h rename to zealbooter/src/lib/strcmp.h diff --git a/zealbooter/lib/strcpy.c b/zealbooter/src/lib/strcpy.c similarity index 100% rename from zealbooter/lib/strcpy.c rename to zealbooter/src/lib/strcpy.c diff --git a/zealbooter/lib/strcpy.h b/zealbooter/src/lib/strcpy.h similarity index 100% rename from zealbooter/lib/strcpy.h rename to zealbooter/src/lib/strcpy.h diff --git a/zealbooter/lib/strlen.c b/zealbooter/src/lib/strlen.c similarity index 100% rename from zealbooter/lib/strlen.c rename to zealbooter/src/lib/strlen.c diff --git a/zealbooter/lib/strlen.h b/zealbooter/src/lib/strlen.h similarity index 100% rename from zealbooter/lib/strlen.h rename to zealbooter/src/lib/strlen.h diff --git a/zealbooter/lib/strncmp.c b/zealbooter/src/lib/strncmp.c similarity index 100% rename from zealbooter/lib/strncmp.c rename to zealbooter/src/lib/strncmp.c diff --git a/zealbooter/lib/strncmp.h b/zealbooter/src/lib/strncmp.h similarity index 100% rename from zealbooter/lib/strncmp.h rename to zealbooter/src/lib/strncmp.h diff --git a/zealbooter/lib/strncpy.c b/zealbooter/src/lib/strncpy.c similarity index 100% rename from zealbooter/lib/strncpy.c rename to zealbooter/src/lib/strncpy.c diff --git a/zealbooter/lib/strncpy.h b/zealbooter/src/lib/strncpy.h similarity index 100% rename from zealbooter/lib/strncpy.h rename to zealbooter/src/lib/strncpy.h diff --git a/zealbooter/trampoline.S b/zealbooter/src/trampoline.S similarity index 100% rename from zealbooter/trampoline.S rename to zealbooter/src/trampoline.S diff --git a/zealbooter/zealbooter.c b/zealbooter/src/zealbooter.c similarity index 100% rename from zealbooter/zealbooter.c rename to zealbooter/src/zealbooter.c