maps: Finish mame/drivers (nw)

This commit is contained in:
Olivier Galibert 2018-04-19 23:04:02 +02:00
parent d207fca250
commit 0234bc52f4
22 changed files with 708 additions and 628 deletions

View File

@ -514,47 +514,50 @@ void abc800c_state::abc800c_mem(address_map &map)
// ADDRESS_MAP( abc800c_io ) // ADDRESS_MAP( abc800c_io )
//------------------------------------------------- //-------------------------------------------------
ADDRESS_MAP_START(abc800_state::abc800c_io) void abc800_state::abc800c_io(address_map &map)
ADDRESS_MAP_UNMAP_HIGH {
ADDRESS_MAP_GLOBAL_MASK(0xff) map.unmap_value_high();
AM_RANGE(0x00, 0x00) AM_MIRROR(0x18) AM_DEVREADWRITE(ABCBUS_TAG, abcbus_slot_device, inp_r, out_w) map.global_mask(0xff);
AM_RANGE(0x01, 0x01) AM_MIRROR(0x18) AM_DEVREADWRITE(ABCBUS_TAG, abcbus_slot_device, stat_r, cs_w) map(0x00, 0x00).mirror(0x18).rw(ABCBUS_TAG, FUNC(abcbus_slot_device::inp_r), FUNC(abcbus_slot_device::out_w));
AM_RANGE(0x02, 0x02) AM_MIRROR(0x18) AM_DEVWRITE(ABCBUS_TAG, abcbus_slot_device, c1_w) map(0x01, 0x01).mirror(0x18).rw(ABCBUS_TAG, FUNC(abcbus_slot_device::stat_r), FUNC(abcbus_slot_device::cs_w));
AM_RANGE(0x03, 0x03) AM_MIRROR(0x18) AM_DEVWRITE(ABCBUS_TAG, abcbus_slot_device, c2_w) map(0x02, 0x02).mirror(0x18).w(ABCBUS_TAG, FUNC(abcbus_slot_device::c1_w));
AM_RANGE(0x04, 0x04) AM_MIRROR(0x18) AM_DEVWRITE(ABCBUS_TAG, abcbus_slot_device, c3_w) map(0x03, 0x03).mirror(0x18).w(ABCBUS_TAG, FUNC(abcbus_slot_device::c2_w));
AM_RANGE(0x05, 0x05) AM_MIRROR(0x18) AM_DEVWRITE(ABCBUS_TAG, abcbus_slot_device, c4_w) map(0x04, 0x04).mirror(0x18).w(ABCBUS_TAG, FUNC(abcbus_slot_device::c3_w));
AM_RANGE(0x05, 0x05) AM_MIRROR(0x18) AM_READ(pling_r) map(0x05, 0x05).mirror(0x18).w(ABCBUS_TAG, FUNC(abcbus_slot_device::c4_w));
AM_RANGE(0x06, 0x06) AM_MIRROR(0x18) AM_WRITE(hrs_w) map(0x05, 0x05).mirror(0x18).r(this, FUNC(abc800_state::pling_r));
AM_RANGE(0x07, 0x07) AM_MIRROR(0x18) AM_DEVREAD(ABCBUS_TAG, abcbus_slot_device, rst_r) AM_WRITE(hrc_w) map(0x06, 0x06).mirror(0x18).w(this, FUNC(abc800_state::hrs_w));
AM_RANGE(0x20, 0x23) AM_MIRROR(0x0c) AM_DEVREADWRITE(Z80DART_TAG, z80dart_device, ba_cd_r, ba_cd_w) map(0x07, 0x07).mirror(0x18).r(ABCBUS_TAG, FUNC(abcbus_slot_device::rst_r)).w(this, FUNC(abc800_state::hrc_w));
AM_RANGE(0x40, 0x43) AM_MIRROR(0x1c) AM_DEVREADWRITE(Z80SIO_TAG, z80sio2_device, ba_cd_r, ba_cd_w) map(0x20, 0x23).mirror(0x0c).rw(m_dart, FUNC(z80dart_device::ba_cd_r), FUNC(z80dart_device::ba_cd_w));
AM_RANGE(0x60, 0x63) AM_MIRROR(0x1c) AM_DEVREADWRITE(Z80CTC_TAG, z80ctc_device, read, write) map(0x40, 0x43).mirror(0x1c).rw(m_sio, FUNC(z80sio2_device::ba_cd_r), FUNC(z80sio2_device::ba_cd_w));
ADDRESS_MAP_END map(0x60, 0x63).mirror(0x1c).rw(m_ctc, FUNC(z80ctc_device::read), FUNC(z80ctc_device::write));
}
//------------------------------------------------- //-------------------------------------------------
// ADDRESS_MAP( abc800m_mem ) // ADDRESS_MAP( abc800m_mem )
//------------------------------------------------- //-------------------------------------------------
ADDRESS_MAP_START(abc800_state::abc800m_mem) void abc800_state::abc800m_mem(address_map &map)
{
map.unmap_value_high(); map.unmap_value_high();
map(0x0000, 0x3fff).ram().share("video_ram"); map(0x0000, 0x3fff).ram().share("video_ram");
map(0x4000, 0x77ff).rom(); map(0x4000, 0x77ff).rom();
map(0x7800, 0x7fff).ram().share("char_ram"); map(0x7800, 0x7fff).ram().share("char_ram");
map(0x8000, 0xffff).ram(); map(0x8000, 0xffff).ram();
ADDRESS_MAP_END }
//------------------------------------------------- //-------------------------------------------------
// ADDRESS_MAP( abc800m_io ) // ADDRESS_MAP( abc800m_io )
//------------------------------------------------- //-------------------------------------------------
ADDRESS_MAP_START(abc800_state::abc800m_io) void abc800_state::abc800m_io(address_map &map)
AM_IMPORT_FROM( abc800c_io ) {
AM_RANGE(0x31, 0x31) AM_MIRROR(0x06) AM_DEVREAD(MC6845_TAG, mc6845_device, register_r) abc800c_io(map);
AM_RANGE(0x38, 0x38) AM_MIRROR(0x06) AM_DEVWRITE(MC6845_TAG, mc6845_device, address_w) map(0x31, 0x31).mirror(0x06).r(MC6845_TAG, FUNC(mc6845_device::register_r));
AM_RANGE(0x39, 0x39) AM_MIRROR(0x06) AM_DEVWRITE(MC6845_TAG, mc6845_device, register_w) map(0x38, 0x38).mirror(0x06).w(MC6845_TAG, FUNC(mc6845_device::address_w));
ADDRESS_MAP_END map(0x39, 0x39).mirror(0x06).w(MC6845_TAG, FUNC(mc6845_device::register_w));
}
//------------------------------------------------- //-------------------------------------------------

View File

@ -1018,39 +1018,44 @@ void a1000_state::a1000_mem(address_map &map)
} }
// Gary/Super Gary/Gayle with 512KB chip RAM // Gary/Super Gary/Gayle with 512KB chip RAM
ADDRESS_MAP_START(amiga_state::overlay_512kb_map) void amiga_state::overlay_512kb_map(address_map &map)
ADDRESS_MAP_UNMAP_HIGH {
AM_RANGE(0x000000, 0x07ffff) AM_MIRROR(0x180000) AM_RAM AM_SHARE("chip_ram") map.unmap_value_high();
AM_RANGE(0x200000, 0x27ffff) AM_ROM AM_REGION("kickstart", 0) map(0x000000, 0x07ffff).mirror(0x180000).ram().share("chip_ram");
ADDRESS_MAP_END map(0x200000, 0x27ffff).rom().region("kickstart", 0);
}
// Gary/Super Gary/Gayle with 1MB chip RAM // Gary/Super Gary/Gayle with 1MB chip RAM
ADDRESS_MAP_START(amiga_state::overlay_1mb_map) void amiga_state::overlay_1mb_map(address_map &map)
ADDRESS_MAP_UNMAP_HIGH {
AM_RANGE(0x000000, 0x0fffff) AM_MIRROR(0x100000) AM_RAM AM_SHARE("chip_ram") map.unmap_value_high();
AM_RANGE(0x200000, 0x27ffff) AM_ROM AM_REGION("kickstart", 0) map(0x000000, 0x0fffff).mirror(0x100000).ram().share("chip_ram");
ADDRESS_MAP_END map(0x200000, 0x27ffff).rom().region("kickstart", 0);
}
// Gary/Super Gary/Gayle with 1MB chip RAM (32 bit system) // Gary/Super Gary/Gayle with 1MB chip RAM (32 bit system)
ADDRESS_MAP_START(amiga_state::overlay_1mb_map32) void amiga_state::overlay_1mb_map32(address_map &map)
ADDRESS_MAP_UNMAP_HIGH {
AM_RANGE(0x000000, 0x0fffff) AM_MIRROR(0x100000) AM_RAM AM_SHARE("chip_ram") map.unmap_value_high();
AM_RANGE(0x200000, 0x27ffff) AM_ROM AM_REGION("kickstart", 0) map(0x000000, 0x0fffff).mirror(0x100000).ram().share("chip_ram");
ADDRESS_MAP_END map(0x200000, 0x27ffff).rom().region("kickstart", 0);
}
// Gary/Super Gary/Gayle with 2MB chip RAM (32 bit system) // Gary/Super Gary/Gayle with 2MB chip RAM (32 bit system)
ADDRESS_MAP_START(amiga_state::overlay_2mb_map16) void amiga_state::overlay_2mb_map16(address_map &map)
ADDRESS_MAP_UNMAP_HIGH {
AM_RANGE(0x000000, 0x1fffff) AM_RAM AM_SHARE("chip_ram") map.unmap_value_high();
AM_RANGE(0x200000, 0x27ffff) AM_ROM AM_REGION("kickstart", 0) map(0x000000, 0x1fffff).ram().share("chip_ram");
ADDRESS_MAP_END map(0x200000, 0x27ffff).rom().region("kickstart", 0);
}
// Gary/Super Gary/Gayle with 2MB chip RAM (32 bit system) // Gary/Super Gary/Gayle with 2MB chip RAM (32 bit system)
ADDRESS_MAP_START(amiga_state::overlay_2mb_map32) void amiga_state::overlay_2mb_map32(address_map &map)
ADDRESS_MAP_UNMAP_HIGH {
AM_RANGE(0x000000, 0x1fffff) AM_RAM AM_SHARE("chip_ram") map.unmap_value_high();
AM_RANGE(0x200000, 0x27ffff) AM_ROM AM_REGION("kickstart", 0) map(0x000000, 0x1fffff).ram().share("chip_ram");
ADDRESS_MAP_END map(0x200000, 0x27ffff).rom().region("kickstart", 0);
}
// 512KB chip RAM, 512KB slow RAM, RTC // 512KB chip RAM, 512KB slow RAM, RTC
void a2000_state::a2000_mem(address_map &map) void a2000_state::a2000_mem(address_map &map)

View File

