X-Git-Url: http://shamusworld.gotdns.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=src%2Fgui%2Fdebug%2Fcpubrowser.cpp;fp=src%2Fgui%2Fdebug%2Fcpubrowser.cpp;h=067755e483ed159da7c3dc6d5fe6301d6364172b;hb=178d7f01b40cf8367cfe5b71219e6d20f60f92d4;hp=0000000000000000000000000000000000000000;hpb=8fa19895c8308c0a1aee537f971c740eea4bab9e;p=virtualjaguar diff --git a/src/gui/debug/cpubrowser.cpp b/src/gui/debug/cpubrowser.cpp new file mode 100644 index 0000000..067755e --- /dev/null +++ b/src/gui/debug/cpubrowser.cpp @@ -0,0 +1,128 @@ +// +// cpubrowser.cpp - Jaguar CPU browser +// +// by James Hammons +// (C) 2012 Underground Software +// +// JLH = James Hammons +// +// Who When What +// --- ---------- ------------------------------------------------------------- +// JLH 08/14/2012 Created this file +// + +// STILL TO DO: +// + +#include "cpubrowser.h" +//#include "memory.h" +#include "m68000/m68kinterface.h" + + +CPUBrowserWindow::CPUBrowserWindow(QWidget * parent/*= 0*/): QWidget(parent, Qt::Dialog), +// layout(new QVBoxLayout), text(new QTextBrowser), + layout(new QVBoxLayout), text(new QLabel), + refresh(new QPushButton(tr("Refresh"))), + memBase(0) +{ + setWindowTitle(tr("CPU Browser")); + + // Need to set the size as well... +// resize(560, 480); + + QFont fixedFont("Lucida Console", 10, QFont::Normal); + text->setFont(fixedFont); +//// layout->setSizeConstraint(QLayout::SetFixedSize); + setLayout(layout); + + layout->addWidget(text); + layout->addWidget(refresh); + + connect(refresh, SIGNAL(clicked()), this, SLOT(RefreshContents())); +} + + +void CPUBrowserWindow::RefreshContents(void) +{ + char string[1024], buf[64]; + QString s; + + uint32_t m68kPC = m68k_get_reg(NULL, M68K_REG_PC); + uint32_t m68kSR = m68k_get_reg(NULL, M68K_REG_SR); + sprintf(string, "PC: %06X  SR: %04X

", m68kPC, m68kSR); + s += QString(string); + + uint32_t m68kA0 = m68k_get_reg(NULL, M68K_REG_A0); + uint32_t m68kA1 = m68k_get_reg(NULL, M68K_REG_A1); + uint32_t m68kA2 = m68k_get_reg(NULL, M68K_REG_A2); + uint32_t m68kA3 = m68k_get_reg(NULL, M68K_REG_A3); + sprintf(string, "A0: %08X  A1: %08X  A2: %08X  A3: %08X
", m68kA0, m68kA1, m68kA2, m68kA3); + s += QString(string); + + uint32_t m68kA4 = m68k_get_reg(NULL, M68K_REG_A4); + uint32_t m68kA5 = m68k_get_reg(NULL, M68K_REG_A5); + uint32_t m68kA6 = m68k_get_reg(NULL, M68K_REG_A6); + uint32_t m68kA7 = m68k_get_reg(NULL, M68K_REG_A7); + sprintf(string, "A4: %08X  A5: %08X  A6: %08X  A7: %08X

", m68kA4, m68kA5, m68kA6, m68kA7); + s += QString(string); + + uint32_t m68kD0 = m68k_get_reg(NULL, M68K_REG_D0); + uint32_t m68kD1 = m68k_get_reg(NULL, M68K_REG_D1); + uint32_t m68kD2 = m68k_get_reg(NULL, M68K_REG_D2); + uint32_t m68kD3 = m68k_get_reg(NULL, M68K_REG_D3); + sprintf(string, "D0: %08X  D1: %08X  D2: %08X  D3: %08X
", m68kD0, m68kD1, m68kD2, m68kD3); + s += QString(string); + + uint32_t m68kD4 = m68k_get_reg(NULL, M68K_REG_D4); + uint32_t m68kD5 = m68k_get_reg(NULL, M68K_REG_D5); + uint32_t m68kD6 = m68k_get_reg(NULL, M68K_REG_D6); + uint32_t m68kD7 = m68k_get_reg(NULL, M68K_REG_D7); + sprintf(string, "D4: %08X  D5: %08X  D6: %08X  D7: %08X", m68kD4, m68kD5, m68kD6, m68kD7); + s += QString(string); + + text->clear(); + text->setText(s); +} + + +void CPUBrowserWindow::keyPressEvent(QKeyEvent * e) +{ + if (e->key() == Qt::Key_Escape || e->key() == Qt::Key_Return) + hide(); + else if (e->key() == Qt::Key_PageUp) + { + memBase -= 480; + + if (memBase < 0) + memBase = 0; + + RefreshContents(); + } + else if (e->key() == Qt::Key_PageDown) + { + memBase += 480; + + if (memBase > (0x200000 - 480)) + memBase = 0x200000 - 480; + + RefreshContents(); + } + else if (e->key() == Qt::Key_Up || e->key() == Qt::Key_Minus) + { + memBase -= 16; + + if (memBase < 0) + memBase = 0; + + RefreshContents(); + } + else if (e->key() == Qt::Key_Down || e->key() == Qt::Key_Equal) + { + memBase += 16; + + if (memBase > (0x200000 - 480)) + memBase = 0x200000 - 480; + + RefreshContents(); + } +}