int AFILE_OpenFile(const char *filename, int reboot, int diskno, int readonly) { int type = AFILE_DetectFileType(filename); switch (type) { case AFILE_ATR: case AFILE_ATX: case AFILE_XFD: case AFILE_ATR_GZ: case AFILE_XFD_GZ: case AFILE_DCM: case AFILE_PRO: if (!SIO_Mount(diskno, filename, readonly)) return AFILE_ERROR; if (reboot) Atari800_Coldstart(); break; case AFILE_XEX: case AFILE_BAS: case AFILE_LST: if (!BINLOAD_Loader(filename)) return AFILE_ERROR; break; case AFILE_CART: case AFILE_ROM: /* TODO: select format for ROMs; switch 5200 ? */ if (CARTRIDGE_Insert(filename) != 0) return AFILE_ERROR; if (reboot) Atari800_Coldstart(); break; case AFILE_CAS: case AFILE_BOOT_TAPE: if (!CASSETTE_Insert(filename)) return AFILE_ERROR; if (reboot) { CASSETTE_hold_start = TRUE; Atari800_Coldstart(); } break; case AFILE_STATE: case AFILE_STATE_GZ: #ifdef BASIC Log_print("State files are not supported in BASIC version"); return AFILE_ERROR; #else if (!StateSav_ReadAtariState(filename, "rb")) return AFILE_ERROR; /* Don't press Option */ GTIA_consol_table[1] = GTIA_consol_table[2] = 0xf; break; #endif default: break; } return type; }
/* #FN# Prepares the tape to be accessed or removed */ BOOL /* #AS# Nothing */ CTapeDlg:: PrepareTape( LPSTR pszTapeFile, BOOL bCheckIfExists /*=TRUE*/, BOOL bForceInsert /*=FALSE*/ ) { BOOL bResult = FALSE; if( _IsPathAvailable( pszTapeFile ) ) { CFileStatus fsStatus; if( !bCheckIfExists || CFile::GetStatus( pszTapeFile, fsStatus ) ) { UINT unFileType = IAF_CAS_IMAGE; m_bCasImage = IsAtariFile( pszTapeFile, &unFileType ); bForceInsert = bForceInsert || m_bCasImage || _stricmp( m_szTapeLast, pszTapeFile ) == 0; if( bForceInsert || DisplayWarning( IDS_WARN_CASFILE, DONT_SHOW_CASFILE_WARN, TRUE ) ) { /* Prevents from resource leaks */ CASSETTE_Remove(); /* We have to attach a selected file because there is need to update some kernel-depending cassette parameters */ if( CASSETTE_Insert( pszTapeFile ) ) { /* A tape image has been properly inserted */ bResult = TRUE; } else DisplayMessage( GetSafeHwnd(), IDS_ERROR_CAS_READ, 0, MB_ICONEXCLAMATION | MB_OK ); } } } /* It is a good idea to remove the tape if no success */ if( !bResult ) EjectTape(); /* Save a name of the last used image */ _strncpy( m_szTapeLast, pszTapeFile, FILENAME_MAX - 1 ); return bResult; } /* #OF# CTapeDlg::PrepareTape */
int AFILE_OpenFile(const char *filename, int reboot, int diskno, int readonly) { int type = AFILE_DetectFileType(filename); switch (type) { case AFILE_ATR: case AFILE_ATX: case AFILE_XFD: case AFILE_ATR_GZ: case AFILE_XFD_GZ: case AFILE_DCM: case AFILE_PRO: if (!SIO_Mount(diskno, filename, readonly)) return AFILE_ERROR; if (reboot) Atari800_Coldstart(); break; case AFILE_XEX: case AFILE_BAS: case AFILE_LST: if (!BINLOAD_Loader(filename)) return AFILE_ERROR; break; case AFILE_CART: case AFILE_ROM: { int r; if (reboot) r = CARTRIDGE_InsertAutoReboot(filename); else r = CARTRIDGE_Insert(filename); switch (r) { case CARTRIDGE_CANT_OPEN: case CARTRIDGE_BAD_FORMAT: return AFILE_ERROR; case CARTRIDGE_BAD_CHECKSUM: case 0: /* ok */ break; default: #ifdef BASIC Log_print("Raw cartridge images are not supported in BASIC version."); return AFILE_ERROR; #else /* BASIC */ /* r > 0 */ #ifndef ANDROID CARTRIDGE_SetTypeAutoReboot(&CARTRIDGE_main, UI_SelectCartType(r)); #else return (r << 8) | AFILE_ROM; #endif /* ANDROID */ break; #endif /* BASIC */ } } break; case AFILE_CAS: case AFILE_BOOT_TAPE: if (!CASSETTE_Insert(filename)) return AFILE_ERROR; if (reboot) { CASSETTE_hold_start = TRUE; Atari800_Coldstart(); } break; case AFILE_STATE: case AFILE_STATE_GZ: #ifdef BASIC Log_print("State files are not supported in BASIC version"); return AFILE_ERROR; #else if (!StateSav_ReadAtariState(filename, "rb")) return AFILE_ERROR; /* Don't press Start nor Option */ GTIA_consol_override = 0; break; #endif default: break; } return type; }