Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
24 commits
Select commit Hold shift + click to select a range
648ad25
Better HexViewer and memory view
voytas Dec 12, 2025
b69be26
Simplify HexViewerRow property ownership resolutions
voytas Dec 15, 2025
9367fb1
HexViewer improvements
voytas Jan 21, 2026
bb85c39
Handle go to address command
voytas Jan 23, 2026
23b2c63
Add context menu to HexViewer
voytas Jan 24, 2026
4608411
Refactor overlays
voytas Jan 24, 2026
659ab0c
Improve overlays
voytas Jan 24, 2026
45ec42e
Add drag and drop, refactor overlays
voytas Jan 24, 2026
75f760f
Make overlay methods and properties private, clean up whitespace in o…
voytas Jan 24, 2026
7e688a1
Make HexViewerHeader public and update property access modifiers
voytas Jan 24, 2026
93662ff
Add clipboard support and handling for selected bytes in MemoryViewModel
voytas Jan 24, 2026
05c5b7e
Merge remote-tracking branch 'origin/main' into improved-hex-viewer
voytas Jan 24, 2026
adc8181
Fix merge issue
voytas Jan 24, 2026
25e7f34
Extract ZX Spectrum ASCII conversion logic to `ZxAscii` utility class
voytas Jan 24, 2026
73267c6
Fix ZxAscii.ToString range check for printable characters
voytas Jan 24, 2026
ccc5e24
Make `CopyHex` and `CopyAscii` async; fix clipboard handling and byte…
voytas Jan 24, 2026
3e04351
Formatting
voytas Jan 24, 2026
89446c4
Merge remote-tracking branch 'origin/main' into improved-hex-viewer
voytas Jan 24, 2026
cbaf3b8
Add custom ASCII formatting support to HexViewer and integrate in Mem…
voytas Jan 24, 2026
05d805f
HexViewer improvements
voytas Jan 26, 2026
fbffce4
Merge branch 'main' into improved-hex-viewer
voytas Jan 26, 2026
896c860
Remove overlays and commands for GoTo and Find in MemoryView; replace…
voytas Jan 27, 2026
f9aee24
Enhance MemoryView search functionality: support mixed hex and text q…
voytas Jan 27, 2026
32f8e95
Replace `HexNumberParser` with new `Hex` utility, update usages, and …
voytas Jan 29, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions Directory.Packages.props
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,7 @@
<PackageVersion Include="SkiaSharp" Version="3.116.1" />
<PackageVersion Include="SkiaSharp.NativeAssets.Linux" Version="3.116.1" />
<PackageVersion Include="System.CommandLine" Version="2.0.2" />
<PackageVersion Include="System.Reactive" Version="6.1.0" />
<PackageVersion Include="System.Text.Json" Version="10.0.0" />
<PackageVersion Include="xunit.runner.visualstudio" Version="3.1.5" />
<PackageVersion Include="xunit.v3" Version="3.2.2" />
Expand Down
2 changes: 1 addition & 1 deletion src/Spectron.Debugger/Breakpoints/BreakpointHandler.cs
Original file line number Diff line number Diff line change
Expand Up @@ -69,7 +69,7 @@ private void BeforeInstruction(Word pc)
BreakpointHit?.Invoke(this, new BreakpointHitEventArgs(_previousAddress));
}

private void MemoryOnMemoryUpdated(Word address)
private void MemoryOnMemoryUpdated(Word address, byte value)
{
IsBreakpointHit = BreakpointManager.IsMemoryBreakpointHit(address, _emulator.Memory);

Expand Down
6 changes: 6 additions & 0 deletions src/Spectron.Debugger/Controls/Hex/DefaultAsciiFormatter.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
namespace OldBit.Spectron.Debugger.Controls.Hex;

public sealed class DefaultAsciiFormatter : IAsciiFormatter
{
public char Format(byte b) => b is >= 32 and <= 126 ? (char)b : '.';
}
10 changes: 10 additions & 0 deletions src/Spectron.Debugger/Controls/Hex/HexCellClickedEventArgs.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
namespace OldBit.Spectron.Debugger.Controls.Hex;

internal sealed class HexCellClickedEventArgs(int rowIndex, int position, bool isShiftPressed) : EventArgs
{
internal int Position { get; } = position;

internal int RowIndex { get; } = rowIndex;

internal bool IsShiftPressed { get; } = isShiftPressed;
}
27 changes: 27 additions & 0 deletions src/Spectron.Debugger/Controls/Hex/HexViewer.axaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
<Styles xmlns="https://github.com/avaloniaui"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:hex="clr-namespace:OldBit.Spectron.Debugger.Controls.Hex">
<Styles.Resources>
<ResourceDictionary>
<ResourceDictionary.ThemeDictionaries>
<ResourceDictionary x:Key="Dark"/>
<ResourceDictionary x:Key="Default"/>
</ResourceDictionary.ThemeDictionaries>
</ResourceDictionary>
</Styles.Resources>

<Style Selector="hex|HexViewer">
<Setter Property="Foreground" Value="{DynamicResource SystemBaseMediumHighColor}"/>
<Setter Property="FontFamily" Value="Menlo, Consolas, Courier New, DejaVu Sans Mono"/>
<Setter Property="FontSize" Value="14"/>
</Style>

<Style Selector="hex|HexViewerRow">
<Setter Property="SelectedBackground" Value="{DynamicResource SystemAccentColor}"/>
<Setter Property="OffsetForeground" Value="{DynamicResource SystemAccentColor}"/>
</Style>

<Style Selector="hex|HexViewerHeader">
<Setter Property="Foreground" Value="{DynamicResource SystemAccentColor}"/>
</Style>
</Styles>
Loading