Slynix Operating System or S.O.S. or SOS or whatever
DO NOT TRY TO RUN THIS WITHOUT CONTACTING ME FIRST! you won't make it, there are a few things missing from the svn repo, and you need to hardcode another few things.
I am looking for help, so if you are interested contact me.
If you have any (even the most stupid) questions contact me.
If you want to remind me this is stupid and pointless contact me.
It is somewhat hard to explain what I'm actually trying to accomplish. Basicly I'm writing an OS for myself, an OS that I would like using and programming on/for.
I use GNU/Linux with E17
and find it very good to work with, so expect this to be more or less based on that.
It's written in C, but in an objective way (I think;). The design is monolithic, the kernel does have it's threads but they are in the same address space.
The biggest difference (from GNU/Linux) is that this is window based from the start and the whole graphics system is in the kernel.
You will find that the enviroment has many small differences, for example in GRS (Graphics Related Sh... Stuff) the position (0,0) is in the bottom left corrner, or that most functions arguments are ordered (source, desitnation, size, etc) so memset (buf, 0, size) is memset08 (0, buf, size). Ohh and numbers are printed in little endian
The kernel is divided into these parts:
GRS - Graphics Related Stuff
IRS - Input Related Stuff
DRS - Data Related Stuff
MRS - Memory Related Stuff
TRS - Task Related Stuff
NRS - Networ Related Stuff
Currently there are GPU drivers for ATI radeons R2, R3, R4, and Intels G965, and an outdated for nVidia geforce2 - 4 (only those without shaders) (N10, N20). These actually use the 3D pipeline of the GPU so they support alpha blending, and any 2D trasformation (and actually 3D, I just didn't have time or need for them).
The API is so simple that you will probably understand it just by looking at the function names.
The whole enviroment is window based, so this works out to wich app the input goes etc. Drivers for standard ps/2 mouse and keyboard.
Block device interface with caching (not done yet) and a basic ata driver.
Virtual file system and a driver for ext2 (read & partial write).
It's a standard design with a root folder and mounting.
VFS is basicly a tree structure, that is filled by a physical FS as needed, it also acts as a cache for objects (file,dir,etc) descriptions.
Memory protection using paging, and flat segmentation, allocates memory as needed. This is probably the worst, but it works for now.
Multi tasking/threading with signals, FPU/MMX/SSE support, the scheduler is O(1). No IPC or shared memory at this point.
The basic design and partial implementation of udp/ip/arp/ethernet, and drivers for rtl8139 and ne2000.
The user API operates on Packet Frames, which describe the protocols to be used and their parameters.
After that a user simply tells the system to use a certain PF 1 and some data.
The OS then goes through each protocol, at the end assembles the data and headers, and sends them to the NIC.
On the user side:
libs the basic interface between a native app and the kernel, mostly software interrupt wrappers.
libGUI has a basic frame, lacks objects.
sfm a file manager made using libGUI.
libc a glue file that wraps standard newlib-1.15.0 to libs.
DockMe2 a physicaly correct 2d spaceship simulator, the idea is to create a game combining
elements of FreeSpace, Tachyon, Freelancer and MOAGG.
I also managed to compile and run zlib and libpng.
And a few unimportant test apps.