Inlined some of the drive functions.
This commit is contained in:
parent
f1623f64c6
commit
457cbafade
2 changed files with 29 additions and 33 deletions
|
@ -386,35 +386,6 @@ void Drive::OnPortOut(void* pThis, unsigned char status)
|
|||
pDrive->LED = (status & 8) != 0;
|
||||
}
|
||||
|
||||
u32 Drive::AdvanceSectorPositionR(int& byteOffset)
|
||||
{
|
||||
++headBitOffset %= bitsInTrack;
|
||||
byteOffset = headBitOffset >> 3;
|
||||
return (~headBitOffset) & 7;
|
||||
}
|
||||
|
||||
u32 Drive::AdvanceSectorPositionW(int& byteOffset)
|
||||
{
|
||||
byteOffset = headBitOffset >> 3;
|
||||
u32 bit = (~headBitOffset) & 7;
|
||||
++headBitOffset %= bitsInTrack;
|
||||
return bit;
|
||||
}
|
||||
|
||||
bool Drive::GetNextBit()
|
||||
{
|
||||
int byteOffset;
|
||||
int bit = AdvanceSectorPositionR(byteOffset);
|
||||
return diskImage->GetNextBit(headTrackPos, byteOffset, bit);
|
||||
}
|
||||
|
||||
void Drive::SetNextBit(bool value)
|
||||
{
|
||||
int byteOffset;
|
||||
int bit = AdvanceSectorPositionW(byteOffset);
|
||||
diskImage->SetBit(headTrackPos, byteOffset, bit, value);
|
||||
}
|
||||
|
||||
bool Drive::Update()
|
||||
{
|
||||
bool dataReady = false;
|
||||
|
|
33
src/Drive.h
33
src/Drive.h
|
@ -88,10 +88,35 @@ private:
|
|||
|
||||
void DumpTrack(unsigned track); // Used for debugging disk images.
|
||||
|
||||
u32 AdvanceSectorPositionR(int& byte_offset); // No reason why I seperate these into individual read and write versions. I was just trying to get the bit stream to line up when rewriting over existing data.
|
||||
u32 AdvanceSectorPositionW(int& byte_offset);
|
||||
bool GetNextBit();
|
||||
void SetNextBit(bool value);
|
||||
// No reason why I seperate these into individual read and write versions. I was just trying to get the bit stream to line up when rewriting over existing data.
|
||||
inline u32 AdvanceSectorPositionR(int& byteOffset)
|
||||
{
|
||||
++headBitOffset %= bitsInTrack;
|
||||
byteOffset = headBitOffset >> 3;
|
||||
return (~headBitOffset) & 7;
|
||||
}
|
||||
|
||||
inline u32 AdvanceSectorPositionW(int& byteOffset)
|
||||
{
|
||||
byteOffset = headBitOffset >> 3;
|
||||
u32 bit = (~headBitOffset) & 7;
|
||||
++headBitOffset %= bitsInTrack;
|
||||
return bit;
|
||||
}
|
||||
|
||||
inline bool GetNextBit()
|
||||
{
|
||||
int byteOffset;
|
||||
int bit = AdvanceSectorPositionR(byteOffset);
|
||||
return diskImage->GetNextBit(headTrackPos, byteOffset, bit);
|
||||
}
|
||||
|
||||
inline void SetNextBit(bool value)
|
||||
{
|
||||
int byteOffset;
|
||||
int bit = AdvanceSectorPositionW(byteOffset);
|
||||
diskImage->SetBit(headTrackPos, byteOffset, bit, value);
|
||||
}
|
||||
|
||||
DiskImage* diskImage;
|
||||
// When swapping disks some code waits for the write protect signal to go high which will happen if a human ejects a disk.
|
||||
|
|
Loading…
Reference in a new issue