register_event(this, EVENT_FM7SUB_VSTART, 10.0, false, &vstart_event_id);
register_event(this, EVENT_FM7SUB_DISPLAY_NMI, 20000.0, true, &nmi_event_id); // NEXT CYCLE_
sub_busy = true;
- sub_busy_bak = !sub_busy;
+ sub_busy_bak = sub_busy;
do_attention = false;
mainio->write_signal(FM7_MAINIO_SUB_BUSY, 0xff, 0xff);
// subcpu->reset();
uint8 DISPLAY::acknowledge_irq(void)
{
cancel_request = false;
- //do_irq(false);
+ do_irq(false);
return 0xff;
}
uint8 DISPLAY::reset_subbusy(void)
{
sub_busy = false;
-// mainio->write_signal(FM7_MAINIO_SUB_BUSY, 0, 0xff);
+ //mainio->write_signal(FM7_MAINIO_SUB_BUSY, 0, 0xff);
return 0xff;
}
void DISPLAY::set_subbusy(void)
{
sub_busy = true;
-// mainio->write_signal(FM7_MAINIO_SUB_BUSY, 0xff, 0xff);
+ //mainio->write_signal(FM7_MAINIO_SUB_BUSY, 0xff, 0xff);
}
alu->write_data8(ALU_LINEPOS_END_X_HIGH, data & 0x03);
break;
case 5:
- alu->write_data8(ALU_LINEPOS_END_X_LOW, data);
+ alu->write_data8(ALU_LINEPOS_END_X_LOW, data);
break;
case 6:
alu->write_data8(ALU_LINEPOS_END_Y_HIGH, data & 0x01);
case SIG_FM7_SUB_HALT:
if(flag) {
sub_busy = true;
- //mainio->write_signal(FM7_MAINIO_SUB_BUSY, 0xff, 0xff);
+ mainio->write_signal(FM7_MAINIO_SUB_BUSY, 0xff, 0xff);
}
//if(cancel_request && flag) {
// restart_subsystem();
//printf("MAIN: CANCEL REQUEST TO SUB\n");
if(flag) {
cancel_request = true;
- //do_irq(true);
+ do_irq(true);
}
break;
case SIG_DISPLAY_CLOCK:
void FM7_MAINIO::set_sub_attention(bool flag)
{
firq_sub_attention = flag;
- do_firq();
+// do_firq();
}
if(sub_cancel != sub_cancel_bak) {
display->write_signal(SIG_FM7_SUB_CANCEL, (sub_cancel) ? 0xff : 0x00, 0xff); // HACK
}
- sub_cancel_bak = sub_cancel;
+ //sub_cancel_bak = sub_cancel;
//sub_halt_bak = sub_halt;
#ifdef WITH_Z80
if((val & 0x01) != 0) {
display->write_signal(SIG_DISPLAY_HALT, (sub_halt) ? 0xff : 0x00, 0xff);
}
sub_halt_bak = sub_halt;
- //if(firq_sub_attention != firq_sub_attention_bak){
- // do_firq();
- //}
- //firq_sub_attention_bak = firq_sub_attention;
-
+ if(firq_sub_attention != firq_sub_attention_bak){
+ do_firq();
+ }
+ firq_sub_attention_bak = firq_sub_attention;
+ sub_cancel_bak = sub_cancel;
#if defined(_FM77AV_VARIANTS)
if(sub_monitor_type != sub_monitor_bak) {
display->write_signal(SIG_FM7_SUB_BANK, sub_monitor_type, 0x07);