21 *low = (
PB << 16) |
PC++;
24 *low = (
PB << 16) |
PC++;
25 return (
PB << 16) |
PC++;
33 *low = (
D + adr +
X) & 0xffff;
34 return (
D + adr +
X + 1) & 0xffff;
41 *low = (
D + adr +
Y) & 0xffff;
42 return (
D + adr +
Y + 1) & 0xffff;
48 uint16_t pointer =
ReadWord((
D + adr) & 0xffff,
false);
49 *low = (
DB << 16) + pointer;
50 return ((
DB << 16) + pointer + 1) & 0xffffff;
56 uint16_t pointer =
ReadWord((
D + adr) & 0xffff,
false);
58 if (write || !
GetIndexSize() || ((pointer >> 8) != ((pointer +
Y) >> 8)))
60 *low = ((
DB << 16) + pointer +
Y) & 0xffffff;
61 return ((
DB << 16) + pointer +
Y + 1) & 0xffffff;
67 uint32_t pointer =
ReadWord((
D + adr) & 0xffff,
false);
68 pointer |=
ReadByte((
D + adr + 2) & 0xffff) << 16;
70 return (pointer + 1) & 0xffffff;
76 uint32_t pointer =
ReadWord((
D + adr) & 0xffff,
false);
77 pointer |=
ReadByte((
D + adr + 2) & 0xffff) << 16;
78 *low = (pointer +
Y) & 0xffffff;
79 return (pointer +
Y + 1) & 0xffffff;
85 *low = (
SP() + adr) & 0xffff;
86 return (
SP() + adr + 1) & 0xffff;
92 uint16_t pointer =
ReadWord((
SP() + adr) & 0xffff,
false);
94 *low = ((
DB << 16) + pointer +
Y) & 0xffffff;
95 return ((
DB << 16) + pointer +
Y + 1) & 0xffffff;
100 *low = (
DB << 16) + adr;
101 return ((
DB << 16) + adr + 1) & 0xffffff;
107 if (write || !
GetIndexSize() || ((adr >> 8) != ((adr +
X) >> 8)))
109 *low = ((
DB << 16) + adr +
X) & 0xffffff;
110 return ((
DB << 16) + adr +
X + 1) & 0xffffff;
116 if (write || !
GetIndexSize() || ((adr >> 8) != ((adr +
Y) >> 8)))
118 *low = ((
DB << 16) + adr +
Y) & 0xffffff;
119 return ((
DB << 16) + adr +
Y + 1) & 0xffffff;
126 return (adr + 1) & 0xffffff;
132 *low = (adr +
X) & 0xffffff;
133 return (adr +
X + 1) & 0xffffff;
139 *low = (
D + adr) & 0xffff;
140 return (
D + adr + 1) & 0xffff;
151 return D + operand + x_by_mode;
156 return (operand +
Y) & 0xFF;
163 uint16_t pointer =
ReadWord((
D + adr +
X) & 0xffff,
false);
164 *low = (
DB << 16) + pointer;
165 return ((
DB << 16) + pointer + 1) & 0xffffff;
170 uint16_t effective_address =
D + dp;
171 return ReadWordLong((0x00 << 0x10) | effective_address);
176 uint16_t indirect_address =
D + operand;
178 uint32_t effective_address =
ReadWordLong(indirect_address) + y_by_mode;
179 return effective_address;
184 uint16_t effective_address =
SP() + sr;
185 return effective_address;
uint16_t DirectPageIndexedY()
uint32_t DirectPageIndirectLong()
uint16_t ReadOpcodeWord(bool int_check=false)
uint32_t AdrAbx(uint32_t *low, bool write)
uint32_t AdrIsy(uint32_t *low)
uint32_t AdrIdl(uint32_t *low)
uint16_t ReadWord(uint32_t address, uint32_t address_high, bool int_check=false)
uint32_t AdrSr(uint32_t *low)
int GetAccumulatorSize() const
uint32_t ReadWordLong(uint32_t address)
memory::CpuCallbacks callbacks_
uint16_t DirectPageIndexedX()
uint32_t AdrIdy(uint32_t *low, bool write)
uint32_t AdrAby(uint32_t *low, bool write)
uint32_t AdrDpx(uint32_t *low)
uint32_t Immediate(uint32_t *low, bool xFlag)
uint32_t AdrAlx(uint32_t *low)
uint32_t AdrDpy(uint32_t *low)
uint32_t AdrIdx(uint32_t *low)
uint8_t ReadByte(uint32_t address)
uint32_t AdrIly(uint32_t *low)
uint32_t AdrAbl(uint32_t *low)
uint32_t Absolute(uint32_t *low)
uint32_t DirectPageIndirectLongIndexedY()
uint32_t AdrIdp(uint32_t *low)
uint32_t AdrDp(uint32_t *low)
std::function< void(bool waiting)> idle