1 // license:BSD-3-Clause
2 // copyright-holders:Ryan Holtz
3 #ifndef MAME_BUS_ISA_EX1280_H
4 #define MAME_BUS_ISA_EX1280_H
5 
6 #pragma once
7 
8 #include "isa.h"
9 #include "cpu/tms34010/tms34010.h"
10 #include "video/bt45x.h"
11 #include "screen.h"
12 
13 //**************************************************************************
14 //  TYPE DEFINITIONS
15 //**************************************************************************
16 
17 // ======================> isa16_ex1280_device
18 
19 class isa16_ex1280_device : public device_t,
20 	public device_isa16_card_interface
21 {
22 public:
23 	// construction/destruction
24 	isa16_ex1280_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
25 
26 	// Flag non working features
unemulated_features()27 	static constexpr feature_type unemulated_features() { return feature::GRAPHICS | feature::PALETTE; }
28 
29 protected:
30 	// device-level overrides
31 	virtual void device_start() override;
32 	virtual void device_reset() override;
33 
34 	// optional information overrides
35 	virtual void device_add_mconfig(machine_config &config) override;
36 	virtual const tiny_rom_entry *device_rom_region() const override;
37 
38 	uint16_t vram_r(offs_t offset);
39 	void vram_w(offs_t offset, uint16_t data, uint16_t mem_mask = ~0);
40 	uint16_t regs_r(offs_t offset, uint16_t mem_mask = ~0);
41 	void regs_w(offs_t offset, uint16_t data, uint16_t mem_mask = ~0);
42 	DECLARE_WRITE_LINE_MEMBER(vblank_w);
43 
44 	required_device<tms34010_device> m_cpu;
45 	required_device<bt451_device> m_ramdac;
46 	required_device<screen_device> m_screen;
47 
48 	TMS340X0_TO_SHIFTREG_CB_MEMBER(to_shiftreg);
49 	TMS340X0_FROM_SHIFTREG_CB_MEMBER(from_shiftreg);
50 	TMS340X0_SCANLINE_RGB32_CB_MEMBER(scanline_update);
51 
52 	void main_map(address_map &map);
53 
54 	std::vector<uint16_t> m_vram;
55 	uint16_t m_flags;
56 };
57 
58 
59 // device type definition
60 DECLARE_DEVICE_TYPE(ISA16_EX1280, isa16_ex1280_device)
61 
62 #endif // MAME_BUS_ISA_EX1280_H
63