diff --git a/SabreTools.Library/DatFiles/SoftwareList.cs b/SabreTools.Library/DatFiles/SoftwareList.cs
index cb2ecfa9..6980ba2c 100644
--- a/SabreTools.Library/DatFiles/SoftwareList.cs
+++ b/SabreTools.Library/DatFiles/SoftwareList.cs
@@ -313,7 +313,19 @@ namespace SabreTools.Library.DatFiles
foreach (DatItem item in items)
{
// Add all missing information
- item.Part = part;
+ switch (item.ItemType)
+ {
+ case ItemType.DipSwitch:
+ (item as DipSwitch).Part = part;
+ break;
+ case ItemType.Disk:
+ (item as Disk).Part = part;
+ break;
+ case ItemType.Rom:
+ (item as Rom).Part = part;
+ break;
+ }
+
item.Source = new Source(indexId, filename);
item.CopyMachineInformation(machine);
@@ -693,12 +705,12 @@ namespace SabreTools.Library.DatFiles
diskAreaName = "cdrom";
xtw.WriteStartElement("part");
- xtw.WriteRequiredAttributeString("name", datItem.Part?.Name);
- xtw.WriteRequiredAttributeString("interface", datItem.Part?.Interface);
+ xtw.WriteRequiredAttributeString("name", disk.Part?.Name);
+ xtw.WriteRequiredAttributeString("interface", disk.Part?.Interface);
- if (datItem.Part?.Features != null && datItem.Part?.Features.Count > 0)
+ if (disk.Part?.Features != null && disk.Part?.Features.Count > 0)
{
- foreach (PartFeature partFeature in datItem.Part.Features)
+ foreach (PartFeature partFeature in disk.Part.Features)
{
xtw.WriteStartElement("feature");
xtw.WriteRequiredAttributeString("name", partFeature.Name);
@@ -740,12 +752,12 @@ namespace SabreTools.Library.DatFiles
dataAreaName = "rom";
xtw.WriteStartElement("part");
- xtw.WriteRequiredAttributeString("name", datItem.Part?.Name);
- xtw.WriteRequiredAttributeString("interface", datItem.Part?.Interface);
+ xtw.WriteRequiredAttributeString("name", rom.Part?.Name);
+ xtw.WriteRequiredAttributeString("interface", rom.Part?.Interface);
- if (datItem.Part?.Features != null && datItem.Part?.Features.Count > 0)
+ if (rom.Part?.Features != null && rom.Part?.Features.Count > 0)
{
- foreach (PartFeature kvp in datItem.Part.Features)
+ foreach (PartFeature kvp in rom.Part.Features)
{
xtw.WriteStartElement("feature");
xtw.WriteRequiredAttributeString("name", kvp.Name);
diff --git a/SabreTools.Library/DatItems/Adjuster.cs b/SabreTools.Library/DatItems/Adjuster.cs
index e732bdcc..800f67a5 100644
--- a/SabreTools.Library/DatItems/Adjuster.cs
+++ b/SabreTools.Library/DatItems/Adjuster.cs
@@ -107,7 +107,6 @@ namespace SabreTools.Library.DatItems
Remark = this.Remark,
Boot = this.Boot,
- Part = this.Part,
Value = this.Value,
LoadFlag = this.LoadFlag,
diff --git a/SabreTools.Library/DatItems/Analog.cs b/SabreTools.Library/DatItems/Analog.cs
index 5f87b7e9..09ad7872 100644
--- a/SabreTools.Library/DatItems/Analog.cs
+++ b/SabreTools.Library/DatItems/Analog.cs
@@ -70,7 +70,6 @@ namespace SabreTools.Library.DatItems
Remark = this.Remark,
Boot = this.Boot,
- Part = this.Part,
Value = this.Value,
LoadFlag = this.LoadFlag,
diff --git a/SabreTools.Library/DatItems/Archive.cs b/SabreTools.Library/DatItems/Archive.cs
index 5121e88f..70fce975 100644
--- a/SabreTools.Library/DatItems/Archive.cs
+++ b/SabreTools.Library/DatItems/Archive.cs
@@ -83,7 +83,6 @@ namespace SabreTools.Library.DatItems
Remark = this.Remark,
Boot = this.Boot,
- Part = this.Part,
Value = this.Value,
LoadFlag = this.LoadFlag,
diff --git a/SabreTools.Library/DatItems/BiosSet.cs b/SabreTools.Library/DatItems/BiosSet.cs
index f7b4403c..92c3ad7f 100644
--- a/SabreTools.Library/DatItems/BiosSet.cs
+++ b/SabreTools.Library/DatItems/BiosSet.cs
@@ -101,7 +101,6 @@ namespace SabreTools.Library.DatItems
Remark = this.Remark,
Boot = this.Boot,
- Part = this.Part,
Value = this.Value,
LoadFlag = this.LoadFlag,
diff --git a/SabreTools.Library/DatItems/Blank.cs b/SabreTools.Library/DatItems/Blank.cs
index 030e688d..c639e5d7 100644
--- a/SabreTools.Library/DatItems/Blank.cs
+++ b/SabreTools.Library/DatItems/Blank.cs
@@ -38,7 +38,6 @@ namespace SabreTools.Library.DatItems
Remark = this.Remark,
Boot = this.Boot,
- Part = this.Part,
Value = this.Value,
LoadFlag = this.LoadFlag,
diff --git a/SabreTools.Library/DatItems/Chip.cs b/SabreTools.Library/DatItems/Chip.cs
index 8ed3d6ee..99cf05de 100644
--- a/SabreTools.Library/DatItems/Chip.cs
+++ b/SabreTools.Library/DatItems/Chip.cs
@@ -112,7 +112,6 @@ namespace SabreTools.Library.DatItems
Remark = this.Remark,
Boot = this.Boot,
- Part = this.Part,
Value = this.Value,
LoadFlag = this.LoadFlag,
diff --git a/SabreTools.Library/DatItems/Condition.cs b/SabreTools.Library/DatItems/Condition.cs
index 03898c57..1a5b696b 100644
--- a/SabreTools.Library/DatItems/Condition.cs
+++ b/SabreTools.Library/DatItems/Condition.cs
@@ -105,7 +105,6 @@ namespace SabreTools.Library.DatItems
Remark = this.Remark,
Boot = this.Boot,
- Part = this.Part,
Value = this.Value,
LoadFlag = this.LoadFlag,
diff --git a/SabreTools.Library/DatItems/Configuration.cs b/SabreTools.Library/DatItems/Configuration.cs
index 6e071fb8..cab1d571 100644
--- a/SabreTools.Library/DatItems/Configuration.cs
+++ b/SabreTools.Library/DatItems/Configuration.cs
@@ -146,7 +146,6 @@ namespace SabreTools.Library.DatItems
Remark = this.Remark,
Boot = this.Boot,
- Part = this.Part,
Value = this.Value,
LoadFlag = this.LoadFlag,
diff --git a/SabreTools.Library/DatItems/Control.cs b/SabreTools.Library/DatItems/Control.cs
index a82c4abb..3f877deb 100644
--- a/SabreTools.Library/DatItems/Control.cs
+++ b/SabreTools.Library/DatItems/Control.cs
@@ -170,7 +170,6 @@ namespace SabreTools.Library.DatItems
Remark = this.Remark,
Boot = this.Boot,
- Part = this.Part,
Value = this.Value,
LoadFlag = this.LoadFlag,
diff --git a/SabreTools.Library/DatItems/DatItem.cs b/SabreTools.Library/DatItems/DatItem.cs
index 308d1549..9438f190 100644
--- a/SabreTools.Library/DatItems/DatItem.cs
+++ b/SabreTools.Library/DatItems/DatItem.cs
@@ -104,12 +104,6 @@ namespace SabreTools.Library.DatItems
#region SoftwareList Fields
- ///
- /// Original hardware part associated with the item
- ///
- [JsonProperty("part", DefaultValueHandling = DefaultValueHandling.Ignore)]
- public Part Part { get; set; }
-
///
/// SoftwareList value associated with the item
///
@@ -769,18 +763,6 @@ namespace SabreTools.Library.DatItems
#region SoftwareList
- // Filter on part name
- if (filter.DatItem_Part_Name.MatchesPositiveSet(Part?.Name) == false)
- return false;
- if (filter.DatItem_Part_Name.MatchesNegativeSet(Part?.Name) == true)
- return false;
-
- // Filter on part interface
- if (filter.DatItem_Part_Interface.MatchesPositiveSet(Part?.Interface) == false)
- return false;
- if (filter.DatItem_Part_Interface.MatchesNegativeSet(Part?.Interface) == true)
- return false;
-
// Filter on softwarelist value
if (filter.DatItem_Value.MatchesPositiveSet(Value) == false)
return false;
@@ -838,15 +820,6 @@ namespace SabreTools.Library.DatItems
#region SoftwareList
- if (fields.Contains(Field.DatItem_Part_Name) && Part != null)
- Part.Name = null;
-
- if (fields.Contains(Field.DatItem_Part_Interface) && Part != null)
- Part.Interface = null;
-
- if (fields.Contains(Field.DatItem_Features) && Part != null)
- Part.Features = null;
-
if (fields.Contains(Field.DatItem_Value))
Value = null;
@@ -974,30 +947,6 @@ namespace SabreTools.Library.DatItems
#region SoftwareList
- if (fields.Contains(Field.DatItem_Part_Name))
- {
- if (Part == null)
- Part = new Part();
-
- Part.Name = item.Part?.Name;
- }
-
- if (fields.Contains(Field.DatItem_Part_Interface))
- {
- if (Part == null)
- Part = new Part();
-
- Part.Interface = item.Part?.Interface;
- }
-
- if (fields.Contains(Field.DatItem_Features))
- {
- if (Part == null)
- Part = new Part();
-
- Part.Features = item.Part?.Features;
- }
-
if (fields.Contains(Field.DatItem_Value))
Value = item.Value;
diff --git a/SabreTools.Library/DatItems/Device.cs b/SabreTools.Library/DatItems/Device.cs
index 89d9fa3b..e6e44d8d 100644
--- a/SabreTools.Library/DatItems/Device.cs
+++ b/SabreTools.Library/DatItems/Device.cs
@@ -121,7 +121,6 @@ namespace SabreTools.Library.DatItems
Remark = this.Remark,
Boot = this.Boot,
- Part = this.Part,
Value = this.Value,
LoadFlag = this.LoadFlag,
diff --git a/SabreTools.Library/DatItems/DeviceReference.cs b/SabreTools.Library/DatItems/DeviceReference.cs
index ab79f5e0..c63ab391 100644
--- a/SabreTools.Library/DatItems/DeviceReference.cs
+++ b/SabreTools.Library/DatItems/DeviceReference.cs
@@ -83,7 +83,6 @@ namespace SabreTools.Library.DatItems
Remark = this.Remark,
Boot = this.Boot,
- Part = this.Part,
Value = this.Value,
LoadFlag = this.LoadFlag,
diff --git a/SabreTools.Library/DatItems/DipSwitch.cs b/SabreTools.Library/DatItems/DipSwitch.cs
index 8e3b1a9e..60271747 100644
--- a/SabreTools.Library/DatItems/DipSwitch.cs
+++ b/SabreTools.Library/DatItems/DipSwitch.cs
@@ -16,6 +16,8 @@ namespace SabreTools.Library.DatItems
{
#region Fields
+ #region Common
+
///
/// Name of the item
///
@@ -54,6 +56,18 @@ namespace SabreTools.Library.DatItems
#endregion
+ #region SoftwareList
+
+ ///
+ /// Original hardware part associated with the item
+ ///
+ [JsonProperty("part", DefaultValueHandling = DefaultValueHandling.Ignore)]
+ public Part Part { get; set; }
+
+ #endregion
+
+ #endregion // Fields
+
#region Accessors
///
@@ -123,7 +137,6 @@ namespace SabreTools.Library.DatItems
Remark = this.Remark,
Boot = this.Boot,
- Part = this.Part,
Value = this.Value,
LoadFlag = this.LoadFlag,
@@ -136,6 +149,8 @@ namespace SabreTools.Library.DatItems
Conditions = this.Conditions,
Locations = this.Locations,
Values = this.Values,
+
+ Part = this.Part,
};
}
@@ -202,6 +217,8 @@ namespace SabreTools.Library.DatItems
if (!base.PassesFilter(filter))
return false;
+ #region Common
+
// Filter on item name
if (filter.DatItem_Name.MatchesPositiveSet(Name) == false)
return false;
@@ -224,6 +241,24 @@ namespace SabreTools.Library.DatItems
// TODO: Handle DatItem_Location*
// TODO: Handle DatItem_Value*
+ #endregion
+
+ #region SoftwareList
+
+ // Filter on part name
+ if (filter.DatItem_Part_Name.MatchesPositiveSet(Part?.Name) == false)
+ return false;
+ if (filter.DatItem_Part_Name.MatchesNegativeSet(Part?.Name) == true)
+ return false;
+
+ // Filter on part interface
+ if (filter.DatItem_Part_Interface.MatchesPositiveSet(Part?.Interface) == false)
+ return false;
+ if (filter.DatItem_Part_Interface.MatchesNegativeSet(Part?.Interface) == true)
+ return false;
+
+ #endregion
+
return true;
}
@@ -237,6 +272,9 @@ namespace SabreTools.Library.DatItems
base.RemoveFields(fields);
// Remove the fields
+
+ #region Common
+
if (fields.Contains(Field.DatItem_Name))
Name = null;
@@ -258,6 +296,21 @@ namespace SabreTools.Library.DatItems
// TODO: Handle DatItem_Condition*
// TODO: Handle DatItem_Location*
// TODO: Handle DatItem_Value*
+
+ #endregion
+
+ #region SoftwareList
+
+ if (fields.Contains(Field.DatItem_Part_Name) && Part != null)
+ Part.Name = null;
+
+ if (fields.Contains(Field.DatItem_Part_Interface) && Part != null)
+ Part.Interface = null;
+
+ if (fields.Contains(Field.DatItem_Features) && Part != null)
+ Part.Features = null;
+
+ #endregion
}
///
@@ -292,6 +345,9 @@ namespace SabreTools.Library.DatItems
DipSwitch newItem = item as DipSwitch;
// Replace the fields
+
+ #region Common
+
if (fields.Contains(Field.DatItem_Name))
Name = newItem.Name;
@@ -313,6 +369,36 @@ namespace SabreTools.Library.DatItems
// TODO: Handle DatItem_Condition*
// TODO: Handle DatItem_Location*
// TODO: Handle DatItem_Value*
+
+ #endregion
+
+ #region SoftwareList
+
+ if (fields.Contains(Field.DatItem_Part_Name))
+ {
+ if (Part == null)
+ Part = new Part();
+
+ Part.Name = newItem.Part?.Name;
+ }
+
+ if (fields.Contains(Field.DatItem_Part_Interface))
+ {
+ if (Part == null)
+ Part = new Part();
+
+ Part.Interface = newItem.Part?.Interface;
+ }
+
+ if (fields.Contains(Field.DatItem_Features))
+ {
+ if (Part == null)
+ Part = new Part();
+
+ Part.Features = newItem.Part?.Features;
+ }
+
+ #endregion
}
#endregion
diff --git a/SabreTools.Library/DatItems/Disk.cs b/SabreTools.Library/DatItems/Disk.cs
index 03816d31..7be66a36 100644
--- a/SabreTools.Library/DatItems/Disk.cs
+++ b/SabreTools.Library/DatItems/Disk.cs
@@ -100,6 +100,12 @@ namespace SabreTools.Library.DatItems
[JsonProperty("diskarea", DefaultValueHandling = DefaultValueHandling.Ignore)]
public DiskArea DiskArea { get; set; }
+ ///
+ /// Original hardware part associated with the item
+ ///
+ [JsonProperty("part", DefaultValueHandling = DefaultValueHandling.Ignore)]
+ public Part Part { get; set; }
+
#endregion
#endregion // Fields
@@ -212,7 +218,6 @@ namespace SabreTools.Library.DatItems
Remark = this.Remark,
Boot = this.Boot,
- Part = this.Part,
Value = this.Value,
LoadFlag = this.LoadFlag,
@@ -230,6 +235,7 @@ namespace SabreTools.Library.DatItems
Optional = this.Optional,
DiskArea = this.DiskArea,
+ Part = this.Part,
};
}
@@ -254,7 +260,6 @@ namespace SabreTools.Library.DatItems
Remark = this.Remark,
Boot = this.Boot,
- Part = this.Part,
Value = this.Value,
LoadFlag = this.LoadFlag,
@@ -271,6 +276,7 @@ namespace SabreTools.Library.DatItems
SHA1 = this.SHA1,
DataArea = new DataArea { Name = this.DiskArea.Name },
+ Part = this.Part,
};
return rom;
@@ -418,6 +424,8 @@ namespace SabreTools.Library.DatItems
if (!base.PassesFilter(filter))
return false;
+ #region Common
+
// Filter on item name
if (filter.DatItem_Name.MatchesPositiveSet(Name) == false)
return false;
@@ -468,12 +476,30 @@ namespace SabreTools.Library.DatItems
if (filter.DatItem_Optional.MatchesNeutral(null, Optional) == false)
return false;
+ #endregion
+
+ #region SoftwareList
+
// Filter on area name
if (filter.DatItem_AreaName.MatchesPositiveSet(DiskArea?.Name) == false)
return false;
if (filter.DatItem_AreaName.MatchesNegativeSet(DiskArea?.Name) == true)
return false;
+ // Filter on part name
+ if (filter.DatItem_Part_Name.MatchesPositiveSet(Part?.Name) == false)
+ return false;
+ if (filter.DatItem_Part_Name.MatchesNegativeSet(Part?.Name) == true)
+ return false;
+
+ // Filter on part interface
+ if (filter.DatItem_Part_Interface.MatchesPositiveSet(Part?.Interface) == false)
+ return false;
+ if (filter.DatItem_Part_Interface.MatchesNegativeSet(Part?.Interface) == true)
+ return false;
+
+ #endregion
+
return true;
}
@@ -487,6 +513,9 @@ namespace SabreTools.Library.DatItems
base.RemoveFields(fields);
// Remove the fields
+
+ #region Common
+
if (fields.Contains(Field.DatItem_Name))
Name = null;
@@ -514,11 +543,26 @@ namespace SabreTools.Library.DatItems
if (fields.Contains(Field.DatItem_Optional))
Optional = null;
+ #endregion
+
+ #region SoftwareList
+
if (fields.Contains(Field.DatItem_AreaName))
{
if (DiskArea != null)
DiskArea.Name = null;
}
+
+ if (fields.Contains(Field.DatItem_Part_Name) && Part != null)
+ Part.Name = null;
+
+ if (fields.Contains(Field.DatItem_Part_Interface) && Part != null)
+ Part.Interface = null;
+
+ if (fields.Contains(Field.DatItem_Features) && Part != null)
+ Part.Features = null;
+
+ #endregion
}
///
@@ -588,6 +632,9 @@ namespace SabreTools.Library.DatItems
Disk newItem = item as Disk;
// Replace the fields
+
+ #region Common
+
if (fields.Contains(Field.DatItem_Name))
Name = newItem.Name;
@@ -621,6 +668,10 @@ namespace SabreTools.Library.DatItems
if (fields.Contains(Field.DatItem_Optional))
Optional = newItem.Optional;
+ #endregion
+
+ #region SoftwareList
+
if (fields.Contains(Field.DatItem_AreaName))
{
if (DiskArea == null)
@@ -628,6 +679,32 @@ namespace SabreTools.Library.DatItems
DiskArea.Name = newItem.DiskArea?.Name;
}
+
+ if (fields.Contains(Field.DatItem_Part_Name))
+ {
+ if (Part == null)
+ Part = new Part();
+
+ Part.Name = newItem.Part?.Name;
+ }
+
+ if (fields.Contains(Field.DatItem_Part_Interface))
+ {
+ if (Part == null)
+ Part = new Part();
+
+ Part.Interface = newItem.Part?.Interface;
+ }
+
+ if (fields.Contains(Field.DatItem_Features))
+ {
+ if (Part == null)
+ Part = new Part();
+
+ Part.Features = newItem.Part?.Features;
+ }
+
+ #endregion
}
#endregion
diff --git a/SabreTools.Library/DatItems/Display.cs b/SabreTools.Library/DatItems/Display.cs
index c4ade817..57c9d623 100644
--- a/SabreTools.Library/DatItems/Display.cs
+++ b/SabreTools.Library/DatItems/Display.cs
@@ -187,7 +187,6 @@ namespace SabreTools.Library.DatItems
Remark = this.Remark,
Boot = this.Boot,
- Part = this.Part,
Value = this.Value,
LoadFlag = this.LoadFlag,
diff --git a/SabreTools.Library/DatItems/Driver.cs b/SabreTools.Library/DatItems/Driver.cs
index b9fd39cd..cae88abf 100644
--- a/SabreTools.Library/DatItems/Driver.cs
+++ b/SabreTools.Library/DatItems/Driver.cs
@@ -103,7 +103,6 @@ namespace SabreTools.Library.DatItems
Remark = this.Remark,
Boot = this.Boot,
- Part = this.Part,
Value = this.Value,
LoadFlag = this.LoadFlag,
diff --git a/SabreTools.Library/DatItems/Extension.cs b/SabreTools.Library/DatItems/Extension.cs
index 781162f5..b51647bb 100644
--- a/SabreTools.Library/DatItems/Extension.cs
+++ b/SabreTools.Library/DatItems/Extension.cs
@@ -83,7 +83,6 @@ namespace SabreTools.Library.DatItems
Remark = this.Remark,
Boot = this.Boot,
- Part = this.Part,
Value = this.Value,
LoadFlag = this.LoadFlag,
diff --git a/SabreTools.Library/DatItems/Feature.cs b/SabreTools.Library/DatItems/Feature.cs
index da1e669d..fe251126 100644
--- a/SabreTools.Library/DatItems/Feature.cs
+++ b/SabreTools.Library/DatItems/Feature.cs
@@ -93,7 +93,6 @@ namespace SabreTools.Library.DatItems
Remark = this.Remark,
Boot = this.Boot,
- Part = this.Part,
Value = this.Value,
LoadFlag = this.LoadFlag,
diff --git a/SabreTools.Library/DatItems/Info.cs b/SabreTools.Library/DatItems/Info.cs
index 996b10dc..257a278b 100644
--- a/SabreTools.Library/DatItems/Info.cs
+++ b/SabreTools.Library/DatItems/Info.cs
@@ -91,7 +91,6 @@ namespace SabreTools.Library.DatItems
Remark = this.Remark,
Boot = this.Boot,
- Part = this.Part,
Value = this.Value,
LoadFlag = this.LoadFlag,
diff --git a/SabreTools.Library/DatItems/Input.cs b/SabreTools.Library/DatItems/Input.cs
index 400a767e..f6262490 100644
--- a/SabreTools.Library/DatItems/Input.cs
+++ b/SabreTools.Library/DatItems/Input.cs
@@ -105,7 +105,6 @@ namespace SabreTools.Library.DatItems
Remark = this.Remark,
Boot = this.Boot,
- Part = this.Part,
Value = this.Value,
LoadFlag = this.LoadFlag,
diff --git a/SabreTools.Library/DatItems/Instance.cs b/SabreTools.Library/DatItems/Instance.cs
index ef0de7ca..ad46c981 100644
--- a/SabreTools.Library/DatItems/Instance.cs
+++ b/SabreTools.Library/DatItems/Instance.cs
@@ -92,7 +92,6 @@ namespace SabreTools.Library.DatItems
Remark = this.Remark,
Boot = this.Boot,
- Part = this.Part,
Value = this.Value,
LoadFlag = this.LoadFlag,
diff --git a/SabreTools.Library/DatItems/Location.cs b/SabreTools.Library/DatItems/Location.cs
index 024bf023..021147d4 100644
--- a/SabreTools.Library/DatItems/Location.cs
+++ b/SabreTools.Library/DatItems/Location.cs
@@ -100,7 +100,6 @@ namespace SabreTools.Library.DatItems
Remark = this.Remark,
Boot = this.Boot,
- Part = this.Part,
Value = this.Value,
LoadFlag = this.LoadFlag,
diff --git a/SabreTools.Library/DatItems/Media.cs b/SabreTools.Library/DatItems/Media.cs
index cf96aa19..3ef113c7 100644
--- a/SabreTools.Library/DatItems/Media.cs
+++ b/SabreTools.Library/DatItems/Media.cs
@@ -148,7 +148,6 @@ namespace SabreTools.Library.DatItems
Remark = this.Remark,
Boot = this.Boot,
- Part = this.Part,
Value = this.Value,
LoadFlag = this.LoadFlag,
@@ -183,7 +182,6 @@ namespace SabreTools.Library.DatItems
Remark = this.Remark,
Boot = this.Boot,
- Part = this.Part,
Value = this.Value,
LoadFlag = this.LoadFlag,
diff --git a/SabreTools.Library/DatItems/Port.cs b/SabreTools.Library/DatItems/Port.cs
index f3299831..008f03b2 100644
--- a/SabreTools.Library/DatItems/Port.cs
+++ b/SabreTools.Library/DatItems/Port.cs
@@ -80,7 +80,6 @@ namespace SabreTools.Library.DatItems
Remark = this.Remark,
Boot = this.Boot,
- Part = this.Part,
Value = this.Value,
LoadFlag = this.LoadFlag,
diff --git a/SabreTools.Library/DatItems/RamOption.cs b/SabreTools.Library/DatItems/RamOption.cs
index 89a85c3d..c89529ec 100644
--- a/SabreTools.Library/DatItems/RamOption.cs
+++ b/SabreTools.Library/DatItems/RamOption.cs
@@ -101,7 +101,6 @@ namespace SabreTools.Library.DatItems
Remark = this.Remark,
Boot = this.Boot,
- Part = this.Part,
Value = this.Value,
LoadFlag = this.LoadFlag,
diff --git a/SabreTools.Library/DatItems/Release.cs b/SabreTools.Library/DatItems/Release.cs
index d8033461..3518e254 100644
--- a/SabreTools.Library/DatItems/Release.cs
+++ b/SabreTools.Library/DatItems/Release.cs
@@ -123,7 +123,6 @@ namespace SabreTools.Library.DatItems
Remark = this.Remark,
Boot = this.Boot,
- Part = this.Part,
Value = this.Value,
LoadFlag = this.LoadFlag,
diff --git a/SabreTools.Library/DatItems/Rom.cs b/SabreTools.Library/DatItems/Rom.cs
index 0e18de15..b8b617ea 100644
--- a/SabreTools.Library/DatItems/Rom.cs
+++ b/SabreTools.Library/DatItems/Rom.cs
@@ -179,6 +179,12 @@ namespace SabreTools.Library.DatItems
[JsonProperty("dataarea", DefaultValueHandling = DefaultValueHandling.Ignore)]
public DataArea DataArea { get; set; }
+ ///
+ /// Original hardware part associated with the item
+ ///
+ [JsonProperty("part", DefaultValueHandling = DefaultValueHandling.Ignore)]
+ public Part Part { get; set; }
+
#endregion
#endregion // Fields
@@ -374,7 +380,6 @@ namespace SabreTools.Library.DatItems
Remark = this.Remark,
Boot = this.Boot,
- Part = this.Part,
Value = this.Value,
LoadFlag = this.LoadFlag,
@@ -402,6 +407,7 @@ namespace SabreTools.Library.DatItems
Inverted = this.Inverted,
DataArea = this.DataArea,
+ Part = this.Part,
};
}
@@ -602,6 +608,8 @@ namespace SabreTools.Library.DatItems
if (!base.PassesFilter(filter))
return false;
+ #region Common
+
// Filter on item name
if (filter.DatItem_Name.MatchesPositiveSet(Name) == false)
return false;
@@ -704,6 +712,10 @@ namespace SabreTools.Library.DatItems
if (filter.DatItem_Inverted.MatchesNeutral(null, Inverted) == false)
return false;
+ #endregion
+
+ #region SoftwareList
+
// Filter on area name
if (filter.DatItem_AreaName.MatchesPositiveSet(DataArea?.Name) == false)
return false;
@@ -730,6 +742,20 @@ namespace SabreTools.Library.DatItems
if (filter.DatItem_AreaEndianness.MatchesNegativeSet(DataArea?.Endianness) == true)
return false;
+ // Filter on part name
+ if (filter.DatItem_Part_Name.MatchesPositiveSet(Part?.Name) == false)
+ return false;
+ if (filter.DatItem_Part_Name.MatchesNegativeSet(Part?.Name) == true)
+ return false;
+
+ // Filter on part interface
+ if (filter.DatItem_Part_Interface.MatchesPositiveSet(Part?.Interface) == false)
+ return false;
+ if (filter.DatItem_Part_Interface.MatchesNegativeSet(Part?.Interface) == true)
+ return false;
+
+ #endregion
+
return true;
}
@@ -743,6 +769,9 @@ namespace SabreTools.Library.DatItems
base.RemoveFields(fields);
// Remove the fields
+
+ #region Common
+
if (fields.Contains(Field.DatItem_Name))
Name = null;
@@ -796,6 +825,10 @@ namespace SabreTools.Library.DatItems
if (fields.Contains(Field.DatItem_Inverted))
Inverted = null;
+ #endregion
+
+ #region SoftwareList
+
if (fields.Contains(Field.DatItem_AreaName))
{
if (DataArea != null)
@@ -819,6 +852,17 @@ namespace SabreTools.Library.DatItems
if (DataArea != null)
DataArea.Endianness = null;
}
+
+ if (fields.Contains(Field.DatItem_Part_Name) && Part != null)
+ Part.Name = null;
+
+ if (fields.Contains(Field.DatItem_Part_Interface) && Part != null)
+ Part.Interface = null;
+
+ if (fields.Contains(Field.DatItem_Features) && Part != null)
+ Part.Features = null;
+
+ #endregion
}
///
@@ -910,6 +954,9 @@ namespace SabreTools.Library.DatItems
Rom newItem = item as Rom;
// Replace the fields
+
+ #region Common
+
if (fields.Contains(Field.DatItem_Name))
Name = newItem.Name;
@@ -984,6 +1031,10 @@ namespace SabreTools.Library.DatItems
if (fields.Contains(Field.DatItem_Inverted))
Inverted = newItem.Inverted;
+ #endregion
+
+ #region SoftwareList
+
if (fields.Contains(Field.DatItem_AreaName))
{
if (DataArea == null)
@@ -1015,6 +1066,32 @@ namespace SabreTools.Library.DatItems
DataArea.Endianness = newItem.DataArea?.Endianness;
}
+
+ if (fields.Contains(Field.DatItem_Part_Name))
+ {
+ if (Part == null)
+ Part = new Part();
+
+ Part.Name = newItem.Part?.Name;
+ }
+
+ if (fields.Contains(Field.DatItem_Part_Interface))
+ {
+ if (Part == null)
+ Part = new Part();
+
+ Part.Interface = newItem.Part?.Interface;
+ }
+
+ if (fields.Contains(Field.DatItem_Features))
+ {
+ if (Part == null)
+ Part = new Part();
+
+ Part.Features = newItem.Part?.Features;
+ }
+
+ #endregion
}
#endregion
diff --git a/SabreTools.Library/DatItems/Sample.cs b/SabreTools.Library/DatItems/Sample.cs
index 590bacc8..80c59d55 100644
--- a/SabreTools.Library/DatItems/Sample.cs
+++ b/SabreTools.Library/DatItems/Sample.cs
@@ -83,7 +83,6 @@ namespace SabreTools.Library.DatItems
Remark = this.Remark,
Boot = this.Boot,
- Part = this.Part,
Value = this.Value,
LoadFlag = this.LoadFlag,
diff --git a/SabreTools.Library/DatItems/Setting.cs b/SabreTools.Library/DatItems/Setting.cs
index f1604dc0..bcbd931a 100644
--- a/SabreTools.Library/DatItems/Setting.cs
+++ b/SabreTools.Library/DatItems/Setting.cs
@@ -115,7 +115,6 @@ namespace SabreTools.Library.DatItems
Remark = this.Remark,
Boot = this.Boot,
- Part = this.Part,
Value = this.Value,
LoadFlag = this.LoadFlag,
diff --git a/SabreTools.Library/DatItems/SharedFeature.cs b/SabreTools.Library/DatItems/SharedFeature.cs
index 73f050f5..f96bfd6f 100644
--- a/SabreTools.Library/DatItems/SharedFeature.cs
+++ b/SabreTools.Library/DatItems/SharedFeature.cs
@@ -91,7 +91,6 @@ namespace SabreTools.Library.DatItems
Remark = this.Remark,
Boot = this.Boot,
- Part = this.Part,
Value = this.Value,
LoadFlag = this.LoadFlag,
diff --git a/SabreTools.Library/DatItems/Slot.cs b/SabreTools.Library/DatItems/Slot.cs
index 43260024..0b078246 100644
--- a/SabreTools.Library/DatItems/Slot.cs
+++ b/SabreTools.Library/DatItems/Slot.cs
@@ -91,7 +91,6 @@ namespace SabreTools.Library.DatItems
Remark = this.Remark,
Boot = this.Boot,
- Part = this.Part,
Value = this.Value,
LoadFlag = this.LoadFlag,
diff --git a/SabreTools.Library/DatItems/SlotOption.cs b/SabreTools.Library/DatItems/SlotOption.cs
index 73a68a2c..2587de61 100644
--- a/SabreTools.Library/DatItems/SlotOption.cs
+++ b/SabreTools.Library/DatItems/SlotOption.cs
@@ -100,7 +100,6 @@ namespace SabreTools.Library.DatItems
Remark = this.Remark,
Boot = this.Boot,
- Part = this.Part,
Value = this.Value,
LoadFlag = this.LoadFlag,
diff --git a/SabreTools.Library/DatItems/SoftwareList.cs b/SabreTools.Library/DatItems/SoftwareList.cs
index c731068a..5fbb7985 100644
--- a/SabreTools.Library/DatItems/SoftwareList.cs
+++ b/SabreTools.Library/DatItems/SoftwareList.cs
@@ -103,7 +103,6 @@ namespace SabreTools.Library.DatItems
Remark = this.Remark,
Boot = this.Boot,
- Part = this.Part,
Value = this.Value,
LoadFlag = this.LoadFlag,
diff --git a/SabreTools.Library/DatItems/Sound.cs b/SabreTools.Library/DatItems/Sound.cs
index 12187c63..1af078c1 100644
--- a/SabreTools.Library/DatItems/Sound.cs
+++ b/SabreTools.Library/DatItems/Sound.cs
@@ -70,7 +70,6 @@ namespace SabreTools.Library.DatItems
Remark = this.Remark,
Boot = this.Boot,
- Part = this.Part,
Value = this.Value,
LoadFlag = this.LoadFlag,