|
DOSBox is actually a PC emulator. A large number of operating systems work to some extent in DOSBox, including many versions of Windows. There's not really a need to create a "WinBox", though you might want to lend a hand to the DOSBox crew if you can improve Windows emulation in DOSBox. As for MacBox, although DOSBox can't emulate non-PC (6502/PPC-based) Macs, there are some pretty good Macintosh emulators already.
Then there's virtualization. The need to emulate most PC operating systems on a PC is largely negated by virtualization suites, which allow you to run one operating system while using another. For instance, I can run a copy of Windows 95 while using Windows XP if I have a copy of Windows 95 and virtualization software. An emulator is almost certainly going to require you to have a copy of the operating system that you want to use anyway, because emulating a full-featured operating system -- including a Graphical User Interface -- would be nearly impossible. DOS was a simple command-line operating system, but writing an emulator that lets you run Windows 3.1 programs without a copy of Windows 3.1 would be a daunting task. Even ancient Windows 3.1 had a complex API (Application Programming Interface) and Registry. Imagine having to also emulate DirectX without having a copy of DirectX, which you would need to write a Windows 95 emulator. So, if you have to have a copy of the operating system anyway, why not just run it in a virtualization suite?
The biggest reason to use an emulator instead is if you want to run the operating system on a different kind of computer than it was designed for, like if you wanted to run Windows on a non-PC Mac or vice versa. The system you're running always has to be more powerful than the system that you want to emulate, so running Windows 95 on a 6502-based Mac is impossible, and running Windows Vista on a PowerPC-based Mac is highly improbable, even with a dual processor G5 server. Some systems simply can't emulate other systems because they're not powerful enough. If you want to run Mac software on a PC, however, that can be done, and has been done, and will continue to be done. There are Mac emulators. But let's say that you want to write your own emulator anyway.
The phrase, "once I learn how to write code" suggests that you aren't currently a programmer. I've been programming for almost 20 years and there is nothing that I could contribute to DOSBox. My skills extend as far as making simple games and applications, and I'm satisfied with that. Anyone can get good enough at programming to make simple programs and games. An emulator is a highly technical program that translates CPU opcodes (the basic instructions that represent the operations that a CPU can perform) into instructions that can be performed by a different CPU (like an Atari 2600 emulator that uses x86 Assembly language to run on a PC) or a general CPU (like an emulator that uses C to make an emulator portable to any other computer). DOSBox is an example of the latter, taking x86 instructions and converting them into C instructions, which is kind of odd when you realize that you're using an x86 to emulate an x86. It's like writing a NES emulator for NES, or a PSP emulator for PSP. Why would you want to do that? Well, while I'm sure that most DOSBox users are running DOSBox on a PC, using C allows DOSBox to be ported to other computers like non-PC Macs, handheld computers, the Sony PSP, even potentially cellphones.
That last paragraph was long and technical. My point was that emulators require a highly technical knowledge of the system being emulated, and the Assembly or C instructions that would perform that task on another system. With dedication, you might be able to write an emulator by yourself. Some of the video game emulators were written by a single person (though they may have had help from the open source code of other emulators). Emulating a system that has lots of hardware is almost impossible to do alone. Emulating the Super Nintendo, for instance, requires emulating the extra hardware that was added to some games, such as the Super FX chip. Emulating a PC or Mac is even harder because there were many generations of hardware upgrades (and they were more sophisticated than video game consoles to begin with because of extra hardware like floppy drives and hard drives). To emulate the PC means to emulate the CPU, at least half a dozen video cards (MDA, Hercules, CGA, EGA, VGA, 8514, SVGA, etc.), several sound cards (AdLib, Sound Blaster, Gravis Ultrasound, etc.), the floppy disk controller, different data bus architectures (IDE, SCSI), serial and parallel communications standards (UART 8550/16550, etc.), modems, network cards, and more types of hardware than I can think of. Some of those things are beyond the scope of the DOSBox project, but they would be needed in a Windows emulator. A 32-bit Windows emulator that can't connect to the internet wouldn't be much value to me. The scope of PC emulation is enormous and probably too ambitious for any one person. To attempt such a project, you would have to join or assemble a team.
My point in writing all of this isn't to discourage you from your dreams. I suspect from your capitalization of every word that you're a reasonably young person. Learning how to contribute to a mature emulator like DOSBox or MAME or MESS could turn an amateur programmer into a professional, and would likely make you highly sought after by technology companies. The people who contribute to those projects are very good programmers, and they worked hard for years to get that way. If you go around making ambitious and improbable claims -- such as announcing that you're going write to a Windows or Mac emulator by yourself -- on most forums, you'll get flamed to death. If you write the bigwigs from a project like MAME and announce that you're going to contribute something incredible (completing the Model 3 emulation would truly be a gift to humanity) before you know anything about programming an emulator, they might tell you to get lost, or they might mess around with your computer to put you in your place. I'm not attributing malice to those guys, but they're basically super hackers and they could certainly put a scare into a noob if they wanted to. They would have no trouble telling you where you live, what your phone number is, and maybe find a picture of you on your hard drive and Photoshop it to make it look like one of your parents was a warthog. Computer programmers are famously willing to help one another, but notoriously unwilling to waste their time on peers who fall too short of their own skill level. After all, why should they teach you when someone closer to your own level could?
So, I hope this was educational and gave you realistic expectations rather than discouraging or offending you. It's for your own good that I'm advising you not to make overly ambitious claims on internet forums. A lot of people will use the anonymity of the internet to flame you pretty hard. Some people just love to put others down. You might show them all one day, but if it takes years, how will you find them to rub it in their faces? I hope that you do achieve your programming goals, but take the first steps before you start focusing on the end of a very long road.
_________________ Today entirely the maniac there is no excuse with the article.
|