mirror of
https://github.com/MoleskiCoder/EightBitNet.git
synced 2025-11-24 15:17:31 +00:00
Reset/power refactoring for z80
This commit is contained in:
@@ -116,10 +116,15 @@ namespace EightBit
|
|||||||
return HalfCarryTableSub[index & (int)Mask.Three];
|
return HalfCarryTableSub[index & (int)Mask.Three];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
protected void ResetRegisterSet()
|
||||||
|
{
|
||||||
|
this.AF.Word = this.BC.Word = this.DE.Word = this.HL.Word = (ushort)Mask.Sixteen;
|
||||||
|
}
|
||||||
|
|
||||||
private void IntelProcessor_RaisedPOWER(object? sender, EventArgs e)
|
private void IntelProcessor_RaisedPOWER(object? sender, EventArgs e)
|
||||||
{
|
{
|
||||||
this.PC.Word = this.SP.Word = (ushort)Mask.Sixteen;
|
this.PC.Word = this.SP.Word = (ushort)Mask.Sixteen;
|
||||||
this.AF.Word = this.BC.Word = this.DE.Word = this.HL.Word = (ushort)Mask.Sixteen;
|
this.ResetRegisterSet();
|
||||||
this.RaiseHALT();
|
this.RaiseHALT();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
33
Z80/Z80.cs
33
Z80/Z80.cs
@@ -15,6 +15,8 @@ namespace Z80
|
|||||||
this._ports = ports;
|
this._ports = ports;
|
||||||
this.RaisedPOWER += this.Z80_RaisedPOWER;
|
this.RaisedPOWER += this.Z80_RaisedPOWER;
|
||||||
this.RaisedRFSH += this.Z80_RaisedRFSH;
|
this.RaisedRFSH += this.Z80_RaisedRFSH;
|
||||||
|
this.ExecutingInstruction += this.Z80_ExecutingInstruction;
|
||||||
|
this.ExecutedInstruction += this.Z80_ExecutedInstruction;
|
||||||
}
|
}
|
||||||
|
|
||||||
private readonly InputOutput _ports;
|
private readonly InputOutput _ports;
|
||||||
@@ -124,11 +126,19 @@ namespace Z80
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void Z80_ExecutingInstruction(object? sender, EventArgs e)
|
||||||
|
{
|
||||||
|
this._modifiedF = 0;
|
||||||
|
this._displaced = this._prefixCB = this._prefixDD = this._prefixED = this._prefixFD = false;
|
||||||
|
}
|
||||||
|
|
||||||
|
private void Z80_ExecutedInstruction(object? sender, EventArgs e)
|
||||||
|
{
|
||||||
|
this.Q = this._modifiedF;
|
||||||
|
}
|
||||||
|
|
||||||
public override void PoweredStep()
|
public override void PoweredStep()
|
||||||
{
|
{
|
||||||
this._displaced = this._prefixCB = this._prefixDD = this._prefixED = this._prefixFD = false;
|
|
||||||
this._modifiedF = 0;
|
|
||||||
|
|
||||||
var handled = false;
|
var handled = false;
|
||||||
if (this.RESET.Lowered())
|
if (this.RESET.Lowered())
|
||||||
{
|
{
|
||||||
@@ -169,8 +179,6 @@ namespace Z80
|
|||||||
// is in the HALT state.
|
// is in the HALT state.
|
||||||
this.Execute(this.FetchInstruction());
|
this.Execute(this.FetchInstruction());
|
||||||
}
|
}
|
||||||
|
|
||||||
this.Q = this._modifiedF;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private void Z80_RaisedPOWER(object? sender, EventArgs e)
|
private void Z80_RaisedPOWER(object? sender, EventArgs e)
|
||||||
@@ -188,12 +196,14 @@ namespace Z80
|
|||||||
this.REFRESH = new(0);
|
this.REFRESH = new(0);
|
||||||
this.IV = (byte)Mask.Eight;
|
this.IV = (byte)Mask.Eight;
|
||||||
|
|
||||||
this.ExxAF();
|
|
||||||
this.Exx();
|
|
||||||
|
|
||||||
this.IX.Word = this.IY.Word = (ushort)Mask.Sixteen;
|
this.IX.Word = this.IY.Word = (ushort)Mask.Sixteen;
|
||||||
|
|
||||||
this.ResetPrefixes();
|
// One of the register sets has been initialised
|
||||||
|
// (by the IntelProcessor base class)
|
||||||
|
// so now lets initialise the other register set.
|
||||||
|
this.Exx();
|
||||||
|
this.ExxAF();
|
||||||
|
this.ResetRegisterSet();
|
||||||
}
|
}
|
||||||
|
|
||||||
private void Z80_RaisedRFSH(object? sender, EventArgs e)
|
private void Z80_RaisedRFSH(object? sender, EventArgs e)
|
||||||
@@ -201,11 +211,6 @@ namespace Z80
|
|||||||
++this.REFRESH;
|
++this.REFRESH;
|
||||||
}
|
}
|
||||||
|
|
||||||
private void ResetPrefixes()
|
|
||||||
{
|
|
||||||
this._prefixCB = this._prefixDD = this._prefixED = this._prefixFD = false;
|
|
||||||
}
|
|
||||||
|
|
||||||
#region Z80 specific pins
|
#region Z80 specific pins
|
||||||
|
|
||||||
#region NMI pin
|
#region NMI pin
|
||||||
|
|||||||
Reference in New Issue
Block a user