1 // license:BSD-3-Clause
2 // copyright-holders:Curt Coder
3 #ifndef MAME_INCLUDES_PROF180X_H
4 #define MAME_INCLUDES_PROF180X_H
5 
6 #pragma once
7 
8 #include "bus/centronics/ctronics.h"
9 
10 #define HD64180_TAG             "hd64180"
11 #define FDC9268_TAG             "fdc9268"
12 #define FDC9229_TAG             "fdc9229"
13 #define MK3835_TAG              "mk3835"
14 #define SCREEN_TAG              "screen"
15 #define CENTRONICS_TAG          "centronics"
16 
17 class prof180x_state : public driver_device
18 {
19 public:
prof180x_state(const machine_config & mconfig,device_type type,const char * tag)20 	prof180x_state(const machine_config &mconfig, device_type type, const char *tag)
21 		: driver_device(mconfig, type, tag)
22 		, m_centronics(*this, CENTRONICS_TAG)
23 	{
24 	}
25 
26 	void prof180x(machine_config &config);
27 
28 private:
29 	required_device<centronics_device> m_centronics;
30 
31 	virtual void machine_start() override;
32 	virtual void machine_reset() override;
33 
34 	uint8_t read(offs_t offset);
35 	void write(offs_t offset, uint8_t data);
36 
37 	uint8_t status0_r();
38 	uint8_t status1_r();
39 	uint8_t status_r(offs_t offset);
40 
41 	DECLARE_WRITE_LINE_MEMBER(c0_flag_w);
42 	DECLARE_WRITE_LINE_MEMBER(c1_flag_w);
43 	DECLARE_WRITE_LINE_MEMBER(c2_flag_w);
44 	DECLARE_WRITE_LINE_MEMBER(mini_flag_w);
45 	DECLARE_WRITE_LINE_MEMBER(mm0_flag_w);
46 	DECLARE_WRITE_LINE_MEMBER(rtc_ce_w);
47 	DECLARE_WRITE_LINE_MEMBER(peps_flag_w);
48 	DECLARE_WRITE_LINE_MEMBER(mm1_flag_w);
49 
50 	uint32_t screen_update(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect);
51 
52 	int m_c0;
53 	int m_c1;
54 	int m_c2;
55 	int m_mm0;
56 	int m_mm1;
57 	void prof180x_io(address_map &map);
58 	void prof180x_mem(address_map &map);
59 };
60 
61 #endif // MAME_INCLUDES_PROF180X_H
62