summaryrefslogtreecommitdiffstatshomepage
path: root/src/mame/drivers/tutor.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/mame/drivers/tutor.cpp')
-rw-r--r--src/mame/drivers/tutor.cpp44
1 files changed, 23 insertions, 21 deletions
diff --git a/src/mame/drivers/tutor.cpp b/src/mame/drivers/tutor.cpp
index ab718403dbf..9fed2d71e4c 100644
--- a/src/mame/drivers/tutor.cpp
+++ b/src/mame/drivers/tutor.cpp
@@ -296,17 +296,17 @@ READ8_MEMBER( tutor_state::key_r )
char port[12];
uint8_t value;
- snprintf(port, ARRAY_LENGTH(port), "LINE%d", offset);
+ snprintf(port, ARRAY_LENGTH(port), "LINE%d", (offset & 0x007e) >> 3);
value = ioport(port)->read();
/* hack for ports overlapping with joystick */
- if (offset == 4 || offset == 5)
+ if (offset >= 32 && offset < 48)
{
- snprintf(port, ARRAY_LENGTH(port), "LINE%d_alt", offset);
+ snprintf(port, ARRAY_LENGTH(port), "LINE%d_alt", (offset & 0x007e) >> 3);
value |= ioport(port)->read();
}
- return value;
+ return BIT(value, offset & 7);
}
@@ -559,10 +559,10 @@ void tutor_state::tutor_memmap(address_map &map)
map(0x8000, 0xbfff).bankr("bank2").nopw();
map(0xc000, 0xdfff).noprw(); /*free for expansion, or cartridge ROM?*/
- map(0xe000, 0xe000).rw("tms9928a", FUNC(tms9928a_device::vram_r), FUNC(tms9928a_device::vram_w)); /*VDP data*/
- map(0xe002, 0xe002).rw("tms9928a", FUNC(tms9928a_device::register_r), FUNC(tms9928a_device::register_w));/*VDP status*/
+ map(0xe000, 0xe000).rw("tms9928a", FUNC(tms9928a_device::vram_read), FUNC(tms9928a_device::vram_write)); /*VDP data*/
+ map(0xe002, 0xe002).rw("tms9928a", FUNC(tms9928a_device::register_read), FUNC(tms9928a_device::register_write));/*VDP status*/
map(0xe100, 0xe1ff).rw(FUNC(tutor_state::tutor_mapper_r), FUNC(tutor_state::tutor_mapper_w)); /*cartridge mapper*/
- map(0xe200, 0xe200).w("sn76489a", FUNC(sn76489a_device::command_w)); /*sound chip*/
+ map(0xe200, 0xe200).w("sn76489a", FUNC(sn76489a_device::write)); /*sound chip*/
map(0xe800, 0xe8ff).rw(FUNC(tutor_state::tutor_printer_r), FUNC(tutor_state::tutor_printer_w)); /*printer*/
map(0xee00, 0xeeff).nopr().w(FUNC(tutor_state::tutor_cassette_w)); /*cassette interface*/
@@ -576,10 +576,10 @@ void tutor_state::pyuutajr_mem(address_map &map)
map(0x8000, 0xbfff).bankr("bank2").nopw();
map(0xc000, 0xdfff).noprw(); /*free for expansion, or cartridge ROM?*/
- map(0xe000, 0xe000).rw("tms9928a", FUNC(tms9928a_device::vram_r), FUNC(tms9928a_device::vram_w)); /*VDP data*/
- map(0xe002, 0xe002).rw("tms9928a", FUNC(tms9928a_device::register_r), FUNC(tms9928a_device::register_w));/*VDP status*/
+ map(0xe000, 0xe000).rw("tms9928a", FUNC(tms9928a_device::vram_read), FUNC(tms9928a_device::vram_write)); /*VDP data*/
+ map(0xe002, 0xe002).rw("tms9928a", FUNC(tms9928a_device::register_read), FUNC(tms9928a_device::register_write));/*VDP status*/
map(0xe100, 0xe1ff).rw(FUNC(tutor_state::tutor_mapper_r), FUNC(tutor_state::tutor_mapper_w)); /*cartridge mapper*/
- map(0xe200, 0xe200).w("sn76489a", FUNC(sn76489a_device::command_w)); /*sound chip*/
+ map(0xe200, 0xe200).w("sn76489a", FUNC(sn76489a_device::write)); /*sound chip*/
map(0xe800, 0xe800).portr("LINE0");
map(0xea00, 0xea00).portr("LINE1");
map(0xec00, 0xec00).portr("LINE2");
@@ -600,8 +600,8 @@ void tutor_state::pyuutajr_mem(address_map &map)
void tutor_state::tutor_io(address_map &map)
{
- map(0xec0, 0xec7).r(FUNC(tutor_state::key_r)); /*keyboard interface*/
- map(0xed0, 0xed0).r(FUNC(tutor_state::tutor_cassette_r)); /*cassette interface*/
+ map(0xec00, 0xec7f).r(FUNC(tutor_state::key_r)); /*keyboard interface*/
+ map(0xed00, 0xed01).r(FUNC(tutor_state::tutor_cassette_r)); /*cassette interface*/
}
/* tutor keyboard: 56 keys
@@ -743,7 +743,8 @@ static INPUT_PORTS_START(pyuutajr)
PORT_BIT(0xff, IP_ACTIVE_HIGH, IPT_UNUSED)
INPUT_PORTS_END
-MACHINE_CONFIG_START(tutor_state::tutor)
+void tutor_state::tutor(machine_config &config)
+{
// basic machine hardware
// TMS9995 CPU @ 10.7 MHz
// No lines connected yet
@@ -763,7 +764,8 @@ MACHINE_CONFIG_START(tutor_state::tutor)
CENTRONICS(config, m_centronics, centronics_devices, "printer").busy_handler().set(FUNC(tutor_state::write_centronics_busy));
- MCFG_CENTRONICS_OUTPUT_LATCH_ADD("cent_data_out", "centronics")
+ OUTPUT_LATCH(config, m_cent_data_out);
+ m_centronics->set_output_latch(*m_cent_data_out);
// Cassette
SPEAKER(config, "cass_out").front_center();
@@ -775,15 +777,15 @@ MACHINE_CONFIG_START(tutor_state::tutor)
// software lists
SOFTWARE_LIST(config, "cart_list").set_type("tutor", SOFTWARE_LIST_ORIGINAL_SYSTEM);
-MACHINE_CONFIG_END
+}
-MACHINE_CONFIG_START(tutor_state::pyuutajr)
+void tutor_state::pyuutajr(machine_config &config)
+{
tutor(config);
- MCFG_DEVICE_MODIFY("maincpu")
- MCFG_DEVICE_PROGRAM_MAP(pyuutajr_mem)
- //MCFG_DEVICE_REMOVE("centronics")
- //MCFG_DEVICE_REMOVE("cassette")
-MACHINE_CONFIG_END
+ m_maincpu->set_addrmap(AS_PROGRAM, &tutor_state::pyuutajr_mem);
+ //config.device_remove("centronics");
+ //config.device_remove("cassette");
+}
/*
ROM loading