How to create DOS system?

Yes, the ye oldie Disk Operation System which I could
fill with a lot of tools, bombs, viruses, ---- pics and what not.
That will back me up when computer explodes.

When I tried to Google: https://www.google.nl/search?q=How+to+make+DOS
It shows me how to boot DOS from USB. Not how to create it.

Why DOS? It is fast (doesn't waste time on desktop and all all other crap), plain, looks professional, is 100% editable and I like using command lines. In most cases, I prefer xmove in place of Cut & Paste.

So, how to create this? Just like it looks in DOSBOX.
Is there like language, or tutorial you know?

Recommended Answers

All 17 Replies

If you are talking about MS-DOS 6.X and earlier, you don't "creat it". You get it from Microoft, assuming they still have it. There's also Dr DOS, which is MS-DOS like. But neither are supported any more because they're too old and nobody uses them. Here is a link that tells about the various versions and who write them.

You can still buy MS-DOS 6 from amazon.com for $70.00 USD

I prefer xmove in place of Cut & Paste

Windows File Explorer can do something like xmove.

Yes, you can write your own, but since you mentioned xmove.exe I assumed you wanted MS-DOS. Be prepared to write assembly language.

Why on Earth would you want to recreate DOS? DOS was terrible when it came out, and now, it belongs in a museum. Like neanderthals, it's a relic of the past, and a misfit that was doomed for extinction.

If you want a real powerful command-line operating system, you need to look at Unix-like systems, such as various distributions of Linux or BSD. The set of tools and commands available in a "bash" or similar shell environment on Unix-like systems dwarfs the pathetic features of the DOS environment.

Why DOS? It is fast, plain, looks professional and is 100% editable.

DOS is neither of those things. Well... "plain" maybe. DOS is slow, feature-deprived, unprofessional, substandard, and closed-source.

So, how to create this? Just like it looks in DOSBOX.

Well, DOSBox is an open-source project, so, you can just look at that code, that's gonna be a pretty good start. And, how it looks (and it just looks like any other command-line OS) is not really important. In an operating system, what really matters is the kernel, the API, and the shell environment (e.g., bash). That's the stuff that is really hard to re-create. As far as I know, DOSBox just uses the underlying OS for its kernel functions, and then, replicates the MS DOS API and command-line environment (CLI) that faces the user. The MS DOS's API and CLI are among the simplest of all OSes (i.e., also the most pathetic in terms capability and features), so, that makes it a somewhat easy candidate to build from scratch.

That will back me up when computer explodes.

Then DOSBox is not really a good example because it is an emulator, meaning that it runs on top of another operating system (Linux, Mac or Windows). That won't do you any good as some kind of doomsday insurance policy (whatever that means). The DOSBox is only as good as the underlying OS, and it is not meant to be anything more than an emulator allowing you to run some antique (DOS-only) programs or to have a nostalgic moment surfing the DOS CLI.

If you want a doomsday OS, or something like that, it will have to be a complete OS, with it's own kernel and everything. That's a huge project to undertake, regardless of how simple the "interface" is (e.g., a command-line interface). I would just tell you to go for a Linux distribution. For example, I guess what you could call my "doomsday OS" is a LiveUSB of a Linux distribution which I can use to boot into from almost any computer, as I have done before (recover data from busted computers by booting into it). And if you take an old computer and turn it into some sort of backup doomsday server, pick a robust server version of Linux and that will do the trick very nicely.

Is there like language, or tutorial you know?

In general, for OS development, the main language used for most of the programming is "C". You might find some C++ as well in the higher-level layers. And you will usually see a lot of Assembly code as well in the lower-level layers (i.e., for the very performance-critical aspects). But, in general, the name of the game in kernel or OS development is C.

As for tutorials, I have no idea. But Linux from scratch could be a good place to start, or at least, a first good exercise in creating an OS from scratch.

@Ancient_Dragon xmove.exe was just example.
@mike_2000_17 @edit 1 - I had text for you, that I deleted. But I found my mistakes. I thought that DOS, was as fast and modifable as LFS terminal.

@edit 2 - Totally out of bomb. Does LFS support all computers? With video card problems, harddisk problems and all that stuff. Considering I will put LFS on USB.

@edit 3 - Took peek on book, which introduces step by step, how to do it. And I've gotta tell Bash is so much better than Batch.

Does LFS support all computers?

Pretty much, yes. Far more computers than MS DOS or Windows supports. Windows pretty much just supports x86 / x86-64 architectures. Linux systems support (or can be made to support) pretty much every exotic hardware you can think of. I would imagine that MS DOS (or a clone thereof) would support far fewer platforms even.

With video card problems

If what you are aiming for is a pure terminal / command-line operating system, then video card support won't matter. Such an operating system can run off the display functions of the BIOS directly, which means that it does not need graphics card drivers at all. That said, graphics drivers for Linux are now pretty good (with most companies providing proprietary Linux drivers), so that problem is mostly "behind us" at this point, but there could still be some problems, but nothing that will prevent things from working. And if you don't need a GUI, then this is a non-issue.

The only other thing you could have trouble with are wireless cards. This is one of the remaining problematic hardware. I would say that probably 95% of wireless cards will work out-of-the-box with Linux, but some are still a problem. And that is something you might want to have, even in a command-line operating system.

harddisk problems

There are no hard-disk problems with Linux. Most of the file-system drivers and kernel modules that Linux uses come from the development of server / mainframe versions of Linux, which is used on roughly 80% of all servers in the world. In other words, these are rock-solid modules. Far more solid than anything Microsoft has ever produced. This is part of the reasons why Linux and Unix-like OSes are so popular in critical infrastructure and data security.

The only problems that can occur from time to time is if you are using very recent hardware, because Linux development will always lag behind a little bit (i.e., they don't enjoy the benefits of the manufacturers producing appropriate drivers, as they do for Windows). So, this is why there have been some issues recently with SSD hard-drives that aren't detected, and things like that. But usually, these issues get sorted out pretty quickly after a particular new technology becomes mainstream.

And remember, about hardware driver issues, when you create a linux from scratch, you compile the kernel, and so, you pick all of the modules and drivers that will be baked into it. This means that you will be able to make almost anything run. Most of the time with driver issues, the problem is that the particular version of Linux that a person has does not have the required drivers (the Linux version is too old, or the driver is too exotic (or "beta") to be included by default). When you build Linux from scratch, you cannot have that problem, because you hand-pick all your drivers / kernel-modules, that's kind of the point of doing an LFS setup (for reasons other than for fun!).

And I've gotta tell Bash is so much better than Batch.

Yeah. Batch does not even come close to comparing to Bash. One can have interesting arguments when comparing Windows PowerShell with Bash, but Batch/DOS is pathetic.

Personally, under Windows, I just use Cygwin for all my command-line needs. Cygwin is a great environment as well, if you are not aware of it, it's basically a Linux/Unix emulator for Windows. It's sort of like DOSBox, but with GNU/Linux/Unix environment instead of DOS.

(nothing)

If you want to figure out how to write your on DOS (Disc Operating System), look at FreeDOS - an open source version of MS-DOS: http://www.freedos.org/

FreeDOS is too heavy. I tried to install it and after restart it said

"partition signature != 55AA"

Which blows my mind. Because it looks for me like hexadecimal number, when for someone else it's way to say "He effed it up".

Pretty much, yes. Far more computers than MS DOS or Windows supports. Windows pretty much just supports x86 / x86-64 architectures. Linux systems support (or can be made to support) pretty much every exotic hardware you can think of.

It does not support far more. I had tried Linux on 2 PC's and 1 laptop. All 3 had problem with screen drivers, and laptop had problem with wireless driver. Windows supported it all.

This is what I exactly wanna learn how to do:
http://distro.ibiblio.org/tinycorelinux/welcome.html
Nothing just pure, fast, modifiable with possibly colored text.

except, this is ready steady OS, I want to learn how to build one, and create programs myself, I could use as backup. When real host OS fails.

I had a similar problem with a laptop, no screen or wifi driver.

FreeDOS is too heavy

How big a hard drive is in that computer? old DOS and FreeDOS don't dupport anything larger than about 2 TB (according to this link)

How big a hard drive is in that computer?

Look. It is not supposed to be as I think you think I think it should be.
I would like to learn how to make terminal-only operation system, which I would like to fill with all kinds of scripts. Which will help me for example,
when Windows can't boot up.

I kinda want to use it as "home made Rescue CD" except, this will be "home made Rescue USB".

I want it to place on USB, boot it from USB and repair "any" computer.

The way DOS have ever worked, except entertainment, science and business purposes.

"partition signature != 55AA"

This error has nothing to do with FreeDOS or any other OS. This is an error message issued by the BIOS to tell you that your partition table is corrupt. This means that you either have an unpartitioned disk or that you have corrupted the master boot record of your hard-disk. In other words, you seriously messed-up on the installation of FreeOS or whatever else you did to your hard-drive (or USB drive). Did you forget to make your USB drive bootable? USB drives are not bootable on their own, they need a master boot record (MBR) to become bootable.

It does not support far more.

It depends what you mean by that. "computer" is a general term, if by that you only mean desktop PCs and laptop PCs, then, no. PCs are sold with the intent of running Windows, and all the hardware manufacturers need to provide Windows drivers for their hardware in order to be useful at all. That's the only reason why Windows works on all PCs, because all PCs are made to work with Windows. If you talk about computer systems in general (PCs, micro-PCs, micro-controller, embedded systems, servers, mainframes, industrial controllers, etc..), then Linux supports or can be made to run on virtually every piece of hardware that exists, while Windows is limited to PCs that use one of a few Intel instruction sets. That's what I meant.

If you want to be building an OS from scratch, you are going to have to worry about exactly what instruction sets you are targeting. That's why I thought that was your question.

All 3 had problem with screen drivers, and laptop had problem with wireless driver.

Yes, as I mentioned, graphics card drivers and wireless card drivers are the two most notorious places where you can encounter problems. In my experience though, the problems with those things are generally limited to those things not working "out of the box", but they're nothing that a little bit of tweaking and know-how won't fix. Recent graphics drivers from all three graphics card manufacturers (Intel, AMD, Nvidia) are now (since a few years) very good. You will have to compile the graphics driver for your custom kernel, if you create one, and therefore, the responsibility lies on you to do this correctly and to select the right drivers and configurations. When you do a LFS (Linux from scratch), you can't complain if things don't work "out of the box" because you are the one packing that box, and that's the point.

Oh, and if you write an OS from scratch (completely from scratch), then you will have to write drivers for everything. The BIOS is essentially the only thing that works on itself (it's firmware), for everything else, you have to write your own drivers for. And like I mentioned before, the graphics card drivers are the last of your concern if you are talking about a command-line OS, because it does not require a graphics card at all (in fact, you don't even need a screen, keyboard, or anything at all, these are all secondary concerns).

Windows supported it all.

That's inverted. It's not Windows that supports it all, it's that all the hardware supports Windows. That's an important distinction. Because of the quasi-monopoly of Windows, Microsoft doesn't have to do any work to "support the hardware", but all hardware manufacturers have to make sure they do all the work necessary for their hardware to work on Windows. That's what being the biggest fish in the pond buys you.

except, this is ready steady OS, I want to learn how to build one, and create programs myself, I could use as backup.

Creating a complete OS from scratch is pretty insane. I would recommend that you first study the architecture of kernels, both from a theoretical point-of-view (i.e., books), and from a practical point-of-view (e.g., look at source code of Linux or FreeDOS, do a LFS, etc.). And then, find the parts that most interest you (task scheduling, file systems, virtual address spaces, process management, etc..) and concentrate on those pieces until you can manage to build up something more complete. The important thing here is that this is a colossal, piece-by-piece process, and will require very deep understanding of computer architecture, optimizations, and concurrent programming.

@Mike_2000_17 How about stop snapping my text apart. And start combining senses of my text. You are answering sentences/questions/statements that are totally insane without outlying text.

I don't want to create full OS, because as you mentioned yourself, it's insane. I only need command prompt.

I haven't booted it on real computer. I used VMware Player.

Rik, if you want to run FreeDOS, run it in a virtual machine. It thinks it owns the hardware, so DO NOT try to run it directly on your computer. I've had no problems installing it in a VirtualBox VM. Tell VirtualBox that the Type is "other" and Version is "DOS".

Nah, I think, that I will create it as LFS.

Option has been chosen. Thanks all for helping.

Be a part of the DaniWeb community

We're a friendly, industry-focused community of developers, IT pros, digital marketers, and technology enthusiasts meeting, networking, learning, and sharing knowledge.