From: Mike L. <Mi...@ml...> - 2002-09-30 16:08:45
|
Following some recent changes to bochs/bios a problem was noticed whereby freeldr stopped working. This was traced by the efforts of Christophe Bothamy to an error in freeldr/arch/i386/biosdisk.S the code currently reads EXTERN(_BiosInt13ReadExtended) .code32 pushal /* Get parameters */ movl 0x24(%esp),%eax movl %eax,_int13_extended_drive movl 0x28(%esp),%eax movl %eax,_packet_lba_sector_number movl 0x2c(%esp),%eax movw %ax,_packet_sector_count movl %eax,_int13_extended_sector_count movl 0x30(%esp),%eax // Get buffer address in eax shrl $4,%eax // Make linear address into segment movw %ax,_packet_transfer_buffer_segment // Save segment movl 0x34(%esp),%eax // Get buffer address in eax andl $0x0f,%eax // Make linear address into offset movw %ax,_packet_transfer_buffer_offset // Save offset The 34 in the third line from the end needs to be 30. I have confirmed that with this change freeldr can again be booted from a hard disk with the current CVS version of bochs. regards Mike Lerwill |