What was MS-DOS? Historical arguments aplenty *spawn

Discussion in 'PC Hardware, Software and Displays' started by BoardBonobo, Apr 3, 2014.

  1. BoardBonobo

    BoardBonobo My hat is white!
    Veteran

    Joined:
    May 30, 2002
    Messages:
    3,255
    Likes Received:
    153
    Location:
    SurfMonkey's Cluster...
    Not quite! They bought a BASIC language which they converted into the original DOS. CP/M was the dominant OS of the day, next to Unix anyway. It's the OS I learned to program under 380Z running CP/M.

    Windows 95-98, ME, XP, VISTA, 7-8 - these were mostly MS's creations. The 2 direst of them ME and Vista were examples of what happened when MS tried to do things on its own without buying the tech to build them on first.

    NT, 2000, Server - these were built on NT which they bought from a company called NT.
     
  2. Kaotik

    Kaotik Drunk Member
    Legend

    Joined:
    Apr 16, 2003
    Messages:
    8,239
    Likes Received:
    1,914
    Location:
    Finland
    XP, Vista, 7 & 8 are NT's, not WIN32s, even if they integrated a lot from the WIN32-family into NT-family
     
  3. DSoup

    DSoup meh
    Legend Veteran Subscriber

    Joined:
    Nov 23, 2007
    Messages:
    11,083
    Likes Received:
    5,911
    Location:
    London, UK
    And what I said was different, how... ?

    Yeah, kinda, not really. Microsoft bought in Dave Cutler, formally of DEC and VMS architect. NT's lineage is in VMS. If you've used both (as I have), you'll know this. We retired our last VMS system only a couple of years ago.
     
  4. betan

    Veteran

    Joined:
    Jan 26, 2007
    Messages:
    2,315
    Likes Received:
    0
    How do you convert a programming language to an operating system?

    86-DOS was the name IIRC.

    TBF, 360 OS did more with less. Also, the fact that Sony has been using BSD based OS for two generations now says something.
     
  5. DSoup

    DSoup meh
    Legend Veteran Subscriber

    Joined:
    Nov 23, 2007
    Messages:
    11,083
    Likes Received:
    5,911
    Location:
    London, UK
    Good catch, I overlooked this.

    I thought by 'basic' he meant CP/M, which Microsoft licensed from Digital Research, and not the BASIC language. As far as I'm aware Microsoft's BASIC was an in-house development. If they bought that then that's a bit of trivia I didn't know or have long since forgotten.
     
  6. BoardBonobo

    BoardBonobo My hat is white!
    Veteran

    Joined:
    May 30, 2002
    Messages:
    3,255
    Likes Received:
    153
    Location:
    SurfMonkey's Cluster...
    Because the original DOS was just an interpreter that ran programs. You didn't write code for DOS, you just wrote programs that could be run from DOS or, more commonly, just nasty little .com programs. As long as the BIOS recognised it.

    Ooh - and CP/M wasn't basic! It took MS years to catch up with it. DOS 3.11 was probably the closest but was still lacking a lot of CP/M's capabilities.

    That bit is wrong. CP/M was completely removed from MS/DOS. The original was bought by MS and rebranded for IBM.
     
  7. DSoup

    DSoup meh
    Legend Veteran Subscriber

    Joined:
    Nov 23, 2007
    Messages:
    11,083
    Likes Received:
    5,911
    Location:
    London, UK
    If you're taking batch files (.BAT files) yes, otherwise no. DOS handled memory, I/O, interrupts, the file system. It was not an interpreted language :???:
     
  8. BoardBonobo

    BoardBonobo My hat is white!
    Veteran

    Joined:
    May 30, 2002
    Messages:
    3,255
    Likes Received:
    153
    Location:
    SurfMonkey's Cluster...
    Not the original! It had access to the BIOS interrupt table and used drivers like himem to access above the 640K. It wasn't until later that DOS extended the BIOS interrupt table and made nice things like the TSR available. That made writing viruses so easy in DOS Especially keycatchers... but I digress!

    QDOS -> PC-DOS was at heart a BASIC interpreter that had some higher level commands built into it. The original DOS was pretty bad.
     
  9. DSoup

    DSoup meh
    Legend Veteran Subscriber

    Joined:
    Nov 23, 2007
    Messages:
    11,083
    Likes Received:
    5,911
    Location:
    London, UK
    So which operating system did DOS ran on?
     
  10. pMax

    Regular Newcomer

    Joined:
    May 14, 2013
    Messages:
    327
    Likes Received:
    22
    Location:
    out of the games
    ...eh??????????????????????????????????????????

    No, you are totally wrong.
    DOS was a complete OS, and in 8088/86 times, you had NO himem, as it was available only since iAPX286 and its crazy A20 line bug/feature that allowed a soft reset.

    DOS always offered his primary services through int21+sub codes, but it was offering them also on int25/26 and other INTs here and there.

    Drivers in MS-DOS was also nice to do (contrary to TSR), having the 'strategy' and 'interrupt' part split... clever, for the period.

    Really, this stuff on low level dos as interpreter cant really be read, guys...

    OT: virus at old times was often hooking INTs for their job, which was very easy as no memory/IDT protection features was existing in real mode. Writing virus at those times was mostly assembly art, as the goal was to make it as smaller as possible, reusing asm binary etc etc.
     
  11. BoardBonobo

    BoardBonobo My hat is white!
    Veteran

    Joined:
    May 30, 2002
    Messages:
    3,255
    Likes Received:
    153
    Location:
    SurfMonkey's Cluster...
    It wasn't complete in the same way as we think of an OS being now. If you remember the boot sequence for DOS, BIOS first to MBR. MBR loads boot code and sets the IP. The boot code does its stuff, CRC etc. It then loads MSDOS.SYS into memory and with setup specific CP's and then handed control over to COMMAND.COM (ah! the nostalgia). If you wanted to run a program MSDOS would effectively unload itself so that the program can run. Once you've finished with Wordstar COMMAND.COM would be reloaded. The heart of the original MSDOS was just an interpreter. That's why the original no OS error message was 'Unable to load\run BIOS BASIC'.

    It wasn't until MSDOS2.0 that any decent extensions to the Interrupts was created. In the original even a TSR wasn't guaranteed to work. With 2.0 they introduced the 64k page of 'protected' memory. At one time my programming bible was RBIL.

    Coding in Borland Pascal with lots and lots of assembler. It hurts even thinking about it. Put your disk in with source - edit - hit compile - remove disk - put in Language disk - remove disk - put in source disk ... ad nauseam.

    You're right about the Himem though. I forgot that it wasn't common until the 286 appeared.

    But this is totally off the reserve so I'm going to stop dredging up painful memories :sad:
     
  12. DSoup

    DSoup meh
    Legend Veteran Subscriber

    Joined:
    Nov 23, 2007
    Messages:
    11,083
    Likes Received:
    5,911
    Location:
    London, UK
    I don't even know how to begin to address what's wrong with this. BIOS is a HAL (Hardware Abstraction Layer). It performs the basic POST (Power On Self Test) of RAM, CPU and key I/O hardware on startup and then maps the hardware attached to any internal or external bus.

    BIOS will then try working through the user set boot devices in order or priority looking for a bootable disk. MBR is the Master Boot Record (the first 512 bytes stored on the HDD) and is a standard for describing the partition layout and file systems on the disc. It can contain a small boot loader for something else, usually an operating system. MBR doesn't load this, BIOS does. CRC is Cyclic Redundancy Check, a method for checking the integrity of data transferred or saved/loaded.

    I don't know what you mean by "set the IP" but you seem to be confusing the OS with COMMAND.COM which is a shell. If the OS unloaded, every DOS application would need to understand the filesystem to do basic file I/O.

    There is an overview of how DOS developed from CP/M, and competed with it, here
     
  13. Brad Grenz

    Brad Grenz Philosopher & Poet
    Veteran

    Joined:
    Mar 3, 2005
    Messages:
    2,531
    Likes Received:
    2
    Location:
    Oregon
    The way I always heard it was IBM was trying to license BASIC from Microsoft and CP/M from those guys for their new line of personal computers. But the CP/M guys balked for some reason so Gates told IBM they could do the OS too. To that end they very quickly reverse engineered CP/M to create QDOS (which stood for Quick and Dirty Operating System). IBM licensed it, it was renamed MS-DOS and the rest is history.
     
  14. Npl

    Npl
    Veteran

    Joined:
    Dec 19, 2004
    Messages:
    1,905
    Likes Received:
    6
    QDOs wasnt done by Microsoft, it wasnt reverse engineered from CP/M either.
    MS bought QDOS from Tim Patterson.

    And from what I remember reading (dont know the source right now), there were some personal issues with CP/M people that kept IBM from using that OS. Something like never responding to telephone calls.... cant remember now.
    I know they dint use the m68k chips because they already had a license for intel even though the engineers wouldve prefered it. Couldve been a entirely different market had IBM chosen differently.
     
    #14 Npl, Apr 5, 2014
    Last edited by a moderator: Apr 5, 2014
  15. BoardBonobo

    BoardBonobo My hat is white!
    Veteran

    Joined:
    May 30, 2002
    Messages:
    3,255
    Likes Received:
    153
    Location:
    SurfMonkey's Cluster...
    Nothings wrong with it. You're just trying to understand something you never experienced based on modern definitions and procedures. A lot of what you take for granted now just didn't happen then.

    No the OS was contained in IO.SYS and MSDOS.SYS. They were just a bunch of libraries some of which were hot loaded to specific areas of memory. The equivalent of what became TSR's. A set of BIOS interrupts were then set to point to various areas of this memory. COMMAND.COM was the interpreter that did the basic commands (it was based on a BASIC interpreter). All of this was unloaded in order to run a program. Only one program at a time could run unlike in CP/M which already had time slicing implemented at this point.

    All "OS" commands were either BIOS interrupts or modified versions of them. We used to call them blobs but vectors is probably more appropriate. Look up RBIL - here's a link - there were no OS calls to fancy functions to handle the file system or anything like that. It was all done through the BIOS. You could even choose whether to use MFM or GCR for encoding disks etc. Bare in mind though that HDDs weren't always SCSI or PATA but could be RLL or many diverse flavours. Not that MS-DOS was ever really sophisticated enough to handle all these. Maybe the very last editions would have been but everything had settled into a mundane set of standards by then.

    MS-DOS had nothing to do with CP/M at all :/ CP/M was a vastly superior OS that had a lot of advanced features, some of which the PC wouldn't see until Win98. The multi-user multi-tasking features that Unix or CP/M (and others) wouldn't hit the PC until Win2000 (based on the NT kernel). In many ways the development of the PC was set back years by the adoption of MS-DOS. Which only came about because of bad business decisions and peoples ego's. If it had been CP/M based for instance we would have been using a multi-tasking OS with a GUI that worked long before Win3.

    It's hard to explain just how basic it all was back then. I'll try and dig up some old code (we created a paint package for EGA based machines, back in day, that used scan line tricks inspired by the amiga to make copper bars and other things).
     
    #15 BoardBonobo, Apr 5, 2014
    Last edited by a moderator: Apr 5, 2014
  16. DSoup

    DSoup meh
    Legend Veteran Subscriber

    Joined:
    Nov 23, 2007
    Messages:
    11,083
    Likes Received:
    5,911
    Location:
    London, UK
    Look dude, the first hardware I programmed professionally was a DEC PDP-11 which was 16-bit system developed in the 70s. Please don't use the 'you're too use' thing on me.

    The early operating systems were just groups of libraries and a standard disk file system. That's what MS-DOS was.

    TSR (Terminate and Stay Resident) was an technique to introduce some functionality common to multitasking operating systems to the single-tasking operating like DOS. This doesn't define an OS.

    COMMAND.COM was the standard MS-DOS shell. Like bash and csh. It's not the OS, it's an interface to the OS and let's you run programs on the OS. Most shells have inbuilt commands as COMMAND.COM did.

    Not it doesn't. COMMAND.COM stays in memory at all times, unless you replace it with something else entirely. The shell has to be resident in order to run batch files, pass arguments to programs and get error codes from programs.

    Which is all the architecture really supported in the days of 8088 and 8086.

    DOS was derived from a clone of CP/M, 86-DOS. Written by Tim Patterson. Not a complete replacement, but it didn't need to be.

    Not it isn't. I had the original wood-effect Atari VCS, my first home computer was a Commodore 64. I know how it was. My first real program for the 64 was an assembler written in BASIC. It didn't support of 6510 opt codes, it didn't need too.
     
  17. BoardBonobo

    BoardBonobo My hat is white!
    Veteran

    Joined:
    May 30, 2002
    Messages:
    3,255
    Likes Received:
    153
    Location:
    SurfMonkey's Cluster...
    Never did like the PDP. Apart from the Grue.


    Which is what I said. Apart from TSR's didn't work properly until V2.0. This was when the 64k page was introduced.

    Nope. It was unloaded at the start of program execution and reloaded after completion. There wasn't enough memory to do both and there was no guarantee that the memory would have been safe. There was a lot of disk swapping involved. It wasn't until the introduction of Himem and the ability to use ramdisk that you could do the equivalent of hold the OS in memory for quick reloads.

    All the OS style stuff was done through interrupts.

    And until Win95 that was practically all that MS used.

    Nope. It had nothing to do with CP/M. He may have loosely based some ideas on functions that CP/M used but other than that they were very separate and different OS's

    I've still got one knocking around somewhere. I'm trying to remember what my first program was. I think it was an assembler patch to let the Commoder PET utilise the CPU in the external FD as it was substantially faster than the one in the PET itself.
     
  18. DSoup

    DSoup meh
    Legend Veteran Subscriber

    Joined:
    Nov 23, 2007
    Messages:
    11,083
    Likes Received:
    5,911
    Location:
    London, UK
    Irrelevant to MS-DOS being an OS.

    Microsoft strongly disagree:

    The transient portion of COMMAND.COM remains in conventional memory whether MS-DOS is loaded high or low. Most of the COMMAND.COM resident portion, any software code pages, and the disk buffers (usually) also load high if DOS=HIGH is in the CONFIG.SYS file.

    If you ignore the i286 and i386. Let's pretend they and the enhanced memory modes they offered didn't exist and that MS-DOS was completely unable to benefit from the new memory modes.

    Never said otherwise. But it's clear that MS-DOS was based on CP/M. Hell, from Wikipedia:
    Many of the basic concepts and internal mechanisms of early versions of MS-DOS resembled those of CP/M. Internals like file-handling data structures were identical, and both referred to disk drives with a letter (A:, B:, etc.).

    I.e., it was a knock-off off CP/M.
     
  19. BoardBonobo

    BoardBonobo My hat is white!
    Veteran

    Joined:
    May 30, 2002
    Messages:
    3,255
    Likes Received:
    153
    Location:
    SurfMonkey's Cluster...
    In a very limited form. Especially the iteration we're talking about!

    But Himem wasn't available until the i286 (possibly there was a i186 that supported it). And that was long after the version of DOS we're talking about was replaced. It was all unloaded to run programs. You didn't have access to anything like the Ramdisk etc. What remained in memory were a few functions that replaced BIOS interrupts. And the CP for various bits and pieces.

    So Kb article is obviously referring to a version of DOS >2. Probably 5.0.

    It was i386 that introduced the MMU. The i286 had a bug that allowed paged memory to be effectively cut off from write access without requiring a reboot.

    It was an poor imitation with 99% of the functionality removed. As the article says, they 'resembled' CP/M. In the same way that a Ford Focus resembles a Bugatti Veyron!
     
  20. DSoup

    DSoup meh
    Legend Veteran Subscriber

    Joined:
    Nov 23, 2007
    Messages:
    11,083
    Likes Received:
    5,911
    Location:
    London, UK
    I'm happy with the definition of OS as the resident foundation software layer for applications for a system. MS-DOS fits this definition. You're original definition was a BASIC-like interpreted language. I don't know what fits that.

    The article has been updated with time. Look at it from an engineering point of view. If COMMAND.COM was not resident, calling, and receiving output from the last terminating program, how exactly did batch files work? How did any MS-DOS program terminate? What state data was passed too? It was the shell because part of the shell was always resident. It was the also the interface for users and the bridge between commands, whether run in immediate or batch modes.

    And Bill Gate was most uncomplimentary about the i286 describing it as "brain dead", but that didn't stop bespoke extended memory managers appearing for 286 and much more widely for the i386 which appeared in 1985 whereas you said:

    I don't know who wrote those EMM386 managers :???:

    I never said it was a clone or compatible, just that it was the genus for MS-DOS.
     
Loading...

Share This Page

  • About Us

    Beyond3D has been around for over a decade and prides itself on being the best place on the web for in-depth, technically-driven discussion and analysis of 3D graphics hardware. If you love pixels and transistors, you've come to the right place!

    Beyond3D is proudly published by GPU Tools Ltd.
Loading...