mirror of
https://github.com/AppleWin/AppleWin.git
synced 2024-12-26 20:30:16 +00:00
added DISASM to print current status
added DISASM TARGET [#]
This commit is contained in:
parent
2b1e0c76a4
commit
fb3859f6da
135
source/Debug.cpp
135
source/Debug.cpp
@ -43,7 +43,7 @@ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
// TODO: COLOR LOAD ["filename"]
|
||||
|
||||
// See Debugger_Changelong.txt for full details
|
||||
const int DEBUGGER_VERSION = MAKE_VERSION(2,5,3,6);
|
||||
const int DEBUGGER_VERSION = MAKE_VERSION(2,5,3,8);
|
||||
|
||||
|
||||
// Public _________________________________________________________________________________________
|
||||
@ -527,10 +527,12 @@ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
|
||||
|
||||
// Disassembly
|
||||
bool g_bConfigDisasmOpcodesView = true;
|
||||
bool g_bConfigDisasmOpcodeSpaces = true;
|
||||
bool g_bConfigDisasmAddressColon = true;
|
||||
int g_iConfigDisasmBranchType = DISASM_BRANCH_FANCY;
|
||||
bool g_bConfigDisasmAddressColon = true;
|
||||
bool g_bConfigDisasmOpcodesView = true;
|
||||
bool g_bConfigDisasmOpcodeSpaces = true;
|
||||
int g_iConfigDisasmTargets = DISASM_TARGET_BOTH;
|
||||
int g_iConfigDisasmBranchType = DISASM_BRANCH_FANCY;
|
||||
int g_bConfigDisasmImmediateChar = DISASM_IMMED_BOTH;
|
||||
|
||||
|
||||
// Display ____________________________________________________________________
|
||||
@ -591,6 +593,7 @@ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
{TEXT("COLON") , NULL, PARAM_CONFIG_COLON },
|
||||
{TEXT("OPCODE") , NULL, PARAM_CONFIG_OPCODE },
|
||||
{TEXT("SPACES") , NULL, PARAM_CONFIG_SPACES },
|
||||
{TEXT("TARGET") , NULL, PARAM_CONFIG_TARGET },
|
||||
// Disk
|
||||
{TEXT("EJECT") , NULL, PARAM_DISK_EJECT },
|
||||
{TEXT("PROTECT") , NULL, PARAM_DISK_PROTECT },
|
||||
@ -2232,60 +2235,122 @@ Update_t CmdConfigSave (int nArgs)
|
||||
Update_t CmdConfigDisasm( int nArgs )
|
||||
{
|
||||
int iParam = 0;
|
||||
TCHAR sText[ CONSOLE_WIDTH ];
|
||||
|
||||
bool bDisplayCurrentSettings = false;
|
||||
|
||||
// if (_tcscmp( g_aArgs[ 1 ].sArg, g_aParameters[ PARAM_WILDSTAR ].m_sName ) == 0)
|
||||
|
||||
if (! nArgs)
|
||||
{
|
||||
bDisplayCurrentSettings = true;
|
||||
nArgs = PARAM_CONFIG_NUM;
|
||||
}
|
||||
else
|
||||
{
|
||||
if (nArgs > 2)
|
||||
return Help_Arg_1( CMD_CONFIG_DISASM );
|
||||
}
|
||||
|
||||
for (int iArg = 1; iArg <= nArgs; iArg++ )
|
||||
{
|
||||
if (bDisplayCurrentSettings)
|
||||
iParam = _PARAM_CONFIG_BEGIN + iArg - 1;
|
||||
else
|
||||
if (FindParam( g_aArgs[iArg].sArg, MATCH_FUZZY, iParam ))
|
||||
{
|
||||
|
||||
// if (_tcscmp( g_aArgs[ iArg ].sArg, g_aParameters[ PARAM_WILDSTAR ].m_sName ) == 0)
|
||||
// All -- for saving
|
||||
// g_aArgs[ iArg ]
|
||||
}
|
||||
|
||||
switch (iParam)
|
||||
{
|
||||
case PARAM_CONFIG_BRANCH:
|
||||
iArg++;
|
||||
if (iArg > 2)
|
||||
return Help_Arg_1( CMD_CONFIG_DISASM ); // CMD_CONFIG_DISASM_BRANCH );
|
||||
|
||||
|
||||
g_iConfigDisasmBranchType = g_aArgs[ iArg ].nVal1;
|
||||
if (g_iConfigDisasmBranchType < 0)
|
||||
g_iConfigDisasmBranchType = 0;
|
||||
if (g_iConfigDisasmBranchType >= NUM_DISASM_BRANCH_TYPES)
|
||||
g_iConfigDisasmBranchType = NUM_DISASM_BRANCH_TYPES - 1;
|
||||
if ((nArgs > 1) && (! bDisplayCurrentSettings)) // set
|
||||
{
|
||||
iArg++;
|
||||
g_iConfigDisasmBranchType = g_aArgs[ iArg ].nVal1;
|
||||
if (g_iConfigDisasmBranchType < 0)
|
||||
g_iConfigDisasmBranchType = 0;
|
||||
if (g_iConfigDisasmBranchType >= NUM_DISASM_BRANCH_TYPES)
|
||||
g_iConfigDisasmBranchType = NUM_DISASM_BRANCH_TYPES - 1;
|
||||
|
||||
}
|
||||
else // show current setting
|
||||
{
|
||||
wsprintf( sText, TEXT( "Branch Type: %d" ), g_iConfigDisasmBranchType );
|
||||
ConsoleBufferPush( sText );
|
||||
ConsoleBufferToDisplay();
|
||||
}
|
||||
break;
|
||||
|
||||
case PARAM_CONFIG_COLON:
|
||||
iArg++;
|
||||
if (iArg > 2)
|
||||
return Help_Arg_1( CMD_CONFIG_DISASM ); // CMD_CONFIG_DISASM_COLON );
|
||||
|
||||
g_bConfigDisasmAddressColon = (g_aArgs[ iArg ].nVal1 & 1);
|
||||
if ((nArgs > 1) && (! bDisplayCurrentSettings)) // set
|
||||
{
|
||||
iArg++;
|
||||
g_bConfigDisasmAddressColon = (g_aArgs[ iArg ].nVal1) ? true : false;
|
||||
}
|
||||
else // show current setting
|
||||
{
|
||||
int iState = g_bConfigDisasmAddressColon ? PARAM_ON : PARAM_OFF;
|
||||
wsprintf( sText, TEXT( "Colon: %s" ), g_aParameters[ iState ].m_sName );
|
||||
ConsoleBufferPush( sText );
|
||||
ConsoleBufferToDisplay();
|
||||
}
|
||||
break;
|
||||
|
||||
case PARAM_CONFIG_OPCODE:
|
||||
iArg++;
|
||||
if (iArg > 2)
|
||||
return Help_Arg_1( CMD_CONFIG_DISASM ); // CMD_CONFIG_DISASM_OPCODE );
|
||||
|
||||
g_bConfigDisasmOpcodesView = (g_aArgs[ iArg ].nVal1 & 1);
|
||||
if ((nArgs > 1) && (! bDisplayCurrentSettings)) // set
|
||||
{
|
||||
iArg++;
|
||||
g_bConfigDisasmOpcodesView = (g_aArgs[ iArg ].nVal1) ? true : false;
|
||||
}
|
||||
else
|
||||
{
|
||||
int iState = g_bConfigDisasmOpcodeSpaces ? PARAM_ON : PARAM_OFF;
|
||||
wsprintf( sText, TEXT( "Opcodes: %s" ), g_aParameters[ iState ].m_sName );
|
||||
ConsoleBufferPush( sText );
|
||||
ConsoleBufferToDisplay();
|
||||
}
|
||||
break;
|
||||
|
||||
case PARAM_CONFIG_SPACES:
|
||||
iArg++;
|
||||
if (iArg > 2)
|
||||
return Help_Arg_1( CMD_CONFIG_DISASM ); // CMD_CONFIG_DISASM_SPACES );
|
||||
|
||||
g_bConfigDisasmOpcodeSpaces = (g_aArgs[ iArg ].nVal1 & 1);
|
||||
if ((nArgs > 1) && (! bDisplayCurrentSettings)) // set
|
||||
{
|
||||
iArg++;
|
||||
g_bConfigDisasmOpcodeSpaces = (g_aArgs[ iArg ].nVal1) ? true : false;
|
||||
}
|
||||
else
|
||||
{
|
||||
int iState = g_bConfigDisasmOpcodeSpaces ? PARAM_ON : PARAM_OFF;
|
||||
wsprintf( sText, TEXT( "Opcode spaces: %s" ), g_aParameters[ iState ].m_sName );
|
||||
ConsoleBufferPush( sText );
|
||||
ConsoleBufferToDisplay();
|
||||
}
|
||||
break;
|
||||
|
||||
case PARAM_CONFIG_TARGET:
|
||||
if ((nArgs > 1) && (! bDisplayCurrentSettings)) // set
|
||||
{
|
||||
iArg++;
|
||||
g_iConfigDisasmTargets = g_aArgs[ iArg ].nVal1;
|
||||
if (g_iConfigDisasmTargets < 0)
|
||||
g_iConfigDisasmTargets = 0;
|
||||
if (g_iConfigDisasmTargets >= NUM_DISASM_TARGET_TYPES)
|
||||
g_iConfigDisasmTargets = NUM_DISASM_TARGET_TYPES - 1;
|
||||
}
|
||||
else // show current setting
|
||||
{
|
||||
wsprintf( sText, TEXT( "Target: %d" ), g_iConfigDisasmTargets );
|
||||
ConsoleBufferPush( sText );
|
||||
ConsoleBufferToDisplay();
|
||||
}
|
||||
break;
|
||||
|
||||
default:
|
||||
return Help_Arg_1( CMD_CONFIG_DISASM ); // CMD_CONFIG_DISASM_OPCODE );
|
||||
}
|
||||
}
|
||||
// }
|
||||
// else
|
||||
// return Help_Arg_1( CMD_CONFIG_DISASM );
|
||||
}
|
||||
return UPDATE_CONSOLE_DISPLAY | UPDATE_DISASM;
|
||||
}
|
||||
|
@ -51,10 +51,12 @@ using namespace std;
|
||||
extern const int WINDOW_DATA_BYTES_PER_LINE;
|
||||
|
||||
// Disassembly
|
||||
extern bool g_bConfigDisasmOpcodesView ;//= true; // TODO: CONFIG {DISASM} OPCODES [0|1]
|
||||
extern bool g_bConfigDisasmOpcodeSpaces ;//= true; // TODO: CONFIG {DISASM} SPACE [0|1]
|
||||
extern bool g_bConfigDisasmAddressColon ;//= true; // TODO: CONFIG {DISASM} COLON [0|1]
|
||||
extern int g_iConfigDisasmBranchType ;//DISASM_BRANCH_FANCY; // TODO: CONFIG {DISASM} BRANCH [0|1|2]
|
||||
extern bool g_bConfigDisasmAddressColon ;
|
||||
extern bool g_bConfigDisasmOpcodesView ;
|
||||
extern bool g_bConfigDisasmOpcodeSpaces ;
|
||||
extern int g_iConfigDisasmTargets ;
|
||||
extern int g_iConfigDisasmBranchType ;
|
||||
extern int g_bConfigDisasmImmediateChar;
|
||||
|
||||
// Display
|
||||
extern bool g_bDebuggerViewingAppleOutput;
|
||||
|
@ -287,7 +287,7 @@ int FormatDisassemblyLine( WORD nBaseAddress, int iOpcode, int iOpmode, int nOpB
|
||||
|
||||
// Always show branch indicators
|
||||
// if ((nBaseAddress == regs.pc) && CheckJump(nAddress))
|
||||
bDisasmFormatFlags |= DISASM_BRANCH_INDICATOR;
|
||||
bDisasmFormatFlags |= DISASM_FORMAT_BRANCH;
|
||||
|
||||
if (nTarget < nBaseAddress)
|
||||
{
|
||||
@ -323,41 +323,41 @@ int FormatDisassemblyLine( WORD nBaseAddress, int iOpcode, int iOpmode, int nOpB
|
||||
LPCTSTR pSymbol = FindSymbolFromAddress( nTarget );
|
||||
if (pSymbol)
|
||||
{
|
||||
bDisasmFormatFlags |= DISASM_TARGET_SYMBOL;
|
||||
bDisasmFormatFlags |= DISASM_FORMAT_SYMBOL;
|
||||
pTarget = pSymbol;
|
||||
}
|
||||
|
||||
if (! (bDisasmFormatFlags & DISASM_TARGET_SYMBOL))
|
||||
if (! (bDisasmFormatFlags & DISASM_FORMAT_SYMBOL))
|
||||
{
|
||||
pSymbol = FindSymbolFromAddress( nTarget - 1 );
|
||||
if (pSymbol)
|
||||
{
|
||||
bDisasmFormatFlags |= DISASM_TARGET_SYMBOL;
|
||||
bDisasmFormatFlags |= DISASM_TARGET_OFFSET;
|
||||
bDisasmFormatFlags |= DISASM_FORMAT_SYMBOL;
|
||||
bDisasmFormatFlags |= DISASM_FORMAT_OFFSET;
|
||||
pTarget = pSymbol;
|
||||
nTargetOffset_ = +1; // U FA82 LDA #3F1 BREAK+1
|
||||
}
|
||||
}
|
||||
|
||||
if (! (bDisasmFormatFlags & DISASM_TARGET_SYMBOL))
|
||||
if (! (bDisasmFormatFlags & DISASM_FORMAT_SYMBOL))
|
||||
{
|
||||
pSymbol = FindSymbolFromAddress( nTarget + 1 );
|
||||
if (pSymbol)
|
||||
{
|
||||
bDisasmFormatFlags |= DISASM_TARGET_SYMBOL;
|
||||
bDisasmFormatFlags |= DISASM_TARGET_OFFSET;
|
||||
bDisasmFormatFlags |= DISASM_FORMAT_SYMBOL;
|
||||
bDisasmFormatFlags |= DISASM_FORMAT_OFFSET;
|
||||
pTarget = pSymbol;
|
||||
nTargetOffset_ = -1; // U FA82 LDA #3F3 BREAK-1
|
||||
}
|
||||
}
|
||||
|
||||
if (! (bDisasmFormatFlags & DISASM_TARGET_SYMBOL))
|
||||
if (! (bDisasmFormatFlags & DISASM_FORMAT_SYMBOL))
|
||||
{
|
||||
pTarget = FormatAddress( nTarget, nOpBytes );
|
||||
}
|
||||
|
||||
// wsprintf( sTarget, g_aOpmodes[ iOpmode ]._sFormat, pTarget );
|
||||
if (bDisasmFormatFlags & DISASM_TARGET_OFFSET)
|
||||
if (bDisasmFormatFlags & DISASM_FORMAT_OFFSET)
|
||||
{
|
||||
int nAbsTargetOffset = (nTargetOffset_ > 0) ? nTargetOffset_ : -nTargetOffset_;
|
||||
wsprintf( sTargetOffset_, "%d", nAbsTargetOffset );
|
||||
@ -374,7 +374,7 @@ int FormatDisassemblyLine( WORD nBaseAddress, int iOpcode, int iOpmode, int nOpB
|
||||
|
||||
if (nTargetPointer != NO_6502_TARGET)
|
||||
{
|
||||
bDisasmFormatFlags |= DISASM_TARGET_POINTER;
|
||||
bDisasmFormatFlags |= DISASM_FORMAT_TARGET_POINTER;
|
||||
|
||||
nTargetValue = *(LPWORD)(mem+nTargetPointer);
|
||||
|
||||
@ -382,15 +382,16 @@ int FormatDisassemblyLine( WORD nBaseAddress, int iOpcode, int iOpmode, int nOpB
|
||||
// nTargetBytes refers to size of pointer, not size of value
|
||||
// wsprintf( sTargetValue_, "%04X", nTargetValue ); // & 0xFFFF
|
||||
|
||||
wsprintf( sTargetPointer_, "%04X", nTargetPointer & 0xFFFF );
|
||||
if (g_iConfigDisasmTargets & DISASM_TARGET_ADDR)
|
||||
wsprintf( sTargetPointer_, "%04X", nTargetPointer & 0xFFFF );
|
||||
|
||||
if (iOpmode != AM_NA ) // Indirect Absolute
|
||||
{
|
||||
bDisasmFormatFlags |= DISASM_TARGET_VALUE;
|
||||
bDisasmFormatFlags |= DISASM_FORMAT_TARGET_VALUE;
|
||||
if (g_iConfigDisasmTargets & DISASM_TARGET_VAL)
|
||||
wsprintf( sTargetValue_, "%02X", nTargetValue & 0xFF );
|
||||
|
||||
wsprintf( sTargetValue_, "%02X", nTargetValue & 0xFF );
|
||||
|
||||
bDisasmFormatFlags |= DISASM_IMMEDIATE_CHAR;
|
||||
bDisasmFormatFlags |= DISASM_FORMAT_CHAR;
|
||||
nImmediate_ = (BYTE) nTargetValue;
|
||||
wsprintf( sImmediate_, "%c", FormatCharTxtCtrl( FormatCharTxtHigh( nImmediate_, NULL ), NULL ) );
|
||||
}
|
||||
@ -410,7 +411,7 @@ int FormatDisassemblyLine( WORD nBaseAddress, int iOpcode, int iOpmode, int nOpB
|
||||
|
||||
if (iOpmode == AM_M)
|
||||
{
|
||||
bDisasmFormatFlags |= DISASM_IMMEDIATE_CHAR;
|
||||
bDisasmFormatFlags |= DISASM_FORMAT_CHAR;
|
||||
nImmediate_ = (BYTE) nTarget;
|
||||
wsprintf( sImmediate_, "%c", FormatCharTxtCtrl( FormatCharTxtHigh( nImmediate_, NULL ), NULL ) );
|
||||
}
|
||||
@ -831,11 +832,13 @@ WORD DrawDisassemblyLine (HDC dc, int iLine, WORD nBaseAddress, LPTSTR text)
|
||||
, TS_INSTRUCTION
|
||||
, TS_IMMEDIATE
|
||||
, TS_BRANCH
|
||||
, TS_CHAR
|
||||
, _NUM_TAB_STOPS
|
||||
};
|
||||
|
||||
int aTabs[ _NUM_TAB_STOPS ] =
|
||||
{ 6, 16, 26, 40, 46 }; // 17, 27, 41
|
||||
float aTabs[ _NUM_TAB_STOPS ] =
|
||||
// { 6, 16, 26, 41, 46, 49 }; // 17, 27, 41
|
||||
{ 5.75, 15.5, 25, 40.5, 45.5, 48.5 };
|
||||
|
||||
if (! g_bConfigDisasmAddressColon)
|
||||
{
|
||||
@ -849,7 +852,7 @@ WORD DrawDisassemblyLine (HDC dc, int iLine, WORD nBaseAddress, LPTSTR text)
|
||||
aTabs[ TS_IMMEDIATE ] -= 1;
|
||||
}
|
||||
|
||||
const int OPCODE_TO_LABEL_SPACE = aTabs[ TS_INSTRUCTION ] - aTabs[ TS_LABEL ];
|
||||
const int OPCODE_TO_LABEL_SPACE = static_cast<int>( aTabs[ TS_INSTRUCTION ] - aTabs[ TS_LABEL ] );
|
||||
|
||||
int iTab = 0;
|
||||
int nSpacer = 9;
|
||||
@ -972,7 +975,7 @@ WORD DrawDisassemblyLine (HDC dc, int iLine, WORD nBaseAddress, LPTSTR text)
|
||||
DebugDrawTextHorz( TEXT(":"), linerect );
|
||||
|
||||
// Opcodes
|
||||
linerect.left = aTabs[ TS_OPCODE ];
|
||||
linerect.left = (int) aTabs[ TS_OPCODE ];
|
||||
|
||||
if (! bCursorLine)
|
||||
SetTextColor( dc, DebuggerGetColor( FG_DISASM_OPCODE ) );
|
||||
@ -983,7 +986,7 @@ WORD DrawDisassemblyLine (HDC dc, int iLine, WORD nBaseAddress, LPTSTR text)
|
||||
// DebugDrawTextHorz( TEXT(" "), linerect );
|
||||
|
||||
// Label
|
||||
linerect.left = aTabs[ TS_LABEL ];
|
||||
linerect.left = (int) aTabs[ TS_LABEL ];
|
||||
|
||||
LPCSTR pSymbol = FindSymbolFromAddress( nBaseAddress );
|
||||
if (pSymbol)
|
||||
@ -996,7 +999,7 @@ WORD DrawDisassemblyLine (HDC dc, int iLine, WORD nBaseAddress, LPTSTR text)
|
||||
// DebugDrawTextHorz( TEXT(" "), linerect );
|
||||
|
||||
// Instruction
|
||||
linerect.left = aTabs[ TS_INSTRUCTION ];
|
||||
linerect.left = (int) aTabs[ TS_INSTRUCTION ];
|
||||
|
||||
if (! bCursorLine)
|
||||
SetTextColor( dc, DebuggerGetColor( iForeground ) );
|
||||
@ -1032,14 +1035,14 @@ WORD DrawDisassemblyLine (HDC dc, int iLine, WORD nBaseAddress, LPTSTR text)
|
||||
|
||||
if (! bCursorLine)
|
||||
{
|
||||
if (bDisasmFormatFlags & DISASM_TARGET_SYMBOL)
|
||||
if (bDisasmFormatFlags & DISASM_FORMAT_SYMBOL)
|
||||
{
|
||||
SetTextColor( dc, DebuggerGetColor( FG_DISASM_SYMBOL ) );
|
||||
}
|
||||
else
|
||||
{
|
||||
if (iOpmode == AM_M)
|
||||
// if (bDisasmFormatFlags & DISASM_IMMEDIATE_CHAR)
|
||||
// if (bDisasmFormatFlags & DISASM_FORMAT_CHAR)
|
||||
{
|
||||
SetTextColor( dc, DebuggerGetColor( FG_DISASM_OPCODE ) );
|
||||
}
|
||||
@ -1053,7 +1056,7 @@ WORD DrawDisassemblyLine (HDC dc, int iLine, WORD nBaseAddress, LPTSTR text)
|
||||
// DebugDrawTextHorz( TEXT(" "), linerect );
|
||||
|
||||
// Target Offset +/-
|
||||
if (bDisasmFormatFlags & DISASM_TARGET_OFFSET)
|
||||
if (bDisasmFormatFlags & DISASM_FORMAT_OFFSET)
|
||||
{
|
||||
if (! bCursorLine)
|
||||
SetTextColor( dc, DebuggerGetColor( FG_DISASM_OPERATOR ));
|
||||
@ -1088,27 +1091,25 @@ WORD DrawDisassemblyLine (HDC dc, int iLine, WORD nBaseAddress, LPTSTR text)
|
||||
DebugDrawTextHorz( TEXT(",Y"), linerect );
|
||||
}
|
||||
|
||||
// Immediate Char
|
||||
linerect.left = aTabs[ TS_IMMEDIATE ];
|
||||
|
||||
// Memory Pointer and Value
|
||||
if (bDisasmFormatFlags & DISASM_TARGET_POINTER) // (bTargetValue)
|
||||
if (bDisasmFormatFlags & DISASM_FORMAT_TARGET_POINTER) // (bTargetValue)
|
||||
{
|
||||
linerect.left = (int) aTabs[ TS_IMMEDIATE ]; // TS_IMMEDIATE ];
|
||||
|
||||
// DebugDrawTextHorz( TEXT(" "), linerect );
|
||||
|
||||
// FG_DISASM_TARGET
|
||||
// FG_DISASM_OPERATOR
|
||||
// FG_DISASM_OPCODE
|
||||
if (! bCursorLine)
|
||||
SetTextColor( dc, DebuggerGetColor( FG_DISASM_ADDRESS ));
|
||||
|
||||
DebugDrawTextHorz( sTargetPointer, linerect );
|
||||
|
||||
if (bDisasmFormatFlags & DISASM_TARGET_VALUE)
|
||||
if (bDisasmFormatFlags & DISASM_FORMAT_TARGET_VALUE)
|
||||
{
|
||||
if (! bCursorLine)
|
||||
SetTextColor( dc, DebuggerGetColor( FG_DISASM_OPERATOR ));
|
||||
DebugDrawTextHorz( TEXT(":"), linerect );
|
||||
|
||||
if (g_iConfigDisasmTargets & DISASM_TARGET_BOTH)
|
||||
DebugDrawTextHorz( TEXT(":"), linerect );
|
||||
|
||||
if (! bCursorLine)
|
||||
SetTextColor( dc, DebuggerGetColor( FG_DISASM_OPCODE ));
|
||||
@ -1118,15 +1119,18 @@ WORD DrawDisassemblyLine (HDC dc, int iLine, WORD nBaseAddress, LPTSTR text)
|
||||
}
|
||||
}
|
||||
|
||||
if (bDisasmFormatFlags & DISASM_IMMEDIATE_CHAR)
|
||||
// Immediate Char
|
||||
if (bDisasmFormatFlags & DISASM_FORMAT_CHAR)
|
||||
{
|
||||
linerect.left = (int) aTabs[ TS_CHAR ]; // TS_IMMEDIATE ];
|
||||
|
||||
if (! bCursorLine)
|
||||
{
|
||||
SetTextColor( dc, DebuggerGetColor( FG_DISASM_OPERATOR ) );
|
||||
}
|
||||
|
||||
if (! (bDisasmFormatFlags & DISASM_TARGET_POINTER))
|
||||
DebugDrawTextHorz( TEXT("'"), linerect ); // TEXT(" '")
|
||||
// if (! (bDisasmFormatFlags & DISASM_FORMAT_TARGET_POINTER))
|
||||
// DebugDrawTextHorz( TEXT("'"), linerect ); // TEXT(" '")
|
||||
|
||||
if (! bCursorLine)
|
||||
{
|
||||
@ -1141,20 +1145,15 @@ WORD DrawDisassemblyLine (HDC dc, int iLine, WORD nBaseAddress, LPTSTR text)
|
||||
SetTextColor( dc, DebuggerGetColor( FG_DISASM_OPERATOR ) );
|
||||
}
|
||||
|
||||
if (! (bDisasmFormatFlags & DISASM_TARGET_POINTER))
|
||||
DebugDrawTextHorz( TEXT("'"), linerect );
|
||||
// if (! (bDisasmFormatFlags & DISASM_FORMAT_TARGET_POINTER))
|
||||
// DebugDrawTextHorz( TEXT("'"), linerect );
|
||||
}
|
||||
// else
|
||||
// if (bTargetIndirect)
|
||||
// {
|
||||
// // Follow indirect targets
|
||||
// }
|
||||
|
||||
// Branch Indicator
|
||||
linerect.left = aTabs[ TS_BRANCH ];
|
||||
|
||||
if (bDisasmFormatFlags & DISASM_BRANCH_INDICATOR)
|
||||
if (bDisasmFormatFlags & DISASM_FORMAT_BRANCH)
|
||||
{
|
||||
linerect.left = (int) aTabs[ TS_BRANCH ];
|
||||
|
||||
if (! bCursorLine)
|
||||
{
|
||||
SetTextColor( dc, DebuggerGetColor( FG_DISASM_BRANCH ) );
|
||||
|
@ -478,10 +478,10 @@ Update_t CmdHelpSpecific (int nArgs)
|
||||
|
||||
wsprintf( sText, TEXT(" Usage: %s [#]" ), g_aParameters[ PARAM_CONFIG_BRANCH ].m_sName );
|
||||
ConsoleBufferPush( sText );
|
||||
wsprintf( sText, TEXT(" # is from 0 to %d\n"), NUM_DISASM_BRANCH_TYPES - 1 );
|
||||
ConsoleBufferPush( sText );
|
||||
ConsoleBufferPush( TEXT(" Set the type of branch character:" ) );
|
||||
ConsoleBufferPush( TEXT(" 0 none, 1 = plain, 2 = fancy" ) );
|
||||
wsprintf( sText, TEXT(" %d off, %d plain, %d fancy" ),
|
||||
DISASM_BRANCH_OFF, DISASM_BRANCH_PLAIN, DISASM_BRANCH_FANCY );
|
||||
ConsoleBufferPush( sText );
|
||||
|
||||
wsprintf( sText, TEXT(" Usage: %s [0|1]" ), g_aParameters[ PARAM_CONFIG_COLON ].m_sName );
|
||||
ConsoleBufferPush( sText );
|
||||
@ -494,6 +494,16 @@ Update_t CmdHelpSpecific (int nArgs)
|
||||
wsprintf( sText, TEXT(" Usage: %s [0|1]" ), g_aParameters[ PARAM_CONFIG_SPACES ].m_sName );
|
||||
ConsoleBufferPush( sText );
|
||||
ConsoleBufferPush( TEXT(" Display spaces between opcodes" ) );
|
||||
|
||||
wsprintf( sText, TEXT(" Usage: %s [#]" ), g_aParameters[ PARAM_CONFIG_TARGET ].m_sName );
|
||||
ConsoleBufferPush( sText );
|
||||
ConsoleBufferPush( TEXT(" Set the type of target address/value displayed:" ) );
|
||||
wsprintf( sText, TEXT(" %d off, %d value only, %d address only, %d both" ),
|
||||
DISASM_TARGET_OFF, DISASM_TARGET_VAL, DISASM_TARGET_ADDR, DISASM_TARGET_BOTH );
|
||||
ConsoleBufferPush( sText );
|
||||
|
||||
// ZZZ - CHAR
|
||||
|
||||
break;
|
||||
|
||||
// Config - Font
|
||||
|
@ -787,22 +787,41 @@
|
||||
|
||||
|
||||
// Disassembly ____________________________________________________________________________________
|
||||
enum FormatDisasm_e
|
||||
{
|
||||
DISASM_IMMEDIATE_CHAR = (1 << 0),
|
||||
DISASM_TARGET_SYMBOL = (1 << 1),
|
||||
DISASM_TARGET_OFFSET = (1 << 2),
|
||||
DISASM_BRANCH_INDICATOR = (1 << 3),
|
||||
DISASM_TARGET_POINTER = (1 << 4),
|
||||
DISASM_TARGET_VALUE = (1 << 5),
|
||||
};
|
||||
|
||||
enum DisasmBranch_e
|
||||
{
|
||||
DISASM_BRANCH_OFF = 0,
|
||||
DISASM_BRANCH_PLAIN = 1,
|
||||
DISASM_BRANCH_FANCY = 2,
|
||||
NUM_DISASM_BRANCH_TYPES
|
||||
DISASM_BRANCH_OFF = 0
|
||||
, DISASM_BRANCH_PLAIN
|
||||
, DISASM_BRANCH_FANCY
|
||||
, NUM_DISASM_BRANCH_TYPES
|
||||
};
|
||||
|
||||
enum DisasmFormat_e
|
||||
{
|
||||
DISASM_FORMAT_CHAR = (1 << 0),
|
||||
DISASM_FORMAT_SYMBOL = (1 << 1),
|
||||
DISASM_FORMAT_OFFSET = (1 << 2),
|
||||
DISASM_FORMAT_BRANCH = (1 << 3),
|
||||
DISASM_FORMAT_TARGET_POINTER = (1 << 4),
|
||||
DISASM_FORMAT_TARGET_VALUE = (1 << 5),
|
||||
};
|
||||
|
||||
enum DisasmImmediate_e
|
||||
{
|
||||
DISASM_IMMED_OFF = 0
|
||||
, DISASM_IMMED_TARGET
|
||||
, DISASM_IMMED_MODE
|
||||
, DISASM_IMMED_BOTH
|
||||
, NUM_DISASM_IMMED_TYPES
|
||||
};
|
||||
|
||||
enum DisasmTargets_e
|
||||
{
|
||||
DISASM_TARGET_OFF = 0
|
||||
, DISASM_TARGET_VAL // Note: Also treated as bit flag !!
|
||||
, DISASM_TARGET_ADDR // Note: Also treated as bit flag !!
|
||||
, DISASM_TARGET_BOTH // Note: Also treated as bit flag !!
|
||||
, NUM_DISASM_TARGET_TYPES
|
||||
};
|
||||
|
||||
// Font ___________________________________________________________________________________________
|
||||
@ -1145,6 +1164,7 @@
|
||||
, PARAM_CONFIG_COLON // g_bConfigDisasmAddressColon [0|1]
|
||||
, PARAM_CONFIG_OPCODE // g_bConfigDisasmOpcodesView [0|1]
|
||||
, PARAM_CONFIG_SPACES // g_bConfigDisasmOpcodeSpaces [0|1]
|
||||
, PARAM_CONFIG_TARGET // g_iConfigDisasmTargets [0 | 1 | 2]
|
||||
, _PARAM_CONFIG_END
|
||||
, PARAM_CONFIG_NUM = _PARAM_CONFIG_END - _PARAM_CONFIG_BEGIN
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user