public static ushort GetAbsolute(MOS6502 CPU) { var nextShort = CPU.ReadNextShort(); CPU.IncrementPC(2); return(nextShort); }
public static ushort GetAbsoluteX(MOS6502 CPU) { intermediateAddress = CPU.ReadNextShort(); var nextShort = (ushort)(intermediateAddress + CPU.Registers.X); CPU.IncrementPC(2); return(nextShort); }
public static ushort GetIndirect(MOS6502 CPU) { intermediateAddress = CPU.ReadNextShort(); // 6502 bug in indirect JMP... if ((intermediateAddress & 0x00FF) == 0xFF) { byte lowByte = CPU.ReadByteAt(intermediateAddress); byte highByte = CPU.ReadByteAt((ushort)(intermediateAddress - 0x00FF)); return((ushort)(highByte << 8 | lowByte)); } return(CPU.ReadShortAt(intermediateAddress)); }