summaryrefslogtreecommitdiffstatshomepage
path: root/src/devices/cpu/tms7000/tms7000.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/devices/cpu/tms7000/tms7000.cpp')
-rw-r--r--src/devices/cpu/tms7000/tms7000.cpp104
1 files changed, 56 insertions, 48 deletions
diff --git a/src/devices/cpu/tms7000/tms7000.cpp b/src/devices/cpu/tms7000/tms7000.cpp
index bcbebcce3ba..be619f1083b 100644
--- a/src/devices/cpu/tms7000/tms7000.cpp
+++ b/src/devices/cpu/tms7000/tms7000.cpp
@@ -52,54 +52,62 @@ DEFINE_DEVICE_TYPE(TMS70C46, tms70c46_device, "tms70c46", "Texas Instruments TMS
// internal memory maps
-ADDRESS_MAP_START(tms7000_device::tms7000_mem)
- AM_RANGE(0x0000, 0x007f) AM_RAM // 128 bytes internal RAM
- AM_RANGE(0x0080, 0x00ff) AM_READWRITE(tms7000_unmapped_rf_r, tms7000_unmapped_rf_w)
- AM_RANGE(0x0100, 0x010b) AM_READWRITE(tms7000_pf_r, tms7000_pf_w)
- AM_RANGE(0x0104, 0x0105) AM_WRITENOP // no port A write or ddr
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(tms7000_device::tms7001_mem)
- AM_RANGE(0x0000, 0x007f) AM_RAM // 128 bytes internal RAM
- AM_RANGE(0x0080, 0x00ff) AM_READWRITE(tms7000_unmapped_rf_r, tms7000_unmapped_rf_w)
- AM_RANGE(0x0100, 0x010b) AM_READWRITE(tms7000_pf_r, tms7000_pf_w)
- AM_RANGE(0x0110, 0x0117) AM_READWRITE(tms7002_pf_r, tms7002_pf_w)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(tms7000_device::tms7002_mem)
- AM_RANGE(0x0000, 0x00ff) AM_RAM // 256 bytes internal RAM
- AM_RANGE(0x0100, 0x010b) AM_READWRITE(tms7000_pf_r, tms7000_pf_w)
- AM_RANGE(0x0110, 0x0117) AM_READWRITE(tms7002_pf_r, tms7002_pf_w)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(tms7000_device::tms7020_mem)
- AM_IMPORT_FROM( tms7000_mem )
- AM_RANGE(0xf800, 0xffff) AM_ROM AM_REGION(DEVICE_SELF, 0) // 2kB internal ROM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(tms7000_device::tms7040_mem)
- AM_IMPORT_FROM( tms7000_mem )
- AM_RANGE(0xf000, 0xffff) AM_ROM AM_REGION(DEVICE_SELF, 0) // 4kB internal ROM
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(tms7000_device::tms7041_mem)
- AM_IMPORT_FROM( tms7001_mem )
- AM_RANGE(0xf000, 0xffff) AM_ROM AM_REGION(DEVICE_SELF, 0)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(tms7000_device::tms7042_mem)
- AM_IMPORT_FROM( tms7002_mem )
- AM_RANGE(0xf000, 0xffff) AM_ROM AM_REGION(DEVICE_SELF, 0)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(tms70c46_device::tms70c46_mem)
- AM_IMPORT_FROM( tms7040_mem )
- AM_RANGE(0x010c, 0x010c) AM_READWRITE(e_bus_data_r, e_bus_data_w)
- AM_RANGE(0x010d, 0x010d) AM_NOP // ? always writes $FF before checking keyboard... maybe INT3 ack?
- AM_RANGE(0x010e, 0x010e) AM_READWRITE(dockbus_data_r, dockbus_data_w)
- AM_RANGE(0x010f, 0x010f) AM_READWRITE(dockbus_status_r, dockbus_status_w)
- AM_RANGE(0x0118, 0x0118) AM_READWRITE(control_r, control_w)
-ADDRESS_MAP_END
+void tms7000_device::tms7000_mem(address_map &map)
+{
+ map(0x0000, 0x007f).ram(); // 128 bytes internal RAM
+ map(0x0080, 0x00ff).rw(this, FUNC(tms7000_device::tms7000_unmapped_rf_r), FUNC(tms7000_device::tms7000_unmapped_rf_w));
+ map(0x0100, 0x010b).rw(this, FUNC(tms7000_device::tms7000_pf_r), FUNC(tms7000_device::tms7000_pf_w));
+ map(0x0104, 0x0105).nopw(); // no port A write or ddr
+}
+
+void tms7000_device::tms7001_mem(address_map &map)
+{
+ map(0x0000, 0x007f).ram(); // 128 bytes internal RAM
+ map(0x0080, 0x00ff).rw(this, FUNC(tms7000_device::tms7000_unmapped_rf_r), FUNC(tms7000_device::tms7000_unmapped_rf_w));
+ map(0x0100, 0x010b).rw(this, FUNC(tms7000_device::tms7000_pf_r), FUNC(tms7000_device::tms7000_pf_w));
+ map(0x0110, 0x0117).rw(this, FUNC(tms7000_device::tms7002_pf_r), FUNC(tms7000_device::tms7002_pf_w));
+}
+
+void tms7000_device::tms7002_mem(address_map &map)
+{
+ map(0x0000, 0x00ff).ram(); // 256 bytes internal RAM
+ map(0x0100, 0x010b).rw(this, FUNC(tms7000_device::tms7000_pf_r), FUNC(tms7000_device::tms7000_pf_w));
+ map(0x0110, 0x0117).rw(this, FUNC(tms7000_device::tms7002_pf_r), FUNC(tms7000_device::tms7002_pf_w));
+}
+
+void tms7000_device::tms7020_mem(address_map &map)
+{
+ tms7000_mem(map);
+ map(0xf800, 0xffff).rom().region(DEVICE_SELF, 0); // 2kB internal ROM
+}
+
+void tms7000_device::tms7040_mem(address_map &map)
+{
+ tms7000_mem(map);
+ map(0xf000, 0xffff).rom().region(DEVICE_SELF, 0); // 4kB internal ROM
+}
+
+void tms7000_device::tms7041_mem(address_map &map)
+{
+ tms7001_mem(map);
+ map(0xf000, 0xffff).rom().region(DEVICE_SELF, 0);
+}
+
+void tms7000_device::tms7042_mem(address_map &map)
+{
+ tms7002_mem(map);
+ map(0xf000, 0xffff).rom().region(DEVICE_SELF, 0);
+}
+
+void tms70c46_device::tms70c46_mem(address_map &map)
+{
+ tms7040_mem(map);
+ map(0x010c, 0x010c).rw(this, FUNC(tms70c46_device::e_bus_data_r), FUNC(tms70c46_device::e_bus_data_w));
+ map(0x010d, 0x010d).noprw(); // ? always writes $FF before checking keyboard... maybe INT3 ack?
+ map(0x010e, 0x010e).rw(this, FUNC(tms70c46_device::dockbus_data_r), FUNC(tms70c46_device::dockbus_data_w));
+ map(0x010f, 0x010f).rw(this, FUNC(tms70c46_device::dockbus_status_r), FUNC(tms70c46_device::dockbus_status_w));
+ map(0x0118, 0x0118).rw(this, FUNC(tms70c46_device::control_r), FUNC(tms70c46_device::control_w));
+}
// device definitions