Settings

Theme

Running DOS Apps on Windows from 1.0 to 95 (2020)

gekk.info

72 points by andrea76 2 years ago · 37 comments

Reader

JayGuerette 2 years ago

"I'm not sure why it is that Windows 3.1 is the go-to when people name a Windows OS of this era."

It's because business was the primary market for PCs and Windows 3.11 added a network stack and changed everything. Networking was no longer an arcane science that required 3rd party software. Office networks became almost trivial to set up. The impact of this on the world is impossible to overstate. Everybody who used Windows in this era used Win 3.1(1).

  • dleslie 2 years ago

    Windows 3.1 also hit a sweet spot for OEMs; with RAM becoming larger and cheaper, and 486 PCs delivering speed. That was when PC games that targeted Windows started to arrive in reasonable numbers.

    • 0xcde4c3db 2 years ago

      Microsoft also made a big push at this time for preinstalled Windows to be considered the baseline configuration instead of treating it as an optional upsell. It probably also didn't hurt that 3.1 was when Windows was seen as having properly matured (cf. Vista vs. 7). Basically, the 3.1 era was when Windows went from being a novelty/luxury to being everywhere practically overnight.

    • tadfisher 2 years ago

      I don't think any of the common suspects targeted Win 3.1 (or its beta version of Win32). Most of them shipped with a DPMI kernel (Dos4GW being common), which Win3.1 happened to also provide, but I can't recall if, say, DOOM even ran under Win3.1 at the time as 4GW did a lot more than DPMI.

      • dleslie 2 years ago

        Doom didn't run on Windows until Doom95 was released; but SimCity and others were on Win3.1.

  • exe34 2 years ago

    > no longer an arcane science

    No, it became what some of us called "plug and pray". You plug it in, and it's supposed to work. You install the driver, reboot, uninstall the driver, reboot, clear some temporary files, re-install the driver, try a slightly different driver on the same disk, uninstall the driver, reboot, re-install the driver, and it suddenly works! Then you reboot it and it stops working again.

  • caspper69 2 years ago

    I remember it differently, as I rarely encountered office networks then, and when I did, they were still 3rd party (Netware mostly).

    The reason I always remember 3.1 is that 3.0 was a "big" upgrade, but it was a dog, so they released a vastly-improved 3.1 pretty quickly, so many people got that as the default, and the upgrade was pretty widespread.

    This was over maybe a 4-year period in the mid-90s. My memory may be hazy, and I was a university student, so my exposure may have been limited, but myself and my friends never really reference 3.11 because it wasn't used/needed, and indeed most of us used Trumpet Winsock as a TCP/IP stack (3rd party) until the release of Windows 95.

wizzwizz4 2 years ago

I always enjoy this article when it makes the rounds, but I'm still unreasonably annoyed about two points.

> Despite this capability being mentioned in countless reviews of the success story of Windows, the actual functionality of it is almost entirely undocumented online.

Much of this was already documented online in 2020. https://devblogs.microsoft.com/oldnewthing/20111107-00/?p=91... and https://retrocomputing.stackexchange.com/q/791/278 are examples. (https://devblogs.microsoft.com/oldnewthing/20211129-00/?p=10... came after this article was written, but is worth reading too.)

> while you can probably tell me the name of the OS installed on Macs in 1985, and you can definitely name the most popular way to run multiple DOS programs on the PC in 1995, you almost certainly can't name a DOS task switcher or multitasking environment offhand.

DoubleDOS. And I've never used it: I know it by reputation alone.

  • porbelm 2 years ago

    DesqView. Used it for BBS stuff, like being logged into admin at the same time as having a user on AND running Norton Commander or whatever at the same time.

  • Brian_K_White 2 years ago

    Came here exactly to say "Wasn't Desqview quite well known?" I never even used it myself (except indirectly as a bbs user) yet even I a non-user knew about it.

    Maybe it doesn't fall into the same category and works more like an actual os with a kernel? Like I said, never used it so idk.

    • caspper69 2 years ago

      PC Magazine (and others I'm sure) used to regularly do "showdowns" with DOS multitasking environments and upcoming GUIs.

      There was a time when none of this stuff was settled and a lot of folks threw their hat into the ring.

      I used to love the writeups as a bbs operator, lol!

mrlonglong 2 years ago

All that magic in Windows 386 were made possible through the VXDs. Virtual device drivers that shuffled the programs access to the physical devices. They had some very very very good programmers back then.

  • andrepd 2 years ago

    Has the quality of the average programmer dropped? I look at the state of software I use in my day-to-day, in computers 100,000x more powerful than the computers which ran Win3.1...

    • mschuster91 2 years ago

      I'd say so. Up until the Visual Basic era that was accessible even for literal children (like me), you'd need deep C/C++/ASM knowledge to churn out a program that was reasonably performant, and the rise of the Web+JavaScript expanded accessibility even more as you didn't need an expensive IDE+compiler.

      The result of programming getting more accessible obviously leads to a decrease in average quality/skill.

    • jonhohle 2 years ago

      The computers are 100,000x more powerful and electron apps can bring multi core systems with 16GB of memory to their knees.

      Coming from a 25MHz 486SX with 1MB of RAM to now, it’s disheartening that as a profession we’ve prioritized developer convenience over user experience. That system ran Netscape, Word, Paint Shop Pro, Doom, could play video, music (wav, midi, CD), and more.

      • Krssst 2 years ago

        Looking at today's mainstream software it feels that management agenda (pushing unneeded product X by disrupting user experience) and advertisement are also strongly prioritized over user experience.

    • 1970-01-01 2 years ago

      >Has the quality of the average programmer dropped?

      Yes and no. An average programmer today does not know nor care about size, speed, compatibility, portability, IRQ interrupts.. we needed to know how to manage all the things. However, back then there were no security bugs other than bypassing passwords and copy protection.

anthk 2 years ago

Get ReactoS' ntvdm.exe from the nightly ISO (it's under a big CAB file, the biggest one) and use it under a 32/64 bit Windows. If any, place it in the same folder of the DOS game.

