mirror of https://github.com/stella-emu/stella.git
Update debugger widget for CDFJ+
This commit is contained in:
parent
c2d0de237c
commit
75d3a6e5e5
|
@ -0,0 +1,61 @@
|
||||||
|
{
|
||||||
|
"files.associations": {
|
||||||
|
"array": "cpp",
|
||||||
|
"bitset": "cpp",
|
||||||
|
"string_view": "cpp",
|
||||||
|
"initializer_list": "cpp",
|
||||||
|
"regex": "cpp",
|
||||||
|
"utility": "cpp",
|
||||||
|
"memory": "cpp",
|
||||||
|
"random": "cpp",
|
||||||
|
"optional": "cpp",
|
||||||
|
"atomic": "cpp",
|
||||||
|
"*.tcc": "cpp",
|
||||||
|
"cctype": "cpp",
|
||||||
|
"chrono": "cpp",
|
||||||
|
"clocale": "cpp",
|
||||||
|
"cmath": "cpp",
|
||||||
|
"condition_variable": "cpp",
|
||||||
|
"cstdarg": "cpp",
|
||||||
|
"cstddef": "cpp",
|
||||||
|
"cstdint": "cpp",
|
||||||
|
"cstdio": "cpp",
|
||||||
|
"cstdlib": "cpp",
|
||||||
|
"cstring": "cpp",
|
||||||
|
"ctime": "cpp",
|
||||||
|
"cwchar": "cpp",
|
||||||
|
"cwctype": "cpp",
|
||||||
|
"deque": "cpp",
|
||||||
|
"list": "cpp",
|
||||||
|
"unordered_map": "cpp",
|
||||||
|
"vector": "cpp",
|
||||||
|
"exception": "cpp",
|
||||||
|
"algorithm": "cpp",
|
||||||
|
"functional": "cpp",
|
||||||
|
"iterator": "cpp",
|
||||||
|
"map": "cpp",
|
||||||
|
"memory_resource": "cpp",
|
||||||
|
"numeric": "cpp",
|
||||||
|
"ratio": "cpp",
|
||||||
|
"set": "cpp",
|
||||||
|
"string": "cpp",
|
||||||
|
"system_error": "cpp",
|
||||||
|
"tuple": "cpp",
|
||||||
|
"type_traits": "cpp",
|
||||||
|
"fstream": "cpp",
|
||||||
|
"iomanip": "cpp",
|
||||||
|
"iosfwd": "cpp",
|
||||||
|
"iostream": "cpp",
|
||||||
|
"istream": "cpp",
|
||||||
|
"limits": "cpp",
|
||||||
|
"mutex": "cpp",
|
||||||
|
"new": "cpp",
|
||||||
|
"ostream": "cpp",
|
||||||
|
"sstream": "cpp",
|
||||||
|
"stdexcept": "cpp",
|
||||||
|
"streambuf": "cpp",
|
||||||
|
"thread": "cpp",
|
||||||
|
"cinttypes": "cpp",
|
||||||
|
"typeinfo": "cpp"
|
||||||
|
}
|
||||||
|
}
|
|
@ -34,13 +34,23 @@ CartridgeCDFWidget::CartridgeCDFWidget(
|
||||||
int xpos = HBORDER, ypos = VBORDER;
|
int xpos = HBORDER, ypos = VBORDER;
|
||||||
|
|
||||||
VariantList items;
|
VariantList items;
|
||||||
VarList::push_back(items, "0 ($FFF5)");
|
if (isCDFJplus()) {
|
||||||
VarList::push_back(items, "1 ($FFF6)");
|
VarList::push_back(items, "0 ($FFF4)");
|
||||||
VarList::push_back(items, "2 ($FFF7)");
|
VarList::push_back(items, "1 ($FFF5)");
|
||||||
VarList::push_back(items, "3 ($FFF8)");
|
VarList::push_back(items, "2 ($FFF6)");
|
||||||
VarList::push_back(items, "4 ($FFF9)");
|
VarList::push_back(items, "3 ($FFF7)");
|
||||||
VarList::push_back(items, "5 ($FFFA)");
|
VarList::push_back(items, "4 ($FFF8)");
|
||||||
VarList::push_back(items, "6 ($FFFB)");
|
VarList::push_back(items, "5 ($FFF9)");
|
||||||
|
VarList::push_back(items, "6 ($FFFA)");
|
||||||
|
} else {
|
||||||
|
VarList::push_back(items, "0 ($FFF5)");
|
||||||
|
VarList::push_back(items, "1 ($FFF6)");
|
||||||
|
VarList::push_back(items, "2 ($FFF7)");
|
||||||
|
VarList::push_back(items, "3 ($FFF8)");
|
||||||
|
VarList::push_back(items, "4 ($FFF9)");
|
||||||
|
VarList::push_back(items, "5 ($FFFA)");
|
||||||
|
VarList::push_back(items, "6 ($FFFB)");
|
||||||
|
}
|
||||||
myBank = new PopUpWidget(boss, _font, xpos, ypos, _font.getStringWidth("0 ($FFFx)"),
|
myBank = new PopUpWidget(boss, _font, xpos, ypos, _font.getStringWidth("0 ($FFFx)"),
|
||||||
myLineHeight, items,
|
myLineHeight, items,
|
||||||
"Set bank ", 0, kBankChanged);
|
"Set bank ", 0, kBankChanged);
|
||||||
|
@ -73,7 +83,7 @@ CartridgeCDFWidget::CartridgeCDFWidget(
|
||||||
myCommandStreamPointer->setTarget(this);
|
myCommandStreamPointer->setTarget(this);
|
||||||
myCommandStreamPointer->setEditable(false);
|
myCommandStreamPointer->setEditable(false);
|
||||||
|
|
||||||
if (isCDFJ())
|
if (isCDFJ() || isCDFJplus())
|
||||||
myJumpStreamPointers = new DataGridWidget(boss, _nfont, DS_X + myDatastreamPointers->getWidth() * 2 / 4,
|
myJumpStreamPointers = new DataGridWidget(boss, _nfont, DS_X + myDatastreamPointers->getWidth() * 2 / 4,
|
||||||
ypos+myLineHeight + 9*myLineHeight, 2, 1, 6, 32,
|
ypos+myLineHeight + 9*myLineHeight, 2, 1, 6, 32,
|
||||||
Common::Base::Fmt::_16_3_2);
|
Common::Base::Fmt::_16_3_2);
|
||||||
|
@ -102,7 +112,7 @@ CartridgeCDFWidget::CartridgeCDFWidget(
|
||||||
new StaticTextWidget(_boss, _font, DS_X - _font.getStringWidth("xx "),
|
new StaticTextWidget(_boss, _font, DS_X - _font.getStringWidth("xx "),
|
||||||
ypos+myLineHeight + 9*myLineHeight + 2,
|
ypos+myLineHeight + 9*myLineHeight + 2,
|
||||||
lwidth, myFontHeight,
|
lwidth, myFontHeight,
|
||||||
isCDFJ() ? "Jump Data (21|22)" : "Jump Data (21)");
|
(isCDFJ() || isCDFJplus()) ? "Jump Data (21|22)" : "Jump Data (21)");
|
||||||
|
|
||||||
// Datastream Increments
|
// Datastream Increments
|
||||||
xpos = DS_X + myDatastreamPointers->getWidth() + 16;
|
xpos = DS_X + myDatastreamPointers->getWidth() + 16;
|
||||||
|
@ -121,7 +131,7 @@ CartridgeCDFWidget::CartridgeCDFWidget(
|
||||||
myCommandStreamIncrement->setEditable(false);
|
myCommandStreamIncrement->setEditable(false);
|
||||||
|
|
||||||
myJumpStreamIncrements = new DataGridWidget(boss, _nfont, xpos,
|
myJumpStreamIncrements = new DataGridWidget(boss, _nfont, xpos,
|
||||||
ypos+myLineHeight + 9*myLineHeight, isCDFJ() ? 2 : 1, 1, 5, 32,
|
ypos+myLineHeight + 9*myLineHeight, (isCDFJ() || isCDFJplus()) ? 2 : 1, 1, 5, 32,
|
||||||
Common::Base::Fmt::_16_2_2);
|
Common::Base::Fmt::_16_2_2);
|
||||||
myJumpStreamIncrements->setTarget(this);
|
myJumpStreamIncrements->setTarget(this);
|
||||||
myJumpStreamIncrements->setEditable(false);
|
myJumpStreamIncrements->setEditable(false);
|
||||||
|
@ -205,7 +215,7 @@ void CartridgeCDFWidget::saveOldState()
|
||||||
myOldState.internalram.clear();
|
myOldState.internalram.clear();
|
||||||
myOldState.samplepointer.clear();
|
myOldState.samplepointer.clear();
|
||||||
|
|
||||||
for(uInt32 i = 0; i < static_cast<uInt32>(isCDFJ() ? 35 : 34); ++i)
|
for(uInt32 i = 0; i < static_cast<uInt32>((isCDFJ() || isCDFJplus()) ? 35 : 34); ++i)
|
||||||
{
|
{
|
||||||
// Pointers are stored as:
|
// Pointers are stored as:
|
||||||
// PPPFF---
|
// PPPFF---
|
||||||
|
@ -281,7 +291,7 @@ void CartridgeCDFWidget::loadConfig()
|
||||||
myCommandStreamPointer->setList(alist, vlist, changed);
|
myCommandStreamPointer->setList(alist, vlist, changed);
|
||||||
|
|
||||||
alist.clear(); vlist.clear(); changed.clear();
|
alist.clear(); vlist.clear(); changed.clear();
|
||||||
for(int i = 0; i < (isCDFJ() ? 2 : 1); ++i)
|
for(int i = 0; i < ((isCDFJ() || isCDFJplus()) ? 2 : 1); ++i)
|
||||||
{
|
{
|
||||||
Int32 pointervalue = myCart.getDatastreamPointer(0x21 + i) >> 12;
|
Int32 pointervalue = myCart.getDatastreamPointer(0x21 + i) >> 12;
|
||||||
alist.push_back(0); vlist.push_back(pointervalue);
|
alist.push_back(0); vlist.push_back(pointervalue);
|
||||||
|
@ -305,7 +315,7 @@ void CartridgeCDFWidget::loadConfig()
|
||||||
myCommandStreamIncrement->setList(alist, vlist, changed);
|
myCommandStreamIncrement->setList(alist, vlist, changed);
|
||||||
|
|
||||||
alist.clear(); vlist.clear(); changed.clear();
|
alist.clear(); vlist.clear(); changed.clear();
|
||||||
for(int i = 0; i < (isCDFJ() ? 2 : 1); ++i)
|
for(int i = 0; i < ((isCDFJ() || isCDFJplus()) ? 2 : 1); ++i)
|
||||||
{
|
{
|
||||||
Int32 pointervalue = myCart.getDatastreamIncrement(0x21 + i) >> 12;
|
Int32 pointervalue = myCart.getDatastreamIncrement(0x21 + i) >> 12;
|
||||||
alist.push_back(0); vlist.push_back(pointervalue);
|
alist.push_back(0); vlist.push_back(pointervalue);
|
||||||
|
@ -387,11 +397,12 @@ string CartridgeCDFWidget::bankState()
|
||||||
{
|
{
|
||||||
ostringstream& buf = buffer();
|
ostringstream& buf = buffer();
|
||||||
|
|
||||||
static constexpr std::array<const char*, 7> spot = {
|
static constexpr std::array<const char*, 8> spot = {
|
||||||
"$FFF5", "$FFF6", "$FFF7", "$FFF8", "$FFF9", "$FFFA", "$FFFB"
|
"$FFF4", "$FFF5", "$FFF6", "$FFF7", "$FFF8", "$FFF9", "$FFFA", "$FFFB"
|
||||||
};
|
};
|
||||||
|
|
||||||
buf << "Bank = " << std::dec << myCart.getBank()
|
buf << "Bank = " << std::dec << myCart.getBank()
|
||||||
<< ", hotspot = " << spot[myCart.getBank()];
|
<< ", hotspot = " << spot[myCart.getBank() + (isCDFJplus() ? 0 : 1)];
|
||||||
|
|
||||||
return buf.str();
|
return buf.str();
|
||||||
}
|
}
|
||||||
|
@ -399,7 +410,7 @@ string CartridgeCDFWidget::bankState()
|
||||||
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
uInt32 CartridgeCDFWidget::internalRamSize()
|
uInt32 CartridgeCDFWidget::internalRamSize()
|
||||||
{
|
{
|
||||||
return 8*1024;
|
return isCDFJplus() ? 32*1024 : 8*1024;
|
||||||
}
|
}
|
||||||
|
|
||||||
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
|
@ -412,13 +423,21 @@ uInt32 CartridgeCDFWidget::internalRamRPort(int start)
|
||||||
string CartridgeCDFWidget::internalRamDescription()
|
string CartridgeCDFWidget::internalRamDescription()
|
||||||
{
|
{
|
||||||
ostringstream desc;
|
ostringstream desc;
|
||||||
desc << "$0000 - $07FF - CDF driver\n"
|
if (isCDFJplus()) {
|
||||||
<< " not accessible to 6507\n"
|
desc << "$0000 - $07FF - CDFJ+ driver\n"
|
||||||
<< "$0800 - $17FF - 4K Data Stream storage\n"
|
<< " not accessible to 6507\n"
|
||||||
<< " indirectly accessible to 6507\n"
|
<< "$0800 - $7FFF - 30K Data Stream storage\n"
|
||||||
<< " via CDF's Data Stream registers\n"
|
<< " indirectly accessible to 6507\n"
|
||||||
<< "$1800 - $1FFF - 2K C variable storage and stack\n"
|
<< " via fast fecthers\n";
|
||||||
<< " not accessible to 6507";
|
} else {
|
||||||
|
desc << "$0000 - $07FF - CDF/CDFJ driver\n"
|
||||||
|
<< " not accessible to 6507\n"
|
||||||
|
<< "$0800 - $17FF - 4K Data Stream storage\n"
|
||||||
|
<< " indirectly accessible to 6507\n"
|
||||||
|
<< " via fast fetchers\n"
|
||||||
|
<< "$1800 - $1FFF - 2K C variable storage and stack\n"
|
||||||
|
<< " not accessible to 6507";
|
||||||
|
}
|
||||||
|
|
||||||
return desc.str();
|
return desc.str();
|
||||||
}
|
}
|
||||||
|
@ -478,6 +497,10 @@ string CartridgeCDFWidget::describeCDFVersion(CartridgeCDF::CDFSubtype subtype)
|
||||||
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
bool CartridgeCDFWidget::isCDFJ() const
|
bool CartridgeCDFWidget::isCDFJ() const
|
||||||
{
|
{
|
||||||
return (myCart.myCDFSubtype == CartridgeCDF::CDFSubtype::CDFJ ||
|
return (myCart.myCDFSubtype == CartridgeCDF::CDFSubtype::CDFJ);
|
||||||
myCart.myCDFSubtype == CartridgeCDF::CDFSubtype::CDFJplus); // FIXME: Separate settings for CDFJ+
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool CartridgeCDFWidget::isCDFJplus() const
|
||||||
|
{
|
||||||
|
return (myCart.myCDFSubtype == CartridgeCDF::CDFSubtype::CDFJplus);
|
||||||
|
}
|
|
@ -75,6 +75,7 @@ class CartridgeCDFWidget : public CartDebugWidget
|
||||||
|
|
||||||
private:
|
private:
|
||||||
bool isCDFJ() const;
|
bool isCDFJ() const;
|
||||||
|
bool isCDFJplus() const;
|
||||||
|
|
||||||
static string describeCDFVersion(CartridgeCDF::CDFSubtype subtype);
|
static string describeCDFVersion(CartridgeCDF::CDFSubtype subtype);
|
||||||
|
|
||||||
|
|
|
@ -788,7 +788,7 @@ string CartridgeCDF::name() const
|
||||||
case CDFSubtype::CDFJ:
|
case CDFSubtype::CDFJ:
|
||||||
return "CartridgeCDFJ";
|
return "CartridgeCDFJ";
|
||||||
case CDFSubtype::CDFJplus:
|
case CDFSubtype::CDFJplus:
|
||||||
return "CartridgeCDFJplus";
|
return "CartridgeCDFJ+";
|
||||||
default:
|
default:
|
||||||
return "Cart unknown";
|
return "Cart unknown";
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue