summaryrefslogtreecommitdiffstatshomepage
path: root/src/mess/includes/radio86.h
blob: cbd6a4c46e6e567379cf60a88926e4c35b129ce4 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
/*****************************************************************************
 *
 * includes/radio86.h
 *
 ****************************************************************************/

#ifndef radio86_H_
#define radio86_H_

#include "machine/i8255.h"
#include "machine/8257dma.h"
#include "video/i8275.h"
#include "imagedev/cassette.h"


class radio86_state : public driver_device
{
public:
	enum
	{
		TIMER_RESET
	};

	radio86_state(const machine_config &mconfig, device_type type, const char *tag)
		: driver_device(mconfig, type, tag),
		m_maincpu(*this, "maincpu"),
		m_cassette(*this, "cassette"),
		m_dma8257(*this, "dma8257"),
		m_ppi8255_1(*this, "ppi8255_1"),
		m_ppi8255_2(*this, "ppi8255_2"),
		m_region_maincpu(*this, "maincpu"),
		m_bank1(*this, "bank1"),
		m_io_line0(*this, "LINE0"),
		m_io_line1(*this, "LINE1"),
		m_io_line2(*this, "LINE2"),
		m_io_line3(*this, "LINE3"),
		m_io_line4(*this, "LINE4"),
		m_io_line5(*this, "LINE5"),
		m_io_line6(*this, "LINE6"),
		m_io_line7(*this, "LINE7"),
		m_io_line8(*this, "LINE8"),
		m_io_cline0(*this, "CLINE0"),
		m_io_cline1(*this, "CLINE1"),
		m_io_cline2(*this, "CLINE2"),
		m_io_cline3(*this, "CLINE3"),
		m_io_cline4(*this, "CLINE4"),
		m_io_cline5(*this, "CLINE5"),
		m_io_cline6(*this, "CLINE6"),
		m_io_cline7(*this, "CLINE7") { }

	virtual void video_start();

	UINT8 m_tape_value;
	UINT8 m_mikrosha_font_page;
	int m_keyboard_mask;
	UINT8* m_radio_ram_disk;
	UINT8 m_romdisk_lsb;
	UINT8 m_romdisk_msb;
	UINT8 m_disk_sel;
	const UINT8 *m_charmap;
	DECLARE_READ8_MEMBER(radio_cpu_state_r);
	DECLARE_READ8_MEMBER(radio_io_r);
	DECLARE_WRITE8_MEMBER(radio_io_w);
	DECLARE_WRITE8_MEMBER(radio86_pagesel);
	DECLARE_DRIVER_INIT(radioram);
	DECLARE_DRIVER_INIT(radio86);
	DECLARE_MACHINE_RESET(radio86);
	DECLARE_PALETTE_INIT(radio86);
	DECLARE_READ8_MEMBER(radio86_8255_portb_r2);
	DECLARE_READ8_MEMBER(radio86_8255_portc_r2);
	DECLARE_WRITE8_MEMBER(radio86_8255_porta_w2);
	DECLARE_WRITE8_MEMBER(radio86_8255_portc_w2);
	DECLARE_READ8_MEMBER(rk7007_8255_portc_r);
	DECLARE_WRITE_LINE_MEMBER(hrq_w);
	DECLARE_READ8_MEMBER(radio86_romdisk_porta_r);
	DECLARE_WRITE8_MEMBER(radio86_romdisk_portb_w);
	DECLARE_WRITE8_MEMBER(radio86_romdisk_portc_w);
	DECLARE_WRITE8_MEMBER(mikrosha_8255_font_page_w);
	DECLARE_READ8_MEMBER(memory_read_byte);
	DECLARE_WRITE8_MEMBER(memory_write_byte);
	required_device<cpu_device> m_maincpu;

protected:
	required_device<cassette_image_device> m_cassette;
	optional_device<i8257_device> m_dma8257;
	required_device<i8255_device> m_ppi8255_1;
	optional_device<i8255_device> m_ppi8255_2;
	required_memory_region m_region_maincpu;
	required_memory_bank m_bank1;
	required_ioport m_io_line0;
	required_ioport m_io_line1;
	required_ioport m_io_line2;
	required_ioport m_io_line3;
	required_ioport m_io_line4;
	required_ioport m_io_line5;
	required_ioport m_io_line6;
	required_ioport m_io_line7;
	required_ioport m_io_line8;
	optional_ioport m_io_cline0;
	optional_ioport m_io_cline1;
	optional_ioport m_io_cline2;
	optional_ioport m_io_cline3;
	optional_ioport m_io_cline4;
	optional_ioport m_io_cline5;
	optional_ioport m_io_cline6;
	optional_ioport m_io_cline7;

	void radio86_init_keyboard();
	virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr);
};


/*----------- defined in drivers/radio86.c -----------*/

INPUT_PORTS_EXTERN( radio86 );
INPUT_PORTS_EXTERN( ms7007 );


/*----------- defined in machine/radio86.c -----------*/

extern const i8255_interface radio86_ppi8255_interface_1;
extern const i8255_interface radio86_ppi8255_interface_2;
extern const i8255_interface rk7007_ppi8255_interface;

extern const i8255_interface mikrosha_ppi8255_interface_1;
extern const i8255_interface mikrosha_ppi8255_interface_2;

extern const i8275_interface radio86_i8275_interface;
extern const i8275_interface partner_i8275_interface;
extern const i8275_interface mikrosha_i8275_interface;
extern const i8275_interface apogee_i8275_interface;

extern const i8257_interface radio86_dma;


extern void radio86_init_keyboard(running_machine &machine);


/*----------- defined in video/radio86.c -----------*/

extern I8275_DISPLAY_PIXELS(radio86_display_pixels);
extern I8275_DISPLAY_PIXELS(partner_display_pixels);
extern I8275_DISPLAY_PIXELS(mikrosha_display_pixels);
extern I8275_DISPLAY_PIXELS(apogee_display_pixels);

#endif /* radio86_H_ */