1
/**********************************************************************
3
RCA CDP1864C COS/MOS PAL Compatible Color TV Interface
6
Visit http://mamedev.org for licensing and usage restrictions.
8
**********************************************************************
10
INLACE 1 ---| \/ |--- 40 Vdd
11
CLK IN_ 2 ---| |--- 39 AUD
12
CLR OUT_ 3 ---| |--- 38 CLR IN_
13
AOE 4 ---| |--- 37 DMA0_
14
SC1 5 ---| |--- 36 INT_
15
SC0 6 ---| |--- 35 TPA
16
MRD_ 7 ---| |--- 34 TPB
17
BUS 7 8 ---| |--- 33 EVS
18
BUS 6 9 ---| |--- 32 V SYNC
19
BUS 5 10 ---| CDP1864C |--- 31 H SYNC
20
BUS 4 11 ---| top view |--- 30 C SYNC_
21
BUS 3 12 ---| |--- 29 RED
22
BUS 2 13 ---| |--- 28 BLUE
23
BUS 1 14 ---| |--- 27 GREEN
24
BUS 0 15 ---| |--- 26 BCK GND_
25
CON_ 16 ---| |--- 25 BURST
26
N2 17 ---| |--- 24 ALT
27
EF_ 18 ---| |--- 23 R DATA
28
N0 19 ---| |--- 22 G DATA
29
Vss 20 ---|________________|--- 21 B DATA
32
http://homepage.mac.com/ruske/cosmacelf/cdp1864.pdf
34
**********************************************************************/
41
/***************************************************************************
43
***************************************************************************/
45
#define CDP1864_CLOCK XTAL_1_75MHz
47
#define CDP1864_VISIBLE_COLUMNS 64
48
#define CDP1864_VISIBLE_LINES 192
50
#define CDP1864_HBLANK_END 1 * 8
51
#define CDP1864_HBLANK_START 13 * 8
52
#define CDP1864_HSYNC_START 0 * 8
53
#define CDP1864_HSYNC_END 1 * 8
54
#define CDP1864_SCREEN_START 4 * 8
55
#define CDP1864_SCREEN_END 12 * 8
56
#define CDP1864_SCREEN_WIDTH 14 * 8
58
#define CDP1864_TOTAL_SCANLINES 312
60
#define CDP1864_SCANLINE_VBLANK_START CDP1864_TOTAL_SCANLINES - 4
61
#define CDP1864_SCANLINE_VBLANK_END 20
62
#define CDP1864_SCANLINE_VSYNC_START 0
63
#define CDP1864_SCANLINE_VSYNC_END 4
64
#define CDP1864_SCANLINE_DISPLAY_START 60 // ???
65
#define CDP1864_SCANLINE_DISPLAY_END CDP1864_SCANLINE_DISPLAY_START + CDP1864_VISIBLE_LINES
66
#define CDP1864_SCANLINE_INT_START CDP1864_SCANLINE_DISPLAY_START - 2
67
#define CDP1864_SCANLINE_INT_END CDP1864_SCANLINE_DISPLAY_START
68
#define CDP1864_SCANLINE_EFX_TOP_START CDP1864_SCANLINE_DISPLAY_START - 4
69
#define CDP1864_SCANLINE_EFX_TOP_END CDP1864_SCANLINE_DISPLAY_START
70
#define CDP1864_SCANLINE_EFX_BOTTOM_START CDP1864_SCANLINE_DISPLAY_END - 4
71
#define CDP1864_SCANLINE_EFX_BOTTOM_END CDP1864_SCANLINE_DISPLAY_END
73
/***************************************************************************
75
***************************************************************************/
77
#define CDP1864 DEVICE_GET_INFO_NAME(cdp1864)
78
#define SOUND_CDP1864 CDP1864
80
#define MDRV_CDP1864_ADD(_tag, _clock, _config) \
81
MDRV_DEVICE_ADD(_tag, SOUND, _clock) \
82
MDRV_DEVICE_CONFIG_DATAPTR(sound_config, type, SOUND_CDP1864) \
83
MDRV_DEVICE_CONFIG(_config)
85
#define MDRV_CDP1864_SCREEN_ADD(_tag, _clock) \
86
MDRV_SCREEN_ADD(_tag, RASTER) \
87
MDRV_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16) \
88
MDRV_SCREEN_RAW_PARAMS(_clock, CDP1864_SCREEN_WIDTH, CDP1864_HBLANK_END, CDP1864_HBLANK_START, CDP1864_TOTAL_SCANLINES, CDP1864_SCANLINE_VBLANK_END, CDP1864_SCANLINE_VBLANK_START)
90
#define CDP1864_INTERFACE(name) \
91
const cdp1864_interface (name) =
93
/***************************************************************************
95
***************************************************************************/
97
enum _cdp1864_format {
98
CDP1864_NON_INTERLACED = 0,
101
typedef enum _cdp1864_format cdp1864_format;
103
typedef struct _cdp1864_interface cdp1864_interface;
104
struct _cdp1864_interface
106
const char *cpu_tag; /* cpu we are working with */
107
const char *screen_tag; /* screen we are acting on */
109
cdp1864_format interlace; /* interlace */
111
devcb_read_line in_rdata_func;
112
devcb_read_line in_bdata_func;
113
devcb_read_line in_gdata_func;
115
/* this gets called for every change of the INT pin (pin 36) */
116
devcb_write_line out_int_func;
118
/* this gets called for every change of the DMAO pin (pin 37) */
119
devcb_write_line out_dmao_func;
121
/* this gets called for every change of the EFX pin (pin 18) */
122
devcb_write_line out_efx_func;
124
double res_r; /* red output resistor value */
125
double res_g; /* green output resistor value */
126
double res_b; /* blue output resistor value */
127
double res_bkg; /* background output resistor value */
130
/***************************************************************************
132
***************************************************************************/
134
/* device interface */
135
DEVICE_GET_INFO( cdp1864 );
137
/* display on (0x69) */
138
READ8_DEVICE_HANDLER( cdp1864_dispon_r ) ATTR_NONNULL(1);
140
/* display off (0x6c) */
141
READ8_DEVICE_HANDLER( cdp1864_dispoff_r ) ATTR_NONNULL(1);
143
/* step background color (0x61) */
144
WRITE8_DEVICE_HANDLER( cdp1864_step_bgcolor_w ) ATTR_NONNULL(1);
147
WRITE_LINE_DEVICE_HANDLER( cdp1864_con_w ) ATTR_NONNULL(1);
149
/* load tone latch (0x64) */
150
WRITE8_DEVICE_HANDLER( cdp1864_tone_latch_w ) ATTR_NONNULL(1);
152
/* audio output enable */
153
WRITE_LINE_DEVICE_HANDLER( cdp1864_aoe_w ) ATTR_NONNULL(1);
156
WRITE8_DEVICE_HANDLER( cdp1864_dma_w ) ATTR_NONNULL(1);
159
void cdp1864_update(const device_config *device, bitmap_t *bitmap, const rectangle *cliprect) ATTR_NONNULL(1) ATTR_NONNULL(2) ATTR_NONNULL(3);