using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace BizHawk.Emulation.Computers.Commodore64.MOS { public class UserPort { private Func peekMemory; private Action pokeMemory; private Func readMemory; private Action writeMemory; public UserPort() { // start up with no media connected Disconnect(); } public void Connect(Func funcPeek, Action actPoke, Func funcRead, Action actWrite) { peekMemory = funcPeek; pokeMemory = actPoke; readMemory = funcRead; writeMemory = actWrite; } public void Disconnect() { peekMemory = DummyPeek; pokeMemory = DummyPoke; readMemory = DummyRead; writeMemory = DummyWrite; } private byte DummyPeek(int addr) { return 0xFF; } private void DummyPoke(int addr, byte val) { // do nothing } private byte DummyRead(ushort addr) { return 0xFF; } private void DummyWrite(ushort addr, byte val) { // do nothing } public void HardReset() { // note: this will not disconnect any attached media } public byte Peek(int addr) { return peekMemory(addr); } public void Poke(int addr, byte val) { pokeMemory(addr, val); } public byte Read(ushort addr) { return readMemory(addr); } public void Write(ushort addr, byte val) { writeMemory(addr, val); } } }