blob: 6a0146073d3735a62f349e9c9485863e0c74a9b3 (
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
|
/*
RCA CDP1869/70/76 Video Interface System (VIS)
http://homepage.mac.com/ruske/cosmacelf/cdp1869.pdf
________________ ________________
TPA 1 ---| \/ |--- 40 Vdd PREDISPLAY_ 1 ---| \/ |--- 40 Vdd
TPB 2 ---| |--- 39 PMSEL *DISPLAY_ 2 ---| |--- 39 PAL/NTSC_
MRD_ 3 ---| |--- 38 PMWR_ PCB 3 ---| |--- 38 CPUCLK
MWR_ 4 ---| |--- 37 *CMSEL CCB1 4 ---| |--- 37 XTAL (DOT)
MA0/8 5 ---| |--- 36 CMWR_ BUS7 5 ---| |--- 36 XTAL (DOT)_
MA1/9 6 ---| |--- 35 PMA0 CCB0 6 ---| |--- 35 *ADDRSTB_
MA2/10 7 ---| |--- 34 PMA1 BUS6 7 ---| |--- 34 MRD_
MA3/11 8 ---| |--- 33 PMA2 CDB5 8 ---| |--- 33 TPB
MA4/12 9 ---| |--- 32 PMA3 BUS5 9 ---| |--- 32 *CMSEL
MA5/13 10 ---| CDP1869C |--- 31 PMA4 CDB4 10 ---| CDP1870/76C |--- 31 BURST
MA6/14 11 ---| top view |--- 30 PMA5 BUS4 11 ---| top view |--- 30 *H SYNC_
MA7/15 12 ---| |--- 29 PMA6 CDB3 12 ---| |--- 29 COMPSYNC_
N0 13 ---| |--- 28 PMA7 BUS3 13 ---| |--- 28 LUM / (RED)^
N1 14 ---| |--- 27 PMA8 CDB2 14 ---| |--- 27 PAL CHROM / (BLUE)^
N2 15 ---| |--- 26 PMA9 BUS2 15 ---| |--- 26 NTSC CHROM / (GREEN)^
*H SYNC_ 16 ---| |--- 25 CMA3/PMA10 CDB1 16 ---| |--- 25 XTAL_ (CHROM)
*DISPLAY_ 17 ---| |--- 24 CMA2 BUS1 17 ---| |--- 24 XTAL (CHROM)
*ADDRSTB_ 18 ---| |--- 23 CMA1 CDB0 18 ---| |--- 23 EMS_
SOUND 19 ---| |--- 22 CMA0 BUS0 19 ---| |--- 22 EVS_
VSS 20 ---|________________|--- 21 *N=3_ Vss 20 ---|________________|--- 21 *N=3_
* = INTERCHIP CONNECTIONS ^ = FOR THE RGB BOND-OUT OPTION (CDP1876C) _ = ACTIVE LOW
*/
#ifndef __CDP1869_VIDEO__
#define __CDP1869_VIDEO__
enum {
CDP1869_NTSC,
CDP1869_PAL
};
#define CDP1869_DOT_CLK_PAL 5626000.0
#define CDP1869_DOT_CLK_NTSC 5670000.0
#define CDP1869_COLOR_CLK_PAL 8867236.0
#define CDP1869_COLOR_CLK_NTSC 7159090.0
#define CDP1869_CPU_CLK_PAL (CDP1869_DOT_CLK_PAL / 2)
#define CDP1869_CPU_CLK_NTSC (CDP1869_DOT_CLK_NTSC / 2)
#define CDP1869_CHAR_WIDTH 6
#define CDP1869_HSYNC_START (56 * CDP1869_CHAR_WIDTH)
#define CDP1869_HSYNC_END (60 * CDP1869_CHAR_WIDTH)
#define CDP1869_HBLANK_START (54 * CDP1869_CHAR_WIDTH)
#define CDP1869_HBLANK_END (5 * CDP1869_CHAR_WIDTH)
#define CDP1869_SCREEN_START_PAL (9 * CDP1869_CHAR_WIDTH)
#define CDP1869_SCREEN_START_NTSC (10 * CDP1869_CHAR_WIDTH)
#define CDP1869_SCREEN_START (10 * CDP1869_CHAR_WIDTH)
#define CDP1869_SCREEN_END (50 * CDP1869_CHAR_WIDTH)
#define CDP1869_SCREEN_WIDTH (60 * CDP1869_CHAR_WIDTH)
#define CDP1869_TOTAL_SCANLINES_PAL 312
#define CDP1869_SCANLINE_VBLANK_START_PAL 304
#define CDP1869_SCANLINE_VBLANK_END_PAL 10
#define CDP1869_SCANLINE_VSYNC_START_PAL 308
#define CDP1869_SCANLINE_VSYNC_END_PAL 312
#define CDP1869_SCANLINE_DISPLAY_START_PAL 44
#define CDP1869_SCANLINE_DISPLAY_END_PAL 260
#define CDP1869_SCANLINE_PREDISPLAY_START_PAL 43
#define CDP1869_SCANLINE_PREDISPLAY_END_PAL 260
#define CDP1869_VISIBLE_SCANLINES_PAL (CDP1869_SCANLINE_DISPLAY_END_PAL - CDP1869_SCANLINE_DISPLAY_START_PAL)
#define CDP1869_TOTAL_SCANLINES_NTSC 262
#define CDP1869_SCANLINE_VBLANK_START_NTSC 252
#define CDP1869_SCANLINE_VBLANK_END_NTSC 10
#define CDP1869_SCANLINE_VSYNC_START_NTSC 258
#define CDP1869_SCANLINE_VSYNC_END_NTSC 262
#define CDP1869_SCANLINE_DISPLAY_START_NTSC 36
#define CDP1869_SCANLINE_DISPLAY_END_NTSC 228
#define CDP1869_SCANLINE_PREDISPLAY_START_NTSC 35
#define CDP1869_SCANLINE_PREDISPLAY_END_NTSC 228
#define CDP1869_VISIBLE_SCANLINES_NTSC (CDP1869_SCANLINE_DISPLAY_END_NTSC - CDP1869_SCANLINE_DISPLAY_START_NTSC)
#define CDP1869_FPS_PAL CDP1869_DOT_CLK_PAL / CDP1869_SCREEN_WIDTH / CDP1869_TOTAL_SCANLINES_PAL
#define CDP1869_FPS_NTSC CDP1869_DOT_CLK_NTSC / CDP1869_SCREEN_WIDTH / CDP1869_TOTAL_SCANLINES_NTSC
#define CDP1869_WEIGHT_RED 30 // % of max luminance
#define CDP1869_WEIGHT_GREEN 59
#define CDP1869_WEIGHT_BLUE 11
#define CDP1869_CHARRAM_SIZE 0x1000
#define CDP1869_PAGERAM_SIZE 0x800
#define CDP1869_COLUMNS_HALF 20
#define CDP1869_COLUMNS_FULL 40
#define CDP1869_ROWS_HALF 12
#define CDP1869_ROWS_FULL_PAL 25
#define CDP1869_ROWS_FULL_NTSC 24
typedef struct CDP1869_interface
{
int ntsc_pal; // display format (NTSC/PAL)
int charrom_region; // memory region to load CHARRAM from
UINT16 charram_size; // CHARRAM size
UINT16 pageram_size; // PAGERAM size
UINT8 (*get_color_bits)(UINT8 cramdata, UINT16 cramaddr, UINT16 pramaddr); // 0x01 = PCB, 0x02 = CCB0, 0x04 = CCB1
} CDP1869_interface;
WRITE8_HANDLER ( cdp1869_out3_w );
WRITE8_HANDLER ( cdp1869_out4_w );
WRITE8_HANDLER ( cdp1869_out5_w );
WRITE8_HANDLER ( cdp1869_out6_w );
WRITE8_HANDLER ( cdp1869_out7_w );
PALETTE_INIT( cdp1869 );
VIDEO_START( cdp1869 );
VIDEO_UPDATE( cdp1869 );
READ8_HANDLER ( cdp1869_charram_r );
READ8_HANDLER ( cdp1869_pageram_r );
WRITE8_HANDLER ( cdp1869_charram_w );
WRITE8_HANDLER ( cdp1869_pageram_w );
void cdp1869_configure(const CDP1869_interface *intf);
UINT16 cdp1869_get_cma(UINT16 offset);
#endif
|