Debugger: Update DISK INFO to display disk info across 2 lines of text

This commit is contained in:
michaelangel007 2023-04-24 21:28:29 -07:00
parent b2bb604c8a
commit 908e4db878
5 changed files with 51 additions and 17 deletions

View File

@ -3684,25 +3684,30 @@ Update_t CmdDisk (int nArgs)
if (nArgs > 2)
return HelpLastCommand();
Disk_Status_e eDiskState;
LPCTSTR sDiskState = diskCard.GetCurrentState(&eDiskState);
BYTE nShiftReg = diskCard.GetCurrentShiftReg();
ConsolePrintFormat(
/*CHC_DEFAULT*/ "FW" CHC_NUM_DEC "%2d" CHC_ARG_SEP ":"
CHC_DEFAULT " D" CHC_NUM_DEC "%d"
CHC_DEFAULT " T$" CHC_NUM_HEX "%s" CHC_ARG_SEP ","
CHC_DEFAULT " Phase $" CHC_NUM_HEX "%s" CHC_ARG_SEP ","
CHC_DEFAULT " Offset $" CHC_ADDRESS "%04X" CHC_ARG_SEP ","
CHC_DEFAULT " Cycles " CHC_NUM_DEC "%.2f" CHC_ARG_SEP ","
CHC_CATEGORY " %s"
CHC_DEFAULT " " CHC_NUM_HEX "%02X",
/*CHC_DEFAULT*/ "FW" CHC_NUM_DEC "%2d" CHC_ARG_SEP ":"
CHC_DEFAULT " D" CHC_NUM_DEC "%d"
CHC_DEFAULT " T$" CHC_NUM_HEX "%s" CHC_ARG_SEP ","
CHC_DEFAULT " Phase $" CHC_NUM_HEX "%s" CHC_ARG_SEP ","
CHC_DEFAULT " bitOffset $" CHC_ADDRESS "%04X" CHC_ARG_SEP ","
CHC_DEFAULT " Cycles " CHC_NUM_DEC "%.2f" CHC_ARG_SEP ",",
diskCard.GetCurrentFirmware(),
diskCard.GetCurrentDrive() + 1,
diskCard.GetCurrentTrackString().c_str(),
diskCard.GetCurrentPhaseString().c_str(),
diskCard.GetCurrentBitOffset(),
diskCard.GetCurrentExtraCycles(),
diskCard.GetCurrentState(),
diskCard.GetCurrentShiftReg()
diskCard.GetCurrentExtraCycles()
);
if (eDiskState == DISK_STATUS_READ ) ConsolePrintFormat( CHC_COMMAND " %s" CHC_DEFAULT " << " CHC_NUM_HEX "%02X", sDiskState, nShiftReg );
else if (eDiskState == DISK_STATUS_WRITE) ConsolePrintFormat( CHC_ERROR " %s" CHC_DEFAULT " >> " CHC_NUM_HEX "%02X", sDiskState, nShiftReg );
else if (eDiskState == DISK_STATUS_PROT ) ConsolePrintFormat( CHC_WARNING " %s" CHC_DEFAULT " >| " CHC_NUM_HEX "%02X", sDiskState, nShiftReg );
else /* */ ConsolePrintFormat( CHC_INFO " %s" , sDiskState );
return ConsoleUpdate();
}

View File

