Hi,
Wizecoder wrote:I have officially joined the OS Dev community!!
First a bit of background. I have been programming in c++ for about 2 years now, mainly in
game development. About a week ago i started looking into OS dev and found the forums and wiki here.
Welcome to the forums!
Wizecoder wrote:At the moment i don't have much of a plan of what i want my operating system to do but some of the main things i am thinking of so far are things like an easy to use file system(seperates the files that make the programs function from the files that are outputed by the programs), and an easy way to install other operating systems on the same system(sortof like bootcamp). Thoughts, suggestions?
There's already an easy/standard way to run multiple operating systems on the same computer. The problem is that (regardless of how this is done) different OSs need to cooperate to avoid messing each other up, and some people (Microsoft) don't want to cooperate and deliberately make stupid decisions (like setting the RTC to local time as default, and not providing an option to avoid trashing the MBR when the OS is being installed) to make running multiple operating systems (including different versions of Windows) harder.
Wizecoder wrote:First, how would someone give the OS user the ability to develop with Opengl?
OpenGL is just a library. You'd write an OS, then write video drivers, GUI, etc, then write an OpenGL library. If the video drivers, GUI, etc are designed with OpenGL in mind then the OpenGL library might be a thin layer on top of the OS's video interface; and if the video drivers, GUI, etc are designed with something else in mind then the OpenGL library might be more complex. For example, if the video interface is a very simple "blit_my_buffer(unsigned char *address_of_my_buffer);" thing then you'd need to implement a full 3D rendering pipeline in the OpenGL library.
Wizecoder wrote:Second, my development setup that i am thinking of so far is Cygwin, and NASM, using Notepad++ for editing all on windows vista. Any thoughts on this?
I'd recommend using whatever you're most comfortable with.
However, IMHO Cygwin is an attempt to get a square peg (standard Unix tools like GCC, G++, LD, BASH, etc) to fit in a round hole (Windows), and it might be fun to try the same square peg in a square hole (e.g. try running standard Unix tools on a Unix clone like FreeBSD or Linux).
Wizecoder wrote:Third, about how well would i need to know assembly(tutorials please) and c++ to develop an OS?
You don't need to know much assembly at all, and it's probably easy to find some inline assembly snippets that do everything you need (assuming you build your OS on top of something like
GRUB). The hard part is understanding the CPU - things like different operating modes, how paging works, how caching works, etc (where you'll end up spending months reading through CPU manufacturer's manuals and/or tutorials, etc even though you don't need to use assembly).
I've never used C++, but from what I've heard you need to write your own run-time support code before you can use some of the more advanced C++ features. If you're nice, we'll let you
read about using C++ in our secret book of elite knowledge.
Cheers,
Brendan