Skip to content
Closed
16 changes: 13 additions & 3 deletions Aura Operating System/Aura_OS/Aura_OS.csproj
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
<Project InitialTargets="GetVersion" Sdk="Microsoft.NET.Sdk">

<PropertyGroup>
<PropertyGroup>
<TargetFramework>net6.0</TargetFramework>
</PropertyGroup>

Expand All @@ -20,6 +20,7 @@
}
]]>
</SomeThing>
<AllowUnsafeBlocks>True</AllowUnsafeBlocks>
</PropertyGroup>

<ItemGroup>
Expand All @@ -28,6 +29,8 @@
<None Remove="Resources\CosmosLogo.bmp" />
<None Remove="Resources\Cursor.bmp" />
<None Remove="Resources\error.bmp" />
<None Remove="Resources\exec.exe" />
<None Remove="Resources\noruntime.exe" />
<None Remove="Resources\power.bmp" />
<None Remove="Resources\Program.bmp" />
<None Remove="Resources\programIco.bmp" />
Expand All @@ -43,6 +46,7 @@
<EmbeddedResource Include="Resources\CosmosLogo.bmp" />
<EmbeddedResource Include="Resources\Cursor.bmp" />
<EmbeddedResource Include="Resources\error.bmp" />
<EmbeddedResource Include="Resources\noruntime.exe" />
<EmbeddedResource Include="Resources\power.bmp" />
<EmbeddedResource Include="Resources\Program.bmp" />
<EmbeddedResource Include="Resources\programIco.bmp" />
Expand All @@ -53,8 +57,14 @@
</ItemGroup>

<ItemGroup>
<PackageReference Include="Cosmos.System2" Version="0-*" NoWarn="NU1604;NU1605" />
<PackageReference Include="CosmosFtpServer" Version="1.0.1" NoWarn="NU1604;NU1605" />
<PackageReference Include="Cosmos.System2" Version="0-*" NoWarn="NU1604;NU1605" />
<PackageReference Include="CosmosFtpServer" Version="1.0.1" NoWarn="NU1604;NU1605" />
</ItemGroup>

<ItemGroup>
<Reference Include="XSharp">
<HintPath>$(AppData)\Cosmos User Kit\Build\IL2CPU\XSharp.dll</HintPath>
</Reference>
</ItemGroup>

<Target Name="GetVersion">
Expand Down
4 changes: 4 additions & 0 deletions Aura Operating System/Aura_OS/Files.cs
Original file line number Diff line number Diff line change
Expand Up @@ -56,5 +56,9 @@ public class Files
//1920x1024
[ManifestResourceStream(ResourceName = "Aura_OS.Resources.wallpaper1920.bmp")]
public static byte[] Wallpaper;

//MZ Program
[ManifestResourceStream(ResourceName = "Aura_OS.Resources.noruntime.exe")]
public static byte[] Program;
}
}
6 changes: 6 additions & 0 deletions Aura Operating System/Aura_OS/Interpreter/CommandManager.cs
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@
using Aura_OS.System.Shell.cmdIntr;
using Aura_OS.Interpreter.Commands.Util;
using Aura_OS.Interpreter.Commands.Filesystem;
using Aura_OS.Processing.Executable;

namespace Aura_OS.Interpreter
{
Expand Down Expand Up @@ -104,6 +105,11 @@ public void RegisterAllCommands()
};
test[2] = "test3"; //Should make a Null reference exception
}));
CMDs.Add(new CommandAction(new string[] { "exec" }, () =>
{
var pe = new PE32(Files.Program);
pe.Start();
}));
}

/// <summary>
Expand Down
5 changes: 5 additions & 0 deletions Aura Operating System/Aura_OS/Kernel.cs
Original file line number Diff line number Diff line change
Expand Up @@ -76,6 +76,8 @@ public class Kernel

public static CommandManager CommandManager;

public static API auraApi;

public static bool Pressed;
public static int FreeCount = 0;

Expand Down Expand Up @@ -127,6 +129,9 @@ public static void BeforeRun()
WindowManager = new WindowManager();
WindowManager.Initialize();

auraApi = new API();
auraApi.Initialize();

//START MOUSE
MouseManager.ScreenWidth = screenWidth;
MouseManager.ScreenHeight = screenHeight;
Expand Down
60 changes: 60 additions & 0 deletions Aura Operating System/Aura_OS/Processing/API.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,60 @@
using Aura_OS.Processing.Executable;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using static Cosmos.Core.INTs;

namespace Aura_OS.Processing
{
public unsafe class API : Process
{
public API() : base("Aura API", ProcessType.Driver)
{

}

public override void Initialize()
{
base.Initialize();
Kernel.ProcessManager.Register(this);

SetIntHandler(0x48, SWI);
}

public unsafe static void SWI(ref IRQContext aContext)
{
if (aContext.Interrupt == 0x48) //API interrupt.
{
if (aContext.EAX == 0x01) //Print function.
{
byte* dat = PE32.ProgramAdress + aContext.EDI;

Console.Write(GetUnicodeString(dat));
}
if (aContext.EAX == 0x02) //Clear function.
{
Kernel.console.Clear();
}
}
}

public static string GetUnicodeString(byte *str)
{
string test = "";

int len = str[4] * 2;

for (int i = 0; i < len; i++)
{
if (str[8 + i] != 0)
{
test += (char)str[8 + i];
}
}

return test;
}
}
}
27 changes: 27 additions & 0 deletions Aura Operating System/Aura_OS/Processing/Caller.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
using IL2CPU.API.Attribs;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using XSharp;
using XSharp.Assembler;

namespace Aura_OS.Processing
{
public class Caller
{
[PlugMethod(Assembler = typeof(CallerPlug))]
public void CallCode(uint address) { }
}

[Plug(Target = typeof(Caller))]
public class CallerPlug : AssemblerMethod
{
public override void AssembleNew(Assembler aAssembler, object aMethodInfo)
{
XS.Set(XSRegisters.EAX, XSRegisters.EBP, sourceDisplacement: 8);
XS.Call(XSRegisters.EAX);
}
}
}
Loading