public BusManager() { m_cpu = new CpuUnit(); m_rzx = new RzxHandler(m_cpu); m_eventManager = new EventManager(m_cpu, m_rzx); SampleRate = 44100; }
public override void BusInit(IBusManager bmgr) { m_sandbox = bmgr.IsSandbox; m_cpu = bmgr.CPU; m_memory = bmgr.FindDevice <IMemoryDevice>(); m_rtcFileName = bmgr.GetSatelliteFileName("cmos"); m_nvramFileName = bmgr.GetSatelliteFileName("nvram"); m_ideFileName = bmgr.GetSatelliteFileName("vmide"); bmgr.RegisterIcon(m_iconHdd); bmgr.Events.SubscribeBeginFrame(BusBeginFrame); bmgr.Events.SubscribeEndFrame(BusEndFrame); bmgr.Events.SubscribeReset(BusReset); const int mask = 0xB8E7;//0xA044; bmgr.Events.SubscribeRdIo(mask, 0x5FBA & mask, ReadVer); bmgr.Events.SubscribeRdIo(mask, 0x5FBE & mask, ReadRev); bmgr.Events.SubscribeRdIo(mask, 0x7FBA & mask, ReadFdd); bmgr.Events.SubscribeRdIo(mask, 0x7FBE & mask, ReadPic); bmgr.Events.SubscribeRdIo(mask, 0xDFBA & mask, ReadRtc); bmgr.Events.SubscribeRdIo(mask, 0xD8BE & mask, ReadIdeHi); bmgr.Events.SubscribeRdIo(mask, 0xFFBA & mask, ReadSys); bmgr.Events.SubscribeRdIo(mask, 0xFFBE & mask, ReadIde); bmgr.Events.SubscribeWrIo(mask, 0x7FBA & mask, WriteFdd); bmgr.Events.SubscribeWrIo(mask, 0xDFBA & mask, WriteRtc); bmgr.Events.SubscribeWrIo(mask, 0xD8BE & mask, WriteIdeHi); bmgr.Events.SubscribeWrIo(mask, 0xFFBA & mask, WriteSys); bmgr.Events.SubscribeWrIo(mask, 0xFFBE & mask, WriteIde); }
public override void BusInit(IBusManager bmgr) { m_page0000 = -1; m_page4000 = 5; m_page8000 = 2; m_pageC000 = 0; m_videoPage = 5; CPU = bmgr.CPU; Memory = bmgr.FindDevice <IMemoryDevice>(); bmgr.Events.SubscribeWrMem(0xC000, 0x0000, WriteMem0000); bmgr.Events.SubscribeWrMem(0xC000, 0x4000, WriteMem4000); bmgr.Events.SubscribeWrMem(0xC000, 0x8000, WriteMem8000); bmgr.Events.SubscribeWrMem(0xC000, 0xC000, WriteMemC000); bmgr.Events.SubscribeWrIo(0x0001, 0x0000, WritePortFE); bmgr.Events.SubscribeBeginFrame(BeginFrame); bmgr.Events.SubscribeEndFrame(EndFrame); bmgr.AddSerializer(new ScrSerializer(this)); bmgr.AddSerializer(new BmpSerializer(this)); bmgr.AddSerializer(new JpgSerializer(this)); bmgr.AddSerializer(new PngSerializer(this)); }
private static void ExecCpuTests(string testName, int frameCount) { var cpu = new CpuUnit(); cpu.regs.PC = 0; cpu.RESET = () => { }; cpu.NMIACK_M1 = () => { }; cpu.INTACK_M1 = () => { }; cpu.RDMEM_M1 = addr => (byte)addr; cpu.RDMEM = addr => (byte)addr; cpu.WRMEM = (addr, value) => { }; cpu.RDPORT = addr => 0xFF; cpu.WRPORT = (addr, value) => { }; cpu.RDNOMREQ = addr => { }; cpu.WRNOMREQ = addr => { }; Stopwatch watch = new Stopwatch(); watch.Start(); for (var cycle = 0L; cycle < 71980 * frameCount; cycle++) { cpu.ExecCycle(); } watch.Stop(); Console.WriteLine("{0} [cpu]:\t{1} [ms]", testName, watch.ElapsedMilliseconds); }
public override void BusInit(IBusManager bmgr) { _cpu = bmgr.CPU; _sandbox = bmgr.IsSandbox; _memory = bmgr.FindDevice <IMemoryDevice>(); bmgr.RegisterIcon(_iconRd); bmgr.RegisterIcon(_iconWr); bmgr.Events.SubscribeBeginFrame(BusBeginFrame); bmgr.Events.SubscribeEndFrame(BusEndFrame); bmgr.Events.SubscribeRdMemM1(0xFF00, 0x3D00, BusReadMem3D00_M1); bmgr.Events.SubscribeRdMemM1(0xC000, 0x4000, BusReadMemRam); bmgr.Events.SubscribeRdMemM1(0xC000, 0x8000, BusReadMemRam); bmgr.Events.SubscribeRdMemM1(0xC000, 0xC000, BusReadMemRam); OnSubscribeIo(bmgr); bmgr.Events.SubscribeReset(BusReset); bmgr.Events.SubscribeNmiRq(BusNmiRq); bmgr.Events.SubscribeNmiAck(BusNmiAck); foreach (var fs in LoadManager.GetSerializers()) { bmgr.AddSerializer(fs); } }
public override void BusInit(IBusManager bmgr) { m_cpu = bmgr.CPU; m_ulaAtm = bmgr.FindDevice <UlaAtm450>(); bmgr.Events.SubscribeRdIo(0x0001, 0x0000, BusReadPortFE); // bit Z emulation bmgr.Events.SubscribeWrIo(0x0001, 0x0000, BusWritePortFE); bmgr.Events.SubscribeRdIo(0x0004, 0x00FB & 0x0004, BusReadPortFB); // CPSYS [(addr & 0x7F)==0x7B] bmgr.Events.SubscribeWrIo(0x8202, 0x7FFD & 0x8202, BusWritePort7FFD); bmgr.Events.SubscribeWrIo(0x8202, 0xFDFD & 0x8202, BusWritePortFDFD); bmgr.Events.SubscribeWrIo(0x8202, 0x7DFD & 0x8202, BusWritePort7DFD); // atm_writepal(val); bmgr.Events.SubscribeRdMemM1(0xFF00, 0x3D00, BusReadMem3D00_M1); bmgr.Events.SubscribeRdMemM1(0xC000, 0x4000, BusReadMemRamM1); bmgr.Events.SubscribeRdMemM1(0xC000, 0x8000, BusReadMemRamM1); bmgr.Events.SubscribeRdMemM1(0xC000, 0xC000, BusReadMemRamM1); //bmgr.Events.SubscribeRdIo(0x0005, 0x00FE & 0x0005, BusReadPortFE); // bit Z emulation //bmgr.Events.SubscribeWrIo(0x0005, 0x00FE & 0x0005, BusWritePortFE); //bmgr.Events.SubscribeRdIo(0x0005, 0x00FB & 0x0005, BusReadPortFB); // CPSYS [(addr & 0x7F)==0x7B] //bmgr.Events.SubscribeWrIo(0x8202, 0x7FFD & 0x8202, BusWritePort7FFD); //bmgr.Events.SubscribeWrIo(0x8202, 0xFDFD & 0x8202, BusWritePortFDFD); //bmgr.Events.SubscribeWrIo(0x8202, 0x7DFD & 0x8202, BusWritePort7DFD); // atm_writepal(val); //bmgr.Events.SubscribeRdMemM1(0xFF00, 0x3D00, BusReadMem3D00_M1); //bmgr.Events.SubscribeRdMemM1(0xC000, 0x4000, BusReadMemRamM1); //bmgr.Events.SubscribeRdMemM1(0xC000, 0x8000, BusReadMemRamM1); //bmgr.Events.SubscribeRdMemM1(0xC000, 0xC000, BusReadMemRamM1); bmgr.Events.SubscribeReset(BusReset); // Subscribe before MemoryBase.BusInit // to handle memory switches before read base.BusInit(bmgr); }
public override void BusInit(IBusManager bmgr) { m_busManager = bmgr; bmgr.Events.SubscribeRdIo(0x99, 0x98, readPortFE); bmgr.Events.SubscribeRdIo(0x99, 0x18, readPort7E); m_cpu = bmgr.CPU; }
public override void BusInit(IBusManager bmgr) { m_cpu = bmgr.CPU; var ula = bmgr.FindDevice <IUlaDevice>(); m_frameTactCount = ula != null ? ula.FrameTactCount : 71680; bmgr.Events.SubscribeBeginFrame(BeginFrame); bmgr.Events.SubscribeEndFrame(EndFrame); ApplyTimings(m_frameTactCount * 50, SampleRate); OnVolumeChanged(m_volume, m_volume); }
public override void BusInit(IBusManager bmgr) { base.BusInit(bmgr); _cpu = bmgr.CPU; bmgr.Events.SubscribeWrIo(0x00FF, 0x004e, WritePort4e); bmgr.Events.SubscribeRdIo(0x00FF, 0x004e, ReadPort4e); bmgr.Events.SubscribeWrIo(0x00FF, 0x004F, WritePort4f); bmgr.Events.SubscribeWrIo(0x00FF, 0x00FB, WritePortFb); bmgr.Events.SubscribeRdIo(0x00FF, 0x00FE, ReadPortFe); bmgr.Events.SubscribePreCycle(CheckInt); bmgr.Events.SubscribeReset(ResetBus); }
public override void BusInit(IBusManager bmgr) { m_cpu = bmgr.CPU; m_ulaAtm = bmgr.FindDevice <UlaAtm450>(); OnSubscribeIo(bmgr); bmgr.Events.SubscribeRdMemM1(0x0000, 0x0000, BusReadM1); bmgr.Events.SubscribeReset(BusReset); // Subscribe before MemoryBase.BusInit // to handle memory switches before read base.BusInit(bmgr); }
public override void BusInit(IBusManager bmgr) { m_sandbox = bmgr.IsSandbox; m_cpu = bmgr.CPU; m_memory = bmgr.FindDevice <IMemoryDevice>(); m_ideFileName = bmgr.GetSatelliteFileName("vmide"); bmgr.RegisterIcon(m_iconHdd); bmgr.Events.SubscribeBeginFrame(BusBeginFrame); bmgr.Events.SubscribeEndFrame(BusEndFrame); bmgr.Events.SubscribeReset(BusReset); bmgr.Events.SubscribeRdIo(0x9F, 0x8B, ReadIde); bmgr.Events.SubscribeWrIo(0x9F, 0x8B, WriteIde); }
public override void BusInit(IBusManager bmgr) { m_cpu = bmgr.CPU; bmgr.Events.SubscribeWrIo(0xD027, 0x7FFD & 0xD027, BusWritePort7FFD); bmgr.Events.SubscribeWrIo(0xD027, 0x1FFD & 0xD027, BusWritePort1FFD); bmgr.Events.SubscribeRdMemM1(0xFF00, 0x3D00, BusReadMem3D00_M1); bmgr.Events.SubscribeRdMemM1(0xC000, 0x4000, BusReadMemRamM1); bmgr.Events.SubscribeRdMemM1(0xC000, 0x8000, BusReadMemRamM1); bmgr.Events.SubscribeRdMemM1(0xC000, 0xC000, BusReadMemRamM1); bmgr.Events.SubscribeNmiRq(BusNmiRq); bmgr.Events.SubscribeNmiAck(BusNmiAck); bmgr.Events.SubscribeReset(BusReset); // Subscribe before MemoryBase.BusInit // to handle memory switches before read base.BusInit(bmgr); }
public EventManager(CpuUnit cpu, RzxHandler rzx) { m_cpu = cpu; m_rzx = rzx; m_cpu.RDMEM_M1 = RDMEM_M1; m_cpu.INTACK_M1 = INTACK_M1; m_cpu.NMIACK_M1 = NMIACK_M1; m_cpu.RDMEM = RDMEM; m_cpu.WRMEM = WRMEM; m_cpu.RDPORT = RDPORT; m_cpu.WRPORT = WRPORT; m_cpu.RDNOMREQ = RDNOMREQ; m_cpu.WRNOMREQ = WRNOMREQ; m_cpu.RESET = RESET; Clear(); }
public override void BusInit(IBusManager bmgr) { m_sandbox = bmgr.IsSandbox; m_cpu = bmgr.CPU; m_ideFileName = bmgr.GetSatelliteFileName("vmide"); bmgr.RegisterIcon(m_iconHdd); bmgr.Events.SubscribeBeginFrame(BusBeginFrame); bmgr.Events.SubscribeEndFrame(BusEndFrame); bmgr.Events.SubscribeReset(BusReset); const int mask = 0x001F; bmgr.Events.SubscribeRdIo(mask, 0xEF & mask, ReadIde); bmgr.Events.SubscribeWrIo(mask, 0xEF & mask, WriteIde); }
public override void BusInit(IBusManager bmgr) { m_sandbox = bmgr.IsSandbox; m_cpu = bmgr.CPU; m_ideFileName = bmgr.GetSatelliteFileName("vmide"); bmgr.RegisterIcon(m_iconHdd); bmgr.Events.SubscribeBeginFrame(BusBeginFrame); bmgr.Events.SubscribeEndFrame(BusEndFrame); bmgr.Events.SubscribeReset(BusReset); bmgr.Events.SubscribeRdIo(0x1E, 0x10, ReadIde); bmgr.Events.SubscribeWrIo(0x1E, 0x10, WriteIde); bmgr.Events.SubscribeRdIo(0xFF, 0xC8, ReadIdeAltStatus); bmgr.Events.SubscribeWrIo(0xFF, 0xC8, WriteIdeAltStatus); }
public override void BusInit(IBusManager bmgr) { base.BusInit(bmgr); m_cpu = bmgr.CPU; m_memory = bmgr.FindDevice <IMemoryDevice>(); bmgr.Events.SubscribeRdIo(Mask, Port & Mask, ReadPortFe); bmgr.Events.SubscribeWrIo(Mask, Port & Mask, WritePortFe); bmgr.Events.SubscribePreCycle(busPreCycle); bmgr.AddSerializer(new TapSerializer(this)); bmgr.AddSerializer(new TzxSerializer(this)); bmgr.AddSerializer(new CswSerializer(this)); bmgr.AddSerializer(new WavSerializer(this)); bmgr.RegisterIcon(m_iconTape); if (m_viewHolder != null) { bmgr.AddCommandUi(m_viewHolder.CommandOpen); } }
public override void BusInit(IBusManager bmgr) { m_sandbox = bmgr.IsSandbox; m_cpu = bmgr.CPU; m_ideFileName = bmgr.GetSatelliteFileName("vmide"); bmgr.RegisterIcon(m_iconHdd); bmgr.Events.SubscribeBeginFrame(BusBeginFrame); bmgr.Events.SubscribeEndFrame(BusEndFrame); bmgr.Events.SubscribeReset(BusReset); var dataMask = 0x00E7; //0x00FF; var regMask = 0xE1E7; //0x00E7;//0xFEFF; bmgr.Events.SubscribeRdIo(dataMask, 0x0050 & dataMask, ReadIdeData); bmgr.Events.SubscribeWrIo(dataMask, 0x0050 & dataMask, WriteIdeData); bmgr.Events.SubscribeRdIo(regMask, 0x0051 & regMask, ReadIdeError); bmgr.Events.SubscribeWrIo(regMask, 0x0151 & regMask, WriteIdeError); bmgr.Events.SubscribeRdIo(regMask, 0x0052 & regMask, ReadIdeCounter); bmgr.Events.SubscribeWrIo(regMask, 0x0152 & regMask, WriteIdeCounter); bmgr.Events.SubscribeRdIo(regMask, 0x0053 & regMask, ReadIdeSector); bmgr.Events.SubscribeWrIo(regMask, 0x0153 & regMask, WriteIdeSector); bmgr.Events.SubscribeRdIo(regMask, 0x0055 & regMask, ReadIdeCylHi); bmgr.Events.SubscribeWrIo(regMask, 0x0155 & regMask, WriteIdeCylHi); bmgr.Events.SubscribeRdIo(regMask, 0x0054 & regMask, ReadIdeCylLo); bmgr.Events.SubscribeWrIo(regMask, 0x0154 & regMask, WriteIdeCylLo); bmgr.Events.SubscribeRdIo(regMask, 0x4052 & regMask, ReadIdeControl); bmgr.Events.SubscribeWrIo(regMask, 0x4152 & regMask, WriteIdeControl); bmgr.Events.SubscribeRdIo(regMask, 0x4053 & regMask, ReadIdeCommand); bmgr.Events.SubscribeWrIo(regMask, 0x4153 & regMask, WriteIdeCommand); }
public override void BusInit(IBusManager bmgr) { m_sandbox = bmgr.IsSandbox; m_cpu = bmgr.CPU; m_memory = bmgr.FindDevice <IMemoryDevice>(); bmgr.RegisterIcon(m_iconRd); bmgr.RegisterIcon(m_iconWr); bmgr.Events.SubscribeBeginFrame(BusBeginFrame); bmgr.Events.SubscribeEndFrame(BusEndFrame); OnSubscribeIo(bmgr); foreach (var fs in LoadManagers.First().GetSerializers()) { bmgr.AddSerializer(fs); } if (m_viewHolder != null) { bmgr.AddCommandUi(m_viewHolder.CommandOpen); } }
public RzxHandler(CpuUnit cpu) { m_cpu = cpu; IsPlayback = false; IsRecording = false; }