1 // license:BSD-3-Clause
2 // copyright-holders:Curt Coder
3 #ifndef MAME_INCLUDES_SUPER6_H
4 #define MAME_INCLUDES_SUPER6_H
5 
6 #pragma once
7 
8 #include "cpu/z80/z80.h"
9 #include "imagedev/floppy.h"
10 #include "machine/z80daisy.h"
11 #include "machine/com8116.h"
12 #include "machine/ram.h"
13 #include "machine/wd_fdc.h"
14 #include "machine/z80ctc.h"
15 #include "machine/z80dma.h"
16 #include "machine/z80pio.h"
17 #include "machine/z80sio.h"
18 
19 #define Z80_TAG         "u30"
20 #define Z80CTC_TAG      "u20"
21 #define Z80DART_TAG     "u38"
22 #define Z80DMA_TAG      "u21"
23 #define Z80PIO_TAG      "u7"
24 #define WD2793_TAG      "u27"
25 #define BR1945_TAG      "u31"
26 #define SCREEN_TAG      "screen"
27 #define RS232_A_TAG     "rs232a"
28 #define RS232_B_TAG     "rs232b"
29 
30 class super6_state : public driver_device
31 {
32 public:
super6_state(const machine_config & mconfig,device_type type,const char * tag)33 	super6_state(const machine_config &mconfig, device_type type, const char *tag)
34 		: driver_device(mconfig, type, tag)
35 		, m_maincpu(*this, Z80_TAG)
36 		, m_ctc(*this, Z80CTC_TAG)
37 		, m_dart(*this, Z80DART_TAG)
38 		, m_dma(*this, Z80DMA_TAG)
39 		, m_pio(*this, Z80PIO_TAG)
40 		, m_fdc(*this, WD2793_TAG)
41 		, m_brg(*this, BR1945_TAG)
42 		, m_ram(*this, RAM_TAG)
43 		, m_floppy0(*this, WD2793_TAG":0")
44 		, m_floppy1(*this, WD2793_TAG":1")
45 		, m_rom(*this, Z80_TAG)
46 		, m_j7(*this, "J7")
47 	{ }
48 
49 	void super6(machine_config &config);
50 
51 private:
52 	virtual void machine_start() override;
53 	virtual void machine_reset() override;
54 
55 	uint8_t fdc_r();
56 	void fdc_w(uint8_t data);
57 	void s100_w(uint8_t data);
58 	void bank0_w(uint8_t data);
59 	void bank1_w(uint8_t data);
60 	DECLARE_WRITE_LINE_MEMBER( fdc_intrq_w );
61 	DECLARE_WRITE_LINE_MEMBER( fdc_drq_w );
62 	uint8_t memory_read_byte(offs_t offset);
63 	void memory_write_byte(offs_t offset, uint8_t data);
64 	uint8_t io_read_byte(offs_t offset);
65 	void io_write_byte(offs_t offset, uint8_t data);
66 
67 	void super6_io(address_map &map);
68 	void super6_mem(address_map &map);
69 
70 	void bankswitch();
71 
72 	required_device<z80_device> m_maincpu;
73 	required_device<z80ctc_device> m_ctc;
74 	required_device<z80dart_device> m_dart;
75 	required_device<z80dma_device> m_dma;
76 	required_device<z80pio_device> m_pio;
77 	required_device<wd2793_device> m_fdc;
78 	required_device<com8116_device> m_brg;
79 	required_device<ram_device> m_ram;
80 	required_device<floppy_connector> m_floppy0;
81 	required_device<floppy_connector> m_floppy1;
82 	required_region_ptr<uint8_t> m_rom;
83 	required_ioport m_j7;
84 
85 	// memory state
86 	uint8_t m_s100;
87 	uint8_t m_bank0;
88 	uint8_t m_bank1;
89 };
90 
91 #endif // MAME_INCLUDES_SUPER6_H
92