fancier IO regs :)

This commit is contained in:
damdoum 2007-01-15 15:22:37 +00:00
parent 7323665278
commit 28feb18d7e
5 changed files with 283 additions and 530 deletions

View File

@ -20,11 +20,15 @@
*/
#include "callbacks_dtools.h"
#include "dTools_display.h"
/* ***** ***** IO REGISTERS ***** ***** */
static int cpu=0;
static BOOL autorefresh;
static BOOL init=FALSE;
static int size_=0;
static dTools_dsp dsp;
static void update_regs_fast();
static void update_regs();
/* Register name list */
@ -50,30 +54,86 @@ const reg_name_addr Reg_Names_Addr[NBR_IO_REGS] =
/* update */
static void wtools_1_update () {
if(autorefresh) update_regs();
update_regs_fast();
}
/* Update register display */
static u32 mem[NBR_IO_REGS];
static void update_regs_fast(){
char text[10], *mask;
int i; u32 w, m;
for( i = 0; i < NBR_IO_REGS; i++ )
{
w = MMU_read32(cpu,Reg_Names_Addr[i].addr);
m = mem[i];
if ( Reg_Names_Addr[i].trunc ) {
mask = " 0x%04X";
w &= 0xFFFF;
m &= 0xFFFF;
} else {
mask = "0x%08X";
}
mem[i] = w;
if (w == m) continue;
sprintf(text, mask, w);
dTools_display_select_attr(&dsp, 2);
dTools_display_clear_char(&dsp, size_+3, i, 10);
dTools_display_draw_text(&dsp, size_+3, i, text);
}
}
static void update_regs()
{
char lbl_name[40];
char lbl_text[40];
char * mask;
GtkWidget * lbl;
int i;
u32 w;
char text[80], *mask;
int len, i;
if (init==FALSE) {
GtkWidget * wPaint = glade_xml_get_widget(xml_tools, "wtools_1_draw");
for( i = 0; i < NBR_IO_REGS; i++ ) {
len = strlen(Reg_Names_Addr[i].name);
if (size_<len) size_=len;
}
len = size_ + strlen(" : 0x00000000");
dTools_display_init(&dsp, wPaint, len, NBR_IO_REGS, 5);
dTools_display_add_markup(&dsp, "<tt><span foreground=\"blue\"> </span></tt>");
dTools_display_add_markup(&dsp, "<tt>0x00000000</tt>");
dTools_display_add_markup(&dsp, "<tt><span foreground=\"red\">0x00000000</span></tt>");
init=TRUE;
}
dTools_display_clear(&dsp);
for( i = 0; i < NBR_IO_REGS; i++ )
{
mask = ( Reg_Names_Addr[i].trunc ) ? " 0x%04X" : "0x%08X";
sprintf(lbl_name,"wtools_1_%s_value\0\0", Reg_Names_Addr[i].name);
w = MMU_read32(cpu,Reg_Names_Addr[i].addr);
sprintf(lbl_text, mask, w);
lbl = glade_xml_get_widget(xml_tools, lbl_name);
gtk_label_set_text((GtkLabel *)lbl, lbl_text);
mem[i] = MMU_read32(cpu,Reg_Names_Addr[i].addr);
sprintf(text, mask, mem[i]);
dTools_display_select_attr(&dsp, 0);
dTools_display_draw_text(&dsp, 0, i, Reg_Names_Addr[i].name);
dTools_display_draw_text(&dsp, size_, i, " : ");
dTools_display_select_attr(&dsp, 1);
dTools_display_draw_text(&dsp, size_+3, i, text);
}
}
gboolean on_wtools_1_draw_button_release_event(GtkWidget *widget, GdkEventButton *event, gpointer user_data) {
// clear the red marks :)
if (event->button==1)
update_regs();
}
gboolean on_wtools_1_draw_expose_event (GtkWidget *widget, GdkEventExpose *event, gpointer user_data) {
update_regs();
return TRUE;
}
void on_wtools_1_combo_cpu_changed (GtkComboBox *widget, gpointer user_data) {
/* c == 0 means ARM9 */
cpu=gtk_combo_box_get_active(widget);
@ -86,6 +146,7 @@ void on_wtools_1_IOregs_show (GtkWidget *widget, gpointer user_data) {
// do as if we had selected this button and ARM7 cpu
gtk_combo_box_set_active((GtkComboBox*)combo, 0);
register_Tool(wtools_1_update);
}
gboolean on_wtools_1_IOregs_close (GtkWidget *widget, ...) {
@ -94,24 +155,3 @@ gboolean on_wtools_1_IOregs_close (GtkWidget *widget, ...) {
return TRUE;
}
void on_wtools_1_autorefresh_toggled (GtkToggleButton *tb, gpointer user_data)
{
GtkWidget * b = glade_xml_get_widget(xml_tools, "wtools_1_refresh");
if( gtk_toggle_button_get_active(tb) == TRUE )
{
autorefresh = TRUE;
register_Tool(wtools_1_update);
gtk_widget_set_sensitive( b, FALSE );
}
else
{
autorefresh = FALSE;
unregister_Tool(wtools_1_update);
gtk_widget_set_sensitive( b, TRUE );
}
}
void on_wtools_1_refresh_clicked (GtkButton *b, gpointer user_data)
{
update_regs();
}

View File

@ -20,7 +20,7 @@
*/
#include "callbacks_dtools.h"
#include "dTools_display.h"
/* ***** ***** MEMORY VIEWER ***** ***** */
@ -33,13 +33,11 @@ enum SHOW {
static BOOL init=FALSE;
static enum SHOW packmode=Bit8;
static u32 address=0, tmpaddr=0, bpl=0; int cpu=0;
static PangoAttrList *attr_Text8,*attr_Text16,*attr_Text32,*attr_red;
static char patt[512];
static u8 mem[0x100];
static int w,h;
static dTools_dsp dsp;
static GtkEntry *wAddress;
static GtkDrawingArea *wPaint;
static GtkRange *wRange;
static void refresh();
@ -49,65 +47,55 @@ static void initialize();
/* update */
static void wtools_2_update() {
int i,j, x,y=5;
int px = w/78, qx;
u8 m8, *mem8 =mem; u16 m16, *mem16=(u16*)mem; u32 m32, *mem32=(u32*)mem;
int i,j;
u8 m8, *mem8 =mem;
u16 m16, *mem16=(u16*)mem;
u32 m32, *mem32=(u32*)mem;
u32 addr;
char txt[16];
GtkWidget * area = (GtkWidget*)wPaint;
PangoLayout* playout = gtk_widget_create_pango_layout(area, NULL);
GdkGC * GC = area->style->fg_gc[area->state];
pango_layout_set_attributes(playout, attr_red);
#define PAINT_TEXT(w) \
gdk_draw_rectangle(area->window, area->style->white_gc, TRUE, x, y, w, h); \
pango_layout_set_text(playout, txt, -1); \
gdk_draw_layout(area->window, GC, x, y, playout);
// red
dTools_display_select_attr(&dsp, 3);
addr = address;
switch (packmode) {
case Bit8:
for (i=0; i<0x10; i++, y+=h) {
x = 12 * px + 10; qx = 62 * px + 10;
for (j=0; j<16; j++, addr++,mem8++,x+=3*px,qx+=px) {
for (i=0; i<0x10; i++) {
for (j=0; j<16; j++, addr++,mem8++) {
m8 = *mem8; *mem8 = MMU_readByte(cpu, addr);
if (m8 != *mem8) {
sprintf(txt, "%02X", *mem8);
PAINT_TEXT(3*px)
dTools_display_clear_char(&dsp, 12+j, i, 3);
dTools_display_draw_text(&dsp, 12+j, i, txt);
}
}
}
break;
case Bit16:
for (i=0; i<0x10; i++, y+=h) {
x = 12 * px + 10; qx = 62 * px + 10;
for (j=0; j<8; j++, addr+=2,mem16++,x+=6*px,qx+=2*px) {
for (i=0; i<0x10; i++) {
for (j=0; j<16; j+=2, addr+=2,mem16++) {
m16 = *mem16; *mem16 = MMU_readHWord(cpu, addr);
if (m16 != *mem16) {
sprintf(txt, " %04X", *mem16);
PAINT_TEXT(6*px)
dTools_display_clear_char(&dsp, 12+j, i, 6);
dTools_display_draw_text(&dsp, 12+j, i, txt);
}
}
}
break;
case Bit32:
for (i=0; i<0x10; i++, y+=h) {
x = 12 * px + 10; qx = 62 * px + 10;
for (j=0; j<4; j++, addr+=4,mem32++,x+=12*px,qx+=4*px) {
for (i=0; i<0x10; i++) {
for (j=0; j<16; j+=4, addr+=4,mem32++) {
m32 = *mem32; *mem32 = MMU_readWord(cpu, addr);
if (m32 != *mem32) {
sprintf(txt, " %08X", *mem32);
PAINT_TEXT(12*px)
dTools_display_clear_char(&dsp, 12+j, i, 12);
dTools_display_draw_text(&dsp, 12+j, i, txt);
}
}
}
break;
}
g_object_unref(playout);
#undef PAINT_TEXT
}
gboolean on_wtools_2_draw_button_release_event(GtkWidget *widget, GdkEventButton *event, gpointer user_data) {
@ -172,6 +160,7 @@ void on_wtools_2_MemView_show (GtkWidget *widget, gpointer user_data) {
}
gboolean on_wtools_2_MemView_close (GtkWidget *widget, ...) {
unregister_Tool(wtools_2_update);
dTools_display_free(&dsp);
gtk_widget_hide(widget);
return TRUE;
}
@ -204,6 +193,7 @@ gboolean on_wtools_2_draw_expose_event (GtkWidget *widget, GdkEventExpose *event
static void initialize() {
GtkWidget * combo;
GtkWidget * wPaint;
GtkAdjustment *adj;
int i,j;
@ -214,72 +204,56 @@ static void initialize() {
// get widget reference
wAddress = (GtkEntry*)glade_xml_get_widget(xml_tools, "wtools_2_GotoAddress");
wPaint = (GtkDrawingArea*)glade_xml_get_widget(xml_tools, "wtools_2_draw");
wRange = (GtkRange*)glade_xml_get_widget(xml_tools, "wtools_2_scroll");
wPaint = glade_xml_get_widget(xml_tools, "wtools_2_draw");
gtk_combo_box_set_active((GtkComboBox*)combo, 0);
gtk_range_set_adjustment(wRange, adj);
strcpy(patt, "<tt><span foreground=\"red\">__00000000__</span></tt>");
pango_parse_markup(patt,-1,0,&attr_red,NULL,NULL,NULL);
dTools_display_init(&dsp, wPaint, 80, 16, 5);
#define PATT(x) x"<span foreground=\"#608060\">" x "</span>"
#define DUP(x) x x
strcpy(patt, "<tt><span foreground=\"blue\">0000:0000</span> | ");
strcat(patt, DUP(DUP(DUP(PATT("00_")))) );
strcat(patt, "| 0123456789ABCDEF</tt>");
pango_parse_markup(patt,-1,0,&attr_Text8,NULL,NULL,NULL);
strcpy(patt, "<tt><span foreground=\"blue\">0000:0000</span> | ");
strcat(patt, DUP(DUP(PATT("_0000_"))) );
strcat(patt, "| 0123456789ABCDEF</tt>");
pango_parse_markup(patt,-1,0,&attr_Text16,NULL,NULL,NULL);
strcpy(patt, "<tt><span foreground=\"blue\">0000:0000</span> | ");
strcat(patt, DUP(PATT("__00000000__")) );
strcat(patt, "| 0123456789ABCDEF</tt>");
pango_parse_markup(patt,-1,0,&attr_Text32,NULL,NULL,NULL);
sprintf(patt, "<tt><span foreground=\"blue\">0000:0000</span> | %s| 0123456789ABCDEF</tt>", DUP(DUP(DUP(PATT("00_")))) );
dTools_display_add_markup(&dsp, patt);
sprintf(patt, "<tt><span foreground=\"blue\">0000:0000</span> | %s| 0123456789ABCDEF</tt>", DUP(DUP(PATT("_0000_"))) );
dTools_display_add_markup(&dsp, patt);
sprintf(patt, "<tt><span foreground=\"blue\">0000:0000</span> | %s| 0123456789ABCDEF</tt>", DUP(PATT("__00000000__")) );
dTools_display_add_markup(&dsp, patt);
#undef DUP
#undef PATT
strcpy(patt, "<tt><span foreground=\"red\">__00000000__</span></tt>");
dTools_display_add_markup(&dsp, patt);
init = TRUE;
gtk_combo_box_set_active((GtkComboBox*)combo, 0);
gtk_range_set_adjustment(wRange, adj);
change_address(RANGE_MIN);
}
/* PAINT memory panel */
static void refresh() {
GtkWidget * area = (GtkWidget*)wPaint;
PangoLayout* playout = gtk_widget_create_pango_layout(area, NULL);
GdkGC * GC = area->style->fg_gc[area->state];
int i,j,addr, x,y; u8 c;
int i,j,addr;
u8 c;
u8 *mem8=mem;
u16 *mem16=(u16*)mem;
u32 *mem32=(u32*)mem;
char *ptxt, txt[]="0000:0000 | 00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF | 0123456789ABCDEF\0";
PangoAttrList *attr;
switch(packmode){
default:
case Bit8: attr=attr_Text8; break;
case Bit16: attr=attr_Text16; break;
case Bit32: attr=attr_Text32; break;
}
if (!init) return;
for (i=0; i<0x100; i++)
mem[i] = MMU_readByte(cpu, address+i);
dTools_display_clear(&dsp);
switch(packmode) {
case Bit8: dTools_display_select_attr(&dsp, 0); break;
case Bit16: dTools_display_select_attr(&dsp, 1); break;
case Bit32: dTools_display_select_attr(&dsp, 2); break;
}
gdk_draw_rectangle(area->window, area->style->white_gc, TRUE, 0, 0,
area->allocation.width, area->allocation.height);
pango_layout_set_text(playout, txt, -1);
pango_layout_set_attributes(playout, attr);
pango_layout_get_pixel_size(playout, &w, &h);
gtk_widget_set_usize(area,w+20, (0x10*h)+10);
// draw memory content here
addr=address;
for (i=0,x=10,y=5; i<0x10; i++,y+=h) {
for (i=0; i<0x10; i++) {
ptxt = txt;
sprintf(ptxt, "%04X:%04X | ", (addr>>16)&0xFFFF, addr&0xFFFF); ptxt+=12;
switch(packmode) {
@ -304,11 +278,6 @@ static void refresh() {
mem8 +=16;
*(ptxt)=0;
pango_layout_set_text(playout, txt, -1);
pango_layout_set_attributes(playout, attr);
gdk_draw_layout(area->window, GC, x, y, playout);
dTools_display_draw_text(&dsp, 0, i, txt);
}
// done
g_object_unref(playout);
}

View File

@ -25,8 +25,8 @@
void on_wtools_1_combo_cpu_changed (GtkComboBox *, gpointer );
void on_wtools_1_IOregs_show (GtkWidget *, gpointer );
gboolean on_wtools_1_IOregs_close (GtkWidget *, ...);
void on_wtools_1_autorefresh_toggled (GtkToggleButton *, gpointer);
void on_wtools_1_refresh_clicked (GtkButton *, gpointer);
gboolean on_wtools_1_draw_button_release_event(GtkWidget *, GdkEventButton *, gpointer );
gboolean on_wtools_1_draw_expose_event (GtkWidget *widget, GdkEventExpose *event, gpointer user_data);
/* ***** ***** MEMORY VIEWER ***** ***** */
void on_wtools_2_MemView_show (GtkWidget *, gpointer );

View File

@ -0,0 +1,110 @@
/* dTools_display.c
*
* Copyright (C) 2007 Damien Nozay (damdoum)
* Author: damdoum at users.sourceforge.net
*
* This file is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2, or (at your option)
* any later version.
*
* This file is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; see the file COPYING. If not, write to
* the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
* Boston, MA 02111-1307, USA.
*/
#ifndef _DTOOLS_DISPLAY_H_
#define _DTOOLS_DISPLAY_H_
#include <gtk/gtk.h>
typedef struct {
GtkWidget *widget;
GdkDrawable *draw;
GdkGC *gc_fg;
GdkGC *gc_bg;
PangoLayout* playout;
int size_w, size_h;
int char_w, char_h, padding;
GList * colors_rgb;
GList * attr_list;
PangoAttrList * curr_attr;
} dTools_dsp;
static void inline dTools_display_set_size(dTools_dsp * dsp, int w, int h, int pad) {
dsp->size_w = w;
dsp->size_h = h;
dsp->padding = pad;
// gtk_widget_set_size_request(dsp->widget,
// dsp->char_w * w + pad * 2, dsp->char_h * h + pad * 2);
gtk_widget_set_usize(dsp->widget,
dsp->char_w * w + pad * 2, dsp->char_h * h + pad * 2);
}
static void inline dTools_display_init(dTools_dsp * dsp, GtkWidget * widget, int w, int h, int pad) {
dsp->widget = widget;
dsp->draw = widget->window;
dsp->gc_fg = widget->style->fg_gc[widget->state];
dsp->gc_bg = widget->style->white_gc;
dsp->playout = gtk_widget_create_pango_layout(widget, NULL);
dsp->colors_rgb = NULL;
dsp->attr_list = NULL;
dsp->curr_attr = NULL;
pango_layout_set_markup(dsp->playout, "<tt>X</tt>",-1);
pango_layout_get_pixel_size(dsp->playout, &dsp->char_w, &dsp->char_h);
dTools_display_set_size(dsp, w, h, pad);
}
// void unref (gpointer data, ...) {
// pango_attr_list_unref(data);
// }
static void inline dTools_display_free(dTools_dsp * dsp) {
// g_list_foreach(dsp->attr_list, (GFunc)unref, NULL);
// g_object_unref(dsp->playout); // not alloc
}
static void inline dTools_display_add_markup(dTools_dsp * dsp, const char * markup) {
PangoAttrList *attr;
pango_parse_markup (markup, -1, 0, &attr, NULL, NULL, NULL);
dsp->attr_list = g_list_append(dsp->attr_list, attr);
dsp->curr_attr = attr;
}
static void inline dTools_display_clear(dTools_dsp * dsp) {
gdk_draw_rectangle(dsp->draw, dsp->gc_bg, TRUE, 0, 0,
dsp->widget->allocation.width, dsp->widget->allocation.height);
}
static void inline dTools_display_clear_char(dTools_dsp * dsp, int x, int y, int nb) {
gdk_draw_rectangle(dsp->draw, dsp->gc_bg, TRUE,
x * dsp->char_w + dsp->padding, y * dsp->char_h + dsp->padding,
nb * dsp->char_w, dsp->char_h);
}
static void inline dTools_display_select_attr(dTools_dsp * dsp, int index) {
PangoAttrList *attr = NULL;
attr = g_list_nth_data(dsp->attr_list, index);
if (attr != NULL) {
dsp->curr_attr = attr;
}
pango_layout_set_attributes(dsp->playout, dsp->curr_attr);
}
static void inline dTools_display_draw_text(dTools_dsp * dsp, int x, int y, char * txt) {
pango_layout_set_text(dsp->playout, txt, -1);
gdk_draw_layout(dsp->draw, dsp->gc_fg,
x * dsp->char_w + dsp->padding,
y * dsp->char_h + dsp->padding,
dsp->playout);
}
#endif

View File

@ -57,7 +57,7 @@
<child>
<widget class="GtkTable" id="table1">
<property name="visible">True</property>
<property name="n_rows">8</property>
<property name="n_rows">2</property>
<property name="n_columns">2</property>
<property name="homogeneous">False</property>
<property name="row_spacing">0</property>
@ -78,390 +78,23 @@ cpu : ARM9</property>
<property name="top_attach">0</property>
<property name="bottom_attach">1</property>
<property name="x_options">fill</property>
<property name="y_options">fill</property>
</packing>
</child>
<child>
<widget class="GtkLabel" id="wtools_1_REG_IPCFIFOCNT_value">
<widget class="GtkDrawingArea" id="wtools_1_draw">
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="label" translatable="yes">0x0000</property>
<property name="use_underline">False</property>
<property name="use_markup">False</property>
<property name="justify">GTK_JUSTIFY_RIGHT</property>
<property name="wrap">False</property>
<property name="selectable">True</property>
<property name="xalign">1</property>
<property name="yalign">0.5</property>
<property name="xpad">0</property>
<property name="ypad">0</property>
<property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
<property name="width_chars">-1</property>
<property name="single_line_mode">False</property>
<property name="angle">0</property>
</widget>
<packing>
<property name="left_attach">1</property>
<property name="right_attach">2</property>
<property name="top_attach">2</property>
<property name="bottom_attach">3</property>
<property name="x_options">fill</property>
<property name="y_options"></property>
</packing>
</child>
<child>
<widget class="GtkLabel" id="wtools_1_REG_SPICNT_label">
<property name="visible">True</property>
<property name="label" translatable="yes">REG_SPICNT</property>
<property name="use_underline">False</property>
<property name="use_markup">False</property>
<property name="justify">GTK_JUSTIFY_LEFT</property>
<property name="wrap">False</property>
<property name="selectable">False</property>
<property name="xalign">0</property>
<property name="yalign">0.5</property>
<property name="xpad">0</property>
<property name="ypad">0</property>
<property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
<property name="width_chars">-1</property>
<property name="single_line_mode">False</property>
<property name="angle">0</property>
<property name="events">GDK_EXPOSURE_MASK | GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
<signal name="expose_event" handler="on_wtools_1_draw_expose_event" last_modification_time="Mon, 15 Jan 2007 14:53:00 GMT"/>
<signal name="button_release_event" handler="on_wtools_1_draw_button_release_event" last_modification_time="Mon, 15 Jan 2007 15:18:59 GMT"/>
</widget>
<packing>
<property name="left_attach">0</property>
<property name="right_attach">1</property>
<property name="top_attach">3</property>
<property name="bottom_attach">4</property>
<property name="x_options">fill</property>
<property name="y_options"></property>
</packing>
</child>
<child>
<widget class="GtkLabel" id="wtools_1_REG_SPICNT_value">
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="label" translatable="yes">0x0000</property>
<property name="use_underline">False</property>
<property name="use_markup">False</property>
<property name="justify">GTK_JUSTIFY_RIGHT</property>
<property name="wrap">False</property>
<property name="selectable">True</property>
<property name="xalign">1</property>
<property name="yalign">0.5</property>
<property name="xpad">0</property>
<property name="ypad">0</property>
<property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
<property name="width_chars">-1</property>
<property name="single_line_mode">False</property>
<property name="angle">0</property>
</widget>
<packing>
<property name="left_attach">1</property>
<property name="right_attach">2</property>
<property name="top_attach">3</property>
<property name="bottom_attach">4</property>
<property name="x_options">fill</property>
<property name="y_options"></property>
</packing>
</child>
<child>
<widget class="GtkLabel" id="wtools_1_REG_IME_label">
<property name="visible">True</property>
<property name="label" translatable="yes">REG_IME</property>
<property name="use_underline">False</property>
<property name="use_markup">False</property>
<property name="justify">GTK_JUSTIFY_LEFT</property>
<property name="wrap">False</property>
<property name="selectable">False</property>
<property name="xalign">0</property>
<property name="yalign">0.5</property>
<property name="xpad">0</property>
<property name="ypad">0</property>
<property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
<property name="width_chars">-1</property>
<property name="single_line_mode">False</property>
<property name="angle">0</property>
</widget>
<packing>
<property name="left_attach">0</property>
<property name="right_attach">1</property>
<property name="top_attach">4</property>
<property name="bottom_attach">5</property>
<property name="x_options">fill</property>
<property name="y_options"></property>
</packing>
</child>
<child>
<widget class="GtkLabel" id="wtools_1_REG_IE_label">
<property name="visible">True</property>
<property name="label" translatable="yes">REG_IE</property>
<property name="use_underline">False</property>
<property name="use_markup">False</property>
<property name="justify">GTK_JUSTIFY_LEFT</property>
<property name="wrap">False</property>
<property name="selectable">False</property>
<property name="xalign">0</property>
<property name="yalign">0.5</property>
<property name="xpad">0</property>
<property name="ypad">0</property>
<property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
<property name="width_chars">-1</property>
<property name="single_line_mode">False</property>
<property name="angle">0</property>
</widget>
<packing>
<property name="left_attach">0</property>
<property name="right_attach">1</property>
<property name="top_attach">5</property>
<property name="bottom_attach">6</property>
<property name="x_options">fill</property>
<property name="y_options"></property>
</packing>
</child>
<child>
<widget class="GtkLabel" id="wtools_1_REG_IF_label">
<property name="visible">True</property>
<property name="label" translatable="yes">REG_IF</property>
<property name="use_underline">False</property>
<property name="use_markup">False</property>
<property name="justify">GTK_JUSTIFY_LEFT</property>
<property name="wrap">False</property>
<property name="selectable">False</property>
<property name="xalign">0</property>
<property name="yalign">0.5</property>
<property name="xpad">0</property>
<property name="ypad">0</property>
<property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
<property name="width_chars">-1</property>
<property name="single_line_mode">False</property>
<property name="angle">0</property>
</widget>
<packing>
<property name="left_attach">0</property>
<property name="right_attach">1</property>
<property name="top_attach">6</property>
<property name="bottom_attach">7</property>
<property name="x_options">fill</property>
<property name="y_options"></property>
</packing>
</child>
<child>
<widget class="GtkLabel" id="wtools_1_REG_POWCNT1_label">
<property name="visible">True</property>
<property name="label" translatable="yes">REG_POWCNT1</property>
<property name="use_underline">False</property>
<property name="use_markup">False</property>
<property name="justify">GTK_JUSTIFY_LEFT</property>
<property name="wrap">False</property>
<property name="selectable">False</property>
<property name="xalign">0</property>
<property name="yalign">0.5</property>
<property name="xpad">0</property>
<property name="ypad">0</property>
<property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
<property name="width_chars">-1</property>
<property name="single_line_mode">False</property>
<property name="angle">0</property>
</widget>
<packing>
<property name="left_attach">0</property>
<property name="right_attach">1</property>
<property name="top_attach">7</property>
<property name="bottom_attach">8</property>
<property name="x_options">fill</property>
<property name="y_options"></property>
</packing>
</child>
<child>
<widget class="GtkLabel" id="wtools_1_REG_IME_value">
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="label" translatable="yes">0x0000</property>
<property name="use_underline">False</property>
<property name="use_markup">False</property>
<property name="justify">GTK_JUSTIFY_RIGHT</property>
<property name="wrap">False</property>
<property name="selectable">True</property>
<property name="xalign">1</property>
<property name="yalign">0.5</property>
<property name="xpad">0</property>
<property name="ypad">0</property>
<property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
<property name="width_chars">-1</property>
<property name="single_line_mode">False</property>
<property name="angle">0</property>
</widget>
<packing>
<property name="left_attach">1</property>
<property name="right_attach">2</property>
<property name="top_attach">4</property>
<property name="bottom_attach">5</property>
<property name="x_options">fill</property>
<property name="y_options"></property>
</packing>
</child>
<child>
<widget class="GtkLabel" id="wtools_1_REG_IE_value">
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="label" translatable="yes">0x00000000</property>
<property name="use_underline">False</property>
<property name="use_markup">False</property>
<property name="justify">GTK_JUSTIFY_RIGHT</property>
<property name="wrap">False</property>
<property name="selectable">True</property>
<property name="xalign">1</property>
<property name="yalign">0.5</property>
<property name="xpad">0</property>
<property name="ypad">0</property>
<property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
<property name="width_chars">-1</property>
<property name="single_line_mode">False</property>
<property name="angle">0</property>
</widget>
<packing>
<property name="left_attach">1</property>
<property name="right_attach">2</property>
<property name="top_attach">5</property>
<property name="bottom_attach">6</property>
<property name="x_options">fill</property>
<property name="y_options"></property>
</packing>
</child>
<child>
<widget class="GtkLabel" id="wtools_1_REG_IF_value">
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="label" translatable="yes">0x00000000</property>
<property name="use_underline">False</property>
<property name="use_markup">False</property>
<property name="justify">GTK_JUSTIFY_RIGHT</property>
<property name="wrap">False</property>
<property name="selectable">True</property>
<property name="xalign">1</property>
<property name="yalign">0.5</property>
<property name="xpad">0</property>
<property name="ypad">0</property>
<property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
<property name="width_chars">-1</property>
<property name="single_line_mode">False</property>
<property name="angle">0</property>
</widget>
<packing>
<property name="left_attach">1</property>
<property name="right_attach">2</property>
<property name="top_attach">6</property>
<property name="bottom_attach">7</property>
<property name="x_options">fill</property>
<property name="y_options"></property>
</packing>
</child>
<child>
<widget class="GtkLabel" id="wtools_1_REG_POWCNT1_value">
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="label" translatable="yes">0x0000</property>
<property name="use_underline">False</property>
<property name="use_markup">False</property>
<property name="justify">GTK_JUSTIFY_RIGHT</property>
<property name="wrap">False</property>
<property name="selectable">True</property>
<property name="xalign">1</property>
<property name="yalign">0.5</property>
<property name="xpad">0</property>
<property name="ypad">0</property>
<property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
<property name="width_chars">-1</property>
<property name="single_line_mode">False</property>
<property name="angle">0</property>
</widget>
<packing>
<property name="left_attach">1</property>
<property name="right_attach">2</property>
<property name="top_attach">7</property>
<property name="bottom_attach">8</property>
<property name="x_options">fill</property>
<property name="y_options"></property>
</packing>
</child>
<child>
<widget class="GtkCheckButton" id="wtools_1_autorefresh">
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="label" translatable="yes">autorefresh</property>
<property name="use_underline">True</property>
<property name="relief">GTK_RELIEF_NORMAL</property>
<property name="focus_on_click">True</property>
<property name="active">False</property>
<property name="inconsistent">False</property>
<property name="draw_indicator">True</property>
<signal name="toggled" handler="on_wtools_1_autorefresh_toggled" last_modification_time="Sun, 14 Jan 2007 18:28:39 GMT"/>
</widget>
<packing>
<property name="left_attach">0</property>
<property name="right_attach">1</property>
<property name="top_attach">1</property>
<property name="bottom_attach">2</property>
<property name="x_options">fill</property>
<property name="y_options"></property>
</packing>
</child>
<child>
<widget class="GtkButton" id="wtools_1_refresh">
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="label" translatable="yes">_Refresh</property>
<property name="use_underline">True</property>
<property name="relief">GTK_RELIEF_NORMAL</property>
<property name="focus_on_click">True</property>
<signal name="clicked" handler="on_wtools_1_refresh_clicked" last_modification_time="Sun, 14 Jan 2007 18:28:24 GMT"/>
</widget>
<packing>
<property name="left_attach">1</property>
<property name="right_attach">2</property>
<property name="top_attach">1</property>
<property name="bottom_attach">2</property>
<property name="y_options"></property>
</packing>
</child>
<child>
<widget class="GtkLabel" id="wtools_1_REG_IPCFIFOCNT_label">
<property name="visible">True</property>
<property name="label" translatable="yes">REG_IPCFIFOCNT</property>
<property name="use_underline">False</property>
<property name="use_markup">False</property>
<property name="justify">GTK_JUSTIFY_LEFT</property>
<property name="wrap">False</property>
<property name="selectable">False</property>
<property name="xalign">0</property>
<property name="yalign">0.5</property>
<property name="xpad">0</property>
<property name="ypad">0</property>
<property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
<property name="width_chars">-1</property>
<property name="single_line_mode">False</property>
<property name="angle">0</property>
</widget>
<packing>
<property name="left_attach">0</property>
<property name="right_attach">1</property>
<property name="top_attach">2</property>
<property name="bottom_attach">3</property>
<property name="x_options">fill</property>
<property name="y_options"></property>
</packing>
</child>
</widget>
@ -536,6 +169,40 @@ cpu : ARM9</property>
<property name="row_spacing">0</property>
<property name="column_spacing">0</property>
<child>
<widget class="GtkVScrollbar" id="wtools_2_scroll">
<property name="visible">True</property>
<property name="update_policy">GTK_UPDATE_CONTINUOUS</property>
<property name="inverted">False</property>
<property name="adjustment">0 0 0 0 0 0</property>
<signal name="value_changed" handler="on_wtools_2_scroll_value_changed" last_modification_time="Sat, 13 Jan 2007 19:38:07 GMT"/>
</widget>
<packing>
<property name="left_attach">1</property>
<property name="right_attach">2</property>
<property name="top_attach">1</property>
<property name="bottom_attach">2</property>
<property name="x_options">fill</property>
<property name="y_options">fill</property>
</packing>
</child>
<child>
<widget class="GtkDrawingArea" id="wtools_2_draw">
<property name="visible">True</property>
<property name="events">GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
<signal name="expose_event" handler="on_wtools_2_draw_expose_event" last_modification_time="Fri, 12 Jan 2007 13:14:44 GMT"/>
<signal name="scroll_event" handler="on_wtools_2_draw_scroll_event" last_modification_time="Sat, 13 Jan 2007 19:50:18 GMT"/>
<signal name="button_release_event" handler="on_wtools_2_draw_button_release_event" last_modification_time="Sun, 14 Jan 2007 01:44:37 GMT"/>
</widget>
<packing>
<property name="left_attach">0</property>
<property name="right_attach">1</property>
<property name="top_attach">1</property>
<property name="bottom_attach">2</property>
</packing>
</child>
<child>
<widget class="GtkHBox" id="hbox1">
<property name="visible">True</property>
@ -689,42 +356,9 @@ ARM7 cpu</property>
<property name="top_attach">0</property>
<property name="bottom_attach">1</property>
<property name="x_options">fill</property>
</packing>
</child>
<child>
<widget class="GtkVScrollbar" id="wtools_2_scroll">
<property name="visible">True</property>
<property name="update_policy">GTK_UPDATE_CONTINUOUS</property>
<property name="inverted">False</property>
<property name="adjustment">0 0 0 0 0 0</property>
<signal name="value_changed" handler="on_wtools_2_scroll_value_changed" last_modification_time="Sat, 13 Jan 2007 19:38:07 GMT"/>
</widget>
<packing>
<property name="left_attach">1</property>
<property name="right_attach">2</property>
<property name="top_attach">1</property>
<property name="bottom_attach">2</property>
<property name="x_options">fill</property>
<property name="y_options">fill</property>
</packing>
</child>
<child>
<widget class="GtkDrawingArea" id="wtools_2_draw">
<property name="visible">True</property>
<property name="events">GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK</property>
<signal name="expose_event" handler="on_wtools_2_draw_expose_event" last_modification_time="Fri, 12 Jan 2007 13:14:44 GMT"/>
<signal name="scroll_event" handler="on_wtools_2_draw_scroll_event" last_modification_time="Sat, 13 Jan 2007 19:50:18 GMT"/>
<signal name="button_release_event" handler="on_wtools_2_draw_button_release_event" last_modification_time="Sun, 14 Jan 2007 01:44:37 GMT"/>
</widget>
<packing>
<property name="left_attach">0</property>
<property name="right_attach">1</property>
<property name="top_attach">1</property>
<property name="bottom_attach">2</property>
</packing>
</child>
</widget>
<packing>
<property name="padding">0</property>