diff --git a/src/devices/bus/abckb/abc77.cpp b/src/devices/bus/abckb/abc77.cpp index f81542c8b94..561085d0488 100644 --- a/src/devices/bus/abckb/abc77.cpp +++ b/src/devices/bus/abckb/abc77.cpp @@ -101,10 +101,6 @@ ADDRESS_MAP_END static ADDRESS_MAP_START( abc77_io, AS_IO, 8, abc77_device ) AM_RANGE(0x00, 0x00) AM_MIRROR(0xff) AM_WRITE(j3_w) AM_RANGE(0x00, 0x00) AM_MIRROR(0xff) AM_READ_PORT("DSW") - AM_RANGE(MCS48_PORT_P1, MCS48_PORT_P1) AM_READ(p1_r) - AM_RANGE(MCS48_PORT_P2, MCS48_PORT_P2) AM_WRITE(p2_w) - AM_RANGE(MCS48_PORT_T1, MCS48_PORT_T1) AM_READ(t1_r) - AM_RANGE(MCS48_PORT_PROG, MCS48_PORT_PROG) AM_WRITE(prog_w) ADDRESS_MAP_END @@ -136,6 +132,10 @@ static MACHINE_CONFIG_FRAGMENT( abc77 ) MCFG_CPU_ADD(I8035_TAG, I8035, XTAL_4_608MHz) MCFG_CPU_PROGRAM_MAP(abc77_map) MCFG_CPU_IO_MAP(abc77_io) + MCFG_MCS48_PORT_P1_IN_CB(READ8(abc77_device, p1_r)) + MCFG_MCS48_PORT_P2_OUT_CB(WRITE8(abc77_device, p2_w)) + MCFG_MCS48_PORT_T1_IN_CB(READLINE(abc77_device, t1_r)) + MCFG_MCS48_PORT_PROG_OUT_CB(WRITELINE(abc77_device, prog_w)) // watchdog MCFG_WATCHDOG_ADD("watchdog") @@ -592,7 +592,7 @@ WRITE8_MEMBER( abc77_device::p2_w ) // t1_r - //------------------------------------------------- -READ8_MEMBER( abc77_device::t1_r ) +READ_LINE_MEMBER( abc77_device::t1_r ) { return m_clock; } @@ -602,9 +602,9 @@ READ8_MEMBER( abc77_device::t1_r ) // prog_w - //------------------------------------------------- -WRITE8_MEMBER( abc77_device::prog_w ) +WRITE_LINE_MEMBER( abc77_device::prog_w ) { - m_stb = BIT(data, 0); + m_stb = state; } diff --git a/src/devices/bus/abckb/abc77.h b/src/devices/bus/abckb/abc77.h index 8776885cad0..52114de522d 100644 --- a/src/devices/bus/abckb/abc77.h +++ b/src/devices/bus/abckb/abc77.h @@ -46,8 +46,8 @@ public: DECLARE_READ8_MEMBER( p1_r ); DECLARE_WRITE8_MEMBER( p2_w ); - DECLARE_READ8_MEMBER( t1_r ); - DECLARE_WRITE8_MEMBER( prog_w ); + DECLARE_READ_LINE_MEMBER( t1_r ); + DECLARE_WRITE_LINE_MEMBER( prog_w ); DECLARE_WRITE8_MEMBER( j3_w ); protected: diff --git a/src/devices/bus/abckb/abc800kb.cpp b/src/devices/bus/abckb/abc800kb.cpp index 7a8a07162d9..19962ff01f2 100644 --- a/src/devices/bus/abckb/abc800kb.cpp +++ b/src/devices/bus/abckb/abc800kb.cpp @@ -108,24 +108,16 @@ const tiny_rom_entry *abc800_keyboard_device::device_rom_region() const } -//------------------------------------------------- -// ADDRESS_MAP( abc800_keyboard_io ) -//------------------------------------------------- - -static ADDRESS_MAP_START( abc800_keyboard_io, AS_IO, 8, abc800_keyboard_device ) - AM_RANGE(MCS48_PORT_P1, MCS48_PORT_P1) AM_READWRITE(kb_p1_r, kb_p1_w) - AM_RANGE(MCS48_PORT_P2, MCS48_PORT_P2) AM_WRITE(kb_p2_w) - AM_RANGE(MCS48_PORT_T1, MCS48_PORT_T1) AM_READ(kb_t1_r) -ADDRESS_MAP_END - - //------------------------------------------------- // MACHINE_DRIVER( abc800_keyboard ) //------------------------------------------------- static MACHINE_CONFIG_FRAGMENT( abc800_keyboard ) MCFG_CPU_ADD(I8048_TAG, I8048, XTAL_5_9904MHz) - MCFG_CPU_IO_MAP(abc800_keyboard_io) + MCFG_MCS48_PORT_P1_IN_CB(READ8(abc800_keyboard_device, kb_p1_r)) + MCFG_MCS48_PORT_P1_OUT_CB(WRITE8(abc800_keyboard_device, kb_p1_w)) + MCFG_MCS48_PORT_P2_OUT_CB(WRITE8(abc800_keyboard_device, kb_p2_w)) + MCFG_MCS48_PORT_T1_IN_CB(READLINE(abc800_keyboard_device, kb_t1_r)) MACHINE_CONFIG_END @@ -480,7 +472,7 @@ WRITE8_MEMBER( abc800_keyboard_device::kb_p2_w ) // kb_t1_r - keyboard T1 timer read //------------------------------------------------- -READ8_MEMBER( abc800_keyboard_device::kb_t1_r ) +READ_LINE_MEMBER( abc800_keyboard_device::kb_t1_r ) { return m_clk; } diff --git a/src/devices/bus/abckb/abc800kb.h b/src/devices/bus/abckb/abc800kb.h index d3427c8d53c..d5dabb45ac5 100644 --- a/src/devices/bus/abckb/abc800kb.h +++ b/src/devices/bus/abckb/abc800kb.h @@ -43,7 +43,7 @@ public: DECLARE_READ8_MEMBER( kb_p1_r ); DECLARE_WRITE8_MEMBER( kb_p1_w ); DECLARE_WRITE8_MEMBER( kb_p2_w ); - DECLARE_READ8_MEMBER( kb_t1_r ); + DECLARE_READ_LINE_MEMBER( kb_t1_r ); protected: // device-level overrides diff --git a/src/devices/bus/abckb/abc99.cpp b/src/devices/bus/abckb/abc99.cpp index 299f3f63d6a..0590046e6d0 100644 --- a/src/devices/bus/abckb/abc99.cpp +++ b/src/devices/bus/abckb/abc99.cpp @@ -133,10 +133,6 @@ static ADDRESS_MAP_START( abc99_z2_io, AS_IO, 8, abc99_device ) AM_RANGE(0x3d, 0x3d) AM_READ_PORT("X13") AM_WRITENOP AM_RANGE(0x3e, 0x3e) AM_READ_PORT("X14") AM_WRITENOP AM_RANGE(0x3f, 0x3f) AM_READ_PORT("X15") AM_WRITENOP - AM_RANGE(MCS48_PORT_P1, MCS48_PORT_P1) AM_WRITE(z2_p1_w) - AM_RANGE(MCS48_PORT_P2, MCS48_PORT_P2) AM_READ(z2_p2_r) - AM_RANGE(MCS48_PORT_T0, MCS48_PORT_T0) AM_READ(z2_t0_r) - AM_RANGE(MCS48_PORT_T1, MCS48_PORT_T1) AM_READ(z2_t1_r) ADDRESS_MAP_END @@ -149,18 +145,6 @@ static ADDRESS_MAP_START( abc99_z5_mem, AS_PROGRAM, 8, abc99_device ) ADDRESS_MAP_END -//------------------------------------------------- -// ADDRESS_MAP( abc99_z5_io ) -//------------------------------------------------- - -static ADDRESS_MAP_START( abc99_z5_io, AS_IO, 8, abc99_device ) -/* AM_RANGE(MCS48_PORT_P1, MCS48_PORT_P1) AM_READ(z5_p1_r) - AM_RANGE(MCS48_PORT_P2, MCS48_PORT_P2) AM_WRITE(z5_p2_w) - AM_RANGE(MCS48_PORT_T0, MCS48_PORT_T0) AM_WRITENOP // Z2 CLK - AM_RANGE(MCS48_PORT_T1, MCS48_PORT_T1) AM_READ(z5_t1_r)*/ -ADDRESS_MAP_END - - //------------------------------------------------- // MACHINE_DRIVER( abc99 ) //------------------------------------------------- @@ -170,11 +154,18 @@ static MACHINE_CONFIG_FRAGMENT( abc99 ) MCFG_CPU_ADD(I8035_Z2_TAG, I8035, XTAL_6MHz/3) // from Z5 T0 output MCFG_CPU_PROGRAM_MAP(abc99_z2_mem) MCFG_CPU_IO_MAP(abc99_z2_io) + MCFG_MCS48_PORT_P1_OUT_CB(WRITE8(abc99_device, z2_p1_w)) + MCFG_MCS48_PORT_P2_IN_CB(READ8(abc99_device, z2_p2_r)) + MCFG_MCS48_PORT_T0_IN_CB(READLINE(abc99_device, z2_t0_r)) + MCFG_MCS48_PORT_T1_IN_CB(READLINE(abc99_device, z2_t1_r)) // mouse CPU MCFG_CPU_ADD(I8035_Z5_TAG, I8035, XTAL_6MHz) MCFG_CPU_PROGRAM_MAP(abc99_z5_mem) - MCFG_CPU_IO_MAP(abc99_z5_io) + //MCFG_MCS48_PORT_P1_IN_CB(READ8(abc99_device, z5_p1_r)) + //MCFG_MCS48_PORT_P2_OUT_CB(WRITE8(abc99_device, z5_p2_w)) + //MCFG_MCS48_PORT_T0_CLK_CUSTOM() // Z2 CLK + //MCFG_MCS48_PORT_T1_IN_CB(READ8(abc99_device, z5_t1_r)) MCFG_DEVICE_DISABLE() // HACK fix for broken serial I/O // sound hardware @@ -676,7 +667,7 @@ READ8_MEMBER( abc99_device::z2_p2_r ) // z2_t0_r - //------------------------------------------------- -READ8_MEMBER( abc99_device::z2_t0_r ) +READ_LINE_MEMBER( abc99_device::z2_t0_r ) { return 1; // 0=mouse connected, 1=no mouse } @@ -686,7 +677,7 @@ READ8_MEMBER( abc99_device::z2_t0_r ) // z2_t1_r - //------------------------------------------------- -READ8_MEMBER( abc99_device::z2_t1_r ) +READ_LINE_MEMBER( abc99_device::z2_t1_r ) { return m_t1_z2; } diff --git a/src/devices/bus/abckb/abc99.h b/src/devices/bus/abckb/abc99.h index c9278fe8acc..ad421139e7d 100644 --- a/src/devices/bus/abckb/abc99.h +++ b/src/devices/bus/abckb/abc99.h @@ -44,8 +44,8 @@ public: DECLARE_WRITE8_MEMBER( z2_led_w ); DECLARE_WRITE8_MEMBER( z2_p1_w ); DECLARE_READ8_MEMBER( z2_p2_r ); - DECLARE_READ8_MEMBER( z2_t0_r ); - DECLARE_READ8_MEMBER( z2_t1_r ); + DECLARE_READ_LINE_MEMBER( z2_t0_r ); + DECLARE_READ_LINE_MEMBER( z2_t1_r ); DECLARE_READ8_MEMBER( z5_p1_r ); DECLARE_WRITE8_MEMBER( z5_p2_w ); DECLARE_READ8_MEMBER( z5_t1_r ); diff --git a/src/devices/bus/dmv/k806.cpp b/src/devices/bus/dmv/k806.cpp index 748080b41f9..7e4309ac5a9 100644 --- a/src/devices/bus/dmv/k806.cpp +++ b/src/devices/bus/dmv/k806.cpp @@ -19,15 +19,11 @@ ROM_START( dmv_k806 ) ROM_LOAD( "dmv_mouse_8741a.bin", 0x0000, 0x0400, CRC(2163737a) SHA1(b82c14dba6c25cb1f60cf623989ca8c0c1ee4cc3)) ROM_END -static ADDRESS_MAP_START( k806_io, AS_IO, 8, dmv_k806_device ) - AM_RANGE(MCS48_PORT_P1, MCS48_PORT_P1) AM_READ(port1_r) - AM_RANGE(MCS48_PORT_P2, MCS48_PORT_P2) AM_WRITE(port2_w) - AM_RANGE(MCS48_PORT_T1, MCS48_PORT_T1) AM_READ(portt1_r) -ADDRESS_MAP_END - static MACHINE_CONFIG_FRAGMENT( dmv_k806 ) MCFG_CPU_ADD("mcu", I8741, XTAL_6MHz) - MCFG_CPU_IO_MAP(k806_io) + MCFG_MCS48_PORT_P1_IN_CB(READ8(dmv_k806_device, port1_r)) + MCFG_MCS48_PORT_P2_OUT_CB(WRITE8(dmv_k806_device, port2_w)) + MCFG_MCS48_PORT_T1_IN_CB(READLINE(dmv_k806_device, portt1_r)) MCFG_TIMER_DRIVER_ADD_PERIODIC("mouse_timer", dmv_k806_device, mouse_timer, attotime::from_hz(1000)) MACHINE_CONFIG_END @@ -174,7 +170,7 @@ READ8_MEMBER( dmv_k806_device::port1_r ) return data; } -READ8_MEMBER( dmv_k806_device::portt1_r ) +READ_LINE_MEMBER( dmv_k806_device::portt1_r ) { return BIT(m_jumpers->read(), 7) ? 0 : 1; } diff --git a/src/devices/bus/dmv/k806.h b/src/devices/bus/dmv/k806.h index 3b5eb294a5b..4e1330d5578 100644 --- a/src/devices/bus/dmv/k806.h +++ b/src/devices/bus/dmv/k806.h @@ -28,7 +28,7 @@ public: virtual ioport_constructor device_input_ports() const override; virtual machine_config_constructor device_mconfig_additions() const override; - DECLARE_READ8_MEMBER(portt1_r); + DECLARE_READ_LINE_MEMBER(portt1_r); DECLARE_READ8_MEMBER(port1_r); DECLARE_WRITE8_MEMBER(port2_w); diff --git a/src/devices/bus/isa/wdxt_gen.cpp b/src/devices/bus/isa/wdxt_gen.cpp index d2f106092ae..daef4a36704 100644 --- a/src/devices/bus/isa/wdxt_gen.cpp +++ b/src/devices/bus/isa/wdxt_gen.cpp @@ -94,10 +94,6 @@ const tiny_rom_entry *wdxt_gen_device::device_rom_region() const static ADDRESS_MAP_START( wd1015_io, AS_IO, 8, wdxt_gen_device ) AM_RANGE(0x00, 0xff) AM_DEVREADWRITE(WD11C00_17_TAG, wd11c00_17_device, read, write) - AM_RANGE(MCS48_PORT_T0, MCS48_PORT_T0) AM_READ(wd1015_t0_r) - AM_RANGE(MCS48_PORT_T1, MCS48_PORT_T1) AM_READ(wd1015_t1_r) - AM_RANGE(MCS48_PORT_P1, MCS48_PORT_P1) AM_READWRITE(wd1015_p1_r, wd1015_p1_w) - AM_RANGE(MCS48_PORT_P2, MCS48_PORT_P2) AM_READWRITE(wd1015_p2_r, wd1015_p2_w) ADDRESS_MAP_END @@ -145,6 +141,12 @@ WRITE8_MEMBER( wdxt_gen_device::ram_w ) static MACHINE_CONFIG_FRAGMENT( wdxt_gen ) MCFG_CPU_ADD(WD1015_TAG, I8049, 5000000) MCFG_CPU_IO_MAP(wd1015_io) + MCFG_MCS48_PORT_T0_IN_CB(DEVREADLINE(WD11C00_17_TAG, wd11c00_17_device, busy_r)) + MCFG_MCS48_PORT_T1_IN_CB(READLINE(wdxt_gen_device, wd1015_t1_r)) + MCFG_MCS48_PORT_P1_IN_CB(READ8(wdxt_gen_device, wd1015_p1_r)) + MCFG_MCS48_PORT_P1_OUT_CB(WRITE8(wdxt_gen_device, wd1015_p1_w)) + MCFG_MCS48_PORT_P2_IN_CB(READ8(wdxt_gen_device, wd1015_p2_r)) + MCFG_MCS48_PORT_P2_OUT_CB(WRITE8(wdxt_gen_device, wd1015_p2_w)) MCFG_DEVICE_ADD(WD11C00_17_TAG, WD11C00_17, 5000000) MCFG_WD11C00_17_OUT_IRQ5_CB(WRITELINE(wdxt_gen_device, irq5_w)) @@ -243,21 +245,12 @@ void wdxt_gen_device::dack_w(int line, uint8_t data) m_host->dack_w(data); } -//------------------------------------------------- -// wd1015_t0_r - -//------------------------------------------------- - -READ8_MEMBER( wdxt_gen_device::wd1015_t0_r ) -{ - return m_host->busy_r(); -} - //------------------------------------------------- // wd1015_t1_r - //------------------------------------------------- -READ8_MEMBER( wdxt_gen_device::wd1015_t1_r ) +READ_LINE_MEMBER( wdxt_gen_device::wd1015_t1_r ) { return 0; // TODO } diff --git a/src/devices/bus/isa/wdxt_gen.h b/src/devices/bus/isa/wdxt_gen.h index de34bc861c1..5a19cc8542c 100644 --- a/src/devices/bus/isa/wdxt_gen.h +++ b/src/devices/bus/isa/wdxt_gen.h @@ -51,8 +51,7 @@ public: DECLARE_READ8_MEMBER( rd322_r ); DECLARE_READ8_MEMBER( ram_r ); DECLARE_WRITE8_MEMBER( ram_w ); - DECLARE_READ8_MEMBER( wd1015_t0_r ); - DECLARE_READ8_MEMBER( wd1015_t1_r ); + DECLARE_READ_LINE_MEMBER( wd1015_t1_r ); DECLARE_READ8_MEMBER( wd1015_p1_r ); DECLARE_WRITE8_MEMBER( wd1015_p1_w ); DECLARE_READ8_MEMBER( wd1015_p2_r ); diff --git a/src/devices/bus/odyssey2/slot.h b/src/devices/bus/odyssey2/slot.h index 07f6be8f7ab..284300072ad 100644 --- a/src/devices/bus/odyssey2/slot.h +++ b/src/devices/bus/odyssey2/slot.h @@ -37,7 +37,7 @@ public: virtual void write_bank(int bank) {} virtual DECLARE_WRITE8_MEMBER(io_write) {} - virtual DECLARE_READ8_MEMBER(t0_read) { return 0; } + virtual DECLARE_READ_LINE_MEMBER(t0_read) { return 0; } void rom_alloc(uint32_t size, const char *tag); void ram_alloc(uint32_t size); @@ -88,12 +88,12 @@ public: virtual std::string get_default_card_software(get_default_card_software_hook &hook) const override; // reading and writing - virtual DECLARE_READ8_MEMBER(read_rom04); - virtual DECLARE_READ8_MEMBER(read_rom0c); - virtual DECLARE_WRITE8_MEMBER(io_write); - virtual DECLARE_READ8_MEMBER(t0_read) { if (m_cart) return m_cart->t0_read(space, offset); else return 0; } + DECLARE_READ8_MEMBER(read_rom04); + DECLARE_READ8_MEMBER(read_rom0c); + DECLARE_WRITE8_MEMBER(io_write); + DECLARE_READ_LINE_MEMBER(t0_read) { if (m_cart) return m_cart->t0_read(); else return 0; } - virtual void write_bank(int bank) { if (m_cart) m_cart->write_bank(bank); } + void write_bank(int bank) { if (m_cart) m_cart->write_bank(bank); } protected: diff --git a/src/devices/bus/odyssey2/voice.h b/src/devices/bus/odyssey2/voice.h index 8c82aeeab31..5262350823a 100644 --- a/src/devices/bus/odyssey2/voice.h +++ b/src/devices/bus/odyssey2/voice.h @@ -31,7 +31,7 @@ public: DECLARE_WRITE_LINE_MEMBER(lrq_callback); virtual DECLARE_WRITE8_MEMBER(io_write) override; - virtual DECLARE_READ8_MEMBER(t0_read) override { return m_speech->lrq_r() ? 0 : 1; } + virtual DECLARE_READ_LINE_MEMBER(t0_read) override { return m_speech->lrq_r() ? 0 : 1; } private: required_device m_speech; diff --git a/src/devices/bus/pc_kbd/ec1841.cpp b/src/devices/bus/pc_kbd/ec1841.cpp index 3b86b1a56cf..55ce89d3f6f 100644 --- a/src/devices/bus/pc_kbd/ec1841.cpp +++ b/src/devices/bus/pc_kbd/ec1841.cpp @@ -62,25 +62,17 @@ const tiny_rom_entry *ec_1841_keyboard_device::device_rom_region() const } -//------------------------------------------------- -// ADDRESS_MAP( kb_io ) -//------------------------------------------------- - -static ADDRESS_MAP_START( ec_1841_keyboard_io, AS_IO, 8, ec_1841_keyboard_device ) - AM_RANGE(MCS48_PORT_BUS, MCS48_PORT_BUS) AM_WRITE(bus_w) - AM_RANGE(MCS48_PORT_P1, MCS48_PORT_P1) AM_READWRITE(p1_r, p1_w) - AM_RANGE(MCS48_PORT_P2, MCS48_PORT_P2) AM_WRITE(p2_w) - AM_RANGE(MCS48_PORT_T1, MCS48_PORT_T1) AM_READ(t1_r) -ADDRESS_MAP_END - - //------------------------------------------------- // MACHINE_DRIVER( ec_1841_keyboard ) //------------------------------------------------- static MACHINE_CONFIG_FRAGMENT( ec_1841_keyboard ) MCFG_CPU_ADD(I8048_TAG, I8048, XTAL_5_46MHz) - MCFG_CPU_IO_MAP(ec_1841_keyboard_io) + MCFG_MCS48_PORT_BUS_OUT_CB(WRITE8(ec_1841_keyboard_device, bus_w)) + MCFG_MCS48_PORT_P1_IN_CB(READ8(ec_1841_keyboard_device, p1_r)) + MCFG_MCS48_PORT_P1_OUT_CB(WRITE8(ec_1841_keyboard_device, p1_w)) + MCFG_MCS48_PORT_P2_OUT_CB(WRITE8(ec_1841_keyboard_device, p2_w)) + MCFG_MCS48_PORT_T1_IN_CB(READLINE(ec_1841_keyboard_device, t1_r)) MACHINE_CONFIG_END @@ -438,7 +430,7 @@ WRITE8_MEMBER( ec_1841_keyboard_device::p2_w ) // t1_r - //------------------------------------------------- -READ8_MEMBER( ec_1841_keyboard_device::t1_r ) +READ_LINE_MEMBER( ec_1841_keyboard_device::t1_r ) { if (BIT(m_p2,0)) { m_q = 1; diff --git a/src/devices/bus/pc_kbd/ec1841.h b/src/devices/bus/pc_kbd/ec1841.h index 0df1084a6aa..6b381439202 100644 --- a/src/devices/bus/pc_kbd/ec1841.h +++ b/src/devices/bus/pc_kbd/ec1841.h @@ -38,7 +38,7 @@ public: DECLARE_READ8_MEMBER( p1_r ); DECLARE_WRITE8_MEMBER( p1_w ); DECLARE_WRITE8_MEMBER( p2_w ); - DECLARE_READ8_MEMBER( t1_r ); + DECLARE_READ_LINE_MEMBER( t1_r ); protected: // device-level overrides diff --git a/src/devices/bus/pc_kbd/iskr1030.cpp b/src/devices/bus/pc_kbd/iskr1030.cpp index 47701c0010a..1720b08f2b8 100644 --- a/src/devices/bus/pc_kbd/iskr1030.cpp +++ b/src/devices/bus/pc_kbd/iskr1030.cpp @@ -62,10 +62,7 @@ const tiny_rom_entry *iskr_1030_keyboard_device::device_rom_region() const //------------------------------------------------- static ADDRESS_MAP_START( iskr_1030_keyboard_io, AS_IO, 8, iskr_1030_keyboard_device ) - AM_RANGE(0x00, 0xFF) AM_READWRITE(ram_r, ram_w) - AM_RANGE(MCS48_PORT_P1, MCS48_PORT_P1) AM_READWRITE(p1_r, p1_w) - AM_RANGE(MCS48_PORT_P2, MCS48_PORT_P2) AM_WRITE(p2_w) - AM_RANGE(MCS48_PORT_T1, MCS48_PORT_T1) AM_READ(t1_r) + AM_RANGE(0x00, 0xff) AM_READWRITE(ram_r, ram_w) ADDRESS_MAP_END @@ -76,6 +73,10 @@ ADDRESS_MAP_END static MACHINE_CONFIG_FRAGMENT( iskr_1030_keyboard ) MCFG_CPU_ADD(I8048_TAG, I8048, XTAL_5MHz) MCFG_CPU_IO_MAP(iskr_1030_keyboard_io) + MCFG_MCS48_PORT_P1_IN_CB(READ8(iskr_1030_keyboard_device, p1_r)) + MCFG_MCS48_PORT_P1_OUT_CB(WRITE8(iskr_1030_keyboard_device, p1_w)) + MCFG_MCS48_PORT_P2_OUT_CB(WRITE8(iskr_1030_keyboard_device, p2_w)) + MCFG_MCS48_PORT_T1_IN_CB(READLINE(iskr_1030_keyboard_device, t1_r)) MACHINE_CONFIG_END @@ -347,7 +348,7 @@ WRITE_LINE_MEMBER( iskr_1030_keyboard_device::data_write ) // t1_r - //------------------------------------------------- -READ8_MEMBER( iskr_1030_keyboard_device::t1_r ) +READ_LINE_MEMBER( iskr_1030_keyboard_device::t1_r ) { uint8_t data = data_signal(); uint8_t bias = m_p1 & 15; diff --git a/src/devices/bus/pc_kbd/iskr1030.h b/src/devices/bus/pc_kbd/iskr1030.h index 3bc4412c895..eb47dcbe6dc 100644 --- a/src/devices/bus/pc_kbd/iskr1030.h +++ b/src/devices/bus/pc_kbd/iskr1030.h @@ -40,7 +40,7 @@ public: DECLARE_READ8_MEMBER( p1_r ); DECLARE_WRITE8_MEMBER( p1_w ); DECLARE_WRITE8_MEMBER( p2_w ); - DECLARE_READ8_MEMBER( t1_r ); + DECLARE_READ_LINE_MEMBER( t1_r ); protected: // device-level overrides diff --git a/src/devices/bus/pc_kbd/pc83.cpp b/src/devices/bus/pc_kbd/pc83.cpp index 7ff7ad4f4e0..33f59c9eb16 100644 --- a/src/devices/bus/pc_kbd/pc83.cpp +++ b/src/devices/bus/pc_kbd/pc83.cpp @@ -46,25 +46,16 @@ const tiny_rom_entry *ibm_pc_83_keyboard_device::device_rom_region() const } -//------------------------------------------------- -// ADDRESS_MAP( kb_io ) -//------------------------------------------------- - -static ADDRESS_MAP_START( ibm_pc_83_keyboard_io, AS_IO, 8, ibm_pc_83_keyboard_device ) - AM_RANGE(MCS48_PORT_BUS, MCS48_PORT_BUS) AM_WRITE(bus_w) - AM_RANGE(MCS48_PORT_P1, MCS48_PORT_P1) AM_READ(p1_r) AM_WRITENOP - AM_RANGE(MCS48_PORT_P2, MCS48_PORT_P2) AM_WRITE(p2_w) - AM_RANGE(MCS48_PORT_T0, MCS48_PORT_T0) AM_READ(t1_r) -ADDRESS_MAP_END - - //------------------------------------------------- // MACHINE_DRIVER( ibm_pc_83_keyboard ) //------------------------------------------------- static MACHINE_CONFIG_FRAGMENT( ibm_pc_83_keyboard ) MCFG_CPU_ADD(I8048_TAG, I8048, MCS48_LC_CLOCK(IND_U(47), CAP_P(20))) - MCFG_CPU_IO_MAP(ibm_pc_83_keyboard_io) + MCFG_MCS48_PORT_BUS_OUT_CB(WRITE8(ibm_pc_83_keyboard_device, bus_w)) + MCFG_MCS48_PORT_P1_IN_CB(READ8(ibm_pc_83_keyboard_device, p1_r)) + MCFG_MCS48_PORT_P2_OUT_CB(WRITE8(ibm_pc_83_keyboard_device, p2_w)) + MCFG_MCS48_PORT_T0_IN_CB(READLINE(ibm_pc_83_keyboard_device, t0_r)) MACHINE_CONFIG_END @@ -362,10 +353,10 @@ WRITE8_MEMBER( ibm_pc_83_keyboard_device::p2_w ) //------------------------------------------------- -// t1_r - +// t0_r - //------------------------------------------------- -READ8_MEMBER( ibm_pc_83_keyboard_device::t1_r ) +READ_LINE_MEMBER( ibm_pc_83_keyboard_device::t0_r ) { uint8_t data = 0xff; diff --git a/src/devices/bus/pc_kbd/pc83.h b/src/devices/bus/pc_kbd/pc83.h index 147ae3153c4..9d1fc24c47f 100644 --- a/src/devices/bus/pc_kbd/pc83.h +++ b/src/devices/bus/pc_kbd/pc83.h @@ -38,7 +38,7 @@ public: DECLARE_WRITE8_MEMBER( bus_w ); DECLARE_READ8_MEMBER( p1_r ); DECLARE_WRITE8_MEMBER( p2_w ); - DECLARE_READ8_MEMBER( t1_r ); + DECLARE_READ_LINE_MEMBER( t0_r ); protected: // device-level overrides diff --git a/src/devices/bus/pc_kbd/pcat84.cpp b/src/devices/bus/pc_kbd/pcat84.cpp index a0ea6f2c1f6..0456d7c31fb 100644 --- a/src/devices/bus/pc_kbd/pcat84.cpp +++ b/src/devices/bus/pc_kbd/pcat84.cpp @@ -99,26 +99,19 @@ const tiny_rom_entry *ibm_3270pc_122_keyboard_device::device_rom_region() const } -//------------------------------------------------- -// ADDRESS_MAP( kb_io ) -//------------------------------------------------- - -static ADDRESS_MAP_START( ibm_pc_at_84_keyboard_io, AS_IO, 8, ibm_pc_at_84_keyboard_device ) - AM_RANGE(MCS48_PORT_BUS, MCS48_PORT_BUS) AM_READNOP AM_WRITE(bus_w) - AM_RANGE(MCS48_PORT_P1, MCS48_PORT_P1) AM_READWRITE(p1_r, p1_w) - AM_RANGE(MCS48_PORT_P2, MCS48_PORT_P2) AM_READWRITE(p2_r, p2_w) - AM_RANGE(MCS48_PORT_T0, MCS48_PORT_T0) AM_READ(t0_r) - AM_RANGE(MCS48_PORT_T1, MCS48_PORT_T1) AM_READ(t1_r) -ADDRESS_MAP_END - - //------------------------------------------------- // MACHINE_DRIVER( ibm_pc_at_84_keyboard ) //------------------------------------------------- static MACHINE_CONFIG_FRAGMENT( ibm_pc_at_84_keyboard ) MCFG_CPU_ADD(I8048_TAG, I8048, 5364000) - MCFG_CPU_IO_MAP(ibm_pc_at_84_keyboard_io) + MCFG_MCS48_PORT_BUS_OUT_CB(WRITE8(ibm_pc_at_84_keyboard_device, bus_w)) + MCFG_MCS48_PORT_P1_IN_CB(READ8(ibm_pc_at_84_keyboard_device, p1_r)) + MCFG_MCS48_PORT_P1_OUT_CB(WRITE8(ibm_pc_at_84_keyboard_device, p1_w)) + MCFG_MCS48_PORT_P2_IN_CB(READ8(ibm_pc_at_84_keyboard_device, p2_r)) + MCFG_MCS48_PORT_P2_OUT_CB(WRITE8(ibm_pc_at_84_keyboard_device, p2_w)) + MCFG_MCS48_PORT_T0_IN_CB(READLINE(ibm_pc_at_84_keyboard_device, t0_r)) + MCFG_MCS48_PORT_T1_IN_CB(READLINE(ibm_pc_at_84_keyboard_device, t1_r)) MACHINE_CONFIG_END @@ -553,7 +546,7 @@ WRITE8_MEMBER( ibm_pc_at_84_keyboard_device::p2_w ) // t0_r - //------------------------------------------------- -READ8_MEMBER( ibm_pc_at_84_keyboard_device::t0_r ) +READ_LINE_MEMBER( ibm_pc_at_84_keyboard_device::t0_r ) { return !data_signal(); } @@ -563,7 +556,7 @@ READ8_MEMBER( ibm_pc_at_84_keyboard_device::t0_r ) // t1_r - //------------------------------------------------- -READ8_MEMBER( ibm_pc_at_84_keyboard_device::t1_r ) +READ_LINE_MEMBER( ibm_pc_at_84_keyboard_device::t1_r ) { return key_depressed(); } diff --git a/src/devices/bus/pc_kbd/pcat84.h b/src/devices/bus/pc_kbd/pcat84.h index 4fbf700521f..98b3bb628f1 100644 --- a/src/devices/bus/pc_kbd/pcat84.h +++ b/src/devices/bus/pc_kbd/pcat84.h @@ -41,8 +41,8 @@ public: DECLARE_WRITE8_MEMBER( p1_w ); DECLARE_READ8_MEMBER( p2_r ); DECLARE_WRITE8_MEMBER( p2_w ); - DECLARE_READ8_MEMBER( t0_r ); - DECLARE_READ8_MEMBER( t1_r ); + DECLARE_READ_LINE_MEMBER( t0_r ); + DECLARE_READ_LINE_MEMBER( t1_r ); protected: // device-level overrides diff --git a/src/devices/bus/pc_kbd/pcxt83.cpp b/src/devices/bus/pc_kbd/pcxt83.cpp index 00ba9400b29..6d8cb97a9fb 100644 --- a/src/devices/bus/pc_kbd/pcxt83.cpp +++ b/src/devices/bus/pc_kbd/pcxt83.cpp @@ -68,26 +68,18 @@ const tiny_rom_entry *ibm_pc_xt_83_keyboard_device::device_rom_region() const } -//------------------------------------------------- -// ADDRESS_MAP( kb_io ) -//------------------------------------------------- - -static ADDRESS_MAP_START( ibm_pc_xt_83_keyboard_io, AS_IO, 8, ibm_pc_xt_83_keyboard_device ) - AM_RANGE(MCS48_PORT_BUS, MCS48_PORT_BUS) AM_READWRITE(bus_r, bus_w) - AM_RANGE(MCS48_PORT_P1, MCS48_PORT_P1) AM_WRITE(p1_w) - AM_RANGE(MCS48_PORT_P2, MCS48_PORT_P2) AM_WRITE(p2_w) - AM_RANGE(MCS48_PORT_T0, MCS48_PORT_T0) AM_READ(t0_r) - AM_RANGE(MCS48_PORT_T1, MCS48_PORT_T1) AM_READ(t1_r) -ADDRESS_MAP_END - - //------------------------------------------------- // MACHINE_DRIVER( ibm_pc_xt_83_keyboard ) //------------------------------------------------- static MACHINE_CONFIG_FRAGMENT( ibm_pc_xt_83_keyboard ) MCFG_CPU_ADD(I8048_TAG, I8048, MCS48_LC_CLOCK(IND_U(47), CAP_P(20.7))) - MCFG_CPU_IO_MAP(ibm_pc_xt_83_keyboard_io) + MCFG_MCS48_PORT_BUS_IN_CB(READ8(ibm_pc_xt_83_keyboard_device, bus_r)) + MCFG_MCS48_PORT_BUS_OUT_CB(WRITE8(ibm_pc_xt_83_keyboard_device, bus_w)) + MCFG_MCS48_PORT_P1_OUT_CB(WRITE8(ibm_pc_xt_83_keyboard_device, p1_w)) + MCFG_MCS48_PORT_P2_OUT_CB(WRITE8(ibm_pc_xt_83_keyboard_device, p2_w)) + MCFG_MCS48_PORT_T0_IN_CB(READLINE(ibm_pc_xt_83_keyboard_device, t0_r)) + MCFG_MCS48_PORT_T1_IN_CB(READLINE(ibm_pc_xt_83_keyboard_device, t1_r)) MACHINE_CONFIG_END @@ -425,7 +417,7 @@ WRITE8_MEMBER( ibm_pc_xt_83_keyboard_device::p2_w ) // t0_r - //------------------------------------------------- -READ8_MEMBER( ibm_pc_xt_83_keyboard_device::t0_r ) +READ_LINE_MEMBER( ibm_pc_xt_83_keyboard_device::t0_r ) { return clock_signal(); } @@ -435,7 +427,7 @@ READ8_MEMBER( ibm_pc_xt_83_keyboard_device::t0_r ) // t1_r - //------------------------------------------------- -READ8_MEMBER( ibm_pc_xt_83_keyboard_device::t1_r ) +READ_LINE_MEMBER( ibm_pc_xt_83_keyboard_device::t1_r ) { return BIT(m_p2, 3) && m_q; } diff --git a/src/devices/bus/pc_kbd/pcxt83.h b/src/devices/bus/pc_kbd/pcxt83.h index 0c2e7242a6e..034b0499e26 100644 --- a/src/devices/bus/pc_kbd/pcxt83.h +++ b/src/devices/bus/pc_kbd/pcxt83.h @@ -39,8 +39,8 @@ public: DECLARE_WRITE8_MEMBER( bus_w ); DECLARE_WRITE8_MEMBER( p1_w ); DECLARE_WRITE8_MEMBER( p2_w ); - DECLARE_READ8_MEMBER( t0_r ); - DECLARE_READ8_MEMBER( t1_r ); + DECLARE_READ_LINE_MEMBER( t0_r ); + DECLARE_READ_LINE_MEMBER( t1_r ); protected: // device-level overrides diff --git a/src/devices/cpu/mcs48/mcs48.cpp b/src/devices/cpu/mcs48/mcs48.cpp index c06bd894508..f1427487cd6 100644 --- a/src/devices/cpu/mcs48/mcs48.cpp +++ b/src/devices/cpu/mcs48/mcs48.cpp @@ -128,17 +128,16 @@ #define ram_r(a) m_data->read_byte(a) #define ram_w(a,V) m_data->write_byte(a, V) -/* ports are mapped to AS_IO */ +/* ports are mapped to AS_IO and callbacks */ #define ext_r(a) m_io->read_byte(a) #define ext_w(a,V) m_io->write_byte(a, V) -#define port_r(a) m_io->read_byte(MCS48_PORT_P0 + a) -#define port_w(a,V) m_io->write_byte(MCS48_PORT_P0 + a, V) -#define test_r(a) m_io->read_byte(MCS48_PORT_T0 + a) -#define test_w(a,V) m_io->write_byte(MCS48_PORT_T0 + a, V) -#define bus_r() m_io->read_byte(MCS48_PORT_BUS) -#define bus_w(V) m_io->write_byte(MCS48_PORT_BUS, V) -#define ea_r() m_io->read_byte(MCS48_PORT_EA) -#define prog_w(V) m_io->write_byte(MCS48_PORT_PROG, V) +#define port_r(a) m_port_in_cb[a-1]() +#define port_w(a,V) m_port_out_cb[a-1](V) +#define test_r(a) m_test_in_cb[a]() +#define test_w(a,V) m_test_out_cb[a](V) +#define bus_r() m_bus_in_cb() +#define bus_w(V) m_bus_out_cb(V) +#define prog_w(V) m_prog_out_cb(V) /* r0-r7 map to memory via the regptr */ #define R0 m_regptr[0] @@ -209,7 +208,14 @@ mcs48_cpu_device::mcs48_cpu_device(const machine_config &mconfig, device_type ty , ( ( rom_size == 1024 ) ? ADDRESS_MAP_NAME(program_10bit) : ( ( rom_size == 2048 ) ? ADDRESS_MAP_NAME(program_11bit) : ( ( rom_size == 4096 ) ? ADDRESS_MAP_NAME(program_12bit) : nullptr ) ) )) , m_data_config("data", ENDIANNESS_LITTLE, 8, ( ( ram_size == 64 ) ? 6 : ( ( ram_size == 128 ) ? 7 : 8 ) ), 0 , ( ( ram_size == 64 ) ? ADDRESS_MAP_NAME(data_6bit) : ( ( ram_size == 128 ) ? ADDRESS_MAP_NAME(data_7bit) : ADDRESS_MAP_NAME(data_8bit) ) )) - , m_io_config("io", ENDIANNESS_LITTLE, 8, 9, 0) + , m_io_config("io", ENDIANNESS_LITTLE, 8, 8, 0) + , m_port_in_cb{{*this}, {*this}} + , m_port_out_cb{{*this}, {*this}} + , m_bus_in_cb(*this) + , m_bus_out_cb(*this) + , m_test_in_cb{{*this}, {*this}} + , m_t0_clk_func() + , m_prog_out_cb(*this) , m_psw(0) , m_feature_mask(feature_mask) , m_int_rom_size(rom_size) @@ -516,16 +522,16 @@ uint8_t mcs48_cpu_device::p2_mask() the 8243 expander chip -------------------------------------------------*/ -void mcs48_cpu_device::expander_operation(uint8_t operation, uint8_t port) +void mcs48_cpu_device::expander_operation(expander_op operation, uint8_t port) { /* put opcode/data on low 4 bits of P2 */ - port_w(2, m_p2 = (m_p2 & 0xf0) | (operation << 2) | (port & 3)); + port_w(2, m_p2 = (m_p2 & 0xf0) | (uint8_t(operation) << 2) | (port & 3)); /* generate high-to-low transition on PROG line */ prog_w(0); /* put data on low 4 bits of P2 */ - if (operation != 0) + if (operation != EXPANDER_OP_READ) port_w(2, m_p2 = (m_p2 & 0xf0) | (m_a & 0x0f)); else m_a = port_r(2) | 0x0f; @@ -591,10 +597,10 @@ OPHANDLER( anl_a_n ) { m_a &= argument_fetch(); return 2; } OPHANDLER( anl_bus_n ) { bus_w(bus_r() & argument_fetch()); return 2; } OPHANDLER( anl_p1_n ) { port_w(1, m_p1 &= argument_fetch()); return 2; } OPHANDLER( anl_p2_n ) { port_w(2, m_p2 &= argument_fetch() | ~p2_mask()); return 2; } -OPHANDLER( anld_p4_a ) { expander_operation(MCS48_EXPANDER_OP_AND, 4); return 2; } -OPHANDLER( anld_p5_a ) { expander_operation(MCS48_EXPANDER_OP_AND, 5); return 2; } -OPHANDLER( anld_p6_a ) { expander_operation(MCS48_EXPANDER_OP_AND, 6); return 2; } -OPHANDLER( anld_p7_a ) { expander_operation(MCS48_EXPANDER_OP_AND, 7); return 2; } +OPHANDLER( anld_p4_a ) { expander_operation(EXPANDER_OP_AND, 4); return 2; } +OPHANDLER( anld_p5_a ) { expander_operation(EXPANDER_OP_AND, 5); return 2; } +OPHANDLER( anld_p6_a ) { expander_operation(EXPANDER_OP_AND, 6); return 2; } +OPHANDLER( anld_p7_a ) { expander_operation(EXPANDER_OP_AND, 7); return 2; } OPHANDLER( call_0 ) { execute_call(argument_fetch() | 0x000); return 2; } OPHANDLER( call_1 ) { execute_call(argument_fetch() | 0x100); return 2; } @@ -661,7 +667,10 @@ OPHANDLER( en_dma ) { m_dma_enabled = true; port_w(2, m_p2); return 1; } OPHANDLER( en_flags ) { m_flags_enabled = true; port_w(2, m_p2); return 1; } OPHANDLER( ent0_clk ) { - logerror("MCS-48 PC:%04X - Unimplemented opcode = %02x\n", m_pc - 1, program_r(m_pc - 1)); + if (!m_t0_clk_func.isnull()) + m_t0_clk_func(clock() / 3); + else + logerror("T0 clock enabled\n"); return 1; } @@ -765,14 +774,14 @@ OPHANDLER( mov_xr1_a ) { ram_w(R1, m_a); return 1; } OPHANDLER( mov_xr0_n ) { ram_w(R0, argument_fetch()); return 2; } OPHANDLER( mov_xr1_n ) { ram_w(R1, argument_fetch()); return 2; } -OPHANDLER( movd_a_p4 ) { expander_operation(MCS48_EXPANDER_OP_READ, 4); return 2; } -OPHANDLER( movd_a_p5 ) { expander_operation(MCS48_EXPANDER_OP_READ, 5); return 2; } -OPHANDLER( movd_a_p6 ) { expander_operation(MCS48_EXPANDER_OP_READ, 6); return 2; } -OPHANDLER( movd_a_p7 ) { expander_operation(MCS48_EXPANDER_OP_READ, 7); return 2; } -OPHANDLER( movd_p4_a ) { expander_operation(MCS48_EXPANDER_OP_WRITE, 4); return 2; } -OPHANDLER( movd_p5_a ) { expander_operation(MCS48_EXPANDER_OP_WRITE, 5); return 2; } -OPHANDLER( movd_p6_a ) { expander_operation(MCS48_EXPANDER_OP_WRITE, 6); return 2; } -OPHANDLER( movd_p7_a ) { expander_operation(MCS48_EXPANDER_OP_WRITE, 7); return 2; } +OPHANDLER( movd_a_p4 ) { expander_operation(EXPANDER_OP_READ, 4); return 2; } +OPHANDLER( movd_a_p5 ) { expander_operation(EXPANDER_OP_READ, 5); return 2; } +OPHANDLER( movd_a_p6 ) { expander_operation(EXPANDER_OP_READ, 6); return 2; } +OPHANDLER( movd_a_p7 ) { expander_operation(EXPANDER_OP_READ, 7); return 2; } +OPHANDLER( movd_p4_a ) { expander_operation(EXPANDER_OP_WRITE, 4); return 2; } +OPHANDLER( movd_p5_a ) { expander_operation(EXPANDER_OP_WRITE, 5); return 2; } +OPHANDLER( movd_p6_a ) { expander_operation(EXPANDER_OP_WRITE, 6); return 2; } +OPHANDLER( movd_p7_a ) { expander_operation(EXPANDER_OP_WRITE, 7); return 2; } OPHANDLER( movp_a_xa ) { m_a = program_r((m_pc & 0xf00) | m_a); return 2; } OPHANDLER( movp3_a_xa ) { m_a = program_r(0x300 | m_a); return 2; } @@ -799,10 +808,10 @@ OPHANDLER( orl_a_n ) { m_a |= argument_fetch(); return 2; } OPHANDLER( orl_bus_n ) { bus_w(bus_r() | argument_fetch()); return 2; } OPHANDLER( orl_p1_n ) { port_w(1, m_p1 |= argument_fetch()); return 2; } OPHANDLER( orl_p2_n ) { port_w(2, m_p2 |= argument_fetch() & p2_mask()); return 2; } -OPHANDLER( orld_p4_a ) { expander_operation(MCS48_EXPANDER_OP_OR, 4); return 2; } -OPHANDLER( orld_p5_a ) { expander_operation(MCS48_EXPANDER_OP_OR, 5); return 2; } -OPHANDLER( orld_p6_a ) { expander_operation(MCS48_EXPANDER_OP_OR, 6); return 2; } -OPHANDLER( orld_p7_a ) { expander_operation(MCS48_EXPANDER_OP_OR, 7); return 2; } +OPHANDLER( orld_p4_a ) { expander_operation(EXPANDER_OP_OR, 4); return 2; } +OPHANDLER( orld_p5_a ) { expander_operation(EXPANDER_OP_OR, 5); return 2; } +OPHANDLER( orld_p6_a ) { expander_operation(EXPANDER_OP_OR, 6); return 2; } +OPHANDLER( orld_p7_a ) { expander_operation(EXPANDER_OP_OR, 7); return 2; } OPHANDLER( outl_bus_a ) { bus_w(m_a); return 2; } OPHANDLER( outl_p1_a ) { port_w(1, m_p1 = m_a); return 2; } @@ -940,6 +949,13 @@ const mcs48_cpu_device::mcs48_ophandler mcs48_cpu_device::s_opcode_table[256]= INITIALIZATION/RESET ***************************************************************************/ +void mcs48_cpu_device::device_config_complete() +{ + m_t0_clk_func.bind_relative_to(*owner()); + if (!m_t0_clk_func.isnull()) + m_t0_clk_func(clock() / 3); +} + /*------------------------------------------------- mcs48_init - generic MCS-48 initialization -------------------------------------------------*/ @@ -967,6 +983,17 @@ void mcs48_cpu_device::device_start() m_data = &space(AS_DATA); m_io = &space(AS_IO); + // resolve callbacks + for (auto &cb : m_port_in_cb) + cb.resolve_safe(0xff); + for (auto &cb : m_port_out_cb) + cb.resolve_safe(); + m_bus_in_cb.resolve_safe(0xff); + m_bus_out_cb.resolve_safe(); + for (auto &cb : m_test_in_cb) + cb.resolve_safe(0); + m_prog_out_cb.resolve_safe(); + /* set up the state table */ { state_add(MCS48_PC, "PC", m_pc).mask(0xfff); @@ -1046,6 +1073,8 @@ void mcs48_cpu_device::device_reset() m_sts = 0; m_flags_enabled = false; m_dma_enabled = false; + if (!m_t0_clk_func.isnull()) + m_t0_clk_func(0); /* confirmed from interrupt logic description */ m_irq_in_progress = false; @@ -1242,6 +1271,16 @@ WRITE8_MEMBER( upi41_cpu_device::upi41_master_w ) } +READ8_MEMBER(mcs48_cpu_device::p1_r) +{ + return m_p1; +} + +READ8_MEMBER(mcs48_cpu_device::p2_r) +{ + return m_p2; +} + /*************************************************************************** GENERAL CONTEXT ACCESS diff --git a/src/devices/cpu/mcs48/mcs48.h b/src/devices/cpu/mcs48/mcs48.h index e48f670f496..8e23671684c 100644 --- a/src/devices/cpu/mcs48/mcs48.h +++ b/src/devices/cpu/mcs48/mcs48.h @@ -56,30 +56,6 @@ enum }; -/* special I/O space ports */ -enum -{ - MCS48_PORT_P0 = 0x100, /* Not used */ - MCS48_PORT_P1 = 0x101, - MCS48_PORT_P2 = 0x102, - MCS48_PORT_T0 = 0x110, - MCS48_PORT_T1 = 0x111, - MCS48_PORT_BUS = 0x120, - MCS48_PORT_PROG = 0x121 /* PROG line to 8243 expander */ -}; - - -/* 8243 expander operations */ -enum -{ - MCS48_EXPANDER_OP_READ = 0, - MCS48_EXPANDER_OP_WRITE = 1, - MCS48_EXPANDER_OP_OR = 2, - MCS48_EXPANDER_OP_AND = 3 -}; - - - /*************************************************************************** MACROS ***************************************************************************/ @@ -90,6 +66,41 @@ enum #define MCS48_ALE_CLOCK(_clock) \ attotime::from_hz(_clock/(3*5)) + +#define MCFG_MCS48_PORT_P1_IN_CB(_devcb) \ + devcb = &mcs48_cpu_device::set_port_in_cb(*device, 0, DEVCB_##_devcb); +#define MCFG_MCS48_PORT_P1_OUT_CB(_devcb) \ + devcb = &mcs48_cpu_device::set_port_out_cb(*device, 0, DEVCB_##_devcb); + +#define MCFG_MCS48_PORT_P2_IN_CB(_devcb) \ + devcb = &mcs48_cpu_device::set_port_in_cb(*device, 1, DEVCB_##_devcb); +#define MCFG_MCS48_PORT_P2_OUT_CB(_devcb) \ + devcb = &mcs48_cpu_device::set_port_out_cb(*device, 1, DEVCB_##_devcb); + +#define MCFG_MCS48_PORT_T0_IN_CB(_devcb) \ + devcb = &mcs48_cpu_device::set_test_in_cb(*device, 0, DEVCB_##_devcb); +#define MCFG_MCS48_PORT_T0_CLK_DEVICE(_tag) \ + mcs48_cpu_device::set_t0_clk_cb(*device, clock_update_delegate(FUNC(device_t::set_unscaled_clock), _tag, (device_t *)nullptr)); +#define MCFG_MCS48_PORT_T0_CLK_CUSTOM(_class, _func) \ + mcs48_cpu_device::set_t0_clk_cb(*device, clock_update_delegate(&_class::_func, #_class "::" _func, owner)); + +#define MCFG_MCS48_PORT_T1_IN_CB(_devcb) \ + devcb = &mcs48_cpu_device::set_test_in_cb(*device, 1, DEVCB_##_devcb); + +#define MCFG_MCS48_PORT_BUS_IN_CB(_devcb) \ + devcb = &mcs48_cpu_device::set_bus_in_cb(*device, DEVCB_##_devcb); +#define MCFG_MCS48_PORT_BUS_OUT_CB(_devcb) \ + devcb = &mcs48_cpu_device::set_bus_out_cb(*device, DEVCB_##_devcb); + +// PROG line to 8243 expander +#define MCFG_MCS48_PORT_PROG_OUT_CB(_devcb) \ + devcb = &mcs48_cpu_device::set_prog_out_cb(*device, DEVCB_##_devcb); + + +/*************************************************************************** + TYPES +***************************************************************************/ + /* Official Intel MCS-48 parts */ extern const device_type I8021; /* 1k internal ROM, 64 bytes internal RAM */ extern const device_type I8022; /* 2k internal ROM, 128 bytes internal RAM */ @@ -120,12 +131,34 @@ extern const device_type M58715; /* 8049 clone */ class mcs48_cpu_device : public cpu_device { public: + // 8243 expander operations + enum expander_op + { + EXPANDER_OP_READ = 0, + EXPANDER_OP_WRITE = 1, + EXPANDER_OP_OR = 2, + EXPANDER_OP_AND = 3 + }; + // construction/destruction mcs48_cpu_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, uint32_t clock, const char *shortname, int rom_size, int ram_size, uint8_t feature_mask = 0); + // static configuration + template static devcb_base &set_port_in_cb(device_t &device, int n, Object &&obj) { return downcast(device).m_port_in_cb[n].set_callback(std::forward(obj)); } + template static devcb_base &set_port_out_cb(device_t &device, int n, Object &&obj) { return downcast(device).m_port_out_cb[n].set_callback(std::forward(obj)); } + template static devcb_base &set_bus_in_cb(device_t &device, Object &&obj) { return downcast(device).m_bus_in_cb.set_callback(std::forward(obj)); } + template static devcb_base &set_bus_out_cb(device_t &device, Object &&obj) { return downcast(device).m_bus_out_cb.set_callback(std::forward(obj)); } + template static devcb_base &set_test_in_cb(device_t &device, int n, Object &&obj) { return downcast(device).m_test_in_cb[n].set_callback(std::forward(obj)); } + static void set_t0_clk_cb(device_t &device, clock_update_delegate &&func) { downcast(device).m_t0_clk_func = std::move(func); } + template static devcb_base &set_prog_out_cb(device_t &device, Object &&obj) { return downcast(device).m_prog_out_cb.set_callback(std::forward(obj)); } + + DECLARE_READ8_MEMBER(p1_r); + DECLARE_READ8_MEMBER(p2_r); + protected: // device-level overrides virtual void device_start() override; + virtual void device_config_complete() override; virtual void device_reset() override; // device_execute_interface overrides @@ -159,6 +192,15 @@ protected: address_space_config m_data_config; address_space_config m_io_config; + devcb_read8 m_port_in_cb[2]; + devcb_write8 m_port_out_cb[2]; + devcb_read8 m_bus_in_cb; + devcb_write8 m_bus_out_cb; + + devcb_read_line m_test_in_cb[2]; + clock_update_delegate m_t0_clk_func; + devcb_write_line m_prog_out_cb; + uint16_t m_prevpc; /* 16-bit previous program counter */ uint16_t m_pc; /* 16-bit program counter */ @@ -215,7 +257,7 @@ protected: void execute_call(uint16_t address); void execute_jcc(uint8_t result); uint8_t p2_mask(); - void expander_operation(uint8_t operation, uint8_t port); + void expander_operation(expander_op operation, uint8_t port); int check_irqs(); void burn_cycles(int count); diff --git a/src/devices/machine/at_keybc.cpp b/src/devices/machine/at_keybc.cpp index d8db7bf8d46..2f2b528cb6e 100644 --- a/src/devices/machine/at_keybc.cpp +++ b/src/devices/machine/at_keybc.cpp @@ -17,14 +17,6 @@ const device_type AT_KEYBOARD_CONTROLLER = device_creator; -// i/o map for the 8042 -static ADDRESS_MAP_START( at_keybc_io, AS_IO, 8, at_keyboard_controller_device) - AM_RANGE(MCS48_PORT_T0, MCS48_PORT_T0) AM_READ(t0_r) - AM_RANGE(MCS48_PORT_T1, MCS48_PORT_T1) AM_READ(t1_r) - AM_RANGE(MCS48_PORT_P1, MCS48_PORT_P1) AM_READ( p1_r) - AM_RANGE(MCS48_PORT_P2, MCS48_PORT_P2) AM_READWRITE(p2_r, p2_w) -ADDRESS_MAP_END - static INPUT_PORTS_START( at_keybc ) PORT_START("DSW") PORT_BIT( 0xbf, 0xbf, IPT_UNUSED ) @@ -36,7 +28,11 @@ INPUT_PORTS_END // machine fragment static MACHINE_CONFIG_FRAGMENT( at_keybc ) MCFG_CPU_ADD("at_keybc", I8042, DERIVED_CLOCK(1,1)) - MCFG_CPU_IO_MAP(at_keybc_io) + MCFG_MCS48_PORT_T0_IN_CB(READLINE(at_keyboard_controller_device, t0_r)) + MCFG_MCS48_PORT_T1_IN_CB(READLINE(at_keyboard_controller_device, t1_r)) + MCFG_MCS48_PORT_P1_IN_CB(READ8(at_keyboard_controller_device, p1_r)) + MCFG_MCS48_PORT_P2_IN_CB(READ8(at_keyboard_controller_device, p2_r)) + MCFG_MCS48_PORT_P2_OUT_CB(WRITE8(at_keyboard_controller_device, p2_w)) MACHINE_CONFIG_END // rom definition for the 8042 internal rom @@ -134,12 +130,12 @@ void at_keyboard_controller_device::device_reset() // INTERNAL 8042 READ/WRITE HANDLERS //************************************************************************** -READ8_MEMBER( at_keyboard_controller_device::t0_r ) +READ_LINE_MEMBER( at_keyboard_controller_device::t0_r ) { return m_clock_signal; } -READ8_MEMBER( at_keyboard_controller_device::t1_r ) +READ_LINE_MEMBER( at_keyboard_controller_device::t1_r ) { return m_data_signal; } diff --git a/src/devices/machine/at_keybc.h b/src/devices/machine/at_keybc.h index 8a290234ef5..7827517c4b5 100644 --- a/src/devices/machine/at_keybc.h +++ b/src/devices/machine/at_keybc.h @@ -56,8 +56,8 @@ public: template static devcb_base &set_keyboard_data_callback(device_t &device, _Object object) { return downcast(device).m_keyboard_data_cb.set_callback(object); } // internal 8042 interface - DECLARE_READ8_MEMBER( t0_r ); - DECLARE_READ8_MEMBER( t1_r ); + DECLARE_READ_LINE_MEMBER( t0_r ); + DECLARE_READ_LINE_MEMBER( t1_r ); DECLARE_READ8_MEMBER( p1_r ); DECLARE_READ8_MEMBER( p2_r ); DECLARE_WRITE8_MEMBER( p2_w ); diff --git a/src/devices/machine/i8243.cpp b/src/devices/machine/i8243.cpp index cc3e23211e8..6218f3fa919 100644 --- a/src/devices/machine/i8243.cpp +++ b/src/devices/machine/i8243.cpp @@ -4,11 +4,12 @@ i8243.c - Intel 8243 Port Expander + Intel 8243 Port Expander (for MCS-48) ***************************************************************************/ #include "emu.h" +#include "cpu/mcs48/mcs48.h" #include "i8243.h" //************************************************************************** @@ -56,7 +57,7 @@ void i8243_device::device_reset() i8243_p2_r - handle a read from port 2 -------------------------------------------------*/ -READ8_MEMBER(i8243_device::i8243_p2_r) +READ8_MEMBER(i8243_device::p2_r) { return m_p2out; } @@ -66,7 +67,7 @@ READ8_MEMBER(i8243_device::i8243_p2_r) i8243_p2_r - handle a write to port 2 -------------------------------------------------*/ -WRITE8_MEMBER(i8243_device::i8243_p2_w) +WRITE8_MEMBER(i8243_device::p2_w) { m_p2 = data & 0x0f; } @@ -77,18 +78,15 @@ WRITE8_MEMBER(i8243_device::i8243_p2_w) line state -------------------------------------------------*/ -WRITE8_MEMBER(i8243_device::i8243_prog_w) +WRITE_LINE_MEMBER(i8243_device::prog_w) { - /* only care about low bit */ - data &= 1; - /* on high->low transition state, latch opcode/port */ - if(m_prog && !data) + if (m_prog && !state) { m_opcode = m_p2; /* if this is a read opcode, copy result to p2out */ - if((m_opcode >> 2) == MCS48_EXPANDER_OP_READ) + if ((m_opcode >> 2) == mcs48_cpu_device::EXPANDER_OP_READ) { if (m_readhandler.isnull()) { @@ -99,21 +97,24 @@ WRITE8_MEMBER(i8243_device::i8243_prog_w) } /* on low->high transition state, act on opcode */ - else if(!m_prog && data) + else if (!m_prog && state) { - switch(m_opcode >> 2) + switch (m_opcode >> 2) { - case MCS48_EXPANDER_OP_WRITE: + case mcs48_cpu_device::EXPANDER_OP_READ: + break; // handled above + + case mcs48_cpu_device::EXPANDER_OP_WRITE: m_p[m_opcode & 3] = m_p2 & 0x0f; m_writehandler((offs_t)(m_opcode & 3), m_p[m_opcode & 3]); break; - case MCS48_EXPANDER_OP_OR: + case mcs48_cpu_device::EXPANDER_OP_OR: m_p[m_opcode & 3] |= m_p2 & 0x0f; m_writehandler((offs_t)(m_opcode & 3), m_p[m_opcode & 3]); break; - case MCS48_EXPANDER_OP_AND: + case mcs48_cpu_device::EXPANDER_OP_AND: m_p[m_opcode & 3] &= m_p2 & 0x0f; m_writehandler((offs_t)(m_opcode & 3), m_p[m_opcode & 3]); break; @@ -121,5 +122,5 @@ WRITE8_MEMBER(i8243_device::i8243_prog_w) } /* remember the state */ - m_prog = data; + m_prog = state; } diff --git a/src/devices/machine/i8243.h b/src/devices/machine/i8243.h index 669af4469a8..fbbf27d5eb9 100644 --- a/src/devices/machine/i8243.h +++ b/src/devices/machine/i8243.h @@ -13,8 +13,6 @@ #ifndef __I8243_H__ #define __I8243_H__ -#include "cpu/mcs48/mcs48.h" - /*************************************************************************** @@ -46,10 +44,10 @@ public: template static devcb_base &set_read_handler(device_t &device, _Object object) { return downcast(device).m_readhandler.set_callback(object); } template static devcb_base &set_write_handler(device_t &device, _Object object) { return downcast(device).m_writehandler.set_callback(object); } - DECLARE_READ8_MEMBER(i8243_p2_r); - DECLARE_WRITE8_MEMBER(i8243_p2_w); + DECLARE_READ8_MEMBER(p2_r); + DECLARE_WRITE8_MEMBER(p2_w); - DECLARE_WRITE8_MEMBER(i8243_prog_w); + DECLARE_WRITE_LINE_MEMBER(prog_w); protected: // device-level overrides diff --git a/src/devices/machine/ldpr8210.cpp b/src/devices/machine/ldpr8210.cpp index 6412d1f587a..438eef981ee 100644 --- a/src/devices/machine/ldpr8210.cpp +++ b/src/devices/machine/ldpr8210.cpp @@ -150,17 +150,17 @@ static const uint8_t text_bitmap[0x40][7] = static ADDRESS_MAP_START( pr8210_portmap, AS_IO, 8, pioneer_pr8210_device ) AM_RANGE(0x00, 0xff) AM_READWRITE(i8049_pia_r, i8049_pia_w) - AM_RANGE(MCS48_PORT_BUS, MCS48_PORT_BUS) AM_READ(i8049_bus_r) - AM_RANGE(MCS48_PORT_P1, MCS48_PORT_P1) AM_WRITE(i8049_port1_w) - AM_RANGE(MCS48_PORT_P2, MCS48_PORT_P2) AM_WRITE(i8049_port2_w) - AM_RANGE(MCS48_PORT_T0, MCS48_PORT_T0) AM_READ(i8049_t0_r) - AM_RANGE(MCS48_PORT_T1, MCS48_PORT_T1) AM_READ(i8049_t1_r) ADDRESS_MAP_END static MACHINE_CONFIG_FRAGMENT( pr8210 ) MCFG_CPU_ADD("pr8210", I8049, XTAL_4_41MHz) MCFG_CPU_IO_MAP(pr8210_portmap) + MCFG_MCS48_PORT_BUS_IN_CB(READ8(pioneer_pr8210_device, i8049_bus_r)) + MCFG_MCS48_PORT_P1_OUT_CB(WRITE8(pioneer_pr8210_device, i8049_port1_w)) + MCFG_MCS48_PORT_P2_OUT_CB(WRITE8(pioneer_pr8210_device, i8049_port2_w)) + MCFG_MCS48_PORT_T0_IN_CB(READLINE(pioneer_pr8210_device, i8049_t0_r)) + MCFG_MCS48_PORT_T1_IN_CB(READLINE(pioneer_pr8210_device, i8049_t1_r)) MACHINE_CONFIG_END @@ -733,7 +733,7 @@ WRITE8_MEMBER( pioneer_pr8210_device::i8049_port2_w ) // T0 input (connected to VSYNC) //------------------------------------------------- -READ8_MEMBER( pioneer_pr8210_device::i8049_t0_r ) +READ_LINE_MEMBER( pioneer_pr8210_device::i8049_t0_r ) { // returns VSYNC state return !m_vsync; @@ -745,7 +745,7 @@ READ8_MEMBER( pioneer_pr8210_device::i8049_t0_r ) // T1 input (pulled high) //------------------------------------------------- -READ8_MEMBER( pioneer_pr8210_device::i8049_t1_r ) +READ_LINE_MEMBER( pioneer_pr8210_device::i8049_t1_r ) { return 1; } @@ -858,14 +858,15 @@ void pioneer_pr8210_device::overlay_draw_char(bitmap_yuy16 &bitmap, uint8_t ch, static ADDRESS_MAP_START( simutrek_portmap, AS_IO, 8, simutrek_special_device ) AM_RANGE(0x00, 0xff) AM_READ(i8748_data_r) - AM_RANGE(MCS48_PORT_P2, MCS48_PORT_P2) AM_READWRITE(i8748_port2_r, i8748_port2_w) - AM_RANGE(MCS48_PORT_T0, MCS48_PORT_T0) AM_READ(i8748_t0_r) ADDRESS_MAP_END static MACHINE_CONFIG_FRAGMENT( simutrek ) MCFG_CPU_ADD("simutrek", I8748, XTAL_6MHz) MCFG_CPU_IO_MAP(simutrek_portmap) + MCFG_MCS48_PORT_P2_IN_CB(READ8(simutrek_special_device, i8748_port2_r)) + MCFG_MCS48_PORT_P2_OUT_CB(WRITE8(simutrek_special_device, i8748_port2_w)) + MCFG_MCS48_PORT_T0_IN_CB(READLINE(simutrek_special_device, i8748_t0_r)) MCFG_FRAGMENT_ADD(pr8210) MACHINE_CONFIG_END @@ -1100,7 +1101,7 @@ READ8_MEMBER( simutrek_special_device::i8748_data_r ) // T0 input //------------------------------------------------- -READ8_MEMBER( simutrek_special_device::i8748_t0_r ) +READ_LINE_MEMBER( simutrek_special_device::i8748_t0_r ) { // return 1 if data is waiting from main CPU return m_data_ready; diff --git a/src/devices/machine/ldpr8210.h b/src/devices/machine/ldpr8210.h index b16c0ffb64b..0f56d7e144c 100644 --- a/src/devices/machine/ldpr8210.h +++ b/src/devices/machine/ldpr8210.h @@ -106,8 +106,8 @@ public: DECLARE_READ8_MEMBER( i8049_bus_r ); DECLARE_WRITE8_MEMBER( i8049_port1_w ); DECLARE_WRITE8_MEMBER( i8049_port2_w ); - DECLARE_READ8_MEMBER( i8049_t0_r ); - DECLARE_READ8_MEMBER( i8049_t1_r ); + DECLARE_READ_LINE_MEMBER( i8049_t0_r ); + DECLARE_READ_LINE_MEMBER( i8049_t1_r ); protected: // internal overlay helpers @@ -176,7 +176,7 @@ public: DECLARE_READ8_MEMBER( i8748_port2_r ); DECLARE_WRITE8_MEMBER( i8748_port2_w ); DECLARE_READ8_MEMBER( i8748_data_r ); - DECLARE_READ8_MEMBER( i8748_t0_r ); + DECLARE_READ_LINE_MEMBER( i8748_t0_r ); protected: // internal state diff --git a/src/devices/machine/ldvp931.cpp b/src/devices/machine/ldvp931.cpp index 6c488e57a1d..37943efe405 100644 --- a/src/devices/machine/ldvp931.cpp +++ b/src/devices/machine/ldvp931.cpp @@ -58,16 +58,18 @@ static ADDRESS_MAP_START( vp931_portmap, AS_IO, 8, phillips_22vp931_device ) AM_RANGE(0x10, 0x10) AM_MIRROR(0xcf) AM_READWRITE(i8049_unknown_r, i8049_output1_w) AM_RANGE(0x20, 0x20) AM_MIRROR(0xcf) AM_READWRITE(i8049_datic_r, i8049_lcd_w) AM_RANGE(0x30, 0x30) AM_MIRROR(0xcf) AM_READWRITE(i8049_from_controller_r, i8049_to_controller_w) - AM_RANGE(MCS48_PORT_P1, MCS48_PORT_P1) AM_READWRITE(i8049_port1_r, i8049_port1_w) - AM_RANGE(MCS48_PORT_P2, MCS48_PORT_P2) AM_READWRITE(i8049_port2_r, i8049_port2_w) - AM_RANGE(MCS48_PORT_T0, MCS48_PORT_T0) AM_READ(i8049_t0_r) - AM_RANGE(MCS48_PORT_T1, MCS48_PORT_T1) AM_READ(i8049_t1_r) ADDRESS_MAP_END static MACHINE_CONFIG_FRAGMENT( vp931 ) MCFG_CPU_ADD("vp931", I8049, XTAL_11MHz) MCFG_CPU_IO_MAP(vp931_portmap) + MCFG_MCS48_PORT_P1_IN_CB(READ8(phillips_22vp931_device, i8049_port1_r)) + MCFG_MCS48_PORT_P1_OUT_CB(WRITE8(phillips_22vp931_device, i8049_port1_w)) + MCFG_MCS48_PORT_P2_IN_CB(READ8(phillips_22vp931_device, i8049_port2_r)) + MCFG_MCS48_PORT_P2_OUT_CB(WRITE8(phillips_22vp931_device, i8049_port2_w)) + MCFG_MCS48_PORT_T0_IN_CB(READLINE(phillips_22vp931_device, i8049_t0_r)) + MCFG_MCS48_PORT_T1_IN_CB(READLINE(phillips_22vp931_device, i8049_t1_r)) MACHINE_CONFIG_END @@ -635,7 +637,7 @@ WRITE8_MEMBER( phillips_22vp931_device::i8049_port2_w ) // connected to the DATIC's data strobe line //------------------------------------------------- -READ8_MEMBER( phillips_22vp931_device::i8049_t0_r ) +READ_LINE_MEMBER( phillips_22vp931_device::i8049_t0_r ) { return m_datastrobe; } @@ -647,7 +649,7 @@ READ8_MEMBER( phillips_22vp931_device::i8049_t0_r ) // to count the number of tracks advanced //------------------------------------------------- -READ8_MEMBER( phillips_22vp931_device::i8049_t1_r ) +READ_LINE_MEMBER( phillips_22vp931_device::i8049_t1_r ) { return m_trackstate; } diff --git a/src/devices/machine/ldvp931.h b/src/devices/machine/ldvp931.h index c6445e06510..963b6e70cb6 100644 --- a/src/devices/machine/ldvp931.h +++ b/src/devices/machine/ldvp931.h @@ -98,8 +98,8 @@ public: DECLARE_WRITE8_MEMBER( i8049_port1_w ); DECLARE_READ8_MEMBER( i8049_port2_r ); DECLARE_WRITE8_MEMBER( i8049_port2_w ); - DECLARE_READ8_MEMBER( i8049_t0_r ); - DECLARE_READ8_MEMBER( i8049_t1_r ); + DECLARE_READ_LINE_MEMBER( i8049_t0_r ); + DECLARE_READ_LINE_MEMBER( i8049_t1_r ); protected: // internal state diff --git a/src/mame/audio/carnival.cpp b/src/mame/audio/carnival.cpp index 0fde41c2967..6a093bfd3bd 100644 --- a/src/mame/audio/carnival.cpp +++ b/src/mame/audio/carnival.cpp @@ -184,7 +184,7 @@ WRITE8_MEMBER( vicdual_state::carnival_music_port_2_w ) } -READ8_MEMBER( vicdual_state::carnival_music_port_t1_r ) +READ_LINE_MEMBER( vicdual_state::carnival_music_port_t1_r ) { // T1: comms from audio port 2 d3 return ~m_port2State >> 3 & 1; @@ -195,19 +195,15 @@ static ADDRESS_MAP_START( mboard_map, AS_PROGRAM, 8, vicdual_state ) AM_RANGE(0x0000, 0x03ff) AM_ROM ADDRESS_MAP_END -static ADDRESS_MAP_START( mboard_io_map, AS_IO, 8, vicdual_state ) - AM_RANGE(MCS48_PORT_P1, MCS48_PORT_P1) AM_WRITE(carnival_music_port_1_w) - AM_RANGE(MCS48_PORT_P2, MCS48_PORT_P2) AM_WRITE(carnival_music_port_2_w) - AM_RANGE(MCS48_PORT_T1, MCS48_PORT_T1) AM_READ(carnival_music_port_t1_r) -ADDRESS_MAP_END - MACHINE_CONFIG_FRAGMENT( carnival_audio ) /* music board */ MCFG_CPU_ADD("audiocpu", I8039, XTAL_3_579545MHz) MCFG_CPU_PROGRAM_MAP(mboard_map) - MCFG_CPU_IO_MAP(mboard_io_map) + MCFG_MCS48_PORT_P1_OUT_CB(WRITE8(vicdual_state, carnival_music_port_1_w)) + MCFG_MCS48_PORT_P2_OUT_CB(WRITE8(vicdual_state, carnival_music_port_2_w)) + MCFG_MCS48_PORT_T1_IN_CB(READLINE(vicdual_state, carnival_music_port_t1_r)) MCFG_SOUND_ADD("psg", AY8912, XTAL_3_579545MHz/3) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.25) diff --git a/src/mame/audio/dkong.cpp b/src/mame/audio/dkong.cpp index ac7a9217754..032e1a161fe 100644 --- a/src/mame/audio/dkong.cpp +++ b/src/mame/audio/dkong.cpp @@ -1273,44 +1273,21 @@ WRITE8_MEMBER(dkong_state::dkong_audio_irq_w) * *************************************/ -READ8_MEMBER(dkong_state::sound_t0_r) -{ - return m_dev_6h->bit5_q_r(); -} - -READ8_MEMBER(dkong_state::sound_t1_r) -{ - return m_dev_6h->bit4_q_r(); -} - static ADDRESS_MAP_START( dkong_sound_map, AS_PROGRAM, 8, dkong_state ) AM_RANGE(0x0000, 0x0fff) AM_ROM ADDRESS_MAP_END static ADDRESS_MAP_START( dkong_sound_io_map, AS_IO, 8, dkong_state ) - AM_RANGE(0x00, 0xFF) AM_READWRITE(dkong_tune_r, dkong_voice_w) - AM_RANGE(MCS48_PORT_BUS, MCS48_PORT_BUS) AM_READWRITE(dkong_tune_r, dkong_voice_w) - AM_RANGE(MCS48_PORT_P1, MCS48_PORT_P1) AM_WRITE(dkong_p1_w) /* only write to dac */ - AM_RANGE(MCS48_PORT_P2, MCS48_PORT_P2) AM_DEVREADWRITE("virtual_p2", latch8_device, read, write) - AM_RANGE(MCS48_PORT_T0, MCS48_PORT_T0) AM_READ(sound_t0_r) - AM_RANGE(MCS48_PORT_T1, MCS48_PORT_T1) AM_READ(sound_t1_r) + AM_RANGE(0x00, 0xff) AM_READWRITE(dkong_tune_r, dkong_voice_w) ADDRESS_MAP_END static ADDRESS_MAP_START( dkongjr_sound_io_map, AS_IO, 8, dkong_state ) AM_RANGE(0x00, 0x00) AM_MIRROR(0xff) AM_DEVREAD("ls174.3d", latch8_device, read) - AM_RANGE(MCS48_PORT_P1, MCS48_PORT_P1) AM_WRITE(dkong_p1_w) /* only write to dac */ - AM_RANGE(MCS48_PORT_P2, MCS48_PORT_P2) AM_DEVREADWRITE("virtual_p2", latch8_device, read, write) - AM_RANGE(MCS48_PORT_T0, MCS48_PORT_T0) AM_READ(sound_t0_r) - AM_RANGE(MCS48_PORT_T1, MCS48_PORT_T1) AM_READ(sound_t1_r) ADDRESS_MAP_END static ADDRESS_MAP_START( radarscp1_sound_io_map, AS_IO, 8, dkong_state ) AM_RANGE(0x00, 0x00) AM_MIRROR(0xff) AM_DEVREAD("ls175.3d", latch8_device, read) AM_RANGE(0x00, 0xff) AM_WRITE(dkong_p1_w) /* DAC here */ - AM_RANGE(MCS48_PORT_P1, MCS48_PORT_P1) AM_DEVREAD("virtual_p1", latch8_device, read) AM_WRITE(M58817_command_w) - AM_RANGE(MCS48_PORT_P2, MCS48_PORT_P2) AM_DEVWRITE("virtual_p2", latch8_device, write) - AM_RANGE(MCS48_PORT_T0, MCS48_PORT_T0) AM_READ(sound_t0_r) - AM_RANGE(MCS48_PORT_T1, MCS48_PORT_T1) AM_READ(sound_t1_r) ADDRESS_MAP_END static ADDRESS_MAP_START( dkong3_sound1_map, AS_PROGRAM, 8, dkong_state ) @@ -1361,6 +1338,13 @@ MACHINE_CONFIG_FRAGMENT( dkong2b_audio ) MCFG_CPU_ADD("soundcpu", MB8884, I8035_CLOCK) MCFG_CPU_PROGRAM_MAP(dkong_sound_map) MCFG_CPU_IO_MAP(dkong_sound_io_map) + MCFG_MCS48_PORT_BUS_IN_CB(READ8(dkong_state, dkong_tune_r)) + MCFG_MCS48_PORT_BUS_OUT_CB(WRITE8(dkong_state, dkong_voice_w)) + MCFG_MCS48_PORT_P1_OUT_CB(WRITE8(dkong_state, dkong_p1_w)) // only write to dac + MCFG_MCS48_PORT_P2_IN_CB(DEVREAD8("virtual_p2", latch8_device, read)) + MCFG_MCS48_PORT_P2_OUT_CB(DEVWRITE8("virtual_p2", latch8_device, write)) + MCFG_MCS48_PORT_T0_IN_CB(DEVREADLINE("ls259.6h", latch8_device, bit5_q_r)) + MCFG_MCS48_PORT_T1_IN_CB(DEVREADLINE("ls259.6h", latch8_device, bit4_q_r)) MCFG_SPEAKER_STANDARD_MONO("mono") MCFG_DISCRETE_ADD("discrete", 0, dkong2b) @@ -1378,6 +1362,9 @@ MACHINE_CONFIG_DERIVED( radarscp1_audio, radarscp_audio ) MCFG_CPU_MODIFY("soundcpu") MCFG_CPU_IO_MAP(radarscp1_sound_io_map) + MCFG_MCS48_PORT_P1_IN_CB(DEVREAD8("virtual_p1", latch8_device, read)) + MCFG_MCS48_PORT_P1_OUT_CB(WRITE8(dkong_state, M58817_command_w)) + MCFG_MCS48_PORT_P2_IN_CB(NOOP) /* virtual_p2 is not read -see memory map-, all bits are output bits */ MCFG_LATCH8_ADD( "virtual_p1" ) /* virtual latch for port A */ @@ -1424,6 +1411,11 @@ MACHINE_CONFIG_FRAGMENT( dkongjr_audio ) MCFG_CPU_ADD("soundcpu", MB8884, I8035_CLOCK) MCFG_CPU_PROGRAM_MAP(dkong_sound_map) MCFG_CPU_IO_MAP(dkongjr_sound_io_map) + MCFG_MCS48_PORT_P1_OUT_CB(WRITE8(dkong_state, dkong_p1_w)) // only write to dac + MCFG_MCS48_PORT_P2_IN_CB(DEVREAD8("virtual_p2", latch8_device, read)) + MCFG_MCS48_PORT_P2_OUT_CB(DEVWRITE8("virtual_p2", latch8_device, write)) + MCFG_MCS48_PORT_T0_IN_CB(DEVREADLINE("ls259.6h", latch8_device, bit5_q_r)) + MCFG_MCS48_PORT_T1_IN_CB(DEVREADLINE("ls259.6h", latch8_device, bit4_q_r)) MCFG_SPEAKER_STANDARD_MONO("mono") diff --git a/src/mame/audio/mario.cpp b/src/mame/audio/mario.cpp index 2deb825bae0..30616e8eebb 100644 --- a/src/mame/audio/mario.cpp +++ b/src/mame/audio/mario.cpp @@ -475,14 +475,14 @@ READ8_MEMBER(mario_state::mario_sh_p2_r) return I8035_P2_R(space) & 0xEF; /* Bit 4 connected to GND! */ } -READ8_MEMBER(mario_state::mario_sh_t0_r) +READ_LINE_MEMBER(mario_state::mario_sh_t0_r) { - return I8035_T_R(space, 0); + return I8035_T_R(machine().dummy_space(), 0); } -READ8_MEMBER(mario_state::mario_sh_t1_r) +READ_LINE_MEMBER(mario_state::mario_sh_t1_r) { - return I8035_T_R(space, 1); + return I8035_T_R(machine().dummy_space(), 1); } READ8_MEMBER(mario_state::mario_sh_tune_r) @@ -612,10 +612,6 @@ ADDRESS_MAP_END static ADDRESS_MAP_START( mario_sound_io_map, AS_IO, 8, mario_state ) AM_RANGE(0x00, 0xff) AM_READ(mario_sh_tune_r) AM_WRITE(mario_sh_sound_w) - AM_RANGE(MCS48_PORT_P1, MCS48_PORT_P1) AM_READWRITE(mario_sh_p1_r, mario_sh_p1_w) - AM_RANGE(MCS48_PORT_P2, MCS48_PORT_P2) AM_READWRITE(mario_sh_p2_r, mario_sh_p2_w) - AM_RANGE(MCS48_PORT_T0, MCS48_PORT_T0) AM_READ(mario_sh_t0_r) - AM_RANGE(MCS48_PORT_T1, MCS48_PORT_T1) AM_READ(mario_sh_t1_r) ADDRESS_MAP_END static ADDRESS_MAP_START( masao_sound_map, AS_PROGRAM, 8, mario_state ) @@ -641,6 +637,12 @@ MACHINE_CONFIG_FRAGMENT( mario_audio ) #endif MCFG_CPU_PROGRAM_MAP(mario_sound_map) MCFG_CPU_IO_MAP(mario_sound_io_map) + MCFG_MCS48_PORT_P1_IN_CB(READ8(mario_state, mario_sh_p1_r)) + MCFG_MCS48_PORT_P1_OUT_CB(WRITE8(mario_state, mario_sh_p1_w)) + MCFG_MCS48_PORT_P2_IN_CB(READ8(mario_state, mario_sh_p2_r)) + MCFG_MCS48_PORT_P2_OUT_CB(WRITE8(mario_state, mario_sh_p2_w)) + MCFG_MCS48_PORT_T0_IN_CB(READLINE(mario_state, mario_sh_t0_r)) + MCFG_MCS48_PORT_T1_IN_CB(READLINE(mario_state, mario_sh_t1_r)) MCFG_SPEAKER_STANDARD_MONO("mono") diff --git a/src/mame/audio/n8080.cpp b/src/mame/audio/n8080.cpp index 3f7ef60e2a1..01aa23f4900 100644 --- a/src/mame/audio/n8080.cpp +++ b/src/mame/audio/n8080.cpp @@ -286,21 +286,21 @@ READ8_MEMBER(n8080_state::n8080_8035_p1_r) } -READ8_MEMBER(n8080_state::n8080_8035_t0_r) +READ_LINE_MEMBER(n8080_state::n8080_8035_t0_r) { return (m_curr_sound_pins >> 0x7) & 1; } -READ8_MEMBER(n8080_state::n8080_8035_t1_r) +READ_LINE_MEMBER(n8080_state::n8080_8035_t1_r) { return (m_curr_sound_pins >> 0xc) & 1; } -READ8_MEMBER(n8080_state::helifire_8035_t0_r) +READ_LINE_MEMBER(n8080_state::helifire_8035_t0_r) { return (m_curr_sound_pins >> 0x3) & 1; } -READ8_MEMBER(n8080_state::helifire_8035_t1_r) +READ_LINE_MEMBER(n8080_state::helifire_8035_t1_r) { return (m_curr_sound_pins >> 0x4) & 1; } @@ -470,24 +470,8 @@ static ADDRESS_MAP_START( n8080_sound_cpu_map, AS_PROGRAM, 8, n8080_state ) ADDRESS_MAP_END -static ADDRESS_MAP_START( n8080_sound_io_map, AS_IO, 8, n8080_state ) - AM_RANGE(MCS48_PORT_T0, MCS48_PORT_T0) AM_READ(n8080_8035_t0_r) - AM_RANGE(MCS48_PORT_T1, MCS48_PORT_T1) AM_READ(n8080_8035_t1_r) - AM_RANGE(MCS48_PORT_P1, MCS48_PORT_P1) AM_READ(n8080_8035_p1_r) - - AM_RANGE(MCS48_PORT_P2, MCS48_PORT_P2) AM_WRITE(n8080_dac_w) -ADDRESS_MAP_END - - static ADDRESS_MAP_START( helifire_sound_io_map, AS_IO, 8, n8080_state ) - AM_RANGE(MCS48_PORT_T0, MCS48_PORT_T0) AM_READ(helifire_8035_t0_r) - AM_RANGE(MCS48_PORT_T1, MCS48_PORT_T1) AM_READ(helifire_8035_t1_r) - AM_RANGE(MCS48_PORT_P2, MCS48_PORT_P2) AM_READ(helifire_8035_p2_r) - AM_RANGE(0x00, 0x7f) AM_READ(helifire_8035_external_ram_r) - - AM_RANGE(MCS48_PORT_P1, MCS48_PORT_P1) AM_DEVWRITE("helifire_dac", dac_byte_interface, write) - AM_RANGE(MCS48_PORT_P2, MCS48_PORT_P2) AM_WRITE(helifire_sound_ctrl_w) ADDRESS_MAP_END @@ -499,7 +483,10 @@ MACHINE_CONFIG_FRAGMENT( spacefev_sound ) /* basic machine hardware */ MCFG_CPU_ADD("audiocpu", I8035, 6000000) MCFG_CPU_PROGRAM_MAP(n8080_sound_cpu_map) - MCFG_CPU_IO_MAP(n8080_sound_io_map) + MCFG_MCS48_PORT_T0_IN_CB(READLINE(n8080_state, n8080_8035_t0_r)) + MCFG_MCS48_PORT_T1_IN_CB(READLINE(n8080_state, n8080_8035_t1_r)) + MCFG_MCS48_PORT_P1_IN_CB(READ8(n8080_state, n8080_8035_p1_r)) + MCFG_MCS48_PORT_P2_OUT_CB(WRITE8(n8080_state, n8080_dac_w)) MCFG_TIMER_DRIVER_ADD_PERIODIC("vco_timer", n8080_state, spacefev_vco_voltage_timer, attotime::from_hz(1000)) @@ -536,7 +523,10 @@ MACHINE_CONFIG_FRAGMENT( sheriff_sound ) /* basic machine hardware */ MCFG_CPU_ADD("audiocpu", I8035, 6000000) MCFG_CPU_PROGRAM_MAP(n8080_sound_cpu_map) - MCFG_CPU_IO_MAP(n8080_sound_io_map) + MCFG_MCS48_PORT_T0_IN_CB(READLINE(n8080_state, n8080_8035_t0_r)) + MCFG_MCS48_PORT_T1_IN_CB(READLINE(n8080_state, n8080_8035_t1_r)) + MCFG_MCS48_PORT_P1_IN_CB(READ8(n8080_state, n8080_8035_p1_r)) + MCFG_MCS48_PORT_P2_OUT_CB(WRITE8(n8080_state, n8080_dac_w)) /* sound hardware */ MCFG_SPEAKER_STANDARD_MONO("speaker") @@ -572,6 +562,11 @@ MACHINE_CONFIG_FRAGMENT( helifire_sound ) MCFG_CPU_ADD("audiocpu", I8035, 6000000) MCFG_CPU_PROGRAM_MAP(n8080_sound_cpu_map) MCFG_CPU_IO_MAP(helifire_sound_io_map) + MCFG_MCS48_PORT_T0_IN_CB(READLINE(n8080_state, helifire_8035_t0_r)) + MCFG_MCS48_PORT_T1_IN_CB(READLINE(n8080_state, helifire_8035_t1_r)) + MCFG_MCS48_PORT_P2_IN_CB(READ8(n8080_state, helifire_8035_p2_r)) + MCFG_MCS48_PORT_P1_OUT_CB(DEVWRITE8("helifire_dac", dac_byte_interface, write)) + MCFG_MCS48_PORT_P2_OUT_CB(WRITE8(n8080_state, helifire_sound_ctrl_w)) MCFG_TIMER_DRIVER_ADD_PERIODIC("helifire_dac_volume_timer", n8080_state, helifire_dac_volume_timer, attotime::from_hz(1000)) diff --git a/src/mame/audio/segag80r.cpp b/src/mame/audio/segag80r.cpp index 60806aaad06..7f4838be1b0 100644 --- a/src/mame/audio/segag80r.cpp +++ b/src/mame/audio/segag80r.cpp @@ -671,23 +671,6 @@ static const char *const monsterb_sample_names[] = }; -/************************************* - * - * N7751 memory maps - * - *************************************/ - -static ADDRESS_MAP_START( monsterb_7751_portmap, AS_IO, 8, segag80r_state ) - AM_RANGE(MCS48_PORT_T1, MCS48_PORT_T1) AM_READ(n7751_t1_r) - AM_RANGE(MCS48_PORT_P2, MCS48_PORT_P2) AM_READ(n7751_command_r) - AM_RANGE(MCS48_PORT_BUS, MCS48_PORT_BUS) AM_READ(n7751_rom_r) - AM_RANGE(MCS48_PORT_P1, MCS48_PORT_P1) AM_DEVWRITE("dac", dac_byte_interface, write) - AM_RANGE(MCS48_PORT_P2, MCS48_PORT_P2) AM_WRITE(n7751_p2_w) - AM_RANGE(MCS48_PORT_PROG, MCS48_PORT_PROG) AM_DEVWRITE("audio_8243", i8243_device, i8243_prog_w) -ADDRESS_MAP_END - - - /************************************* * * Machine driver @@ -703,7 +686,12 @@ MACHINE_CONFIG_FRAGMENT( monsterb_sound_board ) /* basic machine hardware */ MCFG_CPU_ADD("audiocpu", N7751, 6000000) - MCFG_CPU_IO_MAP(monsterb_7751_portmap) + MCFG_MCS48_PORT_T1_IN_CB(GND) // labelled as "TEST", connected to ground + MCFG_MCS48_PORT_P2_IN_CB(READ8(segag80r_state, n7751_command_r)) + MCFG_MCS48_PORT_BUS_IN_CB(READ8(segag80r_state, n7751_rom_r)) + MCFG_MCS48_PORT_P1_OUT_CB(DEVWRITE8("dac", dac_byte_interface, write)) + MCFG_MCS48_PORT_P2_OUT_CB(WRITE8(segag80r_state, n7751_p2_w)) + MCFG_MCS48_PORT_PROG_OUT_CB(DEVWRITELINE("audio_8243", i8243_device, prog_w)) MCFG_I8243_ADD("audio_8243", NOOP, WRITE8(segag80r_state,n7751_rom_control_w)) @@ -847,16 +835,9 @@ WRITE8_MEMBER(segag80r_state::n7751_p2_w) { i8243_device *device = machine().device("audio_8243"); /* write to P2; low 4 bits go to 8243 */ - device->i8243_p2_w(space, offset, data & 0x0f); + device->p2_w(space, offset, data & 0x0f); /* output of bit $80 indicates we are ready (1) or busy (0) */ /* no other outputs are used */ m_n7751_busy = data >> 7; } - - -READ8_MEMBER(segag80r_state::n7751_t1_r) -{ - /* T1 - labelled as "TEST", connected to ground */ - return 0; -} diff --git a/src/mame/audio/segasnd.cpp b/src/mame/audio/segasnd.cpp index 388700b4ad5..5f81c3d2281 100644 --- a/src/mame/audio/segasnd.cpp +++ b/src/mame/audio/segasnd.cpp @@ -100,12 +100,12 @@ void speech_sound_device::device_start() -READ8_MEMBER( speech_sound_device::t0_r ) +READ_LINE_MEMBER( speech_sound_device::t0_r ) { return m_t0; } -READ8_MEMBER( speech_sound_device::t1_r ) +READ_LINE_MEMBER( speech_sound_device::t1_r ) { return m_drq; } @@ -204,10 +204,6 @@ ADDRESS_MAP_END static ADDRESS_MAP_START( speech_portmap, AS_IO, 8, speech_sound_device ) AM_RANGE(0x00, 0xff) AM_DEVREAD("segaspeech", speech_sound_device, rom_r) AM_RANGE(0x00, 0xff) AM_DEVWRITE("speech", sp0250_device, write) - AM_RANGE(MCS48_PORT_P1, MCS48_PORT_P1) AM_DEVREADWRITE("segaspeech", speech_sound_device, p1_r, p1_w) - AM_RANGE(MCS48_PORT_P2, MCS48_PORT_P2) AM_DEVWRITE("segaspeech", speech_sound_device, p2_w) - AM_RANGE(MCS48_PORT_T0, MCS48_PORT_T0) AM_DEVREAD("segaspeech", speech_sound_device, t0_r) - AM_RANGE(MCS48_PORT_T1, MCS48_PORT_T1) AM_DEVREAD("segaspeech", speech_sound_device, t1_r) ADDRESS_MAP_END @@ -223,6 +219,11 @@ MACHINE_CONFIG_FRAGMENT( sega_speech_board ) MCFG_CPU_ADD("audiocpu", I8035, SPEECH_MASTER_CLOCK) /* divide by 15 in CPU */ MCFG_CPU_PROGRAM_MAP(speech_map) MCFG_CPU_IO_MAP(speech_portmap) + MCFG_MCS48_PORT_P1_IN_CB(DEVREAD8("segaspeech", speech_sound_device, p1_r)) + MCFG_MCS48_PORT_P1_OUT_CB(DEVWRITE8("segaspeech", speech_sound_device, p1_w)) + MCFG_MCS48_PORT_P2_OUT_CB(DEVWRITE8("segaspeech", speech_sound_device, p2_w)) + MCFG_MCS48_PORT_T0_IN_CB(DEVREADLINE("segaspeech", speech_sound_device, t0_r)) + MCFG_MCS48_PORT_T1_IN_CB(DEVREADLINE("segaspeech", speech_sound_device, t1_r)) /* sound hardware */ MCFG_SOUND_ADD("segaspeech", SEGASPEECH, 0) @@ -488,7 +489,7 @@ WRITE8_MEMBER( usb_sound_device::p2_w ) } -READ8_MEMBER( usb_sound_device::t1_r ) +READ_LINE_MEMBER( usb_sound_device::t1_r ) { /* T1 returns 1 based on the value of the T1 clock; the exact */ /* pattern is determined by one or more jumpers on the board. */ @@ -852,9 +853,6 @@ ADDRESS_MAP_END static ADDRESS_MAP_START( usb_portmap, AS_IO, 8, usb_sound_device ) AM_RANGE(0x00, 0xff) AM_READWRITE(workram_r, workram_w) AM_SHARE("workram") - AM_RANGE(MCS48_PORT_P1, MCS48_PORT_P1) AM_READWRITE(p1_r, p1_w) - AM_RANGE(MCS48_PORT_P2, MCS48_PORT_P2) AM_WRITE(p2_w) - AM_RANGE(MCS48_PORT_T1, MCS48_PORT_T1) AM_READ(t1_r) ADDRESS_MAP_END @@ -870,6 +868,10 @@ MACHINE_CONFIG_FRAGMENT( segausb ) MCFG_CPU_ADD("ourcpu", I8035, USB_MASTER_CLOCK) /* divide by 15 in CPU */ MCFG_CPU_PROGRAM_MAP(usb_map) MCFG_CPU_IO_MAP(usb_portmap) + MCFG_MCS48_PORT_P1_IN_CB(READ8(usb_sound_device, p1_r)) + MCFG_MCS48_PORT_P1_OUT_CB(WRITE8(usb_sound_device, p1_w)) + MCFG_MCS48_PORT_P2_OUT_CB(WRITE8(usb_sound_device, p2_w)) + MCFG_MCS48_PORT_T1_IN_CB(READLINE(usb_sound_device, t1_r)) MCFG_TIMER_DRIVER_ADD_PERIODIC("usb_timer", usb_sound_device, increment_t1_clock_timer_cb, attotime::from_hz(USB_2MHZ_CLOCK / 256)) MACHINE_CONFIG_END diff --git a/src/mame/audio/segasnd.h b/src/mame/audio/segasnd.h index e4cfd9a6445..e36014732a1 100644 --- a/src/mame/audio/segasnd.h +++ b/src/mame/audio/segasnd.h @@ -18,8 +18,8 @@ public: DECLARE_WRITE8_MEMBER( data_w ); DECLARE_WRITE8_MEMBER( control_w ); - DECLARE_READ8_MEMBER( t0_r ); - DECLARE_READ8_MEMBER( t1_r ); + DECLARE_READ_LINE_MEMBER( t0_r ); + DECLARE_READ_LINE_MEMBER( t1_r ); DECLARE_READ8_MEMBER( p1_r ); DECLARE_READ8_MEMBER( rom_r ); DECLARE_WRITE8_MEMBER( p1_w ); @@ -128,7 +128,7 @@ public: DECLARE_READ8_MEMBER( p1_r ); DECLARE_WRITE8_MEMBER( p1_w ); DECLARE_WRITE8_MEMBER( p2_w ); - DECLARE_READ8_MEMBER( t1_r ); + DECLARE_READ_LINE_MEMBER( t1_r ); DECLARE_READ8_MEMBER( workram_r ); DECLARE_WRITE8_MEMBER( workram_w ); diff --git a/src/mame/audio/spacefb.cpp b/src/mame/audio/spacefb.cpp index 4add86fc961..5a2ab7b9c68 100644 --- a/src/mame/audio/spacefb.cpp +++ b/src/mame/audio/spacefb.cpp @@ -22,15 +22,15 @@ READ8_MEMBER(spacefb_state::audio_p2_r) } -READ8_MEMBER(spacefb_state::audio_t0_r) +READ_LINE_MEMBER(spacefb_state::audio_t0_r) { - return m_sound_latch & 0x20; + return BIT(m_sound_latch, 6); } -READ8_MEMBER(spacefb_state::audio_t1_r) +READ_LINE_MEMBER(spacefb_state::audio_t1_r) { - return m_sound_latch & 0x04; + return BIT(m_sound_latch, 2); } diff --git a/src/mame/drivers/advision.cpp b/src/mame/drivers/advision.cpp index d715478c9ec..7b4645726bf 100644 --- a/src/mame/drivers/advision.cpp +++ b/src/mame/drivers/advision.cpp @@ -43,9 +43,6 @@ ADDRESS_MAP_END static ADDRESS_MAP_START( io_map, AS_IO, 8, advision_state ) AM_RANGE(0x00, 0xff) AM_READWRITE(ext_ram_r, ext_ram_w) - AM_RANGE(MCS48_PORT_P1, MCS48_PORT_P1) AM_READWRITE(controller_r, bankswitch_w) - AM_RANGE(MCS48_PORT_P2, MCS48_PORT_P2) AM_WRITE(av_control_w) - AM_RANGE(MCS48_PORT_T1, MCS48_PORT_T1) AM_READ(vsync_r) ADDRESS_MAP_END /* Input Ports */ @@ -69,6 +66,10 @@ static MACHINE_CONFIG_START( advision, advision_state ) MCFG_CPU_ADD(I8048_TAG, I8048, XTAL_11MHz) MCFG_CPU_PROGRAM_MAP(program_map) MCFG_CPU_IO_MAP(io_map) + MCFG_MCS48_PORT_P1_IN_CB(READ8(advision_state, controller_r)) + MCFG_MCS48_PORT_P1_OUT_CB(WRITE8(advision_state, bankswitch_w)) + MCFG_MCS48_PORT_P2_OUT_CB(WRITE8(advision_state, av_control_w)) + MCFG_MCS48_PORT_T1_IN_CB(READLINE(advision_state, vsync_r)) MCFG_CPU_ADD(COP411_TAG, COP411, 52631*4) // COP411L-KCN/N, R11=82k, C8=56pF MCFG_COP400_CONFIG(COP400_CKI_DIVISOR_4, COP400_CKO_RAM_POWER_SUPPLY, false) diff --git a/src/mame/drivers/alpha68k.cpp b/src/mame/drivers/alpha68k.cpp index bcec7494b34..b1482900157 100644 --- a/src/mame/drivers/alpha68k.cpp +++ b/src/mame/drivers/alpha68k.cpp @@ -1902,14 +1902,6 @@ MACHINE_START_MEMBER(alpha68k_state,alpha68k_II) } -static ADDRESS_MAP_START( i8748_portmap, AS_IO, 8, alpha68k_state ) -// AM_RANGE(MCS48_PORT_BUS, MCS48_PORT_BUS) AM_READ(saiyugoub1_mcu_command_r) -// AM_RANGE(MCS48_PORT_T0, MCS48_PORT_T0) AM_DEVWRITE_LEGACY("adpcm", saiyugoub1_m5205_clk_w) /* Drives the clock on the m5205 at 1/8 of this frequency */ -// AM_RANGE(MCS48_PORT_T1, MCS48_PORT_T1) AM_READ(saiyugoub1_m5205_irq_r) -// AM_RANGE(MCS48_PORT_P1, MCS48_PORT_P1) AM_WRITE(saiyugoub1_adpcm_rom_addr_w) -// AM_RANGE(MCS48_PORT_P2, MCS48_PORT_P2) AM_DEVWRITE_LEGACY("adpcm", saiyugoub1_adpcm_control_w) -ADDRESS_MAP_END - // Pixel clock, assuming that it can't be 4 MHz because 4 MHz / 15,20 KHz = 263 HTOTAL (VERY unlikely). #define ALPHA68K_PIXEL_CLOCK XTAL_24MHz/4 #define ALPHA68K_HTOTAL 394 @@ -1935,7 +1927,11 @@ static MACHINE_CONFIG_START( sstingry, alpha68k_state ) MCFG_CPU_ADD("mcu", I8748, 9263750) /* 9.263750 MHz oscillator, divided by 3*5 internally */ // MCFG_CPU_PROGRAM_MAP(i8748_map) - MCFG_CPU_IO_MAP(i8748_portmap) +// MCFG_MCS48_PORT_BUS_IN_CB(READ8(alpha68k_state, saiyugoub1_mcu_command_r)) +// MCFG_MCS48_PORT_T0_CLK_CUSTOM(alpha68k_state, saiyugoub1_m5205_clk_w) /* Drives the clock on the m5205 at 1/8 of this frequency */ +// MCFG_MCS48_PORT_T1_IN_CB(READLINE(alpha68k_state, saiyugoub1_m5205_irq_r)) +// MCFG_MCS48_PORT_P1_OUT_CB(WRITE8(alpha68k_state, saiyugoub1_adpcm_rom_addr_w)) +// MCFG_MCS48_PORT_P2_OUT_CB(WRITE8(alpha68k_state, saiyugoub1_adpcm_control_w)) MCFG_DEVICE_DISABLE() MCFG_MACHINE_START_OVERRIDE(alpha68k_state,common) diff --git a/src/mame/drivers/bitgraph.cpp b/src/mame/drivers/bitgraph.cpp index df61b23a540..152b4aa5e3b 100644 --- a/src/mame/drivers/bitgraph.cpp +++ b/src/mame/drivers/bitgraph.cpp @@ -424,9 +424,6 @@ WRITE8_MEMBER(bitgraph_state::ppu_write) #ifdef UNUSED_FUNCTION static ADDRESS_MAP_START(ppu_io, AS_IO, 8, bitgraph_state) // AM_RANGE(0x00, 0x00) AM_READ(ppu_irq) -// AM_RANGE(MCS48_PORT_P1, MCS48_PORT_P1) -// AM_RANGE(MCS48_PORT_T0, MCS48_PORT_T0) AM_READ(ppu_t0_r) - AM_RANGE(MCS48_PORT_PROG, MCS48_PORT_PROG) AM_DEVWRITE("i8243", i8243_device, i8243_prog_w) ADDRESS_MAP_END #endif @@ -554,6 +551,8 @@ MACHINE_CONFIG_END static MACHINE_CONFIG_FRAGMENT( bg_ppu ) MCFG_CPU_ADD(PPU_TAG, I8035, XTAL_6_9MHz) MCFG_CPU_IO_MAP(ppu_io) +// MCFG_MCS48_PORT_T0_IN_CB(READLINE(bitgraph_state, ppu_t0_r)) + MCFG_MCS48_PORT_PROG_OUT_CB(DEVWRITELINE("i8243", i8243_device, prog_w)) MCFG_I8243_ADD("i8243", NOOP, WRITE8(bitgraph_state, ppu_i8243_w)) diff --git a/src/mame/drivers/cgc7900.cpp b/src/mame/drivers/cgc7900.cpp index 3d2df7b32e7..7d6693fa07c 100644 --- a/src/mame/drivers/cgc7900.cpp +++ b/src/mame/drivers/cgc7900.cpp @@ -293,17 +293,6 @@ static ADDRESS_MAP_START( keyboard_mem, AS_PROGRAM, 8, cgc7900_state ) AM_RANGE(0x000, 0x7ff) AM_ROM ADDRESS_MAP_END -/*------------------------------------------------- - ADDRESS_MAP( keyboard_io ) --------------------------------------------------*/ - -static ADDRESS_MAP_START( keyboard_io, AS_IO, 8, cgc7900_state ) -/* AM_RANGE(MCS48_PORT_P1, MCS48_PORT_P1) - AM_RANGE(MCS48_PORT_P2, MCS48_PORT_P2) - AM_RANGE(MCS48_PORT_T1, MCS48_PORT_T1) - AM_RANGE(MCS48_PORT_BUS, MCS48_PORT_BUS)*/ -ADDRESS_MAP_END - /*************************************************************************** INPUT PORTS ***************************************************************************/ @@ -373,7 +362,13 @@ static MACHINE_CONFIG_START( cgc7900, cgc7900_state ) MCFG_CPU_ADD(I8035_TAG, I8035, 1000000) MCFG_CPU_PROGRAM_MAP(keyboard_mem) - MCFG_CPU_IO_MAP(keyboard_io) + //MCFG_MCS48_PORT_P1_IN_CB(READ8()) + //MCFG_MCS48_PORT_P1_OUT_CB(WRITE8()) + //MCFG_MCS48_PORT_P2_IN_CB(READ8()) + //MCFG_MCS48_PORT_P2_OUT_CB(WRITE8()) + //MCFG_MCS48_PORT_T1_IN_CB(READLINE()) + //MCFG_MCS48_PORT_BUS_IN_CB(READ8()) + //MCFG_MCS48_PORT_BUS_OUT_CB(WRITE8()) MCFG_DEVICE_DISABLE() /* MCFG_CPU_ADD(AM2910_TAG, AM2910, XTAL_17_36MHz) diff --git a/src/mame/drivers/chinagat.cpp b/src/mame/drivers/chinagat.cpp index fc5e39dc90f..755079aef68 100644 --- a/src/mame/drivers/chinagat.cpp +++ b/src/mame/drivers/chinagat.cpp @@ -107,7 +107,7 @@ public: DECLARE_WRITE8_MEMBER( saiyugoub1_adpcm_rom_addr_w ); DECLARE_WRITE8_MEMBER( saiyugoub1_adpcm_control_w ); DECLARE_WRITE8_MEMBER( saiyugoub1_m5205_clk_w ); - DECLARE_READ8_MEMBER( saiyugoub1_m5205_irq_r ); + DECLARE_READ_LINE_MEMBER(saiyugoub1_m5205_irq_r); DECLARE_WRITE_LINE_MEMBER(saiyugoub1_m5205_irq_w); optional_device m_adpcm; }; @@ -309,7 +309,7 @@ WRITE8_MEMBER(chinagat_state::saiyugoub1_m5205_clk_w ) #endif } -READ8_MEMBER(chinagat_state::saiyugoub1_m5205_irq_r ) +READ_LINE_MEMBER(chinagat_state::saiyugoub1_m5205_irq_r ) { if (m_adpcm_sound_irq) { @@ -394,14 +394,6 @@ static ADDRESS_MAP_START( i8748_map, AS_PROGRAM, 8, chinagat_state ) AM_RANGE(0x0400, 0x07ff) AM_ROM /* i8749 version */ ADDRESS_MAP_END -static ADDRESS_MAP_START( i8748_portmap, AS_IO, 8, chinagat_state ) - AM_RANGE(MCS48_PORT_BUS, MCS48_PORT_BUS) AM_READ(saiyugoub1_mcu_command_r) - AM_RANGE(MCS48_PORT_T0, MCS48_PORT_T0) AM_WRITE(saiyugoub1_m5205_clk_w) /* Drives the clock on the m5205 at 1/8 of this frequency */ - AM_RANGE(MCS48_PORT_T1, MCS48_PORT_T1) AM_READ(saiyugoub1_m5205_irq_r) - AM_RANGE(MCS48_PORT_P1, MCS48_PORT_P1) AM_WRITE(saiyugoub1_adpcm_rom_addr_w) - AM_RANGE(MCS48_PORT_P2, MCS48_PORT_P2) AM_WRITE(saiyugoub1_adpcm_control_w) -ADDRESS_MAP_END - static INPUT_PORTS_START( chinagat ) @@ -609,7 +601,12 @@ static MACHINE_CONFIG_START( saiyugoub1, chinagat_state ) MCFG_CPU_ADD("mcu", I8748, 9263750) /* 9.263750 MHz oscillator, divided by 3*5 internally */ MCFG_CPU_PROGRAM_MAP(i8748_map) - MCFG_CPU_IO_MAP(i8748_portmap) + MCFG_MCS48_PORT_BUS_IN_CB(READ8(chinagat_state, saiyugoub1_mcu_command_r)) + //MCFG_MCS48_PORT_T0_CLK_CUSTOM(chinagat_state, saiyugoub1_m5205_clk_w) /* Drives the clock on the m5205 at 1/8 of this frequency */ + MCFG_MCS48_PORT_T1_IN_CB(READLINE(chinagat_state, saiyugoub1_m5205_irq_r)) + MCFG_MCS48_PORT_P1_OUT_CB(WRITE8(chinagat_state, saiyugoub1_adpcm_rom_addr_w)) + MCFG_MCS48_PORT_P2_OUT_CB(WRITE8(chinagat_state, saiyugoub1_adpcm_control_w)) + MCFG_QUANTUM_TIME(attotime::from_hz(6000)) /* heavy interleaving to sync up sprite<->main cpu's */ diff --git a/src/mame/drivers/cp1.cpp b/src/mame/drivers/cp1.cpp index c9a9205b492..08133f1a5c3 100644 --- a/src/mame/drivers/cp1.cpp +++ b/src/mame/drivers/cp1.cpp @@ -42,12 +42,8 @@ public: virtual void machine_reset() override; DECLARE_READ8_MEMBER(port1_r); DECLARE_READ8_MEMBER(port2_r); - DECLARE_READ8_MEMBER(getbus); - DECLARE_READ8_MEMBER(t0_r); - DECLARE_READ8_MEMBER(t1_r); DECLARE_WRITE8_MEMBER(port1_w); DECLARE_WRITE8_MEMBER(port2_w); - DECLARE_WRITE8_MEMBER(putbus); DECLARE_QUICKLOAD_LOAD_MEMBER(quickload); DECLARE_READ8_MEMBER(i8155_read); @@ -113,29 +109,6 @@ WRITE8_MEMBER(cp1_state::port2_w) m_port2 = data; } -READ8_MEMBER(cp1_state::t0_r) -{ - logerror("t0_r\n"); - return 0; -} - -READ8_MEMBER(cp1_state::t1_r) -{ - logerror("t1_r\n"); - return 0; -} - -READ8_MEMBER(cp1_state::getbus) -{ - logerror("getbus\n"); - return 0; -} - -WRITE8_MEMBER(cp1_state::putbus) -{ - logerror("putbus\n"); -} - READ8_MEMBER(cp1_state::i8155_read) { uint8_t data = 0; @@ -209,11 +182,6 @@ WRITE8_MEMBER(cp1_state::i8155_portc_w) static ADDRESS_MAP_START( cp1_io , AS_IO, 8, cp1_state) ADDRESS_MAP_UNMAP_HIGH AM_RANGE( 0x00, 0xff ) AM_READWRITE( i8155_read, i8155_write) - AM_RANGE( MCS48_PORT_P1, MCS48_PORT_P1) AM_READWRITE( port1_r, port1_w ) - AM_RANGE( MCS48_PORT_P2, MCS48_PORT_P2) AM_READWRITE( port2_r, port2_w ) - AM_RANGE( MCS48_PORT_BUS, MCS48_PORT_BUS) AM_READWRITE( getbus, putbus ) - AM_RANGE( MCS48_PORT_T0, MCS48_PORT_T0) AM_READ( t0_r ) - AM_RANGE( MCS48_PORT_T1, MCS48_PORT_T1) AM_READ( t1_r ) ADDRESS_MAP_END /* Input ports */ @@ -287,6 +255,14 @@ static MACHINE_CONFIG_START( cp1, cp1_state ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", I8049, XTAL_6MHz) MCFG_CPU_IO_MAP(cp1_io) + MCFG_MCS48_PORT_P1_IN_CB(READ8(cp1_state, port1_r)) + MCFG_MCS48_PORT_P1_OUT_CB(WRITE8(cp1_state, port1_w)) + MCFG_MCS48_PORT_P2_IN_CB(READ8(cp1_state, port2_r)) + MCFG_MCS48_PORT_P2_OUT_CB(WRITE8(cp1_state, port2_w)) + MCFG_MCS48_PORT_BUS_IN_CB(LOGGER("getbus")) + MCFG_MCS48_PORT_BUS_OUT_CB(LOGGER("putbus")) + MCFG_MCS48_PORT_T0_IN_CB(LOGGER("t0_r")) + MCFG_MCS48_PORT_T1_IN_CB(LOGGER("t1_r")) MCFG_DEVICE_ADD("i8155", I8155, 0) MCFG_I8155_OUT_PORTA_CB(WRITE8(cp1_state, i8155_porta_w)) diff --git a/src/mame/drivers/decocass.cpp b/src/mame/drivers/decocass.cpp index 0f26d36167f..53660726a53 100644 --- a/src/mame/drivers/decocass.cpp +++ b/src/mame/drivers/decocass.cpp @@ -135,11 +135,6 @@ static ADDRESS_MAP_START( decocass_sound_map, AS_PROGRAM, 8, decocass_state ) ADDRESS_MAP_END -static ADDRESS_MAP_START( decocass_mcu_portmap, AS_IO, 8, decocass_state ) - AM_RANGE(MCS48_PORT_P1, MCS48_PORT_P1) AM_READWRITE(i8041_p1_r, i8041_p1_w) - AM_RANGE(MCS48_PORT_P2, MCS48_PORT_P2) AM_READWRITE(i8041_p2_r, i8041_p2_w) -ADDRESS_MAP_END - static INPUT_PORTS_START( decocass ) PORT_START("IN0") PORT_BIT( 0x01, IP_ACTIVE_HIGH,IPT_JOYSTICK_RIGHT ) @@ -789,7 +784,10 @@ static MACHINE_CONFIG_START( decocass, decocass_state ) MCFG_TIMER_DRIVER_ADD_SCANLINE("audionmi", decocass_state, decocass_audio_nmi_gen, "screen", 0, 8) MCFG_CPU_ADD("mcu", I8041, HCLK) - MCFG_CPU_IO_MAP(decocass_mcu_portmap) + MCFG_MCS48_PORT_P1_IN_CB(READ8(decocass_state, i8041_p1_r)) + MCFG_MCS48_PORT_P1_OUT_CB(WRITE8(decocass_state, i8041_p1_w)) + MCFG_MCS48_PORT_P2_IN_CB(READ8(decocass_state, i8041_p2_r)) + MCFG_MCS48_PORT_P2_OUT_CB(WRITE8(decocass_state, i8041_p2_w)) MCFG_QUANTUM_TIME(attotime::from_hz(4200)) /* interleave CPUs */ diff --git a/src/mame/drivers/dmv.cpp b/src/mame/drivers/dmv.cpp index 2fba08cebc6..3277d98ee96 100644 --- a/src/mame/drivers/dmv.cpp +++ b/src/mame/drivers/dmv.cpp @@ -554,11 +554,6 @@ WRITE8_MEMBER(dmv_state::kb_mcu_port2_w) m_slot7->keyint_w(BIT(data, 4)); } -static ADDRESS_MAP_START( dmv_kb_ctrl_io, AS_IO, 8, dmv_state ) - AM_RANGE(MCS48_PORT_P1, MCS48_PORT_P1) AM_READWRITE(kb_mcu_port1_r, kb_mcu_port1_w) // bit 0 data from kb, bit 1 data to kb - AM_RANGE(MCS48_PORT_P2, MCS48_PORT_P2) AM_WRITE(kb_mcu_port2_w) -ADDRESS_MAP_END - static ADDRESS_MAP_START( upd7220_map, AS_0, 16, dmv_state ) ADDRESS_MAP_GLOBAL_MASK(0x1ffff) AM_RANGE(0x00000, 0x1ffff) AM_RAM AM_SHARE("video_ram") @@ -724,7 +719,9 @@ static MACHINE_CONFIG_START( dmv, dmv_state ) MCFG_CPU_IO_MAP(dmv_io) MCFG_CPU_ADD("kb_ctrl_mcu", I8741, XTAL_6MHz) - MCFG_CPU_IO_MAP(dmv_kb_ctrl_io) + MCFG_MCS48_PORT_P1_IN_CB(READ8(dmv_state, kb_mcu_port1_r)) // bit 0 data from kb + MCFG_MCS48_PORT_P1_OUT_CB(WRITE8(dmv_state, kb_mcu_port1_w)) // bit 1 data to kb + MCFG_MCS48_PORT_P2_OUT_CB(WRITE8(dmv_state, kb_mcu_port2_w)) MCFG_QUANTUM_PERFECT_CPU("maincpu") diff --git a/src/mame/drivers/drw80pkr.cpp b/src/mame/drivers/drw80pkr.cpp index 01f5f3f0f09..150724fccd0 100644 --- a/src/mame/drivers/drw80pkr.cpp +++ b/src/mame/drivers/drw80pkr.cpp @@ -56,17 +56,13 @@ public: uint8_t m_pkr_io_ram[0x100]; uint16_t m_video_ram[0x0400]; uint8_t m_color_ram[0x0400]; - DECLARE_WRITE8_MEMBER(t0_w); - DECLARE_WRITE8_MEMBER(t1_w); - DECLARE_WRITE8_MEMBER(p0_w); DECLARE_WRITE8_MEMBER(p1_w); DECLARE_WRITE8_MEMBER(p2_w); - DECLARE_WRITE8_MEMBER(prog_w); + DECLARE_WRITE_LINE_MEMBER(prog_w); DECLARE_WRITE8_MEMBER(bus_w); DECLARE_WRITE8_MEMBER(drw80pkr_io_w); - DECLARE_READ8_MEMBER(t0_r); - DECLARE_READ8_MEMBER(t1_r); - DECLARE_READ8_MEMBER(p0_r); + DECLARE_READ_LINE_MEMBER(t0_r); + DECLARE_READ_LINE_MEMBER(t1_r); DECLARE_READ8_MEMBER(p1_r); DECLARE_READ8_MEMBER(p2_r); DECLARE_READ8_MEMBER(bus_r); @@ -95,21 +91,6 @@ void drw80pkr_state::machine_start() * Write Handlers * ******************/ -WRITE8_MEMBER(drw80pkr_state::t0_w) -{ - m_t0 = data; -} - -WRITE8_MEMBER(drw80pkr_state::t1_w) -{ - m_t1 = data; -} - -WRITE8_MEMBER(drw80pkr_state::p0_w) -{ - m_p0 = data; -} - WRITE8_MEMBER(drw80pkr_state::p1_w) { m_p1 = data; @@ -120,9 +101,9 @@ WRITE8_MEMBER(drw80pkr_state::p2_w) m_p2 = data; } -WRITE8_MEMBER(drw80pkr_state::prog_w) +WRITE_LINE_MEMBER(drw80pkr_state::prog_w) { - m_prog = data; + m_prog = state; // Bankswitch Program Memory if (m_prog == 0x01) @@ -216,21 +197,16 @@ WRITE8_MEMBER(drw80pkr_state::drw80pkr_io_w) * Read Handlers * ****************/ -READ8_MEMBER(drw80pkr_state::t0_r) +READ_LINE_MEMBER(drw80pkr_state::t0_r) { return m_t0; } -READ8_MEMBER(drw80pkr_state::t1_r) +READ_LINE_MEMBER(drw80pkr_state::t1_r) { return m_t1; } -READ8_MEMBER(drw80pkr_state::p0_r) -{ - return m_p0; -} - READ8_MEMBER(drw80pkr_state::p1_r) { return m_p1; @@ -428,13 +404,6 @@ ADDRESS_MAP_END static ADDRESS_MAP_START( drw80pkr_io_map, AS_IO, 8, drw80pkr_state ) AM_RANGE(0x00, 0xff) AM_READWRITE(drw80pkr_io_r, drw80pkr_io_w) - AM_RANGE(MCS48_PORT_T0, MCS48_PORT_T0) AM_READWRITE(t0_r, t0_w) - AM_RANGE(MCS48_PORT_T1, MCS48_PORT_T1) AM_READWRITE(t1_r, t1_w) - AM_RANGE(MCS48_PORT_P0, MCS48_PORT_P0) AM_READWRITE(p0_r, p0_w) - AM_RANGE(MCS48_PORT_P1, MCS48_PORT_P1) AM_READWRITE(p1_r, p1_w) - AM_RANGE(MCS48_PORT_P2, MCS48_PORT_P2) AM_READWRITE(p2_r, p2_w) - AM_RANGE(MCS48_PORT_PROG, MCS48_PORT_PROG) AM_RAM_WRITE(prog_w) - AM_RANGE(MCS48_PORT_BUS, MCS48_PORT_BUS) AM_READWRITE(bus_r, bus_w) ADDRESS_MAP_END /************************* @@ -474,6 +443,15 @@ static MACHINE_CONFIG_START( drw80pkr, drw80pkr_state ) MCFG_CPU_ADD("maincpu", I8039, CPU_CLOCK) MCFG_CPU_PROGRAM_MAP(drw80pkr_map) MCFG_CPU_IO_MAP(drw80pkr_io_map) + MCFG_MCS48_PORT_T0_IN_CB(READLINE(drw80pkr_state, t0_r)) + MCFG_MCS48_PORT_T1_IN_CB(READLINE(drw80pkr_state, t1_r)) + MCFG_MCS48_PORT_P1_IN_CB(READ8(drw80pkr_state, p1_r)) + MCFG_MCS48_PORT_P1_OUT_CB(WRITE8(drw80pkr_state, p1_w)) + MCFG_MCS48_PORT_P2_IN_CB(READ8(drw80pkr_state, p2_r)) + MCFG_MCS48_PORT_P2_OUT_CB(WRITE8(drw80pkr_state, p2_w)) + MCFG_MCS48_PORT_PROG_OUT_CB(WRITELINE(drw80pkr_state, prog_w)) + MCFG_MCS48_PORT_BUS_IN_CB(READ8(drw80pkr_state, bus_r)) + MCFG_MCS48_PORT_BUS_OUT_CB(WRITE8(drw80pkr_state, bus_w)) MCFG_CPU_VBLANK_INT_DRIVER("screen", drw80pkr_state, irq0_line_hold) diff --git a/src/mame/drivers/fidelmcs48.cpp b/src/mame/drivers/fidelmcs48.cpp index cbdd193adb2..9b4cadcfdb9 100644 --- a/src/mame/drivers/fidelmcs48.cpp +++ b/src/mame/drivers/fidelmcs48.cpp @@ -46,8 +46,8 @@ public: DECLARE_WRITE8_MEMBER(sc6_mux_w); DECLARE_WRITE8_MEMBER(sc6_select_w); DECLARE_READ8_MEMBER(sc6_input_r); - DECLARE_READ8_MEMBER(sc6_input6_r); - DECLARE_READ8_MEMBER(sc6_input7_r); + DECLARE_READ_LINE_MEMBER(sc6_input6_r); + DECLARE_READ_LINE_MEMBER(sc6_input7_r); }; @@ -94,13 +94,13 @@ READ8_MEMBER(fidelmcs48_state::sc6_input_r) return (~read_inputs(9) & 0x3f) | 0xc0; } -READ8_MEMBER(fidelmcs48_state::sc6_input6_r) +READ_LINE_MEMBER(fidelmcs48_state::sc6_input6_r) { // T0: multiplexed inputs bit 6 return ~read_inputs(9) >> 6 & 1; } -READ8_MEMBER(fidelmcs48_state::sc6_input7_r) +READ_LINE_MEMBER(fidelmcs48_state::sc6_input7_r) { // T1: multiplexed inputs bit 7 return ~read_inputs(9) >> 7 & 1; @@ -118,14 +118,6 @@ static ADDRESS_MAP_START( sc6_map, AS_PROGRAM, 8, fidelmcs48_state ) AM_RANGE(0x0000, 0x0fff) AM_ROM ADDRESS_MAP_END -static ADDRESS_MAP_START( sc6_io, AS_IO, 8, fidelmcs48_state ) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(MCS48_PORT_P2, MCS48_PORT_P2) AM_WRITE(sc6_mux_w) AM_READNOP - AM_RANGE(MCS48_PORT_P1, MCS48_PORT_P1) AM_READWRITE(sc6_input_r, sc6_select_w) - AM_RANGE(MCS48_PORT_T0, MCS48_PORT_T0) AM_READ(sc6_input6_r) - AM_RANGE(MCS48_PORT_T1, MCS48_PORT_T1) AM_READ(sc6_input7_r) -ADDRESS_MAP_END - /****************************************************************************** @@ -157,7 +149,12 @@ static MACHINE_CONFIG_START( sc6, fidelmcs48_state ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", I8040, XTAL_11MHz) MCFG_CPU_PROGRAM_MAP(sc6_map) - MCFG_CPU_IO_MAP(sc6_io) + MCFG_MCS48_PORT_P2_OUT_CB(WRITE8(fidelmcs48_state, sc6_mux_w)) + MCFG_MCS48_PORT_P2_IN_CB(CONSTANT(0xff)) + MCFG_MCS48_PORT_P1_IN_CB(READ8(fidelmcs48_state, sc6_input_r)) + MCFG_MCS48_PORT_P1_OUT_CB(WRITE8(fidelmcs48_state, sc6_select_w)) + MCFG_MCS48_PORT_T0_IN_CB(READLINE(fidelmcs48_state, sc6_input6_r)) + MCFG_MCS48_PORT_T1_IN_CB(READLINE(fidelmcs48_state, sc6_input7_r)) MCFG_TIMER_DRIVER_ADD_PERIODIC("display_decay", fidelbase_state, display_decay_tick, attotime::from_msec(1)) MCFG_DEFAULT_LAYOUT(layout_fidel_sc6) diff --git a/src/mame/drivers/fidelz80.cpp b/src/mame/drivers/fidelz80.cpp index 56ed7c38537..b279facc2bf 100644 --- a/src/mame/drivers/fidelz80.cpp +++ b/src/mame/drivers/fidelz80.cpp @@ -573,8 +573,8 @@ public: void vbrc_prepare_display(); DECLARE_WRITE8_MEMBER(vbrc_speech_w); DECLARE_WRITE8_MEMBER(vbrc_mcu_p1_w); - DECLARE_READ8_MEMBER(vbrc_mcu_t0_r); - DECLARE_READ8_MEMBER(vbrc_mcu_t1_r); + DECLARE_READ_LINE_MEMBER(vbrc_mcu_t0_r); + DECLARE_READ_LINE_MEMBER(vbrc_mcu_t1_r); DECLARE_READ8_MEMBER(vbrc_mcu_p2_r); DECLARE_WRITE8_MEMBER(vbrc_ioexp_port_w); @@ -1068,16 +1068,16 @@ READ8_MEMBER(fidelz80_state::vbrc_mcu_p2_r) { // P20-P23: I8243 P2 // P24-P27: multiplexed inputs (active low) - return (m_i8243->i8243_p2_r(space, offset) & 0x0f) | (read_inputs(8) << 4 ^ 0xf0); + return (m_i8243->p2_r(space, offset) & 0x0f) | (read_inputs(8) << 4 ^ 0xf0); } -READ8_MEMBER(fidelz80_state::vbrc_mcu_t0_r) +READ_LINE_MEMBER(fidelz80_state::vbrc_mcu_t0_r) { // T0: card scanner? return 0; } -READ8_MEMBER(fidelz80_state::vbrc_mcu_t1_r) +READ_LINE_MEMBER(fidelz80_state::vbrc_mcu_t1_r) { // T1: ? (locks up on const 0 or 1) return machine().rand() & 1; @@ -1227,15 +1227,6 @@ static ADDRESS_MAP_START( vbrc_main_io, AS_IO, 8, fidelz80_state ) AM_RANGE(0x00, 0x01) AM_DEVREADWRITE("mcu", i8041_device, upi41_master_r, upi41_master_w) ADDRESS_MAP_END -static ADDRESS_MAP_START( vbrc_mcu_map, AS_IO, 8, fidelz80_state ) - ADDRESS_MAP_UNMAP_LOW - AM_RANGE(MCS48_PORT_P1, MCS48_PORT_P1) AM_WRITE(vbrc_mcu_p1_w) - AM_RANGE(MCS48_PORT_P2, MCS48_PORT_P2) AM_READ(vbrc_mcu_p2_r) AM_DEVWRITE("i8243", i8243_device, i8243_p2_w) - AM_RANGE(MCS48_PORT_PROG, MCS48_PORT_PROG) AM_DEVWRITE("i8243", i8243_device, i8243_prog_w) - AM_RANGE(MCS48_PORT_T0, MCS48_PORT_T0) AM_READ(vbrc_mcu_t0_r) - AM_RANGE(MCS48_PORT_T1, MCS48_PORT_T1) AM_READ(vbrc_mcu_t1_r) -ADDRESS_MAP_END - // DSC @@ -1784,7 +1775,13 @@ static MACHINE_CONFIG_START( vbrc, fidelz80_state ) MCFG_QUANTUM_PERFECT_CPU("maincpu") MCFG_CPU_ADD("mcu", I8041, XTAL_5MHz) - MCFG_CPU_IO_MAP(vbrc_mcu_map) + MCFG_MCS48_PORT_P1_IN_CB(CONSTANT(0)) // ??? + MCFG_MCS48_PORT_P1_OUT_CB(WRITE8(fidelz80_state, vbrc_mcu_p1_w)) + MCFG_MCS48_PORT_P2_IN_CB(READ8(fidelz80_state, vbrc_mcu_p2_r)) + MCFG_MCS48_PORT_P2_OUT_CB(DEVWRITE8("i8243", i8243_device, p2_w)) + MCFG_MCS48_PORT_PROG_OUT_CB(DEVWRITELINE("i8243", i8243_device, prog_w)) + MCFG_MCS48_PORT_T0_IN_CB(READLINE(fidelz80_state, vbrc_mcu_t0_r)) + MCFG_MCS48_PORT_T1_IN_CB(READLINE(fidelz80_state, vbrc_mcu_t1_r)) MCFG_I8243_ADD("i8243", NOOP, WRITE8(fidelz80_state, vbrc_ioexp_port_w)) diff --git a/src/mame/drivers/finalizr.cpp b/src/mame/drivers/finalizr.cpp index dc71a032558..ffb71f94274 100644 --- a/src/mame/drivers/finalizr.cpp +++ b/src/mame/drivers/finalizr.cpp @@ -77,7 +77,7 @@ WRITE8_MEMBER(finalizr_state::i8039_irqen_w) m_audiocpu->set_input_line(0, CLEAR_LINE); } -READ8_MEMBER(finalizr_state::i8039_T1_r) +READ_LINE_MEMBER(finalizr_state::i8039_T1_r) { /* I suspect the clock-out from the I8039 T0 line should be connected here (See the i8039_T0_w handler below). @@ -138,10 +138,6 @@ ADDRESS_MAP_END static ADDRESS_MAP_START( sound_io_map, AS_IO, 8, finalizr_state ) AM_RANGE(0x00, 0xff) AM_DEVREAD("soundlatch", generic_latch_8_device, read) - AM_RANGE(MCS48_PORT_P1, MCS48_PORT_P1) AM_DEVWRITE("dac", dac_byte_interface, write) - AM_RANGE(MCS48_PORT_P2, MCS48_PORT_P2) AM_WRITE(i8039_irqen_w) - AM_RANGE(MCS48_PORT_T0, MCS48_PORT_T0) AM_WRITE(i8039_T0_w) - AM_RANGE(MCS48_PORT_T1, MCS48_PORT_T1) AM_READ(i8039_T1_r) ADDRESS_MAP_END @@ -274,6 +270,10 @@ static MACHINE_CONFIG_START( finalizr, finalizr_state ) MCFG_CPU_ADD("audiocpu", I8039,XTAL_18_432MHz/2) /* 9.216MHz clkin ?? */ MCFG_CPU_PROGRAM_MAP(sound_map) MCFG_CPU_IO_MAP(sound_io_map) + MCFG_MCS48_PORT_P1_OUT_CB(DEVWRITE8("dac", dac_byte_interface, write)) + MCFG_MCS48_PORT_P2_OUT_CB(WRITE8(finalizr_state, i8039_irqen_w)) + //MCFG_MCS48_PORT_T0_CLK_CUSTOM(finalizr_state, i8039_T0_w) + MCFG_MCS48_PORT_T1_IN_CB(READLINE(finalizr_state, i8039_T1_r)) MCFG_WATCHDOG_ADD("watchdog") diff --git a/src/mame/drivers/gladiatr.cpp b/src/mame/drivers/gladiatr.cpp index cdc5cf0208a..dbe6ccdff51 100644 --- a/src/mame/drivers/gladiatr.cpp +++ b/src/mame/drivers/gladiatr.cpp @@ -290,16 +290,6 @@ READ8_MEMBER(gladiatr_state::ucpu_p2_r) return BITSWAP8(m_dsw1->read(), 0,1,2,3,4,5,6,7); } -READ8_MEMBER(gladiatr_state::cctl_t_r) -{ - return BIT(m_coins->read(), offset + 2); -} - -READ8_MEMBER(gladiatr_state::ccpu_t_r) -{ - return BIT(m_coins->read(), offset); -} - WRITE8_MEMBER(gladiatr_state::ccpu_p2_w) { // FIXME: active high or active low? (bootleg MCU never uses these outputs) @@ -307,13 +297,13 @@ WRITE8_MEMBER(gladiatr_state::ccpu_p2_w) machine().bookkeeping().coin_counter_w(1, BIT(data, 7)); } -READ8_MEMBER(gladiatr_state::tclk_r) +READ_LINE_MEMBER(gladiatr_state::tclk_r) { // fed to t0 on comms MCUs - return m_tclk_val ? 0x01 : 0x00; + return m_tclk_val ? 1 : 0; } -READ8_MEMBER(gladiatr_state::ucpu_t1_r) +READ_LINE_MEMBER(gladiatr_state::ucpu_t1_r) { // connected to p1 on other MCU return BIT(m_csnd_p1, 1); @@ -332,7 +322,7 @@ WRITE8_MEMBER(gladiatr_state::ucpu_p1_w) m_ucpu_p1 = data; } -READ8_MEMBER(gladiatr_state::csnd_t1_r) +READ_LINE_MEMBER(gladiatr_state::csnd_t1_r) { // connected to p1 on other MCU return BIT(m_ucpu_p1, 1); @@ -540,33 +530,6 @@ static ADDRESS_MAP_START( gladiatr_cpu2_io, AS_IO, 8, gladiatr_state ) ADDRESS_MAP_END -static ADDRESS_MAP_START( cctl_io_map, AS_IO, 8, gladiatr_state ) - AM_RANGE(MCS48_PORT_T0, MCS48_PORT_T1) AM_READ(cctl_t_r) - AM_RANGE(MCS48_PORT_P1, MCS48_PORT_P1) AM_READ(cctl_p1_r) - AM_RANGE(MCS48_PORT_P2, MCS48_PORT_P2) AM_READ(cctl_p2_r) -ADDRESS_MAP_END - -static ADDRESS_MAP_START( ccpu_io_map, AS_IO, 8, gladiatr_state ) - AM_RANGE(MCS48_PORT_P1, MCS48_PORT_P1) AM_READ_PORT("IN0") - AM_RANGE(MCS48_PORT_P2, MCS48_PORT_P2) AM_READ_PORT("IN1") AM_WRITE(ccpu_p2_w) - AM_RANGE(MCS48_PORT_T0, MCS48_PORT_T1) AM_READ(ccpu_t_r) -ADDRESS_MAP_END - -static ADDRESS_MAP_START( ucpu_io_map, AS_IO, 8, gladiatr_state ) - AM_RANGE(MCS48_PORT_P1, MCS48_PORT_P1) AM_READWRITE(ucpu_p1_r, ucpu_p1_w) - AM_RANGE(MCS48_PORT_P2, MCS48_PORT_P2) AM_READ(ucpu_p2_r) - AM_RANGE(MCS48_PORT_T0, MCS48_PORT_T0) AM_READ(tclk_r) - AM_RANGE(MCS48_PORT_T1, MCS48_PORT_T1) AM_READ(ucpu_t1_r) -ADDRESS_MAP_END - -static ADDRESS_MAP_START( csnd_io_map, AS_IO, 8, gladiatr_state ) - AM_RANGE(MCS48_PORT_P1, MCS48_PORT_P1) AM_READWRITE(csnd_p1_r, csnd_p1_w) - AM_RANGE(MCS48_PORT_P2, MCS48_PORT_P2) AM_READ(csnd_p2_r) - AM_RANGE(MCS48_PORT_T0, MCS48_PORT_T0) AM_READ(tclk_r) - AM_RANGE(MCS48_PORT_T1, MCS48_PORT_T1) AM_READ(csnd_t1_r) -ADDRESS_MAP_END - - static INPUT_PORTS_START( gladiatr ) PORT_START("DSW1") /* (8741-0 parallel port)*/ PORT_DIPNAME( 0x03, 0x02, DEF_STR( Difficulty ) ) PORT_DIPLOCATION("SW1:1,2") @@ -785,16 +748,31 @@ static MACHINE_CONFIG_START( gladiatr, gladiatr_state ) MCFG_NVRAM_ADD_0FILL("nvram") MCFG_DEVICE_ADD("cctl", I8741, XTAL_12MHz/2) /* verified on pcb */ - MCFG_CPU_IO_MAP(cctl_io_map) + MCFG_MCS48_PORT_T0_IN_CB(IOPORT("COINS")) MCFG_DEVCB_RSHIFT(3) + MCFG_MCS48_PORT_T1_IN_CB(IOPORT("COINS")) MCFG_DEVCB_RSHIFT(2) + MCFG_MCS48_PORT_P1_IN_CB(READ8(gladiatr_state, cctl_p1_r)) + MCFG_MCS48_PORT_P2_IN_CB(READ8(gladiatr_state, cctl_p2_r)) MCFG_DEVICE_ADD("ccpu", I8741, XTAL_12MHz/2) /* verified on pcb */ - MCFG_CPU_IO_MAP(ccpu_io_map) + MCFG_MCS48_PORT_P1_IN_CB(IOPORT("IN0")) + MCFG_MCS48_PORT_P2_IN_CB(IOPORT("IN1")) + MCFG_MCS48_PORT_P2_OUT_CB(WRITE8(gladiatr_state, ccpu_p2_w)) + MCFG_MCS48_PORT_T0_IN_CB(IOPORT("COINS")) MCFG_DEVCB_RSHIFT(1) + MCFG_MCS48_PORT_T1_IN_CB(IOPORT("COINS")) MCFG_DEVCB_RSHIFT(0) MCFG_DEVICE_ADD("ucpu", I8741, XTAL_12MHz/2) /* verified on pcb */ - MCFG_CPU_IO_MAP(ucpu_io_map) + MCFG_MCS48_PORT_P1_IN_CB(READ8(gladiatr_state, ucpu_p1_r)) + MCFG_MCS48_PORT_P1_OUT_CB(WRITE8(gladiatr_state, ucpu_p1_w)) + MCFG_MCS48_PORT_P2_IN_CB(READ8(gladiatr_state, ucpu_p2_r)) + MCFG_MCS48_PORT_T0_IN_CB(READLINE(gladiatr_state, tclk_r)) + MCFG_MCS48_PORT_T1_IN_CB(READLINE(gladiatr_state, ucpu_t1_r)) MCFG_DEVICE_ADD("csnd", I8741, XTAL_12MHz/2) /* verified on pcb */ - MCFG_CPU_IO_MAP(csnd_io_map) + MCFG_MCS48_PORT_P1_IN_CB(READ8(gladiatr_state, csnd_p1_r)) + MCFG_MCS48_PORT_P1_OUT_CB(WRITE8(gladiatr_state, csnd_p1_w)) + MCFG_MCS48_PORT_P2_IN_CB(READ8(gladiatr_state, csnd_p2_r)) + MCFG_MCS48_PORT_T0_IN_CB(READLINE(gladiatr_state, tclk_r)) + MCFG_MCS48_PORT_T1_IN_CB(READLINE(gladiatr_state, csnd_t1_r)) /* lazy way to make polled serial between MCUs work */ MCFG_QUANTUM_PERFECT_CPU("ucpu") diff --git a/src/mame/drivers/gsword.cpp b/src/mame/drivers/gsword.cpp index b0bbff0a297..a112878aad2 100644 --- a/src/mame/drivers/gsword.cpp +++ b/src/mame/drivers/gsword.cpp @@ -382,12 +382,6 @@ READ8_MEMBER(josvolly_state::mcu2_p2_r) return 0x7fU & ioport("DSW2")->read(); } -READ8_MEMBER(josvolly_state::mcu2_test_r) -{ - // TEST0 and TEST1 are driven by P20 and P21 on the other MCU - return BIT(m_mcu1_p2, offset); -} - WRITE8_MEMBER(josvolly_state::cpu2_nmi_enable_w) { m_cpu2_nmi_enable = true; @@ -536,17 +530,6 @@ static ADDRESS_MAP_START( josvolly_cpu2_io_map, AS_IO, 8, josvolly_state ) AM_RANGE(0xC1, 0xC1) AM_WRITE(cpu2_irq_clear_w); ADDRESS_MAP_END -static ADDRESS_MAP_START( josvolly_mcu1_io_map, AS_IO, 8, josvolly_state ) - AM_RANGE(MCS48_PORT_P1, MCS48_PORT_P1) AM_READWRITE(mcu1_p1_r, mcu1_p1_w) - AM_RANGE(MCS48_PORT_P2, MCS48_PORT_P2) AM_READWRITE(mcu1_p2_r, mcu1_p2_w) -ADDRESS_MAP_END - -static ADDRESS_MAP_START( josvolly_mcu2_io_map, AS_IO, 8, josvolly_state ) - AM_RANGE(MCS48_PORT_P1, MCS48_PORT_P1) AM_READWRITE(mcu2_p1_r, mcu2_p1_w) - AM_RANGE(MCS48_PORT_P2, MCS48_PORT_P2) AM_READWRITE(mcu2_p2_r, mcu2_p2_w) - AM_RANGE(MCS48_PORT_T0, MCS48_PORT_T1) AM_READ(mcu2_test_r) -ADDRESS_MAP_END - static INPUT_PORTS_START( gsword ) PORT_START("IN0") /* IN0 (8741-2 port1?) */ @@ -863,10 +846,19 @@ static MACHINE_CONFIG_START( josvolly, josvolly_state ) MCFG_CPU_VBLANK_INT_DRIVER("screen", josvolly_state, irq0_line_assert) MCFG_DEVICE_ADD("mcu1", I8741, 18000000/2) /* ? */ - MCFG_CPU_IO_MAP(josvolly_mcu1_io_map) + MCFG_MCS48_PORT_P1_IN_CB(READ8(josvolly_state, mcu1_p1_r)) + MCFG_MCS48_PORT_P1_OUT_CB(WRITE8(josvolly_state, mcu1_p1_w)) + MCFG_MCS48_PORT_P2_IN_CB(READ8(josvolly_state, mcu1_p2_r)) + MCFG_MCS48_PORT_P2_OUT_CB(WRITE8(josvolly_state, mcu1_p2_w)) MCFG_DEVICE_ADD("mcu2", I8741, 12000000/2) /* ? */ - MCFG_CPU_IO_MAP(josvolly_mcu2_io_map) + MCFG_MCS48_PORT_P1_IN_CB(READ8(josvolly_state, mcu2_p1_r)) + MCFG_MCS48_PORT_P1_OUT_CB(WRITE8(josvolly_state, mcu2_p1_w)) + MCFG_MCS48_PORT_P2_IN_CB(READ8(josvolly_state, mcu2_p2_r)) + MCFG_MCS48_PORT_P2_OUT_CB(WRITE8(josvolly_state, mcu2_p2_w)) + // TEST0 and TEST1 are driven by P20 and P21 on the other MCU + MCFG_MCS48_PORT_T0_IN_CB(DEVREAD8("mcu1", i8741_device, p2_r)) MCFG_DEVCB_RSHIFT(0) + MCFG_MCS48_PORT_T1_IN_CB(DEVREAD8("mcu1", i8741_device, p2_r)) MCFG_DEVCB_RSHIFT(1) MCFG_DEVICE_ADD("aa_007", I8255, 0) MCFG_I8255_IN_PORTA_CB(IOPORT("IN1")) // 1PL diff --git a/src/mame/drivers/gyruss.cpp b/src/mame/drivers/gyruss.cpp index 9dee79b4581..7ab865d409e 100644 --- a/src/mame/drivers/gyruss.cpp +++ b/src/mame/drivers/gyruss.cpp @@ -234,8 +234,6 @@ ADDRESS_MAP_END static ADDRESS_MAP_START( audio_cpu2_io_map, AS_IO, 8, gyruss_state ) AM_RANGE(0x00, 0xff) AM_DEVREAD("soundlatch2", generic_latch_8_device, read) - AM_RANGE(MCS48_PORT_P1, MCS48_PORT_P1) AM_WRITE(gyruss_dac_w) - AM_RANGE(MCS48_PORT_P2, MCS48_PORT_P2) AM_WRITE(gyruss_irq_clear_w) ADDRESS_MAP_END @@ -481,6 +479,8 @@ static MACHINE_CONFIG_START( gyruss, gyruss_state ) MCFG_CPU_ADD("audio2", I8039, XTAL_8MHz) MCFG_CPU_PROGRAM_MAP(audio_cpu2_map) MCFG_CPU_IO_MAP(audio_cpu2_io_map) + MCFG_MCS48_PORT_P1_OUT_CB(WRITE8(gyruss_state, gyruss_dac_w)) + MCFG_MCS48_PORT_P2_OUT_CB(WRITE8(gyruss_state, gyruss_irq_clear_w)) MCFG_QUANTUM_TIME(attotime::from_hz(6000)) diff --git a/src/mame/drivers/imds2.cpp b/src/mame/drivers/imds2.cpp index 306c69a76f8..3955676926e 100644 --- a/src/mame/drivers/imds2.cpp +++ b/src/mame/drivers/imds2.cpp @@ -155,18 +155,6 @@ static ADDRESS_MAP_START(ioc_io_map , AS_IO , 8 , imds2_state) AM_RANGE(0xf0 , 0xf8) AM_DEVREADWRITE("iocdma" , i8257_device , read , write) ADDRESS_MAP_END -static ADDRESS_MAP_START(pio_io_map , AS_IO , 8 , imds2_state) - AM_RANGE(MCS48_PORT_P1 , MCS48_PORT_P1) AM_READWRITE(imds2_pio_port_p1_r , imds2_pio_port_p1_w) - AM_RANGE(MCS48_PORT_P2 , MCS48_PORT_P2) AM_READWRITE(imds2_pio_port_p2_r , imds2_pio_port_p2_w) -ADDRESS_MAP_END - -static ADDRESS_MAP_START(kb_io_map , AS_IO , 8 , imds2_state) - AM_RANGE(MCS48_PORT_P1 , MCS48_PORT_P1) AM_WRITE(imds2_kb_port_p1_w) - AM_RANGE(MCS48_PORT_P2 , MCS48_PORT_P2) AM_READ(imds2_kb_port_p2_r) - AM_RANGE(MCS48_PORT_T0 , MCS48_PORT_T0) AM_READ(imds2_kb_port_t0_r) - AM_RANGE(MCS48_PORT_T1 , MCS48_PORT_T1) AM_READ(imds2_kb_port_t1_r) -ADDRESS_MAP_END - imds2_state::imds2_state(const machine_config &mconfig, device_type type, const char *tag) : driver_device(mconfig , type , tag), m_ipccpu(*this , "ipccpu"), @@ -366,14 +354,14 @@ WRITE8_MEMBER(imds2_state::imds2_kb_port_p1_w) m_kb_p1 = data; } -READ8_MEMBER(imds2_state::imds2_kb_port_t0_r) +READ_LINE_MEMBER(imds2_state::imds2_kb_port_t0_r) { // T0 tied low // It appears to be some kind of strapping option on kb hw return 0; } -READ8_MEMBER(imds2_state::imds2_kb_port_t1_r) +READ_LINE_MEMBER(imds2_state::imds2_kb_port_t1_r) { // T1 tied low // It appears to be some kind of strapping option on kb hw @@ -869,11 +857,17 @@ static MACHINE_CONFIG_START(imds2 , imds2_state) MCFG_SLOT_FIXED(true) MCFG_CPU_ADD("iocpio" , I8041 , IOC_XTAL_Y3) - MCFG_CPU_IO_MAP(pio_io_map) + MCFG_MCS48_PORT_P1_IN_CB(READ8(imds2_state, imds2_pio_port_p1_r)) + MCFG_MCS48_PORT_P1_OUT_CB(WRITE8(imds2_state, imds2_pio_port_p1_w)) + MCFG_MCS48_PORT_P2_IN_CB(READ8(imds2_state, imds2_pio_port_p2_r)) + MCFG_MCS48_PORT_P2_OUT_CB(WRITE8(imds2_state, imds2_pio_port_p2_w)) MCFG_QUANTUM_TIME(attotime::from_hz(100)) MCFG_CPU_ADD("kbcpu", I8741, XTAL_3_579545MHz) /* 3.579545 MHz */ - MCFG_CPU_IO_MAP(kb_io_map) + MCFG_MCS48_PORT_P1_OUT_CB(WRITE8(imds2_state, imds2_kb_port_p1_w)) + MCFG_MCS48_PORT_P2_IN_CB(READ8(imds2_state, imds2_kb_port_p2_r)) + MCFG_MCS48_PORT_T0_IN_CB(READLINE(imds2_state, imds2_kb_port_t0_r)) + MCFG_MCS48_PORT_T1_IN_CB(READLINE(imds2_state, imds2_kb_port_t1_r)) MCFG_QUANTUM_TIME(attotime::from_hz(100)) MCFG_CENTRONICS_ADD("centronics", centronics_devices, "printer") diff --git a/src/mame/drivers/itt3030.cpp b/src/mame/drivers/itt3030.cpp index 46e1ae388b8..cd07cfa4dd6 100644 --- a/src/mame/drivers/itt3030.cpp +++ b/src/mame/drivers/itt3030.cpp @@ -255,7 +255,7 @@ public: DECLARE_READ8_MEMBER(vsync_r); DECLARE_WRITE8_MEMBER( beep_w ); DECLARE_WRITE8_MEMBER(bank_w); - DECLARE_READ8_MEMBER(kbd_matrix_r); + DECLARE_READ_LINE_MEMBER(kbd_matrix_r); DECLARE_WRITE8_MEMBER(kbd_matrix_w); DECLARE_READ8_MEMBER(kbd_port2_r); DECLARE_WRITE8_MEMBER(kbd_port2_w); @@ -462,7 +462,7 @@ static ADDRESS_MAP_START( itt3030_io, AS_IO, 8, itt3030_state ) AM_RANGE(0xf6, 0xf6) AM_WRITE(bank_w) ADDRESS_MAP_END -READ8_MEMBER(itt3030_state::kbd_matrix_r) +READ_LINE_MEMBER(itt3030_state::kbd_matrix_r) { return m_kbdread; } @@ -494,17 +494,6 @@ READ8_MEMBER(itt3030_state::kbd_port2_r) return m_kbdport2; } -// Schematics + i8278 datasheet says: -// Port 1 goes to the keyboard matrix. -// bits 0-2 select bit to read back, bits 3-6 choose column to read from, bit 7 clocks the process (rising edge strobes the row, falling edge reads the data) -// T0 is the key matrix return -// pin 23 is the UPI-41 host IRQ line, it's unknown how it's connected to the Z80 -static ADDRESS_MAP_START( kbdmcu_io, AS_IO, 8, itt3030_state ) - AM_RANGE(MCS48_PORT_T0, MCS48_PORT_T0) AM_READ(kbd_matrix_r) - AM_RANGE(MCS48_PORT_P1, MCS48_PORT_P1) AM_WRITE(kbd_matrix_w) - AM_RANGE(MCS48_PORT_P2, MCS48_PORT_P2) AM_READWRITE(kbd_port2_r, kbd_port2_w) -ADDRESS_MAP_END - static INPUT_PORTS_START( itt3030 ) PORT_START("ROW.0") PORT_BIT(0x0001, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("F4") PORT_CODE(KEYCODE_F4) PORT_CHAR(UCHAR_MAMEKEY(F4)) @@ -673,8 +662,16 @@ static MACHINE_CONFIG_START( itt3030, itt3030_state ) MCFG_CPU_PROGRAM_MAP(itt3030_map) MCFG_CPU_IO_MAP(itt3030_io) + // Schematics + i8278 datasheet says: + // Port 1 goes to the keyboard matrix. + // bits 0-2 select bit to read back, bits 3-6 choose column to read from, bit 7 clocks the process (rising edge strobes the row, falling edge reads the data) + // T0 is the key matrix return + // pin 23 is the UPI-41 host IRQ line, it's unknown how it's connected to the Z80 MCFG_CPU_ADD("kbdmcu", I8741, XTAL_6MHz) - MCFG_CPU_IO_MAP(kbdmcu_io) + MCFG_MCS48_PORT_T0_IN_CB(READLINE(itt3030_state, kbd_matrix_r)) + MCFG_MCS48_PORT_P1_OUT_CB(WRITE8(itt3030_state, kbd_matrix_w)) + MCFG_MCS48_PORT_P2_IN_CB(READ8(itt3030_state, kbd_port2_r)) + MCFG_MCS48_PORT_P2_OUT_CB(WRITE8(itt3030_state, kbd_port2_w)) /* video hardware */ MCFG_SCREEN_ADD("screen", RASTER) diff --git a/src/mame/drivers/junofrst.cpp b/src/mame/drivers/junofrst.cpp index 07652b29703..c8dfd6ef8bd 100644 --- a/src/mame/drivers/junofrst.cpp +++ b/src/mame/drivers/junofrst.cpp @@ -337,8 +337,6 @@ ADDRESS_MAP_END static ADDRESS_MAP_START( mcu_io_map, AS_IO, 8, junofrst_state ) AM_RANGE(0x00, 0xff) AM_DEVREAD("soundlatch2", generic_latch_8_device, read) - AM_RANGE(MCS48_PORT_P1, MCS48_PORT_P1) AM_DEVWRITE("dac", dac_byte_interface, write) - AM_RANGE(MCS48_PORT_P2, MCS48_PORT_P2) AM_WRITE(i8039_irqen_and_status_w) ADDRESS_MAP_END @@ -425,6 +423,8 @@ static MACHINE_CONFIG_START( junofrst, junofrst_state ) MCFG_CPU_ADD("mcu", I8039,8000000) /* 8MHz crystal */ MCFG_CPU_PROGRAM_MAP(mcu_map) MCFG_CPU_IO_MAP(mcu_io_map) + MCFG_MCS48_PORT_P1_OUT_CB(DEVWRITE8("dac", dac_byte_interface, write)) + MCFG_MCS48_PORT_P2_OUT_CB(WRITE8(junofrst_state, i8039_irqen_and_status_w)) MCFG_WATCHDOG_ADD("watchdog") diff --git a/src/mame/drivers/k28.cpp b/src/mame/drivers/k28.cpp index 07f5393573f..ef0b413ad47 100644 --- a/src/mame/drivers/k28.cpp +++ b/src/mame/drivers/k28.cpp @@ -81,8 +81,7 @@ public: DECLARE_READ8_MEMBER(mcu_p1_r); DECLARE_READ8_MEMBER(mcu_p2_r); DECLARE_WRITE8_MEMBER(mcu_p2_w); - DECLARE_WRITE8_MEMBER(mcu_prog_w); - DECLARE_READ8_MEMBER(mcu_t1_r); + DECLARE_WRITE_LINE_MEMBER(mcu_prog_w); DECLARE_INPUT_CHANGED_MEMBER(power_on); void power_off(); @@ -333,10 +332,9 @@ WRITE8_MEMBER(k28_state::mcu_p2_w) m_phoneme = (m_phoneme & ~0xf) | (data & 0xf); } -WRITE8_MEMBER(k28_state::mcu_prog_w) +WRITE_LINE_MEMBER(k28_state::mcu_prog_w) { // 8021 PROG: clock VFD driver - int state = (data) ? 1 : 0; bool rise = state == 1 && !m_vfd_clock; m_vfd_clock = state; @@ -374,19 +372,9 @@ WRITE8_MEMBER(k28_state::mcu_prog_w) } } -READ8_MEMBER(k28_state::mcu_t1_r) -{ - // 8021 T1: SC-01 A/R pin - return m_speech->request() ? 1 : 0; -} - static ADDRESS_MAP_START( k28_mcu_map, AS_IO, 8, k28_state ) AM_RANGE(0x00, 0x00) AM_MIRROR(0xff) AM_WRITE(mcu_p0_w) - AM_RANGE(MCS48_PORT_P1, MCS48_PORT_P1) AM_READ(mcu_p1_r) - AM_RANGE(MCS48_PORT_P2, MCS48_PORT_P2) AM_READWRITE(mcu_p2_r, mcu_p2_w) - AM_RANGE(MCS48_PORT_PROG, MCS48_PORT_PROG) AM_WRITE(mcu_prog_w) - AM_RANGE(MCS48_PORT_T1, MCS48_PORT_T1) AM_READ(mcu_t1_r) ADDRESS_MAP_END @@ -482,6 +470,11 @@ static MACHINE_CONFIG_START( k28, k28_state ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", I8021, XTAL_3_579545MHz) MCFG_CPU_IO_MAP(k28_mcu_map) + MCFG_MCS48_PORT_P1_IN_CB(READ8(k28_state, mcu_p1_r)) + MCFG_MCS48_PORT_P2_IN_CB(READ8(k28_state, mcu_p2_r)) + MCFG_MCS48_PORT_P2_OUT_CB(WRITE8(k28_state, mcu_p2_w)) + MCFG_MCS48_PORT_PROG_OUT_CB(WRITELINE(k28_state, mcu_prog_w)) + MCFG_MCS48_PORT_T1_IN_CB(DEVREADLINE("speech", votrax_sc01_device, request)) // SC-01 A/R pin MCFG_DEVICE_ADD("tms6100", TMS6100, XTAL_3_579545MHz) // CLK tied to 8021 ALE pin diff --git a/src/mame/drivers/m63.cpp b/src/mame/drivers/m63.cpp index 57c9016fd72..927a845bb64 100644 --- a/src/mame/drivers/m63.cpp +++ b/src/mame/drivers/m63.cpp @@ -191,7 +191,7 @@ public: DECLARE_WRITE8_MEMBER(p1_w); DECLARE_WRITE8_MEMBER(p2_w); DECLARE_READ8_MEMBER(snd_status_r); - DECLARE_READ8_MEMBER(irq_r); + DECLARE_READ_LINE_MEMBER(irq_r); DECLARE_READ8_MEMBER(snddata_r); DECLARE_WRITE8_MEMBER(fghtbskt_samples_w); SAMPLES_START_CB_MEMBER(fghtbskt_sh_start); @@ -432,7 +432,7 @@ READ8_MEMBER(m63_state::snd_status_r) return m_sound_status; } -READ8_MEMBER(m63_state::irq_r) +READ_LINE_MEMBER(m63_state::irq_r) { if (m_sound_irq) { @@ -518,9 +518,6 @@ ADDRESS_MAP_END static ADDRESS_MAP_START( i8039_port_map, AS_IO, 8, m63_state ) AM_RANGE(0x00, 0xff) AM_READWRITE(snddata_r, snddata_w) - AM_RANGE(MCS48_PORT_P1, MCS48_PORT_P1) AM_WRITE(p1_w) - AM_RANGE(MCS48_PORT_P2, MCS48_PORT_P2) AM_WRITE(p2_w) - AM_RANGE(MCS48_PORT_T1, MCS48_PORT_T1) AM_READ(irq_r) ADDRESS_MAP_END @@ -762,6 +759,9 @@ static MACHINE_CONFIG_START( m63, m63_state ) MCFG_CPU_ADD("soundcpu",I8039,XTAL_12MHz/4) /* ????? */ MCFG_CPU_PROGRAM_MAP(i8039_map) MCFG_CPU_IO_MAP(i8039_port_map) + MCFG_MCS48_PORT_P1_OUT_CB(WRITE8(m63_state, p1_w)) + MCFG_MCS48_PORT_P2_OUT_CB(WRITE8(m63_state, p2_w)) + MCFG_MCS48_PORT_T1_IN_CB(READLINE(m63_state, irq_r)) MCFG_CPU_PERIODIC_INT_DRIVER(m63_state, snd_irq, 60) MCFG_MACHINE_START_OVERRIDE(m63_state,m63) diff --git a/src/mame/drivers/megazone.cpp b/src/mame/drivers/megazone.cpp index 524e028228e..7385f732ac6 100644 --- a/src/mame/drivers/megazone.cpp +++ b/src/mame/drivers/megazone.cpp @@ -130,8 +130,6 @@ ADDRESS_MAP_END static ADDRESS_MAP_START( megazone_i8039_io_map, AS_IO, 8, megazone_state ) AM_RANGE(0x00, 0xff) AM_DEVREAD("soundlatch", generic_latch_8_device, read) - AM_RANGE(MCS48_PORT_P1, MCS48_PORT_P1) AM_DEVWRITE("dac", dac_byte_interface, write) - AM_RANGE(MCS48_PORT_P2, MCS48_PORT_P2) AM_WRITE(i8039_irqen_and_status_w) ADDRESS_MAP_END static INPUT_PORTS_START( megazone ) @@ -252,6 +250,8 @@ static MACHINE_CONFIG_START( megazone, megazone_state ) MCFG_CPU_ADD("daccpu", I8039,14318000/2) /* 1/2 14MHz crystal */ MCFG_CPU_PROGRAM_MAP(megazone_i8039_map) MCFG_CPU_IO_MAP(megazone_i8039_io_map) + MCFG_MCS48_PORT_P1_OUT_CB(DEVWRITE8("dac", dac_byte_interface, write)) + MCFG_MCS48_PORT_P2_OUT_CB(WRITE8(megazone_state, i8039_irqen_and_status_w)) MCFG_QUANTUM_TIME(attotime::from_hz(900)) diff --git a/src/mame/drivers/microvsn.cpp b/src/mame/drivers/microvsn.cpp index c2241a4b21b..0c272537042 100644 --- a/src/mame/drivers/microvsn.cpp +++ b/src/mame/drivers/microvsn.cpp @@ -54,7 +54,7 @@ public: DECLARE_WRITE8_MEMBER(i8021_p0_write); DECLARE_WRITE8_MEMBER(i8021_p1_write); DECLARE_WRITE8_MEMBER(i8021_p2_write); - DECLARE_READ8_MEMBER(i8021_t1_read); + DECLARE_READ_LINE_MEMBER(i8021_t1_read); DECLARE_READ8_MEMBER(i8021_bus_read); // TMS1100 interface @@ -388,7 +388,7 @@ WRITE8_MEMBER( microvision_state::i8021_p2_write ) } -READ8_MEMBER( microvision_state::i8021_t1_read ) +READ_LINE_MEMBER( microvision_state::i8021_t1_read ) { return m_t1; } @@ -634,17 +634,17 @@ INPUT_PORTS_END static ADDRESS_MAP_START( microvision_8021_io, AS_IO, 8, microvision_state ) AM_RANGE( 0x00, 0xFF ) AM_WRITE( i8021_p0_write ) - AM_RANGE( MCS48_PORT_P0, MCS48_PORT_P0 ) AM_WRITE( i8021_p0_write ) - AM_RANGE( MCS48_PORT_P1, MCS48_PORT_P1 ) AM_WRITE( i8021_p1_write ) - AM_RANGE( MCS48_PORT_P2, MCS48_PORT_P2 ) AM_WRITE( i8021_p2_write ) - AM_RANGE( MCS48_PORT_T1, MCS48_PORT_T1 ) AM_READ( i8021_t1_read ) - AM_RANGE( MCS48_PORT_BUS, MCS48_PORT_BUS ) AM_READ( i8021_bus_read ) ADDRESS_MAP_END static MACHINE_CONFIG_START( microvision, microvision_state ) MCFG_CPU_ADD("maincpu1", I8021, 2000000) // approximately - MCFG_CPU_IO_MAP( microvision_8021_io ) + MCFG_CPU_IO_MAP(microvision_8021_io) + MCFG_MCS48_PORT_P1_OUT_CB(WRITE8(microvision_state, i8021_p1_write)) + MCFG_MCS48_PORT_P2_OUT_CB(WRITE8(microvision_state, i8021_p2_write)) + MCFG_MCS48_PORT_T1_IN_CB(READLINE(microvision_state, i8021_t1_read)) + MCFG_MCS48_PORT_BUS_IN_CB(READ8(microvision_state, i8021_bus_read)) + MCFG_CPU_ADD("maincpu2", TMS1100, 500000) // most games seem to be running at approximately this speed MCFG_TMS1XXX_OUTPUT_PLA( microvision_output_pla_0 ) MCFG_TMS1XXX_READ_K_CB( READ8( microvision_state, tms1100_read_k ) ) diff --git a/src/mame/drivers/monzagp.cpp b/src/mame/drivers/monzagp.cpp index ed09e7d9fb4..286c10d735e 100644 --- a/src/mame/drivers/monzagp.cpp +++ b/src/mame/drivers/monzagp.cpp @@ -403,8 +403,6 @@ WRITE8_MEMBER(monzagp_state::port2_w) static ADDRESS_MAP_START( monzagp_io, AS_IO, 8, monzagp_state ) AM_RANGE(0x00, 0xff) AM_READWRITE(port_r, port_w) - AM_RANGE(MCS48_PORT_P1, MCS48_PORT_P1) AM_WRITE(port1_w) - AM_RANGE(MCS48_PORT_P2, MCS48_PORT_P2) AM_READWRITE(port2_r, port2_w) ADDRESS_MAP_END static INPUT_PORTS_START( monzagp ) @@ -489,6 +487,9 @@ static MACHINE_CONFIG_START( monzagp, monzagp_state ) MCFG_CPU_ADD("maincpu", I8035, 12000000/4) /* 400KHz ??? - Main board Crystal is 12MHz */ MCFG_CPU_PROGRAM_MAP(monzagp_map) MCFG_CPU_IO_MAP(monzagp_io) + MCFG_MCS48_PORT_P1_OUT_CB(WRITE8(monzagp_state, port1_w)) + MCFG_MCS48_PORT_P2_IN_CB(READ8(monzagp_state, port2_r)) + MCFG_MCS48_PORT_P2_OUT_CB(WRITE8(monzagp_state, port2_w)) MCFG_CPU_VBLANK_INT_DRIVER("screen", monzagp_state, irq0_line_hold) /* video hardware */ diff --git a/src/mame/drivers/novagmcs48.cpp b/src/mame/drivers/novagmcs48.cpp index 697397a053b..b598e2c341f 100644 --- a/src/mame/drivers/novagmcs48.cpp +++ b/src/mame/drivers/novagmcs48.cpp @@ -104,21 +104,6 @@ MACHINE_RESET_MEMBER(novagmcs48_state, octo) -/****************************************************************************** - Address Maps -******************************************************************************/ - -// Presto/Octo - -static ADDRESS_MAP_START( presto_io, AS_IO, 8, novagmcs48_state ) - ADDRESS_MAP_UNMAP_HIGH - AM_RANGE(MCS48_PORT_P1, MCS48_PORT_P1) AM_READ(presto_input_r) AM_WRITENOP - AM_RANGE(MCS48_PORT_P2, MCS48_PORT_P2) AM_WRITE(presto_control_w) - AM_RANGE(MCS48_PORT_BUS, MCS48_PORT_BUS) AM_WRITE(presto_mux_w) -ADDRESS_MAP_END - - - /****************************************************************************** Input Ports ******************************************************************************/ @@ -157,11 +142,15 @@ INPUT_CHANGED_MEMBER(novagmcs48_state::octo_cpu_freq) Machine Drivers ******************************************************************************/ +// Presto/Octo + static MACHINE_CONFIG_START( presto, novagmcs48_state ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", I8049, 6000000) // LC circuit, measured - MCFG_CPU_IO_MAP(presto_io) + MCFG_MCS48_PORT_P1_IN_CB(READ8(novagmcs48_state, presto_input_r)) + MCFG_MCS48_PORT_P2_OUT_CB(WRITE8(novagmcs48_state, presto_control_w)) + MCFG_MCS48_PORT_BUS_OUT_CB(WRITE8(novagmcs48_state, presto_mux_w)) MCFG_TIMER_DRIVER_ADD_PERIODIC("display_decay", novagbase_state, display_decay_tick, attotime::from_msec(1)) MCFG_DEFAULT_LAYOUT(layout_novag_presto) diff --git a/src/mame/drivers/odyssey2.cpp b/src/mame/drivers/odyssey2.cpp index 09250f96e85..08d266614ad 100644 --- a/src/mame/drivers/odyssey2.cpp +++ b/src/mame/drivers/odyssey2.cpp @@ -52,7 +52,7 @@ public: DECLARE_WRITE8_MEMBER(p1_write); DECLARE_READ8_MEMBER(p2_read); DECLARE_WRITE8_MEMBER(p2_write); - DECLARE_READ8_MEMBER(t1_read); + DECLARE_READ_LINE_MEMBER(t1_read); DECLARE_DRIVER_INIT(odyssey2); virtual void machine_start() override; virtual void machine_reset() override; @@ -111,23 +111,12 @@ ADDRESS_MAP_END static ADDRESS_MAP_START( odyssey2_io , AS_IO, 8, odyssey2_state ) - AM_RANGE(0x00, 0xff) AM_READWRITE(io_read, io_write) - AM_RANGE(MCS48_PORT_P1, MCS48_PORT_P1) AM_READWRITE(p1_read, p1_write) - AM_RANGE(MCS48_PORT_P2, MCS48_PORT_P2) AM_READWRITE(p2_read, p2_write) - AM_RANGE(MCS48_PORT_BUS, MCS48_PORT_BUS) AM_READWRITE(bus_read, bus_write) - AM_RANGE(MCS48_PORT_T0, MCS48_PORT_T0) AM_DEVREAD("cartslot", o2_cart_slot_device, t0_read) - AM_RANGE(MCS48_PORT_T1, MCS48_PORT_T1) AM_READ(t1_read) + AM_RANGE(0x00, 0xff) AM_READWRITE(io_read, io_write) ADDRESS_MAP_END static ADDRESS_MAP_START( g7400_io , AS_IO, 8, g7400_state ) - AM_RANGE(0x00, 0xff) AM_READWRITE(io_read, io_write) - AM_RANGE(MCS48_PORT_P1, MCS48_PORT_P1) AM_READWRITE(p1_read, p1_write) - AM_RANGE(MCS48_PORT_P2, MCS48_PORT_P2) AM_READWRITE(p2_read, p2_write) - AM_RANGE(MCS48_PORT_BUS, MCS48_PORT_BUS) AM_READWRITE(bus_read, bus_write) - AM_RANGE(MCS48_PORT_T0, MCS48_PORT_T0) AM_DEVREAD("cartslot", o2_cart_slot_device, t0_read) - AM_RANGE(MCS48_PORT_T1, MCS48_PORT_T1) AM_READ(t1_read) - AM_RANGE(MCS48_PORT_PROG, MCS48_PORT_PROG) AM_DEVWRITE("i8243", i8243_device, i8243_prog_w); + AM_RANGE(0x00, 0xff) AM_READWRITE(io_read, io_write) ADDRESS_MAP_END @@ -471,7 +460,7 @@ uint32_t odyssey2_state::screen_update_odyssey2(screen_device &screen, bitmap_in } -READ8_MEMBER(odyssey2_state::t1_read) +READ_LINE_MEMBER(odyssey2_state::t1_read) { if ( m_i8244->vblank() || m_i8244->hblank() ) { @@ -543,7 +532,7 @@ WRITE8_MEMBER(odyssey2_state::p2_write) WRITE8_MEMBER(g7400_state::p2_write) { m_p2 = data; - m_i8243->i8243_p2_w( space, 0, m_p2 & 0x0f ); + m_i8243->p2_w( space, 0, m_p2 & 0x0f ); } @@ -673,6 +662,14 @@ static MACHINE_CONFIG_START( odyssey2, odyssey2_state ) MCFG_CPU_ADD("maincpu", I8048, ( ( XTAL_7_15909MHz * 3 ) / 4 ) ) MCFG_CPU_PROGRAM_MAP(odyssey2_mem) MCFG_CPU_IO_MAP(odyssey2_io) + MCFG_MCS48_PORT_P1_IN_CB(READ8(odyssey2_state, p1_read)) + MCFG_MCS48_PORT_P1_OUT_CB(WRITE8(odyssey2_state, p1_write)) + MCFG_MCS48_PORT_P2_IN_CB(READ8(odyssey2_state, p2_read)) + MCFG_MCS48_PORT_P2_OUT_CB(WRITE8(odyssey2_state, p2_write)) + MCFG_MCS48_PORT_BUS_IN_CB(READ8(odyssey2_state, bus_read)) + MCFG_MCS48_PORT_BUS_OUT_CB(WRITE8(odyssey2_state, bus_write)) + MCFG_MCS48_PORT_T0_IN_CB(DEVREADLINE("cartslot", o2_cart_slot_device, t0_read)) + MCFG_MCS48_PORT_T1_IN_CB(READLINE(odyssey2_state, t1_read)) MCFG_QUANTUM_TIME(attotime::from_hz(60)) /* video hardware */ @@ -725,6 +722,15 @@ static MACHINE_CONFIG_START( g7400, g7400_state ) MCFG_CPU_ADD("maincpu", I8048, XTAL_5_911MHz ) MCFG_CPU_PROGRAM_MAP(odyssey2_mem) MCFG_CPU_IO_MAP(g7400_io) + MCFG_MCS48_PORT_P1_IN_CB(READ8(g7400_state, p1_read)) + MCFG_MCS48_PORT_P1_OUT_CB(WRITE8(g7400_state, p1_write)) + MCFG_MCS48_PORT_P2_IN_CB(READ8(g7400_state, p2_read)) + MCFG_MCS48_PORT_P2_OUT_CB(WRITE8(g7400_state, p2_write)) + MCFG_MCS48_PORT_BUS_IN_CB(READ8(g7400_state, bus_read)) + MCFG_MCS48_PORT_BUS_OUT_CB(WRITE8(g7400_state, bus_write)) + MCFG_MCS48_PORT_T0_IN_CB(DEVREADLINE("cartslot", o2_cart_slot_device, t0_read)) + MCFG_MCS48_PORT_T1_IN_CB(READLINE(g7400_state, t1_read)) + MCFG_MCS48_PORT_PROG_OUT_CB(DEVWRITELINE("i8243", i8243_device, prog_w)) MCFG_QUANTUM_TIME(attotime::from_hz(60)) /* video hardware */ @@ -757,6 +763,15 @@ static MACHINE_CONFIG_START( odyssey3, g7400_state ) MCFG_CPU_ADD("maincpu", I8048, XTAL_5_911MHz ) MCFG_CPU_PROGRAM_MAP(odyssey2_mem) MCFG_CPU_IO_MAP(g7400_io) + MCFG_MCS48_PORT_P1_IN_CB(READ8(g7400_state, p1_read)) + MCFG_MCS48_PORT_P1_OUT_CB(WRITE8(g7400_state, p1_write)) + MCFG_MCS48_PORT_P2_IN_CB(READ8(g7400_state, p2_read)) + MCFG_MCS48_PORT_P2_OUT_CB(WRITE8(g7400_state, p2_write)) + MCFG_MCS48_PORT_BUS_IN_CB(READ8(g7400_state, bus_read)) + MCFG_MCS48_PORT_BUS_OUT_CB(WRITE8(g7400_state, bus_write)) + MCFG_MCS48_PORT_T0_IN_CB(DEVREADLINE("cartslot", o2_cart_slot_device, t0_read)) + MCFG_MCS48_PORT_T1_IN_CB(READLINE(g7400_state, t1_read)) + MCFG_MCS48_PORT_PROG_OUT_CB(DEVWRITELINE("i8243", i8243_device, prog_w)) MCFG_QUANTUM_TIME(attotime::from_hz(60)) /* video hardware */ diff --git a/src/mame/drivers/othello.cpp b/src/mame/drivers/othello.cpp index f3255e3d740..afa799bdbb3 100644 --- a/src/mame/drivers/othello.cpp +++ b/src/mame/drivers/othello.cpp @@ -106,7 +106,6 @@ public: DECLARE_WRITE8_MEMBER(ay_data_w); DECLARE_READ8_MEMBER(n7751_rom_r); DECLARE_READ8_MEMBER(n7751_command_r); - DECLARE_READ8_MEMBER(n7751_t1_r); DECLARE_WRITE8_MEMBER(n7751_p2_w); DECLARE_WRITE8_MEMBER(n7751_rom_control_w); virtual void machine_start() override; @@ -314,28 +313,13 @@ WRITE8_MEMBER(othello_state::n7751_p2_w) i8243_device *device = machine().device("n7751_8243"); /* write to P2; low 4 bits go to 8243 */ - device->i8243_p2_w(space, offset, data & 0x0f); + device->p2_w(space, offset, data & 0x0f); /* output of bit $80 indicates we are ready (1) or busy (0) */ /* no other outputs are used */ m_n7751_busy = data; } -READ8_MEMBER(othello_state::n7751_t1_r) -{ - /* T1 - labelled as "TEST", connected to ground */ - return 0; -} - -static ADDRESS_MAP_START( n7751_portmap, AS_IO, 8, othello_state ) - AM_RANGE(MCS48_PORT_T1, MCS48_PORT_T1) AM_READ(n7751_t1_r) - AM_RANGE(MCS48_PORT_P2, MCS48_PORT_P2) AM_READ(n7751_command_r) - AM_RANGE(MCS48_PORT_BUS, MCS48_PORT_BUS) AM_READ(n7751_rom_r) - AM_RANGE(MCS48_PORT_P1, MCS48_PORT_P1) AM_DEVWRITE("dac", dac_byte_interface, write) - AM_RANGE(MCS48_PORT_P2, MCS48_PORT_P2) AM_WRITE(n7751_p2_w) - AM_RANGE(MCS48_PORT_PROG, MCS48_PORT_PROG) AM_DEVWRITE("n7751_8243", i8243_device, i8243_prog_w) -ADDRESS_MAP_END - static INPUT_PORTS_START( othello ) PORT_START("DSW") PORT_DIPNAME( 0x01, 0x00, DEF_STR( Cabinet ) ) PORT_DIPLOCATION("SW1:1") @@ -418,7 +402,12 @@ static MACHINE_CONFIG_START( othello, othello_state ) MCFG_CPU_IO_MAP(audio_portmap) MCFG_CPU_ADD("n7751", N7751, XTAL_6MHz) - MCFG_CPU_IO_MAP(n7751_portmap) + MCFG_MCS48_PORT_T1_IN_CB(GND) // labelled as "TEST", connected to ground + MCFG_MCS48_PORT_P2_IN_CB(READ8(othello_state, n7751_command_r)) + MCFG_MCS48_PORT_BUS_IN_CB(READ8(othello_state, n7751_rom_r)) + MCFG_MCS48_PORT_P1_OUT_CB(DEVWRITE8("dac", dac_byte_interface, write)) + MCFG_MCS48_PORT_P2_OUT_CB(WRITE8(othello_state, n7751_p2_w)) + MCFG_MCS48_PORT_PROG_OUT_CB(DEVWRITELINE("n7751_8243", i8243_device, prog_w)) MCFG_I8243_ADD("n7751_8243", NOOP, WRITE8(othello_state,n7751_rom_control_w)) diff --git a/src/mame/drivers/pandoras.cpp b/src/mame/drivers/pandoras.cpp index 5709670fd9a..4475b56a85f 100644 --- a/src/mame/drivers/pandoras.cpp +++ b/src/mame/drivers/pandoras.cpp @@ -179,8 +179,6 @@ ADDRESS_MAP_END static ADDRESS_MAP_START( pandoras_i8039_io_map, AS_IO, 8, pandoras_state ) AM_RANGE(0x00, 0xff) AM_DEVREAD("soundlatch2", generic_latch_8_device, read) - AM_RANGE(MCS48_PORT_P1, MCS48_PORT_P1) AM_DEVWRITE("dac", dac_byte_interface, write) - AM_RANGE(MCS48_PORT_P2, MCS48_PORT_P2) AM_WRITE(i8039_irqen_and_status_w) ADDRESS_MAP_END @@ -340,6 +338,8 @@ static MACHINE_CONFIG_START( pandoras, pandoras_state ) MCFG_CPU_ADD("mcu", I8039, SOUND_CLOCK/2) MCFG_CPU_PROGRAM_MAP(pandoras_i8039_map) MCFG_CPU_IO_MAP(pandoras_i8039_io_map) + MCFG_MCS48_PORT_P1_OUT_CB(DEVWRITE8("dac", dac_byte_interface, write)) + MCFG_MCS48_PORT_P2_OUT_CB(WRITE8(pandoras_state, i8039_irqen_and_status_w)) MCFG_QUANTUM_TIME(attotime::from_hz(6000)) /* 100 CPU slices per frame - needed for correct synchronization of the sound CPUs */ diff --git a/src/mame/drivers/pcw.cpp b/src/mame/drivers/pcw.cpp index d43b926341f..a7f19de601a 100644 --- a/src/mame/drivers/pcw.cpp +++ b/src/mame/drivers/pcw.cpp @@ -819,13 +819,13 @@ WRITE8_MEMBER(pcw_state::mcu_printer_p2_w) } // Paper sensor -READ8_MEMBER(pcw_state::mcu_printer_t1_r) +READ_LINE_MEMBER(pcw_state::mcu_printer_t1_r) { return 1; } // Print head location (0 if at left margin, otherwise 1) -READ8_MEMBER(pcw_state::mcu_printer_t0_r) +READ_LINE_MEMBER(pcw_state::mcu_printer_t0_r) { if(m_printer_headpos == 0) return 0; @@ -920,12 +920,12 @@ READ8_MEMBER(pcw_state::mcu_kb_data_r) return 0xff; } -READ8_MEMBER(pcw_state::mcu_kb_t1_r) +READ_LINE_MEMBER(pcw_state::mcu_kb_t1_r) { return 1; } -READ8_MEMBER(pcw_state::mcu_kb_t0_r) +READ_LINE_MEMBER(pcw_state::mcu_kb_t0_r) { return 0; } @@ -977,22 +977,6 @@ static ADDRESS_MAP_START(pcw9512_io, AS_IO, 8, pcw_state ) AM_RANGE(0x0fc, 0x0fd) AM_READWRITE(pcw9512_parallel_r, pcw9512_parallel_w) ADDRESS_MAP_END -/* i8041 MCU */ -static ADDRESS_MAP_START(pcw_printer_io, AS_IO, 8, pcw_state ) - AM_RANGE(MCS48_PORT_P2, MCS48_PORT_P2) AM_READWRITE(mcu_printer_p2_r,mcu_printer_p2_w) - AM_RANGE(MCS48_PORT_P1, MCS48_PORT_P1) AM_READWRITE(mcu_printer_p1_r, mcu_printer_p1_w) - AM_RANGE(MCS48_PORT_T1, MCS48_PORT_T1) AM_READ(mcu_printer_t1_r) - AM_RANGE(MCS48_PORT_T0, MCS48_PORT_T0) AM_READ(mcu_printer_t0_r) -ADDRESS_MAP_END - -static ADDRESS_MAP_START(pcw_keyboard_io, AS_IO, 8, pcw_state ) - AM_RANGE(MCS48_PORT_P1, MCS48_PORT_P1) AM_READWRITE(mcu_kb_scan_r,mcu_kb_scan_w) - AM_RANGE(MCS48_PORT_P2, MCS48_PORT_P2) AM_READWRITE(mcu_kb_scan_high_r,mcu_kb_scan_high_w) - AM_RANGE(MCS48_PORT_T1, MCS48_PORT_T1) AM_READ(mcu_kb_t1_r) - AM_RANGE(MCS48_PORT_T0, MCS48_PORT_T0) AM_READ(mcu_kb_t0_r) - AM_RANGE(MCS48_PORT_BUS, MCS48_PORT_BUS) AM_READ(mcu_kb_data_r) -ADDRESS_MAP_END - TIMER_CALLBACK_MEMBER(pcw_state::setup_beep) { @@ -1263,10 +1247,21 @@ static MACHINE_CONFIG_START( pcw, pcw_state ) MCFG_CPU_IO_MAP(pcw_io) MCFG_CPU_ADD("printer_mcu", I8041, 11000000) // 11MHz - MCFG_CPU_IO_MAP(pcw_printer_io) + MCFG_MCS48_PORT_P2_IN_CB(READ8(pcw_state, mcu_printer_p2_r)) + MCFG_MCS48_PORT_P2_OUT_CB(WRITE8(pcw_state, mcu_printer_p2_w)) + MCFG_MCS48_PORT_P1_IN_CB(READ8(pcw_state, mcu_printer_p1_r)) + MCFG_MCS48_PORT_P1_OUT_CB(WRITE8(pcw_state, mcu_printer_p1_w)) + MCFG_MCS48_PORT_T1_IN_CB(READLINE(pcw_state, mcu_printer_t1_r)) + MCFG_MCS48_PORT_T0_IN_CB(READLINE(pcw_state, mcu_printer_t0_r)) MCFG_CPU_ADD("keyboard_mcu", I8048, 5000000) // 5MHz - MCFG_CPU_IO_MAP(pcw_keyboard_io) + MCFG_MCS48_PORT_P1_IN_CB(READ8(pcw_state, mcu_kb_scan_r)) + MCFG_MCS48_PORT_P1_OUT_CB(WRITE8(pcw_state, mcu_kb_scan_w)) + MCFG_MCS48_PORT_P2_IN_CB(READ8(pcw_state, mcu_kb_scan_high_r)) + MCFG_MCS48_PORT_P2_OUT_CB(WRITE8(pcw_state, mcu_kb_scan_high_w)) + MCFG_MCS48_PORT_T1_IN_CB(READLINE(pcw_state, mcu_kb_t1_r)) + MCFG_MCS48_PORT_T0_IN_CB(READLINE(pcw_state, mcu_kb_t0_r)) + MCFG_MCS48_PORT_BUS_IN_CB(READ8(pcw_state, mcu_kb_data_r)) // MCFG_QUANTUM_TIME(attotime::from_hz(50)) MCFG_QUANTUM_PERFECT_CPU("maincpu") diff --git a/src/mame/drivers/ql.cpp b/src/mame/drivers/ql.cpp index d176bc61843..b845607ebd7 100644 --- a/src/mame/drivers/ql.cpp +++ b/src/mame/drivers/ql.cpp @@ -167,7 +167,7 @@ public: DECLARE_WRITE8_MEMBER( ipc_port1_w ); DECLARE_WRITE8_MEMBER( ipc_port2_w ); DECLARE_READ8_MEMBER( ipc_port2_r ); - DECLARE_READ8_MEMBER( ipc_t1_r ); + DECLARE_READ_LINE_MEMBER( ipc_t1_r ); DECLARE_READ8_MEMBER( ipc_bus_r ); DECLARE_WRITE_LINE_MEMBER( ql_baudx4_w ); DECLARE_WRITE_LINE_MEMBER( ql_comdata_w ); @@ -440,7 +440,7 @@ WRITE8_MEMBER( ql_state::ipc_port2_w ) // ipc_t1_r - //------------------------------------------------- -READ8_MEMBER( ql_state::ipc_t1_r ) +READ_LINE_MEMBER( ql_state::ipc_t1_r ) { return m_baudx4; } @@ -503,10 +503,6 @@ ADDRESS_MAP_END static ADDRESS_MAP_START( ipc_io, AS_IO, 8, ql_state ) AM_RANGE(0x00, 0x7f) AM_WRITE(ipc_w) AM_RANGE(0x27, 0x28) AM_READNOP // IPC reads these to set P0 (bus) to Hi-Z mode - AM_RANGE(MCS48_PORT_P1, MCS48_PORT_P1) AM_WRITE(ipc_port1_w) - AM_RANGE(MCS48_PORT_P2, MCS48_PORT_P2) AM_READWRITE(ipc_port2_r, ipc_port2_w) - AM_RANGE(MCS48_PORT_T1, MCS48_PORT_T1) AM_READ(ipc_t1_r) - AM_RANGE(MCS48_PORT_BUS, MCS48_PORT_BUS) AM_READ(ipc_bus_r) AM_WRITENOP ADDRESS_MAP_END @@ -899,6 +895,11 @@ static MACHINE_CONFIG_START( ql, ql_state ) MCFG_CPU_ADD(I8749_TAG, I8749, X4) MCFG_CPU_IO_MAP(ipc_io) + MCFG_MCS48_PORT_P1_OUT_CB(WRITE8(ql_state, ipc_port1_w)) + MCFG_MCS48_PORT_P2_IN_CB(READ8(ql_state, ipc_port2_r)) + MCFG_MCS48_PORT_P2_OUT_CB(WRITE8(ql_state, ipc_port2_w)) + MCFG_MCS48_PORT_T1_IN_CB(READLINE(ql_state, ipc_t1_r)) + MCFG_MCS48_PORT_BUS_IN_CB(READ8(ql_state, ipc_bus_r)) // video hardware MCFG_SCREEN_ADD(SCREEN_TAG, RASTER) diff --git a/src/mame/drivers/quasar.cpp b/src/mame/drivers/quasar.cpp index d04955d3249..9a7a7df3469 100644 --- a/src/mame/drivers/quasar.cpp +++ b/src/mame/drivers/quasar.cpp @@ -103,9 +103,9 @@ READ8_MEMBER(quasar_state::quasar_sh_command_r) return m_soundlatch->read(space, 0) + (ioport("DSW2")->read() & 0x30); } -READ8_MEMBER(quasar_state::audio_t1_r) +READ_LINE_MEMBER(quasar_state::audio_t1_r) { - return (m_soundlatch->read(space, 0) == 0); + return (m_soundlatch->read(machine().dummy_space(), 0) == 0); } // memory map taken from the manual @@ -144,8 +144,6 @@ ADDRESS_MAP_END static ADDRESS_MAP_START( sound_portmap, AS_IO, 8, quasar_state ) AM_RANGE(0x00, 0x7f) AM_RAM AM_RANGE(0x80, 0x80) AM_READ(quasar_sh_command_r) - AM_RANGE(MCS48_PORT_T1, MCS48_PORT_T1) AM_READ(audio_t1_r) - AM_RANGE(MCS48_PORT_P1, MCS48_PORT_P1) AM_DEVWRITE("dac", dac_byte_interface, write) ADDRESS_MAP_END /************************************************************************ @@ -307,6 +305,8 @@ static MACHINE_CONFIG_START( quasar, quasar_state ) MCFG_CPU_ADD("soundcpu",I8035,6000000) /* 6MHz crystal divide by 15 in CPU */ MCFG_CPU_PROGRAM_MAP(sound_map) MCFG_CPU_IO_MAP(sound_portmap) + MCFG_MCS48_PORT_T1_IN_CB(READLINE(quasar_state, audio_t1_r)) + MCFG_MCS48_PORT_P1_OUT_CB(DEVWRITE8("dac", dac_byte_interface, write)) MCFG_MACHINE_START_OVERRIDE(quasar_state,quasar) MCFG_MACHINE_RESET_OVERRIDE(quasar_state,quasar) diff --git a/src/mame/drivers/segas16a.cpp b/src/mame/drivers/segas16a.cpp index 1e1de35534b..47cd46c8d8e 100644 --- a/src/mame/drivers/segas16a.cpp +++ b/src/mame/drivers/segas16a.cpp @@ -405,7 +405,7 @@ READ8_MEMBER( segas16a_state::n7751_p2_r ) { // read from P2 - 8255's PC0-2 connects to 7751's S0-2 (P24-P26 on an 8048) // bit 0x80 is an alternate way to control the sample on/off; doesn't appear to be used - return 0x80 | ((m_n7751_command & 0x07) << 4) | (m_n7751_i8243->i8243_p2_r(space, offset) & 0x0f); + return 0x80 | ((m_n7751_command & 0x07) << 4) | (m_n7751_i8243->p2_r(space, offset) & 0x0f); } @@ -416,24 +416,13 @@ READ8_MEMBER( segas16a_state::n7751_p2_r ) WRITE8_MEMBER( segas16a_state::n7751_p2_w ) { // write to P2; low 4 bits go to 8243 - m_n7751_i8243->i8243_p2_w(space, offset, data & 0x0f); + m_n7751_i8243->p2_w(space, offset, data & 0x0f); // output of bit $80 indicates we are ready (1) or busy (0) // no other outputs are used } -//------------------------------------------------- -// n7751_t1_r - MCU reads from the T1 line -//------------------------------------------------- - -READ8_MEMBER( segas16a_state::n7751_t1_r ) -{ - // T1 - labelled as "TEST", connected to ground - return 0; -} - - //************************************************************************** // I8751 MCU READ/WRITE HANDLERS @@ -999,19 +988,6 @@ static ADDRESS_MAP_START( sound_no7751_portmap, AS_IO, 8, segas16a_state ) ADDRESS_MAP_END -//************************************************************************** -// N7751 SOUND GENERATOR CPU ADDRESS MAPS -//************************************************************************** - -static ADDRESS_MAP_START( n7751_portmap, AS_IO, 8, segas16a_state ) - AM_RANGE(MCS48_PORT_BUS, MCS48_PORT_BUS) AM_READ(n7751_rom_r) - AM_RANGE(MCS48_PORT_T1, MCS48_PORT_T1) AM_READ(n7751_t1_r) - AM_RANGE(MCS48_PORT_P1, MCS48_PORT_P1) AM_DEVWRITE("dac", dac_byte_interface, write) - AM_RANGE(MCS48_PORT_P2, MCS48_PORT_P2) AM_READWRITE(n7751_p2_r, n7751_p2_w) - AM_RANGE(MCS48_PORT_PROG, MCS48_PORT_PROG) AM_DEVWRITE("n7751_8243", i8243_device, i8243_prog_w) -ADDRESS_MAP_END - - //************************************************************************** // I8751 MCU ADDRESS MAPS @@ -1904,7 +1880,12 @@ static MACHINE_CONFIG_START( system16a, segas16a_state ) MCFG_CPU_IO_MAP(sound_portmap) MCFG_CPU_ADD("n7751", N7751, 6000000) - MCFG_CPU_IO_MAP(n7751_portmap) + MCFG_MCS48_PORT_BUS_IN_CB(READ8(segas16a_state, n7751_rom_r)) + MCFG_MCS48_PORT_T1_IN_CB(GND) // labelled as "TEST", connected to ground + MCFG_MCS48_PORT_P1_OUT_CB(DEVWRITE8("dac", dac_byte_interface, write)) + MCFG_MCS48_PORT_P2_IN_CB(READ8(segas16a_state, n7751_p2_r)) + MCFG_MCS48_PORT_P2_OUT_CB(WRITE8(segas16a_state, n7751_p2_w)) + MCFG_MCS48_PORT_PROG_OUT_CB(DEVWRITELINE("n7751_8243", i8243_device, prog_w)) MCFG_I8243_ADD("n7751_8243", NOOP, WRITE8(segas16a_state,n7751_rom_offset_w)) diff --git a/src/mame/drivers/spacefb.cpp b/src/mame/drivers/spacefb.cpp index f471f1b307e..4014143779d 100644 --- a/src/mame/drivers/spacefb.cpp +++ b/src/mame/drivers/spacefb.cpp @@ -243,14 +243,6 @@ static ADDRESS_MAP_START( spacefb_main_io_map, AS_IO, 8, spacefb_state ) ADDRESS_MAP_END -static ADDRESS_MAP_START( spacefb_audio_io_map, AS_IO, 8, spacefb_state ) - AM_RANGE(MCS48_PORT_P1, MCS48_PORT_P1) AM_DEVWRITE("dac", dac_byte_interface, write) - AM_RANGE(MCS48_PORT_P2, MCS48_PORT_P2) AM_READ(audio_p2_r) - AM_RANGE(MCS48_PORT_T0, MCS48_PORT_T0) AM_READ(audio_t0_r) - AM_RANGE(MCS48_PORT_T1, MCS48_PORT_T1) AM_READ(audio_t1_r) -ADDRESS_MAP_END - - /************************************* * @@ -345,7 +337,10 @@ static MACHINE_CONFIG_START( spacefb, spacefb_state ) MCFG_CPU_ADD("audiocpu", I8035, SPACEFB_AUDIO_CPU_CLOCK) MCFG_CPU_PROGRAM_MAP(spacefb_audio_map) - MCFG_CPU_IO_MAP(spacefb_audio_io_map) + MCFG_MCS48_PORT_P1_OUT_CB(DEVWRITE8("dac", dac_byte_interface, write)) + MCFG_MCS48_PORT_P2_IN_CB(READ8(spacefb_state, audio_p2_r)) + MCFG_MCS48_PORT_T0_IN_CB(READLINE(spacefb_state, audio_t0_r)) + MCFG_MCS48_PORT_T1_IN_CB(READLINE(spacefb_state, audio_t1_r)) MCFG_QUANTUM_TIME(attotime::from_hz(180)) diff --git a/src/mame/drivers/spcforce.cpp b/src/mame/drivers/spcforce.cpp index d30e8c22586..35d68821683 100644 --- a/src/mame/drivers/spcforce.cpp +++ b/src/mame/drivers/spcforce.cpp @@ -93,7 +93,7 @@ WRITE8_MEMBER(spcforce_state::SN76496_select_w) if (~data & 0x10) m_sn3->write(space, 0, m_sn76496_latch); } -READ8_MEMBER(spcforce_state::t0_r) +READ_LINE_MEMBER(spcforce_state::t0_r) { /* SN76496 status according to Al - not supported by MAME?? */ return machine().rand() & 1; @@ -135,13 +135,6 @@ static ADDRESS_MAP_START( spcforce_sound_map, AS_PROGRAM, 8, spcforce_state ) AM_RANGE(0x0000, 0x07ff) AM_ROM ADDRESS_MAP_END -static ADDRESS_MAP_START( spcforce_sound_io_map, AS_IO, 8, spcforce_state ) - AM_RANGE(MCS48_PORT_BUS, MCS48_PORT_BUS) AM_DEVREAD("soundlatch", generic_latch_8_device, read) - AM_RANGE(MCS48_PORT_P1, MCS48_PORT_P1) AM_WRITE(SN76496_latch_w) - AM_RANGE(MCS48_PORT_P2, MCS48_PORT_P2) AM_READWRITE(SN76496_select_r, SN76496_select_w) - AM_RANGE(MCS48_PORT_T0, MCS48_PORT_T0) AM_READ(t0_r) -ADDRESS_MAP_END - static INPUT_PORTS_START( spcforce ) PORT_START("DSW") @@ -291,7 +284,11 @@ static MACHINE_CONFIG_START( spcforce, spcforce_state ) MCFG_CPU_ADD("audiocpu", I8035, 6144000) /* divisor ??? */ MCFG_CPU_PROGRAM_MAP(spcforce_sound_map) - MCFG_CPU_IO_MAP(spcforce_sound_io_map) + MCFG_MCS48_PORT_BUS_IN_CB(DEVREAD8("soundlatch", generic_latch_8_device, read)) + MCFG_MCS48_PORT_P1_OUT_CB(WRITE8(spcforce_state, SN76496_latch_w)) + MCFG_MCS48_PORT_P2_IN_CB(READ8(spcforce_state, SN76496_select_r)) + MCFG_MCS48_PORT_P2_OUT_CB(WRITE8(spcforce_state, SN76496_select_w)) + MCFG_MCS48_PORT_T0_IN_CB(READLINE(spcforce_state, t0_r)) /* video hardware */ MCFG_SCREEN_ADD("screen", RASTER) diff --git a/src/mame/drivers/supstarf.cpp b/src/mame/drivers/supstarf.cpp index f7206436de4..1215ba8bbd5 100644 --- a/src/mame/drivers/supstarf.cpp +++ b/src/mame/drivers/supstarf.cpp @@ -34,7 +34,7 @@ public: DECLARE_READ_LINE_MEMBER(contacts_r); DECLARE_WRITE_LINE_MEMBER(displays_w); DECLARE_WRITE8_MEMBER(driver_clk_w); - DECLARE_READ8_MEMBER(phase_detect_r); + DECLARE_READ_LINE_MEMBER(phase_detect_r); DECLARE_WRITE8_MEMBER(lights_a_w); DECLARE_WRITE8_MEMBER(lights_b_w); @@ -69,9 +69,6 @@ ADDRESS_MAP_END static ADDRESS_MAP_START(sound_io_map, AS_IO, 8, supstarf_state) AM_RANGE(0x00, 0xff) AM_READWRITE(psg_latch_r, psg_latch_w) - AM_RANGE(MCS48_PORT_P1, MCS48_PORT_P1) AM_WRITE(port1_w) - AM_RANGE(MCS48_PORT_P2, MCS48_PORT_P2) AM_WRITE(port2_w) - AM_RANGE(MCS48_PORT_T1, MCS48_PORT_T1) AM_READ(phase_detect_r) ADDRESS_MAP_END READ8_MEMBER(supstarf_state::psg_latch_r) @@ -142,7 +139,7 @@ WRITE8_MEMBER(supstarf_state::driver_clk_w) { } -READ8_MEMBER(supstarf_state::phase_detect_r) +READ_LINE_MEMBER(supstarf_state::phase_detect_r) { return 0; } @@ -176,6 +173,9 @@ static MACHINE_CONFIG_START(supstarf, supstarf_state) MCFG_CPU_ADD("soundcpu", I8035, XTAL_5_0688MHz / 2) // from 8085 pin 37 (CLK OUT) MCFG_CPU_PROGRAM_MAP(sound_map) MCFG_CPU_IO_MAP(sound_io_map) + MCFG_MCS48_PORT_P1_OUT_CB(WRITE8(supstarf_state, port1_w)) + MCFG_MCS48_PORT_P2_OUT_CB(WRITE8(supstarf_state, port2_w)) + MCFG_MCS48_PORT_T1_IN_CB(READLINE(supstarf_state, phase_detect_r)) MCFG_GENERIC_LATCH_8_ADD("soundlatch1") MCFG_GENERIC_LATCH_DATA_PENDING_CB(INPUTLINE("maincpu", I8085_RST55_LINE)) diff --git a/src/mame/drivers/tnzs.cpp b/src/mame/drivers/tnzs.cpp index 6533aaf8d84..ba141dc8b6a 100644 --- a/src/mame/drivers/tnzs.cpp +++ b/src/mame/drivers/tnzs.cpp @@ -835,13 +835,6 @@ static ADDRESS_MAP_START( tnzsb_io_map, AS_IO, 8, tnzsb_state ) AM_RANGE(0x02, 0x02) AM_DEVREAD("soundlatch", generic_latch_8_device, read) ADDRESS_MAP_END -static ADDRESS_MAP_START( i8742_map, AS_IO, 8, tnzs_mcu_state ) - AM_RANGE(MCS48_PORT_P1, MCS48_PORT_P1) AM_READ(mcu_port1_r) - AM_RANGE(MCS48_PORT_P2, MCS48_PORT_P2) AM_READWRITE(mcu_port2_r, mcu_port2_w) - AM_RANGE(MCS48_PORT_T0, MCS48_PORT_T0) AM_READ_PORT("COIN1") - AM_RANGE(MCS48_PORT_T1, MCS48_PORT_T1) AM_READ_PORT("COIN2") -ADDRESS_MAP_END - static ADDRESS_MAP_START( jpopnics_main_map, AS_PROGRAM, 8, jpopnics_state ) AM_RANGE(0x0000, 0x7fff) AM_ROM AM_RANGE(0x8000, 0xbfff) AM_DEVICE("mainbank", address_map_bank_device, amap8) @@ -1550,7 +1543,11 @@ MACHINE_CONFIG_END static MACHINE_CONFIG_DERIVED_CLASS( tnzs, tnzs_base, tnzs_state ) MCFG_CPU_ADD("mcu", I8742, 12000000/2) /* 400KHz ??? - Main board Crystal is 12MHz */ - MCFG_CPU_IO_MAP(i8742_map) + MCFG_MCS48_PORT_P1_IN_CB(READ8(tnzs_mcu_state, mcu_port1_r)) + MCFG_MCS48_PORT_P2_IN_CB(READ8(tnzs_mcu_state, mcu_port2_r)) + MCFG_MCS48_PORT_P2_OUT_CB(WRITE8(tnzs_mcu_state, mcu_port2_w)) + MCFG_MCS48_PORT_T0_IN_CB(IOPORT("COIN1")) + MCFG_MCS48_PORT_T1_IN_CB(IOPORT("COIN2")) MCFG_CPU_MODIFY("sub") MCFG_CPU_PROGRAM_MAP(tnzs_sub_map) diff --git a/src/mame/drivers/vega.cpp b/src/mame/drivers/vega.cpp index f07f81b2c6c..446d01b5bd8 100644 --- a/src/mame/drivers/vega.cpp +++ b/src/mame/drivers/vega.cpp @@ -141,7 +141,7 @@ public: DECLARE_WRITE8_MEMBER(extern_w); DECLARE_WRITE8_MEMBER(p2_w); DECLARE_READ8_MEMBER(p2_r); - DECLARE_READ8_MEMBER(t1_r); + DECLARE_READ_LINE_MEMBER(t1_r); DECLARE_WRITE8_MEMBER(rombank_w); DECLARE_READ8_MEMBER(txtram_r); @@ -374,7 +374,7 @@ WRITE8_MEMBER(vega_state::p2_w) m_p2_data=data; } -READ8_MEMBER(vega_state::t1_r) +READ_LINE_MEMBER(vega_state::t1_r) { return machine().rand(); } @@ -390,21 +390,8 @@ static ADDRESS_MAP_START( vega_map, AS_PROGRAM, 8, vega_state ) AM_RANGE(0x800, 0xfff) AM_ROM ADDRESS_MAP_END -/* -MCS48_PORT_P0 = 0x100, - MCS48_PORT_P1 = 0x101, - MCS48_PORT_P2 = 0x102, - MCS48_PORT_T0 = 0x110, - MCS48_PORT_T1 = 0x111, - MCS48_PORT_BUS = 0x120, - MCS48_PORT_PROG = 0x121 0/1 - */ static ADDRESS_MAP_START( vega_io_map, AS_IO, 8, vega_state ) AM_RANGE(0x00, 0xff) AM_READWRITE(extern_r, extern_w) - AM_RANGE(MCS48_PORT_P1, MCS48_PORT_P1) AM_READ_PORT("DSW") AM_WRITE(rombank_w) //101 - AM_RANGE(MCS48_PORT_P2, MCS48_PORT_P2) AM_READWRITE(p2_r, p2_w)//102 - AM_RANGE(MCS48_PORT_T1, MCS48_PORT_T1) AM_READ(t1_r) //111 - AM_RANGE(MCS48_PORT_PROG, MCS48_PORT_PROG) AM_WRITENOP /* prog - inputs CLK */ ADDRESS_MAP_END @@ -803,11 +790,15 @@ void vega_state::machine_start() static MACHINE_CONFIG_START( vega, vega_state ) - - MCFG_CPU_ADD("maincpu", I8035, 4000000) MCFG_CPU_PROGRAM_MAP(vega_map) MCFG_CPU_IO_MAP(vega_io_map) + MCFG_MCS48_PORT_P1_IN_CB(IOPORT("DSW")) + MCFG_MCS48_PORT_P1_OUT_CB(WRITE8(vega_state, rombank_w)) + MCFG_MCS48_PORT_P2_IN_CB(READ8(vega_state, p2_r)) + MCFG_MCS48_PORT_P2_OUT_CB(WRITE8(vega_state, p2_w)) + MCFG_MCS48_PORT_T1_IN_CB(READLINE(vega_state, t1_r)) + MCFG_MCS48_PORT_PROG_OUT_CB(NOOP) /* prog - inputs CLK */ MCFG_CPU_VBLANK_INT_DRIVER("screen", vega_state, irq0_line_hold) MCFG_DEVICE_ADD("ppi8255", I8255A, 0) diff --git a/src/mame/drivers/videopkr.cpp b/src/mame/drivers/videopkr.cpp index 26b0b171ac2..078c84ab1cd 100644 --- a/src/mame/drivers/videopkr.cpp +++ b/src/mame/drivers/videopkr.cpp @@ -349,8 +349,8 @@ public: DECLARE_READ8_MEMBER(videopkr_p2_data_r); DECLARE_WRITE8_MEMBER(videopkr_p1_data_w); DECLARE_WRITE8_MEMBER(videopkr_p2_data_w); - DECLARE_READ8_MEMBER(videopkr_t0_latch); - DECLARE_WRITE8_MEMBER(prog_w); + DECLARE_READ_LINE_MEMBER(videopkr_t0_latch); + DECLARE_WRITE_LINE_MEMBER(prog_w); DECLARE_READ8_MEMBER(sound_io_r); DECLARE_WRITE8_MEMBER(sound_io_w); DECLARE_READ8_MEMBER(sound_p2_r); @@ -751,14 +751,14 @@ WRITE8_MEMBER(videopkr_state::videopkr_p2_data_w) m_p2 = data; } -READ8_MEMBER(videopkr_state::videopkr_t0_latch) +READ_LINE_MEMBER(videopkr_state::videopkr_t0_latch) { return m_t0_latch; } -WRITE8_MEMBER(videopkr_state::prog_w) +WRITE_LINE_MEMBER(videopkr_state::prog_w) { - if (!data) + if (!state) m_maincpu->set_input_line(0, CLEAR_LINE); /* clear interrupt FF */ } @@ -963,11 +963,7 @@ static ADDRESS_MAP_START( i8039_map, AS_PROGRAM, 8, videopkr_state ) ADDRESS_MAP_END static ADDRESS_MAP_START( i8039_io_port, AS_IO, 8, videopkr_state ) - AM_RANGE(0x00, 0xff ) AM_READWRITE(videopkr_io_r, videopkr_io_w) - AM_RANGE(MCS48_PORT_P1, MCS48_PORT_P1 ) AM_READWRITE(videopkr_p1_data_r, videopkr_p1_data_w) - AM_RANGE(MCS48_PORT_P2, MCS48_PORT_P2 ) AM_READWRITE(videopkr_p2_data_r, videopkr_p2_data_w) - AM_RANGE(MCS48_PORT_PROG, MCS48_PORT_PROG) AM_WRITE(prog_w) - AM_RANGE(MCS48_PORT_T0, MCS48_PORT_T0 ) AM_READ(videopkr_t0_latch) + AM_RANGE(0x00, 0xff) AM_READWRITE(videopkr_io_r, videopkr_io_w) ADDRESS_MAP_END static ADDRESS_MAP_START( i8039_sound_mem, AS_PROGRAM, 8, videopkr_state ) @@ -975,9 +971,7 @@ static ADDRESS_MAP_START( i8039_sound_mem, AS_PROGRAM, 8, videopkr_state ) ADDRESS_MAP_END static ADDRESS_MAP_START( i8039_sound_port, AS_IO, 8, videopkr_state ) - AM_RANGE(0x00 , 0xff ) AM_READWRITE(sound_io_r, sound_io_w) - AM_RANGE(MCS48_PORT_P1, MCS48_PORT_P1) AM_DEVWRITE("dac", dac_byte_interface, write) - AM_RANGE(MCS48_PORT_P2, MCS48_PORT_P2) AM_READWRITE(sound_p2_r, sound_p2_w) + AM_RANGE(0x00, 0xff) AM_READWRITE(sound_io_r, sound_io_w) ADDRESS_MAP_END @@ -1235,12 +1229,22 @@ static MACHINE_CONFIG_START( videopkr, videopkr_state ) MCFG_CPU_ADD("maincpu", I8039, CPU_CLOCK) MCFG_CPU_PROGRAM_MAP(i8039_map) MCFG_CPU_IO_MAP(i8039_io_port) + MCFG_MCS48_PORT_P1_IN_CB(READ8(videopkr_state, videopkr_p1_data_r)) + MCFG_MCS48_PORT_P1_OUT_CB(WRITE8(videopkr_state, videopkr_p1_data_w)) + MCFG_MCS48_PORT_P2_IN_CB(READ8(videopkr_state, videopkr_p2_data_r)) + MCFG_MCS48_PORT_P2_OUT_CB(WRITE8(videopkr_state, videopkr_p1_data_w)) + MCFG_MCS48_PORT_PROG_OUT_CB(WRITELINE(videopkr_state, prog_w)) + MCFG_MCS48_PORT_T0_IN_CB(READLINE(videopkr_state, videopkr_t0_latch)) MCFG_CPU_VBLANK_INT_DRIVER("screen", videopkr_state, irq0_line_assert) MCFG_CPU_ADD("soundcpu", I8039, SOUND_CLOCK) MCFG_CPU_PROGRAM_MAP(i8039_sound_mem) MCFG_CPU_IO_MAP(i8039_sound_port) + MCFG_MCS48_PORT_P1_OUT_CB(DEVWRITE8("dac", dac_byte_interface, write)) + MCFG_MCS48_PORT_P2_IN_CB(READ8(videopkr_state, sound_p2_r)) + MCFG_MCS48_PORT_P2_OUT_CB(WRITE8(videopkr_state, sound_p2_w)) + MCFG_NVRAM_ADD_0FILL("nvram") MCFG_TIMER_DRIVER_ADD_PERIODIC("t1_timer", videopkr_state, sound_t1_callback, attotime::from_hz(50)) diff --git a/src/mame/includes/advision.h b/src/mame/includes/advision.h index 093b6179336..f0435127ae7 100644 --- a/src/mame/includes/advision.h +++ b/src/mame/includes/advision.h @@ -55,7 +55,7 @@ public: DECLARE_READ8_MEMBER( controller_r ); DECLARE_WRITE8_MEMBER( bankswitch_w ); DECLARE_WRITE8_MEMBER( av_control_w ); - DECLARE_READ8_MEMBER( vsync_r ); + DECLARE_READ_LINE_MEMBER( vsync_r ); DECLARE_READ8_MEMBER( sound_cmd_r ); DECLARE_WRITE8_MEMBER( sound_g_w ); DECLARE_WRITE8_MEMBER( sound_d_w ); diff --git a/src/mame/includes/finalizr.h b/src/mame/includes/finalizr.h index 533da2736a9..928c9005c52 100644 --- a/src/mame/includes/finalizr.h +++ b/src/mame/includes/finalizr.h @@ -54,7 +54,7 @@ public: DECLARE_WRITE8_MEMBER(finalizr_flipscreen_w); DECLARE_WRITE8_MEMBER(finalizr_i8039_irq_w); DECLARE_WRITE8_MEMBER(i8039_irqen_w); - DECLARE_READ8_MEMBER(i8039_T1_r); + DECLARE_READ_LINE_MEMBER(i8039_T1_r); DECLARE_WRITE8_MEMBER(i8039_T0_w); DECLARE_WRITE8_MEMBER(finalizr_videoctrl_w); TILE_GET_INFO_MEMBER(get_bg_tile_info); diff --git a/src/mame/includes/gladiatr.h b/src/mame/includes/gladiatr.h index 39c99eb8391..2b0144c5f49 100644 --- a/src/mame/includes/gladiatr.h +++ b/src/mame/includes/gladiatr.h @@ -106,17 +106,15 @@ public: DECLARE_WRITE_LINE_MEMBER(gladiator_ym_irq); DECLARE_WRITE_LINE_MEMBER(tclk_w); - DECLARE_READ8_MEMBER(cctl_t_r); DECLARE_READ8_MEMBER(cctl_p1_r); DECLARE_READ8_MEMBER(cctl_p2_r); - DECLARE_READ8_MEMBER(ccpu_t_r); DECLARE_WRITE8_MEMBER(ccpu_p2_w); - DECLARE_READ8_MEMBER(tclk_r); - DECLARE_READ8_MEMBER(ucpu_t1_r); + DECLARE_READ_LINE_MEMBER(tclk_r); + DECLARE_READ_LINE_MEMBER(ucpu_t1_r); DECLARE_READ8_MEMBER(ucpu_p1_r); DECLARE_WRITE8_MEMBER(ucpu_p1_w); DECLARE_READ8_MEMBER(ucpu_p2_r); - DECLARE_READ8_MEMBER(csnd_t1_r); + DECLARE_READ_LINE_MEMBER(csnd_t1_r); DECLARE_READ8_MEMBER(csnd_p1_r); DECLARE_WRITE8_MEMBER(csnd_p1_w); DECLARE_READ8_MEMBER(csnd_p2_r); diff --git a/src/mame/includes/gsword.h b/src/mame/includes/gsword.h index 24204bf4ed5..db4fc678526 100644 --- a/src/mame/includes/gsword.h +++ b/src/mame/includes/gsword.h @@ -121,7 +121,6 @@ public: DECLARE_READ8_MEMBER(mcu1_p2_r); DECLARE_READ8_MEMBER(mcu2_p1_r); DECLARE_READ8_MEMBER(mcu2_p2_r); - DECLARE_READ8_MEMBER(mcu2_test_r); DECLARE_WRITE8_MEMBER(cpu2_nmi_enable_w); DECLARE_WRITE8_MEMBER(cpu2_irq_clear_w); diff --git a/src/mame/includes/imds2.h b/src/mame/includes/imds2.h index dc03bfbaeb8..059e87bb9b0 100644 --- a/src/mame/includes/imds2.h +++ b/src/mame/includes/imds2.h @@ -41,8 +41,8 @@ class imds2_state : public driver_device DECLARE_READ8_MEMBER(imds2_kb_read); DECLARE_READ8_MEMBER(imds2_kb_port_p2_r); DECLARE_WRITE8_MEMBER(imds2_kb_port_p1_w); - DECLARE_READ8_MEMBER(imds2_kb_port_t0_r); - DECLARE_READ8_MEMBER(imds2_kb_port_t1_r); + DECLARE_READ_LINE_MEMBER(imds2_kb_port_t0_r); + DECLARE_READ_LINE_MEMBER(imds2_kb_port_t1_r); DECLARE_WRITE8_MEMBER(imds2_ioc_dbbout_w); DECLARE_WRITE8_MEMBER(imds2_ioc_f0_w); DECLARE_WRITE8_MEMBER(imds2_ioc_set_f1_w); diff --git a/src/mame/includes/mario.h b/src/mame/includes/mario.h index 57fd4f27ce2..455fda8269d 100644 --- a/src/mame/includes/mario.h +++ b/src/mame/includes/mario.h @@ -114,8 +114,8 @@ public: DECLARE_WRITE8_MEMBER(mario_flip_w); DECLARE_READ8_MEMBER(mario_sh_p1_r); DECLARE_READ8_MEMBER(mario_sh_p2_r); - DECLARE_READ8_MEMBER(mario_sh_t0_r); - DECLARE_READ8_MEMBER(mario_sh_t1_r); + DECLARE_READ_LINE_MEMBER(mario_sh_t0_r); + DECLARE_READ_LINE_MEMBER(mario_sh_t1_r); DECLARE_READ8_MEMBER(mario_sh_tune_r); DECLARE_WRITE8_MEMBER(mario_sh_p1_w); DECLARE_WRITE8_MEMBER(mario_sh_p2_w); diff --git a/src/mame/includes/n8080.h b/src/mame/includes/n8080.h index 237324676e8..fc4a161da00 100644 --- a/src/mame/includes/n8080.h +++ b/src/mame/includes/n8080.h @@ -67,10 +67,10 @@ public: DECLARE_WRITE8_MEMBER(n8080_sound_1_w); DECLARE_WRITE8_MEMBER(n8080_sound_2_w); DECLARE_READ8_MEMBER(n8080_8035_p1_r); - DECLARE_READ8_MEMBER(n8080_8035_t0_r); - DECLARE_READ8_MEMBER(n8080_8035_t1_r); - DECLARE_READ8_MEMBER(helifire_8035_t0_r); - DECLARE_READ8_MEMBER(helifire_8035_t1_r); + DECLARE_READ_LINE_MEMBER(n8080_8035_t0_r); + DECLARE_READ_LINE_MEMBER(n8080_8035_t1_r); + DECLARE_READ_LINE_MEMBER(helifire_8035_t0_r); + DECLARE_READ_LINE_MEMBER(helifire_8035_t1_r); DECLARE_READ8_MEMBER(helifire_8035_external_ram_r); DECLARE_READ8_MEMBER(helifire_8035_p2_r); DECLARE_WRITE8_MEMBER(n8080_dac_w); diff --git a/src/mame/includes/pcw.h b/src/mame/includes/pcw.h index 084d4d38cb8..41e5df2a26f 100644 --- a/src/mame/includes/pcw.h +++ b/src/mame/includes/pcw.h @@ -93,15 +93,15 @@ public: DECLARE_WRITE8_MEMBER(mcu_printer_p1_w); DECLARE_READ8_MEMBER(mcu_printer_p2_r); DECLARE_WRITE8_MEMBER(mcu_printer_p2_w); - DECLARE_READ8_MEMBER(mcu_printer_t1_r); - DECLARE_READ8_MEMBER(mcu_printer_t0_r); + DECLARE_READ_LINE_MEMBER(mcu_printer_t1_r); + DECLARE_READ_LINE_MEMBER(mcu_printer_t0_r); DECLARE_READ8_MEMBER(mcu_kb_scan_r); DECLARE_WRITE8_MEMBER(mcu_kb_scan_w); DECLARE_READ8_MEMBER(mcu_kb_scan_high_r); DECLARE_WRITE8_MEMBER(mcu_kb_scan_high_w); DECLARE_READ8_MEMBER(mcu_kb_data_r); - DECLARE_READ8_MEMBER(mcu_kb_t1_r); - DECLARE_READ8_MEMBER(mcu_kb_t0_r); + DECLARE_READ_LINE_MEMBER(mcu_kb_t1_r); + DECLARE_READ_LINE_MEMBER(mcu_kb_t0_r); DECLARE_READ8_MEMBER(pcw9512_parallel_r); DECLARE_WRITE8_MEMBER(pcw9512_parallel_w); void mcu_transmit_serial(uint8_t bit); diff --git a/src/mame/includes/quasar.h b/src/mame/includes/quasar.h index 77827a677ea..972aa632e1a 100644 --- a/src/mame/includes/quasar.h +++ b/src/mame/includes/quasar.h @@ -25,7 +25,7 @@ public: DECLARE_WRITE8_MEMBER(quasar_bullet_w); DECLARE_WRITE8_MEMBER(quasar_sh_command_w); DECLARE_READ8_MEMBER(quasar_sh_command_r); - DECLARE_READ8_MEMBER(audio_t1_r); + DECLARE_READ_LINE_MEMBER(audio_t1_r); DECLARE_MACHINE_START(quasar); DECLARE_MACHINE_RESET(quasar); DECLARE_VIDEO_START(quasar); diff --git a/src/mame/includes/segag80r.h b/src/mame/includes/segag80r.h index 796b79c40c8..b36079d4330 100644 --- a/src/mame/includes/segag80r.h +++ b/src/mame/includes/segag80r.h @@ -114,7 +114,6 @@ public: DECLARE_WRITE8_MEMBER(spaceod_sound_w); DECLARE_READ8_MEMBER(n7751_rom_r); DECLARE_READ8_MEMBER(n7751_command_r); - DECLARE_READ8_MEMBER(n7751_t1_r); DECLARE_INPUT_CHANGED_MEMBER(service_switch); DECLARE_WRITE8_MEMBER(usb_ram_w); DECLARE_WRITE8_MEMBER(sindbadm_soundport_w); diff --git a/src/mame/includes/segas16a.h b/src/mame/includes/segas16a.h index 4c83c52941a..61cd8af83e9 100644 --- a/src/mame/includes/segas16a.h +++ b/src/mame/includes/segas16a.h @@ -74,7 +74,6 @@ public: DECLARE_READ8_MEMBER( n7751_rom_r ); DECLARE_READ8_MEMBER( n7751_p2_r ); DECLARE_WRITE8_MEMBER( n7751_p2_w ); - DECLARE_READ8_MEMBER( n7751_t1_r ); // I8751 MCU read/write handlers DECLARE_WRITE8_MEMBER( mcu_control_w ); diff --git a/src/mame/includes/spacefb.h b/src/mame/includes/spacefb.h index ccf5a7d29b9..38b35979924 100644 --- a/src/mame/includes/spacefb.h +++ b/src/mame/includes/spacefb.h @@ -58,8 +58,8 @@ public: DECLARE_WRITE8_MEMBER(port_1_w); DECLARE_WRITE8_MEMBER(port_2_w); DECLARE_READ8_MEMBER(audio_p2_r); - DECLARE_READ8_MEMBER(audio_t0_r); - DECLARE_READ8_MEMBER(audio_t1_r); + DECLARE_READ_LINE_MEMBER(audio_t0_r); + DECLARE_READ_LINE_MEMBER(audio_t1_r); virtual void machine_start() override; virtual void machine_reset() override; diff --git a/src/mame/includes/spcforce.h b/src/mame/includes/spcforce.h index f74a480d4c1..550322457fa 100644 --- a/src/mame/includes/spcforce.h +++ b/src/mame/includes/spcforce.h @@ -43,7 +43,7 @@ public: DECLARE_WRITE_LINE_MEMBER(write_sn1_ready); DECLARE_WRITE_LINE_MEMBER(write_sn2_ready); DECLARE_WRITE_LINE_MEMBER(write_sn3_ready); - DECLARE_READ8_MEMBER(t0_r); + DECLARE_READ_LINE_MEMBER(t0_r); DECLARE_WRITE8_MEMBER(soundtrigger_w); DECLARE_WRITE8_MEMBER(irq_mask_w); DECLARE_WRITE8_MEMBER(flip_screen_w); diff --git a/src/mame/includes/vicdual.h b/src/mame/includes/vicdual.h index 9748eaf1f7e..b9807288d3f 100644 --- a/src/mame/includes/vicdual.h +++ b/src/mame/includes/vicdual.h @@ -113,7 +113,7 @@ public: /*----------- defined in audio/carnival.c -----------*/ DECLARE_WRITE8_MEMBER( carnival_audio_1_w ); DECLARE_WRITE8_MEMBER( carnival_audio_2_w ); - DECLARE_READ8_MEMBER( carnival_music_port_t1_r ); + DECLARE_READ_LINE_MEMBER( carnival_music_port_t1_r ); DECLARE_WRITE8_MEMBER( carnival_music_port_1_w ); DECLARE_WRITE8_MEMBER( carnival_music_port_2_w ); void carnival_psg_latch(address_space &space); diff --git a/src/mame/machine/advision.cpp b/src/mame/machine/advision.cpp index d75589a9f0c..adc01887ead 100644 --- a/src/mame/machine/advision.cpp +++ b/src/mame/machine/advision.cpp @@ -157,7 +157,7 @@ WRITE8_MEMBER( advision_state::av_control_w ) m_video_bank = (data & 0xe0) >> 5; } -READ8_MEMBER( advision_state::vsync_r ) +READ_LINE_MEMBER( advision_state::vsync_r ) { if (m_frame_start) { diff --git a/src/mame/machine/compiskb.cpp b/src/mame/machine/compiskb.cpp index 8680a94798b..79212d26540 100644 --- a/src/mame/machine/compiskb.cpp +++ b/src/mame/machine/compiskb.cpp @@ -51,26 +51,18 @@ const tiny_rom_entry *compis_keyboard_device::device_rom_region() const } -//------------------------------------------------- -// ADDRESS_MAP( compis_keyboard_io ) -//------------------------------------------------- - -static ADDRESS_MAP_START( compis_keyboard_io, AS_IO, 8, compis_keyboard_device ) - AM_RANGE(MCS48_PORT_BUS, MCS48_PORT_BUS) AM_READWRITE(bus_r, bus_w) - AM_RANGE(MCS48_PORT_P1, MCS48_PORT_P1) AM_READ(p1_r) AM_WRITENOP - AM_RANGE(MCS48_PORT_P2, MCS48_PORT_P2) AM_READ(p2_r) AM_WRITENOP - AM_RANGE(MCS48_PORT_T0, MCS48_PORT_T0) AM_NOP - AM_RANGE(MCS48_PORT_T1, MCS48_PORT_T1) AM_NOP -ADDRESS_MAP_END - - //------------------------------------------------- // MACHINE_DRIVER( compis_keyboard ) //------------------------------------------------- static MACHINE_CONFIG_FRAGMENT( compis_keyboard ) MCFG_CPU_ADD(I8748_TAG, I8748, 2016000) // XTAL_4_032MHz/2 ??? - MCFG_CPU_IO_MAP(compis_keyboard_io) + MCFG_MCS48_PORT_BUS_IN_CB(READ8(compis_keyboard_device, bus_r)) + MCFG_MCS48_PORT_BUS_OUT_CB(WRITE8(compis_keyboard_device, bus_w)) + MCFG_MCS48_PORT_P1_IN_CB(READ8(compis_keyboard_device, p1_r)) + MCFG_MCS48_PORT_P2_IN_CB(READ8(compis_keyboard_device, p2_r)) + MCFG_MCS48_PORT_T0_IN_CB(NOOP) // ??? + MCFG_MCS48_PORT_T1_IN_CB(NOOP) // ??? // sound hardware MCFG_SPEAKER_STANDARD_MONO("mono") diff --git a/src/mame/machine/dmv_keyb.cpp b/src/mame/machine/dmv_keyb.cpp index 6d5d830c9d9..bbec3fa8def 100644 --- a/src/mame/machine/dmv_keyb.cpp +++ b/src/mame/machine/dmv_keyb.cpp @@ -27,15 +27,11 @@ ROM_START( dmv_keyboard ) ROM_END -static ADDRESS_MAP_START( dmv_keyboard_io, AS_IO, 8, dmv_keyboard_device ) - AM_RANGE(MCS48_PORT_P1, MCS48_PORT_P1) AM_READ(port1_r) - AM_RANGE(MCS48_PORT_P2, MCS48_PORT_P2) AM_READWRITE(port2_r, port2_w) -ADDRESS_MAP_END - - static MACHINE_CONFIG_FRAGMENT( dmv_keyboard ) MCFG_CPU_ADD("mcu", I8741, XTAL_6MHz) - MCFG_CPU_IO_MAP(dmv_keyboard_io) + MCFG_MCS48_PORT_P1_IN_CB(READ8(dmv_keyboard_device, port1_r)) + MCFG_MCS48_PORT_P2_IN_CB(READ8(dmv_keyboard_device, port2_r)) + MCFG_MCS48_PORT_P2_OUT_CB(WRITE8(dmv_keyboard_device, port2_w)) MACHINE_CONFIG_END diff --git a/src/mame/machine/ibm6580_fdc.cpp b/src/mame/machine/ibm6580_fdc.cpp index 101aa9b0453..094bae9c931 100644 --- a/src/mame/machine/ibm6580_fdc.cpp +++ b/src/mame/machine/ibm6580_fdc.cpp @@ -30,17 +30,14 @@ const tiny_rom_entry *dw_fdc_device::device_rom_region() const return ROM_NAME( dw_fdc ); } -static ADDRESS_MAP_START( dw_fdc_io, AS_IO, 8, dw_fdc_device ) -// AM_RANGE(MCS48_PORT_BUS, MCS48_PORT_BUS) AM_READWRITE(bus_r, bus_w) - AM_RANGE(MCS48_PORT_P1, MCS48_PORT_P1) AM_WRITE(p1_w) - AM_RANGE(MCS48_PORT_P2, MCS48_PORT_P2) AM_WRITE(p2_w) -// AM_RANGE(MCS48_PORT_T0, MCS48_PORT_T0) AM_READ(t0_r) - AM_RANGE(MCS48_PORT_T1, MCS48_PORT_T1) AM_READ(t1_r) -ADDRESS_MAP_END - static MACHINE_CONFIG_FRAGMENT( dw_fdc ) MCFG_CPU_ADD("mcu", I8048, XTAL_24MHz/4) // divisor is unverified - MCFG_CPU_IO_MAP(dw_fdc_io) +// MCFG_MCS48_PORT_BUS_IN_CB(READ8(dw_fdc_device, bus_r)) +// MCFG_MCS48_PORT_BUS_OUT_CB(WRITE8(dw_fdc_device, bus_w)) + MCFG_MCS48_PORT_P1_OUT_CB(WRITE8(dw_fdc_device, p1_w)) + MCFG_MCS48_PORT_P2_OUT_CB(WRITE8(dw_fdc_device, p2_w)) +// MCFG_MCS48_PORT_T0_IN_CB(READLINE(dw_fdc_device, t0_r)) + MCFG_MCS48_PORT_T1_IN_CB(READLINE(dw_fdc_device, t1_r)) MCFG_DEVICE_ADD("ppi8255", I8255, 0) @@ -106,14 +103,14 @@ READ8_MEMBER( dw_fdc_device::p2_r ) return data; } -READ8_MEMBER( dw_fdc_device::t0_r ) +READ_LINE_MEMBER( dw_fdc_device::t0_r ) { DBG_LOG(2,"t0",( "== %d\n", m_t0)); return m_t0; } -READ8_MEMBER( dw_fdc_device::t1_r ) +READ_LINE_MEMBER( dw_fdc_device::t1_r ) { DBG_LOG(2,"t1",( "== %d\n", m_t1)); diff --git a/src/mame/machine/ibm6580_fdc.h b/src/mame/machine/ibm6580_fdc.h index b63bbfbfc2b..88ad3253e78 100644 --- a/src/mame/machine/ibm6580_fdc.h +++ b/src/mame/machine/ibm6580_fdc.h @@ -39,8 +39,8 @@ public: DECLARE_WRITE8_MEMBER(p1_w); DECLARE_WRITE8_MEMBER(p2_w); DECLARE_READ8_MEMBER(p2_r); - DECLARE_READ8_MEMBER(t0_r); - DECLARE_READ8_MEMBER(t1_r); + DECLARE_READ_LINE_MEMBER(t0_r); + DECLARE_READ_LINE_MEMBER(t1_r); DECLARE_WRITE_LINE_MEMBER(reset_w); DECLARE_WRITE_LINE_MEMBER(ack_w); diff --git a/src/mame/machine/ibm6580_kbd.cpp b/src/mame/machine/ibm6580_kbd.cpp index 5bd25997f8d..e550f591389 100644 --- a/src/mame/machine/ibm6580_kbd.cpp +++ b/src/mame/machine/ibm6580_kbd.cpp @@ -29,17 +29,15 @@ const tiny_rom_entry *dw_keyboard_device::device_rom_region() const return ROM_NAME( dw_keyboard ); } -static ADDRESS_MAP_START( dw_keyboard_io, AS_IO, 8, dw_keyboard_device ) - AM_RANGE(MCS48_PORT_BUS, MCS48_PORT_BUS) AM_READWRITE(bus_r, bus_w) - AM_RANGE(MCS48_PORT_P1, MCS48_PORT_P1) AM_WRITE(p1_w) - AM_RANGE(MCS48_PORT_P2, MCS48_PORT_P2) AM_READWRITE(p2_r, p2_w) - AM_RANGE(MCS48_PORT_T0, MCS48_PORT_T0) AM_READ(t0_r) - AM_RANGE(MCS48_PORT_T1, MCS48_PORT_T1) AM_READ(t1_r) -ADDRESS_MAP_END - static MACHINE_CONFIG_FRAGMENT( dw_keyboard ) MCFG_CPU_ADD("mcu", I8049, XTAL_6MHz) // XXX RC oscillator - MCFG_CPU_IO_MAP(dw_keyboard_io) + MCFG_MCS48_PORT_BUS_IN_CB(READ8(dw_keyboard_device, bus_r)) + MCFG_MCS48_PORT_BUS_OUT_CB(WRITE8(dw_keyboard_device, bus_w)) + MCFG_MCS48_PORT_P1_OUT_CB(WRITE8(dw_keyboard_device, p1_w)) + MCFG_MCS48_PORT_P2_IN_CB(READ8(dw_keyboard_device, p2_r)) + MCFG_MCS48_PORT_P2_OUT_CB(WRITE8(dw_keyboard_device, p2_w)) + MCFG_MCS48_PORT_T0_IN_CB(READLINE(dw_keyboard_device, t0_r)) + MCFG_MCS48_PORT_T1_IN_CB(READLINE(dw_keyboard_device, t1_r)) MACHINE_CONFIG_END machine_config_constructor dw_keyboard_device::device_mconfig_additions() const @@ -239,14 +237,14 @@ READ8_MEMBER( dw_keyboard_device::p2_r ) return data; } -READ8_MEMBER( dw_keyboard_device::t0_r ) +READ_LINE_MEMBER( dw_keyboard_device::t0_r ) { DBG_LOG(3,"t0",( "== %d\n", m_ack)); return m_ack; } -READ8_MEMBER( dw_keyboard_device::t1_r ) +READ_LINE_MEMBER( dw_keyboard_device::t1_r ) { DBG_LOG(2,"t1",( "== %d\n", m_keylatch)); diff --git a/src/mame/machine/ibm6580_kbd.h b/src/mame/machine/ibm6580_kbd.h index bd6e53935bf..a1491196ec1 100644 --- a/src/mame/machine/ibm6580_kbd.h +++ b/src/mame/machine/ibm6580_kbd.h @@ -36,8 +36,8 @@ public: DECLARE_WRITE8_MEMBER(p1_w); DECLARE_WRITE8_MEMBER(p2_w); DECLARE_READ8_MEMBER(p2_r); - DECLARE_READ8_MEMBER(t0_r); - DECLARE_READ8_MEMBER(t1_r); + DECLARE_READ_LINE_MEMBER(t0_r); + DECLARE_READ_LINE_MEMBER(t1_r); DECLARE_WRITE_LINE_MEMBER(reset_w); DECLARE_WRITE_LINE_MEMBER(ack_w); diff --git a/src/mame/machine/km035.cpp b/src/mame/machine/km035.cpp index 133a03efc45..b8ffbf956de 100644 --- a/src/mame/machine/km035.cpp +++ b/src/mame/machine/km035.cpp @@ -49,14 +49,6 @@ static ADDRESS_MAP_START( km035_map, AS_PROGRAM, 8, km035_device ) AM_RANGE(0x0000, 0x07ff) AM_ROM ADDRESS_MAP_END -static ADDRESS_MAP_START( km035_iomap, AS_IO, 8, km035_device ) - AM_RANGE(MCS48_PORT_BUS, MCS48_PORT_BUS) AM_WRITE(bus_w) - AM_RANGE(MCS48_PORT_P1, MCS48_PORT_P1) AM_READWRITE(p1_r, p1_w) - AM_RANGE(MCS48_PORT_P2, MCS48_PORT_P2) AM_READWRITE(p2_r, p2_w) - AM_RANGE(MCS48_PORT_T0, MCS48_PORT_T0) AM_READ(t0_r) - AM_RANGE(MCS48_PORT_T1, MCS48_PORT_T1) AM_READ(t1_r) -ADDRESS_MAP_END - //------------------------------------------------- // MACHINE_CONFIG //------------------------------------------------- @@ -64,7 +56,13 @@ ADDRESS_MAP_END static MACHINE_CONFIG_FRAGMENT( km035 ) MCFG_CPU_ADD(KM035_CPU_TAG, I8035, XTAL_4_608MHz) MCFG_CPU_PROGRAM_MAP(km035_map) - MCFG_CPU_IO_MAP(km035_iomap) + MCFG_MCS48_PORT_BUS_OUT_CB(WRITE8(km035_device, bus_w)) + MCFG_MCS48_PORT_P1_IN_CB(READ8(km035_device, p1_r)) + MCFG_MCS48_PORT_P1_OUT_CB(WRITE8(km035_device, p1_w)) + MCFG_MCS48_PORT_P2_IN_CB(READ8(km035_device, p2_r)) + MCFG_MCS48_PORT_P2_OUT_CB(WRITE8(km035_device, p2_w)) + MCFG_MCS48_PORT_T0_IN_CB(READLINE(km035_device, t0_r)) + MCFG_MCS48_PORT_T1_IN_CB(READLINE(km035_device, t1_r)) MCFG_SPEAKER_STANDARD_MONO("mono") MCFG_SOUND_ADD(KM035_SPK_TAG, BEEP, 3250) @@ -369,7 +367,7 @@ WRITE8_MEMBER( km035_device::bus_w ) // t0_r - //------------------------------------------------- -READ8_MEMBER( km035_device::t0_r ) +READ_LINE_MEMBER( km035_device::t0_r ) { return m_keylatch; } @@ -378,7 +376,7 @@ READ8_MEMBER( km035_device::t0_r ) // t1_r - //------------------------------------------------- -READ8_MEMBER( km035_device::t1_r ) +READ_LINE_MEMBER( km035_device::t1_r ) { return m_rx; } diff --git a/src/mame/machine/km035.h b/src/mame/machine/km035.h index bbc5afcdf1d..b52f5105a1c 100644 --- a/src/mame/machine/km035.h +++ b/src/mame/machine/km035.h @@ -44,8 +44,8 @@ public: DECLARE_WRITE8_MEMBER( p2_w ); DECLARE_READ8_MEMBER( p1_r ); DECLARE_READ8_MEMBER( p2_r ); - DECLARE_READ8_MEMBER( t0_r ); - DECLARE_READ8_MEMBER( t1_r ); + DECLARE_READ_LINE_MEMBER( t0_r ); + DECLARE_READ_LINE_MEMBER( t1_r ); DECLARE_WRITE_LINE_MEMBER( write_rxd ); diff --git a/src/mame/machine/m24_kbd.cpp b/src/mame/machine/m24_kbd.cpp index d29e8e6b23d..701b6cf0d8c 100644 --- a/src/mame/machine/m24_kbd.cpp +++ b/src/mame/machine/m24_kbd.cpp @@ -16,17 +16,14 @@ const tiny_rom_entry *m24_keyboard_device::device_rom_region() const return ROM_NAME( m24_keyboard ); } -static ADDRESS_MAP_START( m24_keyboard_io, AS_IO, 8, m24_keyboard_device ) - AM_RANGE(MCS48_PORT_BUS, MCS48_PORT_BUS) AM_WRITE(bus_w) - AM_RANGE(MCS48_PORT_P1, MCS48_PORT_P1) AM_READWRITE(p1_r, p1_w) - AM_RANGE(MCS48_PORT_P2, MCS48_PORT_P2) AM_READ(p2_r) AM_WRITENOP - AM_RANGE(MCS48_PORT_T0, MCS48_PORT_T0) AM_READ(t0_r) - AM_RANGE(MCS48_PORT_T1, MCS48_PORT_T1) AM_READ(t1_r) -ADDRESS_MAP_END - static MACHINE_CONFIG_FRAGMENT( m24_keyboard ) MCFG_CPU_ADD("mcu", I8049, XTAL_6MHz) - MCFG_CPU_IO_MAP(m24_keyboard_io) + MCFG_MCS48_PORT_BUS_OUT_CB(WRITE8(m24_keyboard_device, bus_w)) + MCFG_MCS48_PORT_P1_IN_CB(READ8(m24_keyboard_device, p1_r)) + MCFG_MCS48_PORT_P1_OUT_CB(WRITE8(m24_keyboard_device, p1_w)) + MCFG_MCS48_PORT_P2_IN_CB(READ8(m24_keyboard_device, p2_r)) + MCFG_MCS48_PORT_T0_IN_CB(READLINE(m24_keyboard_device, t0_r)) + MCFG_MCS48_PORT_T1_IN_CB(READLINE(m24_keyboard_device, t1_r)) MACHINE_CONFIG_END machine_config_constructor m24_keyboard_device::device_mconfig_additions() const @@ -259,12 +256,12 @@ READ8_MEMBER( m24_keyboard_device::p2_r ) return (m_keypress << 7) | m_mousebtn->read(); } -READ8_MEMBER( m24_keyboard_device::t0_r ) +READ_LINE_MEMBER( m24_keyboard_device::t0_r ) { return 0; } -READ8_MEMBER( m24_keyboard_device::t1_r ) +READ_LINE_MEMBER( m24_keyboard_device::t1_r ) { return 0; } diff --git a/src/mame/machine/m24_kbd.h b/src/mame/machine/m24_kbd.h index e8ce21b81cc..6a043c8afd6 100644 --- a/src/mame/machine/m24_kbd.h +++ b/src/mame/machine/m24_kbd.h @@ -27,8 +27,8 @@ public: DECLARE_READ8_MEMBER(p1_r); DECLARE_WRITE8_MEMBER(p1_w); DECLARE_READ8_MEMBER(p2_r); - DECLARE_READ8_MEMBER(t0_r); - DECLARE_READ8_MEMBER(t1_r); + DECLARE_READ_LINE_MEMBER(t0_r); + DECLARE_READ_LINE_MEMBER(t1_r); DECLARE_WRITE_LINE_MEMBER(clock_w); DECLARE_WRITE_LINE_MEMBER(data_w); private: diff --git a/src/mame/machine/mackbd.cpp b/src/mame/machine/mackbd.cpp index 72f7c0d6a9c..089ddf4254f 100644 --- a/src/mame/machine/mackbd.cpp +++ b/src/mame/machine/mackbd.cpp @@ -84,11 +84,7 @@ static ADDRESS_MAP_START( mackbd_map, AS_PROGRAM, 8, mackbd_device ) ADDRESS_MAP_END static ADDRESS_MAP_START( mackbd_io_map, AS_IO, 8, mackbd_device ) - AM_RANGE(MCS48_PORT_BUS, MCS48_PORT_BUS) AM_READ(p0_r) AM_RANGE(0x2f, 0x36) AM_WRITE(p0_w) - AM_RANGE(MCS48_PORT_P1, MCS48_PORT_P1) AM_READWRITE(p1_r, p1_w) - AM_RANGE(MCS48_PORT_P2, MCS48_PORT_P2) AM_READWRITE(p2_r, p2_w) - AM_RANGE(MCS48_PORT_T1, MCS48_PORT_T1) AM_READ(t1_r) ADDRESS_MAP_END //------------------------------------------------- @@ -99,6 +95,12 @@ static MACHINE_CONFIG_FRAGMENT( mackbd ) MCFG_CPU_ADD(MACKBD_CPU_TAG, I8021, 3000000) // "the approximate clock rate of the MPU is 3 MHz" MCFG_CPU_PROGRAM_MAP(mackbd_map) MCFG_CPU_IO_MAP(mackbd_io_map) + MCFG_MCS48_PORT_BUS_IN_CB(READ8(mackbd_device, p0_r)) + MCFG_MCS48_PORT_P1_IN_CB(READ8(mackbd_device, p1_r)) + MCFG_MCS48_PORT_P1_OUT_CB(WRITE8(mackbd_device, p1_w)) + MCFG_MCS48_PORT_P2_IN_CB(READ8(mackbd_device, p2_r)) + MCFG_MCS48_PORT_P2_OUT_CB(WRITE8(mackbd_device, p2_w)) + MCFG_MCS48_PORT_T1_IN_CB(IOPORT("MODS")) MCFG_DEVCB_RSHIFT(1) // option MACHINE_CONFIG_END static INPUT_PORTS_START( mackbd ) @@ -318,11 +320,6 @@ WRITE8_MEMBER(mackbd_device::p2_w) } } -READ8_MEMBER(mackbd_device::t1_r) -{ - return (ioport("MODS")->read() & 0x2) ? 0xff : 0x00; -} - WRITE_LINE_MEMBER(mackbd_device::data_w) { data_from_mac = (state == ASSERT_LINE) ? 1 : 0; diff --git a/src/mame/machine/mackbd.h b/src/mame/machine/mackbd.h index e36acad7e33..4797b247ef8 100644 --- a/src/mame/machine/mackbd.h +++ b/src/mame/machine/mackbd.h @@ -49,7 +49,6 @@ public: DECLARE_WRITE8_MEMBER(p1_w); DECLARE_READ8_MEMBER(p2_r); DECLARE_WRITE8_MEMBER(p2_w); - DECLARE_READ8_MEMBER(t1_r); DECLARE_WRITE_LINE_MEMBER(data_w); diff --git a/src/mame/machine/ms7004.cpp b/src/mame/machine/ms7004.cpp index 1f3ae8a3421..d6fb86e964b 100644 --- a/src/mame/machine/ms7004.cpp +++ b/src/mame/machine/ms7004.cpp @@ -51,13 +51,6 @@ static ADDRESS_MAP_START( ms7004_map, AS_PROGRAM, 8, ms7004_device ) AM_RANGE(0x0000, 0x07ff) AM_ROM ADDRESS_MAP_END -static ADDRESS_MAP_START( ms7004_iomap, AS_IO, 8, ms7004_device ) - AM_RANGE(MCS48_PORT_P1, MCS48_PORT_P1) AM_WRITE(p1_w) - AM_RANGE(MCS48_PORT_P2, MCS48_PORT_P2) AM_WRITE(p2_w) - AM_RANGE(MCS48_PORT_T1, MCS48_PORT_T1) AM_READ(t1_r) - AM_RANGE(MCS48_PORT_PROG, MCS48_PORT_PROG) AM_DEVWRITE("i8243", i8243_device, i8243_prog_w) -ADDRESS_MAP_END - //------------------------------------------------- // MACHINE_CONFIG //------------------------------------------------- @@ -65,7 +58,10 @@ ADDRESS_MAP_END static MACHINE_CONFIG_FRAGMENT( ms7004 ) MCFG_CPU_ADD(MS7004_CPU_TAG, I8035, XTAL_4_608MHz) MCFG_CPU_PROGRAM_MAP(ms7004_map) - MCFG_CPU_IO_MAP(ms7004_iomap) + MCFG_MCS48_PORT_P1_OUT_CB(WRITE8(ms7004_device, p1_w)) + MCFG_MCS48_PORT_P2_OUT_CB(WRITE8(ms7004_device, p2_w)) + MCFG_MCS48_PORT_T1_IN_CB(READLINE(ms7004_device, t1_r)) + MCFG_MCS48_PORT_PROG_OUT_CB(DEVWRITELINE("i8243", i8243_device, prog_w)) MCFG_I8243_ADD("i8243", NOOP, WRITE8(ms7004_device, i8243_port_w)) @@ -443,7 +439,7 @@ WRITE8_MEMBER( ms7004_device::p2_w ) DBG_LOG(2,0,( "p2_w %02x = col %d\n", data, data&15)); m_p2 = data; - m_i8243->i8243_p2_w(space, offset, data); + m_i8243->p2_w(space, offset, data); } @@ -476,7 +472,7 @@ WRITE8_MEMBER( ms7004_device::i8243_port_w ) // t1_r - //------------------------------------------------- -READ8_MEMBER( ms7004_device::t1_r ) +READ_LINE_MEMBER( ms7004_device::t1_r ) { if (!BIT(m_p1,4)) return m_keylatch; diff --git a/src/mame/machine/ms7004.h b/src/mame/machine/ms7004.h index 4847e4b66e2..0acc1789d4e 100644 --- a/src/mame/machine/ms7004.h +++ b/src/mame/machine/ms7004.h @@ -42,7 +42,7 @@ public: DECLARE_WRITE8_MEMBER( p1_w ); DECLARE_WRITE8_MEMBER( p2_w ); - DECLARE_READ8_MEMBER( t1_r ); + DECLARE_READ_LINE_MEMBER( t1_r ); DECLARE_WRITE8_MEMBER( i8243_port_w ); DECLARE_WRITE_LINE_MEMBER( write_rxd ); diff --git a/src/mame/machine/pc1512kb.cpp b/src/mame/machine/pc1512kb.cpp index a39ed7ef0ae..9677219ffc1 100644 --- a/src/mame/machine/pc1512kb.cpp +++ b/src/mame/machine/pc1512kb.cpp @@ -46,26 +46,18 @@ const tiny_rom_entry *pc1512_keyboard_t::device_rom_region() const } -//------------------------------------------------- -// ADDRESS_MAP( pc1512_keyboard_io ) -//------------------------------------------------- - -static ADDRESS_MAP_START( pc1512_keyboard_io, AS_IO, 8, pc1512_keyboard_t ) - AM_RANGE(MCS48_PORT_BUS, MCS48_PORT_BUS) AM_READ(kb_bus_r) - AM_RANGE(MCS48_PORT_P1, MCS48_PORT_P1) AM_WRITE(kb_p1_w) - AM_RANGE(MCS48_PORT_P2, MCS48_PORT_P2) AM_READWRITE(kb_p2_r, kb_p2_w) - AM_RANGE(MCS48_PORT_T0, MCS48_PORT_T0) AM_READ(kb_t0_r) - AM_RANGE(MCS48_PORT_T1, MCS48_PORT_T1) AM_READ(kb_t1_r) -ADDRESS_MAP_END - - //------------------------------------------------- // MACHINE_DRIVER( pc1512_keyboard ) //------------------------------------------------- static MACHINE_CONFIG_FRAGMENT( pc1512_keyboard ) MCFG_CPU_ADD(I8048_TAG, I8048, XTAL_6MHz) - MCFG_CPU_IO_MAP(pc1512_keyboard_io) + MCFG_MCS48_PORT_BUS_IN_CB(READ8(pc1512_keyboard_t, kb_bus_r)) + MCFG_MCS48_PORT_P1_OUT_CB(WRITE8(pc1512_keyboard_t, kb_p1_w)) + MCFG_MCS48_PORT_P2_IN_CB(READ8(pc1512_keyboard_t, kb_p2_r)) + MCFG_MCS48_PORT_P2_OUT_CB(WRITE8(pc1512_keyboard_t, kb_p2_w)) + MCFG_MCS48_PORT_T0_IN_CB(READLINE(pc1512_keyboard_t, kb_t0_r)) + MCFG_MCS48_PORT_T1_IN_CB(READLINE(pc1512_keyboard_t, kb_t1_r)) MCFG_VCS_CONTROL_PORT_ADD("joy", vcs_control_port_devices, nullptr) MACHINE_CONFIG_END @@ -476,7 +468,7 @@ WRITE8_MEMBER( pc1512_keyboard_t::kb_p2_w ) // kb_t0_r - //------------------------------------------------- -READ8_MEMBER( pc1512_keyboard_t::kb_t0_r ) +READ_LINE_MEMBER( pc1512_keyboard_t::kb_t0_r ) { return m_m1; } @@ -486,7 +478,7 @@ READ8_MEMBER( pc1512_keyboard_t::kb_t0_r ) // kb_t1_r - //------------------------------------------------- -READ8_MEMBER( pc1512_keyboard_t::kb_t1_r ) +READ_LINE_MEMBER( pc1512_keyboard_t::kb_t1_r ) { return m_m2; } diff --git a/src/mame/machine/pc1512kb.h b/src/mame/machine/pc1512kb.h index 8f9865d1771..8fc7f09339f 100644 --- a/src/mame/machine/pc1512kb.h +++ b/src/mame/machine/pc1512kb.h @@ -66,8 +66,8 @@ public: DECLARE_WRITE8_MEMBER( kb_p1_w ); DECLARE_READ8_MEMBER( kb_p2_r ); DECLARE_WRITE8_MEMBER( kb_p2_w ); - DECLARE_READ8_MEMBER( kb_t0_r ); - DECLARE_READ8_MEMBER( kb_t1_r ); + DECLARE_READ_LINE_MEMBER( kb_t0_r ); + DECLARE_READ_LINE_MEMBER( kb_t1_r ); protected: // device-level overrides diff --git a/src/mame/machine/pcd_kbd.cpp b/src/mame/machine/pcd_kbd.cpp index ed6f8c84582..d356084b042 100644 --- a/src/mame/machine/pcd_kbd.cpp +++ b/src/mame/machine/pcd_kbd.cpp @@ -26,16 +26,13 @@ static ADDRESS_MAP_START( pcd_keyboard_map, AS_PROGRAM, 8, pcd_keyboard_device ) AM_RANGE(0x000, 0xfff) AM_ROM ADDRESS_MAP_END -static ADDRESS_MAP_START( pcd_keyboard_io, AS_IO, 8, pcd_keyboard_device ) - AM_RANGE(MCS48_PORT_BUS, MCS48_PORT_BUS) AM_READ(bus_r) - AM_RANGE(MCS48_PORT_P1, MCS48_PORT_P1) AM_READWRITE(p1_r, p1_w) - AM_RANGE(MCS48_PORT_T0, MCS48_PORT_T0) AM_READ(t0_r) -ADDRESS_MAP_END - static MACHINE_CONFIG_FRAGMENT( pcd_keyboard ) MCFG_CPU_ADD("mcu", I8035, 5760000*2) // FIXME: the mc2661 baud rate calculation MCFG_CPU_PROGRAM_MAP(pcd_keyboard_map) - MCFG_CPU_IO_MAP(pcd_keyboard_io) + MCFG_MCS48_PORT_BUS_IN_CB(READ8(pcd_keyboard_device, bus_r)) + MCFG_MCS48_PORT_P1_IN_CB(READ8(pcd_keyboard_device, p1_r)) + MCFG_MCS48_PORT_P1_OUT_CB(WRITE8(pcd_keyboard_device, p1_w)) + MCFG_MCS48_PORT_T0_IN_CB(READLINE(pcd_keyboard_device, t0_r)) // sound hardware MCFG_SPEAKER_STANDARD_MONO("mono") @@ -258,7 +255,7 @@ WRITE8_MEMBER( pcd_keyboard_device::p1_w ) m_out_tx_handler(BIT(data, 5)); } -READ8_MEMBER( pcd_keyboard_device::t0_r ) +READ_LINE_MEMBER( pcd_keyboard_device::t0_r ) { return m_t0; } diff --git a/src/mame/machine/pcd_kbd.h b/src/mame/machine/pcd_kbd.h index b899fab91d6..6dcf1d9a426 100644 --- a/src/mame/machine/pcd_kbd.h +++ b/src/mame/machine/pcd_kbd.h @@ -22,7 +22,7 @@ public: DECLARE_READ8_MEMBER( bus_r ); DECLARE_READ8_MEMBER( p1_r ); DECLARE_WRITE8_MEMBER( p1_w ); - DECLARE_READ8_MEMBER( t0_r ); + DECLARE_READ_LINE_MEMBER( t0_r ); DECLARE_WRITE_LINE_MEMBER( t0_w ); private: required_ioport_array<17> m_rows; diff --git a/src/mame/machine/tandy2kb.cpp b/src/mame/machine/tandy2kb.cpp index fa84fbec7ee..c3ea1183832 100644 --- a/src/mame/machine/tandy2kb.cpp +++ b/src/mame/machine/tandy2kb.cpp @@ -47,24 +47,15 @@ const tiny_rom_entry *tandy2k_keyboard_device::device_rom_region() const } -//------------------------------------------------- -// ADDRESS_MAP( kb_io ) -//------------------------------------------------- - -static ADDRESS_MAP_START( tandy2k_keyboard_io, AS_IO, 8, tandy2k_keyboard_device ) - AM_RANGE(MCS48_PORT_P1, MCS48_PORT_P1) AM_WRITE(kb_p1_w) - AM_RANGE(MCS48_PORT_P2, MCS48_PORT_P2) AM_WRITE(kb_p2_w) - AM_RANGE(MCS48_PORT_BUS, MCS48_PORT_BUS) AM_READ(kb_p1_r) -ADDRESS_MAP_END - - //------------------------------------------------- // MACHINE_DRIVER( tandy2k_keyboard ) //------------------------------------------------- static MACHINE_CONFIG_FRAGMENT( tandy2k_keyboard ) MCFG_CPU_ADD(I8048_TAG, I8048, 1000000) // ? - MCFG_CPU_IO_MAP(tandy2k_keyboard_io) + MCFG_MCS48_PORT_P1_OUT_CB(WRITE8(tandy2k_keyboard_device, kb_p1_w)) + MCFG_MCS48_PORT_P2_OUT_CB(WRITE8(tandy2k_keyboard_device, kb_p2_w)) + MCFG_MCS48_PORT_BUS_IN_CB(READ8(tandy2k_keyboard_device, kb_p1_r)) MCFG_DEVICE_DISABLE() // TODO MACHINE_CONFIG_END diff --git a/src/mame/machine/trs80m2kb.cpp b/src/mame/machine/trs80m2kb.cpp index 86a73ed9c7d..9d6411d3313 100644 --- a/src/mame/machine/trs80m2kb.cpp +++ b/src/mame/machine/trs80m2kb.cpp @@ -47,25 +47,16 @@ const tiny_rom_entry *trs80m2_keyboard_device::device_rom_region() const } -//------------------------------------------------- -// ADDRESS_MAP( kb_io ) -//------------------------------------------------- - -static ADDRESS_MAP_START( trs80m2_keyboard_io, AS_IO, 8, trs80m2_keyboard_device ) - AM_RANGE(MCS48_PORT_T1, MCS48_PORT_T1) AM_READ(kb_t1_r) - AM_RANGE(MCS48_PORT_P0, MCS48_PORT_P0) AM_READ(kb_p0_r) - AM_RANGE(MCS48_PORT_P1, MCS48_PORT_P1) AM_WRITE(kb_p1_w) - AM_RANGE(MCS48_PORT_P2, MCS48_PORT_P2) AM_WRITE(kb_p2_w) -ADDRESS_MAP_END - - //------------------------------------------------- // MACHINE_DRIVER( trs80m2_keyboard ) //------------------------------------------------- static MACHINE_CONFIG_FRAGMENT( trs80m2_keyboard ) MCFG_CPU_ADD(I8021_TAG, I8021, 3000000) // 1000uH inductor connected across the XTAL inputs - MCFG_CPU_IO_MAP(trs80m2_keyboard_io) + MCFG_MCS48_PORT_T1_IN_CB(READLINE(trs80m2_keyboard_device, kb_t1_r)) + MCFG_MCS48_PORT_BUS_IN_CB(READ8(trs80m2_keyboard_device, kb_p0_r)) + MCFG_MCS48_PORT_P1_OUT_CB(WRITE8(trs80m2_keyboard_device, kb_p1_w)) + MCFG_MCS48_PORT_P2_OUT_CB(WRITE8(trs80m2_keyboard_device, kb_p2_w)) MCFG_DEVICE_DISABLE() // TODO MACHINE_CONFIG_END @@ -288,7 +279,7 @@ READ_LINE_MEMBER( trs80m2_keyboard_device::data_r ) // kb_t1_r - //------------------------------------------------- -READ8_MEMBER( trs80m2_keyboard_device::kb_t1_r ) +READ_LINE_MEMBER( trs80m2_keyboard_device::kb_t1_r ) { return m_busy; } diff --git a/src/mame/machine/trs80m2kb.h b/src/mame/machine/trs80m2kb.h index bf8a45f3606..9ce7ba94b28 100644 --- a/src/mame/machine/trs80m2kb.h +++ b/src/mame/machine/trs80m2kb.h @@ -56,7 +56,7 @@ public: DECLARE_READ_LINE_MEMBER( data_r ); // not really public - DECLARE_READ8_MEMBER( kb_t1_r ); + DECLARE_READ_LINE_MEMBER( kb_t1_r ); DECLARE_READ8_MEMBER( kb_p0_r ); DECLARE_WRITE8_MEMBER( kb_p1_w ); DECLARE_WRITE8_MEMBER( kb_p2_w ); diff --git a/src/mame/machine/v1050kb.cpp b/src/mame/machine/v1050kb.cpp index 33b3be0a86d..fdb6aa8fa0a 100644 --- a/src/mame/machine/v1050kb.cpp +++ b/src/mame/machine/v1050kb.cpp @@ -50,16 +50,6 @@ const tiny_rom_entry *v1050_keyboard_device::device_rom_region() const } -//------------------------------------------------- -// ADDRESS_MAP( kb_io ) -//------------------------------------------------- - -static ADDRESS_MAP_START( v1050_keyboard_io, AS_IO, 8, v1050_keyboard_device ) - AM_RANGE(MCS48_PORT_P1, MCS48_PORT_P1) AM_READWRITE(kb_p1_r, kb_p1_w) - AM_RANGE(MCS48_PORT_P2, MCS48_PORT_P2) AM_WRITE(kb_p2_w) -ADDRESS_MAP_END - - //------------------------------------------------- // DISCRETE_SOUND_START( v1050kb ) //------------------------------------------------- @@ -84,7 +74,9 @@ DISCRETE_SOUND_END static MACHINE_CONFIG_FRAGMENT( v1050_keyboard ) MCFG_CPU_ADD(I8049_TAG, I8049, XTAL_4_608MHz) - MCFG_CPU_IO_MAP(v1050_keyboard_io) + MCFG_MCS48_PORT_P1_IN_CB(READ8(v1050_keyboard_device, kb_p1_r)) + MCFG_MCS48_PORT_P1_OUT_CB(WRITE8(v1050_keyboard_device, kb_p1_w)) + MCFG_MCS48_PORT_P2_OUT_CB(WRITE8(v1050_keyboard_device, kb_p2_w)) MCFG_DEVICE_DISABLE() // TODO // discrete sound diff --git a/src/mame/machine/victor9k_fdc.cpp b/src/mame/machine/victor9k_fdc.cpp index e63fa8364be..855f32fb507 100644 --- a/src/mame/machine/victor9k_fdc.cpp +++ b/src/mame/machine/victor9k_fdc.cpp @@ -112,19 +112,6 @@ const tiny_rom_entry *victor_9000_fdc_t::device_rom_region() const } -//------------------------------------------------- -// ADDRESS_MAP( floppy_io ) -//------------------------------------------------- - -static ADDRESS_MAP_START( floppy_io, AS_IO, 8, victor_9000_fdc_t ) - AM_RANGE(MCS48_PORT_P1, MCS48_PORT_P1) AM_READWRITE(floppy_p1_r, floppy_p1_w) - AM_RANGE(MCS48_PORT_P2, MCS48_PORT_P2) AM_READWRITE(floppy_p2_r, floppy_p2_w) - AM_RANGE(MCS48_PORT_T0, MCS48_PORT_T0) AM_READ(tach0_r) - AM_RANGE(MCS48_PORT_T1, MCS48_PORT_T1) AM_READ(tach1_r) - AM_RANGE(MCS48_PORT_BUS, MCS48_PORT_BUS) AM_WRITE(da_w) -ADDRESS_MAP_END - - //------------------------------------------------- // SLOT_INTERFACE( victor9k_floppies ) //------------------------------------------------- @@ -173,7 +160,13 @@ FLOPPY_FORMATS_END static MACHINE_CONFIG_FRAGMENT( victor_9000_fdc ) MCFG_CPU_ADD(I8048_TAG, I8048, XTAL_30MHz/6) - MCFG_CPU_IO_MAP(floppy_io) + MCFG_MCS48_PORT_P1_IN_CB(READ8(victor_9000_fdc_t, floppy_p1_r)) + MCFG_MCS48_PORT_P1_OUT_CB(WRITE8(victor_9000_fdc_t, floppy_p1_w)) + MCFG_MCS48_PORT_P2_IN_CB(READ8(victor_9000_fdc_t, floppy_p2_r)) + MCFG_MCS48_PORT_P2_OUT_CB(WRITE8(victor_9000_fdc_t, floppy_p2_w)) + MCFG_MCS48_PORT_T0_IN_CB(READLINE(victor_9000_fdc_t, tach0_r)) + MCFG_MCS48_PORT_T1_IN_CB(READLINE(victor_9000_fdc_t, tach1_r)) + MCFG_MCS48_PORT_BUS_OUT_CB(WRITE8(victor_9000_fdc_t, da_w)) MCFG_DEVICE_ADD(M6522_4_TAG, VIA6522, XTAL_30MHz/30) MCFG_VIA6522_READPA_HANDLER(READ8(victor_9000_fdc_t, via4_pa_r)) @@ -543,7 +536,7 @@ WRITE8_MEMBER( victor_9000_fdc_t::floppy_p2_w ) // tach0_r - //------------------------------------------------- -READ8_MEMBER( victor_9000_fdc_t::tach0_r ) +READ_LINE_MEMBER( victor_9000_fdc_t::tach0_r ) { if (LOG_SCP) logerror("%s %s Read TACH0 %u\n", machine().time().as_string(), machine().describe_context(), m_tach0); return m_tach0; @@ -554,7 +547,7 @@ READ8_MEMBER( victor_9000_fdc_t::tach0_r ) // tach1_r - //------------------------------------------------- -READ8_MEMBER( victor_9000_fdc_t::tach1_r ) +READ_LINE_MEMBER( victor_9000_fdc_t::tach1_r ) { if (LOG_SCP) logerror("%s %s Read TACH1 %u\n", machine().time().as_string(), machine().describe_context(), m_tach1); return m_tach1; diff --git a/src/mame/machine/victor9k_fdc.h b/src/mame/machine/victor9k_fdc.h index dcd82226fdd..447604368eb 100644 --- a/src/mame/machine/victor9k_fdc.h +++ b/src/mame/machine/victor9k_fdc.h @@ -63,8 +63,8 @@ public: DECLARE_WRITE8_MEMBER( floppy_p1_w ); DECLARE_READ8_MEMBER( floppy_p2_r ); DECLARE_WRITE8_MEMBER( floppy_p2_w ); - DECLARE_READ8_MEMBER( tach0_r ); - DECLARE_READ8_MEMBER( tach1_r ); + DECLARE_READ_LINE_MEMBER( tach0_r ); + DECLARE_READ_LINE_MEMBER( tach1_r ); DECLARE_WRITE8_MEMBER( da_w ); DECLARE_READ8_MEMBER( via4_pa_r ); diff --git a/src/mame/machine/victor9kb.cpp b/src/mame/machine/victor9kb.cpp index b26df2526ac..6f2c80a2295 100644 --- a/src/mame/machine/victor9kb.cpp +++ b/src/mame/machine/victor9kb.cpp @@ -376,25 +376,17 @@ const tiny_rom_entry *victor_9000_keyboard_t::device_rom_region() const } -//------------------------------------------------- -// ADDRESS_MAP( kb_io ) -//------------------------------------------------- - -static ADDRESS_MAP_START( victor9k_keyboard_io, AS_IO, 8, victor_9000_keyboard_t ) - // P0 is unconnected on pcb - AM_RANGE(MCS48_PORT_P1, MCS48_PORT_P1) AM_READWRITE(kb_p1_r, kb_p1_w) - AM_RANGE(MCS48_PORT_P2, MCS48_PORT_P2) AM_WRITE(kb_p2_w) - AM_RANGE(MCS48_PORT_T1, MCS48_PORT_T1) AM_READ(kb_t1_r) -ADDRESS_MAP_END - - //------------------------------------------------- // MACHINE_DRIVER( victor9k_keyboard ) //------------------------------------------------- static MACHINE_CONFIG_FRAGMENT( victor9k_keyboard ) MCFG_CPU_ADD(I8021_TAG, I8021, XTAL_3_579545MHz) - MCFG_CPU_IO_MAP(victor9k_keyboard_io) + // P0 is unconnected on pcb + MCFG_MCS48_PORT_P1_IN_CB(READ8(victor_9000_keyboard_t, kb_p1_r)) + MCFG_MCS48_PORT_P1_OUT_CB(WRITE8(victor_9000_keyboard_t, kb_p1_w)) + MCFG_MCS48_PORT_P2_OUT_CB(WRITE8(victor_9000_keyboard_t, kb_p2_w)) + MCFG_MCS48_PORT_T1_IN_CB(READLINE(victor_9000_keyboard_t, kb_t1_r)) MACHINE_CONFIG_END @@ -680,7 +672,7 @@ WRITE8_MEMBER( victor_9000_keyboard_t::kb_p2_w ) // kb_t1_r - //------------------------------------------------- -READ8_MEMBER( victor_9000_keyboard_t::kb_t1_r ) +READ_LINE_MEMBER( victor_9000_keyboard_t::kb_t1_r ) { return m_kback; } diff --git a/src/mame/machine/victor9kb.h b/src/mame/machine/victor9kb.h index 5cf750c59ae..4f235437675 100644 --- a/src/mame/machine/victor9kb.h +++ b/src/mame/machine/victor9kb.h @@ -53,7 +53,7 @@ public: DECLARE_READ8_MEMBER( kb_p1_r ); DECLARE_WRITE8_MEMBER( kb_p1_w ); DECLARE_WRITE8_MEMBER( kb_p2_w ); - DECLARE_READ8_MEMBER( kb_t1_r ); + DECLARE_READ_LINE_MEMBER( kb_t1_r ); protected: // device-level overrides diff --git a/src/mame/machine/x820kb.cpp b/src/mame/machine/x820kb.cpp index e9f1b57f49d..6ff49b781e3 100644 --- a/src/mame/machine/x820kb.cpp +++ b/src/mame/machine/x820kb.cpp @@ -80,26 +80,18 @@ const tiny_rom_entry *xerox_820_keyboard_t::device_rom_region() const } -//------------------------------------------------- -// ADDRESS_MAP( kb_io ) -//------------------------------------------------- - -static ADDRESS_MAP_START( xerox_820_keyboard_io, AS_IO, 8, xerox_820_keyboard_t ) - AM_RANGE(MCS48_PORT_P1, MCS48_PORT_P1) AM_READWRITE(kb_p1_r, kb_p1_w) - AM_RANGE(MCS48_PORT_P2, MCS48_PORT_P2) AM_READ(kb_p2_r) AM_WRITENOP - AM_RANGE(MCS48_PORT_T0, MCS48_PORT_T0) AM_READ(kb_t0_r) - AM_RANGE(MCS48_PORT_T0, MCS48_PORT_T1) AM_READ(kb_t1_r) - AM_RANGE(MCS48_PORT_BUS, MCS48_PORT_BUS) AM_WRITE(kb_bus_w) -ADDRESS_MAP_END - - //------------------------------------------------- // MACHINE_DRIVER( xerox_820_keyboard ) //------------------------------------------------- static MACHINE_CONFIG_FRAGMENT( xerox_820_keyboard ) MCFG_CPU_ADD(I8748_TAG, I8048, XTAL_6MHz) - MCFG_CPU_IO_MAP(xerox_820_keyboard_io) + MCFG_MCS48_PORT_P1_IN_CB(READ8(xerox_820_keyboard_t, kb_p1_r)) + MCFG_MCS48_PORT_P1_OUT_CB(WRITE8(xerox_820_keyboard_t, kb_p1_w)) + MCFG_MCS48_PORT_P2_IN_CB(READ8(xerox_820_keyboard_t, kb_p2_r)) + MCFG_MCS48_PORT_T0_IN_CB(READLINE(xerox_820_keyboard_t, kb_t0_r)) + MCFG_MCS48_PORT_T1_IN_CB(READLINE(xerox_820_keyboard_t, kb_t1_r)) + MCFG_MCS48_PORT_BUS_OUT_CB(WRITE8(xerox_820_keyboard_t, kb_bus_w)) MACHINE_CONFIG_END @@ -347,7 +339,7 @@ READ8_MEMBER( xerox_820_keyboard_t::kb_p2_r ) // kb_t0_r - //------------------------------------------------- -READ8_MEMBER( xerox_820_keyboard_t::kb_t0_r ) +READ_LINE_MEMBER( xerox_820_keyboard_t::kb_t0_r ) { uint8_t data = 1; @@ -365,7 +357,7 @@ READ8_MEMBER( xerox_820_keyboard_t::kb_t0_r ) // kb_t1_r - //------------------------------------------------- -READ8_MEMBER( xerox_820_keyboard_t::kb_t1_r ) +READ_LINE_MEMBER( xerox_820_keyboard_t::kb_t1_r ) { return 1; // ??? if 0, toggle P17 } diff --git a/src/mame/machine/x820kb.h b/src/mame/machine/x820kb.h index 0edf355d032..bca655a5faa 100644 --- a/src/mame/machine/x820kb.h +++ b/src/mame/machine/x820kb.h @@ -48,8 +48,8 @@ public: DECLARE_READ8_MEMBER( kb_p1_r ); DECLARE_WRITE8_MEMBER( kb_p1_w ); DECLARE_READ8_MEMBER( kb_p2_r ); - DECLARE_READ8_MEMBER( kb_t0_r ); - DECLARE_READ8_MEMBER( kb_t1_r ); + DECLARE_READ_LINE_MEMBER( kb_t0_r ); + DECLARE_READ_LINE_MEMBER( kb_t1_r ); DECLARE_WRITE8_MEMBER( kb_bus_w ); protected: diff --git a/src/mame/video/pcd.cpp b/src/mame/video/pcd.cpp index 4ad58ebb3fe..99040971f32 100644 --- a/src/mame/video/pcd.cpp +++ b/src/mame/video/pcd.cpp @@ -99,15 +99,11 @@ ioport_constructor pcd_video_device::device_input_ports() const return INPUT_PORTS_NAME(pcd_mouse); } -static ADDRESS_MAP_START( pcd_vid_io, AS_IO, 8, pcd_video_device ) - AM_RANGE(MCS48_PORT_P1, MCS48_PORT_P1) AM_READ(p1_r) - AM_RANGE(MCS48_PORT_P2, MCS48_PORT_P2) AM_WRITE(p2_w) - AM_RANGE(MCS48_PORT_T1, MCS48_PORT_T1) AM_READ(t1_r) -ADDRESS_MAP_END - static MACHINE_CONFIG_FRAGMENT( pcd_video ) MCFG_CPU_ADD("graphics", I8741, XTAL_16MHz/2) - MCFG_CPU_IO_MAP(pcd_vid_io) + MCFG_MCS48_PORT_P1_IN_CB(READ8(pcd_video_device, p1_r)) + MCFG_MCS48_PORT_P2_OUT_CB(WRITE8(pcd_video_device, p2_w)) + MCFG_MCS48_PORT_T1_IN_CB(READLINE(pcd_video_device, t1_r)) // video hardware MCFG_SCREEN_ADD("screen", RASTER) @@ -294,7 +290,7 @@ WRITE8_MEMBER(pcd_video_device::vram_sw_w) m_vram_sw = data & 1; } -READ8_MEMBER(pcd_video_device::t1_r) +READ_LINE_MEMBER(pcd_video_device::t1_r) { return m_t1; } diff --git a/src/mame/video/pcd.h b/src/mame/video/pcd.h index 4cb355bea27..5617f4b2027 100644 --- a/src/mame/video/pcd.h +++ b/src/mame/video/pcd.h @@ -36,7 +36,7 @@ public: DECLARE_WRITE8_MEMBER(vram_sw_w); DECLARE_READ8_MEMBER(vram_r); DECLARE_WRITE8_MEMBER(vram_w); - DECLARE_READ8_MEMBER(t1_r); + DECLARE_READ_LINE_MEMBER(t1_r); DECLARE_READ8_MEMBER(p1_r); DECLARE_WRITE8_MEMBER(p2_w); TIMER_DEVICE_CALLBACK_MEMBER(mouse_timer);