mirror of
https://github.com/holub/mame
synced 2025-04-19 23:12:11 +03:00
sinclair/tsconf.cpp: Added initial software list and cleaned up code a little. (#10196)
This commit is contained in:
parent
83ba985f9c
commit
95dc01dd40
30
hash/tsconf_betadisc_flop.xml
Normal file
30
hash/tsconf_betadisc_flop.xml
Normal file
@ -0,0 +1,30 @@
|
||||
<?xml version="1.0"?>
|
||||
<!DOCTYPE softwarelist SYSTEM "softwarelist.dtd">
|
||||
<!--
|
||||
license:CC0
|
||||
-->
|
||||
<softwarelist name="tsconf_betadisc_flop" description="TS-Configuration Beta Disc / TR-DOS disk images">
|
||||
|
||||
<software name="copter">
|
||||
<description>Copter v0.1</description>
|
||||
<year>2012</year>
|
||||
<publisher>Wizart/DT</publisher>
|
||||
<part name="flop1" interface="floppy_5_25">
|
||||
<dataarea name="flop" size="655360">
|
||||
<rom name="COPTER.trd" size="655360" crc="43236562" sha1="c4e3a9bcfd2387e954372a633f7415db368dbd4b" />
|
||||
</dataarea>
|
||||
</part>
|
||||
</software>
|
||||
|
||||
<software name="zxbatlecity">
|
||||
<description>ZX Battle City v1.4 (NoVDAC)</description>
|
||||
<year>2020</year>
|
||||
<publisher>Marie Slip / n1k-o</publisher>
|
||||
<part name="flop1" interface="floppy_5_25">
|
||||
<dataarea name="flop" size="655360">
|
||||
<rom name="zxbattlecity_1_4_novdac.trd" size="655360" crc="0a2bfb45" sha1="21747a464db723d934ec2fa8a398b212344f6c1e" />
|
||||
</dataarea>
|
||||
</part>
|
||||
</software>
|
||||
|
||||
</softwarelist>
|
@ -96,13 +96,13 @@ TILE_GET_INFO_MEMBER(tsconf_state::get_tile_info_16c)
|
||||
|
||||
void tsconf_state::tsconf_mem(address_map &map)
|
||||
{
|
||||
map(0x0000, 0x3fff).bankr(m_banks[0]).w(FUNC(tsconf_state::tsconf_bank_w<0>));
|
||||
map(0x0000, 0x3fff).bankr(m_bank_ram[0]).w(FUNC(tsconf_state::tsconf_bank_w<0>));
|
||||
map(0x0000, 0x3fff).view(m_bank0_rom);
|
||||
m_bank0_rom[0](0x0000, 0x3fff).bankr(m_banks[4]);
|
||||
m_bank0_rom[0](0x0000, 0x3fff).bankr(m_bank_rom[0]);
|
||||
|
||||
map(0x4000, 0x7fff).bankr(m_banks[1]).w(FUNC(tsconf_state::tsconf_bank_w<1>));
|
||||
map(0x8000, 0xbfff).bankr(m_banks[2]).w(FUNC(tsconf_state::tsconf_bank_w<2>));
|
||||
map(0xc000, 0xffff).bankr(m_banks[3]).w(FUNC(tsconf_state::tsconf_bank_w<3>));
|
||||
map(0x4000, 0x7fff).bankr(m_bank_ram[1]).w(FUNC(tsconf_state::tsconf_bank_w<1>));
|
||||
map(0x8000, 0xbfff).bankr(m_bank_ram[2]).w(FUNC(tsconf_state::tsconf_bank_w<2>));
|
||||
map(0xc000, 0xffff).bankr(m_bank_ram[3]).w(FUNC(tsconf_state::tsconf_bank_w<3>));
|
||||
}
|
||||
|
||||
void tsconf_state::tsconf_io(address_map &map)
|
||||
@ -199,20 +199,21 @@ void tsconf_state::video_start()
|
||||
|
||||
void tsconf_state::machine_start()
|
||||
{
|
||||
for (auto i = 0; i < 4; i++)
|
||||
m_banks[i]->configure_entries(0, m_ram->size() / 0x4000, m_ram->pointer(), 0x4000);
|
||||
|
||||
memory_region *rom = memregion("maincpu");
|
||||
m_banks[4]->configure_entries(0, rom->bytes() / 0x4000, rom->base(), 0x4000);
|
||||
spectrum_128_state::machine_start();
|
||||
m_maincpu->space(AS_PROGRAM).specific(m_program);
|
||||
|
||||
save_item(NAME(m_regs));
|
||||
// TODO save'm'all!
|
||||
|
||||
// reconfigure ROMs
|
||||
memory_region *rom = memregion("maincpu");
|
||||
m_bank_rom[0]->configure_entries(0, rom->bytes() / 0x4000, rom->base(), 0x4000);
|
||||
m_bank_ram[0]->configure_entries(0, m_ram->size() / 0x4000, m_ram->pointer(), 0x4000);
|
||||
}
|
||||
|
||||
void tsconf_state::machine_reset()
|
||||
{
|
||||
m_bank0_rom.select(0);
|
||||
m_program = &m_maincpu->space(AS_PROGRAM);
|
||||
|
||||
m_port_f7_ext = DISABLED;
|
||||
|
||||
@ -298,6 +299,9 @@ void tsconf_state::tsconf(machine_config &config)
|
||||
RAM(config, m_sfile).set_default_size("512").set_default_value(0); // 85*6
|
||||
|
||||
AT_KEYB(config, m_keyboard, pc_keyboard_device::KEYBOARD_TYPE::AT, 3);
|
||||
|
||||
SOFTWARE_LIST(config, "betadisc_list_pent").set_original("spectrum_betadisc_flop");
|
||||
SOFTWARE_LIST(config, "betadisc_list_tsconf").set_original("tsconf_betadisc_flop");
|
||||
}
|
||||
|
||||
ROM_START(tsconf)
|
||||
@ -306,4 +310,4 @@ ROM_START(tsconf)
|
||||
ROM_END
|
||||
|
||||
// YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS
|
||||
COMP( 2011, tsconf, spec128, 0, tsconf, spec_plus, tsconf_state, empty_init, "NedoPC, TS-Labs", "ZX Evolution TS-Configuration", MACHINE_IS_INCOMPLETE)
|
||||
COMP( 2011, tsconf, spec128, 0, tsconf, spec_plus, tsconf_state, empty_init, "NedoPC, TS-Labs", "ZX Evolution TS-Configuration", 0)
|
||||
|
@ -28,7 +28,6 @@ public:
|
||||
tsconf_state(const machine_config &mconfig, device_type type, const char *tag)
|
||||
: spectrum_128_state(mconfig, type, tag),
|
||||
m_bank0_rom(*this, "bank0_rom"),
|
||||
m_banks(*this, "bank%u", 0U),
|
||||
m_keyboard(*this, "pc_keyboard"),
|
||||
m_beta(*this, BETA_DISK_TAG),
|
||||
m_dma(*this, "dma"),
|
||||
@ -191,9 +190,8 @@ private:
|
||||
std::map<tsconf_regs, u8> m_scanline_delayed_regs_update;
|
||||
u8 m_regs[0x100];
|
||||
|
||||
address_space *m_program = nullptr;
|
||||
memory_access<16, 0, 0, ENDIANNESS_LITTLE>::specific m_program;
|
||||
memory_view m_bank0_rom;
|
||||
required_memory_bank_array<5> m_banks; // 0..3 - RAM, 4 - ROM
|
||||
|
||||
required_device<at_keyboard_device> m_keyboard;
|
||||
|
||||
|
@ -72,12 +72,12 @@ void tsconf_state::tsconf_update_bank0()
|
||||
|
||||
if (W0_RAM)
|
||||
{
|
||||
m_banks[0]->set_entry(page0);
|
||||
m_bank_ram[0]->set_entry(page0);
|
||||
m_bank0_rom.disable();
|
||||
}
|
||||
else
|
||||
{
|
||||
m_banks[4]->set_entry(page0 & 0x1f);
|
||||
m_bank_rom[0]->set_entry(page0 & 0x1f);
|
||||
m_bank0_rom.select(0);
|
||||
}
|
||||
}
|
||||
@ -508,15 +508,15 @@ void tsconf_state::tsconf_port_xxaf_w(offs_t port, u8 data)
|
||||
break;
|
||||
|
||||
case PAGE1:
|
||||
m_banks[1]->set_entry(data);
|
||||
m_bank_ram[1]->set_entry(data);
|
||||
break;
|
||||
|
||||
case PAGE2:
|
||||
m_banks[2]->set_entry(data);
|
||||
m_bank_ram[2]->set_entry(data);
|
||||
break;
|
||||
|
||||
case PAGE3:
|
||||
m_banks[3]->set_entry(data);
|
||||
m_bank_ram[3]->set_entry(data);
|
||||
break;
|
||||
|
||||
case DMAS_ADDRESS_L:
|
||||
@ -811,30 +811,32 @@ TIMER_CALLBACK_MEMBER(tsconf_state::irq_scanline)
|
||||
|
||||
u8 tsconf_state::beta_neutral_r(offs_t offset)
|
||||
{
|
||||
return m_program->read_byte(offset);
|
||||
return m_program.read_byte(offset);
|
||||
}
|
||||
|
||||
u8 tsconf_state::beta_enable_r(offs_t offset)
|
||||
{
|
||||
if (!W0_RAM && m_banks[4]->entry() == 3)
|
||||
{
|
||||
if (m_beta->started() /*&& !m_beta->is_active()*/)
|
||||
if (!(machine().side_effects_disabled())) {
|
||||
if (!W0_RAM && m_bank_rom[0]->entry() == 3)
|
||||
{
|
||||
m_beta->enable();
|
||||
tsconf_update_bank0();
|
||||
if (m_beta->started() && !m_beta->is_active())
|
||||
{
|
||||
m_beta->enable();
|
||||
tsconf_update_bank0();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return m_program->read_byte(offset + 0x3d00);
|
||||
return m_program.read_byte(offset + 0x3d00);
|
||||
}
|
||||
|
||||
u8 tsconf_state::beta_disable_r(offs_t offset)
|
||||
{
|
||||
if (m_beta->started() && m_beta->is_active())
|
||||
{
|
||||
m_beta->disable();
|
||||
tsconf_update_bank0();
|
||||
if (!(machine().side_effects_disabled())) {
|
||||
if (m_beta->started() && m_beta->is_active())
|
||||
{
|
||||
m_beta->disable();
|
||||
tsconf_update_bank0();
|
||||
}
|
||||
}
|
||||
|
||||
return m_program->read_byte(offset + 0x4000);
|
||||
return m_program.read_byte(offset + 0x4000);
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user