X-Git-Url: http://gitweb.hugovil.com/?a=blobdiff_plain;ds=sidebyside;f=src%2Fgtk%2Fmemwin.c;h=96be0b5e40a458af1b22a31f56abb2e0c0d436cd;hb=f7e3f1d8d0438f52e4f988a12318075cc1b43568;hp=9f8abd248d4a598257a1cd515db7e5e956023e8c;hpb=5419d1bd9d2faae98c78da740634b972e8f5aac1;p=emu8051.git diff --git a/src/gtk/memwin.c b/src/gtk/memwin.c index 9f8abd2..96be0b5 100644 --- a/src/gtk/memwin.c +++ b/src/gtk/memwin.c @@ -12,6 +12,7 @@ #endif #include +#include #include #include /* For isprint */ #include /* For crc32 routine */ @@ -42,7 +43,7 @@ enum { struct memwin_infos_t { GtkWidget *memlist; int data_rows; - u_int32_t *crc; + uint32_t *crc; int crc_init; }; @@ -78,12 +79,12 @@ memwin_cell_edited(GtkCellRendererText *cell, gchar *path_string, gchar *new_str, gpointer model) { guint column; - guint memory_id; + enum mem_id_t memory_id; gpointer columnptr; gpointer memory_id_ptr; GtkTreeIter iter; int address; - u_int8_t old; + uint8_t old; int new; char *str; @@ -103,26 +104,31 @@ memwin_cell_edited(GtkCellRendererText *cell, gchar *path_string, /* Get base address. */ gtk_tree_model_get(model, &iter, COL_ADDRESS, &str, -1); + + /* No need to check error, has already been validated. */ address = asciihex2int(str); /* Convert column number (1, 2, 3...) to index (0, 1, 2...) */ address += (column - COL_DATA0); - old = memory_read8(memory_id, address); + old = mem_read8(memory_id, address); log_info("Address: $%02X", address); log_info(" old value: $%02X", old); /* Convert new value (asciihex) to integer. */ new = asciihex2int(new_str); - if ((new < 0) || (new > 255)) { - log_info(" new value: out of range"); - new = old; /* Put back old value... */ + if (asciihex2int_get_error()) { + log_warn(" new value: invalid"); + return; + } else if ((new < 0) || (new > 255)) { + log_warn(" new value: out of range"); + return; } else { log_info(" new value: $%02X", new); } /* Store new value in emulator memory. */ - memory_write8(memory_id, address, new); + mem_write8(memory_id, address, new); /* Convert to text. */ int2asciihex(new, str, 2); @@ -138,7 +144,7 @@ memwin_cell_edited(GtkCellRendererText *cell, gchar *path_string, }; static void -memwin_init_columns(GtkWidget *listview, int memory_id) +memwin_init_columns(GtkWidget *listview, enum mem_id_t memory_id) { int i; GtkCellRenderer *renderer; @@ -196,7 +202,7 @@ memwin_init_columns(GtkWidget *listview, int memory_id) } static void -memwin_infos_select(int memory_id) +memwin_infos_select(enum mem_id_t memory_id) { if (memory_id == INT_MEM_ID) { log_debug("memory ID = INTERNAL"); @@ -223,12 +229,12 @@ compute_data_rows(int memory_id) if (memwin_infos->crc) free(memwin_infos->crc); - memwin_infos->crc = malloc(memwin_infos->data_rows * sizeof(u_int32_t)); + memwin_infos->crc = malloc(memwin_infos->data_rows * sizeof(uint32_t)); memwin_infos->crc_init = false; } GtkWidget * -memwin_init(char *title, int memory_id) +memwin_init(char *title, enum mem_id_t memory_id) { GtkWidget *frame; GtkWidget *scrollwin; @@ -283,13 +289,13 @@ memwin_init(char *title, int memory_id) * rows which have been modified. */ static int -memwin_row_changed(int memory_id, int row, unsigned int address) +memwin_row_changed(enum mem_id_t memory_id, int row, unsigned int address) { int row_changed; - u_int32_t crc_new = 0; - u_int8_t *buf8; + uint32_t crc_new = 0; + uint8_t *buf8; - buf8 = memory_getbuf(memory_id, address); + buf8 = mem_getbuf(memory_id, address); crc_new = crc32(0L, Z_NULL, 0); crc_new = crc32(crc_new, buf8, cfg->bytes_per_row); @@ -307,7 +313,7 @@ memwin_row_changed(int memory_id, int row, unsigned int address) /* Dump internal or external memory. */ void -memwin_refresh(int memory_id) +memwin_refresh(enum mem_id_t memory_id) { int row; unsigned int address = 0; @@ -351,9 +357,9 @@ memwin_refresh(int memory_id) gtk_list_store_set(store, &iter, COL_ADDRESS, str, -1); for (col = 0; col < cfg->bytes_per_row; col++) { - u_int8_t data; + uint8_t data; - data = memory_read8(memory_id, address + col); + data = mem_read8(memory_id, address + col); /* Display hex data */ int2asciihex(data, str, 2);