on the int call... here is the code.. anyone see anything funny ?
Code: Select all
; Here is the disk_packet struct...
align 4
disk_packet db 10h ; 10h or 18h Disk Packet Structure for Extended int 13h loads(size).
db 0 ; reserved.
db 32 ; block count to transfer (max 07fh for phoenix edd).
db 0 ; reserved
dw 0,0 ; ofs:seg for read/write buffer (if ffffh:ffffh use last qword and 18h).
dq 1 ; qword block start (2nd sector).
dq 0 ; Float 64bit address of transfer buffer if dword at 4 is ffff:ffff (EDD3). (not used).
; here is the code snippet.. load... the val in EAX and CL and ES:BX I've checked and they're correct..
; ONE thing i did notice in the spec doc there is 1 byte for the sector count and a reserved byte, in RB's int list there is a a full DW (word)?!?
mov esi,offset disk_packet
mov dword ptr ds:[esi+12],0
mov dword ptr ds:[esi+8],eax ; Store Starting Sector.
mov byte ptr ds:[esi+2],cl ; Store Sector Count to disk_packet.
mov ax,es
mov word ptr ds:[esi+6],ax ; Store Segment to Load To.
mov eax,ebx
mov word ptr ds:[esi+4],ax ; Store Offset to Load To.
mov dl,fs:[BOOT_DRIVE_ID]
mov ax,4200h
int 13h