@ -665,43 +665,47 @@ void atlantis_state::device_timer(emu_timer &timer, device_timer_id id, int para
/************************************* /*************************************
* Address Maps * Address Maps
*************************************/ *************************************/
ADDRESS_MAP_START(atlantis_state::map0) void atlantis_state::map0(address_map &map)
AM_RANGE(0x00000000, 0x0001ffff) AM_READWRITE8(cmos_r, cmos_w, 0xff) {
map(0x00000000, 0x0001ffff).rw(this, FUNC(atlantis_state::cmos_r), FUNC(atlantis_state::cmos_w)).umask32(0x000000ff);
//AM_RANGE(0x00080000, 0x000?0000) AM_READWRITE8(zeus debug) //AM_RANGE(0x00080000, 0x000?0000) AM_READWRITE8(zeus debug)
AM_RANGE(0x00100000, 0x0010001f) AM_DEVREADWRITE8("uart1", ns16550_device, ins8250_r, ins8250_w, 0xff) // Serial UART1 (TL16C552 CS0) map(0x00100000, 0x0010001f).rw(m_uart1, FUNC(ns16550_device::ins8250_r), FUNC(ns16550_device::ins8250_w)).umask32(0x000000ff); // Serial UART1 (TL16C552 CS0)
AM_RANGE(0x00180000, 0x0018001f) AM_DEVREADWRITE8("uart2", ns16550_device, ins8250_r, ins8250_w, 0xff) // Serial UART2 (TL16C552 CS1) map(0x00180000, 0x0018001f).rw(m_uart2, FUNC(ns16550_device::ins8250_r), FUNC(ns16550_device::ins8250_w)).umask32(0x000000ff); // Serial UART2 (TL16C552 CS1)
AM_RANGE(0x00200000, 0x0020001f) AM_READWRITE8(parallel_r, parallel_w, 0xff) // Parallel UART (TL16C552 CS2) map(0x00200000, 0x0020001f).rw(this, FUNC(atlantis_state::parallel_r), FUNC(atlantis_state::parallel_w)).umask32(0x000000ff); // Parallel UART (TL16C552 CS2)
AM_RANGE(0x00400000, 0x007fffff) AM_READWRITE8(exprom_r, exprom_w, 0xff) // EXPROM map(0x00400000, 0x007fffff).rw(this, FUNC(atlantis_state::exprom_r), FUNC(atlantis_state::exprom_w)).umask32(0x000000ff); // EXPROM
AM_RANGE(0x00800000, 0x00f00003) AM_READWRITE(board_ctrl_r, board_ctrl_w) map(0x00800000, 0x00f00003).rw(this, FUNC(atlantis_state::board_ctrl_r), FUNC(atlantis_state::board_ctrl_w));
//AM_RANGE(0x00d80000, 0x00d80003) AM_READWRITE(status_leds_r, status_leds_w) //AM_RANGE(0x00d80000, 0x00d80003) AM_READWRITE(status_leds_r, status_leds_w)
//AM_RANGE(0x00e00000, 0x00e00003) AM_READWRITE(cmos_protect_r, cmos_protect_w) //AM_RANGE(0x00e00000, 0x00e00003) AM_READWRITE(cmos_protect_r, cmos_protect_w)
//AM_RANGE(0x00e80000, 0x00e80003) AM_NOP // Watchdog //AM_RANGE(0x00e80000, 0x00e80003) AM_NOP // Watchdog
//AM_RANGE(0x00f00000, 0x00f00003) AM_NOP // Trackball ctrl //AM_RANGE(0x00f00000, 0x00f00003) AM_NOP // Trackball ctrl
ADDRESS_MAP_END }
ADDRESS_MAP_START(atlantis_state::map1) void atlantis_state::map1(address_map &map)
AM_RANGE(0x00000000, 0x0000003f) AM_DEVREADWRITE("ioasic", midway_ioasic_device, read, write) {
AM_RANGE(0x00200000, 0x00200003) AM_WRITE(dcs3_fifo_full_w) map(0x00000000, 0x0000003f).rw(m_ioasic, FUNC(midway_ioasic_device::read), FUNC(midway_ioasic_device::write));
AM_RANGE(0x00400000, 0x00400003) AM_DEVWRITE("dcs", dcs_audio_device, dsio_idma_addr_w) map(0x00200000, 0x00200003).w(this, FUNC(atlantis_state::dcs3_fifo_full_w));
AM_RANGE(0x00600000, 0x00600003) AM_DEVREADWRITE("dcs", dcs_audio_device, dsio_idma_data_r, dsio_idma_data_w) map(0x00400000, 0x00400003).w(m_dcs, FUNC(dcs_audio_device::dsio_idma_addr_w));
AM_RANGE(0x00800000, 0x00900003) AM_READWRITE16(port_ctrl_r, port_ctrl_w, 0xffff) map(0x00600000, 0x00600003).rw(m_dcs, FUNC(dcs_audio_device::dsio_idma_data_r), FUNC(dcs_audio_device::dsio_idma_data_w));
map(0x00800000, 0x00900003).rw(this, FUNC(atlantis_state::port_ctrl_r), FUNC(atlantis_state::port_ctrl_w)).umask32(0x0000ffff);
//AM_RANGE(0x00880000, 0x00880003) // AUX Output Initial write 0000fff0, follow by sequence ffef, ffdf, ffbf, fff7. Row Select? //AM_RANGE(0x00880000, 0x00880003) // AUX Output Initial write 0000fff0, follow by sequence ffef, ffdf, ffbf, fff7. Row Select?
//AM_RANGE(0x00900000, 0x00900003) // AUX Input Read once before each sequence write to 0x00880000. Code checks bits 0,1,2. Keypad? //AM_RANGE(0x00900000, 0x00900003) // AUX Input Read once before each sequence write to 0x00880000. Code checks bits 0,1,2. Keypad?
AM_RANGE(0x00980000, 0x00980003) AM_READWRITE16(a2d_ctrl_r, a2d_ctrl_w, 0xffff) // A2D Control Read / Write. Bytes written 0x8f, 0xcf. Code if read 0x1 then read 00a00000. map(0x00980000, 0x00980001).rw(this, FUNC(atlantis_state::a2d_ctrl_r), FUNC(atlantis_state::a2d_ctrl_w)); // A2D Control Read / Write. Bytes written 0x8f, 0xcf. Code if read 0x1 then read 00a00000.
AM_RANGE(0x00a00000, 0x00a00003) AM_READWRITE16(a2d_data_r, a2d_data_w, 0xffff) // A2D Data map(0x00a00000, 0x00a00001).rw(this, FUNC(atlantis_state::a2d_data_r), FUNC(atlantis_state::a2d_data_w)); // A2D Data
//AM_RANGE(0x00a80000, 0x00a80003) // Trackball Chan 0 16 bits //AM_RANGE(0x00a80000, 0x00a80003) // Trackball Chan 0 16 bits
//AM_RANGE(0x00b00000, 0x00b00003) // Trackball Chan 1 16 bits //AM_RANGE(0x00b00000, 0x00b00003) // Trackball Chan 1 16 bits
//AM_RANGE(0x00b80000, 0x00b80003) // Trackball Error 16 bits //AM_RANGE(0x00b80000, 0x00b80003) // Trackball Error 16 bits
//AM_RANGE(0x00c00000, 0x00c00003) // Trackball Pins 16 bits //AM_RANGE(0x00c00000, 0x00c00003) // Trackball Pins 16 bits
ADDRESS_MAP_END }
ADDRESS_MAP_START(atlantis_state::map2) void atlantis_state::map2(address_map &map)
AM_RANGE(0x00000000, 0x000001ff) AM_DEVREADWRITE("zeus2", zeus2_device, zeus2_r, zeus2_w) {
ADDRESS_MAP_END map(0x00000000, 0x000001ff).rw(m_zeus, FUNC(zeus2_device::zeus2_r), FUNC(zeus2_device::zeus2_w));
}
ADDRESS_MAP_START(atlantis_state::map3) void atlantis_state::map3(address_map &map)
{
//AM_RANGE(0x000000, 0xffffff) ROMBUS //AM_RANGE(0x000000, 0xffffff) ROMBUS
ADDRESS_MAP_END }
/************************************* /*************************************
* *

View File

@ -1575,13 +1575,14 @@ void bfm_sc2_state::sc2_basemap(address_map &map)
map(0x8000, 0xFFFF).rom(); map(0x8000, 0xFFFF).rom();
} }
ADDRESS_MAP_START(bfm_sc2_novid_state::memmap_no_vid) void bfm_sc2_novid_state::memmap_no_vid(address_map &map)
AM_IMPORT_FROM( sc2_basemap ) {
AM_RANGE(0x2000, 0x2000) AM_READ(vfd_status_r) sc2_basemap(map);
AM_RANGE(0x2000, 0x20FF) AM_WRITE(reel12_w) map(0x2000, 0x2000).r(this, FUNC(bfm_sc2_novid_state::vfd_status_r));
AM_RANGE(0x2100, 0x21FF) AM_WRITE(reel34_w) map(0x2000, 0x20FF).w(this, FUNC(bfm_sc2_novid_state::reel12_w));
AM_RANGE(0x2200, 0x22FF) AM_WRITE(reel56_w) map(0x2100, 0x21FF).w(this, FUNC(bfm_sc2_novid_state::reel34_w));
ADDRESS_MAP_END map(0x2200, 0x22FF).w(this, FUNC(bfm_sc2_novid_state::reel56_w));
}
// memory map for scorpion2 board video addon ///////////////////////////// // memory map for scorpion2 board video addon /////////////////////////////

View File

@ -231,13 +231,14 @@ void eolith_state::eolith_map(address_map &map)
map(0xfff80000, 0xffffffff).rom().region("maincpu", 0); map(0xfff80000, 0xffffffff).rom().region("maincpu", 0);
} }
ADDRESS_MAP_START(eolith_state::hidctch3_map) void eolith_state::hidctch3_map(address_map &map)
AM_IMPORT_FROM(eolith_map) {
AM_RANGE(0xfc200000, 0xfc200003) AM_WRITENOP // this generates pens vibration eolith_map(map);
map(0xfc200000, 0xfc200003).nopw(); // this generates pens vibration
// It is not clear why the first reads are needed too // It is not clear why the first reads are needed too
AM_RANGE(0xfce00000, 0xfce00003) AM_MIRROR(0x00080000) AM_READ(hidctch3_pen_r<0>) map(0xfce00000, 0xfce00003).mirror(0x00080000).r(this, FUNC(eolith_state::hidctch3_pen_r<0>));
AM_RANGE(0xfcf00000, 0xfcf00003) AM_MIRROR(0x00080000) AM_READ(hidctch3_pen_r<1>) map(0xfcf00000, 0xfcf00003).mirror(0x00080000).r(this, FUNC(eolith_state::hidctch3_pen_r<1>));
ADDRESS_MAP_END }
/************************************* /*************************************

View File

@ -2220,54 +2220,56 @@ void towns_state::towns_mem(address_map &map)
map(0xfffc0000, 0xffffffff).rom().region("user", 0x200000); // SYSTEM ROM map(0xfffc0000, 0xffffffff).rom().region("user", 0x200000); // SYSTEM ROM
} }
ADDRESS_MAP_START(towns_state::marty_mem) void towns_state::marty_mem(address_map &map)
AM_RANGE(0x00000000, 0x000bffff) AM_RAM {
AM_RANGE(0x000c0000, 0x000c7fff) AM_READWRITE8(towns_gfx_r,towns_gfx_w,0xffff) map(0x00000000, 0x000bffff).ram();
AM_RANGE(0x000c8000, 0x000cafff) AM_READWRITE8(towns_spriteram_low_r,towns_spriteram_low_w,0xffff) map(0x000c0000, 0x000c7fff).rw(this, FUNC(towns_state::towns_gfx_r), FUNC(towns_state::towns_gfx_w));
AM_RANGE(0x000cb000, 0x000cbfff) AM_READ_BANK("bank6") AM_WRITE_BANK("bank7") map(0x000c8000, 0x000cafff).rw(this, FUNC(towns_state::towns_spriteram_low_r), FUNC(towns_state::towns_spriteram_low_w));
AM_RANGE(0x000cc000, 0x000cff7f) AM_RAM map(0x000cb000, 0x000cbfff).bankr("bank6").bankw("bank7");
AM_RANGE(0x000cff80, 0x000cffff) AM_READWRITE8(towns_video_cff80_mem_r,towns_video_cff80_mem_w,0xffff) map(0x000cc000, 0x000cff7f).ram();
AM_RANGE(0x000d0000, 0x000d7fff) AM_RAM map(0x000cff80, 0x000cffff).rw(this, FUNC(towns_state::towns_video_cff80_mem_r), FUNC(towns_state::towns_video_cff80_mem_w));
AM_RANGE(0x000d8000, 0x000d9fff) AM_READWRITE8(towns_cmos_low_r,towns_cmos_low_w,0xffff) AM_SHARE("nvram16") // CMOS? RAM map(0x000d0000, 0x000d7fff).ram();
AM_RANGE(0x000da000, 0x000effff) AM_RAM //READWRITE(SMH_BANK(11),SMH_BANK(11)) map(0x000d8000, 0x000d9fff).rw(this, FUNC(towns_state::towns_cmos_low_r), FUNC(towns_state::towns_cmos_low_w)).share("nvram16"); // CMOS? RAM
AM_RANGE(0x000f0000, 0x000f7fff) AM_RAM //READWRITE(SMH_BANK(12),SMH_BANK(12)) map(0x000da000, 0x000effff).ram(); //READWRITE(SMH_BANK(11),SMH_BANK(11))
AM_RANGE(0x000f8000, 0x000fffff) AM_READ_BANK("bank11") AM_WRITE_BANK("bank12") map(0x000f0000, 0x000f7fff).ram(); //READWRITE(SMH_BANK(12),SMH_BANK(12))
map(0x000f8000, 0x000fffff).bankr("bank11").bankw("bank12");
// AM_RANGE(0x00100000, 0x005fffff) AM_RAM // some extra RAM - the Marty has 6MB RAM (not upgradable) // AM_RANGE(0x00100000, 0x005fffff) AM_RAM // some extra RAM - the Marty has 6MB RAM (not upgradable)
AM_RANGE(0x00600000, 0x0067ffff) AM_ROM AM_REGION("user",0x000000) // OS map(0x00600000, 0x0067ffff).rom().region("user", 0x000000); // OS
AM_RANGE(0x00680000, 0x0087ffff) AM_ROM AM_REGION("user",0x280000) // EX ROM map(0x00680000, 0x0087ffff).rom().region("user", 0x280000); // EX ROM
AM_RANGE(0x00a00000, 0x00a7ffff) AM_READWRITE8(towns_gfx_high_r,towns_gfx_high_w,0xffff) AM_MIRROR(0x180000) // VRAM map(0x00a00000, 0x00a7ffff).rw(this, FUNC(towns_state::towns_gfx_high_r), FUNC(towns_state::towns_gfx_high_w)).mirror(0x180000); // VRAM
AM_RANGE(0x00b00000, 0x00b7ffff) AM_ROM AM_REGION("user",0x180000) // FONT map(0x00b00000, 0x00b7ffff).rom().region("user", 0x180000); // FONT
AM_RANGE(0x00c00000, 0x00c1ffff) AM_READWRITE8(towns_spriteram_r,towns_spriteram_w,0xffff) // Sprite RAM map(0x00c00000, 0x00c1ffff).rw(this, FUNC(towns_state::towns_spriteram_r), FUNC(towns_state::towns_spriteram_w)); // Sprite RAM
AM_RANGE(0x00d00000, 0x00dfffff) AM_DEVREADWRITE8("icmemcard", fmt_icmem_device, mem_read, mem_write, 0xffff) map(0x00d00000, 0x00dfffff).rw(m_icmemcard, FUNC(fmt_icmem_device::mem_read), FUNC(fmt_icmem_device::mem_write));
AM_RANGE(0x00e80000, 0x00efffff) AM_ROM AM_REGION("user",0x100000) // DIC ROM map(0x00e80000, 0x00efffff).rom().region("user", 0x100000); // DIC ROM
AM_RANGE(0x00f00000, 0x00f7ffff) AM_ROM AM_REGION("user",0x180000) // FONT map(0x00f00000, 0x00f7ffff).rom().region("user", 0x180000); // FONT
AM_RANGE(0x00f80000, 0x00f80fff) AM_DEVREADWRITE8("pcm", rf5c68_device, rf5c68_mem_r, rf5c68_mem_w, 0xffff) // WAVE RAM map(0x00f80000, 0x00f80fff).rw("pcm", FUNC(rf5c68_device::rf5c68_mem_r), FUNC(rf5c68_device::rf5c68_mem_w)); // WAVE RAM
AM_RANGE(0x00fc0000, 0x00ffffff) AM_ROM AM_REGION("user",0x200000) // SYSTEM ROM map(0x00fc0000, 0x00ffffff).rom().region("user", 0x200000); // SYSTEM ROM
ADDRESS_MAP_END }
ADDRESS_MAP_START(towns_state::ux_mem) void towns_state::ux_mem(address_map &map)
AM_RANGE(0x00000000, 0x000bffff) AM_RAM {
AM_RANGE(0x000c0000, 0x000c7fff) AM_READWRITE8(towns_gfx_r,towns_gfx_w,0xffff) map(0x00000000, 0x000bffff).ram();
AM_RANGE(0x000c8000, 0x000cafff) AM_READWRITE8(towns_spriteram_low_r,towns_spriteram_low_w,0xffff) map(0x000c0000, 0x000c7fff).rw(this, FUNC(towns_state::towns_gfx_r), FUNC(towns_state::towns_gfx_w));
AM_RANGE(0x000cb000, 0x000cbfff) AM_READ_BANK("bank6") AM_WRITE_BANK("bank7") map(0x000c8000, 0x000cafff).rw(this, FUNC(towns_state::towns_spriteram_low_r), FUNC(towns_state::towns_spriteram_low_w));
AM_RANGE(0x000cc000, 0x000cff7f) AM_RAM map(0x000cb000, 0x000cbfff).bankr("bank6").bankw("bank7");
AM_RANGE(0x000cff80, 0x000cffff) AM_READWRITE8(towns_video_cff80_mem_r,towns_video_cff80_mem_w,0xffff) map(0x000cc000, 0x000cff7f).ram();
AM_RANGE(0x000d0000, 0x000d7fff) AM_RAM map(0x000cff80, 0x000cffff).rw(this, FUNC(towns_state::towns_video_cff80_mem_r), FUNC(towns_state::towns_video_cff80_mem_w));
AM_RANGE(0x000d8000, 0x000d9fff) AM_READWRITE8(towns_cmos_low_r,towns_cmos_low_w,0xffff) AM_SHARE("nvram16") // CMOS? RAM map(0x000d0000, 0x000d7fff).ram();
AM_RANGE(0x000da000, 0x000effff) AM_RAM //READWRITE(SMH_BANK(11),SMH_BANK(11)) map(0x000d8000, 0x000d9fff).rw(this, FUNC(towns_state::towns_cmos_low_r), FUNC(towns_state::towns_cmos_low_w)).share("nvram16"); // CMOS? RAM
AM_RANGE(0x000f0000, 0x000f7fff) AM_RAM //READWRITE(SMH_BANK(12),SMH_BANK(12)) map(0x000da000, 0x000effff).ram(); //READWRITE(SMH_BANK(11),SMH_BANK(11))
AM_RANGE(0x000f8000, 0x000fffff) AM_READ_BANK("bank11") AM_WRITE_BANK("bank12") map(0x000f0000, 0x000f7fff).ram(); //READWRITE(SMH_BANK(12),SMH_BANK(12))
map(0x000f8000, 0x000fffff).bankr("bank11").bankw("bank12");
// AM_RANGE(0x00680000, 0x0087ffff) AM_ROM AM_REGION("user",0x280000) // EX ROM // AM_RANGE(0x00680000, 0x0087ffff) AM_ROM AM_REGION("user",0x280000) // EX ROM
AM_RANGE(0x00a00000, 0x00a7ffff) AM_READWRITE8(towns_gfx_high_r,towns_gfx_high_w,0xffff) AM_MIRROR(0x180000) // VRAM map(0x00a00000, 0x00a7ffff).rw(this, FUNC(towns_state::towns_gfx_high_r), FUNC(towns_state::towns_gfx_high_w)).mirror(0x180000); // VRAM
AM_RANGE(0x00b00000, 0x00b7ffff) AM_ROM AM_REGION("user",0x180000) // FONT map(0x00b00000, 0x00b7ffff).rom().region("user", 0x180000); // FONT
AM_RANGE(0x00c00000, 0x00c1ffff) AM_READWRITE8(towns_spriteram_r,towns_spriteram_w,0xffff) // Sprite RAM map(0x00c00000, 0x00c1ffff).rw(this, FUNC(towns_state::towns_spriteram_r), FUNC(towns_state::towns_spriteram_w)); // Sprite RAM
AM_RANGE(0x00d00000, 0x00dfffff) AM_DEVREADWRITE8("icmemcard", fmt_icmem_device, mem_read, mem_write, 0xffff) map(0x00d00000, 0x00dfffff).rw(m_icmemcard, FUNC(fmt_icmem_device::mem_read), FUNC(fmt_icmem_device::mem_write));
AM_RANGE(0x00e00000, 0x00e7ffff) AM_ROM AM_REGION("user",0x000000) // OS map(0x00e00000, 0x00e7ffff).rom().region("user", 0x000000); // OS
AM_RANGE(0x00e80000, 0x00efffff) AM_ROM AM_REGION("user",0x100000) // DIC ROM map(0x00e80000, 0x00efffff).rom().region("user", 0x100000); // DIC ROM
AM_RANGE(0x00f00000, 0x00f7ffff) AM_ROM AM_REGION("user",0x180000) // FONT map(0x00f00000, 0x00f7ffff).rom().region("user", 0x180000); // FONT
AM_RANGE(0x00f80000, 0x00f80fff) AM_DEVREADWRITE8("pcm", rf5c68_device, rf5c68_mem_r, rf5c68_mem_w, 0xffff) // WAVE RAM map(0x00f80000, 0x00f80fff).rw("pcm", FUNC(rf5c68_device::rf5c68_mem_r), FUNC(rf5c68_device::rf5c68_mem_w)); // WAVE RAM
AM_RANGE(0x00fc0000, 0x00ffffff) AM_ROM AM_REGION("user",0x200000) // SYSTEM ROM map(0x00fc0000, 0x00ffffff).rom().region("user", 0x200000); // SYSTEM ROM
ADDRESS_MAP_END }
void towns_state::towns_io(address_map &map) void towns_state::towns_io(address_map &map)
{ {
@ -2329,63 +2331,64 @@ void towns_state::towns_io(address_map &map)
map(0xff80, 0xffff).rw(this, FUNC(towns_state::towns_video_cff80_r), FUNC(towns_state::towns_video_cff80_w)); map(0xff80, 0xffff).rw(this, FUNC(towns_state::towns_video_cff80_r), FUNC(towns_state::towns_video_cff80_w));
} }
ADDRESS_MAP_START(towns_state::towns16_io) // for the 386SX based systems void towns_state::towns16_io(address_map &map)
{ // for the 386SX based systems
// System ports // System ports
ADDRESS_MAP_UNMAP_HIGH map.unmap_value_high();
AM_RANGE(0x0000,0x0003) AM_DEVREADWRITE8("pic8259_master", pic8259_device, read, write, 0x00ff) map(0x0000, 0x0003).rw(m_pic_master, FUNC(pic8259_device::read), FUNC(pic8259_device::write)).umask16(0x00ff);
AM_RANGE(0x0010,0x0013) AM_DEVREADWRITE8("pic8259_slave", pic8259_device, read, write, 0x00ff) map(0x0010, 0x0013).rw(m_pic_slave, FUNC(pic8259_device::read), FUNC(pic8259_device::write)).umask16(0x00ff);
AM_RANGE(0x0020,0x0033) AM_READWRITE8(towns_system_r,towns_system_w, 0xffff) map(0x0020, 0x0033).rw(this, FUNC(towns_state::towns_system_r), FUNC(towns_state::towns_system_w));
AM_RANGE(0x0040,0x0047) AM_DEVREADWRITE8("pit", pit8253_device, read, write, 0x00ff) map(0x0040, 0x0047).rw(m_pit, FUNC(pit8253_device::read), FUNC(pit8253_device::write)).umask16(0x00ff);
AM_RANGE(0x0050,0x0057) AM_DEVREADWRITE8("pit2", pit8253_device, read, write, 0x00ff) map(0x0050, 0x0057).rw("pit2", FUNC(pit8253_device::read), FUNC(pit8253_device::write)).umask16(0x00ff);
AM_RANGE(0x0060,0x0061) AM_READWRITE8(towns_port60_r, towns_port60_w, 0x00ff) map(0x0060, 0x0060).rw(this, FUNC(towns_state::towns_port60_r), FUNC(towns_state::towns_port60_w));
AM_RANGE(0x0068,0x006b) AM_READWRITE8(towns_intervaltimer2_r, towns_intervaltimer2_w, 0xffff) map(0x0068, 0x006b).rw(this, FUNC(towns_state::towns_intervaltimer2_r), FUNC(towns_state::towns_intervaltimer2_w));
AM_RANGE(0x006c,0x006d) AM_READWRITE8(towns_sys6c_r,towns_sys6c_w, 0x00ff) map(0x006c, 0x006c).rw(this, FUNC(towns_state::towns_sys6c_r), FUNC(towns_state::towns_sys6c_w));
// 0x0070/0x0080 - CMOS RTC // 0x0070/0x0080 - CMOS RTC
AM_RANGE(0x0070,0x0071) AM_READWRITE8(towns_rtc_r,towns_rtc_w,0x00ff) map(0x0070, 0x0070).rw(this, FUNC(towns_state::towns_rtc_r), FUNC(towns_state::towns_rtc_w));
AM_RANGE(0x0080,0x0081) AM_WRITE8(towns_rtc_select_w,0x00ff) map(0x0080, 0x0080).w(this, FUNC(towns_state::towns_rtc_select_w));
// DMA controllers (uPD71071) // DMA controllers (uPD71071)
AM_RANGE(0x00a0,0x00af) AM_READWRITE8(towns_dma1_r, towns_dma1_w, 0xffff) map(0x00a0, 0x00af).rw(this, FUNC(towns_state::towns_dma1_r), FUNC(towns_state::towns_dma1_w));
AM_RANGE(0x00b0,0x00bf) AM_READWRITE8(towns_dma2_r, towns_dma2_w, 0xffff) map(0x00b0, 0x00bf).rw(this, FUNC(towns_state::towns_dma2_r), FUNC(towns_state::towns_dma2_w));
// Floppy controller // Floppy controller
AM_RANGE(0x0200,0x020f) AM_READWRITE8(towns_floppy_r, towns_floppy_w, 0xffff) map(0x0200, 0x020f).rw(this, FUNC(towns_state::towns_floppy_r), FUNC(towns_state::towns_floppy_w));
// CRTC / Video // CRTC / Video
AM_RANGE(0x0400,0x0401) AM_READ8(towns_video_unknown_r, 0x00ff) // R/O (0x400) map(0x0400, 0x0400).r(this, FUNC(towns_state::towns_video_unknown_r)); // R/O (0x400)
AM_RANGE(0x0404,0x0407) AM_READWRITE8(towns_video_404_r, towns_video_404_w, 0xffff) // R/W (0x404) map(0x0404, 0x0407).rw(this, FUNC(towns_state::towns_video_404_r), FUNC(towns_state::towns_video_404_w)); // R/W (0x404)
AM_RANGE(0x0440,0x045f) AM_READWRITE8(towns_video_440_r, towns_video_440_w, 0xffff) map(0x0440, 0x045f).rw(this, FUNC(towns_state::towns_video_440_r), FUNC(towns_state::towns_video_440_w));
// System port // System port
AM_RANGE(0x0480,0x0481) AM_READWRITE8(towns_sys480_r,towns_sys480_w,0x00ff) // R/W (0x480) map(0x0480, 0x0480).rw(this, FUNC(towns_state::towns_sys480_r), FUNC(towns_state::towns_sys480_w)); // R/W (0x480)
// IC Memory Card // IC Memory Card
AM_RANGE(0x048a,0x048b) AM_DEVREAD8("icmemcard",fmt_icmem_device,status_r,0x00ff) map(0x048a, 0x048a).r(m_icmemcard, FUNC(fmt_icmem_device::status_r));
AM_RANGE(0x0490,0x0491) AM_DEVREADWRITE8("icmemcard",fmt_icmem_device,bank_r,bank_w,0xffff) map(0x0490, 0x0491).rw(m_icmemcard, FUNC(fmt_icmem_device::bank_r), FUNC(fmt_icmem_device::bank_w));
// CD-ROM // CD-ROM
AM_RANGE(0x04c0,0x04cf) AM_READWRITE8(towns_cdrom_r,towns_cdrom_w,0x00ff) map(0x04c0, 0x04cf).rw(this, FUNC(towns_state::towns_cdrom_r), FUNC(towns_state::towns_cdrom_w)).umask16(0x00ff);
// Joystick / Mouse ports // Joystick / Mouse ports
AM_RANGE(0x04d0,0x04d3) AM_READ8(towns_padport_r, 0x00ff) map(0x04d0, 0x04d3).r(this, FUNC(towns_state::towns_padport_r)).umask16(0x00ff);
AM_RANGE(0x04d6,0x04d7) AM_WRITE8(towns_pad_mask_w, 0x00ff) map(0x04d6, 0x04d6).w(this, FUNC(towns_state::towns_pad_mask_w));
// Sound (YM3438 [FM], RF5c68 [PCM]) // Sound (YM3438 [FM], RF5c68 [PCM])
AM_RANGE(0x04d8,0x04df) AM_DEVREADWRITE8("fm", ym3438_device, read, write, 0x00ff) map(0x04d8, 0x04df).rw("fm", FUNC(ym3438_device::read), FUNC(ym3438_device::write)).umask16(0x00ff);
AM_RANGE(0x04e0,0x04e3) AM_READWRITE8(towns_volume_r,towns_volume_w,0xffff) // R/W -- volume ports map(0x04e0, 0x04e3).rw(this, FUNC(towns_state::towns_volume_r), FUNC(towns_state::towns_volume_w)); // R/W -- volume ports
AM_RANGE(0x04e4,0x04e7) AM_READ8(unksnd_r, 0xffff) map(0x04e4, 0x04e7).r(this, FUNC(towns_state::unksnd_r));
AM_RANGE(0x04e8,0x04ef) AM_READWRITE8(towns_sound_ctrl_r,towns_sound_ctrl_w,0xffff) map(0x04e8, 0x04ef).rw(this, FUNC(towns_state::towns_sound_ctrl_r), FUNC(towns_state::towns_sound_ctrl_w));
AM_RANGE(0x04f0,0x04fb) AM_DEVWRITE8("pcm", rf5c68_device, rf5c68_w, 0xffff) map(0x04f0, 0x04fb).w("pcm", FUNC(rf5c68_device::rf5c68_w));
// CRTC / Video // CRTC / Video
AM_RANGE(0x05c8,0x05cb) AM_READWRITE8(towns_video_5c8_r, towns_video_5c8_w, 0xffff) map(0x05c8, 0x05cb).rw(this, FUNC(towns_state::towns_video_5c8_r), FUNC(towns_state::towns_video_5c8_w));
// System ports // System ports
AM_RANGE(0x05e8,0x05ef) AM_READWRITE8(towns_sys5e8_r, towns_sys5e8_w, 0x00ff) map(0x05e8, 0x05ef).rw(this, FUNC(towns_state::towns_sys5e8_r), FUNC(towns_state::towns_sys5e8_w)).umask16(0x00ff);
// Keyboard (8042 MCU) // Keyboard (8042 MCU)
AM_RANGE(0x0600,0x0607) AM_READWRITE8(towns_keyboard_r, towns_keyboard_w,0x00ff) map(0x0600, 0x0607).rw(this, FUNC(towns_state::towns_keyboard_r), FUNC(towns_state::towns_keyboard_w)).umask16(0x00ff);
// RS-232C interface // RS-232C interface
AM_RANGE(0x0a00,0x0a0b) AM_READWRITE8(towns_serial_r, towns_serial_w, 0x00ff) map(0x0a00, 0x0a0b).rw(this, FUNC(towns_state::towns_serial_r), FUNC(towns_state::towns_serial_w)).umask16(0x00ff);
// SCSI controller // SCSI controller
AM_RANGE(0x0c30,0x0c37) AM_DEVREADWRITE8("fmscsi",fmscsi_device,fmscsi_r,fmscsi_w,0x00ff) map(0x0c30, 0x0c37).rw("fmscsi", FUNC(fmscsi_device::fmscsi_r), FUNC(fmscsi_device::fmscsi_w)).umask16(0x00ff);
// CMOS // CMOS
AM_RANGE(0x3000,0x4fff) AM_READWRITE8(towns_cmos_r, towns_cmos_w,0x00ff) map(0x3000, 0x4fff).rw(this, FUNC(towns_state::towns_cmos_r), FUNC(towns_state::towns_cmos_w)).umask16(0x00ff);
// Something (MS-DOS wants this 0x41ff to be 1) // Something (MS-DOS wants this 0x41ff to be 1)
//AM_RANGE(0x41fc,0x41ff) AM_READ8(towns_41ff_r,0xff000000) //AM_RANGE(0x41fc,0x41ff) AM_READ8(towns_41ff_r,0xff000000)
// CRTC / Video (again) // CRTC / Video (again)
AM_RANGE(0xfd90,0xfda3) AM_READWRITE8(towns_video_fd90_r, towns_video_fd90_w, 0xffff) map(0xfd90, 0xfda3).rw(this, FUNC(towns_state::towns_video_fd90_r), FUNC(towns_state::towns_video_fd90_w));
AM_RANGE(0xff80,0xffff) AM_READWRITE8(towns_video_cff80_r,towns_video_cff80_w,0xffff) map(0xff80, 0xffff).rw(this, FUNC(towns_state::towns_video_cff80_r), FUNC(towns_state::towns_video_cff80_w));
ADDRESS_MAP_END }
/* Input ports */ /* Input ports */
static INPUT_PORTS_START( towns ) static INPUT_PORTS_START( towns )

View File

@ -632,16 +632,17 @@ void cb3_state::ncb3_map(address_map &map)
map(0xf870, 0xf870).w("snsnd", FUNC(sn76489_device::write)); /* guess... device is initialized, but doesn't seems to be used.*/ map(0xf870, 0xf870).w("snsnd", FUNC(sn76489_device::write)); /* guess... device is initialized, but doesn't seems to be used.*/
} }
ADDRESS_MAP_START(goldstar_state::ncb3_readwriteport) void goldstar_state::ncb3_readwriteport(address_map &map)
ADDRESS_MAP_GLOBAL_MASK(0xff) {
map.global_mask(0xff);
// AM_RANGE(0x00, 0x00) AM_READ(ncb3_unkread_r) // read from 0x00 when controls set 1 is used... // AM_RANGE(0x00, 0x00) AM_READ(ncb3_unkread_r) // read from 0x00 when controls set 1 is used...
// AM_RANGE(0x02, 0x02) AM_READ(ncb3_unkread_r) // read from 0x02 when controls set 2 is used... // AM_RANGE(0x02, 0x02) AM_READ(ncb3_unkread_r) // read from 0x02 when controls set 2 is used...
// AM_RANGE(0x06, 0x06) AM_READ(ncb3_unkread_r) // unknown... // AM_RANGE(0x06, 0x06) AM_READ(ncb3_unkread_r) // unknown...
// AM_RANGE(0x08, 0x08) AM_READ(ncb3_unkread_r) // unknown... // AM_RANGE(0x08, 0x08) AM_READ(ncb3_unkread_r) // unknown...
AM_RANGE(0x10, 0x10) AM_READ_PORT("DSW5") /* confirmed for ncb3 */ map(0x10, 0x10).portr("DSW5"); /* confirmed for ncb3 */
AM_RANGE(0x81, 0x81) AM_WRITE(ncb3_port81_w) // ---> large writes. map(0x81, 0x81).w(this, FUNC(goldstar_state::ncb3_port81_w)); // ---> large writes.
ADDRESS_MAP_END }
/* ncb3 findings... /* ncb3 findings...
@ -755,26 +756,27 @@ void goldstar_state::cm_map(address_map &map)
} }
ADDRESS_MAP_START(goldstar_state::nfm_map) void goldstar_state::nfm_map(address_map &map)
AM_RANGE(0x0000, 0xd7ff) AM_ROM AM_WRITENOP {
map(0x0000, 0xd7ff).rom().nopw();
AM_RANGE(0xd800, 0xdfff) AM_RAM AM_SHARE("nvram") map(0xd800, 0xdfff).ram().share("nvram");
AM_RANGE(0xe000, 0xe7ff) AM_RAM_WRITE(goldstar_fg_vidram_w) AM_SHARE("fg_vidram") map(0xe000, 0xe7ff).ram().w(this, FUNC(goldstar_state::goldstar_fg_vidram_w)).share("fg_vidram");
AM_RANGE(0xe800, 0xefff) AM_RAM_WRITE(goldstar_fg_atrram_w) AM_SHARE("fg_atrram") map(0xe800, 0xefff).ram().w(this, FUNC(goldstar_state::goldstar_fg_atrram_w)).share("fg_atrram");
AM_RANGE(0xf000, 0xf1ff) AM_RAM_WRITE(goldstar_reel1_ram_w ) AM_SHARE("reel1_ram") map(0xf000, 0xf1ff).ram().w(this, FUNC(goldstar_state::goldstar_reel1_ram_w)).share("reel1_ram");
AM_RANGE(0xf200, 0xf3ff) AM_RAM_WRITE(goldstar_reel2_ram_w ) AM_SHARE("reel2_ram") map(0xf200, 0xf3ff).ram().w(this, FUNC(goldstar_state::goldstar_reel2_ram_w)).share("reel2_ram");
AM_RANGE(0xf400, 0xf5ff) AM_RAM_WRITE(goldstar_reel3_ram_w ) AM_SHARE("reel3_ram") map(0xf400, 0xf5ff).ram().w(this, FUNC(goldstar_state::goldstar_reel3_ram_w)).share("reel3_ram");
AM_RANGE(0xf600, 0xf7ff) AM_RAM map(0xf600, 0xf7ff).ram();
AM_RANGE(0xf800, 0xf87f) AM_RAM AM_SHARE("reel1_scroll") map(0xf800, 0xf87f).ram().share("reel1_scroll");
AM_RANGE(0xf880, 0xf9ff) AM_RAM map(0xf880, 0xf9ff).ram();
AM_RANGE(0xfa00, 0xfa7f) AM_RAM AM_SHARE("reel2_scroll") map(0xfa00, 0xfa7f).ram().share("reel2_scroll");
AM_RANGE(0xfa80, 0xfbff) AM_RAM map(0xfa80, 0xfbff).ram();
AM_RANGE(0xfc00, 0xfc7f) AM_RAM AM_SHARE("reel3_scroll") map(0xfc00, 0xfc7f).ram().share("reel3_scroll");
AM_RANGE(0xfc80, 0xffff) AM_RAM map(0xfc80, 0xffff).ram();
ADDRESS_MAP_END }
@ -879,61 +881,63 @@ void cmaster_state::amcoe2_portmap(address_map &map)
} }
ADDRESS_MAP_START(goldstar_state::lucky8_map) void goldstar_state::lucky8_map(address_map &map)
AM_RANGE(0x0000, 0x7fff) AM_ROM {
AM_RANGE(0x8000, 0x87ff) AM_RAM AM_SHARE("nvram") map(0x0000, 0x7fff).rom();
AM_RANGE(0x8800, 0x8fff) AM_RAM_WRITE(goldstar_fg_vidram_w) AM_SHARE("fg_vidram") map(0x8000, 0x87ff).ram().share("nvram");
AM_RANGE(0x9000, 0x97ff) AM_RAM_WRITE(goldstar_fg_atrram_w) AM_SHARE("fg_atrram") map(0x8800, 0x8fff).ram().w(this, FUNC(goldstar_state::goldstar_fg_vidram_w)).share("fg_vidram");
AM_RANGE(0x9800, 0x99ff) AM_RAM_WRITE(goldstar_reel1_ram_w) AM_SHARE("reel1_ram") map(0x9000, 0x97ff).ram().w(this, FUNC(goldstar_state::goldstar_fg_atrram_w)).share("fg_atrram");
AM_RANGE(0xa000, 0xa1ff) AM_RAM_WRITE(goldstar_reel2_ram_w) AM_SHARE("reel2_ram") map(0x9800, 0x99ff).ram().w(this, FUNC(goldstar_state::goldstar_reel1_ram_w)).share("reel1_ram");
AM_RANGE(0xa800, 0xa9ff) AM_RAM_WRITE(goldstar_reel3_ram_w) AM_SHARE("reel3_ram") map(0xa000, 0xa1ff).ram().w(this, FUNC(goldstar_state::goldstar_reel2_ram_w)).share("reel2_ram");
AM_RANGE(0xb040, 0xb07f) AM_RAM AM_SHARE("reel1_scroll") map(0xa800, 0xa9ff).ram().w(this, FUNC(goldstar_state::goldstar_reel3_ram_w)).share("reel3_ram");
AM_RANGE(0xb080, 0xb0bf) AM_RAM AM_SHARE("reel2_scroll") map(0xb040, 0xb07f).ram().share("reel1_scroll");
AM_RANGE(0xb100, 0xb17f) AM_RAM AM_SHARE("reel3_scroll") map(0xb080, 0xb0bf).ram().share("reel2_scroll");
map(0xb100, 0xb17f).ram().share("reel3_scroll");
AM_RANGE(0xb800, 0xb803) AM_DEVREADWRITE("ppi8255_0", i8255_device, read, write) /* Input Ports */ map(0xb800, 0xb803).rw("ppi8255_0", FUNC(i8255_device::read), FUNC(i8255_device::write)); /* Input Ports */
AM_RANGE(0xb810, 0xb813) AM_DEVREADWRITE("ppi8255_1", i8255_device, read, write) /* Input Ports */ map(0xb810, 0xb813).rw("ppi8255_1", FUNC(i8255_device::read), FUNC(i8255_device::write)); /* Input Ports */
AM_RANGE(0xb820, 0xb823) AM_DEVREADWRITE("ppi8255_2", i8255_device, read, write) /* Input/Output Ports */ map(0xb820, 0xb823).rw("ppi8255_2", FUNC(i8255_device::read), FUNC(i8255_device::write)); /* Input/Output Ports */
AM_RANGE(0xb830, 0xb830) AM_DEVREADWRITE("aysnd", ay8910_device, data_r, data_w) map(0xb830, 0xb830).rw("aysnd", FUNC(ay8910_device::data_r), FUNC(ay8910_device::data_w));
AM_RANGE(0xb840, 0xb840) AM_DEVWRITE("aysnd", ay8910_device, address_w) /* no sound... only use both ports for DSWs */ map(0xb840, 0xb840).w("aysnd", FUNC(ay8910_device::address_w)); /* no sound... only use both ports for DSWs */
AM_RANGE(0xb850, 0xb850) AM_WRITE(p1_lamps_w) map(0xb850, 0xb850).w(this, FUNC(goldstar_state::p1_lamps_w));
AM_RANGE(0xb860, 0xb860) AM_WRITE(p2_lamps_w) map(0xb860, 0xb860).w(this, FUNC(goldstar_state::p2_lamps_w));
AM_RANGE(0xb870, 0xb870) AM_DEVWRITE("snsnd", sn76489_device, write) /* sound */ map(0xb870, 0xb870).w("snsnd", FUNC(sn76489_device::write)); /* sound */
AM_RANGE(0xc000, 0xf7ff) AM_ROM // could be used by some sets like super972. map(0xc000, 0xf7ff).rom(); // could be used by some sets like super972.
AM_RANGE(0xf800, 0xffff) AM_RAM map(0xf800, 0xffff).ram();
ADDRESS_MAP_END }
ADDRESS_MAP_START(goldstar_state::flaming7_map) void goldstar_state::flaming7_map(address_map &map)
AM_RANGE(0x0000, 0x7fff) AM_ROM {
AM_RANGE(0x8000, 0x87ff) AM_RAM AM_SHARE("nvram") map(0x0000, 0x7fff).rom();
AM_RANGE(0x8800, 0x8fff) AM_RAM_WRITE(goldstar_fg_vidram_w) AM_SHARE("fg_vidram") map(0x8000, 0x87ff).ram().share("nvram");
AM_RANGE(0x9000, 0x97ff) AM_RAM_WRITE(goldstar_fg_atrram_w) AM_SHARE("fg_atrram") map(0x8800, 0x8fff).ram().w(this, FUNC(goldstar_state::goldstar_fg_vidram_w)).share("fg_vidram");
map(0x9000, 0x97ff).ram().w(this, FUNC(goldstar_state::goldstar_fg_atrram_w)).share("fg_atrram");
AM_RANGE(0x9800, 0x99ff) AM_RAM_WRITE(goldstar_reel1_ram_w) AM_SHARE("reel1_ram") map(0x9800, 0x99ff).ram().w(this, FUNC(goldstar_state::goldstar_reel1_ram_w)).share("reel1_ram");
// AM_RANGE(0x9a00, 0x9fff) AM_RAM // AM_RANGE(0x9a00, 0x9fff) AM_RAM
AM_RANGE(0xa000, 0xa1ff) AM_RAM_WRITE(goldstar_reel2_ram_w) AM_SHARE("reel2_ram") map(0xa000, 0xa1ff).ram().w(this, FUNC(goldstar_state::goldstar_reel2_ram_w)).share("reel2_ram");
// AM_RANGE(0xa200, 0xa7ff) AM_RAM // AM_RANGE(0xa200, 0xa7ff) AM_RAM
AM_RANGE(0xa800, 0xa9ff) AM_RAM_WRITE(goldstar_reel3_ram_w) AM_SHARE("reel3_ram") map(0xa800, 0xa9ff).ram().w(this, FUNC(goldstar_state::goldstar_reel3_ram_w)).share("reel3_ram");
// AM_RANGE(0xaa00, 0xafff) AM_RAM // AM_RANGE(0xaa00, 0xafff) AM_RAM
// AM_RANGE(0xb000, 0xb03f) AM_RAM // AM_RANGE(0xb000, 0xb03f) AM_RAM
AM_RANGE(0xb040, 0xb07f) AM_RAM AM_SHARE("reel1_scroll") map(0xb040, 0xb07f).ram().share("reel1_scroll");
AM_RANGE(0xb080, 0xb0bf) AM_RAM AM_SHARE("reel2_scroll") map(0xb080, 0xb0bf).ram().share("reel2_scroll");
// AM_RANGE(0xb0c0, 0xb0ff) AM_RAM // AM_RANGE(0xb0c0, 0xb0ff) AM_RAM
AM_RANGE(0xb100, 0xb17f) AM_RAM AM_SHARE("reel3_scroll") map(0xb100, 0xb17f).ram().share("reel3_scroll");
AM_RANGE(0xb180, 0xb7ff) AM_RAM map(0xb180, 0xb7ff).ram();
AM_RANGE(0xb800, 0xb803) AM_DEVREADWRITE("ppi8255_0", i8255_device, read, write) /* Input Ports (92) */ map(0xb800, 0xb803).rw("ppi8255_0", FUNC(i8255_device::read), FUNC(i8255_device::write)); /* Input Ports (92) */
AM_RANGE(0xb810, 0xb813) AM_DEVREADWRITE("ppi8255_1", i8255_device, read, write) /* Input Ports (9B) */ map(0xb810, 0xb813).rw("ppi8255_1", FUNC(i8255_device::read), FUNC(i8255_device::write)); /* Input Ports (9B) */
AM_RANGE(0xb820, 0xb823) AM_DEVREADWRITE("ppi8255_2", i8255_device, read, write) /* Input/Output Ports (90) */ map(0xb820, 0xb823).rw("ppi8255_2", FUNC(i8255_device::read), FUNC(i8255_device::write)); /* Input/Output Ports (90) */
AM_RANGE(0xb830, 0xb830) AM_DEVREADWRITE("aysnd", ay8910_device, data_r, data_w) map(0xb830, 0xb830).rw("aysnd", FUNC(ay8910_device::data_r), FUNC(ay8910_device::data_w));
AM_RANGE(0xb840, 0xb840) AM_DEVWRITE("aysnd", ay8910_device, address_w) /* no sound... only use both ports for DSWs */ map(0xb840, 0xb840).w("aysnd", FUNC(ay8910_device::address_w)); /* no sound... only use both ports for DSWs */
AM_RANGE(0xb850, 0xb850) AM_WRITE(p1_lamps_w) map(0xb850, 0xb850).w(this, FUNC(goldstar_state::p1_lamps_w));
AM_RANGE(0xb860, 0xb860) AM_WRITE(p2_lamps_w) map(0xb860, 0xb860).w(this, FUNC(goldstar_state::p2_lamps_w));
AM_RANGE(0xb870, 0xb870) AM_DEVWRITE("snsnd", sn76489_device, write) /* sound */ map(0xb870, 0xb870).w("snsnd", FUNC(sn76489_device::write)); /* sound */
// AM_RANGE(0xc000, 0xd3ff) AM_RAM // AM_RANGE(0xc000, 0xd3ff) AM_RAM
AM_RANGE(0xf800, 0xffff) AM_RAM map(0xf800, 0xffff).ram();
ADDRESS_MAP_END }
/* /*
W 9A00-B7FF FF W 9A00-B7FF FF
RW B000-B7FF 00 RW B000-B7FF 00
@ -962,29 +966,30 @@ ADDRESS_MAP_END
AY8910 ports are OK. AY8910 ports are OK.
*/ */
ADDRESS_MAP_START(goldstar_state::mbstar_map) void goldstar_state::mbstar_map(address_map &map)
AM_RANGE(0x0000, 0x7fff) AM_ROM {
AM_RANGE(0x8000, 0x87ff) AM_RAM AM_SHARE("nvram") map(0x0000, 0x7fff).rom();
AM_RANGE(0x8800, 0x8fff) AM_RAM_WRITE(goldstar_fg_vidram_w) AM_SHARE("fg_vidram") map(0x8000, 0x87ff).ram().share("nvram");
AM_RANGE(0x9000, 0x97ff) AM_RAM_WRITE(goldstar_fg_atrram_w) AM_SHARE("fg_atrram") map(0x8800, 0x8fff).ram().w(this, FUNC(goldstar_state::goldstar_fg_vidram_w)).share("fg_vidram");
AM_RANGE(0x9800, 0x99ff) AM_RAM_WRITE(goldstar_reel1_ram_w) AM_SHARE("reel1_ram") map(0x9000, 0x97ff).ram().w(this, FUNC(goldstar_state::goldstar_fg_atrram_w)).share("fg_atrram");
AM_RANGE(0xa000, 0xa1ff) AM_RAM_WRITE(goldstar_reel2_ram_w) AM_SHARE("reel2_ram") map(0x9800, 0x99ff).ram().w(this, FUNC(goldstar_state::goldstar_reel1_ram_w)).share("reel1_ram");
AM_RANGE(0xa800, 0xa9ff) AM_RAM_WRITE(goldstar_reel3_ram_w) AM_SHARE("reel3_ram") map(0xa000, 0xa1ff).ram().w(this, FUNC(goldstar_state::goldstar_reel2_ram_w)).share("reel2_ram");
AM_RANGE(0xb040, 0xb07f) AM_RAM AM_SHARE("reel1_scroll") map(0xa800, 0xa9ff).ram().w(this, FUNC(goldstar_state::goldstar_reel3_ram_w)).share("reel3_ram");
AM_RANGE(0xb080, 0xb0bf) AM_RAM AM_SHARE("reel2_scroll") map(0xb040, 0xb07f).ram().share("reel1_scroll");
AM_RANGE(0xb100, 0xb17f) AM_RAM AM_SHARE("reel3_scroll") map(0xb080, 0xb0bf).ram().share("reel2_scroll");
map(0xb100, 0xb17f).ram().share("reel3_scroll");
AM_RANGE(0xb800, 0xb803) AM_DEVREADWRITE("ppi8255_0", i8255_device, read, write) /* Input Ports */ map(0xb800, 0xb803).rw("ppi8255_0", FUNC(i8255_device::read), FUNC(i8255_device::write)); /* Input Ports */
AM_RANGE(0xb810, 0xb813) AM_DEVREADWRITE("ppi8255_1", i8255_device, read, write) /* Input Ports */ map(0xb810, 0xb813).rw("ppi8255_1", FUNC(i8255_device::read), FUNC(i8255_device::write)); /* Input Ports */
AM_RANGE(0xb820, 0xb823) AM_DEVREADWRITE("ppi8255_2", i8255_device, read, write) /* Input/Output Ports */ map(0xb820, 0xb823).rw("ppi8255_2", FUNC(i8255_device::read), FUNC(i8255_device::write)); /* Input/Output Ports */
AM_RANGE(0xb830, 0xb830) AM_DEVREADWRITE("aysnd", ay8910_device, data_r, data_w) map(0xb830, 0xb830).rw("aysnd", FUNC(ay8910_device::data_r), FUNC(ay8910_device::data_w));
AM_RANGE(0xb840, 0xb840) AM_DEVWRITE("aysnd", ay8910_device, address_w) /* no sound... only use both ports for DSWs */ map(0xb840, 0xb840).w("aysnd", FUNC(ay8910_device::address_w)); /* no sound... only use both ports for DSWs */
AM_RANGE(0xb850, 0xb850) AM_WRITE(p1_lamps_w) map(0xb850, 0xb850).w(this, FUNC(goldstar_state::p1_lamps_w));
AM_RANGE(0xb860, 0xb860) AM_WRITE(p2_lamps_w) map(0xb860, 0xb860).w(this, FUNC(goldstar_state::p2_lamps_w));
AM_RANGE(0xb870, 0xb870) AM_DEVWRITE("snsnd", sn76489_device, write) /* sound */ map(0xb870, 0xb870).w("snsnd", FUNC(sn76489_device::write)); /* sound */
AM_RANGE(0xc000, 0xf7ff) AM_ROM map(0xc000, 0xf7ff).rom();
AM_RANGE(0xf800, 0xffff) AM_RAM map(0xf800, 0xffff).ram();
ADDRESS_MAP_END }
WRITE8_MEMBER(wingco_state::magodds_outb850_w) WRITE8_MEMBER(wingco_state::magodds_outb850_w)
@ -1100,29 +1105,30 @@ void goldstar_state::ladylinr_map(address_map &map)
map(0xf800, 0xffff).ram(); map(0xf800, 0xffff).ram();
} }
ADDRESS_MAP_START(goldstar_state::wcat3_map) void goldstar_state::wcat3_map(address_map &map)
AM_RANGE(0x0000, 0x7fff) AM_ROM {
AM_RANGE(0x8000, 0x87ff) AM_RAM AM_SHARE("nvram") map(0x0000, 0x7fff).rom();
AM_RANGE(0x8800, 0x8fff) AM_RAM_WRITE(goldstar_fg_vidram_w) AM_SHARE("fg_vidram") map(0x8000, 0x87ff).ram().share("nvram");
AM_RANGE(0x9000, 0x97ff) AM_RAM_WRITE(goldstar_fg_atrram_w) AM_SHARE("fg_atrram") map(0x8800, 0x8fff).ram().w(this, FUNC(goldstar_state::goldstar_fg_vidram_w)).share("fg_vidram");
AM_RANGE(0x9800, 0x99ff) AM_RAM_WRITE(goldstar_reel1_ram_w) AM_SHARE("reel1_ram") map(0x9000, 0x97ff).ram().w(this, FUNC(goldstar_state::goldstar_fg_atrram_w)).share("fg_atrram");
AM_RANGE(0xa000, 0xa1ff) AM_RAM_WRITE(goldstar_reel2_ram_w) AM_SHARE("reel2_ram") map(0x9800, 0x99ff).ram().w(this, FUNC(goldstar_state::goldstar_reel1_ram_w)).share("reel1_ram");
AM_RANGE(0xa800, 0xa9ff) AM_RAM_WRITE(goldstar_reel3_ram_w) AM_SHARE("reel3_ram") map(0xa000, 0xa1ff).ram().w(this, FUNC(goldstar_state::goldstar_reel2_ram_w)).share("reel2_ram");
AM_RANGE(0xb040, 0xb07f) AM_RAM AM_SHARE("reel1_scroll") map(0xa800, 0xa9ff).ram().w(this, FUNC(goldstar_state::goldstar_reel3_ram_w)).share("reel3_ram");
AM_RANGE(0xb080, 0xb0bf) AM_RAM AM_SHARE("reel2_scroll") map(0xb040, 0xb07f).ram().share("reel1_scroll");
AM_RANGE(0xb100, 0xb17f) AM_RAM AM_SHARE("reel3_scroll") map(0xb080, 0xb0bf).ram().share("reel2_scroll");
map(0xb100, 0xb17f).ram().share("reel3_scroll");
AM_RANGE(0xb800, 0xb803) AM_DEVREADWRITE("ppi8255_0", i8255_device, read, write) /* Input Ports */ map(0xb800, 0xb803).rw("ppi8255_0", FUNC(i8255_device::read), FUNC(i8255_device::write)); /* Input Ports */
AM_RANGE(0xb810, 0xb813) AM_DEVREADWRITE("ppi8255_1", i8255_device, read, write) /* Input Ports */ map(0xb810, 0xb813).rw("ppi8255_1", FUNC(i8255_device::read), FUNC(i8255_device::write)); /* Input Ports */
AM_RANGE(0xb820, 0xb823) AM_DEVREADWRITE("ppi8255_2", i8255_device, read, write) /* Input/Output Ports */ map(0xb820, 0xb823).rw("ppi8255_2", FUNC(i8255_device::read), FUNC(i8255_device::write)); /* Input/Output Ports */
AM_RANGE(0xb830, 0xb830) AM_DEVREADWRITE("aysnd", ay8910_device, data_r, data_w) map(0xb830, 0xb830).rw("aysnd", FUNC(ay8910_device::data_r), FUNC(ay8910_device::data_w));
AM_RANGE(0xb840, 0xb840) AM_DEVWRITE("aysnd", ay8910_device, address_w) /* no sound... only use both ports for DSWs */ map(0xb840, 0xb840).w("aysnd", FUNC(ay8910_device::address_w)); /* no sound... only use both ports for DSWs */
AM_RANGE(0xb850, 0xb850) AM_WRITE(p1_lamps_w) map(0xb850, 0xb850).w(this, FUNC(goldstar_state::p1_lamps_w));
AM_RANGE(0xb870, 0xb870) AM_DEVWRITE("snsnd", sn76489_device, write) /* sound */ map(0xb870, 0xb870).w("snsnd", FUNC(sn76489_device::write)); /* sound */
// AM_RANGE(0xc000, 0xc003) AM_DEVREADWRITE("ppi8255_3", i8255_device, read, write) /* Other PPI initialized? */ // AM_RANGE(0xc000, 0xc003) AM_DEVREADWRITE("ppi8255_3", i8255_device, read, write) /* Other PPI initialized? */
AM_RANGE(0xd000, 0xefff) AM_ROM map(0xd000, 0xefff).rom();
AM_RANGE(0xf000, 0xffff) AM_RAM map(0xf000, 0xffff).ram();
ADDRESS_MAP_END }
/* newer / more capable hw */ /* newer / more capable hw */
@ -1265,16 +1271,17 @@ void unkch_state::megaline_map(address_map &map)
AY8910?: 60 - 80 AY8910?: 60 - 80
*/ */
ADDRESS_MAP_START(goldstar_state::megaline_portmap) void goldstar_state::megaline_portmap(address_map &map)
ADDRESS_MAP_GLOBAL_MASK(0xff) {
AM_RANGE(0xa0, 0xa0) AM_DEVWRITE("sn1", sn76489_device, write) /* SN76489 #1 */ map.global_mask(0xff);
AM_RANGE(0xc0, 0xc0) AM_DEVWRITE("sn2", sn76489_device, write) /* SN76489 #2 */ map(0xa0, 0xa0).w("sn1", FUNC(sn76489_device::write)); /* SN76489 #1 */
AM_RANGE(0xe0, 0xe0) AM_DEVWRITE("sn3", sn76489_device, write) /* SN76489 #3 */ map(0xc0, 0xc0).w("sn2", FUNC(sn76489_device::write)); /* SN76489 #2 */
AM_RANGE(0x60, 0x60) AM_DEVWRITE("aysnd", ay8910_device, address_w) /* AY8910 control? */ map(0xe0, 0xe0).w("sn3", FUNC(sn76489_device::write)); /* SN76489 #3 */
AM_RANGE(0x80, 0x80) AM_DEVREADWRITE("aysnd", ay8910_device, data_r, data_w) /* AY8910 Input? */ map(0x60, 0x60).w("aysnd", FUNC(ay8910_device::address_w)); /* AY8910 control? */
map(0x80, 0x80).rw("aysnd", FUNC(ay8910_device::data_r), FUNC(ay8910_device::data_w)); /* AY8910 Input? */
// AM_RANGE(0x01, 0x01) AM_DEVREAD("aysnd", ay8910_device, data_r) // AM_RANGE(0x01, 0x01) AM_DEVREAD("aysnd", ay8910_device, data_r)
// AM_RANGE(0x02, 0x03) AM_DEVWRITE("aysnd", ay8910_device, data_address_w) // AM_RANGE(0x02, 0x03) AM_DEVWRITE("aysnd", ay8910_device, data_address_w)
ADDRESS_MAP_END }
void unkch_state::bonusch_map(address_map &map) void unkch_state::bonusch_map(address_map &map)
@ -1319,16 +1326,17 @@ void unkch_state::bonusch_map(address_map &map)
60h = R 60h = R
*/ */
ADDRESS_MAP_START(goldstar_state::bonusch_portmap) void goldstar_state::bonusch_portmap(address_map &map)
ADDRESS_MAP_GLOBAL_MASK(0xff) {
AM_RANGE(0x10, 0x10) AM_READ_PORT("IN0") map.global_mask(0xff);
AM_RANGE(0x20, 0x20) AM_READ_PORT("IN1") map(0x10, 0x10).portr("IN0");
AM_RANGE(0x50, 0x50) AM_DEVWRITE("sn1", sn76489_device, write) /* SN76489 #1 */ map(0x20, 0x20).portr("IN1");
AM_RANGE(0x51, 0x51) AM_DEVWRITE("sn2", sn76489_device, write) /* SN76489 #2 */ map(0x50, 0x50).w("sn1", FUNC(sn76489_device::write)); /* SN76489 #1 */
AM_RANGE(0x52, 0x52) AM_DEVWRITE("sn3", sn76489_device, write) /* SN76489 #3 */ map(0x51, 0x51).w("sn2", FUNC(sn76489_device::write)); /* SN76489 #2 */
AM_RANGE(0x53, 0x53) AM_DEVWRITE("sn4", sn76489_device, write) /* SN76489 #4 */ map(0x52, 0x52).w("sn3", FUNC(sn76489_device::write)); /* SN76489 #3 */
AM_RANGE(0x60, 0x60) AM_READ_PORT("IN3") map(0x53, 0x53).w("sn4", FUNC(sn76489_device::write)); /* SN76489 #4 */
ADDRESS_MAP_END map(0x60, 0x60).portr("IN3");
}
static INPUT_PORTS_START( cmv4_player ) static INPUT_PORTS_START( cmv4_player )

