mirror of
https://github.com/AppleWin/AppleWin.git
synced 2024-12-23 00:30:17 +00:00
119 lines
3.0 KiB
Plaintext
119 lines
3.0 KiB
Plaintext
|
AddressingMode_e
|
||
|
AM_IMPLIED
|
||
|
, AM_1 // Invalid 1 Byte
|
||
|
, AM_2 // Invalid 2 Bytes
|
||
|
, AM_3 // Invalid 3 Bytes
|
||
|
, AM_M // 4 #Immediate
|
||
|
, AM_A // 5 $Absolute
|
||
|
, AM_Z // 6 Zeropage
|
||
|
, AM_AX // 7 Absolute, X
|
||
|
, AM_AY // 8 Absolute, Y
|
||
|
, AM_ZX // 9 Zeropage, X
|
||
|
, AM_ZY // 10 Zeropage, Y
|
||
|
, AM_R // 11 Relative
|
||
|
, AM_IZX // 12 Indexed (Zeropage Indirect, X)
|
||
|
, AM_IAX // 13 Indexed (Absolute Indirect, X)
|
||
|
, AM_NZY // 14 Indirect (Zeropage) Indexed, Y
|
||
|
, AM_NZ // 15 Indirect (Zeropage)
|
||
|
, AM_NA // 16 Indirect (Absolute) i.e. JMP
|
||
|
|
||
|
|
||
|
0:34 12 00 00 AA 99
|
||
|
D0:16 03
|
||
|
1234:56 78 9A
|
||
|
R X D0
|
||
|
R Y 2
|
||
|
|
||
|
// ( 4) AM_M || #Immediate
|
||
|
300:A9 55 // LDA #$55
|
||
|
|
||
|
// ( 5) AM_A || $Absolute
|
||
|
302:4C 89 67 // JMP $6789
|
||
|
305:AD 01 00 // LDA $0001 = 12
|
||
|
|
||
|
// ( 6) AM_Z || Zeropage
|
||
|
308:A5 00 // LDA $00 = #34
|
||
|
|
||
|
// ( 7) AM_AX || Absolute, X
|
||
|
30A:DE 00 00 // DEC $0000,X $D0=FF
|
||
|
|
||
|
// ( 8) AM_AY || Absolute, Y
|
||
|
30D:BE 02 00 // LDX $0002,Y
|
||
|
|
||
|
// ( 9) AM_ZX || Zeropage, X
|
||
|
310:B4 35 // LDY $30,X
|
||
|
|
||
|
// (10) AM_ZY || Zeropage, Y
|
||
|
312:B6 00 // LDX $00,Y $02=0
|
||
|
|
||
|
// (11) AM_R || Relative
|
||
|
314:D0 02
|
||
|
|
||
|
// (12) AM_IZX || Indexed (Zeropage Indirect, X)
|
||
|
316:A1 00 // LDA ($00,X)
|
||
|
|
||
|
// (13) AM_IAX || Indexed (Absolute Indirect, X)
|
||
|
318: 7C 00 00 // JMP ($0000,X)
|
||
|
|
||
|
// (14) AM_NZY ||
|
||
|
31B:B1 00 // LDA ($00),Y
|
||
|
|
||
|
// (15) NZ ||
|
||
|
31D:B2 00 // LDA ($00)
|
||
|
|
||
|
// (16) AM_NA || Indirect (Absolute)
|
||
|
31F:6C 02 00 // JMP ($0002) = ($0000) -> 1234
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
Data Disasembly ...
|
||
|
|
||
|
Test Case:
|
||
|
U D001
|
||
|
DW BAS D000:D0BF
|
||
|
|
||
|
|
||
|
Debugger_Assembler.
|
||
|
int _6502_GetOpmodeOpbyte ( const int iAddress, int & iOpmode_, int & nOpbyte_ )
|
||
|
Debugger_Display.
|
||
|
WORD DrawDisassemblyLine ( int iLine, const WORD nBaseAddress )
|
||
|
int GetDisassemblyLine ( WORD nBaseAddress, DisasmLine_t & line_ )
|
||
|
Debugger_DisassemblerData
|
||
|
void Disassembly_GetData ( WORD nBaseAddress, const DisasmData_t *pData, DisasmLine_t & line_ )
|
||
|
|
||
|
|
||
|
FormatOpcodeBytes( nBaseAddress, line_ );
|
||
|
|
||
|
//pMnemonic = g_aOpcodes[ iOpcode ].sMnemonic;
|
||
|
line_.iNopcode = pData->iDirective;
|
||
|
strcpy( line_.sMnemonic, g_aAssemblerDirectives[ line_.iNopcode ].m_pMnemonic );
|
||
|
|
||
|
FormatNopcodeBytes( nBaseAddress, line_ );
|
||
|
|
||
|
bool _6502_GetTargets ( WORD nAddress, int *pTargetPartial_, int *pTargetPointer_, int * pTargetBytes_, bool bIgnoreJSRJMP, bool bIgnoreBranch )
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
WORD DrawDisassemblyLine ( int iLine, const WORD nBaseAddress )
|
||
|
// Instruction / Mnemonic
|
||
|
linerect.left = (int) aTabs[ TS_INSTRUCTION ];
|
||
|
|
||
|
if (! bCursorLine)
|
||
|
DebuggerSetColorFG( DebuggerGetColor( iForeground ) );
|
||
|
|
||
|
if( pData ) // Assembler Data Directive / Data Disassembler
|
||
|
{
|
||
|
// pMnemonic = g_aAssemblerDirectives[ line.iNopcode ].sMnemonic;
|
||
|
if (! bCursorLine)
|
||
|
DebuggerSetColorFG( DebuggerGetColor( FG_DISASM_DIRECTIVE ) ); // ZZZ TODO: FIXME:
|
||
|
pMnemonic = line.sMnemonic;
|
||
|
}
|
||
|
else
|
||
|
{
|
||
|
pMnemonic = g_aOpcodes[ iOpcode ].sMnemonic;
|
||
|
}
|