diff --git a/bochsrc.txt b/bochsrc.txt index fe783a2..9783490 100644 --- a/bochsrc.txt +++ b/bochsrc.txt @@ -1,5 +1,5 @@ megs: 32 -display_library: sdl2 +display_library: x romimage: file=/usr/share/bochs/BIOS-bochs-legacy vgaromimage: file=/usr/share/bochs/VGABIOS-lgpl-latest ata0-master: type=cdrom, path=os.iso, status=inserted diff --git a/io.s b/io.s index bb131d9..b677e49 100644 --- a/io.s +++ b/io.s @@ -16,19 +16,29 @@ inb: global x86_div64_32 x86_div64_32: - mov eax, [bp+8] - mov ecx, [bp+12] - xor edx, edx - div ecx + push ebp + mov ebp, esp - mov bx, [bp+16] - mov [bx+4], eax + ; Arguments: + ; [ebp + 8] - lower 32 bits of dividend (uint32_t) + ; [ebp + 12] - upper 32 bits of dividend (uint32_t) + ; [ebp + 16] - divisor (uint32_t) + ; [ebp + 20] - pointer to quotient (uint64_t*) + ; [ebp + 24] - pointer to remainder (uint32_t*) - mov eax, [bp+4] - div ecx + mov eax, [ebp + 8] + mov edx, [ebp + 12] - mov [bx], eax - mov bx, [bp+18] - mov [bx], edx + mov ecx, [ebp + 16] - ret + div ecx + mov esi, [ebp + 20] + mov [esi], eax + + mov dword [esi + 4], 0 + + mov esi, [ebp + 24] + mov [esi], edx + + pop ebp + ret \ No newline at end of file diff --git a/iso/boot/kernel.elf b/iso/boot/kernel.elf index a133913..5315e60 100755 Binary files a/iso/boot/kernel.elf and b/iso/boot/kernel.elf differ diff --git a/kernel.elf b/kernel.elf index a133913..5315e60 100755 Binary files a/kernel.elf and b/kernel.elf differ diff --git a/kmain.c b/kmain.c index 9e75d2b..8cd6cef 100644 --- a/kmain.c +++ b/kmain.c @@ -3,11 +3,31 @@ int kmain(int retvalue) { + + // serial testing + init_serial(); log("serial connection established", 3); log("Kernel started", 2); clear(); - printf("Formatted: %% %c %s %d\n", 'f', "Hello", 77); + + // printf testing + + int age = 34; + int problems = 124; + char* name = "xamidev"; + + printf("Hello %s, you are %d years old and have %d problems. wow %%\n", name, age, problems); + + long suchwow = 2934342; + char character = 65; + printf("such number %u\nsuch character %c", suchwow, character); + + printf("wow negative %d\n", -3742); + printf("such hex %x %X\n", 0xcafe, 0xdeadbeef); + + printf("such pointer %p\n", (void*)0xcafe1234); + return retvalue; } diff --git a/os.iso b/os.iso index 3af65ac..6c0640a 100644 Binary files a/os.iso and b/os.iso differ