View File

@ -765,35 +765,41 @@ void intellec4_state::intellec4_rom_port_banks(address_map &map)
CPU views of address spaces CPU views of address spaces
---------------------------------*/ ---------------------------------*/
ADDRESS_MAP_START(intellec4_state::intellec4_rom) void intellec4_state::intellec4_rom(address_map &map)
ADDRESS_MAP_UNMAP_LOW {
AM_RANGE(0x0000, 0x0fff) AM_DEVICE("prgbank", address_map_bank_device, amap8) map.unmap_value_low();
ADDRESS_MAP_END map(0x0000, 0x0fff).m(m_program_banks, FUNC(address_map_bank_device::amap8));
}
ADDRESS_MAP_START(intellec4_state::intellec4_ram_memory) void intellec4_state::intellec4_ram_memory(address_map &map)
ADDRESS_MAP_UNMAP_LOW {
AM_RANGE(0x0000, 0x00ff) AM_RAM AM_SHARE("memory") // 4 * 4002 map.unmap_value_low();
ADDRESS_MAP_END map(0x0000, 0x00ff).ram().share("memory"); // 4 * 4002
}
ADDRESS_MAP_START(intellec4_state::intellec4_rom_ports) void intellec4_state::intellec4_rom_ports(address_map &map)
ADDRESS_MAP_UNMAP_HIGH {
AM_RANGE(0x0000, 0x07ff) AM_DEVICE("rpbank", address_map_bank_device, amap8) map.unmap_value_high();
ADDRESS_MAP_END map(0x0000, 0x07ff).m("rpbank", FUNC(address_map_bank_device::amap8));
}
ADDRESS_MAP_START(intellec4_state::intellec4_ram_status) void intellec4_state::intellec4_ram_status(address_map &map)
ADDRESS_MAP_UNMAP_LOW {
AM_RANGE(0x0000, 0x003f) AM_RAM AM_SHARE("status") // 4 * 4002 map.unmap_value_low();
ADDRESS_MAP_END map(0x0000, 0x003f).ram().share("status"); // 4 * 4002
}
ADDRESS_MAP_START(intellec4_state::intellec4_ram_ports) void intellec4_state::intellec4_ram_ports(address_map &map)
AM_RANGE(0x00, 0x00) AM_WRITE(ram0_out) {
AM_RANGE(0x01, 0x01) AM_WRITE(ram1_out) map(0x00, 0x00).w(this, FUNC(intellec4_state::ram0_out));
ADDRESS_MAP_END map(0x01, 0x01).w(this, FUNC(intellec4_state::ram1_out));
}
ADDRESS_MAP_START(intellec4_state::intellec4_program_memory) void intellec4_state::intellec4_program_memory(address_map &map)
ADDRESS_MAP_UNMAP_LOW {
AM_RANGE(0x0000, 0x01ff) AM_READWRITE(pm_read, pm_write) map.unmap_value_low();
ADDRESS_MAP_END map(0x0000, 0x01ff).rw(this, FUNC(intellec4_state::pm_read), FUNC(intellec4_state::pm_write));
}
/*---------------------------------- /*----------------------------------

View File

@ -884,31 +884,34 @@ void ngen_state::ngen_io(address_map &map)
} }
ADDRESS_MAP_START(ngen_state::ngen386_mem) void ngen_state::ngen386_mem(address_map &map)
AM_RANGE(0x00000000, 0x000f7fff) AM_RAM {
AM_RANGE(0x000f8000, 0x000f9fff) AM_RAM AM_SHARE("vram") map(0x00000000, 0x000f7fff).ram();
AM_RANGE(0x000fa000, 0x000fbfff) AM_RAM AM_SHARE("fontram") map(0x000f8000, 0x000f9fff).ram().share("vram");
AM_RANGE(0x000fc000, 0x000fcfff) AM_RAM map(0x000fa000, 0x000fbfff).ram().share("fontram");
AM_RANGE(0x000fe000, 0x000fffff) AM_ROM AM_REGION("bios",0) map(0x000fc000, 0x000fcfff).ram();
AM_RANGE(0x00100000, 0x00ffffff) AM_RAM // some extra RAM map(0x000fe000, 0x000fffff).rom().region("bios", 0);
AM_RANGE(0xffffe000, 0xffffffff) AM_ROM AM_REGION("bios",0) map(0x00100000, 0x00ffffff).ram(); // some extra RAM
ADDRESS_MAP_END map(0xffffe000, 0xffffffff).rom().region("bios", 0);
}
ADDRESS_MAP_START(ngen_state::ngen386i_mem) void ngen_state::ngen386i_mem(address_map &map)
AM_RANGE(0x00000000, 0x000f7fff) AM_RAM {
AM_RANGE(0x000f8000, 0x000f9fff) AM_RAM AM_SHARE("vram") map(0x00000000, 0x000f7fff).ram();
AM_RANGE(0x000fa000, 0x000fbfff) AM_RAM AM_SHARE("fontram") map(0x000f8000, 0x000f9fff).ram().share("vram");
AM_RANGE(0x000fc000, 0x000fffff) AM_ROM AM_REGION("bios",0) map(0x000fa000, 0x000fbfff).ram().share("fontram");
AM_RANGE(0x00100000, 0x00ffffff) AM_RAM // some extra RAM map(0x000fc000, 0x000fffff).rom().region("bios", 0);
AM_RANGE(0xffffc000, 0xffffffff) AM_ROM AM_REGION("bios",0) map(0x00100000, 0x00ffffff).ram(); // some extra RAM
ADDRESS_MAP_END map(0xffffc000, 0xffffffff).rom().region("bios", 0);
}
ADDRESS_MAP_START(ngen_state::ngen386_io) void ngen_state::ngen386_io(address_map &map)
AM_RANGE(0x0000, 0x0003) AM_READWRITE16(xbus_r, xbus_w, 0x0000ffff) {
map(0x0000, 0x0001).rw(this, FUNC(ngen_state::xbus_r), FUNC(ngen_state::xbus_w));
// AM_RANGE(0xf800, 0xfeff) AM_READWRITE16(peripheral_r, peripheral_w,0xffffffff) // AM_RANGE(0xf800, 0xfeff) AM_READWRITE16(peripheral_r, peripheral_w,0xffffffff)
AM_RANGE(0xfd08, 0xfd0b) AM_READWRITE16(b38_crtc_r, b38_crtc_w,0xffffffff) map(0xfd08, 0xfd0b).rw(this, FUNC(ngen_state::b38_crtc_r), FUNC(ngen_state::b38_crtc_w));
AM_RANGE(0xfd0c, 0xfd0f) AM_READWRITE16(b38_keyboard_r, b38_keyboard_w,0xffffffff) map(0xfd0c, 0xfd0f).rw(this, FUNC(ngen_state::b38_keyboard_r), FUNC(ngen_state::b38_keyboard_w));
ADDRESS_MAP_END }
static INPUT_PORTS_START( ngen ) static INPUT_PORTS_START( ngen )
INPUT_PORTS_END INPUT_PORTS_END

View File

@ -884,10 +884,11 @@ void norautp_state::norautx4_map(address_map &map)
} }
#ifdef UNUSED_CODE #ifdef UNUSED_CODE
ADDRESS_MAP_START(norautp_state::norautx8_map) void norautp_state::norautx8_map(address_map &map)
AM_RANGE(0x0000, 0x7fff) AM_ROM /* need to be checked */ {
AM_RANGE(0xc000, 0xc7ff) AM_RAM AM_SHARE("nvram") /* 6116 */ map(0x0000, 0x7fff).rom(); /* need to be checked */
ADDRESS_MAP_END map(0xc000, 0xc7ff).ram().share("nvram"); /* 6116 */
}
#endif #endif
void norautp_state::kimble_map(address_map &map) void norautp_state::kimble_map(address_map &map)
@ -898,9 +899,10 @@ void norautp_state::kimble_map(address_map &map)
} }
#ifdef UNUSED_CODE #ifdef UNUSED_CODE
ADDRESS_MAP_START(norautp_state::norautxp_portmap) void norautp_state::norautxp_portmap(address_map &map)
ADDRESS_MAP_GLOBAL_MASK(0xff) {
ADDRESS_MAP_END map.global_mask(0xff);
}
#endif #endif
void norautp_state::newhilop_map(address_map &map) void norautp_state::newhilop_map(address_map &map)

