From 3a0d2697e44e07da71cf16f93f35d813890828a7 Mon Sep 17 00:00:00 2001 From: michaelangel007 Date: Mon, 1 Sep 2014 09:49:55 -0700 Subject: [PATCH] Debugger 2.7.0.35 .35 Added: DW address -- round the length up to even number for convenience. Example: DW 6062 is equivalent to: DW 6062:6063 .34 Fixed: Unified auto-defined name: B_, W_, T_ for byte, word, or text respectively --- docs/Debugger_Changelog.txt | 2 + source/Debugger/Debugger_DisassemblerData.cpp | 43 ++++++++++++------- 2 files changed, 30 insertions(+), 15 deletions(-) diff --git a/docs/Debugger_Changelog.txt b/docs/Debugger_Changelog.txt index cc72aaa2..0a31df27 100644 --- a/docs/Debugger_Changelog.txt +++ b/docs/Debugger_Changelog.txt @@ -2,6 +2,8 @@ 2.8.0.0 Released with AppleWin 1.25 2.7.0.# +.35 Added: DW address -- round the length up to even number for convenience. Example: DW 6062 is equivalent to: DW 6062:6063 +.34 Fixed: Unified auto-defined name: B_, W_, T_ for byte, word, or text respectively .33 Fixed: ASC range -- auto-define symbol name: T_#### .32 Fixed: DW range -- auto-define symbol name: W_#### .31 Fixed: DB range -- auto-define symbol name B_#### diff --git a/source/Debugger/Debugger_DisassemblerData.cpp b/source/Debugger/Debugger_DisassemblerData.cpp index 5b3357a1..1105da12 100644 --- a/source/Debugger/Debugger_DisassemblerData.cpp +++ b/source/Debugger/Debugger_DisassemblerData.cpp @@ -68,6 +68,14 @@ WORD _CmdDefineByteRange(int nArgs,int iArg,DisasmData_t & tData_) } } + // 2.7.0.35 DW address -- round the length up to even number for convenience. + // Example: 'DW 6062' is equivalent to: 'DW 6062:6063' + if( g_iCommand == CMD_DEFINE_DATA_WORD1 ) + { + if( ~nLen & 1 ) + nLen++; + } + tData_.nStartAddress = nAddress; tData_.nEndAddress = nAddress + nLen; // tData_.nArraySize = 0; @@ -75,30 +83,35 @@ WORD _CmdDefineByteRange(int nArgs,int iArg,DisasmData_t & tData_) char *pSymbolName = ""; char aSymbolName[ 32 ]; SymbolTable_Index_e eSymbolTable = SYMBOLS_ASSEMBLY; + bool bAutoDefineName = false; // 2.7.0.34 if( nArgs > 1 ) { if( g_aArgs[ 2 ].eToken == TOKEN_COLON ) // 2.7.0.31 Bug fix: DB range, i.e. DB 174E:174F - { - if( g_iCommand == CMD_DEFINE_DATA_STR ) - sprintf( aSymbolName, "T_%04X", tData_.nStartAddress ); // ASC range - else - if( g_iCommand == CMD_DEFINE_DATA_WORD1 ) - sprintf( aSymbolName, "W_%04X", tData_.nStartAddress ); // DW range - else - sprintf( aSymbolName, "B_%04X", tData_.nStartAddress ); // DB range - pSymbolName = aSymbolName; - } + bAutoDefineName = true; else pSymbolName = g_aArgs[ 1 ].sArg; } else { - // 'DB' with 1 arg - // DB 801 - // auto define D_# DB $XX - sprintf( aSymbolName, "D_%04X", tData_.nStartAddress ); - pSymbolName = aSymbolName; + bAutoDefineName = true; + } + + // 2.7.0.34 Unified auto-defined name: B_, W_, T_ for byte, word, or text respectively + // Old name: auto define D_# DB $XX + // Example 'DB' or 'DW' with 1 arg + // DB 801 + if( bAutoDefineName ) + { + if( g_iCommand == CMD_DEFINE_DATA_STR ) + sprintf( aSymbolName, "T_%04X", tData_.nStartAddress ); // ASC range + else + if( g_iCommand == CMD_DEFINE_DATA_WORD1 ) + sprintf( aSymbolName, "W_%04X", tData_.nStartAddress ); // DW range + else + sprintf( aSymbolName, "B_%04X", tData_.nStartAddress ); // DB range + + pSymbolName = aSymbolName; } // bRemoveSymbol = false // use arg[2]