livrem 2 years ago

One thing I remember and even used quite recently, is that you could C-z out of emacs in MS-DOS to get a new COMMAND.COM for running other applications, then exit back to emacs. I think this was some kind of feature of later versions of MS-DOS, that an application could open a child-COMMAND.COM and put itself in the background using some interrupt? Anyway that was great for running compilers and doing other tasks without having to ever exit emacs.

Anyway it was a very interesting read. I don't think I ever used Windows to run DOS applications. I used to start Windows 3.x now and then to run some Windows application, but then I exited out to COMMAND.COM again where I spent most of my time. And then when Microsoft tried to get everyone to switch to Windows 95 I installed Linux instead.

  • andrepd 2 years ago

    You might be thinking of "terminate and stay resident" programs, like Borland Sidekick :p

    • neckro23 2 years ago

      It wasn't quite a TSR, it was more like a subshell. I remember using a similar feature in Telix in the early 90s.

      It was a bit limited because you were still restricted to the usual 640kB memory space, and the original program remained in memory, so you typically didn't have a lot to work with. You could do things like file management while still connected to a remote BBS though.

1970-01-01 2 years ago

Although it required bit of OS hacking, real mode DOS was used all the way to the often forgotten Windows Me.

https://en.wikipedia.org/wiki/Windows_Me#Real_mode_DOS

  • exe34 2 years ago

    Mistake edition. I had a very underpowered celeron running ME, and I got another two years of life out of that laptop by switching to vector Linux, which was incredibly fast. Only issue was that I think the migration from Oss to alsa was happening at the time, so had quite a bit of issues with Skype.

Dwedit 2 years ago

Not continuing through the NTVDM era?

miffe 2 years ago

A bit off topic, but does anyone know if you can do asynchronous disk access somehow in dos?

I'm writing a game and it would be nice to load resources for the next level in the background.

  • actionfromafar 2 years ago

    Sort of ... but I think it's easier to do the disk access as usual, but move your real-time game code (updating graphics, taking care of input) to a timer interrupt.

    Edit: then you effectively have your main loop doing IO and such, while your game loop is a co-routine in modern parlance. The game loop can write a global variable which the main code takes as a hint to start loading file data.

    • rzzzt 2 years ago

      The timer interrupt could also do the loading:

      - maintain a, say, ring buffer :) for I/O commands (operation, file handle, offset, buffer address, callback address)

      - add requests to the buffer from the game loop

      - timer wakes up periodically, splits requests into palatable chunks, completes a portion of the requested work, when it reaches the end it either sets a flag on the request to signal its completion and/or jumps to its callback address

      - game loop can periodically check and empty the request buffer or set the requests to self-destruct on completion

      • turol 2 years ago

        That does not really work since the only IO was the BIOS-provided one that was 1. synchronous and 2. really slow. If you tried to do that you'd just get insanely bad pauses.

      • actionfromafar 2 years ago

        Yeah either way, my hunch was just I wouldn’t want to drop frames in the game, so it’s nice have a timer on the graphics.

  • devit 2 years ago

    https://forum.osdev.org/viewtopic.php?t=56727&p=345558

    Presumably and perhaps more compatibly can also call the DOS function with interrupts disabled but with an interrupt line active (e.g. a timer) and handle it.

andrea76OP 2 years ago

An interesting overview on how Windows (from 1.0 to 95) executes DOS apps with all the challenges

Keyboard Shortcuts

j
Next item
k
Previous item
o / Enter
Open selected item
?
Show this help
Esc
Close modal / clear selection