summaryrefslogtreecommitdiffstatshomepage
path: root/src/devices/bus/isa/aga.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/devices/bus/isa/aga.cpp')
-rw-r--r--src/devices/bus/isa/aga.cpp898
1 files changed, 425 insertions, 473 deletions
diff --git a/src/devices/bus/isa/aga.cpp b/src/devices/bus/isa/aga.cpp
index f15abd2eb51..daf44fa9750 100644
--- a/src/devices/bus/isa/aga.cpp
+++ b/src/devices/bus/isa/aga.cpp
@@ -9,6 +9,9 @@
#include "aga.h"
#include "video/cgapal.h"
+//#define VERBOSE 1
+#include "logmacro.h"
+
#define CGA_HCLK (XTAL(14'318'181)/8)
#define CGA_LCLK (XTAL(14'318'181)/16)
@@ -51,7 +54,9 @@ INPUT_PORTS_END
#define CGA_MONITOR (m_cga_config->read()&0x1C)
#define CGA_MONITOR_COMPOSITE 0x08 /* Colour composite */
-DEFINE_DEVICE_TYPE(ISA8_AGA, isa8_aga_device, "aga", "AGA")
+DEFINE_DEVICE_TYPE(ISA8_AGA, isa8_aga_device, "isa_aga", "AGA")
+DEFINE_DEVICE_TYPE(ISA8_AGA_PC200, isa8_aga_pc200_device, "isa_aga_pc200", "AGA PC200")
+
//-------------------------------------------------
// isa8_aga_device - constructor
@@ -89,7 +94,7 @@ isa8_aga_device::isa8_aga_device(const machine_config &mconfig, device_type type
void isa8_aga_device::device_start()
{
- if (m_palette != nullptr && !m_palette->started())
+ if (m_palette && !m_palette->started())
throw device_missing_dependencies();
m_mode = AGA_COLOR;
@@ -98,26 +103,19 @@ void isa8_aga_device::device_start()
m_videoram = std::make_unique<uint8_t[]>(0x10000);
set_isa_device();
- m_isa->install_memory(0xb0000, 0xbffff, 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, 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, read8_delegate( FUNC(isa8_aga_device::pc_aga_cga_r), this ), write8_delegate( FUNC(isa8_aga_device::pc_aga_cga_w), this ) );
+ m_isa->install_memory(0xb0000, 0xbffff, read8sm_delegate(*this, FUNC(isa8_aga_device::pc_aga_videoram_r)), write8sm_delegate(*this, FUNC(isa8_aga_device::pc_aga_videoram_w)));
+ m_isa->install_device(0x3b0, 0x3bf, read8sm_delegate(*this, FUNC(isa8_aga_device::pc_aga_mda_r)), write8sm_delegate(*this, FUNC(isa8_aga_device::pc_aga_mda_w)));
+ m_isa->install_device(0x3d0, 0x3df, read8sm_delegate(*this, FUNC(isa8_aga_device::pc_aga_cga_r)), write8sm_delegate(*this, FUNC(isa8_aga_device::pc_aga_cga_w)));
/* 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] );
- }
+ for (int 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 );
+ for (int i = 0x8000, 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++;
}
}
@@ -125,7 +123,7 @@ void isa8_aga_device::device_start()
uint8_t *gfx = &memregion("gfx1")->base()[0x8000];
/* just a plain bit pattern for graphics data generation */
- for (i = 0; i < 256; i++)
+ for (int i = 0; i < 256; i++)
gfx[i] = i;
}
@@ -136,18 +134,16 @@ ROM_END
const tiny_rom_entry *isa8_aga_device::device_rom_region() const
{
- return ROM_NAME( aga );
+ return ROM_NAME(aga);
}
ioport_constructor isa8_aga_device::device_input_ports() const
{
- return INPUT_PORTS_NAME( aga );
+ return INPUT_PORTS_NAME(aga);
}
-DEFINE_DEVICE_TYPE(ISA8_AGA_PC200, isa8_aga_pc200_device, "aga_pc200", "AGA PC200")
-
//-------------------------------------------------
// isa8_aga_pc200_device - constructor
//-------------------------------------------------
@@ -167,7 +163,7 @@ ROM_END
const tiny_rom_entry *isa8_aga_pc200_device::device_rom_region() const
{
- return ROM_NAME( aga_pc200 );
+ return ROM_NAME(aga_pc200);
}
//-------------------------------------------------
@@ -176,7 +172,7 @@ const tiny_rom_entry *isa8_aga_pc200_device::device_rom_region() const
void isa8_aga_pc200_device::device_start()
{
- if (m_palette != nullptr && !m_palette->started())
+ if (m_palette && !m_palette->started())
throw device_missing_dependencies();
m_mode = AGA_COLOR;
@@ -185,26 +181,19 @@ void isa8_aga_pc200_device::device_start()
m_videoram = std::make_unique<uint8_t[]>(0x10000);
set_isa_device();
- m_isa->install_memory(0xb0000, 0xbffff, 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, 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, read8_delegate( FUNC(isa8_aga_pc200_device::pc200_cga_r), this ), write8_delegate( FUNC(isa8_aga_pc200_device::pc200_cga_w), this ) );
+ m_isa->install_memory(0xb0000, 0xbffff, read8sm_delegate(*this, FUNC(isa8_aga_pc200_device::pc200_videoram_r)), write8sm_delegate(*this, FUNC(isa8_aga_pc200_device::pc200_videoram_w)));
+ m_isa->install_device(0x3b0, 0x3bf, read8sm_delegate(*this, FUNC(isa8_aga_pc200_device::pc_aga_mda_r)), write8sm_delegate(*this, FUNC(isa8_aga_pc200_device::pc_aga_mda_w)));
+ m_isa->install_device(0x3d0, 0x3df, read8sm_delegate(*this, FUNC(isa8_aga_pc200_device::pc200_cga_r)), write8sm_delegate(*this, FUNC(isa8_aga_pc200_device::pc200_cga_w)));
/* 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] );
- }
+ for (int 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 );
+ for (int i = 0x8000, 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++;
}
}
@@ -212,23 +201,21 @@ void isa8_aga_pc200_device::device_start()
uint8_t *gfx = &memregion("gfx1")->base()[0x8000];
/* just a plain bit pattern for graphics data generation */
- for (i = 0; i < 256; i++)
+ for (int i = 0; i < 256; i++)
gfx[i] = i;
}
-WRITE_LINE_MEMBER( isa8_aga_device::hsync_changed )
+void isa8_aga_device::hsync_changed(int state)
{
m_hsync = state ? 1 : 0;
}
-WRITE_LINE_MEMBER( isa8_aga_device::vsync_changed )
+void isa8_aga_device::vsync_changed(int state)
{
m_vsync = state ? 8 : 0;
- if ( state )
- {
+ if (state)
m_framecnt++;
- }
}
@@ -237,38 +224,37 @@ MC6845_UPDATE_ROW( isa8_aga_device::aga_update_row )
if (m_update_row_type == -1)
return;
- switch (m_update_row_type)
- {
- case MDA_TEXT_INTEN:
- mda_text_inten_update_row(bitmap, cliprect, ma, ra, y, x_count, cursor_x, de, hbp, vbp);
- break;
- case MDA_TEXT_BLINK:
- mda_text_blink_update_row(bitmap, cliprect, ma, ra, y, x_count, cursor_x, de, hbp, vbp);
- break;
- case CGA_TEXT_INTEN:
- cga_text_inten_update_row(bitmap, cliprect, ma, ra, y, x_count, cursor_x, de, hbp, vbp);
- break;
- case CGA_TEXT_INTEN_ALT:
- cga_text_inten_alt_update_row(bitmap, cliprect, ma, ra, y, x_count, cursor_x, de, hbp, vbp);
- break;
- case CGA_TEXT_BLINK:
- cga_text_blink_update_row(bitmap, cliprect, ma, ra, y, x_count, cursor_x, de, hbp, vbp);
- break;
- case CGA_TEXT_BLINK_ALT:
- cga_text_blink_alt_update_row(bitmap, cliprect, ma, ra, y, x_count, cursor_x, de, hbp, vbp);
- break;
- case CGA_GFX_1BPP:
- cga_gfx_1bpp_update_row(bitmap, cliprect, ma, ra, y, x_count, cursor_x, de, hbp, vbp);
- break;
- case CGA_GFX_2BPP:
- cga_gfx_2bpp_update_row(bitmap, cliprect, ma, ra, y, x_count, cursor_x, de, hbp, vbp);
- break;
- case CGA_GFX_4BPPL:
- cga_gfx_4bppl_update_row(bitmap, cliprect, ma, ra, y, x_count, cursor_x, de, hbp, vbp);
- break;
- case CGA_GFX_4BPPH:
- cga_gfx_4bpph_update_row(bitmap, cliprect, ma, ra, y, x_count, cursor_x, de, hbp, vbp);
- break;
+ switch (m_update_row_type) {
+ case MDA_TEXT_INTEN:
+ mda_text_inten_update_row(bitmap, cliprect, ma, ra, y, x_count, cursor_x, de, hbp, vbp);
+ break;
+ case MDA_TEXT_BLINK:
+ mda_text_blink_update_row(bitmap, cliprect, ma, ra, y, x_count, cursor_x, de, hbp, vbp);
+ break;
+ case CGA_TEXT_INTEN:
+ cga_text_inten_update_row(bitmap, cliprect, ma, ra, y, x_count, cursor_x, de, hbp, vbp);
+ break;
+ case CGA_TEXT_INTEN_ALT:
+ cga_text_inten_alt_update_row(bitmap, cliprect, ma, ra, y, x_count, cursor_x, de, hbp, vbp);
+ break;
+ case CGA_TEXT_BLINK:
+ cga_text_blink_update_row(bitmap, cliprect, ma, ra, y, x_count, cursor_x, de, hbp, vbp);
+ break;
+ case CGA_TEXT_BLINK_ALT:
+ cga_text_blink_alt_update_row(bitmap, cliprect, ma, ra, y, x_count, cursor_x, de, hbp, vbp);
+ break;
+ case CGA_GFX_1BPP:
+ cga_gfx_1bpp_update_row(bitmap, cliprect, ma, ra, y, x_count, cursor_x, de, hbp, vbp);
+ break;
+ case CGA_GFX_2BPP:
+ cga_gfx_2bpp_update_row(bitmap, cliprect, ma, ra, y, x_count, cursor_x, de, hbp, vbp);
+ break;
+ case CGA_GFX_4BPPL:
+ cga_gfx_4bppl_update_row(bitmap, cliprect, ma, ra, y, x_count, cursor_x, de, hbp, vbp);
+ break;
+ case CGA_GFX_4BPPH:
+ cga_gfx_4bpph_update_row(bitmap, cliprect, ma, ra, y, x_count, cursor_x, de, hbp, vbp);
+ break;
}
}
@@ -281,11 +267,11 @@ void isa8_aga_device::device_add_mconfig(machine_config &config)
PALETTE(config, m_palette).set_entries(/* CGA_PALETTE_SETS * 16*/ 65536);
- MC6845(config, m_mc6845, XTAL(14'318'181)/8);
+ MC6845(config, m_mc6845, XTAL(14'318'181) / 8);
m_mc6845->set_screen(AGA_SCREEN_NAME);
m_mc6845->set_show_border_area(false);
m_mc6845->set_char_width(8);
- m_mc6845->set_update_row_callback(FUNC(isa8_aga_device::aga_update_row), this);
+ m_mc6845->set_update_row_callback(FUNC(isa8_aga_device::aga_update_row));
m_mc6845->out_hsync_callback().set(FUNC(isa8_aga_device::hsync_changed));
m_mc6845->out_vsync_callback().set(FUNC(isa8_aga_device::vsync_changed));
}
@@ -300,26 +286,24 @@ void isa8_aga_device::device_add_mconfig(machine_config &config)
/* colors need fixing in the mda_text_* functions ! */
MC6845_UPDATE_ROW( isa8_aga_device::mda_text_inten_update_row )
{
- const rgb_t *palette = m_palette->palette()->entry_list_raw();
- uint8_t *videoram = m_videoram.get();
- uint32_t *p = &bitmap.pix32(y);
- uint16_t 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_t offset = ( ( ma + i ) << 1 ) & 0x0FFF;
- uint8_t chr = videoram[ offset ];
- uint8_t attr = videoram[ offset + 1 ];
- uint8_t data = m_mda_chr_gen[ chr_base + chr * 8 ];
- uint8_t fg = ( attr & 0x08 ) ? 3 : 2;
+ rgb_t const *const palette = m_palette->palette()->entry_list_raw();
+ uint8_t const *const videoram = m_videoram.get();
+ uint32_t *p = &bitmap.pix(y);
+ uint16_t const chr_base = (ra & 0x08) ? 0x800 | (ra & 0x07) : ra;
+
+ if (y == 0) logerror("mda_text_inten_update_row\n");
+ for (int i = 0; i < x_count; i++) {
+ uint16_t const offset = ((ma + i) << 1) & 0x0fff;
+ uint8_t const chr = videoram[offset];
+ uint8_t const attr = videoram[offset + 1];
+ uint8_t data = m_mda_chr_gen[chr_base + chr * 8];
+ uint8_t fg = (attr & 0x08) ? 3 : 2;
uint8_t bg = 0;
- if ( ( attr & ~0x88 ) == 0 ) {
+ if (!(attr & ~0x88))
data = 0x00;
- }
- switch( attr ) {
+ switch (attr) {
case 0x70:
bg = 2;
fg = 0;
@@ -328,348 +312,330 @@ MC6845_UPDATE_ROW( isa8_aga_device::mda_text_inten_update_row )
bg = 2;
fg = 1;
break;
- case 0xF0:
+ case 0xf0:
bg = 3;
fg = 0;
break;
- case 0xF8:
+ 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++;
- }
+ if (i == cursor_x || (attr & 0x07) == 0x01)
+ data = 0xff;
+
+ *p++ = palette[BIT(data, 7) ? fg : bg];
+ *p++ = palette[BIT(data, 6) ? fg : bg];
+ *p++ = palette[BIT(data, 5) ? fg : bg];
+ *p++ = palette[BIT(data, 4) ? fg : bg];
+ *p++ = palette[BIT(data, 3) ? fg : bg];
+ *p++ = palette[BIT(data, 2) ? fg : bg];
+ *p++ = palette[BIT(data, 1) ? fg : bg];
+ *p++ = palette[BIT(data, 0) ? fg : bg];
+ if ((chr & 0xe0) == 0xc0)
+ *p++ = palette[BIT(data, 0) ? fg : bg];
+ else
+ *p++ = palette[bg];
}
}
MC6845_UPDATE_ROW( isa8_aga_device::mda_text_blink_update_row )
{
- uint8_t *videoram = m_videoram.get();
- const rgb_t *palette = m_palette->palette()->entry_list_raw();
- uint32_t *p = &bitmap.pix32(y);
- uint16_t 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_t offset = ( ( ma + i ) << 1 ) & 0x0FFF;
- uint8_t chr = videoram[ offset ];
- uint8_t attr = videoram[ offset + 1 ];
- uint8_t data = m_mda_chr_gen[ chr_base + chr * 8 ];
- uint8_t fg = ( attr & 0x08 ) ? 3 : 2;
+ uint8_t const *const videoram = m_videoram.get();
+ rgb_t const *const palette = m_palette->palette()->entry_list_raw();
+ uint32_t *p = &bitmap.pix(y);
+ uint16_t const chr_base = (ra & 0x08) ? 0x800 | (ra & 0x07) : ra;
+
+ if (y == 0) logerror("mda_text_blink_update_row\n");
+ for (int i = 0; i < x_count; i++) {
+ uint16_t const offset = ((ma + i) << 1) & 0x0fff;
+ uint8_t const chr = videoram[offset];
+ uint8_t const attr = videoram[offset + 1];
+ uint8_t data = m_mda_chr_gen[chr_base + chr * 8];
+ uint8_t fg = (attr & 0x08) ? 3 : 2;
uint8_t bg = 0;
- if ( ( attr & ~0x88 ) == 0 ) {
+ if (!(attr & ~0x88))
data = 0x00;
- }
- switch( attr ) {
+ switch (attr) {
case 0x70:
- case 0xF0:
+ case 0xf0:
bg = 2;
fg = 0;
break;
case 0x78:
- case 0xF8:
+ case 0xf8:
bg = 2;
fg = 1;
break;
}
- if ( i == cursor_x ) {
- data = 0xFF;
+ if (i == cursor_x) {
+ data = 0xff;
} else {
- if ( ( attr & 0x07 ) == 0x01 ) {
- data = 0xFF;
- }
- if ( ( attr & 0x80 ) && ( m_framecnt & 0x40 ) ) {
+ if ((attr & 0x07) == 0x01)
+ data = 0xff;
+ if ((attr & 0x80) && (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++;
- }
+ *p++ = palette[BIT(data, 7) ? fg : bg];
+ *p++ = palette[BIT(data, 6) ? fg : bg];
+ *p++ = palette[BIT(data, 5) ? fg : bg];
+ *p++ = palette[BIT(data, 4) ? fg : bg];
+ *p++ = palette[BIT(data, 3) ? fg : bg];
+ *p++ = palette[BIT(data, 2) ? fg : bg];
+ *p++ = palette[BIT(data, 1) ? fg : bg];
+ *p++ = palette[BIT(data, 0) ? fg : bg];
+ if ((chr & 0xe0) == 0xc0)
+ *p++ = palette[BIT(data, 0) ? fg : bg];
+ else
+ *p++ = palette[bg];
}
}
MC6845_UPDATE_ROW( isa8_aga_device::cga_text_inten_update_row )
{
- uint8_t *videoram = m_videoram.get();
- const rgb_t *palette = m_palette->palette()->entry_list_raw();
- uint32_t *p = &bitmap.pix32(y);
- int i;
-
- if ( y == 0 ) logerror("cga_text_inten_update_row\n");
- for ( i = 0; i < x_count; i++ ) {
- uint16_t offset = ( ( ma + i ) << 1 ) & 0x3fff;
- uint8_t chr = videoram[ offset ];
- uint8_t attr = videoram[ offset +1 ];
- uint8_t data = m_cga_chr_gen[ chr * 16 + ra ];
- uint16_t fg = attr & 0x0F;
- uint16_t bg = ( attr >> 4 ) & 0x07;
-
- if ( i == cursor_x ) {
- data = 0xFF;
- }
+ uint8_t const *const videoram = m_videoram.get();
+ rgb_t const *const palette = m_palette->palette()->entry_list_raw();
+ uint32_t *p = &bitmap.pix(y);
+
+ if (y == 0) logerror("cga_text_inten_update_row\n");
+ for (int i = 0; i < x_count; i++) {
+ uint16_t const offset = ((ma + i) << 1 ) & 0x3fff;
+ uint8_t const chr = videoram[offset];
+ uint8_t const attr = videoram[offset + 1];
+ uint8_t data = m_cga_chr_gen[chr * 16 + ra];
+ uint16_t fg = attr & 0x0f;
+ uint16_t 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++;
+ if (i == cursor_x)
+ data = 0xff;
+
+ *p++ = palette[BIT(data, 7) ? fg : bg];
+ *p++ = palette[BIT(data, 6) ? fg : bg];
+ *p++ = palette[BIT(data, 5) ? fg : bg];
+ *p++ = palette[BIT(data, 4) ? fg : bg];
+ *p++ = palette[BIT(data, 3) ? fg : bg];
+ *p++ = palette[BIT(data, 2) ? fg : bg];
+ *p++ = palette[BIT(data, 1) ? fg : bg];
+ *p++ = palette[BIT(data, 0) ? fg : bg];
}
}
MC6845_UPDATE_ROW( isa8_aga_device::cga_text_inten_alt_update_row )
{
- const rgb_t *palette = m_palette->palette()->entry_list_raw();
- uint8_t *videoram = m_videoram.get();
- uint32_t *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_t offset = ( ( ma + i ) << 1 ) & 0x3fff;
- uint8_t chr = videoram[ offset ];
- uint8_t attr = videoram[ offset +1 ];
- uint8_t data = m_cga_chr_gen[ chr * 16 + ra ];
- uint16_t 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++;
+ rgb_t const *const palette = m_palette->palette()->entry_list_raw();
+ uint8_t const *const videoram = m_videoram.get();
+ uint32_t *p = &bitmap.pix(y);
+
+ if (y == 0) logerror("cga_text_inten_alt_update_row\n");
+ for (int i = 0; i < x_count; i++) {
+ uint16_t const offset = ((ma + i) << 1) & 0x3fff;
+ uint8_t const chr = videoram[offset];
+ uint8_t const attr = videoram[offset + 1];
+ uint8_t data = m_cga_chr_gen[chr * 16 + ra];
+ uint16_t fg = attr & 0x0f;
+
+ if (i == cursor_x)
+ data = 0xff;
+
+ *p++ = palette[BIT(data, 7) ? fg : 0];
+ *p++ = palette[BIT(data, 6) ? fg : 0];
+ *p++ = palette[BIT(data, 5) ? fg : 0];
+ *p++ = palette[BIT(data, 4) ? fg : 0];
+ *p++ = palette[BIT(data, 3) ? fg : 0];
+ *p++ = palette[BIT(data, 2) ? fg : 0];
+ *p++ = palette[BIT(data, 1) ? fg : 0];
+ *p++ = palette[BIT(data, 0) ? fg : 0];
}
}
MC6845_UPDATE_ROW( isa8_aga_device::cga_text_blink_update_row )
{
- const rgb_t *palette = m_palette->palette()->entry_list_raw();
- uint8_t *videoram = m_videoram.get();
- uint32_t *p = &bitmap.pix32(y);
- int i;
-
- for ( i = 0; i < x_count; i++ ) {
- uint16_t offset = ( ( ma + i ) << 1 ) & 0x3fff;
- uint8_t chr = videoram[ offset ];
- uint8_t attr = videoram[ offset +1 ];
- uint8_t data = m_cga_chr_gen[ chr * 16 + ra ];
- uint16_t fg = attr & 0x0F;
+ rgb_t const *const palette = m_palette->palette()->entry_list_raw();
+ uint8_t const *const videoram = m_videoram.get();
+ uint32_t *p = &bitmap.pix(y);
+
+ for (int i = 0; i < x_count; i++) {
+ uint16_t const offset = ((ma + i) << 1) & 0x3fff;
+ uint8_t const chr = videoram[offset];
+ uint8_t const attr = videoram[offset + 1];
+ uint8_t data = m_cga_chr_gen[chr * 16 + ra];
+ uint16_t fg = attr & 0x0f;
uint16_t bg = (attr >> 4) & 0x07;
- if ( i == cursor_x ) {
- data = 0xFF;
+ if (i == cursor_x) {
+ data = 0xff;
} else {
- if ( ( attr & 0x80 ) && ( m_framecnt & 0x10 ) ) {
+ if ((attr & 0x80) && (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++;
+ *p++ = palette[BIT(data, 7) ? fg : bg];
+ *p++ = palette[BIT(data, 6) ? fg : bg];
+ *p++ = palette[BIT(data, 5) ? fg : bg];
+ *p++ = palette[BIT(data, 4) ? fg : bg];
+ *p++ = palette[BIT(data, 3) ? fg : bg];
+ *p++ = palette[BIT(data, 2) ? fg : bg];
+ *p++ = palette[BIT(data, 1) ? fg : bg];
+ *p++ = palette[BIT(data, 0) ? fg : bg];
}
}
MC6845_UPDATE_ROW( isa8_aga_device::cga_text_blink_alt_update_row )
{
- const rgb_t *palette = m_palette->palette()->entry_list_raw();
- uint8_t *videoram = m_videoram.get();
- uint32_t *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_t offset = ( ( ma + i ) << 1 ) & 0x3fff;
- uint8_t chr = videoram[ offset ];
- uint8_t attr = videoram[ offset +1 ];
- uint8_t data = m_cga_chr_gen[ chr * 16 + ra ];
+ rgb_t const *const palette = m_palette->palette()->entry_list_raw();
+ uint8_t const *const videoram = m_videoram.get();
+ uint32_t *p = &bitmap.pix(y);
+
+ if (y == 0) logerror("cga_text_blink_alt_update_row\n");
+ for (int i = 0; i < x_count; i++) {
+ uint16_t const offset = ((ma + i) << 1) & 0x3fff;
+ uint8_t const chr = videoram[offset];
+ uint8_t const attr = videoram[offset + 1];
+ uint8_t data = m_cga_chr_gen[chr * 16 + ra];
uint16_t fg = attr & 0x07;
uint16_t bg = 0;
- if ( i == cursor_x ) {
+ if (i == cursor_x) {
data = 0xFF;
} else {
- if ( ( attr & 0x80 ) && ( m_framecnt & 0x10 ) ) {
+ if ((attr & 0x80) && (m_framecnt & 0x10)) {
data = 0x00;
- bg = ( attr >> 4 ) & 0x07;
+ 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++;
+ *p++ = palette[BIT(data, 7) ? fg : bg];
+ *p++ = palette[BIT(data, 6) ? fg : bg];
+ *p++ = palette[BIT(data, 5) ? fg : bg];
+ *p++ = palette[BIT(data, 4) ? fg : bg];
+ *p++ = palette[BIT(data, 3) ? fg : bg];
+ *p++ = palette[BIT(data, 2) ? fg : bg];
+ *p++ = palette[BIT(data, 1) ? fg : bg];
+ *p++ = palette[BIT(data, 0) ? fg : bg];
}
}
MC6845_UPDATE_ROW( isa8_aga_device::cga_gfx_4bppl_update_row )
{
- const rgb_t *palette = m_palette->palette()->entry_list_raw();
- uint8_t *videoram = m_videoram.get();
- uint32_t *p = &bitmap.pix32(y);
- int i;
+ rgb_t const *const palette = m_palette->palette()->entry_list_raw();
+ uint8_t const *const videoram = m_videoram.get();
+ uint32_t *p = &bitmap.pix(y);
- if ( y == 0 ) logerror("cga_gfx_4bppl_update_row\n");
- for ( i = 0; i < x_count; i++ ) {
- uint16_t offset = ( ( ( ma + i ) << 1 ) & 0x1fff ) | ( ( y & 1 ) << 13 );
- uint8_t data = videoram[ offset ];
+ if (y == 0) logerror("cga_gfx_4bppl_update_row\n");
+ for (int i = 0; i < x_count; i++) {
+ uint16_t const offset = (((ma + i) << 1) & 0x1fff) | ((y & 1) << 13);
+ uint8_t data = videoram[offset];
- *p = palette[data >> 4]; p++;
- *p = palette[data >> 4]; p++;
- *p = palette[data & 0x0F]; p++;
- *p = palette[data & 0x0F]; p++;
+ *p++ = palette[data >> 4];
+ *p++ = palette[data >> 4];
+ *p++ = palette[data & 0x0f];
+ *p++ = palette[data & 0x0f];
- data = videoram[ offset + 1 ];
+ data = videoram[offset + 1];
- *p = palette[data >> 4]; p++;
- *p = palette[data >> 4]; p++;
- *p = palette[data & 0x0F]; p++;
- *p = palette[data & 0x0F]; p++;
+ *p++ = palette[data >> 4];
+ *p++ = palette[data >> 4];
+ *p++ = palette[data & 0x0f];
+ *p++ = palette[data & 0x0f];
}
}
MC6845_UPDATE_ROW( isa8_aga_device::cga_gfx_4bpph_update_row )
{
- uint8_t *videoram = m_videoram.get();
- const rgb_t *palette = m_palette->palette()->entry_list_raw();
- uint32_t *p = &bitmap.pix32(y);
- int i;
-
- if ( y == 0 ) logerror("cga_gfx_4bpph_update_row\n");
- for ( i = 0; i < x_count; i++ ) {
- uint16_t offset = ( ( ( ma + i ) << 1 ) & 0x1fff ) | ( ( y & 1 ) << 13 );
- uint8_t 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++;
+ uint8_t const *const videoram = m_videoram.get();
+ rgb_t const *const palette = m_palette->palette()->entry_list_raw();
+ uint32_t *p = &bitmap.pix(y);
+
+ if (y == 0) logerror("cga_gfx_4bpph_update_row\n");
+ for (int i = 0; i < x_count; i++) {
+ uint16_t const offset = (((ma + i) << 1) & 0x1fff) | ((y & 1) << 13);
+ uint8_t data = videoram[offset];
+
+ *p++ = palette[data >> 4];
+ *p++ = palette[data >> 4];
+ *p++ = palette[data >> 4];
+ *p++ = palette[data >> 4];
+ *p++ = palette[data & 0x0f];
+ *p++ = palette[data & 0x0f];
+ *p++ = palette[data & 0x0f];
+ *p++ = palette[data & 0x0f];
+
+ data = videoram[offset + 1];
+
+ *p++ = palette[data >> 4];
+ *p++ = palette[data >> 4];
+ *p++ = palette[data >> 4];
+ *p++ = palette[data >> 4];
+ *p++ = palette[data & 0x0f];
+ *p++ = palette[data & 0x0f];
+ *p++ = palette[data & 0x0f];
+ *p++ = palette[data & 0x0f];
}
}
MC6845_UPDATE_ROW( isa8_aga_device::cga_gfx_2bpp_update_row )
{
- uint8_t *videoram = m_videoram.get();
- const rgb_t *palette = m_palette->palette()->entry_list_raw();
- uint32_t *p = &bitmap.pix32(y);
- int i;
+ uint8_t const *const videoram = m_videoram.get();
+ rgb_t const *const palette = m_palette->palette()->entry_list_raw();
+ uint32_t *p = &bitmap.pix(y);
-// if ( y == 0 ) logerror("cga_gfx_2bpp_update_row\n");
- for ( i = 0; i < x_count; i++ ) {
- uint16_t offset = ( ( ( ma + i ) << 1 ) & 0x1fff ) | ( ( y & 1 ) << 13 );
- uint8_t data = videoram[ offset ];
+ //if (y == 0) logerror("cga_gfx_2bpp_update_row\n");
+ for (int i = 0; i < x_count; i++) {
+ uint16_t const offset = (((ma + i) << 1) & 0x1fff) | ((y & 1) << 13);
+ uint8_t data = videoram[offset];
- *p = palette[m_cga_palette_lut_2bpp[ ( data >> 6 ) & 0x03 ]]; p++;
- *p = palette[m_cga_palette_lut_2bpp[ ( data >> 4 ) & 0x03 ]]; p++;
- *p = palette[m_cga_palette_lut_2bpp[ ( data >> 2 ) & 0x03 ]]; p++;
- *p = palette[m_cga_palette_lut_2bpp[ data & 0x03 ]]; p++;
+ *p++ = palette[m_cga_palette_lut_2bpp[(data >> 6) & 0x03]];
+ *p++ = palette[m_cga_palette_lut_2bpp[(data >> 4) & 0x03]];
+ *p++ = palette[m_cga_palette_lut_2bpp[(data >> 2) & 0x03]];
+ *p++ = palette[m_cga_palette_lut_2bpp[(data >> 0) & 0x03]];
- data = videoram[ offset+1 ];
+ data = videoram[offset + 1];
- *p = palette[m_cga_palette_lut_2bpp[ ( data >> 6 ) & 0x03 ]]; p++;
- *p = palette[m_cga_palette_lut_2bpp[ ( data >> 4 ) & 0x03 ]]; p++;
- *p = palette[m_cga_palette_lut_2bpp[ ( data >> 2 ) & 0x03 ]]; p++;
- *p = palette[m_cga_palette_lut_2bpp[ data & 0x03 ]]; p++;
+ *p++ = palette[m_cga_palette_lut_2bpp[(data >> 6) & 0x03]];
+ *p++ = palette[m_cga_palette_lut_2bpp[(data >> 4) & 0x03]];
+ *p++ = palette[m_cga_palette_lut_2bpp[(data >> 2) & 0x03]];
+ *p++ = palette[m_cga_palette_lut_2bpp[(data >> 0) & 0x03]];
}
}
MC6845_UPDATE_ROW( isa8_aga_device::cga_gfx_1bpp_update_row )
{
- uint8_t *videoram = m_videoram.get();
- const rgb_t *palette = m_palette->palette()->entry_list_raw();
- uint32_t *p = &bitmap.pix32(y);
- uint8_t fg = 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_t offset = ( ( ( ma + i ) << 1 ) & 0x1fff ) | ( ( ra & 1 ) << 13 );
- uint8_t 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++;
+ uint8_t const *const videoram = m_videoram.get();
+ rgb_t const *const palette = m_palette->palette()->entry_list_raw();
+ uint32_t *p = &bitmap.pix(y);
+ uint8_t const fg = m_cga_color_select & 0x0f;
+
+ if (y == 0) logerror("cga_gfx_1bpp_update_row\n");
+ for (int i = 0; i < x_count; i++) {
+ uint16_t const offset = (((ma + i) << 1) & 0x1fff) | ((ra & 1) << 13);
+ uint8_t data = videoram[offset];
+
+ *p++ = palette[BIT(data, 7) ? fg : 0];
+ *p++ = palette[BIT(data, 6) ? fg : 0];
+ *p++ = palette[BIT(data, 5) ? fg : 0];
+ *p++ = palette[BIT(data, 4) ? fg : 0];
+ *p++ = palette[BIT(data, 3) ? fg : 0];
+ *p++ = palette[BIT(data, 2) ? fg : 0];
+ *p++ = palette[BIT(data, 1) ? fg : 0];
+ *p++ = palette[BIT(data, 0) ? fg : 0];
+
+ data = videoram[offset + 1];
+
+ *p++ = palette[BIT(data, 7) ? fg : 0];
+ *p++ = palette[BIT(data, 6) ? fg : 0];
+ *p++ = palette[BIT(data, 5) ? fg : 0];
+ *p++ = palette[BIT(data, 4) ? fg : 0];
+ *p++ = palette[BIT(data, 3) ? fg : 0];
+ *p++ = palette[BIT(data, 2) ? fg : 0];
+ *p++ = palette[BIT(data, 1) ? fg : 0];
+ *p++ = palette[BIT(data, 0) ? fg : 0];
}
}
@@ -679,13 +645,12 @@ MC6845_UPDATE_ROW( isa8_aga_device::cga_gfx_1bpp_update_row )
*
*************************************/
-READ8_MEMBER ( isa8_aga_device::pc_aga_mda_r )
+uint8_t isa8_aga_device::pc_aga_mda_r(offs_t offset)
{
- uint8_t data = 0xFF;
+ uint8_t data = 0xff;
- if ( m_mode == AGA_MONO ) {
- switch( offset )
- {
+ if (m_mode == AGA_MONO) {
+ switch (offset) {
case 0: case 2: case 4: case 6:
/* return last written mc6845 address value here? */
break;
@@ -701,42 +666,40 @@ READ8_MEMBER ( isa8_aga_device::pc_aga_mda_r )
return data;
}
-WRITE8_MEMBER ( isa8_aga_device::pc_aga_mda_w )
+void isa8_aga_device::pc_aga_mda_w(offs_t offset, uint8_t data)
{
- if ( m_mode == AGA_MONO ) {
- switch( offset )
- {
- case 0: case 2: case 4: case 6:
- m_mc6845->address_w(data);
- break;
- case 1: case 3: case 5: case 7:
- m_mc6845->register_w(data);
+ if (m_mode == AGA_MONO) {
+ switch (offset) {
+ case 0: case 2: case 4: case 6:
+ m_mc6845->address_w(data);
+ break;
+ case 1: case 3: case 5: case 7:
+ m_mc6845->register_w(data);
+ break;
+ case 8:
+ m_mda_mode_control = data;
+
+ switch (m_mda_mode_control & 0x2a) {
+ case 0x08:
+ m_update_row_type = MDA_TEXT_INTEN;
break;
- case 8:
- m_mda_mode_control = data;
-
- switch (m_mda_mode_control & 0x2a)
- {
- case 0x08:
- m_update_row_type = MDA_TEXT_INTEN;
- break;
- case 0x28:
- m_update_row_type = MDA_TEXT_BLINK;
- break;
- default:
- m_update_row_type = -1;
- }
+ case 0x28:
+ m_update_row_type = MDA_TEXT_BLINK;
break;
+ default:
+ m_update_row_type = -1;
+ }
+ break;
}
}
}
-READ8_MEMBER ( isa8_aga_device::pc_aga_cga_r )
+uint8_t isa8_aga_device::pc_aga_cga_r(offs_t offset)
{
- uint8_t data = 0xFF;
+ uint8_t data = 0xff;
- if ( m_mode == AGA_COLOR ) {
- switch( offset ) {
+ if (m_mode == AGA_COLOR) {
+ switch (offset) {
case 0: case 2: case 4: case 6:
/* return last written mc6845 address value here? */
break;
@@ -744,53 +707,42 @@ READ8_MEMBER ( isa8_aga_device::pc_aga_cga_r )
data = m_mc6845->register_r();
break;
case 10:
- data = m_vsync | ( ( data & 0x40 ) >> 4 ) | m_hsync;
+ data = m_vsync | ((data & 0x40) >> 4) | m_hsync;
break;
}
}
return data;
}
-void isa8_aga_device::set_palette_luts(void)
+void isa8_aga_device::set_palette_luts()
{
/* Setup 2bpp palette lookup table */
- if ( m_cga_mode_control & 0x10 )
- {
+ 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;
}
- 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]);
+ LOG("2bpp lut set to %d,%d,%d,%d\n", m_cga_palette_lut_2bpp[0], m_cga_palette_lut_2bpp[1], m_cga_palette_lut_2bpp[2], m_cga_palette_lut_2bpp[3]);
}
-WRITE8_MEMBER (isa8_aga_device:: pc_aga_cga_w )
+void isa8_aga_device::pc_aga_cga_w(offs_t offset, uint8_t data)
{
- if ( m_mode == AGA_COLOR ) {
- switch(offset) {
+ if (m_mode == AGA_COLOR) {
+ switch (offset) {
case 0: case 2: case 4: case 6:
m_mc6845->address_w(data);
break;
@@ -800,46 +752,44 @@ WRITE8_MEMBER (isa8_aga_device:: pc_aga_cga_w )
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 );
+ LOG("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_type = CGA_TEXT_INTEN;
break;
- case 0x0A: case 0x0B: case 0x2A: case 0x2B:
- m_mc6845->set_hpixels_per_column( 8 );
- if ( CGA_MONITOR == CGA_MONITOR_COMPOSITE ) {
+ case 0x0a: case 0x0b: case 0x2a: case 0x2b:
+ m_mc6845->set_hpixels_per_column(8);
+ if (CGA_MONITOR == CGA_MONITOR_COMPOSITE)
m_update_row_type = CGA_GFX_4BPPL;
- } else {
+ else
m_update_row_type = CGA_GFX_2BPP;
- }
- break;
- case 0x0E: case 0x0F: case 0x2E: case 0x2F:
- m_mc6845->set_hpixels_per_column( 8 );
+ break;
+ case 0x0e: case 0x0f: case 0x2e: case 0x2f:
+ m_mc6845->set_hpixels_per_column(8);
m_update_row_type = CGA_GFX_2BPP;
break;
- case 0x18: case 0x19: case 0x1C: case 0x1D:
- m_mc6845->set_hpixels_per_column( 8 );
+ case 0x18: case 0x19: case 0x1c: case 0x1d:
+ m_mc6845->set_hpixels_per_column(8);
m_update_row_type = CGA_TEXT_INTEN_ALT;
break;
- case 0x1A: case 0x1B: case 0x3A: case 0x3B:
- m_mc6845->set_hpixels_per_column( 8 );
- if ( CGA_MONITOR == CGA_MONITOR_COMPOSITE ) {
+ case 0x1a: case 0x1b: case 0x3a: case 0x3b:
+ m_mc6845->set_hpixels_per_column(8);
+ if (CGA_MONITOR == CGA_MONITOR_COMPOSITE)
m_update_row_type = CGA_GFX_4BPPH;
- } else {
+ else
m_update_row_type = CGA_GFX_1BPP;
- }
- break;
- case 0x1E: case 0x1F: case 0x3E: case 0x3F:
- m_mc6845->set_hpixels_per_column( 16 );
+ break;
+ case 0x1e: case 0x1f: case 0x3e: case 0x3f:
+ m_mc6845->set_hpixels_per_column(16);
m_update_row_type = CGA_GFX_1BPP;
break;
- case 0x28: case 0x29: case 0x2C: case 0x2D:
- m_mc6845->set_hpixels_per_column( 8 );
+ case 0x28: case 0x29: case 0x2c: case 0x2d:
+ m_mc6845->set_hpixels_per_column(8);
m_update_row_type = CGA_TEXT_BLINK;
break;
- case 0x38: case 0x39: case 0x3C: case 0x3D:
- m_mc6845->set_hpixels_per_column( 8 );
+ case 0x38: case 0x39: case 0x3c: case 0x3d:
+ m_mc6845->set_hpixels_per_column(8);
m_update_row_type = CGA_TEXT_BLINK_ALT;
break;
default:
@@ -859,16 +809,16 @@ WRITE8_MEMBER (isa8_aga_device:: pc_aga_cga_w )
/*************************************/
-void isa8_aga_device::pc_aga_set_mode( AGA_MODE mode)
+void isa8_aga_device::pc_aga_set_mode(mode_t mode)
{
m_mode = mode;
switch (m_mode) {
case AGA_COLOR:
- m_mc6845->set_unscaled_clock( XTAL(14'318'181)/8 );
+ m_mc6845->set_unscaled_clock(XTAL(14'318'181) / 8);
break;
case AGA_MONO:
- m_mc6845->set_unscaled_clock( 16257000/9 );
+ m_mc6845->set_unscaled_clock(16257000 / 9);
break;
case AGA_OFF:
break;
@@ -876,65 +826,68 @@ void isa8_aga_device::pc_aga_set_mode( AGA_MODE mode)
}
-WRITE8_MEMBER ( isa8_aga_device::pc_aga_videoram_w )
+void isa8_aga_device::pc_aga_videoram_w(offs_t offset, uint8_t data)
{
switch (m_mode) {
case AGA_COLOR:
- if (offset>=0x8000)
- m_videoram[offset-0x8000]=data;
+ if (offset >= 0x8000)
+ m_videoram[offset - 0x8000] = data;
break;
case AGA_MONO:
- m_videoram[offset]=data;
+ m_videoram[offset] = data;
+ break;
+ case AGA_OFF:
break;
- case AGA_OFF: break;
}
}
-READ8_MEMBER( isa8_aga_device::pc_aga_videoram_r )
+uint8_t isa8_aga_device::pc_aga_videoram_r(offs_t offset)
{
switch (m_mode) {
case AGA_COLOR:
- if (offset>=0x8000) return m_videoram[offset-0x8000];
+ if (offset >= 0x8000)
+ return m_videoram[offset - 0x8000];
return 0;
case AGA_MONO:
return m_videoram[offset];
- case AGA_OFF: break;
+ case AGA_OFF:
+ break;
}
return 0;
}
-READ8_MEMBER( isa8_aga_pc200_device::pc200_videoram_r )
+uint8_t isa8_aga_pc200_device::pc200_videoram_r(offs_t offset)
{
switch (m_mode)
{
- default:
- if (offset>=0x8000) return m_videoram[offset-0x8000];
- return 0;
- case AGA_MONO:
- return m_videoram[offset];
+ default:
+ if (offset >= 0x8000)
+ return m_videoram[offset - 0x8000];
+ return 0;
+ case AGA_MONO:
+ return m_videoram[offset];
}
}
-WRITE8_MEMBER ( isa8_aga_pc200_device::pc200_videoram_w )
+void isa8_aga_pc200_device::pc200_videoram_w(offs_t offset, uint8_t data)
{
- switch (m_mode)
- {
- default:
- if (offset>=0x8000)
- m_videoram[offset-0x8000]=data;
- break;
- case AGA_MONO:
- m_videoram[offset]=data;
- break;
+ 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 )
+void isa8_aga_pc200_device::pc200_cga_w(offs_t offset, uint8_t data)
{
- pc_aga_cga_w(space, offset,data,mem_mask);
- switch(offset) {
+ pc_aga_cga_w(offset,data);
+ switch (offset) {
case 4:
m_portd |= 0x20;
break;
@@ -947,13 +900,12 @@ WRITE8_MEMBER( isa8_aga_pc200_device::pc200_cga_w )
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))
- {
+ /* 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)
@@ -969,19 +921,19 @@ WRITE8_MEMBER( isa8_aga_pc200_device::pc200_cga_w )
}
}
-READ8_MEMBER ( isa8_aga_pc200_device::pc200_cga_r )
+uint8_t isa8_aga_pc200_device::pc200_cga_r(offs_t offset)
{
uint8_t result;
- switch(offset) {
+ 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;
+ result = m_portd;
+ m_portd &= 0x1f;
break;
case 0xe:
@@ -991,7 +943,7 @@ READ8_MEMBER ( isa8_aga_pc200_device::pc200_cga_r )
break;
default:
- result = pc_aga_cga_r(space, offset, mem_mask);
+ result = pc_aga_cga_r(offset);
break;
}
return result;