mirror of
https://github.com/AppleWin/AppleWin.git
synced 2024-06-20 16:29:37 +00:00
Debugger 2.8.0.1 Fix #227 (Debugger)[1.25] AppleSoft symbol: COPY.FAC.TO.ARG.ROUNDED overflows into registers
This commit is contained in:
parent
a49904a5f7
commit
4b7f8aab3e
|
@ -1,4 +1,7 @@
|
||||||
/*
|
/*
|
||||||
|
|
||||||
|
.1 Fixe: Symbolic Targets > 20 chars no longer overflow into register window
|
||||||
|
|
||||||
2.8.0.0 Released with AppleWin 1.25
|
2.8.0.0 Released with AppleWin 1.25
|
||||||
|
|
||||||
2.7.0.#
|
2.7.0.#
|
||||||
|
|
|
@ -47,7 +47,7 @@ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||||
#define ALLOW_INPUT_LOWERCASE 1
|
#define ALLOW_INPUT_LOWERCASE 1
|
||||||
|
|
||||||
// See /docs/Debugger_Changelog.txt for full details
|
// See /docs/Debugger_Changelog.txt for full details
|
||||||
const int DEBUGGER_VERSION = MAKE_VERSION(2,8,0,0);
|
const int DEBUGGER_VERSION = MAKE_VERSION(2,8,0,1);
|
||||||
|
|
||||||
|
|
||||||
// Public _________________________________________________________________________________________
|
// Public _________________________________________________________________________________________
|
||||||
|
|
|
@ -2041,6 +2041,8 @@ WORD DrawDisassemblyLine ( int iLine, const WORD nBaseAddress )
|
||||||
}
|
}
|
||||||
|
|
||||||
char *pTarget = line.sTarget;
|
char *pTarget = line.sTarget;
|
||||||
|
int nLen = strlen( pTarget );
|
||||||
|
|
||||||
if (*pTarget == '$')
|
if (*pTarget == '$')
|
||||||
{
|
{
|
||||||
pTarget++;
|
pTarget++;
|
||||||
|
@ -2068,6 +2070,24 @@ WORD DrawDisassemblyLine ( int iLine, const WORD nBaseAddress )
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// https://github.com/AppleWin/AppleWin/issues/227
|
||||||
|
// (Debugger)[1.25] AppleSoft symbol: COPY.FAC.TO.ARG.ROUNDED overflows into registers
|
||||||
|
// Repro:
|
||||||
|
// UEA39
|
||||||
|
// 2.8.0.1 Clamp excessive symbol target to not overflow
|
||||||
|
// SYM COPY.FAC.TO.ARG.ROUNDED = EB63
|
||||||
|
// If opcodes aren't showing then length can be longer!
|
||||||
|
// FormatOpcodeBytes() uses 3 chars/MAX_OPCODES. i.e. "## "
|
||||||
|
int nMaxLen = g_bConfigDisasmOpcodesView ? MAX_TARGET_LEN : MAX_TARGET_LEN + (MAX_OPCODES*3);
|
||||||
|
if( nLen >= nMaxLen )
|
||||||
|
{
|
||||||
|
#if _DEBUG
|
||||||
|
// TODO: Warn on import about long symbol/target names
|
||||||
|
#endif
|
||||||
|
pTarget[ nMaxLen ] = 0;
|
||||||
|
}
|
||||||
|
|
||||||
PrintTextCursorX( pTarget, linerect );
|
PrintTextCursorX( pTarget, linerect );
|
||||||
// PrintTextCursorX( " ", linerect );
|
// PrintTextCursorX( " ", linerect );
|
||||||
|
|
||||||
|
|
|
@ -886,12 +886,13 @@
|
||||||
, NUM_DISASM_TARGET_TYPES
|
, NUM_DISASM_TARGET_TYPES
|
||||||
};
|
};
|
||||||
|
|
||||||
enum DisasmText_e
|
enum DisasmDisplay_e // TODO: Prefix enums with DISASM_DISPLAY_
|
||||||
{
|
{
|
||||||
MAX_ADDRESS_LEN = 40,
|
MAX_ADDRESS_LEN = 40,
|
||||||
MAX_OPCODES = 3, // only display 3 opcode bytes
|
MAX_OPCODES = 3, // only display 3 opcode bytes -- See FormatOpcodeBytes() // TODO: FIX when showing data hex
|
||||||
CHARS_FOR_ADDRESS = 8, // 4 digits + end-of-string + padding
|
CHARS_FOR_ADDRESS = 8, // 4 digits + end-of-string + padding
|
||||||
MAX_IMMEDIATE_LEN = 20, // Data Disassembly
|
MAX_IMMEDIATE_LEN = 20, // Data Disassembly
|
||||||
|
MAX_TARGET_LEN = MAX_IMMEDIATE_LEN, // Debugger Display: pTarget = line.sTarget
|
||||||
};
|
};
|
||||||
|
|
||||||
struct DisasmLine_t
|
struct DisasmLine_t
|
||||||
|
|
Loading…
Reference in New Issue
Block a user