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
This commit is contained in:
Eric Kohl 2003-01-24 11:25:56 +00:00
parent 9a5403580f
commit 1ce736a133
4 changed files with 26 additions and 8 deletions

View file

@ -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) Changes in v1.8.1 (1/20/2003) (ekohl)
- Fixed the ISO filesystem detection code. - Fixed the ISO filesystem detection code.

View file

@ -343,12 +343,25 @@ BOOL DiskInt13ExtensionsSupported(U32 DriveNumber)
return FALSE; 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 // CX = API subset support bitmap
// Bit 0, extended disk access functions (AH=42h-44h,47h,48h) supported // Bit 0, extended disk access functions (AH=42h-44h,47h,48h) supported
return FALSE; return FALSE;
} }
#endif
// Use this relaxed check instead
if (RegsOut.w.cx == 0x0000)
{
// CX = API subset support bitmap
return FALSE;
}
return TRUE; return TRUE;
} }
@ -420,7 +433,7 @@ U32 DiskGetCacheableBlockCount(U32 DriveNumber)
// If LBA is supported then the block size will be 64 sectors (32k) // 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 not then the block size is the size of one track
if (DiskInt13ExtensionsSupported) if (DiskInt13ExtensionsSupported(DriveNumber))
{ {
return 64; return 64;
} }

View file

@ -41,7 +41,7 @@ BOOL IsIsoFs(U32 DriveNumber)
{ {
PUCHAR Sector = (PUCHAR)DISKREADBUFFER; PUCHAR Sector = (PUCHAR)DISKREADBUFFER;
if (!DiskReadLogicalSectorsLBA(DriveNumber, 16, 1, Sector)) if (!DiskReadLogicalSectors(DriveNumber, 16, 1, Sector))
{ {
FileSystemError("Failed to read the PVD."); FileSystemError("Failed to read the PVD.");
return FALSE; return FALSE;
@ -68,7 +68,7 @@ BOOL IsoOpenVolume(U32 DriveNumber)
IsoRootSector = 0; IsoRootSector = 0;
IsoRootLength = 0; IsoRootLength = 0;
if (!DiskReadLogicalSectorsLBA(DriveNumber, 16, 1, Pvd)) if (!DiskReadLogicalSectors(DriveNumber, 16, 1, Pvd))
{ {
FileSystemError("Failed to read the PVD."); FileSystemError("Failed to read the PVD.");
return FALSE; return FALSE;
@ -179,7 +179,7 @@ static PVOID IsoBufferDirectory(U32 DirectoryStartSector, U32 DirectoryLength)
// //
for (i = 0, Ptr = DirectoryBuffer; i < SectorCount; i++, Ptr += SECTORSIZE) 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); MmFreeMemory(DirectoryBuffer);
return NULL; 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 // 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; return FALSE;
} }

View file

@ -22,7 +22,7 @@
/* just some stuff */ /* just some stuff */
#define VERSION "FreeLoader v1.8.1" #define VERSION "FreeLoader v1.8.2"
#define COPYRIGHT "Copyright (C) 1998-2003 Brian Palmer <brianp@sginet.com>" #define COPYRIGHT "Copyright (C) 1998-2003 Brian Palmer <brianp@sginet.com>"
#define AUTHOR_EMAIL "<brianp@sginet.com>" #define AUTHOR_EMAIL "<brianp@sginet.com>"
#define BY_AUTHOR "by Brian Palmer" #define BY_AUTHOR "by Brian Palmer"
@ -36,7 +36,7 @@
// //
#define FREELOADER_MAJOR_VERSION 1 #define FREELOADER_MAJOR_VERSION 1
#define FREELOADER_MINOR_VERSION 8 #define FREELOADER_MINOR_VERSION 8
#define FREELOADER_PATCH_VERSION 1 #define FREELOADER_PATCH_VERSION 2
PUCHAR GetFreeLoaderVersionString(VOID); PUCHAR GetFreeLoaderVersionString(VOID);