#endif
#include <stdio.h>
+#include <stdint.h>
#include <stdbool.h>
#include <ctype.h> /* For isprint */
#include <zlib.h> /* For crc32 routine */
struct memwin_infos_t {
GtkWidget *memlist;
int data_rows;
- u_int32_t *crc;
+ uint32_t *crc;
int crc_init;
};
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;
/* 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);
};
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;
}
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");
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;
* 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);
/* 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;
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);