private int GetOffset(Range range, int index) { if (range.Min == 0) { return(index); } return(index - range.Min); }
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]; }
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."); } }
private Memory <byte> GetMemory(Range range) => new Memory <byte>(this.memory, range.Min, 1 + (range.Max - range.Min));
public KeyboardController2(Range memoryRange, string name) : base(memoryRange, name) { }
public Stack(Range range, string name) : base(range, name) { }
public ExternalFacade(IMemoryMap memoryMap, Range range, string name) { this.memoryMap = memoryMap; this.range = range; this.Name = name; }
public MemorySegment(Range memoryRange, string name) { this.Range = memoryRange; this.Name = name; }