diff --git a/Contralto/AltoSystem.cs b/Contralto/AltoSystem.cs index 5380cc7..38ff51f 100644 --- a/Contralto/AltoSystem.cs +++ b/Contralto/AltoSystem.cs @@ -172,7 +172,7 @@ namespace Contralto 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); + 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; } diff --git a/Contralto/CPU/CPU.cs b/Contralto/CPU/CPU.cs index a9c1f1a..528b3b4 100644 --- a/Contralto/CPU/CPU.cs +++ b/Contralto/CPU/CPU.cs @@ -32,6 +32,7 @@ namespace Contralto.CPU _tasks[(int)TaskType.Cursor] = new CursorTask(this); _tasks[(int)TaskType.MemoryRefresh] = new MemoryRefreshTask(this); _tasks[(int)TaskType.Ethernet] = new EthernetTask(this); + _tasks[(int)TaskType.Parity] = new ParityTask(this); Reset(); } diff --git a/Contralto/CPU/Tasks/ParityTask.cs b/Contralto/CPU/Tasks/ParityTask.cs new file mode 100644 index 0000000..6b1822c --- /dev/null +++ b/Contralto/CPU/Tasks/ParityTask.cs @@ -0,0 +1,20 @@ +using System; + +namespace Contralto.CPU +{ + public partial class AltoCPU + { + /// + /// ParityTask is provided for completeness only, and implements the logic for the Parity task. + /// The Parity Task will never actually be woken because I'm not planning on emulating faulty memory. + /// + private sealed class ParityTask : Task + { + public ParityTask(AltoCPU cpu) : base(cpu) + { + _taskType = TaskType.Parity; + _wakeup = false; + } + } + } +} diff --git a/Contralto/CPU/Tasks/Task.cs b/Contralto/CPU/Tasks/Task.cs index 8bae25c..2f0f232 100644 --- a/Contralto/CPU/Tasks/Task.cs +++ b/Contralto/CPU/Tasks/Task.cs @@ -416,7 +416,8 @@ namespace Contralto.CPU if (swMode) { //Console.WriteLine("SWMODE NEXT {0} Modifier {1}", Conversion.ToOctal(instruction.NEXT), Conversion.ToOctal(nextModifier)); - UCodeMemory.SwitchMode((ushort)(instruction.NEXT | nextModifier), _taskType); + UCodeMemory.SwitchMode((ushort)(instruction.NEXT), _taskType); + Logging.Log.Write(Logging.LogComponent.Microcode, "SWMODE: uPC {0}, next uPC {1}", Conversion.ToOctal(_mpc), Conversion.ToOctal(instruction.NEXT | nextModifier)); } // diff --git a/Contralto/CPU/UCodeMemory.cs b/Contralto/CPU/UCodeMemory.cs index 6bdccd1..61be085 100644 --- a/Contralto/CPU/UCodeMemory.cs +++ b/Contralto/CPU/UCodeMemory.cs @@ -6,10 +6,10 @@ namespace Contralto.CPU public enum MicrocodeBank { ROM0 = 0, - ROM1, - RAM0, - RAM1, - RAM2 + ROM1 = 1, + RAM0 = 2, + RAM1 = 3, + RAM2 = 4 } struct RomFile @@ -123,8 +123,7 @@ namespace Contralto.CPU { Logging.Log.Write(Logging.LogComponent.Microcode, "SWMODE: Current Bank {0}", _microcodeBank[(int)task]); - // 2K ROM - /* + // 2K ROM switch(_microcodeBank[(int)task]) { case MicrocodeBank.ROM0: @@ -138,10 +137,10 @@ namespace Contralto.CPU case MicrocodeBank.RAM0: _microcodeBank[(int)task] = (nextAddress & 0x100) == 0 ? MicrocodeBank.ROM0 : MicrocodeBank.ROM1; break; - }*/ + } - // for 1K ROM - _microcodeBank[(int)task] = _microcodeBank[(int)task] == MicrocodeBank.ROM0 ? MicrocodeBank.RAM0 : MicrocodeBank.ROM0; + // for 1K ROM -- todo: make configurable + //_microcodeBank[(int)task] = _microcodeBank[(int)task] == MicrocodeBank.ROM0 ? MicrocodeBank.RAM0 : MicrocodeBank.ROM0; Logging.Log.Write(Logging.LogComponent.Microcode, "SWMODE: New Bank {0} for Task {1}", _microcodeBank[(int)task], task); } @@ -152,8 +151,7 @@ namespace Contralto.CPU { throw new NotImplementedException("Read from microcode ROM not implemented."); } - - // pretend no ram for the moment + Logging.Log.Write(Logging.LogComponent.Microcode, "CRAM address for read: Bank {0}, RAM {1}, lowhalf {2} addr {3}", _ramBank, _ramSelect, diff --git a/Contralto/Contralto.csproj b/Contralto/Contralto.csproj index 9b14e91..986efde 100644 --- a/Contralto/Contralto.csproj +++ b/Contralto/Contralto.csproj @@ -80,6 +80,7 @@ + diff --git a/Contralto/Disk/Clark-Games.dsk b/Contralto/Disk/Clark-Games.dsk index efe83ea..f029879 100644 Binary files a/Contralto/Disk/Clark-Games.dsk and b/Contralto/Disk/Clark-Games.dsk differ diff --git a/Contralto/Disk/bravox.dsk b/Contralto/Disk/bravox.dsk index b527dad..f4349ca 100644 Binary files a/Contralto/Disk/bravox.dsk and b/Contralto/Disk/bravox.dsk differ diff --git a/Contralto/Disk/diag.dsk b/Contralto/Disk/diag.dsk index 01373f2..79ce944 100644 Binary files a/Contralto/Disk/diag.dsk and b/Contralto/Disk/diag.dsk differ diff --git a/Contralto/Disk/games.dsk b/Contralto/Disk/games.dsk index 45d96a8..c901c5e 100644 Binary files a/Contralto/Disk/games.dsk and b/Contralto/Disk/games.dsk differ diff --git a/Contralto/Disk/gamesb.dsk b/Contralto/Disk/gamesb.dsk index 22c41bb..e4d8068 100644 Binary files a/Contralto/Disk/gamesb.dsk and b/Contralto/Disk/gamesb.dsk differ diff --git a/Contralto/Disk/gsl.dsk b/Contralto/Disk/gsl.dsk index 7e1dadc..e936bab 100644 Binary files a/Contralto/Disk/gsl.dsk and b/Contralto/Disk/gsl.dsk differ diff --git a/Contralto/Disk/mazeWar.dsk b/Contralto/Disk/mazeWar.dsk index a6bfe83..989fc76 100644 Binary files a/Contralto/Disk/mazeWar.dsk and b/Contralto/Disk/mazeWar.dsk differ diff --git a/Contralto/Disk/nonprog.dsk b/Contralto/Disk/nonprog.dsk index a4fde57..ed40c82 100644 Binary files a/Contralto/Disk/nonprog.dsk and b/Contralto/Disk/nonprog.dsk differ diff --git a/Contralto/Disk/st76boot.dsk b/Contralto/Disk/st76boot.dsk index bf12ce9..eb44786 100644 Binary files a/Contralto/Disk/st76boot.dsk and b/Contralto/Disk/st76boot.dsk differ diff --git a/Contralto/Disk/tdisk4.dsk b/Contralto/Disk/tdisk4.dsk index 8a1eb59..2f4e05d 100644 Binary files a/Contralto/Disk/tdisk4.dsk and b/Contralto/Disk/tdisk4.dsk differ diff --git a/Contralto/Disk/xmsmall.dsk b/Contralto/Disk/xmsmall.dsk index 43eacb2..a56b9d6 100644 Binary files a/Contralto/Disk/xmsmall.dsk and b/Contralto/Disk/xmsmall.dsk differ diff --git a/Contralto/Logging/Log.cs b/Contralto/Logging/Log.cs index 8a737b5..31c7263 100644 --- a/Contralto/Logging/Log.cs +++ b/Contralto/Logging/Log.cs @@ -75,8 +75,6 @@ namespace Contralto.Logging } } - - private static LogComponent _components; private static LogType _type; }