Cosmetic changes on UI and icons.
[clinton/Virtual-Jaguar-Rx.git] / src / gui / debug / stackbrowser.cpp
index ebd68ac..1bc1e5c 100644 (file)
@@ -20,7 +20,7 @@
 #include "settings.h"\r
 \r
 \r
-//#define DEBUG_SPDISPLAY 26                   // To fill up to 256 bytes with values from 0 to $FF below the SP pointer\r
+//#define DEBUG_SPDISPLAY 1000         // To fill up to 256 bytes with values from 0 to $FF below the SP pointer any above are random values\r
 \r
 \r
 //\r
@@ -31,10 +31,8 @@ StackBrowserWindow::StackBrowserWindow(QWidget * parent/*= 0*/): QWidget(parent,
        //refresh(new QPushButton(tr("Refresh"))),\r
        //address(new QLineEdit),\r
        //go(new QPushButton(tr("Go"))),\r
-       memBase(m68k_get_reg(NULL, M68K_REG_SP))\r
+       stackBase(m68k_get_reg(NULL, M68K_REG_SP))\r
 {\r
-       setWindowTitle(tr("Stack Browser"));\r
-\r
 /*\r
        address->setInputMask("hhhhhh");\r
        QHBoxLayout * hbox1 = new QHBoxLayout;\r
@@ -69,36 +67,60 @@ StackBrowserWindow::StackBrowserWindow(QWidget * parent/*= 0*/): QWidget(parent,
 // \r
 void StackBrowserWindow::RefreshContents(void)\r
 {\r
-       char string[1024], buf[64];\r
-       QString memDump;\r
-       size_t i, j;\r
-       uint8_t c;\r
+       char string[1024];\r
 \r
        if (isVisible())\r
        {\r
-               memBase = m68k_get_reg(NULL, M68K_REG_SP);\r
+#ifdef DEBUG_SPDISPLAY\r
+               m68k_set_reg(M68K_REG_SP, (vjs.DRAM_size - DEBUG_SPDISPLAY));\r
+#endif\r
+               if ((stackBase = m68k_get_reg(NULL, M68K_REG_SP)) && (stackBase < vjs.DRAM_size))\r
+               {\r
 \r
 #ifdef DEBUG_SPDISPLAY\r
+                       for (int i = 0; i < DEBUG_SPDISPLAY; i++)\r
+                       {\r
 #if DEBUG_SPDISPLAY < 257\r
-               memBase -= DEBUG_SPDISPLAY;\r
-               for (i = 0; i < DEBUG_SPDISPLAY; i++)\r
-               {\r
-                       jaguarMainRAM[memBase + i] = (uint8_t)i;\r
-               }\r
+                               jaguarMainRAM[stackBase + i] = (uint8_t)i;\r
+#else\r
+                               jaguarMainRAM[stackBase + i] = (uint8_t)rand();\r
 #endif\r
+                       }\r
 #endif\r
+                       sprintf(string, "Stack Browser - 0x%06X", (unsigned int)(stackBase, (unsigned int)stackBase));\r
+               }\r
+               else\r
+               {\r
+                       sprintf(string, "Stack Browser");\r
+               }\r
+\r
+               setWindowTitle(tr(string));\r
+               RefreshContentsWindow();\r
+       }\r
+}\r
+\r
 \r
+// Refresh / Display the window contents\r
+void StackBrowserWindow::RefreshContentsWindow(void)\r
+{\r
+       char string[2048], buf[64];\r
+       QString memDump;\r
+       size_t i, j;\r
+       uint8_t c;\r
+\r
+       if (stackBase < vjs.DRAM_size)\r
+       {\r
                for (i = 0; i < 480; i += 16)\r
                {\r
-                       if ((memBase + i) < vjs.DRAM_size)\r
+                       if ((stackBase + i) < vjs.DRAM_size)\r
                        {\r
-                               sprintf(string, "%s%06X: ", (i ? "<br>" : ""), (unsigned int)(memBase + i));\r
+                               sprintf(string, "%s%06X: ", (i ? "<br>" : ""), (unsigned int)(stackBase + i));\r
 \r
                                for (j = 0; j < 16; j++)\r
                                {\r
-                                       if ((memBase + i + j) < vjs.DRAM_size)\r
+                                       if ((stackBase + i + j) < vjs.DRAM_size)\r
                                        {\r
-                                               sprintf(buf, "%02X ", jaguarMainRAM[memBase + i + j]);\r
+                                               sprintf(buf, "%02X ", jaguarMainRAM[stackBase + i + j]);\r
                                        }\r
                                        else\r
                                        {\r
@@ -113,7 +135,7 @@ void StackBrowserWindow::RefreshContents(void)
 #ifdef _MSC_VER\r
 #pragma message("Warning: !!! Need to dig the reason(s) why the 2nd line needs to use the &nbsp; instead of space !!!")\r
 #else\r
-#warning "!!! Need to dig the reason(s) why the 2nd line needs to use the &nbsp; instead of space !!!"\r
+                                               #warning "!!! Need to dig the reason(s) why the 2nd line needs to use the &nbsp; instead of space !!!"\r
 #endif // _MSC_VER\r
                                        }\r
                                        strcat(string, buf);\r
@@ -125,9 +147,9 @@ void StackBrowserWindow::RefreshContents(void)
 \r
                                for (j = 0; j < 16; j++)\r
                                {\r
-                                       if ((memBase + i + j) < vjs.DRAM_size)\r
+                                       if ((stackBase + i + j) < vjs.DRAM_size)\r
                                        {\r
-                                               c = jaguarMainRAM[memBase + i + j];\r
+                                               c = jaguarMainRAM[stackBase + i + j];\r
                                                //sprintf(buf, "&#%i;", c);\r
 \r
                                                //if (c == 0x20)\r
@@ -157,56 +179,88 @@ void StackBrowserWindow::RefreshContents(void)
                                memDump += QString(string);\r
                        }\r
                }\r
-\r
-               text->clear();\r
-               text->setText(memDump);\r
        }\r
+       else\r
+       {\r
+               memDump += QString("");\r
+       }\r
+\r
+       text->clear();\r
+       text->setText(memDump);\r
 }\r
 \r
 \r
-/*\r
+/\r
 void StackBrowserWindow::keyPressEvent(QKeyEvent * e)\r
 {\r
-       if (e->key() == Qt::Key_Escape)\r
-               hide();\r
-       else if (e->key() == Qt::Key_PageUp)\r
-       {\r
-               memBase -= 480;\r
+       size_t offset;\r
 \r
-               if (memBase < 0)\r
-                       memBase = 0;\r
-\r
-               RefreshContents();\r
-       }\r
-       else if (e->key() == Qt::Key_PageDown)\r
+       // Escape key to hide the window\r
+       if (e->key() == Qt::Key_Escape)\r
        {\r
-               memBase += 480;\r
-\r
-               if (memBase > (0x200000 - 480))\r
-                       memBase = 0x200000 - 480;\r
-\r
-               RefreshContents();\r
+               hide();\r
        }\r
-       else if (e->key() == Qt::Key_Up || e->key() == Qt::Key_Minus)\r
+       else\r
        {\r
-               memBase -= 16;\r
-\r
-               if (memBase < 0)\r
-                       memBase = 0;\r
+               if (stackBase < vjs.DRAM_size)\r
+               {\r
+                       if (e->key() == Qt::Key_PageUp)\r
+                       {\r
+                               offset = -480;\r
+                       }\r
+                       else\r
+                       {\r
+                               if (e->key() == Qt::Key_PageDown)\r
+                               {\r
+                                       offset = 480;\r
+                               }\r
+                               else\r
+                               {\r
+                                       if (e->key() == Qt::Key_Up || e->key() == Qt::Key_Minus)\r
+                                       {\r
+                                               offset = -16;\r
+                                       }\r
+                                       else\r
+                                       {\r
+                                               if (e->key() == Qt::Key_Down || e->key() == Qt::Key_Plus)\r
+                                               {\r
+                                                       offset = 16;\r
+                                               }\r
+                                               else\r
+                                               {\r
+                                                       offset = 0;\r
+                                               }\r
+                                       }\r
+                               }\r
+                       }\r
 \r
-               RefreshContents();\r
-       }\r
-       else if (e->key() == Qt::Key_Down || e->key() == Qt::Key_Equal)\r
-       {\r
-               memBase += 16;\r
+                       if (offset)\r
+                       {\r
+                               if (offset < 0)\r
+                               {\r
+                                       if ((stackBase += offset) < m68k_get_reg(NULL, M68K_REG_SP))\r
+                                       {\r
+                                               stackBase = m68k_get_reg(NULL, M68K_REG_SP);\r
+                                       }\r
+                               }\r
+                               else\r
+                               {\r
+                                       if ((stackBase += offset) > (vjs.DRAM_size - 480))\r
+                                       {\r
+                                               stackBase = vjs.DRAM_size - 480;\r
+                                       }\r
 \r
-               if (memBase > (0x200000 - 480))\r
-                       memBase = 0x200000 - 480;\r
+                                       if (stackBase < m68k_get_reg(NULL, M68K_REG_SP))\r
+                                       {\r
+                                               stackBase = m68k_get_reg(NULL, M68K_REG_SP);\r
+                                       }\r
+                               }\r
 \r
-               RefreshContents();\r
+                               RefreshContentsWindow();\r
+                       }\r
+               }\r
        }\r
 }\r
-*/\r
 \r
 \r
 /*\r
@@ -214,7 +268,7 @@ void StackBrowserWindow::GoToAddress(void)
 {\r
        bool ok;\r
        QString newAddress = address->text();\r
-       memBase = newAddress.toUInt(&ok, 16);\r
+       stackBase = newAddress.toUInt(&ok, 16);\r
        RefreshContents();\r
 }\r
 */\r