View File

@ -538,7 +538,8 @@ BootSeqDone is 1, DisableROM is 0, mem map is 0x00000-0x00fff reading is t
BootSeqDone is 1, DisableROM is 1, mem map is entirely RAM or open bus for both reading and writing. BootSeqDone is 1, DisableROM is 1, mem map is entirely RAM or open bus for both reading and writing.
*/ */
ADDRESS_MAP_START(notetaker_state::iop_mem) void notetaker_state::iop_mem(address_map &map)
{
/* /*
AM_RANGE(0x00000, 0x00fff) AM_ROM AM_REGION("iop", 0xff000) // rom is here if either BootSeqDone OR DisableROM are zero. the 1.5 source code and the schematics implies writes here are ignored while rom is enabled; if disablerom is 1 this goes to mainram AM_RANGE(0x00000, 0x00fff) AM_ROM AM_REGION("iop", 0xff000) // rom is here if either BootSeqDone OR DisableROM are zero. the 1.5 source code and the schematics implies writes here are ignored while rom is enabled; if disablerom is 1 this goes to mainram
AM_RANGE(0x01000, 0x3ffff) AM_RAM AM_REGION("mainram", 0) // 256k of ram (less 8k), shared between both processors. rom goes here if bootseqdone is 0 AM_RANGE(0x01000, 0x3ffff) AM_RAM AM_REGION("mainram", 0) // 256k of ram (less 8k), shared between both processors. rom goes here if bootseqdone is 0
@ -549,8 +550,8 @@ ADDRESS_MAP_START(notetaker_state::iop_mem)
//AM_RANGE(0xfffee, 0xfffef) AM_READ(parityErrLo_r); //AM_RANGE(0xfffee, 0xfffef) AM_READ(parityErrLo_r);
AM_RANGE(0xffff0, 0xfffff) AM_ROM AM_REGION("iop", 0xffff0) AM_RANGE(0xffff0, 0xfffff) AM_ROM AM_REGION("iop", 0xffff0)
*/ */
AM_RANGE(0x00000, 0xfffff) AM_READWRITE(iop_r, iop_w) // bypass MAME's memory map system as we need finer grained control map(0x00000, 0xfffff).rw(this, FUNC(notetaker_state::iop_r), FUNC(notetaker_state::iop_w)); // bypass MAME's memory map system as we need finer grained control
ADDRESS_MAP_END }
/* iop memory map comes from http://bitsavers.informatik.uni-stuttgart.de/pdf/xerox/notetaker/memos/19790605_Definition_of_8086_Ports.pdf /* iop memory map comes from http://bitsavers.informatik.uni-stuttgart.de/pdf/xerox/notetaker/memos/19790605_Definition_of_8086_Ports.pdf
and from the schematic at http://bitsavers.informatik.uni-stuttgart.de/pdf/xerox/notetaker/schematics/19790423_Notetaker_IO_Processor.pdf and from the schematic at http://bitsavers.informatik.uni-stuttgart.de/pdf/xerox/notetaker/schematics/19790423_Notetaker_IO_Processor.pdf
@ -586,32 +587,33 @@ x x x x 0 x x x x x x 1 1 0 1 x 1 1 1
x x x x 0 x x x x x x 1 1 1 0 x x x x . R SelADCHi x x x x 0 x x x x x x 1 1 1 0 x x x x . R SelADCHi
x x x x 0 x x x x x x 1 1 1 1 x x x x . W CRTSwitch x x x x 0 x x x x x x 1 1 1 1 x x x x . W CRTSwitch
*/ */
ADDRESS_MAP_START(notetaker_state::iop_io) void notetaker_state::iop_io(address_map &map)
ADDRESS_MAP_UNMAP_HIGH {
AM_RANGE(0x00, 0x03) AM_MIRROR(0x7e1c) AM_DEVREADWRITE8("iop_pic8259", pic8259_device, read, write, 0x00ff) map.unmap_value_high();
AM_RANGE(0x20, 0x21) AM_MIRROR(0x7e1e) AM_WRITE(IPConReg_w) // I/O processor (rom mapping, etc) control register map(0x00, 0x03).mirror(0x7e1c).rw(m_iop_pic, FUNC(pic8259_device::read), FUNC(pic8259_device::write)).umask16(0x00ff);
AM_RANGE(0x42, 0x43) AM_MIRROR(0x7e10) AM_DEVREAD8("kbduart", ay31015_device, receive, 0x00ff) // read keyboard data map(0x20, 0x21).mirror(0x7e1e).w(this, FUNC(notetaker_state::IPConReg_w)); // I/O processor (rom mapping, etc) control register
AM_RANGE(0x44, 0x45) AM_MIRROR(0x7e10) AM_READ(ReadOPStatus_r) // read keyboard fifo state map(0x42, 0x42).mirror(0x7e10).r(m_kbduart, FUNC(ay31015_device::receive)); // read keyboard data
AM_RANGE(0x48, 0x49) AM_MIRROR(0x7e10) AM_WRITE(LoadKeyCtlReg_w) // kbd uart control register map(0x44, 0x45).mirror(0x7e10).r(this, FUNC(notetaker_state::ReadOPStatus_r)); // read keyboard fifo state
AM_RANGE(0x4a, 0x4b) AM_MIRROR(0x7e10) AM_DEVWRITE8("kbduart", ay31015_device, transmit, 0x00ff) // kbd uart data register map(0x48, 0x49).mirror(0x7e10).w(this, FUNC(notetaker_state::LoadKeyCtlReg_w)); // kbd uart control register
AM_RANGE(0x4c, 0x4d) AM_MIRROR(0x7e10) AM_WRITE(KeyDataReset_w) // kbd uart ddr switch (data reset) map(0x4a, 0x4a).mirror(0x7e10).w(m_kbduart, FUNC(ay31015_device::transmit)); // kbd uart data register
AM_RANGE(0x4e, 0x4f) AM_MIRROR(0x7e10) AM_WRITE(KeyChipReset_w) // kbd uart reset map(0x4c, 0x4d).mirror(0x7e10).w(this, FUNC(notetaker_state::KeyDataReset_w)); // kbd uart ddr switch (data reset)
AM_RANGE(0x60, 0x61) AM_MIRROR(0x7e1e) AM_WRITE(FIFOReg_w) // DAC sample and hold and frequency setup map(0x4e, 0x4f).mirror(0x7e10).w(this, FUNC(notetaker_state::KeyChipReset_w)); // kbd uart reset
map(0x60, 0x61).mirror(0x7e1e).w(this, FUNC(notetaker_state::FIFOReg_w)); // DAC sample and hold and frequency setup
//AM_RANGE(0xa0, 0xa1) AM_MIRROR(0x7e18) AM_DEVREADWRITE("debug8255", 8255_device, read, write) // debugger board 8255 //AM_RANGE(0xa0, 0xa1) AM_MIRROR(0x7e18) AM_DEVREADWRITE("debug8255", 8255_device, read, write) // debugger board 8255
AM_RANGE(0xc0, 0xc1) AM_MIRROR(0x7e1e) AM_WRITE(FIFOBus_w) // DAC data write to FIFO map(0xc0, 0xc1).mirror(0x7e1e).w(this, FUNC(notetaker_state::FIFOBus_w)); // DAC data write to FIFO
AM_RANGE(0x100, 0x101) AM_MIRROR(0x7e1e) AM_WRITE(DiskReg_w) // I/O register (adc speed, crtc pixel clock and clock enable, +5 and +12v relays for floppy, etc) map(0x100, 0x101).mirror(0x7e1e).w(this, FUNC(notetaker_state::DiskReg_w)); // I/O register (adc speed, crtc pixel clock and clock enable, +5 and +12v relays for floppy, etc)
AM_RANGE(0x120, 0x127) AM_MIRROR(0x7e18) AM_DEVREADWRITE8("wd1791", fd1791_device, read, write, 0x00FF) // floppy controller map(0x120, 0x127).mirror(0x7e18).rw(m_fdc, FUNC(fd1791_device::read), FUNC(fd1791_device::write)).umask16(0x00ff); // floppy controller
AM_RANGE(0x140, 0x15f) AM_MIRROR(0x7e00) AM_DEVREADWRITE8("crt5027", crt5027_device, read, write, 0x00FF) // crt controller map(0x140, 0x15f).mirror(0x7e00).rw(m_crtc, FUNC(crt5027_device::read), FUNC(crt5027_device::write)).umask16(0x00ff); // crt controller
AM_RANGE(0x160, 0x161) AM_MIRROR(0x7e1e) AM_WRITE(LoadDispAddr_w) // loads the start address for the display framebuffer map(0x160, 0x161).mirror(0x7e1e).w(this, FUNC(notetaker_state::LoadDispAddr_w)); // loads the start address for the display framebuffer
AM_RANGE(0x1a0, 0x1a1) AM_MIRROR(0x7e10) AM_READ(ReadEIAStatus_r) // read eia fifo state map(0x1a0, 0x1a1).mirror(0x7e10).r(this, FUNC(notetaker_state::ReadEIAStatus_r)); // read eia fifo state
AM_RANGE(0x1a2, 0x1a3) AM_MIRROR(0x7e10) AM_DEVREAD8("eiauart", ay31015_device, receive, 0x00ff) // read eia data map(0x1a2, 0x1a2).mirror(0x7e10).r(m_eiauart, FUNC(ay31015_device::receive)); // read eia data
AM_RANGE(0x1a8, 0x1a9) AM_MIRROR(0x7e10) AM_WRITE(LoadEIACtlReg_w) // eia uart control register map(0x1a8, 0x1a9).mirror(0x7e10).w(this, FUNC(notetaker_state::LoadEIACtlReg_w)); // eia uart control register
AM_RANGE(0x1aa, 0x1ab) AM_MIRROR(0x7e10) AM_DEVWRITE8("eiauart", ay31015_device, transmit, 0x00ff) // eia uart data register map(0x1aa, 0x1aa).mirror(0x7e10).w(m_eiauart, FUNC(ay31015_device::transmit)); // eia uart data register
AM_RANGE(0x1ac, 0x1ad) AM_MIRROR(0x7e10) AM_WRITE(EIADataReset_w) // eia uart ddr switch (data reset) map(0x1ac, 0x1ad).mirror(0x7e10).w(this, FUNC(notetaker_state::EIADataReset_w)); // eia uart ddr switch (data reset)
AM_RANGE(0x1ae, 0x1af) AM_MIRROR(0x7e10) AM_WRITE(EIAChipReset_w) // eia uart reset map(0x1ae, 0x1af).mirror(0x7e10).w(this, FUNC(notetaker_state::EIAChipReset_w)); // eia uart reset
//AM_RANGE(0x1c0, 0x1c1) AM_MIRROR(0x7e1e) AM_READ(SelADCHi_r) // ADC read //AM_RANGE(0x1c0, 0x1c1) AM_MIRROR(0x7e1e) AM_READ(SelADCHi_r) // ADC read
//AM_RANGE(0x1e0, 0x1e1) AM_MIRROR(0x7e1e) AM_READ(CRTSwitch_w) // CRT power enable? //AM_RANGE(0x1e0, 0x1e1) AM_MIRROR(0x7e1e) AM_READ(CRTSwitch_w) // CRT power enable?
ADDRESS_MAP_END }
/* iop_pic8259 interrupts: /* iop_pic8259 interrupts:
irq0 parity error (parity error syndrome data will be in fffdx/fffex) - currently ignored irq0 parity error (parity error syndrome data will be in fffdx/fffex) - currently ignored
@ -697,12 +699,13 @@ x x 1 1 1 1 1 1 1 1 1 1 1 1 1 0 1 1 0
x x 1 1 1 1 1 1 1 1 1 1 1 1 1 0 1 1 1 x x R FFFEE (Parity Error Address: row bits 15-8, column bits 7-0; reading this also acknowledges a parity interrupt) x x 1 1 1 1 1 1 1 1 1 1 1 1 1 0 1 1 1 x x R FFFEE (Parity Error Address: row bits 15-8, column bits 7-0; reading this also acknowledges a parity interrupt)
*/ */
ADDRESS_MAP_START(notetaker_state::ep_mem) void notetaker_state::ep_mem(address_map &map)
AM_RANGE(0x00000, 0x01fff) AM_MIRROR(0xc0000) AM_RAM // actually a banked block of ram, 8kb (4kw) {
AM_RANGE(0x02000, 0x3ffff) AM_MIRROR(0xc0000) AM_RAM AM_REGION("mainram", 0x2000) // 256k of ram (less 8k), shared between both processors, mirrored 4 times map(0x00000, 0x01fff).mirror(0xc0000).ram(); // actually a banked block of ram, 8kb (4kw)
map(0x02000, 0x3ffff).mirror(0xc0000).ram().region("mainram", 0x2000); // 256k of ram (less 8k), shared between both processors, mirrored 4 times
//AM_RANGE(0xfffc0, 0xfffdf) AM_MIRROR(0xc0000) AM_READWRITE(proc_illinst_r, proc_illinst_w) //AM_RANGE(0xfffc0, 0xfffdf) AM_MIRROR(0xc0000) AM_READWRITE(proc_illinst_r, proc_illinst_w)
//AM_RANGE(0xfffe0, 0xfffef) AM_MIRROR(0xc0000) AM_READWRITE(proc_control_r, proc_control_w) //AM_RANGE(0xfffe0, 0xfffef) AM_MIRROR(0xc0000) AM_READWRITE(proc_control_r, proc_control_w)
ADDRESS_MAP_END }
/* note everything in the emulatorcpu's io range is incompletely decoded; so if /* note everything in the emulatorcpu's io range is incompletely decoded; so if
0x1800 is accessed it will write to both the debug 8255 AND the pic8259! 0x1800 is accessed it will write to both the debug 8255 AND the pic8259!
@ -717,13 +720,14 @@ x x x x x x 1 x x x x x x x x x x x x
x x x x x 1 x x x x x x x x x x x x x x x W Writing anything here clears the parity error latch x x x x x 1 x x x x x x x x x x x x x x x W Writing anything here clears the parity error latch
*/ */
ADDRESS_MAP_START(notetaker_state::ep_io) void notetaker_state::ep_io(address_map &map)
ADDRESS_MAP_UNMAP_HIGH {
AM_RANGE(0x800, 0x803) AM_MIRROR(0x07fc) AM_DEVREADWRITE8("ep_pic8259", pic8259_device, read, write, 0x00ff) map.unmap_value_high();
map(0x800, 0x803).mirror(0x07fc).rw(m_ep_pic, FUNC(pic8259_device::read), FUNC(pic8259_device::write)).umask16(0x00ff);
//AM_RANGE(0x1000, 0x1001) AM_MIRROR(0x07fe) AM_DEVREADWRITE("debug8255", 8255_device, read, write) // debugger board 8255, is this the same one as the iop accesses? or are these two 8255s on separate cards? //AM_RANGE(0x1000, 0x1001) AM_MIRROR(0x07fe) AM_DEVREADWRITE("debug8255", 8255_device, read, write) // debugger board 8255, is this the same one as the iop accesses? or are these two 8255s on separate cards?
AM_RANGE(0x2000, 0x2001) AM_MIRROR(0x07fe) AM_WRITE(EPConReg_w) // emu processor control reg & leds map(0x2000, 0x2001).mirror(0x07fe).w(this, FUNC(notetaker_state::EPConReg_w)); // emu processor control reg & leds
//AM_RANGE(0x4000, 0x4001) AM_MIRROR(0x07fe) AM_WRITE(EmuClearParity_w) // writes here clear the local 8k-ram parity error register //AM_RANGE(0x4000, 0x4001) AM_MIRROR(0x07fe) AM_WRITE(EmuClearParity_w) // writes here clear the local 8k-ram parity error register
ADDRESS_MAP_END }
/* Input ports */ /* Input ports */

