diff options
Diffstat (limited to 'src/mess')
-rw-r--r-- | src/mess/drivers/coco12.c | 17 | ||||
-rw-r--r-- | src/mess/drivers/coco3.c | 13 | ||||
-rw-r--r-- | src/mess/includes/coco.h | 6 | ||||
-rw-r--r-- | src/mess/machine/coco.c | 18 | ||||
-rw-r--r-- | src/mess/mess.lst | 1 |
5 files changed, 47 insertions, 8 deletions
diff --git a/src/mess/drivers/coco12.c b/src/mess/drivers/coco12.c index 0463c34c32b..186e1e61f56 100644 --- a/src/mess/drivers/coco12.c +++ b/src/mess/drivers/coco12.c @@ -29,6 +29,7 @@ #include "bus/coco/coco_pak.h" #include "bus/coco/coco_fdc.h" #include "bus/coco/coco_multi.h" +#include "bus/coco/coco_dwsock.h" #include "formats/coco_cas.h" //************************************************************************** @@ -114,6 +115,17 @@ INPUT_PORTS_END //------------------------------------------------- +// INPUT_PORTS( coco_beckerport ) +//------------------------------------------------- + +INPUT_PORTS_START( coco_beckerport ) + PORT_START(BECKERPORT_TAG) + PORT_CONFNAME( 0x01, 0x01, "Becker Port" ) + PORT_CONFSETTING( 0x00, DEF_STR( Off )) + PORT_CONFSETTING( 0x01, DEF_STR( On )) +INPUT_PORTS_END + +//------------------------------------------------- // INPUT_PORTS( coco_rtc ) //------------------------------------------------- @@ -223,6 +235,7 @@ static INPUT_PORTS_START( coco ) PORT_INCLUDE( coco_analog_control ) PORT_INCLUDE( coco_cart_autostart ) PORT_INCLUDE( coco_rtc ) + PORT_INCLUDE( coco_beckerport ) INPUT_PORTS_END @@ -238,6 +251,7 @@ INPUT_PORTS_END SLOT_INTERFACE_START( coco_cart ) SLOT_INTERFACE("fdc", COCO_FDC) SLOT_INTERFACE("fdcv11", COCO_FDC_V11) + SLOT_INTERFACE("cc3hdb1", COCO3_HDB1) SLOT_INTERFACE("cp400_fdc", CP400_FDC) SLOT_INTERFACE("rs232", COCO_232) SLOT_INTERFACE("orch90", COCO_ORCH90) @@ -300,6 +314,9 @@ static MACHINE_CONFIG_START( coco, coco12_state ) MCFG_SAM6883_ADD(SAM_TAG, XTAL_3_579545MHz, MAINCPU_TAG, AS_PROGRAM) MCFG_SAM6883_RES_CALLBACK(READ8(coco12_state, sam_read)) + // Becker Port device + MCFG_DEVICE_ADD(DWSOCK_TAG, COCO_DWSOCK, 0) + MCFG_CASSETTE_ADD("cassette") MCFG_CASSETTE_FORMATS(coco_cassette_formats) MCFG_CASSETTE_DEFAULT_STATE(CASSETTE_PLAY | CASSETTE_MOTOR_DISABLED | CASSETTE_SPEAKER_MUTED) diff --git a/src/mess/drivers/coco3.c b/src/mess/drivers/coco3.c index 9e8ec4ec562..2a09775ebe6 100644 --- a/src/mess/drivers/coco3.c +++ b/src/mess/drivers/coco3.c @@ -222,6 +222,7 @@ static INPUT_PORTS_START( coco3 ) PORT_INCLUDE( coco_rat_mouse ) PORT_INCLUDE( coco_lightgun ) PORT_INCLUDE( coco_rtc ) + PORT_INCLUDE( coco_beckerport ) INPUT_PORTS_END static DEVICE_INPUT_DEFAULTS_START( printer ) @@ -261,6 +262,9 @@ static MACHINE_CONFIG_START( coco3, coco3_state ) MCFG_PIA_IRQA_HANDLER(WRITELINE(coco_state, pia1_firq_a)) MCFG_PIA_IRQB_HANDLER(WRITELINE(coco_state, pia1_firq_b)) + // Becker Port device + MCFG_DEVICE_ADD(DWSOCK_TAG, COCO_DWSOCK, 0) + MCFG_CASSETTE_ADD("cassette") MCFG_CASSETTE_FORMATS(coco_cassette_formats) MCFG_CASSETTE_DEFAULT_STATE(CASSETTE_PLAY | CASSETTE_MOTOR_DISABLED | CASSETTE_SPEAKER_MUTED) @@ -337,7 +341,10 @@ static MACHINE_CONFIG_DERIVED( coco3h, coco3 ) MCFG_CPU_PROGRAM_MAP(coco3_mem) MACHINE_CONFIG_END - +static MACHINE_CONFIG_DERIVED( coco3dw1, coco3 ) + MCFG_COCO_CARTRIDGE_REMOVE(CARTRIDGE_TAG) + MCFG_COCO_CARTRIDGE_ADD(CARTRIDGE_TAG, coco_cart, "cc3hdb1") +MACHINE_CONFIG_END //************************************************************************** // ROMS @@ -354,8 +361,7 @@ ROM_START(coco3p) ROM_END #define rom_coco3h rom_coco3 - - +#define rom_coco3dw1 rom_coco3 //************************************************************************** // SYSTEM DRIVERS @@ -364,3 +370,4 @@ ROM_END COMP( 1986, coco3, coco, 0, coco3, coco3, driver_device, 0, "Tandy Radio Shack", "Color Computer 3 (NTSC)", 0) COMP( 1986, coco3p, coco, 0, coco3p, coco3, driver_device, 0, "Tandy Radio Shack", "Color Computer 3 (PAL)", 0) COMP( 19??, coco3h, coco, 0, coco3h, coco3, driver_device, 0, "Tandy Radio Shack", "Color Computer 3 (NTSC; HD6309)", GAME_UNOFFICIAL) +COMP( 19??, coco3dw1, coco, 0, coco3dw1, coco3, driver_device, 0, "Tandy Radio Shack", "Color Computer 3 (NTSC; HDB-DOS)", GAME_UNOFFICIAL) diff --git a/src/mess/includes/coco.h b/src/mess/includes/coco.h index 74bef719fa5..b3ee9bec11a 100644 --- a/src/mess/includes/coco.h +++ b/src/mess/includes/coco.h @@ -18,6 +18,7 @@ #include "machine/6821pia.h" #include "bus/coco/cococart.h" #include "machine/coco_vhd.h" +#include "bus/coco/coco_dwsock.h" #include "machine/ram.h" #include "sound/dac.h" #include "sound/wave.h" @@ -31,6 +32,7 @@ INPUT_PORTS_EXTERN( coco_analog_control ); INPUT_PORTS_EXTERN( coco_cart_autostart ); INPUT_PORTS_EXTERN( coco_rtc ); +INPUT_PORTS_EXTERN( coco_beckerport ); SLOT_INTERFACE_EXTERN( coco_cart ); @@ -48,6 +50,7 @@ SLOT_INTERFACE_EXTERN( coco_cart ); #define DAC_TAG "dac" #define CARTRIDGE_TAG "ext" #define RS232_TAG "rs232" +#define DWSOCK_TAG "dwsock" #define VHD0_TAG "vhd0" #define VHD1_TAG "vhd1" @@ -55,6 +58,7 @@ SLOT_INTERFACE_EXTERN( coco_cart ); #define CTRL_SEL_TAG "ctrl_sel" #define HIRES_INTF_TAG "hires_intf" #define CART_AUTOSTART_TAG "cart_autostart" +#define BECKERPORT_TAG "beckerport" #define JOYSTICK_RX_TAG "joystick_rx" #define JOYSTICK_RY_TAG "joystick_ry" #define JOYSTICK_LX_TAG "joystick_lx" @@ -95,6 +99,8 @@ public: optional_device<rs232_port_device> m_rs232; optional_device<coco_vhd_image_device> m_vhd_0; optional_device<coco_vhd_image_device> m_vhd_1; + required_device<beckerport_device> m_beckerport; + required_ioport m_beckerportconfig; // driver update handlers DECLARE_INPUT_CHANGED_MEMBER(keyboard_changed); diff --git a/src/mess/machine/coco.c b/src/mess/machine/coco.c index 0f215d22ea0..2cedfd7b43c 100644 --- a/src/mess/machine/coco.c +++ b/src/mess/machine/coco.c @@ -89,7 +89,9 @@ coco_state::coco_state(const machine_config &mconfig, device_type type, const ch m_cassette(*this, "cassette"), m_rs232(*this, RS232_TAG), m_vhd_0(*this, VHD0_TAG), - m_vhd_1(*this, VHD1_TAG) + m_vhd_1(*this, VHD1_TAG), + m_beckerport(*this, DWSOCK_TAG), + m_beckerportconfig(*this, BECKERPORT_TAG) { } @@ -1016,8 +1018,6 @@ INPUT_CHANGED_MEMBER(coco_state::joystick_mode_changed) poll_keyboard(); } - - //------------------------------------------------- // poll_hires_joystick //------------------------------------------------- @@ -1159,6 +1159,11 @@ WRITE8_MEMBER( coco_state::ff60_write ) READ8_MEMBER( coco_state::ff40_read ) { + if (offset >= 1 && offset <= 2 && m_beckerportconfig->read_safe(0) == 1) + { + return m_beckerport->read(space, offset-1, mem_mask); + } + return m_cococart->read(space, offset, mem_mask); } @@ -1170,6 +1175,11 @@ READ8_MEMBER( coco_state::ff40_read ) WRITE8_MEMBER( coco_state::ff40_write ) { + if (offset >= 1 && offset <= 2 && m_beckerportconfig->read_safe(0) == 1) + { + return m_beckerport->write(space, offset-1, data, mem_mask); + } + m_cococart->write(space, offset, data, mem_mask); } @@ -1184,8 +1194,6 @@ void coco_state::cart_w(bool state) m_pia_1->cb1_w(state); } - - /*************************************************************************** DISASSEMBLY OVERRIDE (OS9 syscalls) ***************************************************************************/ diff --git a/src/mess/mess.lst b/src/mess/mess.lst index 3ca355a94ce..de139bf8596 100644 --- a/src/mess/mess.lst +++ b/src/mess/mess.lst @@ -1213,6 +1213,7 @@ coco2b // Color Computer 2B (uses M6847T1 video chip) coco3 // Color Computer 3 (NTSC) coco3p // Color Computer 3 (PAL) coco3h // Hacked Color Computer 3 (6309) +coco3dw1 // Coco 3 with HDB-DOS dragon32 // Dragon 32 dragon64 // Dragon 64 dragon200 // Dragon 200 |