Modern 64-bit DOS Idea
Posted: Sat Oct 03, 2020 7:03 am
I used to have an account here about 10 years ago when I briefly got into OS dev. I have not since written any assembly so my skills and knowledge are limited.
I have this idea for an OS:
OK, so for a long time I've wanted an OS like this and I decided to make this post to see if other people agree.
I've only programmed a very basic real-mode OS before, so I don't think what I am going to put down here will actually be something that I will be capable of. I can make a real-mode OS pretty easy because I rely on the interrupts. But to make a protected mode OS, I have no idea.
Anyway, here we go:
My ideal OS would be best described as a majorly updated and improved version of DOS. Everything is CLI except for the programs and apps themselves.
It's essentially what DOS would be like now if Windows never happened. The main goal is to make an OS where 3D graphics applications and games can run as efficiently as possible.
The filesystem would be very simple FAT with no permissions, no user accounts, no BS. This part would be kept traditional to focus more energy on the purpose. There's nothing wrong with FAT now that we have SSDs.
Everything runs in ring 0.
It would be protected mode written in x64 assembly/C and have VESA support by default.
It would have an easy programming interface for OpenGL (maybe SDL) integrated into the built in compiler.
The default CLI would be rendered in a VESA screen mode for more space.
There are no windows. The screen would be divided in two unequal parts horizontally. One third on the bottom is the CLI and the extra 2/3 on top is the application. This gives access to the interface while the program is running. A key can be pressed to make either of these "windows" full screen. When a text based app is running, the CLI is full screen by default. As soon as a GFX app is started, the screen becomes split.
It will be a single tasking OS, but with the ability to switch tasks. If you press Home, the CLI outputs the list of programs in memory with highlight on the current running process. You press Page-Up, Page-Down to switch to another app. Each process has a number next to it. You can run up to twelve apps and can press the F keys to switch quickly. Maybe it could have TSRs for certain background processes, but the idea is that there are no services running in the background, so as long as you're not running a disk accessing app, you can just switch off the PC with no harm like DOS.
The system has a built in BASIC compiler. Yes, compiler, not interpreter. It would run as fast as C. The BASIC language is built into the CLI. It has normal DOS like commands for file manipulation, but then it also has the commands of a full programming language. The emphasis of the language is on OpenGL graphics. It has built in functions to make programming OpenGL easy. The idea is to make it like a much more modern version of QBASIC. It has that immediate feedback of creating 3D graphics easily.
The OS would essentially be recreating old fashioned home computers/consoles using modern hardware and graphics. You can make games and other graphical based applications easily without the headache of compiler problems because most features are built into the language. I am blown away that there is no OS like this. All modern OSs seem to focus on having a GUI. This OS may provide some API for buttons, etc. but the OS itself will be entirely command line. If the command line is made very powerful, it will be more efficient to use than a GUI based OS. Yes, GUIs help the beginner get acquainted with the OS more quickly, but in the long term, the speed of use is actually much slower than typing in commands. And of course a GUI could still be created for certain users, but it would run as a separate system like it would on DOS.
There is currently NO OS like this at all. I guess the closest would be TempleOS, but even though the philosophy is correct, the execution is terrible and the UI is a clusterf*ck. The three most common OSs we all know (Windows, Linux, MacOS) are all bloat bombs and do not really cater to the hobbyist programmer. They cater to the masses. Linux used to be like this, but it never truly had the right philosophy. The correct philosophy is one of elegance and simplicity.
I have this idea for an OS:
OK, so for a long time I've wanted an OS like this and I decided to make this post to see if other people agree.
I've only programmed a very basic real-mode OS before, so I don't think what I am going to put down here will actually be something that I will be capable of. I can make a real-mode OS pretty easy because I rely on the interrupts. But to make a protected mode OS, I have no idea.
Anyway, here we go:
My ideal OS would be best described as a majorly updated and improved version of DOS. Everything is CLI except for the programs and apps themselves.
It's essentially what DOS would be like now if Windows never happened. The main goal is to make an OS where 3D graphics applications and games can run as efficiently as possible.
The filesystem would be very simple FAT with no permissions, no user accounts, no BS. This part would be kept traditional to focus more energy on the purpose. There's nothing wrong with FAT now that we have SSDs.
Everything runs in ring 0.
It would be protected mode written in x64 assembly/C and have VESA support by default.
It would have an easy programming interface for OpenGL (maybe SDL) integrated into the built in compiler.
The default CLI would be rendered in a VESA screen mode for more space.
There are no windows. The screen would be divided in two unequal parts horizontally. One third on the bottom is the CLI and the extra 2/3 on top is the application. This gives access to the interface while the program is running. A key can be pressed to make either of these "windows" full screen. When a text based app is running, the CLI is full screen by default. As soon as a GFX app is started, the screen becomes split.
It will be a single tasking OS, but with the ability to switch tasks. If you press Home, the CLI outputs the list of programs in memory with highlight on the current running process. You press Page-Up, Page-Down to switch to another app. Each process has a number next to it. You can run up to twelve apps and can press the F keys to switch quickly. Maybe it could have TSRs for certain background processes, but the idea is that there are no services running in the background, so as long as you're not running a disk accessing app, you can just switch off the PC with no harm like DOS.
The system has a built in BASIC compiler. Yes, compiler, not interpreter. It would run as fast as C. The BASIC language is built into the CLI. It has normal DOS like commands for file manipulation, but then it also has the commands of a full programming language. The emphasis of the language is on OpenGL graphics. It has built in functions to make programming OpenGL easy. The idea is to make it like a much more modern version of QBASIC. It has that immediate feedback of creating 3D graphics easily.
The OS would essentially be recreating old fashioned home computers/consoles using modern hardware and graphics. You can make games and other graphical based applications easily without the headache of compiler problems because most features are built into the language. I am blown away that there is no OS like this. All modern OSs seem to focus on having a GUI. This OS may provide some API for buttons, etc. but the OS itself will be entirely command line. If the command line is made very powerful, it will be more efficient to use than a GUI based OS. Yes, GUIs help the beginner get acquainted with the OS more quickly, but in the long term, the speed of use is actually much slower than typing in commands. And of course a GUI could still be created for certain users, but it would run as a separate system like it would on DOS.
There is currently NO OS like this at all. I guess the closest would be TempleOS, but even though the philosophy is correct, the execution is terrible and the UI is a clusterf*ck. The three most common OSs we all know (Windows, Linux, MacOS) are all bloat bombs and do not really cater to the hobbyist programmer. They cater to the masses. Linux used to be like this, but it never truly had the right philosophy. The correct philosophy is one of elegance and simplicity.