From f2ba598d3df181601d8bdf66f5df391b287bc445 Mon Sep 17 00:00:00 2001 From: Juan Segura Date: Fri, 2 May 2025 21:09:05 +0200 Subject: [PATCH] Bug #17: Breakpoints in included files are ignored --- CoreSpectrum/Hardware/SpectrumBase.cs | 1 - ZXBStudio/BuildSystem/ZXCodeFile.cs | 8 +++--- ZXBStudio/BuildSystem/ZXProjectBuilder.cs | 33 ++++++++++++++++++----- ZXBStudio/Dialogs/ZXAboutDialog.axaml.cs | 4 +-- 4 files changed, 33 insertions(+), 13 deletions(-) diff --git a/CoreSpectrum/Hardware/SpectrumBase.cs b/CoreSpectrum/Hardware/SpectrumBase.cs index 2908fe2..13cc41d 100644 --- a/CoreSpectrum/Hardware/SpectrumBase.cs +++ b/CoreSpectrum/Hardware/SpectrumBase.cs @@ -363,7 +363,6 @@ public virtual void ReleaseKey(SpectrumKeys Key) protected virtual void z80_BeforeInstructionFetch(object? sender, Konamiman.Z80dotNet.BeforeInstructionFetchEventArgs e) { var bp = _breakpoints[_z80.Registers.PC]; - if (bp == null) return; diff --git a/ZXBStudio/BuildSystem/ZXCodeFile.cs b/ZXBStudio/BuildSystem/ZXCodeFile.cs index 1df182b..4e5c53f 100644 --- a/ZXBStudio/BuildSystem/ZXCodeFile.cs +++ b/ZXBStudio/BuildSystem/ZXCodeFile.cs @@ -100,7 +100,7 @@ private string GetSourceLine(int lineNum, string line) return $"file__{FileGuid}__{lineNum}:\n{line}"; } - public void CreateBuildFile(IEnumerable AllFiles) + public void CreateBuildFile(IEnumerable AllFiles, TextWriter textWriter) { string content = Content; string[] lines = content.Replace("\r", "").Split("\n"); @@ -238,7 +238,7 @@ public void CreateBuildFile(IEnumerable AllFiles) var file = regInclude.Match(line).Groups[1].Value; var absoluteFile = Path.GetFullPath(Path.Combine(Directory, file)); - var codeFile = AllFiles.FirstOrDefault(f => f.AbsolutePath == absoluteFile); + var codeFile = AllFiles.FirstOrDefault(f => f.AbsolutePath.ToLower() == absoluteFile.ToLower()); if (codeFile != null) line = line.Replace(file, Path.Combine(codeFile.Directory, codeFile.TempFileName)); @@ -279,8 +279,8 @@ public void CreateBuildFile(IEnumerable AllFiles) } else dotrim = false; - } - + } + textWriter.WriteLine($"Crating temp file: {TempFileName}"); File.WriteAllText(Path.Combine(Directory, TempFileName), sb.ToString()); } } diff --git a/ZXBStudio/BuildSystem/ZXProjectBuilder.cs b/ZXBStudio/BuildSystem/ZXProjectBuilder.cs index 37ad8cd..9309a28 100644 --- a/ZXBStudio/BuildSystem/ZXProjectBuilder.cs +++ b/ZXBStudio/BuildSystem/ZXProjectBuilder.cs @@ -278,6 +278,8 @@ private static void CheckNextCreator() public static ZXProgram? BuildDebug(TextWriter OutputLogWritter) { + string cmd = ""; + try { if (ZXProjectManager.Current == null) @@ -332,7 +334,7 @@ private static void CheckNextCreator() foreach (var file in files) { - file.CreateBuildFile(files); + file.CreateBuildFile(files, OutputLogWritter); } OutputLogWritter.WriteLine("Building program map..."); @@ -346,10 +348,12 @@ private static void CheckNextCreator() return null; } + cmd = $"\"{Path.Combine(codeFile.Directory, codeFile.TempFileName)}\" -M MEMORY_MAP " + args; + OutputLogWritter.WriteLine("zxbc "+cmd); var proc = Process.Start( new ProcessStartInfo( - Path.GetFullPath(ZXOptions.Current.ZxbcPath), - $"\"{Path.Combine(codeFile.Directory, codeFile.TempFileName)}\" -M MEMORY_MAP " + args) { WorkingDirectory = project.ProjectPath, RedirectStandardError = true, CreateNoWindow = true }); + Path.GetFullPath(ZXOptions.Current.ZxbcPath),cmd) + { WorkingDirectory = project.ProjectPath, RedirectStandardError = true, CreateNoWindow = true }); OutputProcessLog(OutputLogWritter, proc, out logOutput); @@ -412,8 +416,17 @@ private static void CheckNextCreator() var varMap = new ZXVariableMap(varFile, mapFile, bMap); OutputLogWritter.WriteLine("Building disassembly..."); + cmd = $"\"{Path.Combine(codeFile.Directory, codeFile.TempFileName)}\" -A " + args; + OutputLogWritter.WriteLine(cmd); - proc = Process.Start(new ProcessStartInfo(Path.GetFullPath(ZXOptions.Current.ZxbcPath), $"\"{Path.Combine(codeFile.Directory, codeFile.TempFileName)}\" -A " + args) { WorkingDirectory = project.ProjectPath, RedirectStandardError = true, CreateNoWindow = true }); + proc = Process.Start( + new ProcessStartInfo( + Path.GetFullPath(ZXOptions.Current.ZxbcPath), cmd) + { + WorkingDirectory = project.ProjectPath, + RedirectStandardError = true, + CreateNoWindow = true + }); OutputProcessLog(OutputLogWritter, proc, out logOutput); @@ -431,9 +444,17 @@ private static void CheckNextCreator() string disFile = Path.Combine(project.ProjectPath, Path.GetFileNameWithoutExtension(Path.Combine(codeFile.Directory, codeFile.TempFileName)) + ".asm"); var disasFile = new ZXCodeFile(disFile, true); - disasFile.CreateBuildFile(files); + disasFile.CreateBuildFile(files, OutputLogWritter); - proc = Process.Start(new ProcessStartInfo(Path.GetFullPath(ZXOptions.Current.ZxbasmPath), $"\"{Path.Combine(disasFile.Directory, disasFile.TempFileName)}\" -M MEMORY_MAP") { WorkingDirectory = project.ProjectPath, RedirectStandardError = true, CreateNoWindow = true }); + cmd = $"\"{Path.Combine(disasFile.Directory, disasFile.TempFileName)}\" -M MEMORY_MAP"; + proc = Process.Start( + new ProcessStartInfo( + Path.GetFullPath(ZXOptions.Current.ZxbasmPath), cmd) + { + WorkingDirectory = project.ProjectPath, + RedirectStandardError = true, + CreateNoWindow = true + }); OutputProcessLog(OutputLogWritter, proc, out logOutput); diff --git a/ZXBStudio/Dialogs/ZXAboutDialog.axaml.cs b/ZXBStudio/Dialogs/ZXAboutDialog.axaml.cs index a5ee310..520885e 100644 --- a/ZXBStudio/Dialogs/ZXAboutDialog.axaml.cs +++ b/ZXBStudio/Dialogs/ZXAboutDialog.axaml.cs @@ -12,8 +12,8 @@ public ZXAboutDialog() { InitializeComponent(); - txtBuild.Text = "1.6.0-beta1"; - txtDate.Text = "2025-04-26"; + txtBuild.Text = "1.6.0-beta2"; + txtDate.Text = "2025-05-02"; btnClose.Click += BtnClose_Click;