summaryrefslogtreecommitdiffstatshomepage
path: root/src/devices/video/mc6847.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/devices/video/mc6847.cpp')
-rw-r--r--src/devices/video/mc6847.cpp29
1 files changed, 20 insertions, 9 deletions
diff --git a/src/devices/video/mc6847.cpp b/src/devices/video/mc6847.cpp
index 5bfa04b0b4f..0504b3f5f7f 100644
--- a/src/devices/video/mc6847.cpp
+++ b/src/devices/video/mc6847.cpp
@@ -908,6 +908,8 @@ mc6847_friend_device::character_map::character_map(const uint8_t *text_fontdata,
m_text_fontdata_lower_case[i] = text_fontdata[i + (i < 32*12 ? 64*12 : 0)] ^ (i < 32*12 ? 0xFF : 0x00);
m_text_fontdata_lower_case_inverse[i] = m_text_fontdata_lower_case[i] ^ 0xFF;
}
+ for (int i = 0; i < 128*12; i++)
+ m_stripes[i] = ~(i / 12);
// loop through all modes
for (mode = 0; mode < ARRAY_LENGTH(m_entries); mode++)
@@ -921,7 +923,17 @@ mc6847_friend_device::character_map::character_map(const uint8_t *text_fontdata,
uint16_t color_base_0;
uint16_t color_base_1;
- if ((mode & MODE_INTEXT) && !is_mc6847t1)
+ if ((mode & ((is_mc6847t1 ? 0 : MODE_INTEXT) | MODE_AS)) == MODE_AS)
+ {
+ // semigraphics 4
+ fontdata = semigraphics4_fontdata8x12;
+ character_mask = 0x0F;
+ color_base_0 = 8;
+ color_base_1 = 0;
+ color_shift_1 = 4;
+ color_mask_1 = 0x07;
+ }
+ else if (((mode & (MODE_INTEXT | MODE_AS)) == (MODE_INTEXT | MODE_AS)) && !is_mc6847t1)
{
// semigraphics 6
fontdata = semigraphics6_fontdata8x12;
@@ -931,15 +943,14 @@ mc6847_friend_device::character_map::character_map(const uint8_t *text_fontdata,
color_shift_1 = 6;
color_mask_1 = 0x03;
}
- else if (mode & MODE_AS)
+ else if (((mode & (MODE_INTEXT | MODE_AS)) == MODE_INTEXT) && !is_mc6847t1)
{
- // semigraphics 4
- fontdata = semigraphics4_fontdata8x12;
- character_mask = 0x0F;
- color_base_0 = 8;
- color_base_1 = 0;
- color_shift_1 = 4;
- color_mask_1 = 0x07;
+ // so-called "stripe" mode - this is when INTEXT is specified but we don't have
+ // an external ROM nor are we on an MC6847T1
+ fontdata = m_stripes;
+ character_mask = 0x7F;
+ color_base_0 = (mode & MODE_CSS ? 14 : 12);
+ color_base_1 = (mode & MODE_CSS ? 15 : 13);
}
else
{