@@ -7,6 +7,7 @@ SRC_LIB_DS = src/lib/ds
77SRC_LIB_UTILS = src/lib/utils
88SRC_LIB = src/lib
99SRC_APP = src/app
10+ SRC_REALMODE = src/real_mode
1011
1112BUILD_BOOTLOADER = build/bootloader
1213BUILD_KERNEL = build/kernel
@@ -15,14 +16,15 @@ BUILD_LIB_DS = build/lib/ds
1516BUILD_LIB_UTILS = build/lib/utils
1617BUILD_LIB = build/lib
1718BUILD_APP = build/app
18-
19+ BUILD_REALMODE = build/real_mode
1920.PHONY : all clean
2021
2122# Files
2223bt_stage1 = $(BUILD_BOOTLOADER ) /stage1
2324bt_stage2 = $(BUILD_BOOTLOADER ) /stage2
2425image_vmdk = $(BUILD_DIR ) /image.vmdk
2526app_entry = $(BUILD_LIB ) /app/entry
27+ rm_static = $(BUILD_REALMODE ) /static_library
2628
2729# Kernel
2830kernel_core = $(BUILD_DIR ) /kernel/core
@@ -46,29 +48,34 @@ all: images binaries
4648
4749images : $(image_vmdk )
4850
49- binaries : $(bt_stage1 ) $(bt_stage2 ) $(kernel_core )
51+ binaries : $(bt_stage1 ) $(bt_stage2 ) $(kernel_core ) $( rm_static )
5052
51- $(image_vmdk ) : $(bt_stage1 ) $(bt_stage2 ) $(kernel_core ) $(app_calc ) $(app_tick_tac_toe )
53+ $(image_vmdk ) : $(bt_stage1 ) $(bt_stage2 ) $(kernel_core ) $(app_calc ) $(app_tick_tac_toe ) $( rm_static )
5254 dd bs=512 count=2 if=$(bt_stage1 ) of=$@
5355 /bin/echo -ne " \x55\xaa" | dd seek=510 bs=1 of=$@
5456 @echo " Stage 1 Size : " $$(stat -c %s $(bt_stage1 ) )
55- @echo " BT_STAGE2_SECTOR_START : " $$(( 1 + $$(stat -c %s $(image_vmdk ) ) / 512 ) )
57+ @echo " BT_STAGE2_SECTOR_START : " $$(( $$(stat -c %s $(image_vmdk ) ) / 512 ) )
5658 cat $(bt_stage2 ) >> $@
5759 @echo " Stage 2 Size : " $$(stat -c %s $(bt_stage2 ) )
5860 @echo " Want BT_STAGE2_SECTOR_COUNT : 0x" $$(printf "%x\n" $$(( $$(stat -c %s $(bt_stage2 ) ) / 512 ) ) )
5961 @echo " Got BT_STAGE2_SECTOR_COUNT : 0x" $(BT_STAGE2_SECTOR_COUNT )
6062
61- @echo "AppCalc Sector Start : "$$(( 1 + $$(stat -c %s $(image_vmdk)) / 512 ))
63+ @echo "AppCalc Sector Start : "$$(( $$(stat -c %s $(image_vmdk)) / 512 ))
6264 cat $(app_calc) >> $@
6365 @echo "AppCalc Sector Count : "$$(( $$(stat -c %s $(app_calc)) / 512))
6466 @echo "App Calc Size : " $$(stat -c %s $(app_calc))
6567
66- @echo "App TickTacToe Sector Start : "$$(( 1 + $$(stat -c %s $(image_vmdk)) / 512 ))
68+ @echo "App TickTacToe Sector Start : "$$(( $$(stat -c %s $(image_vmdk)) / 512 ))
6769 cat $(app_tick_tac_toe) >> $@
6870 @echo "App TickTacToe Sector Count : "$$(( $$(stat -c %s $(app_tick_tac_toe)) / 512))
6971 @echo "App TickTacToe Size : " $$(stat -c %s $(app_tick_tac_toe))
7072
71- @echo "Kernel Core Sector Start : "$$(( 1 + $$(stat -c %s $(image_vmdk)) / 512 ))
73+ @echo "Static Library Sector Start : "$$(( $$(stat -c %s $(image_vmdk)) / 512 ))
74+ cat $(rm_static) >> $@
75+ @echo "Static Library Sector Count : "$$(( $$(stat -c %s $(rm_static)) / 512))
76+ @echo "Static Library Size : " $$(stat -c %s $(rm_static))
77+
78+ @echo "Kernel Core Sector Start : "$$(( $$(stat -c %s $(image_vmdk)) / 512 ))
7279 cat $(kernel_core) >> $@
7380 @echo "Kernel Core Sector Count : "$$(( $$(stat -c %s $(kernel_core)) / 512))
7481 @echo "Kernel Core Size : " $$(stat -c %s $(kernel_core))
@@ -92,6 +99,9 @@ qemu: $(image_vmdk)
9299qemu_debug : $(image_vmdk )
93100 qemu-system-x86_64 -smp 1 -m 128M -hda $< -no-shutdown -no-reboot -d cpu,exec,in_asm
94101
102+ qemu_xdebug : $(image_vmdk )
103+ qemu-system-x86_64 -S -gdb tcp::9000 -smp 1 -m 128M -hda $< -no-shutdown -no-reboot -d cpu,exec,in_asm
104+
95105clean :
96106 rm -r $(BUILD_DIR ) / || echo " Build directory is clean."
97107
@@ -101,19 +111,24 @@ $(bt_stage1): $(SRC_BOOTLOADER)/stage1.asm $(SRC_BOOTLOADER)/constants.asm $(SRC
101111 nasm -o $@ -f bin -i $(SRC_BOOTLOADER ) / -D BT_STAGE2_SECTOR_COUNT=$(BT_STAGE2_SECTOR_COUNT ) $<
102112 truncate --size=%512 $@
103113
104- $(bt_stage2 ) : $(SRC_BOOTLOADER ) /stage2.asm $(SRC_BOOTLOADER ) /stage2.c $(SRC_BOOTLOADER ) /io.asm $(SRC_BOOTLOADER ) /constants.asm $(BUILD_LIB_UTILS ) /libutils_16 $(BUILD_DRIVERS ) /display/libtm_bios
114+ $(bt_stage2 ) : $(SRC_BOOTLOADER ) /stage2.asm $(SRC_BOOTLOADER ) /stage2.c $(SRC_BOOTLOADER ) /io.asm $(SRC_BOOTLOADER ) /constants.asm $(SRC_REALMODE ) /stub.asm $( BUILD_LIB_UTILS ) /libutils_16 $(BUILD_DRIVERS ) /display/libtm_bios $( BUILD_DRIVERS ) /disk/libdisk_16
105115 mkdir -p $$(dirname $(bt_stage2 ) )
106- nasm -o $(BUILD_BOOTLOADER ) /stage2_asm.o -f elf32 -i $(SRC_BOOTLOADER ) / $(SRC_BOOTLOADER ) /stage2.asm
116+ nasm -o $(BUILD_BOOTLOADER ) /stage2_asm.o -f elf32 -i $(SRC_BOOTLOADER ) / -i $( SRC_REALMODE ) / $(SRC_BOOTLOADER ) /stage2.asm
107117 gcc -m16 -fno-pie -c -Isrc -D KERNEL_MEMORY_LOCATION=$(KERNEL_MEMORY_LOCATION ) -o $(BUILD_BOOTLOADER ) /stage2_c.o $(SRC_BOOTLOADER ) /stage2.c
108- ld --oformat binary -m elf_i386 -Ttext 0x8000 --strip-all -o $@ $(BUILD_BOOTLOADER ) /stage2_asm.o $(BUILD_BOOTLOADER ) /stage2_c.o $(BUILD_LIB_UTILS ) /libutils_16 $(BUILD_DRIVERS ) /display/libtm_bios
118+ ld --oformat binary -m elf_i386 -Ttext 0x8000 --strip-all -o $@ $(BUILD_BOOTLOADER ) /stage2_asm.o $(BUILD_BOOTLOADER ) /stage2_c.o $(BUILD_LIB_UTILS ) /libutils_16 $(BUILD_DRIVERS ) /display/libtm_bios $( BUILD_DRIVERS ) /disk/libdisk_16
109119 truncate --size=%512 $@
110120
111- $(kernel_core ) : $(SRC_KERNEL ) /core.asm $(SRC_KERNEL ) /core.c $(SRC_KERNEL ) /essentials.c $(SRC_KERNEL ) /interrupts.c $(SRC_KERNEL ) /interrupts.asm $(SRC_LIB_UTILS ) /output.h $(SRC_DRIVERS ) /keyboard/keyboard.h $(BUILD_LIB_UTILS ) /libutils $(BUILD_DRIVERS ) /keyboard/libkeyboard $(BUILD_DRIVERS ) /display/libtm_vga # And other output.h dependecies -_-
121+ $(BUILD_REALMODE ) /static_library : $(SRC_REALMODE ) /static_library.asm $(SRC_REALMODE ) /stub.asm
122+ mkdir -p $(BUILD_REALMODE ) /
123+ nasm -o $@ -f bin -i $(SRC_REALMODE ) / $(SRC_REALMODE ) /static_library.asm
124+ truncate --size=%512 $@
125+
126+ $(kernel_core ) : $(SRC_KERNEL ) /core.asm $(SRC_KERNEL ) /core.c $(SRC_KERNEL ) /essentials.c $(SRC_REALMODE ) /stub.asm $(SRC_KERNEL ) /interrupts.c $(SRC_KERNEL ) /interrupts.asm $(SRC_LIB_UTILS ) /output.h $(SRC_DRIVERS ) /keyboard/keyboard.h $(BUILD_LIB_UTILS ) /libutils $(BUILD_DRIVERS ) /keyboard/libkeyboard $(BUILD_DRIVERS ) /display/libtm_vga $(BUILD_DRIVERS ) /disk/libdisk # And other output.h dependecies -_-
112127 mkdir -p $$(dirname $(kernel_core ) )
113- nasm -o $(BUILD_KERNEL ) /core_asm.o -f elf32 $(SRC_KERNEL ) /core.asm
128+ nasm -o $(BUILD_KERNEL ) /core_asm.o -f elf32 -i $( SRC_REALMODE ) / $(SRC_KERNEL ) /core.asm
114129 nasm -o $(BUILD_KERNEL ) /interrupts_asm.o -f elf32 $(SRC_KERNEL ) /interrupts.asm
115130 gcc -m32 -fno-pie -c -Isrc -D KERNEL_MEMORY_LOCATION=$(KERNEL_MEMORY_LOCATION ) -o $(BUILD_KERNEL ) /core_c.o $(SRC_KERNEL ) /core.c
116- ld --oformat binary -m elf_i386 --trace -Ttext 0x0000 --strip-all -o $(kernel_core ) $(BUILD_KERNEL ) /core_asm.o $(BUILD_KERNEL ) /core_c.o $(BUILD_KERNEL ) /interrupts_asm.o $(BUILD_DRIVERS ) /keyboard/libkeyboard $(BUILD_LIB_UTILS ) /libutils $(BUILD_DRIVERS ) /display/libtm_vga $(BUILD_LIB_DS ) /libds
131+ ld --oformat binary -m elf_i386 --trace -Ttext 0x0000 --strip-all -o $(kernel_core ) $(BUILD_KERNEL ) /core_asm.o $(BUILD_KERNEL ) /core_c.o $(BUILD_KERNEL ) /interrupts_asm.o $(BUILD_DRIVERS ) /keyboard/libkeyboard $(BUILD_LIB_UTILS ) /libutils $(BUILD_DRIVERS ) /display/libtm_vga $(BUILD_LIB_DS ) /libds $( BUILD_DRIVERS ) /disk/libdisk
117132 truncate --size=%512 $(kernel_core )
118133
119134# Libraries
@@ -141,32 +156,40 @@ $(BUILD_DRIVERS)/keyboard/libkeyboard: $(SRC_DRIVERS)/keyboard/keyboard.c $(SRC_
141156 nasm -o $(BUILD_DRIVERS ) /keyboard/keyboard_asm.o -f elf32 $(SRC_DRIVERS ) /keyboard/keyboard.asm
142157 ar rc $@ $(BUILD_DRIVERS ) /keyboard/keyboard_c.o $(BUILD_DRIVERS ) /keyboard/keyboard_asm.o
143158
144- $(BUILD_LIB_UTILS ) /libutils_16 : $(SRC_LIB_UTILS ) /output.c $(SRC_LIB_UTILS ) /output.h $(SRC_LIB_UTILS ) /string.c $(SRC_LIB_UTILS ) /string.h $(SRC_LIB_UTILS ) /disk.c $(SRC_LIB_UTILS ) /disk.asm $(SRC_LIB_UTILS ) /disk.h $(SRC_LIB_UTILS ) /panic.c $(SRC_LIB_UTILS ) /panic.h $(SRC_LIB_UTILS ) /panic.asm $(SRC_LIB_UTILS ) /time.c $(SRC_LIB_UTILS ) /time.h $(SRC_LIB_UTILS ) /time.asm $(SRC_LIB_UTILS ) /color.c $(SRC_LIB_UTILS ) /color.h
159+ $(BUILD_DRIVERS ) /disk/libdisk_16 : $(SRC_DRIVERS ) /disk/disk_16.c $(SRC_DRIVERS ) /disk/disk_16.asm $(SRC_DRIVERS ) /disk/disk.h
160+ mkdir -p $(BUILD_DRIVERS ) /disk/
161+ gcc -m16 -fno-pie -c -Isrc -o $(BUILD_DRIVERS ) /disk/disk_16_c.o $(SRC_DRIVERS ) /disk/disk_16.c
162+ nasm -o $(BUILD_DRIVERS ) /disk/disk_16_asm.o -f elf32 $(SRC_DRIVERS ) /disk/disk_16.asm
163+ ar rc $@ $(BUILD_DRIVERS ) /disk/disk_16_c.o $(BUILD_DRIVERS ) /disk/disk_16_asm.o
164+
165+ $(BUILD_DRIVERS ) /disk/libdisk : $(SRC_DRIVERS ) /disk/disk.c $(SRC_DRIVERS ) /disk/disk.asm $(SRC_DRIVERS ) /disk/disk.h $(SRC_REALMODE ) /stub.asm
166+ mkdir -p $(BUILD_DRIVERS ) /disk/
167+ gcc -m32 -fno-pie -c -Isrc -o $(BUILD_DRIVERS ) /disk/disk_c.o $(SRC_DRIVERS ) /disk/disk.c
168+ nasm -o $(BUILD_DRIVERS ) /disk/disk_asm.o -f elf32 -i $(SRC_REALMODE ) / $(SRC_DRIVERS ) /disk/disk.asm
169+ ar rc $@ $(BUILD_DRIVERS ) /disk/disk_c.o $(BUILD_DRIVERS ) /disk/disk_asm.o
170+
171+ $(BUILD_LIB_UTILS ) /libutils_16 : $(SRC_LIB_UTILS ) /output.c $(SRC_LIB_UTILS ) /output.h $(SRC_LIB_UTILS ) /string.c $(SRC_LIB_UTILS ) /string.h $(SRC_LIB_UTILS ) /panic.c $(SRC_LIB_UTILS ) /panic.h $(SRC_LIB_UTILS ) /panic.asm $(SRC_LIB_UTILS ) /time.c $(SRC_LIB_UTILS ) /time.h $(SRC_LIB_UTILS ) /time.asm $(SRC_LIB_UTILS ) /color.c $(SRC_LIB_UTILS ) /color.h
145172 mkdir -p $(BUILD_LIB_UTILS ) /
146173 gcc -m16 -fno-pie -c -Isrc -o $(BUILD_LIB_UTILS ) /output.o $(SRC_LIB_UTILS ) /output.c
147174 gcc -m16 -fno-pie -c -Isrc -o $(BUILD_LIB_UTILS ) /string.o $(SRC_LIB_UTILS ) /string.c
148175 gcc -m16 -fno-pie -c -Isrc -o $(BUILD_LIB_UTILS ) /color.o $(SRC_LIB_UTILS ) /color.c
149- gcc -m16 -fno-pie -c -Isrc -o $(BUILD_LIB_UTILS ) /disk_c.o $(SRC_LIB_UTILS ) /disk.c
150- nasm -o $(BUILD_LIB_UTILS ) /disk_asm.o -f elf32 $(SRC_LIB_UTILS ) /disk.asm
151176 gcc -m16 -fno-pie -c -D__SOURCE_SNAPSHOT__=$(SOURCE_SNAPSHOT ) -Isrc -o $(BUILD_LIB_UTILS ) /panic_c.o $(SRC_LIB_UTILS ) /panic.c
152177 nasm -o $(BUILD_LIB_UTILS ) /panic_asm.o -f elf32 $(SRC_LIB_UTILS ) /panic.asm
153178 gcc -m16 -fno-pie -c -Isrc -o $(BUILD_LIB_UTILS ) /time_c.o $(SRC_LIB_UTILS ) /time.c
154179 nasm -o $(BUILD_LIB_UTILS ) /time_asm.o -f elf32 $(SRC_LIB_UTILS ) /time.asm
155- ar rc $@ $(BUILD_LIB_UTILS ) /output.o $(BUILD_LIB_UTILS ) /string.o $(BUILD_LIB_UTILS ) /color.o $(BUILD_LIB_UTILS ) /disk_c.o $( BUILD_LIB_UTILS ) /disk_asm.o $( BUILD_LIB_UTILS ) / panic_c.o $(BUILD_LIB_UTILS ) /panic_asm.o $(BUILD_LIB_UTILS ) /time_c.o $(BUILD_LIB_UTILS ) /time_asm.o
180+ ar rc $@ $(BUILD_LIB_UTILS ) /output.o $(BUILD_LIB_UTILS ) /string.o $(BUILD_LIB_UTILS ) /color.o $(BUILD_LIB_UTILS ) /panic_c.o $(BUILD_LIB_UTILS ) /panic_asm.o $(BUILD_LIB_UTILS ) /time_c.o $(BUILD_LIB_UTILS ) /time_asm.o
156181
157- $(BUILD_LIB_UTILS ) /libutils : $(SRC_LIB_UTILS ) /output.c $(SRC_LIB_UTILS ) /output.h $(SRC_LIB_UTILS ) /input.c $(SRC_LIB_UTILS ) /input.h $(SRC_LIB_UTILS ) /string.c $(SRC_LIB_UTILS ) /string.h $(SRC_LIB_UTILS ) /disk.c $( SRC_LIB_UTILS ) /disk.asm $( SRC_LIB_UTILS ) /disk.h $( SRC_LIB_UTILS ) / panic.c $(SRC_LIB_UTILS ) /panic.h $(SRC_LIB_UTILS ) /panic.asm $(SRC_LIB_UTILS ) /time.c $(SRC_LIB_UTILS ) /time.h $(SRC_LIB_UTILS ) /time.asm $(SRC_LIB_UTILS ) /color.c $(SRC_LIB_UTILS ) /color.h
182+ $(BUILD_LIB_UTILS ) /libutils : $(SRC_LIB_UTILS ) /output.c $(SRC_LIB_UTILS ) /output.h $(SRC_LIB_UTILS ) /input.c $(SRC_LIB_UTILS ) /input.h $(SRC_LIB_UTILS ) /string.c $(SRC_LIB_UTILS ) /string.h $(SRC_LIB_UTILS ) /panic.c $(SRC_LIB_UTILS ) /panic.h $(SRC_LIB_UTILS ) /panic.asm $(SRC_LIB_UTILS ) /time.c $(SRC_LIB_UTILS ) /time.h $(SRC_LIB_UTILS ) /time.asm $(SRC_LIB_UTILS ) /color.c $(SRC_LIB_UTILS ) /color.h
158183 mkdir -p $(BUILD_LIB_UTILS ) /
159184 gcc -m32 -fno-pie -c -Isrc -o $(BUILD_LIB_UTILS ) /output.o $(SRC_LIB_UTILS ) /output.c
160185 gcc -m32 -fno-pie -c -Isrc -o $(BUILD_LIB_UTILS ) /input.o $(SRC_LIB_UTILS ) /input.c
161186 gcc -m32 -fno-pie -c -Isrc -o $(BUILD_LIB_UTILS ) /string.o $(SRC_LIB_UTILS ) /string.c
162187 gcc -m32 -fno-pie -c -Isrc -o $(BUILD_LIB_UTILS ) /color.o $(SRC_LIB_UTILS ) /color.c
163- gcc -m32 -fno-pie -c -Isrc -o $(BUILD_LIB_UTILS ) /disk_c.o $(SRC_LIB_UTILS ) /disk.c
164- nasm -o $(BUILD_LIB_UTILS ) /disk_asm.o -f elf32 $(SRC_LIB_UTILS ) /disk.asm
165188 gcc -m32 -fno-pie -c -D__SOURCE_SNAPSHOT__=$(SOURCE_SNAPSHOT ) -Isrc -o $(BUILD_LIB_UTILS ) /panic_c.o $(SRC_LIB_UTILS ) /panic.c
166189 nasm -o $(BUILD_LIB_UTILS ) /panic_asm.o -f elf32 $(SRC_LIB_UTILS ) /panic.asm
167190 gcc -m32 -fno-pie -c -Isrc -o $(BUILD_LIB_UTILS ) /time_c.o $(SRC_LIB_UTILS ) /time.c
168191 nasm -o $(BUILD_LIB_UTILS ) /time_asm.o -f elf32 $(SRC_LIB_UTILS ) /time.asm
169- ar rc $@ $(BUILD_LIB_UTILS ) /output.o $(BUILD_LIB_UTILS ) /input.o $(BUILD_LIB_UTILS ) /string.o $(BUILD_LIB_UTILS ) /color.o $(BUILD_LIB_UTILS ) /disk_c.o $( BUILD_LIB_UTILS ) /disk_asm.o $( BUILD_LIB_UTILS ) / panic_c.o $(BUILD_LIB_UTILS ) /panic_asm.o $(BUILD_LIB_UTILS ) /time_c.o $(BUILD_LIB_UTILS ) /time_asm.o
192+ ar rc $@ $(BUILD_LIB_UTILS ) /output.o $(BUILD_LIB_UTILS ) /input.o $(BUILD_LIB_UTILS ) /string.o $(BUILD_LIB_UTILS ) /color.o $(BUILD_LIB_UTILS ) /panic_c.o $(BUILD_LIB_UTILS ) /panic_asm.o $(BUILD_LIB_UTILS ) /time_c.o $(BUILD_LIB_UTILS ) /time_asm.o
170193
171194$(BUILD_LIB_DS ) /libds : $(SRC_LIB_DS ) /queue.h $(SRC_LIB_DS ) /queue.c
172195 mkdir -p $(BUILD_LIB_DS ) /
0 commit comments