refactor: rework folder organization
+ 18
- 11
@@ -1,17 +1,17 @@
 #!/bin/bash
 
-# Build
-
+# Setup/cleanup
 mkdir {bin,build} 2> /dev/null
 
 echo -e "Cleaning artifacts..."
 rm *.bin *.img *.iso *.o *.vmdk 2> /dev/null
 
+# Build
 echo -e "Building bootloader (asm)..."
-nasm ./boot/bootloader.asm -I ./boot/ -o ./bin/bootloader.bin || exit 1
+nasm ./src/boot/bootloader.asm -I ./src/boot/ -o ./bin/bootloader.bin || exit 1
 
 echo -e "Building kernel (asm)..."
-nasm -felf32 ./kernel/entry.asm -I ./kernel/ -o ./build/kernelEntryPoint.o || exit 1
+nasm -felf32 ./src/kernel/asm/entry.asm -I ./src/kernel/asm/ -o ./build/kernelEntryPoint.o || exit 1
 
 use_crystal_kernel=${USE_CRYSTAL_KERNEL:-true}
 if [ "$use_crystal_kernel" = true ]

...
@@ -24,14 +24,14 @@ then
 		--target i386-unknown-linux-elf \
 		-Dkernel \
 		--prelude=../prelude.cr \
-		-o ./build/kernel ./kernel/kernel.cr || exit 1
+		-o ./build/kernel ./src/kernel/kernel.cr || exit 1
 
 	# Link the kernel into an ELF executable, then convert it to a flat binary for the bootloader.
 	echo -e "Linking kernel.elf (ld)..."
 	ld \
 	  -m elf_i386 \
 	  -nostdlib \
-	  -T ./kernel/linker.ld \
+	  -T ./src/linker.ld \
 	  -o ./bin/kernel.elf ./build/kernelEntryPoint.o ./build/kernel.o || exit 1
 	
 	# Copy kernel.elf to kernel.bin properly.

...
@@ -40,9 +40,9 @@ then
 	  -O binary ./bin/kernel.elf ./bin/kernel.bin || exit 1
 else
   # Flags
-  CC_FLAGS="-ffreestanding -nostdinc -nostdinc++ -Wall -Wextra -o ./bin/kernel.bin -target i386-pc-none-elf -I ./kernel/archive/cpp/"
-  LD_FLAGS="-nostdlib -Wl,--oformat=binary,-T./kernel/linker.ld"
-  CPP_FILES="./kernel/archive/cpp/unityBuild.cpp ./build/kernelEntryPoint.o"
+  CC_FLAGS="-ffreestanding -nostdinc -nostdinc++ -Wall -Wextra -o ./bin/kernel.bin -target i386-pc-none-elf -I ./src/kernel/archive/cpp/"
+  LD_FLAGS="-nostdlib -Wl,--oformat=binary,-T./src/linker.ld"
+  CPP_FILES="./src/kernel/archive/cpp/unityBuild.cpp ./build/kernelEntryPoint.o"
 
   # Build c++ kernel without stdlib, using the custom prelude, and targeting i386-unknown-linux-elf
   echo -e "Building kernel (cpp)..."

...
@@ -62,8 +62,13 @@ echo -e "Make bootable crystalos.img (genVDisk)..."
 	--bootloader ./bin/bootloader.bin \
 	--kernel ./bin/kernel.bin || exit 1
 
-# Run
+if [ -f "crystalos" ]
+then
+  # some platforms produce a no ext file, so we rename it to .img, eventually.
+	mv crystalos crystalos.img || exit 1
+fi
 
+# Run
 echo -e "Booting into crystalos.img (qemu)..."
 
 use_vnc=${USE_VNC:-false}

