If this is your first visit, be sure to
check out the FAQ by clicking the
link above. You may have to register
before you can post: click the register link above to proceed. To start viewing messages,
select the forum that you want to visit from the selection below.

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.

Re: Problems with loading from disk to memory

Originally Posted by BlackJackk

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:

[BITS 16]
[ORG 0]

jmp start

............

start:
mov ax, 0x7C0
mov ds, ax

mov [bootdrv], dl

............

read:
mov ax, 0x1000
mov es, ax
xor bx, bx

mov ax, 0x0201
mov ch, 0
mov cl, 3
mov dh, 0
mov dl, bootdrv
int 13h

jc read

jmp 1000h:0000h

.............

i didnt code much in nasm, but try this and see if it works :

Code:

mov AX, 0x1000
push AX
Mov BX,0x0000
push BX
retf

does your bootloader works fine?
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

* The Perfect Platform for Game Developers: Android
Developing rich, high performance Android games from the ground up is a daunting task. Intel has provided Android developers with a number of tools that can be leveraged by Android game developers.

* The Best Reasons to Target Windows 8
Learn some of the best reasons why you should seriously consider bringing your Android mobile development expertise to bear on the Windows 8 platform.