コード例 #1
0
        /// <summary>
        /// Constructs a configurable memory map of the given size
        /// </summary>
        /// <param name="size">Size in bytes of the memory map (min: 0x0001, max: 0x10000</param>
        public ConfigurableMemoryMap(uint size)
        {
            if (size <= 0 || size > ushort.MaxValue + 1)
            {
                throw new ArgumentOutOfRangeException("size");
            }
            Size = size;

            readMemoryHandlers  = new ReadMemoryHandler[Size];
            writeMemoryHandlers = new WriteMemoryHandler[Size];
            memory = new byte[Size];

            ResetConfiguration();
        }
コード例 #2
0
        /// <summary>
        /// Configure a memory write handler for a given memory address range
        /// </summary>
        /// <param name="startAddress">starting address to configure</param>
        /// <param name="length">length of the address range to configure</param>
        /// <param name="writeMemoryHandler">delegate to handle memory writes at the given address range</param>
        public void ConfigureMemoryWriteRange(ushort startAddress, ushort length, WriteMemoryHandler writeMemoryHandler)
        {
            int endAddressExclusive = startAddress + length;

            if (endAddressExclusive > Size)
            {
                throw new ArgumentOutOfRangeException("length");
            }

            for (ushort address = startAddress; address < endAddressExclusive; address++)
            {
                writeMemoryHandlers[address] = writeMemoryHandler;
            }
        }
コード例 #3
0
 /// <summary>
 /// Configure a memory write handler for a given memory address
 /// </summary>
 /// <param name="address">Memory address to associate to the write handler</param>
 /// <param name="writeMemoryHandler">delegate to handle memory writes at the given address</param>
 public void ConfigureMemoryWrite(ushort address, WriteMemoryHandler writeMemoryHandler)
 {
     writeMemoryHandlers[address] = writeMemoryHandler;
 }
コード例 #4
0
 /// <summary>
 /// Configure memory read and write handlers for a given memory address
 /// </summary>
 /// <param name="address">Memory address to associate to the handlers</param>
 /// <param name="readMemoryHandler">delegate to handle memory reads at the given address</param>
 /// <param name="writeMemoryHandler">delegate to handle memory writes at the given address</param>
 public void ConfigureMemoryAccess(ushort address, ReadMemoryHandler readMemoryHandler, WriteMemoryHandler writeMemoryHandler)
 {
     readMemoryHandlers[address]  = readMemoryHandler;
     writeMemoryHandlers[address] = writeMemoryHandler;
 }