Line 147... |
Line 147... |
if (config.sim.verbose)
|
if (config.sim.verbose)
|
printf("kbd_write8(%x) %x\n", addr, value);
|
printf("kbd_write8(%x) %x\n", addr, value);
|
break;
|
break;
|
default:
|
default:
|
fprintf (stderr, "Write out of keyboard space (0x%08x)!\n", addr);
|
fprintf (stderr, "Write out of keyboard space (0x%08x)!\n", addr);
|
cont_run = 0;
|
runtime.sim.cont_run = 0;
|
break;
|
break;
|
}
|
}
|
}
|
}
|
|
|
/* Read a register */
|
/* Read a register */
|
Line 216... |
Line 216... |
if (config.sim.verbose)
|
if (config.sim.verbose)
|
printf("kbd_read8(%x) fifo empty\n", addr);
|
printf("kbd_read8(%x) fifo empty\n", addr);
|
return 0;
|
return 0;
|
default:
|
default:
|
fprintf (stderr, "Read out of keyboard space (0x%08x)!\n", addr);
|
fprintf (stderr, "Read out of keyboard space (0x%08x)!\n", addr);
|
cont_run = 0;
|
runtime.sim.cont_run = 0;
|
return 0;
|
return 0;
|
}
|
}
|
}
|
}
|
|
|
|
|
Line 236... |
Line 236... |
kbd_int = kbd_kresp || kbd_buf_count;
|
kbd_int = kbd_kresp || kbd_buf_count;
|
kbd_int = kbd_kresp || kbd_buf_count ? kbd_ccmdbyte & KBD_CCMDBYTE_INT : 0;
|
kbd_int = kbd_kresp || kbd_buf_count ? kbd_ccmdbyte & KBD_CCMDBYTE_INT : 0;
|
if (config.sim.verbose && kbd_int)
|
if (config.sim.verbose && kbd_int)
|
printf("Keyboard Interrupt.... kbd_kresp %x kbd_buf_count %x \n", kbd_kresp, kbd_buf_count);
|
printf("Keyboard Interrupt.... kbd_kresp %x kbd_buf_count %x \n", kbd_kresp, kbd_buf_count);
|
if (kbd_int) report_interrupt(config.kbd.irq);
|
if (kbd_int) report_interrupt(config.kbd.irq);
|
SCHED_ADD(kbd_job, 0, cycles + kbd_slowdown);
|
SCHED_ADD(kbd_job, 0, runtime.sim.cycles + kbd_slowdown);
|
}
|
}
|
|
|
/* Reset all VGAs */
|
/* Reset all VGAs */
|
void kbd_reset ()
|
void kbd_reset ()
|
{
|
{
|
Line 257... |
Line 257... |
fprintf (stderr, "WARNING: Keyboard has problems with RX file stream.\n");
|
fprintf (stderr, "WARNING: Keyboard has problems with RX file stream.\n");
|
config.kbd.enabled = 0;
|
config.kbd.enabled = 0;
|
}
|
}
|
kbd_slowdown = (long) ((config.sim.system_kfreq * 1000.) / KBD_BAUD_RATE);
|
kbd_slowdown = (long) ((config.sim.system_kfreq * 1000.) / KBD_BAUD_RATE);
|
if (kbd_slowdown <= 0) kbd_slowdown = 1;
|
if (kbd_slowdown <= 0) kbd_slowdown = 1;
|
if (config.kbd.enabled) SCHED_ADD(kbd_job, 0, cycles + kbd_slowdown);
|
if (config.kbd.enabled) SCHED_ADD(kbd_job, 0, runtime.sim.cycles + kbd_slowdown);
|
}
|
}
|
}
|
}
|
|
|
|
|
void kbd_info()
|
void kbd_info()
|