static mess_image *apple525_selected_image(void) { int i, count; count = device_count_tag(Machine->devices, APPLE525TAG); for (i = 0; i < count; i++) { if (apple525_enable_mask & (1 << i)) return image_from_devtag_and_index(APPLE525TAG, i); } return NULL; }
void apple525_set_lines(UINT8 lines) { int i, count; mess_image *image; count = device_count_tag(Machine->devices, APPLE525TAG); for (i = 0; i < count; i++) { if (apple525_enable_mask & (1 << i)) { image = image_from_devtag_and_index(APPLE525TAG, i); if (image) apple525_disk_set_lines(image, lines); } } }
int apple525_read_status(void) { int i, count, result = 0; mess_image *image; count = device_count_tag(Machine->devices, APPLE525TAG); for (i = 0; i < count; i++) { if (apple525_enable_mask & (1 << i)) { image = image_from_devtag_and_index(APPLE525TAG, i); if (image && !image_is_writable(image)) result = 1; } } return result; }
static void command_image_loadcreate(void) { mess_image *image; int device_type; int device_slot; const char *device_tag; int i, format_index = 0; const char *filename; const char *format; char buf[128]; const struct IODevice *dev; const char *file_extensions; device_slot = current_command->u.image_args.device_slot; device_type = current_command->u.image_args.device_type; device_tag = current_command->u.image_args.device_tag; /* look up the image slot */ if (device_tag) image = image_from_devtag_and_index(device_tag, device_slot); else image = image_from_devtype_and_index(device_type, device_slot); if (!image) { state = STATE_ABORTED; report_message(MSG_FAILURE, "Image slot '%s %i' does not exist", device_typename(device_type), device_slot); return; } dev = image_device(image); file_extensions = dev->file_extensions; /* is an image format specified? */ format = current_command->u.image_args.format; if (format) { if (current_command->command_type != MESSTEST_COMMAND_IMAGE_CREATE) { state = STATE_ABORTED; report_message(MSG_FAILURE, "Cannot specify format unless creating"); return; } if (!dev->createimage_options) { state = STATE_ABORTED; report_message(MSG_FAILURE, "Cannot specify format for device"); return; } for (i = 0; dev->createimage_options[i].name; i++) { if (!strcmp(format, dev->createimage_options[i].name)) break; } if (!dev->createimage_options[i].name) { state = STATE_ABORTED; report_message(MSG_FAILURE, "Unknown device '%s'", format); return; } format_index = i; file_extensions = dev->createimage_options[i].extensions; } /* figure out the filename */ filename = current_command->u.image_args.filename; if (!filename) { snprintf(buf, sizeof(buf) / sizeof(buf[0]), "%s.%s", current_testcase.name, file_extensions); make_filename_temporary(buf, sizeof(buf) / sizeof(buf[0])); filename = buf; } /* actually create or load the image */ switch(current_command->command_type) { case MESSTEST_COMMAND_IMAGE_CREATE: if (image_create(image, filename, format_index, NULL)) { state = STATE_ABORTED; report_message(MSG_FAILURE, "Failed to create image '%s': %s", filename, image_error(image)); return; } break; case MESSTEST_COMMAND_IMAGE_LOAD: if (image_load(image, filename)) { state = STATE_ABORTED; report_message(MSG_FAILURE, "Failed to load image '%s': %s", filename, image_error(image)); return; } break; default: break; } }
static void command_image_loadcreate(void) { mess_image *image; int device_type; int device_slot; const char *device_tag; int i, format_index = 0; const char *filename; const char *format; char buf[128]; const struct IODevice *dev; const char *file_extensions; char *filepath; int success; const game_driver *gamedrv; device_slot = current_command->u.image_args.device_slot; device_type = current_command->u.image_args.device_type; device_tag = current_command->u.image_args.device_tag; /* look up the image slot */ if (device_tag) image = image_from_devtag_and_index(device_tag, device_slot); else image = image_from_devtype_and_index(device_type, device_slot); if (!image) { state = STATE_ABORTED; report_message(MSG_FAILURE, "Image slot '%s %i' does not exist", device_typename(device_type), device_slot); return; } dev = image_device(image); file_extensions = dev->file_extensions; /* is an image format specified? */ format = current_command->u.image_args.format; if (format) { if (current_command->command_type != MESSTEST_COMMAND_IMAGE_CREATE) { state = STATE_ABORTED; report_message(MSG_FAILURE, "Cannot specify format unless creating"); return; } if (!dev->createimage_options) { state = STATE_ABORTED; report_message(MSG_FAILURE, "Cannot specify format for device"); return; } for (i = 0; dev->createimage_options[i].name; i++) { if (!strcmp(format, dev->createimage_options[i].name)) break; } if (!dev->createimage_options[i].name) { state = STATE_ABORTED; report_message(MSG_FAILURE, "Unknown device '%s'", format); return; } format_index = i; file_extensions = dev->createimage_options[i].extensions; } /* figure out the filename */ filename = current_command->u.image_args.filename; if (!filename) { snprintf(buf, sizeof(buf) / sizeof(buf[0]), "%s.%s", current_testcase.name, file_extensions); osd_get_temp_filename(buf, ARRAY_LENGTH(buf), buf); filename = buf; } success = FALSE; for (gamedrv = Machine->gamedrv; !success && gamedrv; gamedrv = mess_next_compatible_driver(gamedrv)) { /* assemble the full path */ filepath = assemble_software_path(gamedrv, filename); /* actually create or load the image */ switch(current_command->command_type) { case MESSTEST_COMMAND_IMAGE_CREATE: success = (image_create(image, filepath, format_index, NULL) == INIT_PASS); break; case MESSTEST_COMMAND_IMAGE_LOAD: success = (image_load(image, filepath) == INIT_PASS); break; default: fatalerror("Unexpected error"); break; } free(filepath); } if (!success) { state = STATE_ABORTED; report_message(MSG_FAILURE, "Failed to load/create image '%s': %s", filename, image_error(image)); return; } }