summaryrefslogtreecommitdiffstatshomepage
path: root/src/emu/video/cdp1869.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/emu/video/cdp1869.h')
-rw-r--r--src/emu/video/cdp1869.h128
1 files changed, 128 insertions, 0 deletions
diff --git a/src/emu/video/cdp1869.h b/src/emu/video/cdp1869.h
new file mode 100644
index 00000000000..6a0146073d3
--- /dev/null
+++ b/src/emu/video/cdp1869.h
@@ -0,0 +1,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