diff --git a/src/emu/machine/com8116.c b/src/emu/machine/com8116.c index a71f605e93d..d2a9c0aa171 100644 --- a/src/emu/machine/com8116.c +++ b/src/emu/machine/com8116.c @@ -7,7 +7,6 @@ **********************************************************************/ -#include "emu.h" #include "com8116.h" @@ -21,45 +20,41 @@ //************************************************************************** -// LIVE DEVICE +// DEVICE DEFINITIONS //************************************************************************** // device type definition const device_type COM8116 = &device_creator; + +const int com8116_device::divisors_16X_5_0688MHz[] = + { 6336, 4224, 2880, 2355, 2112, 1056, 528, 264, 176, 158, 132, 88, 66, 44, 33, 16 }; + +const int com8116_device::divisors_16X_4_9152MHz[] = + { 6144, 4096, 2793, 2284, 2048, 1024, 512, 256, 171, 154, 128, 85, 64, 43, 32, 16 }; + +const int com8116_device::divisors_32X_5_0688MHz[] = + { 3168, 2112, 1440, 1177, 1056, 792, 528, 264, 132, 88, 66, 44, 33, 22, 16, 8 }; + + + +//************************************************************************** +// LIVE DEVICE +//************************************************************************** + //------------------------------------------------- // com8116_device - constructor //------------------------------------------------- com8116_device::com8116_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock) - : device_t(mconfig, COM8116, "COM8116", tag, owner, clock) + : device_t(mconfig, COM8116, "COM8116", tag, owner, clock), + m_write_fx4(*this), + m_write_fr(*this), + m_write_ft(*this) { } -//------------------------------------------------- -// device_config_complete - perform any -// operations now that the configuration is -// complete -//------------------------------------------------- - -void com8116_device::device_config_complete() -{ - // inherit a copy of the static data - const com8116_interface *intf = reinterpret_cast(static_config()); - if (intf != NULL) - *static_cast(this) = *intf; - - // or initialize to defaults if none provided - else - { - memset(&m_out_fx4_cb, 0, sizeof(m_out_fx4_cb)); - memset(&m_out_fr_cb, 0, sizeof(m_out_fr_cb)); - memset(&m_out_ft_cb, 0, sizeof(m_out_ft_cb)); - } -} - - //------------------------------------------------- // device_start - device-specific startup //------------------------------------------------- @@ -67,16 +62,19 @@ void com8116_device::device_config_complete() void com8116_device::device_start() { // resolve callbacks - m_out_fx4_func.resolve(m_out_fx4_cb, *this); - m_out_fr_func.resolve(m_out_fr_cb, *this); - m_out_ft_func.resolve(m_out_ft_cb, *this); + m_write_fx4.resolve_safe(); + m_write_fr.resolve_safe(); + m_write_ft.resolve_safe(); // allocate timers m_fx4_timer = timer_alloc(TIMER_FX4); - m_fx4_timer->adjust(attotime::zero, 0, attotime::from_hz(clock() / 4)); + m_fx4_timer->adjust(attotime::from_hz(clock() / 4), 0, attotime::from_hz(clock() / 4)); m_fr_timer = timer_alloc(TIMER_FR); m_ft_timer = timer_alloc(TIMER_FT); + m_fr_divisors = divisors_16X_5_0688MHz; + m_ft_divisors = divisors_16X_5_0688MHz; + // register for state saving save_item(NAME(m_fr)); save_item(NAME(m_ft)); @@ -103,15 +101,15 @@ void com8116_device::device_timer(emu_timer &timer, device_timer_id id, int para switch (id) { case TIMER_FX4: - m_out_fx4_func(1); + m_write_fx4(1); break; case TIMER_FR: - m_out_fr_func(1); + m_write_fr(1); break; case TIMER_FT: - m_out_ft_func(1); + m_write_ft(1); break; } } diff --git a/src/emu/machine/com8116.h b/src/emu/machine/com8116.h index c5880b7c9be..c12c8f7cb54 100644 --- a/src/emu/machine/com8116.h +++ b/src/emu/machine/com8116.h @@ -19,7 +19,6 @@ **********************************************************************/ - #pragma once #ifndef __COM8116__ @@ -33,23 +32,11 @@ // INTERFACE CONFIGURATION MACROS ///************************************************************************* -#define MCFG_COM8116_ADD(_tag, _clock, _config) \ - MCFG_DEVICE_ADD(_tag, COM8116, _clock) \ - MCFG_DEVICE_CONFIG(_config) - - -#define COM8116_INTERFACE(name) \ - const com8116_interface (name) = - - -#define COM8116_DIVISORS_16X_5_0688MHz \ - { 6336, 4224, 2880, 2355, 2112, 1056, 528, 264, 176, 158, 132, 88, 66, 44, 33, 16 } - -#define COM8116_DIVISORS_16X_4_9152MHz \ - { 6144, 4096, 2793, 2284, 2048, 1024, 512, 256, 171, 154, 128, 85, 64, 43, 32, 16 } - -#define COM8116_DIVISORS_32X_5_0688MHz \ - { 3168, 2112, 1440, 1177, 1056, 792, 528, 264, 132, 88, 66, 44, 33, 22, 16, 8 } +#define MCFG_COM8116_ADD(_tag, _clock, _fx4, _fr, _ft) \ + MCFG_DEVICE_ADD(_tag, COM8116, _clock) \ + downcast(device)->set_fx4_callback(DEVCB2_##_fx4); \ + downcast(device)->set_fr_callback(DEVCB2_##_fr); \ + downcast(device)->set_ft_callback(DEVCB2_##_ft); @@ -57,55 +44,51 @@ // TYPE DEFINITIONS ///************************************************************************* -// ======================> com8116_interface - -struct com8116_interface -{ - devcb_write_line m_out_fx4_cb; - devcb_write_line m_out_fr_cb; - devcb_write_line m_out_ft_cb; - - // receiver divisor ROM (19-bit) - UINT32 m_fr_divisors[16]; - - // transmitter divisor ROM (19-bit) - UINT32 m_ft_divisors[16]; -}; - - // ======================> com8116_device -class com8116_device : public device_t, - public com8116_interface +class com8116_device : public device_t { public: // construction/destruction com8116_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock); + template void set_fx4_callback(_fx4 fx4) { m_write_fx4.set_callback(fx4); } + template void set_fr_callback(_fr fr) { m_write_fr.set_callback(fr); } + template void set_ft_callback(_ft ft) { m_write_ft.set_callback(ft); } + void str_w(UINT8 data); DECLARE_WRITE8_MEMBER( str_w ); void stt_w(UINT8 data); DECLARE_WRITE8_MEMBER( stt_w ); + static const int divisors_16X_5_0688MHz[]; + static const int divisors_16X_4_9152MHz[]; + static const int divisors_32X_5_0688MHz[]; + protected: // device-level overrides - virtual void device_config_complete(); virtual void device_start(); virtual void device_reset(); virtual void device_timer(emu_timer &timer, device_timer_id id, int m_param, void *ptr); private: - static const device_timer_id TIMER_FX4 = 0; - static const device_timer_id TIMER_FR = 1; - static const device_timer_id TIMER_FT = 2; + enum + { + TIMER_FX4, + TIMER_FR, + TIMER_FT + }; - devcb_resolved_write_line m_out_fx4_func; - devcb_resolved_write_line m_out_fr_func; - devcb_resolved_write_line m_out_ft_func; + devcb2_write_line m_write_fx4; + devcb2_write_line m_write_fr; + devcb2_write_line m_write_ft; int m_fr; // receiver frequency int m_ft; // transmitter frequency + const int *m_fr_divisors; + const int *m_ft_divisors; + // timers emu_timer *m_fx4_timer; emu_timer *m_fr_timer; diff --git a/src/mess/drivers/kaypro.c b/src/mess/drivers/kaypro.c index 64f3dbbcc9b..b1978ac8888 100644 --- a/src/mess/drivers/kaypro.c +++ b/src/mess/drivers/kaypro.c @@ -170,23 +170,6 @@ static MC6845_INTERFACE( kaypro2x_crtc ) // downcast(device)->tx_clock_in(); //} -static COM8116_INTERFACE( kayproii_brg_intf ) -{ - DEVCB_NULL, /* fX/4 output */ - DEVCB_NULL, // DEVCB_DEVICE_LINE("z80sio", rx_tx_a_w), z80sio implementation has no clock pin - DEVCB_NULL, // DEVCB_DEVICE_LINE("z80sio", rx_tx_b_w), - COM8116_DIVISORS_16X_5_0688MHz, // receiver - COM8116_DIVISORS_16X_5_0688MHz // transmitter -}; - -static COM8116_INTERFACE( kaypro2x_brg_intf ) -{ - DEVCB_NULL, /* fX/4 output */ - DEVCB_NULL,//DEVCB_DEVICE_LINE("z80sio", rx_tx_a_w), - DEVCB_NULL,//DEVCB_DEVICE_LINE("z80sio_2x", rx_tx_a_w), - COM8116_DIVISORS_16X_5_0688MHz, // receiver - COM8116_DIVISORS_16X_5_0688MHz // transmitter -}; /*********************************************************** @@ -270,7 +253,7 @@ static MACHINE_CONFIG_START( kayproii, kaypro_state ) MCFG_QUICKLOAD_ADD("quickload", kaypro_state, kayproii, "com,cpm", 3) MCFG_FD1793_ADD("wd1793", kaypro_wd1793_interface ) MCFG_CENTRONICS_PRINTER_ADD("centronics", standard_centronics) - MCFG_COM8116_ADD("brg", XTAL_5_0688MHz, kayproii_brg_intf) // WD1943, SMC8116 + MCFG_COM8116_ADD("brg", XTAL_5_0688MHz, NULL, NULL, NULL) // WD1943, SMC8116 MCFG_Z80PIO_ADD( "z80pio_g", 2500000, kayproii_pio_g_intf ) MCFG_Z80PIO_ADD( "z80pio_s", 2500000, kayproii_pio_s_intf ) MCFG_Z80SIO_ADD( "z80sio", 4800, kaypro_sio_intf ) /* start at 300 baud */ @@ -316,7 +299,7 @@ static MACHINE_CONFIG_START( kaypro2x, kaypro_state ) MCFG_QUICKLOAD_ADD("quickload", kaypro_state, kaypro2x, "com,cpm", 3) MCFG_FD1793_ADD("wd1793", kaypro_wd1793_interface ) MCFG_CENTRONICS_PRINTER_ADD("centronics", standard_centronics) - MCFG_COM8116_ADD("brg", XTAL_5_0688MHz, kaypro2x_brg_intf) // WD1943, SMC8116 + MCFG_COM8116_ADD("brg", XTAL_5_0688MHz, NULL, NULL, NULL) // WD1943, SMC8116 MCFG_Z80SIO_ADD( "z80sio", 4800, kaypro_sio_intf ) MCFG_Z80SIO_ADD( "z80sio_2x", 4800, kaypro_sio_intf ) /* extra sio for modem and printer */ diff --git a/src/mess/drivers/ob68k1a.c b/src/mess/drivers/ob68k1a.c index bec91516ef9..dfa8a1cec45 100644 --- a/src/mess/drivers/ob68k1a.c +++ b/src/mess/drivers/ob68k1a.c @@ -255,15 +255,6 @@ WRITE_LINE_MEMBER( ob68k1a_state::rx_tx_1_w ) m_acia1->tx_clock_in(); } -static COM8116_INTERFACE( dbrg_intf ) -{ - DEVCB_NULL, /* fX/4 output */ - DEVCB_DRIVER_LINE_MEMBER(ob68k1a_state, rx_tx_0_w), - DEVCB_DRIVER_LINE_MEMBER(ob68k1a_state, rx_tx_1_w), - COM8116_DIVISORS_16X_5_0688MHz, // receiver - COM8116_DIVISORS_16X_5_0688MHz // transmitter -}; - //------------------------------------------------- // rs232_port_interface rs232a_intf @@ -356,7 +347,7 @@ static MACHINE_CONFIG_START( ob68k1a, ob68k1a_state ) MCFG_PTM6840_ADD(MC6840_TAG, ptm_intf) MCFG_ACIA6850_ADD(MC6850_0_TAG, acia0_intf) MCFG_ACIA6850_ADD(MC6850_1_TAG, acia1_intf) - MCFG_COM8116_ADD(COM8116_TAG, XTAL_5_0688MHz, dbrg_intf) + MCFG_COM8116_ADD(COM8116_TAG, XTAL_5_0688MHz, NULL, WRITELINE(ob68k1a_state, rx_tx_0_w), WRITELINE(ob68k1a_state, rx_tx_1_w)) MCFG_RS232_PORT_ADD(RS232_A_TAG, rs232a_intf, default_rs232_devices, "serial_terminal") MCFG_RS232_PORT_ADD(RS232_B_TAG, rs232b_intf, default_rs232_devices, NULL) diff --git a/src/mess/drivers/softbox.c b/src/mess/drivers/softbox.c index 3a59702c5c5..994d803a62a 100644 --- a/src/mess/drivers/softbox.c +++ b/src/mess/drivers/softbox.c @@ -4,6 +4,83 @@ http://mikenaberezny.com/hardware/pet-cbm/sse-softbox-z80-computer/ + + Using the Corvus hard disk + -------------------------- + + The SoftBox distribution disk (softbox-distrib.d80) is configured for + a CBM 8050 as CP/M drives A/B and a 10MB Corvus hard disk as drives C/D. + + Use the CHDMAN utility to create a 10MB hard disk image for the Corvus: + + $ chdman createhd -o /path/to/corvus10mb.chd -chs 358,3,20 -ss 512 + + Start the SoftBox emulator with the floppy and hard disk images mounted: + + $ mess softbox -flop1 /path/to/softbox-distrib.d80 \ + -hard1 /path/to/corvus10mb.chd + + Before the Corvus can be used under CP/M, it must be prepared + by running DIAG.COM and FORMAT.COM. + + DIAG.COM + + Enter "diag" (no arguments) at the CP/M prompt to run the Corvus diagnostics + program. This program will perform the Corvus low-level format. + + Select option 6 (Update Controller Code) at the menu. + Enter "corvb184.fmt" when prompted for the filename. + Enter "y" at the confirmation prompts. + Enter "1" for the Corvus drive number (two prompts). + After formatting is complete, it will return to the menu. + + Select option 3 (Read Controller Code Version #) at the menu. + Enter "1" for the Corvus drive number. + It should report "V18.4AP" and then return to the menu. + + Select option 9 to return to CP/M. + + FORMAT.COM + + Enter "format" (no arguments) at the CP/M prompt to run the SoftBox disk + format program. This program will perform the CP/M filesystem format. + + Enter drive letter "c" at the prompt. + Enter "y" to confirm the format. + After formatting is complete, it will prompt for a drive letter again. + + Enter drive letter "d" at the prompt. + Enter "y" to confirm the format. + After formatting is complete, it will prompt for a drive letter again. + + Press RETURN to return to CP/M. + + STAT.COM + + After all steps are completed, drives C and D should be usable from + CP/M. Each drive is one half of the Corvus 10MB disk. Running the + command "stat c: dsk:" should show 4712 kilobyte drive capacity. + Drive D should show the same information. + + + Using other Corvus hard disk sizes + ---------------------------------- + + The SoftBox supports 5, 10, and 20 MB hard disks. The distribution disk + is configured for 10 MB as explained above. To use other sizes, make + a new image with CHDMAN. See the top of src/mess/includes/corvushd.h + for the parameters for the other drives. + + After the image has been created and the SoftBox emulator started with + it mounted, the SoftBox BIOS needs to be told what size Corvus hard + disk is attached. Use the NEWSYS.COM utility to reconfigure the drive + size. When NEWSYS prompts for a source drive, enter "a" (the drive letter + of the CP/M distribution disk). Use option "d" (Disk drive assignment) + to reconfigure the Corvus size. After the change has been made, use option + "s" (Save new system) to write the configuration to the floppy (drive A) and + option "e" (Execute new system) to restart CP/M with the configuration. + DIAG.COM and FORMAT.COM can then be used to format the hard disk. + */ #include "includes/softbox.h" @@ -246,20 +323,6 @@ static I8255A_INTERFACE( ppi1_intf ) }; -//------------------------------------------------- -// COM8116_INTERFACE( dbrg_intf ) -//------------------------------------------------- - -static COM8116_INTERFACE( dbrg_intf ) -{ - DEVCB_NULL, // fX/4 - DEVCB_DEVICE_LINE_MEMBER(I8251_TAG, i8251_device, rxc_w), - DEVCB_DEVICE_LINE_MEMBER(I8251_TAG, i8251_device, txc_w), - COM8116_DIVISORS_16X_5_0688MHz, // receiver - COM8116_DIVISORS_16X_5_0688MHz // transmitter -}; - - //------------------------------------------------- // rs232_port_interface rs232_intf //------------------------------------------------- @@ -313,7 +376,7 @@ static MACHINE_CONFIG_START( softbox, softbox_state ) MCFG_I8251_ADD(I8251_TAG, usart_intf) MCFG_I8255A_ADD(I8255_0_TAG, ppi0_intf) MCFG_I8255A_ADD(I8255_1_TAG, ppi1_intf) - MCFG_COM8116_ADD(COM8116_TAG, XTAL_5_0688MHz, dbrg_intf) + MCFG_COM8116_ADD(COM8116_TAG, XTAL_5_0688MHz, NULL, DEVWRITELINE(I8251_TAG, i8251_device, rxc_w), DEVWRITELINE(I8251_TAG, i8251_device, txc_w)) MCFG_CBM_IEEE488_ADD("c8050") MCFG_HARDDISK_ADD("harddisk1") MCFG_RS232_PORT_ADD(RS232_TAG, rs232_intf, default_rs232_devices, "serial_terminal") diff --git a/src/mess/drivers/super6.c b/src/mess/drivers/super6.c index 30eb071900b..34ab137d41c 100644 --- a/src/mess/drivers/super6.c +++ b/src/mess/drivers/super6.c @@ -455,15 +455,6 @@ WRITE_LINE_MEMBER( super6_state::fr_w ) m_ctc->trg1(state); } -static COM8116_INTERFACE( brg_intf ) -{ - DEVCB_NULL, - DEVCB_DRIVER_LINE_MEMBER(super6_state, fr_w), - DEVCB_DEVICE_LINE_MEMBER(Z80DART_TAG, z80dart_device, rxtxcb_w), - COM8116_DIVISORS_16X_5_0688MHz, // receiver - COM8116_DIVISORS_16X_5_0688MHz // transmitter -}; - //------------------------------------------------- // floppy_format_type floppy_formats @@ -596,7 +587,7 @@ static MACHINE_CONFIG_START( super6, super6_state ) MCFG_Z80DMA_ADD(Z80DMA_TAG, XTAL_24MHz/6, dma_intf) MCFG_Z80PIO_ADD(Z80PIO_TAG, XTAL_24MHz/4, pio_intf) MCFG_WD2793x_ADD(WD2793_TAG, 1000000) - MCFG_COM8116_ADD(BR1945_TAG, XTAL_5_0688MHz, brg_intf) + MCFG_COM8116_ADD(BR1945_TAG, XTAL_5_0688MHz, NULL, WRITELINE(super6_state, fr_w), DEVWRITELINE(Z80DART_TAG, z80dart_device, rxtxcb_w)) MCFG_FLOPPY_DRIVE_ADD(WD2793_TAG":0", super6_floppies, "525dd", floppy_image_device::default_floppy_formats) MCFG_FLOPPY_DRIVE_ADD(WD2793_TAG":1", super6_floppies, NULL, floppy_image_device::default_floppy_formats) MCFG_RS232_PORT_ADD(RS232_A_TAG, rs232b_intf, default_rs232_devices, "serial_terminal") diff --git a/src/mess/drivers/superslave.c b/src/mess/drivers/superslave.c index b7ac6d0ede2..dd2292d2b3f 100644 --- a/src/mess/drivers/superslave.c +++ b/src/mess/drivers/superslave.c @@ -265,15 +265,6 @@ WRITE_LINE_MEMBER( superslave_state::ft_w ) m_dart1->rxtxcb_w(state); } -static COM8116_INTERFACE( dbrg_intf ) -{ - DEVCB_NULL, - DEVCB_DRIVER_LINE_MEMBER(superslave_state, fr_w), - DEVCB_DRIVER_LINE_MEMBER(superslave_state, ft_w), - COM8116_DIVISORS_16X_5_0688MHz, // receiver - COM8116_DIVISORS_16X_5_0688MHz // transmitter -}; - //------------------------------------------------- // Z80DART_INTERFACE( dart0_intf ) @@ -466,7 +457,7 @@ static MACHINE_CONFIG_START( superslave, superslave_state ) MCFG_Z80DART_ADD(Z80DART_0_TAG, XTAL_8MHz/2, dart0_intf) MCFG_Z80DART_ADD(Z80DART_1_TAG, XTAL_8MHz/2, dart1_intf) MCFG_Z80PIO_ADD(Z80PIO_TAG, XTAL_8MHz/2, pio_intf) - MCFG_COM8116_ADD(BR1941_TAG, XTAL_5_0688MHz, dbrg_intf) + MCFG_COM8116_ADD(BR1941_TAG, XTAL_5_0688MHz, NULL, WRITELINE(superslave_state, fr_w), WRITELINE(superslave_state, ft_w)) MCFG_RS232_PORT_ADD(RS232_A_TAG, rs232a_intf, default_rs232_devices, "serial_terminal") MCFG_DEVICE_CARD_DEVICE_INPUT_DEFAULTS("serial_terminal", terminal) MCFG_RS232_PORT_ADD(RS232_B_TAG, rs232b_intf, default_rs232_devices, NULL) diff --git a/src/mess/drivers/vk100.c b/src/mess/drivers/vk100.c index 7b10739481d..d35e30c88f7 100644 --- a/src/mess/drivers/vk100.c +++ b/src/mess/drivers/vk100.c @@ -1031,15 +1031,6 @@ static const rs232_port_interface rs232_intf = DEVCB_NULL }; -static COM8116_INTERFACE( dbrg_intf ) -{ - DEVCB_NULL, - DEVCB_DEVICE_LINE_MEMBER("i8251", i8251_device, rxc_w), - DEVCB_DEVICE_LINE_MEMBER("i8251", i8251_device, txc_w), - COM8116_DIVISORS_16X_5_0688MHz, // receiver - COM8116_DIVISORS_16X_5_0688MHz // transmitter -}; - static MACHINE_CONFIG_START( vk100, vk100_state ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", I8085A, XTAL_5_0688MHz) @@ -1056,7 +1047,7 @@ static MACHINE_CONFIG_START( vk100, vk100_state ) /* i8251 uart */ MCFG_I8251_ADD("i8251", i8251_intf) MCFG_RS232_PORT_ADD(RS232_TAG, rs232_intf, default_rs232_devices, NULL) - MCFG_COM8116_ADD(COM5016T_TAG, XTAL_5_0688MHz, dbrg_intf) + MCFG_COM8116_ADD(COM5016T_TAG, XTAL_5_0688MHz, NULL, DEVWRITELINE("i8251", i8251_device, rxc_w), DEVWRITELINE("i8251", i8251_device, txc_w)) MCFG_DEFAULT_LAYOUT( layout_vk100 ) diff --git a/src/mess/drivers/vt100.c b/src/mess/drivers/vt100.c index 31d2c6a68cf..8b96385eaaf 100644 --- a/src/mess/drivers/vt100.c +++ b/src/mess/drivers/vt100.c @@ -428,15 +428,6 @@ static const rs232_port_interface rs232_intf = DEVCB_NULL }; -static COM8116_INTERFACE( dbrg_intf ) -{ - DEVCB_NULL, - DEVCB_DEVICE_LINE_MEMBER("i8251", i8251_device, rxc_w), - DEVCB_DEVICE_LINE_MEMBER("i8251", i8251_device, txc_w), - COM8116_DIVISORS_16X_5_0688MHz, // receiver - COM8116_DIVISORS_16X_5_0688MHz // transmitter -}; - static MACHINE_CONFIG_START( vt100, vt100_state ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu",I8080, XTAL_24_8832MHz / 9) @@ -465,7 +456,7 @@ static MACHINE_CONFIG_START( vt100, vt100_state ) /* i8251 uart */ MCFG_I8251_ADD("i8251", i8251_intf) MCFG_RS232_PORT_ADD(RS232_TAG, rs232_intf, default_rs232_devices, NULL) - MCFG_COM8116_ADD(COM5016T_TAG, XTAL_5_0688MHz, dbrg_intf) + MCFG_COM8116_ADD(COM5016T_TAG, XTAL_5_0688MHz, NULL, DEVWRITELINE("i8251", i8251_device, rxc_w), DEVWRITELINE("i8251", i8251_device, txc_w)) /* audio hardware */ diff --git a/src/mess/drivers/xerox820.c b/src/mess/drivers/xerox820.c index 63774763404..dc3227ace95 100644 --- a/src/mess/drivers/xerox820.c +++ b/src/mess/drivers/xerox820.c @@ -502,20 +502,6 @@ WRITE_LINE_MEMBER( xerox820_state::fr_w ) m_sio->txca_w(state); } -WRITE_LINE_MEMBER( xerox820_state::ft_w ) -{ - m_sio->rxtxcb_w(state); -} - -static COM8116_INTERFACE( com8116_intf ) -{ - DEVCB_NULL, /* fX/4 output */ - DEVCB_DRIVER_LINE_MEMBER(xerox820_state, fr_w), - DEVCB_DRIVER_LINE_MEMBER(xerox820_state, ft_w), - COM8116_DIVISORS_16X_5_0688MHz, // receiver - COM8116_DIVISORS_16X_5_0688MHz // transmitter -}; - WRITE8_MEMBER( xerox820_state::kbd_w ) { m_keydata = ~data; @@ -738,7 +724,7 @@ static MACHINE_CONFIG_START( xerox820, xerox820_state ) MCFG_FD1771x_ADD(FD1771_TAG, XTAL_20MHz/20) MCFG_FLOPPY_DRIVE_ADD(FD1771_TAG":0", xerox820_floppies, "sa400", floppy_image_device::default_floppy_formats) MCFG_FLOPPY_DRIVE_ADD(FD1771_TAG":1", xerox820_floppies, "sa400", floppy_image_device::default_floppy_formats) - MCFG_COM8116_ADD(COM8116_TAG, XTAL_5_0688MHz, com8116_intf) + MCFG_COM8116_ADD(COM8116_TAG, XTAL_5_0688MHz, NULL, WRITELINE(xerox820_state, fr_w), DEVWRITELINE(Z80SIO_TAG, z80dart_device, rxtxcb_w)) MCFG_RS232_PORT_ADD(RS232_A_TAG, rs232a_intf, default_rs232_devices, NULL) MCFG_RS232_PORT_ADD(RS232_B_TAG, rs232b_intf, default_rs232_devices, NULL) MCFG_ASCII_KEYBOARD_ADD(KEYBOARD_TAG, keyboard_intf) @@ -786,7 +772,7 @@ static MACHINE_CONFIG_START( xerox820ii, xerox820ii_state ) MCFG_FD1797x_ADD(FD1797_TAG, XTAL_16MHz/8) MCFG_FLOPPY_DRIVE_ADD(FD1797_TAG":0", xerox820_floppies, "sa450", floppy_image_device::default_floppy_formats) MCFG_FLOPPY_DRIVE_ADD(FD1797_TAG":1", xerox820_floppies, "sa450", floppy_image_device::default_floppy_formats) - MCFG_COM8116_ADD(COM8116_TAG, XTAL_5_0688MHz, com8116_intf) + MCFG_COM8116_ADD(COM8116_TAG, XTAL_5_0688MHz, NULL, WRITELINE(xerox820_state, fr_w), DEVWRITELINE(Z80SIO_TAG, z80dart_device, rxtxcb_w)) MCFG_RS232_PORT_ADD(RS232_A_TAG, rs232a_intf, default_rs232_devices, NULL) MCFG_RS232_PORT_ADD(RS232_B_TAG, rs232b_intf, default_rs232_devices, NULL) MCFG_ASCII_KEYBOARD_ADD(KEYBOARD_TAG, keyboard_intf) diff --git a/src/mess/drivers/xor100.c b/src/mess/drivers/xor100.c index f4ec87222c3..f830028589d 100644 --- a/src/mess/drivers/xor100.c +++ b/src/mess/drivers/xor100.c @@ -367,15 +367,6 @@ WRITE_LINE_MEMBER( xor100_state::com5016_ft_w ) m_uart_b->receive_clock(); } -static COM8116_INTERFACE( com5016_intf ) -{ - DEVCB_NULL, /* fX/4 output */ - DEVCB_DRIVER_LINE_MEMBER(xor100_state, com5016_fr_w), /* fR output */ - DEVCB_DRIVER_LINE_MEMBER(xor100_state, com5016_ft_w), /* fT output */ - COM8116_DIVISORS_16X_5_0688MHz, // receiver - COM8116_DIVISORS_16X_5_0688MHz // transmitter -}; - /* Printer 8251A Interface */ static const i8251_interface printer_8251_intf = @@ -604,7 +595,7 @@ static MACHINE_CONFIG_START( xor100, xor100_state ) MCFG_I8251_ADD(I8251_B_TAG, /*XTAL_8MHz/2,*/ terminal_8251_intf) MCFG_I8255A_ADD(I8255A_TAG, printer_8255_intf) MCFG_Z80CTC_ADD(Z80CTC_TAG, XTAL_8MHz/2, ctc_intf) - MCFG_COM8116_ADD(COM5016_TAG, XTAL_5_0688MHz, com5016_intf) + MCFG_COM8116_ADD(COM5016_TAG, XTAL_5_0688MHz, NULL, WRITELINE(xor100_state, com5016_fr_w), WRITELINE(xor100_state, com5016_ft_w)) MCFG_FD1795x_ADD(WD1795_TAG, XTAL_8MHz/4) MCFG_FLOPPY_DRIVE_ADD(WD1795_TAG":0", xor100_floppies, "8ssdd", floppy_image_device::default_floppy_formats) MCFG_FLOPPY_DRIVE_ADD(WD1795_TAG":1", xor100_floppies, "8ssdd", floppy_image_device::default_floppy_formats) diff --git a/src/mess/machine/s100_dj2db.c b/src/mess/machine/s100_dj2db.c index c4dd3149ee4..4e48b394822 100644 --- a/src/mess/machine/s100_dj2db.c +++ b/src/mess/machine/s100_dj2db.c @@ -64,14 +64,10 @@ const rom_entry *s100_dj2db_device::device_rom_region() const // COM8116_INTERFACE( brg_intf ) //------------------------------------------------- -static COM8116_INTERFACE( brg_intf ) +WRITE_LINE_MEMBER( s100_dj2db_device::fr_w ) { - DEVCB_NULL, - DEVCB_NULL, // S1602 RRC/TRC - DEVCB_NULL, - COM8116_DIVISORS_16X_5_0688MHz, // receiver - COM8116_DIVISORS_16X_5_0688MHz // transmitter -}; + // S1602 RRC/TRC +} //------------------------------------------------- @@ -111,7 +107,7 @@ void s100_dj2db_device::fdc_drq_w(bool state) //------------------------------------------------- static MACHINE_CONFIG_FRAGMENT( s100_dj2db ) - MCFG_COM8116_ADD(BR1941_TAG, XTAL_5_0688MHz, brg_intf) + MCFG_COM8116_ADD(BR1941_TAG, XTAL_5_0688MHz, NULL, DEVWRITELINE(DEVICE_SELF_OWNER, s100_dj2db_device, fr_w), NULL) MCFG_MB8866x_ADD(MB8866_TAG, XTAL_10MHz/5) MCFG_FLOPPY_DRIVE_ADD(MB8866_TAG":0", s100_dj2db_floppies, "8dsdd", floppy_image_device::default_floppy_formats) diff --git a/src/mess/machine/s100_dj2db.h b/src/mess/machine/s100_dj2db.h index de74e06dccb..69cc00231ce 100644 --- a/src/mess/machine/s100_dj2db.h +++ b/src/mess/machine/s100_dj2db.h @@ -39,6 +39,7 @@ public: virtual ioport_constructor device_input_ports() const; // not really public + DECLARE_WRITE_LINE_MEMBER( fr_w ); void fdc_intrq_w(bool state); void fdc_drq_w(bool state); diff --git a/src/mess/machine/softbox.c b/src/mess/machine/softbox.c index a225fce80b9..e7ea9d1b933 100644 --- a/src/mess/machine/softbox.c +++ b/src/mess/machine/softbox.c @@ -247,20 +247,6 @@ static I8255A_INTERFACE( ppi1_intf ) }; -//------------------------------------------------- -// COM8116_INTERFACE( dbrg_intf ) -//------------------------------------------------- - -static COM8116_INTERFACE( dbrg_intf ) -{ - DEVCB_NULL, // fX/4 - DEVCB_DEVICE_LINE_MEMBER(I8251_TAG, i8251_device, rxc_w), - DEVCB_DEVICE_LINE_MEMBER(I8251_TAG, i8251_device, txc_w), - COM8116_DIVISORS_16X_5_0688MHz, // receiver - COM8116_DIVISORS_16X_5_0688MHz // transmitter -}; - - //------------------------------------------------- // rs232_port_interface rs232_intf //------------------------------------------------- @@ -289,7 +275,7 @@ static MACHINE_CONFIG_FRAGMENT( softbox ) MCFG_I8251_ADD(I8251_TAG, usart_intf) MCFG_I8255A_ADD(I8255_0_TAG, ppi0_intf) MCFG_I8255A_ADD(I8255_1_TAG, ppi1_intf) - MCFG_COM8116_ADD(COM8116_TAG, XTAL_5_0688MHz, dbrg_intf) + MCFG_COM8116_ADD(COM8116_TAG, XTAL_5_0688MHz, NULL, DEVWRITELINE(I8251_TAG, i8251_device, rxc_w), DEVWRITELINE(I8251_TAG, i8251_device, txc_w)) MCFG_HARDDISK_ADD("harddisk1") MCFG_RS232_PORT_ADD(RS232_TAG, rs232_intf, default_rs232_devices, NULL) MACHINE_CONFIG_END