_PC++;
PUSH(_PC>>8);
PUSH(_PC);
- PUSH(_P|U_FLAG|B_FLAG);
+ _P|=B_FLAG;
+ PUSH(_P|U_FLAG);
_P|=I_FLAG;
_PC=RdMem(0xFFFE);
_PC|=RdMem(0xFFFF)<<8;
_PC=POP();
_PC|=POP()<<8;
break;
-
+
case 0x60: /* RTS */
_PC=POP();
_PC|=POP()<<8;
break;
case 0x4C:
{
- uint16 ptmp=_PC;
unsigned int npc;
-
+/*
+ uint16 ptmp=_PC;
npc=RdMem(ptmp);
ptmp++;
npc|=RdMem(ptmp)<<8;
+*/
+ npc=RdMem(_PC++);
+ npc|=RdMem(_PC++)<<8;
_PC=npc;
}
break; /* JMP ABSOLUTE */
-case 0x6C:
+case 0x6C:
{
uint32 tmp;
GetAB(tmp);
break;
case 0x20: /* JSR */
{
- uint8 npc;
+ uint32 npc;
npc=RdMem(_PC++);
PUSH(_PC>>8);
PUSH(_PC);
- _PC=RdMem(_PC)<<8;
- _PC|=npc;
+ npc|=RdMem(_PC++)<<8;
+ _PC=npc;
}
break;
case 0x83: ST_IX(_A&_X);
/* ARR - ARGH, MATEY! */
-case 0x6B: {
- uint8 arrtmp;
+case 0x6B: {
+ uint8 arrtmp;
LD_IM(AND;_P&=~V_FLAG;_P|=(_A^(_A>>1))&0x40;arrtmp=_A>>7;_A>>=1;_A|=(_P&C_FLAG)<<7;_P&=~C_FLAG;_P|=arrtmp;X_ZN(_A));
}
/* ASR */
/* ATX(OAL) Is this(OR with $EE) correct? */
case 0xAB: LD_IM(_A|=0xEE;AND;_X=_A);
-/* AXS */
+/* AXS */
case 0xCB: LD_IM(AXS);
/* DCP */
-case 0xC7: LD_ZP(DEC;CMP);
-case 0xD7: LD_ZPX(DEC;CMP);
-case 0xCF: LD_AB(DEC;CMP);
-case 0xDF: LD_ABX(DEC;CMP);
-case 0xDB: LD_ABY(DEC;CMP);
-case 0xC3: LD_IX(DEC;CMP);
-case 0xD3: LD_IY(DEC;CMP);
+case 0xC7: RMW_ZP(DEC;CMP);
+case 0xD7: RMW_ZPX(DEC;CMP);
+case 0xCF: RMW_AB(DEC;CMP);
+case 0xDF: RMW_ABX(DEC;CMP);
+case 0xDB: RMW_ABY(DEC;CMP);
+case 0xC3: RMW_IX(DEC;CMP);
+case 0xD3: RMW_IY(DEC;CMP);
/* ISC */
-case 0xE7: LD_ZP(INC;SBC);
-case 0xF7: LD_ZPX(INC;SBC);
-case 0xEF: LD_AB(INC;SBC);
-case 0xFF: LD_ABX(INC;SBC);
-case 0xFB: LD_ABY(INC;SBC);
-case 0xE3: LD_IX(INC;SBC);
-case 0xF3: LD_IY(INC;SBC);
+case 0xE7: RMW_ZP(INC;SBC);
+case 0xF7: RMW_ZPX(INC;SBC);
+case 0xEF: RMW_AB(INC;SBC);
+case 0xFF: RMW_ABX(INC;SBC);
+case 0xFB: RMW_ABY(INC;SBC);
+case 0xE3: RMW_IX(INC;SBC);
+case 0xF3: RMW_IY(INC;SBC);
/* DOP */
/* TOP */
case 0x0C: LD_AB(;);
-case 0x1C:
-case 0x3C:
-case 0x5C:
-case 0x7C:
-case 0xDC:
+case 0x1C:
+case 0x3C:
+case 0x5C:
+case 0x7C:
+case 0xDC:
case 0xFC: LD_ABX(;);
/* XAA - BIG QUESTION MARK HERE */