From 1ce736a1339f941ca2f29e12c71db31c617a8f8a Mon Sep 17 00:00:00 2001 From: Eric Kohl Date: Fri, 24 Jan 2003 11:25:56 +0000 Subject: [PATCH] Changes in v1.8.2 (1/24/2003) (ekohl) - Relaxed check for Int13-Extension support. Some BIOSes have a strange opinion about what is supported. :-/ svn path=/trunk/; revision=4057 --- freeldr/freeldr/CHANGELOG | 5 +++++ freeldr/freeldr/arch/i386/i386disk.c | 17 +++++++++++++++-- freeldr/freeldr/fs/iso.c | 8 ++++---- freeldr/freeldr/include/version.h | 4 ++-- 4 files changed, 26 insertions(+), 8 deletions(-) diff --git a/freeldr/freeldr/CHANGELOG b/freeldr/freeldr/CHANGELOG index c8bd44e9c5a..5a8d09fd973 100644 --- a/freeldr/freeldr/CHANGELOG +++ b/freeldr/freeldr/CHANGELOG @@ -1,3 +1,8 @@ +Changes in v1.8.2 (1/24/2003) (ekohl) + +- Relaxed check for Int13-Extension support. + Some BIOSes have a strange opinion about what is supported. :-/ + Changes in v1.8.1 (1/20/2003) (ekohl) - Fixed the ISO filesystem detection code. diff --git a/freeldr/freeldr/arch/i386/i386disk.c b/freeldr/freeldr/arch/i386/i386disk.c index 0fb78581ad9..3408082194e 100644 --- a/freeldr/freeldr/arch/i386/i386disk.c +++ b/freeldr/freeldr/arch/i386/i386disk.c @@ -343,12 +343,25 @@ BOOL DiskInt13ExtensionsSupported(U32 DriveNumber) return FALSE; } - if (!(RegsOut.w.cx & 0x01)) + // Note: + // The original check is too strict because some BIOSes report that + // extended disk access functions are not suported when booting + // from a CD (e.g. Phoenix BIOS v6.00PG). Argh! +#if 0 + if (!(RegsOut.w.cx & 0x0001)) { // CX = API subset support bitmap // Bit 0, extended disk access functions (AH=42h-44h,47h,48h) supported return FALSE; } +#endif + + // Use this relaxed check instead + if (RegsOut.w.cx == 0x0000) + { + // CX = API subset support bitmap + return FALSE; + } return TRUE; } @@ -420,7 +433,7 @@ U32 DiskGetCacheableBlockCount(U32 DriveNumber) // If LBA is supported then the block size will be 64 sectors (32k) // If not then the block size is the size of one track - if (DiskInt13ExtensionsSupported) + if (DiskInt13ExtensionsSupported(DriveNumber)) { return 64; } diff --git a/freeldr/freeldr/fs/iso.c b/freeldr/freeldr/fs/iso.c index c9c4be62dfb..0a600e2a60b 100644 --- a/freeldr/freeldr/fs/iso.c +++ b/freeldr/freeldr/fs/iso.c @@ -41,7 +41,7 @@ BOOL IsIsoFs(U32 DriveNumber) { PUCHAR Sector = (PUCHAR)DISKREADBUFFER; - if (!DiskReadLogicalSectorsLBA(DriveNumber, 16, 1, Sector)) + if (!DiskReadLogicalSectors(DriveNumber, 16, 1, Sector)) { FileSystemError("Failed to read the PVD."); return FALSE; @@ -68,7 +68,7 @@ BOOL IsoOpenVolume(U32 DriveNumber) IsoRootSector = 0; IsoRootLength = 0; - if (!DiskReadLogicalSectorsLBA(DriveNumber, 16, 1, Pvd)) + if (!DiskReadLogicalSectors(DriveNumber, 16, 1, Pvd)) { FileSystemError("Failed to read the PVD."); return FALSE; @@ -179,7 +179,7 @@ static PVOID IsoBufferDirectory(U32 DirectoryStartSector, U32 DirectoryLength) // for (i = 0, Ptr = DirectoryBuffer; i < SectorCount; i++, Ptr += SECTORSIZE) { - if (!DiskReadLogicalSectorsLBA(IsoDriveNumber, DirectoryStartSector + i, 1, (PVOID)DISKREADBUFFER)) + if (!DiskReadLogicalSectors(IsoDriveNumber, DirectoryStartSector + i, 1, (PVOID)DISKREADBUFFER)) { MmFreeMemory(DirectoryBuffer); return NULL; @@ -391,7 +391,7 @@ BOOL IsoReadFile(FILE *FileHandle, U32 BytesToRead, U32* BytesRead, PVOID Buffer // // Now do the read and update BytesRead, BytesToRead, FilePointer, & Buffer // - if (!DiskReadLogicalSectorsLBA(IsoDriveNumber, SectorNumber, 1, (PVOID)DISKREADBUFFER)) + if (!DiskReadLogicalSectors(IsoDriveNumber, SectorNumber, 1, (PVOID)DISKREADBUFFER)) { return FALSE; } diff --git a/freeldr/freeldr/include/version.h b/freeldr/freeldr/include/version.h index 5b13e8cc04b..d36bc417a30 100644 --- a/freeldr/freeldr/include/version.h +++ b/freeldr/freeldr/include/version.h @@ -22,7 +22,7 @@ /* just some stuff */ -#define VERSION "FreeLoader v1.8.1" +#define VERSION "FreeLoader v1.8.2" #define COPYRIGHT "Copyright (C) 1998-2003 Brian Palmer " #define AUTHOR_EMAIL "" #define BY_AUTHOR "by Brian Palmer" @@ -36,7 +36,7 @@ // #define FREELOADER_MAJOR_VERSION 1 #define FREELOADER_MINOR_VERSION 8 -#define FREELOADER_PATCH_VERSION 1 +#define FREELOADER_PATCH_VERSION 2 PUCHAR GetFreeLoaderVersionString(VOID);