summaryrefslogtreecommitdiffstatshomepage
path: root/src/osd/modules/debugger/osx/memoryview.mm
diff options
context:
space:
mode:
Diffstat (limited to 'src/osd/modules/debugger/osx/memoryview.mm')
-rw-r--r--src/osd/modules/debugger/osx/memoryview.mm199
1 files changed, 139 insertions, 60 deletions
diff --git a/src/osd/modules/debugger/osx/memoryview.mm b/src/osd/modules/debugger/osx/memoryview.mm
index b2c512d094b..24521e81ba4 100644
--- a/src/osd/modules/debugger/osx/memoryview.mm
+++ b/src/osd/modules/debugger/osx/memoryview.mm
@@ -9,7 +9,6 @@
#include "emu.h"
#import "memoryview.h"
-#include "debug/debugcpu.h"
#include "debug/debugvw.h"
#include "util/xmlfile.h"
@@ -36,7 +35,7 @@
if (action == @selector(showChunkSize:))
{
- [item setState:((tag == memview->get_data_format()) ? NSOnState : NSOffState)];
+ [item setState:((tag == int(memview->get_data_format())) ? NSOnState : NSOffState)];
return YES;
}
else if (action == @selector(showPhysicalAddresses:))
@@ -58,6 +57,11 @@
{
return (memview->chunks_per_row() + [item tag]) > 0;
}
+ else if (action == @selector(showAddressRadix:))
+ {
+ [item setState:((memview->address_radix() == [item tag]) ? NSOnState : NSOffState)];
+ return YES;
+ }
else
{
return [super validateMenuItem:item];
@@ -68,7 +72,7 @@
- (NSSize)maximumFrameSize {
debug_view_xy max(0, 0);
debug_view_source const *source = view->source();
- for (debug_view_source const *source = view->first_source(); source != nullptr; source = source->next())
+ for (auto &source : view->source_list())
{
view->set_source(*source);
debug_view_xy const current = view->total_size();
@@ -101,19 +105,23 @@
- (int)selectedSubviewIndex {
debug_view_source const *source = view->source();
if (source != nullptr)
- return view->source_list().indexof(*source);
+ return view->source_index(*source);
else
return -1;
}
- (void)selectSubviewAtIndex:(int)index {
- int const selected = view->source_list().indexof(*view->source());
+ int const selected = [self selectedSubviewIndex];
if (selected != index)
{
- view->set_source(*view->source_list().find(index));
- if ([[self window] firstResponder] != self)
- view->set_cursor_visible(false);
+ const debug_view_source *source = view->source(index);
+ if (source != nullptr)
+ {
+ view->set_source(*source);
+ if ([[self window] firstResponder] != self)
+ view->set_cursor_visible(false);
+ }
}
}
@@ -139,23 +147,21 @@
- (BOOL)selectSubviewForSpace:(address_space *)space {
if (space == nullptr) return NO;
- debug_view_memory_source const *source = downcast<debug_view_memory_source const *>(view->first_source());
- while ((source != nullptr) && (source->space() != space))
- source = downcast<debug_view_memory_source *>(source->next());
- if (source != nullptr)
+ for (auto &ptr : view->source_list())
{
- if (view->source() != source)
+ debug_view_memory_source const *const source = downcast<debug_view_memory_source const *>(ptr.get());
+ if (source->space() == space)
{
- view->set_source(*source);
- if ([[self window] firstResponder] != self)
- view->set_cursor_visible(false);
+ if (view->source() != source)
+ {
+ view->set_source(*source);
+ if ([[self window] firstResponder] != self)
+ view->set_cursor_visible(false);
+ }
+ return YES;
}
- return YES;
- }
- else
- {
- return NO;
}
+ return NO;
}
@@ -175,7 +181,7 @@
- (IBAction)showChunkSize:(id)sender {
- downcast<debug_view_memory *>(view)->set_data_format([sender tag]);
+ downcast<debug_view_memory *>(view)->set_data_format(debug_view_memory::data_format([sender tag]));
}
@@ -183,6 +189,9 @@
downcast<debug_view_memory *>(view)->set_physical([sender tag]);
}
+- (IBAction)showAddressRadix:(id)sender {
+ downcast<debug_view_memory *>(view)->set_address_radix([sender tag]);
+}
- (IBAction)showReverseView:(id)sender {
downcast<debug_view_memory *>(view)->set_reverse([sender tag]);
@@ -203,55 +212,125 @@
- (void)saveConfigurationToNode:(util::xml::data_node *)node {
[super saveConfigurationToNode:node];
debug_view_memory *const memView = downcast<debug_view_memory *>(view);
- node->set_attribute_int("reverse", memView->reverse() ? 1 : 0);
- node->set_attribute_int("addressmode", memView->physical() ? 1 : 0);
- node->set_attribute_int("dataformat", memView->get_data_format());
- node->set_attribute_int("rowchunks", memView->chunks_per_row());
+ node->set_attribute_int(osd::debugger::ATTR_WINDOW_MEMORY_REVERSE_COLUMNS, memView->reverse() ? 1 : 0);
+ node->set_attribute_int(osd::debugger::ATTR_WINDOW_MEMORY_ADDRESS_MODE, memView->physical() ? 1 : 0);
+ node->get_attribute_int(osd::debugger::ATTR_WINDOW_MEMORY_ADDRESS_RADIX, memView->address_radix());
+ node->set_attribute_int(osd::debugger::ATTR_WINDOW_MEMORY_DATA_FORMAT, int(memView->get_data_format()));
+ node->set_attribute_int(osd::debugger::ATTR_WINDOW_MEMORY_ROW_CHUNKS, memView->chunks_per_row());
}
- (void)restoreConfigurationFromNode:(util::xml::data_node const *)node {
[super restoreConfigurationFromNode:node];
debug_view_memory *const memView = downcast<debug_view_memory *>(view);
- memView->set_reverse(0 != node->get_attribute_int("reverse", memView->reverse() ? 1 : 0));
- memView->set_physical(0 != node->get_attribute_int("addressmode", memView->physical() ? 1 : 0));
- memView->set_data_format(node->get_attribute_int("dataformat", memView->get_data_format()));
- memView->set_chunks_per_row(node->get_attribute_int("rowchunks", memView->chunks_per_row()));
+ memView->set_reverse(0 != node->get_attribute_int(osd::debugger::ATTR_WINDOW_MEMORY_REVERSE_COLUMNS, memView->reverse() ? 1 : 0));
+ memView->set_physical(0 != node->get_attribute_int(osd::debugger::ATTR_WINDOW_MEMORY_ADDRESS_MODE, memView->physical() ? 1 : 0));
+ memView->set_address_radix(node->get_attribute_int(osd::debugger::ATTR_WINDOW_MEMORY_ADDRESS_RADIX, memView->address_radix()));
+ memView->set_data_format(debug_view_memory::data_format(node->get_attribute_int(osd::debugger::ATTR_WINDOW_MEMORY_DATA_FORMAT, int(memView->get_data_format()))));
+ memView->set_chunks_per_row(node->get_attribute_int(osd::debugger::ATTR_WINDOW_MEMORY_ROW_CHUNKS, memView->chunks_per_row()));
}
- (void)insertActionItemsInMenu:(NSMenu *)menu atIndex:(NSInteger)index {
- NSInteger tag;
- for (tag = 1; tag <= 8; tag <<= 1) {
- NSString *title = [NSString stringWithFormat:@"%ld-byte Chunks", (long)tag];
- NSMenuItem *chunkItem = [menu insertItemWithTitle:title
- action:@selector(showChunkSize:)
- keyEquivalent:[NSString stringWithFormat:@"%ld", (long)tag]
- atIndex:index++];
- [chunkItem setTarget:self];
- [chunkItem setTag:tag];
- }
+ NSMenuItem *chunkItem1 = [menu insertItemWithTitle:@"1-byte Chunks (Hex)"
+ action:@selector(showChunkSize:)
+ keyEquivalent:@"1"
+ atIndex:index++];
+ [chunkItem1 setTarget:self];
+ [chunkItem1 setTag:int(debug_view_memory::data_format::HEX_8BIT)];
- NSMenuItem *chunkItem = [menu insertItemWithTitle:@"32-bit floats"
- action:@selector(showChunkSize:)
- keyEquivalent:@"F"
- atIndex:index++];
- [chunkItem setTarget:self];
- [chunkItem setTag:9];
-
- NSMenuItem *chunkItem2 = [menu insertItemWithTitle:@"64-bit floats"
- action:@selector(showChunkSize:)
- keyEquivalent:@"D"
- atIndex:index++];
+ NSMenuItem *chunkItem2 = [menu insertItemWithTitle:@"2-byte Chunks (Hex)"
+ action:@selector(showChunkSize:)
+ keyEquivalent:@"2"
+ atIndex:index++];
[chunkItem2 setTarget:self];
- [chunkItem2 setTag:10];
+ [chunkItem2 setTag:int(debug_view_memory::data_format::HEX_16BIT)];
+
+ NSMenuItem *chunkItem4 = [menu insertItemWithTitle:@"4-byte Chunks (Hex)"
+ action:@selector(showChunkSize:)
+ keyEquivalent:@"4"
+ atIndex:index++];
+ [chunkItem4 setTarget:self];
+ [chunkItem4 setTag:int(debug_view_memory::data_format::HEX_32BIT)];
+
+ NSMenuItem *chunkItem8 = [menu insertItemWithTitle:@"8-byte Chunks (Hex)"
+ action:@selector(showChunkSize:)
+ keyEquivalent:@"8"
+ atIndex:index++];
+ [chunkItem8 setTarget:self];
+ [chunkItem8 setTag:int(debug_view_memory::data_format::HEX_64BIT)];
+
+ NSMenuItem *chunkItem12 = [menu insertItemWithTitle:@"1-byte Chunks (Octal)"
+ action:@selector(showChunkSize:)
+ keyEquivalent:@"3"
+ atIndex:index++];
+ [chunkItem12 setTarget:self];
+ [chunkItem12 setTag:int(debug_view_memory::data_format::OCTAL_8BIT)];
+
+ NSMenuItem *chunkItem13 = [menu insertItemWithTitle:@"2-byte Chunks (Octal)"
+ action:@selector(showChunkSize:)
+ keyEquivalent:@"5"
+ atIndex:index++];
+ [chunkItem13 setTarget:self];
+ [chunkItem13 setTag:int(debug_view_memory::data_format::OCTAL_16BIT)];
+
+ NSMenuItem *chunkItem14 = [menu insertItemWithTitle:@"4-byte Chunks (Octal)"
+ action:@selector(showChunkSize:)
+ keyEquivalent:@"7"
+ atIndex:index++];
+ [chunkItem14 setTarget:self];
+ [chunkItem14 setTag:int(debug_view_memory::data_format::OCTAL_32BIT)];
+
+ NSMenuItem *chunkItem15 = [menu insertItemWithTitle:@"8-byte Chunks (Octal)"
+ action:@selector(showChunkSize:)
+ keyEquivalent:@"9"
+ atIndex:index++];
+ [chunkItem15 setTarget:self];
+ [chunkItem15 setTag:int(debug_view_memory::data_format::OCTAL_64BIT)];
+
+ NSMenuItem *chunkItem9 = [menu insertItemWithTitle:@"32-bit Floating Point"
+ action:@selector(showChunkSize:)
+ keyEquivalent:@"F"
+ atIndex:index++];
+ [chunkItem9 setTarget:self];
+ [chunkItem9 setTag:int(debug_view_memory::data_format::FLOAT_32BIT)];
+
+ NSMenuItem *chunkItem10 = [menu insertItemWithTitle:@"64-bit Floating Point"
+ action:@selector(showChunkSize:)
+ keyEquivalent:@"D"
+ atIndex:index++];
+ [chunkItem10 setTarget:self];
+ [chunkItem10 setTag:int(debug_view_memory::data_format::FLOAT_64BIT)];
+
+ NSMenuItem *chunkItem11 = [menu insertItemWithTitle:@"80-bit Floating Point"
+ action:@selector(showChunkSize:)
+ keyEquivalent:@"E"
+ atIndex:index++];
+ [chunkItem11 setTarget:self];
+ [chunkItem11 setTag:int(debug_view_memory::data_format::FLOAT_80BIT)];
+
+ [menu insertItem:[NSMenuItem separatorItem] atIndex:index++];
+
+ NSMenuItem *hexadecimalItem = [menu insertItemWithTitle:@"Hexadecimal Addresses"
+ action:@selector(showAddressRadix:)
+ keyEquivalent:@"H"
+ atIndex:index++];
+ [hexadecimalItem setTarget:self];
+ [hexadecimalItem setTag:16];
+
+ NSMenuItem *decimalItem = [menu insertItemWithTitle:@"Decimal Addresses"
+ action:@selector(showAddressRadix:)
+ keyEquivalent:@""
+ atIndex:index++];
+ [decimalItem setTarget:self];
+ [decimalItem setTag:10];
- NSMenuItem *chunkItem3 = [menu insertItemWithTitle:@"80-bit floats"
- action:@selector(showChunkSize:)
- keyEquivalent:@"E"
- atIndex:index++];
- [chunkItem3 setTarget:self];
- [chunkItem3 setTag:11];
+ NSMenuItem *octalItem = [menu insertItemWithTitle:@"Octal Addresses"
+ action:@selector(showAddressRadix:)
+ keyEquivalent:@"O"
+ atIndex:index++];
+ [octalItem setTarget:self];
+ [octalItem setTag:8];
[menu insertItem:[NSMenuItem separatorItem] atIndex:index++];
@@ -299,12 +378,12 @@
- (void)insertSubviewItemsInMenu:(NSMenu *)menu atIndex:(NSInteger)index {
- for (const debug_view_source *source = view->source_list().first(); source != nullptr; source = source->next())
+ for (auto &source : view->source_list())
{
[[menu insertItemWithTitle:[NSString stringWithUTF8String:source->name()]
action:NULL
keyEquivalent:@""
- atIndex:index++] setTag:view->source_list().indexof(*source)];
+ atIndex:index++] setTag:view->source_index(*source)];
}
if (index < [menu numberOfItems])
[menu insertItem:[NSMenuItem separatorItem] atIndex:index++];