Page 1 of 2
Making a GUI
Posted: Tue Apr 10, 2007 1:07 pm
by djnorthyy
Hi,
I have followed the tutorial at
http://www.osdever.net/bkerndev/index.php
and now I want to put a GUI on it!
Has anyone got any help on this topic?
Many Thanks!
Harry.
Posted: Tue Apr 10, 2007 1:35 pm
by Brynet-Inc
There is a lot more about OS development you'll want to learn, Having a simple kernel with GUI on top is not going to be very useful.
I advise you to read the OSDev Wiki..
OS Development is not easy, Understanding the hardware you're programming on is highly recommended. Downloading hardware specifications and reading technical manuals will be beneficial, Reviewing peoples projects and the topics on the forum will help you get the gist of things.
http://www.osdev.org/wiki/Main_Page
Taking notice to the OS development category..
Asking silly questions like "
How do I put a GUI on my OS" is frowned upon.
Posted: Tue Apr 10, 2007 1:53 pm
by Alboin
Brynet-Inc wrote:OS Development is not easy
Actually, it is. Doing it well is the difficult part.
As for a GUI. It's very difficult to create a GUI without a working file system, disk access, mouse drivers, etc. Which is why you're going to need those first. I would suggest you to work on memory management, however, before any of that. After that, try scheduling. Following that work your way to floppy drivers, then hard drivers, etc.
Good Luck!
PS:
You will need the Intel\AMD manuals.
Posted: Tue Apr 10, 2007 1:58 pm
by Tyler
Alboin wrote:Brynet-Inc wrote:OS Development is not easy
Actually, it is. Doing it well is the difficult part.
Depends on your definition... I class OS development as doing it properly/well, not as doing some **** that just happens to boot cause some tutorial told them exactly how to do it. So OS Development is a hard topic... as is CompilerDevelopment, despite it being easy to write a simple parser that outputs machine code... etc etc.
Posted: Tue Apr 10, 2007 2:04 pm
by Alboin
Tyler wrote:Alboin wrote:Brynet-Inc wrote:OS Development is not easy
Actually, it is. Doing it well is the difficult part.
Depends on your definition... I class OS development as doing it properly/well, not as doing some **** that just happens to boot cause some tutorial told them exactly how to do it. So OS Development is a hard topic... as is CompilerDevelopment, despite it being easy to write a simple parser that outputs machine code... etc etc.
Creating a simple DOS clone in real mode is easy, but creating a Linux clone is more difficult. Both are osdev. Even though the Linux clone is more useful than the DOS clone, they are both operating systems nonetheless, Therefore, osdev may be easy and difficult.
Sorry!
Posted: Tue Apr 10, 2007 2:15 pm
by djnorthyy
Look sorry for posting a stupid question, but i am very new to these forms!
Harry.
Posted: Tue Apr 10, 2007 2:24 pm
by Alboin
Don't worry about it.
We're just here to help.
Posted: Tue Apr 10, 2007 2:28 pm
by Tyler
Alboin wrote:Tyler wrote:Alboin wrote:
Actually, it is. Doing it well is the difficult part.
Depends on your definition... I class OS development as doing it properly/well, not as doing some **** that just happens to boot cause some tutorial told them exactly how to do it. So OS Development is a hard topic... as is CompilerDevelopment, despite it being easy to write a simple parser that outputs machine code... etc etc.
Creating a simple DOS clone in real mode is easy, but creating a Linux clone is more difficult. Both are osdev. Even though the Linux clone is more useful than the DOS clone, they are both operating systems nonetheless, Therefore, osdev may be easy and difficult.
A DOS Clone is not an operating system by todays standards though. Back in its day it was the best for the time it took and how efficient it was given there far worse PC Architecture... writing a clone as efficient would be no quick task for a single developer.
I still wouldn't class that as OS Development though. That is like someone studying biology from 200 years ago and taking a test in it today. You would fail because that is no longer biology.
Re: Making a GUI
Posted: Tue Apr 10, 2007 2:29 pm
by INF1n1t
One thing I know: don't do GUI, before you're done with the os. Memory Management, Processes, I/O, so many things are waiting and they have higher priority than the GUI.
What you might want to do now, is to create a simple console: just to help yourself with the testing (like you're in protected mode 80x25 and you print stuff)...functions like print_char, get_char, inportb, outportb to help you work with your keyboard. For now, your console is there, just because you need it, not because the future users need it.
And that's my design idea: I'm now in protected mode with paging and I'm writing the console, to help me with multitasking and paging and all kind of cool stuff.
Is it hard or easy to create an OS: I think it's hard. The coding itself is not hard (I mean when you develop the OS and code things to make it work properly). You just write code and there is no phylosophy there. BUT! As it was said before, the hard thing is that you need to read manuals, documentation and think. When you read them, you have to think about what you read and make changes in your os's design. And when you get a clear picture about EVERYTHING (I mean really EVERYTHING) you should start coding. And if you understand everything, it's not hard to code it.
Also, if you have the OS developed, hard thing is to make programs for it. It just takes time to create new programs for your OS and of course it takes time and health to support that OS. It's not about coding, it's about coding + supporting.
That's what I think, no matter you define it as right or wrong!
Posted: Tue Apr 10, 2007 2:40 pm
by Alboin
Tyler wrote:A DOS Clone is not an operating system by todays standards though. Back in its day it was the best for the time it took and how efficient it was given there far worse PC Architecture... writing a clone as efficient would be no quick task for a single developer.
I still wouldn't class that as OS Development though. That is like someone studying biology from 200 years ago and taking a test in it today. You would fail because that is no longer biology.
Have we forgotten that Linux is a
UNIX clone? Now, when was UNIX created? Hmm? Let's see....What is the 1970's. Moreover, it was based on what?
Multics. That goes back to the 1960's. Therefore, if you're saying age is a factor, you're mighty wrong. However, this somewhat debunks my theory now, doesn't it? I'm so very confused at the moment.......
How is DOS not an operating system? It can technically do whatever Linux can. Just in a less elegant way....
Too bad Dex wasn't here. He'd have some argument about DOS, I'm sure.
Posted: Tue Apr 10, 2007 2:45 pm
by Kevin McGuire
You will need some sort of video functionality. You would not really need any extensive memory management at that point. You would need interrupts and a global descriptor table. If you boot from GRUB you could just forget about the global descriptor table. I would just copy some code to setup the interrupt descriptor table and make one for the keyboard and mouse. You could just as well copy some code to switch the video card into a resolution and color depth you liked. Then go read a little on about graphical user interface concepts such as windows and events..try making some windows with events and you should be done.
You would
not need to learn about executable images, memory management, drivers, threading, interrupts, ports, mmio, buses, system calls, or anything of the such. You do not even have to write any support for loading programs instead just hard code them into the kernel.
Posted: Tue Apr 10, 2007 2:45 pm
by Tyler
Alboin wrote:Tyler wrote:A DOS Clone is not an operating system by todays standards though. Back in its day it was the best for the time it took and how efficient it was given there far worse PC Architecture... writing a clone as efficient would be no quick task for a single developer.
I still wouldn't class that as OS Development though. That is like someone studying biology from 200 years ago and taking a test in it today. You would fail because that is no longer biology.
Have we forgotten that Linux is a
UNIX clone? Now, when was UNIX created? Hmm? Let's see....What is the 1970's. Moreover, it was based on what?
Multics. That goes back to the 1960's. Therefore, if you're saying age is a factor, you're mighty wrong. However, this somewhat debunks my theory now, doesn't it? I'm so very confused at the moment.......
How is DOS not an operating system? It can technically do whatever Linux can. Just in a less elegant way....
Too bad Dex wasn't here. He'd have some argument about DOS, I'm sure.
Well Linux adds a hell of a lot of features to UNIX, copying the original UNIX would be too hard, but cloning Linux would be... So to make a modern clone of DOS would be OS Development but would not be a simple task... And i am sure Dex would help myt argument as he considered his project to be no easy task as it is a modern take on DOS.
Posted: Tue Apr 10, 2007 2:55 pm
by Alboin
I think our ideas are becoming confused. I am saying that a simple OS would be by definition simple, and therefore osdev may, in some situations be easy. You, on the other hand, are saying that osdev is all difficult, because you do not consider simple OS's to be osdev as they are not modern operating systems by today's standards. Correct?
Therefore, we are discussing whether osdev covers all programming related to operating system development or if it only covers that which is considered modern.
Maybe we can reach a middle place here. What about calling the development of simple operating systems "nosdev"? (noob+osdev)
Posted: Tue Apr 10, 2007 3:06 pm
by Tyler
Alboin wrote:I think our ideas are becoming confused. I am saying that a simple OS would be by definition simple, and therefore osdev may, in some situations be easy. You, on the other hand, are saying that osdev is all difficult, because you do not consider simple OS's to be osdev as they are not modern operating systems by today's standards. Correct?
Therefore, we are discussing whether osdev covers all programming related to operating system development or if it only covers that which is considered modern.
Maybe we can reach a middle place here. What about calling the development of simple operating systems "nosdev"? (noob+osdev)
Well i wouldn't use that term, i think noob is thrown around a little too much by noobs to actually mean anything anymore. But ok...
Posted: Wed Apr 11, 2007 11:08 pm
by AndrewAPrice
Tyler wrote:Alboin wrote:Tyler wrote:
Depends on your definition... I class OS development as doing it properly/well, not as doing some **** that just happens to boot cause some tutorial told them exactly how to do it. So OS Development is a hard topic... as is CompilerDevelopment, despite it being easy to write a simple parser that outputs machine code... etc etc.
Creating a simple DOS clone in real mode is easy, but creating a Linux clone is more difficult. Both are osdev. Even though the Linux clone is more useful than the DOS clone, they are both operating systems nonetheless, Therefore, osdev may be easy and difficult.
A DOS Clone is not an operating system by todays standards though. Back in its day it was the best for the time it took and how efficient it was given there far worse PC Architecture... writing a clone as efficient would be no quick task for a single developer.
I still wouldn't class that as OS Development though. That is like someone studying biology from 200 years ago and taking a test in it today. You would fail because that is no longer biology.
DOS is a bootloader with a shell.