summaryrefslogtreecommitdiffstatshomepage
path: root/src/mess/machine/pf10.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/mess/machine/pf10.c')
-rw-r--r--src/mess/machine/pf10.c162
1 files changed, 162 insertions, 0 deletions
diff --git a/src/mess/machine/pf10.c b/src/mess/machine/pf10.c
new file mode 100644
index 00000000000..68d6bd0dac3
--- /dev/null
+++ b/src/mess/machine/pf10.c
@@ -0,0 +1,162 @@
+/***************************************************************************
+
+ Epson PF-10
+
+ Serial floppy drive
+
+ Skeleton driver, not working
+
+***************************************************************************/
+
+#include "emu.h"
+#include "pf10.h"
+#include "cpu/m6800/m6800.h"
+#include "machine/upd765.h"
+
+
+/***************************************************************************
+ TYPE DEFINITIONS
+***************************************************************************/
+
+typedef struct _pf10_state pf10_state;
+struct _pf10_state
+{
+ UINT8 dummy;
+};
+
+
+/*****************************************************************************
+ INLINE FUNCTIONS
+*****************************************************************************/
+
+INLINE pf10_state *get_safe_token(device_t *device)
+{
+ assert(device != NULL);
+ assert(device->type() == PF10);
+
+ return (pf10_state *)downcast<legacy_device_base *>(device)->token();
+}
+
+
+/*****************************************************************************
+ ADDRESS MAPS
+*****************************************************************************/
+
+static ADDRESS_MAP_START( pf10_mem, AS_PROGRAM, 8, pf10_device )
+ AM_RANGE(0x0040, 0x013f) AM_RAM /* internal ram */
+ AM_RANGE(0x0800, 0x0fff) AM_RAM /* external 2k ram */
+ AM_RANGE(0xe000, 0xffff) AM_ROM AM_REGION("pf10", 0)
+ADDRESS_MAP_END
+
+static ADDRESS_MAP_START( pf10_io, AS_IO, 8, pf10_device )
+ ADDRESS_MAP_UNMAP_HIGH
+ ADDRESS_MAP_GLOBAL_MASK(0xff)
+ADDRESS_MAP_END
+
+
+/*****************************************************************************
+ MACHINE CONFIG
+*****************************************************************************/
+
+static const upd765_interface pf10_upd765a_intf =
+{
+ DEVCB_NULL, /* interrupt line */
+ DEVCB_NULL,
+ NULL,
+ UPD765_RDY_PIN_NOT_CONNECTED, /* ??? */
+ {NULL, NULL, NULL, NULL}
+};
+
+static MACHINE_CONFIG_FRAGMENT( pf10 )
+ MCFG_CPU_ADD("pf10", M6803, XTAL_2_4576MHz / 4 /* ??? */) /* HD63A03 */
+ MCFG_CPU_PROGRAM_MAP(pf10_mem)
+ MCFG_CPU_IO_MAP(pf10_io)
+
+ MCFG_UPD765A_ADD("upd765a", pf10_upd765a_intf)
+MACHINE_CONFIG_END
+
+
+/***************************************************************************
+ ROM DEFINITIONS
+***************************************************************************/
+
+ROM_START( pf10 )
+ ROM_REGION(0x2000, "pf10", 0)
+ ROM_LOAD("k3pf1.bin", 0x0000, 0x2000, CRC(eef4593a) SHA1(bb176e4baf938fe58c2d32f7c46d7bb7b0627755))
+ROM_END
+
+
+/*****************************************************************************
+ DEVICE INTERFACE
+*****************************************************************************/
+
+static DEVICE_START( pf10 )
+{
+ pf10_state *pf10 = get_safe_token(device);
+
+ pf10->dummy = 0;
+}
+
+static DEVICE_RESET( pf10 )
+{
+}
+
+DEVICE_GET_INFO( pf10 )
+{
+ switch (state)
+ {
+ /* --- the following bits of info are returned as 64-bit signed integers --- */
+ case DEVINFO_INT_TOKEN_BYTES: info->i = sizeof(pf10_state); break;
+ case DEVINFO_INT_INLINE_CONFIG_BYTES: info->i = 0; break;
+
+ /* --- the following bits of info are returned as pointers --- */
+ case DEVINFO_PTR_MACHINE_CONFIG: info->machine_config = MACHINE_CONFIG_NAME(pf10); break;
+ case DEVINFO_PTR_ROM_REGION: info->romregion = ROM_NAME(pf10); break;
+
+ /* --- the following bits of info are returned as pointers to data or functions --- */
+ case DEVINFO_FCT_START: info->start = DEVICE_START_NAME(pf10); break;
+ case DEVINFO_FCT_STOP: /* Nothing */ break;
+ case DEVINFO_FCT_RESET: info->reset = DEVICE_RESET_NAME(pf10); break;
+
+ /* --- the following bits of info are returned as NULL-terminated strings --- */
+ case DEVINFO_STR_NAME: strcpy(info->s, "PF-10"); break;
+ case DEVINFO_STR_FAMILY: strcpy(info->s, "Floppy drive"); break;
+ case DEVINFO_STR_VERSION: strcpy(info->s, "1.0"); break;
+ case DEVINFO_STR_SOURCE_FILE: strcpy(info->s, __FILE__); break;
+ case DEVINFO_STR_CREDITS: strcpy(info->s, "Copyright MESS Team"); break;
+ }
+}
+
+
+/***************************************************************************
+ IMPLEMENTATION
+***************************************************************************/
+
+/* serial interface in (to the host computer) */
+READ_LINE_DEVICE_HANDLER( pf10_txd1_r )
+{
+ logerror("%s: pf10_txd1_r\n", device->machine().describe_context());
+
+ return 0;
+}
+
+WRITE_LINE_DEVICE_HANDLER( pf10_rxd1_w )
+{
+ logerror("%s: pf10_rxd1_w %u\n", device->machine().describe_context(), state);
+}
+
+
+/* serial interface out (to another floppy drive) */
+READ_LINE_DEVICE_HANDLER( pf10_txd2_r )
+{
+ logerror("%s: pf10_txd2_r\n", device->machine().describe_context());
+
+ return 0;
+}
+
+WRITE_LINE_DEVICE_HANDLER( pf10_rxd2_w )
+{
+ logerror("%s: pf10_rxd2_w %u\n", device->machine().describe_context(), state);
+}
+
+DEFINE_LEGACY_DEVICE(PF10, pf10);