Archive for February, 2008

New Stuff

Friday, February 22nd, 2008

I have just posted a massive commit today. Well, it wasn’t that huge, but I have put a lot of work into it. The first thing that’s different is in Seashell - I’m trying to get it to process arguments and then pass it to the function called, but that’s not working too great. Counting the number of arguments works (except that it disregards quotes), but it can’t put the arguments in string arrays…

But, the least work went into the main code. If you have the whole SVN tree (not just trunk), you’ll notice that there are two more directories - documents and utilities.I started a user manual in LaTeX, which is coming along (it’s formatted for A5, for two-up printing into a book). Also, in Utilities, there’s a ramdisk creator that (although it’s very, very basic at the moment), will take the arguments that you put into it, and create an SoS compatible ramdisk. It’s a proprietary file format at the moment, but later I’ll probably use something like Simple File System (SFS), to support more complex file handling (like directories)

Seashell

Wednesday, February 6th, 2008

Seashell
Click image for high-quality version

I have now started Seashell, SoS’s default terminal! It only has a few commands as of yet - but what I want to think about first is separating out the arguments, and passing argc and argv to the commands. Then I will be able to do some interesting stuff.

Timing Stuff

Tuesday, February 5th, 2008

I committed revision 34 tonight - in the last few revisions, I’ve improved the keyboard driver, and added a timer IRQ handler - so now I can do delays and things like that. I’ve also been slowly but surely nearing the completion of paging.

I’ve been coding just for 32 bit recently. I have to see if it compiles for 64bit soon! I haven’t actually got around to enabling Long mode though.

I will probably need to move the arch specific stuff into different folders - but then I would need to generate a makefile and a header containing the #define that sets the platform to 64 bits in the C++ code. This would be good, but it will take some time, and I don’t really know how to do it…

A little update

Sunday, February 3rd, 2008

I thought it was pretty lame that backspace just made a weird character, so I added support for that to the video driver.

It’s pretty funny that you can backspace over the rest of the information on screen - of course, the finished keyboard driver won’t let you even go over the prompt.

Wow - it actually worked

Saturday, February 2nd, 2008

I finally got interrupts working in SoS! This means that I will be able to write a keyboard driver, and make a basic console.

It turned out that the problem was with clearing the memory that the IDT occupies - the way I was doing it (with memset) didn’t work at all, and was causing the code to crash when it received an interrupt.

The current SVN has very basic keyboard support, allowing you to type lower case letters. Currently the backspace, control, shift and keys like that don’t work… I’ll work on it after I’ve solved some other problems.

Interrupt Descriptor Table (again)

Friday, February 1st, 2008

I am currently in the middle of doing paging on SoS, but for that to work, it needs to be able to receive page fault interrupts. This means that I’ll have to make a IDT. I’ve tried to do this a few times unsuccessfully on the C++ kernel in the past, but hopefully this time I’ll be able to find the problem.

Supported Platforms

Friday, February 1st, 2008

Well, I thought that it might be a good idea to have SoS run on 32 bit computers as well, as we have a few left that could be used for testing. So I decided that, instead of just dropping support for 32 bit processors, I will add a define that contains the platform, and act accordingly.

The 32 bit version currently does more than the 64 bit one - so for the time being, I will be using that exclusively on the Download page. The 64 bit version doesn’t switch to long mode yet, and

The new code is in the latest svn revision.