protected void WriteBytesAt(ushort address, byte[] bytes, bool timing) { // similar optimisation to ReadBytesAt above if (!_initialised) { throw new MemoryNotInitialisedException(); } IMemorySegment segment = _map.SegmentFor(address); if (segment != null || !segment.ReadOnly) { if (!timing && segment.SizeInBytes - AddressOffset(address, segment) >= bytes.Length) { segment.WriteBytesAt(AddressOffset(address, segment), bytes); } else { for (ushort i = 0; i < bytes.Length; i++) { WriteByteAt((ushort)(address + i), bytes[i], timing); } } } }