(MESS) p8k : sio -> dart, and kill trampolines

kaypro : be consistent
This commit is contained in:
Robbbert 2014-04-29 16:45:45 +00:00
parent df21eba02c
commit e9314bc4ec
3 changed files with 23 additions and 194 deletions

View File

@ -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)

View File

@ -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_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_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_device>("z80ctc_0")->read(space,(offset & 0x06) >> 1);
}
WRITE16_MEMBER( p8k_state::p8k_16_ctc0_w )
{
machine().device<z80ctc_device>("z80ctc_0")->write(space, (offset & 0x06) >> 1, (UINT8)(data & 0xff));
}
READ16_MEMBER( p8k_state::p8k_16_ctc1_r )
{
return (UINT16)machine().device<z80ctc_device>("z80ctc_1")->read(space,(offset & 0x06) >> 1);
}
WRITE16_MEMBER( p8k_state::p8k_16_ctc1_w )
{
machine().device<z80ctc_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))

View File

@ -90,8 +90,8 @@ private:
required_device<cpu_device> m_maincpu;
optional_device<z80pio_device> m_pio_g;
optional_device<z80pio_device> m_pio_s;
required_device<z80dart_device> m_sio;
optional_device<z80dart_device> m_sio2x;
required_device<z80sio0_device> m_sio;
optional_device<z80sio0_device> m_sio2x;
required_device<centronics_device> m_centronics;
required_device<fd1793_t> m_fdc;
required_device<floppy_connector> m_floppy0;