diff options
author | 2013-10-20 19:50:55 +0000 | |
---|---|---|
committer | 2013-10-20 19:50:55 +0000 | |
commit | d756fa8ec44d6572cf192a4883c1d7e00e5c47cc (patch) | |
tree | d3b88aec276826c5340bc13b5ac87113da5b7eb2 /src/emu/bus/vip/byteio.h | |
parent | 25f4c260a8bdb38430151d7488e725c24d20a0e9 (diff) |
(MESS) vip: Moved expansion and byte I/O ports under emu/bus. (nw)
Diffstat (limited to 'src/emu/bus/vip/byteio.h')
-rw-r--r-- | src/emu/bus/vip/byteio.h | 136 |
1 files changed, 136 insertions, 0 deletions
diff --git a/src/emu/bus/vip/byteio.h b/src/emu/bus/vip/byteio.h new file mode 100644 index 00000000000..4fa9423f192 --- /dev/null +++ b/src/emu/bus/vip/byteio.h @@ -0,0 +1,136 @@ +// license:BSD-3-Clause +// copyright-holders:Curt Coder +/********************************************************************** + + RCA Cosmac VIP Byte Input/Output port emulation + + Copyright MESS Team. + Visit http://mamedev.org for licensing and usage restrictions. + +********************************************************************** + + A IN 0 + B IN 1 + C IN 2 + D IN 3 + E IN 4 + F IN 5 + H IN 6 + J IN 7 + K INST + L _EF4 + M OUT 0 + N OUT 1 + P OUT 2 + R OUT 3 + S OUT 4 + T OUT 5 + U OUT 6 + V OUT 7 + W Q + X _EF3 + Y +5 V + Z GND + +**********************************************************************/ + +#pragma once + +#ifndef __VIP_BYTEIO_PORT__ +#define __VIP_BYTEIO_PORT__ + +#include "emu.h" + + + +//************************************************************************** +// CONSTANTS +//************************************************************************** + +#define VIP_BYTEIO_PORT_TAG "byteio" + + + +//************************************************************************** +// INTERFACE CONFIGURATION MACROS +//************************************************************************** + +#define MCFG_VIP_BYTEIO_PORT_ADD(_tag, _slot_intf, _def_slot, _inst) \ + MCFG_DEVICE_ADD(_tag, VIP_BYTEIO_PORT, 0) \ + MCFG_DEVICE_SLOT_INTERFACE(_slot_intf, _def_slot, false) \ + downcast<vip_byteio_port_device *>(device)->set_inst_callback(DEVCB2_##_inst); + + + +//************************************************************************** +// TYPE DEFINITIONS +//************************************************************************** + +// ======================> vip_byteio_port_device + +class device_vip_byteio_port_interface; + +class vip_byteio_port_device : public device_t, + public device_slot_interface +{ +public: + // construction/destruction + vip_byteio_port_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock); + + template<class _inst> void set_inst_callback(_inst inst) { m_write_inst.set_callback(inst); } + + // computer interface + UINT8 in_r(); + void out_w(UINT8 data); + DECLARE_READ_LINE_MEMBER( ef3_r ); + DECLARE_READ_LINE_MEMBER( ef4_r ); + DECLARE_WRITE_LINE_MEMBER( q_w ); + + // cartridge interface + DECLARE_WRITE_LINE_MEMBER( inst_w ) { m_write_inst(state); } + +protected: + // device-level overrides + virtual void device_start(); + virtual void device_reset(); + + devcb2_write_line m_write_inst; + + device_vip_byteio_port_interface *m_cart; +}; + + +// ======================> device_vip_byteio_port_interface + +// class representing interface-specific live c64_expansion card +class device_vip_byteio_port_interface : public device_slot_card_interface +{ +public: + // construction/destruction + device_vip_byteio_port_interface(const machine_config &mconfig, device_t &device); + + virtual UINT8 vip_in_r() { return 0xff; }; + virtual void vip_out_w(UINT8 data) { }; + + virtual int vip_ef3_r() { return CLEAR_LINE; } + virtual int vip_ef4_r() { return CLEAR_LINE; } + + virtual void vip_q_w(int state) { }; + +protected: + vip_byteio_port_device *m_slot; +}; + + +// device type definition +extern const device_type VIP_BYTEIO_PORT; + + +// slot devices +#include "vp620.h" + +SLOT_INTERFACE_EXTERN( vip_byteio_cards ); + + + +#endif |