diff --git a/src/devices/bus/newbrain/fdc.cpp b/src/devices/bus/newbrain/fdc.cpp index 92499b19028..d4fadb9df70 100644 --- a/src/devices/bus/newbrain/fdc.cpp +++ b/src/devices/bus/newbrain/fdc.cpp @@ -80,7 +80,7 @@ ADDRESS_MAP_END static ADDRESS_MAP_START( newbrain_fdc_io, AS_IO, 8, newbrain_fdc_t ) ADDRESS_MAP_UNMAP_HIGH - ADDRESS_MAP_GLOBAL_MASK(0xd1) + ADDRESS_MAP_GLOBAL_MASK(0x71) AM_RANGE(0x00, 0x01) AM_MIRROR(0x10) AM_DEVICE(UPD765_TAG, upd765a_device, map) AM_RANGE(0x20, 0x20) AM_MIRROR(0x11) AM_WRITE(fdc_auxiliary_w) AM_RANGE(0x40, 0x40) AM_MIRROR(0x11) AM_READ(fdc_control_r) diff --git a/src/emu/addrmap.cpp b/src/emu/addrmap.cpp index 2b3f45b1795..a8fe7281d1d 100644 --- a/src/emu/addrmap.cpp +++ b/src/emu/addrmap.cpp @@ -32,8 +32,8 @@ address_map_entry::address_map_entry(device_t &device, address_map &map, offs_t : m_next(nullptr), m_map(map), m_devbase(device), - m_addrstart((map.m_globalmask == 0) ? start : start & map.m_globalmask), - m_addrend((map.m_globalmask == 0) ? end : end & map.m_globalmask), + m_addrstart(start), + m_addrend(end), m_addrmirror(0), m_addrmask(0), m_addrselect(0), @@ -47,6 +47,17 @@ address_map_entry::address_map_entry(device_t &device, address_map &map, offs_t m_bytemirror(0), m_bytemask(0) { + if (map.m_globalmask != 0 && (start & ~map.m_globalmask) != 0) + { + osd_printf_warning("AS_%d map entry start %08X lies outside global address mask %08X\n", map.m_spacenum, start, map.m_globalmask); + m_addrstart &= map.m_globalmask; + } + + if (map.m_globalmask != 0 && (end & ~map.m_globalmask) != 0) + { + osd_printf_warning("AS_%d map entry end %08X lies outside global address mask %08X\n", map.m_spacenum, end, map.m_globalmask); + m_addrend &= map.m_globalmask; + } } diff --git a/src/mame/drivers/arkanoid.cpp b/src/mame/drivers/arkanoid.cpp index 6daff2641bf..7e025e7c311 100644 --- a/src/mame/drivers/arkanoid.cpp +++ b/src/mame/drivers/arkanoid.cpp @@ -878,7 +878,7 @@ READ8_MEMBER(arkanoid_state::hexaa_sub_90_r) } static ADDRESS_MAP_START( hexaa_sub_iomap, AS_IO, 8, arkanoid_state ) - ADDRESS_MAP_GLOBAL_MASK(0x0f) + ADDRESS_MAP_GLOBAL_MASK(0x9f) AM_RANGE(0x00, 0x0f) AM_RAM // ?? could be communication with the other chip (protection?) AM_RANGE(0x80, 0x80) AM_WRITE(hexaa_sub_80_w) AM_RANGE(0x90, 0x90) AM_READ(hexaa_sub_90_r) diff --git a/src/mame/drivers/calomega.cpp b/src/mame/drivers/calomega.cpp index 9226a748b92..a247dc12de0 100644 --- a/src/mame/drivers/calomega.cpp +++ b/src/mame/drivers/calomega.cpp @@ -843,7 +843,7 @@ static ADDRESS_MAP_START( s903mod_map, AS_PROGRAM, 8, calomega_state ) AM_RANGE(0x08c8, 0x08cb) AM_DEVREADWRITE("pia1", pia6821_device, read, write) AM_RANGE(0x1000, 0x13ff) AM_RAM_WRITE(calomega_videoram_w) AM_SHARE("videoram") AM_RANGE(0x1400, 0x17ff) AM_RAM_WRITE(calomega_colorram_w) AM_SHARE("colorram") - AM_RANGE(0x1800, 0xffff) AM_ROM + AM_RANGE(0x1800, 0x3fff) AM_ROM ADDRESS_MAP_END static ADDRESS_MAP_START( sys905_map, AS_PROGRAM, 8, calomega_state ) @@ -856,7 +856,7 @@ static ADDRESS_MAP_START( sys905_map, AS_PROGRAM, 8, calomega_state ) AM_RANGE(0x10c8, 0x10cb) AM_DEVREADWRITE("pia1", pia6821_device, read, write) AM_RANGE(0x2000, 0x23ff) AM_RAM_WRITE(calomega_videoram_w) AM_SHARE("videoram") AM_RANGE(0x2400, 0x27ff) AM_RAM_WRITE(calomega_colorram_w) AM_SHARE("colorram") - AM_RANGE(0x2800, 0xffff) AM_ROM + AM_RANGE(0x2800, 0x7fff) AM_ROM ADDRESS_MAP_END static ADDRESS_MAP_START( sys906_map, AS_PROGRAM, 8, calomega_state ) diff --git a/src/mame/drivers/eacc.cpp b/src/mame/drivers/eacc.cpp index cc91872dddf..3aef6f02258 100644 --- a/src/mame/drivers/eacc.cpp +++ b/src/mame/drivers/eacc.cpp @@ -96,7 +96,7 @@ static ADDRESS_MAP_START(eacc_mem, AS_PROGRAM, 8, eacc_state) ADDRESS_MAP_GLOBAL_MASK(0xc7ff) // A11,A12,A13 not connected AM_RANGE(0x0000, 0x001f) AM_RAM AM_SHARE("nvram") // inside cpu, battery-backed AM_RANGE(0x0020, 0x007f) AM_RAM // inside cpu - AM_RANGE(0x6000, 0x67ff) AM_ROM AM_MIRROR(0x8000) + AM_RANGE(0x4000, 0x47ff) AM_ROM AM_MIRROR(0x8000) AM_RANGE(0x8000, 0x8003) AM_MIRROR(0x7fc) AM_DEVREADWRITE("pia", pia6821_device, read, write) ADDRESS_MAP_END diff --git a/src/mame/drivers/galaxy.cpp b/src/mame/drivers/galaxy.cpp index 8a6a884ea8d..79f3b47ee61 100644 --- a/src/mame/drivers/galaxy.cpp +++ b/src/mame/drivers/galaxy.cpp @@ -37,8 +37,8 @@ Galaksija driver by Krzysztof Strzecha and Miodrag Milanovic static ADDRESS_MAP_START (galaxyp_io, AS_IO, 8, galaxy_state ) ADDRESS_MAP_GLOBAL_MASK(0x01) ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(0xbe, 0xbe) AM_DEVWRITE("ay8910", ay8910_device, address_w) - AM_RANGE(0xbf, 0xbf) AM_DEVWRITE("ay8910", ay8910_device, data_w) + AM_RANGE(0x00, 0x00) AM_DEVWRITE("ay8910", ay8910_device, address_w) + AM_RANGE(0x01, 0x01) AM_DEVWRITE("ay8910", ay8910_device, data_w) ADDRESS_MAP_END diff --git a/src/mame/drivers/goldnpkr.cpp b/src/mame/drivers/goldnpkr.cpp index 591d3e8a589..c70d153a41d 100644 --- a/src/mame/drivers/goldnpkr.cpp +++ b/src/mame/drivers/goldnpkr.cpp @@ -1690,7 +1690,7 @@ static ADDRESS_MAP_START( wildcrdb_map, AS_PROGRAM, 8, goldnpkr_state ) AM_RANGE(0x2100, 0x2100) AM_DEVWRITE("crtc", mc6845_device, address_w) AM_RANGE(0x2101, 0x2101) AM_DEVREADWRITE("crtc", mc6845_device, register_r, register_w) AM_RANGE(0x2800, 0x2fff) AM_RAM - AM_RANGE(0x3000, 0xffff) AM_ROM + AM_RANGE(0x3000, 0x7fff) AM_ROM ADDRESS_MAP_END static ADDRESS_MAP_START( wildcrdb_mcu_map, AS_PROGRAM, 8, goldnpkr_state ) diff --git a/src/mame/drivers/lc80.cpp b/src/mame/drivers/lc80.cpp index b29f5836f35..9deed1fc2fe 100644 --- a/src/mame/drivers/lc80.cpp +++ b/src/mame/drivers/lc80.cpp @@ -64,9 +64,9 @@ ADDRESS_MAP_END static ADDRESS_MAP_START( lc80_io, AS_IO, 8, lc80_state ) ADDRESS_MAP_GLOBAL_MASK(0x1f) - AM_RANGE(0xf4, 0xf7) AM_DEVREADWRITE(Z80PIO1_TAG, z80pio_device, read, write) - AM_RANGE(0xf8, 0xfb) AM_DEVREADWRITE(Z80PIO2_TAG, z80pio_device, read, write) - AM_RANGE(0xec, 0xef) AM_DEVREADWRITE(Z80CTC_TAG, z80ctc_device, read, write) + AM_RANGE(0x14, 0x17) AM_DEVREADWRITE(Z80PIO1_TAG, z80pio_device, read, write) + AM_RANGE(0x18, 0x1b) AM_DEVREADWRITE(Z80PIO2_TAG, z80pio_device, read, write) + AM_RANGE(0x0c, 0x0f) AM_DEVREADWRITE(Z80CTC_TAG, z80ctc_device, read, write) ADDRESS_MAP_END /* Input Ports */ diff --git a/src/mame/drivers/lisa.cpp b/src/mame/drivers/lisa.cpp index 34e9b8bbe1f..1e5dad25b03 100644 --- a/src/mame/drivers/lisa.cpp +++ b/src/mame/drivers/lisa.cpp @@ -31,7 +31,6 @@ static ADDRESS_MAP_START(lisa_fdc_map, AS_PROGRAM, 8, lisa_state ) AM_RANGE(0x0400, 0x07ff) AM_READWRITE(lisa_fdc_io_r, lisa_fdc_io_w) /* disk controller (IWM and TTL logic) */ AM_RANGE(0x0800, 0x0fff) AM_NOP AM_RANGE(0x1000, 0x1fff) AM_ROM AM_REGION("fdccpu", 0x1000) AM_SHARE("fdc_rom") /* ROM */ - AM_RANGE(0x2000, 0xffff) AM_READWRITE(lisa_fdc_r, lisa_fdc_w) /* handler for wrap-around */ ADDRESS_MAP_END static ADDRESS_MAP_START(lisa210_fdc_map, AS_PROGRAM, 8, lisa_state ) @@ -41,7 +40,6 @@ static ADDRESS_MAP_START(lisa210_fdc_map, AS_PROGRAM, 8, lisa_state ) AM_RANGE(0x0800, 0x0bff) AM_READWRITE(lisa_fdc_io_r, lisa_fdc_io_w) /* disk controller (IWM and TTL logic) */ AM_RANGE(0x0c00, 0x0fff) AM_NOP /* nothing, or IO port wrap-around ??? */ AM_RANGE(0x1000, 0x1fff) AM_ROM AM_REGION("fdccpu", 0x1000) AM_SHARE("fdc_rom") /* ROM */ - AM_RANGE(0x2000, 0xffff) AM_READWRITE(lisa_fdc_r, lisa_fdc_w) /* handler for wrap-around */ ADDRESS_MAP_END diff --git a/src/mame/drivers/s6.cpp b/src/mame/drivers/s6.cpp index cc28d6f3c58..86ababe599e 100644 --- a/src/mame/drivers/s6.cpp +++ b/src/mame/drivers/s6.cpp @@ -120,7 +120,7 @@ static ADDRESS_MAP_START( s6_main_map, AS_PROGRAM, 8, s6_state ) AM_RANGE(0x2200, 0x2203) AM_DEVREADWRITE("pia22", pia6821_device, read, write) // solenoids AM_RANGE(0x2400, 0x2403) AM_DEVREADWRITE("pia24", pia6821_device, read, write) // lamps AM_RANGE(0x2800, 0x2803) AM_DEVREADWRITE("pia28", pia6821_device, read, write) // display - AM_RANGE(0xb000, 0x3003) AM_DEVREADWRITE("pia30", pia6821_device, read, write) // inputs + AM_RANGE(0x3000, 0x3003) AM_DEVREADWRITE("pia30", pia6821_device, read, write) // inputs AM_RANGE(0x6000, 0x7fff) AM_ROM AM_REGION("roms", 0) ADDRESS_MAP_END diff --git a/src/mame/drivers/slc1.cpp b/src/mame/drivers/slc1.cpp index f367e3b1705..a2eec395f04 100644 --- a/src/mame/drivers/slc1.cpp +++ b/src/mame/drivers/slc1.cpp @@ -182,7 +182,7 @@ static ADDRESS_MAP_START( slc1_map, AS_PROGRAM, 8, slc1_state ) ADDRESS_MAP_UNMAP_HIGH ADDRESS_MAP_GLOBAL_MASK(0x4fff) AM_RANGE(0x0000, 0x0fff) AM_ROM - AM_RANGE(0x5000, 0x53ff) AM_RAM AM_MIRROR(0xc00) + AM_RANGE(0x4000, 0x43ff) AM_RAM AM_MIRROR(0xc00) ADDRESS_MAP_END static ADDRESS_MAP_START( slc1_io, AS_IO, 8, slc1_state ) diff --git a/src/mame/drivers/toobin.cpp b/src/mame/drivers/toobin.cpp index f07cf0c4110..d35126e0033 100644 --- a/src/mame/drivers/toobin.cpp +++ b/src/mame/drivers/toobin.cpp @@ -86,22 +86,22 @@ static ADDRESS_MAP_START( main_map, AS_PROGRAM, 16, toobin_state ) AM_RANGE(0xc08000, 0xc097ff) AM_MIRROR(0x046000) AM_RAM_DEVWRITE("alpha", tilemap_device, write) AM_SHARE("alpha") AM_RANGE(0xc09800, 0xc09fff) AM_MIRROR(0x046000) AM_RAM AM_SHARE("mob") AM_RANGE(0xc10000, 0xc107ff) AM_MIRROR(0x047800) AM_RAM_WRITE(paletteram_w) AM_SHARE("paletteram") - AM_RANGE(0xba6000, 0xba6001) AM_MIRROR(0x4500fe) AM_READNOP /* who knows? read at controls time */ - AM_RANGE(0xba8000, 0xba8001) AM_MIRROR(0x4500fe) AM_DEVWRITE("watchdog", watchdog_timer_device, reset16_w) - AM_RANGE(0xba8100, 0xba8101) AM_MIRROR(0x4500fe) AM_DEVWRITE8("jsa", atari_jsa_i_device, main_command_w, 0x00ff) - AM_RANGE(0xba8300, 0xba8301) AM_MIRROR(0x45003e) AM_WRITE(intensity_w) - AM_RANGE(0xba8340, 0xba8341) AM_MIRROR(0x45003e) AM_WRITE(interrupt_scan_w) AM_SHARE("interrupt_scan") - AM_RANGE(0xba8380, 0xba8381) AM_MIRROR(0x45003e) AM_RAM_WRITE(slip_w) AM_SHARE("mob:slip") - AM_RANGE(0xba83c0, 0xba83c1) AM_MIRROR(0x45003e) AM_WRITE(scanline_int_ack_w) - AM_RANGE(0xba8400, 0xba8401) AM_MIRROR(0x4500fe) AM_DEVWRITE("jsa", atari_jsa_i_device, sound_reset_w) - AM_RANGE(0xba8500, 0xba8501) AM_MIRROR(0x4500fe) AM_DEVWRITE("eeprom", atari_eeprom_device, unlock_write) - AM_RANGE(0xba8600, 0xba8601) AM_MIRROR(0x4500fe) AM_WRITE(xscroll_w) AM_SHARE("xscroll") - AM_RANGE(0xba8700, 0xba8701) AM_MIRROR(0x4500fe) AM_WRITE(yscroll_w) AM_SHARE("yscroll") - AM_RANGE(0xba8800, 0xba8801) AM_MIRROR(0x4507fe) AM_READ_PORT("FF8800") - AM_RANGE(0xba9000, 0xba9001) AM_MIRROR(0x4507fe) AM_READ_PORT("FF9000") - AM_RANGE(0xba9800, 0xba9801) AM_MIRROR(0x4507fe) AM_DEVREAD8("jsa", atari_jsa_i_device, main_response_r, 0x00ff) - AM_RANGE(0xbaa000, 0xbaafff) AM_MIRROR(0x451000) AM_DEVREADWRITE8("eeprom", atari_eeprom_device, read, write, 0x00ff) - AM_RANGE(0xbac000, 0xbaffff) AM_MIRROR(0x450000) AM_RAM + AM_RANGE(0x826000, 0x826001) AM_MIRROR(0x4500fe) AM_READNOP /* who knows? read at controls time */ + AM_RANGE(0x828000, 0x828001) AM_MIRROR(0x4500fe) AM_DEVWRITE("watchdog", watchdog_timer_device, reset16_w) + AM_RANGE(0x828100, 0x828101) AM_MIRROR(0x4500fe) AM_DEVWRITE8("jsa", atari_jsa_i_device, main_command_w, 0x00ff) + AM_RANGE(0x828300, 0x828301) AM_MIRROR(0x45003e) AM_WRITE(intensity_w) + AM_RANGE(0x828340, 0x828341) AM_MIRROR(0x45003e) AM_WRITE(interrupt_scan_w) AM_SHARE("interrupt_scan") + AM_RANGE(0x828380, 0x828381) AM_MIRROR(0x45003e) AM_RAM_WRITE(slip_w) AM_SHARE("mob:slip") + AM_RANGE(0x8283c0, 0x8283c1) AM_MIRROR(0x45003e) AM_WRITE(scanline_int_ack_w) + AM_RANGE(0x828400, 0x828401) AM_MIRROR(0x4500fe) AM_DEVWRITE("jsa", atari_jsa_i_device, sound_reset_w) + AM_RANGE(0x828500, 0x828501) AM_MIRROR(0x4500fe) AM_DEVWRITE("eeprom", atari_eeprom_device, unlock_write) + AM_RANGE(0x828600, 0x828601) AM_MIRROR(0x4500fe) AM_WRITE(xscroll_w) AM_SHARE("xscroll") + AM_RANGE(0x828700, 0x828701) AM_MIRROR(0x4500fe) AM_WRITE(yscroll_w) AM_SHARE("yscroll") + AM_RANGE(0x828800, 0x828801) AM_MIRROR(0x4507fe) AM_READ_PORT("FF8800") + AM_RANGE(0x829000, 0x829001) AM_MIRROR(0x4507fe) AM_READ_PORT("FF9000") + AM_RANGE(0x829800, 0x829801) AM_MIRROR(0x4507fe) AM_DEVREAD8("jsa", atari_jsa_i_device, main_response_r, 0x00ff) + AM_RANGE(0x82a000, 0x82afff) AM_MIRROR(0x451000) AM_DEVREADWRITE8("eeprom", atari_eeprom_device, read, write, 0x00ff) + AM_RANGE(0x82c000, 0x82ffff) AM_MIRROR(0x450000) AM_RAM ADDRESS_MAP_END diff --git a/src/mame/includes/lisa.h b/src/mame/includes/lisa.h index f359191d605..b3a32f84a21 100644 --- a/src/mame/includes/lisa.h +++ b/src/mame/includes/lisa.h @@ -192,10 +192,6 @@ public: int m_videoROM_address; DECLARE_READ8_MEMBER(lisa_fdc_io_r); DECLARE_WRITE8_MEMBER(lisa_fdc_io_w); - DECLARE_READ8_MEMBER(lisa_fdc_r); - DECLARE_READ8_MEMBER(lisa210_fdc_r); - DECLARE_WRITE8_MEMBER(lisa_fdc_w); - DECLARE_WRITE8_MEMBER(lisa210_fdc_w); DECLARE_READ16_MEMBER(lisa_r); DECLARE_WRITE16_MEMBER(lisa_w); DECLARE_READ16_MEMBER(lisa_IO_r); diff --git a/src/mame/machine/lisa.cpp b/src/mame/machine/lisa.cpp index 2e0cf3de51f..94b05e25270 100644 --- a/src/mame/machine/lisa.cpp +++ b/src/mame/machine/lisa.cpp @@ -1221,66 +1221,6 @@ WRITE8_MEMBER(lisa_state::lisa_fdc_io_w) } } -READ8_MEMBER(lisa_state::lisa_fdc_r) -{ - if (! (offset & 0x1000)) - { - if (! (offset & 0x0800)) - if (! (offset & 0x0400)) - return m_fdc_ram[offset & 0x03ff]; - else - return lisa_fdc_io_r(space, offset & 0x03ff); - else - return 0; /* ??? */ - } - else - return m_fdc_rom[offset & 0x0fff]; -} - -READ8_MEMBER(lisa_state::lisa210_fdc_r) -{ - if (! (offset & 0x1000)) - { - if (! (offset & 0x0400)) - if (! (offset & 0x0800)) - return m_fdc_ram[offset & 0x03ff]; - else - return lisa_fdc_io_r(space, offset & 0x03ff); - else - return 0; /* ??? */ - } - else - return m_fdc_rom[offset & 0x0fff]; -} - -WRITE8_MEMBER(lisa_state::lisa_fdc_w) -{ - if (! (offset & 0x1000)) - { - if (! (offset & 0x0800)) - { - if (! (offset & 0x0400)) - m_fdc_ram[offset & 0x03ff] = data; - else - lisa_fdc_io_w(space, offset & 0x03ff, data); - } - } -} - -WRITE8_MEMBER(lisa_state::lisa210_fdc_w) -{ - if (! (offset & 0x1000)) - { - if (! (offset & 0x0400)) - { - if (! (offset & 0x0800)) - m_fdc_ram[offset & 0x03ff] = data; - else - lisa_fdc_io_w(space, offset & 0x03ff, data); - } - } -} - READ16_MEMBER(lisa_state::lisa_r) { int answer=0; diff --git a/src/mame/machine/m1comm.cpp b/src/mame/machine/m1comm.cpp index 38b17b14501..a395c5885cb 100644 --- a/src/mame/machine/m1comm.cpp +++ b/src/mame/machine/m1comm.cpp @@ -77,7 +77,7 @@ static ADDRESS_MAP_START( m1comm_io, AS_IO, 8, m1comm_device ) AM_RANGE(0x20, 0x2F) AM_READWRITE(dma_reg_r, dma_reg_w) AM_RANGE(0x40, 0x40) AM_READWRITE(syn_r, syn_w) AM_RANGE(0x60, 0x60) AM_READWRITE(zfg_r, zfg_w) - AM_RANGE(0xFFFF, 0xFFFF) AM_RAM + AM_RANGE(0xFF, 0xFF) AM_RAM ADDRESS_MAP_END MACHINE_CONFIG_FRAGMENT( m1comm )