+ case PI_CMD_MEMSET:
+ //DEBUG("[PISTORM-DEV} Write to MEMSET: %d (%.8X)\n", val, val);
+ if (pi_ptr[0] == 0) {
+ printf("[PISTORM-DEV] MEMSET with null pointer not allowed. Aborting.\n");
+ pi_cmd_result = PI_RES_INVALIDVALUE;
+ } else if (val == 0) {
+ printf("[PISTORM-DEV] MEMSET called with size 0. Aborting.\n");
+ pi_cmd_result = PI_RES_INVALIDVALUE;
+ } else {
+ int32_t dst = get_mapped_item_by_address(cfg, pi_ptr[0]);
+ if (dst != -1) {
+ uint8_t *dst_ptr = &cfg->map_data[dst][(pi_ptr[0] - cfg->map_offset[dst])];
+ memset(dst_ptr, pi_byte[0], val);
+ } else {
+ for (uint32_t i = 0; i < val; i++) {
+ m68k_write_memory_8(pi_ptr[0] + i, val);
+ }
+ }
+ }
+ break;