diff options
Diffstat (limited to 'src/devices/machine/ie15.cpp')
-rw-r--r-- | src/devices/machine/ie15.cpp | 50 |
1 files changed, 26 insertions, 24 deletions
diff --git a/src/devices/machine/ie15.cpp b/src/devices/machine/ie15.cpp index 62eb2f2a15e..8449a72c53e 100644 --- a/src/devices/machine/ie15.cpp +++ b/src/devices/machine/ie15.cpp @@ -332,32 +332,34 @@ WRITE8_MEMBER(ie15_device::flag_w) } } -ADDRESS_MAP_START(ie15_device::ie15_mem) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0x0000, 0x0fff) AM_ROM -ADDRESS_MAP_END - -ADDRESS_MAP_START(ie15_device::ie15_io) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(000, 000) AM_READWRITE(mem_r, mem_w) // 00h W: memory request, R: memory data [6.1.2.2] - AM_RANGE(001, 001) AM_READ(serial_rx_ready_r) AM_WRITENOP // 01h W: memory latch [6.1.2.2] - AM_RANGE(002, 002) AM_WRITE(mem_addr_hi_w) // 02h W: memory address high [6.1.2.2] - AM_RANGE(003, 003) AM_WRITE(mem_addr_lo_w) // 03h W: memory address low [6.1.2.2] - AM_RANGE(004, 004) AM_WRITE(mem_addr_inc_w) // 04h W: memory address counter + [6.1.2.2] - AM_RANGE(005, 005) AM_WRITE(mem_addr_dec_w) // 05h W: memory address counter - [6.1.2.2] - AM_RANGE(006, 006) AM_READWRITE(serial_r, serial_w) // 06h W: serial port data [6.1.5.4] +void ie15_device::ie15_mem(address_map &map) +{ + map.unmap_value_high(); + map(0x0000, 0x0fff).rom(); +} + +void ie15_device::ie15_io(address_map &map) +{ + map.unmap_value_high(); + map(000, 000).rw(this, FUNC(ie15_device::mem_r), FUNC(ie15_device::mem_w)); // 00h W: memory request, R: memory data [6.1.2.2] + map(001, 001).r(this, FUNC(ie15_device::serial_rx_ready_r)).nopw(); // 01h W: memory latch [6.1.2.2] + map(002, 002).w(this, FUNC(ie15_device::mem_addr_hi_w)); // 02h W: memory address high [6.1.2.2] + map(003, 003).w(this, FUNC(ie15_device::mem_addr_lo_w)); // 03h W: memory address low [6.1.2.2] + map(004, 004).w(this, FUNC(ie15_device::mem_addr_inc_w)); // 04h W: memory address counter + [6.1.2.2] + map(005, 005).w(this, FUNC(ie15_device::mem_addr_dec_w)); // 05h W: memory address counter - [6.1.2.2] + map(006, 006).rw(this, FUNC(ie15_device::serial_r), FUNC(ie15_device::serial_w)); // 06h W: serial port data [6.1.5.4] // port 7 is handled in cpu core - AM_RANGE(010, 010) AM_READWRITE(serial_tx_ready_r, beep_w) // 08h W: speaker control [6.1.5.4] - AM_RANGE(011, 011) AM_READ(kb_r) // 09h R: keyboard data [6.1.5.2] - AM_RANGE(012, 012) AM_READ(kb_s_red_r) // 0Ah I: keyboard mode "RED" [6.1.5.2] - AM_RANGE(013, 013) AM_READ(kb_ready_r) // 0Bh R: keyboard data ready [6.1.5.2] - AM_RANGE(014, 014) AM_READWRITE(kb_s_sdv_r, serial_speed_w) // 0Ch W: serial port speed [6.1.3.1], R: keyboard mode "SDV" [6.1.5.2] - AM_RANGE(015, 015) AM_READWRITE(kb_s_dk_r, kb_ready_w) // 0Dh I: keyboard mode "DK" [6.1.5.2] - AM_RANGE(016, 016) AM_READ(kb_s_dupl_r) // 0Eh I: keyboard mode "DUPL" [6.1.5.2] - AM_RANGE(017, 017) AM_READ(kb_s_lin_r) // 0Fh I: keyboard mode "LIN" [6.1.5.2] + map(010, 010).rw(this, FUNC(ie15_device::serial_tx_ready_r), FUNC(ie15_device::beep_w)); // 08h W: speaker control [6.1.5.4] + map(011, 011).r(this, FUNC(ie15_device::kb_r)); // 09h R: keyboard data [6.1.5.2] + map(012, 012).r(this, FUNC(ie15_device::kb_s_red_r)); // 0Ah I: keyboard mode "RED" [6.1.5.2] + map(013, 013).r(this, FUNC(ie15_device::kb_ready_r)); // 0Bh R: keyboard data ready [6.1.5.2] + map(014, 014).rw(this, FUNC(ie15_device::kb_s_sdv_r), FUNC(ie15_device::serial_speed_w)); // 0Ch W: serial port speed [6.1.3.1], R: keyboard mode "SDV" [6.1.5.2] + map(015, 015).rw(this, FUNC(ie15_device::kb_s_dk_r), FUNC(ie15_device::kb_ready_w)); // 0Dh I: keyboard mode "DK" [6.1.5.2] + map(016, 016).r(this, FUNC(ie15_device::kb_s_dupl_r)); // 0Eh I: keyboard mode "DUPL" [6.1.5.2] + map(017, 017).r(this, FUNC(ie15_device::kb_s_lin_r)); // 0Fh I: keyboard mode "LIN" [6.1.5.2] // simulation of flag registers - AM_RANGE(020, 027) AM_READWRITE(flag_r, flag_w) -ADDRESS_MAP_END + map(020, 027).rw(this, FUNC(ie15_device::flag_r), FUNC(ie15_device::flag_w)); +} /* Input ports */ INPUT_PORTS_START( ie15 ) |