summaryrefslogtreecommitdiffstatshomepage
path: root/src/emu/sound/cdp1864.h
blob: 49307630ec326e9f5c566e2b4370c44856924d31 (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
147
148
149
150
151
152
153
154
155
156
/**********************************************************************

    RCA CDP1864C COS/MOS PAL Compatible Color TV Interface

    Copyright MESS Team.
    Visit http://mamedev.org for licensing and usage restrictions.

**********************************************************************
							________________
			INLACE	 1	---|	   \/		|---  40  Vdd
		   CLK IN_	 2	---|				|---  39  AUD
		  CLR OUT_	 3	---|				|---  38  CLR IN_
			   AOE	 4	---|				|---  37  DMA0_
			   SC1	 5	---|				|---  36  INT_
			   SC0	 6	---|				|---  35  TPA
			  MRD_	 7	---|				|---  34  TPB
			 BUS 7	 8	---|				|---  33  EVS
			 BUS 6	 9	---|				|---  32  V SYNC
			 BUS 5	10	---|	CDP1864C    |---  31  H SYNC
			 BUS 4	11	---|	top view	|---  30  C SYNC_
			 BUS 3	12	---|				|---  29  RED
			 BUS 2	13	---|				|---  28  BLUE
			 BUS 1	14	---|				|---  27  GREEN
			 BUS 0	15	---|				|---  26  BCK GND_
			  CON_	16	---|				|---  25  BURST
				N2	17	---|				|---  24  ALT
			   EF_	18	---|				|---  23  R DATA
				N0	19	---|				|---  22  G DATA
			   Vss	20	---|________________|---  21  B DATA


		   http://homepage.mac.com/ruske/cosmacelf/cdp1864.pdf

**********************************************************************/

#ifndef __CDP1864__
#define __CDP1864__

#include "devcb.h"

/***************************************************************************
    PARAMETERS
***************************************************************************/

#define CDP1864_CLOCK	XTAL_1_75MHz

#define CDP1864_VISIBLE_COLUMNS	64
#define CDP1864_VISIBLE_LINES	192

#define CDP1864_HBLANK_END		 1 * 8
#define CDP1864_HBLANK_START	13 * 8
#define CDP1864_HSYNC_START		 0 * 8
#define CDP1864_HSYNC_END		 1 * 8
#define CDP1864_SCREEN_START	 4 * 8
#define CDP1864_SCREEN_END		12 * 8
#define CDP1864_SCREEN_WIDTH	14 * 8

#define CDP1864_TOTAL_SCANLINES				312

#define CDP1864_SCANLINE_VBLANK_START		CDP1864_TOTAL_SCANLINES - 4
#define CDP1864_SCANLINE_VBLANK_END			20
#define CDP1864_SCANLINE_VSYNC_START		0
#define CDP1864_SCANLINE_VSYNC_END			4
#define CDP1864_SCANLINE_DISPLAY_START		60 // ???
#define CDP1864_SCANLINE_DISPLAY_END		CDP1864_SCANLINE_DISPLAY_START + CDP1864_VISIBLE_LINES
#define CDP1864_SCANLINE_INT_START			CDP1864_SCANLINE_DISPLAY_START - 2
#define CDP1864_SCANLINE_INT_END			CDP1864_SCANLINE_DISPLAY_START
#define CDP1864_SCANLINE_EFX_TOP_START		CDP1864_SCANLINE_DISPLAY_START - 4
#define CDP1864_SCANLINE_EFX_TOP_END		CDP1864_SCANLINE_DISPLAY_START
#define CDP1864_SCANLINE_EFX_BOTTOM_START	CDP1864_SCANLINE_DISPLAY_END - 4
#define CDP1864_SCANLINE_EFX_BOTTOM_END		CDP1864_SCANLINE_DISPLAY_END

/***************************************************************************
    MACROS / CONSTANTS
***************************************************************************/

#define CDP1864		DEVICE_GET_INFO_NAME(cdp1864)
#define SOUND_CDP1864 CDP1864

#define MDRV_CDP1864_ADD(_tag, _clock, _config) \
	MDRV_DEVICE_ADD(_tag, SOUND, _clock) \
	MDRV_DEVICE_CONFIG_DATAPTR(sound_config, type, SOUND_CDP1864) \
	MDRV_DEVICE_CONFIG(_config)

#define CDP1864_INTERFACE(name) \
	const cdp1864_interface (name) =

/***************************************************************************
    TYPE DEFINITIONS
***************************************************************************/

typedef enum _cdp1864_format cdp1864_format;
enum _cdp1864_format {
	CDP1864_NON_INTERLACED = 0,
	CDP1864_INTERLACED
};

typedef struct _cdp1864_interface cdp1864_interface;
struct _cdp1864_interface
{
	const char *cpu_tag;		/* cpu we are working with */
	const char *screen_tag;		/* screen we are acting on */

	cdp1864_format interlace;	/* interlace */

	devcb_read_line				in_rdata_func;
	devcb_read_line				in_bdata_func;
	devcb_read_line				in_gdata_func;

	/* this gets called for every change of the INT pin (pin 36) */
	devcb_write_line			out_int_func;

	/* this gets called for every change of the DMAO pin (pin 37) */
	devcb_write_line			out_dmao_func;

	/* this gets called for every change of the EFX pin (pin 18) */
	devcb_write_line			out_efx_func;

	double res_r;				/* red output resistor value */
	double res_g;				/* green output resistor value */
	double res_b;				/* blue output resistor value */
	double res_bkg;				/* background output resistor value */
};

/***************************************************************************
    PROTOTYPES
***************************************************************************/

/* device interface */
DEVICE_GET_INFO( cdp1864 );

/* display on (0x69) */
READ8_DEVICE_HANDLER( cdp1864_dispon_r ) ATTR_NONNULL(1);

/* display off (0x6c) */
READ8_DEVICE_HANDLER( cdp1864_dispoff_r ) ATTR_NONNULL(1);

/* step background color (0x61) */
WRITE8_DEVICE_HANDLER( cdp1864_step_bgcolor_w ) ATTR_NONNULL(1);

/* color on */
WRITE_LINE_DEVICE_HANDLER( cdp1864_con_w ) ATTR_NONNULL(1);

/* load tone latch (0x64) */
WRITE8_DEVICE_HANDLER( cdp1864_tone_latch_w ) ATTR_NONNULL(1);

/* audio output enable */
WRITE_LINE_DEVICE_HANDLER( cdp1864_aoe_w ) ATTR_NONNULL(1);

/* DMA write */
WRITE8_DEVICE_HANDLER( cdp1864_dma_w ) ATTR_NONNULL(1);

/* screen update */
void cdp1864_update(const device_config *device, bitmap_t *bitmap, const rectangle *cliprect) ATTR_NONNULL(1) ATTR_NONNULL(2) ATTR_NONNULL(3);

#endif