Local browser window displays variables values from parameters
[clinton/Virtual-Jaguar-Rx.git] / src / debugger / localbrowser.cpp
index 3b8d816..77e7102 100644 (file)
@@ -84,10 +84,12 @@ bool LocalBrowserWindow::UpdateInfos(void)
                                LocalInfo = (WatchInfo *)realloc(LocalInfo, (sizeof(WatchInfo) * NbLocal));\r
                                for (size_t i = 0; i < NbLocal; i++)\r
                                {\r
+                                       // Get local variable name and his information\r
                                        if (LocalInfo[i].PtrVariableName = DBGManager_GetLocalVariableName(Adr, i + 1))\r
                                        {\r
                                                LocalInfo[i].Op = DBGManager_GetLocalVariableOp(Adr, i + 1);\r
                                                LocalInfo[i].Adr = NULL;\r
+                                               LocalInfo[i].PtrCPURegisterName = NULL;\r
                                                LocalInfo[i].TypeTag = DBGManager_GetLocalVariableTypeTag(Adr, i + 1);\r
                                                LocalInfo[i].PtrVariableBaseTypeName = DBGManager_GetLocalVariableTypeName(Adr, i + 1);\r
                                                LocalInfo[i].TypeEncoding = DBGManager_GetLocalVariableTypeEncoding(Adr, i + 1);\r
@@ -118,6 +120,8 @@ void LocalBrowserWindow::RefreshContents(void)
 //     size_t NbWatch, Adr;\r
 //     WatchInfo PtrLocalInfo;\r
 \r
+       const char *CPURegName[] = { "D0", "D1", "D2", "D3", "D4", "D5", "D6", "D7", "A0", "A1", "A2", "A3", "A4", "A5", "A6", "A7" };\r
+\r
        if (isVisible())\r
        {\r
                if (UpdateInfos())\r
@@ -137,10 +141,16 @@ void LocalBrowserWindow::RefreshContents(void)
                        {\r
                                if (LocalInfo[i].PtrVariableName)\r
                                {\r
-                                       if (((LocalInfo[i].Op >= DBG_OP_breg0) && (LocalInfo[i].Op <= DBG_OP_breg31)))\r
+                                       // Local or parameters variables\r
+                                       if (((LocalInfo[i].Op >= DBG_OP_breg0) && (LocalInfo[i].Op <= DBG_OP_breg31)) || (LocalInfo[i].Op == DBG_OP_fbreg))\r
                                        {\r
                                                LocalInfo[i].Adr = m68k_get_reg(NULL, M68K_REG_A6) + LocalInfo[i].Offset;\r
 \r
+                                               if ((LocalInfo[i].Op == DBG_OP_fbreg))\r
+                                               {\r
+                                                       LocalInfo[i].Adr += 8;\r
+                                               }\r
+\r
                                                if ((LocalInfo[i].Adr >= 0) && (LocalInfo[i].Adr < vjs.DRAM_size))\r
                                                {\r
                                                        PtrValue = DBGManager_GetVariableValueFromAdr(LocalInfo[i].Adr, LocalInfo[i].TypeEncoding, LocalInfo[i].TypeByteSize);\r
@@ -152,8 +162,10 @@ void LocalBrowserWindow::RefreshContents(void)
                                        }\r
                                        else\r
                                        {\r
+                                               // Value from CPU register\r
                                                if ((LocalInfo[i].Op >= DBG_OP_reg0) && (LocalInfo[i].Op <= DBG_OP_reg31))\r
                                                {\r
+                                                       LocalInfo[i].PtrCPURegisterName = (char *)CPURegName[(LocalInfo[i].Op - DBG_OP_reg0)];\r
                                                        PtrValue = itoa(m68k_get_reg(NULL, (m68k_register_t)((size_t)M68K_REG_D0 + (LocalInfo[i].Op - DBG_OP_reg0))), Value, 10);\r
                                                }\r
                                                else\r
@@ -170,7 +182,14 @@ void LocalBrowserWindow::RefreshContents(void)
                                        }\r
                                        else\r
                                        {\r
-                                               sprintf(string, "%s", (char *)"<font color='#ff0000'>N/A</font>");\r
+                                               if (LocalInfo[i].PtrCPURegisterName)\r
+                                               {\r
+                                                       sprintf(string, "<font color='#0000FF'>%s</font>", LocalInfo[i].PtrCPURegisterName);\r
+                                               }\r
+                                               else\r
+                                               {\r
+                                                       sprintf(string, "%s", (char *)"<font color='#ff0000'>N/A</font>");\r
+                                               }                                               \r
                                        }\r
                                        Local += QString(string);\r
                                        sprintf(string, " | %s", (!PtrValue ? (char *)"<font color='#ff0000'>N/A</font>" : PtrValue));\r