2 // m68kdasmbrowser.cpp - Jaguar M68K disassembly browser
5 // (C) 2012 Underground Software
7 // JLH = James Hammons <jlhamm@acm.org>
10 // --- ---------- -------------------------------------------------------------
11 // JLH 12/01/2012 Created this file
17 #include "m68kdasmbrowser.h"
19 #include "m68000/m68kinterface.h"
24 M68KDasmBrowserWindow::M68KDasmBrowserWindow(QWidget * parent/*= 0*/): QWidget(parent, Qt::Dialog),
25 // layout(new QVBoxLayout), text(new QTextBrowser),
26 layout(new QVBoxLayout), text(new QLabel),
27 refresh(new QPushButton(tr("Refresh"))),
28 address(new QLineEdit),
29 go(new QPushButton(tr("Go"))),
32 setWindowTitle(tr("M68K Disassembly Browser"));
34 address->setInputMask("hhhhhh");
35 QHBoxLayout * hbox1 = new QHBoxLayout;
36 hbox1->addWidget(refresh);
37 hbox1->addWidget(address);
40 // Need to set the size as well...
43 QFont fixedFont("Lucida Console", 8, QFont::Normal);
44 // QFont fixedFont("", 8, QFont::Normal);
45 fixedFont.setStyleHint(QFont::TypeWriter);
46 text->setFont(fixedFont);
47 //// layout->setSizeConstraint(QLayout::SetFixedSize);
50 layout->addWidget(text);
51 // layout->addWidget(refresh);
52 layout->addLayout(hbox1);
54 connect(refresh, SIGNAL(clicked()), this, SLOT(RefreshContents()));
55 connect(go, SIGNAL(clicked()), this, SLOT(GoToAddress()));
59 void M68KDasmBrowserWindow::RefreshContents(void)
61 char string[1024];//, buf[64];
65 int pc = memBase, oldpc;
67 for(uint32_t i=0; i<32; i++)
70 pc += m68k_disassemble(buffer, pc, 0);
71 // WriteLog("%06X: %s\n", oldpc, buffer);
72 sprintf(string, "%06X: %s<br>", oldpc, buffer);
74 buffer[0] = 0; // Clear string
75 char singleCharString[2] = { 0, 0 };
77 for(int j=0; j<strlen(string); j++)
80 strcat(buffer, " ");
83 singleCharString[0] = string[j];
84 strcat(buffer, singleCharString);
88 // s += QString(string);
97 void M68KDasmBrowserWindow::keyPressEvent(QKeyEvent * e)
99 if (e->key() == Qt::Key_Escape || e->key() == Qt::Key_Return)
102 else if (e->key() == Qt::Key_PageUp)
111 else if (e->key() == Qt::Key_PageDown)
115 if (memBase > (0xF00000 - 64))
116 memBase = 0xF00000 - 64;
120 else if (e->key() == Qt::Key_Up || e->key() == Qt::Key_Minus)
129 else if (e->key() == Qt::Key_Down || e->key() == Qt::Key_Equal)
133 if (memBase > (0xF00000 - 64))
134 memBase = 0xF00000 - 64;
142 void M68KDasmBrowserWindow::GoToAddress(void)
145 QString newAddress = address->text();
146 memBase = newAddress.toUInt(&ok, 16);