Got GUI!

I am so happy today… I got GUI to work for the first time in 2 years of my development of Arcrascent OS.

GUI With a Line and a Square
GUI With a Line and a Square
GUI-2
GUI-2

Major Updates

First update in 1 month!

The SerCon Terminal went through major changes. Many new commands were created and The UI was tweaked. Most importantly, Arcrascent OS booted successfully on a real machine for the first time!

2

Also, VBE (VESA BIOS Extensions) GUI and VGA Mode 0x13 are now working!

VGA

This is what SerCon looks like right now… Notice that AM/PM times are implemented.

SerCon v3.0.1 Beta 3
SerCon v3.1,0 Beta 3

[UPDATE] Arrow Keys Support

The Arcrascent OS SerCon Terminal now fully supports all arrow key operations (UP, DOWN, LEFT, RIGHT):

  • UP – Load previous command ran in the history
    • If you were simply typing a new command, SerCon will load the most recent command ran via the terminal interface.
  • DOWN – Load more recent command in the history
    • If you are at the most recent command run in the history array, SerCon will restore the command that you had scribbled before pressing the “UP” arrow key.
  •  LEFT – Shift cursor once to the left
    • If you type anything after pressing the “LEFT” arrow key, SerCon will simply append the typed string in the middle of the original command at the point where the cursor it located.
  • RIGHT – Shift cursor once to the right
    • Similar to “LEFT”

Sercon Terminal Finally Works!

After days of individual and collaborated experiments with my buddy Wassim, I finally came up with a solution to fix the sercon buffer parser issue.

Basically, when I typed a command, the command buffer would be corrupted. Like this:

[/root | 1412814792 UDT (Epoch)]
Sercon$ help
Error: ”  mkfs.fatS*    “ is not a registered command of the SerCon Terminal”

As shown in bold, the buffer is displaying random binaries that were in the RAM.

int getCommend (char buf [], int n) is a function used to obtain the first n keypresses that the user makes. A return key automatically makes the function return. The integer returned is the # of characters actually typed before a return key or a buffer overflow.

char buf [100]; // declare buffer
memset (buf, 0, sizeof(buf)); // force initialize buffer
getCommand (buf, 100);

No problems were detected in any of those lines of code.

Then, I called the int execSerCon (char command []) function.

execSerCon runs a registered command of the terminal (via its char array argument).

There, I went

for (int i=0; i<sizeof(command); ++i) {
if (command [i] != 0)
err = 0;
}

if (err)
return -1;

for (int i=0; i<sizeof(Commands)/sizeof(serconcommand_t); ++i) {
if (strcmp (Commands [i].name, command) == 0) { // find match

int commandexit = Commands [i].fnptr (currentcommand_argv, currentcommand_argc); // execute command
if (commandexit == -1)
kprintf (“\nCommand Exited with Error Code -1”);
if (commandexit == 0)
kprintf (“\nCommand Successfully Executed”);
else
kprintf (“\nCommand Exited with Unrecognized Return Code %d”, commandexit);

return 0;
}
}
kprintf (KRED “\nError: %s is not a command, executable file, or a script” KRST, str);

The problem was that I was directly casting a char [] into a char*. Such feature was supported in Microsoft VC++ CL Compiler, but GCC seems not to like it.

Therefore, to fix the error, I had to create a new char* string that has the same contents as the char[]. Simple.

char* str;
str = kmalloc (sizeof(command);

for (int i=0; i<sizeof(command); ++i)
str[i] = command[i];

Bug Fixed!

Arcrascent OS Sercon [Master] Finally Working
Arcrascent OS Sercon [Master] Finally Working

[UPDATE] Arcrascent OS rC Current Status

Arcrascent OS TorqueArcrascent OS Version: 2.0.1 Hornet ==> 2.1.0 Torque

New Features:

  • The SerCon Serial Console Terminal Interface Implemented
    • ++API
      • Interrupt 0x50
        • Initialize – eax=0x01; ebx=[size_of_buffer]
        • Add Command – eax=0x02; ebx=[name_of_command]; ecx=[function_pointer]
        • Remove Command – eax=0x03; ebx=[name_of_command]
        • Run Command – eax=0x04; ebx=[name_of_command]
  • vfsMap ()
    • Map a directory to a token (use MS-Style path (with backslashes) for mapped directories)
      • i.e. vfsMap (“/root”, “C”); ==> C:\Arcrascent == /root/Arcrascent

I am planning on releasing an image next month or two.

Arcrascent Wordpad

Arcrascent Wordpad is a little word processor that I wrote in 2012 using Visual Basic.

Arcrascent Wordpad

It supports:

  • MDI Window (Sub-Window)
  • Tabs
  • Window Management
  • Color Formatting
  • Fonts (All that are installed on the System)
  • Saving
  • Overwriting
  • Save As…
    • ArcX Format
    • HTML
    • RTF
  • Opening
    • ArcX Format
    • HTML
    • RTF
    • Microsoft DOCX
  • Closing
  • Bullets
  • Clipboard with Formatting Conserved
  • Undo/Redo

This software is not really being developed any more, as I am currently focused on Arcrascent OS, but you can still try it out in the Downloads section. Instructions of how to register the software is also located in that section.

Arcrascent OS Legacy (v1.0-1.5)

The Legacy Edition (the original one before the re-write) can be downloaded at:

Scrrenshot

WARNING: This software is not suitable for daily-usage as it is (literally) useless. DO NOT try to install this software on your physical computer. It is a waste of time and a risk of damaging your computer (or whatever other device you’re using). The stability of the kernel is not guaranteed. Just use emulators like Bochs, the x86 Emulator or VirtualBox.