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;
}