eat up some cycles for cdrom sector transfers (gets some cdrom speed checks to work better)
Imported-from: https://svn.code.sf.net/p/dosbox/code-0/dosbox/trunk@3106
This commit is contained in:
parent
e8aac54d80
commit
615dab6a1f
1 changed files with 7 additions and 8 deletions
|
@ -16,7 +16,7 @@
|
|||
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||
*/
|
||||
|
||||
/* $Id: dos_mscdex.cpp,v 1.52 2008-02-06 21:56:32 c2woody Exp $ */
|
||||
/* $Id: dos_mscdex.cpp,v 1.53 2008-02-19 17:45:33 c2woody Exp $ */
|
||||
|
||||
#include <string.h>
|
||||
#include <ctype.h>
|
||||
|
@ -27,6 +27,7 @@
|
|||
#include "setup.h"
|
||||
#include "support.h"
|
||||
#include "bios.h"
|
||||
#include "cpu.h"
|
||||
|
||||
#include "cdrom.h"
|
||||
|
||||
|
@ -628,27 +629,25 @@ bool CMscdex::GetUPC(Bit8u subUnit, Bit8u& attr, char* upc)
|
|||
return dinfo[subUnit].lastResult = cdrom[subUnit]->GetUPC(attr,&upc[0]);
|
||||
};
|
||||
|
||||
bool CMscdex::ReadSectors(Bit8u subUnit, bool raw, Bit32u sector, Bit16u num, PhysPt data)
|
||||
{
|
||||
bool CMscdex::ReadSectors(Bit8u subUnit, bool raw, Bit32u sector, Bit16u num, PhysPt data) {
|
||||
if (subUnit>=numDrives) return false;
|
||||
if ((4*num*2048+5) < CPU_Cycles) CPU_Cycles -= 4*num*2048;
|
||||
else CPU_Cycles = 5;
|
||||
dinfo[subUnit].lastResult = cdrom[subUnit]->ReadSectors(data,raw,sector,num);
|
||||
return dinfo[subUnit].lastResult;
|
||||
};
|
||||
|
||||
bool CMscdex::ReadSectorsMSF(Bit8u subUnit, bool raw, Bit32u start, Bit16u num, PhysPt data)
|
||||
{
|
||||
bool CMscdex::ReadSectorsMSF(Bit8u subUnit, bool raw, Bit32u start, Bit16u num, PhysPt data) {
|
||||
if (subUnit>=numDrives) return false;
|
||||
Bit8u min = (Bit8u)(start>>16) & 0xFF;
|
||||
Bit8u sec = (Bit8u)(start>> 8) & 0xFF;
|
||||
Bit8u fr = (Bit8u)(start>> 0) & 0xFF;
|
||||
Bit32u sector = min*60*75+sec*75+fr - 150;
|
||||
// TODO: Check, if num has to be converted too ?!
|
||||
return ReadSectors(subUnit,raw,sector,num,data);
|
||||
};
|
||||
|
||||
bool CMscdex::ReadSectors(Bit16u drive, Bit32u sector, Bit16u num, PhysPt data)
|
||||
// Called from INT 2F
|
||||
{
|
||||
bool CMscdex::ReadSectors(Bit16u drive, Bit32u sector, Bit16u num, PhysPt data) {
|
||||
return ReadSectors(GetSubUnit(drive),false,sector,num,data);
|
||||
};
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue