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
;
69 for (uint32_t i
= 0; i
< 32; i
++)
72 pc
+= m68k_disassemble(buffer
, pc
, 0, 1);
73 // WriteLog("%06X: %s\n", oldpc, buffer);
74 sprintf(string
, "%06X: %s<br>", oldpc
, buffer
);
76 buffer
[0] = 0; // Clear string
77 char singleCharString
[2] = { 0, 0 };
79 for (int j
= 0; j
< strlen(string
); j
++)
82 strcat(buffer
, " ");
85 singleCharString
[0] = string
[j
];
86 strcat(buffer
, singleCharString
);
90 // s += QString(string);
100 void M68KDasmBrowserWindow::keyPressEvent(QKeyEvent
* e
)
102 if (e
->key() == Qt::Key_Escape
|| e
->key() == Qt::Key_Return
)
105 else if (e
->key() == Qt::Key_PageUp
)
114 else if (e
->key() == Qt::Key_PageDown
)
118 if (memBase
> (0xF00000 - 64))
119 memBase
= 0xF00000 - 64;
123 else if (e
->key() == Qt::Key_Up
|| e
->key() == Qt::Key_Minus
)
132 else if (e
->key() == Qt::Key_Down
|| e
->key() == Qt::Key_Equal
)
136 if (memBase
> (0xF00000 - 64))
137 memBase
= 0xF00000 - 64;
145 void M68KDasmBrowserWindow::GoToAddress(void)
148 QString newAddress
= address
->text();
149 memBase
= newAddress
.toUInt(&ok
, 16);