Sure - but I think the title is referencing the fact that 640K is the minimum required for a basic DOS system to run. Using that system you can write code for fun that would by definition fit in 640K.
Probably not this. 640k was actually the maximum amount of memory available for a user's DOS applications on an IBM PC or clone. There were many PC's sold that had only 64k of use-accessible RAM. It was only in later years, as memory got cheaper (and apps "ballooned") that machines maxed out at the 640k limit. With the 16-bit system the actual CPU-addressable limit was 1024kb (or 1MB), but the difference was reserved for use by the system for things like the ROM BIOS, graphic adapter bios, etc.
My memory is vague on this, but I believe the core DOS commands (e.g., copy) were part of the ROM BIOS (or maybe they were just always loaded into non-user-accessible RAM as part of boot). So they were always present and did not affect available user RAM. The non-core DOS commands (e.g., xcopy) had to be loaded into user RAM to run. What's more, if you had a diskette-based system (i.e., no hard drive), you would have to load the floppy diskette that had the particular extended DOS command you wanted to run, before you could run it (because it had to be read off the diskette).
640k is not maximum available to applications, but the maximum amount of RAM that would fit into PC, restof the 1MB address space was reserved for ROMs and memory mapped IO.
No dos commands were normally part of ROM. In fact even command.com was designed such that large part of it could be thrown away if additional memory was required and then reloaded from disk when user program terminated (this was implemented by relocating the "transient" part onto the end of usable address space and detecting whether it was overwritten by user programs). Larger DOS file managers usually use similar approach, but simpler: the UI is implemented by separate binary that simply records what the user wants to run somewhere and then exits passing control to small stubbinary that starts requested program and restarts the UI when the program ends.
Edit: MS-DOS 2.0's command.com detects that the transient part was overwritten by means of single byte checksum. The reason why it is done in this somewhat hackish way is that DOS allocates all of the available memory for most MZ EXE programs regardless of how many they actually use (MZ header specifies minimum and maximum amount of unitialized memory needed, with no maximum being the default).
The minimum memory that IBM offered in the original PC was the 16KB my first PC came with. I upgraded it to 64K right away, but DOS certainly ran in the 16K configuration.
DOS is only "real time" if you don't do disk I/O. Disk I/O is synchronous.
There's something to be said for using FreeDOS simply as a loader for a real-time control program. It's not doing anything in the background. There's no networking stack. There's no way to attack it without physical access.
Filesystem IO through DOS APIs does not have bounded execution time by design (it can even cause user interaction, ie. the infamous "Abort, Retry, Ignore?"). On the other hand the timing is pretty consistent in non-error situations.
Also synchronous (and also often non-preemptible) disk/FS IO was for the long time the only way it was done. For example the reason that on Linux process that got stuck accessing NFS or removable drive that got removed was unkillable (in 'D' state) was to preserve illusion of such semantics to user processes (ie. that IO to filesystem and block devices will never fail with EINTR). And I would not be surprised if many deeply-embedded RTOSes do the same to this day.
True, DOS and BIOS interrupt calls stopped your program until complete, this lag was however fairly consistent and in the order of a few milliseconds on newer machines so could be used in higher latency real time control. "Proper" DOS real-time control generally used assisting hardware to buffer/offload processing or did not use the INT calls using interrupt driven system to make it real real-time, all DOS programs could be "Bare-Metal" if you did not use any DOS/BIOS INT calls which were generally written in assembly and not interrupt friendly.
Also having no network stack or USB stack is pretty limiting these days. I'm sure FreeDOS can implement these, there are definitely DOS drivers out there for older network cards to get TCP/IP up and running and there was always serial modems which we used extensively in "the old days" (pause while audience cringes!)
Being cut-off from the outside world is of course security bliss but the PC still needed to be physically secure as there were no passwords/encryption and remote maintenance is not an option.
I've searched a while for an IBM-compatible RTOS that gives your application direct access to the hardware. There are better alternatives than FreeDOS.
A glaring omission is access to long mode. There's no DPMI for long mode. You can knock the PC into long mode, but DOS calls are no longer accessible in any fashion.
As for the alleged Bill Gates quote, I read somewhere (Deep C Secrets by Peer van der Linden, I think, but I am too lazy to look it up), that "640k ought to be enough for anyone" did not mean that it was enough for anyone for all times. I am not a fan of Bill Gates, but he is not stupid. And at the time he - allegedly - said it, 640k of RAM was (for a single user!) was indeed a lot! Compare that to the 64k of the C64. It is idiotic to think that he meant that 640k would be sufficient 30 years in the future.
That being said, I actually did install MS-DOS 6.22 on three computers over the last couple of years, because the company I work at does - among other things - industrial automation, and (at least) one of our customers has a plant built with automation technology that can apparently only be programmed and configured with a program running on DOS. And it must do some rather funky things, because the software will reliably fail to talk to the PLC if it is running in a virtual machine or on FreeDOS. And of course the company that has written this software has gone out of business a long time ago, so there won't be any updates, either. ;-) If I didn't have more important things to do, figuring out why it does not work on FreeDOS could have been a lot of fun, but just installing MS DOS was the faster solution.
Still, installing DOS these days is an interesting experience. The whole system comes on three floppy disks, the installation procedure takes about 15 minutes, and the freshly installed system boots up in about 30 seconds, including the BIOS doing its thing. Admittedly, you cannot do very much with it without additional software.
Three floppy disks - that is about 4.5 Megabyte, Ladies and Gentlemen. Today's high end CPUs have as much L2 cache, or more.
And primitive as it is, there are situations where DOS is a reasonable choice.
I'm still glad, though, that I never had to deal with segmented memory. That sounds horrible.
> the freshly installed system boots up in about 30 seconds, including the BIOS doing its thing.
Honest question/clarification, is that... considered fast?
My DOS system used to boot that fast. A C64 is almost instant. And my old ~2013 Chromebook boots in ~7 seconds into Linux with an eMMC drive (slower than an SSD but still fairly fast). It's only got 2 GB of RAM so when it hits swap it'll bog to a standstill so it's often faster just to hit the reset key than try and recover.
I don't understand modern swap. Ok you can page out a few MB you don't use on a regular basis, but any swapping kills the machine.
I'd far rather OOMkiller killed off non active tabs (there's almost always a web browser using the memory on a desktop), or run away apache processses, than try to swap. For that reason I never configure swap on any of my machines.
The regular old swap is slightly technologically behind today's needs. It is supposed to be replaced by things like zram and zswap, that don't kill the machine.
Swap can be useful for batch jobs that need lots of memory to run but the working set is small. Then you can keep the physical memory for the working set and the disk swap for the (larger) whole set of memory.
My experience has been that if the usage grows slowly and the system is instructed to actually load stuff to swap I can safely go to the limits of my swap and physical ram space without any freezes and nothing dying (although ofc taking more time, but the alternative is not using the software at all).
It doesn't make sense on a server, but on a desktop, unless it's actively thrashing, swapping is normally fine. It's not cool to kill off the user's possibly unsaved work with a few random process terminations.
There are other, more cooperative ways of doing it. For example, always save enough state to restore after a kill when becoming a background task. But it's also more work.
The boot time bottleneck (if it can be called that) on my old ABC80 was waiting for the CRT to warm up. The prompt was already there and fading into view a couple of seconds after power-up.
Booting from ROM is one thing. Loading something from tape, that's another story.
My work laptop - admittedly not a high-end machine - takes about two minutes from power-on to login-prompt. I've seen Windows machines - without SSDs - that had tons and tons and tons of software installed on them, that took 10 to 15 minutes from power-on to login.
Compared to that, <30 seconds is very fast. SSDs have been a real game-changer, though. My home desktop takes less than 10 seconds from boot manager to display manager. I used to be very patient, now I kind of regret all the time I spent waiting for some computer to boot. ;-)
The C64 boots off ROM, IIRC? So that is kind of cheating. ;-) But yes, I had a C64, too, the delay between switching it on and the machine being usable was too low to notice.
What I don't get is, if this multi-decade-old software is valuable enough to be used today, why isn't it valuable enough for someone to have written a replacement in the intervening decades?
Surely every plant like this would pay something for the ability to run on modern OSes, and presumably there are enough plants using this kind of software to recoup the cost of development?
People who run industrial processes tend to make careful, conservative choices. "If it ain't broke, don't fix it" is the golden rule, since any downtime can cost serious money. This means staying on old, proven systems is favored over upgrading for the sake of upgrading, even if there are possible improvements.
Context: I used to work on solar power management and control, and developed manufacturing processes to build our hardware.
I wouldn't count on that. Battle-testedness can be a feature, and a new software package means new training for those tasked with maintaining the system. The old one is a known quantity.
Well, there's two parts to your question, if there is a demand, why isn't there a supply, and is there really a demand?
For the first part, if the original company has gone out of business, and enough records and knowledge lost and scattered, then it'd actually potentially be very difficult for a new group to identify what the original customers were, much less identify what the potential size of market is today. That's quite a lot of risk to take on (in my mind anyways). Industrial automation is one of those things that people don't openly disclose in a way that makes it easy to canvas the market cheaply.
This isn't software that you can just install and use. This type of software is tightly integrated with the hardware in the factory or distribution center. So, even if there were free software which did the same thing, it would cost a lot of time and money to replace the old, already-working system.
Moreover, for software that was put in place 20 years ago, it's likely that some of the functionality is unknown, i.e. the whole system works together, but exactly what is being done by each piece of software isn't fully understood by anyone still at the company. So it would require a bunch of work to even spec a replacement.
So it's totally rational to keep the existing, working system, even if you need a dedicated PC to administer it.
(Source: I was in a similar situation ~20 years ago.)
In some cases there may be replacements, but they would require newer hardware as well (think expensive lab equipment, not just workstations), which brings the cost much higher than simply replacing the software. My father's environmental testing lab is currently in this predicament, but they finally got rid of their last Windows 3.11 (and older) machines a couple of years ago so it's not like they aren't trying, it just needs to happen incrementally.
The bagging control system at my customers seafood factory still uses DOS, it controls the hardware through 2 serial ports, the hardware has been updated several times since the 80's, There are no drivers or security, just base DOS formatted hard disk and autoexec.bat with a single exe program being called, I just clone the hard disk for them when its time for an update and keep the old PC around for backup.
I've thought of reverse engineering the software but to tell the truth the program and the machine it controls were just built very well and so long as we have spare hardware it could go forever.
Due to driver problems I'm not sure you could even build a system these days that would be guaranteed future proofed for 30+ years.
They can certainly buy new plcs and new hmis to interface together and do things but it's not like a program written for one plc from one manufacturer is interchangeable with one another. the plc code is fairly close to assembly language and it's written for one particular plc with a particular wiring. I could do it but it does take time and money to complete and even then you lose a bit of institutional knowledge codified by the original codebase. Having delved into plc programs built by others(even with comments that get stripped out if you don't have the original source file and instead download it from the plc directly) it's not easy to do. They certainly do still sell new plcs for industrial automation but the programs are typically bespoke.
Not to throw in anecdote after anecdote, especially since it is slightly off topic, but I have to share.
I worked at a textile company 17 years ago and the bought brand new "state of the art" embroidery machines from Germany and they ran Windows 3.11 for Workgroups. At the time I was just "the web and IT guy" so it was my job to set up a token ring network with coaxial cables to network these machines together so the control computer could send embroidery designs remotely. This was cutting edge stuff, prior to that we had 3.5" floppies and a sneaker net.
But even at the time Windows 3.11 was 8 years old. To this day it is the only time I have seen token ring. I have "fond" memories of walking through hundreds of feet of coax checking each connection to find out which one came loose and took the entire network down.
Even back then when we wanted to add a new host to the network we had to hunt in the "junk bin" in the local store to get a networking card, then pray that it was supported under Linux.
If you are looking for a truly minimalist OS for your PC, DOS is for you. I have a warm feeling when I try to imagine an HPC compute node running DOS instead of a fat OS with all the overhead that comes with it. I know, it sounds like a pipe dream, but wouldn't it be nice if there was something like DOS that is natively 64-bit and also supports multiprocessing and multithreading - basically, something that turns a machine into a modern high-performance "calculator", without any unnecessary overhead? I wonder how close one could get to such "ideal" by using Linux or a BSD.
On Linux, you could set systemd to go right into 'octave' (matlab) or even rip out systemd and set `init=/usr/bin/octave` in grub, and have very little overhead.
What would you do on the system as soon as you need to look something up though? Even though it's easy to look something up via smartphone, if the code snippet is more than a sentence, do you really want to retype the whole thing rather than just copy and paste?
It's a very romantic notion though, and there's even a kickstarter for the writer's version [1], and I recommend setting up a system like that as a fun weekend project, but (at least for me) it turns out, through years of (mis)training, those 30 browser tabs I have open are an important part of my workflow, so I need an operating system that allows for that, in order to be productive (and unproductive) on a day-to-day basis.
There was a glorious period of the DOS days, when:
* all sound cards had a mode compatible with SoundBlaster or at least AdLib cards;
* all Ethernet cards had a mode compatible with NE2000 cards;
* all video cards had EGA/VGA/VESA compatibles modes.
So that defined an informal standard for PC/DOS. Your programs just needed to support these and you could get a working system (even if you didn't have specific driver to use the full power of the specific card).
Nowadays, if you try installing DOS on a current machine, you won't be able to get your games to play sound, nor to connect to your LAN. Video cards still seem to honour VESA standards (however only old ones, with old resolution, there was no VESA update to support modern resolutions), but for how long?
I hit that reality when I tried to install DOS on two machines a few months ago. Then you fetch old Ethernet or sound cards from dusty boxes in the attic and... there is no ISA (or even PCI) slot on your motherboard, damned!
And modern chips have ditched the compatibility layer with older chips :-(
And of course, it has been a while since manufacturer stopped providing DOS drivers for their specific chips.
I love the idea that there's still an active community developing for old hardware. Specially on videogames since many times they apply modern design ideas in very old hardware.
As a dumb example I saw a platformer for the ZX spectrum not long ago, where the falling speed was not linear but accelerated, which may seem trivial now but back then was something really unusual and I didn't realized how big was the difference after watching it. Then you have stuff way more complex such as the RTS for the Commodore mentioned by the author.
About the quote. Bill Gates said once in an interview:
> I've said some stupid things and some wrong things, but not that. No one involved in computers would ever say that a certain amount of memory is enough for all time.
For the Amstrad CPC too.
There are a number of production and events every year.
The article mentions coding in C++ (which, except for the << operator, is actually C) and with a generic (and therefore a little clumsy) interface to assembly-level DPMI stuff.
64kB is enough to run non trivial programs written in modern C.
(Disclosure: I wrote it:) A cross-development environment with a thin and clean C API to the original assembly-level firmware interface of the Amstrad CPC.
Why does this myth keep getting pushed - by tech people no less? Bill Gates emphatically denied ever saying it and no one has ever come forward with a scrap of evidence he actually said it.
Guess: it was perpetuated because lots of tech people hated him and what he did to the industry and to computing progress in general.
He has since gotten way, way better PR handling though. Just look at the way Reddit absolutely adores him nowadays (he's done lots of very carefully managed AMAs). Heck, even on HN there's enough young people who have no idea how much this one individual repressed computing progress over 1-2 decades through market abuse.
Here's one example of many of how the pro billg PR is done:
Another guess: He actually said it and a few people heard it, but when he said it was before everything in the universe was constantly being recorded, photographed, and pushed to the internet, so there's not necessarily a record of it.
Back then, you could just deny something happened, and often get away with it because you weren't being surveilled 24 hours a day.
It's like when someone very knowledgeable about a subject posts information on Wikipedia. Even if they were there first hand; even if they were personally involved with the event; even if they wrote magazine articles about it and did radio interviews about it, and it was covered by television — if it happened before 2000, it'll get erased from Wikipedia by someone on the other side of the planet because there's not a web link or an ancient library book to cite for "proof."
It's a bit distressing, in away, how hard it is to access information from before like year 2007. Most of it is locked up in government reference libraries and you generally have to bonafide "researcher" to even access physical copies of publications. Oh, and it's not allowed to make copies of the material.
You seem to have a pretty prominent chip on your shoulder regarding Bill Gates.
Gates has donated billions of dollars of his fortune to charity and he's largely credited for having eradicated malaria through these efforts in multiple countries.
It's hard to find a good reason to dislike someone like that.
If not Bill then Bob. At least he's doing some good in the world with that cash instead of hoarding it for him and his family. If it weren't for him, how long would have malaria persisted?
I think his primary motivation is so simple.. he wants people to like him.
Many, many people disliked him after his predatory business days. This is the perfect way to a) keep doing interesting work, b) getting people to like him again, c) get some personal karma.
I can quite easily see the appeal of this.
Also; I'm a big fan of his current work. I loved how my country (Sweden) matched a very large billg foundation program funding the other year; I think he's way better equipped with handling that money than my government's idealistic but fumbling people.
I just think we shouldn't forget his past just because he's turned into modern day santa. We should learn from history...
I’m not American but I wish he would decide that the situation there warrants ’philantropy’ and would this casually pour a billion or so into getting himself the Democratic nomination and the presidential election just for the sake of ousting Trump I’m a Battle Of The Billionaires (alleged, in Trump’s case).
> I think his primary motivation is so simple.. he wants people to like him.
Yeah, you definitely have something against him, don't you?
I don't really care what his motives are, I just look at the results of his contributions and there is no doubt in my mind he will be remembered as someone who was instrumental in saving millions of lives and advancing our civilization.
> Many, many people disliked him after his predatory business days.
I profoundly disliked him as well back in the days, especially since I was a hard code Amiga fan.
As opposed to you, I have changed my opinion based on additional data.
> Yeah, you definitely have something against him, don't you?
Well, yeah.
I think we'd be at least 5 years further into the future in terms of software than we currently are, possible 10, unless he hadn't abused the markets so gravely.
The main thing I remember from the era of Gates Is Literally Satan was the browser wars, and how awful it was that Internet Explorer was both free and tightly integrated into the operating system.
Dishonest comparison is dishonest. I'm pretty confident it's actually possible to uninstall Safari, and that macOS will continue to work.
Besides, the integration with the operating system isn't the problem. It's the integration with the only operating system. It isn't monopoly abuse if you don't have a monopoly.
I never liked Bill Gates when I was a power user in the nineties and early 2000s but it really is amazing that one could offset his contribution to disease eradication and his philanthropy generally with some aggravation about his business’ tactics and nebulous what-ifs about what might have happened if he had not been on the scene or had behaved differently. (Moore’s Law would did it’s thing anyway, whether he was there or not, and even with him there, Microsoft’s stranglehold on the desktop market relented anyway.) Do you really think the annoyance of a free browser warrants indicting his post-business career?
Just noting that this comment first only talked about the browser bundling antitrust thing, and then, after I commented, completely morphed into something else.
I’m not really sure what you are referring to because I have not edited any of my comments, but this one probably closely resembles another one I made further up and therefore might give you the impression that there had been some ’morphing’ involved.
>Microsoft’s stranglehold on the desktop market relented anyway
Hardly. Market share is still roughly 85% Windows, 15% Mac, and fuck-all % Linux, which is reflected in the level of support provided for applications, games, hardware etc. Even disregarding compatibility, MacOS is not a straightforward alternative as it only runs on Apple hardware, which is very expensive and only offers a narrow range of opinionated designs.
> How old are you? Let me just guess; not old enough to have experienced living/working in tech while Bill was doing his thing
Please no ad hominem attacks, focus on what I said, not how old I am.
But if it matters to you, I wrote my first lines of code in 1979 on an Apple ][ and I've lived through the exact same times you did.
I find little point in speculating on what could have happened that didn't, I focus on reality and what people have actually achieved in their life time.
It wasn't an attack (heck, wtf, I was just asking your age, maybe stop over-dramatizing?); I was trying to find out if you had some sort of personal experience or was just parroting the newer reddit hivemind.
What you did is the text book definition of an ad hominem attack: undermining someone's argument by attacking their character instead of addressing what they said.
Hello, I have also lost karma points on this subject. I also feel that Microsoft had a very negative effect on the progress of computer science during many years but it is very difficult to convince other generations. There were many positive and negative effects. To grasp the global effect, you need to have lived all the progress of the previous years before Microsoft and you need to have followed all the commercials fights to eradicate concurrence (dr dos, stacker, borland c++, ...).
I think most people are angry he put a lot of businesses out of business by bundling IE with Windows to put Netscape and other companies out of business that did web browsers.
Microsoft made their own version of Java that almost killed Sun. I think it was J++ and later J# and then Microsoft made C# to replace it.
The original DOS was CP/M that Seattle Software and Microsoft made their DOS do CP/M API calls and a program to convert CP/M programs to DOS. At the time this was not illegal, ECT. Microsoft did Basic, Fortran, Cobol without getting a license for them for 8 bit Pcs.
Those are just a few examples, mostly unethical but not criminal in 1970s and 1980s. By 1999 the DOJ investigated Microsoft.
Also Apple fans claim Microsoft ripped off the Macintosh with Windows and tried to put Apple out of business.
To people like Gates there are good and bad things, and people only know the good things and ignore the bad things because Microsoft built their own industry, ect.
I’m a child of the eighties, I grew up in the nineties, I remember waiting in line for my boxed copy of Windows 95 one August night in 1995, I remember ruling at Microsoft’s antitrust case (as related in WIRED), I remember how Slashdot featured an icon of Bill Gates with Borg add-one, but... I absolutely love the guy now and wish he would run for President (I am not American, just terrified).
I don't think the (most charitable use of the) quote depends on whether Bill Gates specifically said it. The point is, variously:
- To emphasize that the definition of "a lot of [computational resource X]" changes over time.
- That people previously had to do a lot of similar computational tasks with a lot less (which this article is making use of).
With that said, I agree that he shouldn't be asserted as the author of the quote like it's a fact, but that just means you should quote it as "attributed to Bill Gates".
It is an urban legend. I used QEMM for my Dos to get access to the rest of the PC memory by loading things in high or extended memory it freed up more memory on the bottom 640K conventional memory.
I recently saw a video of Steve Jobs and Bill Gates at d5, and Gates talked about how you could run Word on the original Mac in a 14K OS. Jobs interjected that MacOS was more like 22K, but the point was made.
Can you imagine an entire OS in 20-something being built today? BIOSes are larger than that.
"I have to say that in 1981, making those decisions, I felt like I was providing enough freedom for 10 years. That is, a move from 64k to 640k felt like something that would last a great deal of time. Well, it didn’t – it took about only 6 years before people started to see that as a real problem."
I Never played wing commander but I don't think it is possible.
With dos 6.22 using DOS=HIGH,UMB and loading everything possible in high memory and removing all the non essential stuff gave you 622k free memory if I remember correctly.
I managed to get more only "cheating" using a boot disk from the dos version bundled with windows 95, but even in that case you couldn't get more than 635k of free conventional memory.
That's certainly one thing I don't miss about old DOS gaming, having specific boot disks around with the proper config.sys/autoexec.bat magic to make ornery games work -- base RAM, HMA, EMS, XMS etc.. I had to play some game without the mouse, as that cost precious kilobytes…
But yeah, even when you moved drivers to the higher memory areas, there had to be the actual memory manager loaded to do that, so the full 640k wasn't really possible. And despite Origin games like Wing Commander and Ultima basically needing the next generation of PCs not released yet, they didn't really demand the impossible.
> That's certainly one thing I don't miss about old DOS gaming, having specific boot disks around with the proper config.sys/autoexec.bat magic to make ornery games work -- base RAM, HMA, EMS, XMS etc..
You could make menus items in the config.sys to chose between different options, you did not need several boot disks. I don't remember in which MS DOS version it was introduced (perhaps 5.0?), but that was the normal way to go after that.
What a bait and switch. I came to read about the origin of that expression, only to have the author go balls-deep into running FreeDOS, never referencing the original lede.
I'm really surprised that this article is flagged. Yes the title is clickbaity, but the topic itself is interesting and has created some interesting, relevant discussion.
When you come across a post you believe is flagged in error, you can contact the mods via the Contact link to have them look into it. On occasion, they remove flags.
99 comments
[ 2.9 ms ] story [ 71.8 ms ] threadMy memory is vague on this, but I believe the core DOS commands (e.g., copy) were part of the ROM BIOS (or maybe they were just always loaded into non-user-accessible RAM as part of boot). So they were always present and did not affect available user RAM. The non-core DOS commands (e.g., xcopy) had to be loaded into user RAM to run. What's more, if you had a diskette-based system (i.e., no hard drive), you would have to load the floppy diskette that had the particular extended DOS command you wanted to run, before you could run it (because it had to be read off the diskette).
No dos commands were normally part of ROM. In fact even command.com was designed such that large part of it could be thrown away if additional memory was required and then reloaded from disk when user program terminated (this was implemented by relocating the "transient" part onto the end of usable address space and detecting whether it was overwritten by user programs). Larger DOS file managers usually use similar approach, but simpler: the UI is implemented by separate binary that simply records what the user wants to run somewhere and then exits passing control to small stubbinary that starts requested program and restarts the UI when the program ends.
Edit: MS-DOS 2.0's command.com detects that the transient part was overwritten by means of single byte checksum. The reason why it is done in this somewhat hackish way is that DOS allocates all of the available memory for most MZ EXE programs regardless of how many they actually use (MZ header specifies minimum and maximum amount of unitialized memory needed, with no maximum being the default).
There's something to be said for using FreeDOS simply as a loader for a real-time control program. It's not doing anything in the background. There's no networking stack. There's no way to attack it without physical access.
Also synchronous (and also often non-preemptible) disk/FS IO was for the long time the only way it was done. For example the reason that on Linux process that got stuck accessing NFS or removable drive that got removed was unkillable (in 'D' state) was to preserve illusion of such semantics to user processes (ie. that IO to filesystem and block devices will never fail with EINTR). And I would not be surprised if many deeply-embedded RTOSes do the same to this day.
Also having no network stack or USB stack is pretty limiting these days. I'm sure FreeDOS can implement these, there are definitely DOS drivers out there for older network cards to get TCP/IP up and running and there was always serial modems which we used extensively in "the old days" (pause while audience cringes!)
Being cut-off from the outside world is of course security bliss but the PC still needed to be physically secure as there were no passwords/encryption and remote maintenance is not an option.
A glaring omission is access to long mode. There's no DPMI for long mode. You can knock the PC into long mode, but DOS calls are no longer accessible in any fashion.
That being said, I actually did install MS-DOS 6.22 on three computers over the last couple of years, because the company I work at does - among other things - industrial automation, and (at least) one of our customers has a plant built with automation technology that can apparently only be programmed and configured with a program running on DOS. And it must do some rather funky things, because the software will reliably fail to talk to the PLC if it is running in a virtual machine or on FreeDOS. And of course the company that has written this software has gone out of business a long time ago, so there won't be any updates, either. ;-) If I didn't have more important things to do, figuring out why it does not work on FreeDOS could have been a lot of fun, but just installing MS DOS was the faster solution.
Still, installing DOS these days is an interesting experience. The whole system comes on three floppy disks, the installation procedure takes about 15 minutes, and the freshly installed system boots up in about 30 seconds, including the BIOS doing its thing. Admittedly, you cannot do very much with it without additional software.
Three floppy disks - that is about 4.5 Megabyte, Ladies and Gentlemen. Today's high end CPUs have as much L2 cache, or more.
And primitive as it is, there are situations where DOS is a reasonable choice.
I'm still glad, though, that I never had to deal with segmented memory. That sounds horrible.
Honest question/clarification, is that... considered fast?
My DOS system used to boot that fast. A C64 is almost instant. And my old ~2013 Chromebook boots in ~7 seconds into Linux with an eMMC drive (slower than an SSD but still fairly fast). It's only got 2 GB of RAM so when it hits swap it'll bog to a standstill so it's often faster just to hit the reset key than try and recover.
I'd far rather OOMkiller killed off non active tabs (there's almost always a web browser using the memory on a desktop), or run away apache processses, than try to swap. For that reason I never configure swap on any of my machines.
There are other, more cooperative ways of doing it. For example, always save enough state to restore after a kill when becoming a background task. But it's also more work.
Booting from ROM is one thing. Loading something from tape, that's another story.
I think some C64 units had a spare socket for GEOS the GUI made for the C64.
Compared to that, <30 seconds is very fast. SSDs have been a real game-changer, though. My home desktop takes less than 10 seconds from boot manager to display manager. I used to be very patient, now I kind of regret all the time I spent waiting for some computer to boot. ;-)
The C64 boots off ROM, IIRC? So that is kind of cheating. ;-) But yes, I had a C64, too, the delay between switching it on and the machine being usable was too low to notice.
Surely every plant like this would pay something for the ability to run on modern OSes, and presumably there are enough plants using this kind of software to recoup the cost of development?
Context: I used to work on solar power management and control, and developed manufacturing processes to build our hardware.
For the first part, if the original company has gone out of business, and enough records and knowledge lost and scattered, then it'd actually potentially be very difficult for a new group to identify what the original customers were, much less identify what the potential size of market is today. That's quite a lot of risk to take on (in my mind anyways). Industrial automation is one of those things that people don't openly disclose in a way that makes it easy to canvas the market cheaply.
Moreover, for software that was put in place 20 years ago, it's likely that some of the functionality is unknown, i.e. the whole system works together, but exactly what is being done by each piece of software isn't fully understood by anyone still at the company. So it would require a bunch of work to even spec a replacement.
So it's totally rational to keep the existing, working system, even if you need a dedicated PC to administer it.
(Source: I was in a similar situation ~20 years ago.)
I've thought of reverse engineering the software but to tell the truth the program and the machine it controls were just built very well and so long as we have spare hardware it could go forever.
Due to driver problems I'm not sure you could even build a system these days that would be guaranteed future proofed for 30+ years.
I worked at a textile company 17 years ago and the bought brand new "state of the art" embroidery machines from Germany and they ran Windows 3.11 for Workgroups. At the time I was just "the web and IT guy" so it was my job to set up a token ring network with coaxial cables to network these machines together so the control computer could send embroidery designs remotely. This was cutting edge stuff, prior to that we had 3.5" floppies and a sneaker net.
But even at the time Windows 3.11 was 8 years old. To this day it is the only time I have seen token ring. I have "fond" memories of walking through hundreds of feet of coax checking each connection to find out which one came loose and took the entire network down.
https://en.wikipedia.org/wiki/10BASE2
Even back then when we wanted to add a new host to the network we had to hunt in the "junk bin" in the local store to get a networking card, then pray that it was supported under Linux.
I can say that I've never used token-ring though.
[1]: https://en.m.wikipedia.org/wiki/BareMetal
What would you do on the system as soon as you need to look something up though? Even though it's easy to look something up via smartphone, if the code snippet is more than a sentence, do you really want to retype the whole thing rather than just copy and paste?
It's a very romantic notion though, and there's even a kickstarter for the writer's version [1], and I recommend setting up a system like that as a fun weekend project, but (at least for me) it turns out, through years of (mis)training, those 30 browser tabs I have open are an important part of my workflow, so I need an operating system that allows for that, in order to be productive (and unproductive) on a day-to-day basis.
[1] https://www.kickstarter.com/projects/astrohaus/hemingwrite-a...
There was a glorious period of the DOS days, when:
* all sound cards had a mode compatible with SoundBlaster or at least AdLib cards;
* all Ethernet cards had a mode compatible with NE2000 cards;
* all video cards had EGA/VGA/VESA compatibles modes.
So that defined an informal standard for PC/DOS. Your programs just needed to support these and you could get a working system (even if you didn't have specific driver to use the full power of the specific card).
Nowadays, if you try installing DOS on a current machine, you won't be able to get your games to play sound, nor to connect to your LAN. Video cards still seem to honour VESA standards (however only old ones, with old resolution, there was no VESA update to support modern resolutions), but for how long?
I hit that reality when I tried to install DOS on two machines a few months ago. Then you fetch old Ethernet or sound cards from dusty boxes in the attic and... there is no ISA (or even PCI) slot on your motherboard, damned!
And modern chips have ditched the compatibility layer with older chips :-(
And of course, it has been a while since manufacturer stopped providing DOS drivers for their specific chips.
As a dumb example I saw a platformer for the ZX spectrum not long ago, where the falling speed was not linear but accelerated, which may seem trivial now but back then was something really unusual and I didn't realized how big was the difference after watching it. Then you have stuff way more complex such as the RTS for the Commodore mentioned by the author.
About the quote. Bill Gates said once in an interview:
> I've said some stupid things and some wrong things, but not that. No one involved in computers would ever say that a certain amount of memory is enough for all time.
And a guy in Texas recently released a very interesting looking Ultima IV-style game for the Commodore 64.
http://www.atari-forum.com/viewtopic.php?t=28171
I think they can buy the ROM and put it on the Harmony cart Sdcard and it will play.
There seems to be new games that can't afford to burn a ROM and ship a cartridge so they use this cart instead to download ROM images to it.
The article mentions coding in C++ (which, except for the << operator, is actually C) and with a generic (and therefore a little clumsy) interface to assembly-level DPMI stuff.
64kB is enough to run non trivial programs written in modern C.
(Disclosure: I wrote it:) A cross-development environment with a thin and clean C API to the original assembly-level firmware interface of the Amstrad CPC.
https://github.com/cpcitor/cpc-dev-tool-chain and a puzzle game to exercise the whole thing https://github.com/cpcitor/color-flood-for-amstrad-cpc
Do git clone ; configure ; make run and it runs.
https://www.computerworld.com/article/2534312/operating-syst...
He has since gotten way, way better PR handling though. Just look at the way Reddit absolutely adores him nowadays (he's done lots of very carefully managed AMAs). Heck, even on HN there's enough young people who have no idea how much this one individual repressed computing progress over 1-2 decades through market abuse.
Here's one example of many of how the pro billg PR is done:
https://www.reddit.com/r/secretsanta/comments/5iphpa/i_won_s...
Back then, you could just deny something happened, and often get away with it because you weren't being surveilled 24 hours a day.
It's like when someone very knowledgeable about a subject posts information on Wikipedia. Even if they were there first hand; even if they were personally involved with the event; even if they wrote magazine articles about it and did radio interviews about it, and it was covered by television — if it happened before 2000, it'll get erased from Wikipedia by someone on the other side of the planet because there's not a web link or an ancient library book to cite for "proof."
/Yes, I'm speaking from experience.
Sort of related:
It's a bit distressing, in away, how hard it is to access information from before like year 2007. Most of it is locked up in government reference libraries and you generally have to bonafide "researcher" to even access physical copies of publications. Oh, and it's not allowed to make copies of the material.
Thanks a lot, Disney.
You seem to have a pretty prominent chip on your shoulder regarding Bill Gates.
Gates has donated billions of dollars of his fortune to charity and he's largely credited for having eradicated malaria through these efforts in multiple countries.
It's hard to find a good reason to dislike someone like that.
Did you ever pause to consider how much humanity would have progressed without him stopping so much progress in the first place?
(I deleted a section on the malaria stuff; I misread your comment slightly at first.)
Many, many people disliked him after his predatory business days. This is the perfect way to a) keep doing interesting work, b) getting people to like him again, c) get some personal karma.
I can quite easily see the appeal of this.
Also; I'm a big fan of his current work. I loved how my country (Sweden) matched a very large billg foundation program funding the other year; I think he's way better equipped with handling that money than my government's idealistic but fumbling people.
I just think we shouldn't forget his past just because he's turned into modern day santa. We should learn from history...
Yeah, you definitely have something against him, don't you?
I don't really care what his motives are, I just look at the results of his contributions and there is no doubt in my mind he will be remembered as someone who was instrumental in saving millions of lives and advancing our civilization.
> Many, many people disliked him after his predatory business days.
I profoundly disliked him as well back in the days, especially since I was a hard code Amiga fan.
As opposed to you, I have changed my opinion based on additional data.
Well, yeah.
I think we'd be at least 5 years further into the future in terms of software than we currently are, possible 10, unless he hadn't abused the markets so gravely.
#cough# Safari on Apple devices
#cough# Chrome on Android and ChromeOS devices
Besides, the integration with the operating system isn't the problem. It's the integration with the only operating system. It isn't monopoly abuse if you don't have a monopoly.
This is way too non-inclusive, but at least it's something:
https://www.pcmag.com/feature/302767/9-companies-microsoft-d...
In the 80s Microsoft under Bill Gates was extremely fierce. Silicon Valley software companies lived in constant fear.
There was a bunch of well-documented market abuse using the control of the OS (MS-DOS).
Further reading:
https://www.goodreads.com/book/show/41611.Hard_Drive
Hardly. Market share is still roughly 85% Windows, 15% Mac, and fuck-all % Linux, which is reflected in the level of support provided for applications, games, hardware etc. Even disregarding compatibility, MacOS is not a straightforward alternative as it only runs on Apple hardware, which is very expensive and only offers a narrow range of opinionated designs.
Please no ad hominem attacks, focus on what I said, not how old I am.
But if it matters to you, I wrote my first lines of code in 1979 on an Apple ][ and I've lived through the exact same times you did.
I find little point in speculating on what could have happened that didn't, I focus on reality and what people have actually achieved in their life time.
Is fine.
> How old are you? Let me just guess; not old enough to have experienced living/working in tech while Bill was doing his thing
Is an ad hominem attack.
I know you're struggling to find hidden reasons that could lead someone to not despise Bill Gates, but you're wasting your time.
The man is saving millions of lives with his fortune, just deal with it and the reality that he might not be as evil as you want him to be.
It does illustrate the power of the combination of time and lots of money. You can literally alter truths.
The lack of a sense of history here is disturbing. I thought HN was better than this.
Microsoft made their own version of Java that almost killed Sun. I think it was J++ and later J# and then Microsoft made C# to replace it.
The original DOS was CP/M that Seattle Software and Microsoft made their DOS do CP/M API calls and a program to convert CP/M programs to DOS. At the time this was not illegal, ECT. Microsoft did Basic, Fortran, Cobol without getting a license for them for 8 bit Pcs.
Those are just a few examples, mostly unethical but not criminal in 1970s and 1980s. By 1999 the DOJ investigated Microsoft.
https://www.justice.gov/atr/us-v-microsoft-courts-findings-f...
Also Apple fans claim Microsoft ripped off the Macintosh with Windows and tried to put Apple out of business.
To people like Gates there are good and bad things, and people only know the good things and ignore the bad things because Microsoft built their own industry, ect.
(Is this an attack? I can't tell any longer.)
Same reason plenty of people still believe in the Loch Ness Monster or that Crop Circles were made by aliens.
Some people are hopelessly refractory to critical thinking and will never change their mind, no matter the evidence presented to them.
- To emphasize that the definition of "a lot of [computational resource X]" changes over time.
- That people previously had to do a lot of similar computational tasks with a lot less (which this article is making use of).
With that said, I agree that he shouldn't be asserted as the author of the quote like it's a fact, but that just means you should quote it as "attributed to Bill Gates".
http://www.josh.com/notes/island-ecn-10th-birthday/
https://en.wikipedia.org/wiki/Island_ECN
This is such a reckless statement, IMO. Sort of like the opposite of "If a tree falls..."
Can you imagine an entire OS in 20-something being built today? BIOSes are larger than that.
"I have to say that in 1981, making those decisions, I felt like I was providing enough freedom for 10 years. That is, a move from 64k to 640k felt like something that would last a great deal of time. Well, it didn’t – it took about only 6 years before people started to see that as a real problem."
But yeah, even when you moved drivers to the higher memory areas, there had to be the actual memory manager loaded to do that, so the full 640k wasn't really possible. And despite Origin games like Wing Commander and Ultima basically needing the next generation of PCs not released yet, they didn't really demand the impossible.
You could make menus items in the config.sys to chose between different options, you did not need several boot disks. I don't remember in which MS DOS version it was introduced (perhaps 5.0?), but that was the normal way to go after that.