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_attched()) { autostartmode = AUTOSTART_PRESSPLAYONTAPE; } else { autostartmode = AUTOSTART_LOADINGTAPE; } deallocate_program_name(); break; case NO: autostart_disable(); break; case NOT_YET: break; } }
/* After a reset a PRG file has to be injected into RAM */ static void advance_inject(void) { if (autostart_prg_perform_injection(autostart_log) < 0) { disable_warp_if_was_requested(); autostart_disable(); } else { /* wait for ready cursor and type RUN */ autostartmode = AUTOSTART_WAITLOADREADY; } }
static void advance_hasdisk(void) { char *tmp; int traps; switch (check("READY.", AUTOSTART_WAIT_BLINK)) { case YES: if (autostart_program_name) log_message(autostart_log, "Loading program '%s'", autostart_program_name); else log_message(autostart_log, "Loading program '*'"); orig_drive_true_emulation_state = get_true_drive_emulation_state(); if (handle_drive_true_emulation) { resources_get_int("VirtualDevices", &traps); if (traps) { if (orig_drive_true_emulation_state) log_message(autostart_log, "Turning true drive emulation off."); set_true_drive_emulation_mode(0); } else { if (!orig_drive_true_emulation_state) log_message(autostart_log, "Turning true drive emulation on."); set_true_drive_emulation_mode(1); } } else { traps = 1; } if (autostart_program_name) tmp = lib_msprintf("LOAD\"%s\",8,1:\r", autostart_program_name); else tmp = lib_stralloc("LOAD\"*\",8,1:\r"); kbdbuf_feed(tmp); lib_free(tmp); if (!traps) { if (autostart_run_mode == AUTOSTART_MODE_RUN) kbdbuf_feed(AutostartRunCommand); autostartmode = AUTOSTART_DONE; } else { autostartmode = AUTOSTART_LOADINGDISK; machine_bus_attention_callback_set(disk_attention_callback); } deallocate_program_name(); break; case NO: orig_drive_true_emulation_state = get_true_drive_emulation_state(); autostart_disable(); break; case NOT_YET: break; } }
static void advance_pressplayontape(void) { switch (check("PRESS PLAY ON TAPE", AUTOSTART_NOWAIT_BLINK)) { case YES: autostartmode = AUTOSTART_LOADINGTAPE; datasette_control(DATASETTE_CONTROL_START); break; case NO: autostart_disable(); break; case NOT_YET: break; } }
static void advance_hassnapshot(void) { switch (check("READY.", AUTOSTART_WAIT_BLINK)) { case YES: log_message(autostart_log, "Restoring snapshot."); interrupt_maincpu_trigger_trap(load_snapshot_trap, (void*)0); autostartmode = AUTOSTART_DONE; break; case NO: autostart_disable(); break; case NOT_YET: break; } }
static void advance_loadingtape(void) { switch (check("READY.", AUTOSTART_WAIT_BLINK)) { case YES: log_message(autostart_log, "Starting program."); kbdbuf_feed(AutostartRunCommand); autostartmode = AUTOSTART_DONE; break; case NO: autostart_disable(); break; case NOT_YET: break; } }
static void advance_waitsearchingfor(void) { switch (check("SEARCHING FOR", AUTOSTART_NOWAIT_BLINK)) { case YES: log_message(autostart_log, "Searching for ..."); autostartmode = AUTOSTART_WAITLOADING; break; case NO: log_message(autostart_log, "NO Searching for ..."); disable_warp_if_was_requested(); autostart_disable(); break; case NOT_YET: break; } }
static void advance_loadingtape(void) { switch (check("READY.", AUTOSTART_WAIT_BLINK)) { case YES: disable_warp_if_was_requested(); autostart_finish(); autostart_done(); break; case NO: disable_warp_if_was_requested(); autostart_disable(); break; case NOT_YET: /* leave autostart and disable warp if ROM area was left */ check_rom_area(); break; } }
static void advance_waitloadready(void) { switch (check("READY.", AUTOSTART_WAIT_BLINK)) { case YES: log_message(autostart_log, "Ready"); disable_warp_if_was_requested(); autostart_finish(); autostart_done(); break; case NO: log_message(autostart_log, "NO Ready"); disable_warp_if_was_requested(); autostart_disable(); break; case NOT_YET: /* leave autostart and disable warp if ROM area was left */ check_rom_area(); break; } }
static void advance_waitloading(void) { switch (check("LOADING", AUTOSTART_NOWAIT_BLINK)) { case YES: log_message(autostart_log, "Loading"); entered_rom = 0; autostartmode = AUTOSTART_WAITLOADREADY; break; case NO: /* still showing SEARCHING FOR ? */ if (check("SEARCHING FOR", AUTOSTART_NOWAIT_BLINK)==YES) { return; } /* no something else is shown -> error! */ log_message(autostart_log, "NO Loading"); disable_warp_if_was_requested(); autostart_disable(); break; case NOT_YET: break; } }
static void advance_loadingtape(void) { switch (check("READY.", AUTOSTART_WAIT_BLINK)) { case YES: disable_warp_if_was_requested(); if (autostart_run_mode == AUTOSTART_MODE_RUN) { log_message(autostart_log, "Starting program."); kbdbuf_feed(AutostartRunCommand); } autostart_done(); break; case NO: disable_warp_if_was_requested(); autostart_disable(); break; case NOT_YET: /* leave autostart and disable warp if ROM area was left */ check_rom_area(); break; } }
static void advance_waitloadready(void) { switch (check("READY.", AUTOSTART_WAIT_BLINK)) { case YES: //log_message(autostart_log, "Ready"); disable_warp_if_was_requested(); autostartmode = AUTOSTART_DONE; if (autostart_run_mode == AUTOSTART_MODE_RUN) { kbdbuf_feed(AutostartRunCommand); //log_message(autostart_log, "Running program"); } break; case NO: //log_message(autostart_log, "NO Ready"); disable_warp_if_was_requested(); autostart_disable(); break; case NOT_YET: /* leave autostart and disable warp if ROM area was left */ check_rom_area(); break; } }
static void advance_hasdisk(void) { char *tmp; int traps; switch (check("READY.", AUTOSTART_WAIT_BLINK)) { case YES: if (autostart_program_name) log_message(autostart_log, "Loading program '%s'", autostart_program_name); else log_message(autostart_log, "Loading program '*'"); orig_drive_true_emulation_state = get_true_drive_emulation_state(); if (handle_drive_true_emulation_overridden) { resources_get_int("VirtualDevices", &traps); if (traps) { if (orig_drive_true_emulation_state) log_message(autostart_log, "Turning true drive emulation off."); set_true_drive_emulation_mode(0); } else { if (!orig_drive_true_emulation_state) log_message(autostart_log, "Turning true drive emulation on."); set_true_drive_emulation_mode(1); } } else { if (!orig_drive_true_emulation_state) { traps = 1; } else { traps = 0; } } tmp = lib_msprintf("LOAD\"%s\",8%s:\r", autostart_program_name ? autostart_program_name : "*", autostart_basic_load ? "" : ",1"); kbdbuf_feed(tmp); lib_free(tmp); if (!traps) { if (AutostartWarp) { autostartmode = AUTOSTART_WAITSEARCHINGFOR; } else { /* be most compatible if warp is disabled */ if (autostart_run_mode == AUTOSTART_MODE_RUN) { kbdbuf_feed(AutostartRunCommand); } autostart_done(); } } else { autostartmode = AUTOSTART_LOADINGDISK; machine_bus_attention_callback_set(disk_attention_callback); } deallocate_program_name(); break; case NO: orig_drive_true_emulation_state = get_true_drive_emulation_state(); disable_warp_if_was_requested(); autostart_disable(); break; case NOT_YET: break; } }
static void advance_hasdisk(void) { char *tmp, *temp_name; int traps; switch (check("READY.", AUTOSTART_WAIT_BLINK)) { case YES: /* autostart_program_name may be petscii or ascii at this point, ANDing the charcodes with 0x7f here is a cheap way to prevent illegal characters in the printed message */ if (autostart_program_name) { temp_name = tmp = lib_stralloc(autostart_program_name); while (*tmp) { *tmp++ &= 0x7f; } log_message(autostart_log, "Loading program '%s'", temp_name); lib_free(temp_name); } else { log_message(autostart_log, "Loading program '*'"); } orig_drive_true_emulation_state = get_true_drive_emulation_state(); if (handle_drive_true_emulation_overridden) { resources_get_int("VirtualDevices", &traps); if (traps) { if (orig_drive_true_emulation_state) { log_message(autostart_log, "Turning true drive emulation off."); } set_true_drive_emulation_mode(0); } else { if (!orig_drive_true_emulation_state) { log_message(autostart_log, "Turning true drive emulation on."); } set_true_drive_emulation_mode(1); } } else { if (!orig_drive_true_emulation_state) { traps = 1; } else { traps = 0; } } tmp = lib_msprintf("LOAD\"%s\",8%s:\r", autostart_program_name ? autostart_program_name : "*", autostart_basic_load ? "" : ",1"); DBG(("advance_hasdisk '%s'", tmp)); kbdbuf_feed(tmp); lib_free(tmp); if (!traps) { if (AutostartWarp) { autostartmode = AUTOSTART_WAITSEARCHINGFOR; } else { /* be most compatible if warp is disabled */ autostart_finish(); autostart_done(); } } else { autostartmode = AUTOSTART_LOADINGDISK; machine_bus_attention_callback_set(disk_attention_callback); } deallocate_program_name(); break; case NO: orig_drive_true_emulation_state = get_true_drive_emulation_state(); disable_warp_if_was_requested(); autostart_disable(); break; case NOT_YET: break; } }