From e9314bc4ec632d0234b3ebc9242476046be13a2f Mon Sep 17 00:00:00 2001 From: Robbbert Date: Tue, 29 Apr 2014 16:45:45 +0000 Subject: [PATCH] (MESS) p8k : sio -> dart, and kill trampolines kaypro : be consistent --- src/mess/drivers/kaypro.c | 2 +- src/mess/drivers/p8k.c | 211 ++++--------------------------------- src/mess/includes/kaypro.h | 4 +- 3 files changed, 23 insertions(+), 194 deletions(-) diff --git a/src/mess/drivers/kaypro.c b/src/mess/drivers/kaypro.c index e6bd3a08492..55ce10b2e06 100644 --- a/src/mess/drivers/kaypro.c +++ b/src/mess/drivers/kaypro.c @@ -62,7 +62,7 @@ static ADDRESS_MAP_START( kaypro2x_io, AS_IO, 8, kaypro_state ) AM_RANGE(0x00, 0x03) AM_DEVWRITE("brg", com8116_device, str_w) AM_RANGE(0x04, 0x07) AM_READWRITE(kaypro_sio_r, kaypro_sio_w) AM_RANGE(0x08, 0x0b) AM_DEVWRITE("brg", com8116_device, stt_w) - AM_RANGE(0x0c, 0x0f) AM_DEVREADWRITE("z80sio_2x", z80dart_device, ba_cd_r, ba_cd_w) + AM_RANGE(0x0c, 0x0f) AM_DEVREADWRITE("z80sio_2x", z80sio0_device, ba_cd_r, ba_cd_w) AM_RANGE(0x10, 0x13) AM_DEVREADWRITE("fdc", fd1793_t, read, write) AM_RANGE(0x14, 0x17) AM_READWRITE(kaypro2x_system_port_r,kaypro2x_system_port_w) AM_RANGE(0x18, 0x1b) AM_DEVWRITE("cent_data_out", output_latch_device, write) diff --git a/src/mess/drivers/p8k.c b/src/mess/drivers/p8k.c index 1a73b6f9856..a2775e691f3 100644 --- a/src/mess/drivers/p8k.c +++ b/src/mess/drivers/p8k.c @@ -52,7 +52,7 @@ #include "machine/upd765.h" #include "machine/z80ctc.h" #include "machine/z80pio.h" -#include "machine/z80sio.h" +#include "machine/z80dart.h" #include "machine/z80dma.h" #include "sound/beep.h" #include "machine/terminal.h" @@ -90,25 +90,7 @@ public: DECLARE_WRITE_LINE_MEMBER( p8k_daisy_interrupt ); DECLARE_WRITE_LINE_MEMBER( p8k_dma_irq_w ); - DECLARE_WRITE16_MEMBER( pk8_sio_0_serial_transmit ); - DECLARE_WRITE16_MEMBER( pk8_sio_1_serial_transmit ); - DECLARE_READ16_MEMBER( p8k_16_sio0_r ); - DECLARE_WRITE16_MEMBER( p8k_16_sio0_w ); - DECLARE_READ16_MEMBER( p8k_16_sio1_r ); - DECLARE_WRITE16_MEMBER( p8k_16_sio1_w ); - DECLARE_READ16_MEMBER( p8k_16_pio0_r ); - DECLARE_WRITE16_MEMBER( p8k_16_pio0_w ); - DECLARE_READ16_MEMBER( p8k_16_pio1_r ); - DECLARE_WRITE16_MEMBER( p8k_16_pio1_w ); - DECLARE_READ16_MEMBER( p8k_16_pio2_r ); - DECLARE_WRITE16_MEMBER( p8k_16_pio2_w ); - DECLARE_READ16_MEMBER( p8k_16_ctc0_r ); - DECLARE_WRITE16_MEMBER( p8k_16_ctc0_w ); - DECLARE_READ16_MEMBER( p8k_16_ctc1_r ); - DECLARE_WRITE16_MEMBER( p8k_16_ctc1_w ); DECLARE_WRITE_LINE_MEMBER( p8k_16_daisy_interrupt ); - DECLARE_WRITE16_MEMBER( pk8_16_sio_0_serial_transmit ); - DECLARE_WRITE16_MEMBER( pk8_16_sio_1_serial_transmit ); DECLARE_READ8_MEMBER(memory_read_byte); DECLARE_WRITE8_MEMBER(memory_write_byte); DECLARE_READ8_MEMBER(io_read_byte); @@ -148,9 +130,9 @@ static ADDRESS_MAP_START(p8k_iomap, AS_IO, 8, p8k_state) AM_RANGE(0x18, 0x1b) AM_DEVREADWRITE("z80pio_1", z80pio_device, read_alt, write_alt) AM_RANGE(0x1c, 0x1f) AM_DEVREADWRITE("z80pio_2", z80pio_device, read_alt, write_alt) AM_RANGE(0x20, 0x21) AM_DEVICE("i8272", i8272a_device, map) - //AM_RANGE(0x24, 0x27) AM_DEVREADWRITE("z80sio_0", z80sio_device, read_alt, write_alt) + //AM_RANGE(0x24, 0x27) AM_DEVREADWRITE("z80sio_0", z80sio0_device, ba_cd_r, ba_cd_w) AM_RANGE(0x24, 0x27) AM_READWRITE(p8k_port24_r,p8k_port24_w) - AM_RANGE(0x28, 0x2b) AM_DEVREADWRITE("z80sio_1", z80sio_device, read_alt, write_alt) + AM_RANGE(0x28, 0x2b) AM_DEVREADWRITE("z80sio_1", z80sio0_device, ba_cd_r, ba_cd_w) AM_RANGE(0x2c, 0x2f) AM_DEVREADWRITE("z80ctc_1", z80ctc_device, read, write) AM_RANGE(0x3c, 0x3c) AM_DEVREADWRITE("z80dma", z80dma_device, read, write) ADDRESS_MAP_END @@ -250,7 +232,7 @@ READ8_MEMBER(p8k_state::memory_read_byte) WRITE8_MEMBER(p8k_state::memory_write_byte) { address_space& prog_space = m_maincpu->space(AS_PROGRAM); - return prog_space.write_byte(offset, data); + prog_space.write_byte(offset, data); } READ8_MEMBER(p8k_state::io_read_byte) @@ -262,42 +244,9 @@ READ8_MEMBER(p8k_state::io_read_byte) WRITE8_MEMBER(p8k_state::io_write_byte) { address_space& prog_space = m_maincpu->space(AS_IO); - return prog_space.write_byte(offset, data); + prog_space.write_byte(offset, data); } -/* Z80 SIO 0 */ - -WRITE16_MEMBER( p8k_state::pk8_sio_0_serial_transmit ) -{ -// send character to terminal -} - -static const z80sio_interface p8k_sio_0_intf = -{ - DEVCB_DRIVER_LINE_MEMBER(p8k_state, p8k_daisy_interrupt), /* interrupt handler */ - DEVCB_NULL, /* DTR changed handler */ - DEVCB_NULL, /* RTS changed handler */ - DEVCB_NULL, /* BREAK changed handler */ - DEVCB_DRIVER_MEMBER16(p8k_state, pk8_sio_0_serial_transmit), /* transmit handler */ - DEVCB_NULL /* receive handler */ -}; - -/* Z80 SIO 1 */ - -WRITE16_MEMBER( p8k_state::pk8_sio_1_serial_transmit ) -{ -// send character to terminal -} - -static const z80sio_interface p8k_sio_1_intf = -{ - DEVCB_DRIVER_LINE_MEMBER(p8k_state, p8k_daisy_interrupt), /* interrupt handler */ - DEVCB_NULL, /* DTR changed handler */ - DEVCB_NULL, /* RTS changed handler */ - DEVCB_NULL, /* BREAK changed handler */ - DEVCB_DRIVER_MEMBER16(p8k_state, pk8_sio_1_serial_transmit), /* transmit handler */ - DEVCB_NULL /* receive handler */ -}; /* Z80 Daisy Chain */ @@ -405,97 +354,6 @@ MACHINE_RESET_MEMBER(p8k_state,p8k_16) { } -// TODO: all of this needs upgrading to current standards - -READ16_MEMBER( p8k_state::p8k_16_sio1_r ) -{ - z80sio_device *device = machine().device("z80sio_1"); - switch (offset & 0x06) - { - case 0x00: - return (UINT16)device->data_read(0); - case 0x02: - return (UINT16)device->data_read(1); - case 0x04: - return (UINT16)device->control_read(0); - case 0x06: - return (UINT16)device->control_read(1); - } - - return 0; -} - -WRITE16_MEMBER( p8k_state::p8k_16_sio1_w ) -{ - z80sio_device *device = machine().device("z80sio_1"); - data &= 0xff; - - switch (offset & 0x06) - { - case 0x00: - device->data_write(0, (UINT8)data); - break; - case 0x02: - device->data_write(1, (UINT8)data); - break; - case 0x04: - device->control_write(0, (UINT8)data); - break; - case 0x06: - device->control_write(1, (UINT8)data); - break; - } -} - -READ16_MEMBER( p8k_state::p8k_16_pio0_r ) -{ - return 0; //(UINT16)z80pio_r(machine().device("z80pio_0"), (offset & 0x06) >> 1); -} - -WRITE16_MEMBER( p8k_state::p8k_16_pio0_w ) -{ - //z80pio_w(machine().device("z80pio_0"), (offset & 0x06) >> 1, (UINT8)(data & 0xff)); -} - -READ16_MEMBER( p8k_state::p8k_16_pio1_r ) -{ - return 0; //(UINT16)z80pio_r(machine().device("z80pio_1"), (offset & 0x06) >> 1); -} - -WRITE16_MEMBER( p8k_state::p8k_16_pio1_w ) -{ - //z80pio_w(machine().device("z80pio_1"), (offset & 0x06) >> 1, (UINT8)(data & 0xff)); -} -READ16_MEMBER( p8k_state::p8k_16_pio2_r ) -{ - return 0; //(UINT16)z80pio_r(machine().device("z80pio_2"), (offset & 0x06) >> 1); -} - -WRITE16_MEMBER( p8k_state::p8k_16_pio2_w ) -{ - //z80pio_w(machine().device("z80pio_2"), (offset & 0x06) >> 1, (UINT8)(data & 0xff)); -} - -READ16_MEMBER( p8k_state::p8k_16_ctc0_r ) -{ - return (UINT16)machine().device("z80ctc_0")->read(space,(offset & 0x06) >> 1); -} - -WRITE16_MEMBER( p8k_state::p8k_16_ctc0_w ) -{ - machine().device("z80ctc_0")->write(space, (offset & 0x06) >> 1, (UINT8)(data & 0xff)); -} - -READ16_MEMBER( p8k_state::p8k_16_ctc1_r ) -{ - return (UINT16)machine().device("z80ctc_1")->read(space,(offset & 0x06) >> 1); -} - -WRITE16_MEMBER( p8k_state::p8k_16_ctc1_w ) -{ - machine().device("z80ctc_1")->write(space, (offset & 0x06) >> 1, (UINT8)(data & 0xff)); -} - READ16_MEMBER( p8k_state::portff82_r ) { if (offset == 3) // FF87 @@ -530,14 +388,14 @@ ADDRESS_MAP_END static ADDRESS_MAP_START(p8k_16_iomap, AS_IO, 16, p8k_state) // AM_RANGE(0x0fef0, 0x0feff) // clock - //AM_RANGE(0x0ff80, 0x0ff87) AM_READWRITE(p8k_16_sio0_r, p8k_16_sio0_w) + //AM_RANGE(0x0ff80, 0x0ff87) AM_DEVREADWRITE8("z80sio_0", z80sio0_device, ba_cd_r, ba_cd_w, 0xff) AM_RANGE(0x0ff80, 0x0ff87) AM_READWRITE(portff82_r,portff82_w) - AM_RANGE(0x0ff88, 0x0ff8f) AM_READWRITE(p8k_16_sio1_r, p8k_16_sio1_w) //"z80sio_1", - AM_RANGE(0x0ff90, 0x0ff97) AM_READWRITE(p8k_16_pio0_r, p8k_16_pio0_w) //"z80pio_0", - AM_RANGE(0x0ff98, 0x0ff9f) AM_READWRITE(p8k_16_pio1_r, p8k_16_pio1_w) //"z80pio_1", - AM_RANGE(0x0ffa0, 0x0ffa7) AM_READWRITE(p8k_16_pio2_r, p8k_16_pio2_w) //"z80pio_2", - AM_RANGE(0x0ffa8, 0x0ffaf) AM_READWRITE(p8k_16_ctc0_r, p8k_16_ctc0_w) //"z80ctc_0", - AM_RANGE(0x0ffb0, 0x0ffb7) AM_READWRITE(p8k_16_ctc1_r, p8k_16_ctc1_w) //"z80ctc_1", + AM_RANGE(0x0ff88, 0x0ff8f) AM_DEVREADWRITE8("z80sio_1", z80sio0_device, ba_cd_r, ba_cd_w, 0xff) //"z80sio_1", + AM_RANGE(0x0ff90, 0x0ff97) AM_DEVREADWRITE8("z80pio_0", z80pio_device, read_alt, write_alt, 0xff) //"z80pio_0", + AM_RANGE(0x0ff98, 0x0ff9f) AM_DEVREADWRITE8("z80pio_1", z80pio_device, read_alt, write_alt, 0xff) //"z80pio_1", + AM_RANGE(0x0ffa0, 0x0ffa7) AM_DEVREADWRITE8("z80pio_2", z80pio_device, read_alt, write_alt, 0xff) //"z80pio_2", + AM_RANGE(0x0ffa8, 0x0ffaf) AM_DEVREADWRITE8("z80ctc_0", z80ctc_device, read, write, 0xff) //"z80ctc_0", + AM_RANGE(0x0ffb0, 0x0ffb7) AM_DEVREADWRITE8("z80ctc_1", z80ctc_device, read, write, 0xff) //"z80ctc_1", // AM_RANGE(0x0ffc0, 0x0ffc1) // SCR // AM_RANGE(0x0ffc8, 0x0ffc9) // SBR // AM_RANGE(0x0ffd0, 0x0ffd1) // NBR @@ -559,39 +417,6 @@ WRITE_LINE_MEMBER( p8k_state::p8k_16_daisy_interrupt ) // this must be studied a little bit more :-) } -/* Z80 SIO 0 */ - -WRITE16_MEMBER( p8k_state::pk8_16_sio_0_serial_transmit ) -{ -// send character to terminal -} - -static const z80sio_interface p8k_16_sio_0_intf = -{ - DEVCB_DRIVER_LINE_MEMBER(p8k_state, p8k_16_daisy_interrupt), /* interrupt handler */ - DEVCB_NULL, /* DTR changed handler */ - DEVCB_NULL, /* RTS changed handler */ - DEVCB_NULL, /* BREAK changed handler */ - DEVCB_DRIVER_MEMBER16(p8k_state, pk8_16_sio_0_serial_transmit), /* transmit handler */ - DEVCB_NULL /* receive handler */ -}; - -/* Z80 SIO 1 */ - -WRITE16_MEMBER( p8k_state::pk8_16_sio_1_serial_transmit ) -{ -// send character to terminal -} - -static const z80sio_interface p8k_16_sio_1_intf = -{ - DEVCB_DRIVER_LINE_MEMBER(p8k_state, p8k_16_daisy_interrupt), /* interrupt handler */ - DEVCB_NULL, /* DTR changed handler */ - DEVCB_NULL, /* RTS changed handler */ - DEVCB_NULL, /* BREAK changed handler */ - DEVCB_DRIVER_MEMBER16(p8k_state, pk8_16_sio_1_serial_transmit), /* transmit handler */ - DEVCB_NULL /* receive handler */ -}; /* Z80 Daisy Chain */ @@ -665,8 +490,10 @@ static MACHINE_CONFIG_START( p8k, p8k_state ) // Baud Gen 0, Baud Gen 1, Baud Gen 2, MCFG_Z80CTC_INTR_CB(INPUTLINE("maincpu", INPUT_LINE_IRQ0)) - MCFG_Z80SIO_ADD("z80sio_0", 9600, p8k_sio_0_intf) /* 9.6kBaud default */ - MCFG_Z80SIO_ADD("z80sio_1", 9600, p8k_sio_1_intf) /* 9.6kBaud default */ + MCFG_Z80SIO0_ADD("z80sio_0", XTAL_4MHz, 0, 0, 0, 0) + MCFG_Z80DART_OUT_INT_CB(INPUTLINE("maincpu", INPUT_LINE_IRQ0)) + MCFG_Z80SIO0_ADD("z80sio_1", XTAL_4MHz, 0, 0, 0, 0) + MCFG_Z80DART_OUT_INT_CB(INPUTLINE("maincpu", INPUT_LINE_IRQ0)) MCFG_DEVICE_ADD("z80pio_0", Z80PIO, 1229000) MCFG_Z80PIO_OUT_INT_CB(INPUTLINE("maincpu", INPUT_LINE_IRQ0)) @@ -710,8 +537,10 @@ static MACHINE_CONFIG_START( p8k_16, p8k_state ) MCFG_DEVICE_ADD("z80ctc_1", Z80CTC, XTAL_4MHz) MCFG_Z80CTC_INTR_CB(WRITELINE(p8k_state, p8k_16_daisy_interrupt)) - MCFG_Z80SIO_ADD("z80sio_0", 9600, p8k_16_sio_0_intf) - MCFG_Z80SIO_ADD("z80sio_1", 9600, p8k_16_sio_1_intf) + MCFG_Z80SIO0_ADD("z80sio_0", XTAL_4MHz, 0, 0, 0, 0) + MCFG_Z80DART_OUT_INT_CB(INPUTLINE("maincpu", INPUT_LINE_IRQ0)) + MCFG_Z80SIO0_ADD("z80sio_1", XTAL_4MHz, 0, 0, 0, 0) + MCFG_Z80DART_OUT_INT_CB(INPUTLINE("maincpu", INPUT_LINE_IRQ0)) MCFG_DEVICE_ADD("z80pio_0", Z80PIO, XTAL_4MHz) MCFG_Z80PIO_OUT_INT_CB(WRITELINE(p8k_state, p8k_16_daisy_interrupt)) diff --git a/src/mess/includes/kaypro.h b/src/mess/includes/kaypro.h index 9777585065c..3df7b63a470 100644 --- a/src/mess/includes/kaypro.h +++ b/src/mess/includes/kaypro.h @@ -90,8 +90,8 @@ private: required_device m_maincpu; optional_device m_pio_g; optional_device m_pio_s; - required_device m_sio; - optional_device m_sio2x; + required_device m_sio; + optional_device m_sio2x; required_device m_centronics; required_device m_fdc; required_device m_floppy0;