Commodore64: Whoops, forgot the CIA in the new test framework.

This commit is contained in:
saxxonpike 2013-08-16 10:20:38 +00:00
parent 155aea5b89
commit 9cc6936b89
9 changed files with 87 additions and 22 deletions

View File

@ -102,6 +102,8 @@
<Compile Include="Computers\Commodore64\Experimental\C64.Glue.cs" />
<Compile Include="Computers\Commodore64\Experimental\C64NTSC.cs" />
<Compile Include="Computers\Commodore64\Experimental\C64PAL.cs" />
<Compile Include="Computers\Commodore64\Experimental\Chips\Internals\Cia.Interface.cs" />
<Compile Include="Computers\Commodore64\Experimental\Chips\Internals\Cia.Internal.cs" />
<Compile Include="Computers\Commodore64\Experimental\IMotherboard.cs" />
<Compile Include="Computers\Commodore64\Experimental\Chips\Internals\Cpu.Interface.cs" />
<Compile Include="Computers\Commodore64\Experimental\Chips\Internals\Cpu.Internal.cs" />

View File

@ -15,10 +15,31 @@ namespace BizHawk.Emulation.Computers.Commodore64.Experimental
public int ReadAddress()
{
int addr = 0xFFFF;
addr &= cpu.OutputAddress();
addr &= expansion.OutputAddress();
addr &= vic.OutputAddress();
addr &= cpu.Address;
addr &= expansion.Address;
addr &= vic.Address;
return addr;
}
public int ReadData()
{
int data = 0xFF;
data &= expansion.Data;
if (pla.Basic)
data &= basicRom.Data;
if (pla.CharRom)
data &= characterRom.Data;
if (pla.GraphicsRead)
data &= colorRam.Data;
if (pla.IO)
{
data &= sid.Data;
data &= vic.Data;
}
data &= cpu.Data;
data &= kernalRom.Data;
data &= memory.Data;
return data;
}
}
}

View File

@ -12,7 +12,7 @@ namespace BizHawk.Emulation.Computers.Commodore64.Experimental.Chips.Internals
virtual public bool Data { get { return true; } }
public bool OutputData() { return Data; }
virtual public bool OutputSense() { return Sense; }
public bool OutputSense() { return Sense; }
virtual public int Peek(int addr) { return 0xFF; }
virtual public void Poke(int addr, int val) { }
virtual public void Precache() { }

View File

@ -0,0 +1,36 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace BizHawk.Emulation.Computers.Commodore64.Experimental.Chips.Internals
{
public partial class Cia
{
public Func<int> InputAddress;
public Func<bool> InputClock;
public Func<bool> InputCNT;
public Func<int> InputData;
public Func<bool> InputFlag;
public Func<int> InputPortA;
public Func<int> InputPortB;
public Func<bool> InputRead;
public Func<bool> InputReset;
public Func<bool> InputSP;
virtual public bool CNT { get { return true; } }
virtual public int Data { get { return 0xFF; } }
virtual public bool IRQ { get { return true; } }
public bool OutputCNT() { return CNT; }
public int OutputData() { return Data; }
public bool OutputIRQ() { return IRQ; }
public bool OutputPC() { return PC; }
public int OutputPortA() { return PortA; }
public int OutputPortB() { return PortB; }
public bool OutputSP() { return SP; }
virtual public bool PC { get { return true; } }
virtual public int PortA { get { return 0xFF; } }
virtual public int PortB { get { return 0xFF; } }
virtual public bool SP { get { return true; } }
}
}

View File

@ -0,0 +1,11 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace BizHawk.Emulation.Computers.Commodore64.Experimental.Chips.Internals
{
public partial class Cia
{
}
}

View File

@ -16,7 +16,7 @@ namespace BizHawk.Emulation.Computers.Commodore64.Experimental.Chips.Internals
virtual public void Execute()
{
if (InputWrite() && InputSelect())
if (InputWrite())
memory[InputAddress() & addressMask] = InputData() & dataMask;
}
}

View File

@ -9,7 +9,6 @@ namespace BizHawk.Emulation.Computers.Commodore64.Experimental.Chips.Internals
{
public Func<int> InputAddress;
public Func<int> InputData;
public Func<bool> InputSelect;
protected int addressMask;
protected int dataMask;
@ -26,9 +25,7 @@ namespace BizHawk.Emulation.Computers.Commodore64.Experimental.Chips.Internals
{
get
{
if (InputSelect())
return memory[InputAddress() & addressMask] & dataMask;
return 0xFF;
}
}

View File

@ -8,13 +8,12 @@ namespace BizHawk.Emulation.Computers.Commodore64.Experimental.Chips.Internals
public abstract partial class Sid
{
public Func<int> InputAddress;
public Func<bool> InputChipSelect;
public Func<int> InputData;
public Func<bool> InputRead;
public int Data { get { return 0xFF; } }
virtual public int OutputData() { return Data; }
virtual public void Precache() { }
virtual public void SyncState(Serializer ser) { }
virtual public int Data { get { return 0xFF; } }
public int OutputData() { return Data; }
public void Precache() { }
public void SyncState(Serializer ser) { }
}
}

View File

@ -8,7 +8,6 @@ namespace BizHawk.Emulation.Computers.Commodore64.Experimental.Chips.Internals
public abstract partial class Vic
{
public Func<int> InputAddress;
public Func<bool> InputChipSelect;
public Func<int> InputData;
public Func<bool> InputRead;
@ -74,37 +73,37 @@ namespace BizHawk.Emulation.Computers.Commodore64.Experimental.Chips.Internals
return Address;
}
virtual public bool OutputAEC()
public bool OutputAEC()
{
return AEC;
}
virtual public bool OutputBA()
public bool OutputBA()
{
return BA;
}
virtual public bool OutputCAS()
public bool OutputCAS()
{
return CAS;
}
virtual public int OutputData()
public int OutputData()
{
return Data;
}
virtual public bool OutputIRQ()
public bool OutputIRQ()
{
return IRQ;
}
virtual public bool OutputPHI0()
public bool OutputPHI0()
{
return PHI0;
}
virtual public bool OutputRAS()
public bool OutputRAS()
{
return RAS;
}