Issue a warning if the specified disk's geometry doesn't match the drive type passed to the HDC
This commit is contained in:
parent
63b4150871
commit
3ee1a6148b
1 changed files with 18 additions and 3 deletions
|
|
@ -148,11 +148,16 @@ HDC.DEFAULT_DRIVE_NAME = "Hard Drive";
|
||||||
* Also, I capitalize only the first letter of units like Kb and Mb, because kilobyte and megabyte are
|
* Also, I capitalize only the first letter of units like Kb and Mb, because kilobyte and megabyte are
|
||||||
* single words; if they were two words, or even a pair of hyphenated words, then I might -- but they're not.
|
* single words; if they were two words, or even a pair of hyphenated words, then I might -- but they're not.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Drive type tables differed across IBM controller models (XTC drive types don't match ATC drive types)
|
||||||
|
* and across OEMs (eg, Compaq drive types only match a few IBM drive types), so you must use iDriveTable to
|
||||||
|
* index the correct table type inside both aDriveTables and aDriveTypes.
|
||||||
|
*/
|
||||||
|
HDC.aDriveTables = ["XTC", "ATC", "COMPAQ"];
|
||||||
|
|
||||||
HDC.aDriveTypes = [
|
HDC.aDriveTypes = [
|
||||||
/*
|
/*
|
||||||
* Sadly, drive types differ across controller models (XTC drive types don't match ATC drive types),
|
|
||||||
* so aDriveTypes must first be indexed by a controller index (this.iDriveTable).
|
|
||||||
*
|
|
||||||
* aDriveTypes[0] is for the IBM PC XT (XTC) controller.
|
* aDriveTypes[0] is for the IBM PC XT (XTC) controller.
|
||||||
*/
|
*/
|
||||||
{
|
{
|
||||||
|
|
@ -1261,6 +1266,16 @@ HDC.prototype.doneLoadDisk = function(drive, disk, sDiskName, sDiskPath)
|
||||||
* and is not guaranteed to match the drive mapping that DOS ultimately uses.
|
* and is not guaranteed to match the drive mapping that DOS ultimately uses.
|
||||||
*/
|
*/
|
||||||
this.notice("Mounted disk \"" + sDiskName + "\" in drive " + String.fromCharCode(0x43 + drive.iDrive), drive.fAutoMount);
|
this.notice("Mounted disk \"" + sDiskName + "\" in drive " + String.fromCharCode(0x43 + drive.iDrive), drive.fAutoMount);
|
||||||
|
|
||||||
|
var aDiskInfo = disk.info();
|
||||||
|
if (aDiskInfo[0] != drive.nCylinders || aDiskInfo[1] != drive.nHeads || aDiskInfo[2] != drive.nSectors || aDiskInfo[3] != drive.cbSector) {
|
||||||
|
/*
|
||||||
|
* TODO: Decide how to deal with this problem; ie, either disallow disk access altogether, or automatically
|
||||||
|
* map the controller's I/O requests to the disk's geometry. Also, we should provide a way to reformat such a
|
||||||
|
* disk so that its geometry matches the controller requirements.
|
||||||
|
*/
|
||||||
|
this.notice("Warning: disk geometry (" + aDiskInfo[0] + ':' + aDiskInfo[1] + ':' + aDiskInfo[2] + ") does not match " + HDC.aDriveTables[this.iDriveTable] + " drive type " + drive.type + " (" + drive.nCylinders + ':' + drive.nHeads + ':' + drive.nSectors + ")");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
if (drive.fAutoMount) {
|
if (drive.fAutoMount) {
|
||||||
drive.fAutoMount = false;
|
drive.fAutoMount = false;
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue