summaryrefslogtreecommitdiffstatshomepage
path: root/src/mess
diff options
context:
space:
mode:
Diffstat (limited to 'src/mess')
-rw-r--r--src/mess/drivers/coco12.c17
-rw-r--r--src/mess/drivers/coco3.c13
-rw-r--r--src/mess/includes/coco.h6
-rw-r--r--src/mess/machine/coco.c18
-rw-r--r--src/mess/mess.lst1
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