Exemple #1
0
        /// <summary>
        /// LDA $2000,X
        /// </summary>
        /// <param name="Address"></param>
        /// <param name="bank"></param>
        /// <param name="Index">The Index register - maybe short or long.</param>
        /// <param name="width">The width of the register requesting data</param>
        /// <returns></returns>
        private int GetIndexed(int Address, Register bank, Register Index, int width)
        {
            int addr = Address;

            addr = bank.GetLongAddress(Address);
            addr = addr + Index.Value;
            return((width == 1) ? cpu.MemMgr.ReadByte(addr) : cpu.MemMgr.ReadWord(addr));
        }
Exemple #2
0
        /// <summary>
        /// LDA $2000,X
        /// </summary>
        /// <param name="Address"></param>
        /// <param name="bank"></param>
        /// <param name="Index"></param>
        /// <returns></returns>
        private int GetIndexed(int Address, Register bank, Register Index)
        {
            int addr = Address;

            addr = bank.GetLongAddress(Address);
            addr = addr + Index.Value;
            return(cpu.Memory.ReadWord(addr));
        }
Exemple #3
0
 /// <summary>
 /// Read memory at specified address. Optionally use bank register
 /// to select the relevant bank.
 /// </summary>
 /// <param name="Address"></param>
 /// <param name="bank"></param>
 /// <returns></returns>
 private int GetAbsolute(int Address, Register bank, int width)
 {
     return((width == 1) ? cpu.MemMgr.ReadByte(bank.GetLongAddress(Address)) : cpu.MemMgr.ReadWord(bank.GetLongAddress(Address)));
 }
Exemple #4
0
        /// <summary>
        /// Returns a pointer from memory.
        /// JMP ($xxxx) reads a two-byte address from bank 0. It jumps to that address in the current
        /// program bank (meaning it adds PBR to get the final address.)
        /// </summary>
        /// <param name="Address">Address of pointer. Final value is address pointer references.</param>
        /// <param name="block"></param>
        /// <returns></returns>
        public int GetAbsoluteIndirectAddress(int Address, Register bank)
        {
            int ptr = cpu.Memory.ReadWord(Address);

            return(bank.GetLongAddress(ptr));
        }
Exemple #5
0
 /// <summary>
 /// Read memory at specified address. Optionally use bank register
 /// to select the relevant bank.
 /// </summary>
 /// <param name="Address"></param>
 /// <param name="bank"></param>
 /// <returns></returns>
 private int GetAbsolute(int Address, Register bank, int bytes)
 {
     return((bytes == 1) ? cpu.Memory.ReadByte(bank.GetLongAddress(Address)) : cpu.Memory.ReadWord(bank.GetLongAddress(Address)));
 }