mirror of
https://github.com/MoleskiCoder/EightBitNet.git
synced 2025-11-23 07:20:02 +00:00
Use IDE suggested changes
This commit is contained in:
@@ -6,20 +6,13 @@ namespace EightBit
|
|||||||
{
|
{
|
||||||
using System.Text;
|
using System.Text;
|
||||||
|
|
||||||
public class Disassembler
|
public class Disassembler(Bus bus, M6502 processor, Symbols symbols)
|
||||||
{
|
{
|
||||||
private readonly Bus bus;
|
private readonly Bus bus = bus;
|
||||||
private readonly M6502 processor;
|
private readonly M6502 processor = processor;
|
||||||
private readonly Symbols symbols;
|
private readonly Symbols symbols = symbols;
|
||||||
private ushort address;
|
private ushort address;
|
||||||
|
|
||||||
public Disassembler(Bus bus, M6502 processor, Symbols symbols)
|
|
||||||
{
|
|
||||||
this.bus = bus;
|
|
||||||
this.processor = processor;
|
|
||||||
this.symbols = symbols;
|
|
||||||
}
|
|
||||||
|
|
||||||
public static string DumpFlags(byte value)
|
public static string DumpFlags(byte value)
|
||||||
{
|
{
|
||||||
var returned = new StringBuilder();
|
var returned = new StringBuilder();
|
||||||
@@ -47,7 +40,7 @@ namespace EightBit
|
|||||||
var cell = this.bus.Peek(current);
|
var cell = this.bus.Peek(current);
|
||||||
|
|
||||||
output.Append(DumpByteValue(cell));
|
output.Append(DumpByteValue(cell));
|
||||||
output.Append(" ");
|
output.Append(' ');
|
||||||
|
|
||||||
var next = this.bus.Peek((ushort)(current + 1));
|
var next = this.bus.Peek((ushort)(current + 1));
|
||||||
var relative = (ushort)(this.processor.PC.Word + 2 + (sbyte)next);
|
var relative = (ushort)(this.processor.PC.Word + 2 + (sbyte)next);
|
||||||
|
|||||||
@@ -6,13 +6,13 @@ namespace EightBit
|
|||||||
{
|
{
|
||||||
using System;
|
using System;
|
||||||
|
|
||||||
public class M6502 : LittleEndianProcessor
|
public class M6502(Bus bus) : LittleEndianProcessor(bus)
|
||||||
{
|
{
|
||||||
private const byte IRQvector = 0xfe; // IRQ vector
|
private const byte IRQvector = 0xfe; // IRQ vector
|
||||||
private const byte RSTvector = 0xfc; // RST vector
|
private const byte RSTvector = 0xfc; // RST vector
|
||||||
private const byte NMIvector = 0xfa; // NMI vector
|
private const byte NMIvector = 0xfa; // NMI vector
|
||||||
|
|
||||||
private readonly Register16 intermediate = new Register16();
|
private readonly Register16 intermediate = new();
|
||||||
private byte crossedPage;
|
private byte crossedPage;
|
||||||
|
|
||||||
private bool handlingRESET = false;
|
private bool handlingRESET = false;
|
||||||
@@ -25,54 +25,49 @@ namespace EightBit
|
|||||||
private PinLevel rdyLine = PinLevel.Low;
|
private PinLevel rdyLine = PinLevel.Low;
|
||||||
private PinLevel rwLine = PinLevel.Low;
|
private PinLevel rwLine = PinLevel.Low;
|
||||||
|
|
||||||
public M6502(Bus bus)
|
public event EventHandler<EventArgs>? ExecutingInstruction;
|
||||||
: base(bus)
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
public event EventHandler<EventArgs> ExecutingInstruction;
|
public event EventHandler<EventArgs>? ExecutedInstruction;
|
||||||
|
|
||||||
public event EventHandler<EventArgs> ExecutedInstruction;
|
public event EventHandler<EventArgs>? RaisingNMI;
|
||||||
|
|
||||||
public event EventHandler<EventArgs> RaisingNMI;
|
public event EventHandler<EventArgs>? RaisedNMI;
|
||||||
|
|
||||||
public event EventHandler<EventArgs> RaisedNMI;
|
public event EventHandler<EventArgs>? LoweringNMI;
|
||||||
|
|
||||||
public event EventHandler<EventArgs> LoweringNMI;
|
public event EventHandler<EventArgs>? LoweredNMI;
|
||||||
|
|
||||||
public event EventHandler<EventArgs> LoweredNMI;
|
public event EventHandler<EventArgs>? RaisingSO;
|
||||||
|
|
||||||
public event EventHandler<EventArgs> RaisingSO;
|
public event EventHandler<EventArgs>? RaisedSO;
|
||||||
|
|
||||||
public event EventHandler<EventArgs> RaisedSO;
|
public event EventHandler<EventArgs>? LoweringSO;
|
||||||
|
|
||||||
public event EventHandler<EventArgs> LoweringSO;
|
public event EventHandler<EventArgs>? LoweredSO;
|
||||||
|
|
||||||
public event EventHandler<EventArgs> LoweredSO;
|
public event EventHandler<EventArgs>? RaisingSYNC;
|
||||||
|
|
||||||
public event EventHandler<EventArgs> RaisingSYNC;
|
public event EventHandler<EventArgs>? RaisedSYNC;
|
||||||
|
|
||||||
public event EventHandler<EventArgs> RaisedSYNC;
|
public event EventHandler<EventArgs>? LoweringSYNC;
|
||||||
|
|
||||||
public event EventHandler<EventArgs> LoweringSYNC;
|
public event EventHandler<EventArgs>? LoweredSYNC;
|
||||||
|
|
||||||
public event EventHandler<EventArgs> LoweredSYNC;
|
public event EventHandler<EventArgs>? RaisingRDY;
|
||||||
|
|
||||||
public event EventHandler<EventArgs> RaisingRDY;
|
public event EventHandler<EventArgs>? RaisedRDY;
|
||||||
|
|
||||||
public event EventHandler<EventArgs> RaisedRDY;
|
public event EventHandler<EventArgs>? LoweringRDY;
|
||||||
|
|
||||||
public event EventHandler<EventArgs> LoweringRDY;
|
public event EventHandler<EventArgs>? LoweredRDY;
|
||||||
|
|
||||||
public event EventHandler<EventArgs> LoweredRDY;
|
public event EventHandler<EventArgs>? RaisingRW;
|
||||||
|
|
||||||
public event EventHandler<EventArgs> RaisingRW;
|
public event EventHandler<EventArgs>? RaisedRW;
|
||||||
|
|
||||||
public event EventHandler<EventArgs> RaisedRW;
|
public event EventHandler<EventArgs>? LoweringRW;
|
||||||
|
|
||||||
public event EventHandler<EventArgs> LoweringRW;
|
public event EventHandler<EventArgs>? LoweredRW;
|
||||||
|
|
||||||
public event EventHandler<EventArgs> LoweredRW;
|
|
||||||
|
|
||||||
public ref PinLevel NMI => ref this.nmiLine;
|
public ref PinLevel NMI => ref this.nmiLine;
|
||||||
|
|
||||||
|
|||||||
@@ -10,7 +10,7 @@ namespace EightBit
|
|||||||
|
|
||||||
public class Symbols
|
public class Symbols
|
||||||
{
|
{
|
||||||
private readonly Dictionary<string, Dictionary<string, Dictionary<string, string>>> parsed;
|
private readonly Dictionary<string, Dictionary<string, Dictionary<string, string>>> parsed = [];
|
||||||
|
|
||||||
public Symbols()
|
public Symbols()
|
||||||
: this(string.Empty)
|
: this(string.Empty)
|
||||||
@@ -19,12 +19,6 @@ namespace EightBit
|
|||||||
|
|
||||||
public Symbols(string path)
|
public Symbols(string path)
|
||||||
{
|
{
|
||||||
this.Labels = new Dictionary<ushort, string>();
|
|
||||||
this.Constants = new Dictionary<ushort, string>();
|
|
||||||
this.Scopes = new Dictionary<string, ushort>();
|
|
||||||
this.Addresses = new Dictionary<string, ushort>();
|
|
||||||
this.parsed = new Dictionary<string, Dictionary<string, Dictionary<string, string>>>();
|
|
||||||
|
|
||||||
if (path.Length > 0)
|
if (path.Length > 0)
|
||||||
{
|
{
|
||||||
this.Parse(path);
|
this.Parse(path);
|
||||||
@@ -33,13 +27,13 @@ namespace EightBit
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public Dictionary<ushort, string> Labels { get; }
|
public Dictionary<ushort, string> Labels { get; } = [];
|
||||||
|
|
||||||
public Dictionary<ushort, string> Constants { get; }
|
public Dictionary<ushort, string> Constants { get; } = [];
|
||||||
|
|
||||||
public Dictionary<string, ushort> Scopes { get; }
|
public Dictionary<string, ushort> Scopes { get; } = [];
|
||||||
|
|
||||||
public Dictionary<string, ushort> Addresses { get; }
|
public Dictionary<string, ushort> Addresses { get; } = [];
|
||||||
|
|
||||||
private void AssignScopes()
|
private void AssignScopes()
|
||||||
{
|
{
|
||||||
@@ -48,7 +42,7 @@ namespace EightBit
|
|||||||
{
|
{
|
||||||
var parsedScope = parsedScopeElement.Value;
|
var parsedScope = parsedScopeElement.Value;
|
||||||
var name = parsedScope["name"];
|
var name = parsedScope["name"];
|
||||||
var trimmedName = name.Substring(1, name.Length - 2);
|
var trimmedName = name[1..^1];
|
||||||
var size = parsedScope["size"];
|
var size = parsedScope["size"];
|
||||||
this.Scopes[trimmedName] = ushort.Parse(size);
|
this.Scopes[trimmedName] = ushort.Parse(size);
|
||||||
}
|
}
|
||||||
@@ -61,8 +55,8 @@ namespace EightBit
|
|||||||
{
|
{
|
||||||
var symbol = symbolElement.Value;
|
var symbol = symbolElement.Value;
|
||||||
var name = symbol["name"];
|
var name = symbol["name"];
|
||||||
var trimmedName = name.Substring(1, name.Length - 2);
|
var trimmedName = name[1..^1];
|
||||||
var value = symbol["val"].Substring(2);
|
var value = symbol["val"][2..];
|
||||||
var number = Convert.ToUInt16(value, 16);
|
var number = Convert.ToUInt16(value, 16);
|
||||||
var symbolType = symbol["type"];
|
var symbolType = symbol["type"];
|
||||||
if (symbolType == "lab")
|
if (symbolType == "lab")
|
||||||
@@ -79,37 +73,37 @@ namespace EightBit
|
|||||||
|
|
||||||
private void Parse(string path)
|
private void Parse(string path)
|
||||||
{
|
{
|
||||||
using (var reader = new StreamReader(path))
|
using var reader = new StreamReader(path);
|
||||||
|
while (!reader.EndOfStream)
|
||||||
{
|
{
|
||||||
while (!reader.EndOfStream)
|
var line = reader.ReadLine();
|
||||||
|
if (line == null)
|
||||||
|
break;
|
||||||
|
var lineElements = line.Split(' ', '\t');
|
||||||
|
if (lineElements.Length == 2)
|
||||||
{
|
{
|
||||||
var line = reader.ReadLine();
|
var type = lineElements[0];
|
||||||
var lineElements = line.Split(' ', '\t');
|
var dataElements = lineElements[1].Split(',');
|
||||||
if (lineElements.Length == 2)
|
var data = new Dictionary<string, string>();
|
||||||
|
foreach (var dataElement in dataElements)
|
||||||
{
|
{
|
||||||
var type = lineElements[0];
|
var definition = dataElement.Split('=');
|
||||||
var dataElements = lineElements[1].Split(',');
|
if (definition.Length == 2)
|
||||||
var data = new Dictionary<string, string>();
|
|
||||||
foreach (var dataElement in dataElements)
|
|
||||||
{
|
{
|
||||||
var definition = dataElement.Split('=');
|
data[definition[0]] = definition[1];
|
||||||
if (definition.Length == 2)
|
}
|
||||||
{
|
}
|
||||||
data[definition[0]] = definition[1];
|
|
||||||
}
|
if (data.ContainsKey("id"))
|
||||||
|
{
|
||||||
|
if (!this.parsed.ContainsKey(type))
|
||||||
|
{
|
||||||
|
this.parsed[type] = new Dictionary<string, Dictionary<string, string>>();
|
||||||
}
|
}
|
||||||
|
|
||||||
if (data.ContainsKey("id"))
|
var id = data["id"];
|
||||||
{
|
data.Remove("id");
|
||||||
if (!this.parsed.ContainsKey(type))
|
this.parsed[type][id] = data;
|
||||||
{
|
|
||||||
this.parsed[type] = new Dictionary<string, Dictionary<string, string>>();
|
|
||||||
}
|
|
||||||
|
|
||||||
var id = data["id"];
|
|
||||||
data.Remove("id");
|
|
||||||
this.parsed[type][id] = data;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user