View File

@ -346,42 +346,43 @@ void pc8401a_state::pc8401a_io(address_map &map)
map.global_mask(0xff); map.global_mask(0xff);
} }
ADDRESS_MAP_START(pc8401a_state::pc8500_io) void pc8401a_state::pc8500_io(address_map &map)
ADDRESS_MAP_UNMAP_HIGH {
ADDRESS_MAP_GLOBAL_MASK(0xff) map.unmap_value_high();
AM_RANGE(0x00, 0x00) AM_READ_PORT("Y.0") map.global_mask(0xff);
AM_RANGE(0x01, 0x01) AM_READ_PORT("Y.1") map(0x00, 0x00).portr("Y.0");
AM_RANGE(0x02, 0x02) AM_READ_PORT("Y.2") map(0x01, 0x01).portr("Y.1");
AM_RANGE(0x03, 0x03) AM_READ_PORT("Y.3") map(0x02, 0x02).portr("Y.2");
AM_RANGE(0x04, 0x04) AM_READ_PORT("Y.4") map(0x03, 0x03).portr("Y.3");
AM_RANGE(0x05, 0x05) AM_READ_PORT("Y.5") map(0x04, 0x04).portr("Y.4");
AM_RANGE(0x06, 0x06) AM_READ_PORT("Y.6") map(0x05, 0x05).portr("Y.5");
AM_RANGE(0x07, 0x07) AM_READ_PORT("Y.7") map(0x06, 0x06).portr("Y.6");
AM_RANGE(0x08, 0x08) AM_READ_PORT("Y.8") map(0x07, 0x07).portr("Y.7");
AM_RANGE(0x09, 0x09) AM_READ_PORT("Y.9") map(0x08, 0x08).portr("Y.8");
AM_RANGE(0x10, 0x10) AM_WRITE(rtc_cmd_w) map(0x09, 0x09).portr("Y.9");
AM_RANGE(0x20, 0x20) AM_DEVREADWRITE(I8251_TAG, i8251_device, data_r, data_w) map(0x10, 0x10).w(this, FUNC(pc8401a_state::rtc_cmd_w));
AM_RANGE(0x21, 0x21) AM_DEVREADWRITE(I8251_TAG, i8251_device, status_r, control_w) map(0x20, 0x20).rw(I8251_TAG, FUNC(i8251_device::data_r), FUNC(i8251_device::data_w));
AM_RANGE(0x30, 0x30) AM_READWRITE(mmr_r, mmr_w) map(0x21, 0x21).rw(I8251_TAG, FUNC(i8251_device::status_r), FUNC(i8251_device::control_w));
map(0x30, 0x30).rw(this, FUNC(pc8401a_state::mmr_r), FUNC(pc8401a_state::mmr_w));
// AM_RANGE(0x31, 0x31) // AM_RANGE(0x31, 0x31)
AM_RANGE(0x40, 0x40) AM_READWRITE(rtc_r, rtc_ctrl_w) map(0x40, 0x40).rw(this, FUNC(pc8401a_state::rtc_r), FUNC(pc8401a_state::rtc_ctrl_w));
// AM_RANGE(0x41, 0x41) // AM_RANGE(0x41, 0x41)
// AM_RANGE(0x50, 0x51) // AM_RANGE(0x50, 0x51)
AM_RANGE(0x60, 0x60) AM_DEVREADWRITE(SED1330_TAG, sed1330_device, status_r, data_w) map(0x60, 0x60).rw(m_lcdc, FUNC(sed1330_device::status_r), FUNC(sed1330_device::data_w));
AM_RANGE(0x61, 0x61) AM_DEVREADWRITE(SED1330_TAG, sed1330_device, data_r, command_w) map(0x61, 0x61).rw(m_lcdc, FUNC(sed1330_device::data_r), FUNC(sed1330_device::command_w));
AM_RANGE(0x70, 0x70) AM_READWRITE(port70_r, port70_w) map(0x70, 0x70).rw(this, FUNC(pc8401a_state::port70_r), FUNC(pc8401a_state::port70_w));
AM_RANGE(0x71, 0x71) AM_READWRITE(port71_r, port71_w) map(0x71, 0x71).rw(this, FUNC(pc8401a_state::port71_r), FUNC(pc8401a_state::port71_w));
// AM_RANGE(0x80, 0x80) modem status, set to 0xff to boot // AM_RANGE(0x80, 0x80) modem status, set to 0xff to boot
// AM_RANGE(0x8b, 0x8b) // AM_RANGE(0x8b, 0x8b)
// AM_RANGE(0x90, 0x93) // AM_RANGE(0x90, 0x93)
// AM_RANGE(0xa0, 0xa1) // AM_RANGE(0xa0, 0xa1)
AM_RANGE(0x98, 0x98) AM_DEVWRITE(MC6845_TAG, mc6845_device, address_w) map(0x98, 0x98).w(m_crtc, FUNC(mc6845_device::address_w));
AM_RANGE(0x99, 0x99) AM_DEVREADWRITE(MC6845_TAG, mc6845_device, register_r, register_w) map(0x99, 0x99).rw(m_crtc, FUNC(mc6845_device::register_r), FUNC(mc6845_device::register_w));
AM_RANGE(0xb0, 0xb3) AM_WRITE(io_rom_addr_w) map(0xb0, 0xb3).w(this, FUNC(pc8401a_state::io_rom_addr_w));
AM_RANGE(0xb3, 0xb3) AM_READ(io_rom_data_r) map(0xb3, 0xb3).r(this, FUNC(pc8401a_state::io_rom_data_r));
// AM_RANGE(0xc8, 0xc8) // AM_RANGE(0xc8, 0xc8)
AM_RANGE(0xfc, 0xff) AM_DEVREADWRITE(I8255A_TAG, i8255_device, read, write) map(0xfc, 0xff).rw(I8255A_TAG, FUNC(i8255_device::read), FUNC(i8255_device::write));
ADDRESS_MAP_END }
/* Input Ports */ /* Input Ports */

