mirror of
https://github.com/holub/mame
synced 2025-06-12 23:56:04 +03:00
(nw) c10: added tap
This commit is contained in:
parent
c2ec9b789a
commit
842dba5d9c
@ -25,30 +25,28 @@ constantly looking at.
|
|||||||
class c10_state : public driver_device
|
class c10_state : public driver_device
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
enum
|
|
||||||
{
|
|
||||||
TIMER_RESET
|
|
||||||
};
|
|
||||||
|
|
||||||
c10_state(const machine_config &mconfig, device_type type, const char *tag)
|
c10_state(const machine_config &mconfig, device_type type, const char *tag)
|
||||||
: driver_device(mconfig, type, tag)
|
: driver_device(mconfig, type, tag)
|
||||||
, m_maincpu(*this, "maincpu")
|
, m_maincpu(*this, "maincpu")
|
||||||
|
, m_rom(*this, "maincpu")
|
||||||
, m_p_videoram(*this, "videoram")
|
, m_p_videoram(*this, "videoram")
|
||||||
, m_p_chargen(*this, "chargen")
|
, m_p_chargen(*this, "chargen")
|
||||||
|
, m_ram(*this, "mainram")
|
||||||
{ }
|
{ }
|
||||||
|
|
||||||
uint32_t screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
|
uint32_t screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
|
||||||
void init_c10();
|
|
||||||
|
|
||||||
void c10(machine_config &config);
|
void c10(machine_config &config);
|
||||||
|
|
||||||
|
private:
|
||||||
void c10_io(address_map &map);
|
void c10_io(address_map &map);
|
||||||
void c10_mem(address_map &map);
|
void c10_mem(address_map &map);
|
||||||
private:
|
|
||||||
required_device<cpu_device> m_maincpu;
|
|
||||||
required_shared_ptr<uint8_t> m_p_videoram;
|
|
||||||
required_region_ptr<u8> m_p_chargen;
|
|
||||||
virtual void machine_reset() override;
|
virtual void machine_reset() override;
|
||||||
virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) override;
|
required_device<z80_device> m_maincpu;
|
||||||
|
required_region_ptr<u8> m_rom;
|
||||||
|
required_shared_ptr<u8> m_p_videoram;
|
||||||
|
required_region_ptr<u8> m_p_chargen;
|
||||||
|
memory_passthrough_handler *m_rom_shadow_tap;
|
||||||
|
required_shared_ptr<u8> m_ram;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
@ -56,9 +54,8 @@ private:
|
|||||||
void c10_state::c10_mem(address_map &map)
|
void c10_state::c10_mem(address_map &map)
|
||||||
{
|
{
|
||||||
map.unmap_value_high();
|
map.unmap_value_high();
|
||||||
map(0x0000, 0x0fff).bankrw("boot");
|
map(0x0000, 0x7fff).ram().share("mainram");
|
||||||
map(0x1000, 0x7fff).ram();
|
map(0x8000, 0xbfff).rom().region("maincpu", 0);
|
||||||
map(0x8000, 0xbfff).rom();
|
|
||||||
map(0xc000, 0xf0a1).ram();
|
map(0xc000, 0xf0a1).ram();
|
||||||
map(0xf0a2, 0xffff).ram().share("videoram");
|
map(0xf0a2, 0xffff).ram().share("videoram");
|
||||||
}
|
}
|
||||||
@ -72,23 +69,24 @@ void c10_state::c10_io(address_map &map)
|
|||||||
static INPUT_PORTS_START( c10 )
|
static INPUT_PORTS_START( c10 )
|
||||||
INPUT_PORTS_END
|
INPUT_PORTS_END
|
||||||
|
|
||||||
void c10_state::device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr)
|
|
||||||
{
|
|
||||||
switch (id)
|
|
||||||
{
|
|
||||||
case TIMER_RESET:
|
|
||||||
/* after the first 4 bytes have been read from ROM, switch the ram back in */
|
|
||||||
membank("boot")->set_entry(0);
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
throw emu_fatalerror("Unknown id in c10_state::device_timer");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void c10_state::machine_reset()
|
void c10_state::machine_reset()
|
||||||
{
|
{
|
||||||
membank("boot")->set_entry(1);
|
address_space &program = m_maincpu->space(AS_PROGRAM);
|
||||||
timer_set(attotime::from_usec(4), TIMER_RESET);
|
program.install_rom(0x0000, 0x0fff, m_rom); // do it here for F3
|
||||||
|
m_rom_shadow_tap = program.install_read_tap(0x8000, 0x8fff, "rom_shadow_r",[this](offs_t offset, u8 &data, u8 mem_mask)
|
||||||
|
{
|
||||||
|
if (!machine().side_effects_disabled())
|
||||||
|
{
|
||||||
|
// delete this tap
|
||||||
|
m_rom_shadow_tap->remove();
|
||||||
|
|
||||||
|
// reinstall ram over the rom shadow
|
||||||
|
m_maincpu->space(AS_PROGRAM).install_ram(0x0000, 0x0fff, m_ram);
|
||||||
|
}
|
||||||
|
|
||||||
|
// return the original data
|
||||||
|
return data;
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
/* This system appears to have inline attribute bytes of unknown meaning.
|
/* This system appears to have inline attribute bytes of unknown meaning.
|
||||||
@ -178,16 +176,11 @@ void c10_state::c10(machine_config &config)
|
|||||||
PALETTE(config, "palette", palette_device::MONOCHROME);
|
PALETTE(config, "palette", palette_device::MONOCHROME);
|
||||||
}
|
}
|
||||||
|
|
||||||
void c10_state::init_c10()
|
|
||||||
{
|
|
||||||
uint8_t *RAM = memregion("maincpu")->base();
|
|
||||||
membank("boot")->configure_entries(0, 2, &RAM[0x0000], 0x8000);
|
|
||||||
}
|
|
||||||
|
|
||||||
/* ROM definition */
|
/* ROM definition */
|
||||||
ROM_START( c10 )
|
ROM_START( c10 )
|
||||||
ROM_REGION( 0x10000, "maincpu", ROMREGION_ERASEFF )
|
ROM_REGION( 0x4000, "maincpu", 0 )
|
||||||
ROM_LOAD( "502-0055.ic16", 0x8000, 0x4000, CRC(2ccf5983) SHA1(52f7c497f5284bf5df9eb0d6e9142bb1869d8c24))
|
ROM_LOAD( "502-0055.ic16", 0x0000, 0x4000, CRC(2ccf5983) SHA1(52f7c497f5284bf5df9eb0d6e9142bb1869d8c24))
|
||||||
|
|
||||||
ROM_REGION( 0x2000, "chargen", 0 )
|
ROM_REGION( 0x2000, "chargen", 0 )
|
||||||
ROM_LOAD( "c10_char.ic9", 0x0000, 0x2000, CRC(cb530b6f) SHA1(95590bbb433db9c4317f535723b29516b9b9fcbf))
|
ROM_LOAD( "c10_char.ic9", 0x0000, 0x2000, CRC(cb530b6f) SHA1(95590bbb433db9c4317f535723b29516b9b9fcbf))
|
||||||
@ -196,4 +189,5 @@ ROM_END
|
|||||||
/* Driver */
|
/* Driver */
|
||||||
|
|
||||||
/* YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS */
|
/* YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS */
|
||||||
COMP( 1982, c10, 0, 0, c10, c10, c10_state, init_c10, "Cromemco", "C-10", MACHINE_NOT_WORKING | MACHINE_NO_SOUND)
|
COMP( 1982, c10, 0, 0, c10, c10, c10_state, empty_init, "Cromemco", "C-10", MACHINE_NOT_WORKING | MACHINE_NO_SOUND | MACHINE_SUPPORTS_SAVE )
|
||||||
|
|
||||||
|
@ -273,5 +273,5 @@ ROM_END
|
|||||||
/* Driver */
|
/* Driver */
|
||||||
|
|
||||||
// YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS
|
// YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS
|
||||||
COMP( 1981, pulsarlb, 0, 0, pulsar, pulsar, pulsar_state, empty_init, "Pulsar", "Little Big Board (6000 series)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND_HW )
|
COMP( 1981, pulsarlb, 0, 0, pulsar, pulsar, pulsar_state, empty_init, "Pulsar", "Little Big Board (6000 series)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND_HW | MACHINE_SUPPORTS_SAVE )
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user