my os developmend has began with Nick Blundell's operating System development textbook, where he placed the kernel at 0x7e00.
since his tutorial was limited to loading a simple kernel, i have searched for a better tutorial. i have found "brokenthorn os development series".
scenario 1 :
where i load the kernel at 0x7e00 i want to place a bitmap for taking control over the all memory block at physical level.
my kernel size was 0x4210 and the base address as i said was 0x7e00,
then my bitmap as in brokenthorn tutorial has been placed right after the kernel ( in 0xc010 ).
problem :
pmmngr_init will write value 0xff to 0xc010 - 0xd003 to say all blocks of memory is in use.
when this function suppose to write on 0xc142, everything gets crazy like those time that there was an
unhandled interrupts.
Is the value of 0xc142 used for special purpose, then i can't write to that ?
scenario 2 :
Loading the kernel in 0x100000 :
So, I have been decided to load the kernel at 0x100000 but CopyKernelImage Doesn't work Correctly like an infinite loop :
Code: Select all
CopyKernelImage:
mov eax, dword [ImageSize]
mov ebx, 4
div ebx
cld
mov esi, 0x7e00
mov edi, 0x100000
mov ecx, eax
rep movsd