public CarRepository(string filePath, SegmentEnum segment) { Segment = segment; CarList = new List <Car>(); List <string> lines = File.ReadAllLines(filePath).ToList(); var json = string.Join("", lines); AddCars(json); }
private void SetWordInEffectiveSegment(SegmentEnum PreferredSegment, ulong Address, ushort Value) { SetWord(GetEffectiveSegment(PreferredSegment), Address, Value); }
private void SetWord(SegmentEnum Segment, ulong Address, ushort Value) { if ((opMode == OpModeEnum.RealAddressMode)) { if ((Segment == SegmentEnum.SS) && (Address > 0xfffe)) RaiseException(ExceptionEnum.StackFault, ExceptionDetailEnum.Null); } mch.SetWord(GetRealAddress(Segment, Address), Value); }
private void SetQword(SegmentEnum Segment, ulong Address, ulong Value) { mch.SetQword(GetRealAddress(Segment, Address), Value); }
private void SetByteInEffectiveSegment(SegmentEnum PreferredSegment, ulong Address, byte Value) { SetByte(GetEffectiveSegment(PreferredSegment), Address, Value); }
private void SetByte(SegmentEnum Segment, ulong Address, byte Value) { mch.SetByte(GetRealAddress(Segment, Address), Value); }
private ushort GetWordInEffectiveSegment(SegmentEnum PreferredSegment, ulong Address) { return GetWord(GetEffectiveSegment(PreferredSegment), Address); }
private ushort GetWord(SegmentEnum Segment, ulong Address) { if ((opMode == OpModeEnum.RealAddressMode)) { if ((Segment == SegmentEnum.SS) && (Address > 0xfffe)) RaiseException(ExceptionEnum.StackFault, ExceptionDetailEnum.Null); } return mch.GetWord(GetRealAddress(Segment, Address)); }
// gets the linear address which will be sent to the memory controller private ulong GetRealAddress(SegmentEnum Segment, ulong Address) { ushort segValue = 0; switch (Segment) { case SegmentEnum.CS: segValue = cs; break; case SegmentEnum.DS: segValue = ds; break; case SegmentEnum.ES: segValue = es; break; case SegmentEnum.FS: segValue = fs; break; case SegmentEnum.GS: segValue = gs; break; case SegmentEnum.SS: segValue = ss; break; } switch (opMode) { case OpModeEnum.RealAddressMode: return ((ulong)(segValue << 4) + Address) & (uint)(maskA20 ? 0xfffff : 0x1fffff); case OpModeEnum.ProtectedMode: return (uint)Address; case OpModeEnum.IA32e_CompatibilityMode: return (uint)Address; default: // OpMode.IA32e_64bitMode: return Address; } }
private ulong GetQword(SegmentEnum Segment, ulong Address) { return mch.GetQword(GetRealAddress(Segment, Address)); }
// returns PreferredSegment, unless a segment override prefix has been encountered... in which case it returns the overriding segment private SegmentEnum GetEffectiveSegment(SegmentEnum PreferredSegment) { if (!segmentOverride.Active) { return PreferredSegment; } else { return segmentOverride.Value; } }
private byte GetByteInEffectiveSegment(SegmentEnum PreferredSegment, ulong Address) { return GetByte(GetEffectiveSegment(PreferredSegment), Address); }
private byte GetByte(SegmentEnum Segment, ulong Address) { return mch.GetByte(GetRealAddress(Segment, Address)); }