dromenox wrote:The main questions I have are:
-How to create a file system?
I would recommend starting with a piece of paper (or notepad.exe). You will need to come up with the structures and fields that you will need to:
- -Find a list of files and folders on your "volume".
-Find the relationships between those files and folders.
-Find which logical "block" your file is located in. (or blocks)
-Find one or more blocks that are "empty"
These are the bare minimum for a file system. If you want your file system to be fast, or fault tolerant, you will need even more structures.
dromenox wrote:-How to run programs made in C on my system? They need to run at a level above the kernel.
For this, you will need a memory manager. These come in all shapes and sizes, and it will arguably be the single most important component of your OS. A simple memory manager will get you up and running, but you will eventually need a "smart" memory manager if you want your system to be truly usable.
dromenox wrote:-How to organize the structure of the system? What to do in Assembly and what to do in C?
That is entirely up to you. There are pros and cons to each approach. However, most OS developers would recommend not writing any Assembly, at all, and only using C. For this, however, you will need to use a 3rd party Boot Loader. The good news is that there are free Boot Loaders that have all of the functionality that you will ever need.
dromenox wrote:-How can I use my entire screen to draw and not just the 25x80?
I would recommend sticking with 25x80 for your first attempt, as switching video modes and writing pixels to the screen is a truly significant problem, assuming that you want more than 800x600 pixels. Using software to render at higher resolutions is difficult, and slow, and you probably won't be happy with the results. You are really going to want some level of hardware graphics support. But, unfortunately, there are no common interfaces for video hardware acceleration, which means you will have to write code for each video card that you want to support. Most Operating Systems (except Windows) start up in 25x80 text mode, and only switch to Graphics Mode when everything has been setup and configured properly.
But the simple answer to your question is to call interrupt 10h while you are in 16-bit mode. See the wiki page for:
How do I set a graphics mode
dromenox wrote:I have advanced knowledge in C
Good Knowledge in Assembly
Good! You are going to need them..
But, the good news is that you've come to the right place. If you have any specific questions about how a particular component works, we will be happy to help you wherever possible.
Good Luck!