From 39a5c67a47e8478b2bdc1a8fcf2f6d954e6daf17 Mon Sep 17 00:00:00 2001 From: ralfkronemeyer_cp Date: Wed, 25 Jun 2008 09:19:22 +0000 Subject: [PATCH] --- source/Cosmos/Cosmos.Hardware/Global.cs | 3 ++- .../Cosmos.Kernel.Plugs/Assemblers/Halt.cs | 21 +++++++++++++++++++ source/Cosmos/Cosmos.Kernel.Plugs/CPU.cs | 7 +++++++ .../Cosmos.Kernel.Plugs.csproj | 1 + source/Cosmos/Cosmos.Kernel/CPU.cs | 6 ++++++ source/Indy.IL2CPU.Assembler.X86/Hlt.cs | 10 +++++++++ .../Indy.IL2CPU.Assembler.X86.csproj | 1 + 7 files changed, 48 insertions(+), 1 deletion(-) create mode 100644 source/Cosmos/Cosmos.Kernel.Plugs/Assemblers/Halt.cs create mode 100644 source/Indy.IL2CPU.Assembler.X86/Hlt.cs diff --git a/source/Cosmos/Cosmos.Hardware/Global.cs b/source/Cosmos/Cosmos.Hardware/Global.cs index 3a3a411b8..71cf3f286 100644 --- a/source/Cosmos/Cosmos.Hardware/Global.cs +++ b/source/Cosmos/Cosmos.Hardware/Global.cs @@ -1,6 +1,7 @@ using System; using System.Collections.Generic; using System.Text; +using Cosmos.Kernel; namespace Cosmos.Hardware { public class Global { @@ -42,7 +43,7 @@ namespace Cosmos.Hardware { uint xEnd = xStart + aMSec; Cosmos.Hardware.DebugUtil.SendNumber("PC", "Sleep", aMSec, 32); while (TickCount < xEnd) { - ; + CPU.Halt(); } Cosmos.Hardware.DebugUtil.SendMessage("PC", "Sleeping done"); } diff --git a/source/Cosmos/Cosmos.Kernel.Plugs/Assemblers/Halt.cs b/source/Cosmos/Cosmos.Kernel.Plugs/Assemblers/Halt.cs new file mode 100644 index 000000000..9342cbf77 --- /dev/null +++ b/source/Cosmos/Cosmos.Kernel.Plugs/Assemblers/Halt.cs @@ -0,0 +1,21 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using Indy.IL2CPU.Plugs; +using Indy.IL2CPU.Assembler; +using Assembler = Indy.IL2CPU.Assembler.Assembler; +using CPUAll = Indy.IL2CPU.Assembler; +using CPUx86 = Indy.IL2CPU.Assembler.X86; + +namespace Cosmos.Kernel.Plugs.Assemblers +{ + + public class Halt : AssemblerMethod + { + public override void Assemble(Assembler aAssembler) + { + new CPUx86.Hlt(); + } + } +} diff --git a/source/Cosmos/Cosmos.Kernel.Plugs/CPU.cs b/source/Cosmos/Cosmos.Kernel.Plugs/CPU.cs index 7a3fd5b27..1eb188e97 100644 --- a/source/Cosmos/Cosmos.Kernel.Plugs/CPU.cs +++ b/source/Cosmos/Cosmos.Kernel.Plugs/CPU.cs @@ -73,5 +73,12 @@ namespace Cosmos.Kernel.Plugs { b = 0; a = 0; } + + [PlugMethod(MethodAssembler = typeof(Assemblers.Halt))] + public static void Halt() + { + + } + } } diff --git a/source/Cosmos/Cosmos.Kernel.Plugs/Cosmos.Kernel.Plugs.csproj b/source/Cosmos/Cosmos.Kernel.Plugs/Cosmos.Kernel.Plugs.csproj index 1d78267ed..07c554aa3 100644 --- a/source/Cosmos/Cosmos.Kernel.Plugs/Cosmos.Kernel.Plugs.csproj +++ b/source/Cosmos/Cosmos.Kernel.Plugs/Cosmos.Kernel.Plugs.csproj @@ -54,6 +54,7 @@ + diff --git a/source/Cosmos/Cosmos.Kernel/CPU.cs b/source/Cosmos/Cosmos.Kernel/CPU.cs index 84cf92356..b519446ac 100644 --- a/source/Cosmos/Cosmos.Kernel/CPU.cs +++ b/source/Cosmos/Cosmos.Kernel/CPU.cs @@ -114,5 +114,11 @@ namespace Cosmos.Kernel { b = 0; a = 0; } + + //Plugged + public static void Halt() + { + + } } } \ No newline at end of file diff --git a/source/Indy.IL2CPU.Assembler.X86/Hlt.cs b/source/Indy.IL2CPU.Assembler.X86/Hlt.cs new file mode 100644 index 000000000..0fb4044dd --- /dev/null +++ b/source/Indy.IL2CPU.Assembler.X86/Hlt.cs @@ -0,0 +1,10 @@ +using System; +using System.Linq; + +namespace Indy.IL2CPU.Assembler.X86 +{ + [OpCode(0xF4, "hlt")] + public class Hlt : Instruction + { + } +} \ No newline at end of file diff --git a/source/Indy.IL2CPU.Assembler.X86/Indy.IL2CPU.Assembler.X86.csproj b/source/Indy.IL2CPU.Assembler.X86/Indy.IL2CPU.Assembler.X86.csproj index bca2329cd..d8a180851 100644 --- a/source/Indy.IL2CPU.Assembler.X86/Indy.IL2CPU.Assembler.X86.csproj +++ b/source/Indy.IL2CPU.Assembler.X86/Indy.IL2CPU.Assembler.X86.csproj @@ -64,6 +64,7 @@ +