summaryrefslogtreecommitdiffstatshomepage
path: root/src
diff options
context:
space:
mode:
author Miodrag Milanovic <mmicko@gmail.com>2014-03-26 11:28:27 +0000
committer Miodrag Milanovic <mmicko@gmail.com>2014-03-26 11:28:27 +0000
commitcbe4fa6ab9c764d845936969c418650a1e0eb8c5 (patch)
tree4cba9618954972c967f9afdbebb8cfa8aee9d4ed /src
parent937bfafb3a958c5d910de4264db805abaefa52d8 (diff)
aga is isa device now, aga/cga cleanup (nw)
note that aga should be extended out of isa_cga in future
Diffstat (limited to 'src')
-rw-r--r--src/emu/bus/bus.mak1
-rw-r--r--src/emu/bus/isa/aga.c975
-rw-r--r--src/emu/bus/isa/aga.h114
-rw-r--r--src/emu/bus/isa/cga.c435
-rw-r--r--src/emu/bus/isa/cga.h2
-rw-r--r--src/emu/bus/isa/isa_cards.c2
-rw-r--r--src/emu/bus/isa/isa_cards.h1
-rw-r--r--src/emu/scrlegcy.h45
-rw-r--r--src/emu/video/video.mak7
-rw-r--r--src/mess/drivers/amstr_pc.c108
-rw-r--r--src/mess/drivers/pc.c74
-rw-r--r--src/mess/includes/europc.h4
-rw-r--r--src/mess/machine/amstr_pc.c21
-rw-r--r--src/mess/machine/europc.c15
-rw-r--r--src/mess/mess.mak2
-rw-r--r--src/mess/video/pc_aga.c873
-rw-r--r--src/mess/video/pc_aga.h47
17 files changed, 1175 insertions, 1551 deletions
diff --git a/src/emu/bus/bus.mak b/src/emu/bus/bus.mak
index dc9c8bb3bc8..eae4cf3dd69 100644
--- a/src/emu/bus/bus.mak
+++ b/src/emu/bus/bus.mak
@@ -371,6 +371,7 @@ BUSOBJS += $(BUSOBJ)/isa/mc1502_rom.o
BUSOBJS += $(BUSOBJ)/isa/xsu_cards.o
BUSOBJS += $(BUSOBJ)/isa/sc499.o
BUSOBJS += $(BUSOBJ)/isa/3c505.o
+BUSOBJS += $(BUSOBJ)/isa/aga.o
endif
#-------------------------------------------------
diff --git a/src/emu/bus/isa/aga.c b/src/emu/bus/isa/aga.c
new file mode 100644
index 00000000000..819aea4467b
--- /dev/null
+++ b/src/emu/bus/isa/aga.c
@@ -0,0 +1,975 @@
+/*****************************************************************************
+ *
+ * aga.c
+ *
+ ****************************************************************************/
+#include "aga.h"
+#include "video/cgapal.h"
+
+#define CGA_HCLK (XTAL_14_31818MHz/8)
+#define CGA_LCLK (XTAL_14_31818MHz/16)
+
+#define AGA_SCREEN_NAME "screen"
+#define AGA_MC6845_NAME "mc6845_aga"
+
+
+static INPUT_PORTS_START( aga )
+ PORT_START( "cga_config" )
+ PORT_CONFNAME( 0x03, 0x00, "CGA character set")
+ PORT_CONFSETTING(0x00, DEF_STR( Normal ))
+ PORT_CONFSETTING(0x01, "Alternative")
+ PORT_CONFNAME( 0x1C, 0x00, "CGA monitor type")
+ PORT_CONFSETTING(0x00, "Colour RGB")
+ PORT_CONFSETTING(0x04, "Mono RGB")
+ PORT_CONFSETTING(0x08, "Colour composite")
+ PORT_CONFSETTING(0x0C, "Television")
+ PORT_CONFSETTING(0x10, "LCD")
+ PORT_CONFNAME( 0xE0, 0x00, "CGA chipset")
+ PORT_CONFSETTING(0x00, "IBM")
+ PORT_CONFSETTING(0x20, "Amstrad PC1512")
+ PORT_CONFSETTING(0x40, "Amstrad PPC512")
+ PORT_CONFSETTING(0x60, "ATI")
+ PORT_CONFSETTING(0x80, "Paradise")
+INPUT_PORTS_END
+
+#define CGA_MONITOR (m_cga_config->read()&0x1C)
+#define CGA_MONITOR_COMPOSITE 0x08 /* Colour composite */
+
+const device_type ISA8_AGA = &device_creator<isa8_aga_device>;
+
+//-------------------------------------------------
+// isa8_aga_device - constructor
+//-------------------------------------------------
+
+isa8_aga_device::isa8_aga_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock) :
+ device_t( mconfig, ISA8_AGA, "AGA", tag, owner, clock, "aga", __FILE__),
+ device_isa8_card_interface(mconfig, *this),
+ m_palette(*this, "palette"),
+ m_mc6845(*this, AGA_MC6845_NAME),
+ m_cga_config(*this, "cga_config"),
+ m_mda_mode_control(0),
+ m_mda_status(0),
+ m_cga_mode_control(0),
+ m_cga_color_select(0),
+ m_cga_status(0),
+ m_framecnt(0),
+ m_vsync(0),
+ m_hsync(0)
+{
+}
+
+isa8_aga_device::isa8_aga_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, UINT32 clock, const char *shortname, const char *source) :
+ device_t(mconfig, type, name, tag, owner, clock, shortname, source),
+ device_isa8_card_interface(mconfig, *this),
+ m_palette(*this, "palette"),
+ m_mc6845(*this, AGA_MC6845_NAME),
+ m_cga_config(*this, "cga_config"),
+ m_mda_mode_control(0),
+ m_mda_status(0),
+ m_cga_mode_control(0),
+ m_cga_color_select(0),
+ m_cga_status(0),
+ m_framecnt(0),
+ m_vsync(0),
+ m_hsync(0)
+{
+}
+//-------------------------------------------------
+// device_start - device-specific startup
+//-------------------------------------------------
+
+void isa8_aga_device::device_start()
+{
+ if (m_palette != NULL && !m_palette->started())
+ throw device_missing_dependencies();
+
+ m_mode = AGA_COLOR;
+ m_mda_chr_gen = memregion("gfx1")->base() + 0x1000;
+ m_cga_chr_gen = memregion("gfx1")->base();
+ m_videoram = auto_alloc_array(machine(), UINT8, 0x10000);
+
+ set_isa_device();
+ m_isa->install_memory(0xb0000, 0xbffff, 0, 0, read8_delegate(FUNC(isa8_aga_device::pc_aga_videoram_r),this), write8_delegate(FUNC(isa8_aga_device::pc_aga_videoram_w),this));
+ m_isa->install_device(0x3b0, 0x3bf, 0, 0, read8_delegate( FUNC(isa8_aga_device::pc_aga_mda_r), this ), write8_delegate( FUNC(isa8_aga_device::pc_aga_mda_w), this ) );
+ m_isa->install_device(0x3d0, 0x3df, 0, 0, read8_delegate( FUNC(isa8_aga_device::pc_aga_cga_r), this ), write8_delegate( FUNC(isa8_aga_device::pc_aga_cga_w), this ) );
+
+ /* Initialise the cga palette */
+ int i;
+
+ for ( i = 0; i < CGA_PALETTE_SETS * 16; i++ )
+ {
+ m_palette->set_pen_color( i, cga_palette[i][0], cga_palette[i][1], cga_palette[i][2] );
+ }
+
+ i = 0x8000;
+ for ( int r = 0; r < 32; r++ )
+ {
+ for ( int g = 0; g < 32; g++ )
+ {
+ for ( int b = 0; b < 32; b++ )
+ {
+ m_palette->set_pen_color( i, r << 3, g << 3, b << 3 );
+ i++;
+ }
+ }
+ }
+
+ UINT8 *gfx = &memregion("gfx1")->base()[0x8000];
+ /* just a plain bit pattern for graphics data generation */
+ for (i = 0; i < 256; i++)
+ gfx[i] = i;
+}
+
+ROM_START( aga )
+ ROM_REGION(0x8100,"gfx1", 0)
+ ROM_LOAD("50146 char d1.0 euro.u16", 0x00000, 0x02000, CRC(1305dcf5) SHA1(aca488a16ae4ff05a1f4d14574379ff49cd48343)) //D1.0
+ROM_END
+
+const rom_entry *isa8_aga_device::device_rom_region() const
+{
+ return ROM_NAME( aga );
+}
+
+ioport_constructor isa8_aga_device::device_input_ports() const
+{
+ return INPUT_PORTS_NAME( aga );
+}
+
+
+
+const device_type ISA8_AGA_PC200 = &device_creator<isa8_aga_pc200_device>;
+
+//-------------------------------------------------
+// isa8_aga_pc200_device - constructor
+//-------------------------------------------------
+
+isa8_aga_pc200_device::isa8_aga_pc200_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock) :
+ isa8_aga_device( mconfig, ISA8_AGA_PC200, "AGA PC200", tag, owner, clock, "aga_pc200", __FILE__),
+ m_port8(0),
+ m_portd(0),
+ m_porte(0)
+{
+}
+
+ROM_START( aga_pc200 )
+ ROM_REGION(0x08100,"gfx1", 0)
+ ROM_LOAD("40109.ic159", 0x00000, 0x08000, CRC(a8b67639) SHA1(99663bfb61798526e092205575370c2ad34249a1))
+ROM_END
+
+const rom_entry *isa8_aga_pc200_device::device_rom_region() const
+{
+ return ROM_NAME( aga_pc200 );
+}
+
+//-------------------------------------------------
+// device_start - device-specific startup
+//-------------------------------------------------
+
+void isa8_aga_pc200_device::device_start()
+{
+ if (m_palette != NULL && !m_palette->started())
+ throw device_missing_dependencies();
+
+ m_mode = AGA_COLOR;
+ m_mda_chr_gen = memregion("gfx1")->base() + 0x1000;
+ m_cga_chr_gen = memregion("gfx1")->base();
+ m_videoram = auto_alloc_array(machine(), UINT8, 0x10000);
+
+ set_isa_device();
+ m_isa->install_memory(0xb0000, 0xbffff, 0, 0, read8_delegate(FUNC(isa8_aga_pc200_device::pc200_videoram_r),this), write8_delegate(FUNC(isa8_aga_pc200_device::pc200_videoram_w),this));
+ m_isa->install_device(0x3b0, 0x3bf, 0, 0, read8_delegate( FUNC(isa8_aga_device::pc_aga_mda_r), this ), write8_delegate( FUNC(isa8_aga_device::pc_aga_mda_w), this ) );
+ m_isa->install_device(0x3d0, 0x3df, 0, 0, read8_delegate( FUNC(isa8_aga_pc200_device::pc200_cga_r), this ), write8_delegate( FUNC(isa8_aga_pc200_device::pc200_cga_w), this ) );
+
+ /* Initialise the cga palette */
+ int i;
+
+ for ( i = 0; i < CGA_PALETTE_SETS * 16; i++ )
+ {
+ m_palette->set_pen_color( i, cga_palette[i][0], cga_palette[i][1], cga_palette[i][2] );
+ }
+
+ i = 0x8000;
+ for ( int r = 0; r < 32; r++ )
+ {
+ for ( int g = 0; g < 32; g++ )
+ {
+ for ( int b = 0; b < 32; b++ )
+ {
+ m_palette->set_pen_color( i, r << 3, g << 3, b << 3 );
+ i++;
+ }
+ }
+ }
+
+ UINT8 *gfx = &memregion("gfx1")->base()[0x8000];
+ /* just a plain bit pattern for graphics data generation */
+ for (i = 0; i < 256; i++)
+ gfx[i] = i;
+}
+
+WRITE_LINE_MEMBER( isa8_aga_device::hsync_changed )
+{
+ m_hsync = state ? 1 : 0;
+}
+
+
+WRITE_LINE_MEMBER( isa8_aga_device::vsync_changed )
+{
+ m_vsync = state ? 8 : 0;
+ if ( state )
+ {
+ m_framecnt++;
+ }
+}
+
+
+
+
+
+static MC6845_UPDATE_ROW( aga_update_row )
+{
+ isa8_aga_device *aga = downcast<isa8_aga_device *>(device->owner());
+ if ( aga->m_update_row )
+ {
+ aga->m_update_row( device, bitmap, cliprect, ma, ra, y, x_count, cursor_x, param );
+ }
+}
+
+
+static MC6845_INTERFACE( mc6845_aga_intf )
+{
+ false, /* show border area */
+ 0,0,0,0, /* visarea adjustment */
+ 8, /* numbers of pixels per video memory address */
+ NULL, /* begin_update */
+ aga_update_row, /* update_row */
+ NULL, /* end_update */
+ DEVCB_NULL, /* on_de_changed */
+ DEVCB_NULL, /* on_cur_changed */
+ DEVCB_DEVICE_LINE_MEMBER(DEVICE_SELF_OWNER, isa8_aga_device, hsync_changed), /* on_hsync_changed */
+ DEVCB_DEVICE_LINE_MEMBER(DEVICE_SELF_OWNER, isa8_aga_device, vsync_changed), /* on_vsync_changed */
+ NULL
+};
+
+MACHINE_CONFIG_FRAGMENT( pcvideo_aga )
+ MCFG_SCREEN_ADD( AGA_SCREEN_NAME, RASTER )
+ MCFG_SCREEN_RAW_PARAMS( XTAL_14_31818MHz,912,0,640,262,0,200 )
+ MCFG_SCREEN_UPDATE_DEVICE( AGA_MC6845_NAME, mc6845_device, screen_update )
+
+ MCFG_PALETTE_ADD( "palette", /* CGA_PALETTE_SETS * 16*/ 65536 )
+
+ MCFG_MC6845_ADD( AGA_MC6845_NAME, MC6845, AGA_SCREEN_NAME, XTAL_14_31818MHz/8, mc6845_aga_intf )
+MACHINE_CONFIG_END
+
+machine_config_constructor isa8_aga_device::device_mconfig_additions() const
+{
+ return MACHINE_CONFIG_NAME( pcvideo_aga );
+}
+
+/*************************************
+ *
+ * row update functions
+ *
+ *************************************/
+
+/* colors need fixing in the mda_text_* functions ! */
+static MC6845_UPDATE_ROW( mda_text_inten_update_row ) {
+ isa8_aga_device *aga = downcast<isa8_aga_device *>(device->owner());
+ const rgb_t *palette = aga->m_palette->palette()->entry_list_raw();
+ UINT8 *videoram = aga->m_videoram;
+ UINT32 *p = &bitmap.pix32(y);
+ UINT16 chr_base = ( ra & 0x08 ) ? 0x800 | ( ra & 0x07 ) : ra;
+ int i;
+
+ if ( y == 0 ) logerror("mda_text_inten_update_row\n");
+ for ( i = 0; i < x_count; i++ ) {
+ UINT16 offset = ( ( ma + i ) << 1 ) & 0x0FFF;
+ UINT8 chr = videoram[ offset ];
+ UINT8 attr = videoram[ offset + 1 ];
+ UINT8 data = aga->m_mda_chr_gen[ chr_base + chr * 8 ];
+ UINT8 fg = ( attr & 0x08 ) ? 3 : 2;
+ UINT8 bg = 0;
+
+ if ( ( attr & ~0x88 ) == 0 ) {
+ data = 0x00;
+ }
+
+ switch( attr ) {
+ case 0x70:
+ bg = 2;
+ fg = 0;
+ break;
+ case 0x78:
+ bg = 2;
+ fg = 1;
+ break;
+ case 0xF0:
+ bg = 3;
+ fg = 0;
+ break;
+ case 0xF8:
+ bg = 3;
+ fg = 1;
+ break;
+ }
+
+ if ( i == cursor_x || ( attr & 0x07 ) == 0x01 ) {
+ data = 0xFF;
+ }
+
+ *p = palette[( data & 0x80 ) ? fg : bg]; p++;
+ *p = palette[( data & 0x40 ) ? fg : bg]; p++;
+ *p = palette[( data & 0x20 ) ? fg : bg]; p++;
+ *p = palette[( data & 0x10 ) ? fg : bg]; p++;
+ *p = palette[( data & 0x08 ) ? fg : bg]; p++;
+ *p = palette[( data & 0x04 ) ? fg : bg]; p++;
+ *p = palette[( data & 0x02 ) ? fg : bg]; p++;
+ *p = palette[( data & 0x01 ) ? fg : bg]; p++;
+ if ( ( chr & 0xE0 ) == 0xC0 ) {
+ *p = palette[( data & 0x01 ) ? fg : bg]; p++;
+ } else {
+ *p = palette[bg]; p++;
+ }
+ }
+}
+
+
+static MC6845_UPDATE_ROW( mda_text_blink_update_row ) {
+ isa8_aga_device *aga = downcast<isa8_aga_device *>(device->owner());
+ UINT8 *videoram = aga->m_videoram;
+ const rgb_t *palette = aga->m_palette->palette()->entry_list_raw();
+ UINT32 *p = &bitmap.pix32(y);
+ UINT16 chr_base = ( ra & 0x08 ) ? 0x800 | ( ra & 0x07 ) : ra;
+ int i;
+
+ if ( y == 0 ) logerror("mda_text_blink_update_row\n");
+ for ( i = 0; i < x_count; i++ ) {
+ UINT16 offset = ( ( ma + i ) << 1 ) & 0x0FFF;
+ UINT8 chr = videoram[ offset ];
+ UINT8 attr = videoram[ offset + 1 ];
+ UINT8 data = aga->m_mda_chr_gen[ chr_base + chr * 8 ];
+ UINT8 fg = ( attr & 0x08 ) ? 3 : 2;
+ UINT8 bg = 0;
+
+ if ( ( attr & ~0x88 ) == 0 ) {
+ data = 0x00;
+ }
+
+ switch( attr ) {
+ case 0x70:
+ case 0xF0:
+ bg = 2;
+ fg = 0;
+ break;
+ case 0x78:
+ case 0xF8:
+ bg = 2;
+ fg = 1;
+ break;
+ }
+
+ if ( i == cursor_x ) {
+ data = 0xFF;
+ } else {
+ if ( ( attr & 0x07 ) == 0x01 ) {
+ data = 0xFF;
+ }
+ if ( ( attr & 0x80 ) && ( aga->m_framecnt & 0x40 ) ) {
+ data = 0x00;
+ }
+ }
+
+ *p = palette[( data & 0x80 ) ? fg : bg]; p++;
+ *p = palette[( data & 0x40 ) ? fg : bg]; p++;
+ *p = palette[( data & 0x20 ) ? fg : bg]; p++;
+ *p = palette[( data & 0x10 ) ? fg : bg]; p++;
+ *p = palette[( data & 0x08 ) ? fg : bg]; p++;
+ *p = palette[( data & 0x04 ) ? fg : bg]; p++;
+ *p = palette[( data & 0x02 ) ? fg : bg]; p++;
+ *p = palette[( data & 0x01 ) ? fg : bg]; p++;
+ if ( ( chr & 0xE0 ) == 0xC0 ) {
+ *p = palette[( data & 0x01 ) ? fg : bg]; p++;
+ } else {
+ *p = palette[bg]; p++;
+ }
+ }
+}
+
+
+static MC6845_UPDATE_ROW( cga_text_inten_update_row ) {
+ isa8_aga_device *aga = downcast<isa8_aga_device *>(device->owner());
+ UINT8 *videoram = aga->m_videoram;
+ const rgb_t *palette = aga->m_palette->palette()->entry_list_raw();
+ UINT32 *p = &bitmap.pix32(y);
+ int i;
+
+ if ( y == 0 ) logerror("cga_text_inten_update_row\n");
+ for ( i = 0; i < x_count; i++ ) {
+ UINT16 offset = ( ( ma + i ) << 1 ) & 0x3fff;
+ UINT8 chr = videoram[ offset ];
+ UINT8 attr = videoram[ offset +1 ];
+ UINT8 data = aga->m_cga_chr_gen[ chr * 16 + ra ];
+ UINT16 fg = attr & 0x0F;
+ UINT16 bg = ( attr >> 4 ) & 0x07;
+
+ if ( i == cursor_x ) {
+ data = 0xFF;
+ }
+
+ *p = palette[( data & 0x80 ) ? fg : bg]; p++;
+ *p = palette[( data & 0x40 ) ? fg : bg]; p++;
+ *p = palette[( data & 0x20 ) ? fg : bg]; p++;
+ *p = palette[( data & 0x10 ) ? fg : bg]; p++;
+ *p = palette[( data & 0x08 ) ? fg : bg]; p++;
+ *p = palette[( data & 0x04 ) ? fg : bg]; p++;
+ *p = palette[( data & 0x02 ) ? fg : bg]; p++;
+ *p = palette[( data & 0x01 ) ? fg : bg]; p++;
+ }
+}
+
+static MC6845_UPDATE_ROW( cga_text_inten_alt_update_row ) {
+ isa8_aga_device *aga = downcast<isa8_aga_device *>(device->owner());
+ const rgb_t *palette = aga->m_palette->palette()->entry_list_raw();
+ UINT8 *videoram = aga->m_videoram;
+ UINT32 *p = &bitmap.pix32(y);
+ int i;
+
+ if ( y == 0 ) logerror("cga_text_inten_alt_update_row\n");
+ for ( i = 0; i < x_count; i++ ) {
+ UINT16 offset = ( ( ma + i ) << 1 ) & 0x3fff;
+ UINT8 chr = videoram[ offset ];
+ UINT8 attr = videoram[ offset +1 ];
+ UINT8 data = aga->m_cga_chr_gen[ chr * 16 + ra ];
+ UINT16 fg = attr & 0x0F;
+
+ if ( i == cursor_x ) {
+ data = 0xFF;
+ }
+
+ *p = palette[( data & 0x80 ) ? fg : 0]; p++;
+ *p = palette[( data & 0x40 ) ? fg : 0]; p++;
+ *p = palette[( data & 0x20 ) ? fg : 0]; p++;
+ *p = palette[( data & 0x10 ) ? fg : 0]; p++;
+ *p = palette[( data & 0x08 ) ? fg : 0]; p++;
+ *p = palette[( data & 0x04 ) ? fg : 0]; p++;
+ *p = palette[( data & 0x02 ) ? fg : 0]; p++;
+ *p = palette[( data & 0x01 ) ? fg : 0]; p++;
+ }
+}
+
+static MC6845_UPDATE_ROW( cga_text_blink_update_row ) {
+ isa8_aga_device *aga = downcast<isa8_aga_device *>(device->owner());
+ const rgb_t *palette = aga->m_palette->palette()->entry_list_raw();
+ UINT8 *videoram = aga->m_videoram;
+ UINT32 *p = &bitmap.pix32(y);
+ int i;
+
+ for ( i = 0; i < x_count; i++ ) {
+ UINT16 offset = ( ( ma + i ) << 1 ) & 0x3fff;
+ UINT8 chr = videoram[ offset ];
+ UINT8 attr = videoram[ offset +1 ];
+ UINT8 data = aga->m_cga_chr_gen[ chr * 16 + ra ];
+ UINT16 fg = attr & 0x0F;
+ UINT16 bg = (attr >> 4) & 0x07;
+
+ if ( i == cursor_x ) {
+ data = 0xFF;
+ } else {
+ if ( ( attr & 0x80 ) && ( aga->m_framecnt & 0x10 ) ) {
+ data = 0x00;
+ }
+ }
+
+ *p = palette[( data & 0x80 ) ? fg : bg]; p++;
+ *p = palette[( data & 0x40 ) ? fg : bg]; p++;
+ *p = palette[( data & 0x20 ) ? fg : bg]; p++;
+ *p = palette[( data & 0x10 ) ? fg : bg]; p++;
+ *p = palette[( data & 0x08 ) ? fg : bg]; p++;
+ *p = palette[( data & 0x04 ) ? fg : bg]; p++;
+ *p = palette[( data & 0x02 ) ? fg : bg]; p++;
+ *p = palette[( data & 0x01 ) ? fg : bg]; p++;
+ }
+}
+
+static MC6845_UPDATE_ROW( cga_text_blink_alt_update_row ) {
+ isa8_aga_device *aga = downcast<isa8_aga_device *>(device->owner());
+ const rgb_t *palette = aga->m_palette->palette()->entry_list_raw();
+ UINT8 *videoram = aga->m_videoram;
+ UINT32 *p = &bitmap.pix32(y);
+ int i;
+
+ if ( y == 0 ) logerror("cga_text_blink_alt_update_row\n");
+ for ( i = 0; i < x_count; i++ ) {
+ UINT16 offset = ( ( ma + i ) << 1 ) & 0x3fff;
+ UINT8 chr = videoram[ offset ];
+ UINT8 attr = videoram[ offset +1 ];
+ UINT8 data = aga->m_cga_chr_gen[ chr * 16 + ra ];
+ UINT16 fg = attr & 0x07;
+ UINT16 bg = 0;
+
+ if ( i == cursor_x ) {
+ data = 0xFF;
+ } else {
+ if ( ( attr & 0x80 ) && ( aga->m_framecnt & 0x10 ) ) {
+ data = 0x00;
+ bg = ( attr >> 4 ) & 0x07;
+ }
+ }
+
+ *p = palette[( data & 0x80 ) ? fg : bg]; p++;
+ *p = palette[( data & 0x40 ) ? fg : bg]; p++;
+ *p = palette[( data & 0x20 ) ? fg : bg]; p++;
+ *p = palette[( data & 0x10 ) ? fg : bg]; p++;
+ *p = palette[( data & 0x08 ) ? fg : bg]; p++;
+ *p = palette[( data & 0x04 ) ? fg : bg]; p++;
+ *p = palette[( data & 0x02 ) ? fg : bg]; p++;
+ *p = palette[( data & 0x01 ) ? fg : bg]; p++;
+ }
+}
+
+static MC6845_UPDATE_ROW( cga_gfx_4bppl_update_row ) {
+ isa8_aga_device *aga = downcast<isa8_aga_device *>(device->owner());
+ const rgb_t *palette = aga->m_palette->palette()->entry_list_raw();
+ UINT8 *videoram = aga->m_videoram;
+ UINT32 *p = &bitmap.pix32(y);
+ int i;
+
+ if ( y == 0 ) logerror("cga_gfx_4bppl_update_row\n");
+ for ( i = 0; i < x_count; i++ ) {
+ UINT16 offset = ( ( ( ma + i ) << 1 ) & 0x1fff ) | ( ( y & 1 ) << 13 );
+ UINT8 data = videoram[ offset ];
+
+ *p = palette[data >> 4]; p++;
+ *p = palette[data >> 4]; p++;
+ *p = palette[data & 0x0F]; p++;
+ *p = palette[data & 0x0F]; p++;
+
+ data = videoram[ offset + 1 ];
+
+ *p = palette[data >> 4]; p++;
+ *p = palette[data >> 4]; p++;
+ *p = palette[data & 0x0F]; p++;
+ *p = palette[data & 0x0F]; p++;
+ }
+}
+
+static MC6845_UPDATE_ROW( cga_gfx_4bpph_update_row ) {
+ isa8_aga_device *aga = downcast<isa8_aga_device *>(device->owner());
+ UINT8 *videoram = aga->m_videoram;
+ const rgb_t *palette = aga->m_palette->palette()->entry_list_raw();
+ UINT32 *p = &bitmap.pix32(y);
+ int i;
+
+ if ( y == 0 ) logerror("cga_gfx_4bpph_update_row\n");
+ for ( i = 0; i < x_count; i++ ) {
+ UINT16 offset = ( ( ( ma + i ) << 1 ) & 0x1fff ) | ( ( y & 1 ) << 13 );
+ UINT8 data = videoram[ offset ];
+
+ *p = palette[data >> 4]; p++;
+ *p = palette[data >> 4]; p++;
+ *p = palette[data >> 4]; p++;
+ *p = palette[data >> 4]; p++;
+ *p = palette[data & 0x0F]; p++;
+ *p = palette[data & 0x0F]; p++;
+ *p = palette[data & 0x0F]; p++;
+ *p = palette[data & 0x0F]; p++;
+
+ data = videoram[ offset + 1 ];
+
+ *p = palette[data >> 4]; p++;
+ *p = palette[data >> 4]; p++;
+ *p = palette[data >> 4]; p++;
+ *p = palette[data >> 4]; p++;
+ *p = palette[data & 0x0F]; p++;
+ *p = palette[data & 0x0F]; p++;
+ *p = palette[data & 0x0F]; p++;
+ *p = palette[data & 0x0F]; p++;
+ }
+}
+
+static MC6845_UPDATE_ROW( cga_gfx_2bpp_update_row ) {
+ isa8_aga_device *aga = downcast<isa8_aga_device *>(device->owner());
+ UINT8 *videoram = aga->m_videoram;
+ const rgb_t *palette = aga->m_palette->palette()->entry_list_raw();
+ UINT32 *p = &bitmap.pix32(y);
+ int i;
+
+// if ( y == 0 ) logerror("cga_gfx_2bpp_update_row\n");
+ for ( i = 0; i < x_count; i++ ) {
+ UINT16 offset = ( ( ( ma + i ) << 1 ) & 0x1fff ) | ( ( y & 1 ) << 13 );
+ UINT8 data = videoram[ offset ];
+
+ *p = palette[aga->m_cga_palette_lut_2bpp[ ( data >> 6 ) & 0x03 ]]; p++;
+ *p = palette[aga->m_cga_palette_lut_2bpp[ ( data >> 4 ) & 0x03 ]]; p++;
+ *p = palette[aga->m_cga_palette_lut_2bpp[ ( data >> 2 ) & 0x03 ]]; p++;
+ *p = palette[aga->m_cga_palette_lut_2bpp[ data & 0x03 ]]; p++;
+
+ data = videoram[ offset+1 ];
+
+ *p = palette[aga->m_cga_palette_lut_2bpp[ ( data >> 6 ) & 0x03 ]]; p++;
+ *p = palette[aga->m_cga_palette_lut_2bpp[ ( data >> 4 ) & 0x03 ]]; p++;
+ *p = palette[aga->m_cga_palette_lut_2bpp[ ( data >> 2 ) & 0x03 ]]; p++;
+ *p = palette[aga->m_cga_palette_lut_2bpp[ data & 0x03 ]]; p++;
+ }
+}
+
+static MC6845_UPDATE_ROW( cga_gfx_1bpp_update_row ) {
+ isa8_aga_device *aga = downcast<isa8_aga_device *>(device->owner());
+ UINT8 *videoram = aga->m_videoram;
+ const rgb_t *palette = aga->m_palette->palette()->entry_list_raw();
+ UINT32 *p = &bitmap.pix32(y);
+ UINT8 fg = aga->m_cga_color_select & 0x0F;
+ int i;
+
+ if ( y == 0 ) logerror("cga_gfx_1bpp_update_row\n");
+ for ( i = 0; i < x_count; i++ ) {
+ UINT16 offset = ( ( ( ma + i ) << 1 ) & 0x1fff ) | ( ( ra & 1 ) << 13 );
+ UINT8 data = videoram[ offset ];
+
+ *p = palette[( data & 0x80 ) ? fg : 0]; p++;
+ *p = palette[( data & 0x40 ) ? fg : 0]; p++;
+ *p = palette[( data & 0x20 ) ? fg : 0]; p++;
+ *p = palette[( data & 0x10 ) ? fg : 0]; p++;
+ *p = palette[( data & 0x08 ) ? fg : 0]; p++;
+ *p = palette[( data & 0x04 ) ? fg : 0]; p++;
+ *p = palette[( data & 0x02 ) ? fg : 0]; p++;
+ *p = palette[( data & 0x01 ) ? fg : 0]; p++;
+
+ data = videoram[ offset + 1 ];
+
+ *p = palette[( data & 0x80 ) ? fg : 0]; p++;
+ *p = palette[( data & 0x40 ) ? fg : 0]; p++;
+ *p = palette[( data & 0x20 ) ? fg : 0]; p++;
+ *p = palette[( data & 0x10 ) ? fg : 0]; p++;
+ *p = palette[( data & 0x08 ) ? fg : 0]; p++;
+ *p = palette[( data & 0x04 ) ? fg : 0]; p++;
+ *p = palette[( data & 0x02 ) ? fg : 0]; p++;
+ *p = palette[( data & 0x01 ) ? fg : 0]; p++;
+ }
+}
+
+/*************************************
+ *
+ * AGA MDA/CGA read/write handlers
+ *
+ *************************************/
+
+READ8_MEMBER ( isa8_aga_device::pc_aga_mda_r )
+{
+ UINT8 data = 0xFF;
+
+ if ( m_mode == AGA_MONO ) {
+ switch( offset )
+ {
+ case 0: case 2: case 4: case 6:
+ /* return last written mc6845 address value here? */
+ break;
+ case 1: case 3: case 5: case 7:
+ data = m_mc6845->register_r(space, offset);
+ break;
+ case 10:
+ data = m_vsync | 0x08 | m_hsync;
+ break;
+ /* 12, 13, 14 are the LPT1 ports */
+ }
+ }
+ return data;
+}
+
+WRITE8_MEMBER ( isa8_aga_device::pc_aga_mda_w )
+{
+ if ( m_mode == AGA_MONO ) {
+ switch( offset )
+ {
+ case 0: case 2: case 4: case 6:
+ m_mc6845->address_w( space, offset, data );
+ break;
+ case 1: case 3: case 5: case 7:
+ m_mc6845->register_w( space, offset, data );
+ break;
+ case 8:
+ m_mda_mode_control = data;
+
+ switch( m_mda_mode_control & 0x2a ) {
+ case 0x08:
+ m_update_row = mda_text_inten_update_row;
+ break;
+ case 0x28:
+ m_update_row = mda_text_blink_update_row;
+ break;
+ default:
+ m_update_row = NULL;
+ }
+ break;
+ }
+ }
+}
+
+
+READ8_MEMBER ( isa8_aga_device::pc_aga_cga_r )
+{
+ UINT8 data = 0xFF;
+
+ if ( m_mode == AGA_COLOR ) {
+ switch( offset ) {
+ case 0: case 2: case 4: case 6:
+ /* return last written mc6845 address value here? */
+ break;
+ case 1: case 3: case 5: case 7:
+ data = m_mc6845->register_r( space, offset);
+ break;
+ case 10:
+ data = m_vsync | ( ( data & 0x40 ) >> 4 ) | m_hsync;
+ break;
+ }
+ }
+ return data;
+}
+
+void isa8_aga_device::set_palette_luts(void)
+{
+ /* Setup 2bpp palette lookup table */
+ if ( m_cga_mode_control & 0x10 )
+ {
+ m_cga_palette_lut_2bpp[0] = 0;
+ }
+ else
+ {
+ m_cga_palette_lut_2bpp[0] = m_cga_color_select & 0x0F;
+ }
+ if ( m_cga_mode_control & 0x04 )
+ {
+ m_cga_palette_lut_2bpp[1] = ( ( m_cga_color_select & 0x10 ) >> 1 ) | 3;
+ m_cga_palette_lut_2bpp[2] = ( ( m_cga_color_select & 0x10 ) >> 1 ) | 4;
+ m_cga_palette_lut_2bpp[3] = ( ( m_cga_color_select & 0x10 ) >> 1 ) | 7;
+ }
+ else
+ {
+ if ( m_cga_color_select & 0x20 )
+ {
+ m_cga_palette_lut_2bpp[1] = ( ( m_cga_color_select & 0x10 ) >> 1 ) | 3;
+ m_cga_palette_lut_2bpp[2] = ( ( m_cga_color_select & 0x10 ) >> 1 ) | 5;
+ m_cga_palette_lut_2bpp[3] = ( ( m_cga_color_select & 0x10 ) >> 1 ) | 7;
+ }
+ else
+ {
+ m_cga_palette_lut_2bpp[1] = ( ( m_cga_color_select & 0x10 ) >> 1 ) | 2;
+ m_cga_palette_lut_2bpp[2] = ( ( m_cga_color_select & 0x10 ) >> 1 ) | 4;
+ m_cga_palette_lut_2bpp[3] = ( ( m_cga_color_select & 0x10 ) >> 1 ) | 6;
+ }
+ }
+ //logerror("2bpp lut set to %d,%d,%d,%d\n", cga.palette_lut_2bpp[0], cga.palette_lut_2bpp[1], cga.palette_lut_2bpp[2], cga.palette_lut_2bpp[3]);
+}
+
+
+WRITE8_MEMBER (isa8_aga_device:: pc_aga_cga_w )
+{
+ if ( m_mode == AGA_COLOR ) {
+
+ switch(offset) {
+ case 0: case 2: case 4: case 6:
+ m_mc6845->address_w( space, offset, data );
+ break;
+ case 1: case 3: case 5: case 7:
+ m_mc6845->register_w( space, offset, data );
+ break;
+ case 8:
+ m_cga_mode_control = data;
+
+ //logerror("mode set to %02X\n", m_cga_mode_control & 0x3F );
+ switch ( m_cga_mode_control & 0x3F ) {
+ case 0x08: case 0x09: case 0x0C: case 0x0D:
+ m_mc6845->set_hpixels_per_column( 8 );
+ m_update_row = cga_text_inten_update_row;
+ break;
+ case 0x0A: case 0x0B: case 0x2A: case 0x2B:
+ m_mc6845->set_hpixels_per_column( 8 );
+ if ( CGA_MONITOR == CGA_MONITOR_COMPOSITE ) {
+ m_update_row = cga_gfx_4bppl_update_row;
+ } else {
+ m_update_row = cga_gfx_2bpp_update_row;
+ }
+ break;
+ case 0x0E: case 0x0F: case 0x2E: case 0x2F:
+ m_mc6845->set_hpixels_per_column( 8 );
+ m_update_row = cga_gfx_2bpp_update_row;
+ break;
+ case 0x18: case 0x19: case 0x1C: case 0x1D:
+ m_mc6845->set_hpixels_per_column( 8 );
+ m_update_row = cga_text_inten_alt_update_row;
+ break;
+ case 0x1A: case 0x1B: case 0x3A: case 0x3B:
+ m_mc6845->set_hpixels_per_column( 8 );
+ if ( CGA_MONITOR == CGA_MONITOR_COMPOSITE ) {
+ m_update_row = cga_gfx_4bpph_update_row;
+ } else {
+ m_update_row = cga_gfx_1bpp_update_row;
+ }
+ break;
+ case 0x1E: case 0x1F: case 0x3E: case 0x3F:
+ m_mc6845->set_hpixels_per_column( 16 );
+ m_update_row = cga_gfx_1bpp_update_row;
+ break;
+ case 0x28: case 0x29: case 0x2C: case 0x2D:
+ m_mc6845->set_hpixels_per_column( 8 );
+ m_update_row = cga_text_blink_update_row;
+ break;
+ case 0x38: case 0x39: case 0x3C: case 0x3D:
+ m_mc6845->set_hpixels_per_column( 8 );
+ m_update_row = cga_text_blink_alt_update_row;
+ break;
+ default:
+ m_update_row = NULL;
+ break;
+ }
+
+ set_palette_luts();
+ break;
+ case 9:
+ m_cga_color_select = data;
+ set_palette_luts();
+ break;
+ }
+ }
+}
+
+/*************************************/
+
+void isa8_aga_device::pc_aga_set_mode( AGA_MODE mode)
+{
+ m_mode = mode;
+
+ switch (m_mode) {
+ case AGA_COLOR:
+ m_mc6845->set_clock( XTAL_14_31818MHz/8 );
+ break;
+ case AGA_MONO:
+ m_mc6845->set_clock( 16257000/9 );
+ break;
+ case AGA_OFF:
+ break;
+ }
+}
+
+
+WRITE8_MEMBER ( isa8_aga_device::pc_aga_videoram_w )
+{
+ switch (m_mode) {
+ case AGA_COLOR:
+ if (offset>=0x8000)
+ m_videoram[offset-0x8000]=data;
+ break;
+ case AGA_MONO:
+ m_videoram[offset]=data;
+ break;
+ case AGA_OFF: break;
+ }
+}
+
+READ8_MEMBER( isa8_aga_device::pc_aga_videoram_r )
+{
+ switch (m_mode) {
+ case AGA_COLOR:
+ if (offset>=0x8000) return m_videoram[offset-0x8000];
+ return 0;
+ case AGA_MONO:
+ return m_videoram[offset];
+ case AGA_OFF: break;
+ }
+ return 0;
+}
+
+READ8_MEMBER( isa8_aga_pc200_device::pc200_videoram_r )
+{
+ switch (m_mode)
+ {
+ default:
+ if (offset>=0x8000) return m_videoram[offset-0x8000];
+ return 0;
+ case AGA_MONO:
+ return m_videoram[offset];
+ }
+ return 0;
+}
+
+WRITE8_MEMBER ( isa8_aga_pc200_device::pc200_videoram_w )
+{
+ switch (m_mode)
+ {
+ default:
+ if (offset>=0x8000)
+ m_videoram[offset-0x8000]=data;
+ break;
+ case AGA_MONO:
+ m_videoram[offset]=data;
+ break;
+ }
+}
+
+// in reality it is of course only 1 graphics adapter,
+// but now cga and mda are splitted in mess
+WRITE8_MEMBER( isa8_aga_pc200_device::pc200_cga_w )
+{
+ pc_aga_cga_w(space, offset,data,mem_mask);
+ switch(offset) {
+ case 4:
+ m_portd |= 0x20;
+ break;
+ case 8:
+ m_port8 = data;
+ m_portd |= 0x80;
+ break;
+ case 0xe:
+ m_portd = 0x1f;
+ if (data & 0x80)
+ m_portd |= 0x40;
+
+/* The bottom 3 bits of this port are:
+ * Bit 2: Disable AGA
+ * Bit 1: Select MDA
+ * Bit 0: Select external display (monitor) rather than internal display
+ * (TV for PC200; LCD for PPC512) */
+ if ((m_porte & 7) != (data & 7))
+ {
+ if (data & 4)
+ pc_aga_set_mode(AGA_OFF);
+ else if (data & 2)
+ pc_aga_set_mode(AGA_MONO);
+ else
+ pc_aga_set_mode(AGA_COLOR);
+ }
+ m_porte = data;
+ break;
+
+ default:
+ break;
+ }
+}
+
+READ8_MEMBER ( isa8_aga_pc200_device::pc200_cga_r )
+{
+ UINT8 result = 0xff;
+
+ switch(offset) {
+ case 8:
+ result = m_port8;
+ break;
+
+ case 0xd:
+ // after writing 0x80 to 0x3de, bits 7..5 of 0x3dd from the 2nd read must be 0
+ result=m_portd;
+ m_portd&=0x1f;
+ break;
+
+ case 0xe:
+ // 0x20 low cga
+ // 0x10 low special
+ result = machine().root_device().ioport("DSW0")->read() & 0x38;
+ break;
+
+ default:
+ result = pc_aga_cga_r(space, offset, mem_mask);
+ break;
+ }
+ return result;
+}
diff --git a/src/emu/bus/isa/aga.h b/src/emu/bus/isa/aga.h
new file mode 100644
index 00000000000..baeecb13f55
--- /dev/null
+++ b/src/emu/bus/isa/aga.h
@@ -0,0 +1,114 @@
+/*
+ pc cga/mda combi adapters
+
+ one type hardware switchable between cga and mda/hercules
+ another type software switchable between cga and mda/hercules
+
+ some support additional modes like
+ commodore pc10 320x200 in 16 colors
+
+
+ // aga
+ // 256 8x8 thick chars
+ // 256 8x8 thin chars
+ // 256 9x14 in 8x16 chars, line 3 is connected to a10
+ ROM_LOAD("aga.chr", 0x00000, 0x02000, CRC(aca81498))
+ // hercules font of above
+ ROM_LOAD("hercules.chr", 0x00000, 0x1000, CRC(7e8c9d76))
+
+*/
+#ifndef __ISA_AGA_H__
+#define __ISA_AGA_H__
+
+#include "emu.h"
+#include "isa.h"
+#include "cga.h"
+#include "video/mc6845.h"
+
+enum AGA_MODE { AGA_OFF, AGA_COLOR, AGA_MONO };
+
+// ======================> isa8_aga_device
+
+class isa8_aga_device :
+ public device_t,
+ public device_isa8_card_interface
+{
+public:
+ // construction/destruction
+ isa8_aga_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
+ isa8_aga_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, UINT32 clock, const char *shortname, const char *source);
+ // device-level overrides
+ virtual void device_start();
+ // optional information overrides
+ virtual machine_config_constructor device_mconfig_additions() const;
+ virtual const rom_entry *device_rom_region() const;
+ virtual ioport_constructor device_input_ports() const;
+
+ DECLARE_WRITE_LINE_MEMBER( hsync_changed );
+ DECLARE_WRITE_LINE_MEMBER( vsync_changed );
+
+ DECLARE_READ8_MEMBER( pc_aga_mda_r );
+ DECLARE_WRITE8_MEMBER( pc_aga_mda_w );
+ DECLARE_READ8_MEMBER( pc_aga_cga_r );
+ DECLARE_WRITE8_MEMBER( pc_aga_cga_w );
+ void set_palette_luts(void);
+ void pc_aga_set_mode(AGA_MODE mode);
+ DECLARE_WRITE8_MEMBER( pc_aga_videoram_w );
+ DECLARE_READ8_MEMBER( pc_aga_videoram_r );
+
+ required_device<palette_device> m_palette;
+ required_device<mc6845_device> m_mc6845;
+
+ required_ioport m_cga_config;
+
+ mc6845_update_row_func m_update_row;
+ AGA_MODE m_mode;
+ UINT8 m_mda_mode_control;
+ UINT8 m_mda_status;
+ UINT8 *m_mda_chr_gen;
+
+ UINT8 m_cga_mode_control;
+ UINT8 m_cga_color_select;
+ UINT8 m_cga_status;
+ UINT8 *m_cga_chr_gen;
+
+ int m_framecnt;
+ UINT8 m_vsync;
+ UINT8 m_hsync;
+
+
+ UINT8 m_cga_palette_lut_2bpp[4];
+
+ UINT8 *m_videoram;
+};
+
+// device type definition
+extern const device_type ISA8_AGA;
+
+// ======================> isa8_aga_pc200_device
+
+class isa8_aga_pc200_device :
+ public isa8_aga_device
+{
+public:
+ // construction/destruction
+ isa8_aga_pc200_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock);
+ // device-level overrides
+ virtual void device_start();
+ // optional information overrides
+ virtual const rom_entry *device_rom_region() const;
+
+ UINT8 m_port8;
+ UINT8 m_portd;
+ UINT8 m_porte;
+
+ DECLARE_READ8_MEMBER( pc200_videoram_r );
+ DECLARE_WRITE8_MEMBER( pc200_videoram_w );
+ DECLARE_WRITE8_MEMBER( pc200_cga_w );
+ DECLARE_READ8_MEMBER( pc200_cga_r );
+};
+
+// device type definition
+extern const device_type ISA8_AGA_PC200;
+
+#endif
diff --git a/src/emu/bus/isa/cga.c b/src/emu/bus/isa/cga.c
index c7b3647f4d4..ef1224b4690 100644
--- a/src/emu/bus/isa/cga.c
+++ b/src/emu/bus/isa/cga.c
@@ -83,12 +83,10 @@ TODO:
#include "emu.h"
#include "video/mc6845.h"
#include "cga.h"
+#include "video/cgapal.h"
#define VERBOSE_CGA 0 /* CGA (Color Graphics Adapter) */
-#define CGA_PALETTE_SETS 83 /* one for colour, one for mono,
- * 81 for colour composite */
-
#define CGA_SCREEN_NAME "screen"
#define CGA_MC6845_NAME "mc6845_cga"
@@ -163,437 +161,6 @@ INPUT_PORTS_END
#define CGA_CHIPSET_ATI 0x60 /* ATI (supports Plantronics) */
#define CGA_CHIPSET_PARADISE 0x80 /* Paradise (used in PC1640) */
-
-/* CGA palettes
- *
- * The first 16 are for RGB monitors
- * The next 16 are for greyscale modes
- * The next 16 are for text modes on colour composite
- * The next 16*16 are Mode 6 (colour composite) }
- * The next 64*16 are Mode 4 (colour composite) } both indexed by the CGA colour select register 0x3D9
- *
- */
-
-const unsigned char cga_palette[16 * CGA_PALETTE_SETS][3] =
-{
-/* RGB colours */
- { 0x00, 0x00, 0x00 }, { 0x00, 0x00, 0xaa }, { 0x00, 0xaa, 0x00 }, { 0x00, 0xaa, 0xaa },
- { 0xaa, 0x00, 0x00 }, { 0xaa, 0x00, 0xaa }, { 0xaa, 0x55, 0x00 }, { 0xaa, 0xaa, 0xaa },
- { 0x55, 0x55, 0x55 }, { 0x55, 0x55, 0xff }, { 0x55, 0xff, 0x55 }, { 0x55, 0xff, 0xff },
- { 0xff, 0x55, 0x55 }, { 0xff, 0x55, 0xff }, { 0xff, 0xff, 0x55 }, { 0xff, 0xff, 0xff },
-/* Greyscale */
- { 0x00, 0x00, 0x00 }, { 0x11, 0x11, 0x11 }, { 0x44, 0x44, 0x44 }, { 0x55, 0x55, 0x55 },
- { 0x22, 0x22, 0x22 }, { 0x33, 0x33, 0x33 }, { 0x66, 0x66, 0x66 }, { 0x77, 0x77, 0x77 },
- { 0x88, 0x88, 0x88 }, { 0x99, 0x99, 0x99 }, { 0xCC, 0xCC, 0xCC }, { 0xDD, 0xDD, 0xDD },
- { 0xAA, 0xAA, 0xAA }, { 0xBB, 0xBB, 0xBB }, { 0xEE, 0xEE, 0xEE }, { 0xFF, 0xFF, 0xFF },
-/* Text mode, composite monitor */
- { 0x00, 0x00, 0x00 }, { 0x0E, 0x00, 0x7A }, { 0x07, 0x55, 0x00 }, { 0x02, 0x65, 0x39 },
- { 0x51, 0x00, 0x1A }, { 0x54, 0x00, 0x76 }, { 0x48, 0x63, 0x00 }, { 0x8c, 0x8c, 0x8c },
- { 0x38, 0x38, 0x38 }, { 0x58, 0x49, 0xD5 }, { 0x5F, 0xAD, 0x26 }, { 0x5B, 0xB9, 0xAC },
- { 0xAA, 0x4A, 0x5E }, { 0xA7, 0x55, 0xD2 }, { 0xA2, 0xB9, 0x31 }, { 0xE2, 0xE2, 0xE2 },
-/* Composite hi-res, colour reg = 0 */
- { 0x00, 0x00, 0x00 }, { 0x00, 0x00, 0x00 }, { 0x00, 0x00, 0x00 }, { 0x00, 0x00, 0x00 },
- { 0x00, 0x00, 0x00 }, { 0x00, 0x00, 0x00 }, { 0x00, 0x00, 0x00 }, { 0x00, 0x00, 0x00 },
- { 0x00, 0x00, 0x00 }, { 0x00, 0x00, 0x00 }, { 0x00, 0x00, 0x00 }, { 0x00, 0x00, 0x00 },
- { 0x00, 0x00, 0x00 }, { 0x00, 0x00, 0x00 }, { 0x00, 0x00, 0x00 }, { 0x00, 0x00, 0x00 },
-/* Composite hi-res, colour reg = 1 */
- { 0x00, 0x00, 0x00 }, { 0x00, 0x04, 0x04 }, { 0x00, 0x00, 0x61 }, { 0x00, 0x00, 0x6b },
- { 0x25, 0x00, 0x1E }, { 0x15, 0x00, 0x23 }, { 0x18, 0x00, 0x87 }, { 0x06, 0x00, 0x91 },
- { 0x00, 0x00, 0x00 }, { 0x00, 0x0b, 0x00 }, { 0x00, 0x00, 0x4C }, { 0x00, 0x02, 0x52 },
- { 0x24, 0x00, 0x08 }, { 0x0E, 0x00, 0x0D }, { 0x18, 0x00, 0x6f }, { 0x07, 0x00, 0x7C },
-/* Composite hi-res, colour reg = 2 */
- { 0x00, 0x00, 0x00 }, { 0x00, 0x28, 0x00 }, { 0x01, 0x00, 0x46 }, { 0x00, 0x21, 0x36 },
- { 0x22, 0x00, 0x01 }, { 0x00, 0x21, 0x00 }, { 0x1b, 0x00, 0x43 }, { 0x00, 0x22, 0x33 },
- { 0x07, 0x0D, 0x00 }, { 0x00, 0x4B, 0x00 }, { 0x04, 0x0E, 0x00 }, { 0x00, 0x57, 0x00 },
- { 0x25, 0x02, 0x00 }, { 0x01, 0x46, 0x00 }, { 0x30, 0x04, 0x00 }, { 0x04, 0x53, 0x00 },
-/* Composite hi-res, colour reg = 3 */
- { 0x00, 0x00, 0x00 }, { 0x00, 0x30, 0x00 }, { 0x00, 0x00, 0x8E }, { 0x00, 0x38, 0x87 },
- { 0x2E, 0x00, 0x01 }, { 0x00, 0x21, 0x00 }, { 0x22, 0x00, 0x8C }, { 0x00, 0x35, 0x95 },
- { 0x00, 0x0F, 0x00 }, { 0x00, 0x4F, 0x00 }, { 0x00, 0x0B, 0x3F }, { 0x00, 0x62, 0x45 },
- { 0x29, 0x00, 0x00 }, { 0x00, 0x4E, 0x00 }, { 0x35, 0x04, 0x48 }, { 0x01, 0x62, 0x49 },
-/* Composite hi-res, colour reg = 4 */
- { 0x00, 0x00, 0x00 }, { 0x00, 0x06, 0x02 }, { 0x01, 0x00, 0x1f }, { 0x00, 0x00, 0x24 },
- { 0x54, 0x00, 0x38 }, { 0x25, 0x00, 0x23 }, { 0x3A, 0x00, 0x4f }, { 0x29, 0x00, 0x56 },
- { 0x10, 0x03, 0x00 }, { 0x06, 0x08, 0x00 }, { 0x15, 0x00, 0x00 }, { 0x02, 0x03, 0x00 },
- { 0x82, 0x00, 0x00 }, { 0x49, 0x00, 0x00 }, { 0x5B, 0x00, 0x0b }, { 0x52, 0x00, 0x0c },
-/* Composite hi-res, colour reg = 5 */
- { 0x00, 0x00, 0x00 }, { 0x00, 0x2c, 0x00 }, { 0x06, 0x01, 0x57 }, { 0x00, 0x22, 0x42 },
- { 0x33, 0x00, 0x01 }, { 0x00, 0x26, 0x00 }, { 0x3a, 0x00, 0x54 }, { 0x08, 0x1D, 0x54 },
- { 0x13, 0x17, 0x00 }, { 0x00, 0x64, 0x00 }, { 0x29, 0x15, 0x00 }, { 0x00, 0x64, 0x00 },
- { 0x59, 0x0A, 0x00 }, { 0x30, 0x61, 0x00 }, { 0x7A, 0x06, 0x00 }, { 0x4A, 0x64, 0x00 },
-/* Composite hi-res, colour reg = 6 */
- { 0x00, 0x00, 0x00 }, { 0x00, 0x33, 0x00 }, { 0x06, 0x00, 0x5E }, { 0x00, 0x22, 0x45 },
- { 0x34, 0x00, 0x04 }, { 0x00, 0x1e, 0x00 }, { 0x3d, 0x00, 0x4c }, { 0x0c, 0x22, 0x58 },
- { 0x18, 0x19, 0x00 }, { 0x00, 0x62, 0x00 }, { 0x2b, 0x14, 0x00 }, { 0x01, 0x64, 0x00 },
- { 0x57, 0x0f, 0x00 }, { 0x29, 0x63, 0x00 }, { 0x78, 0x09, 0x00 }, { 0x51, 0x61, 0x00 },
-/* Composite hi-res, colour reg = 7 */
- { 0x00, 0x00, 0x00 }, { 0x00, 0x3C, 0x01 }, { 0x04, 0x00, 0xC5 }, { 0x00, 0x4C, 0xC7 },
- { 0x6A, 0x00, 0x15 }, { 0x28, 0x28, 0x24 }, { 0x8A, 0x00, 0xF8 }, { 0x70, 0x61, 0xFF },
- { 0x20, 0x33, 0x00 }, { 0x00, 0x85, 0x00 }, { 0x2E, 0x25, 0x28 }, { 0x00, 0x98, 0x3B },
- { 0xb1, 0x11, 0x00 }, { 0x6A, 0x75, 0x00 }, { 0xcc, 0x16, 0x81 }, { 0x91, 0x8e, 0x91 },
-/* Composite hi-res, colour reg = 8 */
- { 0x00, 0x00, 0x00 }, { 0x00, 0x12, 0x0F }, { 0x04, 0x00, 0x5F }, { 0x00, 0x02, 0x67 },
- { 0x31, 0x00, 0x01 }, { 0x04, 0x01, 0x04 }, { 0x37, 0x00, 0x52 }, { 0x17, 0x00, 0x6d },
- { 0x00, 0x10, 0x00 }, { 0x00, 0x29, 0x00 }, { 0x04, 0x03, 0x04 }, { 0x00, 0x24, 0x16 },
- { 0x2f, 0x00, 0x00 }, { 0x07, 0x23, 0x00 }, { 0x43, 0x00, 0x08 }, { 0x25, 0x23, 0x24 },
-/* Composite hi-res, colour reg = 9 */
- { 0x00, 0x00, 0x00 }, { 0x00, 0x19, 0x14 }, { 0x00, 0x00, 0xc2 }, { 0x00, 0x1c, 0xed },
- { 0x5e, 0x00, 0x13 }, { 0x2c, 0x03, 0x3a }, { 0x78, 0x00, 0xfa }, { 0x49, 0x11, 0xff },
- { 0x00, 0x15, 0x00 }, { 0x00, 0x40, 0x00 }, { 0x0d, 0x11, 0x68 }, { 0x00, 0x4f, 0x9c },
- { 0x67, 0x00, 0x00 }, { 0x39, 0x36, 0x00 }, { 0x91, 0x05, 0xa6 }, { 0x62, 0x45, 0xdc },
-/* Composite hi-res, colour reg = A */
- { 0x00, 0x00, 0x00 }, { 0x00, 0x4B, 0x08 }, { 0x05, 0x00, 0xAA }, { 0x00, 0x50, 0xc7 },
- { 0x58, 0x00, 0x06 }, { 0x05, 0x44, 0x06 }, { 0x75, 0x00, 0xb0 }, { 0x2e, 0x4f, 0xdc },
- { 0x0c, 0x2f, 0x00 }, { 0x00, 0xa7, 0x00 }, { 0x26, 0x2e, 0x03 }, { 0x00, 0xb4, 0x24 },
- { 0x84, 0x1b, 0x00 }, { 0x2d, 0xa5, 0x00 }, { 0xa5, 0x2a, 0x16 }, { 0x5f, 0xb2, 0x2a },
-/* Composite hi-res, colour reg = B */
- { 0x00, 0x00, 0x00 }, { 0x00, 0x59, 0x07 }, { 0x00, 0x08, 0xf0 }, { 0x00, 0x06, 0xfd },
- { 0x69, 0x00, 0x09 }, { 0x0d, 0x4c, 0x10 }, { 0x8f, 0x00, 0xf4 }, { 0x38, 0x66, 0xff },
- { 0x02, 0x27, 0x00 }, { 0x00, 0xac, 0x00 }, { 0x19, 0x2f, 0x6d }, { 0x00, 0xc5, 0x82 },
- { 0x7b, 0x18, 0x00 }, { 0x30, 0xa7, 0x00 }, { 0xac, 0x2b, 0x81 }, { 0x5b, 0xc0, 0xa4 },
-/* Composite hi-res, colour reg = C */
- { 0x00, 0x00, 0x00 }, { 0x00, 0x1C, 0x0C }, { 0x0a, 0x00, 0x7c }, { 0x00, 0x0d, 0x8f },
- { 0x6e, 0x00, 0x18 }, { 0x48, 0x02, 0x4a }, { 0x95, 0x00, 0xc3 }, { 0x68, 0x01, 0xef },
- { 0x12, 0x1d, 0x00 }, { 0x00, 0x53, 0x00 }, { 0x33, 0x21, 0x00 }, { 0x05, 0x52, 0x13 },
- { 0xb4, 0x09, 0x00 }, { 0x87, 0x41, 0x00 }, { 0xd8, 0x07, 0x3a }, { 0xb0, 0x49, 0x63 },
-/* Composite hi-res, colour reg = D */
- { 0x00, 0x00, 0x00 }, { 0x00, 0x1d, 0x17 }, { 0x00, 0x08, 0xcf }, { 0x00, 0x1b, 0xf2 },
- { 0x83, 0x00, 0x30 }, { 0x4c, 0x08, 0x53 }, { 0xae, 0x00, 0xfa }, { 0x85, 0x0b, 0xff },
- { 0x09, 0x19, 0x00 }, { 0x00, 0x57, 0x00 }, { 0x21, 0x15, 0x4f }, { 0x00, 0x5e, 0x89 },
- { 0xb0, 0x04, 0x00 }, { 0x76, 0x4e, 0x00 }, { 0xe2, 0x0a, 0xa9 }, { 0xae, 0x56, 0xe1 },
-/* Composite hi-res, colour reg = E */
- { 0x00, 0x00, 0x00 }, { 0x00, 0x57, 0x06 }, { 0x17, 0x00, 0xc3 }, { 0x00, 0x55, 0xd9 },
- { 0x6f, 0x00, 0x06 }, { 0x18, 0x49, 0x0d }, { 0xa4, 0x00, 0xcd }, { 0x4e, 0x4c, 0xf7 },
- { 0x1c, 0x3f, 0x00 }, { 0x00, 0xbf, 0x00 }, { 0x51, 0x35, 0x00 }, { 0x06, 0xc4, 0x1b },
- { 0xb6, 0x2d, 0x00 }, { 0x73, 0xb2, 0x00 }, { 0xf5, 0x30, 0x21 }, { 0xaa, 0xbf, 0x2f },
-/* Composite hi-res, colour reg = F */
- { 0x00, 0x00, 0x00 }, { 0x00, 0x68, 0x10 }, { 0x10, 0x00, 0xff }, { 0x00, 0x7c, 0xFF },
- { 0xb3, 0x00, 0x2A }, { 0x53, 0x55, 0x51 }, { 0xf0, 0x00, 0xff }, { 0x95, 0x72, 0xff },
- { 0x25, 0x3e, 0x00 }, { 0x00, 0xda, 0x00 }, { 0x58, 0x52, 0x56 }, { 0x00, 0xf8, 0x7f },
- { 0xf8, 0x2c, 0x00 }, { 0xa8, 0xcf, 0x00 }, { 0xff, 0x41, 0xb8 }, { 0xed, 0xea, 0xed },
-/* Composite lo-res, colour reg = 0 */
- { 0x00, 0x00, 0x00 }, { 0x00, 0x26, 0x34 }, { 0x00, 0x00, 0x24 }, { 0x00, 0x25, 0x46 },
- { 0x29, 0x03, 0x00 }, { 0x04, 0x55, 0x00 }, { 0x1f, 0x0c, 0x00 }, { 0x0e, 0x53, 0x03 },
- { 0x50, 0x00, 0x00 }, { 0x33, 0x36, 0x2b }, { 0x51, 0x00, 0x0b }, { 0x43, 0x37, 0x44 },
- { 0x60, 0x07, 0x00 }, { 0x3c, 0x61, 0x00 }, { 0x59, 0x1c, 0x00 }, { 0x4a, 0x64, 0x00 },
-/* Composite lo-res, colour reg = 1 */
- { 0x07, 0x00, 0x7d }, { 0x00, 0x21, 0x4e }, { 0x15, 0x00, 0x36 }, { 0x04, 0x19, 0x77 },
- { 0x16, 0x1a, 0x00 }, { 0x04, 0x55, 0x00 }, { 0x23, 0x0b, 0x00 }, { 0x13, 0x51, 0x03 },
- { 0x41, 0x02, 0x3e }, { 0x2e, 0x33, 0x24 }, { 0x51, 0x00, 0x14 }, { 0x41, 0x33, 0x46 },
- { 0x51, 0x2b, 0x00 }, { 0x3f, 0x60, 0x00 }, { 0x60, 0x17, 0x00 }, { 0x4d, 0x61, 0x00 },
-/* Composite lo-res, colour reg = 2 */
- { 0x03, 0x55, 0x00 }, { 0x03, 0x55, 0x00 }, { 0x21, 0x0c, 0x00 }, { 0x11, 0x51, 0x03 },
- { 0x03, 0x55, 0x00 }, { 0x03, 0x55, 0x00 }, { 0x21, 0x0c, 0x00 }, { 0x11, 0x51, 0x03 },
- { 0x31, 0x37, 0x29 }, { 0x30, 0x36, 0x2a }, { 0x51, 0x00, 0x11 }, { 0x41, 0x34, 0x46 },
- { 0x3c, 0x63, 0x00 }, { 0x3d, 0x63, 0x00 }, { 0x5f, 0x17, 0x00 }, { 0x4d, 0x61, 0x00 },
-/* Composite lo-res, colour reg = 3 */
- { 0x04, 0x61, 0x4e }, { 0x05, 0x49, 0x02 }, { 0x1f, 0x04, 0x00 }, { 0x12, 0x47, 0x13 },
- { 0x03, 0x68, 0x2f }, { 0x05, 0x54, 0x00 }, { 0x1e, 0x0e, 0x00 }, { 0x0f, 0x51, 0x01 },
- { 0x26, 0x46, 0x73 }, { 0x2f, 0x34, 0x27 }, { 0x50, 0x00, 0x0b }, { 0x48, 0x31, 0x47 },
- { 0x3e, 0x70, 0x1e }, { 0x40, 0x5f, 0x00 }, { 0x57, 0x1d, 0x00 }, { 0x4a, 0x62, 0x00 },
-/* Composite lo-res, colour reg = 4 */
- { 0x52, 0x00, 0x14 }, { 0x2e, 0x32, 0x25 }, { 0x52, 0x00, 0x14 }, { 0x46, 0x2f, 0x47 },
- { 0x1f, 0x09, 0x00 }, { 0x04, 0x55, 0x00 }, { 0x21, 0x0e, 0x00 }, { 0x11, 0x50, 0x02 },
- { 0x52, 0x00, 0x14 }, { 0x2d, 0x33, 0x25 }, { 0x52, 0x00, 0x14 }, { 0x40, 0x36, 0x3f },
- { 0x5c, 0x18, 0x00 }, { 0x40, 0x5f, 0x00 }, { 0x5e, 0x19, 0x00 }, { 0x4b, 0x62, 0x00 },
-/* Composite lo-res, colour reg = 5 */
- { 0x51, 0x00, 0x81 }, { 0x2a, 0x2a, 0x3f }, { 0x4f, 0x00, 0x1c }, { 0x3b, 0x2b, 0x5c },
- { 0x22, 0x1b, 0x13 }, { 0x04, 0x55, 0x00 }, { 0x21, 0x0e, 0x00 }, { 0x0e, 0x52, 0x04 },
- { 0x4c, 0x03, 0x59 }, { 0x2e, 0x32, 0x25 }, { 0x51, 0x00, 0x0b }, { 0x3e, 0x37, 0x3d },
- { 0x5d, 0x2a, 0x03 }, { 0x3d, 0x60, 0x00 }, { 0x5d, 0x19, 0x00 }, { 0x4a, 0x63, 0x00 },
-/* Composite lo-res, colour reg = 6 */
- { 0x4b, 0x60, 0x00 }, { 0x41, 0x5f, 0x00 }, { 0x5b, 0x1a, 0x00 }, { 0x4b, 0x60, 0x00 },
- { 0x0e, 0x51, 0x03 }, { 0x03, 0x55, 0x00 }, { 0x22, 0x0b, 0x00 }, { 0x12, 0x51, 0x03 },
- { 0x41, 0x34, 0x47 }, { 0x31, 0x37, 0x29 }, { 0x50, 0x00, 0x10 }, { 0x3f, 0x32, 0x43 },
- { 0x4b, 0x60, 0x00 }, { 0x3d, 0x61, 0x00 }, { 0x62, 0x16, 0x00 }, { 0x4b, 0x60, 0x00 },
-/* Composite lo-res, colour reg = 7 */
- { 0x8b, 0x8b, 0x8b }, { 0x83, 0x5b, 0x00 }, { 0xa4, 0x1b, 0x00 }, { 0x92, 0x5a, 0x09 },
- { 0x07, 0x79, 0x6f }, { 0x06, 0x55, 0x00 }, { 0x1f, 0x0d, 0x00 }, { 0x10, 0x52, 0x01 },
- { 0x23, 0x62, 0xa4 }, { 0x2b, 0x33, 0x29 }, { 0x51, 0x00, 0x11 }, { 0x40, 0x36, 0x42 },
- { 0x46, 0x86, 0x63 }, { 0x42, 0x5e, 0x00 }, { 0x5e, 0x17, 0x00 }, { 0x4a, 0x62, 0x00 },
-/* Composite lo-res, colour reg = 8 */
- { 0x26, 0x26, 0x26 }, { 0x0a, 0x49, 0x00 }, { 0x25, 0x07, 0x00 }, { 0x16, 0x4c, 0x0e },
- { 0x1c, 0x29, 0x12 }, { 0x06, 0x55, 0x00 }, { 0x21, 0x0c, 0x00 }, { 0x11, 0x51, 0x02 },
- { 0x4d, 0x10, 0x5f }, { 0x2c, 0x33, 0x26 }, { 0x51, 0x00, 0x0f }, { 0x41, 0x35, 0x47 },
- { 0x5a, 0x35, 0x00 }, { 0x43, 0x5f, 0x00 }, { 0x5f, 0x15, 0x00 }, { 0x4d, 0x62, 0x00 },
-/* Composite lo-res, colour reg = 9 */
- { 0x92, 0x47, 0xd3 }, { 0x47, 0x47, 0x1b }, { 0x66, 0x00, 0x09 }, { 0x54, 0x44, 0x37 },
- { 0x15, 0x4b, 0x8a }, { 0x05, 0x55, 0x00 }, { 0x00, 0x10, 0x00 }, { 0x10, 0x52, 0x02 },
- { 0x40, 0x33, 0xd4 }, { 0x2f, 0x33, 0x26 }, { 0x51, 0x00, 0x0d }, { 0x3e, 0x37, 0x3e },
- { 0x51, 0x59, 0x75 }, { 0x3b, 0x63, 0x00 }, { 0x5b, 0x1a, 0x00 }, { 0x49, 0x64, 0x00 },
-/* Composite lo-res, colour reg = A */
- { 0x57, 0xac, 0x33 }, { 0x54, 0x7f, 0x00 }, { 0x7f, 0x2e, 0x00 }, { 0x6a, 0x77, 0x00 },
- { 0x05, 0x80, 0x70 }, { 0x03, 0x54, 0x00 }, { 0x22, 0x0c, 0x00 }, { 0x13, 0x52, 0x00 },
- { 0x31, 0x64, 0xbe }, { 0x30, 0x35, 0x2a }, { 0x52, 0x00, 0x12 }, { 0x41, 0x33, 0x46 },
- { 0x3c, 0x91, 0x50 }, { 0x3c, 0x62, 0x00 }, { 0x60, 0x15, 0x00 }, { 0x4f, 0x61, 0x00 },
-/* Composite lo-res, colour reg = B */
- { 0x5b, 0xb9, 0xa7 }, { 0x5b, 0x6d, 0x00 }, { 0x7f, 0x29, 0x00 }, { 0x6c, 0x6e, 0x00 },
- { 0x05, 0x95, 0xcb }, { 0x04, 0x54, 0x00 }, { 0x23, 0x0a, 0x00 }, { 0x12, 0x51, 0x02 },
- { 0x28, 0x77, 0xfb }, { 0x32, 0x37, 0x2f }, { 0x52, 0x00, 0x12 }, { 0x3e, 0x34, 0x40 },
- { 0x3a, 0xa3, 0xaf }, { 0x3c, 0x63, 0x00 }, { 0x60, 0x15, 0x00 }, { 0x50, 0x61, 0x00 },
-/* Composite lo-res, colour reg = C */
- { 0xaa, 0x45, 0x6a }, { 0x8c, 0x59, 0x00 }, { 0xa8, 0x1a, 0x00 }, { 0x96, 0x60, 0x05 },
- { 0x20, 0x35, 0x41 }, { 0x03, 0x55, 0x00 }, { 0x22, 0x0b, 0x00 }, { 0x10, 0x52, 0x02 },
- { 0x4f, 0x1e, 0xa2 }, { 0x2e, 0x34, 0x25 }, { 0x50, 0x00, 0x10 }, { 0x42, 0x36, 0x45 },
- { 0x56, 0x48, 0x2a }, { 0x41, 0x5e, 0x00 }, { 0x5d, 0x19, 0x00 }, { 0x49, 0x64, 0x00 },
-/* Composite lo-res, colour reg = D */
- { 0xa9, 0x54, 0xd6 }, { 0x85, 0x52, 0x09 }, { 0xa5, 0x17, 0x00 }, { 0x96, 0x52, 0x23 },
- { 0x1e, 0x48, 0x9f }, { 0x06, 0x55, 0x00 }, { 0x1f, 0x0c, 0x00 }, { 0x0f, 0x52, 0x01 },
- { 0x46, 0x35, 0xe1 }, { 0x2b, 0x32, 0x26 }, { 0x51, 0x00, 0x0e }, { 0x3e, 0x39, 0x3e },
- { 0x5d, 0x58, 0x88 }, { 0x41, 0x60, 0x00 }, { 0x57, 0x1c, 0x00 }, { 0x4a, 0x62, 0x00 },
-/* Composite lo-res, colour reg = E */
- { 0xa4, 0xbb, 0x30 }, { 0x9d, 0x84, 0x00 }, { 0xb6, 0x3f, 0x00 }, { 0xa1, 0x8c, 0x00 },
- { 0x14, 0x7b, 0x8a }, { 0x06, 0x55, 0x00 }, { 0x21, 0x0b, 0x00 }, { 0x13, 0x51, 0x02 },
- { 0x3f, 0x67, 0xd5 }, { 0x2d, 0x36, 0x29 }, { 0x52, 0x00, 0x11 }, { 0x41, 0x33, 0x46 },
- { 0x4c, 0x8e, 0x6e }, { 0x3e, 0x61, 0x00 }, { 0x5f, 0x16, 0x00 }, { 0x4c, 0x61, 0x00 },
-/* Composite lo-res, colour reg = F */
- { 0xe3, 0xe3, 0xe3 }, { 0xdb, 0x82, 0x00 }, { 0xf5, 0x43, 0x00 }, { 0xee, 0x83, 0x00 },
- { 0x08, 0xa6, 0xf5 }, { 0x04, 0x53, 0x00 }, { 0x1c, 0x0d, 0x00 }, { 0x13, 0x52, 0x00 },
- { 0x25, 0x91, 0xfc }, { 0x2c, 0x35, 0x30 }, { 0x51, 0x00, 0x0e }, { 0x3b, 0x36, 0x38 },
- { 0x43, 0xb5, 0xf7 }, { 0x3b, 0x62, 0x00 }, { 0x56, 0x1c, 0x00 }, { 0x4d, 0x61, 0x00 },
-/* Composite lo-res, colour reg = 10 */
- { 0x00, 0x00, 0x00 }, { 0x00, 0x58, 0xb9 }, { 0x00, 0x11, 0x8a }, { 0x00, 0x4a, 0xe1 },
- { 0x73, 0x22, 0x00 }, { 0x5a, 0xad, 0x2e }, { 0x78, 0x61, 0x0d }, { 0x6a, 0xa9, 0x4c },
- { 0xac, 0x0a, 0x00 }, { 0x87, 0x8d, 0x80 }, { 0xab, 0x46, 0x6c }, { 0x95, 0x8b, 0x97 },
- { 0xac, 0x30, 0x00 }, { 0x91, 0xbc, 0x16 }, { 0xb8, 0x6d, 0x07 }, { 0xa7, 0xb9, 0x2d },
-/* Composite lo-res, colour reg = 11 */
- { 0x60, 0x00, 0x7c }, { 0x01, 0x54, 0xdb }, { 0x09, 0x11, 0xb9 }, { 0x07, 0x47, 0xf8 },
- { 0x76, 0x46, 0x02 }, { 0x5a, 0xae, 0x2e }, { 0x78, 0x62, 0x0c }, { 0x68, 0xa9, 0x4b },
- { 0x99, 0x2a, 0x09 }, { 0x87, 0x8d, 0x80 }, { 0xab, 0x46, 0x6b }, { 0x93, 0x89, 0x95 },
- { 0xa4, 0x54, 0x00 }, { 0x93, 0xbb, 0x16 }, { 0xb9, 0x6b, 0x04 }, { 0xa4, 0xb9, 0x30 },
-/* Composite lo-res, colour reg = 12 */
- { 0x07, 0x55, 0x00 }, { 0x03, 0x83, 0x70 }, { 0x1c, 0x3a, 0x42 }, { 0x0e, 0x81, 0x82 },
- { 0x58, 0x7e, 0x00 }, { 0x5b, 0xad, 0x2f }, { 0x77, 0x60, 0x0f }, { 0x67, 0xac, 0x49 },
- { 0x87, 0x5a, 0x00 }, { 0x89, 0x8c, 0x81 }, { 0xa9, 0x49, 0x5e }, { 0x9b, 0x8a, 0x96 },
- { 0x9f, 0x83, 0x00 }, { 0x94, 0xb9, 0x19 }, { 0xb0, 0x72, 0x03 }, { 0xa5, 0xbb, 0x30 },
-/* Composite lo-res, colour reg = 13 */
- { 0x03, 0x63, 0x48 }, { 0x04, 0x76, 0x8c }, { 0x1d, 0x34, 0x5a }, { 0x0d, 0x7a, 0x9c },
- { 0x5a, 0x8e, 0x03 }, { 0x58, 0xac, 0x33 }, { 0x76, 0x60, 0x0b }, { 0x68, 0xaa, 0x4b },
- { 0x7e, 0x6e, 0x3b }, { 0x88, 0x8c, 0x80 }, { 0xaa, 0x48, 0x64 }, { 0x94, 0x91, 0x92 },
- { 0x94, 0x9b, 0x00 }, { 0x96, 0xb9, 0x16 }, { 0xb0, 0x73, 0x01 }, { 0xa7, 0xb8, 0x2e },
-/* Composite lo-res, colour reg = 14 */
- { 0x52, 0x00, 0x13 }, { 0x29, 0x61, 0xb6 }, { 0x52, 0x1e, 0xa1 }, { 0x41, 0x63, 0xdb },
- { 0x7b, 0x2f, 0x00 }, { 0x5d, 0xac, 0x2c }, { 0x77, 0x63, 0x0a }, { 0x67, 0xa9, 0x51 },
- { 0xaf, 0x18, 0x00 }, { 0x83, 0x8a, 0x7d }, { 0xa9, 0x46, 0x66 }, { 0x9a, 0x8c, 0xa0 },
- { 0xb1, 0x43, 0x00 }, { 0x9a, 0xb7, 0x19 }, { 0xb7, 0x6e, 0x05 }, { 0xa4, 0xb9, 0x2f },
-/* Composite lo-res, colour reg = 15 */
- { 0x52, 0x00, 0x7a }, { 0x2e, 0x55, 0xdc }, { 0x4e, 0x1b, 0xb1 }, { 0x3c, 0x55, 0xec },
- { 0x80, 0x3f, 0x00 }, { 0x5b, 0xad, 0x2e }, { 0x73, 0x61, 0x0a }, { 0x66, 0xaa, 0x50 },
- { 0xa7, 0x29, 0x29 }, { 0x86, 0x8a, 0x7d }, { 0xa8, 0x48, 0x60 }, { 0x98, 0x8e, 0x9b },
- { 0xc0, 0x4a, 0x00 }, { 0x9a, 0xb5, 0x18 }, { 0xb3, 0x72, 0x06 }, { 0xa2, 0xba, 0x31 },
-/* Composite lo-res, colour reg = 16 */
- { 0x4d, 0x61, 0x00 }, { 0x3b, 0x91, 0x53 }, { 0x59, 0x46, 0x2c }, { 0x48, 0x95, 0x63 },
- { 0x6c, 0x77, 0x00 }, { 0x5a, 0xac, 0x31 }, { 0x75, 0x63, 0x09 }, { 0x66, 0xa9, 0x4e },
- { 0x8e, 0x6a, 0x0f }, { 0x87, 0x8b, 0x7f }, { 0xa9, 0x47, 0x66 }, { 0x9b, 0x8c, 0x9f },
- { 0xab, 0x86, 0x00 }, { 0x9a, 0xb6, 0x18 }, { 0xae, 0x74, 0x01 }, { 0xa2, 0xba, 0x2f },
-/* Composite lo-res, colour reg = 17 */
- { 0x8b, 0x8b, 0x8b }, { 0x7f, 0x89, 0x79 }, { 0xa4, 0x4a, 0x5c }, { 0x96, 0x8a, 0x95 },
- { 0x5c, 0xa1, 0x36 }, { 0x5d, 0xad, 0x2b }, { 0x77, 0x62, 0x0a }, { 0x68, 0xa8, 0x4f },
- { 0x83, 0x88, 0x6f }, { 0x85, 0x8d, 0x81 }, { 0xa9, 0x46, 0x69 }, { 0x99, 0x8b, 0x9f },
- { 0x97, 0xb1, 0x22 }, { 0x99, 0xb7, 0x18 }, { 0xb8, 0x6c, 0x04 }, { 0xa2, 0xba, 0x2e },
-/* Composite lo-res, colour reg = 18 */
- { 0x25, 0x25, 0x25 }, { 0x0b, 0x78, 0x8b }, { 0x25, 0x34, 0x5a }, { 0x14, 0x7d, 0x9d },
- { 0x76, 0x4f, 0x00 }, { 0x5a, 0xac, 0x2e }, { 0x74, 0x64, 0x07 }, { 0x66, 0xaa, 0x49 },
- { 0xa7, 0x37, 0x25 }, { 0x87, 0x8b, 0x80 }, { 0xa8, 0x48, 0x64 }, { 0x9a, 0x8f, 0x9a },
- { 0xb6, 0x5a, 0x00 }, { 0x96, 0xba, 0x17 }, { 0xae, 0x73, 0x01 }, { 0xa2, 0xba, 0x30 },
-/* Composite lo-res, colour reg = 19 */
- { 0x5d, 0x48, 0xd5 }, { 0x4a, 0x77, 0xb3 }, { 0x65, 0x35, 0x86 }, { 0x4d, 0x77, 0xc2 },
- { 0x6f, 0x72, 0x53 }, { 0x5a, 0xac, 0x30 }, { 0x75, 0x62, 0x09 }, { 0x68, 0xa9, 0x48 },
- { 0x9c, 0x57, 0xa1 }, { 0x87, 0x8b, 0x80 }, { 0xa7, 0x49, 0x62 }, { 0x92, 0x90, 0x92 },
- { 0xab, 0x7d, 0x3a }, { 0x97, 0xb8, 0x17 }, { 0xb0, 0x74, 0x03 }, { 0xa2, 0xba, 0x2e },
-/* Composite lo-res, colour reg = 1A */
- { 0x59, 0xad, 0x2e }, { 0x59, 0xad, 0x2e }, { 0x75, 0x64, 0x08 }, { 0x69, 0xa7, 0x4d },
- { 0x59, 0xad, 0x2e }, { 0x59, 0xad, 0x2e }, { 0x75, 0x64, 0x08 }, { 0x69, 0xa7, 0x4d },
- { 0x87, 0x8d, 0x82 }, { 0x85, 0x8b, 0x7d }, { 0xa9, 0x47, 0x67 }, { 0x99, 0x8c, 0x9d },
- { 0x94, 0xba, 0x17 }, { 0x94, 0xba, 0x17 }, { 0xb6, 0x6e, 0x06 }, { 0xa2, 0xbb, 0x30 },
-/* Composite lo-res, colour reg = 1B */
- { 0x5b, 0xb9, 0xa6 }, { 0x5c, 0xa2, 0x4a }, { 0x7a, 0x5c, 0x24 }, { 0x6a, 0x9a, 0x6c },
- { 0x56, 0xbf, 0x8e }, { 0x59, 0xae, 0x31 }, { 0x78, 0x60, 0x0d }, { 0x68, 0xa9, 0x4f },
- { 0x7f, 0xa3, 0xcd }, { 0x85, 0x8c, 0x80 }, { 0xaa, 0x47, 0x6a }, { 0x98, 0x8b, 0x9c },
- { 0x93, 0xcd, 0x72 }, { 0x92, 0xbd, 0x14 }, { 0xb8, 0x6c, 0x06 }, { 0xa4, 0xb9, 0x2f },
-/* Composite lo-res, colour reg = 1C */
- { 0xa9, 0x44, 0x63 }, { 0x85, 0x8a, 0x7f }, { 0xa9, 0x44, 0x63 }, { 0x99, 0x8e, 0x9d },
- { 0x74, 0x5f, 0x0d }, { 0x5c, 0xad, 0x2c }, { 0x77, 0x63, 0x0a }, { 0x68, 0xa8, 0x4e },
- { 0xa9, 0x44, 0x63 }, { 0x84, 0x8b, 0x7e }, { 0xa9, 0x44, 0x63 }, { 0x99, 0x8c, 0x9e },
- { 0xad, 0x72, 0x01 }, { 0x9b, 0xb6, 0x1a }, { 0xb3, 0x6e, 0x05 }, { 0xa4, 0xb9, 0x2f },
-/* Composite lo-res, colour reg = 1D */
- { 0xaa, 0x55, 0xd4 }, { 0x83, 0x81, 0x9b }, { 0xa6, 0x43, 0x7b }, { 0x95, 0x80, 0xbd },
- { 0x76, 0x72, 0x66 }, { 0x5a, 0xad, 0x2c }, { 0x7b, 0x61, 0x0c }, { 0x68, 0xa9, 0x50 },
- { 0xa5, 0x59, 0xaa }, { 0x87, 0x8e, 0x7f }, { 0xa9, 0x45, 0x6a }, { 0x97, 0x8b, 0x98 },
- { 0xb2, 0x82, 0x48 }, { 0x93, 0xbb, 0x16 }, { 0xb9, 0x6d, 0x05 }, { 0xa4, 0xb9, 0x2f },
-/* Composite lo-res, colour reg = 1E */
- { 0xa5, 0xb8, 0x2d }, { 0xa5, 0xb8, 0x2d }, { 0xb4, 0x70, 0x05 }, { 0xa5, 0xb8, 0x2d },
- { 0x64, 0xaa, 0x4e }, { 0x5b, 0xad, 0x2c }, { 0x77, 0x63, 0x0b }, { 0x68, 0xa8, 0x4f },
- { 0x94, 0x91, 0x95 }, { 0x83, 0x8a, 0x7b }, { 0xa9, 0x47, 0x67 }, { 0x98, 0x8a, 0x9e },
- { 0xa5, 0xb8, 0x2d }, { 0x9a, 0xb6, 0x1a }, { 0xb2, 0x70, 0x05 }, { 0xa5, 0xb8, 0x2d },
-/* Composite lo-res, colour reg = 1F */
- { 0xe3, 0xe3, 0xe3 }, { 0xde, 0xb1, 0x45 }, { 0xf8, 0x71, 0x3e }, { 0xeb, 0xb3, 0x5e },
- { 0x58, 0xd3, 0xc4 }, { 0x5b, 0xad, 0x2d }, { 0x78, 0x63, 0x0b }, { 0x68, 0xa8, 0x4f },
- { 0x7f, 0xb7, 0xf4 }, { 0x86, 0x8b, 0x7d }, { 0xa8, 0x46, 0x69 }, { 0x9a, 0x8c, 0x9f },
- { 0x99, 0xe0, 0xbc }, { 0x99, 0xb6, 0x1a }, { 0xb8, 0x6d, 0x07 }, { 0xa5, 0xb8, 0x30 },
-/* Composite lo-res, colour reg = 20 */
- { 0x00, 0x00, 0x00 }, { 0x00, 0x3a, 0x85 }, { 0x00, 0x00, 0x6c }, { 0x00, 0x46, 0xce },
- { 0x26, 0x01, 0x00 }, { 0x03, 0x61, 0x4a }, { 0x24, 0x16, 0x2a }, { 0x09, 0x72, 0x8d },
- { 0x4d, 0x00, 0x00 }, { 0x2d, 0x45, 0x9c }, { 0x51, 0x00, 0x7c }, { 0x30, 0x58, 0xe1 },
- { 0x9e, 0x0f, 0x00 }, { 0x86, 0x7b, 0x45 }, { 0xab, 0x29, 0x2c }, { 0x8b, 0x89, 0x88 },
-/* Composite lo-res, colour reg = 21 */
- { 0x06, 0x00, 0x7C }, { 0x00, 0x3B, 0xA0 }, { 0x14, 0x00, 0x93 }, { 0x00, 0x49, 0xF7 },
- { 0x19, 0x12, 0x13 }, { 0x02, 0x63, 0x3f }, { 0x25, 0x16, 0x2b }, { 0x09, 0x71, 0x93 },
- { 0x46, 0x00, 0x65 }, { 0x28, 0x45, 0x93 }, { 0x50, 0x00, 0x80 }, { 0x32, 0x55, 0xe6 },
- { 0x9c, 0x2d, 0x0c }, { 0x86, 0x78, 0x44 }, { 0xaa, 0x29, 0x33 }, { 0x92, 0x84, 0x84 },
-/* Composite lo-res, colour reg = 22 */
- { 0x05, 0x56, 0x00 }, { 0x04, 0x69, 0x32 }, { 0x21, 0x1d, 0x13 }, { 0x07, 0x76, 0x7e },
- { 0x05, 0x48, 0x03 }, { 0x03, 0x64, 0x43 }, { 0x24, 0x16, 0x28 }, { 0x08, 0x70, 0x92 },
- { 0x45, 0x41, 0x74 }, { 0x27, 0x44, 0x92 }, { 0x4f, 0x00, 0x7f }, { 0x36, 0x58, 0xe8 },
- { 0x85, 0x57, 0x02 }, { 0x87, 0x77, 0x45 }, { 0xa6, 0x2c, 0x2c }, { 0x8b, 0x8b, 0x8b },
-/* Composite lo-res, colour reg = 23 */
- { 0x02, 0x61, 0x49 }, { 0x02, 0x61, 0x49 }, { 0x24, 0x15, 0x27 }, { 0x05, 0x73, 0x84 },
- { 0x02, 0x61, 0x49 }, { 0x02, 0x61, 0x49 }, { 0x24, 0x15, 0x27 }, { 0x05, 0x73, 0x84 },
- { 0x2a, 0x43, 0x96 }, { 0x2a, 0x43, 0x96 }, { 0x51, 0x00, 0x7d }, { 0x31, 0x5a, 0xdc },
- { 0x86, 0x79, 0x3d }, { 0x86, 0x79, 0x3d }, { 0xa8, 0x2a, 0x21 }, { 0x8a, 0x8a, 0x8a },
-/* Composite lo-res, colour reg = 24 */
- { 0x51, 0x00, 0x0e }, { 0x2b, 0x49, 0x76 }, { 0x4c, 0x04, 0x53 }, { 0x23, 0x5a, 0xf5 },
- { 0x22, 0x05, 0x00 }, { 0x04, 0x06, 0x4b }, { 0x22, 0x13, 0x22 }, { 0x03, 0x74, 0x82 },
- { 0x4e, 0x00, 0x25 }, { 0x2d, 0x46, 0x9d }, { 0x52, 0x00, 0x7c }, { 0x34, 0x59, 0xe3 },
- { 0xaa, 0x17, 0x00 }, { 0x85, 0x79, 0x3d }, { 0xa7, 0x2e, 0x24 }, { 0x8b, 0x8b, 0x8b },
-/* Composite lo-res, colour reg = 25 */
- { 0x50, 0x00, 0x7e }, { 0x2d, 0x45, 0x9d }, { 0x50, 0x00, 0x7e }, { 0x30, 0x57, 0xde },
- { 0x23, 0x16, 0x29 }, { 0x05, 0x61, 0x49 }, { 0x23, 0x13, 0x26 }, { 0x04, 0x75, 0x87 },
- { 0x50, 0x00, 0x7e }, { 0x28, 0x44, 0x96 }, { 0x50, 0x00, 0x7e }, { 0x31, 0x59, 0xdf },
- { 0xac, 0x28, 0x33 }, { 0x85, 0x79, 0x3c }, { 0xa7, 0x2d, 0x23 }, { 0x8b, 0x8b, 0x8b },
-/* Composite lo-res, colour reg = 26 */
- { 0x4f, 0x62, 0x00 }, { 0x3d, 0x71, 0x1f }, { 0x60, 0x2a, 0x07 }, { 0x43, 0x88, 0x69 },
- { 0x13, 0x42, 0x19 }, { 0x05, 0x63, 0x46 }, { 0x24, 0x16, 0x27 }, { 0x07, 0x72, 0x91 },
- { 0x3c, 0x2b, 0x5f }, { 0x2a, 0x45, 0x92 }, { 0x4f, 0x00, 0x82 }, { 0x36, 0x57, 0xe9 },
- { 0x92, 0x5a, 0x0b }, { 0x87, 0x78, 0x45 }, { 0xa7, 0x2c, 0x2a }, { 0x8b, 0x8b, 0x8c },
-/* Composite lo-res, colour reg = 27 */
- { 0x8b, 0x8b, 0x8b }, { 0x89, 0x78, 0x47 }, { 0xa8, 0x2a, 0x2d }, { 0x8b, 0x8b, 0x8b },
- { 0x08, 0x71, 0x93 }, { 0x02, 0x62, 0x4a }, { 0x26, 0x16, 0x2a }, { 0x06, 0x73, 0x87 },
- { 0x35, 0x58, 0xe6 }, { 0x2f, 0x45, 0x9e }, { 0x50, 0x00, 0x78 }, { 0x2f, 0x59, 0xe0 },
- { 0x8b, 0x8b, 0x8b }, { 0x87, 0x7a, 0x46 }, { 0xaa, 0x29, 0x30 }, { 0x8b, 0x8b, 0x8b },
-/* Composite lo-res, colour reg = 28 */
- { 0x25, 0x25, 0x25 }, { 0x08, 0x5f, 0x4b }, { 0x2b, 0x15, 0x25 }, { 0x09, 0x71, 0x88 },
- { 0x1e, 0x23, 0x26 }, { 0x04, 0x62, 0x47 }, { 0x21, 0x19, 0x28 }, { 0x06, 0x74, 0x88 },
- { 0x48, 0x0b, 0x70 }, { 0x26, 0x42, 0x95 }, { 0x52, 0x00, 0x7c }, { 0x34, 0x58, 0xe6 },
- { 0xa1, 0x37, 0x1c }, { 0x85, 0x78, 0x3e }, { 0xa6, 0x2e, 0x23 }, { 0x8b, 0x8b, 0x8b },
-/* Composite lo-res, colour reg = 29 */
- { 0x5e, 0x44, 0xd3 }, { 0x45, 0x61, 0x73 }, { 0x6c, 0x18, 0x53 }, { 0x4c, 0x72, 0xbf },
- { 0x14, 0x45, 0xa3 }, { 0x04, 0x61, 0x49 }, { 0x22, 0x15, 0x25 }, { 0x06, 0x72, 0x8d },
- { 0x41, 0x2d, 0xf6 }, { 0x27, 0x43, 0x96 }, { 0x51, 0x00, 0x7c }, { 0x34, 0x58, 0xe4 },
- { 0x9b, 0x5a, 0xa5 }, { 0x85, 0x78, 0x3d }, { 0xa6, 0x2e, 0x23 }, { 0x8c, 0x8c, 0x8c },
-/* Composite lo-res, colour reg = 2A */
- { 0x5c, 0xae, 0x2a }, { 0x58, 0x91, 0x00 }, { 0x7b, 0x41, 0x00 }, { 0x5e, 0xa0, 0x36 },
- { 0x06, 0x78, 0x86 }, { 0x03, 0x62, 0x49 }, { 0x25, 0x14, 0x28 }, { 0x03, 0x74, 0x82 },
- { 0x25, 0x5b, 0xcc }, { 0x2a, 0x43, 0x97 }, { 0x52, 0x00, 0x79 }, { 0x31, 0x5b, 0xe0 },
- { 0x7e, 0x88, 0x7b }, { 0x86, 0x7b, 0x3e }, { 0xa7, 0x2c, 0x22 }, { 0x89, 0x89, 0x89 },
-/* Composite lo-res, colour reg = 2B */
- { 0x58, 0xbb, 0x98 }, { 0x5a, 0x8c, 0x0a }, { 0x7f, 0x3b, 0x02 }, { 0x60, 0x9a, 0x4b },
- { 0x03, 0x96, 0xce }, { 0x04, 0x61, 0x4a }, { 0x23, 0x14, 0x24 }, { 0x04, 0x75, 0x86 },
- { 0x23, 0x76, 0xfe }, { 0x28, 0x43, 0x95 }, { 0x51, 0x00, 0x7b }, { 0x30, 0x59, 0xdb },
- { 0x80, 0xab, 0xd2 }, { 0x85, 0x7a, 0x3d }, { 0xa8, 0x2e, 0x26 }, { 0x8b, 0x8b, 0x8b },
-/* Composite lo-res, colour reg = 2C */
- { 0xa9, 0x46, 0x66 }, { 0x7f, 0x6f, 0x37 }, { 0xa9, 0x27, 0x27 }, { 0x87, 0x82, 0x7f },
- { 0x1e, 0x31, 0x5c }, { 0x04, 0x63, 0x44 }, { 0x23, 0x16, 0x2a }, { 0x08, 0x71, 0x92 },
- { 0x4e, 0x1a, 0xb0 }, { 0x27, 0x46, 0x92 }, { 0x50, 0x00, 0x80 }, { 0x33, 0x56, 0xe7 },
- { 0xa3, 0x4a, 0x58 }, { 0x87, 0x78, 0x46 }, { 0xab, 0x29, 0x34 }, { 0x8b, 0x8b, 0x8b },
-/* Composite lo-res, colour reg = 2D */
- { 0xa8, 0x53, 0xd8 }, { 0x82, 0x6c, 0x5f }, { 0xac, 0x25, 0x3f }, { 0x8d, 0x7f, 0xa8 },
- { 0x21, 0x46, 0xb9 }, { 0x04, 0x61, 0x4d }, { 0x24, 0x13, 0x23 }, { 0x04, 0x75, 0x87 },
- { 0x4c, 0x2e, 0xfe }, { 0x2a, 0x45, 0x99 }, { 0x52, 0x00, 0x78 }, { 0x32, 0x5a, 0xde },
- { 0xa8, 0x53, 0xd8 }, { 0x84, 0x7c, 0x3d }, { 0xa7, 0x2d, 0x22 }, { 0x8b, 0x8b, 0x8b },
-/* Composite lo-res, colour reg = 2E */
- { 0xa4, 0xba, 0x2e }, { 0x8e, 0x9f, 0x00 }, { 0xbf, 0x4e, 0x00 }, { 0xa5, 0xae, 0x2d },
- { 0x13, 0x71, 0xa6 }, { 0x03, 0x62, 0x4a }, { 0x24, 0x14, 0x28 }, { 0x05, 0x74, 0x83 },
- { 0x32, 0x5d, 0xe0 }, { 0x2e, 0x46, 0x9c }, { 0x51, 0x00, 0x7c }, { 0x2f, 0x59, 0xe0 },
- { 0x8a, 0x8d, 0x94 }, { 0x86, 0x7b, 0x40 }, { 0xa8, 0x2c, 0x22 }, { 0x8a, 0x8a, 0x8a },
-/* Composite lo-res, colour reg = 2F */
- { 0xe4, 0xe4, 0xe4 }, { 0xdd, 0xa6, 0x0a }, { 0xf9, 0x53, 0x04 }, { 0xea, 0xae, 0x54 },
- { 0x08, 0xa2, 0xfc }, { 0x03, 0x62, 0x48 }, { 0x24, 0x14, 0x28 }, { 0x05, 0x74, 0x84 },
- { 0x27, 0x90, 0xff }, { 0x2a, 0x43, 0x95 }, { 0x52, 0x00, 0x79 }, { 0x34, 0x5a, 0xe3 },
- { 0x85, 0xbb, 0xff }, { 0x85, 0x7a, 0x3d }, { 0xa7, 0x2c, 0x23 }, { 0x8a, 0x8a, 0x8a },
-/* Composite lo-res, colour reg = 30 */
- { 0x00, 0x00, 0x00 }, { 0x00, 0x63, 0xfe }, { 0x00, 0x1d, 0xe9 }, { 0x00, 0x81, 0xff },
- { 0x7e, 0x16, 0x00 }, { 0x5b, 0xb9, 0xa5 }, { 0x79, 0x6a, 0x79 }, { 0x59, 0xce, 0xdc },
- { 0xa8, 0x05, 0x00 }, { 0x84, 0x9e, 0xf3 }, { 0xaa, 0x54, 0xd3 }, { 0x8c, 0xb1, 0xff },
- { 0xfb, 0x28, 0x00 }, { 0xde, 0xd2, 0x94 }, { 0xfc, 0x85, 0x7b }, { 0xe4, 0xe4, 0xe4 },
-/* Composite lo-res, colour reg = 31 */
- { 0x07, 0x00, 0x7c }, { 0x00, 0x70, 0xfe }, { 0x0d, 0x20, 0xff }, { 0x04, 0x7f, 0xff },
- { 0x6f, 0x3b, 0x00 }, { 0x59, 0xbb, 0x9b }, { 0x79, 0x6c, 0x81 }, { 0x5d, 0xcb, 0xe4 },
- { 0x99, 0x26, 0x29 }, { 0x83, 0x9d, 0xf2 }, { 0xaa, 0x54, 0xd4 }, { 0x88, 0xb0, 0xff },
- { 0xf4, 0x57, 0x00 }, { 0xdf, 0xd3, 0x9a }, { 0xfe, 0x81, 0x7f }, { 0xe4, 0xe4, 0xe4 },
-/* Composite lo-res, colour reg = 32 */
- { 0x06, 0x55, 0x00 }, { 0x03, 0x99, 0xbe }, { 0x22, 0x46, 0xa4 }, { 0x09, 0xa4, 0xfa },
- { 0x62, 0x6d, 0x00 }, { 0x59, 0xbb, 0x9b }, { 0x7a, 0x6d, 0x7e }, { 0x5c, 0xc8, 0xe7 },
- { 0x8a, 0x4f, 0x11 }, { 0x80, 0x9b, 0xea }, { 0xa7, 0x55, 0xda }, { 0x8c, 0xad, 0xff },
- { 0xdf, 0x7f, 0x00 }, { 0xe2, 0xd1, 0x9c }, { 0xfd, 0x81, 0x87 }, { 0xe4, 0xe4, 0xe4 },
-/* Composite lo-res, colour reg = 33 */
- { 0x03, 0x63, 0x47 }, { 0x06, 0x91, 0xda }, { 0x23, 0x41, 0xbc }, { 0x06, 0xa5, 0xfa },
- { 0x5d, 0x8a, 0x07 }, { 0x59, 0xbb, 0x9b }, { 0x7c, 0x6e, 0x80 }, { 0x5d, 0xc9, 0xe8 },
- { 0x86, 0x6b, 0x60 }, { 0x81, 0x9d, 0xea }, { 0xa8, 0x55, 0xd8 }, { 0x8e, 0xae, 0xff },
- { 0xdf, 0xa4, 0x0c }, { 0xe1, 0xd0, 0x9e }, { 0xfd, 0x81, 0x85 }, { 0xe4, 0xe4, 0xe4 },
-/* Composite lo-res, colour reg = 34 */
- { 0x52, 0x00, 0x14 }, { 0x20, 0x7b, 0xf7 }, { 0x4e, 0x2f, 0xed }, { 0x22, 0x91, 0xff },
- { 0x7f, 0x28, 0x00 }, { 0x5a, 0xbb, 0x9a }, { 0x79, 0x6d, 0x7f }, { 0x5e, 0xc8, 0xeb },
- { 0xac, 0x13, 0x02 }, { 0x7e, 0x9c, 0xea }, { 0xa8, 0x54, 0xd6 }, { 0x8e, 0xae, 0xff },
- { 0xf5, 0x43, 0x00 }, { 0xdf, 0xcf, 0x9d }, { 0xfd, 0x81, 0x88 }, { 0xe4, 0xe4, 0xe4 },
-/* Composite lo-res, colour reg = 35 */
- { 0x50, 0x00, 0x7b }, { 0x22, 0x76, 0xfe }, { 0x4c, 0x2f, 0xff }, { 0x36, 0x85, 0xff },
- { 0x7b, 0x3d, 0x00 }, { 0x5b, 0xbc, 0xa1 }, { 0x7b, 0x6c, 0x7f }, { 0x5d, 0xca, 0xe8 },
- { 0xa9, 0x26, 0x3c }, { 0x81, 0x9c, 0xec }, { 0xa7, 0x54, 0xdc }, { 0x8b, 0xad, 0xff },
- { 0xf8, 0x57, 0x03 }, { 0xe1, 0xd4, 0x9e }, { 0xfd, 0x80, 0x82 }, { 0xe4, 0xe4, 0xe4 },
-/* Composite lo-res, colour reg = 36 */
- { 0x4c, 0x61, 0x00 }, { 0x39, 0xa2, 0xaf }, { 0x5b, 0x5a, 0x8c }, { 0x42, 0xb6, 0xf4 },
- { 0x66, 0x6b, 0x00 }, { 0x5b, 0xba, 0xa4 }, { 0x7a, 0x6c, 0x7e }, { 0x5e, 0xca, 0xe8 },
- { 0x91, 0x51, 0x1f }, { 0x85, 0x9d, 0xf4 }, { 0xaa, 0x55, 0xd7 }, { 0x88, 0xaf, 0xff },
- { 0xea, 0x87, 0x00 }, { 0xde, 0xd4, 0x98 }, { 0xfd, 0x7f, 0x81 }, { 0xe4, 0xe4, 0xe4 },
-/* Composite lo-res, colour reg = 37 */
- { 0x8b, 0x8b, 0x8b }, { 0x86, 0xa7, 0xde }, { 0xa6, 0x5a, 0xbf }, { 0x85, 0xbb, 0xff },
- { 0x5f, 0x9b, 0x51 }, { 0x5a, 0xb9, 0xa7 }, { 0x78, 0x6a, 0x7b }, { 0x5b, 0xce, 0xdb },
- { 0x8b, 0x7c, 0xae }, { 0x82, 0x9c, 0xf2 }, { 0xaa, 0x54, 0xd3 }, { 0x87, 0xb2, 0xff },
- { 0xe7, 0xb0, 0x54 }, { 0xdc, 0xd2, 0x95 }, { 0xfc, 0x84, 0x77 }, { 0xe3, 0xe3, 0xe3 },
-/* Composite lo-res, colour reg = 38 */
- { 0x24, 0x24, 0x24 }, { 0x06, 0x91, 0xd8 }, { 0x2a, 0x44, 0xb9 }, { 0x0f, 0x9e, 0xfe },
- { 0x7a, 0x49, 0x00 }, { 0x58, 0xbc, 0x98 }, { 0x7a, 0x6d, 0x7f }, { 0x5e, 0xc8, 0xeb },
- { 0xa3, 0x36, 0x3a }, { 0x7f, 0x9c, 0xec }, { 0xa8, 0x54, 0xd7 }, { 0x8a, 0xad, 0xff },
- { 0xf7, 0x64, 0x00 }, { 0xe1, 0xd1, 0x9c }, { 0xfd, 0x7f, 0x8b }, { 0xe4, 0xe4, 0xe4 },
-/* Composite lo-res, colour reg = 39 */
- { 0x62, 0x46, 0xd3 }, { 0x3d, 0x93, 0xf2 }, { 0x6b, 0x46, 0xeb }, { 0x4f, 0xa0, 0xff },
- { 0x6f, 0x69, 0x6b }, { 0x58, 0xbb, 0x9b }, { 0x7b, 0x6e, 0x80 }, { 0x5e, 0xc8, 0xec },
- { 0x9d, 0x53, 0xbd }, { 0x81, 0x9d, 0xf0 }, { 0xa8, 0x54, 0xd8 }, { 0x86, 0xb1, 0xff },
- { 0xf4, 0x85, 0x5e }, { 0xdf, 0xd1, 0x9f }, { 0xfe, 0x7f, 0x88 }, { 0xe3, 0xe3, 0xe3 },
-/* Composite lo-res, colour reg = 3A */
- { 0x5a, 0xad, 0x2d }, { 0x58, 0xc1, 0x81 }, { 0x77, 0x74, 0x68 }, { 0x58, 0xcf, 0xd1 },
- { 0x5d, 0xa0, 0x4d }, { 0x59, 0xbb, 0x9b }, { 0x7c, 0x6d, 0x7f }, { 0x5e, 0xc9, 0xeb },
- { 0x83, 0x7d, 0x9e }, { 0x7f, 0x9c, 0xec }, { 0xa9, 0x54, 0xd6 }, { 0x8c, 0xae, 0xff },
- { 0xde, 0xae, 0x4b }, { 0xdc, 0xd0, 0x98 }, { 0xfc, 0x81, 0x8a }, { 0xe4, 0xe4, 0xe4 },
-/* Composite lo-res, colour reg = 3B */
- { 0x59, 0xbc, 0x9c }, { 0x59, 0xbc, 0x9c }, { 0x7a, 0x6a, 0x79 }, { 0x59, 0xce, 0xd9 },
- { 0x59, 0xbc, 0x9c }, { 0x59, 0xbc, 0x9c }, { 0x7b, 0x6b, 0x80 }, { 0x59, 0xcc, 0xd9 },
- { 0x81, 0x9b, 0xec }, { 0x81, 0x9b, 0xec }, { 0xa9, 0x54, 0xd4 }, { 0x8e, 0xb2, 0xff },
- { 0xdf, 0xcf, 0x9b }, { 0xdf, 0xcf, 0x9b }, { 0xfd, 0x85, 0x79 }, { 0xe3, 0xe3, 0xe3 },
-/* Composite lo-res, colour reg = 3C */
- { 0xaa, 0x46, 0x6a }, { 0x7a, 0xa3, 0xc7 }, { 0xa7, 0x58, 0xba }, { 0x84, 0xb5, 0xf8 },
- { 0x78, 0x5b, 0x23 }, { 0x59, 0xbc, 0x9c }, { 0x7a, 0x6e, 0x81 }, { 0x5f, 0xc9, 0xeb },
- { 0xa3, 0x44, 0x71 }, { 0x80, 0x9d, 0xec }, { 0xa8, 0x54, 0xd7 }, { 0x8a, 0xae, 0xff },
- { 0xf8, 0x74, 0x1a }, { 0xdf, 0xd1, 0x9e }, { 0xfe, 0x81, 0x8b }, { 0xe3, 0xe3, 0xe3 },
-/* Composite lo-res, colour reg = 3D */
- { 0xaa, 0x53, 0xd1 }, { 0x80, 0x9c, 0xec }, { 0xaa, 0x53, 0xd1 }, { 0x88, 0xad, 0xff },
- { 0x7a, 0x6b, 0x7e }, { 0x58, 0xbb, 0x9d }, { 0x7a, 0x6d, 0x81 }, { 0x5f, 0xc9, 0xe5 },
- { 0xaa, 0x53, 0xd1 }, { 0x84, 0x9d, 0xf2 }, { 0xaa, 0x53, 0xd1 }, { 0x88, 0xad, 0xff },
- { 0xfd, 0x85, 0x78 }, { 0xe0, 0xd2, 0x9e }, { 0xfe, 0x80, 0x87 }, { 0xe3, 0xe3, 0xe3 },
-/* Composite lo-res, colour reg = 3E */
- { 0xa1, 0xba, 0x2f }, { 0x90, 0xce, 0x70 }, { 0xb4, 0x80, 0x4b }, { 0x9d, 0xe0, 0xba },
- { 0x6a, 0x9f, 0x68 }, { 0x5a, 0xba, 0x9f }, { 0x7a, 0x6b, 0x7a }, { 0x5a, 0xce, 0xdb },
- { 0x91, 0x83, 0xae }, { 0x80, 0x9b, 0xef }, { 0xaa, 0x54, 0xd2 }, { 0x8c, 0xb1, 0xff },
- { 0xeb, 0xb3, 0x59 }, { 0xdd, 0xd3, 0x94 }, { 0xfc, 0x85, 0x79 }, { 0xe4, 0xe4, 0xe4 },
-/* Composite lo-res, colour reg = 3F */
- { 0xe4, 0xe4, 0xe4 }, { 0xdd, 0xd2, 0x93 }, { 0xfc, 0x85, 0x7a }, { 0xe4, 0xe4, 0xe4 },
- { 0x59, 0xcc, 0xda }, { 0x59, 0xbb, 0x9c }, { 0x7b, 0x6d, 0x7f }, { 0x5c, 0xca, 0xe5 },
- { 0x87, 0xb3, 0xff }, { 0x7f, 0x9a, 0xea }, { 0xa8, 0x54, 0xd4 }, { 0x8c, 0xb0, 0xff },
- { 0xe4, 0xe4, 0xe4 }, { 0xdf, 0xd1, 0x98 }, { 0xfd, 0x84, 0x7d }, { 0xe4, 0xe4, 0xe4 },
-};
-
-
static MC6845_UPDATE_ROW( cga_update_row )
{
isa8_cga_device *cga = downcast<isa8_cga_device *>(device->owner());
diff --git a/src/emu/bus/isa/cga.h b/src/emu/bus/isa/cga.h
index 45c012a56a8..976fedb80e1 100644
--- a/src/emu/bus/isa/cga.h
+++ b/src/emu/bus/isa/cga.h
@@ -203,7 +203,7 @@ public:
// device type definition
extern const device_type ISA8_EC1841_0002;
-// ======================> isa8_poisk2_device
+// ======================> isa8_cga_mc1502_device
class isa8_cga_mc1502_device :
public isa8_cga_device
diff --git a/src/emu/bus/isa/isa_cards.c b/src/emu/bus/isa/isa_cards.c
index 9ddc3c02ecc..de8bde77341 100644
--- a/src/emu/bus/isa/isa_cards.c
+++ b/src/emu/bus/isa/isa_cards.c
@@ -15,6 +15,8 @@ SLOT_INTERFACE_START( pc_isa8_cards )
SLOT_INTERFACE("cga_ec1841", ISA8_EC1841_0002)
SLOT_INTERFACE("cga_poisk2", ISA8_CGA_POISK2)
SLOT_INTERFACE("cga_mc1502", ISA8_CGA_MC1502)
+ SLOT_INTERFACE("aga", ISA8_AGA)
+ SLOT_INTERFACE("aga_pc200", ISA8_AGA_PC200)
SLOT_INTERFACE("ega", ISA8_EGA)
SLOT_INTERFACE("svga_et4k", ISA8_SVGA_ET4K)
SLOT_INTERFACE("com", ISA8_COM)
diff --git a/src/emu/bus/isa/isa_cards.h b/src/emu/bus/isa/isa_cards.h
index e7af7dd9116..33b43a3e8c6 100644
--- a/src/emu/bus/isa/isa_cards.h
+++ b/src/emu/bus/isa/isa_cards.h
@@ -17,6 +17,7 @@
// video
#include "mda.h"
#include "cga.h"
+#include "aga.h"
#include "ega.h"
#include "vga.h"
#include "vga_ati.h"
diff --git a/src/emu/scrlegcy.h b/src/emu/scrlegcy.h
deleted file mode 100644
index 855fa28b9dc..00000000000
--- a/src/emu/scrlegcy.h
+++ /dev/null
@@ -1,45 +0,0 @@
-// license:BSD-3-Clause
-// copyright-holders:Aaron Giles
-/***************************************************************************
-
- scrlegcy.h
-
- Legacy screen helpers.
-
-***************************************************************************/
-
-#pragma once
-
-#ifndef __SCRLEGCY_H__
-#define __SCRLEGCY_H__
-
-//**************************************************************************
-// SCREEN DEVICE CONFIGURATION MACROS
-//**************************************************************************
-
-#define MCFG_SCREEN_UPDATE_STATIC(_func) \
- screen_device::static_set_screen_update(*device, screen_update_delegate_smart(&screen_update_##_func, "screen_update_" #_func));
-
-
-//**************************************************************************
-// INLINE HELPERS
-//**************************************************************************
-
-//-------------------------------------------------
-// screen_update_delegate_smart - collection of
-// inline helpers which create the appropriate
-// screen_update_delegate based on the input
-// function type
-//-------------------------------------------------
-
-inline screen_update_ind16_delegate screen_update_delegate_smart(UINT32 (*callback)(device_t *, screen_device &, bitmap_ind16 &, const rectangle &), const char *name)
-{
- return screen_update_ind16_delegate(callback, name);
-}
-
-inline screen_update_rgb32_delegate screen_update_delegate_smart(UINT32 (*callback)(device_t *, screen_device &, bitmap_rgb32 &, const rectangle &), const char *name)
-{
- return screen_update_rgb32_delegate(callback, name);
-}
-
-#endif /* __SCRLEGCY_H__ */
diff --git a/src/emu/video/video.mak b/src/emu/video/video.mak
index cd7854bb8a4..352a8204f82 100644
--- a/src/emu/video/video.mak
+++ b/src/emu/video/video.mak
@@ -363,17 +363,12 @@ ifneq ($(filter MOS6566,$(VIDEOS)),)
VIDEOOBJS+= $(VIDEOOBJ)/mos6566.o
endif
-#-------------------------------------------------
-#
-#@src/emu/video/pc_cga.h,VIDEOS += PC_CGA
-#-------------------------------------------------
-ifneq ($(filter PC_CGA,$(VIDEOS)),)
VIDEOOBJS+= $(VIDEOOBJ)/cgapal.o
-endif
#-------------------------------------------------
#
+
#@src/emu/video/pc_vga.h,VIDEOS += PC_VGA
#-------------------------------------------------
diff --git a/src/mess/drivers/amstr_pc.c b/src/mess/drivers/amstr_pc.c
index 165adac5ac7..ab7559e2854 100644
--- a/src/mess/drivers/amstr_pc.c
+++ b/src/mess/drivers/amstr_pc.c
@@ -35,7 +35,8 @@ More information can be found at http://www.seasip.info/AmstradXT/1640tech/index
#include "machine/pic8259.h"
#include "machine/pit8253.h"
-#include "video/pc_aga.h"
+#include "bus/isa/isa.h"
+#include "bus/isa/isa_cards.h"
#include "machine/pc_fdc.h"
#include "bus/pc_joy/pc_joy.h"
@@ -125,11 +126,6 @@ ADDRESS_MAP_END
static INPUT_PORTS_START( pc200 )
- PORT_START("IN0") /* IN0 */
- PORT_BIT ( 0xf0, 0xf0, IPT_UNUSED )
- PORT_BIT ( 0x08, 0x08, IPT_CUSTOM ) PORT_VBLANK("screen")
- PORT_BIT ( 0x07, 0x07, IPT_UNUSED )
-
PORT_START("DSW0") /* IN1 */
PORT_DIPNAME( 0x07, 0x07, "Name/Language")
PORT_DIPSETTING( 0x00, "English/less checks" )
@@ -222,29 +218,45 @@ static SLOT_INTERFACE_START(amstr_com)
SLOT_INTERFACE("mousesys_mouse", MSYSTEM_SERIAL_MOUSE)
SLOT_INTERFACE_END
+static const isa8bus_interface pc_isabus_intf =
+{
+ // interrupts
+ DEVCB_DEVICE_LINE_MEMBER("pic8259", pic8259_device, ir2_w),
+ DEVCB_DEVICE_LINE_MEMBER("pic8259", pic8259_device, ir3_w),
+ DEVCB_DEVICE_LINE_MEMBER("pic8259", pic8259_device, ir4_w),
+ DEVCB_DEVICE_LINE_MEMBER("pic8259", pic8259_device, ir5_w),
+ DEVCB_DEVICE_LINE_MEMBER("pic8259", pic8259_device, ir6_w),
+ DEVCB_DEVICE_LINE_MEMBER("pic8259", pic8259_device, ir7_w),
+
+ // dma request
+ DEVCB_DEVICE_LINE_MEMBER("dma8237", am9517a_device, dreq1_w),
+ DEVCB_DEVICE_LINE_MEMBER("dma8237", am9517a_device, dreq2_w),
+ DEVCB_DEVICE_LINE_MEMBER("dma8237", am9517a_device, dreq3_w)
+};
+
#define MCFG_CPU_PC(mem, port, type, clock, vblankfunc) \
MCFG_CPU_ADD("maincpu", type, clock) \
MCFG_CPU_PROGRAM_MAP(mem##_map) \
MCFG_CPU_IO_MAP(port##_io) \
- MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", amstrad_pc_state, vblankfunc, "screen", 0, 1)
-
-
-static const gfx_layout pc200_charlayout =
-{
- 8, 16, /* 8 x 16 characters */
- 2048, /* 2048 characters */
- 1, /* 1 bits per pixel */
- { 0 }, /* no bitplanes */
- /* x offsets */
- { 0, 1, 2, 3, 4, 5, 6, 7 },
- /* y offsets */
- { 0*8, 1*8, 2*8, 3*8, 4*8, 5*8, 6*8, 7*8, 8*8, 9*8, 10*8, 11*8, 12*8, 13*8, 14*8, 15*8 },
- 8*16 /* every char takes 16 bytes */
-};
-
-static GFXDECODE_START( pc200 )
- GFXDECODE_ENTRY( "gfx1", 0x0000, pc200_charlayout, 3, 1 )
-GFXDECODE_END
+ MCFG_TIMER_DRIVER_ADD_PERIODIC("scantimer", amstrad_pc_state, vblankfunc, attotime::from_hz(60))
+
+
+// static const gfx_layout pc200_charlayout =
+// {
+ // 8, 16, /* 8 x 16 characters */
+ // 2048, /* 2048 characters */
+ // 1, /* 1 bits per pixel */
+ // { 0 }, /* no bitplanes */
+ // /* x offsets */
+ // { 0, 1, 2, 3, 4, 5, 6, 7 },
+ // /* y offsets */
+ // { 0*8, 1*8, 2*8, 3*8, 4*8, 5*8, 6*8, 7*8, 8*8, 9*8, 10*8, 11*8, 12*8, 13*8, 14*8, 15*8 },
+ // 8*16 /* every char takes 16 bytes */
+// };
+
+// static GFXDECODE_START( pc200 )
+ // GFXDECODE_ENTRY( "gfx1", 0x0000, pc200_charlayout, 3, 1 )
+// GFXDECODE_END
static MACHINE_CONFIG_START( pc200, amstrad_pc_state )
/* basic machine hardware */
@@ -301,8 +313,8 @@ static MACHINE_CONFIG_START( pc200, amstrad_pc_state )
MCFG_RS232_CTS_HANDLER(DEVWRITELINE("ins8250_3", ins8250_uart_device, cts_w))
/* video hardware */
- MCFG_FRAGMENT_ADD( pcvideo_pc200 )
- MCFG_GFXDECODE_ADD("gfxdecode", "palette", pc200)
+ MCFG_ISA8_BUS_ADD("isa", ":maincpu", pc_isabus_intf)
+ MCFG_ISA8_SLOT_ADD("isa", "aga", pc_isa8_cards, "aga_pc200", true)
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
@@ -332,33 +344,12 @@ static MACHINE_CONFIG_START( pc200, amstrad_pc_state )
MACHINE_CONFIG_END
-
-
-#if 0
-static const gfx_layout pc1512_charlayout =
-{
- 8, 8, /* 8 x 8 characters */
- 1024, /* 1024 characters */
- 1, /* 1 bits per pixel */
- { 0 }, /* no bitplanes */
- /* x offsets */
- { 0, 1, 2, 3, 4, 5, 6, 7 },
- /* y offsets */
- { 0*8, 1*8, 2*8, 3*8, 4*8, 5*8, 6*8, 7*8 },
- 8*8 /* every char takes 8 bytes */
-};
-
-static GFXDECODE_START( pc1512 )
- GFXDECODE_ENTRY( "gfx1", 0x0000, pc1512_charlayout, 3, 1 )
-GFXDECODE_END
-#endif
-
static MACHINE_CONFIG_START( ppc512, amstrad_pc_state )
/* basic machine hardware */
MCFG_CPU_ADD("maincpu", V30, 8000000)
MCFG_CPU_PROGRAM_MAP(ppc512_map)
MCFG_CPU_IO_MAP(ppc512_io)
- MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", amstrad_pc_state, pc_frame_interrupt, "screen", 0, 1)
+ MCFG_TIMER_DRIVER_ADD_PERIODIC("scantimer", amstrad_pc_state, pc_frame_interrupt, attotime::from_hz(60))
MCFG_MACHINE_START_OVERRIDE(amstrad_pc_state,pc)
MCFG_MACHINE_RESET_OVERRIDE(amstrad_pc_state,pc)
@@ -411,8 +402,8 @@ static MACHINE_CONFIG_START( ppc512, amstrad_pc_state )
MCFG_RS232_CTS_HANDLER(DEVWRITELINE("ins8250_3", ins8250_uart_device, cts_w))
/* video hardware */
- MCFG_FRAGMENT_ADD( pcvideo_pc200 )
- MCFG_GFXDECODE_ADD("gfxdecode", "palette", pc200)
+ MCFG_ISA8_BUS_ADD("isa", ":maincpu", pc_isabus_intf)
+ MCFG_ISA8_SLOT_ADD("isa", "aga", pc_isa8_cards, "aga_pc200", true)
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
@@ -482,9 +473,6 @@ ROM_START( pc200 )
ROMX_LOAD("40185.ic129", 0xfc001, 0x2000, CRC(c2b4eeac) SHA1(f11015fadf0c16d86ce2c5047be3e6a4782044f7), ROM_SKIP(1) | ROM_BIOS(3))
ROMX_LOAD("40184.ic132", 0xfc000, 0x2000, CRC(b22704a6) SHA1(dadd573db6cd34f339f2f0ae55b07537924c024a), ROM_SKIP(1) | ROM_BIOS(3))
// also mapped to f0000, f4000, f8000
- ROM_REGION(0x08100,"gfx1", 0)
- ROM_LOAD("40109.ic159", 0x00000, 0x08000, CRC(a8b67639) SHA1(99663bfb61798526e092205575370c2ad34249a1))
-
ROM_REGION( 0x800, "keyboard", 0 )
ROM_LOAD( "40112.ic801", 0x000, 0x800, CRC(842a954c) SHA1(93ca6badf20e0215025fe109959eddead8c52f38) )
ROM_END
@@ -501,8 +489,6 @@ ROM_START( pc20 )
ROM_LOAD16_BYTE("pc20v2.0", 0xfc001, 0x2000, CRC(41302eb8) SHA1(8b4b2afea543b96b45d6a30365281decc15f2932)) // v2
ROM_LOAD16_BYTE("pc20v2.1", 0xfc000, 0x2000, CRC(71b84616) SHA1(4135102a491b25fc659d70b957e07649f3eacf24)) // v2
// also mapped to f0000, f4000, f8000
- ROM_REGION(0x08100,"gfx1", 0)
- ROM_LOAD("40109.bin", 0x00000, 0x08000, CRC(a8b67639) SHA1(99663bfb61798526e092205575370c2ad34249a1))
ROM_END
@@ -513,9 +499,6 @@ ROM_START( ppc512 )
ROM_LOAD16_BYTE("40107.v1", 0xfc000, 0x2000, CRC(4e37e769) SHA1(88be3d3375ec3b0a7041dbcea225b197e50d4bfe)) // v1.9
ROM_LOAD16_BYTE("40108.v1", 0xfc001, 0x2000, CRC(4f0302d9) SHA1(e4d69ca98c3b98f3705a2902b16746360043f039)) // v1.9
// also mapped to f0000, f4000, f8000
- ROM_REGION(0x08100,"gfx1", 0)
- ROM_LOAD("40109.bin", 0x00000, 0x08000, CRC(a8b67639) SHA1(99663bfb61798526e092205575370c2ad34249a1))
-
ROM_REGION( 0x800, "keyboard", 0 ) // PPC512 / PPC640 / PC200 102-key keyboard
ROM_LOAD( "40112.ic801", 0x000, 0x800, CRC(842a954c) SHA1(93ca6badf20e0215025fe109959eddead8c52f38) )
ROM_END
@@ -528,9 +511,6 @@ ROM_START( ppc640 )
ROM_LOAD16_BYTE("40107.v2", 0xfc000, 0x2000, CRC(0785b63e) SHA1(4dbde6b9e9500298bb6241a8daefd85927f1ad28)) // v2.1
ROM_LOAD16_BYTE("40108.v2", 0xfc001, 0x2000, CRC(5351cf8c) SHA1(b4dbf11b39378ab4afd2107d3fe54a99fffdedeb)) // v2.1
// also mapped to f0000, f4000, f8000
- ROM_REGION(0x08100,"gfx1", 0)
- ROM_LOAD("40109.bin", 0x00000, 0x08000, CRC(a8b67639) SHA1(99663bfb61798526e092205575370c2ad34249a1))
-
ROM_REGION(0x2000,"subcpu", 0)
ROM_LOAD("40135.ic192", 0x00000, 0x2000, CRC(75d99199) SHA1(a76d39fda3d5140e1fb9ce70fcddbdfb8f891dc6))
@@ -545,8 +525,6 @@ ROM_START( pc2086 )
ROM_LOAD16_BYTE( "40179.ic129", 0xfc000, 0x2000, CRC(003605e4) SHA1(b882e97ee81b9ba0e7d969c63da3f2052f23b4b9) )
ROM_LOAD16_BYTE( "40180.ic132", 0xfc001, 0x2000, CRC(28ee5e58) SHA1(93e045609466fcec74e2bb72578bb7405281cf7b) )
- ROM_REGION(0x08100,"gfx1", ROMREGION_ERASE00)
-
ROM_REGION( 0x800, "keyboard", 0 ) // PC2086 / PC3086 102-key keyboard
ROM_LOAD( "40178.ic801", 0x000, 0x800, CRC(f72f1c2e) SHA1(34897e78b3d10f96b36d81778e97c4a9a1b8618b) )
ROM_END
@@ -558,8 +536,6 @@ ROM_START( pc3086 )
ROM_LOAD( "c800.bin", 0xc8000, 0x2000, CRC(3329c6d5) SHA1(982e852278185d69acde47a4f3942bc09ed76777) )
ROM_LOAD( "fc00.bin", 0xfc000, 0x4000, CRC(b5630753) SHA1(98c344831cc4dc59ebb39bbb1961964a8d39fe20) )
- ROM_REGION(0x08100,"gfx1", ROMREGION_ERASE00)
-
ROM_REGION( 0x800, "keyboard", 0 ) // PC2086 / PC3086 102-key keyboard
ROM_LOAD( "40178.ic801", 0x000, 0x800, CRC(f72f1c2e) SHA1(34897e78b3d10f96b36d81778e97c4a9a1b8618b) )
ROM_END
diff --git a/src/mess/drivers/pc.c b/src/mess/drivers/pc.c
index 69995caba51..2862c45da78 100644
--- a/src/mess/drivers/pc.c
+++ b/src/mess/drivers/pc.c
@@ -73,7 +73,6 @@ video HW too.
#include "machine/pit8253.h"
#include "bus/isa/isa.h"
#include "bus/isa/isa_cards.h"
-#include "video/pc_aga.h"
#include "video/pc_t1t.h"
#include "machine/pc_fdc.h"
@@ -530,11 +529,6 @@ INPUT_PORTS_END
static INPUT_PORTS_START( europc )
- PORT_START("IN0") /* IN0 */
- PORT_BIT ( 0xf0, 0xf0, IPT_UNUSED )
- PORT_BIT ( 0x08, 0x08, IPT_CUSTOM ) PORT_VBLANK("screen")
- PORT_BIT ( 0x07, 0x07, IPT_UNUSED )
-
PORT_START("DSW0") /* IN1 */
PORT_START("DSW1") /* IN2 */
@@ -577,11 +571,6 @@ static INPUT_PORTS_START( europc )
INPUT_PORTS_END
static INPUT_PORTS_START( bondwell )
- PORT_START("IN0") /* IN0 */
- PORT_BIT ( 0xf0, 0xf0, IPT_UNUSED )
- PORT_BIT ( 0x08, 0x08, IPT_CUSTOM ) PORT_VBLANK("screen")
- PORT_BIT ( 0x07, 0x07, IPT_UNUSED )
-
PORT_START("DSW0") /* IN1 */
PORT_DIPNAME( 0xc0, 0x40, "Number of floppy drives")
PORT_DIPSETTING( 0x00, "1" )
@@ -885,37 +874,37 @@ static MACHINE_CONFIG_DERIVED( pc10iii, pccga )
//MCFG_GFXDECODE_MODIFY("gfxdecode", pc10iii)
MACHINE_CONFIG_END
-static const gfx_layout europc_8_charlayout =
-{
- 8, 8, /* 8 x 8 characters */
- 256, /* 256 characters */
- 1, /* 1 bits per pixel */
- { 0 }, /* no bitplanes */
- /* x offsets */
- { 0, 1, 2, 3, 4, 5, 6, 7 },
- /* y offsets */
- { 0*8, 1*8, 2*8, 3*8, 4*8, 5*8, 6*8, 7*8 },
- 8*16 /* every char takes 16 bytes */
-};
+// static const gfx_layout europc_8_charlayout =
+// {
+ // 8, 8, /* 8 x 8 characters */
+ // 256, /* 256 characters */
+ // 1, /* 1 bits per pixel */
+ // { 0 }, /* no bitplanes */
+ // /* x offsets */
+ // { 0, 1, 2, 3, 4, 5, 6, 7 },
+ // /* y offsets */
+ // { 0*8, 1*8, 2*8, 3*8, 4*8, 5*8, 6*8, 7*8 },
+ // 8*16 /* every char takes 16 bytes */
+// };
-static const gfx_layout europc_16_charlayout =
-{
- 8, 16, /* 8 x 16 characters */
- 256, /* 256 characters */
- 1, /* 1 bits per pixel */
- { 0 }, /* no bitplanes */
- /* x offsets */
- { 0, 1, 2, 3, 4, 5, 6, 7 },
- /* y offsets */
- { 0*8, 1*8, 2*8, 3*8, 4*8, 5*8, 6*8, 7*8, 8*8, 9*8, 10*8, 11*8, 12*8, 13*8, 14*8, 15*8 },
- 8*16 /* every char takes 16 bytes */
-};
+// static const gfx_layout europc_16_charlayout =
+// {
+ // 8, 16, /* 8 x 16 characters */
+ // 256, /* 256 characters */
+ // 1, /* 1 bits per pixel */
+ // { 0 }, /* no bitplanes */
+ // /* x offsets */
+ // { 0, 1, 2, 3, 4, 5, 6, 7 },
+ // /* y offsets */
+ // { 0*8, 1*8, 2*8, 3*8, 4*8, 5*8, 6*8, 7*8, 8*8, 9*8, 10*8, 11*8, 12*8, 13*8, 14*8, 15*8 },
+ // 8*16 /* every char takes 16 bytes */
+// };
-static GFXDECODE_START( europc )
- GFXDECODE_ENTRY( "gfx1", 0x0000, europc_8_charlayout, 3, 1 )
- GFXDECODE_ENTRY( "gfx1", 0x0800, europc_16_charlayout, 3, 1 )
-GFXDECODE_END
+// static GFXDECODE_START( europc )
+ // GFXDECODE_ENTRY( "gfx1", 0x0000, europc_8_charlayout, 3, 1 )
+ // GFXDECODE_ENTRY( "gfx1", 0x0800, europc_16_charlayout, 3, 1 )
+// GFXDECODE_END
static MACHINE_CONFIG_START( europc, europc_pc_state )
/* basic machine hardware */
@@ -958,9 +947,8 @@ static MACHINE_CONFIG_START( europc, europc_pc_state )
MCFG_PC_JOY_ADD("pc_joy")
/* video hardware */
- MCFG_FRAGMENT_ADD( pcvideo_aga )
-
- MCFG_GFXDECODE_ADD("gfxdecode", "palette", europc)
+ MCFG_ISA8_BUS_ADD("isa", ":maincpu", pc_isabus_intf)
+ MCFG_ISA8_SLOT_ADD("isa", "aga", pc_isa8_cards, "aga", true)
/* sound hardware */
MCFG_SPEAKER_STANDARD_MONO("mono")
@@ -1863,8 +1851,6 @@ ROM_START( europc )
ROM_REGION(0x100000,"maincpu", 0)
// hdd bios integrated!
ROM_LOAD("50145", 0xf8000, 0x8000, CRC(1775a11d) SHA1(54430d4d0462860860397487c9c109e6f70db8e3)) // V2.07
- ROM_REGION(0x08100,"gfx1", 0)
- ROM_LOAD("50146 char d1.0 euro.u16", 0x00000, 0x02000, CRC(1305dcf5) SHA1(aca488a16ae4ff05a1f4d14574379ff49cd48343)) //D1.0
ROM_END
diff --git a/src/mess/includes/europc.h b/src/mess/includes/europc.h
index 8e9f71f5ea7..9c458d67781 100644
--- a/src/mess/includes/europc.h
+++ b/src/mess/includes/europc.h
@@ -8,8 +8,8 @@
#define EUROPC_H_
#include "includes/pc.h"
-#include "video/pc_aga.h"
-
+#include "bus/isa/isa.h"
+#include "bus/isa/isa_cards.h"
class europc_pc_state : public pc_state
{
public:
diff --git a/src/mess/machine/amstr_pc.c b/src/mess/machine/amstr_pc.c
index 0cf570190d3..1973f43d167 100644
--- a/src/mess/machine/amstr_pc.c
+++ b/src/mess/machine/amstr_pc.c
@@ -142,36 +142,15 @@ DRIVER_INIT_MEMBER(amstrad_pc_state,pc1640)
DRIVER_INIT_MEMBER(amstrad_pc_state,pc200)
{
- UINT8 *gfx = &memregion("gfx1")->base()[0x8000];
- int i;
-
- /* just a plain bit pattern for graphics data generation */
- for (i = 0; i < 256; i++)
- gfx[i] = i;
-
init_pc_common(write_line_delegate(FUNC(amstrad_pc_state::pc_set_keyb_int),this));
}
DRIVER_INIT_MEMBER(amstrad_pc_state,ppc512)
{
- UINT8 *gfx = &memregion("gfx1")->base()[0x8000];
- int i;
-
- /* just a plain bit pattern for graphics data generation */
- for (i = 0; i < 256; i++)
- gfx[i] = i;
-
init_pc_common(write_line_delegate(FUNC(amstrad_pc_state::pc_set_keyb_int),this));
}
DRIVER_INIT_MEMBER(amstrad_pc_state,pc1512)
{
- UINT8 *gfx = &memregion("gfx1")->base()[0x8000];
- int i;
-
- /* just a plain bit pattern for graphics data generation */
- for (i = 0; i < 256; i++)
- gfx[i] = i;
-
init_pc_common(write_line_delegate(FUNC(amstrad_pc_state::pc_set_keyb_int),this));
}
diff --git a/src/mess/machine/europc.c b/src/mess/machine/europc.c
index c88ce9e572b..35e946aa670 100644
--- a/src/mess/machine/europc.c
+++ b/src/mess/machine/europc.c
@@ -106,15 +106,15 @@ WRITE8_MEMBER( europc_pc_state::europc_jim_w )
}
// mode= data&0x10?AGA_COLOR:AGA_MONO;
// mode= data&0x10?AGA_COLOR:AGA_OFF;
- pc_aga_set_mode(space.machine(), m_jim_mode);
+ (machine().device<isa8_aga_device>("aga:aga"))->pc_aga_set_mode(m_jim_mode);
if (data & 0x80) m_jim_state = 0;
break;
case 4:
switch(data & 0xc0)
{
- case 0x00: space.machine().device("maincpu")->set_clock_scale(1.0 / 2); break;
- case 0x40: space.machine().device("maincpu")->set_clock_scale(3.0 / 4); break;
- default: space.machine().device("maincpu")->set_clock_scale(1); break;
+ case 0x00: machine().device("maincpu")->set_clock_scale(1.0 / 2); break;
+ case 0x40: machine().device("maincpu")->set_clock_scale(3.0 / 4); break;
+ default: machine().device("maincpu")->set_clock_scale(1); break;
}
break;
case 0xa:
@@ -352,14 +352,9 @@ NVRAM_HANDLER( europc_rtc )
DRIVER_INIT_MEMBER(europc_pc_state,europc)
{
- UINT8 *gfx = &memregion("gfx1")->base()[0x8000];
UINT8 *rom = &memregion("maincpu")->base()[0];
- int i;
-
- /* just a plain bit pattern for graphics data generation */
- for (i = 0; i < 256; i++)
- gfx[i] = i;
+ int i;
/*
fix century rom bios bug !
if year <79 month (and not CENTURY) is loaded with 0x20
diff --git a/src/mess/mess.mak b/src/mess/mess.mak
index 19279a317a6..69078cf9baa 100644
--- a/src/mess/mess.mak
+++ b/src/mess/mess.mak
@@ -291,7 +291,6 @@ VIDEOS += MC6847
VIDEOS += MSM6222B
VIDEOS += MSM6255
VIDEOS += MOS6566
-VIDEOS += PC_CGA
VIDEOS += PC_VGA
#VIDEOS += POLY
VIDEOS += PSX
@@ -1553,7 +1552,6 @@ $(MESSOBJ)/pitronic.a: \
$(MESS_DRIVERS)/beta.o \
$(MESSOBJ)/pc.a: \
- $(MESS_VIDEO)/pc_aga.o \
$(MESS_MACHINE)/tandy1t.o \
$(MESS_MACHINE)/europc.o \
$(MESS_MACHINE)/pc.o \
diff --git a/src/mess/video/pc_aga.c b/src/mess/video/pc_aga.c
deleted file mode 100644
index cf548f5e93c..00000000000
--- a/src/mess/video/pc_aga.c
+++ /dev/null
@@ -1,873 +0,0 @@
-/*****************************************************************************
- *
- * video/pc_aga.c
- *
- ****************************************************************************/
-#include "emu.h"
-#include "video/pc_aga.h"
-#include "includes/amstr_pc.h"
-#include "video/mc6845.h"
-#include "video/cgapal.h"
-#include "drivlgcy.h"
-
-
-#define CGA_MONITOR (space.machine().root_device().ioport("VIDEO")->read() & 0x1C)
-#define CGA_MONITOR_RGB 0x00 /* Colour RGB */
-#define CGA_MONITOR_MONO 0x04 /* Greyscale RGB */
-#define CGA_MONITOR_COMPOSITE 0x08 /* Colour composite */
-#define CGA_MONITOR_TELEVISION 0x0C /* Television */
-#define CGA_MONITOR_LCD 0x10 /* LCD, eg PPC512 */
-
-
-static VIDEO_START( pc_aga );
-static PALETTE_INIT( pc_aga );
-static MC6845_UPDATE_ROW( aga_update_row );
-static VIDEO_START( pc200 );
-static MC6845_END_UPDATE( aga_end_update );
-
-
-static MC6845_INTERFACE( mc6845_aga_intf )
-{
- false, /* show border area */
- 0,0,0,0, /* visarea adjustment */
- 8, /* numbers of pixels per video memory address */
- NULL, /* begin_update */
- aga_update_row, /* update_row */
- aga_end_update, /* end_update */
- DEVCB_NULL, /* on_de_chaged */
- DEVCB_NULL, /* on_cur_chaged */
- DEVCB_NULL, /* on_hsync_changed */
- DEVCB_NULL, /* on_vsync_changed */
- NULL
-};
-
-
-static struct {
- AGA_MODE mode;
- UINT8 mda_mode_control;
- UINT8 mda_status;
- UINT8 *mda_chr_gen;
-
- UINT8 cga_mode_control;
- UINT8 cga_color_select;
- UINT8 cga_status;
- UINT8 *cga_chr_gen;
-
- UINT8 pc_framecnt;
-
- mc6845_update_row_func update_row;
- UINT8 cga_palette_lut_2bpp[4];
-
- UINT8 *videoram;
-
- palette_device *palette;
-} aga;
-
-
-MACHINE_CONFIG_FRAGMENT( pcvideo_aga )
- MCFG_SCREEN_ADD( AGA_SCREEN_NAME, RASTER )
- MCFG_SCREEN_RAW_PARAMS( XTAL_14_31818MHz,912,0,640,262,0,200 )
- MCFG_SCREEN_UPDATE_DEVICE( AGA_MC6845_NAME, mc6845_device, screen_update )
-
- MCFG_PALETTE_ADD( "palette", CGA_PALETTE_SETS * 16 )
- MCFG_PALETTE_INIT_LEGACY( pc_aga )
-
- MCFG_MC6845_ADD( AGA_MC6845_NAME, MC6845, AGA_SCREEN_NAME, XTAL_14_31818MHz/8, mc6845_aga_intf )
-
- MCFG_VIDEO_START( pc_aga )
-MACHINE_CONFIG_END
-
-
-MACHINE_CONFIG_FRAGMENT( pcvideo_pc200 )
- MCFG_FRAGMENT_ADD( pcvideo_aga )
- MCFG_VIDEO_START( pc200 )
-MACHINE_CONFIG_END
-
-
-/* Initialise the cga palette */
-PALETTE_INIT( pc_aga )
-{
- int i;
- for(i = 0; i < CGA_PALETTE_SETS * 16; i++)
- palette.set_pen_color(i, cga_palette[i][0], cga_palette[i][1], cga_palette[i][2]);
-}
-
-
-static MC6845_UPDATE_ROW( aga_update_row ) {
- if ( aga.update_row ) {
- aga.update_row( device, bitmap, cliprect, ma, ra, y, x_count, cursor_x, param );
- }
-}
-
-static MC6845_END_UPDATE( aga_end_update ) {
- aga.pc_framecnt++;
-}
-
-
-/*************************************
- *
- * row update functions
- *
- *************************************/
-
-/* colors need fixing in the mda_text_* functions ! */
-static MC6845_UPDATE_ROW( mda_text_inten_update_row ) {
- const rgb_t *palette = aga.palette->palette()->entry_list_raw();
- UINT8 *videoram = aga.videoram;
- UINT32 *p = &bitmap.pix32(y);
- UINT16 chr_base = ( ra & 0x08 ) ? 0x800 | ( ra & 0x07 ) : ra;
- int i;
-
- if ( y == 0 ) logerror("mda_text_inten_update_row\n");
- for ( i = 0; i < x_count; i++ ) {
- UINT16 offset = ( ( ma + i ) << 1 ) & 0x0FFF;
- UINT8 chr = videoram[ offset ];
- UINT8 attr = videoram[ offset + 1 ];
- UINT8 data = aga.mda_chr_gen[ chr_base + chr * 8 ];
- UINT8 fg = ( attr & 0x08 ) ? 3 : 2;
- UINT8 bg = 0;
-
- if ( ( attr & ~0x88 ) == 0 ) {
- data = 0x00;
- }
-
- switch( attr ) {
- case 0x70:
- bg = 2;
- fg = 0;
- break;
- case 0x78:
- bg = 2;
- fg = 1;
- break;
- case 0xF0:
- bg = 3;
- fg = 0;
- break;
- case 0xF8:
- bg = 3;
- fg = 1;
- break;
- }
-
- if ( i == cursor_x || ( attr & 0x07 ) == 0x01 ) {
- data = 0xFF;
- }
-
- *p = palette[( data & 0x80 ) ? fg : bg]; p++;
- *p = palette[( data & 0x40 ) ? fg : bg]; p++;
- *p = palette[( data & 0x20 ) ? fg : bg]; p++;
- *p = palette[( data & 0x10 ) ? fg : bg]; p++;
- *p = palette[( data & 0x08 ) ? fg : bg]; p++;
- *p = palette[( data & 0x04 ) ? fg : bg]; p++;
- *p = palette[( data & 0x02 ) ? fg : bg]; p++;
- *p = palette[( data & 0x01 ) ? fg : bg]; p++;
- if ( ( chr & 0xE0 ) == 0xC0 ) {
- *p = palette[( data & 0x01 ) ? fg : bg]; p++;
- } else {
- *p = palette[bg]; p++;
- }
- }
-}
-
-
-static MC6845_UPDATE_ROW( mda_text_blink_update_row ) {
- UINT8 *videoram = aga.videoram;
- const rgb_t *palette = aga.palette->palette()->entry_list_raw();
- UINT32 *p = &bitmap.pix32(y);
- UINT16 chr_base = ( ra & 0x08 ) ? 0x800 | ( ra & 0x07 ) : ra;
- int i;
-
- if ( y == 0 ) logerror("mda_text_blink_update_row\n");
- for ( i = 0; i < x_count; i++ ) {
- UINT16 offset = ( ( ma + i ) << 1 ) & 0x0FFF;
- UINT8 chr = videoram[ offset ];
- UINT8 attr = videoram[ offset + 1 ];
- UINT8 data = aga.mda_chr_gen[ chr_base + chr * 8 ];
- UINT8 fg = ( attr & 0x08 ) ? 3 : 2;
- UINT8 bg = 0;
-
- if ( ( attr & ~0x88 ) == 0 ) {
- data = 0x00;
- }
-
- switch( attr ) {
- case 0x70:
- case 0xF0:
- bg = 2;
- fg = 0;
- break;
- case 0x78:
- case 0xF8:
- bg = 2;
- fg = 1;
- break;
- }
-
- if ( i == cursor_x ) {
- data = 0xFF;
- } else {
- if ( ( attr & 0x07 ) == 0x01 ) {
- data = 0xFF;
- }
- if ( ( attr & 0x80 ) && ( aga.pc_framecnt & 0x40 ) ) {
- data = 0x00;
- }
- }
-
- *p = palette[( data & 0x80 ) ? fg : bg]; p++;
- *p = palette[( data & 0x40 ) ? fg : bg]; p++;
- *p = palette[( data & 0x20 ) ? fg : bg]; p++;
- *p = palette[( data & 0x10 ) ? fg : bg]; p++;
- *p = palette[( data & 0x08 ) ? fg : bg]; p++;
- *p = palette[( data & 0x04 ) ? fg : bg]; p++;
- *p = palette[( data & 0x02 ) ? fg : bg]; p++;
- *p = palette[( data & 0x01 ) ? fg : bg]; p++;
- if ( ( chr & 0xE0 ) == 0xC0 ) {
- *p = palette[( data & 0x01 ) ? fg : bg]; p++;
- } else {
- *p = palette[bg]; p++;
- }
- }
-}
-
-
-static MC6845_UPDATE_ROW( cga_text_inten_update_row ) {
- UINT8 *videoram = aga.videoram;
- const rgb_t *palette = aga.palette->palette()->entry_list_raw();
- UINT32 *p = &bitmap.pix32(y);
- int i;
-
- if ( y == 0 ) logerror("cga_text_inten_update_row\n");
- for ( i = 0; i < x_count; i++ ) {
- UINT16 offset = ( ( ma + i ) << 1 ) & 0x3fff;
- UINT8 chr = videoram[ offset ];
- UINT8 attr = videoram[ offset +1 ];
- UINT8 data = aga.cga_chr_gen[ chr * 16 + ra ];
- UINT16 fg = attr & 0x0F;
- UINT16 bg = ( attr >> 4 ) & 0x07;
-
- if ( i == cursor_x ) {
- data = 0xFF;
- }
-
- *p = palette[( data & 0x80 ) ? fg : bg]; p++;
- *p = palette[( data & 0x40 ) ? fg : bg]; p++;
- *p = palette[( data & 0x20 ) ? fg : bg]; p++;
- *p = palette[( data & 0x10 ) ? fg : bg]; p++;
- *p = palette[( data & 0x08 ) ? fg : bg]; p++;
- *p = palette[( data & 0x04 ) ? fg : bg]; p++;
- *p = palette[( data & 0x02 ) ? fg : bg]; p++;
- *p = palette[( data & 0x01 ) ? fg : bg]; p++;
- }
-}
-
-static MC6845_UPDATE_ROW( cga_text_inten_alt_update_row ) {
- const rgb_t *palette = aga.palette->palette()->entry_list_raw();
- UINT8 *videoram = aga.videoram;
- UINT32 *p = &bitmap.pix32(y);
- int i;
-
- if ( y == 0 ) logerror("cga_text_inten_alt_update_row\n");
- for ( i = 0; i < x_count; i++ ) {
- UINT16 offset = ( ( ma + i ) << 1 ) & 0x3fff;
- UINT8 chr = videoram[ offset ];
- UINT8 attr = videoram[ offset +1 ];
- UINT8 data = aga.cga_chr_gen[ chr * 16 + ra ];
- UINT16 fg = attr & 0x0F;
-
- if ( i == cursor_x ) {
- data = 0xFF;
- }
-
- *p = palette[( data & 0x80 ) ? fg : 0]; p++;
- *p = palette[( data & 0x40 ) ? fg : 0]; p++;
- *p = palette[( data & 0x20 ) ? fg : 0]; p++;
- *p = palette[( data & 0x10 ) ? fg : 0]; p++;
- *p = palette[( data & 0x08 ) ? fg : 0]; p++;
- *p = palette[( data & 0x04 ) ? fg : 0]; p++;
- *p = palette[( data & 0x02 ) ? fg : 0]; p++;
- *p = palette[( data & 0x01 ) ? fg : 0]; p++;
- }
-}
-
-static MC6845_UPDATE_ROW( cga_text_blink_update_row ) {
- const rgb_t *palette = aga.palette->palette()->entry_list_raw();
- UINT8 *videoram = aga.videoram;
- UINT32 *p = &bitmap.pix32(y);
- int i;
-
- for ( i = 0; i < x_count; i++ ) {
- UINT16 offset = ( ( ma + i ) << 1 ) & 0x3fff;
- UINT8 chr = videoram[ offset ];
- UINT8 attr = videoram[ offset +1 ];
- UINT8 data = aga.cga_chr_gen[ chr * 16 + ra ];
- UINT16 fg = attr & 0x0F;
- UINT16 bg = (attr >> 4) & 0x07;
-
- if ( i == cursor_x ) {
- data = 0xFF;
- } else {
- if ( ( attr & 0x80 ) && ( aga.pc_framecnt & 0x10 ) ) {
- data = 0x00;
- }
- }
-
- *p = palette[( data & 0x80 ) ? fg : bg]; p++;
- *p = palette[( data & 0x40 ) ? fg : bg]; p++;
- *p = palette[( data & 0x20 ) ? fg : bg]; p++;
- *p = palette[( data & 0x10 ) ? fg : bg]; p++;
- *p = palette[( data & 0x08 ) ? fg : bg]; p++;
- *p = palette[( data & 0x04 ) ? fg : bg]; p++;
- *p = palette[( data & 0x02 ) ? fg : bg]; p++;
- *p = palette[( data & 0x01 ) ? fg : bg]; p++;
- }
-}
-
-static MC6845_UPDATE_ROW( cga_text_blink_alt_update_row ) {
- const rgb_t *palette = aga.palette->palette()->entry_list_raw();
- UINT8 *videoram = aga.videoram;
- UINT32 *p = &bitmap.pix32(y);
- int i;
-
- if ( y == 0 ) logerror("cga_text_blink_alt_update_row\n");
- for ( i = 0; i < x_count; i++ ) {
- UINT16 offset = ( ( ma + i ) << 1 ) & 0x3fff;
- UINT8 chr = videoram[ offset ];
- UINT8 attr = videoram[ offset +1 ];
- UINT8 data = aga.cga_chr_gen[ chr * 16 + ra ];
- UINT16 fg = attr & 0x07;
- UINT16 bg = 0;
-
- if ( i == cursor_x ) {
- data = 0xFF;
- } else {
- if ( ( attr & 0x80 ) && ( aga.pc_framecnt & 0x10 ) ) {
- data = 0x00;
- bg = ( attr >> 4 ) & 0x07;
- }
- }
-
- *p = palette[( data & 0x80 ) ? fg : bg]; p++;
- *p = palette[( data & 0x40 ) ? fg : bg]; p++;
- *p = palette[( data & 0x20 ) ? fg : bg]; p++;
- *p = palette[( data & 0x10 ) ? fg : bg]; p++;
- *p = palette[( data & 0x08 ) ? fg : bg]; p++;
- *p = palette[( data & 0x04 ) ? fg : bg]; p++;
- *p = palette[( data & 0x02 ) ? fg : bg]; p++;
- *p = palette[( data & 0x01 ) ? fg : bg]; p++;
- }
-}
-
-static MC6845_UPDATE_ROW( cga_gfx_4bppl_update_row ) {
- const rgb_t *palette = aga.palette->palette()->entry_list_raw();
- UINT8 *videoram = aga.videoram;
- UINT32 *p = &bitmap.pix32(y);
- int i;
-
- if ( y == 0 ) logerror("cga_gfx_4bppl_update_row\n");
- for ( i = 0; i < x_count; i++ ) {
- UINT16 offset = ( ( ( ma + i ) << 1 ) & 0x1fff ) | ( ( y & 1 ) << 13 );
- UINT8 data = videoram[ offset ];
-
- *p = palette[data >> 4]; p++;
- *p = palette[data >> 4]; p++;
- *p = palette[data & 0x0F]; p++;
- *p = palette[data & 0x0F]; p++;
-
- data = videoram[ offset + 1 ];
-
- *p = palette[data >> 4]; p++;
- *p = palette[data >> 4]; p++;
- *p = palette[data & 0x0F]; p++;
- *p = palette[data & 0x0F]; p++;
- }
-}
-
-static MC6845_UPDATE_ROW( cga_gfx_4bpph_update_row ) {
- UINT8 *videoram = aga.videoram;
- const rgb_t *palette = aga.palette->palette()->entry_list_raw();
- UINT32 *p = &bitmap.pix32(y);
- int i;
-
- if ( y == 0 ) logerror("cga_gfx_4bpph_update_row\n");
- for ( i = 0; i < x_count; i++ ) {
- UINT16 offset = ( ( ( ma + i ) << 1 ) & 0x1fff ) | ( ( y & 1 ) << 13 );
- UINT8 data = videoram[ offset ];
-
- *p = palette[data >> 4]; p++;
- *p = palette[data >> 4]; p++;
- *p = palette[data >> 4]; p++;
- *p = palette[data >> 4]; p++;
- *p = palette[data & 0x0F]; p++;
- *p = palette[data & 0x0F]; p++;
- *p = palette[data & 0x0F]; p++;
- *p = palette[data & 0x0F]; p++;
-
- data = videoram[ offset + 1 ];
-
- *p = palette[data >> 4]; p++;
- *p = palette[data >> 4]; p++;
- *p = palette[data >> 4]; p++;
- *p = palette[data >> 4]; p++;
- *p = palette[data & 0x0F]; p++;
- *p = palette[data & 0x0F]; p++;
- *p = palette[data & 0x0F]; p++;
- *p = palette[data & 0x0F]; p++;
- }
-}
-
-static MC6845_UPDATE_ROW( cga_gfx_2bpp_update_row ) {
- UINT8 *videoram = aga.videoram;
- const rgb_t *palette = aga.palette->palette()->entry_list_raw();
- UINT32 *p = &bitmap.pix32(y);
- int i;
-
-// if ( y == 0 ) logerror("cga_gfx_2bpp_update_row\n");
- for ( i = 0; i < x_count; i++ ) {
- UINT16 offset = ( ( ( ma + i ) << 1 ) & 0x1fff ) | ( ( y & 1 ) << 13 );
- UINT8 data = videoram[ offset ];
-
- *p = palette[aga.cga_palette_lut_2bpp[ ( data >> 6 ) & 0x03 ]]; p++;
- *p = palette[aga.cga_palette_lut_2bpp[ ( data >> 4 ) & 0x03 ]]; p++;
- *p = palette[aga.cga_palette_lut_2bpp[ ( data >> 2 ) & 0x03 ]]; p++;
- *p = palette[aga.cga_palette_lut_2bpp[ data & 0x03 ]]; p++;
-
- data = videoram[ offset+1 ];
-
- *p = palette[aga.cga_palette_lut_2bpp[ ( data >> 6 ) & 0x03 ]]; p++;
- *p = palette[aga.cga_palette_lut_2bpp[ ( data >> 4 ) & 0x03 ]]; p++;
- *p = palette[aga.cga_palette_lut_2bpp[ ( data >> 2 ) & 0x03 ]]; p++;
- *p = palette[aga.cga_palette_lut_2bpp[ data & 0x03 ]]; p++;
- }
-}
-
-static MC6845_UPDATE_ROW( cga_gfx_1bpp_update_row ) {
- UINT8 *videoram = aga.videoram;
- const rgb_t *palette = aga.palette->palette()->entry_list_raw();
- UINT32 *p = &bitmap.pix32(y);
- UINT8 fg = aga.cga_color_select & 0x0F;
- int i;
-
- if ( y == 0 ) logerror("cga_gfx_1bpp_update_row\n");
- for ( i = 0; i < x_count; i++ ) {
- UINT16 offset = ( ( ( ma + i ) << 1 ) & 0x1fff ) | ( ( ra & 1 ) << 13 );
- UINT8 data = videoram[ offset ];
-
- *p = palette[( data & 0x80 ) ? fg : 0]; p++;
- *p = palette[( data & 0x40 ) ? fg : 0]; p++;
- *p = palette[( data & 0x20 ) ? fg : 0]; p++;
- *p = palette[( data & 0x10 ) ? fg : 0]; p++;
- *p = palette[( data & 0x08 ) ? fg : 0]; p++;
- *p = palette[( data & 0x04 ) ? fg : 0]; p++;
- *p = palette[( data & 0x02 ) ? fg : 0]; p++;
- *p = palette[( data & 0x01 ) ? fg : 0]; p++;
-
- data = videoram[ offset + 1 ];
-
- *p = palette[( data & 0x80 ) ? fg : 0]; p++;
- *p = palette[( data & 0x40 ) ? fg : 0]; p++;
- *p = palette[( data & 0x20 ) ? fg : 0]; p++;
- *p = palette[( data & 0x10 ) ? fg : 0]; p++;
- *p = palette[( data & 0x08 ) ? fg : 0]; p++;
- *p = palette[( data & 0x04 ) ? fg : 0]; p++;
- *p = palette[( data & 0x02 ) ? fg : 0]; p++;
- *p = palette[( data & 0x01 ) ? fg : 0]; p++;
- }
-}
-
-/*************************************
- *
- * AGA MDA/CGA read/write handlers
- *
- *************************************/
-
-static READ8_HANDLER ( pc_aga_mda_r )
-{
- UINT8 data = 0xFF;
-
- if ( aga.mode == AGA_MONO ) {
- mc6845_device *mc6845 = space.machine().device<mc6845_device>(AGA_MC6845_NAME);
- switch( offset )
- {
- case 0: case 2: case 4: case 6:
- /* return last written mc6845 address value here? */
- break;
- case 1: case 3: case 5: case 7:
- data = mc6845->register_r(space, offset);
- break;
- case 10:
- data = (space.machine().root_device().ioport("IN0")->read() & 0x80 ) | 0x08 | aga.mda_status;
- aga.mda_status ^= 0x01;
- break;
- /* 12, 13, 14 are the LPT1 ports */
- }
- }
- return data;
-}
-
-static WRITE8_HANDLER ( pc_aga_mda_w )
-{
- if ( aga.mode == AGA_MONO ) {
- mc6845_device *mc6845 = space.machine().device<mc6845_device>(AGA_MC6845_NAME);
- switch( offset )
- {
- case 0: case 2: case 4: case 6:
- mc6845->address_w( space, offset, data );
- break;
- case 1: case 3: case 5: case 7:
- mc6845->register_w( space, offset, data );
- break;
- case 8:
- aga.mda_mode_control = data;
-
- switch( aga.mda_mode_control & 0x2a ) {
- case 0x08:
- aga.update_row = mda_text_inten_update_row;
- break;
- case 0x28:
- aga.update_row = mda_text_blink_update_row;
- break;
- default:
- aga.update_row = NULL;
- }
- break;
- }
- }
-}
-
-
-static READ8_HANDLER ( pc_aga_cga_r )
-{
- UINT8 data = 0xFF;
-
- if ( aga.mode == AGA_COLOR ) {
- mc6845_device *mc6845 = space.machine().device<mc6845_device>(AGA_MC6845_NAME);
- switch( offset ) {
- case 0: case 2: case 4: case 6:
- /* return last written mc6845 address value here? */
- break;
- case 1: case 3: case 5: case 7:
- data = mc6845->register_r( space, offset);
- break;
- case 10:
- data = (mc6845->vsync_r() ? 8 : 0) | ( ( data & 0x40 ) >> 4 ) | mc6845->hsync_r();
- break;
- }
- }
- return data;
-}
-
-
-static void pc_aga_set_palette_luts(void) {
- /* Setup 2bpp palette lookup table */
- if ( aga.cga_mode_control & 0x10 ) {
- aga.cga_palette_lut_2bpp[0] = 0;
- } else {
- aga.cga_palette_lut_2bpp[0] = aga.cga_color_select & 0x0F;
- }
- if ( aga.cga_mode_control & 0x04 ) {
- aga.cga_palette_lut_2bpp[1] = ( ( aga.cga_color_select & 0x10 ) >> 1 ) | 3;
- aga.cga_palette_lut_2bpp[2] = ( ( aga.cga_color_select & 0x10 ) >> 1 ) | 4;
- aga.cga_palette_lut_2bpp[3] = ( ( aga.cga_color_select & 0x10 ) >> 1 ) | 7;
- } else {
- if ( aga.cga_color_select & 0x20 ) {
- aga.cga_palette_lut_2bpp[1] = ( ( aga.cga_color_select & 0x10 ) >> 1 ) | 3;
- aga.cga_palette_lut_2bpp[2] = ( ( aga.cga_color_select & 0x10 ) >> 1 ) | 5;
- aga.cga_palette_lut_2bpp[3] = ( ( aga.cga_color_select & 0x10 ) >> 1 ) | 7;
- } else {
- aga.cga_palette_lut_2bpp[1] = ( ( aga.cga_color_select & 0x10 ) >> 1 ) | 2;
- aga.cga_palette_lut_2bpp[2] = ( ( aga.cga_color_select & 0x10 ) >> 1 ) | 4;
- aga.cga_palette_lut_2bpp[3] = ( ( aga.cga_color_select & 0x10 ) >> 1 ) | 6;
- }
- }
- //logerror("2bpp lut set to %d,%d,%d,%d\n", aga.cga_palette_lut_2bpp[0], aga.cga_palette_lut_2bpp[1], aga.cga_palette_lut_2bpp[2], aga.cga_palette_lut_2bpp[3]);
-}
-
-
-static WRITE8_HANDLER ( pc_aga_cga_w )
-{
- if ( aga.mode == AGA_COLOR ) {
- mc6845_device *mc6845 = space.machine().device<mc6845_device>(AGA_MC6845_NAME);
-
- switch(offset) {
- case 0: case 2: case 4: case 6:
- mc6845->address_w( space, offset, data );
- break;
- case 1: case 3: case 5: case 7:
- mc6845->register_w( space, offset, data );
- break;
- case 8:
- aga.cga_mode_control = data;
-
- //logerror("mode set to %02X\n", aga.cga_mode_control & 0x3F );
- switch ( aga.cga_mode_control & 0x3F ) {
- case 0x08: case 0x09: case 0x0C: case 0x0D:
- mc6845->set_hpixels_per_column( 8 );
- aga.update_row = cga_text_inten_update_row;
- break;
- case 0x0A: case 0x0B: case 0x2A: case 0x2B:
- mc6845->set_hpixels_per_column( 8 );
- if ( CGA_MONITOR == CGA_MONITOR_COMPOSITE ) {
- aga.update_row = cga_gfx_4bppl_update_row;
- } else {
- aga.update_row = cga_gfx_2bpp_update_row;
- }
- break;
- case 0x0E: case 0x0F: case 0x2E: case 0x2F:
- mc6845->set_hpixels_per_column( 8 );
- aga.update_row = cga_gfx_2bpp_update_row;
- break;
- case 0x18: case 0x19: case 0x1C: case 0x1D:
- mc6845->set_hpixels_per_column( 8 );
- aga.update_row = cga_text_inten_alt_update_row;
- break;
- case 0x1A: case 0x1B: case 0x3A: case 0x3B:
- mc6845->set_hpixels_per_column( 8 );
- if ( CGA_MONITOR == CGA_MONITOR_COMPOSITE ) {
- aga.update_row = cga_gfx_4bpph_update_row;
- } else {
- aga.update_row = cga_gfx_1bpp_update_row;
- }
- break;
- case 0x1E: case 0x1F: case 0x3E: case 0x3F:
- mc6845->set_hpixels_per_column( 16 );
- aga.update_row = cga_gfx_1bpp_update_row;
- break;
- case 0x28: case 0x29: case 0x2C: case 0x2D:
- mc6845->set_hpixels_per_column( 8 );
- aga.update_row = cga_text_blink_update_row;
- break;
- case 0x38: case 0x39: case 0x3C: case 0x3D:
- mc6845->set_hpixels_per_column( 8 );
- aga.update_row = cga_text_blink_alt_update_row;
- break;
- default:
- aga.update_row = NULL;
- break;
- }
-
- pc_aga_set_palette_luts();
- break;
- case 9:
- aga.cga_color_select = data;
- pc_aga_set_palette_luts();
- break;
- }
- }
-}
-
-/*************************************/
-
-void pc_aga_set_mode(running_machine &machine, AGA_MODE mode)
-{
- mc6845_device *mc6845 = machine.device<mc6845_device>(AGA_MC6845_NAME);
-
- aga.mode = mode;
-
- switch (aga.mode) {
- case AGA_COLOR:
- mc6845->set_clock( XTAL_14_31818MHz/8 );
- break;
- case AGA_MONO:
- mc6845->set_clock( 16257000/9 );
- break;
- case AGA_OFF:
- break;
- }
-}
-
-
-VIDEO_START( pc_aga )
-{
- address_space &space = machine.firstcpu->space(AS_PROGRAM);
- address_space &spaceio = machine.firstcpu->space(AS_IO);
- int buswidth = machine.firstcpu->space_config(AS_PROGRAM)->m_databus_width;
- switch(buswidth)
- {
- case 8:
- space.install_legacy_readwrite_handler(0xb0000, 0xbffff, FUNC(pc_aga_videoram_r), FUNC(pc_aga_videoram_w) );
- spaceio.install_legacy_readwrite_handler(0x3b0, 0x3bf, FUNC(pc_aga_mda_r), FUNC(pc_aga_mda_w) );
- spaceio.install_legacy_readwrite_handler(0x3d0, 0x3df, FUNC(pc_aga_cga_r), FUNC(pc_aga_cga_w) );
- break;
-
- case 16:
- space.install_legacy_readwrite_handler(0xb0000, 0xbffff, FUNC(pc_aga_videoram_r), FUNC(pc_aga_videoram_w), 0xffff );
- spaceio.install_legacy_readwrite_handler(0x3b0, 0x3bf, FUNC(pc_aga_mda_r), FUNC(pc_aga_mda_w), 0xffff );
- spaceio.install_legacy_readwrite_handler(0x3d0, 0x3df, FUNC(pc_aga_cga_r), FUNC(pc_aga_cga_w), 0xffff );
- break;
-
- default:
- fatalerror("AGA: Bus width %d not supported\n", buswidth);
- break;
- }
-
- memset( &aga, 0, sizeof( aga ) );
- aga.mode = AGA_COLOR;
- aga.mda_chr_gen = machine.root_device().memregion("gfx1")->base() + 0x1000;
- aga.cga_chr_gen = machine.root_device().memregion("gfx1")->base();
- aga.videoram = auto_alloc_array(machine, UINT8, 0x10000);
- aga.palette = machine.device<palette_device>(":palette");
-}
-
-VIDEO_START( pc200 )
-{
- address_space &space = machine.firstcpu->space(AS_PROGRAM);
- address_space &spaceio = machine.firstcpu->space(AS_IO);
- int buswidth = machine.firstcpu->space_config(AS_PROGRAM)->m_databus_width;
- switch(buswidth)
- {
- case 8:
- space.install_legacy_readwrite_handler(0xb0000, 0xbffff, FUNC(pc200_videoram_r), FUNC(pc200_videoram_w) );
- spaceio.install_legacy_readwrite_handler(0x3b0, 0x3bf, FUNC(pc_aga_mda_r), FUNC(pc_aga_mda_w) );
- spaceio.install_legacy_readwrite_handler(0x3d0, 0x3df, FUNC(pc200_cga_r), FUNC(pc200_cga_w) );
- break;
-
- case 16:
- space.install_legacy_readwrite_handler(0xb0000, 0xbffff, FUNC(pc200_videoram_r), FUNC(pc200_videoram_w), 0xffff );
- spaceio.install_legacy_readwrite_handler(0x3b0, 0x3bf, FUNC(pc_aga_mda_r), FUNC(pc_aga_mda_w), 0xffff );
- spaceio.install_legacy_readwrite_handler(0x3d0, 0x3df, FUNC(pc200_cga_r), FUNC(pc200_cga_w), 0xffff );
- break;
-
- default:
- fatalerror("AGA: Bus width %d not supported\n", buswidth);
- break;
- }
- memset( &aga, 0, sizeof( aga ) );
-
- aga.mode = AGA_COLOR;
- aga.mda_chr_gen = machine.root_device().memregion("gfx1")->base();
- aga.cga_chr_gen = machine.root_device().memregion("gfx1")->base() + 0x1000;
- aga.videoram = auto_alloc_array(machine, UINT8, 0x10000);
- aga.palette = machine.device<palette_device>(":palette");
- memset(aga.videoram, 0, sizeof(UINT8) * 0x10000);
-}
-
-
-WRITE8_HANDLER ( pc_aga_videoram_w )
-{
- switch (aga.mode) {
- case AGA_COLOR:
- if (offset>=0x8000)
- aga.videoram[offset-0x8000]=data;
- break;
- case AGA_MONO:
- aga.videoram[offset]=data;
- break;
- case AGA_OFF: break;
- }
-}
-
- READ8_HANDLER( pc_aga_videoram_r )
-{
- UINT8 *videoram = aga.videoram;
- switch (aga.mode) {
- case AGA_COLOR:
- if (offset>=0x8000) return videoram[offset-0x8000];
- return 0;
- case AGA_MONO:
- return videoram[offset];
- case AGA_OFF: break;
- }
- return 0;
-}
-
-READ8_HANDLER( pc200_videoram_r )
-{
- UINT8 *videoram = aga.videoram;
- switch (aga.mode)
- {
- default:
- if (offset>=0x8000) return videoram[offset-0x8000];
- return 0;
- case AGA_MONO:
- return videoram[offset];
- }
- return 0;
-}
-
-WRITE8_HANDLER ( pc200_videoram_w )
-{
- switch (aga.mode)
- {
- default:
- if (offset>=0x8000)
- aga.videoram[offset-0x8000]=data;
- break;
- case AGA_MONO:
- aga.videoram[offset]=data;
- break;
- }
-}
-
-static struct {
- UINT8 port8, portd, porte;
-} pc200= { 0 };
-
-// in reality it is of course only 1 graphics adapter,
-// but now cga and mda are splitted in mess
-WRITE8_HANDLER( pc200_cga_w )
-{
- pc_aga_cga_w(space, offset,data,mem_mask);
- switch(offset) {
- case 4:
- pc200.portd |= 0x20;
- break;
- case 8:
- pc200.port8 = data;
- pc200.portd |= 0x80;
- break;
- case 0xe:
- pc200.portd = 0x1f;
- if (data & 0x80)
- pc200.portd |= 0x40;
-
-/* The bottom 3 bits of this port are:
- * Bit 2: Disable AGA
- * Bit 1: Select MDA
- * Bit 0: Select external display (monitor) rather than internal display
- * (TV for PC200; LCD for PPC512) */
- if ((pc200.porte & 7) != (data & 7))
- {
- if (data & 4)
- pc_aga_set_mode(space.machine(), AGA_OFF);
- else if (data & 2)
- pc_aga_set_mode(space.machine(), AGA_MONO);
- else
- pc_aga_set_mode(space.machine(), AGA_COLOR);
- }
- pc200.porte = data;
- break;
-
- default:
- break;
- }
-}
-
-READ8_HANDLER ( pc200_cga_r )
-{
- UINT8 result = 0xff;
-
- switch(offset) {
- case 8:
- result = pc200.port8;
- break;
-
- case 0xd:
- // after writing 0x80 to 0x3de, bits 7..5 of 0x3dd from the 2nd read must be 0
- result=pc200.portd;
- pc200.portd&=0x1f;
- break;
-
- case 0xe:
- // 0x20 low cga
- // 0x10 low special
- result = space.machine().root_device().ioport("DSW0")->read() & 0x38;
- break;
-
- default:
- result = pc_aga_cga_r(space, offset, mem_mask);
- break;
- }
- return result;
-}
diff --git a/src/mess/video/pc_aga.h b/src/mess/video/pc_aga.h
deleted file mode 100644
index acf3414cf75..00000000000
--- a/src/mess/video/pc_aga.h
+++ /dev/null
@@ -1,47 +0,0 @@
-/*
- pc cga/mda combi adapters
-
- one type hardware switchable between cga and mda/hercules
- another type software switchable between cga and mda/hercules
-
- some support additional modes like
- commodore pc10 320x200 in 16 colors
-
-
- // aga
- // 256 8x8 thick chars
- // 256 8x8 thin chars
- // 256 9x14 in 8x16 chars, line 3 is connected to a10
- ROM_LOAD("aga.chr", 0x00000, 0x02000, CRC(aca81498))
- // hercules font of above
- ROM_LOAD("hercules.chr", 0x00000, 0x1000, CRC(7e8c9d76))
-
-*/
-#ifndef __PC_AGA__
-#define __PC_AGA__
-
-
-#define AGA_SCREEN_NAME "screen"
-#define AGA_MC6845_NAME "mc6845_aga"
-
-MACHINE_CONFIG_EXTERN( pcvideo_aga );
-MACHINE_CONFIG_EXTERN( pcvideo_pc200 );
-
-
-enum AGA_MODE { AGA_OFF, AGA_COLOR, AGA_MONO };
-void pc_aga_set_mode(running_machine &machine, AGA_MODE mode);
-
-DECLARE_READ8_HANDLER( pc_aga_videoram_r );
-DECLARE_WRITE8_HANDLER( pc_aga_videoram_w );
-
-DECLARE_READ8_HANDLER( pc200_videoram_r );
-DECLARE_WRITE8_HANDLER( pc200_videoram_w );
-DECLARE_READ16_HANDLER( pc200_videoram16le_r );
-DECLARE_WRITE16_HANDLER( pc200_videoram16le_w );
-
-DECLARE_READ8_HANDLER( pc200_cga_r );
-DECLARE_WRITE8_HANDLER( pc200_cga_w );
-DECLARE_READ16_HANDLER( pc200_cga16le_r );
-DECLARE_WRITE16_HANDLER( pc200_cga16le_w );
-
-#endif