static void advance_hastape(void) { char *tmp; switch (check("READY.", AUTOSTART_WAIT_BLINK)) { case YES: log_message(autostart_log, "Loading file."); if (autostart_program_name) { tmp = util_concat("LOAD\"", autostart_program_name, "\":\r", NULL); kbdbuf_feed(tmp); lib_free(tmp); } else { kbdbuf_feed("LOAD:\r"); } if (tape_tap_attached()) { autostartmode = AUTOSTART_PRESSPLAYONTAPE; } else { autostartmode = AUTOSTART_LOADINGTAPE; } entered_rom = 0; deallocate_program_name(); break; case NO: disable_warp_if_was_requested(); autostart_disable(); break; case NOT_YET: break; } }
/* Autostart tape image `file_name'. */ int autostart_tape(const char *file_name, const char *program_name, unsigned int program_number, unsigned int runmode) { BYTE do_seek = 1; if (network_connected() || event_record_active() || event_playback_active() || !file_name || !autostart_enabled) { return -1; } if (!(tape_image_attach(1, file_name) < 0)) { log_message(autostart_log, "Attached file `%s' as a tape image.", file_name); if (!tape_tap_attached()) { if (program_number == 0 || program_number == 1) { do_seek = 0; } program_number -= 1; } if (do_seek) { if (program_number > 0) { /* program numbers in tape_seek_to_file() start at 0 */ tape_seek_to_file(tape_image_dev1, program_number - 1); } else { tape_seek_start(tape_image_dev1); } } if (!tape_tap_attached()) { resources_set_int("VirtualDevices", 1); /* Kludge: for t64 images we need devtraps ON */ } reboot_for_autostart(program_name, AUTOSTART_HASTAPE, runmode); return 0; } autostartmode = AUTOSTART_ERROR; deallocate_program_name(); return -1; }