_T("CyberStormPPC"),
_T("BlizzardPPC"),
_T("WarpEngineA4000"),
+ _T("TekMagic"),
NULL
};
static const TCHAR *ppc_implementations[] = {
{
TCHAR buf[256];
- _stprintf(buf, _T("scsi_%s"), name);
- cfgfile_dwrite_bool (f, buf, br->enabled);
-
for (int i = 0; i < MAX_BOARD_ROMS; i++) {
_stprintf(buf, _T("%s_rom_file"), name);
if (i == 0 || br->roms[i].romfile[0])
return 0;
}
+bool cfgfile_board_enabled(struct boardromconfig *br)
+{
+ for (int i = 0; i < MAX_BOARD_ROMS; i++) {
+ if (br->roms[i].romfile[0])
+ return true;
+ }
+ return false;
+}
+
static bool cfgfile_read_board_rom(const TCHAR *option, const TCHAR *value, struct multipath *mp, struct boardromconfig *br, const TCHAR *name, int mask)
{
TCHAR buf[256], buf2[MAX_DPATH];
+ bool dummy;
_stprintf(buf, _T("scsi_%s"), name);
- if (cfgfile_yesno(option, value, buf, &br->enabled))
+ if (cfgfile_yesno(option, value, buf, &dummy))
return true;
for (int i = 0; i < MAX_BOARD_ROMS; i++) {
static int flash_unlocked;
static int csmk2_flashaddressing;
static bool blizzardmaprom_bank_mapped, blizzardmaprom2_bank_mapped;
+static bool cpuboard_non_byte_ea;
static int ppc_irq_pending;
static bool is_ppc(void)
{
return currprefs.cpuboard_type == BOARD_BLIZZARDPPC || currprefs.cpuboard_type == BOARD_CSPPC;
-
+}
+static bool is_tekmagic(void)
+{
+ return currprefs.cpuboard_type == BOARD_TEKMAGIC;
}
DECLARE_MEMORY_FUNCTIONS(blizzardio);
#ifdef JIT
special_mem |= S_READ;
#endif
- uae_u32 *m;
-
- addr &= blizzardea_bank.mask;
- m = (uae_u32 *)(blizzardea_bank.baseaddr + addr);
- return do_get_mem_long(m);
+ uae_u32 v = 0;
+ if (cpuboard_non_byte_ea) {
+ v = blizzardea_bget(addr + 3) << 0;
+ v |= blizzardea_bget(addr + 2) << 8;
+ v |= blizzardea_bget(addr + 1) << 16;
+ v |= blizzardea_bget(addr + 0) << 24;
+ }
+ return v;
}
static uae_u32 REGPARAM2 blizzardea_wget(uaecptr addr)
{
#ifdef JIT
special_mem |= S_READ;
#endif
- uae_u16 *m, v;
-
- addr &= blizzardea_bank.mask;
- m = (uae_u16 *)(blizzardea_bank.baseaddr + addr);
- v = do_get_mem_word(m);
+ uae_u32 v = 0;
+ if (cpuboard_non_byte_ea) {
+ v = blizzardea_bget(addr + 1) << 0;
+ v |= blizzardea_bget(addr + 0) << 8;
+ }
return v;
}
static uae_u32 REGPARAM2 blizzardea_bget(uaecptr addr)
uae_u8 v;
addr &= blizzardea_bank.mask;
- if (is_blizzard2060() && addr >= BLIZZARD_2060_SCSI_OFFSET) {
+ if (is_tekmagic()) {
+ cpuboard_non_byte_ea = true;
+ v = cpuboard_ncr710_io_bget(addr);
+ } else if (is_blizzard2060() && addr >= BLIZZARD_2060_SCSI_OFFSET) {
v = cpuboard_ncr9x_scsi_get(addr);
} else if ((currprefs.cpuboard_type == BOARD_BLIZZARD_1230_IV_SCSI || currprefs.cpuboard_type == BOARD_BLIZZARD_1260_SCSI) && addr >= BLIZZARD_SCSI_KIT_SCSI_OFFSET) {
v = cpuboard_ncr9x_scsi_get(addr);
return v;
}
-static void REGPARAM2 blizzardea_lput(uaecptr addr, uae_u32 b)
+static void REGPARAM2 blizzardea_lput(uaecptr addr, uae_u32 l)
{
#ifdef JIT
special_mem |= S_WRITE;
#endif
+ if (cpuboard_non_byte_ea) {
+ blizzardea_bput(addr + 3, l >> 0);
+ blizzardea_bput(addr + 2, l >> 8);
+ blizzardea_bput(addr + 1, l >> 16);
+ blizzardea_bput(addr + 0, l >> 24);
+ }
}
-static void REGPARAM2 blizzardea_wput(uaecptr addr, uae_u32 b)
+static void REGPARAM2 blizzardea_wput(uaecptr addr, uae_u32 w)
{
#ifdef JIT
special_mem |= S_WRITE;
#endif
+ if (cpuboard_non_byte_ea) {
+ blizzardea_bput(addr + 1, w >> 0);
+ blizzardea_bput(addr + 0, w >> 8);
+ }
}
static void REGPARAM2 blizzardea_bput(uaecptr addr, uae_u32 b)
{
#ifdef JIT
special_mem |= S_WRITE;
#endif
- addr &= blizzardea_bank.mask;
- if (is_blizzard2060() && addr >= BLIZZARD_2060_SCSI_OFFSET) {
+ addr &= blizzardea_bank.mask;
+ if (is_tekmagic()) {
+ cpuboard_non_byte_ea = true;
+ cpuboard_ncr710_io_bput(addr, b);
+ } else if (is_blizzard2060() && addr >= BLIZZARD_2060_SCSI_OFFSET) {
cpuboard_ncr9x_scsi_put(addr, b);
} else if ((currprefs.cpuboard_type == BOARD_BLIZZARD_1230_IV_SCSI || currprefs.cpuboard_type == BOARD_BLIZZARD_1260_SCSI) && addr >= BLIZZARD_SCSI_KIT_SCSI_OFFSET) {
cpuboard_ncr9x_scsi_put(addr, b);
if (currprefs.maprom)
map_banks_nojitdirect(&blizzardmaprom_bank, (a3000hmem_bank.start + a3000hmem_bank.allocated - 524288) >> 16, 524288 >> 16, 0);
}
+ if (is_tekmagic()) {
+ map_banks(&blizzardf0_bank, 0xf00000 >> 16, 131072 >> 16, 0);
+ map_banks(&blizzardea_bank, 0xf40000 >> 16, 65536 >> 16, 0);
+ }
}
void cpuboard_reset(bool hardreset)
io_reg[CSIII_REG_LOCK] = 0x01;
}
flash_unlocked = 0;
+ cpuboard_non_byte_ea = false;
flash_free(flashrom);
flashrom = NULL;
cpuboard_size = currprefs.cpuboardmem1_size;
- if (is_blizzard() || is_blizzardppc()) {
+ if (is_tekmagic()) {
+
+ blizzardf0_bank.start = 0x00f00000;
+ blizzardf0_bank.allocated = 131072;
+ blizzardf0_bank.mask = blizzardf0_bank.allocated - 1;
+ mapped_malloc(&blizzardf0_bank);
+
+ blizzardea_bank.allocated = 65536;
+ blizzardea_bank.mask = blizzardea_bank.allocated - 1;
+ mapped_malloc(&blizzardea_bank);
+
+ } else if (is_blizzard() || is_blizzardppc()) {
blizzardram_bank.start = BLIZZARD_RAM_ALIAS_BASE;
blizzardram_bank.allocated = cpuboard_size;
blizzardram_bank.mask = blizzardram_bank.allocated - 1;
break;
case BOARD_WARPENGINE_A4000:
return &expamem_null;
+ case BOARD_TEKMAGIC:
+ roms[0] = 105;
+ break;
case BOARD_CSMK1:
roms[0] = currprefs.cpu_model == 68040 ? 95 : 101;
isflashrom = true;
}
protect_roms(false);
- if (is_blizzard2060()) {
+ if (is_tekmagic()) {
+ earom_size = 65536;
+ f0rom_size = 131072;
+ zfile_fread(blizzardf0_bank.baseaddr, 1, f0rom_size, autoconfig_rom);
+ autoconf = false;
+ } else if (is_blizzard2060()) {
f0rom_size = 65536;
earom_size = 131072;
// 2060 = 2x32k
currprefs.cs_a1000ram = changed_prefs.cs_a1000ram = RBB;
currprefs.cs_slowmemisfast = changed_prefs.cs_slowmemisfast = RBB;
- currprefs.a2091rom.enabled = changed_prefs.a2091rom.enabled = RBB;
- currprefs.a4091rom.enabled = changed_prefs.a4091rom.enabled = RBB;
+ //currprefs.a2091rom.enabled = changed_prefs.a2091rom.enabled = RBB;
+ //currprefs.a4091rom.enabled = changed_prefs.a4091rom.enabled = RBB;
+ RBB;
+ RBB;
currprefs.cs_cdtvscsi = changed_prefs.cs_cdtvscsi = RBB;
currprefs.cs_pcmcia = changed_prefs.cs_pcmcia = RBB;
SB (currprefs.cs_a1000ram ? 1 : 0);
SB (currprefs.cs_slowmemisfast ? 1 : 0);
- SB (currprefs.a2091rom.enabled ? 1 : 0);
- SB (currprefs.a4091rom.enabled ? 1 : 0);
+ SB (cfgfile_board_enabled(&currprefs.a2091rom) ? 1 : 0);
+ SB (cfgfile_board_enabled(&currprefs.a4091rom) ? 1 : 0);
SB (currprefs.cs_cdtvscsi ? 1 : 0);
SB (currprefs.cs_pcmcia ? 1 : 0);
}
expamem_board_pointer = expamem_z3_pointer;
}
- if (card_map[ecard])
+ if (card_map[ecard]) {
expamem_next((*card_map[ecard])(), NULL);
+ return;
+ }
break;
case 0x4c:
- if (card_map[ecard])
+ if (card_map[ecard]) {
expamem_next (NULL, NULL);
+ return;
+ }
break;
}
}
expamem_hi = value & 0xff;
expamem_z2_pointer = (expamem_hi | (expamem_lo >> 4)) << 16;
expamem_board_pointer = expamem_z2_pointer;
- if (card_map[ecard])
+ if (card_map[ecard]) {
expamem_next((*card_map[ecard]) (), NULL);
+ return;
+ }
} else {
expamem_lo = value & 0xff;
}
break;
case 0x4c:
- if (card_map[ecard])
+ if (card_map[ecard]) {
expamem_next(expamem_bank_current, NULL);
+ return;
+ }
break;
}
static addrbank *expamem_init_fastcard_2 (int boardnum)
{
- uae_u16 mid = (currprefs.a2091rom.enabled || currprefs.uae_hide) ? commodore : uae_id;
- uae_u8 pid = (currprefs.a2091rom.enabled || currprefs.uae_hide) ? commodore_a2091_ram : (currprefs.maprom && !currprefs.cpuboard_type ? 1 : 81);
- uae_u8 type = add_memory | zorroII | (currprefs.a2091rom.enabled && !boardnum ? chainedconfig : 0);
+ uae_u16 mid = (cfgfile_board_enabled(&currprefs.a2091rom) || currprefs.uae_hide) ? commodore : uae_id;
+ uae_u8 pid = (cfgfile_board_enabled(&currprefs.a2091rom) || currprefs.uae_hide) ? commodore_a2091_ram : (currprefs.maprom && !currprefs.cpuboard_type ? 1 : 81);
+ uae_u8 type = add_memory | zorroII | (cfgfile_board_enabled(&currprefs.a2091rom) && !boardnum ? chainedconfig : 0);
int allocated = boardnum ? fastmem2_bank.allocated : fastmem_bank.allocated;
expamem_init_clear ();
}
// immediately after Z2Fast so that they can be emulated as A590/A2091 with fast ram.
#ifdef A2091
- if (currprefs.a2091rom.enabled) {
+ if (cfgfile_board_enabled(&currprefs.a2091rom)) {
card_flags[cardno] = 0;
card_name[cardno] = _T("A2091");
card_init[cardno] = expamem_init_a2091;
}
#endif
#ifdef NCR
- if (currprefs.oktagonrom.enabled) {
+ if (cfgfile_board_enabled(&currprefs.oktagonrom)) {
card_name[cardno] = _T("Oktagon 2008");
card_init[cardno] = expamem_init_oktagon;
card_map[cardno++] = NULL;
}
#endif
#ifdef NCR
- if (currprefs.a4091rom.enabled) {
+ if (cfgfile_board_enabled(&currprefs.a4091rom)) {
card_flags[cardno] = 1;
card_name[cardno] = _T("A4091");
card_init[cardno] = expamem_init_a4091;
card_init[cardno] = expamem_init_a4091_2;
card_map[cardno++] = NULL;
}
- if (currprefs.fastlanerom.enabled) {
+ if (cfgfile_board_enabled(&currprefs.fastlanerom)) {
card_flags[cardno] = 1;
card_name[cardno] = _T("Fastlane");
card_init[cardno] = expamem_init_fastlane;
if (currprefs.cpuboard_type == BOARD_WARPENGINE_A4000) {
warpengine_add_scsi_unit(unit, uci);
added = true;
+ } else if (currprefs.cpuboard_type == BOARD_TEKMAGIC) {
+ tekmagic_add_scsi_unit(unit, uci);
+ added = true;
} else if (currprefs.cpuboard_type == BOARD_CSMK3 || currprefs.cpuboard_type == BOARD_CSPPC) {
cyberstorm_add_scsi_unit(unit, uci);
added = true;
added = true;
} else if (type == HD_CONTROLLER_TYPE_SCSI_A2091) {
#ifdef A2091
- if (currprefs.a2091rom.enabled) {
+ if (cfgfile_board_enabled(&currprefs.a2091rom)) {
a2091_add_scsi_unit (unit, uci, 0);
added = true;
}
#endif
} else if (type == HD_CONTROLLER_TYPE_SCSI_A2091_2) {
#ifdef A2091
- if (currprefs.a2091rom.enabled) {
+ if (cfgfile_board_enabled(&currprefs.a2091rom)) {
a2091_add_scsi_unit (unit, uci, 1);
added = true;
}
#endif
} else if (type == HD_CONTROLLER_TYPE_SCSI_A4091) {
#ifdef NCR
- if (currprefs.a4091rom.enabled) {
+ if (cfgfile_board_enabled(&currprefs.a4091rom)) {
a4091_add_scsi_unit (unit, uci, 0);
added = true;
}
#endif
} else if (type == HD_CONTROLLER_TYPE_SCSI_A4091_2) {
#ifdef NCR
- if (currprefs.a4091rom.enabled) {
+ if (cfgfile_board_enabled(&currprefs.a4091rom)) {
a4091_add_scsi_unit (unit, uci, 1);
added = true;
}
#endif
} else if (type == HD_CONTROLLER_TYPE_SCSI_FASTLANE) {
#ifdef NCR
- if (currprefs.fastlanerom.enabled) {
+ if (cfgfile_board_enabled(&currprefs.fastlanerom)) {
fastlane_add_scsi_unit (unit, uci, 0);
added = true;
}
#endif
} else if (type == HD_CONTROLLER_TYPE_SCSI_FASTLANE_2) {
#ifdef NCR
- if (currprefs.fastlanerom.enabled) {
+ if (cfgfile_board_enabled(&currprefs.fastlanerom)) {
fastlane_add_scsi_unit (unit, uci, 1);
added = true;
}
#endif
} else if (type == HD_CONTROLLER_TYPE_SCSI_OKTAGON) {
#ifdef NCR
- if (currprefs.oktagonrom.enabled) {
+ if (cfgfile_board_enabled(&currprefs.oktagonrom)) {
oktagon_add_scsi_unit (unit, uci, 0);
added = true;
}
#endif
} else if (type == HD_CONTROLLER_TYPE_SCSI_OKTAGON_2) {
#ifdef NCR
- if (currprefs.oktagonrom.enabled) {
+ if (cfgfile_board_enabled(&currprefs.oktagonrom)) {
oktagon_add_scsi_unit (unit, uci, 1);
added = true;
}
a4000t_add_scsi_unit (unit, uci);
added = true;
#endif
- } else if (currprefs.a2091rom.enabled) {
+ } else if (cfgfile_board_enabled(&currprefs.a2091rom)) {
#ifdef A2091
a2091_add_scsi_unit (unit, uci, 0);
added = true;
#endif
- } else if (currprefs.a4091rom.enabled) {
+ } else if (cfgfile_board_enabled(&currprefs.a4091rom)) {
#ifdef NCR
a4091_add_scsi_unit (unit, uci, 0);
added = true;
#define BOARD_CSPPC 9
#define BOARD_BLIZZARDPPC 10
#define BOARD_WARPENGINE_A4000 11
+#define BOARD_TEKMAGIC 12
+
extern void ncr710_reset(void);
extern void ncr_rethink(void);
+void cpuboard_ncr710_io_bput(uaecptr addr, uae_u32 v);
+uae_u32 cpuboard_ncr710_io_bget(uaecptr addr);
+
extern int a4000t_add_scsi_unit (int ch, struct uaedev_config_info *ci);
extern int warpengine_add_scsi_unit(int ch, struct uaedev_config_info *ci);
+extern int tekmagic_add_scsi_unit(int ch, struct uaedev_config_info *ci);
extern int cyberstorm_add_scsi_unit(int ch, struct uaedev_config_info *ci);
extern int blizzardppc_add_scsi_unit(int ch, struct uaedev_config_info *ci);
extern int a4091_add_scsi_unit(int ch, struct uaedev_config_info *ci, int devnum);
+
struct boardromconfig
{
struct romconfig roms[MAX_BOARD_ROMS];
- bool enabled;
};
extern void fixup_prefs_dimensions (struct uae_prefs *prefs);
extern void fixup_prefs (struct uae_prefs *prefs);
extern void fixup_cpu (struct uae_prefs *prefs);
+extern bool cfgfile_board_enabled(struct boardromconfig *br);
extern void check_prefs_changed_custom (void);
extern void check_prefs_changed_cpu (void);
static struct ncr_state ncr_a4091_2;
static struct ncr_state ncr_a4000t;
static struct ncr_state ncr_we;
+static struct ncr_state ncr_cpuboard;
static struct ncr_state ncr_cs;
static struct ncr_state ncr_bppc;
&ncr_a4091_2,
&ncr_a4000t,
&ncr_we,
+ &ncr_cpuboard,
&ncr_bppc,
NULL
};
return (addr & ~3) | (3 - (addr & 3));
}
-void ncr_io_bput(struct ncr_state *ncr, uaecptr addr, uae_u32 val)
+static void ncr_io_bput(struct ncr_state *ncr, uaecptr addr, uae_u32 val)
{
if (addr >= CYBERSTORM_SCSI_RAM_OFFSET && ncr->ramsize) {
cyberstorm_scsi_ram_put(addr, val);
addr &= IO_MASK;
lsi_mmio_write(ncr->devobject.lsistate, beswap(addr), val, 1);
}
-void ncr710_io_bput(struct ncr_state *ncr, uaecptr addr, uae_u32 val)
+static void ncr710_io_bput(struct ncr_state *ncr, uaecptr addr, uae_u32 val)
{
addr &= IO_MASK;
lsi710_mmio_write(ncr->devobject.lsistate, beswap(addr), val, 1);
}
+void cpuboard_ncr710_io_bput(uaecptr addr, uae_u32 v)
+{
+ ncr710_io_bput(&ncr_cpuboard, addr, v);
+}
static void ncr_bput2 (struct ncr_state *ncr, uaecptr addr, uae_u32 val)
{
ncr710_io_bput(ncr, addr, val);
}
-uae_u32 ncr_io_bget(struct ncr_state *ncr, uaecptr addr)
+static uae_u32 ncr_io_bget(struct ncr_state *ncr, uaecptr addr)
{
if (addr >= CYBERSTORM_SCSI_RAM_OFFSET && ncr->ramsize)
return cyberstorm_scsi_ram_get(addr);
addr &= IO_MASK;
return lsi_mmio_read(ncr->devobject.lsistate, beswap(addr), 1);
}
-uae_u32 ncr710_io_bget(struct ncr_state *ncr, uaecptr addr)
+static uae_u32 ncr710_io_bget(struct ncr_state *ncr, uaecptr addr)
{
addr &= IO_MASK;
return lsi710_mmio_read(ncr->devobject.lsistate, beswap(addr), 1);
}
+uae_u32 cpuboard_ncr710_io_bget(uaecptr addr)
+{
+ return ncr710_io_bget(&ncr_cpuboard, addr);
+}
static uae_u32 ncr_bget2 (struct ncr_state *ncr, uaecptr addr)
{
ncr4_lget, ncr4_wget, ncr4_bget,
ncr4_lput, ncr4_wput, ncr4_bput,
default_xlate, default_check, NULL, NULL, _T("A4091"),
- dummy_lgeti, dummy_wgeti, ABFLAG_IO
+ dummy_lgeti, dummy_wgeti, ABFLAG_IO | ABFLAG_SAFE
};
DECLARE_MEMORY_FUNCTIONS(ncr42)
ncr42_lget, ncr42_wget, ncr42_bget,
ncr42_lput, ncr42_wput, ncr42_bput,
default_xlate, default_check, NULL, NULL, _T("A4091 #2"),
- dummy_lgeti, dummy_wgeti, ABFLAG_IO
+ dummy_lgeti, dummy_wgeti, ABFLAG_IO | ABFLAG_SAFE
};
static void REGPARAM2 ncr_wput (struct ncr_state *ncr, uaecptr addr, uae_u32 w)
ncr->enabled = true;
memset (ncr->acmemory, 0xff, sizeof ncr->acmemory);
- ncr->rom_start = A4091_ROM_VECTOR;
+ ncr->rom_start = 0;
ncr->rom_offset = A4091_ROM_OFFSET;
ncr->rom_end = A4091_IO_OFFSET;
ncr->io_start = A4091_IO_OFFSET;
return ncr->scsid[ch] ? 1 : 0;
}
-int a4000t_add_scsi_unit (int ch, struct uaedev_config_info *ci)
+static int ncr_add_scsi_unit(struct ncr_state *ncr, int ch, struct uaedev_config_info *ci)
{
if (ci->type == UAEDEV_CD)
- return add_ncr_scsi_cd (&ncr_a4000t, ch, ci->device_emu_unit);
+ return add_ncr_scsi_cd (ncr, ch, ci->device_emu_unit);
else if (ci->type == UAEDEV_TAPE)
- return add_ncr_scsi_tape (&ncr_a4000t, ch, ci->rootdir, ci->readonly);
+ return add_ncr_scsi_tape (ncr, ch, ci->rootdir, ci->readonly);
else
- return add_ncr_scsi_hd (&ncr_a4000t, ch, NULL, ci, 1);
+ return add_ncr_scsi_hd (ncr, ch, NULL, ci, 1);
+}
+
+int a4000t_add_scsi_unit (int ch, struct uaedev_config_info *ci)
+{
+ return ncr_add_scsi_unit(&ncr_a4000t, ch, ci);
}
int warpengine_add_scsi_unit (int ch, struct uaedev_config_info *ci)
{
- if (ci->type == UAEDEV_CD)
- return add_ncr_scsi_cd (&ncr_we, ch, ci->device_emu_unit);
- else if (ci->type == UAEDEV_TAPE)
- return add_ncr_scsi_tape (&ncr_we, ch, ci->rootdir, ci->readonly);
- else
- return add_ncr_scsi_hd (&ncr_we, ch, NULL, ci, 1);
+ return ncr_add_scsi_unit(&ncr_we, ch, ci);
+}
+
+int tekmagic_add_scsi_unit (int ch, struct uaedev_config_info *ci)
+{
+ return ncr_add_scsi_unit(&ncr_cpuboard, ch, ci);
}
int a4091_add_scsi_unit (int ch, struct uaedev_config_info *ci, int devnum)
{
- struct ncr_state *ncr = ncra4091[devnum];
- if (ci->type == UAEDEV_CD)
- return add_ncr_scsi_cd (ncr, ch, ci->device_emu_unit);
- else if (ci->type == UAEDEV_TAPE)
- return add_ncr_scsi_tape (ncr, ch, ci->rootdir, ci->readonly);
- else
- return add_ncr_scsi_hd (ncr, ch, NULL, ci, 1);
+ return ncr_add_scsi_unit(ncra4091[devnum], ch, ci);
}
int cyberstorm_add_scsi_unit(int ch, struct uaedev_config_info *ci)
{
- if (ci->type == UAEDEV_CD)
- return add_ncr_scsi_cd(&ncr_cs, ch, ci->device_emu_unit);
- else if (ci->type == UAEDEV_TAPE)
- return add_ncr_scsi_tape(&ncr_cs, ch, ci->rootdir, ci->readonly);
- else
- return add_ncr_scsi_hd(&ncr_cs, ch, NULL, ci, 1);
+ return ncr_add_scsi_unit(&ncr_cs, ch, ci);
}
int blizzardppc_add_scsi_unit(int ch, struct uaedev_config_info *ci)
{
- if (ci->type == UAEDEV_CD)
- return add_ncr_scsi_cd(&ncr_bppc, ch, ci->device_emu_unit);
- else if (ci->type == UAEDEV_TAPE)
- return add_ncr_scsi_tape(&ncr_bppc, ch, ci->rootdir, ci->readonly);
- else
- return add_ncr_scsi_hd(&ncr_bppc, ch, NULL, ci, 1);
+ return ncr_add_scsi_unit(&ncr_bppc, ch, ci);
}
-
#endif
-
if (changed_prefs.cpu_model >= 68020)
size = 0x10000000;
z3size = ((changed_prefs.z3fastmem_size + align) & ~align) + ((changed_prefs.z3fastmem2_size + align) & ~align) + ((changed_prefs.z3chipmem_size + align) & ~align);
- if (currprefs.a4091rom.enabled)
+ if (cfgfile_board_enabled(&currprefs.a4091rom))
othersize += 2 * 16 * 1024 * 1024;
- if (currprefs.fastlanerom.enabled)
+ if (cfgfile_board_enabled(&currprefs.fastlanerom))
othersize += 2 * 32 * 1024 * 1024;
totalsize = size + z3size + z3rtgmem_size + othersize;
while (totalsize > size64) {
void mapped_free (addrbank *ab)
{
shmpiece *x = shm_start;
+ bool rtgmem = (ab->flags & ABFLAG_RTG) != 0;
if (ab->baseaddr == NULL)
return;
- if (!currprefs.jit_direct_compatible_memory && ab->baseaddr != rtgmem_mapped_memory) {
+ if (!currprefs.jit_direct_compatible_memory && !rtgmem) {
if (!(ab->flags & ABFLAG_NOALLOC)) {
xfree(ab->baseaddr);
ab->baseaddr = NULL;
#define IDC_DBG_MISC 1765
#define IDC_DBG_CUSTOM 1766
#define IDC_DBG_MISCCPU 1767
-#define IDC_CS_A2091 1768
#define IDC_CS_DMAC2 1769
-#define IDC_CS_A4091 1770
#define IDC_CS_CDTVSCSI 1771
#define IDC_CS_CD32FMV 1771
#define IDC_CS_SCSIMODE 1772
CONTROL "Catweasel Z2 emulation [] Catweasel MK2 Zorro II card emulation. Physical Windows compatible Catweasel card and drivers required.",IDC_CATWEASEL,
"Button",BS_AUTOCHECKBOX | WS_TABSTOP,13,216,147,11
CONTROL "uaescsi.device",IDC_SCSIDEVICE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,13,229,147,11
- CONTROL "A590/A2091 WD33C93 SCSI",IDC_CS_A2091,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,13,242,147,11
- CONTROL "A4091 NCR53C710 SCSI",IDC_CS_A4091,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,13,255,151,11
CONTROL "Include host SCSI devices",IDC_CS_SCSIMODE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,202,271,147,11
GROUPBOX "Network",IDC_STATIC,181,197,213,86
CONTROL "bsdsocket.library [] bsdsocket network library emulation.",IDC_SOCKETS,
CONTROL "A2065 Z2 [] A2065 Ethernet Zorro II card emulation.",IDC_A2065,
"Button",BS_AUTOCHECKBOX | WS_TABSTOP,202,241,187,11
COMBOBOX IDC_NETDEVICE,202,256,178,65,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
- CONTROL "CD32 Full Motion Video cartridge",IDC_CS_CD32FMV,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,13,268,151,11
+ CONTROL "CD32 Full Motion Video cartridge",IDC_CS_CD32FMV,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,13,242,151,11
END
IDD_INPUTMAP DIALOGEX 0, 0, 421, 341
90, -1, 94, -1, -1, // 1260 SCSI
92, -1, -1, // 2060
93, -1, -1, // Warp Engine
+ 105, -1, -1, // TekMagic
95, 101, -1, -1, // CS MK I
96, -1, -1, // CS MK II
97, -1, -1, // CS MK III
52, 25, -1, -1, // ar 1
26, 27, 28, -1, -1, // ar 2
29, 30, -1, -1, // ar 3
+ 47, -1, -1, // action replay 1200
0, 0, 0
};
_T("Blizzard 1230-IV\0Blizzard 1260\0")
_T("Blizzard 1230-IV/SCSI\0Blizzard 1260/SCSI\0")
- _T("Blizzard 2060\0Warp Engine\0")
+ _T("Blizzard 2060\0Warp Engine\0TekMagic 2040/2060\0")
_T("CyberStorm MK I\0CyberStorm MK II\0CyberStorm MK III\0")
_T("Blizzard PPC\0CyberStorm PPC\0")
rtgz3size = gfxboard_is_z3 (workprefs.rtgmem_type) ? workprefs.rtgmem_size : 0;
size = ((workprefs.z3fastmem_size + sizealign) & ~sizealign) + ((workprefs.z3fastmem2_size + sizealign) & ~sizealign) +
((rtgz3size + sizealign) & ~sizealign);
- if (currprefs.a4091rom.enabled)
+ if (cfgfile_board_enabled(&currprefs.a4091rom))
size += 2 * 16 * 1024 * 1024;
if (changed_prefs.mbresmem_high_size == 128 * 1024 * 1024 && (size || workprefs.z3chipmem_size))
size += 16 * 1024 * 1024;
}
ew (hDlg, IDC_RTG_HWSPRITE, rtg3 && workprefs.gfx_api);
ShowWindow (GetDlgItem(hDlg, IDC_CS_SCSIMODE), SW_HIDE);
- ew (hDlg, IDC_CS_A2091, en);
- ew (hDlg, IDC_CS_A4091, en);
ew(hDlg, IDC_CS_CD32FMV, en);
ew (hDlg, IDC_CS_SCSIMODE, FALSE);
}
CheckDlgButton (hDlg, IDC_SCSIDEVICE, workprefs.scsi == 1);
CheckDlgButton (hDlg, IDC_SANA2, workprefs.sana2);
CheckDlgButton (hDlg, IDC_A2065, workprefs.a2065name[0] ? 1 : 0);
- CheckDlgButton (hDlg, IDC_CS_A2091, workprefs.a2091rom.enabled);
- CheckDlgButton(hDlg, IDC_CS_A4091, workprefs.a4091rom.enabled);
CheckDlgButton(hDlg, IDC_CS_CD32FMV, workprefs.cs_cd32fmv);
CheckDlgButton(hDlg, IDC_CS_SCSIMODE, workprefs.scsi == 2);
SendDlgItemMessage (hDlg, IDC_RTG_BUFFERCNT, CB_SETCURSEL, workprefs.gfx_apmode[1].gfx_backbuffers == 0 ? 0 : workprefs.gfx_apmode[1].gfx_backbuffers - 1, 0);
case IDC_CATWEASEL:
workprefs.catweasel = ischecked (hDlg, IDC_CATWEASEL) ? -1 : 0;
break;
- case IDC_CS_A2091:
- workprefs.a2091rom.enabled = ischecked (hDlg, IDC_CS_A2091) ? 1 : 0;
- break;
- case IDC_CS_A4091:
- workprefs.a4091rom.enabled = ischecked(hDlg, IDC_CS_A4091) ? 1 : 0;
- break;
case IDC_CS_CD32FMV:
workprefs.cs_cd32fmv = ischecked(hDlg, IDC_CS_CD32FMV) ? 1 : 0;
break;
SendDlgItemMessage(hDlg, IDC_CPUBOARD_TYPE, CB_ADDSTRING, 0, (LPARAM)_T("CyberStorm MK III"));
SendDlgItemMessage(hDlg, IDC_CPUBOARD_TYPE, CB_ADDSTRING, 0, (LPARAM)_T("CyberStorm PPC"));
SendDlgItemMessage(hDlg, IDC_CPUBOARD_TYPE, CB_ADDSTRING, 0, (LPARAM)_T("Blizzard PPC"));
- SendDlgItemMessage(hDlg, IDC_CPUBOARD_TYPE, CB_ADDSTRING, 0, (LPARAM)_T("Warp Engine A4000"));
+ SendDlgItemMessage(hDlg, IDC_CPUBOARD_TYPE, CB_ADDSTRING, 0, (LPARAM)_T("Warp Engine"));
+ SendDlgItemMessage(hDlg, IDC_CPUBOARD_TYPE, CB_ADDSTRING, 0, (LPARAM)_T("Tek Magic"));
case WM_USER:
workprefs.fastmem_autoconfig = ischecked (hDlg, IDC_FASTMEMAUTOCONFIG);
case WM_INITDIALOG:
recursive++;
if (current_cddlg.ci.controller_type == HD_CONTROLLER_TYPE_UAE)
- current_cddlg.ci.controller_type = (workprefs.a2091rom.enabled || workprefs.a4091rom.enabled || workprefs.cs_cdtvscsi || (workprefs.cs_mbdmac & 3)) ? HD_CONTROLLER_TYPE_SCSI_AUTO : HD_CONTROLLER_TYPE_IDE_AUTO;
+ current_cddlg.ci.controller_type = (cfgfile_board_enabled(&workprefs.a2091rom) || cfgfile_board_enabled(&workprefs.a4091rom) || workprefs.cs_cdtvscsi || (workprefs.cs_mbdmac & 3)) ? HD_CONTROLLER_TYPE_SCSI_AUTO : HD_CONTROLLER_TYPE_IDE_AUTO;
inithdcontroller(hDlg, current_cddlg.ci.controller_type, UAEDEV_CD);
SendDlgItemMessage (hDlg, IDC_HDF_CONTROLLER_UNIT, CB_SETCURSEL, current_cddlg.ci.controller_unit, 0);
InitializeListView (hDlg);
return NULL;
}
-#define NEXT_ROM_ID 104
+#define NEXT_ROM_ID 105
static struct romheader romheaders[] = {
{ _T("Freezer Cartridges"), 1 },
0xbb0d2f6a, 0x56c441fa,0x37d19339,0x3081b2e8,0xceae823b,0xc7e97e49, NULL, _T("oktagon2008.rom") },
{ _T("Warp Engine A4000 ROM"), 0, 0, 0, 0, _T("WARPENGINE\0WARPENGINEA4000\0"), 32768, 93, 0, 0, ROMTYPE_CPUBOARD, 0, 0, NULL,
0x4deb574a, 0x6e6c95ff,0xe8448391,0xd36c5b68,0xc9065cb0,0x702a7d27 },
+ { _T("TekMagic 2040/2060 ROM"), 1, 0, 1, 0, _T("TEKMAGIC\0TEKMAGIC2040\0TEKMAGIC2060\0"), 65536, 105, 0, 0, ROMTYPE_CPUBOARD, 0, 0, NULL,
+ 0x9e9781d5, 0xf65b60d1,0x4300c50f,0x2ed17cf4,0x4dcfdef9,0x16697bc9, NULL, _T("tekmagic2060.rom") },
+ ALTROMPN(105, 1, 1, 32768, ROMTYPE_ODD | ROMTYPE_8BIT, NULL, 0x888da4cf, 0x6ae85f3a, 0x65331ba4, 0xaaba67ae, 0x34763d70, 0x2bde0495)
+ ALTROMPN(105, 1, 2, 32768, ROMTYPE_EVEN | ROMTYPE_8BIT, NULL, 0xaf1f47db, 0x28d5bed0, 0xbc517d46, 0x500e8159, 0x723e0b64, 0x4733c26a)
{ _T("CyberStorm MK I 68040"), 0, 0, 0, 0, _T("CSMKI\0"), 32768, 95, 0, 0, ROMTYPE_CPUBOARD, 0, 0, NULL,
0, 0, 0, 0, 0, 0, NULL, _T("cyberstormmk1_040.rom") },