summaryrefslogtreecommitdiffstatshomepage
path: root/src/emu
diff options
context:
space:
mode:
author Miodrag Milanovic <mmicko@gmail.com>2011-10-04 09:58:07 +0000
committer Miodrag Milanovic <mmicko@gmail.com>2011-10-04 09:58:07 +0000
commit6730bf8cc77123a52c12cb05f8b6c23730438fc7 (patch)
tree7d0b55907810110677c474bc5e33616ef5efe61e /src/emu
parent9247583a1d71282540e24dbcefb1cb91aec2626d (diff)
Added a way to handle output for debug messages and debugger itself into octal too, and made
a few CPU's to give octal output by default. Note that for now just some functions things return octal, will add more, but since this change required clean compile better to put it sooner then later (no whatsnew)
Diffstat (limited to 'src/emu')
-rw-r--r--src/emu/cpu/i4004/i4004.c2
-rw-r--r--src/emu/cpu/i8008/i8008.c2
-rw-r--r--src/emu/cpu/pdp1/pdp1.c1
-rw-r--r--src/emu/cpu/pdp1/tx0.c2
-rw-r--r--src/emu/cpu/t11/t11.c2
-rw-r--r--src/emu/devcpu.c2
-rw-r--r--src/emu/devcpu.h3
-rw-r--r--src/emu/diexec.c1
-rw-r--r--src/emu/diexec.h2
-rw-r--r--src/emu/machine.c17
-rw-r--r--src/emu/machine.h1
-rw-r--r--src/emu/memory.c10
12 files changed, 38 insertions, 7 deletions
diff --git a/src/emu/cpu/i4004/i4004.c b/src/emu/cpu/i4004/i4004.c
index b529ba1ba9e..f81a33bad2c 100644
--- a/src/emu/cpu/i4004/i4004.c
+++ b/src/emu/cpu/i4004/i4004.c
@@ -616,6 +616,8 @@ CPU_GET_INFO( i4004 )
case DEVINFO_STR_VERSION: strcpy(info->s, "1.0"); break;
case DEVINFO_STR_SOURCE_FILE: strcpy(info->s, __FILE__); break;
case DEVINFO_STR_CREDITS: strcpy(info->s, "Copyright Miodrag Milanovic"); break;
+
+ case CPUINFO_IS_OCTAL: info->i = true; break;
}
}
diff --git a/src/emu/cpu/i8008/i8008.c b/src/emu/cpu/i8008/i8008.c
index bcc6b1672b6..ccb469f08e9 100644
--- a/src/emu/cpu/i8008/i8008.c
+++ b/src/emu/cpu/i8008/i8008.c
@@ -719,6 +719,8 @@ CPU_GET_INFO( i8008 )
case DEVINFO_STR_VERSION: strcpy(info->s, "1.0"); break;
case DEVINFO_STR_SOURCE_FILE: strcpy(info->s, __FILE__); break;
case DEVINFO_STR_CREDITS: strcpy(info->s, "Copyright Miodrag Milanovic"); break;
+
+ case CPUINFO_IS_OCTAL: info->i = true; break;
}
}
diff --git a/src/emu/cpu/pdp1/pdp1.c b/src/emu/cpu/pdp1/pdp1.c
index f77ebb0a06b..db4222c994d 100644
--- a/src/emu/cpu/pdp1/pdp1.c
+++ b/src/emu/cpu/pdp1/pdp1.c
@@ -1090,6 +1090,7 @@ CPU_GET_INFO( pdp1 )
case CPUINFO_STR_REGISTER + PDP1_IOC: sprintf(info->s, "IOC:%X", cpustate->ioc); break;
case CPUINFO_STR_REGISTER + PDP1_IOH: sprintf(info->s, "IOH:%X", cpustate->ioh); break;
case CPUINFO_STR_REGISTER + PDP1_IOS: sprintf(info->s, "IOS:%X", cpustate->ios); break;
+ case CPUINFO_IS_OCTAL: info->i = true; break;
}
}
diff --git a/src/emu/cpu/pdp1/tx0.c b/src/emu/cpu/pdp1/tx0.c
index e446a0ecde4..d780429808a 100644
--- a/src/emu/cpu/pdp1/tx0.c
+++ b/src/emu/cpu/pdp1/tx0.c
@@ -546,6 +546,7 @@ CPU_GET_INFO( tx0_64kw )
case CPUINFO_STR_REGISTER + TX0_CYCLE: sprintf(info->s, "CYCLE:%X", cpustate->cycle); break;
case CPUINFO_STR_REGISTER + TX0_IOH: sprintf(info->s, "IOH:%X", cpustate->ioh); break;
case CPUINFO_STR_REGISTER + TX0_IOS: sprintf(info->s, "IOS:%X", cpustate->ios); break;
+ case CPUINFO_IS_OCTAL: info->i = true; break;
}
}
@@ -672,6 +673,7 @@ CPU_GET_INFO( tx0_8kw )
case CPUINFO_STR_REGISTER + TX0_CYCLE: sprintf(info->s, "CYCLE:%X", cpustate->cycle); break;
case CPUINFO_STR_REGISTER + TX0_IOH: sprintf(info->s, "IOH:%X", cpustate->ioh); break;
case CPUINFO_STR_REGISTER + TX0_IOS: sprintf(info->s, "IOS:%X", cpustate->ios); break;
+ case CPUINFO_IS_OCTAL: info->i = true; break;
}
}
diff --git a/src/emu/cpu/t11/t11.c b/src/emu/cpu/t11/t11.c
index f89429ceb65..adc71681e3b 100644
--- a/src/emu/cpu/t11/t11.c
+++ b/src/emu/cpu/t11/t11.c
@@ -493,6 +493,8 @@ CPU_GET_INFO( t11 )
case CPUINFO_STR_REGISTER + T11_R3: sprintf(info->s, "R3:%04X", cpustate->reg[3].w.l); break;
case CPUINFO_STR_REGISTER + T11_R4: sprintf(info->s, "R4:%04X", cpustate->reg[4].w.l); break;
case CPUINFO_STR_REGISTER + T11_R5: sprintf(info->s, "R5:%04X", cpustate->reg[5].w.l); break;
+
+ case CPUINFO_IS_OCTAL: info->i = true; break;
}
}
diff --git a/src/emu/devcpu.c b/src/emu/devcpu.c
index 0442b4746f5..f5316297f1d 100644
--- a/src/emu/devcpu.c
+++ b/src/emu/devcpu.c
@@ -122,6 +122,8 @@ legacy_cpu_device::legacy_cpu_device(const machine_config &mconfig, device_type
// allocate memory for the token
m_token = global_alloc_array_clear(UINT8, tokenbytes);
+ // set hex or octal output
+ m_is_octal = get_legacy_int(CPUINFO_IS_OCTAL);
}
diff --git a/src/emu/devcpu.h b/src/emu/devcpu.h
index f77ce912609..67abb12e5aa 100644
--- a/src/emu/devcpu.h
+++ b/src/emu/devcpu.h
@@ -88,6 +88,9 @@ enum
CPUINFO_INT_SP = CPUINFO_INT_REGISTER + STATE_GENSP, // R/W: the current stack pointer value
CPUINFO_INT_PC = CPUINFO_INT_REGISTER + STATE_GENPC, // R/W: the current PC value
CPUINFO_INT_PREVIOUSPC = CPUINFO_INT_REGISTER + STATE_GENPCBASE, // R/W: the previous PC value
+
+ CPUINFO_IS_OCTAL = CPUINFO_INT_REGISTER + MAX_REGS - 2, // R/O: determine if default is octal or hexadecimal
+
CPUINFO_INT_REGISTER_LAST = CPUINFO_INT_REGISTER + MAX_REGS - 1,
CPUINFO_INT_CPU_SPECIFIC = 0x08000, // R/W: CPU-specific values start here
diff --git a/src/emu/diexec.c b/src/emu/diexec.c
index f72cb7d4049..bdbe0c9ca9d 100644
--- a/src/emu/diexec.c
+++ b/src/emu/diexec.c
@@ -80,6 +80,7 @@ device_execute_interface::device_execute_interface(const machine_config &mconfig
m_vblank_interrupt_screen(NULL),
m_timed_interrupt(NULL),
m_timed_interrupt_period(attotime::zero),
+ m_is_octal(false),
m_nextexec(NULL),
m_driver_irq(0),
m_timedint_timer(NULL),
diff --git a/src/emu/diexec.h b/src/emu/diexec.h
index 33cb3aff849..eeb1d9ab24a 100644
--- a/src/emu/diexec.h
+++ b/src/emu/diexec.h
@@ -160,6 +160,7 @@ public:
UINT64 attotime_to_cycles(attotime duration) const { return clocks_to_cycles(device().attotime_to_clocks(duration)); }
UINT32 input_lines() const { return execute_input_lines(); }
UINT32 default_irq_vector() const { return execute_default_irq_vector(); }
+ bool is_octal() const { return m_is_octal; }
// static inline configuration helpers
static void static_set_disable(device_t &device);
@@ -280,6 +281,7 @@ protected:
const char * m_vblank_interrupt_screen; // the screen that causes the VBLANK interrupt
device_interrupt_func m_timed_interrupt; // for interrupts not tied to VBLANK
attotime m_timed_interrupt_period; // period for periodic interrupts
+ bool m_is_octal; // to determine if messages/debugger will show octal or hex
// execution lists
device_execute_interface *m_nextexec; // pointer to the next device to execute, in order
diff --git a/src/emu/machine.c b/src/emu/machine.c
index 840a17591a0..c5b3eb14401 100644
--- a/src/emu/machine.c
+++ b/src/emu/machine.c
@@ -238,7 +238,7 @@ const char *running_machine::describe_context()
{
cpu_device *cpu = downcast<cpu_device *>(&executing->device());
if (cpu != NULL)
- m_context.printf("'%s' (%s)", cpu->tag(), core_i64_hex_format(cpu->pc(), cpu->space(AS_PROGRAM)->logaddrchars()));
+ m_context.printf("'%s' (%s)", cpu->tag(), core_i64_format(cpu->pc(), cpu->space(AS_PROGRAM)->logaddrchars(), cpu->is_octal()));
}
else
m_context.cpy("(no context)");
@@ -882,8 +882,21 @@ void running_machine::logfile_callback(running_machine &machine, const char *buf
machine.m_logfile->puts(buffer);
}
+//-------------------------------------------------
+// is_octal - returs if output should be hex or octal
+//-------------------------------------------------
-
+bool running_machine::is_octal()
+{
+ device_execute_interface *executing = m_scheduler.currently_executing();
+ if (executing != NULL)
+ {
+ cpu_device *cpu = downcast<cpu_device *>(&executing->device());
+ if (cpu != NULL)
+ return cpu->is_octal();
+ }
+ return false;
+}
/***************************************************************************
MEMORY REGIONS
***************************************************************************/
diff --git a/src/emu/machine.h b/src/emu/machine.h
index 04b65b410ac..6df3a803bb5 100644
--- a/src/emu/machine.h
+++ b/src/emu/machine.h
@@ -352,6 +352,7 @@ public:
int sample_rate() const { return m_sample_rate; }
bool save_or_load_pending() const { return m_saveload_pending_file; }
screen_device *first_screen() const { return primary_screen; }
+ bool is_octal();
// additional helpers
emu_options &options() const { return m_config.options(); }
diff --git a/src/emu/memory.c b/src/emu/memory.c
index 5e2e36642b7..cf7e713d4d7 100644
--- a/src/emu/memory.c
+++ b/src/emu/memory.c
@@ -934,8 +934,8 @@ private:
if (m_space.log_unmap() && !m_space.debugger_access())
logerror("%s: unmapped %s memory read from %s & %s\n",
m_space.machine().describe_context(), m_space.name(),
- core_i64_hex_format(m_space.byte_to_address(offset * sizeof(_UintType)), m_space.addrchars()),
- core_i64_hex_format(mask, 2 * sizeof(_UintType)));
+ core_i64_format(m_space.byte_to_address(offset * sizeof(_UintType)), m_space.addrchars(),m_space.machine().is_octal()),
+ core_i64_format(mask, 2 * sizeof(_UintType),m_space.machine().is_octal()));
return m_space.unmap();
}
@@ -1000,9 +1000,9 @@ private:
if (m_space.log_unmap() && !m_space.debugger_access())
logerror("%s: unmapped %s memory write to %s = %s & %s\n",
m_space.machine().describe_context(), m_space.name(),
- core_i64_hex_format(m_space.byte_to_address(offset * sizeof(_UintType)), m_space.addrchars()),
- core_i64_hex_format(data, 2 * sizeof(_UintType)),
- core_i64_hex_format(mask, 2 * sizeof(_UintType)));
+ core_i64_format(m_space.byte_to_address(offset * sizeof(_UintType)), m_space.addrchars(),m_space.machine().is_octal()),
+ core_i64_format(data, 2 * sizeof(_UintType),m_space.machine().is_octal()),
+ core_i64_format(mask, 2 * sizeof(_UintType),m_space.machine().is_octal()));
}
template<typename _UintType>