예제 #1
0
        public static ushort GetAbsolute(MOS6502 CPU)
        {
            var nextShort = CPU.ReadNextShort();

            CPU.IncrementPC(2);

            return(nextShort);
        }
예제 #2
0
        public static ushort GetAbsoluteX(MOS6502 CPU)
        {
            intermediateAddress = CPU.ReadNextShort();
            var nextShort = (ushort)(intermediateAddress + CPU.Registers.X);

            CPU.IncrementPC(2);

            return(nextShort);
        }
예제 #3
0
        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));
        }