mirror of
https://github.com/holub/mame
synced 2025-06-06 21:03:47 +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
|
||||
{
|
||||
public:
|
||||
enum
|
||||
{
|
||||
TIMER_RESET
|
||||
};
|
||||
|
||||
c10_state(const machine_config &mconfig, device_type type, const char *tag)
|
||||
: driver_device(mconfig, type, tag)
|
||||
, m_maincpu(*this, "maincpu")
|
||||
, m_rom(*this, "maincpu")
|
||||
, m_p_videoram(*this, "videoram")
|
||||
, m_p_chargen(*this, "chargen")
|
||||
, m_ram(*this, "mainram")
|
||||
{ }
|
||||
|
||||
uint32_t screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
|
||||
void init_c10();
|
||||
|
||||
void c10(machine_config &config);
|
||||
|
||||
private:
|
||||
void c10_io(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 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)
|
||||
{
|
||||
map.unmap_value_high();
|
||||
map(0x0000, 0x0fff).bankrw("boot");
|
||||
map(0x1000, 0x7fff).ram();
|
||||
map(0x8000, 0xbfff).rom();
|
||||
map(0x0000, 0x7fff).ram().share("mainram");
|
||||
map(0x8000, 0xbfff).rom().region("maincpu", 0);
|
||||
map(0xc000, 0xf0a1).ram();
|
||||
map(0xf0a2, 0xffff).ram().share("videoram");
|
||||
}
|
||||
@ -72,23 +69,24 @@ void c10_state::c10_io(address_map &map)
|
||||
static INPUT_PORTS_START( c10 )
|
||||
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()
|
||||
{
|
||||
membank("boot")->set_entry(1);
|
||||
timer_set(attotime::from_usec(4), TIMER_RESET);
|
||||
address_space &program = m_maincpu->space(AS_PROGRAM);
|
||||
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.
|
||||
@ -178,16 +176,11 @@ void c10_state::c10(machine_config &config)
|
||||
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_START( c10 )
|
||||
ROM_REGION( 0x10000, "maincpu", ROMREGION_ERASEFF )
|
||||
ROM_LOAD( "502-0055.ic16", 0x8000, 0x4000, CRC(2ccf5983) SHA1(52f7c497f5284bf5df9eb0d6e9142bb1869d8c24))
|
||||
ROM_REGION( 0x4000, "maincpu", 0 )
|
||||
ROM_LOAD( "502-0055.ic16", 0x0000, 0x4000, CRC(2ccf5983) SHA1(52f7c497f5284bf5df9eb0d6e9142bb1869d8c24))
|
||||
|
||||
ROM_REGION( 0x2000, "chargen", 0 )
|
||||
ROM_LOAD( "c10_char.ic9", 0x0000, 0x2000, CRC(cb530b6f) SHA1(95590bbb433db9c4317f535723b29516b9b9fcbf))
|
||||
@ -196,4 +189,5 @@ ROM_END
|
||||
/* Driver */
|
||||
|
||||
/* 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 */
|
||||
|
||||
// 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