diff options
Diffstat (limited to 'src/mame/drivers/busicom.cpp')
-rw-r--r-- | src/mame/drivers/busicom.cpp | 57 |
1 files changed, 31 insertions, 26 deletions
diff --git a/src/mame/drivers/busicom.cpp b/src/mame/drivers/busicom.cpp index ae6cfa4cf86..8c9146a93f9 100644 --- a/src/mame/drivers/busicom.cpp +++ b/src/mame/drivers/busicom.cpp @@ -99,32 +99,37 @@ WRITE8_MEMBER(busicom_state::printer_ctrl_w) { } -ADDRESS_MAP_START(busicom_state::busicom_rom) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x0000, 0x04FF) AM_ROM AM_REGION("maincpu", 0) -ADDRESS_MAP_END - -ADDRESS_MAP_START(busicom_state::busicom_mem) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x0000, 0x07F) AM_RAM -ADDRESS_MAP_END - -ADDRESS_MAP_START(busicom_state::busicom_stat) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x0000, 0x01F) AM_RAM -ADDRESS_MAP_END - -ADDRESS_MAP_START(busicom_state::busicom_rp) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x0000, 0x000f) AM_MIRROR(0x0700) AM_WRITE(shifter_w) // ROM0 I/O - AM_RANGE(0x0010, 0x001f) AM_MIRROR(0x0700) AM_READWRITE(keyboard_r,printer_ctrl_w) // ROM1 I/O - AM_RANGE(0x0020, 0x002f) AM_MIRROR(0x0700) AM_READ(printer_r) // ROM2 I/O -ADDRESS_MAP_END - -ADDRESS_MAP_START(busicom_state::busicom_mp) - AM_RANGE(0x00, 0x00) AM_WRITE(printer_w) // RAM0 output - AM_RANGE(0x01, 0x01) AM_WRITE(status_w) // RAM1 output -ADDRESS_MAP_END +void busicom_state::busicom_rom(address_map &map) +{ + map.unmap_value_high(); + map(0x0000, 0x04FF).rom().region("maincpu", 0); +} + +void busicom_state::busicom_mem(address_map &map) +{ + map.unmap_value_high(); + map(0x0000, 0x07F).ram(); +} + +void busicom_state::busicom_stat(address_map &map) +{ + map.unmap_value_high(); + map(0x0000, 0x01F).ram(); +} + +void busicom_state::busicom_rp(address_map &map) +{ + map.unmap_value_high(); + map(0x0000, 0x000f).mirror(0x0700).w(this, FUNC(busicom_state::shifter_w)); // ROM0 I/O + map(0x0010, 0x001f).mirror(0x0700).rw(this, FUNC(busicom_state::keyboard_r), FUNC(busicom_state::printer_ctrl_w)); // ROM1 I/O + map(0x0020, 0x002f).mirror(0x0700).r(this, FUNC(busicom_state::printer_r)); // ROM2 I/O +} + +void busicom_state::busicom_mp(address_map &map) +{ + map(0x00, 0x00).w(this, FUNC(busicom_state::printer_w)); // RAM0 output + map(0x01, 0x01).w(this, FUNC(busicom_state::status_w)); // RAM1 output +} /* Input ports */ static INPUT_PORTS_START( busicom ) |