- identify_drive() returns max. 16383 cylinders (higher values are usually
calculated using the total number of sectors, heads and sectors per track)
This commit is contained in:
parent
8d8880fd71
commit
f1799211ae
@ -1,5 +1,5 @@
|
||||
/////////////////////////////////////////////////////////////////////////
|
||||
// $Id: harddrv.cc,v 1.190 2006-12-17 08:17:28 vruppert Exp $
|
||||
// $Id: harddrv.cc,v 1.191 2006-12-18 17:56:05 vruppert Exp $
|
||||
/////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// Copyright (C) 2002 MandrakeSoft S.A.
|
||||
@ -147,7 +147,7 @@ void bx_hard_drive_c::init(void)
|
||||
char ata_name[20];
|
||||
bx_list_c *base;
|
||||
|
||||
BX_DEBUG(("Init $Id: harddrv.cc,v 1.190 2006-12-17 08:17:28 vruppert Exp $"));
|
||||
BX_DEBUG(("Init $Id: harddrv.cc,v 1.191 2006-12-18 17:56:05 vruppert Exp $"));
|
||||
|
||||
for (channel=0; channel<BX_MAX_ATA_CHANNEL; channel++) {
|
||||
sprintf(ata_name, "ata.%d.resources", channel);
|
||||
@ -2888,7 +2888,11 @@ void bx_hard_drive_c::identify_drive(Bit8u channel)
|
||||
// Word 1: number of user-addressable cylinders in
|
||||
// default translation mode. If the value in words 60-61
|
||||
// exceed 16,515,072, this word shall contain 16,383.
|
||||
BX_SELECTED_DRIVE(channel).id_drive[1] = BX_SELECTED_DRIVE(channel).hard_drive->cylinders;
|
||||
if (BX_SELECTED_DRIVE(channel).hard_drive->cylinders > 16383) {
|
||||
BX_SELECTED_DRIVE(channel).id_drive[1] = 16383;
|
||||
} else {
|
||||
BX_SELECTED_DRIVE(channel).id_drive[1] = BX_SELECTED_DRIVE(channel).hard_drive->cylinders;
|
||||
}
|
||||
|
||||
// Word 2: reserved
|
||||
BX_SELECTED_DRIVE(channel).id_drive[2] = 0;
|
||||
|
Loading…
x
Reference in New Issue
Block a user