mirror of
https://github.com/livingcomputermuseum/ContrAlto.git
synced 2026-01-26 20:11:53 +00:00
Minor bugfixes, introduced a new timing infrastructure and moved DiskController over to it. Minor performance improvements; now running at 110% speed. Display timing is still too slow.
This commit is contained in:
@@ -1,13 +1,10 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using System.Collections.Generic;
|
||||
|
||||
using Contralto.CPU;
|
||||
using Contralto.IO;
|
||||
using Contralto.Memory;
|
||||
using Contralto.Display;
|
||||
using System.Timers;
|
||||
|
||||
namespace Contralto
|
||||
{
|
||||
@@ -18,7 +15,9 @@ namespace Contralto
|
||||
public class AltoSystem
|
||||
{
|
||||
public AltoSystem()
|
||||
{
|
||||
{
|
||||
_scheduler = new Scheduler();
|
||||
|
||||
_cpu = new AltoCPU(this);
|
||||
_memBus = new MemoryBus();
|
||||
_mem = new Memory.Memory();
|
||||
@@ -32,25 +31,32 @@ namespace Contralto
|
||||
_memBus.AddDevice(_keyboard);
|
||||
|
||||
// Register devices that need clocks
|
||||
_clockableDevices = new List<IClockable>();
|
||||
_clockableDevices.Add(_memBus);
|
||||
_clockableDevices.Add(_diskController);
|
||||
_clockableDevices = new List<IClockable>();
|
||||
_clockableDevices.Add(_memBus);
|
||||
_clockableDevices.Add(_displayController);
|
||||
//_clockableDevices.Add(_fakeDisplayController);
|
||||
_clockableDevices.Add(_cpu);
|
||||
_clockableDevices.Add(_cpu);
|
||||
|
||||
Reset();
|
||||
|
||||
Timer t = new Timer();
|
||||
t.AutoReset = true;
|
||||
t.Interval = 1000;
|
||||
t.Elapsed += T_Elapsed;
|
||||
t.Start();
|
||||
}
|
||||
|
||||
public void Reset()
|
||||
{
|
||||
_scheduler.Reset();
|
||||
|
||||
_cpu.Reset();
|
||||
_memBus.Reset();
|
||||
_mem.Reset();
|
||||
ALU.Reset();
|
||||
Shifter.Reset();
|
||||
_diskController.Reset();
|
||||
_displayController.Reset();
|
||||
_displayController.Reset();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
@@ -73,6 +79,10 @@ namespace Contralto
|
||||
{
|
||||
_clockableDevices[i].Clock();
|
||||
}
|
||||
|
||||
_scheduler.Clock();
|
||||
|
||||
_clocks++;
|
||||
}
|
||||
|
||||
public AltoCPU CPU
|
||||
@@ -100,6 +110,11 @@ namespace Contralto
|
||||
get { return _keyboard; }
|
||||
}
|
||||
|
||||
public Scheduler Scheduler
|
||||
{
|
||||
get { return _scheduler; }
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Time (in msec) for one system clock
|
||||
/// </summary>
|
||||
@@ -109,13 +124,24 @@ namespace Contralto
|
||||
get { return 0.00017; } // appx 170nsec, TODO: more accurate value?
|
||||
}
|
||||
|
||||
|
||||
private void T_Elapsed(object sender, ElapsedEventArgs e)
|
||||
{
|
||||
System.Console.WriteLine("{0} CPU clocks/sec %{1}. {2} fields/sec", _clocks, ((double)_clocks / 5882353.0) * 100.0, _displayController.Fields);
|
||||
_clocks = 0;
|
||||
_displayController.Fields = 0;
|
||||
}
|
||||
|
||||
private AltoCPU _cpu;
|
||||
private MemoryBus _memBus;
|
||||
private Contralto.Memory.Memory _mem;
|
||||
private Keyboard _keyboard;
|
||||
private DiskController _diskController;
|
||||
private DisplayController _displayController;
|
||||
private FakeDisplayController _fakeDisplayController;
|
||||
// private FakeDisplayController _fakeDisplayController;
|
||||
|
||||
private Scheduler _scheduler;
|
||||
private ulong _clocks;
|
||||
|
||||
private List<IClockable> _clockableDevices;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user