/* Check the a register can be added to the chart */ private bool InputValidation(RegisterEntry entry) { if (entry.GetName()[0] >= '0' && entry.GetName()[0] <= '9') { MessageBox.Show("Register name can't begin with a digit"); return(false); } if (entry.GetRegType() != RegisterEntry.type_field.FIELD) { int index = -1; for (int i = 0; i < RegList.Count; i++) { if (RegList[i].GetName().Equals(entry.GetName())) { index = i; } } if (index != -1) { MessageBox.Show("Register " + entry.GetName() + " (" + RegList[index].GetAddress() + ") is already in the list"); return(false); } int addr = FindAddress(); if (addr == -1) { MessageBox.Show("Unable to add register " + entry.GetName() + ", no free slot in memory"); return(false); } entry.SetAddress(addr); } else { if (RegList.Count == 0) { MessageBox.Show("There are no registers in the list"); return(false); } int addr = -1, index = -1; RegisterEntry item; using (ChooseAddressPrompt prompt = new ChooseAddressPrompt(RegList.ToArray())) { if (prompt.ShowDialog() == DialogResult.OK) { addr = prompt.Chosen_address; index = prompt.Index; item = RegList[prompt.Index]; } else { return(false); } } List <RegisterEntry> fields = item.GetFields(); foreach (RegisterEntry field in fields) { if (field.GetName().Equals(entry.GetName())) { MessageBox.Show("Field " + entry.GetName() + " (" + item.GetAddress() + ") is already in the list of " + item.GetName()); return(false); } } entry.SetAddress(addr); entry.SetIndex(index); } if (!entry.IsValidLsbMsb()) { MessageBox.Show("Can't insert register " + entry.GetName() + " with LSB greater than MSB"); return(false); } return(true); }