BIOS INT13h AH=42h with BOCHS
Posted: Sun Jul 19, 2015 1:08 pm
Hello guys,
I'm new to OSDev.org and I'm also new to OS development. I got some practice with BOCHS and x86 assembly but I still got a lot to learn. My question is:
I got trouble with my bootloader code. I try to use the INT 13h AH=42h: "Extended Read Sectors From Drive" BIOS function of version 3.0 (EDD-3.0) with BOCHS to copy my kernel code from a hard disk image to a memory location above 0x100000 in real mode.
When I use the INT13 AH=41h BX=55AAh function to check for support of EDD-3.0 I get a positive result. I'm using BOCHS 2.6.8.
I use this DAP. What BOCHS does is copy 4 blocks from disk to FFFF:FFFF mod 100000h = FFEFh. What am I doing wrong? I use Ralf Brown's Interrupt List (http://www.ctyme.com/intr/rb-0708.htm) as reference.
I'm new to OSDev.org and I'm also new to OS development. I got some practice with BOCHS and x86 assembly but I still got a lot to learn. My question is:
I got trouble with my bootloader code. I try to use the INT 13h AH=42h: "Extended Read Sectors From Drive" BIOS function of version 3.0 (EDD-3.0) with BOCHS to copy my kernel code from a hard disk image to a memory location above 0x100000 in real mode.
When I use the INT13 AH=41h BX=55AAh function to check for support of EDD-3.0 I get a positive result. I'm using BOCHS 2.6.8.
Code: Select all
Disk Address Packet:
db 0x18 ; size of packet
db 0x00 ; reserved
db 0x04 ; # blocks to transfer
db 0x00 ; reserved
dw 0xFFFF ; offset
dw 0xFFFF ; segment
dq 0x1 ; starting absolute block number (LBA)
dq 0x100000; 64-bit flat target address