/* This function is called by the `serialreceivebyte()' trap as soon as EOF is reached. */ static void disk_eof_callback(void) { if (handle_drive_true_emulation_overridden) { BYTE id[2], *buffer; unsigned int track, sector; if (orig_drive_true_emulation_state) { log_message(autostart_log, "Turning true drive emulation on."); vdrive_bam_get_disk_id(8, id); vdrive_get_last_read(&track, §or, &buffer); } set_true_drive_emulation_mode(orig_drive_true_emulation_state); if (orig_drive_true_emulation_state) { drive_set_disk_memory(id, track, sector, drive_context[0]); drive_set_last_read(track, sector, buffer, drive_context[0]); } } if (autostartmode != AUTOSTART_NONE) { if (autostart_run_mode == AUTOSTART_MODE_RUN) { log_message(autostart_log, "Starting program."); kbdbuf_feed(AutostartRunCommand); } else { log_message(autostart_log, "Program loaded."); } } autostart_done(); machine_bus_eof_callback_set(NULL); disable_warp_if_was_requested(); }
/* This function is called by the `serialreceivebyte()' trap as soon as EOF is reached. */ static void disk_eof_callback(void) { if (handle_drive_true_emulation) { BYTE id[2], *buffer; unsigned int track, sector; if (orig_drive_true_emulation_state) { log_message(autostart_log, "Turning true drive emulation on."); vdrive_bam_get_disk_id(8, id); vdrive_get_last_read(&track, §or, &buffer); } set_true_drive_emulation_mode(orig_drive_true_emulation_state); if (orig_drive_true_emulation_state) { drive_set_disk_memory(id, track, sector, drive_context[0]); drive_set_last_read(track, sector, buffer, drive_context[0]); } } if (autostartmode != AUTOSTART_NONE) { if (autostart_run_mode == AUTOSTART_MODE_RUN) log_message(autostart_log, "Starting program."); else log_message(autostart_log, "Program loaded."); } autostartmode = AUTOSTART_DONE; machine_bus_eof_callback_set(NULL); }
/* This function is called by the `serialreceivebyte()' trap as soon as EOF is reached. */ static void disk_eof_callback(void) { if (handle_drive_true_emulation_overridden) { BYTE id[2], *buffer = NULL; unsigned int track, sector; /* FIXME: shouldnt this loop over all drives? */ if (orig_drive_true_emulation_state) { log_message(autostart_log, "Turning true drive emulation on."); if (vdrive_bam_get_disk_id(8, id) == 0) { vdrive_get_last_read(&track, §or, &buffer); } } set_true_drive_emulation_mode(orig_drive_true_emulation_state); if (orig_drive_true_emulation_state) { if (buffer) { log_message(autostart_log, "Restoring true drive state of drive 8."); drive_set_disk_memory(id, track, sector, drive_context[0]); drive_set_last_read(track, sector, buffer, drive_context[0]); } else { log_message(autostart_log, "No Disk Image in drive 8."); } } } if (autostartmode != AUTOSTART_NONE) { autostart_finish(); } autostart_done(); machine_bus_eof_callback_set(NULL); disable_warp_if_was_requested(); }