问题描述
我在 VMWare 中运行了我的 Cosmos 操作系统,但它运行不佳。 它运作良好并且“停止运作”。并且它在重新启动之前不起作用。(我认为这可能是内存问题。) 有stoped screen。 我不知道我的源代码哪里有问题,所以我在这里展示了我的所有源代码。
源代码:
using Cosmos.HAL;
using Cosmos.HAL.Drivers;
using Cosmos.System.FileSystem;
using Cosmos.System.FileSystem.VFS;
using Cosmos.System.Graphics;
using System;
using System.Collections.Generic;
using System.IO;
using System.Text;
using Sys = Cosmos.System;
namespace CosmosKernel4
{
public class Kernel : Sys.Kernel
{
uint x;
uint y;
Sys.MouseState ms;
Sys.MouseState oldms;
bool menuopened;
Canvas can;
List<Tuple<window,int>> windows;
int celll = 1;
int notepadd = 2;
List<string> programs;
int Nowindex;
System.Drawing.Color[] mmmmm;
System.Drawing.Color[][] colorrr;
static string ASC16Base64 = "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AAB4zMzM2MzGxsbMAAAAAAAA/sbGwMDAwMDAwAAAAAAAAAAA/mxsbGxsbGwAAAAAAAAA/sZgMBgwYMb+AAAAAAAAAAAAftjY2NjYcAAAAAAAAAAAZmZmZmZ8YGDAAAAAAAAAAHbcGBgYGBgYAAAAAAAAAH4YPGZmZjwYfgAAAAAAAAA4bMbG/sbGbDgAAAAAAAA4bMbGxmxsbGzuAAAAAAAAHjAYDD5mZmZmPAAAAAAAAAAAAH7b29t+AAAAAAAAAAAAAwZ+29vzfmDAAAAAAAAAHDBgYHxgYGAwHAAAAAAAAAB8xsbGxsbGxsYAAAAAAAAAAP4AAP4AAP4AAAAAAAAAAAAYGH4YGAAA/wAAAAAAAAAwGAwGDBgwAH4AAAAAAAAADBgwYDAYDAB+AAAAAAAADhsbGBgYGBgYGBgYGBgYGBgYGBgYGNjY2HAAAAAAAAAAABgYAH4AGBgAAAAAAAAAAAAAdtwAdtwAAAAAAAAAOGxsOAAAAAAAAAAAAAAAAAAAAAAAABgYAAAAAAAAAAAAAAAAAAAAGAAAAAAAAAAADwwMDAwM7GxsPBwAAAAAANhsbGxsbAAAAAAAAAAAAABw2DBgyPgAAAAAAAAAAAAAAAAAfHx8fHx8fAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==";
static MemoryStream ASC16FontMS = new MemoryStream(Convert.FromBase64String(ASC16Base64));
//Note: the size of font is 8*16
public void DrawACSIIString(Pen pen,string s,int x,int y)
{
//ASCII
string[] lines = s.Split('\n');
for (int l = 0; l < lines.Length; L++)
{
for (int c = 0; c < lines[l].Length; c++)
{
int offset = (Encoding.ASCII.GetBytes(lines[l][c].ToString())[0] & 0xFF) * 16;
ASC16FontMS.Seek(offset,SeekOrigin.Begin);
byte[] fontbuf = new byte[16];
ASC16FontMS.Read(fontbuf,fontbuf.Length);
for (int i = 0; i < 16; i++)
{
for (int j = 0; j < 8; j++)
{
if ((fontbuf[i] & (0x80 >> j)) != 0)
{
can.DrawPoint(pen,(x + j) + (c * 8),y + i + (l * 16));
}
}
}
}
}
}
protected override void BeforeRun()
{
colorrr = new System.Drawing.Color[7][];
for (int i = 0; i < 7; i++)
{
colorrr[i] = new System.Drawing.Color[7];
}
mmmmm = new System.Drawing.Color[1];
windows = new List<Tuple<window,int>>();
programs = new List<string>();
Nowindex = -1;
celll = 1;
notepadd = 2;
can = FullScreenCanvas.GetFullScreenCanvas();
can.Clear(System.Drawing.Color.White);
Sys.MouseManager.ScreenHeight = Convert.ToUInt32(can.Mode.Rows);
Sys.MouseManager.ScreenWidth = Convert.ToUInt32(can.Mode.Columns);
Sys.MouseManager.X = 0;
Sys.MouseManager.Y = 0;
menuopened = false;
ms = Sys.MouseState.None;
oldms = Sys.MouseState.None;
Sys.MouseManager.MouseState = Sys.MouseState.None;
Console.Beep(440,125);
Console.Beep(38,125);
Console.Beep(440,110);
Console.Beep(38,15);
Console.Beep(440,400);
resres();
}
void dosmode()
{
can.disable();
Console.BackgroundColor = ConsoleColor.Black;
Console.ForegroundColor = ConsoleColor.White;
bool isdosmode = true;
string Nowdirectory = "0:";
while (isdosmode)
{
Console.Write(Nowdirectory + " > ");
string s;
s = Console.ReadLine();
if (s == "GUI Mode") isdosmode = false;
else if (s[0] == 'i' && s[1] == 'n' && s[2] == 't' && s[3] == 'o' && s[4] == ' ')
{
string movedirectory = "";
for (int i = 5; i < s.Length; i++)
{
movedirectory += s[i];
}
if (Directory.Exists(movedirectory) == true)
{
Nowdirectory += "\\" + movedirectory;
}
else
{
Console.Write("There isn't directory that " + "\"" + movedirectory + "\"" + "in this directory");
}
}
}
can.display();
can = FullScreenCanvas.GetFullScreenCanvas();
can.Clear(System.Drawing.Color.White);
}
protected override void Run()
{
try
{
if (Sys.MouseManager.MouseState == Sys.MouseState.None)
{
if ((ms == Sys.MouseState.Left) || (oldms == Sys.MouseState.Left))
{
bool bbb = false;
uint xx = Sys.MouseManager.X;
uint yy = Sys.MouseManager.Y;
if (menuopened == true)
{
if ((xx < 100) && (yy > (can.Mode.Rows - 140)) && ((can.Mode.Rows - 40) > yy))
{
Console.Beep(440,125);
Console.Beep(38,125);
Console.Beep(440,110);
Console.Beep(38,15);
Console.Beep(440,400);
Sys.Power.Shutdown();
}
else if ((xx < 100) && (yy > (can.Mode.Rows - 240)) && ((can.Mode.Rows - 140) > yy))
{
Console.Beep(440,400);
Sys.Power.Reboot();
}
else if ((xx < 100) && (yy > (can.Mode.Rows - 340)) && ((can.Mode.Rows - 240) > yy))
{
Console.Beep(440,400);
dosmode();
}
else
{
menuopened = false;
bbb = true;
}
resres();
}
if (Nowindex == -1)
{
if ((xx < 30) && (yy < 30))
{
List<List<string>> lll = new List<List<string>>();
for (int i = 0; i < 10; i++)
{
lll.Add(new List<string>());
for (int j = 0; j < 10; j++)
{
lll[i].Add("cell");
}
}
windows.Add(new Tuple<window,int>(new cell(0,600,200,lll),celll));
Nowindex = windows.Count - 1;
resres();
}
}
else if (windows[Nowindex].Item2 == celll)
{
try
{
int cellwidth = can.Mode.Columns / ((cell)windows[Nowindex].Item1).cells[0].Count;
int cellheight = (can.Mode.Rows - 40) / ((cell)windows[Nowindex].Item1).cells.Count;
if (((cell)windows[Nowindex].Item1).selected_heng != -1)
{
can.DrawRectangle(new Pen(System.Drawing.Color.Green),new Point(((cell)windows[Nowindex].Item1).selected_iul * cellwidth,((cell)windows[Nowindex].Item1).selected_heng * cellheight),cellwidth,cellheight);
}
}
catch { }
try
{
int cellwidth = can.Mode.Columns / ((cell)windows[Nowindex].Item1).cells[0].Count;
int cellheight = (can.Mode.Rows - 40) / ((cell)windows[Nowindex].Item1).cells.Count;
int iul = Convert.ToInt32(xx / cellwidth);
int heng = Convert.ToInt32(yy / cellheight);
((cell)windows[Nowindex].Item1).selected_heng = heng;
((cell)windows[Nowindex].Item1).selected_iul = iul;
can.DrawRectangle(new Pen(System.Drawing.Color.Red),new Point(iul * cellwidth,heng * cellheight),cellheight);
}
catch { }
}
if (bbb == false)
{
if ((xx <= 100) && (yy >= (can.Mode.Rows - 40)))
{
if (menuopened == true)
{
}
else
{
menuopened = true;
resres();
}
}
}
ms = Sys.MouseState.None;
oldms = Sys.MouseState.None;
}
}
try
{
if ((x != Sys.MouseManager.X) || (y != Sys.MouseManager.Y))
{
for (int xxx = 0; xxx <= 6; xxx++)
{
for (int yyy = 0; yyy <= 6; yyy++)
{
can.DrawFilledRectangle(new Pen(colorrr[xxx][yyy]),new Point(Convert.ToInt32(x + xxx),Convert.ToInt32(y + yyy)),1,1); ;
}
}
for (int xxx = 0; xxx <= 6; xxx++)
{
for (int yyy = 0; yyy <= 6; yyy++)
{
colorrr[xxx][yyy] = can.GetPointColor(Convert.ToInt32(Sys.MouseManager.X + xxx),Convert.ToInt32(Sys.MouseManager.Y + yyy));
}
}
if (Sys.MouseManager.MouseState == Sys.MouseState.None)
{
can.DrawFilledRectangle(new Pen(System.Drawing.Color.Blue,1),new Point(Convert.ToInt32(Sys.MouseManager.X),Convert.ToInt32(Sys.MouseManager.Y)),5,5);
}
else
{
can.DrawFilledRectangle(new Pen(System.Drawing.Color.Red,5);
}
x = Sys.MouseManager.X;
y = Sys.MouseManager.Y;
}
}
catch { }
oldms = ms;
ms = Sys.MouseManager.MouseState;
}
catch
{
resres();
}
}
void resres()
{
try
{
can = FullScreenCanvas.GetFullScreenCanvas();
can.Clear(System.Drawing.Color.White);
if (Nowindex == -1)
{
DrawACSIIString(new Pen(System.Drawing.Color.Black),"cell",31);
can.DrawRectangle(new Pen(System.Drawing.Color.Green),new Point(0,0),40,40);
}
#region "draw program GUI"
else if (windows[Nowindex].Item2 == celll)
{
cell cell44 = (cell)windows[Nowindex].Item1;
List<List<string>> cells = cell44.cells;
int cellwidth = (can.Mode.Columns / cells[0].Count);
int cellheight = (can.Mode.Rows - 40) / cells.Count;
for (int j = 0; j < cells.Count; j++)
{
for (int k = 0; k < cells[j].Count; k++)
{
DrawACSIIString(new Pen(System.Drawing.Color.Black,2),cells[j][k],k * cellwidth,j * cellheight);
}
}
try
{
for (int j = 0; j <= cells.Count; j++)
{
can.DrawLine(new Pen(System.Drawing.Color.Green,j * cellheight),new Point(cells[j].Count * cellwidth,j * cellheight));
}
}
catch { }
try
{
for (int k = 0; k <= cells[0].Count; k++)
{
can.DrawLine(new Pen(System.Drawing.Color.Green,new Point(k * cellwidth,cells.Count * cellheight));
}
}
catch { }
}
#endregion
#region "draw menu"
if (menuopened == true)
{
can.DrawFilledRectangle(new Pen(System.Drawing.Color.Aqua),can.Mode.Rows - 340,100,100);
can.DrawFilledRectangle(new Pen(System.Drawing.Color.Purple),can.Mode.Rows - 240,100);
can.DrawFilledRectangle(new Pen(System.Drawing.Color.Red),can.Mode.Rows - 140,100);
can.DrawRectangle(new Pen(System.Drawing.Color.Black),300);
DrawACSIIString(new Pen(System.Drawing.Color.Red,"DOS Mode",can.Mode.Rows - 340);
DrawACSIIString(new Pen(System.Drawing.Color.White,"Restart",can.Mode.Rows - 240);
DrawACSIIString(new Pen(System.Drawing.Color.Aqua,"Off",can.Mode.Rows - 140);
}
can.DrawFilledRectangle(new Pen(System.Drawing.Color.magenta),can.Mode.Rows - 40,40);
#endregion
#region "draw mouse"
#endregion
}
catch { }
}
}
}
我的源代码有什么问题? 如果我的英语不足,我很抱歉。我是韩国人。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)