Hi!
Could you define how/why 2nd stage doesn't boot on your side?
With my rewritten ARC names handling, your patch brokes absolutely nothing. I
just successfully installed ReactOS.
Let me know if you want a patch to test your issue on your side.
Best regards,
P. Schweitzer
> Hi!
>
> This patch fixes the disk geometry bug I mentioned in my previous mail.
> It enables disk.sys and usetup.exe to use the same disk geometry that is
> used by the BIOS.
>
> Due to another bug or workaround in the 1st stage setup, the 2nd stage
> setup will not boot at all.
>
>
> Regards,
> Eric
> Index: boot/freeldr/freeldr/arch/i386/hardware.c
> ===================================================================
> --- boot/freeldr/freeldr/arch/i386/hardware.c (revision 48722)
> +++ boot/freeldr/freeldr/arch/i386/hardware.c (working copy)
> @@ -327,7 +327,6 @@
> {
> PCM_PARTIAL_RESOURCE_LIST PartialResourceList;
> PCM_DISK_GEOMETRY_DEVICE_DATA DiskGeometry;
> - EXTENDED_GEOMETRY ExtGeometry;
> GEOMETRY Geometry;
> ULONG Size;
>
> @@ -362,16 +361,8 @@
> DiskGeometry = (PVOID)(((ULONG_PTR)PartialResourceList) +
> sizeof(CM_PARTIAL_RESOURCE_LIST));
>
> /* Get the disk geometry */
> - ExtGeometry.Size = sizeof(EXTENDED_GEOMETRY);
> - if (DiskGetExtendedDriveParameters(DriveNumber, &ExtGeometry,
> ExtGeometry.Size))
> + if(MachDiskGetDriveGeometry(DriveNumber, &Geometry))
> {
> - DiskGeometry->BytesPerSector = ExtGeometry.BytesPerSector;
> - DiskGeometry->NumberOfCylinders = ExtGeometry.Cylinders;
> - DiskGeometry->SectorsPerTrack = ExtGeometry.SectorsPerTrack;
> - DiskGeometry->NumberOfHeads = ExtGeometry.Heads;
> - }
> - else if(MachDiskGetDriveGeometry(DriveNumber, &Geometry))
> - {
> DiskGeometry->BytesPerSector = Geometry.BytesPerSector;
> DiskGeometry->NumberOfCylinders = Geometry.Cylinders;
> DiskGeometry->SectorsPerTrack = Geometry.Sectors;
> Index: boot/freeldr/freeldr/arch/i386/pcdisk.c
> ===================================================================
> --- boot/freeldr/freeldr/arch/i386/pcdisk.c (revision 48722)
> +++ boot/freeldr/freeldr/arch/i386/pcdisk.c (working copy)
> @@ -296,12 +296,25 @@
> BOOLEAN
> PcDiskGetDriveGeometry(ULONG DriveNumber, PGEOMETRY Geometry)
> {
> + EXTENDED_GEOMETRY ExtGeometry;
> REGS RegsIn;
> REGS RegsOut;
> ULONG Cylinders;
>
> DPRINTM(DPRINT_DISK, "DiskGetDriveGeometry()\n");
>
> + /* Try to get the extended geometry first */
> + ExtGeometry.Size = sizeof(EXTENDED_GEOMETRY);
> + if (DiskGetExtendedDriveParameters(DriveNumber, &ExtGeometry,
> ExtGeometry.Size))
> + {
> + Geometry->Cylinders = ExtGeometry.Cylinders;
> + Geometry->Heads = ExtGeometry.Heads;
> + Geometry->Sectors = ExtGeometry.SectorsPerTrack;
> + Geometry->BytesPerSector = ExtGeometry.BytesPerSector;
> +
> + return TRUE;
> + }
> +
> /* BIOS Int 13h, function 08h - Get drive parameters
> * AH = 08h
> * DL = drive (bit 7 set for hard disk)
> _______________________________________________
> Ros-dev mailing list
> [email protected]
> http://www.reactos.org/mailman/listinfo/ros-dev
_______________________________________________
Ros-dev mailing list
[email protected]
http://www.reactos.org/mailman/listinfo/ros-dev