Avoid reserved values when creating DRCS Mode triplets

This commit is contained in:
Gavin MacGregor
2025-06-19 11:56:36 +01:00
parent ebee613a22
commit 962d308b56

View File

@@ -1059,16 +1059,28 @@ void X26DockWidget::insertTriplet(int modeExt, int row)
} else } else
row = 0; row = 0;
// For character triplets, ensure Data is not reserved // Avoid reserved bits
if (modeExt == 0x21 || modeExt == 0x22 || modeExt == 0x29 || modeExt == 0x2b || modeExt >= 0x2f) switch (modeExt) {
newTriplet.setData(0x20); case 0x07: // Address Row 0
// For Address Row 0, set Address newTriplet.setAddress(63); // set Address to notreserved
if (modeExt == 0x07) break;
newTriplet.setAddress(63); case 0x18: // DRCS mode
// For Termination Marker, set Address and Mode newTriplet.setData(0x70); // Normal DRCS at Levels 2.5 and 3.5
if (modeExt == 0x1f) { break;
newTriplet.setAddress(63); case 0x1f: // Termination Marker
newTriplet.setAddress(63); // set all bits to 1
newTriplet.setData(7); newTriplet.setData(7);
break;
case 0x21: // G1 mosaic character
case 0x22: // G3 mosaic character at level 1.5
case 0x29: // G0 character
case 0x2b: // G3 mosaic character at level >=2.5
case 0x2f: // G2 character
newTriplet.setData(0x20); // ensure Data is not reserved
break;
case 0x2d: // DRCS character
newTriplet.setData(0x40); // Normal DRCS
break;
} }
m_x26Model->insertRows(row, 1, QModelIndex(), newTriplet); m_x26Model->insertRows(row, 1, QModelIndex(), newTriplet);