162 lines
3.3 KiB
C#
162 lines
3.3 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using System.Linq;
|
|
using System.Text;
|
|
|
|
namespace BizHawk.Emulation.Cores.Computers.Commodore64.Experimental
|
|
{
|
|
public sealed partial class C64
|
|
{
|
|
public void InitializeConnections()
|
|
{
|
|
cia1.InputCNT = user.OutputCNT1;
|
|
cia1.InputFlag = ReadCia1Flag;
|
|
cia1.InputPortA = ReadCia1PortA;
|
|
cia1.InputPortB = ReadCia1PortB;
|
|
cia1.InputSP = user.OutputSP1;
|
|
|
|
cia2.InputCNT = user.OutputCNT2;
|
|
cia2.InputFlag = user.OutputFLAG2;
|
|
cia2.InputPortA = ReadCia2PortA;
|
|
cia2.InputPortB = user.OutputData;
|
|
cia2.InputSP = user.OutputSP2;
|
|
|
|
cpu.InputAEC = vic.OutputAEC;
|
|
cpu.InputIRQ = ReadIRQ;
|
|
cpu.InputNMI = ReadNMI;
|
|
cpu.InputPort = ReadCPUPort;
|
|
cpu.InputRDY = vic.OutputBA;
|
|
cpu.ReadMemory = pla.ReadMemory;
|
|
cpu.WriteMemory = pla.WriteMemory;
|
|
|
|
//expansion.InputBA = vic.OutputBA;
|
|
//expansion.InputData = ReadData;
|
|
//expansion.InputHiExpansion = ReadHiExpansion;
|
|
//expansion.InputHiRom = pla.OutputRomHi;
|
|
//expansion.InputIRQ = ReadIRQ;
|
|
//expansion.InputLoExpansion = ReadLoExpansion;
|
|
//expansion.InputLoRom = pla.OutputRomLo;
|
|
//expansion.InputNMI = ReadNMI;
|
|
|
|
//pla.InputAEC = vic.OutputAEC;
|
|
//pla.InputBA = vic.OutputBA;
|
|
//pla.InputCharen = ReadCharen;
|
|
//pla.InputExRom = expansion.OutputExRom;
|
|
//pla.InputGame = expansion.OutputGame;
|
|
//pla.InputHiRam = ReadHiRam;
|
|
//pla.InputLoRam = ReadLoRam;
|
|
//pla.InputVA = ReadVicAddress;
|
|
|
|
//serial.InputATN = ReadSerialATN;
|
|
//serial.InputClock = ReadSerialCLK;
|
|
//serial.InputData = ReadSerialDTA;
|
|
|
|
//user.InputCNT1 = cia1.OutputCNT;
|
|
//user.InputCNT2 = cia2.OutputCNT;
|
|
//user.InputData = cia2.OutputPortB;
|
|
//user.InputPA2 = ReadUserPA2;
|
|
//user.InputPC2 = cia2.OutputPC;
|
|
//user.InputSP1 = cia1.OutputSP;
|
|
//user.InputSP2 = cia2.OutputSP;
|
|
}
|
|
|
|
bool ReadCia1Cnt()
|
|
{
|
|
// this pin is not connected
|
|
return true;
|
|
}
|
|
|
|
bool ReadCia1Flag()
|
|
{
|
|
return serial.SRQ && cassette.Data;
|
|
}
|
|
|
|
int ReadCia1PortA()
|
|
{
|
|
return joystickB.Data & keyboard.Column;
|
|
}
|
|
|
|
int ReadCia1PortB()
|
|
{
|
|
return joystickA.Data & keyboard.Row;
|
|
}
|
|
|
|
int ReadCia2PortA()
|
|
{
|
|
int result = 0xFF;
|
|
if (!user.PA2)
|
|
result &= 0xFB;
|
|
if (!serial.Clock)
|
|
result &= 0xBF;
|
|
if (!serial.Data)
|
|
result &= 0x7F;
|
|
return result;
|
|
}
|
|
|
|
int ReadCPUPort()
|
|
{
|
|
return 0xFF;
|
|
}
|
|
|
|
bool ReadHiExpansion()
|
|
{
|
|
int addr = 0xFFFF;
|
|
return (addr >= 0xDF00 && addr < 0xE000);
|
|
}
|
|
|
|
bool ReadIRQ()
|
|
{
|
|
return (
|
|
cia1.IRQ &&
|
|
vic.IRQ &&
|
|
expansion.IRQ
|
|
);
|
|
}
|
|
|
|
bool ReadLoExpansion()
|
|
{
|
|
int addr = 0xFFFF;
|
|
return (addr >= 0xDE00 && addr < 0xDF00);
|
|
}
|
|
|
|
bool ReadLoRam()
|
|
{
|
|
return (cpu.Port & 0x1) != 0;
|
|
}
|
|
|
|
bool ReadNMI()
|
|
{
|
|
return (
|
|
cia2.IRQ &&
|
|
expansion.NMI
|
|
);
|
|
}
|
|
|
|
bool ReadSerialATN()
|
|
{
|
|
return (cia2.PortA & 0x08) != 0;
|
|
}
|
|
|
|
bool ReadSerialCLK()
|
|
{
|
|
return (cia2.PortA & 0x10) != 0;
|
|
}
|
|
|
|
bool ReadSerialDTA()
|
|
{
|
|
return (cia2.PortA & 0x20) != 0;
|
|
}
|
|
|
|
bool ReadUserPA2()
|
|
{
|
|
return (cia2.PortA & 0x04) != 0;
|
|
}
|
|
|
|
int ReadVicAddress()
|
|
{
|
|
//return (vic.Address | ((cia2.PortA & 0x3) << 14));
|
|
return 0xFFFF;
|
|
}
|
|
}
|
|
}
|