diff --git a/SabreTools.Library/DatFiles/Listxml.cs b/SabreTools.Library/DatFiles/Listxml.cs index 75468f09..ce133632 100644 --- a/SabreTools.Library/DatFiles/Listxml.cs +++ b/SabreTools.Library/DatFiles/Listxml.cs @@ -218,6 +218,26 @@ namespace SabreTools.Library.DatFiles reader.Read(); break; + case "configuration": + var configuration = new Configuration + { + Name = reader.GetAttribute("name"), + Tag = reader.GetAttribute("tag"), + Mask = reader.GetAttribute("mask"), + Conditions = new List(), + Locations = new List(), + Settings = new List(), + }; + + // Now read the internal tags + ReadConfiguration(reader.ReadSubtree(), configuration); + + datItems.Add(configuration); + + // Skip the configuration now that we've processed it + reader.Skip(); + break; + case "device_ref": datItems.Add(new DeviceReference { @@ -410,25 +430,6 @@ namespace SabreTools.Library.DatFiles reader.Skip(); break; - case "configuration": - var configuration = new ListXmlConfiguration(); - configuration.Name = reader.GetAttribute("name"); - configuration.Tag = reader.GetAttribute("tag"); - configuration.Mask = reader.GetAttribute("mask"); - - // Now read the internal tags - ReadConfiguration(reader.ReadSubtree(), configuration); - - // Ensure the list exists - if (machine.Configurations == null) - machine.Configurations = new List(); - - machine.Configurations.Add(configuration); - - // Skip the configuration now that we've processed it - reader.Skip(); - break; - case "port": var port = new ListXmlPort(); port.Tag = reader.GetAttribute("tag"); @@ -781,8 +782,8 @@ namespace SabreTools.Library.DatFiles /// Read Configuration information /// /// XmlReader representing a diskarea block - /// ListXmlConfiguration to populate - private void ReadConfiguration(XmlReader reader, ListXmlConfiguration configuration) + /// Configuration to populate + private void ReadConfiguration(XmlReader reader, Configuration configuration) { // If we have an empty configuration, skip it if (reader == null) @@ -1362,64 +1363,6 @@ namespace SabreTools.Library.DatFiles xtw.WriteEndElement(); } } - if (datItem.Machine.Configurations != null) - { - foreach (var configuration in datItem.Machine.Configurations) - { - xtw.WriteStartElement("configuration"); - - xtw.WriteOptionalAttributeString("name", configuration.Name); - xtw.WriteOptionalAttributeString("tag", configuration.Tag); - xtw.WriteOptionalAttributeString("mask", configuration.Mask); - - if (configuration.Conditions != null) - { - foreach (var condition in configuration.Conditions) - { - xtw.WriteStartElement("condition"); - - xtw.WriteOptionalAttributeString("tag", condition.Tag); - xtw.WriteOptionalAttributeString("mask", condition.Mask); - xtw.WriteOptionalAttributeString("relation", condition.Relation); - xtw.WriteOptionalAttributeString("value", condition.Value); - - // End condition - xtw.WriteEndElement(); - } - } - if (configuration.Locations != null) - { - foreach (var location in configuration.Locations) - { - xtw.WriteStartElement("conflocation"); - - xtw.WriteOptionalAttributeString("name", location.Name); - xtw.WriteOptionalAttributeString("number", location.Number); - xtw.WriteOptionalAttributeString("inverted", location.Inverted.FromYesNo()); - - // End conflocation - xtw.WriteEndElement(); - } - } - if (configuration.Settings != null) - { - foreach (var setting in configuration.Settings) - { - xtw.WriteStartElement("confsetting"); - - xtw.WriteOptionalAttributeString("name", setting.Name); - xtw.WriteOptionalAttributeString("value", setting.Value); - xtw.WriteOptionalAttributeString("default", setting.Default.FromYesNo()); - - // End confsetting - xtw.WriteEndElement(); - } - } - - // End configuration - xtw.WriteEndElement(); - } - } if (datItem.Machine.Ports != null) { foreach (var port in datItem.Machine.Ports) @@ -1633,6 +1576,50 @@ namespace SabreTools.Library.DatFiles xtw.WriteEndElement(); break; + case ItemType.Configuration: + var configuration = datItem as Configuration; + xtw.WriteStartElement("configuration"); + xtw.WriteOptionalAttributeString("name", configuration.Name); + xtw.WriteOptionalAttributeString("tag", configuration.Tag); + xtw.WriteOptionalAttributeString("mask", configuration.Mask); + + if (configuration.Conditions != null) + { + foreach (var condition in configuration.Conditions) + { + xtw.WriteStartElement("condition"); + xtw.WriteOptionalAttributeString("tag", condition.Tag); + xtw.WriteOptionalAttributeString("mask", condition.Mask); + xtw.WriteOptionalAttributeString("relation", condition.Relation); + xtw.WriteOptionalAttributeString("value", condition.Value); + xtw.WriteEndElement(); + } + } + if (configuration.Locations != null) + { + foreach (var location in configuration.Locations) + { + xtw.WriteStartElement("conflocation"); + xtw.WriteOptionalAttributeString("name", location.Name); + xtw.WriteOptionalAttributeString("number", location.Number); + xtw.WriteOptionalAttributeString("inverted", location.Inverted.FromYesNo()); + xtw.WriteEndElement(); + } + } + if (configuration.Settings != null) + { + foreach (var setting in configuration.Settings) + { + xtw.WriteStartElement("confsetting"); + xtw.WriteOptionalAttributeString("name", setting.Name); + xtw.WriteOptionalAttributeString("value", setting.Value); + xtw.WriteOptionalAttributeString("default", setting.Default.FromYesNo()); + xtw.WriteEndElement(); + } + } + xtw.WriteEndElement(); + break; + case ItemType.DeviceReference: xtw.WriteStartElement("device_ref"); xtw.WriteRequiredAttributeString("name", datItem.Name); diff --git a/SabreTools.Library/DatItems/Adjuster.cs b/SabreTools.Library/DatItems/Adjuster.cs index 19ed3d0d..ddc899ab 100644 --- a/SabreTools.Library/DatItems/Adjuster.cs +++ b/SabreTools.Library/DatItems/Adjuster.cs @@ -105,7 +105,7 @@ namespace SabreTools.Library.DatItems public override bool Equals(DatItem other) { - // If we don't have a BiosSet, return false + // If we don't have a Adjuster, return false if (ItemType != other.ItemType) return false; diff --git a/SabreTools.Library/DatItems/Auxiliary.cs b/SabreTools.Library/DatItems/Auxiliary.cs index a28bd8d6..a57e7f17 100644 --- a/SabreTools.Library/DatItems/Auxiliary.cs +++ b/SabreTools.Library/DatItems/Auxiliary.cs @@ -41,32 +41,6 @@ namespace SabreTools.Library.DatItems public string Value { get; set; } } - /// - /// Represents one ListXML configuration - /// - /// TODO: Promote to DatItem level (contains lists) - [JsonObject("configuration")] - public class ListXmlConfiguration - { - [JsonProperty("name")] - public string Name { get; set; } - - [JsonProperty("tag")] - public string Tag { get; set; } - - [JsonProperty("mask")] - public string Mask { get; set; } - - [JsonProperty("conditions")] - public List Conditions { get; set; } - - [JsonProperty("locations")] - public List Locations { get; set; } - - [JsonProperty("settings")] - public List Settings { get; set; } - } - /// /// Represents one ListXML conflocation /// diff --git a/SabreTools.Library/DatItems/Configuration.cs b/SabreTools.Library/DatItems/Configuration.cs new file mode 100644 index 00000000..b0dbb939 --- /dev/null +++ b/SabreTools.Library/DatItems/Configuration.cs @@ -0,0 +1,256 @@ +using System.Collections.Generic; +using System.Linq; + +using SabreTools.Library.Filtering; +using Newtonsoft.Json; + +namespace SabreTools.Library.DatItems +{ + /// + /// Represents which Configuration(s) is associated with a set + /// + [JsonObject("configuration")] + public class Configuration : DatItem + { + #region Fields + + /// + /// Tag associated with the configuration + /// + [JsonProperty("tag", DefaultValueHandling = DefaultValueHandling.Ignore)] + public string Tag { get; set; } + + /// + /// Mask associated with the configuration + /// + [JsonProperty("mask", DefaultValueHandling = DefaultValueHandling.Ignore)] + public string Mask { get; set; } + + /// + /// Conditions associated with the configuration + /// + [JsonProperty("conditions")] + public List Conditions { get; set; } + + /// + /// Locations associated with the configuration + /// + [JsonProperty("locations")] + public List Locations { get; set; } + + /// + /// Settings associated with the configuration + /// + [JsonProperty("settings")] + public List Settings { get; set; } + + #endregion + + #region Accessors + + /// + /// Set fields with given values + /// + /// Mappings dictionary + public override void SetFields(Dictionary mappings) + { + // Set base fields + base.SetFields(mappings); + + // Handle Configuration-specific fields + if (mappings.Keys.Contains(Field.DatItem_Tag)) + Tag = mappings[Field.DatItem_Tag]; + + if (mappings.Keys.Contains(Field.DatItem_Mask)) + Mask = mappings[Field.DatItem_Mask]; + + // TODO: Handle DatItem_Condition* + // TODO: Handle DatItem_Location* + // TODO: Handle DatItem_Setting* + } + + #endregion + + #region Constructors + + /// + /// Create a default, empty Configuration object + /// + public Configuration() + { + Name = string.Empty; + ItemType = ItemType.Configuration; + } + + #endregion + + #region Cloning Methods + + public override object Clone() + { + return new Configuration() + { + Name = this.Name, + ItemType = this.ItemType, + DupeType = this.DupeType, + + AltName = this.AltName, + AltTitle = this.AltTitle, + + Original = this.Original, + OpenMSXSubType = this.OpenMSXSubType, + OpenMSXType = this.OpenMSXType, + Remark = this.Remark, + Boot = this.Boot, + + Part = this.Part, + Features = this.Features, + AreaName = this.AreaName, + AreaSize = this.AreaSize, + AreaWidth = this.AreaWidth, + AreaEndianness = this.AreaEndianness, + Value = this.Value, + LoadFlag = this.LoadFlag, + + Machine = this.Machine.Clone() as Machine, + Source = this.Source.Clone() as Source, + Remove = this.Remove, + + Tag = this.Tag, + Mask = this.Mask, + Conditions = this.Conditions, + Locations = this.Locations, + Settings = this.Settings, + }; + } + + #endregion + + #region Comparision Methods + + public override bool Equals(DatItem other) + { + // If we don't have a Configuration, return false + if (ItemType != other.ItemType) + return false; + + // Otherwise, treat it as a Configuration + Configuration newOther = other as Configuration; + + // If the Adjuster information matches + return (Name == newOther.Name && Tag == newOther.Tag && Mask == newOther.Mask); + + // TODO: Handle DatItem_Condition* + // TODO: Handle DatItem_Location* + // TODO: Handle DatItem_Setting* + } + + #endregion + + #region Filtering + + /// + /// Check to see if a DatItem passes the filter + /// + /// Filter to check against + /// True if the item passed the filter, false otherwise + public override bool PassesFilter(Filter filter) + { + // Check common fields first + if (!base.PassesFilter(filter)) + return false; + + // Filter on tag + if (filter.DatItem_Tag.MatchesPositiveSet(Tag) == false) + return false; + if (filter.DatItem_Tag.MatchesNegativeSet(Tag) == true) + return false; + + // Filter on mask + if (filter.DatItem_Mask.MatchesPositiveSet(Mask) == false) + return false; + if (filter.DatItem_Mask.MatchesNegativeSet(Mask) == true) + return false; + + // TODO: Handle DatItem_Condition* + // TODO: Handle DatItem_Location* + // TODO: Handle DatItem_Setting* + + return true; + } + + /// + /// Remove fields from the DatItem + /// + /// List of Fields to remove + public override void RemoveFields(List fields) + { + // Remove common fields first + base.RemoveFields(fields); + + // Remove the fields + if (fields.Contains(Field.DatItem_Tag)) + Tag = null; + + if (fields.Contains(Field.DatItem_Mask)) + Mask = null; + + if (fields.Contains(Field.DatItem_Conditions)) + Conditions = null; + + if (fields.Contains(Field.DatItem_Locations)) + Locations = null; + + if (fields.Contains(Field.DatItem_Settings)) + Settings = null; + + // TODO: Handle DatItem_Condition* + // TODO: Handle DatItem_Location* + // TODO: Handle DatItem_Setting* + } + + #endregion + + #region Sorting and Merging + + /// + /// Replace fields from another item + /// + /// DatItem to pull new information from + /// List of Fields representing what should be updated + public override void ReplaceFields(DatItem item, List fields) + { + // Replace common fields first + base.ReplaceFields(item, fields); + + // If we don't have a Configuration to replace from, ignore specific fields + if (item.ItemType != ItemType.Configuration) + return; + + // Cast for easier access + Configuration newItem = item as Configuration; + + // Replace the fields + if (fields.Contains(Field.DatItem_Tag)) + Tag = newItem.Tag; + + if (fields.Contains(Field.DatItem_Mask)) + Mask = newItem.Mask; + + if (fields.Contains(Field.DatItem_Conditions)) + Conditions = newItem.Conditions; + + if (fields.Contains(Field.DatItem_Locations)) + Locations = newItem.Locations; + + if (fields.Contains(Field.DatItem_Settings)) + Settings = newItem.Settings; + + // TODO: Handle DatItem_Condition* + // TODO: Handle DatItem_Location* + // TODO: Handle DatItem_Setting* + } + + #endregion + } +} diff --git a/SabreTools.Library/DatItems/Enums.cs b/SabreTools.Library/DatItems/Enums.cs index 181b9e1c..40421127 100644 --- a/SabreTools.Library/DatItems/Enums.cs +++ b/SabreTools.Library/DatItems/Enums.cs @@ -197,24 +197,6 @@ namespace SabreTools.Library.DatItems Machine_DipSwitch_Value_Value, Machine_DipSwitch_Value_Default, - // Configurations - Machine_Configurations, - Machine_Configuration_Name, - Machine_Configuration_Tag, - Machine_Configuration_Mask, - - // Configurations.Locations - Machine_Configuration_Locations, - Machine_Configuration_Location_Name, - Machine_Configuration_Location_Number, - Machine_Configuration_Location_Inverted, - - // Configurations.Settings - Machine_Configuration_Settings, - Machine_Configuration_Setting_Name, - Machine_Configuration_Setting_Value, - Machine_Configuration_Setting_Default, - // Ports Machine_Ports, Machine_Port_Tag, @@ -407,6 +389,21 @@ namespace SabreTools.Library.DatItems DatItem_ChipType, DatItem_Clock, + // Configuration + DatItem_Mask, + + // Configuration.Locations + DatItem_Locations, + DatItem_Location_Name, + DatItem_Location_Number, + DatItem_Location_Inverted, + + // Configuration.Settings + DatItem_Settings, + DatItem_Setting_Name, + DatItem_Setting_Value, + DatItem_Setting_Default, + // Ram Option DatItem_Content, @@ -457,6 +454,7 @@ namespace SabreTools.Library.DatItems Archive, BiosSet, Chip, + Configuration, DeviceReference, RamOption, Release, diff --git a/SabreTools.Library/DatItems/Machine.cs b/SabreTools.Library/DatItems/Machine.cs index 21da3b78..5f3493a6 100644 --- a/SabreTools.Library/DatItems/Machine.cs +++ b/SabreTools.Library/DatItems/Machine.cs @@ -184,12 +184,6 @@ namespace SabreTools.Library.DatItems [JsonProperty("dipswitches", DefaultValueHandling = DefaultValueHandling.Ignore)] public List DipSwitches { get; set; } = null; - /// - /// List of associated configurations - /// - [JsonProperty("configurations", DefaultValueHandling = DefaultValueHandling.Ignore)] - public List Configurations { get; set; } = null; - /// /// List of associated ports /// @@ -577,7 +571,6 @@ namespace SabreTools.Library.DatItems Conditions = this.Conditions, Inputs = this.Inputs, DipSwitches = this.DipSwitches, - Configurations = this.Configurations, Ports = this.Ports, Drivers = this.Drivers, Features = this.Features, diff --git a/SabreTools.Library/Filtering/Filter.cs b/SabreTools.Library/Filtering/Filter.cs index 124a7402..c60201f6 100644 --- a/SabreTools.Library/Filtering/Filter.cs +++ b/SabreTools.Library/Filtering/Filter.cs @@ -119,24 +119,6 @@ namespace SabreTools.Library.Filtering public FilterItem Machine_DipSwitch_Value_Value { get; private set; } = new FilterItem(); public FilterItem Machine_DipSwitch_Value_Default { get; private set; } = new FilterItem() { Neutral = null }; - // Configurations - public FilterItem Machine_Configurations { get; private set; } = new FilterItem() { Neutral = null }; - public FilterItem Machine_Configuration_Name { get; private set; } = new FilterItem(); - public FilterItem Machine_Configuration_Tag { get; private set; } = new FilterItem(); - public FilterItem Machine_Configuration_Mask { get; private set; } = new FilterItem(); - - // Configurations.Locations - public FilterItem Machine_Configuration_Locations { get; private set; } = new FilterItem() { Neutral = null }; - public FilterItem Machine_Configuration_Location_Name { get; private set; } = new FilterItem(); - public FilterItem Machine_Configuration_Location_Number { get; private set; } = new FilterItem(); - public FilterItem Machine_Configuration_Location_Inverted { get; private set; } = new FilterItem() { Neutral = null }; - - // Configurations.Settings - public FilterItem Machine_Configuration_Settings { get; private set; } = new FilterItem() { Neutral = null }; - public FilterItem Machine_Configuration_Setting_Name { get; private set; } = new FilterItem(); - public FilterItem Machine_Configuration_Setting_Value { get; private set; } = new FilterItem(); - public FilterItem Machine_Configuration_Setting_Default { get; private set; } = new FilterItem() { Neutral = null }; - // Ports public FilterItem Machine_Ports { get; private set; } = new FilterItem() { Neutral = null }; public FilterItem Machine_Port_Tag { get; private set; } = new FilterItem(); @@ -329,6 +311,21 @@ namespace SabreTools.Library.Filtering public FilterItem DatItem_ChipType { get; private set; } = new FilterItem(); public FilterItem DatItem_Clock { get; private set; } = new FilterItem(); + // Configuration + public FilterItem DatItem_Mask { get; private set; } = new FilterItem(); + + // Configuration.Locations + public FilterItem DatItem_Locations { get; private set; } = new FilterItem() { Neutral = null }; + public FilterItem DatItem_Location_Name { get; private set; } = new FilterItem(); + public FilterItem DatItem_Location_Number { get; private set; } = new FilterItem(); + public FilterItem DatItem_Location_Inverted { get; private set; } = new FilterItem() { Neutral = null }; + + // Configuration.Settings + public FilterItem DatItem_Settings { get; private set; } = new FilterItem() { Neutral = null }; + public FilterItem DatItem_Setting_Name { get; private set; } = new FilterItem(); + public FilterItem DatItem_Setting_Value { get; private set; } = new FilterItem(); + public FilterItem DatItem_Setting_Default { get; private set; } = new FilterItem() { Neutral = null }; + // Ram Option public FilterItem DatItem_Content { get; private set; } = new FilterItem(); @@ -938,93 +935,6 @@ namespace SabreTools.Library.Filtering Machine_DipSwitch_Value_Default.Neutral = true; break; - // Configurations - case Field.Machine_Configurations: - if (negate || value.Equals("false", StringComparison.OrdinalIgnoreCase)) - Machine_Configurations.Neutral = false; - else - Machine_Configurations.Neutral = true; - break; - - case Field.Machine_Configuration_Name: - if (negate) - Machine_Configuration_Name.NegativeSet.Add(value); - else - Machine_Configuration_Name.PositiveSet.Add(value); - break; - - case Field.Machine_Configuration_Tag: - if (negate) - Machine_Configuration_Tag.NegativeSet.Add(value); - else - Machine_Configuration_Tag.PositiveSet.Add(value); - break; - - case Field.Machine_Configuration_Mask: - if (negate) - Machine_Configuration_Mask.NegativeSet.Add(value); - else - Machine_Configuration_Mask.PositiveSet.Add(value); - break; - - // Configurations.Locations - case Field.Machine_Configuration_Locations: - if (negate || value.Equals("false", StringComparison.OrdinalIgnoreCase)) - Machine_Configuration_Locations.Neutral = false; - else - Machine_Configuration_Locations.Neutral = true; - break; - - case Field.Machine_Configuration_Location_Name: - if (negate) - Machine_Configuration_Location_Name.NegativeSet.Add(value); - else - Machine_Configuration_Location_Name.PositiveSet.Add(value); - break; - - case Field.Machine_Configuration_Location_Number: - if (negate) - Machine_Configuration_Location_Number.NegativeSet.Add(value); - else - Machine_Configuration_Location_Number.PositiveSet.Add(value); - break; - - case Field.Machine_Configuration_Location_Inverted: - if (negate || value.Equals("false", StringComparison.OrdinalIgnoreCase)) - Machine_Configuration_Location_Inverted.Neutral = false; - else - Machine_Configuration_Location_Inverted.Neutral = true; - break; - - // Configurations.Settings - case Field.Machine_Configuration_Settings: - if (negate || value.Equals("false", StringComparison.OrdinalIgnoreCase)) - Machine_Configuration_Settings.Neutral = false; - else - Machine_Configuration_Settings.Neutral = true; - break; - - case Field.Machine_Configuration_Setting_Name: - if (negate) - Machine_Configuration_Setting_Name.NegativeSet.Add(value); - else - Machine_Configuration_Setting_Name.PositiveSet.Add(value); - break; - - case Field.Machine_Configuration_Setting_Value: - if (negate) - Machine_Configuration_Setting_Value.NegativeSet.Add(value); - else - Machine_Configuration_Setting_Value.PositiveSet.Add(value); - break; - - case Field.Machine_Configuration_Setting_Default: - if (negate || value.Equals("false", StringComparison.OrdinalIgnoreCase)) - Machine_Configuration_Setting_Default.Neutral = false; - else - Machine_Configuration_Setting_Default.Neutral = true; - break; - // Ports case Field.Machine_Ports: if (negate || value.Equals("false", StringComparison.OrdinalIgnoreCase)) @@ -1884,6 +1794,72 @@ namespace SabreTools.Library.Filtering DatItem_Clock.PositiveSet.Add(value); break; + // Configuration + case Field.DatItem_Mask: + if (negate) + DatItem_Mask.NegativeSet.Add(value); + else + DatItem_Mask.PositiveSet.Add(value); + break; + + // Configurations.Locations + case Field.DatItem_Locations: + if (negate || value.Equals("false", StringComparison.OrdinalIgnoreCase)) + DatItem_Locations.Neutral = false; + else + DatItem_Locations.Neutral = true; + break; + + case Field.DatItem_Location_Name: + if (negate) + DatItem_Location_Name.NegativeSet.Add(value); + else + DatItem_Location_Name.PositiveSet.Add(value); + break; + + case Field.DatItem_Location_Number: + if (negate) + DatItem_Location_Number.NegativeSet.Add(value); + else + DatItem_Location_Number.PositiveSet.Add(value); + break; + + case Field.DatItem_Location_Inverted: + if (negate || value.Equals("false", StringComparison.OrdinalIgnoreCase)) + DatItem_Location_Inverted.Neutral = false; + else + DatItem_Location_Inverted.Neutral = true; + break; + + // Configurations.Settings + case Field.DatItem_Settings: + if (negate || value.Equals("false", StringComparison.OrdinalIgnoreCase)) + DatItem_Settings.Neutral = false; + else + DatItem_Settings.Neutral = true; + break; + + case Field.DatItem_Setting_Name: + if (negate) + DatItem_Setting_Name.NegativeSet.Add(value); + else + DatItem_Setting_Name.PositiveSet.Add(value); + break; + + case Field.DatItem_Setting_Value: + if (negate) + DatItem_Setting_Value.NegativeSet.Add(value); + else + DatItem_Setting_Value.PositiveSet.Add(value); + break; + + case Field.DatItem_Setting_Default: + if (negate || value.Equals("false", StringComparison.OrdinalIgnoreCase)) + DatItem_Setting_Default.Neutral = false; + else + DatItem_Setting_Default.Neutral = true; + break; + // Ram Option case Field.DatItem_Content: if (negate) diff --git a/SabreTools.Library/Tools/Converters.cs b/SabreTools.Library/Tools/Converters.cs index 2171d951..c9d97180 100644 --- a/SabreTools.Library/Tools/Converters.cs +++ b/SabreTools.Library/Tools/Converters.cs @@ -612,42 +612,6 @@ namespace SabreTools.Library.Tools case "dipswitch_value_default": return Field.Machine_DipSwitch_Value_Default; - case "configurations": - return Field.Machine_Configurations; - - case "configuration_name": - return Field.Machine_Configuration_Name; - - case "configuration_tag": - return Field.Machine_Configuration_Tag; - - case "configuration_mask": - return Field.Machine_Configuration_Mask; - - case "configuration_locations": - return Field.Machine_Configuration_Locations; - - case "configuration_location_name": - return Field.Machine_Configuration_Location_Name; - - case "configuration_location_number": - return Field.Machine_Configuration_Location_Number; - - case "configuration_location_inverted": - return Field.Machine_Configuration_Location_Inverted; - - case "configuration_settings": - return Field.Machine_Configuration_Settings; - - case "configuration_setting_name": - return Field.Machine_Configuration_Setting_Name; - - case "configuration_setting_value": - return Field.Machine_Configuration_Setting_Value; - - case "configuration_setting_default": - return Field.Machine_Configuration_Setting_Default; - case "ports": return Field.Machine_Ports; @@ -1070,6 +1034,34 @@ namespace SabreTools.Library.Tools case "clock": return Field.DatItem_Clock; + // Configuration + case "mask": + return Field.DatItem_Mask; + + case "locations": + return Field.DatItem_Locations; + + case "location_name": + return Field.DatItem_Location_Name; + + case "location_number": + return Field.DatItem_Location_Number; + + case "location_inverted": + return Field.DatItem_Location_Inverted; + + case "settings": + return Field.DatItem_Settings; + + case "setting_name": + return Field.DatItem_Setting_Name; + + case "setting_value": + return Field.DatItem_Setting_Value; + + case "setting_default": + return Field.DatItem_Setting_Default; + // Ram Option case "content": return Field.DatItem_Content;