static void init_mio(void) { free(mio_rom); mio_rom = (UBYTE *)Util_malloc(mio_rom_size); if (!Atari800_LoadImage(mio_rom_filename, mio_rom, mio_rom_size)) { free(mio_rom); mio_rom = NULL; return; } D(printf("Loaded mio rom image\n")); PBI_MIO_enabled = TRUE; if (PBI_SCSI_disk != NULL) fclose(PBI_SCSI_disk); if (!Util_filenamenotset(mio_scsi_disk_filename)) { PBI_SCSI_disk = fopen(mio_scsi_disk_filename, "rb+"); if (PBI_SCSI_disk == NULL) { Log_print("Error opening SCSI disk image:%s", mio_scsi_disk_filename); } else { D(printf("Opened SCSI disk image\n")); mio_scsi_enabled = TRUE; } } if (!mio_scsi_enabled) { PBI_SCSI_BSY = TRUE; /* makes MIO give up easier */ } free(mio_ram); mio_ram = (UBYTE *)Util_malloc(mio_ram_size); memset(mio_ram, 0, mio_ram_size); }
static int load_roms(void) { switch (Atari800_machine_type) { case Atari800_MACHINE_OSA: if (emuos_mode == 2) COPY_EMUOS(0x0800); else if (!Atari800_LoadImage(CFG_osa_filename, MEMORY_os, 0x2800)) { if (emuos_mode == 1) COPY_EMUOS(0x0800); else return FALSE; } else MEMORY_have_basic = Atari800_LoadImage(CFG_basic_filename, MEMORY_basic, 0x2000); break; case Atari800_MACHINE_OSB: if (emuos_mode == 2) COPY_EMUOS(0x0800); else if (!Atari800_LoadImage(CFG_osb_filename, MEMORY_os, 0x2800)) { if (emuos_mode == 1) COPY_EMUOS(0x0800); else return FALSE; } else MEMORY_have_basic = Atari800_LoadImage(CFG_basic_filename, MEMORY_basic, 0x2000); break; case Atari800_MACHINE_XLXE: if (emuos_mode == 2) COPY_EMUOS(0x2000); else if (!Atari800_LoadImage(CFG_xlxe_filename, MEMORY_os, 0x4000)) { if (emuos_mode == 1) COPY_EMUOS(0x2000); else return FALSE; } else { /* if you really don't want built-in BASIC */ if (!strcmp(CFG_basic_filename,"none")) memset(MEMORY_basic, 0, 0x2000); else if (!Atari800_LoadImage(CFG_basic_filename, MEMORY_basic, 0x2000)) return FALSE; } MEMORY_xe_bank = 0; break; case Atari800_MACHINE_5200: if (!Atari800_LoadImage(CFG_5200_filename, MEMORY_os, 0x800)) return FALSE; break; } return TRUE; }