boot/a20-utility-inl.asm -> src/boot/a20-utility-inl.asm
boot/bootloader.asm -> src/boot/bootloader.asm
boot/idt-utility-inl.asm -> src/boot/idt-utility-inl.asm
boot/kernel-load-macros-inl.asm -> src/boot/kernel-load-macros-inl.asm
boot/kernel-load-utility-inl.asm -> src/boot/kernel-load-utility-inl.asm
boot/utility-inl.asm -> src/boot/utility-inl.asm
kernel/a_example.cr -> src/kernel/a_example.cr
kernel/archive/c/entry.o -> src/kernel/archive/c/entry.o
kernel/archive/c/idt.c -> src/kernel/archive/c/idt.c
kernel/archive/c/idt.h -> src/kernel/archive/c/idt.h
kernel/archive/c/idt.o -> src/kernel/archive/c/idt.o
kernel/archive/c/idt_asm.o -> src/kernel/archive/c/idt_asm.o
kernel/archive/c/main.c -> src/kernel/archive/c/main.c
kernel/archive/c/main.o -> src/kernel/archive/c/main.o
kernel/archive/c/module.h -> src/kernel/archive/c/module.h
modules/example_mod.c -> src/kernel/archive/c/modules/example_mod.c
modules/example_mod.o -> src/kernel/archive/c/modules/example_mod.o
kernel/archive/c/multiboot.o -> src/kernel/archive/c/multiboot.o
kernel/archive/c/pmm.c -> src/kernel/archive/c/pmm.c
kernel/archive/c/pmm.h -> src/kernel/archive/c/pmm.h
kernel/archive/c/pmm.o -> src/kernel/archive/c/pmm.o
kernel/archive/c/ps2.c -> src/kernel/archive/c/ps2.c
kernel/archive/c/ps2.o -> src/kernel/archive/c/ps2.o
kernel/archive/c/timer.c -> src/kernel/archive/c/timer.c
kernel/archive/c/timer.h -> src/kernel/archive/c/timer.h
kernel/archive/c/timer.o -> src/kernel/archive/c/timer.o
kernel/archive/c/vga.c -> src/kernel/archive/c/vga.c
kernel/archive/c/vga.o -> src/kernel/archive/c/vga.o
kernel/archive/cpp/kernel.cpp -> src/kernel/archive/cpp/kernel.cpp
kernel/archive/cpp/system/common.hpp -> src/kernel/archive/cpp/system/common.hpp
kernel/archive/cpp/unityBuild.cpp -> src/kernel/archive/cpp/unityBuild.cpp
kernel/entry.asm -> src/kernel/asm/entry.asm
kernel/idt.S -> src/kernel/asm/idt.S
@@ -1,3 +1,5 @@
+/* todo: port to intel .asm format */
+
 .section .text
 .global isr_handler_common
 .global irq_handler_common

kernel/multiboot.asm -> src/kernel/asm/multiboot.asm
kernel/utility-inl.asm -> src/kernel/asm/utility-inl.asm
kernel/boot.cr -> src/kernel/boot.cr
kernel/idt.cr -> src/kernel/idt.cr
kernel/idt_v2.cr -> src/kernel/idt_v2.cr
kernel/irq.cr -> src/kernel/irq.cr
kernel/kernel.cr -> src/kernel/kernel.cr
@@ -50,7 +50,7 @@ fun kmain
   # Init VGA (+ module demo)
   VGA.puts(
     "[CrystalOS Kernel] Hello from Crystal.\n",
-    color: VGA::Colors::BLACK_ON_CYAN,
+    color: VGA::Colors::BLACK_ON_LIME,
   )
   # puts KernelShim.crystalOSVersion
   # PMM.init # Physical Memory Init

kernel/kernel_api.cr -> src/kernel/kernel_api.cr
kernel/pmm.cr -> src/kernel/pmm.cr
kernel/timer.cr -> src/kernel/timer.cr
kernel/tiny_alloc_i386.cr -> src/kernel/tiny_alloc_i386.cr
kernel/vga.cr -> src/kernel/vga.cr
kernel/linker.ld -> src/linker.ld
prelude.cr -> src/prelude.cr
prelude/atomic.cr -> src/prelude/atomic.cr
prelude/crystal_core/array.cr -> src/prelude/crystal_core/array.cr
prelude/crystal_core/bool.cr -> src/prelude/crystal_core/bool.cr
prelude/crystal_core/char.cr -> src/prelude/crystal_core/char.cr
prelude/crystal_core/enum.cr -> src/prelude/crystal_core/enum.cr
prelude/crystal_core/int.cr -> src/prelude/crystal_core/int.cr
prelude/crystal_core/markable.cr -> src/prelude/crystal_core/markable.cr
prelude/crystal_core/mem.cr -> src/prelude/crystal_core/mem.cr
prelude/crystal_core/object.cr -> src/prelude/crystal_core/object.cr
prelude/crystal_core/panic.cr -> src/prelude/crystal_core/panic.cr
prelude/crystal_core/pointer.cr -> src/prelude/crystal_core/pointer.cr
prelude/crystal_core/proc.cr -> src/prelude/crystal_core/proc.cr
prelude/crystal_core/range.cr -> src/prelude/crystal_core/range.cr
prelude/crystal_core/reference.cr -> src/prelude/crystal_core/reference.cr
prelude/crystal_core/slice.cr -> src/prelude/crystal_core/slice.cr
prelude/crystal_core/slice_write.cr -> src/prelude/crystal_core/slice_write.cr
prelude/crystal_core/static_array.cr -> src/prelude/crystal_core/static_array.cr
prelude/crystal_core/string.cr -> src/prelude/crystal_core/string.cr
prelude/crystal_core/tuple.cr -> src/prelude/crystal_core/tuple.cr
prelude/primitives.cr -> src/prelude/primitives.cr
prelude/puts.cr -> src/prelude/puts.cr