View File

@ -1334,10 +1334,11 @@ TIMER_CALLBACK_MEMBER(pc88va_state::pc8801fd_upd765_tc_to_zero)
/* FDC subsytem CPU */ /* FDC subsytem CPU */
#if TEST_SUBFDC #if TEST_SUBFDC
ADDRESS_MAP_START(pc88va_state::pc88va_z80_map) void pc88va_state::pc88va_z80_map(address_map &map)
AM_RANGE(0x0000, 0x1fff) AM_ROM {
AM_RANGE(0x4000, 0x7fff) AM_RAM map(0x0000, 0x1fff).rom();
ADDRESS_MAP_END map(0x4000, 0x7fff).ram();
}
READ8_MEMBER(pc88va_state::upd765_tc_r) READ8_MEMBER(pc88va_state::upd765_tc_r)
{ {
@ -1357,14 +1358,15 @@ WRITE8_MEMBER(pc88va_state::upd765_mc_w)
machine().device<floppy_connector>("upd765:1")->get_device()->mon_w(!(data & 2)); machine().device<floppy_connector>("upd765:1")->get_device()->mon_w(!(data & 2));
} }
ADDRESS_MAP_START(pc88va_state::pc88va_z80_io_map) void pc88va_state::pc88va_z80_io_map(address_map &map)
ADDRESS_MAP_GLOBAL_MASK(0xff) {
AM_RANGE(0xf0, 0xf0) AM_WRITE(fdc_irq_vector_w) // Interrupt Opcode Port map.global_mask(0xff);
map(0xf0, 0xf0).w(this, FUNC(pc88va_state::fdc_irq_vector_w)); // Interrupt Opcode Port
// AM_RANGE(0xf4, 0xf4) // Drive Control Port // AM_RANGE(0xf4, 0xf4) // Drive Control Port
AM_RANGE(0xf8, 0xf8) AM_READWRITE(upd765_tc_r,upd765_mc_w) // (R) Terminal Count Port (W) Motor Control Port map(0xf8, 0xf8).rw(this, FUNC(pc88va_state::upd765_tc_r), FUNC(pc88va_state::upd765_mc_w)); // (R) Terminal Count Port (W) Motor Control Port
AM_RANGE(0xfa, 0xfb) AM_DEVICE("upd765", upd765a_device, map ) map(0xfa, 0xfb).m(m_fdc, FUNC(upd765a_device::map));
AM_RANGE(0xfc, 0xff) AM_DEVREADWRITE("d8255_2s", i8255_device, read, write) map(0xfc, 0xff).rw("d8255_2s", FUNC(i8255_device::read), FUNC(i8255_device::write));
ADDRESS_MAP_END }
#endif #endif
/* TODO: active low or active high? */ /* TODO: active low or active high? */

View File

