5#include "./generated/lookup.h"
61 self->
y = (self->
y - 1) & 0xFF;
67 self->
x = (self->
x - 1) & 0xFF;
73 self->
y = (self->
y + 1) & 0xFF;
79 self->
x = (self->
x + 1) & 0xFF;
85 u16 pc = (self->
pc + 1) & 0xFFFF;
107 byte result = self->
y - value;
115 byte result = self->
x - value;
125 self->
pc = (addr + 1) & 0xFFFF;
136 self->
pc = read & 0xFFFF;
195 u16 result = (
u16)self->
ac - value - (1 - carry);
201 byte overflow = ((self->
ac ^ result) & (self->
ac ^ value)) & 0x80;
211 u16 result = (
u16)self->
ac + value + carry;
218 (self->
ac ^ (
byte)result) & ((~(self->
ac ^ value) & 0x80) != 0);
251 byte result = (self->
ac - value) & 0xFF;
271 self->
ac = self->
ac ^ value;
277 self->
ac = self->
ac & value;
283 self->
ac = self->
ac | value;
299 byte carry = (value >> 7) & 1;
300 byte result = (value << 1) & 0xFF;
323 byte new_carry = value & 1;
324 byte result = (old_carry << 7) | (value >> 1);
345 byte carry = value & 1;
346 byte result = value >> 1;
368 byte carry = (value >> 7) & 1;
398 u16 pc = (self->
pc + 1) & 0xFFFF;
410 self->
pc = ((
u16)hi << 8) | lo;
421 if (opcode == 0x80) {
424 }
else if (opcode == 0x89) {
432 chip_decode_execute(self, opcode);
addressing_mode_t
Definition addressing.h:6
@ ADDR_MODE_ACCUMULATOR
Definition addressing.h:19
@ ADDR_MODE_ABSOLUTE
Definition addressing.h:7
@ ADDR_MODE_RELATIVE
Definition addressing.h:11
static void chip_stack_push(chip_t *self, byte value)
Definition chip.h:242
static u32 chip_memory_perform_read(chip_t *self, addressing_mode_t mode)
Definition chip.h:131
static byte chip_memory_read_word(chip_t *self, addressing_mode_t mode)
Definition chip.h:234
static u16 get_memory_addr(u32 read)
Definition chip.h:226
static void chip_flags_update_overflow(chip_t *self, byte value)
Definition chip.h:284
static u16 chip_memory_perform_write(chip_t *self, addressing_mode_t mode, byte value)
Definition chip.h:177
static byte get_memory_word(u32 read)
Definition chip.h:228
static void chip_flags_set(chip_t *self, register_flags_t flag, byte value)
Definition chip.h:267
static byte chip_pc_inc(chip_t *self)
Definition chip.h:127
static void chip_memory_write_direct(chip_t *self, u16 at, byte value)
Definition chip.h:119
static u16 chip_memory_read_addr(chip_t *self, addressing_mode_t mode)
Definition chip.h:230
@ FLAG_MASK_B
Definition chip.h:59
static byte chip_memory_read_direct(chip_t *self, u16 at)
Definition chip.h:109
static void chip_flags_update_carry(chip_t *self, byte value)
Definition chip.h:272
@ FLAG_NEGATIVE
Definition chip.h:51
@ FLAG_OVERFLOW
Definition chip.h:50
@ FLAG_ZERO
Definition chip.h:44
@ FLAG_CARRY
Definition chip.h:43
@ FLAG_DECIMAL
Definition chip.h:46
@ FLAG_INTERRUPT_DISABLE
Definition chip.h:45
static byte chip_stack_pull(chip_t *self)
Definition chip.h:252
static void chip_flags_update_zero_negative(chip_t *self, byte value)
Definition chip.h:276
static byte chip_flags_get(chip_t *self, register_flags_t flag)
Definition chip.h:263
unsigned char byte
Definition defs.h:49
uint16_t u16
Definition defs.h:48
char i8
Definition defs.h:50
uint32_t u32
Definition defs.h:45
static void chip_op_adc(chip_t *self, addressing_mode_t mode)
Definition ops.h:207
static void chip_op_asl(chip_t *self, addressing_mode_t mode)
Definition ops.h:288
static void chip_op_lda(chip_t *self, addressing_mode_t mode)
Definition ops.h:128
static void chip_op_dex(chip_t *self)
Definition ops.h:66
static void chip_op_jsr(chip_t *self)
Definition ops.h:84
static void chip_op_phy(chip_t *self)
Definition ops.h:103
static void chip_op_inc(chip_t *self, addressing_mode_t mode)
Definition ops.h:50
static void chip_op_cld(chip_t *self)
Definition ops.h:389
static void chip_op_beq(chip_t *self)
Definition ops.h:10
static void chip_op_clc(chip_t *self)
Definition ops.h:381
static void chip_op_cli(chip_t *self)
Definition ops.h:384
static void chip_op_txa(chip_t *self)
Definition ops.h:163
static void chip_op_ldy(chip_t *self, addressing_mode_t mode)
Definition ops.h:139
static void chip_op_pha(chip_t *self)
Definition ops.h:99
static void chip_op_sei(chip_t *self)
Definition ops.h:184
static void chip_op_bpl(chip_t *self)
Definition ops.h:22
static void chip_op_sty(chip_t *self, addressing_mode_t mode)
Definition ops.h:40
static void chip_op_eor(chip_t *self, addressing_mode_t mode)
Definition ops.h:269
static void chip_op_bcc(chip_t *self)
Definition ops.h:232
static void chip_op_cpy(chip_t *self, addressing_mode_t mode)
Definition ops.h:105
static void chip_op_cpx(chip_t *self, addressing_mode_t mode)
Definition ops.h:113
static void chip_op_pla(chip_t *self)
Definition ops.h:93
static void chip_op_jmp(chip_t *self, addressing_mode_t mode)
Definition ops.h:134
static void chip_op_bcs(chip_t *self)
Definition ops.h:225
static void chip_op_tsx(chip_t *self)
Definition ops.h:170
static void chip_op_dey(chip_t *self)
Definition ops.h:60
static void chip_op_tay(chip_t *self)
Definition ops.h:151
static void chip_op_bvc(chip_t *self)
Definition ops.h:257
static void chip_op_txs(chip_t *self)
Definition ops.h:168
static void chip_op_ldx(chip_t *self, addressing_mode_t mode)
Definition ops.h:145
static void chip_op_bne(chip_t *self)
Definition ops.h:28
static void chip_op_sbc(chip_t *self, addressing_mode_t mode)
Definition ops.h:191
static void chip_op_rts(chip_t *self)
Definition ops.h:121
static void chip_op_brk(chip_t *self)
Definition ops.h:397
static void chip_op_sec(chip_t *self)
Definition ops.h:181
static void chip_step(chip_t *self)
Definition ops.h:416
static void chip_op_and(chip_t *self, addressing_mode_t mode)
Definition ops.h:275
static void chip_op_sta(chip_t *self, addressing_mode_t mode)
Definition ops.h:45
static void chip_op_inx(chip_t *self)
Definition ops.h:78
static void chip_op_dec(chip_t *self, addressing_mode_t mode)
Definition ops.h:239
static void chip_op_lsr(chip_t *self, addressing_mode_t mode)
Definition ops.h:334
static void chip_op_tax(chip_t *self)
Definition ops.h:175
static void chip_op_bmi(chip_t *self)
Definition ops.h:16
static void chip_op_rol(chip_t *self, addressing_mode_t mode)
Definition ops.h:357
static void chip_op_ora(chip_t *self, addressing_mode_t mode)
Definition ops.h:281
static void chip_op_nop(chip_t *self)
Definition ops.h:414
static void chip_op_tya(chip_t *self)
Definition ops.h:158
static void chip_op_clv(chip_t *self)
Definition ops.h:392
static void chip_op_cmp(chip_t *self, addressing_mode_t mode)
Definition ops.h:249
static void chip_op_phx(chip_t *self)
Definition ops.h:101
static void chip_op_sed(chip_t *self)
Definition ops.h:189
static void chip_op_iny(chip_t *self)
Definition ops.h:72
static void chip_op_ror(chip_t *self, addressing_mode_t mode)
Definition ops.h:311
static void chip_op_stx(chip_t *self, addressing_mode_t mode)
Definition ops.h:35
static void chip_op_bvs(chip_t *self)
Definition ops.h:263
byte ac
Definition chip.h:39
byte sp
Definition chip.h:39
bool halted
Definition chip.h:34
chip_external_call_f external_call
Definition chip.h:29
u16 pc
Definition chip.h:38
byte x
Definition chip.h:39
byte y
Definition chip.h:39
byte sr
Definition chip.h:39