Hi again, On Fri, May 4, 2012 at 10:21 PM, Michael B. Brutman <mbbrut...@brutman.com> wrote: > > On 5/4/2012 9:29 PM, Rugxulo wrote: >> In other words, original UNIX (tm) didn't have all the GUIs, >> multi-threading, 64-bit, job control, networking, tons of memory, etc. >> that we take for granted today. Heck, the PDP was 16-bit! > > Grr.
Heheh. > The original Unix didn't have all of the things you list. But the point > was, the original architecture was extensible in a sane way! That's why we still use original UNIX (tm), right? Oh wait, we don't, they've basically rewritten everything dozens of times. It has nothing in common anymore. > You had an > operating system with multiple processes in independent address spaces, The 386 already supported that. > kernel level vs. user space protection, Ring 2, anyone? Anyone? (DPMI easily separated all that.) > a well designed system call API, etc. Not so much. Linux has changed a lot over the years. They've added tons of syscalls. You'd have to check Rod Pemberton's list, hmmm, lemme see if I can quote (part of) it: 56 functions - CP/M 2.2 (39 BDOS, 17 BIOS) 40 syscalls - Linux v0.01 (67 total, 13 unused, 14 minimal, 40 complete) ~120 functions - OpenWATCOM v1.3, calls - DOS, BIOS, DPMI for PM DOS apps. 150 syscalls - GNU HURD kernel 170 functions - DJGPP v2.03, calls - DOS, BIOS, DPMI for PM DOS apps. 206 bytecodes - Java Virtual Machine bytecodes 290 syscalls - Linux Kernel 2.6.17 (POSIX.1) Big difference. And this is why Linux is not a totally stable interface, which is also why it is recommended to stick to libc if at all possible. Sure, I'm not sure how much it changes anymore, but you're "on your own" if you hardcode anything. > Adding a GUI (X windows) was easy - that was an application. Hardly "easy", it's a very very complex beast. > Networking was more integral to the OS, I thought BSD invented TCP/IP? BSD != UNIX (tm). They had a common heritage a hundred years ago but not as much now. > but it used the file descriptor APIs that were already established, > allowing re-use of the existing system call APIs. Dunno, you're the expert there. > Job control was already in the base part of the OS, That's not what I heard. Or maybe it was just that both SYS V and BSD had different ways of doing it, and the BSD won out (in POSIX), not sure. > along with the multi-threading. I don't think that was supported at all for a long time. DEC's Taos was the first to support that (Modula-2+ ??). Oops, Wikipedia says it was Topaz, heh. (And in case it wasn't obvious, Java and Python directly borrowed a lot from Modula-3 [sic], which also had multi-threading built into the language.) http://en.wikipedia.org/wiki/Modula-2%2B > Compare to DOS. Which one?? There are about a dozen. MS-DOS is not the only viable choice, never was. I know most people assume IBM and/or MS, but there are several others (not even counting FreeDOS). > Single address space. No kernel vs. user space protection. On an 8086? 386? Just because it's not in the kernel proper doesn't mean nobody ever did it. Unlike VCPI, which was always ring 0, DPMI indeed often preferred ring 3, which was much saner. This may sound dumb, but DPMI "protected" "DOS" apps from each other, and DJGPP is very very stable. > No ability to keep user space applications from touching > hardware (and trashing it). Sure you can, it's just complex, and there is no easy answer for 100% of uses. > Extensibility encouraged through TSRs in an > ad-hoc manner instead of user space daemons running concurrently. The machines weren't powerful enough. I'm not convinced even 486s could multitask properly. They were just too darn slow and RAM-starved. It's not an accident that hardware keeps getting beefier every year. It's a very difficult task, and people don't like how slow everything is. > It's just not built to be extensible - it reflects the entry level PC > hardware and the needs of home users at the time. It is slightly > extensible, but to continue to bad analogy the foundation of the > building can't support all of the advanced features. Which features? This is what people can't decide. Heck, we can't even decide what cpu. Worst case, everyone assumes 8086, but in reality, nobody assumes that anymore. I know some people still play with old machines, and I have nothing against them, but I'm talking "overall", and for the most part, people using DOS aren't on 8086s, they're on modern machines that (for whatever reason) can't or won't run well for them when using other OSes. I hate to keep pumping DPMI here, but it was a really good solution and widely supported (OS/2, Windows, DOS, Merge, etc). Heck, it was even standardized, twice. It's just a shame that Windows grew less and less interested in keeping it working. And of course, DPMI requires minimally a 286, but 90% of all DPMI stuff is exclusively for 386s. Note that I'm not advocating for making FreeDOS "386" (or 686 or ...) only, just saying, we are allowed to leverage extra features, it's not forbidden! > What is the point here? I'm talking about the structure and base > features of the OSes. Multi-tasking, independent address spaces for > processes, the file descriptor style API, etc. all exist independently > of the compilers and specific applications. We're talking about the > architecture of the building and the foundation, not the curtains. I know you want to pretend it's all standardized and always available, but that's not true. There is no huge continuity available across ten bazillion *nix clones, not even today. They tried to standardize part of it, but that's a mixed bag. > You are making my case for me - PC hardware and DOS reflected what was > available at the time. And as things got slightly better, the new > functions were layered on top of the existing code base, mostly to > preserve backward compatibility. Yes, and what's wrong with that? > Anything that changes that > compatibility might result in a nice operating system, but it would be > hard to call it DOS if it didn't run WordPerfect 5.1 and the various > versions of the Flight Simulator that are out there. Windows didn't seem to mind gradually getting lousier and lousier DOS support! I'm not saying we should wimp out like them. Compatibility is very very important. But a few things could still be fixed, it's not all downhill. > Time out. > > Windows does not use DOS for memory management. Yes it does, just not for "most" stuff. It's all behind the scenes. Would you consider EMM386 part of "DOS" or not? (Yes, I know it mostly avoids that.) Of course you have to do something extra to get at higher RAM. Even the clipboard, I believe, needed to swap to conventional memory. (Even lowly DOSSHELL swapped tasks to conventional memory only, IIRC.) > Windows does not use DOS for semaphores, This I dunno, there are some weird undocumented bits in MS-DOS for various oddball things. So I'm not sure. > task scheduling, etc. Windows does not use DOS for most things. It definitely uses it for file access and shell capabilities, at least Win9x did. Sure, there were add-ons, but you can't say "it's not DOS" just because it's not bundled inside the kernel, can you?? > Yes, those classic versions of Windows used DOS for > bootstrapping and to run DOS applications, but once again it was for > backwards compatibility. Break that compatibility and nobody wants to > talk to you. They *did* break compatibility, just (usually) not on purpose. Yeah, duh, compatibility means a lot, esp. for a closed source atmosphere. I'm surprised that given 2x longer time for DOS apps to emerge, that it's now considered *less* useful than it was back then! And yet we have much *worse* compatibility in Windows (etc.) nowadays. Very annoying. > Win 95 and Win 98 are big pieces of code with lots of function in them. > Once they are loaded and running, DOS is fairly irrelevant. No. They still call DOS a ton behind the scenes. The only reason Win95 came bundled with MS-DOS proper was for marketing, not technical, reasons. It was more or less just a (heavily) upgraded Win 3.1. Seriously, it could (and did) run atop DR-DOS, which (as you probably know) had 0% MS code in it. MS tried hard to fight it, but they literally lost a lot of money in court once that was proven. I have some old floppies with Win 3.0 [sic] on them. It's like two or three. I don't remember if that assumed DOS came with it or not, probably not since they were mostly sold separate. Then I have a bunch of Win95 "upgrade" floppies, and it's like 15 more floppies. Quite a behemoth. If you think you can run Win95 "easily" without DOS, you're mistaken. NT circa 1993 just used too much RAM, so they kept going with Win9x. Actually, I think Win95 was said to run in as little as 4 MB (painful), even on old 386s. But WinXP needs minimum something like a Pentium with 64 MB of RAM. I've run XP atop a P4 (Compaq, 2003 mfgr'd) with 128 MB, and it wasn't really comfortable except for very very light use. Opera worked tons better for very light browsing than Firefox. NTVDM worked fine because most of my favorite DOS apps (even DJGPP) didn't need too too much. But it's a stretch to call XP "lean". Anyways, what was my point? I guess my point is that RAM was always very expensive (and there were a few RAM shortages over the years), hence why push NT when nobody will buy it or can't run it well? Heck, Vista and 7 require at least 512 or 1 GB of RAM just to barely function. So MS didn't push NT until RAM got cheap enough. (Though you could arguably say there was little else they could do with an aging codebase.) Software is heavily tied to hardware. You can't just throw anything you want out there, even if it is (allegedly) "better" or "improved". Sometimes you have to live within your means. The fact that (weird) people are starting to "need" more than 4 GB means 64-bit is getting quite popular, there is no other choice (esp. as MS refuses to support PAE), which means all new drivers (yet again) with a new ABI (incompatible with SYS V, natch). > No, DOS really doesn't multi-task well. DOS doesn't have a concept of > networking. DOS isn't keeping up with BIOS changes, USB, and other > devices that require something more advanced than the original device > drivers we are carrying around. DOS doesn't do 32 bits - DOS extenders > do, in a hacked up kludgey way. No concept of networking? MS NET? Redirector thingamabob? I'll take your word for it, you're the resident expert here for that. 32-bit? You know you can use 32-bit instructions even in 16-bit code, right? You don't need pmode at all, but it does add an opcode override here or there. To use 32-bit segments, you (more or less) need pmode. And DPMI is far from a kludge, it explicitly (esp. in 1.0) uses the 386 in the way it was designed. V86 is not a kludge, and neither is the 386. DPMI is (was?) very popular and stable and well-used. > So where should we spend our time? Dunno. > Trying to recreate all of the modern > conveniences of Linux (32/64 bit support, multi-tasking, networking, > modern device support, etc.) Not all at once, no, but rewriting some things wouldn't necessarily hurt. > or writing some compatibility layer code so > that we can boot our existing OS that runs our existing code? Dunno, easier said than done. > A lot of the DOS applications that we are using date back quite a few > years. Dunno, what's the oldest apps you have? I don't use a lot of apps from the '80s. But I don't need (or want) a lot of word processing, spreadsheet, etc. My uses are more random, not specific requirements. > They need refreshing, and given that a lot of them don't have > source code available it is not going to happen. They don't need refreshing, necessarily, unless they are broken. Lack of source code, fine, but it's very difficult to port Linux-era stuff back to DJGPP (hi Ralf). > Case in point - my > TCP/IP code. Not to throw mud on the existing networking code out > there, but it was pretty old, pretty buggy, and pretty slow. A few > modernized applications can go a long way to keeping DOS useful for people. I have no problem with how DOS works today. I'm not ashamed of it. It works great, and I use it. However, if you want me to say that, "No, we don't need to rethink some things", I can't say that. I don't personally "need" 64-bit or SMP or multitasking to be happy with DOS. Some things are just big dreams, who knows what will happen in the future. (Ask the RDOS guy at OpenWatcom's forum, he's doing some interesting stuff.) But there are still a lot of little things that could be better, IMO. We don't need "another Linux", but (in theory) it wouldn't hurt to support more modern hardware (even if it's difficult or practically impossible, I can dream can't I?). > Once again, where should we focus scarce resources - keeping what we > have running and refreshing some of the apps, or trying to do a complete > redesign from the ground up and re-inventing a lot of code that has > already gone into Linux? We're not redesigning anything. If anything, we just want more robust, more stable, more useful. I'm not saying throw anything away. Yes, refresh all you want, and I'm actively for it (and already done various silly things over the years). I'm just saying ... for instance, would it kill us to support another file system? Would ext2 support be horrible? Is that too much of a dream? Or is that also "reinventing" or wasting time? Linux has 40+ file systems, but I'm somehow silly for suggesting we get one more?? > Anybody can go off and start another SourceForge project. There are > lots out there. But we need another 32 bit "DOS like" operating system > that doesn't run the existing applications like a hole in the head. Nobody advocated for that. I don't care for specific 16-bit or 32-bit or 64-bit at all. It's not about bits, it's about apps. If it works, it works. I'm not arguing change for change's sake. Nor do I believe the hype that 64-bit (vs. 32-bit) is always superior (or 32- vs. 16-bit). I'm just saying, no reason we can't "extend" *some* stuff. > Like it or not, the path for the future is going to be running DOS > inside of virtual machines hosted by an operating system that is kept > current and up to date. Maybe. Though some people think the future is tablets or smartphones. Others think the web (HTML5 + JS) will be the new "platform". Others think netbooks or ultrabooks. In short, nobody knows. Maybe it's all those things. You can't predict the future. DOSBox has already achieved quite a bit, and it's not even real DOS! But we all know it has some penalties (lacks some compatibility, slow as dirt). It's great, it's stable. So nobody can ever fix or improve it? It's frozen forever?? You think there's no room for improvement there?? Gog.com (and a few others) sells commercial software with it bundled, for freak's sake. > It's easier to keep the emulators going than it > is to keep up with all of the device driver and hardware changes that we > are going to need. It shouldn't be that hard. It's just ridiculous (or maybe I'm naive) to think that we have to recompile software across the *exact same x86 machine* for different OSes! Even across 32-bit OSes. It's very silly. And Java is not the answer for various reasons. Similarly for drivers, how many different ways do you have to do the same thing? I know it's 10x more complicated than that, but in theory you don't want to have to rewrite for every minor OS revision, whether DOS or otherwise. > Virtual environments are going to look pretty > attractive when you can't boot a machine with DOS running on the bare > metal in a few years. Obviously, esp. if BIOS dies (like they seem to want). But will there be a suitable alternative, or do they want to split all the developers into ten bazillion other camps (already started)? You shouldn't kill something without something to replace it, but they seem intent on doing that. Speaking of "kludges", welcome to the modern big three OSes, a bunch of server OSes with heavy GUIs and very high RAM requirements. Yeah, they're perfect, nothing needs to ever change ... oh wait, new upgrade available, only $99.95, what a bargain! Look at all those shiny new features! (repeat ad infinitum) I guess it's not "Windows" anymore now that it runs on ARM. And it's not "Linux" anymore since it runs on a tablet. And it's not "Mac" anymore now that they (years ago) switched away from 68000 to PPC to x86, Carbon to Cocoa, Objective-C 2.0, etc. etc. etc. ------------------------------------------------------------------------------ Live Security Virtual Conference Exclusive live event will cover all the ways today's security and threat landscape has changed and how IT managers can respond. Discussions will include endpoint security, mobile security and the latest in malware threats. http://www.accelacomm.com/jaw/sfrnl04242012/114/50122263/ _______________________________________________ Freedos-devel mailing list Freedos-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/freedos-devel