natiiix wrote:Schol-R-LEA wrote:For example, why do you want to write an OS ?
I've said that too. I want to develop certain user application which are very difficult to make on Windows or Linux as they involve things you can't do particularly easily in either one of those systems due to their high-level-ness.
Actually, this is the first time you have mentioned having any specific applications in mind (I just checked; I didn't recall you saying this, so I went over every post you've made previously to find it, and I don't see it). That does give me some idea of things, though I am now curious as to what sort of applications you mean, and why they weren't possible or satisfactory under the two systems you mentioned (I'm not doubting the assertion, I just want to understand why).
natiiix wrote:So basically I want to create an OS with bash-like text interface and some basic programs such as a file explorer and text editor, both made the way they used to work in the DOS days. (pseudo-GUI in text mode)
I don't intend to implement anything like networking, mouse (even though mouse support existed in late DOS days) or fancy graphical mode.
OK, knowing that helps.
natiiix wrote:And yes, I indeed am doing this mainly "for the sake of it", there is no superior motive.
Nothing wrong with that. If anything it probably makes it easier to help you than it would if you had some specific, overarching ambition that exceeded the knowledge of the other members.
natiiix wrote:Schol-R-LEA wrote:Similarly, "what parts of the OS primarily interest you?" would give us a better idea of what you want to focus on. I will warn you that most of the posters here are focused mainly on the kernel and drivers, so you may have trouble getting help on things like UI - we do have plenty of people who know them well, also, but there are some here with a bit of a 'UX isn't OSdev' attitude which can get in the way.
That's strongly related to the previous question. I'm mainly interested in creating the very basic user interface in text mode while trying to abstract myself from the hardware as much as possible (as ironical as it might seem while talking about OS development).
I don't really need help with the interface itself, it's just the drivers that bother me, because I've never been all that interested in hardware.
OK, then, that clarifies a lot. However, I think you'll find it difficult to abstract the hardware away before you implement either an abstraction layer, or the low-level drivers to fit into said layer; and if your goal is to have abstraction without a defined abstraction layer or interface, uhm... got nothin', sorry.
I'd almost be tempted to recommend an exokernel approach, except that the necessary virtualization for an exokernel requires a
lot of low-level work - and the whole idea of exokernels is to
avoid abstracting the hardware, and instead have each 'application' basically be a slew of independent libraries, which is sort of at cross-purposes for what you seem to want.
OTOH, if you want abstraction but don't want a lot of layering overhead... well, you could try something like
Synthesis, I suppose, though you really can't do that kind of design in C++ (the original was written in M68K assembly, and a high-level language implemention would almost certainly have to be in a homoiconic language like Lisp or Smalltalk), and again, it requires a
very detailed understanding of the hardware
and of advanced code generation techniques. I am one of the few people here right now crazy enough to consider that, and trust me, it
is crazy.