@ -1103,50 +1103,55 @@ PCI Mem = 08000000-09FFFFFF
*/ */
ADDRESS_MAP_START(seattle_state::seattle_cs0_map) void seattle_state::seattle_cs0_map(address_map &map)
ADDRESS_MAP_END {
}
ADDRESS_MAP_START(seattle_state::seattle_cs1_map) void seattle_state::seattle_cs1_map(address_map &map)
AM_RANGE(0x01000000, 0x01000003) AM_WRITE(asic_fifo_w) {
ADDRESS_MAP_END map(0x01000000, 0x01000003).w(this, FUNC(seattle_state::asic_fifo_w));
}
ADDRESS_MAP_START(seattle_state::seattle_cs2_map) void seattle_state::seattle_cs2_map(address_map &map)
AM_RANGE(0x00000000, 0x00000003) AM_READWRITE(analog_port_r, analog_port_w) // Flagstaff only {
ADDRESS_MAP_END map(0x00000000, 0x00000003).rw(this, FUNC(seattle_state::analog_port_r), FUNC(seattle_state::analog_port_w)); // Flagstaff only
}
// This map shares the PHOENIX, SEATTLE, and SEATTLE_WIDGET calls // This map shares the PHOENIX, SEATTLE, and SEATTLE_WIDGET calls
ADDRESS_MAP_START(seattle_state::seattle_cs3_map) void seattle_state::seattle_cs3_map(address_map &map)
AM_RANGE(0x00000000, 0x0000003f) AM_DEVREADWRITE("ioasic", midway_ioasic_device, read, write) {
AM_RANGE(0x00100000, 0x0011ffff) AM_READWRITE(cmos_r, cmos_w) map(0x00000000, 0x0000003f).rw(m_ioasic, FUNC(midway_ioasic_device::read), FUNC(midway_ioasic_device::write));
AM_RANGE(0x00800000, 0x0080001f) AM_READWRITE(carnevil_gun_r, carnevil_gun_w) // Carnevil driver only map(0x00100000, 0x0011ffff).rw(this, FUNC(seattle_state::cmos_r), FUNC(seattle_state::cmos_w));
AM_RANGE(0x00c00000, 0x00c0001f) AM_READWRITE(widget_r, widget_w); // Seattle widget only map(0x00800000, 0x0080001f).rw(this, FUNC(seattle_state::carnevil_gun_r), FUNC(seattle_state::carnevil_gun_w)); // Carnevil driver only
AM_RANGE(0x01000000, 0x01000003) AM_READWRITE(cmos_protect_r, cmos_protect_w) map(0x00c00000, 0x00c0001f).rw(this, FUNC(seattle_state::widget_r), FUNC(seattle_state::widget_w)); // Seattle widget only
AM_RANGE(0x01100000, 0x01100003) AM_WRITE(seattle_watchdog_w) map(0x01000000, 0x01000003).rw(this, FUNC(seattle_state::cmos_protect_r), FUNC(seattle_state::cmos_protect_w));
AM_RANGE(0x01300000, 0x01300003) AM_READWRITE(seattle_interrupt_enable_r, seattle_interrupt_enable_w) map(0x01100000, 0x01100003).w(this, FUNC(seattle_state::seattle_watchdog_w));
AM_RANGE(0x01400000, 0x01400003) AM_READWRITE(interrupt_config_r, interrupt_config_w) map(0x01300000, 0x01300003).rw(this, FUNC(seattle_state::seattle_interrupt_enable_r), FUNC(seattle_state::seattle_interrupt_enable_w));
AM_RANGE(0x01500000, 0x01500003) AM_READ(interrupt_state_r) map(0x01400000, 0x01400003).rw(this, FUNC(seattle_state::interrupt_config_r), FUNC(seattle_state::interrupt_config_w));
AM_RANGE(0x01600000, 0x01600003) AM_READ(interrupt_state2_r) map(0x01500000, 0x01500003).r(this, FUNC(seattle_state::interrupt_state_r));
AM_RANGE(0x01700000, 0x01700003) AM_WRITE(vblank_clear_w) map(0x01600000, 0x01600003).r(this, FUNC(seattle_state::interrupt_state2_r));
AM_RANGE(0x01800000, 0x01800003) AM_NOP map(0x01700000, 0x01700003).w(this, FUNC(seattle_state::vblank_clear_w));
AM_RANGE(0x01900000, 0x01900003) AM_READWRITE(status_leds_r, status_leds_w) map(0x01800000, 0x01800003).noprw();
AM_RANGE(0x01f00000, 0x01f00003) AM_READWRITE(asic_reset_r, asic_reset_w) map(0x01900000, 0x01900003).rw(this, FUNC(seattle_state::status_leds_r), FUNC(seattle_state::status_leds_w));
ADDRESS_MAP_END map(0x01f00000, 0x01f00003).rw(this, FUNC(seattle_state::asic_reset_r), FUNC(seattle_state::asic_reset_w));
}
ADDRESS_MAP_START(seattle_state::seattle_flagstaff_cs3_map) void seattle_state::seattle_flagstaff_cs3_map(address_map &map)
AM_RANGE(0x00000000, 0x0000003f) AM_DEVREADWRITE("ioasic", midway_ioasic_device, read, write) {
AM_RANGE(0x00100000, 0x0011ffff) AM_READWRITE(cmos_r, cmos_w) map(0x00000000, 0x0000003f).rw(m_ioasic, FUNC(midway_ioasic_device::read), FUNC(midway_ioasic_device::write));
AM_RANGE(0x00c00000, 0x00c0003f) AM_READWRITE(ethernet_r, ethernet_w); map(0x00100000, 0x0011ffff).rw(this, FUNC(seattle_state::cmos_r), FUNC(seattle_state::cmos_w));
AM_RANGE(0x01000000, 0x01000003) AM_READWRITE(cmos_protect_r, cmos_protect_w) map(0x00c00000, 0x00c0003f).rw(this, FUNC(seattle_state::ethernet_r), FUNC(seattle_state::ethernet_w));
AM_RANGE(0x01100000, 0x01100003) AM_WRITE(seattle_watchdog_w) map(0x01000000, 0x01000003).rw(this, FUNC(seattle_state::cmos_protect_r), FUNC(seattle_state::cmos_protect_w));
AM_RANGE(0x01300000, 0x01300003) AM_READWRITE(seattle_interrupt_enable_r, seattle_interrupt_enable_w) map(0x01100000, 0x01100003).w(this, FUNC(seattle_state::seattle_watchdog_w));
AM_RANGE(0x01400000, 0x01400003) AM_READWRITE(interrupt_config_r, interrupt_config_w) map(0x01300000, 0x01300003).rw(this, FUNC(seattle_state::seattle_interrupt_enable_r), FUNC(seattle_state::seattle_interrupt_enable_w));
AM_RANGE(0x01500000, 0x01500003) AM_READ(interrupt_state_r) map(0x01400000, 0x01400003).rw(this, FUNC(seattle_state::interrupt_config_r), FUNC(seattle_state::interrupt_config_w));
AM_RANGE(0x01600000, 0x01600003) AM_READ(interrupt_state2_r) map(0x01500000, 0x01500003).r(this, FUNC(seattle_state::interrupt_state_r));
AM_RANGE(0x01700000, 0x01700003) AM_WRITE(vblank_clear_w) map(0x01600000, 0x01600003).r(this, FUNC(seattle_state::interrupt_state2_r));
AM_RANGE(0x01800000, 0x01800003) AM_NOP map(0x01700000, 0x01700003).w(this, FUNC(seattle_state::vblank_clear_w));
AM_RANGE(0x01900000, 0x01900003) AM_READWRITE(status_leds_r, status_leds_w) map(0x01800000, 0x01800003).noprw();
AM_RANGE(0x01f00000, 0x01f00003) AM_READWRITE(asic_reset_r, asic_reset_w) map(0x01900000, 0x01900003).rw(this, FUNC(seattle_state::status_leds_r), FUNC(seattle_state::status_leds_w));
ADDRESS_MAP_END map(0x01f00000, 0x01f00003).rw(this, FUNC(seattle_state::asic_reset_r), FUNC(seattle_state::asic_reset_w));
}
/************************************* /*************************************
* *

View File

@ -1129,30 +1129,33 @@ void segas32_state::system32_sound_portmap(address_map &map)
} }
ADDRESS_MAP_START(segas32_state::multi32_sound_map) void segas32_state::multi32_sound_map(address_map &map)
AM_RANGE(0x0000, 0x9fff) AM_ROM AM_REGION("soundcpu", 0) {
AM_RANGE(0xa000, 0xbfff) AM_ROMBANK("bank1") map(0x0000, 0x9fff).rom().region("soundcpu", 0);
AM_RANGE(0xc000, 0xdfff) AM_DEVREADWRITE("sega", multipcm_device, read, write) map(0xa000, 0xbfff).bankr("bank1");
AM_RANGE(0xe000, 0xffff) AM_RAM AM_SHARE("z80_shared_ram") map(0xc000, 0xdfff).rw("sega", FUNC(multipcm_device::read), FUNC(multipcm_device::write));
ADDRESS_MAP_END map(0xe000, 0xffff).ram().share("z80_shared_ram");
}
ADDRESS_MAP_START(segas32_state::multi32_sound_portmap) void segas32_state::multi32_sound_portmap(address_map &map)
ADDRESS_MAP_UNMAP_HIGH {
ADDRESS_MAP_GLOBAL_MASK(0xff) map.unmap_value_high();
AM_RANGE(0x80, 0x83) AM_MIRROR(0x0c) AM_DEVREADWRITE("ymsnd", ym3438_device, read, write) map.global_mask(0xff);
AM_RANGE(0xa0, 0xaf) AM_WRITE(sound_bank_lo_w) map(0x80, 0x83).mirror(0x0c).rw("ymsnd", FUNC(ym3438_device::read), FUNC(ym3438_device::write));
AM_RANGE(0xb0, 0xbf) AM_WRITE(multipcm_bank_w) map(0xa0, 0xaf).w(this, FUNC(segas32_state::sound_bank_lo_w));
AM_RANGE(0xc0, 0xcf) AM_WRITE(sound_int_control_lo_w) map(0xb0, 0xbf).w(this, FUNC(segas32_state::multipcm_bank_w));
AM_RANGE(0xd0, 0xd3) AM_MIRROR(0x04) AM_WRITE(sound_int_control_hi_w) map(0xc0, 0xcf).w(this, FUNC(segas32_state::sound_int_control_lo_w));
AM_RANGE(0xf1, 0xf1) AM_READWRITE(sound_dummy_r, sound_dummy_w) map(0xd0, 0xd3).mirror(0x04).w(this, FUNC(segas32_state::sound_int_control_hi_w));
ADDRESS_MAP_END map(0xf1, 0xf1).rw(this, FUNC(segas32_state::sound_dummy_r), FUNC(segas32_state::sound_dummy_w));
}
ADDRESS_MAP_START(segas32_state::multipcm_map) void segas32_state::multipcm_map(address_map &map)
AM_RANGE(0x000000, 0x0fffff) AM_ROM {
AM_RANGE(0x100000, 0x17ffff) AM_ROMBANK("multipcmbanklo") map(0x000000, 0x0fffff).rom();
AM_RANGE(0x180000, 0x1fffff) AM_ROMBANK("multipcmbankhi") map(0x100000, 0x17ffff).bankr("multipcmbanklo");
ADDRESS_MAP_END map(0x180000, 0x1fffff).bankr("multipcmbankhi");
}
/************************************* /*************************************
* *
@ -1160,11 +1163,12 @@ ADDRESS_MAP_END
* *
*************************************/ *************************************/
ADDRESS_MAP_START(segas32_state::v25_map) void segas32_state::v25_map(address_map &map)
AM_RANGE(0x00000, 0x0ffff) AM_ROM AM_REGION("mcu", 0) {
AM_RANGE(0x10000, 0x1ffff) AM_DEVREADWRITE("dpram", mb8421_device, left_r, left_w) map(0x00000, 0x0ffff).rom().region("mcu", 0);
AM_RANGE(0xf0000, 0xfffff) AM_ROM AM_REGION("mcu", 0) map(0x10000, 0x1ffff).rw("dpram", FUNC(mb8421_device::left_r), FUNC(mb8421_device::left_w));
ADDRESS_MAP_END map(0xf0000, 0xfffff).rom().region("mcu", 0);
}
/************************************* /*************************************
@ -1173,13 +1177,15 @@ ADDRESS_MAP_END
* *
*************************************/ *************************************/
ADDRESS_MAP_START(segas32_state::upd7725_prg_map) void segas32_state::upd7725_prg_map(address_map &map)
AM_RANGE(0x0000, 0x07ff) AM_ROM AM_REGION("dspprg", 0) {
ADDRESS_MAP_END map(0x0000, 0x07ff).rom().region("dspprg", 0);
}
ADDRESS_MAP_START(segas32_state::upd7725_data_map) void segas32_state::upd7725_data_map(address_map &map)
AM_RANGE(0x0000, 0x03ff) AM_ROM AM_REGION("dspdata", 0) {
ADDRESS_MAP_END map(0x0000, 0x03ff).rom().region("dspdata", 0);
}
/************************************* /*************************************
@ -2254,11 +2260,12 @@ segas32_regular_state::segas32_regular_state(const machine_config &mconfig, cons
ADDRESS_MAP_START(segas32_state::system32_analog_map) void segas32_state::system32_analog_map(address_map &map)
ADDRESS_MAP_UNMAP_HIGH {
AM_IMPORT_FROM(system32_map) map.unmap_value_high();
AM_RANGE(0xc00050, 0xc00057) AM_MIRROR(0x0fff80) AM_DEVREADWRITE8("adc", msm6253_device, d7_r, address_w, 0x00ff) system32_map(map);
ADDRESS_MAP_END map(0xc00050, 0xc00057).mirror(0x0fff80).rw("adc", FUNC(msm6253_device::d7_r), FUNC(msm6253_device::address_w)).umask16(0x00ff);
}
MACHINE_CONFIG_START(segas32_analog_state::device_add_mconfig) MACHINE_CONFIG_START(segas32_analog_state::device_add_mconfig)
segas32_state::device_add_mconfig(config); segas32_state::device_add_mconfig(config);
@ -2331,11 +2338,12 @@ segas32_trackball_state::segas32_trackball_state(const machine_config &mconfig,
ADDRESS_MAP_START(segas32_state::system32_4player_map) void segas32_state::system32_4player_map(address_map &map)
ADDRESS_MAP_UNMAP_HIGH {
AM_IMPORT_FROM(system32_map) map.unmap_value_high();
AM_RANGE(0xc00060, 0xc00067) AM_MIRROR(0x0fff80) AM_DEVREADWRITE8("ppi", i8255_device, read, write, 0x00ff) system32_map(map);
ADDRESS_MAP_END map(0xc00060, 0xc00067).mirror(0x0fff80).rw("ppi", FUNC(i8255_device::read), FUNC(i8255_device::write)).umask16(0x00ff);
}
MACHINE_CONFIG_START(segas32_4player_state::device_add_mconfig) MACHINE_CONFIG_START(segas32_4player_state::device_add_mconfig)
segas32_state::device_add_mconfig(config); segas32_state::device_add_mconfig(config);
@ -2365,11 +2373,12 @@ segas32_4player_state::segas32_4player_state(const machine_config &mconfig, devi
ADDRESS_MAP_START(segas32_state::ga2_main_map) void segas32_state::ga2_main_map(address_map &map)
ADDRESS_MAP_UNMAP_HIGH {
AM_IMPORT_FROM(system32_4player_map) map.unmap_value_high();
AM_RANGE(0xa00000, 0xa00fff) AM_DEVREADWRITE8("dpram", mb8421_device, right_r, right_w, 0x00ff) system32_4player_map(map);
ADDRESS_MAP_END map(0xa00000, 0xa00fff).rw("dpram", FUNC(mb8421_device::right_r), FUNC(mb8421_device::right_w)).umask16(0x00ff);
}
MACHINE_CONFIG_START(segas32_v25_state::device_add_mconfig) MACHINE_CONFIG_START(segas32_v25_state::device_add_mconfig)
segas32_4player_state::device_add_mconfig(config); segas32_4player_state::device_add_mconfig(config);
@ -2442,16 +2451,17 @@ WRITE_LINE_MEMBER(segas32_cd_state::scsi_drq_w)
printf("%02x DRQ\n",state); printf("%02x DRQ\n",state);
} }
ADDRESS_MAP_START(segas32_state::system32_cd_map) void segas32_state::system32_cd_map(address_map &map)
ADDRESS_MAP_UNMAP_HIGH {
AM_IMPORT_FROM(system32_map) map.unmap_value_high();
system32_map(map);
#if S32_KOKOROJI_TEST_CD #if S32_KOKOROJI_TEST_CD
AM_RANGE(0xc00040, 0xc0005f) AM_MIRROR(0x0fff80) AM_DEVREADWRITE8("mb89352", mb89352_device, mb89352_r, mb89352_w, 0x00ff) map(0xc00040, 0xc0005f).mirror(0x0fff80).rw("mb89352", FUNC(mb89352_device::mb89352_r), FUNC(mb89352_device::mb89352_w)).umask16(0x00ff);
#else #else
AM_RANGE(0xc00040, 0xc0005f) AM_MIRROR(0x0fff80) AM_NOP map(0xc00040, 0xc0005f).mirror(0x0fff80).noprw();
#endif #endif
AM_RANGE(0xc00060, 0xc0006f) AM_MIRROR(0x0fff80) AM_DEVREADWRITE8("cxdio", cxd1095_device, read, write, 0x00ff) map(0xc00060, 0xc0006f).mirror(0x0fff80).rw("cxdio", FUNC(cxd1095_device::read), FUNC(cxd1095_device::write)).umask16(0x00ff);
ADDRESS_MAP_END }
void segas32_cd_state::cdrom_config(device_t *device) void segas32_cd_state::cdrom_config(device_t *device)
{ {
@ -2623,12 +2633,13 @@ sega_multi32_analog_state::sega_multi32_analog_state(const machine_config &mconf
} }
ADDRESS_MAP_START(segas32_state::multi32_6player_map) void segas32_state::multi32_6player_map(address_map &map)
ADDRESS_MAP_UNMAP_HIGH {
ADDRESS_MAP_GLOBAL_MASK(0xffffff) map.unmap_value_high();
AM_IMPORT_FROM(multi32_map) map.global_mask(0xffffff);
AM_RANGE(0xc00060, 0xc00067) AM_MIRROR(0x07ff80) AM_DEVREADWRITE8("ppi", i8255_device, read, write, 0x00ff00ff) multi32_map(map);
ADDRESS_MAP_END map(0xc00060, 0xc00067).mirror(0x07ff80).rw("ppi", FUNC(i8255_device::read), FUNC(i8255_device::write)).umask32(0x00ff00ff);
}
MACHINE_CONFIG_START(sega_multi32_6player_state::device_add_mconfig) MACHINE_CONFIG_START(sega_multi32_6player_state::device_add_mconfig)
sega_multi32_state::device_add_mconfig(config); sega_multi32_state::device_add_mconfig(config);

View File

@ -990,9 +990,10 @@ void segaxbd_state::main_map(address_map &map)
map(0x3fc000, 0x3fffff).ram().share("backup2"); map(0x3fc000, 0x3fffff).ram().share("backup2");
} }
ADDRESS_MAP_START(segaxbd_state::decrypted_opcodes_map) void segaxbd_state::decrypted_opcodes_map(address_map &map)
AM_RANGE(0x00000, 0xfffff) AM_ROMBANK("fd1094_decrypted_opcodes") {
ADDRESS_MAP_END map(0x00000, 0xfffff).bankr("fd1094_decrypted_opcodes");
}
//************************************************************************** //**************************************************************************
// SUB CPU ADDRESS MAPS // SUB CPU ADDRESS MAPS
@ -1044,18 +1045,20 @@ void segaxbd_state::sound_portmap(address_map &map)
// Sound Board // Sound Board
// The extra sound is used when the cabinet is Deluxe(Air Drive), or Cockpit. The soundlatch is // The extra sound is used when the cabinet is Deluxe(Air Drive), or Cockpit. The soundlatch is
// shared with the main board sound. // shared with the main board sound.
ADDRESS_MAP_START(segaxbd_state::smgp_sound2_map) void segaxbd_state::smgp_sound2_map(address_map &map)
ADDRESS_MAP_UNMAP_HIGH {
AM_RANGE(0x0000, 0xefff) AM_ROM map.unmap_value_high();
AM_RANGE(0xf000, 0xf0ff) AM_MIRROR(0x0700) AM_DEVREADWRITE("pcm2", segapcm_device, sega_pcm_r, sega_pcm_w) map(0x0000, 0xefff).rom();
AM_RANGE(0xf800, 0xffff) AM_RAM map(0xf000, 0xf0ff).mirror(0x0700).rw("pcm2", FUNC(segapcm_device::sega_pcm_r), FUNC(segapcm_device::sega_pcm_w));
ADDRESS_MAP_END map(0xf800, 0xffff).ram();
}
ADDRESS_MAP_START(segaxbd_state::smgp_sound2_portmap) void segaxbd_state::smgp_sound2_portmap(address_map &map)
ADDRESS_MAP_UNMAP_HIGH {
ADDRESS_MAP_GLOBAL_MASK(0xff) map.unmap_value_high();
AM_RANGE(0x40, 0x40) AM_MIRROR(0x3f) AM_READ(sound_data_r) map.global_mask(0xff);
ADDRESS_MAP_END map(0x40, 0x40).mirror(0x3f).r(this, FUNC(segaxbd_state::sound_data_r));
}
@ -1064,18 +1067,20 @@ ADDRESS_MAP_END
//************************************************************************** //**************************************************************************
// Motor Board, not yet emulated // Motor Board, not yet emulated
ADDRESS_MAP_START(segaxbd_state::smgp_airdrive_map) void segaxbd_state::smgp_airdrive_map(address_map &map)
ADDRESS_MAP_UNMAP_HIGH {
AM_RANGE(0x0000, 0x7fff) AM_ROM map.unmap_value_high();
AM_RANGE(0x8000, 0xafff) AM_RAM map(0x0000, 0x7fff).rom();
ADDRESS_MAP_END map(0x8000, 0xafff).ram();
}
ADDRESS_MAP_START(segaxbd_state::smgp_airdrive_portmap) void segaxbd_state::smgp_airdrive_portmap(address_map &map)
ADDRESS_MAP_UNMAP_HIGH {
ADDRESS_MAP_GLOBAL_MASK(0xff) map.unmap_value_high();
AM_RANGE(0x01, 0x01) AM_READNOP map.global_mask(0xff);
AM_RANGE(0x02, 0x03) AM_NOP map(0x01, 0x01).nopr();
ADDRESS_MAP_END map(0x02, 0x03).noprw();
}
@ -1084,17 +1089,19 @@ ADDRESS_MAP_END
//************************************************************************** //**************************************************************************
// Link Board, not yet emulated // Link Board, not yet emulated
ADDRESS_MAP_START(segaxbd_state::smgp_comm_map) void segaxbd_state::smgp_comm_map(address_map &map)
ADDRESS_MAP_UNMAP_HIGH {
AM_RANGE(0x0000, 0x1fff) AM_ROM map.unmap_value_high();
AM_RANGE(0x2000, 0x3fff) AM_RAM map(0x0000, 0x1fff).rom();
AM_RANGE(0x4000, 0x47ff) AM_RAM // MB8421 Dual-Port SRAM map(0x2000, 0x3fff).ram();
ADDRESS_MAP_END map(0x4000, 0x47ff).ram(); // MB8421 Dual-Port SRAM
}
ADDRESS_MAP_START(segaxbd_state::smgp_comm_portmap) void segaxbd_state::smgp_comm_portmap(address_map &map)
ADDRESS_MAP_UNMAP_HIGH {
ADDRESS_MAP_GLOBAL_MASK(0xff) map.unmap_value_high();
ADDRESS_MAP_END map.global_mask(0xff);
}
@ -1103,16 +1110,18 @@ ADDRESS_MAP_END
//************************************************************************** //**************************************************************************
// Z80, unknown function // Z80, unknown function
ADDRESS_MAP_START(segaxbd_state::rascot_z80_map) void segaxbd_state::rascot_z80_map(address_map &map)
ADDRESS_MAP_UNMAP_HIGH {
AM_RANGE(0x0000, 0x7fff) AM_ROM map.unmap_value_high();
AM_RANGE(0x8000, 0xafff) AM_RAM map(0x0000, 0x7fff).rom();
ADDRESS_MAP_END map(0x8000, 0xafff).ram();
}
ADDRESS_MAP_START(segaxbd_state::rascot_z80_portmap) void segaxbd_state::rascot_z80_portmap(address_map &map)
ADDRESS_MAP_UNMAP_HIGH {
ADDRESS_MAP_GLOBAL_MASK(0xff) map.unmap_value_high();
ADDRESS_MAP_END map.global_mask(0xff);
}

View File

@ -194,13 +194,13 @@ void sg1000_state::sc3000_io_map(address_map &map)
} }
/* This is how the I/O ports are really mapped, but MAME does not support overlapping ranges /* This is how the I/O ports are really mapped, but MAME does not support overlapping ranges
ADDRESS_MAP_START(sg1000_state::sc3000_io_map) void sg1000_state::sc3000_io_map(address_map &map)
ADDRESS_MAP_GLOBAL_MASK(0xff) map.global_mask(0xff);
map(0x00, 0x00) AM_MIRROR(0xdf) AM_DEVREADWRITE(UPD9255_TAG, i8255_device, read, write) map(0x00, 0x00).mirror(0xdf).rw(UPD9255_TAG, FUNC(i8255_device::read), FUNC(i8255_device::write));
map(0x00, 0x00) AM_MIRROR(0x7f) AM_DEVWRITE(SN76489AN_TAG, sn76489a_device, write) map(0x00, 0x00).mirror(0x7f).w(SN76489AN_TAG, FUNC(sn76489a_device::write));
map(0x00, 0x00) AM_MIRROR(0xae) AM_DEVREADWRITE(TMS9918A_TAG, tms9918a_device, vram_read, vram_write) map(0x00, 0x00).mirror(0xae).rw(TMS9918A_TAG, FUNC(tms9918a_device::vram_read), FUNC(tms9918a_device::vram_write));
map(0x01, 0x01) AM_MIRROR(0xae) AM_DEVREADWRITE(TMS9918A_TAG, tms9918a_device, register_read, register_write) map(0x01, 0x01).mirror(0xae).rw(TMS9918A_TAG, FUNC(tms9918a_device::register_read), FUNC(tms9918a_device::register_write));
map(0x60, 0x60) AM_MIRROR(0x9f) AM_READ(sc3000_r_r) map(0x60, 0x60).mirror(0x9f).r(this, FUNC(sg1000_state::sc3000_r_r));
ADDRESS_MAP_END ADDRESS_MAP_END
*/ */

