summaryrefslogtreecommitdiffstats
path: root/src/mame/drivers/pc88va.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/mame/drivers/pc88va.cpp')
-rw-r--r--src/mame/drivers/pc88va.cpp82
1 files changed, 42 insertions, 40 deletions
diff --git a/src/mame/drivers/pc88va.cpp b/src/mame/drivers/pc88va.cpp
index a192520e40e..7cddd40f074 100644
--- a/src/mame/drivers/pc88va.cpp
+++ b/src/mame/drivers/pc88va.cpp
@@ -673,13 +673,14 @@ WRITE16_MEMBER(pc88va_state::sys_mem_w)
}
}
-ADDRESS_MAP_START(pc88va_state::pc88va_map)
- AM_RANGE(0x00000, 0x7ffff) AM_RAM
+void pc88va_state::pc88va_map(address_map &map)
+{
+ map(0x00000, 0x7ffff).ram();
// AM_RANGE(0x80000, 0x9ffff) AM_RAM // EMM
- AM_RANGE(0xa0000, 0xdffff) AM_READWRITE(sys_mem_r,sys_mem_w)
- AM_RANGE(0xe0000, 0xeffff) AM_ROMBANK("rom00_bank")
- AM_RANGE(0xf0000, 0xfffff) AM_ROMBANK("rom10_bank")
-ADDRESS_MAP_END
+ map(0xa0000, 0xdffff).rw(this, FUNC(pc88va_state::sys_mem_r), FUNC(pc88va_state::sys_mem_w));
+ map(0xe0000, 0xeffff).bankr("rom00_bank");
+ map(0xf0000, 0xfffff).bankr("rom10_bank");
+}
/* IDP = NEC uPD72022 */
READ8_MEMBER(pc88va_state::idp_status_r)
@@ -1248,23 +1249,24 @@ READ8_MEMBER(pc88va_state::no_subfdc_r)
}
#endif
-ADDRESS_MAP_START(pc88va_state::pc88va_io_map)
- AM_RANGE(0x0000, 0x000f) AM_READ8(key_r,0xffff) // Keyboard ROW reading
+void pc88va_state::pc88va_io_map(address_map &map)
+{
+ map(0x0000, 0x000f).r(this, FUNC(pc88va_state::key_r)); // Keyboard ROW reading
// AM_RANGE(0x0010, 0x0010) Printer / Calendar Clock Interface
- AM_RANGE(0x0020, 0x0021) AM_NOP // RS-232C
- AM_RANGE(0x0030, 0x0031) AM_READWRITE8(backupram_dsw_r,sys_port1_w,0xffff) // 0x30 (R) DSW1 (W) Text Control Port 0 / 0x31 (R) DSW2 (W) System Port 1
+ map(0x0020, 0x0021).noprw(); // RS-232C
+ map(0x0030, 0x0031).rw(this, FUNC(pc88va_state::backupram_dsw_r), FUNC(pc88va_state::sys_port1_w)); // 0x30 (R) DSW1 (W) Text Control Port 0 / 0x31 (R) DSW2 (W) System Port 1
// AM_RANGE(0x0032, 0x0032) (R) ? (W) System Port 2
// AM_RANGE(0x0034, 0x0034) GVRAM Control Port 1
// AM_RANGE(0x0035, 0x0035) GVRAM Control Port 2
- AM_RANGE(0x0040, 0x0041) AM_READ(sys_port4_r) // (R) System Port 4 (W) System port 3 (strobe port)
- AM_RANGE(0x0044, 0x0045) AM_MIRROR(0x0002) AM_DEVREADWRITE8("ym", ym2203_device, read, write, 0xffff)
+ map(0x0040, 0x0041).r(this, FUNC(pc88va_state::sys_port4_r)); // (R) System Port 4 (W) System port 3 (strobe port)
+ map(0x0044, 0x0045).mirror(0x0002).rw("ym", FUNC(ym2203_device::read), FUNC(ym2203_device::write));
// AM_RANGE(0x005c, 0x005c) (R) GVRAM status
// AM_RANGE(0x005c, 0x005f) (W) GVRAM selection
// AM_RANGE(0x0070, 0x0070) ? (*)
// AM_RANGE(0x0071, 0x0071) Expansion ROM select (*)
// AM_RANGE(0x0078, 0x0078) Memory offset increment (*)
// AM_RANGE(0x0080, 0x0081) HDD related
- AM_RANGE(0x0082, 0x0083) AM_READ8(hdd_status_r,0x00ff)// HDD control, byte access 7-0
+ map(0x0082, 0x0082).r(this, FUNC(pc88va_state::hdd_status_r));// HDD control, byte access 7-0
// AM_RANGE(0x00bc, 0x00bf) d8255 1
// AM_RANGE(0x00e2, 0x00e3) Expansion RAM selection (*)
// AM_RANGE(0x00e4, 0x00e4) 8214 IRQ control (*)
@@ -1272,14 +1274,14 @@ ADDRESS_MAP_START(pc88va_state::pc88va_io_map)
// AM_RANGE(0x00e8, 0x00e9) ? (*)
// AM_RANGE(0x00ec, 0x00ed) ? (*)
#if TEST_SUBFDC
- AM_RANGE(0x00fc, 0x00ff) AM_DEVREADWRITE8("d8255_2", i8255_device, read, write, 0xffff) // d8255 2, FDD
+ map(0x00fc, 0x00ff).rw("d8255_2", FUNC(i8255_device::read), FUNC(i8255_device::write)); // d8255 2, FDD
#else
- AM_RANGE(0x00fc, 0x00ff) AM_READ8(no_subfdc_r,0xffff) AM_WRITENOP
+ map(0x00fc, 0x00ff).r(this, FUNC(pc88va_state::no_subfdc_r)).nopw();
#endif
- AM_RANGE(0x0100, 0x0101) AM_READWRITE(screen_ctrl_r,screen_ctrl_w) // Screen Control Register
+ map(0x0100, 0x0101).rw(this, FUNC(pc88va_state::screen_ctrl_r), FUNC(pc88va_state::screen_ctrl_w)); // Screen Control Register
// AM_RANGE(0x0102, 0x0103) Graphic Screen Control Register
- AM_RANGE(0x0106, 0x0109) AM_WRITE(video_pri_w) // Palette Control Register (priority) / Direct Color Control Register (priority)
+ map(0x0106, 0x0109).w(this, FUNC(pc88va_state::video_pri_w)); // Palette Control Register (priority) / Direct Color Control Register (priority)
// AM_RANGE(0x010a, 0x010b) Picture Mask Mode Register
// AM_RANGE(0x010c, 0x010d) Color Palette Mode Register
// AM_RANGE(0x010e, 0x010f) Backdrop Color Register
@@ -1288,41 +1290,41 @@ ADDRESS_MAP_START(pc88va_state::pc88va_io_map)
// AM_RANGE(0x0126, 0x0127) ? (related to Transparent Color of Graphic Screen 1)
// AM_RANGE(0x012e, 0x012f) ? (related to Transparent Color of Text/Sprite)
// AM_RANGE(0x0130, 0x0137) Picture Mask Parameter
- AM_RANGE(0x0142, 0x0143) AM_READWRITE8(idp_status_r,idp_command_w,0x00ff) //Text Controller (IDP) - (R) Status (W) command
- AM_RANGE(0x0146, 0x0147) AM_WRITE8(idp_param_w,0x00ff) //Text Controller (IDP) - (R/W) Parameter
+ map(0x0142, 0x0142).rw(this, FUNC(pc88va_state::idp_status_r), FUNC(pc88va_state::idp_command_w)); //Text Controller (IDP) - (R) Status (W) command
+ map(0x0146, 0x0146).w(this, FUNC(pc88va_state::idp_param_w)); //Text Controller (IDP) - (R/W) Parameter
// AM_RANGE(0x0148, 0x0149) Text control port 1
// AM_RANGE(0x014c, 0x014f) ? CG Port
- AM_RANGE(0x0150, 0x0151) AM_READ(sysop_r) // System Operational Mode
- AM_RANGE(0x0152, 0x0153) AM_READWRITE(bios_bank_r,bios_bank_w) // Memory Map Register
+ map(0x0150, 0x0151).r(this, FUNC(pc88va_state::sysop_r)); // System Operational Mode
+ map(0x0152, 0x0153).rw(this, FUNC(pc88va_state::bios_bank_r), FUNC(pc88va_state::bios_bank_w)); // Memory Map Register
// AM_RANGE(0x0154, 0x0155) Refresh Register (wait states)
- AM_RANGE(0x0156, 0x0157) AM_READ8(rom_bank_r,0x00ff) // ROM bank status
+ map(0x0156, 0x0156).r(this, FUNC(pc88va_state::rom_bank_r)); // ROM bank status
// AM_RANGE(0x0158, 0x0159) Interruption Mode Modification
// AM_RANGE(0x015c, 0x015f) NMI mask port (strobe port)
- AM_RANGE(0x0160, 0x016f) AM_DEVREADWRITE8("dmac", am9517a_device, read, write, 0xffff) // DMA Controller
- AM_RANGE(0x0184, 0x0187) AM_DEVREADWRITE8("pic8259_slave", pic8259_device, read, write, 0x00ff)
- AM_RANGE(0x0188, 0x018b) AM_DEVREADWRITE8("pic8259_master", pic8259_device, read, write, 0x00ff) // ICU, also controls 8214 emulation
+ map(0x0160, 0x016f).rw(m_dmac, FUNC(am9517a_device::read), FUNC(am9517a_device::write)); // DMA Controller
+ map(0x0184, 0x0187).rw("pic8259_slave", FUNC(pic8259_device::read), FUNC(pic8259_device::write)).umask16(0x00ff);
+ map(0x0188, 0x018b).rw("pic8259_master", FUNC(pic8259_device::read), FUNC(pic8259_device::write)).umask16(0x00ff); // ICU, also controls 8214 emulation
// AM_RANGE(0x0190, 0x0191) System Port 5
// AM_RANGE(0x0196, 0x0197) Keyboard sub CPU command port
- AM_RANGE(0x0198, 0x0199) AM_WRITE(backupram_wp_1_w) //Backup RAM write inhibit
- AM_RANGE(0x019a, 0x019b) AM_WRITE(backupram_wp_0_w) //Backup RAM write permission
- AM_RANGE(0x01a0, 0x01a7) AM_DEVREADWRITE8("pit8253", pit8253_device, read, write, 0x00ff)// vTCU (timer counter unit)
- AM_RANGE(0x01a8, 0x01a9) AM_WRITE8(timer3_ctrl_reg_w,0x00ff) // General-purpose timer 3 control port
- AM_RANGE(0x01b0, 0x01b7) AM_READWRITE8(pc88va_fdc_r,pc88va_fdc_w,0x00ff)// FDC related (765)
- AM_RANGE(0x01b8, 0x01bb) AM_DEVICE8("upd765", upd765a_device, map, 0x00ff)
+ map(0x0198, 0x0199).w(this, FUNC(pc88va_state::backupram_wp_1_w)); //Backup RAM write inhibit
+ map(0x019a, 0x019b).w(this, FUNC(pc88va_state::backupram_wp_0_w)); //Backup RAM write permission
+ map(0x01a0, 0x01a7).rw("pit8253", FUNC(pit8253_device::read), FUNC(pit8253_device::write)).umask16(0x00ff);// vTCU (timer counter unit)
+ map(0x01a8, 0x01a8).w(this, FUNC(pc88va_state::timer3_ctrl_reg_w)); // General-purpose timer 3 control port
+ map(0x01b0, 0x01b7).rw(this, FUNC(pc88va_state::pc88va_fdc_r), FUNC(pc88va_state::pc88va_fdc_w)).umask16(0x00ff);// FDC related (765)
+ map(0x01b8, 0x01bb).m(m_fdc, FUNC(upd765a_device::map)).umask16(0x00ff);
// AM_RANGE(0x01c0, 0x01c1) ?
- AM_RANGE(0x01c6, 0x01c7) AM_WRITENOP // ???
- AM_RANGE(0x01c8, 0x01cf) AM_DEVREADWRITE8("d8255_3", i8255_device, read, write,0xff00) //i8255 3 (byte access)
+ map(0x01c6, 0x01c7).nopw(); // ???
+ map(0x01c8, 0x01cf).rw("d8255_3", FUNC(i8255_device::read), FUNC(i8255_device::write)).umask16(0xff00); //i8255 3 (byte access)
// AM_RANGE(0x01d0, 0x01d1) Expansion RAM bank selection
- AM_RANGE(0x0200, 0x021f) AM_RAM // Frame buffer 0 control parameter
- AM_RANGE(0x0220, 0x023f) AM_RAM // Frame buffer 1 control parameter
- AM_RANGE(0x0240, 0x025f) AM_RAM // Frame buffer 2 control parameter
- AM_RANGE(0x0260, 0x027f) AM_RAM // Frame buffer 3 control parameter
- AM_RANGE(0x0300, 0x033f) AM_RAM_WRITE(palette_ram_w) AM_SHARE("palram") // Palette RAM (xBBBBxRRRRxGGGG format)
+ map(0x0200, 0x021f).ram(); // Frame buffer 0 control parameter
+ map(0x0220, 0x023f).ram(); // Frame buffer 1 control parameter
+ map(0x0240, 0x025f).ram(); // Frame buffer 2 control parameter
+ map(0x0260, 0x027f).ram(); // Frame buffer 3 control parameter
+ map(0x0300, 0x033f).ram().w(this, FUNC(pc88va_state::palette_ram_w)).share("palram"); // Palette RAM (xBBBBxRRRRxGGGG format)
// AM_RANGE(0x0500, 0x05ff) GVRAM
// AM_RANGE(0x1000, 0xfeff) user area (???)
- AM_RANGE(0xff00, 0xffff) AM_NOP // CPU internal use
-ADDRESS_MAP_END
+ map(0xff00, 0xffff).noprw(); // CPU internal use
+}
// (*) are specific N88 V1 / V2 ports
TIMER_CALLBACK_MEMBER(pc88va_state::pc8801fd_upd765_tc_to_zero)