summaryrefslogtreecommitdiffstats
path: root/src/devices/pic
diff options
context:
space:
mode:
Diffstat (limited to 'src/devices/pic')
-rw-r--r--src/devices/pic/base/pic_protection.cpp40
-rw-r--r--src/devices/pic/gui/pic_config_editor.cpp4
-rw-r--r--src/devices/pic/gui/pic_config_word_editor.cpp6
-rw-r--r--src/devices/pic/pic/pic_memory.cpp34
-rw-r--r--src/devices/pic/xml/pic_xml_to_data.cpp254
5 files changed, 169 insertions, 169 deletions
diff --git a/src/devices/pic/base/pic_protection.cpp b/src/devices/pic/base/pic_protection.cpp
index 8fac920..3e8f4c9 100644
--- a/src/devices/pic/base/pic_protection.cpp
+++ b/src/devices/pic/base/pic_protection.cpp
@@ -123,7 +123,7 @@ bool Pic::Protection::extractRanges(const TQString &name, TQValueVector<Address>
bool ok1;
end = fromHex(regexp.cap(regexp.numCaptures()), &ok1);
if ( !ok1 ) {
- qDebug("Malformed end address");
+ tqDebug("Malformed end address");
return true;
}
starts.clear();
@@ -133,11 +133,11 @@ bool Pic::Protection::extractRanges(const TQString &name, TQValueVector<Address>
TQString s = (i==1 ? regexp.cap(i) : regexp.cap(i).mid(1));
Address start = fromHex(s, &ok1);
if ( !ok1 ) {
- qDebug("Malformed start address %s", s.latin1());
+ tqDebug("Malformed start address %s", s.latin1());
return true;
}
if ( start>=end && (starts.count()==0 || starts[starts.count()-1]<start) ) {
- qDebug("Start addresses should be ordered");
+ tqDebug("Start addresses should be ordered");
return true;
}
starts.append(start);
@@ -188,7 +188,7 @@ bool Pic::Protection::checkRange(const TQString &mask, const TQString &name) con
if ( ptype!=Nb_Types ) break;
}
if ( ptype==Nb_Types ) {
- qDebug("Unknown protected memory range");
+ tqDebug("Unknown protected memory range");
return false;
}
// #### TODO
@@ -198,13 +198,13 @@ bool Pic::Protection::checkRange(const TQString &mask, const TQString &name) con
Pic::Protection::ProtectedRange Pic::Protection::extractRange(const TQString &mask, const TQString &name, bool &ok) const
{
Q_ASSERT( family()!=CodeGuard );
- //qDebug("extract range %s %s", mask.latin1(), name.latin1());
+ //tqDebug("extract range %s %s", mask.latin1(), name.latin1());
ProtectedRange pr;
ok = false;
TQRegExp rexp("([A-Z]+)(?:_([0-9])|)");
if ( !rexp.exactMatch(mask) ) {
- qDebug("Malformed block range");
+ tqDebug("Malformed block range");
return pr;
}
@@ -221,7 +221,7 @@ Pic::Protection::ProtectedRange Pic::Protection::extractRange(const TQString &ma
ptype = Type(k);
if ( !rexp.cap(2).isEmpty() ) {
if ( isBootBlock || (rtype!=MemoryRangeType::Code && rtype!=MemoryRangeType::Eeprom) ) {
- qDebug("Multiple blocks only for code and eeprom");
+ tqDebug("Multiple blocks only for code and eeprom");
return pr;
}
}
@@ -230,7 +230,7 @@ Pic::Protection::ProtectedRange Pic::Protection::extractRange(const TQString &ma
if ( rtype!=MemoryRangeType::Nb_Types ) break;
}
if ( rtype==MemoryRangeType::Nb_Types ) {
- qDebug("Unknown protected memory range");
+ tqDebug("Unknown protected memory range");
return pr;
}
@@ -244,12 +244,12 @@ Pic::Protection::ProtectedRange Pic::Protection::extractRange(const TQString &ma
const MemoryRangeData &rdata = _data.range(rtype);
if ( isAllProtectedValueName(name) ) {
if ( rtype==MemoryRangeType::Code && !isBootBlock && bmask ) {
- qDebug("Protected range should be explicit with boot block");
+ tqDebug("Protected range should be explicit with boot block");
return pr;
}
if (isBootBlock) {
if ( bsmask==0 ) {
- qDebug("Protected range should be explicit when boot size not present");
+ tqDebug("Protected range should be explicit when boot size not present");
return pr;
}
Address start = _data.range(MemoryRangeType::Code).start;
@@ -258,11 +258,11 @@ Pic::Protection::ProtectedRange Pic::Protection::extractRange(const TQString &ma
bool ok1;
uint size = bsmask->values[k].name.toUInt(&ok1);
if ( !ok1 ) {
- qDebug("Could not recognize boot size value");
+ tqDebug("Could not recognize boot size value");
return pr;
}
if ( size==0 ) {
- qDebug("Boot size cannot be zero");
+ tqDebug("Boot size cannot be zero");
return pr;
}
Address end = 2 * size - 1; // instruction words
@@ -278,7 +278,7 @@ Pic::Protection::ProtectedRange Pic::Protection::extractRange(const TQString &ma
return pr;
}
if ( isBootBlock && bsmask ) {
- qDebug("Protected range should not be explicit when boot size is present");
+ tqDebug("Protected range should not be explicit when boot size is present");
return pr;
}
@@ -286,20 +286,20 @@ Pic::Protection::ProtectedRange Pic::Protection::extractRange(const TQString &ma
Address end;
bool ok1;
if ( !extractRanges(name, pr.starts, end, ok1) ) {
- qDebug("Could not recognized explicit range");
+ tqDebug("Could not recognized explicit range");
return pr;
}
if ( !ok1 ) return pr;
if ( end>rdata.end ) {
- qDebug("End is beyond memory range");
+ tqDebug("End is beyond memory range");
return pr;
}
if ( (rtype!=MemoryRangeType::Code || isBootBlock) && (pr.starts.count()>1 || !rexp.cap(2).isEmpty() || bmask==0) ) {
- qDebug("Only code with blocks and boot can have multiple protected ranges");
+ tqDebug("Only code with blocks and boot can have multiple protected ranges");
return pr;
}
if ( isBootBlock && pr.starts[0]!=0 ) {
- qDebug("Boot block start should be zero");
+ tqDebug("Boot block start should be zero");
return pr;
}
pr.ends.append(end);
@@ -307,7 +307,7 @@ Pic::Protection::ProtectedRange Pic::Protection::extractRange(const TQString &ma
// check with boot block
if ( pr.starts.count()>1 ) {
if ( bmask==0 ) {
- qDebug("No boot mask");
+ tqDebug("No boot mask");
return pr;
}
for (uint i=0; i<uint(bmask->values.count()); i++) {
@@ -316,12 +316,12 @@ Pic::Protection::ProtectedRange Pic::Protection::extractRange(const TQString &ma
ProtectedRange bpr = extractRange(bmask->name, bmask->values[i].name, ok1);
if ( !ok1 ) return pr;
if ( bpr.ends.count()!=pr.starts.count() ) {
- qDebug("Boot number of ends (%i) should be the same as code number of starts (%i)", int(bpr.ends.count()), int(pr.starts.count()));
+ tqDebug("Boot number of ends (%i) should be the same as code number of starts (%i)", int(bpr.ends.count()), int(pr.starts.count()));
return pr;
}
for (uint k=0; k<uint(bpr.ends.count()); k++) {
if ( bpr.ends[k]+1!=pr.starts[k] ) {
- qDebug("%i: End of boot block (%s) doesn't match start of code block (%s)", k, toHexLabelAbs(bpr.ends[k]).latin1(), toHexLabelAbs(pr.starts[k]).latin1());
+ tqDebug("%i: End of boot block (%s) doesn't match start of code block (%s)", k, toHexLabelAbs(bpr.ends[k]).latin1(), toHexLabelAbs(pr.starts[k]).latin1());
return pr;
}
}
diff --git a/src/devices/pic/gui/pic_config_editor.cpp b/src/devices/pic/gui/pic_config_editor.cpp
index 4b70c3d..230d65f 100644
--- a/src/devices/pic/gui/pic_config_editor.cpp
+++ b/src/devices/pic/gui/pic_config_editor.cpp
@@ -32,9 +32,9 @@ Pic::MemoryConfigEditorWidget::MemoryConfigEditorWidget(Memory &memory, bool wit
}
for(uint i=0; i<nbWords; ++i) {
- //qDebug("BinWordsEditor for config word #%i", i);
+ //tqDebug("BinWordsEditor for config word #%i", i);
//uint address = device().range(Device::MemoryConfig).start + device().addressIncrement(Device::MemoryConfig) * i;
- //qDebug("address: %s %s nb: %i", toHex(address, 8).data(), device().configWord(i).name.latin1(), device().configWord(i).masks.count());
+ //tqDebug("address: %s %s nb: %i", toHex(address, 8).data(), device().configWord(i).name.latin1(), device().configWord(i).masks.count());
if ( device().config()._words[i].masks.count()==0 ) continue;
TQWidget *page = 0;
if ( nbWords>1 ) {
diff --git a/src/devices/pic/gui/pic_config_word_editor.cpp b/src/devices/pic/gui/pic_config_word_editor.cpp
index 39430ca..0931076 100644
--- a/src/devices/pic/gui/pic_config_word_editor.cpp
+++ b/src/devices/pic/gui/pic_config_word_editor.cpp
@@ -156,14 +156,14 @@ void Pic::ConfigWordEditor::setReadOnly(bool readOnly)
void Pic::ConfigWordEditor::slotModified()
{
BitValue v = memory().word(MemoryRangeType::Config, _configIndex);
- //qDebug("BinWordEditor::slotModified %i: %s", _configIndex, toHex(v, 4).data());
+ //tqDebug("BinWordEditor::slotModified %i: %s", _configIndex, toHex(v, 4).data());
for (uint k=0; k<_combos.count(); k++) {
const Config::Mask &cmask = device().config()._words[_configIndex].masks[k];
v = v.clearMaskBits(cmask.value);
v |= cmask.values[_combos[k]->index()].value; // set value
}
memory().setWord(MemoryRangeType::Config, _configIndex, v);
- //qDebug(" now: %s", toHex(v, 4).data());
+ //tqDebug(" now: %s", toHex(v, 4).data());
if (_mdb) _mdb->updateDisplay();
emit modified();
}
@@ -172,7 +172,7 @@ void Pic::ConfigWordEditor::updateDisplay()
{
BitValue v = memory().word(MemoryRangeType::Config, _configIndex);
uint nbChars = device().nbCharsWord(MemoryRangeType::Config);
- //qDebug("BinWordEditor::updateDisplay %i: %s", _configIndex, toHex(v, 4).data());
+ //tqDebug("BinWordEditor::updateDisplay %i: %s", _configIndex, toHex(v, 4).data());
for (uint k=0; k<_combos.count(); k++) {
const Config::Mask &cmask = device().config()._words[_configIndex].masks[k];
for (int i=cmask.values.count()-1; i>=0; i--) {
diff --git a/src/devices/pic/pic/pic_memory.cpp b/src/devices/pic/pic/pic_memory.cpp
index 5ffb663..c7071be 100644
--- a/src/devices/pic/pic/pic_memory.cpp
+++ b/src/devices/pic/pic/pic_memory.cpp
@@ -85,7 +85,7 @@ BitValue Pic::Memory::normalizedWord(MemoryRangeType type, uint offset) const
void Pic::Memory::setWord(MemoryRangeType type, uint offset, BitValue value)
{
- if ( offset>=_ranges[type].size() ) qDebug("Memory::setWord: type=%s offset=%s size=%s value=%s", type.key(), toHexLabelAbs(offset).latin1(), toHexLabelAbs(_ranges[type].size()).latin1(), toHexLabelAbs(value).latin1());
+ if ( offset>=_ranges[type].size() ) tqDebug("Memory::setWord: type=%s offset=%s size=%s value=%s", type.key(), toHexLabelAbs(offset).latin1(), toHexLabelAbs(_ranges[type].size()).latin1(), toHexLabelAbs(value).latin1());
CRASH_ASSERT( offset<_ranges[type].size() );
_ranges[type][offset] = value;
}
@@ -204,7 +204,7 @@ AddressRangeVector Pic::Memory::protectedRanges(Protection::Type ptype, MemoryRa
if ( protection.family()!=Protection::CodeGuard ) {
TQString maskName = protection.maskName(ptype, type);
TQString value = findValue(maskName);
- //qDebug("%s %s", maskName.latin1(), value.latin1());
+ //tqDebug("%s %s", maskName.latin1(), value.latin1());
if ( !value.isEmpty() ) {
AddressRangeVector tmp = protection.extractRanges(value, type);
Q_ASSERT( tmp.count()==1 );
@@ -336,9 +336,9 @@ BitValue Pic::Memory::checksum() const
bool isProtected = !rv.isEmpty();
uint inc = device().addressIncrement(MemoryRangeType::Code);
//uint nbChars = device().nbCharsWord(MemoryRangeType::Code);
- //qDebug("protected: %i nb: %s (%s)", isProtected, toHexLabelAbs(inc*device().nbWords(MemoryRangeType::Code)).latin1(), toHexLabel(mask, nbChars).latin1());
+ //tqDebug("protected: %i nb: %s (%s)", isProtected, toHexLabelAbs(inc*device().nbWords(MemoryRangeType::Code)).latin1(), toHexLabel(mask, nbChars).latin1());
//for (uint i=0; i<rv.count(); i++)
- // qDebug("protected: %s:%s", toHex(rv[i].start, nbChars).latin1(), toHex(rv[i].end, nbChars).latin1());
+ // tqDebug("protected: %s:%s", toHex(rv[i].start, nbChars).latin1(), toHex(rv[i].end, nbChars).latin1());
if ( isProtected && (device().architecture()==Pic::Architecture::P18J || device().architecture()==Pic::Architecture::P24F) )
return 0x0000;
Checksum::Algorithm algorithm = Checksum::Algorithm::Normal;
@@ -353,12 +353,12 @@ BitValue Pic::Memory::checksum() const
cs = checksums[valueName].constant;
}
}
- //qDebug("constant: %s", toHexLabelAbs(cs).data());
- //qDebug("algo: %s", Checksum::ALGORITHM_DATA[algorithm].name);
+ //tqDebug("constant: %s", toHexLabelAbs(cs).data());
+ //tqDebug("algo: %s", Checksum::ALGORITHM_DATA[algorithm].name);
for (uint i=0; i<device().nbWords(MemoryRangeType::Code); i++) {
if ( algorithm==Checksum::Algorithm::Normal && rv.contains(inc*i) ) continue;
BitValue v = word(MemoryRangeType::Code, i).maskWith(mask);
- //if ( i==0 || i==device().nbWords(MemoryRangeType::Code)-1 ) qDebug("%s %s", toHexLabel(i, 4).latin1(), toHexLabel(v, 4).latin1());
+ //if ( i==0 || i==device().nbWords(MemoryRangeType::Code)-1 ) tqDebug("%s %s", toHexLabel(i, 4).latin1(), toHexLabel(v, 4).latin1());
switch (device().architecture().type()) {
case Architecture::P10X:
case Architecture::P16X:
@@ -387,19 +387,19 @@ BitValue Pic::Memory::checksum() const
case Architecture::Nb_Types: Q_ASSERT(false); break;
}
}
- //qDebug("after code: %s", toHexLabelAbs(cs).latin1());
+ //tqDebug("after code: %s", toHexLabelAbs(cs).latin1());
// config
const Config &config = device().config();
for (uint i=0; i<uint(config._words.count()); i++) {
const Config::Word &cword = config._words[i];
BitValue v = word(MemoryRangeType::Config, i).maskWith(cword.cmask);
//uint nbChars = device().nbCharsWord(MemoryRangeType::Config);
- // qDebug("%i: %s %s", i, toHex(word(MemoryRangeType::Config, i), nbChars).latin1(), toHex(cword.cmask, nbChars).latin1());
+ // tqDebug("%i: %s %s", i, toHex(word(MemoryRangeType::Config, i), nbChars).latin1(), toHex(cword.cmask, nbChars).latin1());
if ( ( device().name()=="16C61" || device().name()=="16C71" ) && isProtected ) cs += v | 0x0060;
else if ( device().is16bitFamily() ) cs += v.byte(0) + v.byte(1);
else cs += v;
}
- //qDebug("after config: %s", toHexLabelAbs(cs).latin1());
+ //tqDebug("after config: %s", toHexLabelAbs(cs).latin1());
// user ids
if ( isProtected && device().isPresent(MemoryRangeType::UserId) && !device().is16bitFamily() && algorithm==Checksum::Algorithm::Normal ) {
BitValue id = 0x0;
@@ -408,14 +408,14 @@ BitValue Pic::Memory::checksum() const
BitValue v = word(MemoryRangeType::UserId, nb-i-1).maskWith(0xF);
if ( device().is18Family() ) id += v;
else {
- // qDebug("id %i (%i): %s %s", i, nbb, toHex(v, 4).latin1(), toHex(v << (nbb*i), 9).latin1());
+ // tqDebug("id %i (%i): %s %s", i, nbb, toHex(v, 4).latin1(), toHex(v << (nbb*i), 9).latin1());
id += v << (4*i);
}
}
- //qDebug("id %s", toHexLabelAbs(id).latin1());
+ //tqDebug("id %s", toHexLabelAbs(id).latin1());
cs += id;
}
- //qDebug("checksum: %s %s", toHexLabelAbs(cs).latin1(), toHex(cs & 0xFFFF, 4).latin1());
+ //tqDebug("checksum: %s %s", toHexLabelAbs(cs).latin1(), toHex(cs & 0xFFFF, 4).latin1());
return cs.maskWith(0xFFFF);
}
@@ -471,11 +471,11 @@ void Pic::Memory::toHexBuffer(MemoryRangeType type, HexBuffer &hb) const
uint byte = 0;
uint wOffset = 0;
uint wByte = 0;
- //qDebug("%s wnb=%i snb=%i div=%i", MEMORY_RANGE_TYPE_DATA[type].label, wNbBytes, sNbBytes, div);
+ //tqDebug("%s wnb=%i snb=%i div=%i", MEMORY_RANGE_TYPE_DATA[type].label, wNbBytes, sNbBytes, div);
for (uint k=0; k<wNbBytes*device().nbWords(type); k++) {
// set byte
BitValue s = _ranges[type][wOffset].maskWith(mask);
- //if ( k<4 ) qDebug("s=%s so=%s sb=%i wo=%i wb=%i", toHex(s, 8).data(), toHex(sOffset, 8).data(), sByte, wOffset, wByte);
+ //if ( k<4 ) tqDebug("s=%s so=%s sb=%i wo=%i wb=%i", toHex(s, 8).data(), toHex(sOffset, 8).data(), sByte, wOffset, wByte);
s = s.byte(wByte);
if ( (byte%2)==0 ) hb.insert(offset, s);
else hb.insert(offset, hb[offset] | (s << ((byte%2)*8)));
@@ -517,11 +517,11 @@ void Pic::Memory::fromHexBuffer(MemoryRangeType type, const HexBuffer &hb, Warni
uint byte = 0;
uint wOffset = 0;
uint wByte = 0;
- //qDebug("%s wnb=%i snb=%i", MEMORY_RANGE_TYPE_DATA[type].label, wNbBytes, nbBytes);
+ //tqDebug("%s wnb=%i snb=%i", MEMORY_RANGE_TYPE_DATA[type].label, wNbBytes, nbBytes);
for (uint k=0; k<wNbBytes*device().nbWords(type); k++) {
// set byte
BitValue s = hb[offset];
- //if ( k<4 ) qDebug("s=%s so=%s sb=%i wo=%i wb=%i", toHex(s, 8).data(), toHex(offset, 8).data(), byte, wOffset, wByte);
+ //if ( k<4 ) tqDebug("s=%s so=%s sb=%i wo=%i wb=%i", toHex(s, 8).data(), toHex(offset, 8).data(), byte, wOffset, wByte);
if ( !s.isInitialized() ) {
if ( type==MemoryRangeType::Config ) _ranges[type][wOffset] = mask;
else _ranges[type][wOffset] = BitValue();
diff --git a/src/devices/pic/xml/pic_xml_to_data.cpp b/src/devices/pic/xml/pic_xml_to_data.cpp
index 9c14879..7cb573e 100644
--- a/src/devices/pic/xml/pic_xml_to_data.cpp
+++ b/src/devices/pic/xml/pic_xml_to_data.cpp
@@ -29,11 +29,11 @@ bool getVoltages(ProgVoltageType type, TQDomElement element)
data()->_voltages[type].min = voltages.attribute("min").toDouble(&ok1);
data()->_voltages[type].max = voltages.attribute("max").toDouble(&ok2);
data()->_voltages[type].nominal = voltages.attribute("nominal").toDouble(&ok3);
- if ( !ok1 || !ok2 || !ok3 ) qFatal(TQString("Cannot extract voltage value for \"%1\"").arg(type.key()));
+ if ( !ok1 || !ok2 || !ok3 ) tqFatal(TQString("Cannot extract voltage value for \"%1\"").arg(type.key()));
if ( data()->_voltages[type].min>data()->_voltages[type].max
|| data()->_voltages[type].nominal<data()->_voltages[type].min
|| data()->_voltages[type].nominal>data()->_voltages[type].max )
- qFatal("Inconsistent voltages order");
+ tqFatal("Inconsistent voltages order");
return true;
}
@@ -45,46 +45,46 @@ bool getMemoryRange(MemoryRangeType type, TQDomElement element)
bool ok;
uint nbCharsAddress = data()->nbCharsAddress();
data()->_ranges[type].start = fromHexLabel(range.attribute("start"), nbCharsAddress, &ok);
- if ( !ok ) qFatal("Cannot extract start address");
+ if ( !ok ) tqFatal("Cannot extract start address");
data()->_ranges[type].end = fromHexLabel(range.attribute("end"), nbCharsAddress, &ok);
- if ( !ok ) qFatal("Cannot extract end address");
- if ( data()->_ranges[type].end<data()->_ranges[type].start ) qFatal("Memory range end is before its start");
+ if ( !ok ) tqFatal("Cannot extract end address");
+ if ( data()->_ranges[type].end<data()->_ranges[type].start ) tqFatal("Memory range end is before its start");
uint nbCharsWord = data()->nbCharsWord(type);
- if ( data()->nbBitsWord(type)==0 ) qFatal(TQString("Architecture doesn't contain memory range %1").arg(type.key()));
+ if ( data()->nbBitsWord(type)==0 ) tqFatal(TQString("Architecture doesn't contain memory range %1").arg(type.key()));
if ( type==MemoryRangeType::UserId ) {
data()->_userIdRecommendedMask = fromHexLabel(range.attribute("rmask"), nbCharsWord, &ok);
- if ( !ok ) qFatal("Cannot extract rmask value for user id");
- if ( !data()->_userIdRecommendedMask.isInside(data()->mask(type)) ) qFatal(TQString("rmask is not inside mask %1 (%2)").arg(toHexLabel(data()->_userIdRecommendedMask, 8)).arg(toHexLabel(data()->mask(type), 8)));
+ if ( !ok ) tqFatal("Cannot extract rmask value for user id");
+ if ( !data()->_userIdRecommendedMask.isInside(data()->mask(type)) ) tqFatal(TQString("rmask is not inside mask %1 (%2)").arg(toHexLabel(data()->_userIdRecommendedMask, 8)).arg(toHexLabel(data()->mask(type), 8)));
}
if ( range.attribute("hexfile_offset")!="?" ) {
data()->_ranges[type].properties |= Programmable;
if ( !range.attribute("hexfile_offset").isEmpty() ) {
data()->_ranges[type].hexFileOffset = fromHexLabel(range.attribute("hexfile_offset"), nbCharsAddress, &ok);
- if ( !ok ) qFatal("Cannot extract hexfile_offset");
+ if ( !ok ) tqFatal("Cannot extract hexfile_offset");
}
}
if ( type==MemoryRangeType::Cal && !data()->is18Family() ) {
data()->_calibration.opcodeMask = fromHexLabel(range.attribute("cal_opmask"), nbCharsWord, &ok);
- if ( !ok ) qFatal("Cannot extract calibration opcode mask");
+ if ( !ok ) tqFatal("Cannot extract calibration opcode mask");
data()->_calibration.opcode = fromHexLabel(range.attribute("cal_opcode"), nbCharsWord, &ok);
- if ( !ok ) qFatal("Cannot extract calibration opcode");
- if ( !data()->_calibration.opcode.isInside(data()->_calibration.opcodeMask) ) qFatal("Calibration opcode should be inside opcode mask");
- if ( !data()->_calibration.opcodeMask.isInside(data()->mask(type)) ) qFatal("Calibration mask should be inside opcode mask");
+ if ( !ok ) tqFatal("Cannot extract calibration opcode");
+ if ( !data()->_calibration.opcode.isInside(data()->_calibration.opcodeMask) ) tqFatal("Calibration opcode should be inside opcode mask");
+ if ( !data()->_calibration.opcodeMask.isInside(data()->mask(type)) ) tqFatal("Calibration mask should be inside opcode mask");
}
TQString wwa = range.attribute("word_write_align");
TQString wea = range.attribute("word_erase_align");
if ( type==MemoryRangeType::Code ) {
if ( data()->_architecture==Architecture::P18F || data()->_architecture==Architecture::P18J ) {
data()->_nbWordsCodeWrite = wwa.toUInt(&ok);
- if ( !ok || data()->_nbWordsCodeWrite==0 || (data()->_nbWordsCodeWrite%4)!=0 ) qFatal("Missing or malformed word write align");
+ if ( !ok || data()->_nbWordsCodeWrite==0 || (data()->_nbWordsCodeWrite%4)!=0 ) tqFatal("Missing or malformed word write align");
data()->_nbWordsCodeRowErase = wea.toUInt(&ok);
- if ( !ok || (data()->_nbWordsCodeRowErase%4)!=0 ) qFatal("Missing or malformed word erase align");
+ if ( !ok || (data()->_nbWordsCodeRowErase%4)!=0 ) tqFatal("Missing or malformed word erase align");
} else {
- if ( !wwa.isEmpty() || !wea.isEmpty() ) qFatal("word align should not be defined for this device family/subfamily");
+ if ( !wwa.isEmpty() || !wea.isEmpty() ) tqFatal("word align should not be defined for this device family/subfamily");
data()->_nbWordsCodeWrite = 0; // #### TODO
data()->_nbWordsCodeRowErase = 0; // #### TODO
}
- } else if ( !wwa.isEmpty() || !wea.isEmpty() ) qFatal("word align should not be defined for this memory range");
+ } else if ( !wwa.isEmpty() || !wea.isEmpty() ) tqFatal("word align should not be defined for this memory range");
return true;
}
@@ -100,35 +100,35 @@ void processName(const Pic::Config::Mask &cmask, BitValue pmask, Pic::Config::Va
TQStringList &cnames = cvalue.configNames[Pic::ConfigNameType::Default];
if ( cvalue.name=="invalid" ) {
cvalue.name = TQString();
- if ( !cnames.isEmpty() ) qFatal(TQString("No cname should be defined for invalid value in mask %1").arg(cmask.name));
+ if ( !cnames.isEmpty() ) tqFatal(TQString("No cname should be defined for invalid value in mask %1").arg(cmask.name));
return;
}
- if ( cvalue.name.isEmpty() ) qFatal(TQString("Empty value name in mask %1").arg(cmask.name));
+ if ( cvalue.name.isEmpty() ) tqFatal(TQString("Empty value name in mask %1").arg(cmask.name));
if ( cmask.value.isInside(pmask) ) { // protected bits
- if ( !cnames.isEmpty() ) qFatal(TQString("Config name should be null for protected config mask \"%1\"").arg(cmask.name));
+ if ( !cnames.isEmpty() ) tqFatal(TQString("Config name should be null for protected config mask \"%1\"").arg(cmask.name));
} else {
if ( cnames.isEmpty() && cmask.name!="BSSEC" && cmask.name!="BSSIZ" && cmask.name!="SSSEC" && cmask.name!="SSSIZ" ) {
// ### FIXME: 18J 24H 30F1010/202X
if ( data()->architecture()!=Pic::Architecture::P18J && data()->architecture()!=Pic::Architecture::P24H
&& data()->architecture()!=Pic::Architecture::P24F && data()->architecture()!=Pic::Architecture::P33F
&& data()->name()!="30F1010" && data()->name()!="30F2020" && data()->name()!="30F2023" )
- qFatal(TQString("cname not defined for \"%1\" (%2)").arg(cvalue.name).arg(cmask.name));
+ tqFatal(TQString("cname not defined for \"%1\" (%2)").arg(cvalue.name).arg(cmask.name));
}
if ( cnames.count()==1 && cnames[0]=="_" ) cnames.clear();
for (uint i=0; i<uint(cnames.count()); i++) {
if ( cnames[i].startsWith("0x") ) {
- if ( cnames.count()!=1 ) qFatal("Hex cname cannot be combined");
+ if ( cnames.count()!=1 ) tqFatal("Hex cname cannot be combined");
bool ok;
BitValue v = fromHexLabel(cnames[i], &ok);
uint nbChars = data()->nbCharsWord(MemoryRangeType::Config);
BitValue mask = cmask.value.complementInMask(maxValue(NumberBase::Hex, nbChars));
if ( ok && v==(mask | cvalue.value) ) continue;
} else if ( XOR(cnames[i].startsWith("_"), data()->architecture()==Pic::Architecture::P30F) ) continue;
- qFatal(TQString("Invalid config name for \"%1\"/\"%2\"").arg(cmask.name).arg(cvalue.name));
+ tqFatal(TQString("Invalid config name for \"%1\"/\"%2\"").arg(cmask.name).arg(cvalue.name));
}
TQStringList &ecnames = cvalue.configNames[Pic::ConfigNameType::Extra];
for (uint i=0; i<uint(ecnames.count()); i++)
- if ( ecnames[i][0]!='_' ) qFatal(TQString("Invalid extra config name for %1").arg(cvalue.name));
+ if ( ecnames[i][0]!='_' ) tqFatal(TQString("Invalid extra config name for %1").arg(cvalue.name));
}
}
@@ -140,30 +140,30 @@ Pic::Config::Mask toConfigMask(TQDomElement mask, BitValue pmask)
TQMap<Pic::ConfigNameType, TQStringList> defConfigNames;
Config::Mask cmask;
cmask.name = mask.attribute("name");
- if ( !Config::hasMaskName(cmask.name) ) qFatal(TQString("Unknown mask name %1").arg(cmask.name));
+ if ( !Config::hasMaskName(cmask.name) ) tqFatal(TQString("Unknown mask name %1").arg(cmask.name));
cmask.value = fromHexLabel(mask.attribute("value"), nbChars, &ok);
if ( !ok || cmask.value==0 || cmask.value>data()->mask(MemoryRangeType::Config) )
- qFatal(TQString("Malformed mask value in mask %1").arg(mask.attribute("name")));
+ tqFatal(TQString("Malformed mask value in mask %1").arg(mask.attribute("name")));
//TQStringList names;
TQDomNode child = mask.firstChild();
while ( !child.isNull() ) {
TQDomElement value = child.toElement();
child = child.nextSibling();
if ( value.isNull() ) continue;
- if ( value.nodeName()!="value" ) qFatal(TQString("Non value child in mask %1").arg(cmask.name));
+ if ( value.nodeName()!="value" ) tqFatal(TQString("Non value child in mask %1").arg(cmask.name));
if ( value.attribute("value")=="default" ) {
- if ( !defName.isEmpty() ) qFatal(TQString("Default value already defined for mask %1").arg(cmask.name));
+ if ( !defName.isEmpty() ) tqFatal(TQString("Default value already defined for mask %1").arg(cmask.name));
defName = value.attribute("name");
- //if ( names.contains(defName) ) qFatal(TQString("Value name duplicated in mask %1").arg(cmask.name));
+ //if ( names.contains(defName) ) tqFatal(TQString("Value name duplicated in mask %1").arg(cmask.name));
//names.append(defName);
FOR_EACH(Pic::ConfigNameType, type) defConfigNames[type] = TQStringList::split(' ', value.attribute(type.data().key));
continue;
}
Config::Value cvalue;
cvalue.value = fromHexLabel(value.attribute("value"), nbChars, &ok);
- if ( !ok || !cvalue.value.isInside(cmask.value) ) qFatal(TQString("Malformed value in mask %1").arg(cmask.name));
+ if ( !ok || !cvalue.value.isInside(cmask.value) ) tqFatal(TQString("Malformed value in mask %1").arg(cmask.name));
cvalue.name = value.attribute("name");
- //if ( names.contains(cvalue.name) ) qFatal(TQString("Value name duplicated in mask %1").arg(cmask.name));
+ //if ( names.contains(cvalue.name) ) tqFatal(TQString("Value name duplicated in mask %1").arg(cmask.name));
//names.append(cvalue.name);
FOR_EACH(Pic::ConfigNameType, type) cvalue.configNames[type] = TQStringList::split(' ', value.attribute(type.data().key));
processName(cmask, pmask, cvalue);
@@ -183,7 +183,7 @@ Pic::Config::Mask toConfigMask(TQDomElement mask, BitValue pmask)
processName(cmask, pmask, cvalue);
cmask.values.append(cvalue);
}
- if ( nb<=1 ) qFatal(TQString("Default value used less than twice in mask %1").arg(cmask.name));
+ if ( nb<=1 ) tqFatal(TQString("Default value used less than twice in mask %1").arg(cmask.name));
}
qHeapSort(cmask.values);
return cmask;
@@ -194,34 +194,34 @@ Pic::Config::Word toConfigWord(TQDomElement config)
uint nbChars = data()->nbCharsWord(MemoryRangeType::Config);
Config::Word cword;
cword.name = config.attribute("name");
- if ( cword.name.isNull() ) qFatal("Config word name not specified.");
+ if ( cword.name.isNull() ) tqFatal("Config word name not specified.");
bool ok;
cword.wmask = fromHexLabel(config.attribute("wmask"), nbChars, &ok);
BitValue gmask = data()->mask(MemoryRangeType::Config);
- if ( !ok || cword.wmask>gmask ) qFatal(TQString("Missing or malformed config wmask \"%1\"").arg(config.attribute("wmask")));
+ if ( !ok || cword.wmask>gmask ) tqFatal(TQString("Missing or malformed config wmask \"%1\"").arg(config.attribute("wmask")));
cword.bvalue = fromHexLabel(config.attribute("bvalue"), nbChars, &ok);
- if ( !ok ) qFatal(TQString("Missing or malformed config bvalue \"%1\"").arg(config.attribute("bvalue")));
+ if ( !ok ) tqFatal(TQString("Missing or malformed config bvalue \"%1\"").arg(config.attribute("bvalue")));
if ( config.attribute("pmask").isEmpty() ) cword.pmask = 0;
else {
bool ok;
cword.pmask = fromHexLabel(config.attribute("pmask"), nbChars, &ok);
- if ( !ok || cword.pmask>gmask ) qFatal("Missing or malformed config pmask");
+ if ( !ok || cword.pmask>gmask ) tqFatal("Missing or malformed config pmask");
}
cword.ignoredCNames = TQStringList::split(' ', config.attribute("icnames"));
for (uint i=0; i<uint(cword.ignoredCNames.count()); i++)
- if ( cword.ignoredCNames[i][0]!='_' ) qFatal(TQString("Invalid ignored config name for %1").arg(cword.name));
+ if ( cword.ignoredCNames[i][0]!='_' ) tqFatal(TQString("Invalid ignored config name for %1").arg(cword.name));
TQDomNode child = config.firstChild();
while ( !child.isNull() ) {
TQDomElement mask = child.toElement();
child = child.nextSibling();
if ( mask.isNull() ) continue;
- if ( mask.nodeName()!="mask" ) qFatal(TQString("Non mask child in config %1").arg(cword.name));
- if ( mask.attribute("name").isEmpty() ) qFatal(TQString("Empty mask name in config %1").arg(cword.name));
+ if ( mask.nodeName()!="mask" ) tqFatal(TQString("Non mask child in config %1").arg(cword.name));
+ if ( mask.attribute("name").isEmpty() ) tqFatal(TQString("Empty mask name in config %1").arg(cword.name));
Config::Mask cmask = toConfigMask(mask, cword.pmask);
- if ( !cmask.value.isInside(gmask) ) qFatal(TQString("Mask value not inside mask in config %1").arg(cword.name));
+ if ( !cmask.value.isInside(gmask) ) tqFatal(TQString("Mask value not inside mask in config %1").arg(cword.name));
for (uint i=0; i<uint(cword.masks.count()); i++) {
- if ( cword.masks[i].name==cmask.name ) qFatal(TQString("Duplicated mask name %1 in config %2").arg(cmask.name).arg(cword.name));
- if ( cmask.value.isOverlapping(cword.masks[i].value) ) qFatal(TQString("Overlapping masks in config %1").arg(cword.name));
+ if ( cword.masks[i].name==cmask.name ) tqFatal(TQString("Duplicated mask name %1 in config %2").arg(cmask.name).arg(cword.name));
+ if ( cmask.value.isOverlapping(cword.masks[i].value) ) tqFatal(TQString("Overlapping masks in config %1").arg(cword.name));
}
cword.masks.append(cmask);
}
@@ -233,11 +233,11 @@ Pic::Config::Word toConfigWord(TQDomElement config)
} else {
bool ok;
cword.cmask = fromHexLabel(config.attribute("cmask"), nbChars, &ok);
- if ( !ok || cword.cmask>gmask ) qFatal("Missing or malformed config cmask");
- //if ( data()->_architecture==Pic::Architecture::P30X &&cword.cmask==cword.wmask ) qFatal(TQString("Redundant cmask in %1").arg(cword.name));
- if ( cword.cmask==mask ) qFatal(TQString("Redundant cmask in %1").arg(cword.name));
+ if ( !ok || cword.cmask>gmask ) tqFatal("Missing or malformed config cmask");
+ //if ( data()->_architecture==Pic::Architecture::P30X &&cword.cmask==cword.wmask ) tqFatal(TQString("Redundant cmask in %1").arg(cword.name));
+ if ( cword.cmask==mask ) tqFatal(TQString("Redundant cmask in %1").arg(cword.name));
}
- if ( !cword.pmask.isInside(cword.usedMask()) ) qFatal("pmask should be inside or'ed mask values.");
+ if ( !cword.pmask.isInside(cword.usedMask()) ) tqFatal("pmask should be inside or'ed mask values.");
return cword;
}
@@ -252,14 +252,14 @@ TQValueVector<Pic::Config::Word> getConfigWords(TQDomElement element)
if ( config.isNull() || config.nodeName()!="config" ) continue;
bool ok;
uint offset = fromHexLabel(config.attribute("offset"), 1, &ok);
- if ( !ok ) qFatal("Missing or malformed config offset");
- if ( (offset % data()->addressIncrement(MemoryRangeType::Config))!=0 ) qFatal("Config offset not aligned");
+ if ( !ok ) tqFatal("Missing or malformed config offset");
+ if ( (offset % data()->addressIncrement(MemoryRangeType::Config))!=0 ) tqFatal("Config offset not aligned");
offset /= data()->addressIncrement(MemoryRangeType::Config);
- if ( offset>=nbWords ) qFatal(TQString("Offset too big %1/%2").arg(offset).arg(nbWords));
- if ( !configWords[offset].name.isNull() ) qFatal(TQString("Config offset %1 is duplicated").arg(offset));
+ if ( offset>=nbWords ) tqFatal(TQString("Offset too big %1/%2").arg(offset).arg(nbWords));
+ if ( !configWords[offset].name.isNull() ) tqFatal(TQString("Config offset %1 is duplicated").arg(offset));
for (uint i=0; i<nbWords; i++) {
if ( !configWords[i].name.isNull() && configWords[i].name==config.attribute("name") )
- qFatal(TQString("Duplicated config name %1").arg(configWords[i].name));
+ tqFatal(TQString("Duplicated config name %1").arg(configWords[i].name));
}
configWords[offset] = toConfigWord(config);
}
@@ -279,40 +279,40 @@ TQString getChecksumData(TQDomElement checksum)
bool ok;
uint nb = valueName.toUInt(&ok);
uint max = (protection.hasBootBlock() ? 1 : 0) + protection.nbBlocks();
- if ( !ok || nb>max ) qFatal("Invalid number of protected blocks for checksum");
+ if ( !ok || nb>max ) tqFatal("Invalid number of protected blocks for checksum");
if ( nb>0 ) cdata.protectedMaskNames += "CPB";
for (uint i=1; i<nb; i++) cdata.protectedMaskNames += "CP_" + TQString::number(i-1);
cdata.bbsize = checksum.attribute("bbsize");
const Config::Mask *mask = data()->_config->findMask(protection.bootSizeMaskName());
if ( mask==0 ) {
- if ( !cdata.bbsize.isEmpty() ) qFatal("Device does not have a variable boot size (no \"bbsize\" allowed in checksum)");
+ if ( !cdata.bbsize.isEmpty() ) tqFatal("Device does not have a variable boot size (no \"bbsize\" allowed in checksum)");
} else if ( cdata.bbsize.isEmpty() ) {
- if ( nb==1 ) qFatal("\"bbsize\" should be define in checksum for \"protected_blocks\"==1");
+ if ( nb==1 ) tqFatal("\"bbsize\" should be define in checksum for \"protected_blocks\"==1");
} else {
const Config::Value *value = data()->_config->findValue(protection.bootSizeMaskName(), cdata.bbsize);
- if ( value==0 ) qFatal("Invalid \"bbsize\" in checksum");
+ if ( value==0 ) tqFatal("Invalid \"bbsize\" in checksum");
valueName += "_" + cdata.bbsize;
}
} else {
valueName = checksum.attribute("protected");
if ( protection.family()==Protection::NoProtection && !valueName.isEmpty() )
- qFatal("Checksum protected attribute for device with no code protection");
+ tqFatal("Checksum protected attribute for device with no code protection");
}
- if ( data()->_checksums.contains(valueName) ) qFatal("Duplicate checksum protected range");
+ if ( data()->_checksums.contains(valueName) ) tqFatal("Duplicate checksum protected range");
TQString s = checksum.attribute("constant");
if ( s.isEmpty() ) cdata.constant = 0x0000;
else {
bool ok;
cdata.constant = fromHexLabel(s, 4, &ok);
- if ( !ok ) qFatal("Malformed checksum constant");
+ if ( !ok ) tqFatal("Malformed checksum constant");
}
s = checksum.attribute("type");
if ( s.isEmpty() ) cdata.algorithm = Checksum::Algorithm::Normal;
else {
cdata.algorithm = Checksum::Algorithm::fromKey(s);
- if ( cdata.algorithm==Checksum::Algorithm::Nb_Types ) qFatal("Unrecognized checksum algorithm");
+ if ( cdata.algorithm==Checksum::Algorithm::Nb_Types ) tqFatal("Unrecognized checksum algorithm");
}
s = checksum.attribute("mprotected");
@@ -320,32 +320,32 @@ TQString getChecksumData(TQDomElement checksum)
TQStringList list = TQStringList::split(" ", s);
for (uint i=0; i<uint(list.count()); i++) {
const Config::Mask *mask = data()->config().findMask(list[i]);
- if ( mask==0 ) qFatal(TQString("Not valid mask name for \"protected\" tag in checksum: %1").arg(list[i]));
+ if ( mask==0 ) tqFatal(TQString("Not valid mask name for \"protected\" tag in checksum: %1").arg(list[i]));
if ( mask->values.count()==2 ) continue;
for (uint k=0; k<uint(mask->values.count()); k++) {
TQString valueName = mask->values[k].name;
if ( valueName.isEmpty() ) continue;
if ( !protection.isNoneProtectedValueName(valueName) && !protection.isAllProtectedValueName(valueName) )
- qFatal(TQString("Not switch protection from mask name for \"protected\" tag in checksum: %1").arg(list[i]));
+ tqFatal(TQString("Not switch protection from mask name for \"protected\" tag in checksum: %1").arg(list[i]));
}
}
cdata.protectedMaskNames = list;
}
s = checksum.attribute("bchecksum");
- if ( s.isEmpty() ) qFatal("No blank checksum");
+ if ( s.isEmpty() ) tqFatal("No blank checksum");
else {
bool ok;
cdata.blankChecksum = fromHexLabel(s, 4, &ok);
- if ( !ok ) qFatal("Malformed blank checksum");
+ if ( !ok ) tqFatal("Malformed blank checksum");
}
s = checksum.attribute("cchecksum");
- if ( s.isEmpty() ) qFatal("No check checksum");
+ if ( s.isEmpty() ) tqFatal("No check checksum");
else {
bool ok;
cdata.checkChecksum = fromHexLabel(s, 4, &ok);
- if ( !ok ) qFatal("Malformed check checksum");
+ if ( !ok ) tqFatal("Malformed check checksum");
}
data()->_checksums[valueName] = cdata;
@@ -358,24 +358,24 @@ virtual void processDevice(TQDomElement device)
TQString arch = device.attribute("architecture");
data()->_architecture = Architecture::fromKey(arch);
- if ( data()->_architecture==Architecture::Nb_Types ) qFatal(TQString("Unrecognized architecture \"%1\"").arg(arch));
+ if ( data()->_architecture==Architecture::Nb_Types ) tqFatal(TQString("Unrecognized architecture \"%1\"").arg(arch));
if ( (data()->_architecture==Architecture::P18F && data()->_name.contains("C"))
- || (data()->_architecture==Architecture::P18F && data()->_name.contains("J")) ) qFatal("Not matching family");
+ || (data()->_architecture==Architecture::P18F && data()->_name.contains("J")) ) tqFatal("Not matching family");
bool ok;
TQString pc = device.attribute("pc");
data()->_nbBitsPC = data()->_architecture.data().nbBitsPC;
if ( data()->_nbBitsPC==0 ) {
data()->_nbBitsPC = pc.toUInt(&ok);
- if ( !ok || data()->_nbBitsPC==0 ) qFatal("Malformed or missing PC");
- } else if ( !pc.isEmpty() ) qFatal("No PC should be provided for this device architecture");
+ if ( !ok || data()->_nbBitsPC==0 ) tqFatal("Malformed or missing PC");
+ } else if ( !pc.isEmpty() ) tqFatal("No PC should be provided for this device architecture");
TQString sw = device.attribute("self_write");
data()->_selfWrite = (data()->_memoryTechnology!=Device::MemoryTechnology::Flash ? SelfWrite::No : data()->_architecture.data().selfWrite);
if ( data()->_selfWrite==SelfWrite::Nb_Types ) {
data()->_selfWrite = SelfWrite::fromKey(sw);
- if ( data()->_selfWrite==SelfWrite::Nb_Types ) qFatal("Malformed or missing self-write field");
- } else if ( !sw.isEmpty() ) qFatal("Self-write is set for the whole family or non-flash device");
+ if ( data()->_selfWrite==SelfWrite::Nb_Types ) tqFatal("Malformed or missing self-write field");
+ } else if ( !sw.isEmpty() ) tqFatal("Self-write is set for the whole family or non-flash device");
// device ids
FOR_EACH(Device::Special, special) {
@@ -385,7 +385,7 @@ virtual void processDevice(TQDomElement device)
if ( special==Device::Special::Normal ) data()->_ids[special] = 0x0000;
} else {
data()->_ids[special] = fromHexLabel(id, 4, &ok);
- if ( !ok ) qFatal("Malformed id");
+ if ( !ok ) tqFatal("Malformed id");
}
}
@@ -396,16 +396,16 @@ virtual void processDevice(TQDomElement device)
if ( !getVoltages(vtype, device) ) {
switch (vtype.type()) {
case ProgVoltageType::Vpp:
- case ProgVoltageType::VddBulkErase: qFatal(TQString("Voltage \"%1\" not defined").arg(vtype.key()));
+ case ProgVoltageType::VddBulkErase: tqFatal(TQString("Voltage \"%1\" not defined").arg(vtype.key()));
case ProgVoltageType::VddWrite: data()->_voltages[ProgVoltageType::VddWrite] = data()->_voltages[ProgVoltageType::VddBulkErase]; break;
case ProgVoltageType::Nb_Types: Q_ASSERT(false); break;
}
}
}
- //if ( data()->vddMin()>data()->_voltages[ProgVoltageType::VddWrite].min ) qFatal("Vdd min higher than VddWrite min");
- //if ( data()->vddMax()<data()->_voltages[ProgVoltageType::VddWrite].max ) qFatal("Vdd max lower than VddWrite max");
- if ( data()->_voltages[ProgVoltageType::VddWrite].min>data()->_voltages[ProgVoltageType::VddBulkErase].min ) qFatal("VddWrite min higher than VddBulkErase min");
- if ( data()->_voltages[ProgVoltageType::VddWrite].max<data()->_voltages[ProgVoltageType::VddBulkErase].max ) qFatal("VddWrite max lower than VddBulkErase max");
+ //if ( data()->vddMin()>data()->_voltages[ProgVoltageType::VddWrite].min ) tqFatal("Vdd min higher than VddWrite min");
+ //if ( data()->vddMax()<data()->_voltages[ProgVoltageType::VddWrite].max ) tqFatal("Vdd max lower than VddWrite max");
+ if ( data()->_voltages[ProgVoltageType::VddWrite].min>data()->_voltages[ProgVoltageType::VddBulkErase].min ) tqFatal("VddWrite min higher than VddBulkErase min");
+ if ( data()->_voltages[ProgVoltageType::VddWrite].max<data()->_voltages[ProgVoltageType::VddBulkErase].max ) tqFatal("VddWrite max lower than VddBulkErase max");
checkTagNames(device, "voltages", names);
// memory ranges
@@ -426,12 +426,12 @@ virtual void processDevice(TQDomElement device)
Address start2 = data()->_ranges[i].start + data()->_ranges[i].hexFileOffset;
Address end2 = data()->_ranges[i].end + data()->_ranges[i].hexFileOffset;
if ( end1>=start2 && start1<=end2 )
- qFatal(TQString("Overlapping memory ranges (%1 and %2)").arg(k.key()).arg(i.key()));
+ tqFatal(TQString("Overlapping memory ranges (%1 and %2)").arg(k.key()).arg(i.key()));
}
}
checkTagNames(device, "memory", names);
if ( XOR(data()->_ids[Device::Special::Normal]!=0x0000, (data()->_ranges[MemoryRangeType::DeviceId].properties & Present)) )
- qFatal("Id present and device id memory range absent or the opposite");
+ tqFatal("Id present and device id memory range absent or the opposite");
// config words
TQValueVector<Config::Word> cwords = getConfigWords(device);
@@ -440,7 +440,7 @@ virtual void processDevice(TQDomElement device)
FOR_EACH(Pic::ConfigNameType, type) {
TQMap<TQString, TQString> cnames; // cname -> mask name
for (uint i=0; i<nbWords; i++) {
- if ( cwords[i].name.isNull() ) qFatal(TQString("Config word #%1 not defined").arg(i));
+ if ( cwords[i].name.isNull() ) tqFatal(TQString("Config word #%1 not defined").arg(i));
data()->_config->_words[i] = cwords[i];
const Config::Word &word = data()->_config->_words[i];
for (uint j=0; j<uint(word.masks.count()); j++) {
@@ -450,7 +450,7 @@ virtual void processDevice(TQDomElement device)
for (uint l=0; l<uint(vcnames.count()); l++) {
if ( vcnames[l].startsWith("0x") ) continue;
if ( cnames.contains(vcnames[l]) && cnames[vcnames[l]]!=mask.name )
- qFatal(TQString("Duplicated config name for %1/%2").arg(mask.name).arg(mask.values[k].name));
+ tqFatal(TQString("Duplicated config name for %1/%2").arg(mask.name).arg(mask.values[k].name));
cnames[vcnames[l]] = word.masks[j].name;
}
}
@@ -466,7 +466,7 @@ virtual void processDevice(TQDomElement device)
const Config::Value &value = mask.values[k];
if ( !value.isValid() ) continue;
if ( !data()->_config->checkValueName(mask.name, value.name) )
- qFatal(TQString("Malformed value name \"%1\" in mask %2").arg(value.name).arg(mask.name));
+ tqFatal(TQString("Malformed value name \"%1\" in mask %2").arg(value.name).arg(mask.name));
}
}
}
@@ -477,14 +477,14 @@ virtual void processDevice(TQDomElement device)
const Config::Mask &mask = word.masks[j];
BitValue::const_iterator it;
for (it=mask.value.begin(); it!=mask.value.end(); ++it)
- if ( !hasValue(mask, *it) ) qFatal(TQString("Value %1 not defined in mask %2").arg(toHexLabel(*it, data()->nbCharsWord(MemoryRangeType::Config))).arg(mask.name));
+ if ( !hasValue(mask, *it) ) tqFatal(TQString("Value %1 not defined in mask %2").arg(toHexLabel(*it, data()->nbCharsWord(MemoryRangeType::Config))).arg(mask.name));
}
}
// checksums (after config bits!)
TQDomElement checksums = findUniqueElement(device, "checksums", TQString(), TQString());
if ( checksums.isNull() ) {
- // qFatal("No checksum defined"); // #### FIXME
+ // tqFatal("No checksum defined"); // #### FIXME
} else {
TQMap<TQString, bool> valueNames;
const Pic::Protection &protection = data()->_config->protection();
@@ -497,17 +497,17 @@ virtual void processDevice(TQDomElement device)
TQDomNode child = checksums.firstChild();
while ( !child.isNull() ) {
if ( !child.isElement() ) continue;
- if ( child.nodeName()!="checksum" ) qFatal("Childs of \"checksums\" should \"checksum\"");
+ if ( child.nodeName()!="checksum" ) tqFatal("Childs of \"checksums\" should \"checksum\"");
TQString valueName = getChecksumData(child.toElement());
if ( protection.family()==Protection::BasicProtection ) {
- if ( !valueNames.contains(valueName) ) qFatal("Unknown protected attribute");
+ if ( !valueNames.contains(valueName) ) tqFatal("Unknown protected attribute");
valueNames[valueName] = true;
}
child = child.nextSibling();
}
TQMap<TQString, bool>::const_iterator it;
for (it=valueNames.begin(); it!=valueNames.end(); ++it)
- if ( !it.key().isEmpty() && !it.data() ) qFatal(TQString("Missing checksum \"%1\"").arg(it.key()));
+ if ( !it.key().isEmpty() && !it.data() ) tqFatal(TQString("Missing checksum \"%1\"").arg(it.key()));
}
}
@@ -516,16 +516,16 @@ void processMirrored(TQDomElement element)
TQValueVector<RangeData> mirrored;
TQDomNode child = element.firstChild();
while ( !child.isNull() ) {
- if ( !child.isElement() ) qFatal("\"mirror\" child should be an element");
+ if ( !child.isElement() ) tqFatal("\"mirror\" child should be an element");
TQDomElement e = child.toElement();
- if ( e.nodeName()!="range" ) qFatal("\"mirror\" child should be \"range\"");
+ if ( e.nodeName()!="range" ) tqFatal("\"mirror\" child should be \"range\"");
RangeData rd;
bool ok;
rd.start = fromHexLabel(e.attribute("start"), &ok);
Address end = fromHexLabel(e.attribute("end"), &ok);
rd.length = end-rd.start+1;
if ( !mirrored.isEmpty() && rd.length!=mirrored[0].length )
- qFatal("Mirrored are not of the same length");
+ tqFatal("Mirrored are not of the same length");
mirrored.append(rd);
child = child.nextSibling();
}
@@ -537,43 +537,43 @@ void processUnused(TQDomElement e)
RangeData rd;
bool ok;
rd.start = fromHexLabel(e.attribute("start"), &ok);
- if (!ok) qFatal("Malformed start for unused register");
+ if (!ok) tqFatal("Malformed start for unused register");
Address end = fromHexLabel(e.attribute("end"), &ok);
rd.length = end-rd.start+1;
- if (!ok) qFatal("Malformed end for unused register");
+ if (!ok) tqFatal("Malformed end for unused register");
static_cast<RegistersData *>(data()->_registersData)->unused.append(rd);
}
void processSfr(TQDomElement e)
{
TQString name = e.attribute("name");
- if ( name.isEmpty() ) qFatal("SFR cannot have empty name");
+ if ( name.isEmpty() ) tqFatal("SFR cannot have empty name");
if ( data()->registersData().sfrs.contains(name) || data()->registersData().combined.contains(name) )
- qFatal("SFR name is duplicated");
+ tqFatal("SFR name is duplicated");
bool ok;
uint address = fromHexLabel(e.attribute("address"), &ok);
- if ( !ok ) qFatal(TQString("SFR %1 address %2 is malformed").arg(name).arg(e.attribute("address")));
+ if ( !ok ) tqFatal(TQString("SFR %1 address %2 is malformed").arg(name).arg(e.attribute("address")));
uint rlength = data()->registersData().nbBanks * data()->architecture().data().registerBankLength;
- if ( address>=rlength ) qFatal(TQString("Address %1 outside register range").arg(toHexLabel(address, 3)));
+ if ( address>=rlength ) tqFatal(TQString("Address %1 outside register range").arg(toHexLabel(address, 3)));
RegisterData rdata;
rdata.address = address;
uint nb = data()->registersData().nbBits();
- if ( nb>Device::MAX_NB_PORT_BITS ) qFatal(TQString("Need higher MAX_NB_PORT_BITS: %1").arg(nb));
+ if ( nb>Device::MAX_NB_PORT_BITS ) tqFatal(TQString("Need higher MAX_NB_PORT_BITS: %1").arg(nb));
TQString access = e.attribute("access");
- if ( uint(access.length())!=nb ) qFatal("access is missing or malformed");
+ if ( uint(access.length())!=nb ) tqFatal("access is missing or malformed");
TQString mclr = e.attribute("mclr");
- if ( uint(mclr.length())!=nb ) qFatal("mclr is missing or malformed");
+ if ( uint(mclr.length())!=nb ) tqFatal("mclr is missing or malformed");
TQString por = e.attribute("por");
- if ( uint(por.length())!=nb ) qFatal("por is missing or malformed");
+ if ( uint(por.length())!=nb ) tqFatal("por is missing or malformed");
for (uint i=0; i<nb; i++) {
uint k = nb - i - 1;
bool ok;
rdata.bits[k].properties = RegisterBitProperties(fromHex(access[i].latin1(), &ok));
- if ( !ok || rdata.bits[k].properties>MaxRegisterBitProperty ) qFatal(TQString("Malformed access bit %1").arg(k));
+ if ( !ok || rdata.bits[k].properties>MaxRegisterBitProperty ) tqFatal(TQString("Malformed access bit %1").arg(k));
rdata.bits[k].mclr = RegisterBitState(fromHex(mclr[i].latin1(), &ok));
- if ( !ok || rdata.bits[k].mclr>Nb_RegisterBitStates ) qFatal(TQString("Malformed mclr bit %1").arg(k));
+ if ( !ok || rdata.bits[k].mclr>Nb_RegisterBitStates ) tqFatal(TQString("Malformed mclr bit %1").arg(k));
rdata.bits[k].por = RegisterBitState(fromHex(por[i].latin1(), &ok));
- if ( !ok || rdata.bits[k].por>Nb_RegisterBitStates ) qFatal(TQString("Malformed por bit %1").arg(k));
+ if ( !ok || rdata.bits[k].por>Nb_RegisterBitStates ) tqFatal(TQString("Malformed por bit %1").arg(k));
}
static_cast<RegistersData *>(data()->_registersData)->sfrs[name] = rdata;
}
@@ -581,19 +581,19 @@ void processSfr(TQDomElement e)
void processCombined(TQDomElement e)
{
TQString name = e.attribute("name");
- if ( name.isEmpty() ) qFatal("Combined register cannot have empty name");
+ if ( name.isEmpty() ) tqFatal("Combined register cannot have empty name");
if ( data()->registersData().sfrs.contains(name) || data()->registersData().combined.contains(name) )
- qFatal("Combined register name is duplicated");
+ tqFatal("Combined register name is duplicated");
bool ok;
CombinedData rdata;
rdata.address = fromHexLabel(e.attribute("address"), &ok);
- if ( !ok ) qFatal(TQString("Combined %1 address %2 is malformed").arg(name).arg(e.attribute("address")));
+ if ( !ok ) tqFatal(TQString("Combined %1 address %2 is malformed").arg(name).arg(e.attribute("address")));
uint rlength = data()->registersData().nbBanks * data()->architecture().data().registerBankLength;
- if ( rdata.address>=rlength ) qFatal(TQString("Address %1 outside register range").arg(toHexLabel(rdata.address, 3)));
+ if ( rdata.address>=rlength ) tqFatal(TQString("Address %1 outside register range").arg(toHexLabel(rdata.address, 3)));
rdata.nbChars = 2*e.attribute("size").toUInt(&ok);
- if ( !ok || rdata.nbChars<2 ) qFatal(TQString("Combined %1 size %2 is malformed").arg(name).arg(e.attribute("size")));
+ if ( !ok || rdata.nbChars<2 ) tqFatal(TQString("Combined %1 size %2 is malformed").arg(name).arg(e.attribute("size")));
Address end = rdata.address + rdata.nbChars/2 - 1;
- if ( end>=rlength ) qFatal(TQString("Address %1 outside register range").arg(toHexLabel(end, 3)));
+ if ( end>=rlength ) tqFatal(TQString("Address %1 outside register range").arg(toHexLabel(end, 3)));
static_cast<RegistersData *>(data()->_registersData)->combined[name] = rdata;
}
@@ -601,7 +601,7 @@ void processDeviceRegisters(TQDomElement element)
{
TQString s = element.attribute("same_as");
if ( !s.isEmpty() ) {
- if ( !_map.contains(s) ) qFatal(TQString("Registers same as unknown device %1").arg(s));
+ if ( !_map.contains(s) ) tqFatal(TQString("Registers same as unknown device %1").arg(s));
const Pic::Data *d = static_cast<const Pic::Data *>(_map[s]);
data()->_registersData = d->_registersData;
return;
@@ -610,12 +610,12 @@ void processDeviceRegisters(TQDomElement element)
RegistersData &rdata = *static_cast<RegistersData *>(data()->_registersData);
bool ok;
rdata.nbBanks = element.attribute("nb_banks").toUInt(&ok);
- if ( !ok || data()->registersData().nbBanks==0 ) qFatal("Malformed number of banks");
+ if ( !ok || data()->registersData().nbBanks==0 ) tqFatal("Malformed number of banks");
if ( data()->is18Family() ) {
rdata.accessBankSplit = fromHexLabel(element.attribute("access_bank_split_offset"), &ok);
- if ( !ok || rdata.accessBankSplit==0 || rdata.accessBankSplit>=0xFF ) qFatal("Malformed access bank split offset");
+ if ( !ok || rdata.accessBankSplit==0 || rdata.accessBankSplit>=0xFF ) tqFatal("Malformed access bank split offset");
rdata.unusedBankMask = fromHexLabel(element.attribute("unused_bank_mask"), &ok);
- if ( !ok || rdata.unusedBankMask>=maxValue(NumberBase::Hex, rdata.nbBanks) ) qFatal("Malformed access unused bank mask");
+ if ( !ok || rdata.unusedBankMask>=maxValue(NumberBase::Hex, rdata.nbBanks) ) tqFatal("Malformed access unused bank mask");
} else {
rdata.accessBankSplit = 0;
rdata.unusedBankMask = 0;
@@ -623,13 +623,13 @@ void processDeviceRegisters(TQDomElement element)
TQDomNode child = element.firstChild();
while ( !child.isNull() ) {
- if ( !child.isElement() ) qFatal("\"device\" child should be an element");
+ if ( !child.isElement() ) tqFatal("\"device\" child should be an element");
TQDomElement e = child.toElement();
if ( e.nodeName()=="mirror" ) processMirrored(e);
else if ( e.nodeName()=="unused" ) processUnused(e);
else if ( e.nodeName()=="combined" ) processCombined(e);
else if ( e.nodeName()=="sfr" ) processSfr(e);
- else qFatal(TQString("Node name \"%1\" is not recognized").arg(e.nodeName()));
+ else tqFatal(TQString("Node name \"%1\" is not recognized").arg(e.nodeName()));
child = child.nextSibling();
}
@@ -640,11 +640,11 @@ void processDeviceRegisters(TQDomElement element)
TQString trisname = rdata.trisName(i);
if ( trisname.isEmpty() ) continue;
bool hasTris = rdata.sfrs.contains(trisname);
- if ( !hasPort && hasTris ) qFatal(TQString("%1 needs %2 to be present").arg(trisname).arg(portname));
+ if ( !hasPort && hasTris ) tqFatal(TQString("%1 needs %2 to be present").arg(trisname).arg(portname));
TQString latchname = rdata.latchName(i);
if ( latchname.isEmpty() ) continue;
bool hasLatch = rdata.sfrs.contains(latchname);
- if ( !hasPort && hasLatch ) qFatal(TQString("%1 needs %2 to be present").arg(latchname).arg(portname));
+ if ( !hasPort && hasLatch ) tqFatal(TQString("%1 needs %2 to be present").arg(latchname).arg(portname));
}
}
@@ -652,15 +652,15 @@ void processRegistersFile(const TQString &filename, TQStringList &devices)
{
TQDomDocument doc = parseFile(filename);
TQDomElement root = doc.documentElement();
- if ( root.nodeName()!="registers" ) qFatal("root node should be \"registers\"");
+ if ( root.nodeName()!="registers" ) tqFatal("root node should be \"registers\"");
for (TQDomNode child=root.firstChild(); !child.isNull(); child = child.nextSibling()) {
- if ( child.isComment() ) qDebug("comment: %s", child.toComment().data().latin1());
+ if ( child.isComment() ) tqDebug("comment: %s", child.toComment().data().latin1());
else {
- if ( !child.isElement() ) qFatal("\"registers\" child should be an element");
- if ( child.nodeName()!="device" ) qFatal("Device node should be named \"device\"");
+ if ( !child.isElement() ) tqFatal("\"registers\" child should be an element");
+ if ( child.nodeName()!="device" ) tqFatal("Device node should be named \"device\"");
TQDomElement device = child.toElement();
TQString name = device.attribute("name");
- if ( devices.contains(name) ) qFatal(TQString("Registers already defined for %1").arg(name));
+ if ( devices.contains(name) ) tqFatal(TQString("Registers already defined for %1").arg(name));
if ( _map.contains(name) ) {
_data = _map[name];
processDeviceRegisters(device);
@@ -680,18 +680,18 @@ void processRegisters()
TQMap<TQString, Device::Data *>::const_iterator it = _map.begin();
for (; it!=_map.end(); ++it) {
_data = it.data();
- if ( !devices.contains(it.key()) ) qWarning("Register description not found for %s", it.key().latin1());
+ if ( !devices.contains(it.key()) ) tqWarning("Register description not found for %s", it.key().latin1());
}
}
virtual void checkPins(const TQMap<TQString, uint> &pinLabels) const
{
- if ( !pinLabels.contains("VDD") ) qFatal("No VDD pin specified");
- if ( !pinLabels.contains("VSS") ) qFatal("No VSS pin specified");
+ if ( !pinLabels.contains("VDD") ) tqFatal("No VDD pin specified");
+ if ( !pinLabels.contains("VSS") ) tqFatal("No VSS pin specified");
TQMap<TQString, uint>::const_iterator it;
for (it=pinLabels.begin(); it!=pinLabels.end(); ++it) {
if ( it.key()=="VDD" || it.key()=="VSS" || it.key().startsWith("CCP") ) continue;
- if ( it.data()!=1 ) qFatal(TQString("Duplicated pin \"%1\"").arg(it.key()));
+ if ( it.data()!=1 ) tqFatal(TQString("Duplicated pin \"%1\"").arg(it.key()));
}
const Pic::RegistersData &rdata = static_cast<const Pic::RegistersData &>(*_data->registersData());
for (uint i=0; i<Device::MAX_NB_PORTS; i++) {
@@ -699,7 +699,7 @@ virtual void checkPins(const TQMap<TQString, uint> &pinLabels) const
for (uint k=0; k<Device::MAX_NB_PORT_BITS; k++) {
if ( !rdata.hasPortBit(i, k) ) continue;
TQString name = rdata.portBitName(i, k);
- if ( !pinLabels.contains(name) ) qFatal(TQString("Pin \"%1\" not present").arg(name));
+ if ( !pinLabels.contains(name) ) tqFatal(TQString("Pin \"%1\" not present").arg(name));
}
}
}