mirror of
https://github.com/AppleWin/AppleWin.git
synced 2025-01-04 02:30:53 +00:00
My disam notes for diagnosing disasm bugs
This commit is contained in:
parent
23d940f776
commit
bed4e12125
118
AppleWin/docs/disasm_target.txt
Normal file
118
AppleWin/docs/disasm_target.txt
Normal file
@ -0,0 +1,118 @@
|
||||
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;
|
||||
}
|
Loading…
Reference in New Issue
Block a user