Hey All,

I wrote a few more commands. I also made a temp fix for the memory corruption that is happening with the linked list: I made a fake command and put it first in the list and then skip over it.

victim: this command is never shown.
cpuid: ditto
memdump: ditto
reboot: ditto
egg: see for yourself

--
                             Jonathan Dickinson

Index: Commands/BuiltIn/cpuid.cs
===================================================================
--- Commands/BuiltIn/cpuid.cs   (revision 0)
+++ Commands/BuiltIn/cpuid.cs   (revision 0)
@@ -0,0 +1,46 @@
+using System;
+using System.Collections.Generic;
+using System.Text;
+using SharpOS.AOT.Attributes;
+using SharpOS.Foundation;
+using SharpOS.ADC;
+
+namespace SharpOS.Shell.Commands.BuiltIn
+{
+    public unsafe static class cpuid
+    {
+        public const string name = "cpuid";
+        public const string shortDescription = "Displays info about the cpu.";
+        public const string lblExecute = "COMMANDS.cpu.Execute";
+        public const string lblGetHelp = "COMMANDS.cpu.GetHelp";
+
+        [Label( lblExecute )]
+        public static void Execute( CommandExecutionContext* context )
+        {
+            // ARCHDEPENDS: X86
+            SharpOS.ADC.X86.CPU.WriteProcessorInfo( );
+        }
+
+        [Label( lblGetHelp )]
+        public static void GetHelp( CommandExecutionContext* context )
+        {
+            TextMode.WriteLine( "Syntax: " );
+            TextMode.WriteLine( "     cpuid" );
+            TextMode.WriteLine( "" );
+            TextMode.WriteLine( "Gets information about the CPU." );
+        }
+
+        public static CommandTableEntry* CREATE( )
+        {
+            CommandTableEntry* entry = (CommandTableEntry*) 
SharpOS.ADC.MemoryManager.Allocate( (uint) sizeof( CommandTableEntry ) );
+
+            entry->name = (CString8*) SharpOS.Stubs.CString( name );
+            entry->shortDescription = (CString8*) SharpOS.Stubs.CString( 
shortDescription );
+            entry->func_Execute = (void*) SharpOS.Stubs.GetLabelAddress( 
lblExecute );
+            entry->func_GetHelp = (void*) SharpOS.Stubs.GetLabelAddress( 
lblGetHelp );
+            entry->nextEntry = null;
+
+            return entry;
+        }
+    }
+}
Index: Commands/BuiltIn/egg.cs
===================================================================
--- Commands/BuiltIn/egg.cs     (revision 0)
+++ Commands/BuiltIn/egg.cs     (revision 0)
@@ -0,0 +1,60 @@
+using System;
+using System.Collections.Generic;
+using System.Text;
+using SharpOS.AOT.Attributes;
+using SharpOS.Foundation;
+using SharpOS.ADC;
+
+namespace SharpOS.Shell.Commands.BuiltIn
+{
+    public unsafe static class egg
+    {
+        public const string name = "egg";
+        public const string shortDescription = "The mandatory easter egg.";
+        public const string lblExecute = "COMMANDS.egg.Execute";
+        public const string lblGetHelp = "COMMANDS.egg.GetHelp";
+
+        [Label( lblExecute )]
+        public static void Execute( CommandExecutionContext* context )
+        {
+            TextMode.WriteLine( );
+
+            TextMode.WriteLine( "              .=\"\"=." );
+            TextMode.WriteLine( "             / _  _ \\" );
+            TextMode.WriteLine( "            |  d  b  |" );
+            TextMode.WriteLine( "            \\   /\\   /             ," );
+            TextMode.WriteLine( "           ,/'-=\\/=-'\\,    |\\   /\\/ \\/|  
 ,_" );
+            TextMode.WriteLine( "          / /        \\ \\   ; \\/`     '; , 
\\_'," );
+            TextMode.WriteLine( "         | /          \\ |   \\        / " );
+            TextMode.WriteLine( "         \\/ \\        / \\/    '.    .'    
/`." );
+            TextMode.WriteLine( "             '.    .'          `~~` , /\\ `" 
);
+            TextMode.WriteLine( "     jgs     _|`~~`|_              .  `" );
+            TextMode.WriteLine( "             /|\\  /|\\" );
+            TextMode.WriteLine( );
+            TextMode.WriteLine( "What is the egg?" );
+            TextMode.WriteLine( "The egg has you." );
+        }
+
+        [Label( lblGetHelp )]
+        public static void GetHelp( CommandExecutionContext* context )
+        {
+            TextMode.WriteLine( "Syntax: " );
+            TextMode.WriteLine( "     egg" );
+            TextMode.WriteLine( "" );
+            TextMode.WriteLine( "And we a proud of it." );
+        }
+
+        public static CommandTableEntry* CREATE( )
+        {
+            CommandTableEntry* entry = (CommandTableEntry*) 
SharpOS.ADC.MemoryManager.Allocate( (uint) sizeof( CommandTableEntry ) );
+
+            entry->name = (CString8*) SharpOS.Stubs.CString( name );
+            entry->shortDescription = (CString8*) SharpOS.Stubs.CString( 
shortDescription );
+            entry->func_Execute = (void*) SharpOS.Stubs.GetLabelAddress( 
lblExecute );
+            entry->func_GetHelp = (void*) SharpOS.Stubs.GetLabelAddress( 
lblGetHelp );
+            entry->nextEntry = null;
+
+            return entry;
+        }
+    }
+}
Index: Commands/BuiltIn/memdump.cs
===================================================================
--- Commands/BuiltIn/memdump.cs (revision 0)
+++ Commands/BuiltIn/memdump.cs (revision 0)
@@ -0,0 +1,47 @@
+
+
+using System;
+using System.Collections.Generic;
+using System.Text;
+using SharpOS.AOT.Attributes;
+using SharpOS.Foundation;
+using SharpOS.ADC;
+
+namespace SharpOS.Shell.Commands.BuiltIn
+{
+    public unsafe static class memdump
+    {
+        public const string name = "memdump";
+        public const string shortDescription = "Restarts the machine.";
+        public const string lblExecute = "COMMANDS.memdump.Execute";
+        public const string lblGetHelp = "COMMANDS.memdump.GetHelp";
+
+        [Label( lblExecute )]
+        public static void Execute( CommandExecutionContext* context )
+        {
+            ADC.MemoryManager.Dump( );
+        }
+
+        [Label( lblGetHelp )]
+        public static void GetHelp( CommandExecutionContext* context )
+        {
+            TextMode.WriteLine( "Syntax: " );
+            TextMode.WriteLine( "     memdump" );
+            TextMode.WriteLine( "" );
+            TextMode.WriteLine( "Displays memory usage." );
+        }
+
+        public static CommandTableEntry* CREATE( )
+        {
+            CommandTableEntry* entry = (CommandTableEntry*) 
SharpOS.ADC.MemoryManager.Allocate( (uint) sizeof( CommandTableEntry ) );
+
+            entry->name = (CString8*) SharpOS.Stubs.CString( name );
+            entry->shortDescription = (CString8*) SharpOS.Stubs.CString( 
shortDescription );
+            entry->func_Execute = (void*) SharpOS.Stubs.GetLabelAddress( 
lblExecute );
+            entry->func_GetHelp = (void*) SharpOS.Stubs.GetLabelAddress( 
lblGetHelp );
+            entry->nextEntry = null;
+
+            return entry;
+        }
+    }
+}
Index: Commands/BuiltIn/reboot.cs
===================================================================
--- Commands/BuiltIn/reboot.cs  (revision 0)
+++ Commands/BuiltIn/reboot.cs  (revision 0)
@@ -0,0 +1,47 @@
+
+
+using System;
+using System.Collections.Generic;
+using System.Text;
+using SharpOS.AOT.Attributes;
+using SharpOS.Foundation;
+using SharpOS.ADC;
+
+namespace SharpOS.Shell.Commands.BuiltIn
+{
+    public unsafe static class reboot
+    {
+        public const string name = "reboot";
+        public const string shortDescription = "Restarts the machine.";
+        public const string lblExecute = "COMMANDS.reboot.Execute";
+        public const string lblGetHelp = "COMMANDS.reboot.GetHelp";
+
+        [Label( lblExecute )]
+        public static void Execute( CommandExecutionContext* context )
+        {
+            Kernel.Reboot( );
+        }
+
+        [Label( lblGetHelp )]
+        public static void GetHelp( CommandExecutionContext* context )
+        {
+            TextMode.WriteLine( "Syntax: " );
+            TextMode.WriteLine( "     reboot" );
+            TextMode.WriteLine( "" );
+            TextMode.WriteLine( "Restarts the machine." );
+        }
+
+        public static CommandTableEntry* CREATE( )
+        {
+            CommandTableEntry* entry = (CommandTableEntry*) 
SharpOS.ADC.MemoryManager.Allocate( (uint) sizeof( CommandTableEntry ) );
+
+            entry->name = (CString8*) SharpOS.Stubs.CString( name );
+            entry->shortDescription = (CString8*) SharpOS.Stubs.CString( 
shortDescription );
+            entry->func_Execute = (void*) SharpOS.Stubs.GetLabelAddress( 
lblExecute );
+            entry->func_GetHelp = (void*) SharpOS.Stubs.GetLabelAddress( 
lblGetHelp );
+            entry->nextEntry = null;
+
+            return entry;
+        }
+    }
+}
Index: Commands/BuiltIn/victim.cs
===================================================================
--- Commands/BuiltIn/victim.cs  (revision 0)
+++ Commands/BuiltIn/victim.cs  (revision 0)
@@ -0,0 +1,41 @@
+using System;
+using System.Collections.Generic;
+using System.Text;
+using SharpOS.AOT.Attributes;
+using SharpOS.Foundation;
+using SharpOS.ADC;
+
+namespace SharpOS.Shell.Commands.BuiltIn
+{
+    public unsafe static class victim
+    {
+        private const string name = "victim";
+        private const string shortDescription = "This is a placeholder for a 
bug.";
+        private const string lblExecute = "COMMANDS.victim.Execute";
+        private const string lblGetHelp = "COMMANDS.victim.GetHelp";
+
+        [Label( lblExecute )]
+        public static void Execute( CommandExecutionContext* context )
+        {
+
+        }
+
+        [Label( lblGetHelp )]
+        public static void GetHelp( CommandExecutionContext* context )
+        {
+
+        }
+
+        public static CommandTableEntry* CREATE( )
+        {
+            CommandTableEntry* entry = (CommandTableEntry*) 
SharpOS.ADC.MemoryManager.Allocate( (uint) sizeof( CommandTableEntry ) );
+
+            entry->name = (CString8*) SharpOS.Stubs.CString( name );
+            entry->shortDescription = (CString8*) SharpOS.Stubs.CString( 
shortDescription );
+            entry->func_Execute = (void*) SharpOS.Stubs.GetLabelAddress( 
lblExecute );
+            entry->func_GetHelp = (void*) SharpOS.Stubs.GetLabelAddress( 
lblGetHelp );
+
+            return entry;
+        }
+    }
+}
Index: Commands/CommandTableHeader.cs
===================================================================
--- Commands/CommandTableHeader.cs      (revision 570)
+++ Commands/CommandTableHeader.cs      (working copy)
@@ -269,11 +269,16 @@
 
             //FIXME: For some reason, the first command on the list doesn't 
register properly
             //(NOTE: So don't put anything important there yet...)
+            header->AddEntry( BuiltIn.victim.CREATE( ) );
             header->AddEntry(BuiltIn.halt.CREATE());
             header->AddEntry(BuiltIn.cls.CREATE());
             header->AddEntry(BuiltIn.commands.CREATE());
             header->AddEntry(BuiltIn.help.CREATE());
             header->AddEntry(BuiltIn.version.CREATE());
+            header->AddEntry( BuiltIn.cpuid.CREATE( ) );
+            header->AddEntry( BuiltIn.memdump.CREATE( ) );
+            header->AddEntry( BuiltIn.reboot.CREATE( ) );
+            header->AddEntry( BuiltIn.egg.CREATE( ) );
 
             return header;
         }
Index: Prompter.cs
===================================================================
--- Prompter.cs (revision 570)
+++ Prompter.cs (working copy)
@@ -136,7 +136,7 @@
         {
             Diagnostics.Assert(commandTable != null, 
"Prompter::DisplayCommandList(CommandTableHeader*): Parameter 'commandTable' is 
null");
 
-            if (commandTable->firstEntry == null)
+            if (commandTable->firstEntry == null || 
commandTable->firstEntry->nextEntry == null)
             {
                 ADC.TextMode.WriteLine("No commands to display; the commands 
list is empty.");
                 return;
@@ -155,7 +155,7 @@
                 TextMode.WriteLine(colBLabel);
 
                 CommandTableEntry* currentEntry;
-                for (currentEntry = commandTable->firstEntry;
+                for (currentEntry = commandTable->firstEntry->nextEntry;
                     currentEntry != null;
                     currentEntry = currentEntry->nextEntry)
                 {
-------------------------------------------------------------------------
This SF.net email is sponsored by: Microsoft
Defy all challenges. Microsoft(R) Visual Studio 2005.
http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/
_______________________________________________
SharpOS-Developers mailing list
SharpOS-Developers@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/sharpos-developers

Reply via email to