diff --git a/debug/boot.txt b/debug/boot.txt index 075a39d..429323f 100644 --- a/debug/boot.txt +++ b/debug/boot.txt @@ -1,5 +1,5 @@ target remote localhost:1234 -set disassembly-flavor intel +set disassembly-flavor att set architecture i8086 break *0x7c00 cont diff --git a/debug/debug.sh b/debug/debug.sh new file mode 100755 index 0000000..6d23cfd --- /dev/null +++ b/debug/debug.sh @@ -0,0 +1,26 @@ +#!/bin/sh +session="debug" +tmux start-server +tmux new-session -d -s $session -n gdb + +tmux splitw -h -p 90 +tmux splitw -t 0 -v -p 50 +tmux splitw -t 2 -h -p 45 +tmux splitw -v -p 50 +tmux splitw -v -p 50 + +tmux send-keys -t 5 "gdb --init-command=./debug/gdbinit -x $1" Enter +tmux send-keys -t 3 "telnet 127.0.0.1 6666" Enter +tmux send-keys -t 5 "dashboard stack -output /dev/pts/6" Enter +tmux send-keys -t 5 "dashboard threads -output /dev/null" Enter +tmux send-keys -t 5 "dashboard assembly -output /dev/pts/5" Enter +tmux send-keys -t 5 "dashboard registers -output /dev/pts/3" Enter +tmux send-keys -t 5 "dashboard expressions -output /dev/pts/8" Enter +tmux send-keys -t 5 "dashboard memory -output /dev/pts/8" Enter +tmux send-keys -t 5 "dashboard source -output /dev/pts/5" Enter +tmux send-keys -t 5 "dashboard history -output /dev/pts/10" Enter +tmux send-keys -t 5 "dashboard threads -output /dev/null" Enter +tmux send-keys -t 5 "dashboard stack -output /dev/pts/6" Enter +tmux new-window -t $session:1 -n scratch +tmux select-window -t $session:0 +tmux attach-session -t $session diff --git a/debug/.gdbinit b/debug/gdbinit similarity index 99% rename from debug/.gdbinit rename to debug/gdbinit index b426538..83ad9d2 100644 --- a/debug/.gdbinit +++ b/debug/gdbinit @@ -937,7 +937,7 @@ class Source(Dashboard.Module): return { 'context': { 'doc': 'Number of context lines.', - 'default': 5, + 'default': 12, 'type': int, 'check': check_ge_zero }, @@ -1075,7 +1075,7 @@ instructions constituting the current statement are marked, if available.""" return { 'context': { 'doc': 'Number of context instructions.', - 'default': 3, + 'default': 10, 'type': int, 'check': check_ge_zero }, diff --git a/debug/kernel.txt b/debug/kernel.txt deleted file mode 100644 index a12556b..0000000 --- a/debug/kernel.txt +++ /dev/null @@ -1,7 +0,0 @@ -target remote localhost:1234 -set disassembly-flavor intel -set architecture i8086 -symbol-file ./system/realmode/setup.sym -break *0x90000 -break *0x90200 -cont diff --git a/debug/loader.txt b/debug/loader.txt deleted file mode 100644 index 1c6c58e..0000000 --- a/debug/loader.txt +++ /dev/null @@ -1,6 +0,0 @@ -target remote localhost:1234 -set disassembly-flavor intel -set architecture i8086 -break *0x800 -cont -clear *0x800 diff --git a/debug/system.txt b/debug/system.txt index ad8b55d..af4026d 100644 --- a/debug/system.txt +++ b/debug/system.txt @@ -1,7 +1,7 @@ target remote localhost:1234 set disassembly-flavor intel set architecture i386 -symbol-file ./system/system.sys +symbol-file ./system/realmode/setup.sym break system.c:50 cont clear system.c:50 diff --git a/final/harddisk.img.xz b/final/harddisk.img.xz index 9992a97..e71fb3c 100644 Binary files a/final/harddisk.img.xz and b/final/harddisk.img.xz differ diff --git a/final/harddiskuefi.img.xz b/final/harddiskuefi.img.xz deleted file mode 100644 index b0632d2..0000000 Binary files a/final/harddiskuefi.img.xz and /dev/null differ diff --git a/final/makefile b/final/makefile old mode 100644 new mode 100755 diff --git a/final/makeimage b/final/makeimage old mode 100644 new mode 100755 index 5aa27c1..15b78b2 --- a/final/makeimage +++ b/final/makeimage @@ -8,8 +8,23 @@ echo ${lo} losetup -P ${lo} harddisk.img mkfs.ext2 ${lo}p1 mount ${lo}p1 /mnt -grub-install --no-floppy --install-modules="biosdisk part_msdos ext2 configfile normal multiboot2 video video_colors video_cirrus video_fb" --boot-directory=/mnt/boot ${lo} --target=i386-pc -echo -en "set timeout=4\nset default=0\nmenuentry "cos2000" {\nset root=(hd0,1)\nmultiboot2 /boot/system.sys\nboot\n}" > /mnt/boot/grub/grub.cfg +grub-install --no-floppy --install-modules="biosdisk part_msdos ext2 configfile normal linux vbe png gfxmenu video video_colors video_cirrus video_fb" --boot-directory=/mnt/boot ${lo} --target=i386-pc +echo -en "\ +insmod ext2 +insmod biosdisk +insmod part_msdos +insmod linux +insmod vbe +insmod gfxterm +insmod png +insmod font +set timeout=4\n\ +set default=0\n\ +menuentry "cos2000" {\n\ +set root=(hd0,1)\n\ +linux /boot/system.sys\n +boot\n\ +}" > /mnt/boot/grub/grub.cfg umount /mnt losetup -d ${lo} #xz -c harddisk.img > harddisk.img.xz diff --git a/final/makeimageuefi b/final/makeimageuefi old mode 100644 new mode 100755 diff --git a/makefile b/makefile index 3a19f89..bb87f50 100755 --- a/makefile +++ b/makefile @@ -1,3 +1,11 @@ +DEBUG=exec gnome-terminal --geometry=120x40+1+1 -x ./debug/debug.sh +REMOVE=rm -f +INSTALL=sudo apt-get install +COPY=cp +EMULATOR=bochs -f +GIT=git status +MAKECALL=python makesyscall.py + all: tools programs bits32 bits64 harddisk uefi sync @@ -17,7 +25,7 @@ tools/build: syscall: clean remakeapi all remakeapi: - python makesyscall.py + $(MAKECALL) programs: programs/test lib/TEST/test.c lib/TEST/test2.c @@ -35,8 +43,7 @@ harddisk: final/harddisk.img.final uefi: final/harddiskuefi.img.final install: - (sudo apt-get install gcc qemu fusefat fuseext2 gdb ovmf bsdmainutils tar bsdmainutils indent binutils bochs bochs-x bochsbios dos2unix) - cp ./debug/.gdbinit ~/ + $(INSTALL) gcc qemu fusefat fuseext2 gdb ovmf bsdmainutils tar bsdmainutils indent binutils bochs bochs-x bochsbios dos2unix gnome-terminal togit: make -C system togit @@ -44,11 +51,11 @@ togit: make -C final togit make -C programs togit make -C tools togit - git status + $(GIT) sync clean: - rm -f .gdb_history + $(RM) -f .gdb_history make -C system clean make -C lib clean make -C final clean @@ -71,7 +78,8 @@ indent: sync backup: clean - (cd .. ; tar cf - Source\ C | gzip -f - > backup.tar.gz) + cd .. + tar cf - Source\ C | gzip -f - > backup.tar.gz test: programs bits32 harddisk qemu @@ -84,7 +92,7 @@ retest64: littleclean test64 testbochs: programs bits32 harddisk bochs-debug view: - (hexdump -C ./final/harddisk.img.final|head -c10000) + hexdump -C ./final/harddisk.img.final|head -c10000 debug: debug-system @@ -97,37 +105,38 @@ redebug64: littleclean debug-system64 kernel: debug-kernel debug-boot: programs bits32 harddisk qemu-debug - (sleep 2;gdb -x ./debug/boot.txt) - -debug-loader: programs bits32 harddisk qemu-debug - (sleep 2;gdb -x ./debug/loader.txt) + sleep 2 + $(DEBUG) ./debug/boot.txt debug-system: programs bits32 harddisk qemu-debug - (sleep 2;gdb -x ./debug/system.txt) + sleep 2 + $(DEBUG) ./debug/system.txt debug-system64: programs bits64 uefi qemu-debug64 - (sleep 2;gdb -x ./debug/system.txt) + sleep 2 + $(DEBUG) ./debug/system.txt -debug-kernel: all qemu-kernel - (sleep 2;gdb -x ./debug/kernel.txt) +bochs-debug: killer + $(EMULATOR) ./debug/config.bochs -bochs-debug: - (killall bochs-debug;bochs -f ./debug/config.bochs) +killer: + killall bochs-debug || true + killall qemu-system-x86_64 || true + killall qemu-system-i386 || true + killall gnome-terminal-server || true + tmux kill-session -t debug || true -qemu-kernel: - (killall qemu-system-i386;qemu-system-i386 -m 1G -kernel ./system/system.sys -s -S &) +qemu-debug: killer + qemu-system-i386 -monitor telnet:127.0.0.1:6666,server,nowait -m 1G -drive format=raw,file=./final/harddisk.img.final -s -S & -qemu-debug: - (killall qemu-system-i386;qemu-system-i386 -m 1G -drive format=raw,file=./final/harddisk.img.final -s -S &) +qemu-debug64: killer + qemu-system-x86_64 -monitor telnet:127.0.0.1:6666,server,nowait -m 5G -drive format=raw,file=./final/harddiskuefi.img.final --bios /usr/share/qemu/OVMF.fd -s -S & -qemu-debug64: - (killall qemu-system-x86_64;qemu-system-x86_64 -m 5G -drive format=raw,file=./final/harddiskuefi.img.final --bios /usr/share/qemu/OVMF.fd -s -S &) +qemu: killer + qemu-system-i386 -m 1G -drive format=raw,file=./final/harddisk.img.final --enable-kvm -cpu host -s & -qemu: - (killall qemu-system-i386;qemu-system-i386 -m 1G -drive format=raw,file=./final/harddisk.img.final --enable-kvm -cpu host -s &) - -qemu64: - (killall qemu-system-x86_64;qemu-system-x86_64 -m 5G -drive format=raw,file=./final/harddiskuefi.img.final --bios /usr/share/qemu/OVMF.fd --enable-kvm -cpu host -s &) +qemu64: killer + qemu-system-x86_64 -m 5G -drive format=raw,file=./final/harddiskuefi.img.final --bios /usr/share/qemu/OVMF.fd --enable-kvm -cpu host -s & system/system.sys: make -C system VESA=$(VESA)