Merge pull request #964 from Bavarese/patch-8

Update vtvideo.cpp
This commit is contained in:
R. Belmont 2016-06-18 17:09:57 -04:00 committed by GitHub
commit 637d434dec

View File

@ -231,74 +231,36 @@ READ8_MEMBER(vt100_video_device::lba7_r)
return m_lba7; return m_lba7;
} }
// Also used by Rainbow-100 ************ // Also used by Rainbow-100 ************
WRITE8_MEMBER(vt100_video_device::dc012_w) WRITE8_MEMBER(vt100_video_device::dc012_w)
{ {
// Writes to [10C] and [0C] are treated differently // Writes to [10C] and [0C] are treated differently
// - see 3.1.3.9.5 DC012 Programming Information (PC-100 spec) // - see 3.1.3.9.5 DC012 Programming Information (PC-100 spec)
if ((offset & 0x100) && (data == 0) ) // MHFU is disabled by writing 00 to port 010C.
// MHFU is disabled by writing 00 to port 010C.
// Code recognition is abysmal - sorry for that.
if (data == 0)
{ {
UINT8 *rom = machine().root_device().memregion("maincpu")->base(); if (MHFU_FLAG == true)
if (rom != nullptr) printf("MHFU *** DISABLED *** \n");
{ MHFU_FLAG = false;
UINT32 PC = space.device().safe_pc(); MHFU_counter = 0; // ?
if ((rom[ PC - 1] == 0xe6) &&
(rom[ PC ] == 0x0c)
)
{
// OUT 0C,al < DO NOTHING >
}
else
{
//UINT8 magic1= rom[PC - 1];
//printf("\n PC %05x - MHFU MAGIC -1 %02x\n", PC, magic1);
//UINT8 magic2 = rom[PC - 2];
//printf("\n PC %05x - MHFU MAGIC -2 %02x\n", PC, magic2);
//if (VERBOSE)
//if(1 )
if ((rom[PC - 2] == 0x0C) &&
(rom[PC - 1] == 0x01)
)
{
if (MHFU_FLAG == true)
printf("MHFU *** DISABLED *** %05x \n", PC);
MHFU_FLAG = false;
MHFU_counter = 0;
}
}
} // DATA == 0 ONLY ....
} }
else else
{ {
//if (VERBOSE)
if (MHFU_FLAG == false) if (MHFU_FLAG == false)
printf("MHFU ___ENABLED___ %05x \n", space.device().safe_pc()); printf("MHFU ___ENABLED___ %05x \n", space.device().safe_pc());
// RESET
MHFU_FLAG = true; MHFU_FLAG = true;
MHFU_counter = 0; MHFU_counter = 0;
} }
if (!(data & 0x08)) if (!(data & 0x08))
{ {
if (!(data & 0x04)) if (!(data & 0x04))
{ {
m_scroll_latch_valid = false; // LSB is written first. m_scroll_latch_valid = false;
// set lower part scroll m_scroll_latch = data & 0x03; // LSB is written first.
m_scroll_latch = data & 0x03;
} }
else else // set MSB of scroll_latch
{ {
// set higher part scroll
m_scroll_latch = (m_scroll_latch & 0x03) | ((data & 0x03) << 2); m_scroll_latch = (m_scroll_latch & 0x03) | ((data & 0x03) << 2);
m_scroll_latch_valid = true; m_scroll_latch_valid = true;
} }
@ -883,16 +845,23 @@ int rainbow_video_device::MHFU(int ASK)
return MHFU_FLAG; return MHFU_FLAG;
case -1: // -1: increment IF ENABLED, return counter value (=> Rainbow.c) case -1: // -1: increment IF ENABLED, return counter value (=> Rainbow.c)
if (MHFU_FLAG == true) //if (MHFU_FLAG == true)
MHFU_counter++; if (MHFU_counter < 255)
MHFU_counter++;
case -2:
return MHFU_counter; return MHFU_counter;
case -250: // -250 : RESET counter (NOTHING ELSE!)
MHFU_counter = 0;
return MHFU_FLAG;
case -100: // -100 : RESET and ENABLE MHFU counter case -100: // -100 : RESET and ENABLE MHFU counter
MHFU_counter = 0; MHFU_counter = 0;
if(1) //if (VERBOSE) if(0) //if (VERBOSE)
printf("-100 MHFU * reset and ENABLE * \n"); printf("-100 MHFU * reset and ENABLE * \n");
if(1) // if (VERBOSE) if(0) // if (VERBOSE)
{ {
if (MHFU_FLAG == false) if (MHFU_FLAG == false)
printf("-100 MHFU ___ENABLED___\n"); printf("-100 MHFU ___ENABLED___\n");
@ -904,10 +873,10 @@ int rainbow_video_device::MHFU(int ASK)
case -200: // -200 : RESET and DISABLE MHFU case -200: // -200 : RESET and DISABLE MHFU
MHFU_counter = 0; MHFU_counter = 0;
if(1) //if (VERBOSE) if(0) //if (VERBOSE)
{ {
if (MHFU_FLAG == true) if (MHFU_FLAG == true)
printf("MHFU *** DISABLED *** \n"); printf("MHFU *** DISABLED ***xxx \n");
} }
MHFU_FLAG = false; MHFU_FLAG = false;