Problems with loading from disk to memory
Hi ! I`m trying to write an OS, but I already have some problems with the bootloader. I`m trying to load some assembly code from hard disk, that will set protected mode and load kernel, but i don`t think it loads what it should load. After it calls the int 13h and jumps to the address specified it does nothing and doesn`t even return.
I am using vmware virtual machine. Can anyone give me some advice how i can verify what it loads into the memory? I also posted some code. Maybe there is some problem with the coding.
I compiled the asm file with: nasm -f aout -o x.bin x.asm ;gcc -c -o c.o c.c ; ld -T link.ld -o pmk.com x.o c.o ; and wrote it to the third sector (x00000002-x000) with Runtime`s DiskExplorer.
Here`s the code that should load it:
mov ax, 0x7C0
mov ds, ax
mov [bootdrv], dl
mov ax, 0x1000
mov es, ax
xor bx, bx
mov ax, 0x0201
mov ch, 0
mov cl, 3
mov dh, 0
mov dl, bootdrv
Re: Problems with loading from disk to memory
i didnt code much in nasm, but try this and see if it works :
Originally Posted by BlackJackk
does your bootloader works fine?
mov AX, 0x1000
is it your problem that the control is not transferred to your kernel or second stage bootloader?
if you want to know what you have in the specified address(buffer), do not jump , after reading from that specified location from hard disk , when you are done reading from hdd, try reading the contents of your buffer ( 1000:0000) if you get what you expected , then the reading was successful and the problem is somewhere else(probably in the way you are trying to transfer control to the kernel, though it is unlikely! )).
try these and tell us what happens
and by the way check these sites too:
and their forum ( i strongly recommend you to give it a look )