mirror of
https://github.com/rkujawa/rk65c02.git
synced 2024-06-15 05:29:28 +00:00
BBRx and BBSx instructions have zero page relative addressing.
Add zero page relative as a separate addressing type and adjust opcode definitions for these two type of opcodes.
This commit is contained in:
parent
ee16c64310
commit
9c88afae2a
|
@ -14,7 +14,7 @@ OP_NOPI_C,"nop",IMPLIED,1,NULL
|
|||
OP_TSB_ABS,"tsb",ABSOLUTE,3,NULL
|
||||
OP_ORA_ABS,"abs",ABSOLUTE,3,NULL
|
||||
OP_ASL_ABS,"asl",ABSOLUTE,3,NULL
|
||||
OP_BBR0_REL,"bbr0",RELATIVE,2,NULL
|
||||
OP_BBR0_REL,"bbr0",ZPR,2,NULL
|
||||
OP_BPL_REL,"bpl",RELATIVE,2,NULL
|
||||
OP_ORA_IZPY,"ora",IZPY,2,NULL
|
||||
OP_ORA_IZP,"ora",IZP,2,NULL
|
||||
|
@ -30,7 +30,7 @@ OP_NOPI_1C,"nop",IMPLIED,1,NULL
|
|||
OP_TRB_ABS,"trb",ABSOLUTE,3,NULL
|
||||
OP_ORA_ABSX,"ora",ABSOLUTEX,3,NULL
|
||||
OP_ASL_ABSX,"asl",ABSOLUTEX,3,NULL
|
||||
OP_BBR1_REL,"bbr1",RELATIVE,2,NULL
|
||||
OP_BBR1_REL,"bbr1",ZPR,2,NULL
|
||||
OP_JSR,"jsr",ABSOLUTE,3,NULL
|
||||
OP_AND_IZPX,"and",IZPX,2,NULL
|
||||
OP_NOPI_23,"nop",IMMEDIATE,2,NULL
|
||||
|
@ -46,7 +46,7 @@ OP_NOPI_2C,"nop",IMPLIED,1,NULL
|
|||
OP_BIT_ABS,"bit",ABSOLUTE,3,NULL
|
||||
OP_AND_ABS,"and",ABSOLUTE,3,NULL
|
||||
OP_ROL_ABS,"rol",ABSOLUTE,3,NULL
|
||||
OP_BBR2_REL,"bbr2",RELATIVE,2,NULL
|
||||
OP_BBR2_REL,"bbr2",ZPR,2,NULL
|
||||
OP_BMI_REL,"bmi",RELATIVE,2,NULL
|
||||
OP_AND_IZPY,"and",IZPY,2,NULL
|
||||
OP_AND_IZP,"and",IZP,2,NULL
|
||||
|
@ -62,7 +62,7 @@ OP_NOPI_3C,"nop",IMPLIED,1,NULL
|
|||
OP_BIT_ABSX,"bit",ABSOLUTEX,3,NULL
|
||||
OP_AND_ABSX,"and",ABSOLUTEX,3,NULL
|
||||
OP_ROL_ABSX,"rol",ABSOLUTEX,3,NULL
|
||||
OP_BBR3_REL,"bbr3",RELATIVE,2,NULL
|
||||
OP_BBR3_REL,"bbr3",ZPR,2,NULL
|
||||
OP_RTI,"rti",IMPLIED,1,NULL
|
||||
OP_EOR_IZPX,"eor",IZPX,2,NULL
|
||||
OP_NOPI_43,"nop",IMMEDIATE,2,NULL
|
||||
|
@ -78,7 +78,7 @@ OP_NOPI_4C,"nop",IMPLIED,1,NULL
|
|||
OP_JMP_ABS,"jmp",ABSOLUTE,3,NULL
|
||||
OP_EOR_ABS,"eor",ABSOLUTE,3,NULL
|
||||
OP_LSR_ABS,"lsr",ABSOLUTE,3,NULL
|
||||
OP_BBR4_REL,"bbr4",RELATIVE,2,NULL
|
||||
OP_BBR4_REL,"bbr4",ZPR,2,NULL
|
||||
OP_BVC_REL,"bvc",RELATIVE,2,NULL
|
||||
OP_EOR_IZPY,"eor",IZPY,2,NULL
|
||||
OP_EOR_IZP,"eor",IZP,2,NULL
|
||||
|
@ -94,7 +94,7 @@ OP_NOPI_5C,"nop",IMPLIED,1,NULL
|
|||
OP_NOPI_5D,"nop",ABSOLUTE,3,NULL
|
||||
OP_EOR_ABSX,"eor",ABSOLUTEX,3,NULL
|
||||
OP_LSR_ABSX,"lsr",ABSOLUTEX,3,NULL
|
||||
OP_BBR5_REL,"bbr5",RELATIVE,2,NULL
|
||||
OP_BBR5_REL,"bbr5",ZPR,2,NULL
|
||||
OP_RTS,"rts",IMPLIED,1,NULL
|
||||
OP_ADC_IZPX,"adc",IZPX,2,NULL
|
||||
OP_NOPI_63,"nop",IMMEDIATE,2,NULL
|
||||
|
@ -110,7 +110,7 @@ OP_NOPI_6C,"nop",IMPLIED,1,NULL
|
|||
OP_JMP_IABS,"jmp",IABSOLUTE,3,NULL
|
||||
OP_ADC_ABS,"adc",ABSOLUTE,3,NULL
|
||||
OP_ROR_ABS,"ror",ABSOLUTE,3,NULL
|
||||
OP_BBR6_REL,"bbr6",RELATIVE,2,NULL
|
||||
OP_BBR6_REL,"bbr6",ZPR,2,NULL
|
||||
OP_BVS_REL,"bvs",RELATIVE,2,NULL
|
||||
OP_ADC_IZPY,"adc",IZPY,2,NULL
|
||||
OP_ADC_IZP,"adc",IZP,2,NULL
|
||||
|
@ -126,7 +126,7 @@ OP_NOPI_7C,"nop",IMPLIED,1,NULL
|
|||
OP_JMP_IABSX,"jmp",IABSOLUTEX,3,NULL
|
||||
OP_ADC_ABSX,"adc",ABSOLUTEX,3,NULL
|
||||
OP_ROR_ABSX,"ror",ABSOLUTEX,3,NULL
|
||||
OP_BBR7_REL,"bbr7",RELATIVE,2,NULL
|
||||
OP_BBR7_REL,"bbr7",ZPR,2,NULL
|
||||
OP_BRA_REL,"bra",RELATIVE,2,NULL
|
||||
OP_STA_IZPX,"sta",IZPX,2,NULL
|
||||
OP_NOPI_83,"nop",IMMEDIATE,2,NULL
|
||||
|
@ -142,7 +142,7 @@ OP_NOPI_8C,"nop",IMPLIED,1,NULL
|
|||
OP_STY_ABS,"sty",ABSOLUTE,3,NULL
|
||||
OP_STA_ABS,"sta",ABSOLUTE,3,NULL
|
||||
OP_STX_ABS,"stx",ABSOLUTE,3,NULL
|
||||
OP_BBS0_REL,"bbs0",RELATIVE,2,NULL
|
||||
OP_BBS0_REL,"bbs0",ZPR,2,NULL
|
||||
OP_BCC_REL,"bcc",RELATIVE,2,NULL
|
||||
OP_STA_IZPY,"sta",IZPY,2,NULL
|
||||
OP_STA_IZP,"sta",IZP,2,NULL
|
||||
|
@ -158,7 +158,7 @@ OP_NOPI_9C,"nop",IMPLIED,1,NULL
|
|||
OP_STZ_ABS,"stz",ABSOLUTE,3,NULL
|
||||
OP_STA_ABSX,"sta",ABSOLUTEX,3,NULL
|
||||
OP_STZ_ABSX,"stz",ABSOLUTEX,3,NULL
|
||||
OP_BBS1_REL,"bbs1",RELATIVE,2,NULL
|
||||
OP_BBS1_REL,"bbs1",ZPR,2,NULL
|
||||
OP_LDY_IMM,"ldy",IMMEDIATE,2,NULL
|
||||
OP_LDA_IZPX,"lda",IZPX,2,emul_lda
|
||||
OP_LDX_IMM,"ldx",IMMEDIATE,2,NULL
|
||||
|
@ -174,7 +174,7 @@ OP_NOPI_AC,"nop",IMPLIED,1,NULL
|
|||
OP_LDY_ABS,"ldy",ABSOLUTE,3,NULL
|
||||
OP_LDA_ABS,"lda",ABSOLUTE,3,emul_lda
|
||||
OP_LDX_ABS,"ldx",ABSOLUTE,3,NULL
|
||||
OP_BBS2_REL,"bbs2",RELATIVE,2,NULL
|
||||
OP_BBS2_REL,"bbs2",ZPR,2,NULL
|
||||
OP_BCS_REL,"bcs",RELATIVE,2,NULL
|
||||
OP_LDA_IZPY,"lda",IZPY,2,emul_lda
|
||||
OP_LDA_IZP,"lda",IZP,2,emul_lda
|
||||
|
@ -190,7 +190,7 @@ OP_NOPI_BC,"nop",IMPLIED,1,NULL
|
|||
OP_LDY_ABSX,"ldy",ABSOLUTEX,3,NULL
|
||||
OP_LDA_ABSX,"lda",ABSOLUTEX,3,emul_lda
|
||||
OP_LDX_ABSY,"ldx",ABSOLUTEY,3,NULL
|
||||
OP_BBS3_REL,"bbs3",RELATIVE,2,NULL
|
||||
OP_BBS3_REL,"bbs3",ZPR,2,NULL
|
||||
OP_CPY_IMM,"cpy",IMMEDIATE,2,NULL
|
||||
OP_CMP_IZPX,"cmp",IZPX,2,NULL
|
||||
OP_NOPI_C3,"nop",IMMEDIATE,2,NULL
|
||||
|
@ -206,7 +206,7 @@ OP_WAI,"wai",IMPLIED,1,NULL
|
|||
OP_CPY_ABS,"cpy",ABSOLUTE,3,NULL
|
||||
OP_CMP_ABS,"cmp",ABSOLUTE,3,NULL
|
||||
OP_DEC_ABS,"dec",ABSOLUTE,3,NULL
|
||||
OP_BBS4_REL,"bbs4",RELATIVE,2,NULL
|
||||
OP_BBS4_REL,"bbs4",ZPR,2,NULL
|
||||
OP_BNE_REL,"bne",RELATIVE,2,NULL
|
||||
OP_CMP_IZPY,"cmp",IZPY,2,NULL
|
||||
OP_CMP_IZP,"cmp",IZP,2,NULL
|
||||
|
@ -222,7 +222,7 @@ OP_STP,"stp",IMPLIED,1,emul_stp
|
|||
OP_NOPI_DD,"nop",ABSOLUTE,3,NULL
|
||||
OP_CMP_ABSX,"cmp",ABSOLUTEX,3,NULL
|
||||
OP_DEC_ABSX,"dec",ABSOLUTEX,3,NULL
|
||||
OP_BBS5_REL,"bbs5",RELATIVE,2,NULL
|
||||
OP_BBS5_REL,"bbs5",ZPR,2,NULL
|
||||
OP_CPX_IMM,"cpx",IMMEDIATE,2,NULL
|
||||
OP_SBC_IZPX,"sbc",IZPX,2,NULL
|
||||
OP_NOPI_E3,"nop",IMMEDIATE,2,NULL
|
||||
|
@ -238,7 +238,7 @@ OP_NOPI_EC,"nop",IMPLIED,1,NULL
|
|||
OP_CPX_ABS,"cpx",ABSOLUTE,3,NULL
|
||||
OP_SBC_ABS,"sbc",ABSOLUTE,3,NULL
|
||||
OP_INC_ABS,"inc",ABSOLUTE,3,NULL
|
||||
OP_BBS6_REL,"bbs6",RELATIVE,2,NULL
|
||||
OP_BBS6_REL,"bbs6",ZPR,2,NULL
|
||||
OP_BEQ_REL,"beq",RELATIVE,2,NULL
|
||||
OP_SBC_IZPY,"sbc",IZPY,2,NULL
|
||||
OP_SBC_IZP,"sbc",IZP,2,NULL
|
||||
|
@ -254,4 +254,4 @@ OP_NOPI_FC,"nop",IMPLIED,1,NULL
|
|||
OP_NOPI_FD,"nop",ABSOLUTE,3,NULL
|
||||
OP_SBC_ABSX,"sbc",ABSOLUTEX,3,NULL
|
||||
OP_INC_ABSX,"inc",ABSOLUTEX,3,NULL
|
||||
OP_BBS7_REL,"bbs7",RELATIVE,2,NULL
|
||||
OP_BBS7_REL,"bbs7",ZPR,2,NULL
|
||||
|
|
|
|
@ -91,6 +91,9 @@ instruction_print(instruction_t *i)
|
|||
case IZPY:
|
||||
printf("%s (%X),Y", id.mnemonic, i->op1);
|
||||
break;
|
||||
case ZPR:
|
||||
printf("%s %X,%X", id.mnemonic, i->op1, i->op2);
|
||||
break;
|
||||
case ABSOLUTE:
|
||||
printf("%s %02X%02X", id.mnemonic, i->op2, i->op1);
|
||||
break;
|
||||
|
@ -204,6 +207,8 @@ instruction_data_write_1(rk65c02emu_t *e, instrdef_t *id, instruction_t *i, uint
|
|||
case ABSOLUTEY:
|
||||
bus_write_1(e->bus, (i->op1 + (i->op2 << 8)) + e->regs.Y, val);
|
||||
break;
|
||||
case ZPR:
|
||||
/* XXX */
|
||||
case RELATIVE:
|
||||
case IABSOLUTE:
|
||||
case IABSOLUTEX:
|
||||
|
@ -271,6 +276,8 @@ instruction_data_read_1(rk65c02emu_t *e, instrdef_t *id, instruction_t *i)
|
|||
case ABSOLUTEY:
|
||||
rv = bus_read_1(e->bus, (i->op1 + (i->op2 << 8)) + e->regs.Y);
|
||||
break;
|
||||
case ZPR:
|
||||
/* XXX */
|
||||
case IABSOLUTE:
|
||||
case IABSOLUTEX:
|
||||
case RELATIVE:
|
||||
|
|
|
@ -12,6 +12,7 @@ typedef enum {
|
|||
IZP,
|
||||
IZPX,
|
||||
IZPY,
|
||||
ZPR,
|
||||
RELATIVE,
|
||||
ABSOLUTE,
|
||||
ABSOLUTEX,
|
||||
|
|
Loading…
Reference in New Issue
Block a user