OK, so from 1985 with Windows 1.0 until 2001 with the release of Windows XP, consumer versions of Windows were built on top of MS-DOS. For the latest releases -- Windows 95, Windows 98, and Windows Me -- DOS was bundled together with Windows to make a complete operating system product. But before then, up through Windows 3.11, you had to say 'win' at the DOS prompt to get into Windows.
But the thing you have to remember is that DOS was barely an operating system. It had a rudimentary file system, support for a single process, and no memory protection to speak of at all. You could bypass the OS altogether to directly access the hardware; most DOS applications, especially games, did just that for everything except file access. So Windows actually provided a lot of operating system functionality that DOS didn't and called down into DOS routines for file access.
(In fact, you could even chainload an operating system like Linux from DOS. A program called LOADLIN.EXE let you load and run a Linux kernel from the DOS command line; combined with special file system support called 'umsdos' that overlaid Linux file semantics on top of the DOS FAT file system, this meant that you could run full Linux, from DOS, in your existing DOS partition!)
But even then -- starting in Windows 3.1 (or 3.11, I forget which) a new feature emerged called "32-bit disk access". Windows provided its own routines to handle the DOS file system while it was running, eliminating the need to call down to DOS at all. This was optional on Windows 3.x but the default on Windows 9x (including Me). So DOS was relegated to the role of a bootloader for Windows and a compatibility layer you could escape to for the old DOS programs people still wanted to run (like Doom, Duke Nukem 3D, and such).
So Windows started off as a layer on top of DOS, which was command-line driven, but once loaded it became most or all of a graphical, multitasking operating system in its own right. And it had its own, built in window manager; matter of fact it had more of one than Mac OS, in which user application code had to handle things like moving, resizing, and closing windows (for which utility functions were provided).
Windows NT, which consumer versions of Windows from Windows XP onward were built on top of, has existed since 1993 and that's its own thing, having a 32-bit fully preemptive multitasking kernel with memory protection, user permissions, and the whole bit. It was used primarily in server applications before Windows XP.
I did some debugging of a embedded RTOS program under DOS. I had compiler switches so I could compile it for the target or DOS. The latter was way easier to debug.
No worries. I keep forgetting how old I am, and that the DOS underpinnings of early Windows may be completely unknown even to those of my successors who work in computing. An entire generation has been born, grown up, graduated college and entered the workforce without having ever seen a DOS-based Windows.
The earliest Windows I used was Windows 95, I remember the "Ski Free" game or whatever it was called, been posted about it on HN a few times. It wasn't until Windows Millenium Me that I really started using a computer daily though, which was an awful OS.
Aside:
You reminded me of my first time using Linux, it was Slackware and I had to type "startx" after logging on to get to the GUI.
I still boot the GUI by hand from the shell. I love the feeling of control it gives me, like I don't have to have that stuff running until I want it. And I was a Slackware user until fairly recently. I use Void, btw. :)
OK, so from 1985 with Windows 1.0 until 2001 with the release of Windows XP, consumer versions of Windows were built on top of MS-DOS. For the latest releases -- Windows 95, Windows 98, and Windows Me -- DOS was bundled together with Windows to make a complete operating system product. But before then, up through Windows 3.11, you had to say 'win' at the DOS prompt to get into Windows.
But the thing you have to remember is that DOS was barely an operating system. It had a rudimentary file system, support for a single process, and no memory protection to speak of at all. You could bypass the OS altogether to directly access the hardware; most DOS applications, especially games, did just that for everything except file access. So Windows actually provided a lot of operating system functionality that DOS didn't and called down into DOS routines for file access.
(In fact, you could even chainload an operating system like Linux from DOS. A program called LOADLIN.EXE let you load and run a Linux kernel from the DOS command line; combined with special file system support called 'umsdos' that overlaid Linux file semantics on top of the DOS FAT file system, this meant that you could run full Linux, from DOS, in your existing DOS partition!)
But even then -- starting in Windows 3.1 (or 3.11, I forget which) a new feature emerged called "32-bit disk access". Windows provided its own routines to handle the DOS file system while it was running, eliminating the need to call down to DOS at all. This was optional on Windows 3.x but the default on Windows 9x (including Me). So DOS was relegated to the role of a bootloader for Windows and a compatibility layer you could escape to for the old DOS programs people still wanted to run (like Doom, Duke Nukem 3D, and such).
So Windows started off as a layer on top of DOS, which was command-line driven, but once loaded it became most or all of a graphical, multitasking operating system in its own right. And it had its own, built in window manager; matter of fact it had more of one than Mac OS, in which user application code had to handle things like moving, resizing, and closing windows (for which utility functions were provided).
Windows NT, which consumer versions of Windows from Windows XP onward were built on top of, has existed since 1993 and that's its own thing, having a 32-bit fully preemptive multitasking kernel with memory protection, user permissions, and the whole bit. It was used primarily in server applications before Windows XP.