uae_s8 md; /* CD32 or CDTV internal storage */
uae_s8 net; /* network */
int cpu_halted;
+ int cpu_stopped;
int fps, lines, lace, idle;
int fps_color;
int sndbuf, sndbuf_status;
static void m68k_set_stop(int stoptype)
{
- if (regs.stopped)
+ if (regs.stopped) {
return;
+ }
regs.stopped = stoptype;
+ if (regs.intmask == 7) {
+ gui_data.cpu_stopped = 1;
+ gui_led(LED_CPU, 0, -1);
+ }
if (cpu_last_stop_vpos >= 0) {
cpu_last_stop_vpos = vpos;
}
static void m68k_unset_stop(void)
{
regs.stopped = 0;
+ if (gui_data.cpu_stopped) {
+ gui_data.cpu_stopped = 0;
+ gui_led(LED_CPU, 0, -1);
+ }
if (cpu_last_stop_vpos >= 0) {
cpu_stopped_lines += vpos - cpu_last_stop_vpos;
cpu_last_stop_vpos = vpos;
static void cpu_halt_clear(void)
{
regs.halted = 0;
- if (gui_data.cpu_halted) {
+ if (gui_data.cpu_halted || gui_data.cpu_stopped) {
gui_data.cpu_halted = 0;
+ gui_data.cpu_stopped = 0;
gui_led(LED_CPU, 0, -1);
}
}
m68label = _T("68k");
m68klabelchange = true;
}
- if (gui_data.cpu_halted < 0) {
+ if (gui_data.cpu_halted < 0 || gui_data.cpu_stopped) {
if (!m68klabelchange)
- _tcscpy(p, _T("STOP"));
+ _tcscpy(p, _T("CPU:STOP"));
else
- _tcscat(p, _T(" 68k: STOP"));
+ _tcscat(p, _T("68k: STOP"));
} else {
_stprintf(p, _T("%s: %.0f%%"), m68label, (double)((gui_data.idle) / 10.0));
}
pos = 1;
on_rgb = 0xcc0000;
off_rgb = 0x111111;
- if (gui_data.cpu_halted) {
+ if (gui_data.cpu_halted || gui_data.cpu_stopped) {
idle = 0;
- on = 1;
if (gui_data.cpu_halted < 0) {
+ on = 1;
on_rgb = 0x111111;
num1 = 16; // PPC
num2 = 16;
num3 = 10;
am = 3;
- } else {
+ } else if (gui_data.cpu_halted > 0) {
+ on = 1;
on_rgb = 0xcccc00;
num1 = gui_data.cpu_halted >= 10 ? 11 : -1;
num2 = gui_data.cpu_halted >= 10 ? (gui_data.cpu_halted / 10) % 10 : 11;