1 // license:BSD-3-Clause
2 // copyright-holders:Curt Coder, smf
3 /**********************************************************************
4 
5     geoCable Centronics Cable emulation
6 
7 **********************************************************************/
8 
9 #ifndef MAME_BUS_C64_GEOCABLE_H
10 #define MAME_BUS_C64_GEOCABLE_H
11 
12 #pragma once
13 
14 
15 #include "user.h"
16 #include "bus/centronics/ctronics.h"
17 
18 
19 
20 //**************************************************************************
21 //  TYPE DEFINITIONS
22 //**************************************************************************
23 
24 // ======================> c64_geocable_device
25 
26 class c64_geocable_device : public device_t, public device_pet_user_port_interface
27 {
28 public:
29 	// construction/destruction
30 	c64_geocable_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
31 
32 protected:
33 	// device-level overrides
34 	virtual void device_start() override;
35 
36 	// optional information overrides
37 	virtual void device_add_mconfig(machine_config &config) override;
38 
39 	// device_pet_user_port_interface overrides
DECLARE_WRITE_LINE_MEMBER(input_c)40 	virtual DECLARE_WRITE_LINE_MEMBER(input_c) override { m_centronics->write_data0(state); }
DECLARE_WRITE_LINE_MEMBER(input_d)41 	virtual DECLARE_WRITE_LINE_MEMBER(input_d) override { m_centronics->write_data1(state); }
DECLARE_WRITE_LINE_MEMBER(input_e)42 	virtual DECLARE_WRITE_LINE_MEMBER(input_e) override { m_centronics->write_data2(state); }
DECLARE_WRITE_LINE_MEMBER(input_f)43 	virtual DECLARE_WRITE_LINE_MEMBER(input_f) override { m_centronics->write_data3(state); }
DECLARE_WRITE_LINE_MEMBER(input_h)44 	virtual DECLARE_WRITE_LINE_MEMBER(input_h) override { m_centronics->write_data4(state); }
DECLARE_WRITE_LINE_MEMBER(input_j)45 	virtual DECLARE_WRITE_LINE_MEMBER(input_j) override { m_centronics->write_data5(state); }
DECLARE_WRITE_LINE_MEMBER(input_k)46 	virtual DECLARE_WRITE_LINE_MEMBER(input_k) override { m_centronics->write_data6(state); }
DECLARE_WRITE_LINE_MEMBER(input_l)47 	virtual DECLARE_WRITE_LINE_MEMBER(input_l) override { m_centronics->write_data7(state); }
DECLARE_WRITE_LINE_MEMBER(input_m)48 	virtual DECLARE_WRITE_LINE_MEMBER(input_m) override { m_centronics->write_strobe(state); }
49 
50 private:
51 	required_device<centronics_device> m_centronics;
52 };
53 
54 
55 // device type definition
56 DECLARE_DEVICE_TYPE(C64_GEOCABLE, c64_geocable_device)
57 
58 
59 #endif // MAME_BUS_C64_GEOCABLE_H
60