mirror of
https://github.com/holub/mame
synced 2025-04-23 00:39:36 +03:00
mindset: More graphics fixes [O. Galibert]
This commit is contained in:
parent
952b2d2de4
commit
ffe04a3f08
@ -76,6 +76,9 @@ protected:
|
||||
int kbd_t1_r();
|
||||
u8 kbd_d_r();
|
||||
|
||||
void snd_p1_w(u8 data);
|
||||
void snd_p2_w(u8 data);
|
||||
|
||||
void fdc_ctrl_w(u8 data);
|
||||
void fdc_int_w(int state);
|
||||
u16 fdc_clear_interrupt();
|
||||
@ -182,6 +185,16 @@ int mindset_state::kbd_t1_r()
|
||||
return keyscan() & 0x100;
|
||||
}
|
||||
|
||||
void mindset_state::snd_p1_w(u8 data)
|
||||
{
|
||||
// logerror("snd p1 %02x\n", data);
|
||||
}
|
||||
|
||||
void mindset_state::snd_p2_w(u8 data)
|
||||
{
|
||||
// logerror("snd p2 %02x\n", data);
|
||||
}
|
||||
|
||||
u16 mindset_state::keyscan()
|
||||
{
|
||||
u16 src = (m_kbd_p2 << 8) | m_kbd_p1;
|
||||
@ -201,7 +214,6 @@ u16 mindset_state::dispctrl_r()
|
||||
|
||||
void mindset_state::dispctrl_w(u16 data)
|
||||
{
|
||||
// 4000 = buffer choice (switch on int2, frame int instead of field int?)
|
||||
u16 chg = m_dispctrl ^ data;
|
||||
m_dispctrl = data;
|
||||
if(chg & 0xff00)
|
||||
@ -224,6 +236,7 @@ void mindset_state::dispreg_w(u16 data)
|
||||
break;
|
||||
case 1:
|
||||
m_borderidx = data & 0xf;
|
||||
logerror("border color %x\n", m_borderidx);
|
||||
break;
|
||||
case 2: {
|
||||
m_intpos = data;
|
||||
@ -273,100 +286,13 @@ u32 mindset_state::screen_update(screen_device &screen, bitmap_rgb32 &bitmap, co
|
||||
// Temporary gross hack
|
||||
if(cliprect.max_y != 399)
|
||||
return 0;
|
||||
int mode_type = (m_dispctrl & 0x6000) >> 13;
|
||||
const u16 *bank = m_dispctrl & 0x4000 ? m_vram + 8000 : m_vram;
|
||||
bool ibm_mode = m_dispctrl & 0x2000;
|
||||
bool interleave = m_dispctrl & 0x0800;
|
||||
int pixels_per_byte_order = (m_dispctrl & 0x0600) >> 9;
|
||||
bool large_pixels = m_dispctrl & 0x0100;
|
||||
|
||||
switch(mode_type) {
|
||||
case 0: // Native mode
|
||||
if(large_pixels) {
|
||||
if(!interleave) {
|
||||
switch(pixels_per_byte_order) {
|
||||
case 0: {
|
||||
for(int field=0; field<2; field++) {
|
||||
const u16 *src = m_vram;
|
||||
for(u32 y=0; y<200; y++) {
|
||||
u32 *dest = &bitmap.pix32(2*y+field);
|
||||
for(u32 x=0; x<320; x+=4) {
|
||||
u16 sv = *src++;
|
||||
*dest++ = m_palette[(sv >> 4) & 15];
|
||||
*dest++ = m_palette[(sv >> 4) & 15];
|
||||
*dest++ = m_palette[(sv >> 0) & 15];
|
||||
*dest++ = m_palette[(sv >> 0) & 15];
|
||||
*dest++ = m_palette[(sv >> 12) & 15];
|
||||
*dest++ = m_palette[(sv >> 12) & 15];
|
||||
*dest++ = m_palette[(sv >> 8) & 15];
|
||||
*dest++ = m_palette[(sv >> 8) & 15];
|
||||
}
|
||||
}
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
case 1: {
|
||||
static int palind[4] = { 0, 1, 4, 5 };
|
||||
for(int field=0; field<2; field++) {
|
||||
const u16 *src = m_vram;
|
||||
for(u32 y=0; y<200; y++) {
|
||||
u32 *dest = &bitmap.pix32(2*y+field);
|
||||
for(u32 x=0; x<320; x+=8) {
|
||||
u16 sv = *src++;
|
||||
*dest++ = m_palette[palind[(sv >> 6) & 3]];
|
||||
*dest++ = m_palette[palind[(sv >> 6) & 3]];
|
||||
*dest++ = m_palette[palind[(sv >> 4) & 3]];
|
||||
*dest++ = m_palette[palind[(sv >> 4) & 3]];
|
||||
*dest++ = m_palette[palind[(sv >> 2) & 3]];
|
||||
*dest++ = m_palette[palind[(sv >> 2) & 3]];
|
||||
*dest++ = m_palette[palind[(sv >> 0) & 3]];
|
||||
*dest++ = m_palette[palind[(sv >> 0) & 3]];
|
||||
*dest++ = m_palette[palind[(sv >> 14) & 3]];
|
||||
*dest++ = m_palette[palind[(sv >> 14) & 3]];
|
||||
*dest++ = m_palette[palind[(sv >> 12) & 3]];
|
||||
*dest++ = m_palette[palind[(sv >> 12) & 3]];
|
||||
*dest++ = m_palette[palind[(sv >> 10) & 3]];
|
||||
*dest++ = m_palette[palind[(sv >> 10) & 3]];
|
||||
*dest++ = m_palette[palind[(sv >> 8) & 3]];
|
||||
*dest++ = m_palette[palind[(sv >> 8) & 3]];
|
||||
}
|
||||
}
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
} else {
|
||||
if(!interleave) {
|
||||
switch(pixels_per_byte_order) {
|
||||
case 0: {
|
||||
static int palind[4] = { 0, 1, 4, 5 };
|
||||
for(int field=0; field<2; field++) {
|
||||
m_palette[1] = 0xffffff;
|
||||
const u16 *src = m_vram;
|
||||
for(u32 y=0; y<200; y++) {
|
||||
u32 *dest = &bitmap.pix32(2*y+field);
|
||||
for(u32 x=0; x<640; x+=8) {
|
||||
u16 sv = *src++;
|
||||
*dest++ = m_palette[palind[(sv >> 6) & 3]];
|
||||
*dest++ = m_palette[palind[(sv >> 4) & 3]];
|
||||
*dest++ = m_palette[palind[(sv >> 2) & 3]];
|
||||
*dest++ = m_palette[palind[(sv >> 0) & 3]];
|
||||
*dest++ = m_palette[palind[(sv >> 14) & 3]];
|
||||
*dest++ = m_palette[palind[(sv >> 12) & 3]];
|
||||
*dest++ = m_palette[palind[(sv >> 10) & 3]];
|
||||
*dest++ = m_palette[palind[(sv >> 8) & 3]];
|
||||
}
|
||||
}
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
logerror("Unimplemented native mode (%dx%d, ppb=%d)\n", large_pixels ? 320 : 640, interleave ? 400 : 200, 2 << pixels_per_byte_order);
|
||||
break;
|
||||
|
||||
case 1: // IBM-compatible graphics mode
|
||||
if(ibm_mode) {
|
||||
if(large_pixels) {
|
||||
if(!interleave) {
|
||||
switch(pixels_per_byte_order) {
|
||||
@ -374,7 +300,7 @@ u32 mindset_state::screen_update(screen_device &screen, bitmap_rgb32 &bitmap, co
|
||||
static int palind[4] = { 0, 1, 4, 5 };
|
||||
for(int field=0; field<2; field++) {
|
||||
for(u32 yy=0; yy<2; yy++) {
|
||||
const u16 *src = m_vram + 4096*yy;
|
||||
const u16 *src = bank + 4096*yy;
|
||||
for(u32 y=yy; y<200; y+=2) {
|
||||
u32 *dest = &bitmap.pix32(2*y+1);
|
||||
for(u32 x=0; x<320; x+=8) {
|
||||
@ -406,56 +332,165 @@ u32 mindset_state::screen_update(screen_device &screen, bitmap_rgb32 &bitmap, co
|
||||
}
|
||||
|
||||
logerror("Unimplemented ibm-compatible graphics mode (%dx%d, ppb=%d)\n", large_pixels ? 320 : 640, interleave ? 400 : 200, 2 << pixels_per_byte_order);
|
||||
break;
|
||||
|
||||
case 2: // IBM-compatible character mode
|
||||
} else {
|
||||
if(large_pixels) {
|
||||
if(!interleave) {
|
||||
for(int field=0; field<2; field++) {
|
||||
for(u32 y=0; y<25; y++) {
|
||||
for(u32 x=0; x<40; x++) {
|
||||
u16 val = m_vram[y*40+x];
|
||||
const u16 *src = m_vram + 0x1000 + ((val >> 1) & 0x7f);
|
||||
for(u32 yy=0; yy<8; yy++) {
|
||||
u8 pix = val & 1 ? *src >> 8 : *src;
|
||||
src += 128;
|
||||
u32 *dest = &bitmap.pix32(16*y+2*yy+field, 16*x);
|
||||
for(u32 xx=0; xx<8; xx++) {
|
||||
*dest++ = pix & (0x80 >> xx) ? m_palette[1] : m_palette[0];
|
||||
*dest++ = pix & (0x80 >> xx) ? m_palette[1] : m_palette[0];
|
||||
}
|
||||
switch(pixels_per_byte_order) {
|
||||
case 0: {
|
||||
for(int field=0; field<2; field++) {
|
||||
const u16 *src = bank;
|
||||
for(u32 y=0; y<200; y++) {
|
||||
u32 *dest = &bitmap.pix32(2*y+field);
|
||||
for(u32 x=0; x<320; x+=4) {
|
||||
u16 sv = *src++;
|
||||
*dest++ = m_palette[(sv >> 4) & 15];
|
||||
*dest++ = m_palette[(sv >> 4) & 15];
|
||||
*dest++ = m_palette[(sv >> 0) & 15];
|
||||
*dest++ = m_palette[(sv >> 0) & 15];
|
||||
*dest++ = m_palette[(sv >> 12) & 15];
|
||||
*dest++ = m_palette[(sv >> 12) & 15];
|
||||
*dest++ = m_palette[(sv >> 8) & 15];
|
||||
*dest++ = m_palette[(sv >> 8) & 15];
|
||||
}
|
||||
}
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
case 1: {
|
||||
static int palind[4] = { 0, 1, 4, 5 };
|
||||
for(int field=0; field<2; field++) {
|
||||
const u16 *src = bank;
|
||||
for(u32 y=0; y<200; y++) {
|
||||
u32 *dest = &bitmap.pix32(2*y+field);
|
||||
for(u32 x=0; x<320; x+=8) {
|
||||
u16 sv = *src++;
|
||||
*dest++ = m_palette[palind[(sv >> 6) & 3]];
|
||||
*dest++ = m_palette[palind[(sv >> 6) & 3]];
|
||||
*dest++ = m_palette[palind[(sv >> 4) & 3]];
|
||||
*dest++ = m_palette[palind[(sv >> 4) & 3]];
|
||||
*dest++ = m_palette[palind[(sv >> 2) & 3]];
|
||||
*dest++ = m_palette[palind[(sv >> 2) & 3]];
|
||||
*dest++ = m_palette[palind[(sv >> 0) & 3]];
|
||||
*dest++ = m_palette[palind[(sv >> 0) & 3]];
|
||||
*dest++ = m_palette[palind[(sv >> 14) & 3]];
|
||||
*dest++ = m_palette[palind[(sv >> 14) & 3]];
|
||||
*dest++ = m_palette[palind[(sv >> 12) & 3]];
|
||||
*dest++ = m_palette[palind[(sv >> 12) & 3]];
|
||||
*dest++ = m_palette[palind[(sv >> 10) & 3]];
|
||||
*dest++ = m_palette[palind[(sv >> 10) & 3]];
|
||||
*dest++ = m_palette[palind[(sv >> 8) & 3]];
|
||||
*dest++ = m_palette[palind[(sv >> 8) & 3]];
|
||||
}
|
||||
}
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
case 2: {
|
||||
static int palind[4] = { 0, 1 };
|
||||
for(int field=0; field<2; field++) {
|
||||
const u16 *src = bank;
|
||||
for(u32 y=0; y<200; y++) {
|
||||
u32 *dest = &bitmap.pix32(2*y+field);
|
||||
for(u32 x=0; x<320; x+=16) {
|
||||
u16 sv = *src++;
|
||||
*dest++ = m_palette[palind[(sv >> 7) & 1]];
|
||||
*dest++ = m_palette[palind[(sv >> 7) & 1]];
|
||||
*dest++ = m_palette[palind[(sv >> 6) & 1]];
|
||||
*dest++ = m_palette[palind[(sv >> 6) & 1]];
|
||||
*dest++ = m_palette[palind[(sv >> 5) & 1]];
|
||||
*dest++ = m_palette[palind[(sv >> 5) & 1]];
|
||||
*dest++ = m_palette[palind[(sv >> 4) & 1]];
|
||||
*dest++ = m_palette[palind[(sv >> 4) & 1]];
|
||||
*dest++ = m_palette[palind[(sv >> 3) & 1]];
|
||||
*dest++ = m_palette[palind[(sv >> 3) & 1]];
|
||||
*dest++ = m_palette[palind[(sv >> 2) & 1]];
|
||||
*dest++ = m_palette[palind[(sv >> 2) & 1]];
|
||||
*dest++ = m_palette[palind[(sv >> 1) & 1]];
|
||||
*dest++ = m_palette[palind[(sv >> 1) & 1]];
|
||||
*dest++ = m_palette[palind[(sv >> 0) & 1]];
|
||||
*dest++ = m_palette[palind[(sv >> 0) & 1]];
|
||||
*dest++ = m_palette[palind[(sv >> 15) & 1]];
|
||||
*dest++ = m_palette[palind[(sv >> 15) & 1]];
|
||||
*dest++ = m_palette[palind[(sv >> 14) & 1]];
|
||||
*dest++ = m_palette[palind[(sv >> 14) & 1]];
|
||||
*dest++ = m_palette[palind[(sv >> 13) & 1]];
|
||||
*dest++ = m_palette[palind[(sv >> 13) & 1]];
|
||||
*dest++ = m_palette[palind[(sv >> 12) & 1]];
|
||||
*dest++ = m_palette[palind[(sv >> 12) & 1]];
|
||||
*dest++ = m_palette[palind[(sv >> 11) & 1]];
|
||||
*dest++ = m_palette[palind[(sv >> 11) & 1]];
|
||||
*dest++ = m_palette[palind[(sv >> 10) & 1]];
|
||||
*dest++ = m_palette[palind[(sv >> 10) & 1]];
|
||||
*dest++ = m_palette[palind[(sv >> 9) & 1]];
|
||||
*dest++ = m_palette[palind[(sv >> 9) & 1]];
|
||||
*dest++ = m_palette[palind[(sv >> 8) & 1]];
|
||||
*dest++ = m_palette[palind[(sv >> 8) & 1]];
|
||||
}
|
||||
}
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
} else {
|
||||
if(!interleave) {
|
||||
for(int field=0; field<2; field++) {
|
||||
for(u32 y=0; y<25; y++) {
|
||||
for(u32 x=0; x<80; x++) {
|
||||
u16 val = m_vram[y*80+x];
|
||||
const u16 *src = m_vram + 0x1000 + ((val >> 1) & 0x7f);
|
||||
for(u32 yy=0; yy<8; yy++) {
|
||||
u8 pix = val & 1 ? *src >> 8 : *src;
|
||||
src += 128;
|
||||
u32 *dest = &bitmap.pix32(16*y+2*yy+field, 8*x);
|
||||
for(u32 xx=0; xx<8; xx++)
|
||||
*dest++ = pix & (0x80 >> xx) ? m_palette[4] : m_palette[0];
|
||||
switch(pixels_per_byte_order) {
|
||||
case 0: {
|
||||
static int palind[4] = { 0, 1, 4, 5 };
|
||||
for(int field=0; field<2; field++) {
|
||||
m_palette[1] = 0xffffff;
|
||||
const u16 *src = bank;
|
||||
for(u32 y=0; y<200; y++) {
|
||||
u32 *dest = &bitmap.pix32(2*y+field);
|
||||
for(u32 x=0; x<640; x+=8) {
|
||||
u16 sv = *src++;
|
||||
*dest++ = m_palette[palind[(sv >> 6) & 3]];
|
||||
*dest++ = m_palette[palind[(sv >> 4) & 3]];
|
||||
*dest++ = m_palette[palind[(sv >> 2) & 3]];
|
||||
*dest++ = m_palette[palind[(sv >> 0) & 3]];
|
||||
*dest++ = m_palette[palind[(sv >> 14) & 3]];
|
||||
*dest++ = m_palette[palind[(sv >> 12) & 3]];
|
||||
*dest++ = m_palette[palind[(sv >> 10) & 3]];
|
||||
*dest++ = m_palette[palind[(sv >> 8) & 3]];
|
||||
}
|
||||
}
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
case 1: {
|
||||
static int palind[4] = { 0, 4 };
|
||||
for(int field=0; field<2; field++) {
|
||||
const u16 *src = bank;
|
||||
for(u32 y=0; y<200; y++) {
|
||||
u32 *dest = &bitmap.pix32(2*y+field);
|
||||
for(u32 x=0; x<640; x+=16) {
|
||||
u16 sv = *src++;
|
||||
*dest++ = m_palette[palind[(sv >> 7) & 1]];
|
||||
*dest++ = m_palette[palind[(sv >> 6) & 1]];
|
||||
*dest++ = m_palette[palind[(sv >> 5) & 1]];
|
||||
*dest++ = m_palette[palind[(sv >> 4) & 1]];
|
||||
*dest++ = m_palette[palind[(sv >> 3) & 1]];
|
||||
*dest++ = m_palette[palind[(sv >> 2) & 1]];
|
||||
*dest++ = m_palette[palind[(sv >> 1) & 1]];
|
||||
*dest++ = m_palette[palind[(sv >> 0) & 1]];
|
||||
*dest++ = m_palette[palind[(sv >> 15) & 1]];
|
||||
*dest++ = m_palette[palind[(sv >> 14) & 1]];
|
||||
*dest++ = m_palette[palind[(sv >> 13) & 1]];
|
||||
*dest++ = m_palette[palind[(sv >> 12) & 1]];
|
||||
*dest++ = m_palette[palind[(sv >> 11) & 1]];
|
||||
*dest++ = m_palette[palind[(sv >> 10) & 1]];
|
||||
*dest++ = m_palette[palind[(sv >> 9) & 1]];
|
||||
*dest++ = m_palette[palind[(sv >> 8) & 1]];
|
||||
}
|
||||
}
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
logerror("Unimplemented ibm-compatible character mode (%dx%d)\n", large_pixels ? 320/8 : 640/8, interleave ? 400/8 : 200/8);
|
||||
break;
|
||||
|
||||
case 3: // Unknown
|
||||
logerror("Unknown graphics mode type 3\n");
|
||||
break;
|
||||
logerror("Unimplemented native mode (%dx%d, ppb=%d)\n", large_pixels ? 320 : 640, interleave ? 400 : 200, 2 << pixels_per_byte_order);
|
||||
}
|
||||
|
||||
bitmap.fill(0);
|
||||
@ -531,6 +566,7 @@ void mindset_state::blit(u16 packet_seg, u16 packet_adr)
|
||||
u16 dst_seg = sw(m_gcos->read_word((packet_seg << 4) + ((packet_adr + 22) & 0xffff)));
|
||||
u16 wmask = sw(m_gcos->read_word((packet_seg << 4) + ((packet_adr + 24) & 0xffff)));
|
||||
u16 kmask = sw(m_gcos->read_word((packet_seg << 4) + ((packet_adr + 26) & 0xffff)));
|
||||
if(1)
|
||||
logerror("GCO: p src %04x:%04x.%x dst %04x:%04x.%x sz %xx%x step %x:%x mask %04x:%04x k %x:%x mode %c%c%c%d%c%d%c%c%c\n", src_seg, src_adr, src_sft, dst_seg, dst_adr, dst_sft, width, height, sy, dy, rmask, wmask, (kmask >> 8) & 15, kmask & 15,
|
||||
mode & 0x80 ? 'k' : '-',
|
||||
mode & 0x40 ? 't' : 'o',
|
||||
@ -551,13 +587,10 @@ void mindset_state::blit(u16 packet_seg, u16 packet_adr)
|
||||
// i/f = increment source / don't (used by blt_copy_word)
|
||||
|
||||
if(mode & 0x200) {
|
||||
// Weird, does one with target bbe8:0000 which blows everything up
|
||||
if(dst_seg != 0xbbe8) {
|
||||
u16 src = m_gcos->read_word((src_seg << 4) + src_adr);
|
||||
for(u16 w=0; w != width/2; w++) {
|
||||
m_gcos->write_word((dst_seg << 4) + dst_adr, src);
|
||||
dst_adr += 2;
|
||||
}
|
||||
u16 src = m_gcos->read_word((src_seg << 4) + src_adr);
|
||||
for(u16 w=0; w != width/2; w++) {
|
||||
m_gcos->write_word((dst_seg << 4) + dst_adr, src);
|
||||
dst_adr += 2;
|
||||
}
|
||||
|
||||
} else {
|
||||
@ -629,8 +662,6 @@ void mindset_state::blit(u16 packet_seg, u16 packet_adr)
|
||||
|
||||
res = (dst & ~cmask) | (res & cmask);
|
||||
|
||||
// logerror("GCO: %04x * %04x = %04x @ %04x\n", src, dst, res, cmask);
|
||||
|
||||
m_gcos->write_word((dst_seg << 4) + dst_cadr, sw(res));
|
||||
if(mode & 0x100)
|
||||
src_cadr += 2;
|
||||
@ -654,6 +685,7 @@ void mindset_state::gco_w(u16)
|
||||
u16 packet_adr = sw(m_gcos->read_word(0xbfd78));
|
||||
u16 global_mode = sw(m_gcos->read_word(0xbfd76));
|
||||
|
||||
if(1)
|
||||
logerror("GCO: start %04x:%04x mode %04x (%05x)\n", packet_seg, packet_adr, global_mode, m_maincpu->pc());
|
||||
|
||||
switch(global_mode) {
|
||||
@ -736,6 +768,12 @@ void mindset_state::maincpu_io(address_map &map)
|
||||
map(0x8060, 0x8060).r(m_fdc, FUNC(i8272a_device::msr_r));
|
||||
map(0x8062, 0x8062).rw(m_fdc, FUNC(i8272a_device::fifo_r), FUNC(i8272a_device::fifo_w));
|
||||
|
||||
map(0x8080, 0x8080).lr8("id13", []() -> u8 { return 0x13; }); // sound
|
||||
map(0x80c0, 0x80c0).lr8("id3f", []() -> u8 { return 0x3f; }); // serial type 1, maybe?
|
||||
map(0x8100, 0x8100).lr8("id5f", []() -> u8 { return 0x5f; }); // serial type 2
|
||||
map(0x8140, 0x8140).lr8("id70", []() -> u8 { return 0x70; }); // parallel printer, init writes 0x82 at +6
|
||||
map(0x8180, 0x8180).lr8("id73", []() -> u8 { return 0x73; }); // serial type 3
|
||||
|
||||
map(0x8280, 0x8283).rw(m_syscpu, FUNC(i8042_device::upi41_master_r), FUNC(i8042_device::upi41_master_w)).umask16(0x00ff);
|
||||
map(0x82a0, 0x82a3).rw(m_soundcpu, FUNC(i8042_device::upi41_master_r), FUNC(i8042_device::upi41_master_w)).umask16(0x00ff);
|
||||
map(0x8300, 0x8301).w(FUNC(mindset_state::gco_w));
|
||||
@ -765,6 +803,8 @@ void mindset_state::mindset(machine_config &config)
|
||||
m_syscpu->t1_in_cb().set(FUNC(mindset_state::sys_t1_r));
|
||||
|
||||
I8042(config, m_soundcpu, 12_MHz_XTAL/2);
|
||||
m_soundcpu->p1_out_cb().set(FUNC(mindset_state::snd_p1_w));
|
||||
m_soundcpu->p2_out_cb().set(FUNC(mindset_state::snd_p2_w));
|
||||
|
||||
I8749(config, m_kbdcpu, 6_MHz_XTAL);
|
||||
m_kbdcpu->p1_out_cb().set(FUNC(mindset_state::kbd_p1_w));
|
||||
@ -783,7 +823,7 @@ void mindset_state::mindset(machine_config &config)
|
||||
m_screen->scanline().set([this](int scanline) { m_maincpu->int2_w(scanline == 198); });
|
||||
m_screen->screen_vblank().set(m_maincpu, FUNC(i80186_cpu_device::int1_w));
|
||||
|
||||
I8272A(config, m_fdc, 8'000'000, true);
|
||||
I8272A(config, m_fdc, 16_MHz_XTAL/2, true);
|
||||
m_fdc->intrq_wr_callback().set(FUNC(mindset_state::fdc_int_w));
|
||||
m_fdc->drq_wr_callback().set(m_maincpu, FUNC(i80186_cpu_device::drq1_w));
|
||||
m_fdc->set_ready_line_connected(false);
|
||||
|
Loading…
Reference in New Issue
Block a user