]> Shamusworld >> Repos - virtualjaguar/blob - src/gui/debug/cpubrowser.cpp
067755e483ed159da7c3dc6d5fe6301d6364172b
[virtualjaguar] / src / gui / debug / cpubrowser.cpp
1 //
2 // cpubrowser.cpp - Jaguar CPU browser
3 //
4 // by James Hammons
5 // (C) 2012 Underground Software
6 //
7 // JLH = James Hammons <jlhamm@acm.org>
8 //
9 // Who  When        What
10 // ---  ----------  -------------------------------------------------------------
11 // JLH  08/14/2012  Created this file
12 //
13
14 // STILL TO DO:
15 //
16
17 #include "cpubrowser.h"
18 //#include "memory.h"
19 #include "m68000/m68kinterface.h"
20
21
22 CPUBrowserWindow::CPUBrowserWindow(QWidget * parent/*= 0*/): QWidget(parent, Qt::Dialog),
23 //      layout(new QVBoxLayout), text(new QTextBrowser),
24         layout(new QVBoxLayout), text(new QLabel),
25         refresh(new QPushButton(tr("Refresh"))),
26         memBase(0)
27 {
28         setWindowTitle(tr("CPU Browser"));
29
30         // Need to set the size as well...
31 //      resize(560, 480);
32
33         QFont fixedFont("Lucida Console", 10, QFont::Normal);
34         text->setFont(fixedFont);
35 ////    layout->setSizeConstraint(QLayout::SetFixedSize);
36         setLayout(layout);
37
38         layout->addWidget(text);
39         layout->addWidget(refresh);
40
41         connect(refresh, SIGNAL(clicked()), this, SLOT(RefreshContents()));
42 }
43
44
45 void CPUBrowserWindow::RefreshContents(void)
46 {
47         char string[1024], buf[64];
48         QString s;
49
50         uint32_t m68kPC = m68k_get_reg(NULL, M68K_REG_PC);
51         uint32_t m68kSR = m68k_get_reg(NULL, M68K_REG_SR);
52         sprintf(string, "PC: %06X&nbsp;&nbsp;SR: %04X<br><br>", m68kPC, m68kSR);
53         s += QString(string);
54
55         uint32_t m68kA0 = m68k_get_reg(NULL, M68K_REG_A0);
56         uint32_t m68kA1 = m68k_get_reg(NULL, M68K_REG_A1);
57         uint32_t m68kA2 = m68k_get_reg(NULL, M68K_REG_A2);
58         uint32_t m68kA3 = m68k_get_reg(NULL, M68K_REG_A3);
59         sprintf(string, "A0: %08X&nbsp;&nbsp;A1: %08X&nbsp;&nbsp;A2: %08X&nbsp;&nbsp;A3: %08X<br>", m68kA0, m68kA1, m68kA2, m68kA3);
60         s += QString(string);
61
62         uint32_t m68kA4 = m68k_get_reg(NULL, M68K_REG_A4);
63         uint32_t m68kA5 = m68k_get_reg(NULL, M68K_REG_A5);
64         uint32_t m68kA6 = m68k_get_reg(NULL, M68K_REG_A6);
65         uint32_t m68kA7 = m68k_get_reg(NULL, M68K_REG_A7);
66         sprintf(string, "A4: %08X&nbsp;&nbsp;A5: %08X&nbsp;&nbsp;A6: %08X&nbsp;&nbsp;A7: %08X<br><br>", m68kA4, m68kA5, m68kA6, m68kA7);
67         s += QString(string);
68
69         uint32_t m68kD0 = m68k_get_reg(NULL, M68K_REG_D0);
70         uint32_t m68kD1 = m68k_get_reg(NULL, M68K_REG_D1);
71         uint32_t m68kD2 = m68k_get_reg(NULL, M68K_REG_D2);
72         uint32_t m68kD3 = m68k_get_reg(NULL, M68K_REG_D3);
73         sprintf(string, "D0: %08X&nbsp;&nbsp;D1: %08X&nbsp;&nbsp;D2: %08X&nbsp;&nbsp;D3: %08X<br>", m68kD0, m68kD1, m68kD2, m68kD3);
74         s += QString(string);
75
76         uint32_t m68kD4 = m68k_get_reg(NULL, M68K_REG_D4);
77         uint32_t m68kD5 = m68k_get_reg(NULL, M68K_REG_D5);
78         uint32_t m68kD6 = m68k_get_reg(NULL, M68K_REG_D6);
79         uint32_t m68kD7 = m68k_get_reg(NULL, M68K_REG_D7);
80         sprintf(string, "D4: %08X&nbsp;&nbsp;D5: %08X&nbsp;&nbsp;D6: %08X&nbsp;&nbsp;D7: %08X", m68kD4, m68kD5, m68kD6, m68kD7);
81         s += QString(string);
82
83         text->clear();
84         text->setText(s);
85 }
86
87
88 void CPUBrowserWindow::keyPressEvent(QKeyEvent * e)
89 {
90         if (e->key() == Qt::Key_Escape || e->key() == Qt::Key_Return)
91                 hide();
92         else if (e->key() == Qt::Key_PageUp)
93         {
94                 memBase -= 480;
95
96                 if (memBase < 0)
97                         memBase = 0;
98
99                 RefreshContents();
100         }
101         else if (e->key() == Qt::Key_PageDown)
102         {
103                 memBase += 480;
104
105                 if (memBase > (0x200000 - 480))
106                         memBase = 0x200000 - 480;
107
108                 RefreshContents();
109         }
110         else if (e->key() == Qt::Key_Up || e->key() == Qt::Key_Minus)
111         {
112                 memBase -= 16;
113
114                 if (memBase < 0)
115                         memBase = 0;
116
117                 RefreshContents();
118         }
119         else if (e->key() == Qt::Key_Down || e->key() == Qt::Key_Equal)
120         {
121                 memBase += 16;
122
123                 if (memBase > (0x200000 - 480))
124                         memBase = 0x200000 - 480;
125
126                 RefreshContents();
127         }
128 }