mirror of
https://github.com/danbulant/Cosmos
synced 2026-05-20 04:48:53 +00:00
158 lines
No EOL
4.1 KiB
C#
158 lines
No EOL
4.1 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using System.IO;
|
|
using System.IO.Compression;
|
|
using System.Net;
|
|
using System.Runtime.InteropServices;
|
|
using System.Security.Cryptography;
|
|
using System.Reflection;
|
|
using System.Diagnostics;
|
|
using Cosmos.Sys.Network;
|
|
using Cosmos.Hardware;
|
|
using Cosmos.Hardware.Network;
|
|
using System.Drawing;
|
|
using Cosmos.Kernel;
|
|
|
|
namespace MatthijsTest
|
|
{
|
|
public class Program
|
|
{
|
|
#region Cosmos Builder logic
|
|
// Most users wont touch this. This will call the Cosmos Build tool
|
|
[STAThread]
|
|
static void Main(string[] args)
|
|
{
|
|
Cosmos.Compiler.Builder.BuildUI.Run();
|
|
}
|
|
#endregion
|
|
|
|
private static NetworkDevice mNet;
|
|
|
|
public static unsafe void Init(){
|
|
|
|
var xInit = true;
|
|
if (xInit)
|
|
{
|
|
var xBoot = new Cosmos.Sys.Boot();
|
|
xBoot.Execute(true);
|
|
}
|
|
|
|
Heap.EnableDebug = false;
|
|
DebugUtil.SendNumber("Program", "DeviceCount", (uint)Device.Devices.Count, 32);
|
|
PCIDevice xVGADev = null;
|
|
for (int i = 0; i < PCIBus.Devices.Length; i++)
|
|
{
|
|
var xPCIDev = PCIBus.Devices[i];
|
|
if (xPCIDev.ClassCode == 3 && xPCIDev.SubClass == 0)
|
|
{
|
|
xVGADev = xPCIDev;
|
|
break;
|
|
}
|
|
}
|
|
if (xVGADev == null)
|
|
{
|
|
DebugUtil.SendError("Program", "No VGA device found");
|
|
goto Klaar;
|
|
}
|
|
DebugUtil.SendNumber("Program", "MBI Address", CPU.GetMBIAddress(), 32);
|
|
|
|
var xMBIStruct = ((MultiBootInfoStruct*)(byte*)CPU.GetMBIAddress());
|
|
DebugUtil.SendNumber("Program", "MBI Addr (2)", (uint)xMBIStruct, 32);
|
|
DebugUtil.SendNumber("MBI", "Flags", xMBIStruct->Flags, 32);
|
|
DebugUtil.SendNumber("MBI", "VbeControlInfo", xMBIStruct->VbeControlInfo, 32);
|
|
DebugUtil.SendNumber("MBI", "VbeModeInfo", xMBIStruct->VbeModeInfo, 32);
|
|
DebugUtil.SendNumber("MBI", "VbeMode", xMBIStruct->VbeMode, 16);
|
|
DebugUtil.SendNumber("MBI", "VbeInterfaceSeg", xMBIStruct->VbeInterfaceSeg, 16);
|
|
DebugUtil.SendNumber("MBI", "VbeInterfaceOff", xMBIStruct->VbeInterfaceOff, 16);
|
|
DebugUtil.SendNumber("MBI", "VbeInterfaceLen", xMBIStruct->VbeInterfaceLen, 16);
|
|
|
|
|
|
|
|
Klaar:
|
|
Console.WriteLine("Ready");
|
|
while (true) ;
|
|
|
|
|
|
|
|
//SendString("ABBA");
|
|
|
|
|
|
}
|
|
}
|
|
|
|
[StructLayout(LayoutKind.Explicit)]
|
|
public struct MultiBootInfoStruct
|
|
{
|
|
[FieldOffset(0)]
|
|
public uint Flags;
|
|
|
|
[FieldOffset(4)]
|
|
public uint MemLower;
|
|
|
|
[FieldOffset(8)]
|
|
public uint MemUpper;
|
|
|
|
[FieldOffset(12)]
|
|
public uint BootDevice;
|
|
|
|
[FieldOffset(16)]
|
|
public uint CmdLine;
|
|
|
|
[FieldOffset(20)]
|
|
public uint ModsCount;
|
|
|
|
[FieldOffset(24)]
|
|
public uint ModsAddr;
|
|
|
|
[FieldOffset(28)]
|
|
public uint Syms0;
|
|
|
|
[FieldOffset(32)]
|
|
public uint Syms1;
|
|
|
|
[FieldOffset(36)]
|
|
public uint Syms2;
|
|
|
|
[FieldOffset(40)]
|
|
public uint Syms3;
|
|
|
|
[FieldOffset(44)]
|
|
public uint MMapLength;
|
|
|
|
[FieldOffset(48)]
|
|
public uint MMapAddr;
|
|
|
|
[FieldOffset(52)]
|
|
public uint DrivesLength;
|
|
|
|
[FieldOffset(56)]
|
|
public uint DrivesAddr;
|
|
|
|
[FieldOffset(60)]
|
|
public uint ConfigTable;
|
|
|
|
[FieldOffset(64)]
|
|
public uint BootLoaderName;
|
|
|
|
[FieldOffset(68)]
|
|
public uint ApmTable;
|
|
|
|
[FieldOffset(72)]
|
|
public uint VbeControlInfo;
|
|
|
|
[FieldOffset(76)]
|
|
public uint VbeModeInfo;
|
|
|
|
[FieldOffset(80)]
|
|
public ushort VbeMode;
|
|
|
|
[FieldOffset(82)]
|
|
public ushort VbeInterfaceSeg;
|
|
|
|
[FieldOffset(84)]
|
|
public ushort VbeInterfaceOff;
|
|
|
|
[FieldOffset(86)]
|
|
public ushort VbeInterfaceLen;
|
|
}
|
|
} |