back to article Microsoft veteran demystifies Abort, Retry, Fail? DOS error

Do you Abort, Retry or, Ignore or Fail? We've all been there, hesitating above the keyboard and wondering just what demons will be unleashed by hitting "I". But what is actually happening behind the scenes? Retired Microsoft engineer Dave Plummer has taken to YouTube once again to confess his role in the DOS operating systems …

  1. Dan 55 Silver badge
    Meh

    There should only be Retry and Fail, the other two aren't needed

    Abort isn't necessary because the program should deal with errors, not go loopy and then need to be killed. Ignore isn't necessary because it's just corrupting something, instead the program should let you save on another disk.

    1. Anonymous Coward
      Anonymous Coward

      "because the program should deal with errors"

      That was the early MS-DOS era, when OS calls were made setting up CPU registers and calling INT 21H (and a few others). Languages didn't have usually exception management (think Go...), .COM executable had to stay withing 64K of code (which could be half the RAM you had....), and everything was much more primitive.

      Anyway, now that I know the difference between Abort and Fail I can sleep better. Maybe a better wording would have had help "Abort application" - "Fail operation and continue" would have helped, but messages were usually quite short back then, especially when everything was hand-written in assembler...

      1. Dan 55 Silver badge

        Re: "because the program should deal with errors"

        I've never noticed other 80s operating systems giving a plethora of options, just the more usual Retry and Cancel (Fail) and errors were tested for in the program.

        And even if memory is so tight, it doesn't take much to do the worst-case option - print "Error <number>", tidy up, and exit.

      2. bombastic bob Silver badge
        Pirate

        Re: "because the program should deal with errors"

        I was really good at assembly, doing DOS calls, and BIOS calls, even bought a bunch of books on undocumented calls and whatnot. Lots of hacking fun.

      3. Blackjack Silver badge

        Re: "because the program should deal with errors"

        And years were written with just two numbers.

    2. Spanky_McPherson

      Re: There should only be Retry and Fail, the other two aren't needed

      I'm sure Dave Plummer and the MS-DOS developers had good reasons for doing what they did.

      It's a little condescending to just show up and claim that you know better than them.

      I also used to have the "Everything that I don't understand is easy" attitude, but we should try to be better than that.

      1. Dan 55 Silver badge

        Re: There should only be Retry and Fail, the other two aren't needed

        Well, yes, they did. Until MS-DOS 3.3 there was only Abort (kill program), Ignore (pretend everything okay), and Retry - no Fail.

        This is because MS-DOS was "heavily inspired" by 70s CP/M.

        1. Mage Silver badge
          Unhappy

          Re: because MS-DOS was "heavily inspired" by 70s CP/M

          In fact CP/M-86 was almost automatically built by DR using the 8080 to 8086 translator. A company made a sort of copy (somehow) of CP/M 86 and MS bought that company. They only edited/re-wote later versions. So originally no sub-directories. I forget if they came with 2.11 or 3.2. The MSDOS 3.3 was the first decent version. DOS 4 & 5 poor. Next useful upgrade was 6.22, which maybe was last standalone version.

          MS did later sell Xenix for the 286 before they had MS version of OS/2 (1989 after IBM & MS split on OS/2). Maybe that's why NT version numbering starts at 3.1 in 1993?

          The DOS 7.x only came with Win 9x, which unlike earlier NT 3.1 and NT 3.5 wasn't a true self contained 32 bit multitasking OS. Win9x ran DOS code natively on DOS and 16 bit Windows code natively. NT used WoW so 16 bit api calls used 32 bit API and all 16 bit code ran on the NTVDM.

          IBM crippled desktop computing for a decade by choosing 8086/8088 cpu family simply because CP/M applications could be quickly ported instead of the many available true 16 bit CPUs with flat addressing instead of ghastly 64K segments to allow 8080 code porting. Partly they only wanted to compete with Apple 6502, CP/M etc and not innovate or compete with their own products. Zero innovation in the catalogue build 8088 based IBM-PC.

          1. martinusher Silver badge

            Re: because MS-DOS was "heavily inspired" by 70s CP/M

            The first version of MS-DOS that I'm aware of was 1.4, it is an almost exact copy of CP/M. DOS 2.x added some "Unix like" file calls to supplement CP/M's software interrupts but still kept the SWI mechanism for backwards compatibility. DOS3.x added additional file operations so that MS-DOS could work with discs shared over a network.

            ...and there's your problem. Thise CP/M vectors were retained far beyond their useful life because of backward compatibility. Harmless seeming except that some clever programmers had figured out that the way to access these locations was by wrapping around the 1MByte maximum address space -- they'd use a positive offset of a high memory location to access the base of memory. When the 286 appeared it had a larger address space so the problem was kludged by the so-called "A20 switch" which kept this address line low until changed just after the processor entered paged mode. I hate to think how much was sacrificed on the alter of backwards compatibility.

            1. Joe W Silver badge

              Re: because MS-DOS was "heavily inspired" by 70s CP/M

              Backwards compatibility is sort of the red thread through all (except NT?) Microsoft OS. Unfortunately. With all nasty side effects. Oh and the inefficiency coming with it as well.

              Just so your boss can cling on to his ancient mail program and his word processor (exp)...

              To be fair, exp was a great and powerful and advanced program.

            2. Dan 55 Silver badge

              Re: because MS-DOS was "heavily inspired" by 70s CP/M

              I hate to think how much was sacrificed on the alter of backwards compatibility.

              "MS-DOS has been described as little more than a glorified program loader that serious programs spend more time circumventing rather than using" (InfoWorld 24 Jun 1991). MS even tried to do a multitasking version of MS-DOS and then abandoned it, while other personal computer OSes around the time just ran rings around what MS-DOS could do - single tasking (Atari TOS, RISC OS, Finder) or multitasking (Amiga).

              By the way, MS-DOS later on had a switch to turn off the prompt and always Fail and the program would then manage the error. So that, I think, means I'm right despite the downvotes, because even MS finally realised it was a mess. :)

            3. Bitbeisser

              Re: because MS-DOS was "heavily inspired" by 70s CP/M

              Utter bollocks!

              There never was a MS-DOS version of 1.4, And no DOS version was ever "an exact copy of CP/M".

              DOS 2.0 was a complete re-wiite, released about 18 months after PC-DOS 1.0.

              And the rest of the post is similar nonsense...

              1. jake Silver badge

                Re: because MS-DOS was "heavily inspired" by 70s CP/M

                "There never was a MS-DOS version of 1.4"

                I have a copy that is labeled 1.4. It was an OEM version that was built to run machine control software. Near as I can tell, it is essentially identical to DOS 1.25, but with a couple hardware specific hooks in the kernel.

                There were many such odd-ball versions. The oldest I have claims to be the 0.96 Pilot build version of IBM PC-DOS on the hand-typed floppy label (internally it reports as version 1.0). I know it's real because it came from the actual pilot build IBM PCs that the company I was working for at the time was asked to help evaluate for IBM.

                Likewise, my Bridgeport CNC came with what claims internally to be PC-DOS 3.26b, but to all intents and purposes is actually DOS 3.3 ...

            4. Zorba

              Re: because MS-DOS was "heavily inspired" by 70s CP/M

              OTOH, Apple won't talk to you if your hardware or software is more than 2 or 3 years old - sometimes less! The entire Apple ecosphere is that way. I'll take backwards compatibility, thank you.

          2. rajivdx

            Re: because MS-DOS was "heavily inspired" by 70s CP/M

            > Maybe that's why NT version numbering starts at 3.1 in 1993?

            It went like this:

            Windows 1.0 -> Windows 2.0 -> Windows 3.0 -> Windows 3.1 -> Windows 95 -> Windows 98 -> Windows ME -> Trash

            Windows NT 3.51 (Kernel build from Scratch, apps/shell from Windows 3.1) -> Windows NT 4.0 (NT Kernel, apps/shell from Windows 95) -> Windows 2000 -> Windows XP -> Windows Vista -> Windows 7 -> Windows 10 -> Windows 11

            1. mjflory

              Re: because MS-DOS was "heavily inspired" by 70s CP/M

              You've left out that great crowd-pleaser, Windows 8! It was hurriedly followed by Windows 8.5, which you'd think would have been Windows 9... but "9" sounds like "suffering" in Japanese.

              1. Martin-73 Silver badge

                Re: because MS-DOS was "heavily inspired" by 70s CP/M

                I also heard there was another reason in that windows 95/98 (and to a degree Me) were commonly known as win9x, and win9 could cause confusion (whether by the user or actual software i am not sure)

            2. Colintd

              Re: because MS-DOS was "heavily inspired" by 70s CP/M

              Not quite. There was definitely a Windows NT 3.1. I have one of the first production copies, and was in Redmond as it was being released. 3.5 and 3.51 came later.

          3. Zorba

            Re: because MS-DOS was "heavily inspired" by 70s CP/M

            So true. I always said that the IBM PC combined the worst features of the Apple ][+ and the Model 1 TRS-80 - and the best features of neither. All-in-ones such as the NorthStar Advantage, the Intertec Superbrain, and countless others were the future trend, until IBM saddled the world with its crippled PC that took us back to Model 1 TRS-80 days - 3 ugly boxes connected by cables. At least the TRS-80's components looked like they belonged together, IBM's did not. Why IBM didn't go with the 68K family has always frustrated me. Even for an 8088 based system, it was crippled - the chip was good for 8MHZ, IBM used 4.77 as their clock speed. Tiny floppy drives that couldn't even hold a memory dump, a bad clone of CP/M that made TRS-DOS look good, a hole in the memory map for video (Just like a TRS-80), bastardized or ignored industry standards, the list of fail goes on.

            To make it worse, the "serious" Microcomputer users of the day (Largely S-100 systems, but there were others) laughed at the PC as the toy it was, so the early adopters were from the Apple and TRS-80 worlds - and they brought their amateur hour programming practices with them. This kept the PC realm crippled for at least 10 years, by the time "serious" Microcomputerists (were forced to) migrated to the PC, these practices were firmly entrenched, and it took many years to purge them from general acceptance.

    3. General Purpose

      Re: There should only be Retry and Fail, the other two aren't needed

      >the program should deal with errors

      Meanwhile, in the real world ....

      1. Androgynous Cupboard Silver badge

        Re: There should only be Retry and Fail, the other two aren't needed

        ... meet one of your fellow officers, General Failure.

        1. MiguelC Silver badge

          Re: There should only be Retry and Fail, the other two aren't needed

          Just remember that General Failure used to work closely with General Protection Fault. They both came from a Bad Sector of town, and often engaged in Illegal Function Calls.

    4. a_yank_lurker

      Re: There should only be Retry and Fail, the other two aren't needed

      Often the issues were intertwined between the hardware of the era and competency of the user. The hardware was rather primitive by current standards. Many issues could not be handled all that nicely back then on any desktop computer. As a percentage, users were more technically savvy back then. Many of us early adopters were STEM types who had some vague familiarity with computers already. The OS designers to some extent relied on this background and understanding, possibly naively. Being STEM types many of us were more willing to poke around into the OS and the hardware.

      You are dealing with a very different era in the 80's and 90's were many did not have a computer either at home or at work. Those that had one at home were often technically minded.

      1. Mage Silver badge

        Re: The OS designers to some extent

        Really till DOS 2.11 or DOS 3.3, one designer, Gary Kiddall in approx 1974. He offered the idea of a personal desktop computer based on 8080 to DEC when Intel (where he worked) wasn't interested. They weren't either, so he founded Digital Research. He was never going to be a Steve Jobs or Bill Gates, because they were good at business and using other people's ideas, so ultimately DR faded away despite CP/M 86 on PC, DR-DOS, GEM GUI and later CP/M 80 reborn on the Amstrad PCW series.

        1. Adrian 4

          Re: The OS designers to some extent

          As well as Concurrent CP/M-86 and later MP/M-86 (multiuser ?)

      2. A.P. Veening Silver badge

        Re: There should only be Retry and Fail, the other two aren't needed

        Often the issues were intertwined between the hardware of the era and competency of the user.

        The competency of the programmers (both OS and application program) were also in the mix.

      3. Dan 55 Silver badge

        Re: There should only be Retry and Fail, the other two aren't needed

        The thing is, if the user used another platform then they didn't need to be as technically minded. It's MS-DOS which made things difficult for them.

    5. Bryan W
      Devil

      Re: There should only be Retry and Fail, the other two aren't needed

      Awww cute. A JavaScript kiddie who thinks he could have been a better systems architect in the 90s than the people who were actually there.

      1. Dan 55 Silver badge

        Re: There should only be Retry and Fail, the other two aren't needed

        Thank you for your contribution, I didn't know MS-DOS was released in the 90s. I think we've all learnt something here today, but probably not what you think.

    6. Adrian 4

      Re: There should only be Retry and Fail, the other two aren't needed

      For failure conditions where you wanted to kill the program, you needed Abort : MS-DOS had no proper interrupt as ctrl-C was processed by the keyboard handler and ctrl-alt-del killed things a lot lower down.

  2. Hans Neeson-Bumpsadese Silver badge

    On Error Resume Next

    ...otherwise known as nailing the corpse in an upright position

    1. Dan 55 Silver badge

      Re: On Error Resume Next

      Weekend at Bernie's!

    2. david 12 Silver badge

      Re: On Error Resume Next

      .. is the error-handling system of the entire c/unix library. Ok, c was eventually superseded by c++ and c# and every other language, but why is it that VB gets all the hate?

    3. Anonymous Coward
      Anonymous Coward

      Re: On Error Resume Next

      tbf it does actually have it's uses when sometimes you expect an error and want to continue to the next one regardless.

      1. doublelayer Silver badge

        Re: On Error Resume Next

        Which is why every language has some method of detecting a specific error and ignoring it. You can check the error code you want to ignore and do nothing with it. You can catch an exception and drop it. If there is a possible error condition for which you really do nothing, you have lots of ways to deal with that. The key word here is "specific". If you don't want an error to trip up your program because it's not relevant, then look for that one. Don't just assume that any error that comes along will be that one.

        Error handling is boring, but critical. I can't count the number of poorly written programs or scripts that can't handle the most basic of unusual cases. Scripts that don't get as many command line arguments as they wanted, but instead of printing an error and exiting, they try to run hundreds of lines printing no such variable errors while trashing the environment they're in. Or libraries that throw exceptions because they frequently mess up and programs that catch and ignore all of them because they don't want to clean up but can't be bothered to find a library that works properly.

  3. fidodogbreath
    Thumb Up

    This knowledge will come in handy the next time I'm in 1983.

    1. DuncanLarge Silver badge

      Or when you are like me and install DOS 6.22 in Qemu one sunday morning for fun. Then fiddle with freeing up as much conventional memory as possible to let you run a game that you just pkunzipped from a shareware CD-ROM image that you have, only to find that you now know why turbo buttons were invented and why you should have uses DOSBox in the first place.

      1. This post has been deleted by its author

      2. katrinab Silver badge
        Meh

        The first challenge is getting stuff onto the VM Image.

        Windows 98 is bad enough. I managed in the end to get stuff onto it by enabling the FTP service on my NAS and using the command line ftp client. The Windows Explorer client didn't work. From there I was able to obtain some USB mass storage drivers and use an SD card to transfer stuff across.

        I don't think MS DOS comes with an FTP client, or even network drivers, so I guess you would have to build floppy images in your host operating system and attach them to the VM.

        1. BenDwire Silver badge
          Boffin

          Oh yes it did. I used to run a series of networked DOS machines back in the 1980's, and my first file server was a 286 with a 20MB hard disk. 1Mb/s network speed via co-ax RG58 (IIRC) and it was fantastic, compared to 5 1/4" floppies anyway.

          I moved on to use Artisoft Lantastic in the Win 3.11 days, which ended up being purchased by MS and incorporated into Win95.

          What a time to be alive ...

          1. jake Silver badge

            The networking hooks for PC-DOS existed as of DOS 3.0 (August of '84), but they weren't actually functional until DOS 3.1 (April of '85).

            There were aftermarket networking options before this, but for the most part nobody cared.

  4. Anonymous Coward
    Anonymous Coward

    This stuff was well known by geeks of the time, and much better than the utterly useless modern equivalent of " ;-) We had a problem."

    The best one I ever saw was the network logon to the DOS machines on our university network...

    Incorrect password. (A)bort, (R)etry, (I)gnore, (F)ail.

    1. katrinab Silver badge
      Flame

      The best one I ever saw was the Novel Netware Logon prompt at my first job. Hit [Cancel] and it let you in regardless.

  5. pgargan

    Edgar Allan Poe got there first

    Marcus Bales' classic bears repeating: https://www.gnu.org/fun/jokes/midnight.dreary.html

  6. Naselus
    Coat

    Oh, I thought it was just quoting what some wormdog scrawled next to the door of the Edit Universe project room.

  7. DarkwavePunk

    Ah "Abort"

    The "kill -9" of the DOS world. Does that make "Retry" -HUP, and "Fail" -TERM, loosely speaking? Bugger knows what "Ignore" would be, but I don't like it. A fun and simpler time, sort of, with caveats...

    1. storner
      Boffin

      Re: Ah "Abort"

      "Ignore" would be -CONT

      1. Plest Silver badge
        Happy

        Re: Ah "Abort"

        Anyone else have to do a double-take when they read "CONT"?!

  8. Anonymous Coward
    Anonymous Coward

    In the mid 90s a document went round purporting to introduce "Windows for Weegies". As a Glaswegian myself I can testify that it was spot on: "My Files" became "Aw mah shite", "The Internet" became "Porn an that" and - my favourite - "Yes/No/Cancel" dialogue boxes became "Aye/Naw/Fuck off" which I think accurately reflects how most users see the,

    1. David 132 Silver badge
      Windows

      Cannot not read those in a Gregor Fisher / Rab C Nesbitt voice!

    2. katrinab Silver badge
      Headmaster

      The Internet would be "Porn an awh that" surely?

  9. apa 64

    Living on the edge

    I always Ignored. I've done OK in life so I guess it wasn't that big of a deal anyway.

    1. W.S.Gosset

      Re: Living on the edge

      The French-language version reads "Shrug" for the same reason.

  10. Steve Davies 3 Silver badge
    Mushroom

    Where's the Nuke Microsfot option?

    Shame, coz they deserve it.

    1. Plest Silver badge
      Facepalm

      Re: Where's the Nuke Microsfot option?

      The kindergarten on half day today? Let me save you the trouble of putting "M$", "Micro$oft" or "Microshaft".

  11. brainwrong

    Idiots

    "It's a bit of a secret club, really, for those of us who actually know what it means…"

    and

    "MS-DOS knows something serious is going down and it doesn't know how to handle it. So it's going to give you, the wise and all-knowing computer operator, the decision on how to proceed."

    How am I to be a wise and all knowing user, if microshit keeps the information to itself.

    stupid c*nts.

    When do we get treated to the explanation of why dos6 memmaker was crapper than a simple analysis of the output of 'mem -c' and manual editing of config.sys and autoexec.bat? That's when I first realised just how shit they were.

  12. Anonymous Coward
    Anonymous Coward

    NT Cluster Service

    Can somebody at Microsoft explain this "error message"?

    I once tried to start the cluster service on an NT 4 box that had been brutally removed from its previous place of residence when we acquired the company that owned it.

    The service failed to start and helpfully displayed a dialog box that simply said "November".

    1. jake Silver badge

      Re: NT Cluster Service

      It was very helpfully letting you know that things would be all better about a month after the Eternal September.

    2. Joe W Silver badge

      Re: NT Cluster Service

      I'd still like an explanation why "A TrueType font caused a general protection fault in module setup.exe" was thrown at me when installing windows... Uh... 98? one night. Legit original discs and all. Sort of drove home the point that I would rather not deal with that shyte any more, and grow up, and fsck up my machine all by myself, using the dangerously powerful possibilities Linux offered....

      1. jake Silver badge

        Re: NT Cluster Service

        Probably a corrupt font. Windows, for reasons only known to the architects, doesn't display fonts. It executes them. That's right, kiddies, truetype fonts are executables, in the .DLL format. A corrupted font file could (can?) cause a GPF. There were kernel-space exploits based on this.

    3. Plest Silver badge
      Happy

      Re: NT Cluster Service

      "Remember, remember...."

      Probably a reference to barrels of gunpowder that have been set but never ignited?

    4. David 132 Silver badge
      Happy

      Re: NT Cluster Service

      Sounds like NT4 was channeling the spirit of Ask Jeeves...

      1. jake Silver badge

        Re: NT Cluster Service

        Except Ask Jeeves (1997 - 2006) wasn't really a thing quite yet when NT Cluster Server (1997 - present) was first being built.

  13. jake Silver badge

    All this angst, and for what?

    C'mon, people! MS-DOS wasn't an actual operating system, it was just a glorified program loader. Why on Earth would you expect it to do OS-ish things?

    Besides, we all knew what that error message meant in the early '80s ... it's not like DOS was difficult to take apart to see what made it tick.

    Remember the late '80s/early '90s so-called "Undocumented DOS" books that were, basically, just re-writes of FAQs from Usenet?

  14. martincbull

    I love you Martin Truely.

    When i was young and stupid, around dos 6.22 i took a hex editor to command.com and found the error message "bad command or file name" i replaced this with "I love you martin truely" because it had the same amount of letters. Dos still worked, but it did not take long for my mind to see the error "I love you martin truely" and to recognise it was "Bad command or file name" for me dabbling in linguistics and semiotics it was a learning experience.

    1. W.S.Gosset

      Re: I love you Martin Truely.

      And you remain single to this day.

      1. ICL1900-G3

        Re: I love you Martin Truely.

        But hopefully his spelling has improved.

        1. jake Silver badge

          Re: I love you Martin Truely.

          I went to school with a girl who had the surname Truely. Her ignorant English teachers tried to tell her it was misspelled, despite the fact that she knew her genealogy going back several centuries.

    2. Plest Silver badge
      Happy

      Re: I love you Martin Truely.

      I'll tell you this, a DOS HEX editor is why I've been married to my wonderful lady for 32 years!

      I used to hack games, sometimes for fun and sometimes to...help ( ahem) distribution. Anways, I'd use my Hex editor to put messages and my girlfriend's name in all sorts of places in games she'd like, then drop the game disks off to her each night after my work night shift ended. She loved playing all the games just to see where I'd left the silly messages to her!

      Must have worked, we're both still in love and still both nerds!

    3. bombastic bob Silver badge
      Devil

      Re: I love you Martin Truely.

      it was even MORE fun to change an error message on a university time-sharing computer, especially when the sysop knows you did it but instead of accusing, asks for your help to fix it back...

      error message was: "Program lost. Sorry"

      new error message: "Program lost. Tough Shit"

      (as i recall the flat file with the messages had fixed length records, and both fit within a single record)

      "You wouldn't happen to know how to fix this would you?"

      keeping a straight face, worthy of Simon. "Well, I think that is stored in a file.. oh here it is! Looks like fixed length records. Let's write a quicky BASIC program on the operators console to fix it. You should be able to blah blah blah oh looks like it worked!"

  15. mjflory
    Mushroom

    Ah, the good old days

    Inspired by a Hackaday post about Raspberry Pi palmtops I put some batteries in my DOS-based HP handhelds the other day. Sure enough, I soon encountered "Abort, Retry, Fail." And sure enough, I didn't know what to respond. (I think "Abort" got it to stop trying to access the memory card with a dead battery.)

  16. Sceptic Tank Silver badge
    Alert

    SAFARI

    This takes me back to the PC Magazine SAFARI utility of years gone by: Staying Away From Abort Retry Ignore. More remembered by me for the rather excellent comments accompanying the assembler source code than the actual usefulness of the program.

  17. Anonymous Coward
    Anonymous Coward

    Contingency code is 80% of the work for possibly 20% of it being used. Unfortunately you don't know which 20% will be needed in practice.

    Coding for proof of concept can be quick - making it bullet/bomb proof takes a lot more work.

POST COMMENT House rules

Not a member of The Register? Create a new account here.

  • Enter your comment

  • Add an icon

Anonymous cowards cannot choose their icon

Other stories you might like