@ -132,24 +132,44 @@ std::string Disk2InterfaceCard::GetCurrentPhaseString(void)
return FormatIntFracString(m_floppyDrive[m_currDrive].m_phasePrecise, true);
}
LPCTSTR Disk2InterfaceCard::GetCurrentState(void)
LPCTSTR Disk2InterfaceCard::GetCurrentState(Disk_Status_e *pDiskState)
{
if (m_floppyDrive[m_currDrive].m_disk.m_imagehandle == NULL)
{
if (pDiskState)
*pDiskState = DISK_STATUS_EMPTY;
return "Empty";
}
if (!m_floppyMotorOn)
{
if (m_floppyDrive[m_currDrive].m_spinning > 0)
{
if (pDiskState)
*pDiskState = DISK_STATUS_SPIN;
return "Off (spinning)";
}
else
{
if (pDiskState)
*pDiskState = DISK_STATUS_OFF;
return "Off";
}
}
else if (m_seqFunc.writeMode)
{
if (m_floppyDrive[m_currDrive].m_disk.m_bWriteProtected)
{
if (pDiskState)
*pDiskState = DISK_STATUS_PROT;
return "Writing (write protected)";
}
else
{
if (pDiskState)
*pDiskState = DISK_STATUS_WRITE;
return "Writing";
}
}
else
{
@ -161,7 +181,11 @@ LPCTSTR Disk2InterfaceCard::GetCurrentState(void)
return "Reading write protect state (not write protected)";
}
else*/
{
if (pDiskState)
*pDiskState = DISK_STATUS_READ;
return "Reading";
}
}
}
@ -766,7 +790,7 @@ Disk_Status_e Disk2InterfaceCard::GetDriveLightStatus(const int drive)
}
}
return DISK_STATUS_OFF;
return DISK_STATUS_EMPTY;
}
void Disk2InterfaceCard::GetLightStatus(Disk_Status_e *pDisk1Status, Disk_Status_e *pDisk2Status)

View File

@ -173,7 +173,7 @@ public:
static std::string FormatIntFracString(float phase, bool hex);
std::string GetCurrentTrackString(void);
std::string GetCurrentPhaseString(void);
LPCTSTR GetCurrentState(void);
LPCTSTR GetCurrentState(Disk_Status_e *pDiskState = NULL);
bool UserSelectNewDiskImage(const int drive, LPCSTR pszFilename="");
bool DriveSwap(void);
bool IsDriveConnected(int drive) { return m_floppyDrive[drive].m_isConnected; }

View File

@ -48,7 +48,9 @@ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
DISK_STATUS_OFF ,
DISK_STATUS_READ ,
DISK_STATUS_WRITE,
DISK_STATUS_PROT ,
DISK_STATUS_PROT , // NOTE: GetDriveLightStatus() and GetCurrentState() return slightly different states
DISK_STATUS_EMPTY, // See: GetCurrentState(); no disk image mounted
DISK_STATUS_SPIN , // See: GetCurrentState(), not reading, not writing
NUM_DISK_STATUS
};

View File

@ -68,8 +68,9 @@ static const DWORD g_aDiskFullScreenColorsLED[ NUM_DISK_STATUS ] =
RGB( 0, 0, 0), // DISK_STATUS_OFF BLACK
RGB( 0,255, 0), // DISK_STATUS_READ GREEN
RGB(255, 0, 0), // DISK_STATUS_WRITE RED
RGB(255,128, 0) // DISK_STATUS_PROT ORANGE
// RGB( 0, 0,255) // DISK_STATUS_PROT -blue-
RGB(255,128, 0), // DISK_STATUS_PROT ORANGE
RGB( 0, 0,255), // DISK_STATUS_EMPTY -blue-
RGB( 0,1280,128) // DISK_STATUS_SPIN -cyan-
};
void Win32Frame::SetAltEnterToggleFullScreen(bool mode)
@ -227,6 +228,8 @@ void Win32Frame::CreateGdiObjects(void)
g_hDiskWindowedLED[ DISK_STATUS_READ ] = (HBITMAP)LOADBUTTONBITMAP(TEXT("DISKREAD_BITMAP"));
g_hDiskWindowedLED[ DISK_STATUS_WRITE] = (HBITMAP)LOADBUTTONBITMAP(TEXT("DISKWRITE_BITMAP"));
g_hDiskWindowedLED[ DISK_STATUS_PROT ] = (HBITMAP)LOADBUTTONBITMAP(TEXT("DISKPROT_BITMAP"));
g_hDiskWindowedLED[ DISK_STATUS_EMPTY] = (HBITMAP)LOADBUTTONBITMAP(TEXT("DISKOFF_BITMAP"));
g_hDiskWindowedLED[ DISK_STATUS_SPIN ] = (HBITMAP)LOADBUTTONBITMAP(TEXT("DISKREAD_BITMAP"));
btnfacebrush = CreateSolidBrush(GetSysColor(COLOR_BTNFACE));
btnfacepen = CreatePen(PS_SOLID,1,GetSysColor(COLOR_BTNFACE));