Пример #1
0
        private int GetOffset(Range range, int index)
        {
            if (range.Min == 0)
            {
                return(index);
            }

            return(index - range.Min);
        }
Пример #2
0
        public BinaryMemorySegment(Range range, string name, Action <int, byte> afterWriteAction = null, Action <int, byte> afterReadAction = null)
            : base(range, name)
        {
            var length = this.Range.Max - this.Range.Min;

            this.AfterReadAction  = afterReadAction;
            this.AfterWriteAction = afterWriteAction;

            // TODO: fix this in getoffsetinsegment by overriding it...
            this.Data = new byte[length + 1];
        }
Пример #3
0
        public MirroredMemory(int lowerIndex, int upperIndex, int mirroredLowerIndex, int mirroredUpperIndex, IMemoryMap memoryMapper, string name)
            : base(new Range(lowerIndex, upperIndex), name)
        {
            this.mirroredRange = new Range(mirroredLowerIndex, mirroredUpperIndex);

            this.moduloValue = this.mirroredRange.Max - this.mirroredRange.Min;

            this.memoryMapper = memoryMapper;

            foreach (var memorySegment in this.memoryMapper)
            {
                if (this.mirroredRange.IsOverlapped(memorySegment.Range) || this.mirroredRange.Equals(memorySegment.Range))
                {
                    this.realMemorySegments.Add(memorySegment);
                }
            }

            if (!this.realMemorySegments.Any())
            {
                throw new InvalidOperationException($"Mirrored memory ({this.Name}) setup, but it can't find another memory segment to link to.");
            }
        }
Пример #4
0
 private Memory <byte> GetMemory(Range range) => new Memory <byte>(this.memory, range.Min, 1 + (range.Max - range.Min));
Пример #5
0
 public KeyboardController2(Range memoryRange, string name)
     : base(memoryRange, name)
 {
 }
Пример #6
0
 public Stack(Range range, string name)
     : base(range, name)
 {
 }
Пример #7
0
 public ExternalFacade(IMemoryMap memoryMap, Range range, string name)
 {
     this.memoryMap = memoryMap;
     this.range     = range;
     this.Name      = name;
 }
Пример #8
0
 public MemorySegment(Range memoryRange, string name)
 {
     this.Range = memoryRange;
     this.Name  = name;
 }