20 *low = (
PB << 16) |
PC++;
23 *low = (
PB << 16) |
PC++;
24 return (
PB << 16) |
PC++;
33 *low = (
D + adr +
X) & 0xffff;
34 return (
D + adr +
X + 1) & 0xffff;
42 *low = (
D + adr +
Y) & 0xffff;
43 return (
D + adr +
Y + 1) & 0xffff;
50 uint16_t pointer =
ReadWord((
D + adr) & 0xffff);
51 *low = (
DB << 16) + pointer;
52 return ((
DB << 16) + pointer + 1) & 0xffffff;
59 uint16_t pointer =
ReadWord((
D + adr) & 0xffff);
61 if (write || !
GetIndexSize() || ((pointer >> 8) != ((pointer +
Y) >> 8)))
63 *low = ((
DB << 16) + pointer +
Y) & 0xffffff;
64 return ((
DB << 16) + pointer +
Y + 1) & 0xffffff;
71 uint32_t pointer =
ReadWord((
D + adr) & 0xffff);
72 pointer |=
ReadByte((
D + adr + 2) & 0xffff) << 16;
74 return (pointer + 1) & 0xffffff;
81 uint32_t pointer =
ReadWord((
D + adr) & 0xffff);
82 pointer |=
ReadByte((
D + adr + 2) & 0xffff) << 16;
83 *low = (pointer +
Y) & 0xffffff;
84 return (pointer +
Y + 1) & 0xffffff;
90 *low = (
SP() + adr) & 0xffff;
91 return (
SP() + adr + 1) & 0xffff;
97 uint16_t pointer =
ReadWord((
SP() + adr) & 0xffff);
99 *low = ((
DB << 16) + pointer +
Y) & 0xffffff;
100 return ((
DB << 16) + pointer +
Y + 1) & 0xffffff;
105 *low = (
DB << 16) + adr;
106 return ((
DB << 16) + adr + 1) & 0xffffff;
112 if (write || !
GetIndexSize() || ((adr >> 8) != ((adr +
X) >> 8)))
114 *low = ((
DB << 16) + adr +
X) & 0xffffff;
115 return ((
DB << 16) + adr +
X + 1) & 0xffffff;
121 if (write || !
GetIndexSize() || ((adr >> 8) != ((adr +
Y) >> 8)))
123 *low = ((
DB << 16) + adr +
Y) & 0xffffff;
124 return ((
DB << 16) + adr +
Y + 1) & 0xffffff;
131 return (adr + 1) & 0xffffff;
137 *low = (adr +
X) & 0xffffff;
138 return (adr +
X + 1) & 0xffffff;
145 *low = (
D + adr) & 0xffff;
146 return (
D + adr + 1) & 0xffff;
157 return D + operand + x_by_mode;
162 return (operand +
Y) & 0xFF;
170 uint16_t pointer =
ReadWord((
D + adr +
X) & 0xffff);
171 *low = (
DB << 16) + pointer;
172 return ((
DB << 16) + pointer + 1) & 0xffffff;
177 uint16_t effective_address =
D + dp;
178 return ReadWordLong((0x00 << 0x10) | effective_address);
183 uint16_t indirect_address =
D + operand;
185 uint32_t effective_address =
ReadWordLong(indirect_address) + y_by_mode;
186 return effective_address;
191 uint16_t effective_address =
SP() + sr;
192 return effective_address;
uint32_t AdrAby(uint32_t *low, bool write)
uint32_t DirectPageIndirectLongIndexedY()
uint32_t AdrAbl(uint32_t *low)
uint32_t AdrIdy(uint32_t *low, bool write)
uint32_t AdrSr(uint32_t *low)
uint32_t Immediate(uint32_t *low, bool xFlag)
uint16_t ReadWord(uint32_t address)
uint16_t DirectPageIndexedY()
uint8_t ReadByte(uint32_t address)
uint32_t AdrIdl(uint32_t *low)
uint32_t DirectPageIndirectLong()
uint32_t AdrAbx(uint32_t *low, bool write)
uint32_t AdrDp(uint32_t *low)
uint32_t AdrIdp(uint32_t *low)
uint32_t AdrDpy(uint32_t *low)
uint16_t DirectPageIndexedX()
int GetAccumulatorSize() const
uint32_t AdrIly(uint32_t *low)
uint32_t ReadWordLong(uint32_t address)
uint32_t AdrIdx(uint32_t *low)
uint32_t Absolute(uint32_t *low)
uint32_t AdrAlx(uint32_t *low)
uint32_t AdrIsy(uint32_t *low)
uint16_t ReadOpcodeWord(bool int_check=false)
uint32_t AdrDpx(uint32_t *low)
std::function< void(bool waiting)> idle