From ae685eabd60293ecd33849e10423b305b9148865 Mon Sep 17 00:00:00 2001 From: Marc Parsons Date: Tue, 28 Apr 2026 20:09:03 +0100 Subject: [PATCH] Can somewhat load from audio --- Core/Cpu/Z80.cs | 8 ++ Core/Io/IO_Bus.cs | 12 ++- Core/Io/TapManager.cs | 74 +++++-------- Desktop/DebuggerForm.cs | 2 + Desktop/Form1.Designer.cs | 97 ++++++++++-------- Desktop/Form1.cs | 39 +++++-- .../ROMS/Snapshot/Dizzy - Trasure Island.sna | Bin 0 -> 49179 bytes 7 files changed, 127 insertions(+), 105 deletions(-) create mode 100644 Desktop/ROMS/Snapshot/Dizzy - Trasure Island.sna diff --git a/Core/Cpu/Z80.cs b/Core/Cpu/Z80.cs index dc68aa4..2bddbad 100644 --- a/Core/Cpu/Z80.cs +++ b/Core/Cpu/Z80.cs @@ -1352,6 +1352,10 @@ namespace Core.Cpu case 0x4D: // RETI Does not affect IFF1 or IFF2 PC = Pop(); return 14; + case 0x51: // OUT (C), D + // BC.Word goes to the address bus, D (DE.High) goes to the data bus + _simpleIoBus.WritePort(BC.Word, DE.High); + return 12; // 2 M-cycles, 12 T-States case 0x53: // LD (nn), DE ushort dest53 = FetchWord(); WriteMemory(dest53, DE.Low); @@ -1372,6 +1376,10 @@ namespace Core.Cpu AF.Low = flags58; return 12; + case 0x59: // OUT (C), E + // BC.Word goes to the address bus, E (DE.Low) goes to the data bus + _simpleIoBus.WritePort(BC.Word, DE.Low); + return 12; // 2 M-cycles, 12 T-States case 0x5B: // LD DE, (nn) ushort src5B = FetchWord(); DE.Low = ReadMemory(src5B); diff --git a/Core/Io/IO_Bus.cs b/Core/Io/IO_Bus.cs index d0c88a2..9c9f2b1 100644 --- a/Core/Io/IO_Bus.cs +++ b/Core/Io/IO_Bus.cs @@ -19,7 +19,7 @@ namespace Core.Io public byte ReadPort(ushort portAddress) { // The Spectrum ULA responds to any even port address (where the lowest bit is 0) - if ((portAddress & 0x01) == 0) + if ((portAddress & 0x01) == 0) //Port 0xFE) { byte highByte = (byte)(portAddress >> 8); // The B register! byte result = 0xFF; // Start assuming no keys are pressed @@ -40,11 +40,17 @@ namespace Core.Io //return result; // The top 3 bits (5, 6, 7) are unused by the keyboard and usually return 1 on a real Spectrum - return (byte)(result | 0xE0); + return (byte)(result | 0xA0); + } + + // Kempston Joystick Port + if ((portAddress & 0xFF) == 0x1F) + { + return 0x00; // 0x00 means no joystick connected/no buttons pressed } // Return 0xFF for unhandled ports - return 0xFF; + return 0x00; } public void WritePort(ushort portAddress, byte portValue) diff --git a/Core/Io/TapManager.cs b/Core/Io/TapManager.cs index c59b6b7..bdc4722 100644 --- a/Core/Io/TapManager.cs +++ b/Core/Io/TapManager.cs @@ -46,6 +46,11 @@ namespace Core.Io } } + public void Stop() + { + _state = TapeState.Idle; + } + private void LoadNextBlock() { if (_blocks.Count == 0) @@ -142,7 +147,8 @@ namespace Core.Io break; case TapeState.Pause: - LoadNextBlock(); + _state = TapeState.Idle; + //LoadNextBlock(); break; } } @@ -157,54 +163,28 @@ namespace Core.Io } // --- FAST LOAD METHODS (For ROM Hijack) --- + //public byte[] GetNextBlock() + //{ + // return _blocks.Count > 0 ? _blocks.Dequeue() : null; + //} + + //public bool HasBlocks => _blocks.Count > 0; + // Change this line: + public bool HasBlocks => _blocks.Count > 0 || _currentBlock != null; + public byte[] GetNextBlock() { + // If a block is loaded into the tape deck, yank it immediately + if (_currentBlock != null) + { + byte[] blockToReturn = _currentBlock; + _state = TapeState.Idle; // Ensure the tape deck is stopped + _currentBlock = null; + return blockToReturn; + } + + // Otherwise, pull directly from the queue return _blocks.Count > 0 ? _blocks.Dequeue() : null; } - - public bool HasBlocks => _blocks.Count > 0; } -} - - - - -//using System; -//using System.Collections.Generic; - -//namespace Core.Io -//{ -// public class TapManager -// { -// private Queue _blocks = new Queue(); - - -// public void LoadTapData(byte[] fileData) -// { -// _blocks.Clear(); -// int position = 0; - -// while (position < fileData.Length) -// { -// // 1. Read the 16-bit block length (Little Endian) -// int blockLength = fileData[position] | (fileData[position + 1] << 8); -// position += 2; - -// // 2. Extract the block payload -// byte[] blockData = new byte[blockLength]; -// Array.Copy(fileData, position, blockData, 0, blockLength); -// position += blockLength; - -// // 3. Queue it up -// _blocks.Enqueue(blockData); -// } -// } - -// public byte[] GetNextBlock() -// { -// return _blocks.Count > 0 ? _blocks.Dequeue() : null; -// } - -// public bool HasBlocks => _blocks.Count > 0; -// } -//} +} \ No newline at end of file diff --git a/Desktop/DebuggerForm.cs b/Desktop/DebuggerForm.cs index 2602a3e..df416af 100644 --- a/Desktop/DebuggerForm.cs +++ b/Desktop/DebuggerForm.cs @@ -266,6 +266,8 @@ namespace Desktop mnemonic = $"LD E, 0x{val1E:X2}"; instructionLength = 2; break; + case 0x1F: mnemonic = $"RRA"; + break; case 0x20: sbyte jrOffset = (sbyte)_memoryBus.Read((ushort)(currentPc + 1)); ushort destination = (ushort)(currentPc + 2 + jrOffset); diff --git a/Desktop/Form1.Designer.cs b/Desktop/Form1.Designer.cs index 0a8fef2..99d3316 100644 --- a/Desktop/Form1.Designer.cs +++ b/Desktop/Form1.Designer.cs @@ -36,24 +36,25 @@ sNAToolStripMenuItem1 = new ToolStripMenuItem(); tAPToolStripMenuItem = new ToolStripMenuItem(); sNAToolStripMenuItem = new ToolStripMenuItem(); + saveSnapshotToolStripMenuItem = new ToolStripMenuItem(); exitToolStripMenuItem = new ToolStripMenuItem(); - viewToolStripMenuItem = new ToolStripMenuItem(); - debuggerToolStripMenuItem = new ToolStripMenuItem(); machineToolStripMenuItem = new ToolStripMenuItem(); runToolStripMenuItem = new ToolStripMenuItem(); resetToolStripMenuItem = new ToolStripMenuItem(); stepToolStripMenuItem = new ToolStripMenuItem(); resetToolStripMenuItem1 = new ToolStripMenuItem(); + viewToolStripMenuItem = new ToolStripMenuItem(); + debuggerToolStripMenuItem = new ToolStripMenuItem(); optionsToolStripMenuItem = new ToolStripMenuItem(); HighSpeedToolStripMenuItem = new ToolStripMenuItem(); - saveSnapshotToolStripMenuItem = new ToolStripMenuItem(); + playTapeToolStripMenuItem = new ToolStripMenuItem(); menuStrip1.SuspendLayout(); SuspendLayout(); // // menuStrip1 // menuStrip1.ImageScalingSize = new Size(24, 24); - menuStrip1.Items.AddRange(new ToolStripItem[] { fileToolStripMenuItem, machineToolStripMenuItem, viewToolStripMenuItem, optionsToolStripMenuItem }); + menuStrip1.Items.AddRange(new ToolStripItem[] { fileToolStripMenuItem, machineToolStripMenuItem, viewToolStripMenuItem, optionsToolStripMenuItem, playTapeToolStripMenuItem }); menuStrip1.Location = new Point(0, 0); menuStrip1.Name = "menuStrip1"; menuStrip1.Padding = new Padding(5, 2, 0, 2); @@ -108,6 +109,13 @@ sNAToolStripMenuItem.Text = "SNA"; sNAToolStripMenuItem.Click += openSNAToolStripMenuItem_Click; // + // saveSnapshotToolStripMenuItem + // + saveSnapshotToolStripMenuItem.Name = "saveSnapshotToolStripMenuItem"; + saveSnapshotToolStripMenuItem.Size = new Size(224, 26); + saveSnapshotToolStripMenuItem.Text = "Save Snapshot"; + saveSnapshotToolStripMenuItem.Click += SaveSNAMenuItem_Click; + // // exitToolStripMenuItem // exitToolStripMenuItem.Name = "exitToolStripMenuItem"; @@ -115,6 +123,41 @@ exitToolStripMenuItem.Text = "Exit"; exitToolStripMenuItem.Click += btnExit_Click; // + // machineToolStripMenuItem + // + machineToolStripMenuItem.DropDownItems.AddRange(new ToolStripItem[] { runToolStripMenuItem, resetToolStripMenuItem, stepToolStripMenuItem, resetToolStripMenuItem1 }); + machineToolStripMenuItem.Name = "machineToolStripMenuItem"; + machineToolStripMenuItem.Size = new Size(79, 24); + machineToolStripMenuItem.Text = "Machine"; + // + // runToolStripMenuItem + // + runToolStripMenuItem.Name = "runToolStripMenuItem"; + runToolStripMenuItem.Size = new Size(129, 26); + runToolStripMenuItem.Text = "Run"; + runToolStripMenuItem.Click += btnRun_Click; + // + // resetToolStripMenuItem + // + resetToolStripMenuItem.Name = "resetToolStripMenuItem"; + resetToolStripMenuItem.Size = new Size(129, 26); + resetToolStripMenuItem.Text = "Pause"; + resetToolStripMenuItem.Click += btnPause_Click; + // + // stepToolStripMenuItem + // + stepToolStripMenuItem.Name = "stepToolStripMenuItem"; + stepToolStripMenuItem.Size = new Size(129, 26); + stepToolStripMenuItem.Text = "Step"; + stepToolStripMenuItem.Click += btnStep_Click; + // + // resetToolStripMenuItem1 + // + resetToolStripMenuItem1.Name = "resetToolStripMenuItem1"; + resetToolStripMenuItem1.Size = new Size(129, 26); + resetToolStripMenuItem1.Text = "Reset"; + resetToolStripMenuItem1.Click += btnReset_Click; + // // viewToolStripMenuItem // viewToolStripMenuItem.DropDownItems.AddRange(new ToolStripItem[] { debuggerToolStripMenuItem }); @@ -129,41 +172,6 @@ debuggerToolStripMenuItem.Text = "Debugger"; debuggerToolStripMenuItem.Click += openDebuggerToolStripMenuItem_Click; // - // machineToolStripMenuItem - // - machineToolStripMenuItem.DropDownItems.AddRange(new ToolStripItem[] { runToolStripMenuItem, resetToolStripMenuItem, stepToolStripMenuItem, resetToolStripMenuItem1 }); - machineToolStripMenuItem.Name = "machineToolStripMenuItem"; - machineToolStripMenuItem.Size = new Size(79, 24); - machineToolStripMenuItem.Text = "Machine"; - // - // runToolStripMenuItem - // - runToolStripMenuItem.Name = "runToolStripMenuItem"; - runToolStripMenuItem.Size = new Size(224, 26); - runToolStripMenuItem.Text = "Run"; - runToolStripMenuItem.Click += btnRun_Click; - // - // resetToolStripMenuItem - // - resetToolStripMenuItem.Name = "resetToolStripMenuItem"; - resetToolStripMenuItem.Size = new Size(224, 26); - resetToolStripMenuItem.Text = "Pause"; - resetToolStripMenuItem.Click += btnPause_Click; - // - // stepToolStripMenuItem - // - stepToolStripMenuItem.Name = "stepToolStripMenuItem"; - stepToolStripMenuItem.Size = new Size(224, 26); - stepToolStripMenuItem.Text = "Step"; - stepToolStripMenuItem.Click += btnStep_Click; - // - // resetToolStripMenuItem1 - // - resetToolStripMenuItem1.Name = "resetToolStripMenuItem1"; - resetToolStripMenuItem1.Size = new Size(224, 26); - resetToolStripMenuItem1.Text = "Reset"; - resetToolStripMenuItem1.Click += btnReset_Click; - // // optionsToolStripMenuItem // optionsToolStripMenuItem.DropDownItems.AddRange(new ToolStripItem[] { HighSpeedToolStripMenuItem }); @@ -178,12 +186,12 @@ HighSpeedToolStripMenuItem.Text = "High Speed"; HighSpeedToolStripMenuItem.Click += btnHighSpeedToggle_Click; // - // saveSnapshotToolStripMenuItem + // playTapeToolStripMenuItem // - saveSnapshotToolStripMenuItem.Name = "saveSnapshotToolStripMenuItem"; - saveSnapshotToolStripMenuItem.Size = new Size(224, 26); - saveSnapshotToolStripMenuItem.Text = "Save Snapshot"; - saveSnapshotToolStripMenuItem.Click += SaveSNAMenuItem_Click; + playTapeToolStripMenuItem.Name = "playTapeToolStripMenuItem"; + playTapeToolStripMenuItem.Size = new Size(85, 24); + playTapeToolStripMenuItem.Text = "Play Tape"; + playTapeToolStripMenuItem.Click += playTapeToolStripMenuItem_Click; // // Form1 // @@ -221,5 +229,6 @@ private ToolStripMenuItem tAPToolStripMenuItem1; private ToolStripMenuItem sNAToolStripMenuItem1; private ToolStripMenuItem saveSnapshotToolStripMenuItem; + private ToolStripMenuItem playTapeToolStripMenuItem; } } diff --git a/Desktop/Form1.cs b/Desktop/Form1.cs index 2ea7136..ff68cfc 100644 --- a/Desktop/Form1.cs +++ b/Desktop/Form1.cs @@ -118,10 +118,10 @@ namespace Desktop long tStatesBefore = _cpu.TotalTStates; // --- HARDWARE INTERCEPTS --- - if (_cpu.PC == 0x0556 && _tapManager.HasBlocks) + if ((_cpu.PC == 0x0556 || _cpu.PC == 0x0558) && _tapManager.HasBlocks) { - HandleInstantTapeLoad(); - _cpu.TotalTStates += 100; // Charge some arbitrary time for the fast load + HandleInstantTapeLoad(); + _cpu.TotalTStates += 100; // Charge some arbitrary time for the fast load } // --- Execute Instruction --- @@ -130,7 +130,7 @@ namespace Desktop int elapsedTStates = (int)(_cpu.TotalTStates - tStatesBefore); _tapManager.Update(elapsedTStates); - if(highSpeed) + if (highSpeed) { wasHighSpeed = true; } @@ -186,7 +186,7 @@ namespace Desktop this.Text = $"{_baseTitle} - FPS: {FramesPerSecond:F1} - Tape Loaded: {tapeLoaded.ToString()}"; }); } - + } else { @@ -219,7 +219,7 @@ namespace Desktop FrameTime = TotalFrameTime / 50.0; TotalFrameTime = 0; } - + fpsStopwatch.Restart(); } } @@ -231,7 +231,7 @@ namespace Desktop this.Invoke((System.Windows.Forms.MethodInvoker)delegate { MessageBox.Show(ex.Message, "CPU Crash", MessageBoxButtons.OK, MessageBoxIcon.Error); - + }); } }); @@ -357,6 +357,7 @@ namespace Desktop // Feed it directly to your existing TapManager! _tapManager.LoadTapData(tapBytes); tapeLoaded = true; + _tapManager.Play(); } } } @@ -487,12 +488,13 @@ namespace Desktop byte[] tapBytes = File.ReadAllBytes(ofd.FileName); _tapManager.LoadTapData(tapBytes); tapeLoaded = true; + _tapManager.Play(); } } _isPaused = false; } - + private void openSNAToolStripMenuItem_Click(object sender, EventArgs e) { _isPaused = true; @@ -544,7 +546,7 @@ namespace Desktop _debugger.BringToFront(); } } - + private void UpdateMatrix(int row, int col, bool isPressed) { if (isPressed) @@ -559,14 +561,14 @@ namespace Desktop } } - + protected override void OnKeyDown(KeyEventArgs e) { HandleKey(e.KeyCode, true); base.OnKeyDown(e); } - + protected override void OnKeyUp(KeyEventArgs e) { HandleKey(e.KeyCode, false); @@ -634,5 +636,20 @@ namespace Desktop case Keys.B: UpdateMatrix(7, 4, isPressed); break; } } + + private void playTapeToolStripMenuItem_Click(object sender, EventArgs e) + { + if (playTapeToolStripMenuItem.Text == "Play Tape") + { + playTapeToolStripMenuItem.Text = "Stop Tape"; + _tapManager.Play(); + } + else + { + playTapeToolStripMenuItem.Text = "Play Tape"; + _tapManager.Stop(); + } + + } } } \ No newline at end of file diff --git a/Desktop/ROMS/Snapshot/Dizzy - Trasure Island.sna b/Desktop/ROMS/Snapshot/Dizzy - Trasure Island.sna new file mode 100644 index 0000000000000000000000000000000000000000..efc7b3e8d03fbc4939e4302aeeabf1221f1714b6 GIT binary patch literal 49179 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 ok;VK)XQH~vyqhK*C^*