View File

@ -979,15 +979,16 @@ MACHINE_START_MEMBER(hotsmash_state, pbillian)
} }
ADDRESS_MAP_START(superqix_state_base::main_map) void superqix_state_base::main_map(address_map &map)
AM_RANGE(0x0000, 0x7fff) AM_ROM {
AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("bank1") map(0x0000, 0x7fff).rom();
map(0x8000, 0xbfff).bankr("bank1");
// the following four ranges are part of a single 6264 64Kibit SRAM chip, called 'VRAM' in POST // the following four ranges are part of a single 6264 64Kibit SRAM chip, called 'VRAM' in POST
AM_RANGE(0xe000, 0xe0ff) AM_RAM AM_SHARE("spriteram") map(0xe000, 0xe0ff).ram().share("spriteram");
AM_RANGE(0xe100, 0xe7ff) AM_RAM map(0xe100, 0xe7ff).ram();
AM_RANGE(0xe800, 0xefff) AM_RAM_WRITE(superqix_videoram_w) AM_SHARE("videoram") map(0xe800, 0xefff).ram().w(this, FUNC(superqix_state_base::superqix_videoram_w)).share("videoram");
AM_RANGE(0xf000, 0xffff) AM_RAM map(0xf000, 0xffff).ram();
ADDRESS_MAP_END }
void hotsmash_state::pbillian_port_map(address_map &map) void hotsmash_state::pbillian_port_map(address_map &map)
{ // used by both pbillian and hotsmash { // used by both pbillian and hotsmash

View File

@ -362,12 +362,13 @@ void trs80m16_state::m16_z80_io(address_map &map)
// ADDRESS_MAP( m68000_mem ) // ADDRESS_MAP( m68000_mem )
//------------------------------------------------- //-------------------------------------------------
ADDRESS_MAP_START(trs80m2_state::m68000_mem) void trs80m2_state::m68000_mem(address_map &map)
{
// AM_RANGE(0x7800d0, 0x7800d1) 9519A (C/D = UDS) // AM_RANGE(0x7800d0, 0x7800d1) 9519A (C/D = UDS)
// AM_RANGE(0x7800d2, 0x7800d3) limit/offset 2 // AM_RANGE(0x7800d2, 0x7800d3) limit/offset 2
// AM_RANGE(0x7800d4, 0x7800d5) limit/offset 1 // AM_RANGE(0x7800d4, 0x7800d5) limit/offset 1
// AM_RANGE(0x7800d6, 0x7800d7) Z80 IRQ // AM_RANGE(0x7800d6, 0x7800d7) Z80 IRQ
ADDRESS_MAP_END }

View File

@ -1666,45 +1666,52 @@ INPUT_PORTS_END
* Memory maps * Memory maps
* *
*************************************/ *************************************/
ADDRESS_MAP_START(vegas_state::vegas_cs2_map) void vegas_state::vegas_cs2_map(address_map &map)
AM_RANGE(0x00000000, 0x00007003) AM_READWRITE8(sio_r, sio_w, 0xffffffff) {
ADDRESS_MAP_END map(0x00000000, 0x00007003).rw(this, FUNC(vegas_state::sio_r), FUNC(vegas_state::sio_w));
}
ADDRESS_MAP_START(vegas_state::vegas_cs3_map) void vegas_state::vegas_cs3_map(address_map &map)
AM_RANGE(0x00000000, 0x00000003) AM_READWRITE(analog_port_r, analog_port_w) {
map(0x00000000, 0x00000003).rw(this, FUNC(vegas_state::analog_port_r), FUNC(vegas_state::analog_port_w));
//AM_RANGE(0x00001000, 0x00001003) AM_READWRITE(lcd_r, lcd_w) //AM_RANGE(0x00001000, 0x00001003) AM_READWRITE(lcd_r, lcd_w)
ADDRESS_MAP_END }
ADDRESS_MAP_START(vegas_state::vegas_cs4_map) void vegas_state::vegas_cs4_map(address_map &map)
AM_RANGE(0x00000000, 0x00007fff) AM_READWRITE(timekeeper_r, timekeeper_w) {
ADDRESS_MAP_END map(0x00000000, 0x00007fff).rw(this, FUNC(vegas_state::timekeeper_r), FUNC(vegas_state::timekeeper_w));
}
ADDRESS_MAP_START(vegas_state::vegas_cs5_map) void vegas_state::vegas_cs5_map(address_map &map)
AM_RANGE(0x00000000, 0x00000003) AM_READWRITE8(cpu_io_r, cpu_io_w, 0xffffffff) {
AM_RANGE(0x00100000, 0x001fffff) AM_READ(unknown_r) map(0x00000000, 0x00000003).rw(this, FUNC(vegas_state::cpu_io_r), FUNC(vegas_state::cpu_io_w));
ADDRESS_MAP_END map(0x00100000, 0x001fffff).r(this, FUNC(vegas_state::unknown_r));
}
ADDRESS_MAP_START(vegas_state::vegas_cs6_map) void vegas_state::vegas_cs6_map(address_map &map)
AM_RANGE(0x00000000, 0x0000003f) AM_DEVREADWRITE("ioasic", midway_ioasic_device, packed_r, packed_w) {
AM_RANGE(0x00001000, 0x00001003) AM_WRITE(asic_fifo_w) map(0x00000000, 0x0000003f).rw(m_ioasic, FUNC(midway_ioasic_device::packed_r), FUNC(midway_ioasic_device::packed_w));
AM_RANGE(0x00003000, 0x00003003) AM_WRITE(dcs3_fifo_full_w) // if (m_dcs_idma_cs != 0) map(0x00001000, 0x00001003).w(this, FUNC(vegas_state::asic_fifo_w));
AM_RANGE(0x00005000, 0x00005003) AM_DEVWRITE("dcs", dcs_audio_device, dsio_idma_addr_w) // if (m_dcs_idma_cs == 6) map(0x00003000, 0x00003003).w(this, FUNC(vegas_state::dcs3_fifo_full_w)); // if (m_dcs_idma_cs != 0)
AM_RANGE(0x00007000, 0x00007003) AM_DEVREADWRITE("dcs", dcs_audio_device, dsio_idma_data_r, dsio_idma_data_w) // if (m_dcs_idma_cs == 6) map(0x00005000, 0x00005003).w(m_dcs, FUNC(dcs_audio_device::dsio_idma_addr_w)); // if (m_dcs_idma_cs == 6)
ADDRESS_MAP_END map(0x00007000, 0x00007003).rw(m_dcs, FUNC(dcs_audio_device::dsio_idma_data_r), FUNC(dcs_audio_device::dsio_idma_data_w)); // if (m_dcs_idma_cs == 6)
}
ADDRESS_MAP_START(vegas_state::vegas_cs7_map) void vegas_state::vegas_cs7_map(address_map &map)
{
//AM_RANGE(0x00000000, 0x00000003) AM_READWRITE8(nss_r, nss_w, 0xffffffff) //AM_RANGE(0x00000000, 0x00000003) AM_READWRITE8(nss_r, nss_w, 0xffffffff)
AM_RANGE(0x00001000, 0x0000100f) AM_READWRITE(ethernet_r, ethernet_w) map(0x00001000, 0x0000100f).rw(this, FUNC(vegas_state::ethernet_r), FUNC(vegas_state::ethernet_w));
AM_RANGE(0x00005000, 0x00005003) AM_DEVWRITE("dcs", dcs_audio_device, dsio_idma_addr_w) // if (m_dcs_idma_cs == 7) map(0x00005000, 0x00005003).w(m_dcs, FUNC(dcs_audio_device::dsio_idma_addr_w)); // if (m_dcs_idma_cs == 7)
AM_RANGE(0x00007000, 0x00007003) AM_DEVREADWRITE("dcs", dcs_audio_device, dsio_idma_data_r, dsio_idma_data_w) // if (m_dcs_idma_cs == 7) map(0x00007000, 0x00007003).rw(m_dcs, FUNC(dcs_audio_device::dsio_idma_data_r), FUNC(dcs_audio_device::dsio_idma_data_w)); // if (m_dcs_idma_cs == 7)
ADDRESS_MAP_END }
ADDRESS_MAP_START(vegas_state::vegas_cs8_map) void vegas_state::vegas_cs8_map(address_map &map)
AM_RANGE(0x01000000, 0x0100001f) AM_DEVREADWRITE8("uart1", ns16550_device, ins8250_r, ins8250_w, 0xff) // Serial ttyS01 (TL16C552 CS0) {
AM_RANGE(0x01400000, 0x0140001f) AM_DEVREADWRITE8("uart2", ns16550_device, ins8250_r, ins8250_w, 0xff) // Serial ttyS02 (TL16C552 CS1) map(0x01000000, 0x0100001f).rw(m_uart1, FUNC(ns16550_device::ins8250_r), FUNC(ns16550_device::ins8250_w)).umask32(0x000000ff); // Serial ttyS01 (TL16C552 CS0)
AM_RANGE(0x01800000, 0x0180001f) AM_READWRITE8(parallel_r, parallel_w, 0xff) // Parallel UART (TL16C552 CS2) map(0x01400000, 0x0140001f).rw(m_uart2, FUNC(ns16550_device::ins8250_r), FUNC(ns16550_device::ins8250_w)).umask32(0x000000ff); // Serial ttyS02 (TL16C552 CS1)
AM_RANGE(0x01c00000, 0x01c00003) AM_WRITE8(mpsreset_w, 0xff) // MPS Reset map(0x01800000, 0x0180001f).rw(this, FUNC(vegas_state::parallel_r), FUNC(vegas_state::parallel_w)).umask32(0x000000ff); // Parallel UART (TL16C552 CS2)
ADDRESS_MAP_END map(0x01c00000, 0x01c00000).w(this, FUNC(vegas_state::mpsreset_w)); // MPS Reset
}
/************************************* /*************************************
* *

View File

@ -667,10 +667,11 @@ void williams2_state::williams2_d000_ram_map(address_map &map)
/* tshoot and joust2: D000-DFFF is ROM */ /* tshoot and joust2: D000-DFFF is ROM */
ADDRESS_MAP_START(williams2_state::williams2_d000_rom_map) void williams2_state::williams2_d000_rom_map(address_map &map)
AM_IMPORT_FROM(williams2_common_map) {
AM_RANGE(0xd000, 0xffff) AM_ROM williams2_common_map(map);
ADDRESS_MAP_END map(0xd000, 0xffff).rom();
}

View File

@ -65,20 +65,22 @@ void x1twin_state::x1_io(address_map &map)
} }
#if 0 #if 0
ADDRESS_MAP_START(x1twin_state::pce_mem) void x1twin_state::pce_mem(address_map &map)
AM_RANGE( 0x000000, 0x09FFFF) AM_ROM {
AM_RANGE( 0x1F0000, 0x1F1FFF) AM_RAM AM_MIRROR(0x6000) map(0x000000, 0x09FFFF).rom();
AM_RANGE( 0x1FE000, 0x1FE3FF) AM_READWRITE( vdc_r, vdc_w ) map(0x1F0000, 0x1F1FFF).ram().mirror(0x6000);
AM_RANGE( 0x1FE400, 0x1FE7FF) AM_READWRITE( vce_r, vce_w ) map(0x1FE000, 0x1FE3FF).rw(this, FUNC(x1twin_state::vdc_r), FUNC(x1twin_state::vdc_w));
AM_RANGE( 0x1FE800, 0x1FEBFF) AM_DEVREADWRITE( "c6280", c6280_device, c6280_r, c6280_w ) map(0x1FE400, 0x1FE7FF).rw(this, FUNC(x1twin_state::vce_r), FUNC(x1twin_state::vce_w));
AM_RANGE( 0x1FEC00, 0x1FEFFF) AM_READWRITE( h6280_timer_r, h6280_timer_w ) map(0x1FE800, 0x1FEBFF).rw("c6280", FUNC(c6280_device::c6280_r), FUNC(c6280_device::c6280_w));
AM_RANGE( 0x1FF000, 0x1FF3FF) AM_READWRITE( pce_joystick_r, pce_joystick_w ) map(0x1FEC00, 0x1FEFFF).rw(this, FUNC(x1twin_state::h6280_timer_r), FUNC(x1twin_state::h6280_timer_w));
AM_RANGE( 0x1FF400, 0x1FF7FF) AM_DEVREADWRITE( "maincpu", h6280_device, irq_status_r, irq_status_w ) map(0x1FF000, 0x1FF3FF).rw(this, FUNC(x1twin_state::pce_joystick_r), FUNC(x1twin_state::pce_joystick_w));
ADDRESS_MAP_END map(0x1FF400, 0x1FF7FF).rw("maincpu", FUNC(h6280_device::irq_status_r), FUNC(h6280_device::irq_status_w));
}
ADDRESS_MAP_START(x1twin_state::pce_io) void x1twin_state::pce_io(address_map &map)
AM_RANGE( 0x00, 0x03) AM_READWRITE( vdc_r, vdc_w ) {
ADDRESS_MAP_END map(0x00, 0x03).rw(this, FUNC(x1twin_state::vdc_r), FUNC(x1twin_state::vdc_w));
}
#endif #endif
/************************************* /*************************************