mirror of
https://github.com/danbulant/Cosmos
synced 2026-06-10 10:11:31 +00:00
More updates for ext2 and keyboard
This commit is contained in:
parent
d4df735c4a
commit
b57040c8a1
5 changed files with 37 additions and 6 deletions
|
|
@ -61,6 +61,13 @@ namespace Cosmos.Kernel.Plugs {
|
|||
|
||||
public static void Write(string aText) {
|
||||
for (int i = 0; i < aText.Length; i++) {
|
||||
if (aText[i] == '\n') {
|
||||
TextScreen.NewLine();
|
||||
continue;
|
||||
}
|
||||
if (aText[i] == '\r') {
|
||||
continue;
|
||||
}
|
||||
TextScreen.WriteChar(aText[i]);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -10,7 +10,6 @@ namespace Cosmos.Kernel.FileSystem {
|
|||
private Ext2 mFilesystem;
|
||||
private uint mPosition = 0;
|
||||
public FileStream(uint aINodeNumber, Ext2 aFilesystem) {
|
||||
DebugUtil.SendNumber("Ext2", "FileStream..ctor(aINodeNumber)", aINodeNumber, 32);
|
||||
mINodeNumber = aINodeNumber;
|
||||
mFilesystem = aFilesystem;
|
||||
}
|
||||
|
|
@ -39,10 +38,8 @@ namespace Cosmos.Kernel.FileSystem {
|
|||
public override long Length {
|
||||
get {
|
||||
INode xINode;
|
||||
DebugUtil.SendNumber("Ext2", "FileStream, Length, INodeNumber", mINodeNumber, 32);
|
||||
mFilesystem.ReadINode(mINodeNumber, out xINode);
|
||||
long xSize = xINode.Size;
|
||||
DebugUtil.SendNumber("Ext2", "FileStream, Length, ", (uint)xSize, 32);
|
||||
return xSize;
|
||||
}
|
||||
}
|
||||
|
|
@ -56,6 +53,7 @@ namespace Cosmos.Kernel.FileSystem {
|
|||
}
|
||||
}
|
||||
|
||||
// todo: add support for reading one chunk of data which spans multiple logical blocks
|
||||
public override int Read(byte[] buffer, int offset, int count) {
|
||||
uint xBlock = (mPosition / mFilesystem.mBlockSize);
|
||||
if (xBlock != 0) {
|
||||
|
|
|
|||
|
|
@ -17,7 +17,7 @@ namespace Cosmos.Kernel.FileSystem {
|
|||
} else {
|
||||
Console.WriteLine("Ext2 Initialization failed!");
|
||||
}
|
||||
Stream xFileStream = xExt2.OpenFile(new string[] { "readme.txt" });
|
||||
Stream xFileStream = xExt2.OpenFile(new string[] { "readme2.txt" });
|
||||
if (xFileStream == null) {
|
||||
Console.WriteLine("Couldn't read file!");
|
||||
return;
|
||||
|
|
@ -28,7 +28,7 @@ namespace Cosmos.Kernel.FileSystem {
|
|||
byte[] xBytes = new byte[(int)xFileStream.Length];
|
||||
int xBytesRead = xFileStream.Read(xBytes, 0, (int)xFileStream.Length);
|
||||
DebugUtil.SendNumber("MatthijsStage", "Bytes Read", (uint)xBytesRead, 32);
|
||||
DebugUtil.SendByteStream("CPU", "Readme.txt contents", xBytes);
|
||||
DebugUtil.SendByteStream("CPU", "Readme.txt2 contents", xBytes);
|
||||
char[] xChars = new char[xBytes.Length - 1];
|
||||
for (int i = 0; i < xChars.Length; i++) {
|
||||
xChars[i] = (char)xBytes[i];
|
||||
|
|
|
|||
|
|
@ -121,6 +121,32 @@ namespace Cosmos.Kernel {
|
|||
AddKey(0x320000, 'M');
|
||||
#endregion
|
||||
|
||||
#region digits
|
||||
AddKey(0x1, '`');
|
||||
AddKey(0x10000, '~');
|
||||
AddKey(0x2, '1');
|
||||
AddKey(0x20000, '!');
|
||||
AddKey(0x3, '2');
|
||||
AddKey(0x30000, '@');
|
||||
AddKey(0x4, '3');
|
||||
AddKey(0x40000, '#');
|
||||
AddKey(0x5, '4');
|
||||
AddKey(0x50000, '$');
|
||||
AddKey(0x6, '5');
|
||||
AddKey(0x60000, '%');
|
||||
AddKey(0x7, '6');
|
||||
AddKey(0x70000, '^');
|
||||
AddKey(0x8, '7');
|
||||
AddKey(0x80000, '&');
|
||||
AddKey(0x9, '8');
|
||||
AddKey(0x90000, '*');
|
||||
AddKey(0xA, '9');
|
||||
AddKey(0xA0000, '(');
|
||||
AddKey(0xB, '0');
|
||||
AddKey(0xB0000, ')');
|
||||
|
||||
#endregion
|
||||
|
||||
#region Special
|
||||
AddKey(0x1C, '\n');
|
||||
AddKey(0x1C0000, '\n');
|
||||
|
|
|
|||
|
|
@ -26,7 +26,7 @@ namespace Cosmos.Shell.Console.Commands {
|
|||
{
|
||||
System.Console.WriteLine("Ext2 Initialization failed!");
|
||||
}
|
||||
byte[] xItem = xExt2.ReadFile(new string[] { param });
|
||||
byte[] xItem = xExt2.ReadFile(new string[] { param });
|
||||
if (xItem == null)
|
||||
{
|
||||
System.Console.WriteLine("Couldn't read file!");
|
||||
|
|
|
|||
Loading…
Reference in a new issue